From 061076aea92a1d29058f17505b820e27bda7d846 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 17 Jan 2017 12:54:36 -0600 Subject: [PATCH 0001/2394] Support scionlib version detection (#2818) --- lib/spack/spack/test/url_parse.py | 5 +++++ lib/spack/spack/url.py | 3 +++ 2 files changed, 8 insertions(+) diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index c4718d56b84..8913de94d02 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -364,3 +364,8 @@ def test_luaposix_version(self): self.check( 'luaposix', '33.4.0', 'https://github.com/luaposix/luaposix/archive/release-v33.4.0.tar.gz') + + def test_sionlib_version(self): + self.check( + 'sionlib', '1.7.1', + 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1') diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index a1eec6067ea..93c443fde8d 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -213,7 +213,9 @@ def parse_version_offset(path, debug=False): # Search dotted versions: # e.g., https://gitlab.kitware.com/vtk/vtk/repository/archive.tar.bz2?ref=v7.0.0 # e.g., https://example.com/org/repo/repository/archive.tar.bz2?ref=SomePrefix-2.1.1 + # e.g., http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1 (r'\?ref=(?:.*-|v)*((\d+\.)+\d+).*$', suffix), + (r'\?version=((\d+\.)+\d+)', suffix), # e.g. boost_1_39_0 (r'((\d+_)+\d+)$', stem), @@ -304,6 +306,7 @@ def parse_name_offset(path, v=None, debug=False): (r'/([^/]+)[_.-](bin|dist|stable|src|sources)[_.-]%s' % v, path), (r'github.com/[^/]+/([^/]+)/archive', path), (r'[^/]+/([^/]+)/repository/archive', path), # gitlab + (r'([^/]+)/download.php', path), (r'([^/]+)[_.-]v?%s' % v, stem), # prefer the stem (r'([^/]+)%s' % v, stem), From 190a5b575ccccf81ee3e71d0048aa0b0e4753f22 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 17 Jan 2017 20:05:34 +0100 Subject: [PATCH 0002/2394] p4est: switch to AutotoolsPackage (#2839) --- var/spack/repos/builtin/packages/p4est/package.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/p4est/package.py b/var/spack/repos/builtin/packages/p4est/package.py index da58f5a7e7d..93a08c4f2d7 100644 --- a/var/spack/repos/builtin/packages/p4est/package.py +++ b/var/spack/repos/builtin/packages/p4est/package.py @@ -25,7 +25,7 @@ from spack import * -class P4est(Package): +class P4est(AutotoolsPackage): """Dynamic management of a collection (a forest) of adaptive octrees in parallel""" homepage = "http://www.p4est.org" @@ -42,8 +42,8 @@ class P4est(Package): depends_on('mpi') depends_on('zlib') - def install(self, spec, prefix): - options = [ + def configure_args(self): + return [ '--enable-mpi', '--enable-shared', '--disable-vtk-binary', @@ -55,10 +55,3 @@ def install(self, spec, prefix): 'FC=%s' % self.spec['mpi'].mpifc, 'F77=%s' % self.spec['mpi'].mpif77 ] - - configure('--prefix=%s' % prefix, *options) - - make() - if self.run_tests: - make("check") - make("install") From a1f7006400f693519b9bdb9dc962e442478f0791 Mon Sep 17 00:00:00 2001 From: Jason Sarich Date: Tue, 17 Jan 2017 16:23:32 -0600 Subject: [PATCH 0003/2394] check if node is already deleted (#2799) * check if node is already deleted * fix variable name --- lib/spack/spack/spec.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index e34f2b799d3..6cf80754a1d 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1388,8 +1388,9 @@ def _replace_with(self, concrete): dependent = dep_spec.parent deptypes = dep_spec.deptypes - # remove self from all dependents. - del dependent._dependencies[self.name] + # remove self from all dependents, unless it is already removed + if self.name in dependent._dependencies: + del dependent._dependencies[self.name] # add the replacement, unless it is already a dep of dependent. if concrete.name not in dependent._dependencies: From a040c8c743872329eceb9b7a0550e0c4d8a35331 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 17 Jan 2017 23:40:07 +0100 Subject: [PATCH 0004/2394] oce: add 0.18 and fix patching (#2844) * oce: add 0.18 and fix patching * oce: simplify the patch --- .../repos/builtin/packages/oce/package.py | 11 ++++-- .../repos/builtin/packages/oce/sierra.patch | 39 ++----------------- 2 files changed, 10 insertions(+), 40 deletions(-) diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py index 2d518d83c34..36b58269f15 100644 --- a/var/spack/repos/builtin/packages/oce/package.py +++ b/var/spack/repos/builtin/packages/oce/package.py @@ -32,8 +32,9 @@ class Oce(Package): Open CASCADE library. """ homepage = "https://github.com/tpaviot/oce" - url = "https://github.com/tpaviot/oce/archive/OCE-0.17.tar.gz" + url = "https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz" + version('0.18', '226e45e77c16a4a6e127c71fefcd171410703960ae75c7ecc7eb68895446a993') version('0.17.2', 'bf2226be4cd192606af677cf178088e5') version('0.17.1', '36c67b87093c675698b483454258af91') version('0.17', 'f1a89395c4b0d199bea3db62b85f818d') @@ -56,8 +57,9 @@ class Oce(Package): # fix build with Xcode 8 "previous definition of CLOCK_REALTIME" # reported 27 Sep 2016 https://github.com/tpaviot/oce/issues/643 - if (platform.system() == "Darwin") and (platform.mac_ver()[0] == '10.12'): - patch('sierra.patch') + if (platform.system() == "Darwin") and ( + '.'.join(platform.mac_ver()[0].split('.')[:2]) == '10.12'): + patch('sierra.patch', when='@0.17.2:0.18') def install(self, spec, prefix): options = [] @@ -89,4 +91,5 @@ def install(self, spec, prefix): cmake('.', *options) make("install/strip") - make("test") + if self.run_tests: + make("test") diff --git a/var/spack/repos/builtin/packages/oce/sierra.patch b/var/spack/repos/builtin/packages/oce/sierra.patch index 8db3af5e37c..1c0c86569bf 100644 --- a/var/spack/repos/builtin/packages/oce/sierra.patch +++ b/var/spack/repos/builtin/packages/oce/sierra.patch @@ -1,45 +1,12 @@ -diff --git a/adm/cmake/TKernel/CMakeLists.txt b/adm/cmake/TKernel/CMakeLists.txt -index 54e241e..72873c6 100644 ---- a/adm/cmake/TKernel/CMakeLists.txt -+++ b/adm/cmake/TKernel/CMakeLists.txt -@@ -29,7 +29,7 @@ if(WIN32) - set(TOOLKIT_LIBS ${TOOLKIT_LIBS} ${CSF_SOCKETLibs_LIB} ${CSF_advapi32_LIB} ${CSF_gdi32_LIB} ${CSF_user32_LIB} ${CSF_kernel32_LIB} ${CSF_psapi_LIB}) - else(WIN32) - #  An implementation for Mac OS X has been added in src/OSD/gettime_osx.h -- if(NOT APPLE) -+ if(APPLE) - include( CheckFunctionExists ) - check_function_exists( clock_gettime CLOCK_GETTIME_IN_LIBC ) - if(NOT CLOCK_GETTIME_IN_LIBC) -@@ -40,7 +40,7 @@ else(WIN32) - endif(NOT CLOCK_GETTIME_IN_LIBRT) - set(TOOLKIT_LIBS ${TOOLKIT_LIBS} rt) - endif(NOT CLOCK_GETTIME_IN_LIBC) -- endif(NOT APPLE) -+ endif(APPLE) - endif(WIN32) - - # Adde-DHAVE_TBB in TKernel in order to benefit from Standard_MMgrTBBalloc -@@ -70,4 +70,3 @@ if (OCE_BUILD_TKERNEL_WITH_INSTALL_RPATH) - set_target_properties_install_rpath(${TOOLKIT} "${OCE_INSTALL_LIB_DIR_RPATH};${OCE_INSTALL_PACKAGE_LIB_DIR_RPATH}") - set_target_properties(${TOOLKIT} PROPERTIES BUILD_WITH_INSTALL_RPATH ON) - endif () -- diff --git a/src/OSD/OSD_Chronometer.cxx b/src/OSD/OSD_Chronometer.cxx -index 444f844..25970d0 100644 ---- a/src/OSD/OSD_Chronometer.cxx +index f7374fb..63ac140 100644 +--- a/src/OSD/OSD_Chronometer.cxx.old +++ b/src/OSD/OSD_Chronometer.cxx @@ -51,7 +51,7 @@ #include #endif -#if defined(__APPLE__) && defined(__MACH__) -+#if defined(__OOOOPPLE__) && defined(__MACH__) ++#if defined(__APPLE__) && !defined(__MAC_10_12) #include "gettime_osx.h" #endif - -@@ -283,4 +283,3 @@ void OSD_Chronometer::Show (Standard_Real& user, - system = Cumul_sys; - if (!StopSav) Start(); - } -- From f0f230d480004161c8f052d2ccf334a4f5ce25f8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 17 Jan 2017 19:42:45 -0600 Subject: [PATCH 0005/2394] Allow spack create to detect packages that need to run autoreconf (#2848) --- lib/spack/spack/cmd/create.py | 62 ++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 25752295818..19128e35134 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -136,7 +136,8 @@ def write(self, pkg_path): class AutotoolsPackageTemplate(PackageTemplate): - """Provides appropriate overrides for Autotools-based packages""" + """Provides appropriate overrides for Autotools-based packages + that *do* come with a ``configure`` script""" base_class_name = 'AutotoolsPackage' @@ -152,6 +153,33 @@ def configure_args(self): return args""" +class AutoreconfPackageTemplate(PackageTemplate): + """Provides appropriate overrides for Autotools-based packages + that *do not* come with a ``configure`` script""" + + base_class_name = 'AutotoolsPackage' + + dependencies = """\ + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + # FIXME: Add additional dependencies if required. + # depends_on('foo')""" + + body = """\ + def autoreconf(self, spec, prefix): + # FIXME: Modify the autoreconf method as necessary + autoreconf('--install', '--verbose', '--force') + + def configure_args(self): + # FIXME: Add arguments other than --prefix + # FIXME: If not needed delete this function + args = [] + return args""" + + class CMakePackageTemplate(PackageTemplate): """Provides appropriate overrides for CMake-based packages""" @@ -269,14 +297,15 @@ def __init__(self, name, *args): templates = { - 'autotools': AutotoolsPackageTemplate, - 'cmake': CMakePackageTemplate, - 'scons': SconsPackageTemplate, - 'bazel': BazelPackageTemplate, - 'python': PythonPackageTemplate, - 'r': RPackageTemplate, - 'octave': OctavePackageTemplate, - 'generic': PackageTemplate + 'autotools': AutotoolsPackageTemplate, + 'autoreconf': AutoreconfPackageTemplate, + 'cmake': CMakePackageTemplate, + 'scons': SconsPackageTemplate, + 'bazel': BazelPackageTemplate, + 'python': PythonPackageTemplate, + 'r': RPackageTemplate, + 'octave': OctavePackageTemplate, + 'generic': PackageTemplate } @@ -326,12 +355,14 @@ def __call__(self, stage, url): # uses. If the regular expression matches a file contained in the # archive, the corresponding build system is assumed. clues = [ - (r'/configure$', 'autotools'), - (r'/CMakeLists.txt$', 'cmake'), - (r'/SConstruct$', 'scons'), - (r'/setup.py$', 'python'), - (r'/NAMESPACE$', 'r'), - (r'/WORKSPACE$', 'bazel') + (r'/configure$', 'autotools'), + (r'/configure.(in|ac)$', 'autoreconf'), + (r'/Makefile.am$', 'autoreconf'), + (r'/CMakeLists.txt$', 'cmake'), + (r'/SConstruct$', 'scons'), + (r'/setup.py$', 'python'), + (r'/NAMESPACE$', 'r'), + (r'/WORKSPACE$', 'bazel') ] # Peek inside the compressed file. @@ -356,6 +387,7 @@ def __call__(self, stage, url): for pattern, bs in clues: if any(re.search(pattern, l) for l in lines): build_system = bs + break self.build_system = build_system From 3bd0101fb955c9d92aa355f492d1405b2a9c3464 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 18 Jan 2017 11:16:59 -0500 Subject: [PATCH 0006/2394] jemalloc: Update to 4.4.0 (#2850) --- var/spack/repos/builtin/packages/jemalloc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/jemalloc/package.py b/var/spack/repos/builtin/packages/jemalloc/package.py index 839251f47b4..ddd08f862f2 100644 --- a/var/spack/repos/builtin/packages/jemalloc/package.py +++ b/var/spack/repos/builtin/packages/jemalloc/package.py @@ -31,6 +31,7 @@ class Jemalloc(Package): homepage = "http://www.canonware.com/jemalloc/" url = "https://github.com/jemalloc/jemalloc/releases/download/4.0.4/jemalloc-4.0.4.tar.bz2" + version('4.4.0', '81b59778e19696d99e2f7922820671b0') version('4.3.1', 'f204c0ea1aef92fbb339dc640de338a6') version('4.2.1', '094b0a7b8c77c464d0dc8f0643fd3901') version('4.2.0', 'e6b5d5a1ea93a04207528d274efdd144') From a23fcd2a937624d37595deb90e474ed8a34a44bc Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 18 Jan 2017 11:17:31 -0500 Subject: [PATCH 0007/2394] cmake: Update to 3.7.2 (#2853) --- var/spack/repos/builtin/packages/cmake/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 60c95b91842..276db137ad9 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -33,6 +33,7 @@ class Cmake(Package): list_url = 'https://cmake.org/files/' list_depth = 2 + version('3.7.2', '79bd7e65cd81ea3aa2619484ad6ff25a') version('3.7.1', 'd031d5a06e9f1c5367cdfc56fbd2a1c8') version('3.6.1', 'd6dd661380adacdb12f41b926ec99545') version('3.6.0', 'aa40fbecf49d99c083415c2411d12db9') From b452a7619c47f5082fa2dbcba56ad04518e71aab Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 18 Jan 2017 11:17:50 -0500 Subject: [PATCH 0008/2394] curl: update to 7.52.1 (#2852) --- var/spack/repos/builtin/packages/curl/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index a22ac527141..46d3ccc23bf 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -32,6 +32,7 @@ class Curl(Package): homepage = "http://curl.haxx.se" url = "http://curl.haxx.se/download/curl-7.46.0.tar.bz2" + version('7.52.1', 'dd014df06ff1d12e173de86873f9f77a') version('7.50.3', 'bd177fd6deecce00cfa7b5916d831c5e') version('7.50.2', '6e161179f7af4b9f8b6ea21420132719') version('7.50.1', '015f6a0217ca6f2c5442ca406476920b') From 70042f9e7dd6e05687d3dff2b3a2fd6ea58b9ffb Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 18 Jan 2017 11:18:08 -0500 Subject: [PATCH 0009/2394] hwloc: Update to 1.11.5 (#2851) --- var/spack/repos/builtin/packages/hwloc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index 111c424b223..5d25b6dab9c 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -42,6 +42,7 @@ class Hwloc(Package): list_url = "http://www.open-mpi.org/software/hwloc/" list_depth = 3 + version('1.11.5', '8f5fe6a9be2eb478409ad5e640b2d3ba') version('1.11.4', 'b6f23eb59074fd09fdd84905d50b103d') version('1.11.3', 'c1d36a9de6028eac1d18ea4782ef958f') version('1.11.2', 'e4ca55c2a5c5656da4a4e37c8fc51b23') From 6242aaef6c25af4bfb2b1792e9d68401b594358c Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 18 Jan 2017 11:18:38 -0500 Subject: [PATCH 0010/2394] papi: Update to 5.5.1 (#2849) --- var/spack/repos/builtin/packages/papi/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py index 90a7490e753..115f1604b77 100644 --- a/var/spack/repos/builtin/packages/papi/package.py +++ b/var/spack/repos/builtin/packages/papi/package.py @@ -41,6 +41,7 @@ class Papi(Package): homepage = "http://icl.cs.utk.edu/papi/index.html" url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.4.1.tar.gz" + version('5.5.1', '86a8a6f3d0f34cd83251da3514aae15d') version('5.5.0', '5e1244a04ca031d4cc29b46ce3dd05b5') version('5.4.3', '3211b5a5bb389fe692370f5cf4cc2412') version('5.4.1', '9134a99219c79767a11463a76b0b01a2') From 026e2d0fe628f3e21f0e1bdb716e405e2c5adca7 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 18 Jan 2017 10:51:38 -0600 Subject: [PATCH 0011/2394] Convert 3 more new packages to PythonPackage (#2841) --- var/spack/repos/builtin/packages/py-ipdb/package.py | 7 +------ var/spack/repos/builtin/packages/py-psutil/package.py | 6 +----- .../builtin/packages/py-sphinx-bootstrap-theme/package.py | 7 +------ 3 files changed, 3 insertions(+), 17 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-ipdb/package.py b/var/spack/repos/builtin/packages/py-ipdb/package.py index ab7982a76a3..a79ade5d004 100644 --- a/var/spack/repos/builtin/packages/py-ipdb/package.py +++ b/var/spack/repos/builtin/packages/py-ipdb/package.py @@ -25,7 +25,7 @@ from spack import * -class PyIpdb(Package): +class PyIpdb(PythonPackage): """ipdb is the iPython debugger and has many additional features, including a better interactive debugging experience via colorized output.""" @@ -39,7 +39,6 @@ class PyIpdb(Package): # this the original packager does not know what they are. See the 3rd party # section on ipdb's GitHub: # https://github.com/gotcha/ipdb#third-party-support - extends('python') depends_on('python@2.6:2.7,3.2:') # Dependencies gathered from: @@ -52,7 +51,3 @@ class PyIpdb(Package): depends_on('py-six', type=('build', 'link')) depends_on('py-pexpect', type=('build', 'link')) depends_on('py-prompt-toolkit', type=('build', 'link')) - - def install(self, spec, prefix): - # Installation is uncomplicated, this should suffice. - setup_py('install', '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-psutil/package.py b/var/spack/repos/builtin/packages/py-psutil/package.py index 7aa776d2a12..539f0bdbd7f 100644 --- a/var/spack/repos/builtin/packages/py-psutil/package.py +++ b/var/spack/repos/builtin/packages/py-psutil/package.py @@ -25,7 +25,7 @@ from spack import * -class PyPsutil(Package): +class PyPsutil(PythonPackage): """psutil is a cross-platform library for retrieving information on running processes and system utilization (CPU, memory, disks, network) in Python.""" @@ -35,9 +35,5 @@ class PyPsutil(Package): version('5.0.1', '153dc8be94badc4072016ceeac7808dc') - extends('python') depends_on('python@2.6:') depends_on('py-setuptools', type='build') - - def install(self, spec, prefix): - setup_py('install', '--prefix=%s' % prefix) diff --git a/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py index 38f127dfc44..bcc68cbc646 100644 --- a/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py @@ -25,7 +25,7 @@ from spack import * -class PySphinxBootstrapTheme(Package): +class PySphinxBootstrapTheme(PythonPackage): """Sphinx Bootstrap Theme.""" homepage = "https://pypi.python.org/pypi/sphinx-bootstrap-theme/" @@ -33,9 +33,4 @@ class PySphinxBootstrapTheme(Package): version('0.4.13', '32e513a9c8ffbb8c1e4b036e8f74fb51') - extends('python') - depends_on('py-setuptools', type='build') - - def install(self, spec, prefix): - setup_py('install', '--prefix={0}'.format(prefix)) From ddfbb14ad91880d185c6afbebeef8b09b76c65f8 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 18 Jan 2017 18:33:46 +0100 Subject: [PATCH 0012/2394] octave: add 4.2.0; fix Blas/Lapack; use AutotoolsPackage (#2858) * octave: add 4.2.0; fix Blas/Lapack; use AutotoolsPackage * fix a bug --- .../repos/builtin/packages/octave/package.py | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index df144c8bbbd..2ba70382505 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -26,7 +26,7 @@ import sys -class Octave(Package): +class Octave(AutotoolsPackage): """GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other @@ -38,6 +38,7 @@ class Octave(Package): extendable = True + version('4.2.0', '443ba73782f3531c94bcf016f2f0362a58e186ddb8269af7dcce973562795567') version('4.0.2', 'c2a5cacc6e4c52f924739cdf22c2c687') version('4.0.0', 'a69f8320a4f20a8480c1b278b1adb799') @@ -97,15 +98,18 @@ class Octave(Package): depends_on('suite-sparse', when='+suitesparse') depends_on('zlib', when='+zlib') - def install(self, spec, prefix): - config_args = [ - "--prefix=%s" % prefix - ] + def configure_args(self): + # See + # https://github.com/macports/macports-ports/blob/master/math/octave/ + # https://github.com/Homebrew/homebrew-science/blob/master/octave.rb + + spec = self.spec + config_args = [] # Required dependencies config_args.extend([ - "--with-blas=%s" % spec['blas'].prefix.lib, - "--with-lapack=%s" % spec['lapack'].prefix.lib + "--with-blas=%s" % spec['blas'].blas_libs.ld_flags, + "--with-lapack=%s" % spec['lapack'].lapack_libs.ld_flags ]) # Strongly recommended dependencies @@ -210,10 +214,7 @@ def install(self, spec, prefix): else: config_args.append("--without-z") - configure(*config_args) - - make() - make("install") + return config_args # ======================================================================== # Set up environment to make install easy for Octave extensions. From 5812081b80301089a30e2087a32ddfcaa7c6b4e4 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 18 Jan 2017 18:34:05 +0100 Subject: [PATCH 0013/2394] gmsh: add 2.16 (#2857) --- var/spack/repos/builtin/packages/gmsh/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py index fffd448443d..5c42fcf39fc 100644 --- a/var/spack/repos/builtin/packages/gmsh/package.py +++ b/var/spack/repos/builtin/packages/gmsh/package.py @@ -38,6 +38,7 @@ class Gmsh(CMakePackage): homepage = 'http://gmsh.info' url = 'http://gmsh.info/src/gmsh-2.11.0-source.tgz' + version('2.16.0', 'e829eaf32ea02350a385202cc749341f2a3217c464719384b18f653edd028eea') version('2.15.0', '992a4b580454105f719f5bc05441d3d392ab0b4b80d4ea07b61ca3bdc974070a') version('2.12.0', '7fbd2ec8071e79725266e72744d21e902d4fe6fa9e7c52340ad5f4be5c159d09') version('2.11.0', 'f15b6e7ac9ca649c9a74440e1259d0db') From 02f92fc7f8a69618fcf91282222b8316ace9c4ae Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 18 Jan 2017 12:34:09 -0600 Subject: [PATCH 0014/2394] Massive conversion from Package to AutotoolsPackage (#2845) * Massive conversion from Package to AutotoolsPackage * Forgot to convert p4est to AutotoolsPackage * Fix typo * Fix broken link in docs --- lib/spack/docs/packaging_guide.rst | 11 +++++++--- .../builtin/packages/applewmproto/package.py | 7 +------ .../repos/builtin/packages/appres/package.py | 8 +------ .../builtin/packages/asciidoc/package.py | 8 +------ .../repos/builtin/packages/atk/package.py | 7 +------ .../builtin/packages/bdftopcf/package.py | 8 +------ .../builtin/packages/beforelight/package.py | 8 +------ .../repos/builtin/packages/bertini/package.py | 8 +------ .../builtin/packages/bigreqsproto/package.py | 7 +------ .../repos/builtin/packages/bison/package.py | 8 +------ .../repos/builtin/packages/bitmap/package.py | 8 +------ .../repos/builtin/packages/cddlib/package.py | 7 +------ .../repos/builtin/packages/cfitsio/package.py | 7 +------ .../builtin/packages/cityhash/package.py | 10 +++------ .../repos/builtin/packages/compiz/package.py | 8 +------ .../packages/compositeproto/package.py | 7 +------ .../builtin/packages/constype/package.py | 8 +------ .../builtin/packages/coreutils/package.py | 7 +------ .../repos/builtin/packages/czmq/package.py | 21 +++++++------------ .../builtin/packages/damageproto/package.py | 7 +------ .../builtin/packages/datamash/package.py | 7 +------ .../builtin/packages/dmxproto/package.py | 7 +------ .../builtin/packages/dri2proto/package.py | 7 +------ .../builtin/packages/dri3proto/package.py | 7 +------ .../repos/builtin/packages/editres/package.py | 8 +------ .../builtin/packages/elfutils/package.py | 9 ++++---- .../repos/builtin/packages/emacs/package.py | 9 +++----- .../repos/builtin/packages/evieext/package.py | 7 +------ .../packages/exuberant-ctags/package.py | 8 +------ .../builtin/packages/fastx-toolkit/package.py | 8 +------ .../repos/builtin/packages/fish/package.py | 8 +------ .../builtin/packages/fixesproto/package.py | 7 +------ .../builtin/packages/font-util/package.py | 8 +------ .../packages/fontcacheproto/package.py | 7 +------ .../builtin/packages/fontsproto/package.py | 7 +------ .../builtin/packages/fonttosfnt/package.py | 8 +------ .../builtin/packages/fslsfonts/package.py | 8 +------ .../repos/builtin/packages/fstobdf/package.py | 8 +------ .../builtin/packages/gccmakedep/package.py | 8 +------ .../repos/builtin/packages/gconf/package.py | 8 +------ .../builtin/packages/gdk-pixbuf/package.py | 7 +------ .../repos/builtin/packages/giflib/package.py | 8 +------ .../repos/builtin/packages/glib/package.py | 21 +++++++++---------- .../packages/globus-toolkit/package.py | 7 +------ .../repos/builtin/packages/glog/package.py | 7 +------ .../repos/builtin/packages/glproto/package.py | 7 +------ .../repos/builtin/packages/gnutls/package.py | 7 +------ .../repos/builtin/packages/gperf/package.py | 9 ++------ .../builtin/packages/gperftools/package.py | 7 +------ .../repos/builtin/packages/grandr/package.py | 9 +------- .../repos/builtin/packages/gtkplus/package.py | 7 +------ .../repos/builtin/packages/gts/package.py | 7 +------ .../builtin/packages/harfbuzz/package.py | 7 +------ .../repos/builtin/packages/heppdt/package.py | 8 +------ .../repos/builtin/packages/hsakmt/package.py | 8 +------ .../repos/builtin/packages/htop/package.py | 7 +------ .../repos/builtin/packages/htslib/package.py | 7 +------ .../repos/builtin/packages/hwloc/package.py | 8 +------ .../repos/builtin/packages/hydra/package.py | 8 +------ .../repos/builtin/packages/iceauth/package.py | 8 +------ .../repos/builtin/packages/ico/package.py | 8 +------ .../repos/builtin/packages/ilmbase/package.py | 6 +----- .../repos/builtin/packages/imake/package.py | 8 +------ .../builtin/packages/inputproto/package.py | 7 +------ .../packages/intel-gpu-tools/package.py | 9 +------- .../repos/builtin/packages/itstool/package.py | 7 +------ .../repos/builtin/packages/jpeg/package.py | 9 +------- .../repos/builtin/packages/judy/package.py | 9 ++------ .../repos/builtin/packages/kbproto/package.py | 7 +------ .../builtin/packages/lbxproxy/package.py | 8 +------ .../repos/builtin/packages/lcms/package.py | 7 +------ .../builtin/packages/libapplewm/package.py | 14 ++++--------- .../builtin/packages/libarchive/package.py | 11 +++------- .../repos/builtin/packages/libcerf/package.py | 8 +++---- .../builtin/packages/libcircle/package.py | 7 +------ .../repos/builtin/packages/libdmx/package.py | 8 +------ .../repos/builtin/packages/libedit/package.py | 8 +------ .../builtin/packages/libepoxy/package.py | 7 +------ .../builtin/packages/libevent/package.py | 8 +++---- .../builtin/packages/libfontenc/package.py | 8 +------ .../repos/builtin/packages/libfs/package.py | 8 +------ .../builtin/packages/libgcrypt/package.py | 7 +------ .../repos/builtin/packages/libgd/package.py | 7 ++----- .../builtin/packages/libgpg-error/package.py | 7 +------ .../builtin/packages/libgtextutils/package.py | 8 +------ .../repos/builtin/packages/libhio/package.py | 7 +------ .../repos/builtin/packages/libice/package.py | 8 +------ .../builtin/packages/libjpeg-turbo/package.py | 7 +------ .../builtin/packages/liblbxutil/package.py | 8 +------ .../repos/builtin/packages/libmng/package.py | 7 +------ .../builtin/packages/libmonitor/package.py | 7 +------ .../repos/builtin/packages/libnbc/package.py | 7 +------ .../repos/builtin/packages/liboldx/package.py | 8 +------ .../packages/libpthread-stubs/package.py | 7 +------ .../repos/builtin/packages/libsm/package.py | 8 +------ .../builtin/packages/libsodium/package.py | 8 +------ .../builtin/packages/libunistring/package.py | 9 ++------ .../builtin/packages/libunwind/package.py | 7 +------ .../repos/builtin/packages/libuuid/package.py | 8 +------ .../repos/builtin/packages/libuv/package.py | 9 ++------ .../builtin/packages/libwindowswm/package.py | 8 +------ .../repos/builtin/packages/libx11/package.py | 9 +------- .../repos/builtin/packages/libxau/package.py | 9 +------- .../repos/builtin/packages/libxaw/package.py | 8 +------ .../builtin/packages/libxaw3d/package.py | 8 +------ .../repos/builtin/packages/libxcb/package.py | 9 +------- .../builtin/packages/libxcomposite/package.py | 8 +------ .../builtin/packages/libxcursor/package.py | 8 +------ .../builtin/packages/libxdamage/package.py | 8 +------ .../builtin/packages/libxdmcp/package.py | 9 +------- .../builtin/packages/libxevie/package.py | 8 +------ .../repos/builtin/packages/libxext/package.py | 8 +------ .../builtin/packages/libxfixes/package.py | 8 +------ .../builtin/packages/libxfont/package.py | 8 +------ .../builtin/packages/libxfont2/package.py | 8 +------ .../builtin/packages/libxfontcache/package.py | 8 +------ .../repos/builtin/packages/libxft/package.py | 8 +------ .../repos/builtin/packages/libxi/package.py | 8 +------ .../builtin/packages/libxinerama/package.py | 8 +------ .../builtin/packages/libxkbfile/package.py | 8 +------ .../builtin/packages/libxkbui/package.py | 8 +------ .../repos/builtin/packages/libxml2/package.py | 11 +++------- .../repos/builtin/packages/libxmu/package.py | 8 +------ .../repos/builtin/packages/libxp/package.py | 8 +------ .../repos/builtin/packages/libxpm/package.py | 8 +------ .../builtin/packages/libxpresent/package.py | 8 +------ .../packages/libxprintapputil/package.py | 8 +------ .../builtin/packages/libxprintutil/package.py | 8 +------ .../builtin/packages/libxrandr/package.py | 8 +------ .../builtin/packages/libxrender/package.py | 8 +------ .../repos/builtin/packages/libxres/package.py | 8 +------ .../builtin/packages/libxscrnsaver/package.py | 8 +------ .../builtin/packages/libxshmfence/package.py | 9 +------- .../repos/builtin/packages/libxt/package.py | 8 +------ .../builtin/packages/libxtrap/package.py | 8 +------ .../repos/builtin/packages/libxtst/package.py | 8 +------ .../repos/builtin/packages/libxv/package.py | 8 +------ .../repos/builtin/packages/libxvmc/package.py | 8 +------ .../builtin/packages/libxxf86dga/package.py | 8 +------ .../builtin/packages/libxxf86misc/package.py | 8 +------ .../builtin/packages/libxxf86vm/package.py | 8 +------ .../repos/builtin/packages/listres/package.py | 8 +------ .../repos/builtin/packages/lmod/package.py | 6 +----- .../repos/builtin/packages/lndir/package.py | 8 +------ .../repos/builtin/packages/lwgrp/package.py | 7 +------ .../repos/builtin/packages/lwm2/package.py | 7 +------ .../builtin/packages/makedepend/package.py | 9 +------- .../repos/builtin/packages/mesa/package.py | 8 +------ .../builtin/packages/mkfontdir/package.py | 8 +------ .../builtin/packages/mkfontscale/package.py | 8 +------ .../repos/builtin/packages/mpc/package.py | 9 ++------ .../repos/builtin/packages/mpfr/package.py | 7 +------ .../repos/builtin/packages/mpip/package.py | 8 +++---- .../repos/builtin/packages/mrnet/package.py | 15 +++++++------ .../repos/builtin/packages/mxml/package.py | 8 +++---- .../repos/builtin/packages/nano/package.py | 7 +------ .../repos/builtin/packages/nasm/package.py | 7 +------ .../repos/builtin/packages/ncview/package.py | 8 +------ .../builtin/packages/netgauge/package.py | 7 +------ .../repos/builtin/packages/nettle/package.py | 10 +-------- .../repos/builtin/packages/npm/package.py | 12 ++--------- .../repos/builtin/packages/ocaml/package.py | 8 ++----- .../repos/builtin/packages/oclock/package.py | 8 +------ .../repos/builtin/packages/pango/package.py | 4 +--- .../builtin/packages/parallel/package.py | 8 +------ .../builtin/packages/patchelf/package.py | 7 +------ .../repos/builtin/packages/pcre2/package.py | 7 +------ .../repos/builtin/packages/pdt/package.py | 7 +------ .../builtin/packages/presentproto/package.py | 7 +------ .../builtin/packages/printproto/package.py | 7 +------ .../repos/builtin/packages/proj/package.py | 10 +-------- .../builtin/packages/protobuf/package.py | 8 +------ .../builtin/packages/proxymngr/package.py | 8 +------ .../repos/builtin/packages/py-xpyb/package.py | 8 +------ .../builtin/packages/randrproto/package.py | 7 +------ .../builtin/packages/readline/package.py | 6 ++---- .../builtin/packages/recordproto/package.py | 7 +------ .../builtin/packages/rendercheck/package.py | 8 +------ .../builtin/packages/renderproto/package.py | 7 +------ .../builtin/packages/resourceproto/package.py | 7 +------ .../repos/builtin/packages/rgb/package.py | 9 +------- .../repos/builtin/packages/rstart/package.py | 8 +------ .../repos/builtin/packages/rsync/package.py | 8 +------ .../repos/builtin/packages/screen/package.py | 7 +------ .../repos/builtin/packages/scripts/package.py | 8 +------ .../packages/scrnsaverproto/package.py | 7 +------ .../builtin/packages/sdl2-image/package.py | 8 +------ .../repos/builtin/packages/sed/package.py | 8 +------ .../repos/builtin/packages/sessreg/package.py | 8 +------ .../builtin/packages/setxkbmap/package.py | 8 +------ .../builtin/packages/showfont/package.py | 8 +------ .../repos/builtin/packages/smproxy/package.py | 8 +------ .../repos/builtin/packages/snappy/package.py | 7 +------ .../repos/builtin/packages/sowing/package.py | 6 ++---- .../builtin/packages/sparsehash/package.py | 8 +------ .../repos/builtin/packages/spindle/package.py | 7 +------ .../repos/builtin/packages/spot/package.py | 8 +------ .../repos/builtin/packages/swig/package.py | 7 +------ .../packages/the-silver-searcher/package.py | 8 +------ .../builtin/packages/transset/package.py | 8 +------ .../builtin/packages/trapproto/package.py | 7 +------ .../repos/builtin/packages/twm/package.py | 8 +------ .../repos/builtin/packages/uberftp/package.py | 8 +------ .../builtin/packages/uncrustify/package.py | 7 +------ .../builtin/packages/unixodbc/package.py | 8 +------ .../builtin/packages/util-macros/package.py | 7 +------ .../builtin/packages/videoproto/package.py | 7 +------ .../repos/builtin/packages/viewres/package.py | 8 +------ .../packages/windowswmproto/package.py | 7 +------ .../repos/builtin/packages/x11perf/package.py | 8 +------ .../repos/builtin/packages/xauth/package.py | 9 ++------ .../builtin/packages/xbacklight/package.py | 8 +------ .../repos/builtin/packages/xbiff/package.py | 8 +------ .../builtin/packages/xbitmaps/package.py | 7 +------ .../repos/builtin/packages/xcalc/package.py | 8 +------ .../builtin/packages/xcb-demo/package.py | 13 +++--------- .../builtin/packages/xcb-proto/package.py | 8 ++----- .../packages/xcb-util-cursor/package.py | 8 +------ .../packages/xcb-util-errors/package.py | 9 +------- .../packages/xcb-util-image/package.py | 9 +------- .../packages/xcb-util-keysyms/package.py | 8 +------ .../packages/xcb-util-renderutil/package.py | 8 +------ .../builtin/packages/xcb-util-wm/package.py | 8 +------ .../builtin/packages/xcb-util/package.py | 8 +------ .../builtin/packages/xclipboard/package.py | 8 +------ .../repos/builtin/packages/xclock/package.py | 8 +------ .../builtin/packages/xcmiscproto/package.py | 7 +------ .../repos/builtin/packages/xcmsdb/package.py | 8 +------ .../builtin/packages/xcompmgr/package.py | 8 +------ .../builtin/packages/xconsole/package.py | 8 +------ .../builtin/packages/xcursorgen/package.py | 8 +------ .../builtin/packages/xdbedizzy/package.py | 8 +------ .../builtin/packages/xditview/package.py | 8 +------ .../repos/builtin/packages/xdm/package.py | 8 +------ .../builtin/packages/xdpyinfo/package.py | 8 +------ .../builtin/packages/xdriinfo/package.py | 8 +------ .../repos/builtin/packages/xedit/package.py | 8 +------ .../repos/builtin/packages/xev/package.py | 8 +------ .../builtin/packages/xextproto/package.py | 7 +------ .../repos/builtin/packages/xeyes/package.py | 8 +------ .../packages/xf86bigfontproto/package.py | 7 +------ .../repos/builtin/packages/xf86dga/package.py | 8 +------ .../builtin/packages/xf86dgaproto/package.py | 7 +------ .../builtin/packages/xf86driproto/package.py | 7 +------ .../builtin/packages/xf86miscproto/package.py | 7 +------ .../builtin/packages/xf86rushproto/package.py | 7 +------ .../packages/xf86vidmodeproto/package.py | 7 +------ .../repos/builtin/packages/xfd/package.py | 8 +------ .../builtin/packages/xfindproxy/package.py | 8 +------ .../builtin/packages/xfontsel/package.py | 8 +------ .../repos/builtin/packages/xfs/package.py | 8 +------ .../repos/builtin/packages/xfsinfo/package.py | 8 +------ .../repos/builtin/packages/xfwp/package.py | 12 +++-------- .../repos/builtin/packages/xgamma/package.py | 8 +------ .../repos/builtin/packages/xgc/package.py | 8 +------ .../repos/builtin/packages/xhost/package.py | 8 +------ .../builtin/packages/xineramaproto/package.py | 7 +------ .../repos/builtin/packages/xinit/package.py | 8 +------ .../repos/builtin/packages/xinput/package.py | 8 +------ .../repos/builtin/packages/xkbcomp/package.py | 8 +------ .../repos/builtin/packages/xkbdata/package.py | 8 +------ .../repos/builtin/packages/xkbevd/package.py | 8 +------ .../builtin/packages/xkbprint/package.py | 8 +------ .../builtin/packages/xkbutils/package.py | 8 +------ .../packages/xkeyboard-config/package.py | 8 +------ .../repos/builtin/packages/xkill/package.py | 8 +------ .../repos/builtin/packages/xload/package.py | 8 +------ .../repos/builtin/packages/xlogo/package.py | 8 +------ .../builtin/packages/xlsatoms/package.py | 8 +------ .../builtin/packages/xlsclients/package.py | 8 +------ .../builtin/packages/xlsfonts/package.py | 8 +------ .../repos/builtin/packages/xmag/package.py | 8 +------ .../repos/builtin/packages/xman/package.py | 8 +------ .../builtin/packages/xmessage/package.py | 8 +------ .../repos/builtin/packages/xmh/package.py | 8 +------ .../repos/builtin/packages/xmlto/package.py | 8 +------ .../repos/builtin/packages/xmodmap/package.py | 8 +------ .../repos/builtin/packages/xmore/package.py | 8 +------ .../builtin/packages/xorg-cf-files/package.py | 7 +------ .../builtin/packages/xorg-docs/package.py | 8 +------ .../builtin/packages/xorg-gtest/package.py | 8 +------ .../builtin/packages/xorg-server/package.py | 8 +------ .../packages/xorg-sgml-doctools/package.py | 8 +------ .../builtin/packages/xphelloworld/package.py | 8 +------ .../builtin/packages/xplsprinters/package.py | 8 +------ .../repos/builtin/packages/xpr/package.py | 8 +------ .../packages/xprehashprinterlist/package.py | 8 +------ .../repos/builtin/packages/xprop/package.py | 8 +------ .../repos/builtin/packages/xproto/package.py | 7 +------ .../xproxymanagementprotocol/package.py | 7 +------ .../repos/builtin/packages/xrandr/package.py | 8 +------ .../repos/builtin/packages/xrdb/package.py | 8 +------ .../builtin/packages/xrefresh/package.py | 8 +------ .../repos/builtin/packages/xrx/package.py | 8 +------ .../repos/builtin/packages/xscope/package.py | 8 +------ .../repos/builtin/packages/xset/package.py | 8 +------ .../builtin/packages/xsetmode/package.py | 8 +------ .../builtin/packages/xsetpointer/package.py | 8 +------ .../builtin/packages/xsetroot/package.py | 8 +------ .../repos/builtin/packages/xsm/package.py | 8 +------ .../builtin/packages/xstdcmap/package.py | 8 +------ .../repos/builtin/packages/xtrans/package.py | 7 +------ .../repos/builtin/packages/xtrap/package.py | 8 +------ .../repos/builtin/packages/xts/package.py | 12 +++-------- .../builtin/packages/xvidtune/package.py | 8 +------ .../repos/builtin/packages/xvinfo/package.py | 8 +------ .../repos/builtin/packages/xwd/package.py | 8 +------ .../builtin/packages/xwininfo/package.py | 8 +------ .../repos/builtin/packages/xwud/package.py | 8 +------ .../repos/builtin/packages/xz/package.py | 10 +-------- .../repos/builtin/packages/yasm/package.py | 7 +------ .../repos/builtin/packages/zeromq/package.py | 9 +++----- .../repos/builtin/packages/zsh/package.py | 8 +------ 313 files changed, 384 insertions(+), 2119 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 8a39ee28e2c..b09c677e0b1 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1490,7 +1490,7 @@ Additional hybrid dependency types are (note the lack of quotes): * ****: ``type`` assumed to be ``("build", "link")``. This is the common case for compiled language usage. - + """"""""""""""""""" Dependency Formulas """"""""""""""""""" @@ -2007,10 +2007,15 @@ The last element of a package is its ``install()`` method. This is where the real work of installation happens, and it's the main part of the package you'll need to customize for each piece of software. -.. literalinclude:: ../../../var/spack/repos/builtin/packages/mpfr/package.py - :pyobject: Mpfr.install +.. code-block:: python :linenos: + def install(self, spec prefix): + configure('--prefix={0}'.format(prefix)) + + make() + make('install') + ``install`` takes a ``spec``: a description of how the package should be built, and a ``prefix``: the path to the directory where the software should be installed. diff --git a/var/spack/repos/builtin/packages/applewmproto/package.py b/var/spack/repos/builtin/packages/applewmproto/package.py index 8d7e360bfb0..41d7c4c10a9 100644 --- a/var/spack/repos/builtin/packages/applewmproto/package.py +++ b/var/spack/repos/builtin/packages/applewmproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Applewmproto(Package): +class Applewmproto(AutotoolsPackage): """Apple Rootless Window Management Extension. This extension defines a protcol that allows X window managers @@ -39,8 +39,3 @@ class Applewmproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/appres/package.py b/var/spack/repos/builtin/packages/appres/package.py index 47a9c5bb545..ff13937a0e6 100644 --- a/var/spack/repos/builtin/packages/appres/package.py +++ b/var/spack/repos/builtin/packages/appres/package.py @@ -25,7 +25,7 @@ from spack import * -class Appres(Package): +class Appres(AutotoolsPackage): """The appres program prints the resources seen by an application (or subhierarchy of an application) with the specified class and instance names. It can be used to determine which resources a particular @@ -42,9 +42,3 @@ class Appres(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/asciidoc/package.py b/var/spack/repos/builtin/packages/asciidoc/package.py index 552030d965f..428bb7d645c 100644 --- a/var/spack/repos/builtin/packages/asciidoc/package.py +++ b/var/spack/repos/builtin/packages/asciidoc/package.py @@ -25,7 +25,7 @@ from spack import * -class Asciidoc(Package): +class Asciidoc(AutotoolsPackage): """A presentable text document format for writing articles, UNIX man pages and other small to medium sized documents.""" @@ -38,9 +38,3 @@ class Asciidoc(Package): depends_on('libxslt') depends_on('docbook-xml') depends_on('docbook-xsl') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py index 0a7d48774d8..1375f2d0f92 100644 --- a/var/spack/repos/builtin/packages/atk/package.py +++ b/var/spack/repos/builtin/packages/atk/package.py @@ -25,7 +25,7 @@ from spack import * -class Atk(Package): +class Atk(AutotoolsPackage): """ATK provides the set of accessibility interfaces that are implemented by other toolkits and applications. Using the ATK interfaces, accessibility tools have full access to view and @@ -43,8 +43,3 @@ def url_for_version(self, version): """Handle atk's version-based custom URLs.""" url = 'http://ftp.gnome.org/pub/gnome/sources/atk' return url + '/%s/atk-%s.tar.xz' % (version.up_to(2), version) - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/bdftopcf/package.py b/var/spack/repos/builtin/packages/bdftopcf/package.py index 095f0c1bd4c..b6ddd044181 100644 --- a/var/spack/repos/builtin/packages/bdftopcf/package.py +++ b/var/spack/repos/builtin/packages/bdftopcf/package.py @@ -25,7 +25,7 @@ from spack import * -class Bdftopcf(Package): +class Bdftopcf(AutotoolsPackage): """bdftopcf is a font compiler for the X server and font server. Fonts in Portable Compiled Format can be read by any architecture, although the file is structured to allow one particular architecture to read @@ -42,9 +42,3 @@ class Bdftopcf(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/beforelight/package.py b/var/spack/repos/builtin/packages/beforelight/package.py index 37a91f56148..3c0cbcf3cb9 100644 --- a/var/spack/repos/builtin/packages/beforelight/package.py +++ b/var/spack/repos/builtin/packages/beforelight/package.py @@ -25,7 +25,7 @@ from spack import * -class Beforelight(Package): +class Beforelight(AutotoolsPackage): """The beforelight program is a sample implementation of a screen saver for X servers supporting the MIT-SCREEN-SAVER extension. It is only recommended for use as a code sample, as it does not include features @@ -42,9 +42,3 @@ class Beforelight(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/bertini/package.py b/var/spack/repos/builtin/packages/bertini/package.py index 7dd17a062e5..c6d169fbcc7 100644 --- a/var/spack/repos/builtin/packages/bertini/package.py +++ b/var/spack/repos/builtin/packages/bertini/package.py @@ -25,7 +25,7 @@ from spack import * -class Bertini(Package): +class Bertini(AutotoolsPackage): """Bertini is a general-purpose solver, written in C, that was created for research about polynomial continuation. It solves for the numerical solution of systems of polynomial equations using homotopy continuation.""" @@ -42,9 +42,3 @@ class Bertini(Package): depends_on('gmp') depends_on('mpfr') depends_on('mpi', when='+mpi') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/bigreqsproto/package.py b/var/spack/repos/builtin/packages/bigreqsproto/package.py index 61fd9c51216..f2542d921e2 100644 --- a/var/spack/repos/builtin/packages/bigreqsproto/package.py +++ b/var/spack/repos/builtin/packages/bigreqsproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Bigreqsproto(Package): +class Bigreqsproto(AutotoolsPackage): """Big Requests Extension. This extension defines a protocol to enable the use of requests @@ -38,8 +38,3 @@ class Bigreqsproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index 70795f05ccf..cc2d10dea11 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -25,7 +25,7 @@ from spack import * -class Bison(Package): +class Bison(AutotoolsPackage): """Bison is a general-purpose parser generator that converts an annotated context-free grammar into a deterministic LR or generalized LR (GLR) parser employing LALR(1) parser tables.""" @@ -36,9 +36,3 @@ class Bison(Package): version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8') depends_on("m4", type='build') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/bitmap/package.py b/var/spack/repos/builtin/packages/bitmap/package.py index 55fdacefd5a..80bc496013f 100644 --- a/var/spack/repos/builtin/packages/bitmap/package.py +++ b/var/spack/repos/builtin/packages/bitmap/package.py @@ -25,7 +25,7 @@ from spack import * -class Bitmap(Package): +class Bitmap(AutotoolsPackage): """bitmap, bmtoa, atobm - X bitmap (XBM) editor and converter utilities.""" homepage = "http://cgit.freedesktop.org/xorg/app/bitmap" @@ -43,9 +43,3 @@ class Bitmap(Package): depends_on('xproto@7.0.25:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/cddlib/package.py b/var/spack/repos/builtin/packages/cddlib/package.py index ced5f46d1f4..50dc5ad4724 100644 --- a/var/spack/repos/builtin/packages/cddlib/package.py +++ b/var/spack/repos/builtin/packages/cddlib/package.py @@ -26,7 +26,7 @@ from spack import * -class Cddlib(Package): +class Cddlib(AutotoolsPackage): """The C-library cddlib is a C implementation of the Double Description Method of Motzkin et al. for generating all vertices (i.e. extreme points) and extreme rays of a general convex polyhedron in R^d given by a system @@ -51,8 +51,3 @@ def url_for_version(self, version): depends_on("gmp") depends_on("libtool", type="build") - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/cfitsio/package.py b/var/spack/repos/builtin/packages/cfitsio/package.py index 79af31ae216..6853c33119c 100644 --- a/var/spack/repos/builtin/packages/cfitsio/package.py +++ b/var/spack/repos/builtin/packages/cfitsio/package.py @@ -25,7 +25,7 @@ from spack import * -class Cfitsio(Package): +class Cfitsio(AutotoolsPackage): """CFITSIO is a library of C and Fortran subroutines for reading and writing data files in FITS (Flexible Image Transport System) data format. """ @@ -37,8 +37,3 @@ class Cfitsio(Package): def url_for_version(self, version): url = 'ftp://heasarc.gsfc.nasa.gov/software/fitsio/c/cfitsio{0}.tar.gz' return url.format(version.joined) - - def install(self, spec, prefix): - configure('--prefix=' + prefix) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/cityhash/package.py b/var/spack/repos/builtin/packages/cityhash/package.py index 85d948cc57a..b98f39a3360 100644 --- a/var/spack/repos/builtin/packages/cityhash/package.py +++ b/var/spack/repos/builtin/packages/cityhash/package.py @@ -23,10 +23,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -from spack.util.environment import * -class Cityhash(Package): +class Cityhash(AutotoolsPackage): """CityHash, a family of hash functions for strings.""" homepage = "https://github.com/google/cityhash" @@ -37,8 +36,5 @@ class Cityhash(Package): version('master', branch='master', git='https://github.com/google/cityhash.git') - def install(self, spec, prefix): - configure('--enable-sse4.2', '--prefix=%s' % prefix) - - make() - make("install") + def configure_args(self): + return ['--enable-sse4.2'] diff --git a/var/spack/repos/builtin/packages/compiz/package.py b/var/spack/repos/builtin/packages/compiz/package.py index ec21f5b4f2f..92820db10df 100644 --- a/var/spack/repos/builtin/packages/compiz/package.py +++ b/var/spack/repos/builtin/packages/compiz/package.py @@ -25,7 +25,7 @@ from spack import * -class Compiz(Package): +class Compiz(AutotoolsPackage): """compiz - OpenGL window and compositing manager. Compiz is an OpenGL compositing manager that use @@ -55,9 +55,3 @@ class Compiz(Package): depends_on('libpng') depends_on('glib') depends_on('gconf') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/compositeproto/package.py b/var/spack/repos/builtin/packages/compositeproto/package.py index 1b3fbda0af4..3d445bd7e8c 100644 --- a/var/spack/repos/builtin/packages/compositeproto/package.py +++ b/var/spack/repos/builtin/packages/compositeproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Compositeproto(Package): +class Compositeproto(AutotoolsPackage): """Composite Extension. This package contains header files and documentation for the composite @@ -38,8 +38,3 @@ class Compositeproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/constype/package.py b/var/spack/repos/builtin/packages/constype/package.py index dcf88fdd55c..3a62e897272 100644 --- a/var/spack/repos/builtin/packages/constype/package.py +++ b/var/spack/repos/builtin/packages/constype/package.py @@ -25,7 +25,7 @@ from spack import * -class Constype(Package): +class Constype(AutotoolsPackage): """constype prints on the standard output the Sun code for the type of display that the specified device is. @@ -39,9 +39,3 @@ class Constype(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/coreutils/package.py b/var/spack/repos/builtin/packages/coreutils/package.py index 94cfa113410..a3c77dda9ce 100644 --- a/var/spack/repos/builtin/packages/coreutils/package.py +++ b/var/spack/repos/builtin/packages/coreutils/package.py @@ -25,7 +25,7 @@ from spack import * -class Coreutils(Package): +class Coreutils(AutotoolsPackage): """The GNU Core Utilities are the basic file, shell and text manipulation utilities of the GNU operating system. These are the core utilities which are expected to exist on every @@ -35,8 +35,3 @@ class Coreutils(Package): url = "http://ftp.gnu.org/gnu/coreutils/coreutils-8.23.tar.xz" version('8.23', 'abed135279f87ad6762ce57ff6d89c41') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/czmq/package.py b/var/spack/repos/builtin/packages/czmq/package.py index ef6374619bc..f7791967b36 100644 --- a/var/spack/repos/builtin/packages/czmq/package.py +++ b/var/spack/repos/builtin/packages/czmq/package.py @@ -23,10 +23,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os -class Czmq(Package): +class Czmq(AutotoolsPackage): """ A C interface to the ZMQ library """ homepage = "http://czmq.zeromq.org" url = "https://github.com/zeromq/czmq/archive/v3.0.2.tar.gz" @@ -40,7 +39,7 @@ class Czmq(Package): depends_on('pkg-config', type='build') depends_on('zeromq') - def install(self, spec, prefix): + def autoreconf(self, spec, prefix): # Work around autogen.sh oddities # bash = which("bash") # bash("./autogen.sh") @@ -48,14 +47,10 @@ def install(self, spec, prefix): autoreconf = which("autoreconf") autoreconf("--install", "--verbose", "--force", "-I", "config", - "-I", os.path.join(spec['pkg-config'].prefix, - "share", "aclocal"), - "-I", os.path.join(spec['automake'].prefix, - "share", "aclocal"), - "-I", os.path.join(spec['libtool'].prefix, - "share", "aclocal"), + "-I", join_path(spec['pkg-config'].prefix, + "share", "aclocal"), + "-I", join_path(spec['automake'].prefix, + "share", "aclocal"), + "-I", join_path(spec['libtool'].prefix, + "share", "aclocal"), ) - configure("--prefix=%s" % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/damageproto/package.py b/var/spack/repos/builtin/packages/damageproto/package.py index 84e0fac3110..22eeeeddcb8 100644 --- a/var/spack/repos/builtin/packages/damageproto/package.py +++ b/var/spack/repos/builtin/packages/damageproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Damageproto(Package): +class Damageproto(AutotoolsPackage): """X Damage Extension. This package contains header files and documentation for the X Damage @@ -38,8 +38,3 @@ class Damageproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/datamash/package.py b/var/spack/repos/builtin/packages/datamash/package.py index 85adeca996e..4cf7d24ef18 100644 --- a/var/spack/repos/builtin/packages/datamash/package.py +++ b/var/spack/repos/builtin/packages/datamash/package.py @@ -25,7 +25,7 @@ from spack import * -class Datamash(Package): +class Datamash(AutotoolsPackage): """GNU datamash is a command-line program which performs basic numeric, textual and statistical operations on input textual data files. """ @@ -37,8 +37,3 @@ class Datamash(Package): version('1.0.7', '9f317bab07454032ba9c068e7f17b04b') version('1.0.6', 'ff26fdef0f343cb695cf1853e14a1a5b') version('1.0.5', '9a29549dc7feca49fdc5fab696614e11') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/dmxproto/package.py b/var/spack/repos/builtin/packages/dmxproto/package.py index 34213bba5f5..7aa02511911 100644 --- a/var/spack/repos/builtin/packages/dmxproto/package.py +++ b/var/spack/repos/builtin/packages/dmxproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Dmxproto(Package): +class Dmxproto(AutotoolsPackage): """Distributed Multihead X (DMX) Extension. This extension defines a protocol for clients to access a front-end proxy @@ -39,8 +39,3 @@ class Dmxproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/dri2proto/package.py b/var/spack/repos/builtin/packages/dri2proto/package.py index d05e7ea2316..4c906013b4a 100644 --- a/var/spack/repos/builtin/packages/dri2proto/package.py +++ b/var/spack/repos/builtin/packages/dri2proto/package.py @@ -25,7 +25,7 @@ from spack import * -class Dri2proto(Package): +class Dri2proto(AutotoolsPackage): """Direct Rendering Infrastructure 2 Extension. This extension defines a protocol to securely allow user applications to @@ -39,8 +39,3 @@ class Dri2proto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/dri3proto/package.py b/var/spack/repos/builtin/packages/dri3proto/package.py index cd2594d5da6..be8b521aae8 100644 --- a/var/spack/repos/builtin/packages/dri3proto/package.py +++ b/var/spack/repos/builtin/packages/dri3proto/package.py @@ -25,7 +25,7 @@ from spack import * -class Dri3proto(Package): +class Dri3proto(AutotoolsPackage): """Direct Rendering Infrastructure 3 Extension. This extension defines a protocol to securely allow user applications to @@ -39,8 +39,3 @@ class Dri3proto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/editres/package.py b/var/spack/repos/builtin/packages/editres/package.py index 52ad33b1334..d1823ec6fdf 100644 --- a/var/spack/repos/builtin/packages/editres/package.py +++ b/var/spack/repos/builtin/packages/editres/package.py @@ -25,7 +25,7 @@ from spack import * -class Editres(Package): +class Editres(AutotoolsPackage): """Dynamic resource editor for X Toolkit applications.""" homepage = "http://cgit.freedesktop.org/xorg/app/editres" @@ -40,9 +40,3 @@ class Editres(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index ef8c2433c95..bdc858e121e 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -25,7 +25,7 @@ from spack import * -class Elfutils(Package): +class Elfutils(AutotoolsPackage): """elfutils is a collection of various binary tools such as eu-objdump, eu-readelf, and other utilities that allow you to inspect and manipulate ELF files. Refer to Table 5.Tools Included @@ -41,10 +41,9 @@ class Elfutils(Package): provides('elf') - def install(self, spec, prefix): + def autoreconf(self, spec, prefix): autoreconf = which('autoreconf') autoreconf('-if') - configure('--prefix=%s' % prefix, '--enable-maintainer-mode') - make() - make("install") + def configure_args(self): + return ['--enable-maintainer-mode'] diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py index 1f9caee24c2..0075c397b64 100644 --- a/var/spack/repos/builtin/packages/emacs/package.py +++ b/var/spack/repos/builtin/packages/emacs/package.py @@ -25,7 +25,7 @@ from spack import * -class Emacs(Package): +class Emacs(AutotoolsPackage): """The Emacs programmable text editor.""" homepage = "https://www.gnu.org/software/emacs" @@ -47,7 +47,7 @@ class Emacs(Package): depends_on('libxaw', when='+X toolkit=athena') depends_on('gtkplus+X', when='+X toolkit=gtk') - def install(self, spec, prefix): + def configure_args(self): args = [] toolkit = spec.variants['toolkit'].value if '+X' in spec: @@ -61,7 +61,4 @@ def install(self, spec, prefix): else: args = ['--without-x'] - configure('--prefix={0}'.format(prefix), *args) - - make() - make("install") + return args diff --git a/var/spack/repos/builtin/packages/evieext/package.py b/var/spack/repos/builtin/packages/evieext/package.py index afc0245f506..8814ae31c00 100644 --- a/var/spack/repos/builtin/packages/evieext/package.py +++ b/var/spack/repos/builtin/packages/evieext/package.py @@ -25,7 +25,7 @@ from spack import * -class Evieext(Package): +class Evieext(AutotoolsPackage): """Extended Visual Information Extension (XEVIE). This extension defines a protocol for a client to determine information @@ -38,8 +38,3 @@ class Evieext(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/exuberant-ctags/package.py b/var/spack/repos/builtin/packages/exuberant-ctags/package.py index 10be30ab8bf..5d1c1eafc6a 100644 --- a/var/spack/repos/builtin/packages/exuberant-ctags/package.py +++ b/var/spack/repos/builtin/packages/exuberant-ctags/package.py @@ -25,15 +25,9 @@ from spack import * -class ExuberantCtags(Package): +class ExuberantCtags(AutotoolsPackage): """The canonical ctags generator""" homepage = "ctags.sourceforge.net" url = "http://downloads.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz" version('5.8', 'c00f82ecdcc357434731913e5b48630d') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/fastx-toolkit/package.py b/var/spack/repos/builtin/packages/fastx-toolkit/package.py index 04b4d24b39c..fed54b9b366 100644 --- a/var/spack/repos/builtin/packages/fastx-toolkit/package.py +++ b/var/spack/repos/builtin/packages/fastx-toolkit/package.py @@ -25,7 +25,7 @@ from spack import * -class FastxToolkit(Package): +class FastxToolkit(AutotoolsPackage): """The FASTX-Toolkit is a collection of command line tools for Short-Reads FASTA/FASTQ files preprocessing.""" @@ -35,9 +35,3 @@ class FastxToolkit(Package): version('0.0.14', 'bf1993c898626bb147de3d6695c20b40') depends_on('libgtextutils') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/fish/package.py b/var/spack/repos/builtin/packages/fish/package.py index fb784b7571a..f0dfac70c83 100644 --- a/var/spack/repos/builtin/packages/fish/package.py +++ b/var/spack/repos/builtin/packages/fish/package.py @@ -25,7 +25,7 @@ from spack import * -class Fish(Package): +class Fish(AutotoolsPackage): """fish is a smart and user-friendly command line shell for OS X, Linux, and the rest of the family. """ @@ -35,9 +35,3 @@ class Fish(Package): list_url = "http://fishshell.com/" version('2.2.0', 'a76339fd14ce2ec229283c53e805faac48c3e99d9e3ede9d82c0554acfc7b77a') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/fixesproto/package.py b/var/spack/repos/builtin/packages/fixesproto/package.py index 64852b40e29..934848727fb 100644 --- a/var/spack/repos/builtin/packages/fixesproto/package.py +++ b/var/spack/repos/builtin/packages/fixesproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Fixesproto(Package): +class Fixesproto(AutotoolsPackage): """X Fixes Extension. The extension makes changes to many areas of the protocol to resolve @@ -39,8 +39,3 @@ class Fixesproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/font-util/package.py b/var/spack/repos/builtin/packages/font-util/package.py index 0b310117c67..03a466d00aa 100644 --- a/var/spack/repos/builtin/packages/font-util/package.py +++ b/var/spack/repos/builtin/packages/font-util/package.py @@ -25,7 +25,7 @@ from spack import * -class FontUtil(Package): +class FontUtil(AutotoolsPackage): """X.Org font package creation/installation utilities.""" homepage = "http://cgit.freedesktop.org/xorg/font/util" @@ -35,9 +35,3 @@ class FontUtil(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/fontcacheproto/package.py b/var/spack/repos/builtin/packages/fontcacheproto/package.py index 77feb875738..f793aba9cf1 100644 --- a/var/spack/repos/builtin/packages/fontcacheproto/package.py +++ b/var/spack/repos/builtin/packages/fontcacheproto/package.py @@ -25,15 +25,10 @@ from spack import * -class Fontcacheproto(Package): +class Fontcacheproto(AutotoolsPackage): """X.org FontcacheProto protocol headers.""" homepage = "http://cgit.freedesktop.org/xorg/proto/fontcacheproto" url = "https://www.x.org/archive/individual/proto/fontcacheproto-0.1.3.tar.gz" version('0.1.3', '5a91ab914ffbfbc856e6fcde52e6f3e3') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/fontsproto/package.py b/var/spack/repos/builtin/packages/fontsproto/package.py index c3771e18fae..03e825c2f75 100644 --- a/var/spack/repos/builtin/packages/fontsproto/package.py +++ b/var/spack/repos/builtin/packages/fontsproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Fontsproto(Package): +class Fontsproto(AutotoolsPackage): """X Fonts Extension.""" homepage = "http://cgit.freedesktop.org/xorg/proto/fontsproto" @@ -35,8 +35,3 @@ class Fontsproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/fonttosfnt/package.py b/var/spack/repos/builtin/packages/fonttosfnt/package.py index 016cab1ac86..e8cc3a6f6f4 100644 --- a/var/spack/repos/builtin/packages/fonttosfnt/package.py +++ b/var/spack/repos/builtin/packages/fonttosfnt/package.py @@ -25,7 +25,7 @@ from spack import * -class Fonttosfnt(Package): +class Fonttosfnt(AutotoolsPackage): """Wrap a bitmap font in a sfnt (TrueType) wrapper.""" homepage = "http://cgit.freedesktop.org/xorg/app/fonttosfnt" @@ -39,9 +39,3 @@ class Fonttosfnt(Package): depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/fslsfonts/package.py b/var/spack/repos/builtin/packages/fslsfonts/package.py index 6e46bd6b5aa..2becf5a346e 100644 --- a/var/spack/repos/builtin/packages/fslsfonts/package.py +++ b/var/spack/repos/builtin/packages/fslsfonts/package.py @@ -25,7 +25,7 @@ from spack import * -class Fslsfonts(Package): +class Fslsfonts(AutotoolsPackage): """fslsfonts produces a list of fonts served by an X font server.""" homepage = "http://cgit.freedesktop.org/xorg/app/fslsfonts" @@ -38,9 +38,3 @@ class Fslsfonts(Package): depends_on('xproto@7.0.25:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/fstobdf/package.py b/var/spack/repos/builtin/packages/fstobdf/package.py index 6358e33d2a7..7b2d433ef2a 100644 --- a/var/spack/repos/builtin/packages/fstobdf/package.py +++ b/var/spack/repos/builtin/packages/fstobdf/package.py @@ -25,7 +25,7 @@ from spack import * -class Fstobdf(Package): +class Fstobdf(AutotoolsPackage): """The fstobdf program reads a font from a font server and prints a BDF file on the standard output that may be used to recreate the font. This is useful in testing servers, debugging font metrics, and @@ -42,9 +42,3 @@ class Fstobdf(Package): depends_on('xproto@7.0.25:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/gccmakedep/package.py b/var/spack/repos/builtin/packages/gccmakedep/package.py index ed2530d89e1..1e082bb0505 100644 --- a/var/spack/repos/builtin/packages/gccmakedep/package.py +++ b/var/spack/repos/builtin/packages/gccmakedep/package.py @@ -25,7 +25,7 @@ from spack import * -class Gccmakedep(Package): +class Gccmakedep(AutotoolsPackage): """X.org gccmakedep utilities.""" homepage = "https://cgit.freedesktop.org/xorg/util/gccmakedep/" @@ -34,9 +34,3 @@ class Gccmakedep(Package): version('1.0.3', '127ddb6131eb4a56fdf6644a63ade788') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/gconf/package.py b/var/spack/repos/builtin/packages/gconf/package.py index 3b3abc71ed8..80bc54a6030 100644 --- a/var/spack/repos/builtin/packages/gconf/package.py +++ b/var/spack/repos/builtin/packages/gconf/package.py @@ -25,7 +25,7 @@ from spack import * -class Gconf(Package): +class Gconf(AutotoolsPackage): """GConf is a system for storing application preferences.""" homepage = "https://projects.gnome.org/gconf/" @@ -43,9 +43,3 @@ class Gconf(Package): # gobject-2.0 >= 2.7.0 # dbus-1 >= 1.0.0 # dbus-glib-1 >= 0.74 - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index 4d39086b062..11597447211 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -25,7 +25,7 @@ from spack import * -class GdkPixbuf(Package): +class GdkPixbuf(AutotoolsPackage): """The Gdk Pixbuf is a toolkit for image loading and pixel buffer manipulation. It is used by GTK+ 2 and GTK+ 3 to load and manipulate images. In the past it was distributed as part of @@ -42,8 +42,3 @@ class GdkPixbuf(Package): depends_on("jpeg") depends_on("libpng") depends_on("libtiff") - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/giflib/package.py b/var/spack/repos/builtin/packages/giflib/package.py index 7082384b9b8..feca5b046bb 100644 --- a/var/spack/repos/builtin/packages/giflib/package.py +++ b/var/spack/repos/builtin/packages/giflib/package.py @@ -25,7 +25,7 @@ from spack import * -class Giflib(Package): +class Giflib(AutotoolsPackage): """The GIFLIB project maintains the giflib service library, which has been pulling images out of GIFs since 1989.""" @@ -33,9 +33,3 @@ class Giflib(Package): url = "https://downloads.sourceforge.net/project/giflib/giflib-5.1.4.tar.bz2" version('5.1.4', '2c171ced93c0e83bb09e6ccad8e3ba2b') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index 4d8085baf2a..a4d8c289d73 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -23,10 +23,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os -class Glib(Package): +class Glib(AutotoolsPackage): """The GLib package contains a low-level libraries useful for providing data structure handling for C, portability wrappers and interfaces for such runtime functionality as an event loop, @@ -59,17 +58,17 @@ def url_for_version(self, version): url = 'http://ftp.gnome.org/pub/gnome/sources/glib' return url + '/%s/glib-%s.tar.xz' % (version.up_to(2), version) - def install(self, spec, prefix): + def autoreconf(self, spec, prefix): autoreconf = which("autoreconf") autoreconf("--install", "--verbose", "--force", "-I", "config", - "-I", os.path.join(spec['pkg-config'].prefix, - "share", "aclocal"), - "-I", os.path.join(spec['automake'].prefix, - "share", "aclocal"), - "-I", os.path.join(spec['libtool'].prefix, - "share", "aclocal"), + "-I", join_path(spec['pkg-config'].prefix, + "share", "aclocal"), + "-I", join_path(spec['automake'].prefix, + "share", "aclocal"), + "-I", join_path(spec['libtool'].prefix, + "share", "aclocal"), ) - configure("--prefix=%s" % prefix) - make() + + def install(self, spec, prefix): make("install", parallel=False) diff --git a/var/spack/repos/builtin/packages/globus-toolkit/package.py b/var/spack/repos/builtin/packages/globus-toolkit/package.py index 5cec13a5af0..5cdc0689a77 100644 --- a/var/spack/repos/builtin/packages/globus-toolkit/package.py +++ b/var/spack/repos/builtin/packages/globus-toolkit/package.py @@ -25,7 +25,7 @@ from spack import * -class GlobusToolkit(Package): +class GlobusToolkit(AutotoolsPackage): """The Globus Toolkit is an open source software toolkit used for building grids""" @@ -33,8 +33,3 @@ class GlobusToolkit(Package): url = "http://toolkit.globus.org/ftppub/gt6/installers/src/globus_toolkit-6.0.1470089956.tar.gz" version('6.0.1470089956', 'b77fe3cc5a5844df995688b0e630d077') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/glog/package.py b/var/spack/repos/builtin/packages/glog/package.py index 14f042732b8..11d679c7ffe 100644 --- a/var/spack/repos/builtin/packages/glog/package.py +++ b/var/spack/repos/builtin/packages/glog/package.py @@ -25,15 +25,10 @@ from spack import * -class Glog(Package): +class Glog(AutotoolsPackage): """C++ implementation of the Google logging module.""" homepage = "https://github.com/google/glog" url = "https://github.com/google/glog/archive/v0.3.3.tar.gz" version('0.3.3', 'c1f86af27bd9c73186730aa957607ed0') - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/glproto/package.py b/var/spack/repos/builtin/packages/glproto/package.py index 462e5290676..8a5eaef660d 100644 --- a/var/spack/repos/builtin/packages/glproto/package.py +++ b/var/spack/repos/builtin/packages/glproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Glproto(Package): +class Glproto(AutotoolsPackage): """OpenGL Extension to the X Window System. This extension defines a protocol for the client to send 3D rendering @@ -38,8 +38,3 @@ class Glproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index 5f7b0daf9bb..87e83649a4d 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -25,7 +25,7 @@ from spack import * -class Gnutls(Package): +class Gnutls(AutotoolsPackage): """GnuTLS is a secure communications library implementing the SSL, TLS and DTLS protocols and technologies around them. It provides a simple C language application programming interface @@ -40,8 +40,3 @@ class Gnutls(Package): version('3.3.9', 'ff61b77e39d09f1140ab5a9cf52c58b6') depends_on("nettle") - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/gperf/package.py b/var/spack/repos/builtin/packages/gperf/package.py index 0ae07b33fcb..e7dffa017a6 100644 --- a/var/spack/repos/builtin/packages/gperf/package.py +++ b/var/spack/repos/builtin/packages/gperf/package.py @@ -25,7 +25,7 @@ from spack import * -class Gperf(Package): +class Gperf(AutotoolsPackage): """GNU gperf is a perfect hash function generator. For a given list of strings, it produces a hash function and hash table, in form of C or C++ code, for looking up a value depending on the @@ -38,9 +38,4 @@ class Gperf(Package): version('3.0.4', 'c1f1db32fb6598d6a93e6e88796a8632') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - # make('check') # fails tests - make('install') + # NOTE: `make check` is known to fail tests diff --git a/var/spack/repos/builtin/packages/gperftools/package.py b/var/spack/repos/builtin/packages/gperftools/package.py index c6ca6c8057d..300e0ae7659 100644 --- a/var/spack/repos/builtin/packages/gperftools/package.py +++ b/var/spack/repos/builtin/packages/gperftools/package.py @@ -25,7 +25,7 @@ from spack import * -class Gperftools(Package): +class Gperftools(AutotoolsPackage): """Google's fast malloc/free implementation, especially for multi-threaded applications. Contains tcmalloc, heap-checker, heap-profiler, and cpu-profiler. @@ -40,8 +40,3 @@ class Gperftools(Package): url="https://googledrive.com/host/0B6NtGsLhIcf7MWxMMF9JdTN3UVk/gperftools-2.3.tar.gz") depends_on("libunwind") - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/grandr/package.py b/var/spack/repos/builtin/packages/grandr/package.py index 8097d4fa01c..dd56426ef84 100644 --- a/var/spack/repos/builtin/packages/grandr/package.py +++ b/var/spack/repos/builtin/packages/grandr/package.py @@ -25,7 +25,7 @@ from spack import * -class Grandr(Package): +class Grandr(AutotoolsPackage): """RandR user interface using GTK+ libraries.""" homepage = "https://cgit.freedesktop.org/xorg/app/grandr" @@ -36,10 +36,3 @@ class Grandr(Package): depends_on('gtkplus@2.0.0:') depends_on('gconf') depends_on('xrandr@1.2:') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index b53b688372e..b17b1877ec4 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -25,7 +25,7 @@ from spack import * -class Gtkplus(Package): +class Gtkplus(AutotoolsPackage): """The GTK+ 2 package contains libraries used for creating graphical user interfaces for applications.""" homepage = "http://www.gtk.org" @@ -47,8 +47,3 @@ def patch(self): # remove disable deprecated flag. filter_file(r'CFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CFLAGS"', '', 'configure', string=True) - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/gts/package.py b/var/spack/repos/builtin/packages/gts/package.py index 2b3d4dd4f81..ea9443fb9d5 100644 --- a/var/spack/repos/builtin/packages/gts/package.py +++ b/var/spack/repos/builtin/packages/gts/package.py @@ -25,7 +25,7 @@ from spack import * -class Gts(Package): +class Gts(AutotoolsPackage): """GTS stands for the GNU Triangulated Surface Library. It is an Open Source Free Software Library intended to provide a set of @@ -46,8 +46,3 @@ class Gts(Package): version('121130', '023ebb6b13b8707534182a3ef0d12908') depends_on('glib') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py index 7c98c2a96a0..f8d5355f87e 100644 --- a/var/spack/repos/builtin/packages/harfbuzz/package.py +++ b/var/spack/repos/builtin/packages/harfbuzz/package.py @@ -25,7 +25,7 @@ from spack import * -class Harfbuzz(Package): +class Harfbuzz(AutotoolsPackage): """The Harfbuzz package contains an OpenType text shaping engine.""" homepage = "http://www.freedesktop.org/wiki/Software/HarfBuzz/" url = "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.37.tar.bz2" @@ -41,8 +41,3 @@ class Harfbuzz(Package): def patch(self): change_sed_delimiter('@', ';', 'src/Makefile.in') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/heppdt/package.py b/var/spack/repos/builtin/packages/heppdt/package.py index 54c846ae335..65946fb1028 100644 --- a/var/spack/repos/builtin/packages/heppdt/package.py +++ b/var/spack/repos/builtin/packages/heppdt/package.py @@ -26,7 +26,7 @@ from spack import * -class Heppdt(Package): +class Heppdt(AutotoolsPackage): """The HepPID library contains translation methods for particle ID's to and from various Monte Carlo generators and the PDG standard numbering scheme. We realize that the generators adhere closely @@ -40,9 +40,3 @@ class Heppdt(Package): version('3.03.01', 'd411f3bfdf9c4350d802241ba2629cc2') version('3.03.00', 'cd84d0a0454be982dcd8c285e060a7b3') version('2.06.01', '5688b4bdbd84b48ed5dd2545a3dc33c0') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/hsakmt/package.py b/var/spack/repos/builtin/packages/hsakmt/package.py index 0daad4afedf..534d5e4c84c 100644 --- a/var/spack/repos/builtin/packages/hsakmt/package.py +++ b/var/spack/repos/builtin/packages/hsakmt/package.py @@ -25,7 +25,7 @@ from spack import * -class Hsakmt(Package): +class Hsakmt(AutotoolsPackage): """hsakmt is a thunk library that provides a userspace interface to amdkfd (AMD's HSA Linux kernel driver). It is the HSA equivalent of libdrm.""" @@ -33,9 +33,3 @@ class Hsakmt(Package): url = "https://www.x.org/archive/individual/lib/hsakmt-1.0.0.tar.gz" version('1.0.0', '9beb20104e505300daf541266c4c3c3d') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/htop/package.py b/var/spack/repos/builtin/packages/htop/package.py index 3df0a353567..7a7cc418ce2 100644 --- a/var/spack/repos/builtin/packages/htop/package.py +++ b/var/spack/repos/builtin/packages/htop/package.py @@ -25,7 +25,7 @@ from spack import * -class Htop(Package): +class Htop(AutotoolsPackage): """htop is an interactive text-mode process viewer for Unix systems.""" homepage = "https://github.com/hishamhm/htop" @@ -34,8 +34,3 @@ class Htop(Package): version('2.0.2', '7d354d904bad591a931ad57e99fea84a') depends_on('ncurses') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/htslib/package.py b/var/spack/repos/builtin/packages/htslib/package.py index 1a8b8fd2f5e..77829e71b93 100644 --- a/var/spack/repos/builtin/packages/htslib/package.py +++ b/var/spack/repos/builtin/packages/htslib/package.py @@ -25,7 +25,7 @@ from spack import * -class Htslib(Package): +class Htslib(AutotoolsPackage): """C library for high-throughput sequencing data formats.""" homepage = "https://github.com/samtools/htslib" @@ -34,8 +34,3 @@ class Htslib(Package): version('1.3.1', '16d78f90b72f29971b042e8da8be6843') depends_on('zlib') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index 5d25b6dab9c..68c92b3aff5 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -25,7 +25,7 @@ from spack import * -class Hwloc(Package): +class Hwloc(AutotoolsPackage): """The Portable Hardware Locality (hwloc) software package provides a portable abstraction (across OS, versions, architectures, ...) of the hierarchical topology of modern @@ -53,9 +53,3 @@ class Hwloc(Package): def url_for_version(self, version): return "http://www.open-mpi.org/software/hwloc/v%s/downloads/hwloc-%s.tar.gz" % (version.up_to(2), version) - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/hydra/package.py b/var/spack/repos/builtin/packages/hydra/package.py index eee346ba498..4461adae2ef 100644 --- a/var/spack/repos/builtin/packages/hydra/package.py +++ b/var/spack/repos/builtin/packages/hydra/package.py @@ -25,7 +25,7 @@ from spack import * -class Hydra(Package): +class Hydra(AutotoolsPackage): """Hydra is a process management system for starting parallel jobs. Hydra is designed to natively work with existing launcher daemons (such as ssh, rsh, fork), as well as natively integrate with resource @@ -37,9 +37,3 @@ class Hydra(Package): list_depth = 2 version('3.2', '4d670916695bf7e3a869cc336a881b39') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/iceauth/package.py b/var/spack/repos/builtin/packages/iceauth/package.py index 59c6e0e7b71..6af0d0b4bb3 100644 --- a/var/spack/repos/builtin/packages/iceauth/package.py +++ b/var/spack/repos/builtin/packages/iceauth/package.py @@ -25,7 +25,7 @@ from spack import * -class Iceauth(Package): +class Iceauth(AutotoolsPackage): """The iceauth program is used to edit and display the authorization information used in connecting with ICE. It operates very much like the xauth program for X11 connection authentication records.""" @@ -40,9 +40,3 @@ class Iceauth(Package): depends_on('xproto@7.0.22:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/ico/package.py b/var/spack/repos/builtin/packages/ico/package.py index 5e523575cab..2163e8566e9 100644 --- a/var/spack/repos/builtin/packages/ico/package.py +++ b/var/spack/repos/builtin/packages/ico/package.py @@ -25,7 +25,7 @@ from spack import * -class Ico(Package): +class Ico(AutotoolsPackage): """ico is a simple animation program that may be used for testing various X11 operations and extensions. It displays a wire-frame rotating polyhedron, with hidden lines removed, or a solid-fill polyhedron with @@ -41,9 +41,3 @@ class Ico(Package): depends_on('xproto@7.0.22:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/ilmbase/package.py b/var/spack/repos/builtin/packages/ilmbase/package.py index 873c830623f..7f478f23415 100644 --- a/var/spack/repos/builtin/packages/ilmbase/package.py +++ b/var/spack/repos/builtin/packages/ilmbase/package.py @@ -25,7 +25,7 @@ from spack import * -class Ilmbase(Package): +class Ilmbase(AutotoolsPackage): """OpenEXR ILM Base libraries (high dynamic-range image file format)""" homepage = "http://www.openexr.com/" @@ -36,7 +36,3 @@ class Ilmbase(Package): version('2.0.1', '74c0d0d2873960bd0dc1993f8e03f0ae') version('1.0.2', '26c133ee8ca48e1196fbfb3ffe292ab4') version('0.9.0', '4df45f8116cb7a013b286caf6da30a2e') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - make('install') diff --git a/var/spack/repos/builtin/packages/imake/package.py b/var/spack/repos/builtin/packages/imake/package.py index 32542b03916..b15a019156a 100644 --- a/var/spack/repos/builtin/packages/imake/package.py +++ b/var/spack/repos/builtin/packages/imake/package.py @@ -25,7 +25,7 @@ from spack import * -class Imake(Package): +class Imake(AutotoolsPackage): """The imake build system.""" homepage = "http://www.snake.net/software/imake-stuff/" @@ -35,9 +35,3 @@ class Imake(Package): depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/inputproto/package.py b/var/spack/repos/builtin/packages/inputproto/package.py index 915986ef681..220c314ac60 100644 --- a/var/spack/repos/builtin/packages/inputproto/package.py +++ b/var/spack/repos/builtin/packages/inputproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Inputproto(Package): +class Inputproto(AutotoolsPackage): """X Input Extension. This extension defines a protocol to provide additional input devices @@ -38,8 +38,3 @@ class Inputproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py index 132e29839b2..f72ebf76e71 100644 --- a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py +++ b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py @@ -25,7 +25,7 @@ from spack import * -class IntelGpuTools(Package): +class IntelGpuTools(AutotoolsPackage): """Intel GPU Tools is a collection of tools for development and testing of the Intel DRM driver. There are many macro-level test suites that get used against the driver, including xtest, rendercheck, piglit, and oglconform, @@ -58,10 +58,3 @@ class IntelGpuTools(Package): # python-docutils # x11proto-dri2-dev # xutils-dev - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/itstool/package.py b/var/spack/repos/builtin/packages/itstool/package.py index b8b2b4459f2..c78e7404991 100644 --- a/var/spack/repos/builtin/packages/itstool/package.py +++ b/var/spack/repos/builtin/packages/itstool/package.py @@ -25,7 +25,7 @@ from spack import * -class Itstool(Package): +class Itstool(AutotoolsPackage): """ITS Tool allows you to translate your XML documents with PO files, using rules from the W3C Internationalization Tag Set (ITS) to determine what to translate and how to separate it into PO file messages.""" @@ -37,8 +37,3 @@ class Itstool(Package): version('2.0.1', '40935cfb08228488bd45575e5f001a34') version('2.0.0', 'd8c702c3e8961db83d04182c2aa4730b') version('1.2.0', 'c0925f6869e33af8e7fe56848c129152') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/jpeg/package.py b/var/spack/repos/builtin/packages/jpeg/package.py index 594240d9507..5c45a2889c2 100644 --- a/var/spack/repos/builtin/packages/jpeg/package.py +++ b/var/spack/repos/builtin/packages/jpeg/package.py @@ -25,7 +25,7 @@ from spack import * -class Jpeg(Package): +class Jpeg(AutotoolsPackage): """libjpeg is a widely used free library with functions for handling the JPEG image data format. It implements a JPEG codec (encoding and decoding) alongside various utilities for handling JPEG data.""" @@ -35,10 +35,3 @@ class Jpeg(Package): version('9b', '6a9996ce116ec5c52b4870dbcd6d3ddb') version('9a', '3353992aecaee1805ef4109aadd433e7') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - - make() - make("test") - make("install") diff --git a/var/spack/repos/builtin/packages/judy/package.py b/var/spack/repos/builtin/packages/judy/package.py index 8b8b261e535..ddcec05c226 100644 --- a/var/spack/repos/builtin/packages/judy/package.py +++ b/var/spack/repos/builtin/packages/judy/package.py @@ -25,16 +25,11 @@ from spack import * -class Judy(Package): +class Judy(AutotoolsPackage): """Judy: General-purpose dynamic array, associative array and hash-trie.""" homepage = "http://judy.sourceforge.net/" url = "http://downloads.sourceforge.net/project/judy/judy/Judy-1.0.5/Judy-1.0.5.tar.gz" version('1.0.5', '115a0d26302676e962ae2f70ec484a54') + parallel = False - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/kbproto/package.py b/var/spack/repos/builtin/packages/kbproto/package.py index 356d1c6b4fd..aaf4c9e1d1a 100644 --- a/var/spack/repos/builtin/packages/kbproto/package.py +++ b/var/spack/repos/builtin/packages/kbproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Kbproto(Package): +class Kbproto(AutotoolsPackage): """X Keyboard Extension. This extension defines a protcol to provide a number of new capabilities @@ -38,8 +38,3 @@ class Kbproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/lbxproxy/package.py b/var/spack/repos/builtin/packages/lbxproxy/package.py index 3de3ade0c9d..3895134a7ca 100644 --- a/var/spack/repos/builtin/packages/lbxproxy/package.py +++ b/var/spack/repos/builtin/packages/lbxproxy/package.py @@ -25,7 +25,7 @@ from spack import * -class Lbxproxy(Package): +class Lbxproxy(AutotoolsPackage): """lbxproxy accepts client connections, multiplexes them over a single connection to the X server, and performs various optimizations on the X protocol to make it faster over low bandwidth and/or high latency @@ -50,9 +50,3 @@ class Lbxproxy(Package): depends_on('bigreqsproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/lcms/package.py b/var/spack/repos/builtin/packages/lcms/package.py index 4d3fc59568a..ad85ebe0558 100644 --- a/var/spack/repos/builtin/packages/lcms/package.py +++ b/var/spack/repos/builtin/packages/lcms/package.py @@ -25,7 +25,7 @@ from spack import * -class Lcms(Package): +class Lcms(AutotoolsPackage): """Little cms is a color management library. Implements fast transforms between ICC profiles. It is focused on speed, and is portable across several platforms (MIT license).""" @@ -37,8 +37,3 @@ class Lcms(Package): depends_on("jpeg") depends_on("libtiff") depends_on("zlib") - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libapplewm/package.py b/var/spack/repos/builtin/packages/libapplewm/package.py index 85408053ad2..35091985e37 100644 --- a/var/spack/repos/builtin/packages/libapplewm/package.py +++ b/var/spack/repos/builtin/packages/libapplewm/package.py @@ -25,7 +25,7 @@ from spack import * -class Libapplewm(Package): +class Libapplewm(AutotoolsPackage): """AppleWM is a simple library designed to interface with the Apple-WM extension. This extension allows X window managers to better interact with the Mac OS X Aqua user interface when running X11 in a rootless mode.""" @@ -43,12 +43,6 @@ class Libapplewm(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - # Crashes with this error message on Linux: - # HIServices/Processes.h: No such file or directory - # May only build properly on macOS? - - make() - make('install') + # Crashes with this error message on Linux: + # HIServices/Processes.h: No such file or directory + # May only build properly on macOS? diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py index e439bf894ff..0edb3521d12 100644 --- a/var/spack/repos/builtin/packages/libarchive/package.py +++ b/var/spack/repos/builtin/packages/libarchive/package.py @@ -25,7 +25,7 @@ from spack import * -class Libarchive(Package): +class Libarchive(AutotoolsPackage): """libarchive: C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats.""" @@ -48,10 +48,5 @@ class Libarchive(Package): depends_on('libxml2') depends_on('expat') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - if self.run_tests: - make('check') # cannot build test suite with Intel compilers - make('install') + # NOTE: `make check` is known to fail with the Intel compilers + # The build test suite cannot be built with Intel diff --git a/var/spack/repos/builtin/packages/libcerf/package.py b/var/spack/repos/builtin/packages/libcerf/package.py index 1964f03b958..3bc8ddbd169 100644 --- a/var/spack/repos/builtin/packages/libcerf/package.py +++ b/var/spack/repos/builtin/packages/libcerf/package.py @@ -26,7 +26,7 @@ from spack import * -class Libcerf(Package): +class Libcerf(AutotoolsPackage): """A self-contained C library providing complex error functions, based on Faddeeva's plasma dispersion function w(z). Also provides Dawson's integral and Voigt's convolution of a Gaussian and a Lorentzian @@ -37,13 +37,11 @@ class Libcerf(Package): version('1.3', 'b3504c467204df71e62aeccf73a25612') - def install(self, spec, prefix): + def configure_args(self): options = [] # Clang reports unused functions as errors, see # http://clang.debian.net/status.php?version=3.8.1&key=UNUSED_FUNCTION if spec.satisfies('%clang'): options.append('CFLAGS=-Wno-unused-function') - configure('--prefix=%s' % prefix, *options) - make() - make("install") + return options diff --git a/var/spack/repos/builtin/packages/libcircle/package.py b/var/spack/repos/builtin/packages/libcircle/package.py index 971c29f5f1c..e1063292190 100644 --- a/var/spack/repos/builtin/packages/libcircle/package.py +++ b/var/spack/repos/builtin/packages/libcircle/package.py @@ -25,7 +25,7 @@ from spack import * -class Libcircle(Package): +class Libcircle(AutotoolsPackage): """libcircle provides an efficient distributed queue on a cluster, using self-stabilizing work stealing.""" @@ -35,8 +35,3 @@ class Libcircle(Package): url='https://github.com/hpc/libcircle/releases/download/0.2.1-rc.1/libcircle-0.2.1-rc.1.tar.gz') depends_on('mpi') - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libdmx/package.py b/var/spack/repos/builtin/packages/libdmx/package.py index fa469fd4232..2aeb5b9fbb3 100644 --- a/var/spack/repos/builtin/packages/libdmx/package.py +++ b/var/spack/repos/builtin/packages/libdmx/package.py @@ -25,7 +25,7 @@ from spack import * -class Libdmx(Package): +class Libdmx(AutotoolsPackage): """libdmx - X Window System DMX (Distributed Multihead X) extension library.""" @@ -41,9 +41,3 @@ class Libdmx(Package): depends_on('dmxproto@2.2.99.1:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libedit/package.py b/var/spack/repos/builtin/packages/libedit/package.py index 235e7648bca..5dcee61caba 100644 --- a/var/spack/repos/builtin/packages/libedit/package.py +++ b/var/spack/repos/builtin/packages/libedit/package.py @@ -25,7 +25,7 @@ from spack import * -class Libedit(Package): +class Libedit(AutotoolsPackage): """An autotools compatible port of the NetBSD editline library""" homepage = "http://thrysoee.dk/editline/" url = "http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz" @@ -34,9 +34,3 @@ class Libedit(Package): url="http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz") depends_on('ncurses') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libepoxy/package.py b/var/spack/repos/builtin/packages/libepoxy/package.py index 364ea1e30c5..32c95fdda42 100644 --- a/var/spack/repos/builtin/packages/libepoxy/package.py +++ b/var/spack/repos/builtin/packages/libepoxy/package.py @@ -25,15 +25,10 @@ from spack import * -class Libepoxy(Package): +class Libepoxy(AutotoolsPackage): """Epoxy is a library for handling OpenGL function pointer management for you.""" homepage = "https://github.com/anholt/libepoxy" url = "https://github.com/anholt/libepoxy/releases/download/v1.3.1/libepoxy-1.3.1.tar.bz2" version('1.3.1', '96f6620a9b005a503e7b44b0b528287d') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libevent/package.py b/var/spack/repos/builtin/packages/libevent/package.py index 65b3a716c0a..86aeddaf20b 100644 --- a/var/spack/repos/builtin/packages/libevent/package.py +++ b/var/spack/repos/builtin/packages/libevent/package.py @@ -25,7 +25,7 @@ from spack import * -class Libevent(Package): +class Libevent(AutotoolsPackage): """The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. Furthermore, libevent also support @@ -52,13 +52,11 @@ class Libevent(Package): description="Build with encryption enabled at the libevent level.") depends_on('openssl', when='+openssl') - def install(self, spec, prefix): + def configure_args(self): configure_args = [] if '+openssl' in spec: configure_args.append('--enable-openssl') else: configure_args.append('--enable-openssl') - configure("--prefix=%s" % prefix, *configure_args) - make() - make("install") + return configure_args diff --git a/var/spack/repos/builtin/packages/libfontenc/package.py b/var/spack/repos/builtin/packages/libfontenc/package.py index 1c7fa196d9d..945f74ccad3 100644 --- a/var/spack/repos/builtin/packages/libfontenc/package.py +++ b/var/spack/repos/builtin/packages/libfontenc/package.py @@ -25,7 +25,7 @@ from spack import * -class Libfontenc(Package): +class Libfontenc(AutotoolsPackage): """libfontenc - font encoding library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libfontenc" @@ -38,9 +38,3 @@ class Libfontenc(Package): depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libfs/package.py b/var/spack/repos/builtin/packages/libfs/package.py index 96bf62afd7f..96cb396b0ae 100644 --- a/var/spack/repos/builtin/packages/libfs/package.py +++ b/var/spack/repos/builtin/packages/libfs/package.py @@ -25,7 +25,7 @@ from spack import * -class Libfs(Package): +class Libfs(AutotoolsPackage): """libFS - X Font Service client library. This library is used by clients of X Font Servers (xfs), such as @@ -41,9 +41,3 @@ class Libfs(Package): depends_on('xtrans', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libgcrypt/package.py b/var/spack/repos/builtin/packages/libgcrypt/package.py index b556def4d3b..968793315e6 100644 --- a/var/spack/repos/builtin/packages/libgcrypt/package.py +++ b/var/spack/repos/builtin/packages/libgcrypt/package.py @@ -25,7 +25,7 @@ from spack import * -class Libgcrypt(Package): +class Libgcrypt(AutotoolsPackage): """Libgcrypt is a general purpose cryptographic library based on the code from GnuPG. It provides functions for all cryptographic building blocks: symmetric ciphers, hash algorithms, MACs, public @@ -37,8 +37,3 @@ class Libgcrypt(Package): version('1.6.2', 'b54395a93cb1e57619943c082da09d5f') depends_on("libgpg-error") - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py index 6329adf8f3e..42eb23d85ab 100644 --- a/var/spack/repos/builtin/packages/libgd/package.py +++ b/var/spack/repos/builtin/packages/libgd/package.py @@ -26,7 +26,7 @@ from spack import * -class Libgd(Package): +class Libgd(AutotoolsPackage): """GD is an open source code library for the dynamic creation of images by programmers. GD is written in C, and "wrappers" are available for Perl, PHP and other languages. GD creates PNG, JPEG, GIF, @@ -55,7 +55,7 @@ class Libgd(Package): depends_on('libtiff') depends_on('fontconfig') - def install(self, spec, prefix): + def autoreconf(self, spec, prefix): autoreconf("--install", "--force", "-I", "m4", "-I", join_path(spec['gettext'].prefix, @@ -67,6 +67,3 @@ def install(self, spec, prefix): "-I", join_path(spec['libtool'].prefix, "share", "aclocal") ) - configure('--prefix={0}'.format(prefix)) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libgpg-error/package.py b/var/spack/repos/builtin/packages/libgpg-error/package.py index a0e2acd5160..26b7e6d05e8 100644 --- a/var/spack/repos/builtin/packages/libgpg-error/package.py +++ b/var/spack/repos/builtin/packages/libgpg-error/package.py @@ -25,7 +25,7 @@ from spack import * -class LibgpgError(Package): +class LibgpgError(AutotoolsPackage): """Libgpg-error is a small library that defines common error values for all GnuPG components. Among these are GPG, GPGSM, GPGME, GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry, @@ -36,8 +36,3 @@ class LibgpgError(Package): version('1.21', 'ab0b5aba6d0a185b41d07bda804fd8b2') version('1.18', '12312802d2065774b787cbfc22cc04e9') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libgtextutils/package.py b/var/spack/repos/builtin/packages/libgtextutils/package.py index 201e0318694..05b6b7dabe7 100644 --- a/var/spack/repos/builtin/packages/libgtextutils/package.py +++ b/var/spack/repos/builtin/packages/libgtextutils/package.py @@ -25,16 +25,10 @@ from spack import * -class Libgtextutils(Package): +class Libgtextutils(AutotoolsPackage): """Gordon's Text utils Library.""" homepage = "https://github.com/agordon/libgtextutils" url = "https://github.com/agordon/libgtextutils/releases/download/0.7/libgtextutils-0.7.tar.gz" version('0.7', '593c7c62e3c76ec49f5736eed4f96806') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libhio/package.py b/var/spack/repos/builtin/packages/libhio/package.py index 17bd86d310f..181aca979f7 100644 --- a/var/spack/repos/builtin/packages/libhio/package.py +++ b/var/spack/repos/builtin/packages/libhio/package.py @@ -25,7 +25,7 @@ from spack import * -class Libhio(Package): +class Libhio(AutotoolsPackage): """ A library for writing to hierarchical data store systems. """ @@ -38,8 +38,3 @@ class Libhio(Package): depends_on("libjson-c") depends_on("bzip2") depends_on("pkg-config", type="build") - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libice/package.py b/var/spack/repos/builtin/packages/libice/package.py index 1f6fd2f9015..36436df501c 100644 --- a/var/spack/repos/builtin/packages/libice/package.py +++ b/var/spack/repos/builtin/packages/libice/package.py @@ -25,7 +25,7 @@ from spack import * -class Libice(Package): +class Libice(AutotoolsPackage): """libICE - Inter-Client Exchange Library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libICE" @@ -37,9 +37,3 @@ class Libice(Package): depends_on('xtrans', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py index 3fe159d7b99..8b9413bc86b 100644 --- a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py +++ b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py @@ -25,7 +25,7 @@ from spack import * -class LibjpegTurbo(Package): +class LibjpegTurbo(AutotoolsPackage): """libjpeg-turbo is a fork of the original IJG libjpeg which uses SIMD to accelerate baseline JPEG compression and decompression. libjpeg is a library that implements JPEG image encoding, decoding and @@ -43,8 +43,3 @@ class LibjpegTurbo(Package): # TODO: Implement the selection between two supported assemblers. # depends_on("yasm", type='build') depends_on("nasm", type='build') - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/liblbxutil/package.py b/var/spack/repos/builtin/packages/liblbxutil/package.py index 1de59defd6c..fe1be09cf97 100644 --- a/var/spack/repos/builtin/packages/liblbxutil/package.py +++ b/var/spack/repos/builtin/packages/liblbxutil/package.py @@ -25,7 +25,7 @@ from spack import * -class Liblbxutil(Package): +class Liblbxutil(AutotoolsPackage): """liblbxutil - Low Bandwith X extension (LBX) utility routines.""" homepage = "http://cgit.freedesktop.org/xorg/lib/liblbxutil" @@ -43,9 +43,3 @@ class Liblbxutil(Package): # undefined symbol: Xalloc # See https://bugs.freedesktop.org/show_bug.cgi?id=8421 # Adding a dependency on libxdmcp and adding LIBS=-lXdmcp did not fix it - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libmng/package.py b/var/spack/repos/builtin/packages/libmng/package.py index a77aada79cc..a867c1997e2 100644 --- a/var/spack/repos/builtin/packages/libmng/package.py +++ b/var/spack/repos/builtin/packages/libmng/package.py @@ -25,7 +25,7 @@ from spack import * -class Libmng(Package): +class Libmng(AutotoolsPackage): """libmng -THE reference library for reading, displaying, writing and examining Multiple-Image Network Graphics. MNG is the animation extension to the popular PNG image-format.""" @@ -42,8 +42,3 @@ def patch(self): # jpeg requires stdio to beincluded before its headrs. filter_file(r'^(\#include \)', '#include\n\\1', 'libmng_types.h') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libmonitor/package.py b/var/spack/repos/builtin/packages/libmonitor/package.py index f680baa2655..26a87c78fa4 100644 --- a/var/spack/repos/builtin/packages/libmonitor/package.py +++ b/var/spack/repos/builtin/packages/libmonitor/package.py @@ -25,7 +25,7 @@ from spack import * -class Libmonitor(Package): +class Libmonitor(AutotoolsPackage): """Libmonitor is a library for process and thread control.""" homepage = "https://github.com/HPCToolkit/libmonitor" version('20130218', git='https://github.com/HPCToolkit/libmonitor.git', @@ -36,8 +36,3 @@ class Libmonitor(Package): patch('libmonitorkrell-0000.patch', when='@20130218+krellpatch') patch('libmonitorkrell-0001.patch', when='@20130218+krellpatch') patch('libmonitorkrell-0002.patch', when='@20130218+krellpatch') - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libnbc/package.py b/var/spack/repos/builtin/packages/libnbc/package.py index 414498a37ae..e135fa6835e 100644 --- a/var/spack/repos/builtin/packages/libnbc/package.py +++ b/var/spack/repos/builtin/packages/libnbc/package.py @@ -25,7 +25,7 @@ from spack import * -class Libnbc(Package): +class Libnbc(AutotoolsPackage): """LibNBC is a prototypic implementation of a nonblocking interface for MPI collective operations. Based on ANSI C and MPI-1, it supports all MPI-1 collective operations in a @@ -37,8 +37,3 @@ class Libnbc(Package): version('1.1.1', 'ece5c94992591a9fa934a90e5dbe50ce') depends_on("mpi") - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/liboldx/package.py b/var/spack/repos/builtin/packages/liboldx/package.py index 9e85f1ed65f..1bec00bfe37 100644 --- a/var/spack/repos/builtin/packages/liboldx/package.py +++ b/var/spack/repos/builtin/packages/liboldx/package.py @@ -25,7 +25,7 @@ from spack import * -class Liboldx(Package): +class Liboldx(AutotoolsPackage): """X version 10 backwards compatibility.""" homepage = "https://cgit.freedesktop.org/xorg/lib/liboldX/" @@ -37,9 +37,3 @@ class Liboldx(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libpthread-stubs/package.py b/var/spack/repos/builtin/packages/libpthread-stubs/package.py index fdaf327c2a7..911bf6814c7 100644 --- a/var/spack/repos/builtin/packages/libpthread-stubs/package.py +++ b/var/spack/repos/builtin/packages/libpthread-stubs/package.py @@ -25,7 +25,7 @@ from spack import * -class LibpthreadStubs(Package): +class LibpthreadStubs(AutotoolsPackage): """The libpthread-stubs package provides weak aliases for pthread functions not provided in libc or otherwise available by default.""" @@ -33,8 +33,3 @@ class LibpthreadStubs(Package): url = "https://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.gz" version('0.3', 'a09d928c4af54fe5436002345ef71138') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/libsm/package.py b/var/spack/repos/builtin/packages/libsm/package.py index 4affd50127b..9479da07d7a 100644 --- a/var/spack/repos/builtin/packages/libsm/package.py +++ b/var/spack/repos/builtin/packages/libsm/package.py @@ -25,7 +25,7 @@ from spack import * -class Libsm(Package): +class Libsm(AutotoolsPackage): """libSM - X Session Management Library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libSM" @@ -39,9 +39,3 @@ class Libsm(Package): depends_on('xtrans', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libsodium/package.py b/var/spack/repos/builtin/packages/libsodium/package.py index 805881ce070..a7e3ab10aed 100644 --- a/var/spack/repos/builtin/packages/libsodium/package.py +++ b/var/spack/repos/builtin/packages/libsodium/package.py @@ -25,7 +25,7 @@ from spack import * -class Libsodium(Package): +class Libsodium(AutotoolsPackage): """Sodium is a modern, easy-to-use software library for encryption, decryption, signatures, password hashing and more.""" homepage = "https://download.libsodium.org/doc/" @@ -44,9 +44,3 @@ def url_for_version(self, version): if version < Version('1.0.4'): url += 'old/' return url + 'libsodium-{0}.tar.gz'.format(version) - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libunistring/package.py b/var/spack/repos/builtin/packages/libunistring/package.py index 5b8837e72b2..08657f89d19 100644 --- a/var/spack/repos/builtin/packages/libunistring/package.py +++ b/var/spack/repos/builtin/packages/libunistring/package.py @@ -25,7 +25,7 @@ from spack import * -class Libunistring(Package): +class Libunistring(AutotoolsPackage): """This library provides functions for manipulating Unicode strings and for manipulating C strings according to the Unicode standard.""" @@ -34,9 +34,4 @@ class Libunistring(Package): version('0.9.6', 'cb09c398020c27edac10ca590e9e9ef3') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - # make('check') # test-verify fails for me, contacted developers - make('install') + # NOTE: `make check` fails test-verify diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py index 63ab4aec59b..1e727f84f37 100644 --- a/var/spack/repos/builtin/packages/libunwind/package.py +++ b/var/spack/repos/builtin/packages/libunwind/package.py @@ -25,15 +25,10 @@ from spack import * -class Libunwind(Package): +class Libunwind(AutotoolsPackage): """A portable and efficient C programming interface (API) to determine the call-chain of a program.""" homepage = "http://www.nongnu.org/libunwind/" url = "http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz" version('1.1', 'fb4ea2f6fbbe45bf032cd36e586883ce') - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libuuid/package.py b/var/spack/repos/builtin/packages/libuuid/package.py index b8f6b1cc3af..31f109cba3b 100644 --- a/var/spack/repos/builtin/packages/libuuid/package.py +++ b/var/spack/repos/builtin/packages/libuuid/package.py @@ -25,16 +25,10 @@ from spack import * -class Libuuid(Package): +class Libuuid(AutotoolsPackage): """Portable uuid C library""" homepage = "http://sourceforge.net/projects/libuuid/" url = "http://downloads.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flibuuid%2F&ts=1433881396&use_mirror=iweb" version('1.0.3', 'd44d866d06286c08ba0846aba1086d68') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/libuv/package.py b/var/spack/repos/builtin/packages/libuv/package.py index dae10809f22..52542390190 100644 --- a/var/spack/repos/builtin/packages/libuv/package.py +++ b/var/spack/repos/builtin/packages/libuv/package.py @@ -25,7 +25,7 @@ from spack import * -class Libuv(Package): +class Libuv(AutotoolsPackage): """Multi-platform library with a focus on asynchronous IO""" homepage = "http://libuv.org" url = "https://github.com/libuv/libuv/archive/v1.9.0.tar.gz" @@ -36,11 +36,6 @@ class Libuv(Package): depends_on('autoconf', type='build') depends_on('libtool', type='build') - def install(self, spec, prefix): + def autoreconf(self, spec, prefix): bash = which("bash") bash('autogen.sh') - configure('--prefix=%s' % prefix) - - make() - make("check") - make("install") diff --git a/var/spack/repos/builtin/packages/libwindowswm/package.py b/var/spack/repos/builtin/packages/libwindowswm/package.py index 3836e0d4194..5b331f428cb 100644 --- a/var/spack/repos/builtin/packages/libwindowswm/package.py +++ b/var/spack/repos/builtin/packages/libwindowswm/package.py @@ -25,7 +25,7 @@ from spack import * -class Libwindowswm(Package): +class Libwindowswm(AutotoolsPackage): """WindowsWM - Cygwin/X rootless window management extension. WindowsWM is a simple library designed to interface with the @@ -45,9 +45,3 @@ class Libwindowswm(Package): depends_on('windowswmproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libx11/package.py b/var/spack/repos/builtin/packages/libx11/package.py index c5df2e0f83e..d9c28836b8e 100644 --- a/var/spack/repos/builtin/packages/libx11/package.py +++ b/var/spack/repos/builtin/packages/libx11/package.py @@ -25,7 +25,7 @@ from spack import * -class Libx11(Package): +class Libx11(AutotoolsPackage): """libX11 - Core X11 protocol client library.""" homepage = "https://www.x.org/" @@ -42,10 +42,3 @@ class Libx11(Package): depends_on('inputproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/libxau/package.py b/var/spack/repos/builtin/packages/libxau/package.py index eb1f1326c64..bf4e9f5e4eb 100644 --- a/var/spack/repos/builtin/packages/libxau/package.py +++ b/var/spack/repos/builtin/packages/libxau/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxau(Package): +class Libxau(AutotoolsPackage): """The libXau package contains a library implementing the X11 Authorization Protocol. This is useful for restricting client access to the display.""" @@ -38,10 +38,3 @@ class Libxau(Package): depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/libxaw/package.py b/var/spack/repos/builtin/packages/libxaw/package.py index 9f92ff57d2d..f3779be7ed3 100644 --- a/var/spack/repos/builtin/packages/libxaw/package.py +++ b/var/spack/repos/builtin/packages/libxaw/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxaw(Package): +class Libxaw(AutotoolsPackage): """Xaw is the X Athena Widget Set. Xaw is a widget set based on the X Toolkit Intrinsics (Xt) Library.""" @@ -44,9 +44,3 @@ class Libxaw(Package): depends_on('xextproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxaw3d/package.py b/var/spack/repos/builtin/packages/libxaw3d/package.py index 498f57cbca3..0e350aa2ce3 100644 --- a/var/spack/repos/builtin/packages/libxaw3d/package.py +++ b/var/spack/repos/builtin/packages/libxaw3d/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxaw3d(Package): +class Libxaw3d(AutotoolsPackage): """Xaw3d is the X 3D Athena Widget Set. Xaw3d is a widget set based on the X Toolkit Intrinsics (Xt) Library.""" @@ -42,9 +42,3 @@ class Libxaw3d(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxcb/package.py b/var/spack/repos/builtin/packages/libxcb/package.py index 9fa1c6f97ce..0e4d00da979 100644 --- a/var/spack/repos/builtin/packages/libxcb/package.py +++ b/var/spack/repos/builtin/packages/libxcb/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxcb(Package): +class Libxcb(AutotoolsPackage): """The X protocol C-language Binding (XCB) is a replacement for Xlib featuring a small footprint, latency hiding, direct access to the protocol, improved threading support, and @@ -52,10 +52,3 @@ def patch(self): 'typedef struct xcb_auth_info_t {', 'typedef struct {', 'src/xcb.h') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/libxcomposite/package.py b/var/spack/repos/builtin/packages/libxcomposite/package.py index 48cba002500..30d3a4c0cae 100644 --- a/var/spack/repos/builtin/packages/libxcomposite/package.py +++ b/var/spack/repos/builtin/packages/libxcomposite/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxcomposite(Package): +class Libxcomposite(AutotoolsPackage): """libXcomposite - client library for the Composite extension to the X11 protocol.""" @@ -40,9 +40,3 @@ class Libxcomposite(Package): depends_on('compositeproto@0.4:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxcursor/package.py b/var/spack/repos/builtin/packages/libxcursor/package.py index 215452ef525..ee5065bfa4f 100644 --- a/var/spack/repos/builtin/packages/libxcursor/package.py +++ b/var/spack/repos/builtin/packages/libxcursor/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxcursor(Package): +class Libxcursor(AutotoolsPackage): """libXcursor - X Window System Cursor management library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXcursor" @@ -40,9 +40,3 @@ class Libxcursor(Package): depends_on('fixesproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxdamage/package.py b/var/spack/repos/builtin/packages/libxdamage/package.py index 448ac21945c..4eca877421f 100644 --- a/var/spack/repos/builtin/packages/libxdamage/package.py +++ b/var/spack/repos/builtin/packages/libxdamage/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxdamage(Package): +class Libxdamage(AutotoolsPackage): """This package contains the library for the X Damage extension.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXdamage" @@ -41,9 +41,3 @@ class Libxdamage(Package): depends_on('xextproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxdmcp/package.py b/var/spack/repos/builtin/packages/libxdmcp/package.py index c05d4b87719..7c4fd068f0d 100644 --- a/var/spack/repos/builtin/packages/libxdmcp/package.py +++ b/var/spack/repos/builtin/packages/libxdmcp/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxdmcp(Package): +class Libxdmcp(AutotoolsPackage): """libXdmcp - X Display Manager Control Protocol library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXdmcp" @@ -36,10 +36,3 @@ class Libxdmcp(Package): depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/libxevie/package.py b/var/spack/repos/builtin/packages/libxevie/package.py index b9f0e416313..7435027b48b 100644 --- a/var/spack/repos/builtin/packages/libxevie/package.py +++ b/var/spack/repos/builtin/packages/libxevie/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxevie(Package): +class Libxevie(AutotoolsPackage): """Xevie - X Event Interception Extension (XEvIE).""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXevie" @@ -41,9 +41,3 @@ class Libxevie(Package): depends_on('evieext', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxext/package.py b/var/spack/repos/builtin/packages/libxext/package.py index 192ab3957a1..528f00cc357 100644 --- a/var/spack/repos/builtin/packages/libxext/package.py +++ b/var/spack/repos/builtin/packages/libxext/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxext(Package): +class Libxext(AutotoolsPackage): """libXext - library for common extensions to the X11 protocol.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXext" @@ -39,9 +39,3 @@ class Libxext(Package): depends_on('xextproto@7.1.99:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxfixes/package.py b/var/spack/repos/builtin/packages/libxfixes/package.py index 6b8b599a856..6add3bb56d9 100644 --- a/var/spack/repos/builtin/packages/libxfixes/package.py +++ b/var/spack/repos/builtin/packages/libxfixes/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxfixes(Package): +class Libxfixes(AutotoolsPackage): """This package contains header files and documentation for the XFIXES extension. Library and server implementations are separate.""" @@ -41,9 +41,3 @@ class Libxfixes(Package): depends_on('xextproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxfont/package.py b/var/spack/repos/builtin/packages/libxfont/package.py index 1ebf321c9f7..7538c34f078 100644 --- a/var/spack/repos/builtin/packages/libxfont/package.py +++ b/var/spack/repos/builtin/packages/libxfont/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxfont(Package): +class Libxfont(AutotoolsPackage): """libXfont provides the core of the legacy X11 font system, handling the index files (fonts.dir, fonts.alias, fonts.scale), the various font file formats, and rasterizing them. It is used by the X servers, the @@ -46,9 +46,3 @@ class Libxfont(Package): depends_on('fontsproto@2.1.3:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxfont2/package.py b/var/spack/repos/builtin/packages/libxfont2/package.py index 8611e65ebb9..bc1dc06dd03 100644 --- a/var/spack/repos/builtin/packages/libxfont2/package.py +++ b/var/spack/repos/builtin/packages/libxfont2/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxfont2(Package): +class Libxfont2(AutotoolsPackage): """libXfont provides the core of the legacy X11 font system, handling the index files (fonts.dir, fonts.alias, fonts.scale), the various font file formats, and rasterizing them. It is used by the X servers, the @@ -46,9 +46,3 @@ class Libxfont2(Package): depends_on('fontsproto@2.1.3:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxfontcache/package.py b/var/spack/repos/builtin/packages/libxfontcache/package.py index 5421f093cad..c4a4d5675a8 100644 --- a/var/spack/repos/builtin/packages/libxfontcache/package.py +++ b/var/spack/repos/builtin/packages/libxfontcache/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxfontcache(Package): +class Libxfontcache(AutotoolsPackage): """Xfontcache - X-TrueType font cache extension client library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXfontcache" @@ -40,9 +40,3 @@ class Libxfontcache(Package): depends_on('fontcacheproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxft/package.py b/var/spack/repos/builtin/packages/libxft/package.py index b1b8f853d0d..8385b4168a6 100644 --- a/var/spack/repos/builtin/packages/libxft/package.py +++ b/var/spack/repos/builtin/packages/libxft/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxft(Package): +class Libxft(AutotoolsPackage): """X FreeType library. Xft version 2.1 was the first stand alone release of Xft, a library that @@ -44,9 +44,3 @@ class Libxft(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxi/package.py b/var/spack/repos/builtin/packages/libxi/package.py index 4e9a2735790..5334ef9044c 100644 --- a/var/spack/repos/builtin/packages/libxi/package.py +++ b/var/spack/repos/builtin/packages/libxi/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxi(Package): +class Libxi(AutotoolsPackage): """libXi - library for the X Input Extension.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXi" @@ -40,9 +40,3 @@ class Libxi(Package): depends_on('xproto@7.0.13:', type='build') depends_on('xextproto@7.0.3:', type='build') depends_on('inputproto@2.2.99.1:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxinerama/package.py b/var/spack/repos/builtin/packages/libxinerama/package.py index a001c41ca78..9e3633629a5 100644 --- a/var/spack/repos/builtin/packages/libxinerama/package.py +++ b/var/spack/repos/builtin/packages/libxinerama/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxinerama(Package): +class Libxinerama(AutotoolsPackage): """libXinerama - API for Xinerama extension to X11 Protocol.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXinerama" @@ -40,9 +40,3 @@ class Libxinerama(Package): depends_on('xineramaproto@1.1.99.1:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxkbfile/package.py b/var/spack/repos/builtin/packages/libxkbfile/package.py index af8029a024a..daafa8dd654 100644 --- a/var/spack/repos/builtin/packages/libxkbfile/package.py +++ b/var/spack/repos/builtin/packages/libxkbfile/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxkbfile(Package): +class Libxkbfile(AutotoolsPackage): """XKB file handling routines.""" homepage = "https://cgit.freedesktop.org/xorg/lib/libxkbfile" @@ -38,9 +38,3 @@ class Libxkbfile(Package): depends_on('kbproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxkbui/package.py b/var/spack/repos/builtin/packages/libxkbui/package.py index d0c132d9700..b6a40b656d2 100644 --- a/var/spack/repos/builtin/packages/libxkbui/package.py +++ b/var/spack/repos/builtin/packages/libxkbui/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxkbui(Package): +class Libxkbui(AutotoolsPackage): """X.org libxkbui library.""" homepage = "https://cgit.freedesktop.org/xorg/lib/libxkbui/" @@ -39,9 +39,3 @@ class Libxkbui(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index bbb934ab9fa..29a83ee35e4 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxml2(Package): +class Libxml2(AutotoolsPackage): """Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform), it is free software available under the MIT License.""" @@ -45,7 +45,7 @@ class Libxml2(Package): depends_on('pkg-config@0.9.0:', type='build') - def install(self, spec, prefix): + def configure_args(self): if '+python' in spec: python_args = [ '--with-python={0}'.format(spec['python'].prefix), @@ -54,9 +54,4 @@ def install(self, spec, prefix): else: python_args = ['--without-python'] - configure('--prefix={0}'.format(prefix), *python_args) - - make() - if self.run_tests: - make('check') - make('install') + return python_args diff --git a/var/spack/repos/builtin/packages/libxmu/package.py b/var/spack/repos/builtin/packages/libxmu/package.py index dbba5f168d2..937cf750133 100644 --- a/var/spack/repos/builtin/packages/libxmu/package.py +++ b/var/spack/repos/builtin/packages/libxmu/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxmu(Package): +class Libxmu(AutotoolsPackage): """This library contains miscellaneous utilities and is not part of the Xlib standard. It contains routines which only use public interfaces so that it may be layered on top of any proprietary implementation of Xlib @@ -43,9 +43,3 @@ class Libxmu(Package): depends_on('xextproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxp/package.py b/var/spack/repos/builtin/packages/libxp/package.py index 10aaccc54f2..95d4bfa2f80 100644 --- a/var/spack/repos/builtin/packages/libxp/package.py +++ b/var/spack/repos/builtin/packages/libxp/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxp(Package): +class Libxp(AutotoolsPackage): """libXp - X Print Client Library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXp" @@ -41,9 +41,3 @@ class Libxp(Package): depends_on('printproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxpm/package.py b/var/spack/repos/builtin/packages/libxpm/package.py index b726e74b0be..cfb269db7f9 100644 --- a/var/spack/repos/builtin/packages/libxpm/package.py +++ b/var/spack/repos/builtin/packages/libxpm/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxpm(Package): +class Libxpm(AutotoolsPackage): """libXpm - X Pixmap (XPM) image file format library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXpm" @@ -42,9 +42,3 @@ class Libxpm(Package): depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxpresent/package.py b/var/spack/repos/builtin/packages/libxpresent/package.py index e65d4353a00..5237b164a0f 100644 --- a/var/spack/repos/builtin/packages/libxpresent/package.py +++ b/var/spack/repos/builtin/packages/libxpresent/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxpresent(Package): +class Libxpresent(AutotoolsPackage): """This package contains header files and documentation for the Present extension. Library and server implementations are separate.""" @@ -41,9 +41,3 @@ class Libxpresent(Package): depends_on('xextproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxprintapputil/package.py b/var/spack/repos/builtin/packages/libxprintapputil/package.py index fc66b76ac08..ef1963c3006 100644 --- a/var/spack/repos/builtin/packages/libxprintapputil/package.py +++ b/var/spack/repos/builtin/packages/libxprintapputil/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxprintapputil(Package): +class Libxprintapputil(AutotoolsPackage): """Xprint application utility routines.""" homepage = "https://cgit.freedesktop.org/xorg/lib/libXprintAppUtil/" @@ -41,9 +41,3 @@ class Libxprintapputil(Package): depends_on('printproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxprintutil/package.py b/var/spack/repos/builtin/packages/libxprintutil/package.py index 8eb768958f6..b55123a3979 100644 --- a/var/spack/repos/builtin/packages/libxprintutil/package.py +++ b/var/spack/repos/builtin/packages/libxprintutil/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxprintutil(Package): +class Libxprintutil(AutotoolsPackage): """Xprint application utility routines.""" homepage = "https://cgit.freedesktop.org/xorg/lib/libXprintUtil/" @@ -41,9 +41,3 @@ class Libxprintutil(Package): depends_on('printproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxrandr/package.py b/var/spack/repos/builtin/packages/libxrandr/package.py index 56c36c0c7bc..773be3ab8bf 100644 --- a/var/spack/repos/builtin/packages/libxrandr/package.py +++ b/var/spack/repos/builtin/packages/libxrandr/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxrandr(Package): +class Libxrandr(AutotoolsPackage): """libXrandr - X Resize, Rotate and Reflection extension library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXrandr" @@ -42,9 +42,3 @@ class Libxrandr(Package): depends_on('renderproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxrender/package.py b/var/spack/repos/builtin/packages/libxrender/package.py index c5a6dac1be2..9c7e657f1dc 100644 --- a/var/spack/repos/builtin/packages/libxrender/package.py +++ b/var/spack/repos/builtin/packages/libxrender/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxrender(Package): +class Libxrender(AutotoolsPackage): """libXrender - library for the Render Extension to the X11 protocol.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXrender" @@ -38,9 +38,3 @@ class Libxrender(Package): depends_on('renderproto@0.9:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxres/package.py b/var/spack/repos/builtin/packages/libxres/package.py index 6d0684c4b81..c8a77403466 100644 --- a/var/spack/repos/builtin/packages/libxres/package.py +++ b/var/spack/repos/builtin/packages/libxres/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxres(Package): +class Libxres(AutotoolsPackage): """libXRes - X-Resource extension client library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXRes" @@ -40,9 +40,3 @@ class Libxres(Package): depends_on('resourceproto@1.0:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxscrnsaver/package.py b/var/spack/repos/builtin/packages/libxscrnsaver/package.py index c9ca6ac1c86..14f3aa0f04c 100644 --- a/var/spack/repos/builtin/packages/libxscrnsaver/package.py +++ b/var/spack/repos/builtin/packages/libxscrnsaver/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxscrnsaver(Package): +class Libxscrnsaver(AutotoolsPackage): """XScreenSaver - X11 Screen Saver extension client library""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXScrnSaver" @@ -40,9 +40,3 @@ class Libxscrnsaver(Package): depends_on('scrnsaverproto@1.2:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxshmfence/package.py b/var/spack/repos/builtin/packages/libxshmfence/package.py index d4f4c852030..63604865bde 100644 --- a/var/spack/repos/builtin/packages/libxshmfence/package.py +++ b/var/spack/repos/builtin/packages/libxshmfence/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxshmfence(Package): +class Libxshmfence(AutotoolsPackage): """libxshmfence - Shared memory 'SyncFence' synchronization primitive. This library offers a CPU-based synchronization primitive compatible @@ -40,10 +40,3 @@ class Libxshmfence(Package): depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/libxt/package.py b/var/spack/repos/builtin/packages/libxt/package.py index c657c866b40..1bab6854d95 100644 --- a/var/spack/repos/builtin/packages/libxt/package.py +++ b/var/spack/repos/builtin/packages/libxt/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxt(Package): +class Libxt(AutotoolsPackage): """libXt - X Toolkit Intrinsics library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXt" @@ -41,9 +41,3 @@ class Libxt(Package): depends_on('kbproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxtrap/package.py b/var/spack/repos/builtin/packages/libxtrap/package.py index 4589f98a870..2b22fb1679c 100644 --- a/var/spack/repos/builtin/packages/libxtrap/package.py +++ b/var/spack/repos/builtin/packages/libxtrap/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxtrap(Package): +class Libxtrap(AutotoolsPackage): """libXTrap is the Xlib-based client API for the DEC-XTRAP extension. XTrap was a proposed standard extension for X11R5 which facilitated the @@ -50,9 +50,3 @@ class Libxtrap(Package): depends_on('xextproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxtst/package.py b/var/spack/repos/builtin/packages/libxtst/package.py index 0d16643f94f..aaff481afc4 100644 --- a/var/spack/repos/builtin/packages/libxtst/package.py +++ b/var/spack/repos/builtin/packages/libxtst/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxtst(Package): +class Libxtst(AutotoolsPackage): """libXtst provides the Xlib-based client API for the XTEST & RECORD extensions. @@ -51,9 +51,3 @@ class Libxtst(Package): depends_on('inputproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxv/package.py b/var/spack/repos/builtin/packages/libxv/package.py index 03f10a1842c..2662da86474 100644 --- a/var/spack/repos/builtin/packages/libxv/package.py +++ b/var/spack/repos/builtin/packages/libxv/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxv(Package): +class Libxv(AutotoolsPackage): """libXv - library for the X Video (Xv) extension to the X Window System.""" @@ -41,9 +41,3 @@ class Libxv(Package): depends_on('videoproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxvmc/package.py b/var/spack/repos/builtin/packages/libxvmc/package.py index 9d5695c2c10..8492f660a40 100644 --- a/var/spack/repos/builtin/packages/libxvmc/package.py +++ b/var/spack/repos/builtin/packages/libxvmc/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxvmc(Package): +class Libxvmc(AutotoolsPackage): """X.org libXvMC library.""" homepage = "https://cgit.freedesktop.org/xorg/lib/libXvMC" @@ -41,9 +41,3 @@ class Libxvmc(Package): depends_on('videoproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxxf86dga/package.py b/var/spack/repos/builtin/packages/libxxf86dga/package.py index 292c5d213bd..501a40705fd 100644 --- a/var/spack/repos/builtin/packages/libxxf86dga/package.py +++ b/var/spack/repos/builtin/packages/libxxf86dga/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxxf86dga(Package): +class Libxxf86dga(AutotoolsPackage): """libXxf86dga - Client library for the XFree86-DGA extension.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXxf86dga" @@ -41,9 +41,3 @@ class Libxxf86dga(Package): depends_on('xf86dgaproto@2.0.99.2:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxxf86misc/package.py b/var/spack/repos/builtin/packages/libxxf86misc/package.py index 0247f8b57cf..8e6f743183d 100644 --- a/var/spack/repos/builtin/packages/libxxf86misc/package.py +++ b/var/spack/repos/builtin/packages/libxxf86misc/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxxf86misc(Package): +class Libxxf86misc(AutotoolsPackage): """libXxf86misc - Extension library for the XFree86-Misc X extension.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXxf86misc" @@ -41,9 +41,3 @@ class Libxxf86misc(Package): depends_on('xf86miscproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libxxf86vm/package.py b/var/spack/repos/builtin/packages/libxxf86vm/package.py index feec5ff3d21..6f91c62a2d2 100644 --- a/var/spack/repos/builtin/packages/libxxf86vm/package.py +++ b/var/spack/repos/builtin/packages/libxxf86vm/package.py @@ -25,7 +25,7 @@ from spack import * -class Libxxf86vm(Package): +class Libxxf86vm(AutotoolsPackage): """libXxf86vm - Extension library for the XFree86-VidMode X extension.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXxf86vm" @@ -41,9 +41,3 @@ class Libxxf86vm(Package): depends_on('xf86vidmodeproto@2.2.99.1:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/listres/package.py b/var/spack/repos/builtin/packages/listres/package.py index c6b3d149f68..3727ddc0b49 100644 --- a/var/spack/repos/builtin/packages/listres/package.py +++ b/var/spack/repos/builtin/packages/listres/package.py @@ -25,7 +25,7 @@ from spack import * -class Listres(Package): +class Listres(AutotoolsPackage): """The listres program generates a list of X resources for a widget in an X client written using a toolkit based on libXt.""" @@ -41,9 +41,3 @@ class Listres(Package): depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 9ac270bab5c..01df3c7f24b 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -26,7 +26,7 @@ from glob import glob -class Lmod(Package): +class Lmod(AutotoolsPackage): """Lmod is a Lua based module system that easily handles the MODULEPATH Hierarchical problem. Environment Modules provide a convenient way to dynamically change the users' environment through modulefiles. This @@ -66,7 +66,3 @@ def patch(self): if self.spec.version <= Version('6.4.3'): 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/lndir/package.py b/var/spack/repos/builtin/packages/lndir/package.py index a7ce892502d..ce3a199fe2a 100644 --- a/var/spack/repos/builtin/packages/lndir/package.py +++ b/var/spack/repos/builtin/packages/lndir/package.py @@ -25,7 +25,7 @@ from spack import * -class Lndir(Package): +class Lndir(AutotoolsPackage): """lndir - create a shadow directory of symbolic links to another directory tree.""" @@ -36,9 +36,3 @@ class Lndir(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/lwgrp/package.py b/var/spack/repos/builtin/packages/lwgrp/package.py index 9322d69b9b0..169f7540be8 100644 --- a/var/spack/repos/builtin/packages/lwgrp/package.py +++ b/var/spack/repos/builtin/packages/lwgrp/package.py @@ -25,7 +25,7 @@ from spack import * -class Lwgrp(Package): +class Lwgrp(AutotoolsPackage): """Thie light-weight group library provides process group representations using O(log N) space and time.""" @@ -35,8 +35,3 @@ class Lwgrp(Package): version('1.0.2', 'ab7ba3bdd8534a651da5076f47f27d8a') depends_on('mpi') - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/lwm2/package.py b/var/spack/repos/builtin/packages/lwm2/package.py index 063204b84a4..03cb6342716 100644 --- a/var/spack/repos/builtin/packages/lwm2/package.py +++ b/var/spack/repos/builtin/packages/lwm2/package.py @@ -25,7 +25,7 @@ from spack import * -class Lwm2(Package): +class Lwm2(AutotoolsPackage): """LWM2: Light Weight Measurement Module. This is a PMPI module that can collect a number of time-sliced MPI and POSIX I/O measurements from a program. @@ -36,8 +36,3 @@ class Lwm2(Package): depends_on("papi") depends_on("mpi") - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/makedepend/package.py b/var/spack/repos/builtin/packages/makedepend/package.py index 5675793abc0..68be988d82f 100644 --- a/var/spack/repos/builtin/packages/makedepend/package.py +++ b/var/spack/repos/builtin/packages/makedepend/package.py @@ -25,7 +25,7 @@ from spack import * -class Makedepend(Package): +class Makedepend(AutotoolsPackage): """makedepend - create dependencies in makefiles.""" homepage = "http://cgit.freedesktop.org/xorg/util/makedepend" @@ -35,10 +35,3 @@ class Makedepend(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index f19bb466fd9..094a7155d20 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -25,7 +25,7 @@ from spack import * -class Mesa(Package): +class Mesa(AutotoolsPackage): """Mesa is an open-source implementation of the OpenGL specification - a system for rendering interactive 3D graphics.""" @@ -59,9 +59,3 @@ class Mesa(Package): # TODO: Add package for systemd, provides libudev # Using the system package manager to install systemd didn't work for me - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/mkfontdir/package.py b/var/spack/repos/builtin/packages/mkfontdir/package.py index 15c85b24e46..1a43a028a86 100644 --- a/var/spack/repos/builtin/packages/mkfontdir/package.py +++ b/var/spack/repos/builtin/packages/mkfontdir/package.py @@ -25,7 +25,7 @@ from spack import * -class Mkfontdir(Package): +class Mkfontdir(AutotoolsPackage): """mkfontdir creates the fonts.dir files needed by the legacy X server core font system. The current implementation is a simple wrapper script around the mkfontscale program, which must be built and installed first.""" @@ -39,9 +39,3 @@ class Mkfontdir(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/mkfontscale/package.py b/var/spack/repos/builtin/packages/mkfontscale/package.py index 4c907831b68..397ba03a629 100644 --- a/var/spack/repos/builtin/packages/mkfontscale/package.py +++ b/var/spack/repos/builtin/packages/mkfontscale/package.py @@ -25,7 +25,7 @@ from spack import * -class Mkfontscale(Package): +class Mkfontscale(AutotoolsPackage): """mkfontscale creates the fonts.scale and fonts.dir index files used by the legacy X11 font system.""" @@ -40,9 +40,3 @@ class Mkfontscale(Package): depends_on('xproto@7.0.25:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/mpc/package.py b/var/spack/repos/builtin/packages/mpc/package.py index 2fe39009811..40e7d95de9e 100644 --- a/var/spack/repos/builtin/packages/mpc/package.py +++ b/var/spack/repos/builtin/packages/mpc/package.py @@ -25,7 +25,7 @@ from spack import * -class Mpc(Package): +class Mpc(AutotoolsPackage): """Gnu Mpc is a C library for the arithmetic of complex numbers with arbitrarily high precision and correct rounding of the result.""" @@ -40,11 +40,6 @@ class Mpc(Package): def url_for_version(self, version): if version < Version("1.0.1"): - return "http://www.multiprecision.org/mpc/download/mpc-%s.tar.gz" % version # NOQA + return "http://www.multiprecision.org/mpc/download/mpc-%s.tar.gz" % version else: return "ftp://ftp.gnu.org/gnu/mpc/mpc-%s.tar.gz" % version - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/mpfr/package.py b/var/spack/repos/builtin/packages/mpfr/package.py index 4612d038499..5dc33b2fb98 100644 --- a/var/spack/repos/builtin/packages/mpfr/package.py +++ b/var/spack/repos/builtin/packages/mpfr/package.py @@ -25,7 +25,7 @@ from spack import * -class Mpfr(Package): +class Mpfr(AutotoolsPackage): """The MPFR library is a C library for multiple-precision floating-point computations with correct rounding.""" homepage = "http://www.mpfr.org" @@ -36,8 +36,3 @@ class Mpfr(Package): version('3.1.2', 'ee2c3ac63bf0c2359bf08fc3ee094c19') depends_on('gmp') # mpir is a drop-in replacement for this - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/mpip/package.py b/var/spack/repos/builtin/packages/mpip/package.py index 78e1dca68ae..235c66c882e 100644 --- a/var/spack/repos/builtin/packages/mpip/package.py +++ b/var/spack/repos/builtin/packages/mpip/package.py @@ -26,7 +26,7 @@ import os -class Mpip(Package): +class Mpip(AutotoolsPackage): """mpiP: Lightweight, Scalable MPI Profiling""" homepage = "http://mpip.sourceforge.net/" url = "http://downloads.sourceforge.net/project/mpip/mpiP/mpiP-3.4.1/mpiP-3.4.1.tar.gz" @@ -38,7 +38,5 @@ class Mpip(Package): depends_on('libunwind', when=os.uname()[4] == "x86_64", type="build") depends_on("mpi", type="build") - def install(self, spec, prefix): - configure("--prefix=" + prefix, "--without-f77") - make() - make("install") + def configure_args(self): + return ['--without-f77'] diff --git a/var/spack/repos/builtin/packages/mrnet/package.py b/var/spack/repos/builtin/packages/mrnet/package.py index 9da9e29a2e9..b58d7a8c87e 100644 --- a/var/spack/repos/builtin/packages/mrnet/package.py +++ b/var/spack/repos/builtin/packages/mrnet/package.py @@ -25,7 +25,7 @@ from spack import * -class Mrnet(Package): +class Mrnet(AutotoolsPackage): """The MRNet Multi-Cast Reduction Network.""" homepage = "http://paradyn.org/mrnet" url = "ftp://ftp.cs.wisc.edu/paradyn/mrnet/mrnet_5.0.1.tar.gz" @@ -43,14 +43,13 @@ class Mrnet(Package): depends_on("boost") - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec + config_args = ['--enable-shared'] + # Build the MRNet LW thread safe libraries when the # lwthreads variant is present if '+lwthreads' in spec: - configure("--prefix=%s" % prefix, "--enable-shared", - "--enable-ltwt-threadsafe") - else: - configure("--prefix=%s" % prefix, "--enable-shared") + config_args.append('--enable-ltwt-threadsafe') - make() - make("install") + return config_args diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index 29e3b27d6ea..bae1984bde8 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -25,7 +25,7 @@ from spack import * -class Mxml(Package): +class Mxml(AutotoolsPackage): """Mini-XML is a small XML library that you can use to read and write XML and XML-like data files in your application without requiring large non-standard libraries. @@ -44,7 +44,5 @@ class Mxml(Package): # (Can use whatever compiler you want to use) # Case statement to change CC and CXX flags - def install(self, spec, prefix): - configure('--prefix=%s' % prefix, "--disable-shared", 'CFLAGS=-static') - make() - make("install") + def configure_args(self): + return ['--disable-shared', 'CFLAGS=-static'] diff --git a/var/spack/repos/builtin/packages/nano/package.py b/var/spack/repos/builtin/packages/nano/package.py index 3e87ec8ffe8..d303b5e4243 100644 --- a/var/spack/repos/builtin/packages/nano/package.py +++ b/var/spack/repos/builtin/packages/nano/package.py @@ -25,7 +25,7 @@ from spack import * -class Nano(Package): +class Nano(AutotoolsPackage): """Tiny little text editor""" homepage = "http://www.nano-editor.org" @@ -33,8 +33,3 @@ class Nano(Package): version('2.6.3', '1213c7f17916e65afefc95054c1f90f9') version('2.6.2', '58568a4b8a33841d774c25f285fc11c1') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/nasm/package.py b/var/spack/repos/builtin/packages/nasm/package.py index 9faccccaaea..979d002b4cf 100644 --- a/var/spack/repos/builtin/packages/nasm/package.py +++ b/var/spack/repos/builtin/packages/nasm/package.py @@ -25,15 +25,10 @@ from spack import * -class Nasm(Package): +class Nasm(AutotoolsPackage): """NASM (Netwide Assembler) is an 80x86 assembler designed for portability and modularity. It includes a disassembler as well.""" homepage = "http://www.nasm.us" url = "http://www.nasm.us/pub/nasm/releasebuilds/2.11.06/nasm-2.11.06.tar.xz" version('2.11.06', '2b958e9f5d200641e6fc9564977aecc5') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py index 5c3cf300d2d..da541c18b31 100644 --- a/var/spack/repos/builtin/packages/ncview/package.py +++ b/var/spack/repos/builtin/packages/ncview/package.py @@ -25,7 +25,7 @@ from spack import * -class Ncview(Package): +class Ncview(AutotoolsPackage): """Simple viewer for NetCDF files.""" homepage = "http://meteora.ucsd.edu/~pierce/ncview_home_page.html" url = "ftp://cirrus.ucsd.edu/pub/ncview/ncview-2.1.7.tar.gz" @@ -36,9 +36,3 @@ class Ncview(Package): depends_on('udunits2') depends_on('libpng') depends_on('libxaw') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/netgauge/package.py b/var/spack/repos/builtin/packages/netgauge/package.py index b57cdbe5f37..e7e669410ba 100644 --- a/var/spack/repos/builtin/packages/netgauge/package.py +++ b/var/spack/repos/builtin/packages/netgauge/package.py @@ -25,7 +25,7 @@ from spack import * -class Netgauge(Package): +class Netgauge(AutotoolsPackage): """Netgauge is a high-precision network parameter measurement tool. It supports benchmarking of many different network protocols and communication patterns. The main focus lies on accuracy, @@ -37,8 +37,3 @@ class Netgauge(Package): version('2.4.6', 'e0e040ec6452e93ca21ccc54deac1d7f') depends_on("mpi") - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py index 7e2b758bc01..6112dc6507e 100644 --- a/var/spack/repos/builtin/packages/nettle/package.py +++ b/var/spack/repos/builtin/packages/nettle/package.py @@ -25,7 +25,7 @@ from spack import * -class Nettle(Package): +class Nettle(AutotoolsPackage): """The Nettle package contains the low-level cryptographic library that is designed to fit easily in many contexts.""" @@ -37,11 +37,3 @@ class Nettle(Package): depends_on('gmp') depends_on('m4', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - if self.run_tests: - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/npm/package.py b/var/spack/repos/builtin/packages/npm/package.py index 7910a8af9ba..500674d1d8f 100644 --- a/var/spack/repos/builtin/packages/npm/package.py +++ b/var/spack/repos/builtin/packages/npm/package.py @@ -26,7 +26,7 @@ from spack import * -class Npm(Package): +class Npm(AutotoolsPackage): """npm: A package manager for javascript.""" homepage = "https://github.com/npm/npm" @@ -37,18 +37,10 @@ class Npm(Package): version('3.10.5', '46002413f4a71de9b0da5b506bf1d992') depends_on('node-js') - + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): npm_config_cache_dir = "%s/npm-cache" % dependent_spec.prefix if not os.path.isdir(npm_config_cache_dir): mkdir(npm_config_cache_dir) run_env.set('npm_config_cache', npm_config_cache_dir) spack_env.set('npm_config_cache', npm_config_cache_dir) - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - if self.run_tests: - make('test') - - make('install') diff --git a/var/spack/repos/builtin/packages/ocaml/package.py b/var/spack/repos/builtin/packages/ocaml/package.py index 9488d3b7a62..855e2d7b3bc 100644 --- a/var/spack/repos/builtin/packages/ocaml/package.py +++ b/var/spack/repos/builtin/packages/ocaml/package.py @@ -25,7 +25,7 @@ from spack import * -class Ocaml(Package): +class Ocaml(AutotoolsPackage): """OCaml is an industrial strength programming language supporting functional, imperative and object-oriented styles""" @@ -36,8 +36,4 @@ class Ocaml(Package): depends_on('ncurses') - def install(self, spec, prefix): - configure('-prefix', '{0}'.format(prefix)) - - make('world.opt') - make('install') + build_targets = ['world.opt'] diff --git a/var/spack/repos/builtin/packages/oclock/package.py b/var/spack/repos/builtin/packages/oclock/package.py index 84da93c36ec..ec656b23f12 100644 --- a/var/spack/repos/builtin/packages/oclock/package.py +++ b/var/spack/repos/builtin/packages/oclock/package.py @@ -25,7 +25,7 @@ from spack import * -class Oclock(Package): +class Oclock(AutotoolsPackage): """oclock is a simple analog clock using the SHAPE extension to make a round (possibly transparent) window.""" @@ -42,9 +42,3 @@ class Oclock(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index c45054be581..0f082527b96 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -25,7 +25,7 @@ from spack import * -class Pango(Package): +class Pango(AutotoolsPackage): """Pango is a library for laying out and rendering of text, with an emphasis on internationalization. It can be used anywhere that text layout is needed, though most of the work on Pango so @@ -49,6 +49,4 @@ class Pango(Package): depends_on("glib") def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() make("install", parallel=False) diff --git a/var/spack/repos/builtin/packages/parallel/package.py b/var/spack/repos/builtin/packages/parallel/package.py index 81c01956512..4297e8acb01 100644 --- a/var/spack/repos/builtin/packages/parallel/package.py +++ b/var/spack/repos/builtin/packages/parallel/package.py @@ -25,7 +25,7 @@ from spack import * -class Parallel(Package): +class Parallel(AutotoolsPackage): """GNU parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small script that has to be run for each of the lines in the input. @@ -36,9 +36,3 @@ class Parallel(Package): version('20160422', '24621f684130472694333709bd4454cb') version('20160322', '4e81e0d36902ab4c4e969ee6f35e6e57') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/patchelf/package.py b/var/spack/repos/builtin/packages/patchelf/package.py index c391f491ebb..1d429361b69 100644 --- a/var/spack/repos/builtin/packages/patchelf/package.py +++ b/var/spack/repos/builtin/packages/patchelf/package.py @@ -25,7 +25,7 @@ from spack import * -class Patchelf(Package): +class Patchelf(AutotoolsPackage): """PatchELF is a small utility to modify the dynamic linker and RPATH of ELF executables.""" @@ -37,8 +37,3 @@ class Patchelf(Package): version('0.9', '3c265508526760f233620f35d79c79fc') version('0.8', '407b229e6a681ffb0e2cdd5915cb2d01') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/pcre2/package.py b/var/spack/repos/builtin/packages/pcre2/package.py index a2739e05844..d2915dd60e0 100644 --- a/var/spack/repos/builtin/packages/pcre2/package.py +++ b/var/spack/repos/builtin/packages/pcre2/package.py @@ -25,7 +25,7 @@ from spack import * -class Pcre2(Package): +class Pcre2(AutotoolsPackage): """The PCRE2 package contains Perl Compatible Regular Expression libraries. These are useful for implementing regular expression pattern matching using the same syntax and semantics as Perl 5.""" @@ -33,8 +33,3 @@ class Pcre2(Package): url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.20.tar.bz2" version('10.20', 'dcd027c57ecfdc8a6c3af9d0acf5e3f7') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index bed01aeefb8..081c32c861d 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -25,7 +25,7 @@ from spack import * -class Pdt(Package): +class Pdt(AutotoolsPackage): """Program Database Toolkit (PDT) is a framework for analyzing source code written in several programming languages and for making rich program knowledge accessible to developers of static and dynamic @@ -43,8 +43,3 @@ class Pdt(Package): version('3.20', 'c3edabe202926abe04552e33cd39672d') version('3.19', '5c5e1e6607086aa13bf4b1b9befc5864') version('3.18.1', 'e401534f5c476c3e77f05b7f73b6c4f2') - - def install(self, spec, prefix): - configure('-prefix=%s' % prefix) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/presentproto/package.py b/var/spack/repos/builtin/packages/presentproto/package.py index ca145abb6b1..32560ade65c 100644 --- a/var/spack/repos/builtin/packages/presentproto/package.py +++ b/var/spack/repos/builtin/packages/presentproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Presentproto(Package): +class Presentproto(AutotoolsPackage): """Present protocol specification and Xlib/Xserver headers.""" homepage = "https://cgit.freedesktop.org/xorg/proto/presentproto/" @@ -35,8 +35,3 @@ class Presentproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/printproto/package.py b/var/spack/repos/builtin/packages/printproto/package.py index 151924dd490..0f905c3172f 100644 --- a/var/spack/repos/builtin/packages/printproto/package.py +++ b/var/spack/repos/builtin/packages/printproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Printproto(Package): +class Printproto(AutotoolsPackage): """Xprint extension to the X11 protocol - a portable, network-transparent printing system.""" @@ -36,8 +36,3 @@ class Printproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/proj/package.py b/var/spack/repos/builtin/packages/proj/package.py index 06ab6108b63..3008baa690e 100644 --- a/var/spack/repos/builtin/packages/proj/package.py +++ b/var/spack/repos/builtin/packages/proj/package.py @@ -25,7 +25,7 @@ from spack import * -class Proj(Package): +class Proj(AutotoolsPackage): """Cartographic Projections""" homepage = "https://github.com/OSGeo/proj.4/wiki" url = "http://download.osgeo.org/proj/proj-4.9.2.tar.gz" @@ -35,11 +35,3 @@ class Proj(Package): version('4.8.0', 'd815838c92a29179298c126effbb1537') version('4.7.0', '927d34623b52e0209ba2bfcca18fe8cd') version('4.6.1', '7dbaab8431ad50c25669fd3fb28dc493') - - # No dependencies - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index bf0073b16a8..6faa0376ada 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -25,16 +25,10 @@ from spack import * -class Protobuf(Package): +class Protobuf(AutotoolsPackage): """Google's data interchange format.""" homepage = "https://developers.google.com/protocol-buffers" url = "https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.bz2" version('2.5.0', 'a72001a9067a4c2c4e0e836d0f92ece4') - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("check") - make("install") diff --git a/var/spack/repos/builtin/packages/proxymngr/package.py b/var/spack/repos/builtin/packages/proxymngr/package.py index 896f4a516b7..896f2d00b74 100644 --- a/var/spack/repos/builtin/packages/proxymngr/package.py +++ b/var/spack/repos/builtin/packages/proxymngr/package.py @@ -25,7 +25,7 @@ from spack import * -class Proxymngr(Package): +class Proxymngr(AutotoolsPackage): """The proxy manager (proxymngr) is responsible for resolving requests from xfindproxy (and other similar clients), starting new proxies when appropriate, and keeping track of all of the available proxy services. @@ -44,9 +44,3 @@ class Proxymngr(Package): depends_on('xproxymanagementprotocol', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/py-xpyb/package.py b/var/spack/repos/builtin/packages/py-xpyb/package.py index 49c6343c452..136da54dcf3 100644 --- a/var/spack/repos/builtin/packages/py-xpyb/package.py +++ b/var/spack/repos/builtin/packages/py-xpyb/package.py @@ -25,7 +25,7 @@ from spack import * -class PyXpyb(Package): +class PyXpyb(AutotoolsPackage): """xpyb provides a Python binding to the X Window System protocol via libxcb.""" @@ -39,9 +39,3 @@ class PyXpyb(Package): depends_on('libxcb@1.5:') depends_on('xcb-proto@1.7.1:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/randrproto/package.py b/var/spack/repos/builtin/packages/randrproto/package.py index ecff886a3ba..ff336204486 100644 --- a/var/spack/repos/builtin/packages/randrproto/package.py +++ b/var/spack/repos/builtin/packages/randrproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Randrproto(Package): +class Randrproto(AutotoolsPackage): """X Resize and Rotate Extension (RandR). This extension defines a protocol for clients to dynamically change X @@ -39,8 +39,3 @@ class Randrproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/readline/package.py b/var/spack/repos/builtin/packages/readline/package.py index abb6ba04ce4..ab9454b0fc0 100644 --- a/var/spack/repos/builtin/packages/readline/package.py +++ b/var/spack/repos/builtin/packages/readline/package.py @@ -25,7 +25,7 @@ from spack import * -class Readline(Package): +class Readline(AutotoolsPackage): """The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Both Emacs and vi editing modes are @@ -40,7 +40,5 @@ class Readline(Package): depends_on("ncurses") - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) + def build(self, spec, prefix): make("SHLIB_LIBS=-lncurses") - make("install") diff --git a/var/spack/repos/builtin/packages/recordproto/package.py b/var/spack/repos/builtin/packages/recordproto/package.py index 02018a76ff5..b38eeae0790 100644 --- a/var/spack/repos/builtin/packages/recordproto/package.py +++ b/var/spack/repos/builtin/packages/recordproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Recordproto(Package): +class Recordproto(AutotoolsPackage): """X Record Extension. This extension defines a protocol for the recording and playback of user @@ -38,8 +38,3 @@ class Recordproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/rendercheck/package.py b/var/spack/repos/builtin/packages/rendercheck/package.py index 07cc809e9ad..f53925fe287 100644 --- a/var/spack/repos/builtin/packages/rendercheck/package.py +++ b/var/spack/repos/builtin/packages/rendercheck/package.py @@ -25,7 +25,7 @@ from spack import * -class Rendercheck(Package): +class Rendercheck(AutotoolsPackage): """rendercheck is a program to test a Render extension implementation against separate calculations of expected output.""" @@ -40,9 +40,3 @@ class Rendercheck(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/renderproto/package.py b/var/spack/repos/builtin/packages/renderproto/package.py index 10be4c941c4..81348d7347e 100644 --- a/var/spack/repos/builtin/packages/renderproto/package.py +++ b/var/spack/repos/builtin/packages/renderproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Renderproto(Package): +class Renderproto(AutotoolsPackage): """X Rendering Extension. This extension defines the protcol for a digital image composition as @@ -38,8 +38,3 @@ class Renderproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/resourceproto/package.py b/var/spack/repos/builtin/packages/resourceproto/package.py index 4e0a495d83f..11e143b5fc3 100644 --- a/var/spack/repos/builtin/packages/resourceproto/package.py +++ b/var/spack/repos/builtin/packages/resourceproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Resourceproto(Package): +class Resourceproto(AutotoolsPackage): """X Resource Extension. This extension defines a protocol that allows a client to query the @@ -38,8 +38,3 @@ class Resourceproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/rgb/package.py b/var/spack/repos/builtin/packages/rgb/package.py index ddc54193055..985b90449d5 100644 --- a/var/spack/repos/builtin/packages/rgb/package.py +++ b/var/spack/repos/builtin/packages/rgb/package.py @@ -25,7 +25,7 @@ from spack import * -class Rgb(Package): +class Rgb(AutotoolsPackage): """X color name database. This package includes both the list mapping X color names to RGB values @@ -42,10 +42,3 @@ class Rgb(Package): depends_on('xorg-server') depends_on('xproto', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/rstart/package.py b/var/spack/repos/builtin/packages/rstart/package.py index 7b80e88ae7e..198c9c8be52 100644 --- a/var/spack/repos/builtin/packages/rstart/package.py +++ b/var/spack/repos/builtin/packages/rstart/package.py @@ -25,7 +25,7 @@ from spack import * -class Rstart(Package): +class Rstart(AutotoolsPackage): """This package includes both the client and server sides implementing the protocol described in the "A Flexible Remote Execution Protocol Based on rsh" paper found in the specs/ subdirectory. @@ -41,9 +41,3 @@ class Rstart(Package): depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/rsync/package.py b/var/spack/repos/builtin/packages/rsync/package.py index 4e741b255f2..2c21262b39e 100644 --- a/var/spack/repos/builtin/packages/rsync/package.py +++ b/var/spack/repos/builtin/packages/rsync/package.py @@ -25,16 +25,10 @@ from spack import * -class Rsync(Package): +class Rsync(AutotoolsPackage): """An open source utility that provides fast incremental file transfer.""" homepage = "https://rsync.samba.org" url = "https://download.samba.org/pub/rsync/rsync-3.1.1.tar.gz" version('3.1.2', '0f758d7e000c0f7f7d3792610fad70cb') version('3.1.1', '43bd6676f0b404326eee2d63be3cdcfe') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/screen/package.py b/var/spack/repos/builtin/packages/screen/package.py index 7edfb44a4d9..542612f2075 100644 --- a/var/spack/repos/builtin/packages/screen/package.py +++ b/var/spack/repos/builtin/packages/screen/package.py @@ -25,7 +25,7 @@ from spack import * -class Screen(Package): +class Screen(AutotoolsPackage): """Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells. """ @@ -51,8 +51,3 @@ class Screen(Package): version('3.7.1', '27cdd29318446561ef7c966041cbd2c9') depends_on('ncurses') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/scripts/package.py b/var/spack/repos/builtin/packages/scripts/package.py index 7086cfd6fe1..4bdf63e70ad 100644 --- a/var/spack/repos/builtin/packages/scripts/package.py +++ b/var/spack/repos/builtin/packages/scripts/package.py @@ -25,7 +25,7 @@ from spack import * -class Scripts(Package): +class Scripts(AutotoolsPackage): """Various X related scripts.""" homepage = "http://cgit.freedesktop.org/xorg/app/scripts" @@ -37,9 +37,3 @@ class Scripts(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/scrnsaverproto/package.py b/var/spack/repos/builtin/packages/scrnsaverproto/package.py index 3675fd0effa..c849d127135 100644 --- a/var/spack/repos/builtin/packages/scrnsaverproto/package.py +++ b/var/spack/repos/builtin/packages/scrnsaverproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Scrnsaverproto(Package): +class Scrnsaverproto(AutotoolsPackage): """MIT Screen Saver Extension. This extension defines a protocol to control screensaver features @@ -38,8 +38,3 @@ class Scrnsaverproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/sdl2-image/package.py b/var/spack/repos/builtin/packages/sdl2-image/package.py index 5df207ac55b..6e953a14514 100644 --- a/var/spack/repos/builtin/packages/sdl2-image/package.py +++ b/var/spack/repos/builtin/packages/sdl2-image/package.py @@ -25,7 +25,7 @@ from spack import * -class Sdl2Image(Package): +class Sdl2Image(AutotoolsPackage): """SDL is designed to provide the bare bones of creating a graphical program. """ @@ -35,9 +35,3 @@ class Sdl2Image(Package): version('2.0.1', 'd94b94555ba022fa249a53a021dc3606') depends_on('sdl2') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/sed/package.py b/var/spack/repos/builtin/packages/sed/package.py index f2a240e1b3d..57e00f4e77b 100644 --- a/var/spack/repos/builtin/packages/sed/package.py +++ b/var/spack/repos/builtin/packages/sed/package.py @@ -25,15 +25,9 @@ from spack import * -class Sed(Package): +class Sed(AutotoolsPackage): """GNU implementation of the famous stream editor.""" homepage = "http://www.gnu.org/software/sed/" url = "http://ftpmirror.gnu.org/sed/sed-4.2.2.tar.bz2" version('4.2.2', '7ffe1c7cdc3233e1e0c4b502df253974') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/sessreg/package.py b/var/spack/repos/builtin/packages/sessreg/package.py index 2ab505cc7ae..d50e65f4b03 100644 --- a/var/spack/repos/builtin/packages/sessreg/package.py +++ b/var/spack/repos/builtin/packages/sessreg/package.py @@ -25,7 +25,7 @@ from spack import * -class Sessreg(Package): +class Sessreg(AutotoolsPackage): """Sessreg is a simple program for managing utmp/wtmp entries for X sessions. It was originally written for use with xdm, but may also be used with other display managers such as gdm or kdm.""" @@ -43,9 +43,3 @@ def patch(self): kwargs = {'string': True} filter_file('$(CPP) $(DEFS)', '$(CPP) -P $(DEFS)', 'man/Makefile.in', **kwargs) - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/setxkbmap/package.py b/var/spack/repos/builtin/packages/setxkbmap/package.py index db365530c94..2c0f4380e30 100644 --- a/var/spack/repos/builtin/packages/setxkbmap/package.py +++ b/var/spack/repos/builtin/packages/setxkbmap/package.py @@ -25,7 +25,7 @@ from spack import * -class Setxkbmap(Package): +class Setxkbmap(AutotoolsPackage): """setxkbmap is an X11 client to change the keymaps in the X server for a specified keyboard to use the layout determined by the options listed on the command line.""" @@ -40,9 +40,3 @@ class Setxkbmap(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/showfont/package.py b/var/spack/repos/builtin/packages/showfont/package.py index 232988193bf..2dd83603118 100644 --- a/var/spack/repos/builtin/packages/showfont/package.py +++ b/var/spack/repos/builtin/packages/showfont/package.py @@ -25,7 +25,7 @@ from spack import * -class Showfont(Package): +class Showfont(AutotoolsPackage): """showfont displays data about a font from an X font server. The information shown includes font information, font properties, character metrics, and character bitmaps.""" @@ -39,9 +39,3 @@ class Showfont(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/smproxy/package.py b/var/spack/repos/builtin/packages/smproxy/package.py index 5bdde800d48..f7c7ebfe990 100644 --- a/var/spack/repos/builtin/packages/smproxy/package.py +++ b/var/spack/repos/builtin/packages/smproxy/package.py @@ -25,7 +25,7 @@ from spack import * -class Smproxy(Package): +class Smproxy(AutotoolsPackage): """smproxy allows X applications that do not support X11R6 session management to participate in an X11R6 session.""" @@ -41,9 +41,3 @@ class Smproxy(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/snappy/package.py b/var/spack/repos/builtin/packages/snappy/package.py index 1e94980c925..c7b8118a248 100644 --- a/var/spack/repos/builtin/packages/snappy/package.py +++ b/var/spack/repos/builtin/packages/snappy/package.py @@ -25,15 +25,10 @@ from spack import * -class Snappy(Package): +class Snappy(AutotoolsPackage): """A fast compressor/decompressor: https://code.google.com/p/snappy""" homepage = "https://code.google.com/p/snappy" url = "https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz" version('1.1.3', '7358c82f133dc77798e4c2062a749b73') - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/sowing/package.py b/var/spack/repos/builtin/packages/sowing/package.py index f7f6297488a..5dc23579b80 100644 --- a/var/spack/repos/builtin/packages/sowing/package.py +++ b/var/spack/repos/builtin/packages/sowing/package.py @@ -26,7 +26,7 @@ from spack import * -class Sowing(Package): +class Sowing(AutotoolsPackage): """Sowing generates Fortran interfaces and documentation for PETSc and MPICH. """ @@ -36,7 +36,5 @@ class Sowing(Package): version('1.1.23-p1', '65aaf3ae2a4c0f30d532fec291702e16') - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) + def build(self, spec, prefix): make('ALL', parallel=False) - make("install") diff --git a/var/spack/repos/builtin/packages/sparsehash/package.py b/var/spack/repos/builtin/packages/sparsehash/package.py index e5abd42ae6e..6216987bce1 100644 --- a/var/spack/repos/builtin/packages/sparsehash/package.py +++ b/var/spack/repos/builtin/packages/sparsehash/package.py @@ -25,15 +25,9 @@ from spack import * -class Sparsehash(Package): +class Sparsehash(AutotoolsPackage): """Sparse and dense hash-tables for C++ by Google""" homepage = "https://github.com/sparsehash/sparsehash" url = "https://github.com/sparsehash/sparsehash/archive/sparsehash-2.0.3.tar.gz" version('2.0.3', 'd8d5e2538c1c25577b3f066d7a55e99e') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/spindle/package.py b/var/spack/repos/builtin/packages/spindle/package.py index 213d41e9705..c23fb56f034 100644 --- a/var/spack/repos/builtin/packages/spindle/package.py +++ b/var/spack/repos/builtin/packages/spindle/package.py @@ -25,7 +25,7 @@ from spack import * -class Spindle(Package): +class Spindle(AutotoolsPackage): """Spindle improves the library-loading performance of dynamically linked HPC applications. Without Spindle large MPI jobs can overload on a shared file system when loading dynamically @@ -38,8 +38,3 @@ class Spindle(Package): version('0.8.1', 'f11793a6b9d8df2cd231fccb2857d912') depends_on("launchmon") - - def install(self, spec, prefix): - configure("--prefix=" + prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/spot/package.py b/var/spack/repos/builtin/packages/spot/package.py index 096aa24c027..abb1776aaf4 100644 --- a/var/spack/repos/builtin/packages/spot/package.py +++ b/var/spack/repos/builtin/packages/spot/package.py @@ -25,7 +25,7 @@ from spack import * -class Spot(Package): +class Spot(AutotoolsPackage): """Spot is a C++11 library for omega-automata manipulation and model checking.""" homepage = "https://spot.lrde.epita.fr/index.html" @@ -35,9 +35,3 @@ class Spot(Package): # depends_on("gcc@4.8:", type='build') depends_on("python@3.2:") - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/swig/package.py b/var/spack/repos/builtin/packages/swig/package.py index b43246dcee2..77f2c69772e 100644 --- a/var/spack/repos/builtin/packages/swig/package.py +++ b/var/spack/repos/builtin/packages/swig/package.py @@ -25,7 +25,7 @@ from spack import * -class Swig(Package): +class Swig(AutotoolsPackage): """SWIG is an interface compiler that connects programs written in C and C++ with scripting languages such as Perl, Python, Ruby, and Tcl. It works by taking the declarations found in C/C++ @@ -46,8 +46,3 @@ class Swig(Package): version('1.3.40', '2df766c9e03e02811b1ab4bba1c7b9cc') depends_on('pcre') - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/the-silver-searcher/package.py b/var/spack/repos/builtin/packages/the-silver-searcher/package.py index c98e964efa6..9721554663f 100644 --- a/var/spack/repos/builtin/packages/the-silver-searcher/package.py +++ b/var/spack/repos/builtin/packages/the-silver-searcher/package.py @@ -25,7 +25,7 @@ from spack import * -class TheSilverSearcher(Package): +class TheSilverSearcher(AutotoolsPackage): """Fast recursive grep alternative""" homepage = "http://geoff.greer.fm/ag/" url = "http://geoff.greer.fm/ag/releases/the_silver_searcher-0.32.0.tar.gz" @@ -36,9 +36,3 @@ class TheSilverSearcher(Package): depends_on('pcre') depends_on('xz') depends_on('pkg-config', type='build') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/transset/package.py b/var/spack/repos/builtin/packages/transset/package.py index 0f607387417..27f3a2f8823 100644 --- a/var/spack/repos/builtin/packages/transset/package.py +++ b/var/spack/repos/builtin/packages/transset/package.py @@ -25,7 +25,7 @@ from spack import * -class Transset(Package): +class Transset(AutotoolsPackage): """transset is an utility for setting opacity property.""" homepage = "http://cgit.freedesktop.org/xorg/app/transset" @@ -38,9 +38,3 @@ class Transset(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/trapproto/package.py b/var/spack/repos/builtin/packages/trapproto/package.py index eebab744100..879ac569dfb 100644 --- a/var/spack/repos/builtin/packages/trapproto/package.py +++ b/var/spack/repos/builtin/packages/trapproto/package.py @@ -25,15 +25,10 @@ from spack import * -class Trapproto(Package): +class Trapproto(AutotoolsPackage): """X.org TrapProto protocol headers.""" homepage = "https://cgit.freedesktop.org/xorg/proto/trapproto" url = "https://www.x.org/archive/individual/proto/trapproto-3.4.3.tar.gz" version('3.4.3', '1344759ae8d7d923e64f5eec078a679b') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/twm/package.py b/var/spack/repos/builtin/packages/twm/package.py index 3e37f4903d3..a1a221b969e 100644 --- a/var/spack/repos/builtin/packages/twm/package.py +++ b/var/spack/repos/builtin/packages/twm/package.py @@ -25,7 +25,7 @@ from spack import * -class Twm(Package): +class Twm(AutotoolsPackage): """twm is a window manager for the X Window System. It provides titlebars, shaped windows, several forms of icon management, user-defined macro functions, click-to-type and pointer-driven @@ -48,9 +48,3 @@ class Twm(Package): depends_on('flex', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/uberftp/package.py b/var/spack/repos/builtin/packages/uberftp/package.py index b0c6c8a42f0..f9d0174b78a 100644 --- a/var/spack/repos/builtin/packages/uberftp/package.py +++ b/var/spack/repos/builtin/packages/uberftp/package.py @@ -25,7 +25,7 @@ from spack import * -class Uberftp(Package): +class Uberftp(AutotoolsPackage): """UberFTP is an interactive (text-based) client for GridFTP""" homepage = "http://toolkit.globus.org/grid_software/data/uberftp.php" @@ -36,9 +36,3 @@ class Uberftp(Package): version('2_6', '784210976f259f9d19c0798c19778d34') depends_on('globus-toolkit') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/uncrustify/package.py b/var/spack/repos/builtin/packages/uncrustify/package.py index c3182d0dc89..7e4b3bd24d0 100644 --- a/var/spack/repos/builtin/packages/uncrustify/package.py +++ b/var/spack/repos/builtin/packages/uncrustify/package.py @@ -25,15 +25,10 @@ from spack import * -class Uncrustify(Package): +class Uncrustify(AutotoolsPackage): """Source Code Beautifier for C, C++, C#, ObjectiveC, Java, and others.""" homepage = "http://uncrustify.sourceforge.net/" url = "http://downloads.sourceforge.net/project/uncrustify/uncrustify/uncrustify-0.61/uncrustify-0.61.tar.gz" version('0.61', 'b6140106e74c64e831d0b1c4b6cf7727') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/unixodbc/package.py b/var/spack/repos/builtin/packages/unixodbc/package.py index 15de127b7ea..cba34b29c3f 100644 --- a/var/spack/repos/builtin/packages/unixodbc/package.py +++ b/var/spack/repos/builtin/packages/unixodbc/package.py @@ -25,7 +25,7 @@ from spack import * -class Unixodbc(Package): +class Unixodbc(AutotoolsPackage): """ODBC is an open specification for providing application developers with a predictable API with which to access Data Sources. Data Sources include SQL Servers and any Data Source with an ODBC Driver.""" @@ -34,9 +34,3 @@ class Unixodbc(Package): url = "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz" version('2.3.4', 'bd25d261ca1808c947cb687e2034be81') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/util-macros/package.py b/var/spack/repos/builtin/packages/util-macros/package.py index 486d4463b0d..181302a34a0 100644 --- a/var/spack/repos/builtin/packages/util-macros/package.py +++ b/var/spack/repos/builtin/packages/util-macros/package.py @@ -25,7 +25,7 @@ from spack import * -class UtilMacros(Package): +class UtilMacros(AutotoolsPackage): """This is a set of autoconf macros used by the configure.ac scripts in other Xorg modular packages, and is needed to generate new versions of their configure scripts with autoconf.""" @@ -34,8 +34,3 @@ class UtilMacros(Package): url = "https://www.x.org/archive/individual/util/util-macros-1.19.0.tar.bz2" version('1.19.0', '1cf984125e75f8204938d998a8b6c1e1') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/videoproto/package.py b/var/spack/repos/builtin/packages/videoproto/package.py index 93b0e61ca43..d1495fe33da 100644 --- a/var/spack/repos/builtin/packages/videoproto/package.py +++ b/var/spack/repos/builtin/packages/videoproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Videoproto(Package): +class Videoproto(AutotoolsPackage): """X Video Extension. This extension provides a protocol for a video output mechanism, @@ -38,8 +38,3 @@ class Videoproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/viewres/package.py b/var/spack/repos/builtin/packages/viewres/package.py index 3a325550756..9e6daafc8b3 100644 --- a/var/spack/repos/builtin/packages/viewres/package.py +++ b/var/spack/repos/builtin/packages/viewres/package.py @@ -25,7 +25,7 @@ from spack import * -class Viewres(Package): +class Viewres(AutotoolsPackage): """viewres displays a tree showing the widget class hierarchy of the Athena Widget Set (libXaw).""" @@ -40,9 +40,3 @@ class Viewres(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/windowswmproto/package.py b/var/spack/repos/builtin/packages/windowswmproto/package.py index f163d1afb0b..9341cbd22c7 100644 --- a/var/spack/repos/builtin/packages/windowswmproto/package.py +++ b/var/spack/repos/builtin/packages/windowswmproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Windowswmproto(Package): +class Windowswmproto(AutotoolsPackage): """This module provides the definition of the WindowsWM extension to the X11 protocol, used for coordination between an X11 server and the Microsoft Windows native window manager. @@ -37,8 +37,3 @@ class Windowswmproto(Package): url = "https://www.x.org/archive/individual/proto/windowswmproto-1.0.4.tar.gz" version('1.0.4', '558db92a8e4e1b07e9c62eca3f04dd8d') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/x11perf/package.py b/var/spack/repos/builtin/packages/x11perf/package.py index 91db1e8a59b..89936e77f54 100644 --- a/var/spack/repos/builtin/packages/x11perf/package.py +++ b/var/spack/repos/builtin/packages/x11perf/package.py @@ -25,7 +25,7 @@ from spack import * -class X11perf(Package): +class X11perf(AutotoolsPackage): """Simple X server performance benchmarker.""" homepage = "http://cgit.freedesktop.org/xorg/app/x11perf" @@ -41,9 +41,3 @@ class X11perf(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xauth/package.py b/var/spack/repos/builtin/packages/xauth/package.py index 6d6a03c8996..fa172b5dc02 100644 --- a/var/spack/repos/builtin/packages/xauth/package.py +++ b/var/spack/repos/builtin/packages/xauth/package.py @@ -25,7 +25,7 @@ from spack import * -class Xauth(Package): +class Xauth(AutotoolsPackage): """The xauth program is used to edit and display the authorization information used in connecting to the X server.""" @@ -43,9 +43,4 @@ class Xauth(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - # make('check') # TODO: add package for cmdtest build dependency - make('install') + # TODO: add package for cmdtest test dependency diff --git a/var/spack/repos/builtin/packages/xbacklight/package.py b/var/spack/repos/builtin/packages/xbacklight/package.py index f1a9ecc1242..da9ab8f3bd1 100644 --- a/var/spack/repos/builtin/packages/xbacklight/package.py +++ b/var/spack/repos/builtin/packages/xbacklight/package.py @@ -25,7 +25,7 @@ from spack import * -class Xbacklight(Package): +class Xbacklight(AutotoolsPackage): """Xbacklight is used to adjust the backlight brightness where supported. It uses the RandR extension to find all outputs on the X server supporting backlight brightness control and changes them all in the @@ -41,9 +41,3 @@ class Xbacklight(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xbiff/package.py b/var/spack/repos/builtin/packages/xbiff/package.py index f5c53c5997d..29bd9086d8b 100644 --- a/var/spack/repos/builtin/packages/xbiff/package.py +++ b/var/spack/repos/builtin/packages/xbiff/package.py @@ -25,7 +25,7 @@ from spack import * -class Xbiff(Package): +class Xbiff(AutotoolsPackage): """xbiff provides graphical notification of new e-mail. It only handles mail stored in a filesystem accessible file, not via IMAP, POP or other remote access protocols.""" @@ -43,9 +43,3 @@ class Xbiff(Package): depends_on('xbitmaps', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xbitmaps/package.py b/var/spack/repos/builtin/packages/xbitmaps/package.py index 1c6fb79d3ad..6fcaf1240d4 100644 --- a/var/spack/repos/builtin/packages/xbitmaps/package.py +++ b/var/spack/repos/builtin/packages/xbitmaps/package.py @@ -25,7 +25,7 @@ from spack import * -class Xbitmaps(Package): +class Xbitmaps(AutotoolsPackage): """The xbitmaps package contains bitmap images used by multiple applications built in Xorg.""" @@ -36,8 +36,3 @@ class Xbitmaps(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xcalc/package.py b/var/spack/repos/builtin/packages/xcalc/package.py index a470d1c9d06..7b4717db65a 100644 --- a/var/spack/repos/builtin/packages/xcalc/package.py +++ b/var/spack/repos/builtin/packages/xcalc/package.py @@ -25,7 +25,7 @@ from spack import * -class Xcalc(Package): +class Xcalc(AutotoolsPackage): """xcalc is a scientific calculator X11 client that can emulate a TI-30 or an HP-10C.""" @@ -41,9 +41,3 @@ class Xcalc(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xcb-demo/package.py b/var/spack/repos/builtin/packages/xcb-demo/package.py index 62433e3b32e..6c3ccfa8aaa 100644 --- a/var/spack/repos/builtin/packages/xcb-demo/package.py +++ b/var/spack/repos/builtin/packages/xcb-demo/package.py @@ -25,7 +25,7 @@ from spack import * -class XcbDemo(Package): +class XcbDemo(AutotoolsPackage): """xcb-demo: A collection of demo programs that use the XCB library.""" homepage = "https://xcb.freedesktop.org/" @@ -40,12 +40,5 @@ class XcbDemo(Package): depends_on('pkg-config@0.9.0:', type='build') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - # FIXME: crashes with the following error message - # X11/XCB/xcb.h: No such file or directory - - make() - make('check') - make('install') + # FIXME: crashes with the following error message + # X11/XCB/xcb.h: No such file or directory diff --git a/var/spack/repos/builtin/packages/xcb-proto/package.py b/var/spack/repos/builtin/packages/xcb-proto/package.py index d2ac54d34f4..be8a09ef62f 100644 --- a/var/spack/repos/builtin/packages/xcb-proto/package.py +++ b/var/spack/repos/builtin/packages/xcb-proto/package.py @@ -25,7 +25,7 @@ from spack import * -class XcbProto(Package): +class XcbProto(AutotoolsPackage): """xcb-proto provides the XML-XCB protocol descriptions that libxcb uses to generate the majority of its code and API.""" @@ -37,8 +37,4 @@ class XcbProto(Package): extends('python') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - # make('check') # fails xmllint validation - make('install') + # NOTE: `make check` fails xmllint validation diff --git a/var/spack/repos/builtin/packages/xcb-util-cursor/package.py b/var/spack/repos/builtin/packages/xcb-util-cursor/package.py index b25fb181a61..83ae52ae934 100644 --- a/var/spack/repos/builtin/packages/xcb-util-cursor/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-cursor/package.py @@ -25,7 +25,7 @@ from spack import * -class XcbUtilCursor(Package): +class XcbUtilCursor(AutotoolsPackage): """The XCB util modules provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. These experimental libraries provide convenience functions @@ -43,9 +43,3 @@ class XcbUtilCursor(Package): depends_on('xcb-util-image') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xcb-util-errors/package.py b/var/spack/repos/builtin/packages/xcb-util-errors/package.py index c287a0ec6e7..f7c950841d5 100644 --- a/var/spack/repos/builtin/packages/xcb-util-errors/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-errors/package.py @@ -25,7 +25,7 @@ from spack import * -class XcbUtilErrors(Package): +class XcbUtilErrors(AutotoolsPackage): """The XCB util modules provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. These experimental libraries provide convenience functions @@ -42,10 +42,3 @@ class XcbUtilErrors(Package): depends_on('xcb-proto', type='build') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/xcb-util-image/package.py b/var/spack/repos/builtin/packages/xcb-util-image/package.py index 4413c7e11dc..58a5f82d181 100644 --- a/var/spack/repos/builtin/packages/xcb-util-image/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-image/package.py @@ -25,7 +25,7 @@ from spack import * -class XcbUtilImage(Package): +class XcbUtilImage(AutotoolsPackage): """The XCB util modules provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. These experimental libraries provide convenience functions @@ -43,10 +43,3 @@ class XcbUtilImage(Package): depends_on('xproto@7.0.8:', type='build') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py b/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py index 0de6391b183..026ac2a129d 100644 --- a/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py @@ -25,7 +25,7 @@ from spack import * -class XcbUtilKeysyms(Package): +class XcbUtilKeysyms(AutotoolsPackage): """The XCB util modules provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. These experimental libraries provide convenience functions @@ -42,9 +42,3 @@ class XcbUtilKeysyms(Package): depends_on('xproto@7.0.8:', type='build') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py b/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py index d41c88206c9..aa4db331128 100644 --- a/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py @@ -25,7 +25,7 @@ from spack import * -class XcbUtilRenderutil(Package): +class XcbUtilRenderutil(AutotoolsPackage): """The XCB util modules provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. These experimental libraries provide convenience functions @@ -41,9 +41,3 @@ class XcbUtilRenderutil(Package): depends_on('libxcb@1.4:') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xcb-util-wm/package.py b/var/spack/repos/builtin/packages/xcb-util-wm/package.py index ef3db06aec1..c5dfe65423b 100644 --- a/var/spack/repos/builtin/packages/xcb-util-wm/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-wm/package.py @@ -25,7 +25,7 @@ from spack import * -class XcbUtilWm(Package): +class XcbUtilWm(AutotoolsPackage): """The XCB util modules provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. These experimental libraries provide convenience functions @@ -41,9 +41,3 @@ class XcbUtilWm(Package): depends_on('libxcb@1.4:') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xcb-util/package.py b/var/spack/repos/builtin/packages/xcb-util/package.py index 820592a3197..6dcfbb64473 100644 --- a/var/spack/repos/builtin/packages/xcb-util/package.py +++ b/var/spack/repos/builtin/packages/xcb-util/package.py @@ -25,7 +25,7 @@ from spack import * -class XcbUtil(Package): +class XcbUtil(AutotoolsPackage): """The XCB util modules provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries. These experimental libraries provide convenience functions @@ -41,9 +41,3 @@ class XcbUtil(Package): depends_on('libxcb@1.4:') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xclipboard/package.py b/var/spack/repos/builtin/packages/xclipboard/package.py index d9af19da719..309a09bd762 100644 --- a/var/spack/repos/builtin/packages/xclipboard/package.py +++ b/var/spack/repos/builtin/packages/xclipboard/package.py @@ -25,7 +25,7 @@ from spack import * -class Xclipboard(Package): +class Xclipboard(AutotoolsPackage): """xclipboard is used to collect and display text selections that are sent to the CLIPBOARD by other clients. It is typically used to save CLIPBOARD selections for later use. It stores each CLIPBOARD @@ -45,9 +45,3 @@ class Xclipboard(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xclock/package.py b/var/spack/repos/builtin/packages/xclock/package.py index 5bd38826db2..0ec33e78de7 100644 --- a/var/spack/repos/builtin/packages/xclock/package.py +++ b/var/spack/repos/builtin/packages/xclock/package.py @@ -25,7 +25,7 @@ from spack import * -class Xclock(Package): +class Xclock(AutotoolsPackage): """xclock is the classic X Window System clock utility. It displays the time in analog or digital form, continuously updated at a frequency which may be specified by the user.""" @@ -46,9 +46,3 @@ class Xclock(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xcmiscproto/package.py b/var/spack/repos/builtin/packages/xcmiscproto/package.py index 2b15d1b3e77..c31b19f04be 100644 --- a/var/spack/repos/builtin/packages/xcmiscproto/package.py +++ b/var/spack/repos/builtin/packages/xcmiscproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Xcmiscproto(Package): +class Xcmiscproto(AutotoolsPackage): """XC-MISC Extension. This extension defines a protocol that provides Xlib two ways to query @@ -38,8 +38,3 @@ class Xcmiscproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xcmsdb/package.py b/var/spack/repos/builtin/packages/xcmsdb/package.py index 4d12e3a843a..74e1f6267f0 100644 --- a/var/spack/repos/builtin/packages/xcmsdb/package.py +++ b/var/spack/repos/builtin/packages/xcmsdb/package.py @@ -25,7 +25,7 @@ from spack import * -class Xcmsdb(Package): +class Xcmsdb(AutotoolsPackage): """xcmsdb is used to load, query, or remove Device Color Characterization data stored in properties on the root window of the screen as specified in section 7, Device Color Characterization, of the @@ -40,9 +40,3 @@ class Xcmsdb(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xcompmgr/package.py b/var/spack/repos/builtin/packages/xcompmgr/package.py index fc5bbb4b9c6..1c0771e38dd 100644 --- a/var/spack/repos/builtin/packages/xcompmgr/package.py +++ b/var/spack/repos/builtin/packages/xcompmgr/package.py @@ -25,7 +25,7 @@ from spack import * -class Xcompmgr(Package): +class Xcompmgr(AutotoolsPackage): """xcompmgr is a sample compositing manager for X servers supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE extensions. It enables basic eye-candy effects.""" @@ -43,9 +43,3 @@ class Xcompmgr(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xconsole/package.py b/var/spack/repos/builtin/packages/xconsole/package.py index f86fe753b6a..eabd5a48eda 100644 --- a/var/spack/repos/builtin/packages/xconsole/package.py +++ b/var/spack/repos/builtin/packages/xconsole/package.py @@ -25,7 +25,7 @@ from spack import * -class Xconsole(Package): +class Xconsole(AutotoolsPackage): """xconsole displays in a X11 window the messages which are usually sent to /dev/console.""" @@ -42,9 +42,3 @@ class Xconsole(Package): depends_on('xproto@7.0.17:') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xcursorgen/package.py b/var/spack/repos/builtin/packages/xcursorgen/package.py index 4e43844646c..8098723fc8e 100644 --- a/var/spack/repos/builtin/packages/xcursorgen/package.py +++ b/var/spack/repos/builtin/packages/xcursorgen/package.py @@ -25,7 +25,7 @@ from spack import * -class Xcursorgen(Package): +class Xcursorgen(AutotoolsPackage): """xcursorgen prepares X11 cursor sets for use with libXcursor.""" homepage = "http://cgit.freedesktop.org/xorg/app/xcursorgen" @@ -39,9 +39,3 @@ class Xcursorgen(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xdbedizzy/package.py b/var/spack/repos/builtin/packages/xdbedizzy/package.py index 7a8f97401f5..61ad98dc617 100644 --- a/var/spack/repos/builtin/packages/xdbedizzy/package.py +++ b/var/spack/repos/builtin/packages/xdbedizzy/package.py @@ -25,7 +25,7 @@ from spack import * -class Xdbedizzy(Package): +class Xdbedizzy(AutotoolsPackage): """xdbedizzy is a demo of the X11 Double Buffer Extension (DBE) creating a double buffered spinning scene.""" @@ -39,9 +39,3 @@ class Xdbedizzy(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xditview/package.py b/var/spack/repos/builtin/packages/xditview/package.py index 3fececd12e3..4f5384b81c9 100644 --- a/var/spack/repos/builtin/packages/xditview/package.py +++ b/var/spack/repos/builtin/packages/xditview/package.py @@ -25,7 +25,7 @@ from spack import * -class Xditview(Package): +class Xditview(AutotoolsPackage): """xditview displays ditroff output on an X display.""" homepage = "http://cgit.freedesktop.org/xorg/app/xditview" @@ -40,9 +40,3 @@ class Xditview(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xdm/package.py b/var/spack/repos/builtin/packages/xdm/package.py index d42ced9a579..384077e5568 100644 --- a/var/spack/repos/builtin/packages/xdm/package.py +++ b/var/spack/repos/builtin/packages/xdm/package.py @@ -25,7 +25,7 @@ from spack import * -class Xdm(Package): +class Xdm(AutotoolsPackage): """X Display Manager / XDMCP server.""" homepage = "http://cgit.freedesktop.org/xorg/app/xdm" @@ -46,9 +46,3 @@ class Xdm(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xdpyinfo/package.py b/var/spack/repos/builtin/packages/xdpyinfo/package.py index c69af3b357b..f3838999eb6 100644 --- a/var/spack/repos/builtin/packages/xdpyinfo/package.py +++ b/var/spack/repos/builtin/packages/xdpyinfo/package.py @@ -25,7 +25,7 @@ from spack import * -class Xdpyinfo(Package): +class Xdpyinfo(AutotoolsPackage): """xdpyinfo is a utility for displaying information about an X server. It is used to examine the capabilities of a server, the predefined @@ -46,9 +46,3 @@ class Xdpyinfo(Package): depends_on('xproto@7.0.22:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xdriinfo/package.py b/var/spack/repos/builtin/packages/xdriinfo/package.py index 7548175f6f9..9545f7707d9 100644 --- a/var/spack/repos/builtin/packages/xdriinfo/package.py +++ b/var/spack/repos/builtin/packages/xdriinfo/package.py @@ -25,7 +25,7 @@ from spack import * -class Xdriinfo(Package): +class Xdriinfo(AutotoolsPackage): """xdriinfo - query configuration information of X11 DRI drivers.""" homepage = "http://cgit.freedesktop.org/xorg/app/xdriinfo" @@ -44,9 +44,3 @@ class Xdriinfo(Package): depends_on('glproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xedit/package.py b/var/spack/repos/builtin/packages/xedit/package.py index da5f28809f5..73aca40a3b4 100644 --- a/var/spack/repos/builtin/packages/xedit/package.py +++ b/var/spack/repos/builtin/packages/xedit/package.py @@ -25,7 +25,7 @@ from spack import * -class Xedit(Package): +class Xedit(AutotoolsPackage): """Xedit is a simple text editor for X.""" homepage = "https://cgit.freedesktop.org/xorg/app/xedit" @@ -40,9 +40,3 @@ class Xedit(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xev/package.py b/var/spack/repos/builtin/packages/xev/package.py index 5727d4e4287..79ff7b08a72 100644 --- a/var/spack/repos/builtin/packages/xev/package.py +++ b/var/spack/repos/builtin/packages/xev/package.py @@ -25,7 +25,7 @@ from spack import * -class Xev(Package): +class Xev(AutotoolsPackage): """xev creates a window and then asks the X server to send it X11 events whenever anything happens to the window (such as it being moved, resized, typed in, clicked in, etc.). You can also attach it to an @@ -45,9 +45,3 @@ class Xev(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xextproto/package.py b/var/spack/repos/builtin/packages/xextproto/package.py index 9c1c123527d..012a023e720 100644 --- a/var/spack/repos/builtin/packages/xextproto/package.py +++ b/var/spack/repos/builtin/packages/xextproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Xextproto(Package): +class Xextproto(AutotoolsPackage): """X Protocol Extensions.""" homepage = "http://cgit.freedesktop.org/xorg/proto/xextproto" @@ -37,8 +37,3 @@ class Xextproto(Package): depends_on('util-macros', type='build') parallel = False - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xeyes/package.py b/var/spack/repos/builtin/packages/xeyes/package.py index cfea92fda37..599b08544b1 100644 --- a/var/spack/repos/builtin/packages/xeyes/package.py +++ b/var/spack/repos/builtin/packages/xeyes/package.py @@ -25,7 +25,7 @@ from spack import * -class Xeyes(Package): +class Xeyes(AutotoolsPackage): """xeyes - a follow the mouse X demo, using the X SHAPE extension""" homepage = "http://cgit.freedesktop.org/xorg/app/xeyes" @@ -41,9 +41,3 @@ class Xeyes(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py index 6c1dc8f37d9..5a2e10a7ba6 100644 --- a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py +++ b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py @@ -25,15 +25,10 @@ from spack import * -class Xf86bigfontproto(Package): +class Xf86bigfontproto(AutotoolsPackage): """X.org XF86BigFontProto protocol headers.""" homepage = "https://cgit.freedesktop.org/xorg/proto/xf86bigfontproto" url = "https://www.x.org/archive/individual/proto/xf86bigfontproto-1.2.0.tar.gz" version('1.2.0', '91b0733ff4cbe55808d96073258aa3d1') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xf86dga/package.py b/var/spack/repos/builtin/packages/xf86dga/package.py index 8add6fbca7e..1bd2feaaa38 100644 --- a/var/spack/repos/builtin/packages/xf86dga/package.py +++ b/var/spack/repos/builtin/packages/xf86dga/package.py @@ -25,7 +25,7 @@ from spack import * -class Xf86dga(Package): +class Xf86dga(AutotoolsPackage): """dga is a simple test client for the XFree86-DGA extension.""" homepage = "http://cgit.freedesktop.org/xorg/app/xf86dga" @@ -38,9 +38,3 @@ class Xf86dga(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xf86dgaproto/package.py b/var/spack/repos/builtin/packages/xf86dgaproto/package.py index 05b64c9534c..3c92582a3a3 100644 --- a/var/spack/repos/builtin/packages/xf86dgaproto/package.py +++ b/var/spack/repos/builtin/packages/xf86dgaproto/package.py @@ -25,15 +25,10 @@ from spack import * -class Xf86dgaproto(Package): +class Xf86dgaproto(AutotoolsPackage): """X.org XF86DGAProto protocol headers.""" homepage = "https://cgit.freedesktop.org/xorg/proto/xf86dgaproto" url = "https://www.x.org/archive/individual/proto/xf86dgaproto-2.1.tar.gz" version('2.1', '1fe79dc07857ad3e1fb8b8f2bdd70d1b') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xf86driproto/package.py b/var/spack/repos/builtin/packages/xf86driproto/package.py index 655d1bc60ba..8378eb9e5e9 100644 --- a/var/spack/repos/builtin/packages/xf86driproto/package.py +++ b/var/spack/repos/builtin/packages/xf86driproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Xf86driproto(Package): +class Xf86driproto(AutotoolsPackage): """XFree86 Direct Rendering Infrastructure Extension. This extension defines a protocol to allow user applications to access @@ -39,8 +39,3 @@ class Xf86driproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xf86miscproto/package.py b/var/spack/repos/builtin/packages/xf86miscproto/package.py index 4b7e2790771..4368eed3265 100644 --- a/var/spack/repos/builtin/packages/xf86miscproto/package.py +++ b/var/spack/repos/builtin/packages/xf86miscproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Xf86miscproto(Package): +class Xf86miscproto(AutotoolsPackage): """This package includes the protocol definitions of the "XFree86-Misc" extension to the X11 protocol. The "XFree86-Misc" extension is supported by the XFree86 X server and versions of the Xorg X server @@ -35,8 +35,3 @@ class Xf86miscproto(Package): url = "https://www.x.org/archive/individual/proto/xf86miscproto-0.9.3.tar.gz" version('0.9.3', 'c6432f04f84929c94fa05b3a466c489d') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xf86rushproto/package.py b/var/spack/repos/builtin/packages/xf86rushproto/package.py index bdd192970b6..05b9afa40a1 100644 --- a/var/spack/repos/builtin/packages/xf86rushproto/package.py +++ b/var/spack/repos/builtin/packages/xf86rushproto/package.py @@ -25,15 +25,10 @@ from spack import * -class Xf86rushproto(Package): +class Xf86rushproto(AutotoolsPackage): """X.org XF86RushProto protocol headers.""" homepage = "https://cgit.freedesktop.org/xorg/proto/xf86rushproto" url = "https://www.x.org/archive/individual/proto/xf86rushproto-1.1.2.tar.gz" version('1.1.2', '6a6389473332ace01146cccfef228576') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py index ece389f9e60..aaf1db44729 100644 --- a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py +++ b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Xf86vidmodeproto(Package): +class Xf86vidmodeproto(AutotoolsPackage): """XFree86 Video Mode Extension. This extension defines a protocol for dynamically configuring modelines @@ -38,8 +38,3 @@ class Xf86vidmodeproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xfd/package.py b/var/spack/repos/builtin/packages/xfd/package.py index 669cd83bf59..b7d1282b278 100644 --- a/var/spack/repos/builtin/packages/xfd/package.py +++ b/var/spack/repos/builtin/packages/xfd/package.py @@ -25,7 +25,7 @@ from spack import * -class Xfd(Package): +class Xfd(AutotoolsPackage): """xfd - display all the characters in a font using either the X11 core protocol or libXft2.""" @@ -44,9 +44,3 @@ class Xfd(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xfindproxy/package.py b/var/spack/repos/builtin/packages/xfindproxy/package.py index e4b83433c4e..af767be8a1a 100644 --- a/var/spack/repos/builtin/packages/xfindproxy/package.py +++ b/var/spack/repos/builtin/packages/xfindproxy/package.py @@ -25,7 +25,7 @@ from spack import * -class Xfindproxy(Package): +class Xfindproxy(AutotoolsPackage): """xfindproxy is used to locate available X11 proxy services. It utilizes the Proxy Management Protocol to communicate with a proxy @@ -45,9 +45,3 @@ class Xfindproxy(Package): depends_on('xproxymanagementprotocol', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xfontsel/package.py b/var/spack/repos/builtin/packages/xfontsel/package.py index 772ff8d5705..ca14f1460c1 100644 --- a/var/spack/repos/builtin/packages/xfontsel/package.py +++ b/var/spack/repos/builtin/packages/xfontsel/package.py @@ -25,7 +25,7 @@ from spack import * -class Xfontsel(Package): +class Xfontsel(AutotoolsPackage): """xfontsel application provides a simple way to display the X11 core protocol fonts known to your X server, examine samples of each, and retrieve the X Logical Font Description ("XLFD") full name for a font.""" @@ -42,9 +42,3 @@ class Xfontsel(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xfs/package.py b/var/spack/repos/builtin/packages/xfs/package.py index 72429dee90e..e5a71e4a278 100644 --- a/var/spack/repos/builtin/packages/xfs/package.py +++ b/var/spack/repos/builtin/packages/xfs/package.py @@ -25,7 +25,7 @@ from spack import * -class Xfs(Package): +class Xfs(AutotoolsPackage): """X Font Server.""" homepage = "http://cgit.freedesktop.org/xorg/app/xfs" @@ -40,9 +40,3 @@ class Xfs(Package): depends_on('xtrans', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xfsinfo/package.py b/var/spack/repos/builtin/packages/xfsinfo/package.py index b31ad1c1e05..9913537995e 100644 --- a/var/spack/repos/builtin/packages/xfsinfo/package.py +++ b/var/spack/repos/builtin/packages/xfsinfo/package.py @@ -25,7 +25,7 @@ from spack import * -class Xfsinfo(Package): +class Xfsinfo(AutotoolsPackage): """xfsinfo is a utility for displaying information about an X font server. It is used to examine the capabilities of a server, the predefined values for various parameters used in communicating between @@ -42,9 +42,3 @@ class Xfsinfo(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xfwp/package.py b/var/spack/repos/builtin/packages/xfwp/package.py index 5f073a88068..c199b50f6cf 100644 --- a/var/spack/repos/builtin/packages/xfwp/package.py +++ b/var/spack/repos/builtin/packages/xfwp/package.py @@ -25,7 +25,7 @@ from spack import * -class Xfwp(Package): +class Xfwp(AutotoolsPackage): """xfwp proxies X11 protocol connections, such as through a firewall.""" homepage = "http://cgit.freedesktop.org/xorg/app/xfwp" @@ -40,11 +40,5 @@ class Xfwp(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - # FIXME: fails with the error message: - # io.c:1039:7: error: implicit declaration of function 'swab' - - make() - make('install') + # FIXME: fails with the error message: + # io.c:1039:7: error: implicit declaration of function 'swab' diff --git a/var/spack/repos/builtin/packages/xgamma/package.py b/var/spack/repos/builtin/packages/xgamma/package.py index b8abec293a1..845f2a54e36 100644 --- a/var/spack/repos/builtin/packages/xgamma/package.py +++ b/var/spack/repos/builtin/packages/xgamma/package.py @@ -25,7 +25,7 @@ from spack import * -class Xgamma(Package): +class Xgamma(AutotoolsPackage): """xgamma allows X users to query and alter the gamma correction of a monitor via the X video mode extension (XFree86-VidModeExtension).""" @@ -40,9 +40,3 @@ class Xgamma(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xgc/package.py b/var/spack/repos/builtin/packages/xgc/package.py index 608e6e0360d..23ba36809e5 100644 --- a/var/spack/repos/builtin/packages/xgc/package.py +++ b/var/spack/repos/builtin/packages/xgc/package.py @@ -25,7 +25,7 @@ from spack import * -class Xgc(Package): +class Xgc(AutotoolsPackage): """xgc is an X11 graphics demo that shows various features of the X11 core protocol graphics primitives.""" @@ -41,9 +41,3 @@ class Xgc(Package): depends_on('bison', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xhost/package.py b/var/spack/repos/builtin/packages/xhost/package.py index f01c481ee7e..3928593611d 100644 --- a/var/spack/repos/builtin/packages/xhost/package.py +++ b/var/spack/repos/builtin/packages/xhost/package.py @@ -25,7 +25,7 @@ from spack import * -class Xhost(Package): +class Xhost(AutotoolsPackage): """xhost is used to manage the list of host names or user names allowed to make connections to the X server.""" @@ -41,9 +41,3 @@ class Xhost(Package): depends_on('xproto@7.0.22:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xineramaproto/package.py b/var/spack/repos/builtin/packages/xineramaproto/package.py index baededbb253..0a3374b1b6c 100644 --- a/var/spack/repos/builtin/packages/xineramaproto/package.py +++ b/var/spack/repos/builtin/packages/xineramaproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Xineramaproto(Package): +class Xineramaproto(AutotoolsPackage): """X Xinerama Extension. This is an X extension that allows multiple physical screens controlled @@ -38,8 +38,3 @@ class Xineramaproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xinit/package.py b/var/spack/repos/builtin/packages/xinit/package.py index 9f3bc092297..8bf7227cc8f 100644 --- a/var/spack/repos/builtin/packages/xinit/package.py +++ b/var/spack/repos/builtin/packages/xinit/package.py @@ -25,7 +25,7 @@ from spack import * -class Xinit(Package): +class Xinit(AutotoolsPackage): """The xinit program is used to start the X Window System server and a first client program on systems that are not using a display manager such as xdm.""" @@ -40,9 +40,3 @@ class Xinit(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xinput/package.py b/var/spack/repos/builtin/packages/xinput/package.py index 3c4fb35503d..b512d864958 100644 --- a/var/spack/repos/builtin/packages/xinput/package.py +++ b/var/spack/repos/builtin/packages/xinput/package.py @@ -25,7 +25,7 @@ from spack import * -class Xinput(Package): +class Xinput(AutotoolsPackage): """xinput is a utility to configure and test XInput devices.""" homepage = "http://cgit.freedesktop.org/xorg/app/xinput" @@ -42,9 +42,3 @@ class Xinput(Package): depends_on('inputproto@2.1.99.1:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xkbcomp/package.py b/var/spack/repos/builtin/packages/xkbcomp/package.py index e6e8875fa7a..315c49a22d2 100644 --- a/var/spack/repos/builtin/packages/xkbcomp/package.py +++ b/var/spack/repos/builtin/packages/xkbcomp/package.py @@ -25,7 +25,7 @@ from spack import * -class Xkbcomp(Package): +class Xkbcomp(AutotoolsPackage): """The X Keyboard (XKB) Extension essentially replaces the core protocol definition of a keyboard. The extension makes it possible to specify clearly and explicitly most aspects of keyboard behaviour on a per-key @@ -45,9 +45,3 @@ class Xkbcomp(Package): depends_on('bison', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xkbdata/package.py b/var/spack/repos/builtin/packages/xkbdata/package.py index fc84631e369..c67e047d71c 100644 --- a/var/spack/repos/builtin/packages/xkbdata/package.py +++ b/var/spack/repos/builtin/packages/xkbdata/package.py @@ -25,7 +25,7 @@ from spack import * -class Xkbdata(Package): +class Xkbdata(AutotoolsPackage): """The XKB data files for the various keyboard models, layouts, and locales.""" @@ -35,9 +35,3 @@ class Xkbdata(Package): version('1.0.1', 'a7e0fbc9cc84c621243c777694388064') depends_on('xkbcomp', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xkbevd/package.py b/var/spack/repos/builtin/packages/xkbevd/package.py index 462d989db2e..8793a3a38bd 100644 --- a/var/spack/repos/builtin/packages/xkbevd/package.py +++ b/var/spack/repos/builtin/packages/xkbevd/package.py @@ -25,7 +25,7 @@ from spack import * -class Xkbevd(Package): +class Xkbevd(AutotoolsPackage): """XKB event daemon demo.""" homepage = "http://cgit.freedesktop.org/xorg/app/xkbevd" @@ -39,9 +39,3 @@ class Xkbevd(Package): depends_on('bison', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xkbprint/package.py b/var/spack/repos/builtin/packages/xkbprint/package.py index dc92ac41264..100d4e44361 100644 --- a/var/spack/repos/builtin/packages/xkbprint/package.py +++ b/var/spack/repos/builtin/packages/xkbprint/package.py @@ -25,7 +25,7 @@ from spack import * -class Xkbprint(Package): +class Xkbprint(AutotoolsPackage): """xkbprint generates a printable or encapsulated PostScript description of an XKB keyboard description.""" @@ -40,9 +40,3 @@ class Xkbprint(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xkbutils/package.py b/var/spack/repos/builtin/packages/xkbutils/package.py index a4c6c975780..eef24a01455 100644 --- a/var/spack/repos/builtin/packages/xkbutils/package.py +++ b/var/spack/repos/builtin/packages/xkbutils/package.py @@ -25,7 +25,7 @@ from spack import * -class Xkbutils(Package): +class Xkbutils(AutotoolsPackage): """xkbutils is a collection of small utilities utilizing the XKeyboard (XKB) extension to the X11 protocol.""" @@ -42,9 +42,3 @@ class Xkbutils(Package): depends_on('inputproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xkeyboard-config/package.py b/var/spack/repos/builtin/packages/xkeyboard-config/package.py index 3ad7ea197c8..d7ae34e1e63 100644 --- a/var/spack/repos/builtin/packages/xkeyboard-config/package.py +++ b/var/spack/repos/builtin/packages/xkeyboard-config/package.py @@ -25,7 +25,7 @@ from spack import * -class XkeyboardConfig(Package): +class XkeyboardConfig(AutotoolsPackage): """This project provides a consistent, well-structured, frequently released, open source database of keyboard configuration data. The project is targeted to XKB-based systems.""" @@ -49,9 +49,3 @@ class XkeyboardConfig(Package): # gmsgfmt # perl@5.8.1: # perl XML::Parser - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xkill/package.py b/var/spack/repos/builtin/packages/xkill/package.py index 061d756eec5..e73fa3b9a29 100644 --- a/var/spack/repos/builtin/packages/xkill/package.py +++ b/var/spack/repos/builtin/packages/xkill/package.py @@ -25,7 +25,7 @@ from spack import * -class Xkill(Package): +class Xkill(AutotoolsPackage): """xkill is a utility for forcing the X server to close connections to clients. This program is very dangerous, but is useful for aborting programs that have displayed undesired windows on a user's screen.""" @@ -41,9 +41,3 @@ class Xkill(Package): depends_on('xproto@7.0.22:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xload/package.py b/var/spack/repos/builtin/packages/xload/package.py index 2fc91043b50..412c0aa0c43 100644 --- a/var/spack/repos/builtin/packages/xload/package.py +++ b/var/spack/repos/builtin/packages/xload/package.py @@ -25,7 +25,7 @@ from spack import * -class Xload(Package): +class Xload(AutotoolsPackage): """xload displays a periodically updating histogram of the system load average.""" @@ -42,9 +42,3 @@ class Xload(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xlogo/package.py b/var/spack/repos/builtin/packages/xlogo/package.py index 77f5bd3639c..8e1250cc69c 100644 --- a/var/spack/repos/builtin/packages/xlogo/package.py +++ b/var/spack/repos/builtin/packages/xlogo/package.py @@ -25,7 +25,7 @@ from spack import * -class Xlogo(Package): +class Xlogo(AutotoolsPackage): """The xlogo program simply displays the X Window System logo.""" homepage = "http://cgit.freedesktop.org/xorg/app/xlogo" @@ -45,9 +45,3 @@ class Xlogo(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xlsatoms/package.py b/var/spack/repos/builtin/packages/xlsatoms/package.py index 8722b57c8c1..5f0dc8adc7c 100644 --- a/var/spack/repos/builtin/packages/xlsatoms/package.py +++ b/var/spack/repos/builtin/packages/xlsatoms/package.py @@ -25,7 +25,7 @@ from spack import * -class Xlsatoms(Package): +class Xlsatoms(AutotoolsPackage): """xlsatoms lists the interned atoms defined on an X11 server.""" homepage = "http://cgit.freedesktop.org/xorg/app/xlsatoms" @@ -38,9 +38,3 @@ class Xlsatoms(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xlsclients/package.py b/var/spack/repos/builtin/packages/xlsclients/package.py index 3714de27069..fb232a1d0f5 100644 --- a/var/spack/repos/builtin/packages/xlsclients/package.py +++ b/var/spack/repos/builtin/packages/xlsclients/package.py @@ -25,7 +25,7 @@ from spack import * -class Xlsclients(Package): +class Xlsclients(AutotoolsPackage): """xlsclients is a utility for listing information about the client applications running on a X11 server.""" @@ -39,9 +39,3 @@ class Xlsclients(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xlsfonts/package.py b/var/spack/repos/builtin/packages/xlsfonts/package.py index 011ca5aa0e7..61696a5010f 100644 --- a/var/spack/repos/builtin/packages/xlsfonts/package.py +++ b/var/spack/repos/builtin/packages/xlsfonts/package.py @@ -25,7 +25,7 @@ from spack import * -class Xlsfonts(Package): +class Xlsfonts(AutotoolsPackage): """xlsfonts lists fonts available from an X server via the X11 core protocol.""" @@ -39,9 +39,3 @@ class Xlsfonts(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xmag/package.py b/var/spack/repos/builtin/packages/xmag/package.py index 27843299c86..65eb9e636be 100644 --- a/var/spack/repos/builtin/packages/xmag/package.py +++ b/var/spack/repos/builtin/packages/xmag/package.py @@ -25,7 +25,7 @@ from spack import * -class Xmag(Package): +class Xmag(AutotoolsPackage): """xmag displays a magnified snapshot of a portion of an X11 screen.""" homepage = "http://cgit.freedesktop.org/xorg/app/xmag" @@ -40,9 +40,3 @@ class Xmag(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xman/package.py b/var/spack/repos/builtin/packages/xman/package.py index 629a457edc0..0a3bf893eee 100644 --- a/var/spack/repos/builtin/packages/xman/package.py +++ b/var/spack/repos/builtin/packages/xman/package.py @@ -25,7 +25,7 @@ from spack import * -class Xman(Package): +class Xman(AutotoolsPackage): """xman is a graphical manual page browser using the Athena Widgets (Xaw) toolkit.""" @@ -40,9 +40,3 @@ class Xman(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xmessage/package.py b/var/spack/repos/builtin/packages/xmessage/package.py index 9b2ee5102ef..7481713c1b0 100644 --- a/var/spack/repos/builtin/packages/xmessage/package.py +++ b/var/spack/repos/builtin/packages/xmessage/package.py @@ -25,7 +25,7 @@ from spack import * -class Xmessage(Package): +class Xmessage(AutotoolsPackage): """xmessage displays a message or query in a window. The user can click on an "okay" button to dismiss it or can select one of several buttons to answer a question. xmessage can also exit after a specified time.""" @@ -40,9 +40,3 @@ class Xmessage(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xmh/package.py b/var/spack/repos/builtin/packages/xmh/package.py index cdde63e1494..1c7bc8a3469 100644 --- a/var/spack/repos/builtin/packages/xmh/package.py +++ b/var/spack/repos/builtin/packages/xmh/package.py @@ -25,7 +25,7 @@ from spack import * -class Xmh(Package): +class Xmh(AutotoolsPackage): """The xmh program provides a graphical user interface to the MH Message Handling System. To actually do things with your mail, it makes calls to the MH package.""" @@ -43,9 +43,3 @@ class Xmh(Package): depends_on('xbitmaps@1.1.0:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xmlto/package.py b/var/spack/repos/builtin/packages/xmlto/package.py index 0dbc81de32c..2ed392b9b86 100644 --- a/var/spack/repos/builtin/packages/xmlto/package.py +++ b/var/spack/repos/builtin/packages/xmlto/package.py @@ -25,7 +25,7 @@ from spack import * -class Xmlto(Package): +class Xmlto(AutotoolsPackage): """Utility xmlto is a simple shell script for converting XML files to various formats. It serves as easy to use command line frontend to make fine output without remembering many long options and searching for the syntax of the @@ -38,9 +38,3 @@ class Xmlto(Package): # FIXME: missing a lot of dependencies depends_on('libxslt') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xmodmap/package.py b/var/spack/repos/builtin/packages/xmodmap/package.py index abe40dbb437..323a16cbe8b 100644 --- a/var/spack/repos/builtin/packages/xmodmap/package.py +++ b/var/spack/repos/builtin/packages/xmodmap/package.py @@ -25,7 +25,7 @@ from spack import * -class Xmodmap(Package): +class Xmodmap(AutotoolsPackage): """The xmodmap program is used to edit and display the keyboard modifier map and keymap table that are used by client applications to convert event keycodes into keysyms. It is usually run from the user's @@ -42,9 +42,3 @@ class Xmodmap(Package): depends_on('xproto@7.0.25:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xmore/package.py b/var/spack/repos/builtin/packages/xmore/package.py index 8f8ccd71383..bb1f0ada276 100644 --- a/var/spack/repos/builtin/packages/xmore/package.py +++ b/var/spack/repos/builtin/packages/xmore/package.py @@ -25,7 +25,7 @@ from spack import * -class Xmore(Package): +class Xmore(AutotoolsPackage): """xmore - plain text display program for the X Window System.""" homepage = "http://cgit.freedesktop.org/xorg/app/xmore" @@ -38,9 +38,3 @@ class Xmore(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xorg-cf-files/package.py b/var/spack/repos/builtin/packages/xorg-cf-files/package.py index c7b22d904fb..a203911d0eb 100644 --- a/var/spack/repos/builtin/packages/xorg-cf-files/package.py +++ b/var/spack/repos/builtin/packages/xorg-cf-files/package.py @@ -25,7 +25,7 @@ from spack import * -class XorgCfFiles(Package): +class XorgCfFiles(AutotoolsPackage): """The xorg-cf-files package contains the data files for the imake utility, defining the known settings for a wide variety of platforms (many of which have not been verified or tested in over a decade), and for many of the @@ -37,8 +37,3 @@ class XorgCfFiles(Package): version('1.0.6', 'c0ce98377c70d95fb48e1bd856109bf8') depends_on('pkg-config@0.9.0:', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xorg-docs/package.py b/var/spack/repos/builtin/packages/xorg-docs/package.py index 5c320bba7b9..7bee98859da 100644 --- a/var/spack/repos/builtin/packages/xorg-docs/package.py +++ b/var/spack/repos/builtin/packages/xorg-docs/package.py @@ -25,7 +25,7 @@ from spack import * -class XorgDocs(Package): +class XorgDocs(AutotoolsPackage): """This package provides miscellaneous documentation for the X Window System that doesn't better fit into other packages. @@ -40,9 +40,3 @@ class XorgDocs(Package): depends_on('util-macros', type='build') depends_on('xorg-sgml-doctools@1.8:', type='build') depends_on('xmlto', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xorg-gtest/package.py b/var/spack/repos/builtin/packages/xorg-gtest/package.py index 6978d610d32..ede26149e1f 100644 --- a/var/spack/repos/builtin/packages/xorg-gtest/package.py +++ b/var/spack/repos/builtin/packages/xorg-gtest/package.py @@ -25,7 +25,7 @@ from spack import * -class XorgGtest(Package): +class XorgGtest(AutotoolsPackage): """Provides a Google Test environment for starting and stopping a X server for testing purposes.""" @@ -43,9 +43,3 @@ class XorgGtest(Package): # TODO: may be missing evemu package? # TODO: what is the difference between xorg-gtest and googletest packages? - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xorg-server/package.py b/var/spack/repos/builtin/packages/xorg-server/package.py index 9d9b49f9c26..fcc4918a02c 100644 --- a/var/spack/repos/builtin/packages/xorg-server/package.py +++ b/var/spack/repos/builtin/packages/xorg-server/package.py @@ -25,7 +25,7 @@ from spack import * -class XorgServer(Package): +class XorgServer(AutotoolsPackage): """X.Org Server is the free and open source implementation of the display server for the X Window System stewarded by the X.Org Foundation.""" @@ -100,9 +100,3 @@ class XorgServer(Package): # LIBUDEV="libudev >= 143" # LIBSELINUX="libselinux >= 2.0.86" # LIBDBUS="dbus-1 >= 1.0" - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py index c2e5797efa9..c9a5d4fd80f 100644 --- a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py +++ b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py @@ -25,7 +25,7 @@ from spack import * -class XorgSgmlDoctools(Package): +class XorgSgmlDoctools(AutotoolsPackage): """This package provides a common set of SGML entities and XML/CSS style sheets used in building/formatting the documentation provided in other X.Org packages.""" @@ -37,9 +37,3 @@ class XorgSgmlDoctools(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xphelloworld/package.py b/var/spack/repos/builtin/packages/xphelloworld/package.py index 6d445d69bed..ce593e746bf 100644 --- a/var/spack/repos/builtin/packages/xphelloworld/package.py +++ b/var/spack/repos/builtin/packages/xphelloworld/package.py @@ -25,7 +25,7 @@ from spack import * -class Xphelloworld(Package): +class Xphelloworld(AutotoolsPackage): """Xprint sample applications.""" homepage = "http://cgit.freedesktop.org/xorg/app/xphelloworld" @@ -46,9 +46,3 @@ class Xphelloworld(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xplsprinters/package.py b/var/spack/repos/builtin/packages/xplsprinters/package.py index 55de272a337..b8fdb084721 100644 --- a/var/spack/repos/builtin/packages/xplsprinters/package.py +++ b/var/spack/repos/builtin/packages/xplsprinters/package.py @@ -25,7 +25,7 @@ from spack import * -class Xplsprinters(Package): +class Xplsprinters(AutotoolsPackage): """List Xprint printers.""" homepage = "http://cgit.freedesktop.org/xorg/app/xplsprinters" @@ -39,9 +39,3 @@ class Xplsprinters(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xpr/package.py b/var/spack/repos/builtin/packages/xpr/package.py index 669693e0842..6e933e0994e 100644 --- a/var/spack/repos/builtin/packages/xpr/package.py +++ b/var/spack/repos/builtin/packages/xpr/package.py @@ -25,7 +25,7 @@ from spack import * -class Xpr(Package): +class Xpr(AutotoolsPackage): """xpr takes as input a window dump file produced by xwd and formats it for output on various types of printers.""" @@ -40,9 +40,3 @@ class Xpr(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py index 4578c3c1918..3f7de96c123 100644 --- a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py +++ b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py @@ -25,7 +25,7 @@ from spack import * -class Xprehashprinterlist(Package): +class Xprehashprinterlist(AutotoolsPackage): """Rehash list of Xprint printers.""" homepage = "http://cgit.freedesktop.org/xorg/app/xprehashprinterlist" @@ -38,9 +38,3 @@ class Xprehashprinterlist(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xprop/package.py b/var/spack/repos/builtin/packages/xprop/package.py index 0e1a591bcbf..ece50c92052 100644 --- a/var/spack/repos/builtin/packages/xprop/package.py +++ b/var/spack/repos/builtin/packages/xprop/package.py @@ -25,7 +25,7 @@ from spack import * -class Xprop(Package): +class Xprop(AutotoolsPackage): """xprop is a command line tool to display and/or set window and font properties of an X server.""" @@ -39,9 +39,3 @@ class Xprop(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xproto/package.py b/var/spack/repos/builtin/packages/xproto/package.py index 67074a69939..9e1b6d44742 100644 --- a/var/spack/repos/builtin/packages/xproto/package.py +++ b/var/spack/repos/builtin/packages/xproto/package.py @@ -25,7 +25,7 @@ from spack import * -class Xproto(Package): +class Xproto(AutotoolsPackage): """X Window System Core Protocol. This package provides the headers and specification documents defining @@ -42,8 +42,3 @@ class Xproto(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py index e5bfcb8cbcb..cec6a13f5f8 100644 --- a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py +++ b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py @@ -25,7 +25,7 @@ from spack import * -class Xproxymanagementprotocol(Package): +class Xproxymanagementprotocol(AutotoolsPackage): """The Proxy Management Protocol is an ICE based protocol that provides a way for application servers to easily locate proxy services available to them.""" @@ -34,8 +34,3 @@ class Xproxymanagementprotocol(Package): url = "https://www.x.org/archive/individual/proto/xproxymanagementprotocol-1.0.3.tar.gz" version('1.0.3', 'c4ab05a6174b4e9b6ae5b7cfbb6d718e') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xrandr/package.py b/var/spack/repos/builtin/packages/xrandr/package.py index 35e21c60477..6fdc4da4feb 100644 --- a/var/spack/repos/builtin/packages/xrandr/package.py +++ b/var/spack/repos/builtin/packages/xrandr/package.py @@ -25,7 +25,7 @@ from spack import * -class Xrandr(Package): +class Xrandr(AutotoolsPackage): """xrandr - primitive command line interface to X11 Resize, Rotate, and Reflect (RandR) extension.""" @@ -41,9 +41,3 @@ class Xrandr(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xrdb/package.py b/var/spack/repos/builtin/packages/xrdb/package.py index 93847a19a0b..c0374e7056d 100644 --- a/var/spack/repos/builtin/packages/xrdb/package.py +++ b/var/spack/repos/builtin/packages/xrdb/package.py @@ -25,7 +25,7 @@ from spack import * -class Xrdb(Package): +class Xrdb(AutotoolsPackage): """xrdb - X server resource database utility.""" homepage = "http://cgit.freedesktop.org/xorg/app/xrdb" @@ -39,9 +39,3 @@ class Xrdb(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xrefresh/package.py b/var/spack/repos/builtin/packages/xrefresh/package.py index f99810beea8..3a2c47b0865 100644 --- a/var/spack/repos/builtin/packages/xrefresh/package.py +++ b/var/spack/repos/builtin/packages/xrefresh/package.py @@ -25,7 +25,7 @@ from spack import * -class Xrefresh(Package): +class Xrefresh(AutotoolsPackage): """xrefresh - refresh all or part of an X screen.""" homepage = "http://cgit.freedesktop.org/xorg/app/xrefresh" @@ -38,9 +38,3 @@ class Xrefresh(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xrx/package.py b/var/spack/repos/builtin/packages/xrx/package.py index 4457c2f1646..eae7b76768f 100644 --- a/var/spack/repos/builtin/packages/xrx/package.py +++ b/var/spack/repos/builtin/packages/xrx/package.py @@ -25,7 +25,7 @@ from spack import * -class Xrx(Package): +class Xrx(AutotoolsPackage): """The remote execution (RX) service specifies a MIME format for invoking applications remotely, for example via a World Wide Web browser. This RX format specifies a syntax for listing network services required by @@ -49,9 +49,3 @@ class Xrx(Package): depends_on('xproxymanagementprotocol', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xscope/package.py b/var/spack/repos/builtin/packages/xscope/package.py index cf33c9767ea..04f00a5f5d2 100644 --- a/var/spack/repos/builtin/packages/xscope/package.py +++ b/var/spack/repos/builtin/packages/xscope/package.py @@ -25,7 +25,7 @@ from spack import * -class Xscope(Package): +class Xscope(AutotoolsPackage): """XSCOPE -- a program to monitor X11/Client conversations.""" homepage = "http://cgit.freedesktop.org/xorg/app/xscope" @@ -37,9 +37,3 @@ class Xscope(Package): depends_on('xtrans', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xset/package.py b/var/spack/repos/builtin/packages/xset/package.py index 462bea8cfe8..5ca84431fd6 100644 --- a/var/spack/repos/builtin/packages/xset/package.py +++ b/var/spack/repos/builtin/packages/xset/package.py @@ -25,7 +25,7 @@ from spack import * -class Xset(Package): +class Xset(AutotoolsPackage): """User preference utility for X.""" homepage = "http://cgit.freedesktop.org/xorg/app/xset" @@ -39,9 +39,3 @@ class Xset(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xsetmode/package.py b/var/spack/repos/builtin/packages/xsetmode/package.py index f05fd0f123b..8d39de26a45 100644 --- a/var/spack/repos/builtin/packages/xsetmode/package.py +++ b/var/spack/repos/builtin/packages/xsetmode/package.py @@ -25,7 +25,7 @@ from spack import * -class Xsetmode(Package): +class Xsetmode(AutotoolsPackage): """Set the mode for an X Input device.""" homepage = "http://cgit.freedesktop.org/xorg/app/xsetmode" @@ -38,9 +38,3 @@ class Xsetmode(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xsetpointer/package.py b/var/spack/repos/builtin/packages/xsetpointer/package.py index e9bf2fc9fe2..194ef186ae2 100644 --- a/var/spack/repos/builtin/packages/xsetpointer/package.py +++ b/var/spack/repos/builtin/packages/xsetpointer/package.py @@ -25,7 +25,7 @@ from spack import * -class Xsetpointer(Package): +class Xsetpointer(AutotoolsPackage): """Set an X Input device as the main pointer.""" homepage = "http://cgit.freedesktop.org/xorg/app/xsetpointer" @@ -39,9 +39,3 @@ class Xsetpointer(Package): depends_on('inputproto@1.4:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xsetroot/package.py b/var/spack/repos/builtin/packages/xsetroot/package.py index 3e62d41e9b2..8be0625ff1a 100644 --- a/var/spack/repos/builtin/packages/xsetroot/package.py +++ b/var/spack/repos/builtin/packages/xsetroot/package.py @@ -25,7 +25,7 @@ from spack import * -class Xsetroot(Package): +class Xsetroot(AutotoolsPackage): """xsetroot - root window parameter setting utility for X.""" homepage = "http://cgit.freedesktop.org/xorg/app/xsetroot" @@ -41,9 +41,3 @@ class Xsetroot(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xsm/package.py b/var/spack/repos/builtin/packages/xsm/package.py index 9d9c8963657..4d91dae1422 100644 --- a/var/spack/repos/builtin/packages/xsm/package.py +++ b/var/spack/repos/builtin/packages/xsm/package.py @@ -25,7 +25,7 @@ from spack import * -class Xsm(Package): +class Xsm(AutotoolsPackage): """X Session Manager.""" homepage = "http://cgit.freedesktop.org/xorg/app/xsm" @@ -41,9 +41,3 @@ class Xsm(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xstdcmap/package.py b/var/spack/repos/builtin/packages/xstdcmap/package.py index bb19bdff1ae..8c3a081ae76 100644 --- a/var/spack/repos/builtin/packages/xstdcmap/package.py +++ b/var/spack/repos/builtin/packages/xstdcmap/package.py @@ -25,7 +25,7 @@ from spack import * -class Xstdcmap(Package): +class Xstdcmap(AutotoolsPackage): """The xstdcmap utility can be used to selectively define standard colormap properties. It is intended to be run from a user's X startup script to create standard colormap definitions in order to facilitate sharing of @@ -42,9 +42,3 @@ class Xstdcmap(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xtrans/package.py b/var/spack/repos/builtin/packages/xtrans/package.py index ed46059d9d5..62f74b8cec0 100644 --- a/var/spack/repos/builtin/packages/xtrans/package.py +++ b/var/spack/repos/builtin/packages/xtrans/package.py @@ -25,7 +25,7 @@ from spack import * -class Xtrans(Package): +class Xtrans(AutotoolsPackage): """xtrans is a library of code that is shared among various X packages to handle network protocol transport in a modular fashion, allowing a single place to add new transport types. It is used by the X server, @@ -38,8 +38,3 @@ class Xtrans(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make('install') diff --git a/var/spack/repos/builtin/packages/xtrap/package.py b/var/spack/repos/builtin/packages/xtrap/package.py index 405ec2f8485..4a899b5111b 100644 --- a/var/spack/repos/builtin/packages/xtrap/package.py +++ b/var/spack/repos/builtin/packages/xtrap/package.py @@ -25,7 +25,7 @@ from spack import * -class Xtrap(Package): +class Xtrap(AutotoolsPackage): """XTrap sample clients.""" homepage = "http://cgit.freedesktop.org/xorg/app/xtrap" @@ -38,9 +38,3 @@ class Xtrap(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xts/package.py b/var/spack/repos/builtin/packages/xts/package.py index c3993cf3913..9dd3e4a05ce 100644 --- a/var/spack/repos/builtin/packages/xts/package.py +++ b/var/spack/repos/builtin/packages/xts/package.py @@ -25,7 +25,7 @@ from spack import * -class Xts(Package): +class Xts(AutotoolsPackage): """This is a revamped version of X Test Suite (XTS) which removes some of the ugliness of building and running the tests.""" @@ -50,11 +50,5 @@ class Xts(Package): depends_on('xset', type='build') depends_on('xdpyinfo', type='build') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - # FIXME: Crashes during compilation - # error: redeclaration of enumerator 'XawChainTop' - - make() - make('install') + # FIXME: Crashes during compilation + # error: redeclaration of enumerator 'XawChainTop' diff --git a/var/spack/repos/builtin/packages/xvidtune/package.py b/var/spack/repos/builtin/packages/xvidtune/package.py index ac5352df5f5..42dbc23aa00 100644 --- a/var/spack/repos/builtin/packages/xvidtune/package.py +++ b/var/spack/repos/builtin/packages/xvidtune/package.py @@ -25,7 +25,7 @@ from spack import * -class Xvidtune(Package): +class Xvidtune(AutotoolsPackage): """xvidtune is a client interface to the X server video mode extension (XFree86-VidModeExtension).""" @@ -42,9 +42,3 @@ class Xvidtune(Package): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xvinfo/package.py b/var/spack/repos/builtin/packages/xvinfo/package.py index 359f1f23dea..f7a275f452f 100644 --- a/var/spack/repos/builtin/packages/xvinfo/package.py +++ b/var/spack/repos/builtin/packages/xvinfo/package.py @@ -25,7 +25,7 @@ from spack import * -class Xvinfo(Package): +class Xvinfo(AutotoolsPackage): """xvinfo prints out the capabilities of any video adaptors associated with the display that are accessible through the X-Video extension.""" @@ -40,9 +40,3 @@ class Xvinfo(Package): depends_on('xproto@7.0.25:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xwd/package.py b/var/spack/repos/builtin/packages/xwd/package.py index d1f9ee1dfbf..9016e17915c 100644 --- a/var/spack/repos/builtin/packages/xwd/package.py +++ b/var/spack/repos/builtin/packages/xwd/package.py @@ -25,7 +25,7 @@ from spack import * -class Xwd(Package): +class Xwd(AutotoolsPackage): """xwd - dump an image of an X window.""" homepage = "http://cgit.freedesktop.org/xorg/app/xwd" @@ -39,9 +39,3 @@ class Xwd(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xwininfo/package.py b/var/spack/repos/builtin/packages/xwininfo/package.py index bba97ca6710..61aa86bf461 100644 --- a/var/spack/repos/builtin/packages/xwininfo/package.py +++ b/var/spack/repos/builtin/packages/xwininfo/package.py @@ -25,7 +25,7 @@ from spack import * -class Xwininfo(Package): +class Xwininfo(AutotoolsPackage): """xwininfo prints information about windows on an X server. Various information is displayed depending on which options are selected.""" @@ -40,9 +40,3 @@ class Xwininfo(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xwud/package.py b/var/spack/repos/builtin/packages/xwud/package.py index a30d55b7c68..9294156e161 100644 --- a/var/spack/repos/builtin/packages/xwud/package.py +++ b/var/spack/repos/builtin/packages/xwud/package.py @@ -25,7 +25,7 @@ from spack import * -class Xwud(Package): +class Xwud(AutotoolsPackage): """xwud allows X users to display in a window an image saved in a specially formatted dump file, such as produced by xwd.""" @@ -39,9 +39,3 @@ class Xwud(Package): depends_on('xproto@7.0.17:', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/xz/package.py b/var/spack/repos/builtin/packages/xz/package.py index 8b0609f50e1..c86c8c64b28 100644 --- a/var/spack/repos/builtin/packages/xz/package.py +++ b/var/spack/repos/builtin/packages/xz/package.py @@ -25,7 +25,7 @@ from spack import * -class Xz(Package): +class Xz(AutotoolsPackage): """XZ Utils is free general-purpose data compression software with high compression ratio. XZ Utils were written for POSIX-like systems, but also work on some not-so-POSIX systems. XZ Utils are @@ -35,11 +35,3 @@ class Xz(Package): version('5.2.0', '867cc8611760240ebf3440bd6e170bb9') version('5.2.2', 'f90c9a0c8b259aee2234c4e0d7fd70af') - - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) - - make() - if self.run_tests: - make('check') - make('install') diff --git a/var/spack/repos/builtin/packages/yasm/package.py b/var/spack/repos/builtin/packages/yasm/package.py index f14bdbcee71..e42ea6a5a77 100644 --- a/var/spack/repos/builtin/packages/yasm/package.py +++ b/var/spack/repos/builtin/packages/yasm/package.py @@ -25,7 +25,7 @@ from spack import * -class Yasm(Package): +class Yasm(AutotoolsPackage): """Yasm is a complete rewrite of the NASM-2.11.06 assembler. It supports the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes and outputs binary, ELF32 and ELF64 @@ -34,8 +34,3 @@ class Yasm(Package): url = "http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz" version('1.3.0', 'fc9e586751ff789b34b1f21d572d96af') - - def install(self, spec, prefix): - configure("--prefix=%s" % prefix) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/zeromq/package.py b/var/spack/repos/builtin/packages/zeromq/package.py index cafd3c21252..51fff7222d4 100644 --- a/var/spack/repos/builtin/packages/zeromq/package.py +++ b/var/spack/repos/builtin/packages/zeromq/package.py @@ -25,7 +25,7 @@ from spack import * -class Zeromq(Package): +class Zeromq(AutotoolsPackage): """ The ZMQ networking/concurrency library and core API """ homepage = "http://zguide.zeromq.org/" url = "http://download.zeromq.org/zeromq-4.1.2.tar.gz" @@ -40,8 +40,5 @@ class Zeromq(Package): depends_on("libsodium") depends_on("libsodium@:1.0.3", when='@:4.1.2') - def install(self, spec, prefix): - configure("--with-libsodium", "--prefix=%s" % prefix) - - make() - make("install") + def configure_args(self): + return ['--with-libsodium'] diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py index a70d307be93..7b9c485966d 100644 --- a/var/spack/repos/builtin/packages/zsh/package.py +++ b/var/spack/repos/builtin/packages/zsh/package.py @@ -25,7 +25,7 @@ from spack import * -class Zsh(Package): +class Zsh(AutotoolsPackage): """Zsh is a shell designed for interactive use, although it is also a powerful scripting language. Many of the useful features of bash, ksh, and tcsh were incorporated into zsh; many original features were added. @@ -37,9 +37,3 @@ class Zsh(Package): version('5.1.1', checksum='8ba28a9ef82e40c3a271602f18343b2f') depends_on("pcre") - - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - - make() - make("install") From 9b7001fda1d9738a65da3e02e5a5014391bd7850 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 18 Jan 2017 17:54:39 -0500 Subject: [PATCH 0015/2394] OpenMPI: Update auto-detection of Verbs library location (#2124) --- var/spack/repos/builtin/packages/openmpi/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 754cc8d93e0..2c6b6d68ac6 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -39,6 +39,9 @@ def _verbs_dir(): # Remove executable name and "bin" directory path = os.path.dirname(path) path = os.path.dirname(path) + # There's usually no "/include" on Unix; use "/usr/include" instead + if path == "/": + path = "/usr" return path except: return None From 4dad5aab8402f787afd8f9e440ac4bbbecd4b80f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 18 Jan 2017 20:49:48 -0600 Subject: [PATCH 0016/2394] Add spack edit option for build systems (#2865) --- lib/spack/spack/__init__.py | 1 + lib/spack/spack/cmd/edit.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 34a7b01616a..0b1934112ee 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -46,6 +46,7 @@ module_path = join_path(lib_path, "spack") platform_path = join_path(module_path, 'platforms') compilers_path = join_path(module_path, "compilers") +build_systems_path = join_path(module_path, 'build_systems') operating_system_path = join_path(module_path, 'operating_systems') test_path = join_path(module_path, "test") hooks_path = join_path(module_path, "hooks") diff --git a/lib/spack/spack/cmd/edit.py b/lib/spack/spack/cmd/edit.py index 77f23333b62..23fd307ab46 100644 --- a/lib/spack/spack/cmd/edit.py +++ b/lib/spack/spack/cmd/edit.py @@ -69,6 +69,10 @@ def setup_parser(subparser): # Various types of Spack files that can be edited # Edits package files by default + excl_args.add_argument( + '-b', '--build-system', dest='path', action='store_const', + const=spack.build_systems_path, + help="Edit the build system with the supplied name.") excl_args.add_argument( '-c', '--command', dest='path', action='store_const', const=spack.cmd.command_path, From f511f7b558c7cfe36265b9caf148808dcc849335 Mon Sep 17 00:00:00 2001 From: Quinn Date: Thu, 19 Jan 2017 08:26:39 -0600 Subject: [PATCH 0017/2394] Adding some fixes to packages that use `configure_args` function without setting spec set or directly referencing it (#2868) * Adding 'self.' to the spec call for configure_args * Updating this to set spec to self.spec * More updates to the configure_args spec calls * Another spec issue * Another spec issue. * And another spec issue * Switching cmor back to self.spec. --- var/spack/repos/builtin/packages/emacs/package.py | 1 + var/spack/repos/builtin/packages/libcerf/package.py | 1 + var/spack/repos/builtin/packages/libevent/package.py | 1 + var/spack/repos/builtin/packages/libxml2/package.py | 1 + 4 files changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py index 0075c397b64..990ffd03cd7 100644 --- a/var/spack/repos/builtin/packages/emacs/package.py +++ b/var/spack/repos/builtin/packages/emacs/package.py @@ -48,6 +48,7 @@ class Emacs(AutotoolsPackage): depends_on('gtkplus+X', when='+X toolkit=gtk') def configure_args(self): + spec = self.spec args = [] toolkit = spec.variants['toolkit'].value if '+X' in spec: diff --git a/var/spack/repos/builtin/packages/libcerf/package.py b/var/spack/repos/builtin/packages/libcerf/package.py index 3bc8ddbd169..82637431d64 100644 --- a/var/spack/repos/builtin/packages/libcerf/package.py +++ b/var/spack/repos/builtin/packages/libcerf/package.py @@ -38,6 +38,7 @@ class Libcerf(AutotoolsPackage): version('1.3', 'b3504c467204df71e62aeccf73a25612') def configure_args(self): + spec = self.spec options = [] # Clang reports unused functions as errors, see # http://clang.debian.net/status.php?version=3.8.1&key=UNUSED_FUNCTION diff --git a/var/spack/repos/builtin/packages/libevent/package.py b/var/spack/repos/builtin/packages/libevent/package.py index 86aeddaf20b..415e905c125 100644 --- a/var/spack/repos/builtin/packages/libevent/package.py +++ b/var/spack/repos/builtin/packages/libevent/package.py @@ -53,6 +53,7 @@ class Libevent(AutotoolsPackage): depends_on('openssl', when='+openssl') def configure_args(self): + spec = self.spec configure_args = [] if '+openssl' in spec: configure_args.append('--enable-openssl') diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 29a83ee35e4..470998d8826 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -46,6 +46,7 @@ class Libxml2(AutotoolsPackage): depends_on('pkg-config@0.9.0:', type='build') def configure_args(self): + spec = self.spec if '+python' in spec: python_args = [ '--with-python={0}'.format(spec['python'].prefix), From c350bd12163c7a3886a573b0d9e777395efe22e9 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 19 Jan 2017 20:24:09 +0100 Subject: [PATCH 0018/2394] dealii: fix config without mpi (#2856) * dealii: fix config without mpi * dealii: add check of variants --- var/spack/repos/builtin/packages/dealii/package.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 66267b2d9a7..ca26edfb400 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -115,11 +115,19 @@ class Dealii(CMakePackage): depends_on("slepc@:3.6.3", when='@:8.4.1+slepc+petsc+mpi~int64') depends_on("trilinos", when='+trilinos+mpi') + # check that the combination of variants makes sense + def variants_check(self): + for p in ['+arpack', '+hdf5', '+netcdf', '+p4est', '+petsc', + '+slepc', '+trilinos']: + if p in self.spec and '+mpi' not in self.spec: + raise RuntimeError('The ' + p + ' variant requires +mpi') + def build_type(self): # CMAKE_BUILD_TYPE should be DebugRelease | Debug | Release return 'DebugRelease' def cmake_args(self): + self.variants_check() spec = self.spec options = [] @@ -192,7 +200,7 @@ def cmake_args(self): ]) # arpack - if '+arpack' in spec: + if '+arpack' in spec and '+mpi' in spec: options.extend([ '-DARPACK_DIR=%s' % spec['arpack-ng'].prefix, '-DDEAL_II_WITH_ARPACK=ON', @@ -204,7 +212,7 @@ def cmake_args(self): ]) # since Netcdf is spread among two, need to do it by hand: - if '+netcdf' in spec: + if '+netcdf' in spec and '+mpi' in spec: # take care of lib64 vs lib installed lib locations: if os.path.isdir(spec['netcdf-cxx'].prefix.lib): netcdfcxx_lib_dir = spec['netcdf-cxx'].prefix.lib From 1223e43827eb229ca32d83e1b3950a71fe08d29d Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 20 Jan 2017 19:11:11 +0100 Subject: [PATCH 0019/2394] p4est: add 2.0 (#2890) --- var/spack/repos/builtin/packages/p4est/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/p4est/package.py b/var/spack/repos/builtin/packages/p4est/package.py index 93a08c4f2d7..ef3f2f54d19 100644 --- a/var/spack/repos/builtin/packages/p4est/package.py +++ b/var/spack/repos/builtin/packages/p4est/package.py @@ -31,6 +31,7 @@ class P4est(AutotoolsPackage): homepage = "http://www.p4est.org" url = "http://p4est.github.io/release/p4est-1.1.tar.gz" + version('2.0', 'c522c5b69896aab39aa5a81399372a19a6b03fc6200d2d5d677d9a22fe31029a') version('1.1', '37ba7f4410958cfb38a2140339dbf64f') # build dependencies From a0c4fe247faeefa7c74fb295d079cf55b6e6b36e Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 20 Jan 2017 13:12:09 -0500 Subject: [PATCH 0020/2394] OpenSSL: Update to version 1.1.0c (#2885) --- .../repos/builtin/packages/openssl/package.py | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 12b5ed9c522..5a413111dd9 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -28,14 +28,18 @@ class Openssl(Package): - """The OpenSSL Project is a collaborative effort to develop a - robust, commercial-grade, full-featured, and Open Source - toolkit implementing the Secure Sockets Layer (SSL v2/v3) and - Transport Layer Security (TLS v1) protocols as well as a - full-strength general purpose cryptography library.""" + """OpenSSL is an open source project that provides a robust, + commercial-grade, and full-featured toolkit for the Transport + Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. + It is also a general-purpose cryptography library.""" homepage = "http://www.openssl.org" url = "ftp://openssl.org/source/openssl-1.0.1h.tar.gz" + # Note: Version 1.0.2 is the "long-term support" version that will + # remain supported until 2019. We could thus make this version the + # preferred version, if we find that many packages cannot handle + # version 1.1. + version('1.1.0c', '601e8191f72b18192a937ecf1a800f3f') version('1.0.2j', '96322138f0b69e61b7212bc53d5e912b') version('1.0.2i', '678374e63f8df456a697d3e5e5a931fb') version('1.0.2h', '9392e65072ce4b614c1392eefc1f23d0') @@ -49,6 +53,8 @@ class Openssl(Package): version('1.0.1h', '8d6d684a9430d5cc98a62a5d8fbda8cf') depends_on("zlib") + # Also requires make and perl + parallel = False def handle_fetch_error(self, error): @@ -67,7 +73,9 @@ def install(self, spec, prefix): # where it happens automatically?) env['KERNEL_BITS'] = '64' - options = ['zlib', 'no-krb5', 'shared'] + options = ['zlib', 'shared'] + if spec.satisfies('@1.0'): + options.append('no-krb5') config = Executable('./config') config('--prefix=%s' % prefix, @@ -80,4 +88,5 @@ def install(self, spec, prefix): filter_file(r'-arch x86_64', '', 'Makefile') make() + make('test') # 'VERBOSE=1' make('install') From 042307d5f1c47114ffdcc596d48dc6e15d93d6e9 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Fri, 20 Jan 2017 19:17:46 +0100 Subject: [PATCH 0021/2394] Update c-blosc to 1.11.1 (#2877) --- var/spack/repos/builtin/packages/c-blosc/package.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/c-blosc/package.py b/var/spack/repos/builtin/packages/c-blosc/package.py index 4ebf3811a58..e7695c67c78 100644 --- a/var/spack/repos/builtin/packages/c-blosc/package.py +++ b/var/spack/repos/builtin/packages/c-blosc/package.py @@ -31,13 +31,14 @@ class CBlosc(Package): """Blosc, an extremely fast, multi-threaded, meta-compressor library""" homepage = "http://www.blosc.org" - url = "https://github.com/Blosc/c-blosc/archive/v1.9.2.tar.gz" + url = "https://github.com/Blosc/c-blosc/archive/v1.11.1.tar.gz" - version('1.9.2', 'dd2d83069d74b36b8093f1c6b49defc5') - version('1.9.1', '7d708d3daadfacf984a87b71b1734ce2') - version('1.9.0', 'e4c1dc8e2c468e5cfa2bf05eeee5357a') - version('1.8.1', 'd73d5be01359cf271e9386c90dcf5b05') - version('1.8.0', '5b92ecb287695ba20cc33d30bf221c4f') + version('1.11.1', 'e236550640afa50155f3881f2d300206') + version('1.9.2', 'dd2d83069d74b36b8093f1c6b49defc5') + version('1.9.1', '7d708d3daadfacf984a87b71b1734ce2') + version('1.9.0', 'e4c1dc8e2c468e5cfa2bf05eeee5357a') + version('1.8.1', 'd73d5be01359cf271e9386c90dcf5b05') + version('1.8.0', '5b92ecb287695ba20cc33d30bf221c4f') depends_on("cmake", type='build') depends_on("snappy") From bc37a1012c3deeb69f06a395d2e4fcad06546a25 Mon Sep 17 00:00:00 2001 From: Jason Sarich Date: Fri, 20 Jan 2017 12:18:58 -0600 Subject: [PATCH 0022/2394] let pflotran depend on hdf 1.8.12 and above (#2875) --- var/spack/repos/builtin/packages/pflotran/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/pflotran/package.py b/var/spack/repos/builtin/packages/pflotran/package.py index 347f792453e..fc706930410 100644 --- a/var/spack/repos/builtin/packages/pflotran/package.py +++ b/var/spack/repos/builtin/packages/pflotran/package.py @@ -38,7 +38,7 @@ class Pflotran(AutotoolsPackage): commmit='4734cf5e606b') depends_on('mpi') - depends_on('hdf5@1.8.12+mpi+fortran') + depends_on('hdf5@1.8.12:+mpi+fortran') depends_on('petsc@develop+hdf5+metis',when='@develop') depends_on('petsc@for-pflotran-0.1.0+hdf5+metis',when='@0.1.0') From cade0181fd0d1d0dfe018bb848bbd0f309e5c825 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 20 Jan 2017 13:22:59 -0500 Subject: [PATCH 0023/2394] Spack: Correct fix_darwin_install_name (#2886) Previously, fix_darwin_install_name would only handle dependencies that have no path set, and it ignore dependencies that have the build directory as path baked in. Catch this, and replace it by the install directory. --- lib/spack/llnl/util/filesystem.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 31e09f2fe61..79f15f9a214 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -455,7 +455,12 @@ def fix_darwin_install_name(path): # fix all dependencies: for dep in deps: for loc in libs: - if dep == os.path.basename(loc): + # We really want to check for either + # dep == os.path.basename(loc) or + # dep == join_path(builddir, os.path.basename(loc)), + # but we don't know builddir (nor how symbolic links look + # in builddir). We thus only compare the basenames. + if os.path.basename(dep) == os.path.basename(loc): subprocess.Popen( ["install_name_tool", "-change", dep, loc, lib], stdout=subprocess.PIPE).communicate()[0] From 56cdb1d1abee074d99534c67dc7dc05431c983aa Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 20 Jan 2017 13:23:23 -0500 Subject: [PATCH 0024/2394] swig: Update version (#2871) --- var/spack/repos/builtin/packages/swig/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/swig/package.py b/var/spack/repos/builtin/packages/swig/package.py index 77f2c69772e..3bc1f9ac2ad 100644 --- a/var/spack/repos/builtin/packages/swig/package.py +++ b/var/spack/repos/builtin/packages/swig/package.py @@ -38,6 +38,7 @@ class Swig(AutotoolsPackage): homepage = "http://www.swig.org" url = "http://prdownloads.sourceforge.net/swig/swig-3.0.8.tar.gz" + version('3.0.11', '13732eb0f1ab2123d180db8425c1edea') version('3.0.10', 'bb4ab8047159469add7d00910e203124') version('3.0.8', 'c96a1d5ecb13d38604d7e92148c73c97') version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41') From 4e390e66892ebf72621ad14ea1a0699daf854083 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 20 Jan 2017 13:23:53 -0500 Subject: [PATCH 0025/2394] m4: Update version (#2872) --- var/spack/repos/builtin/packages/m4/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index ebfbc28612e..415c55b21a5 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -31,6 +31,7 @@ class M4(AutotoolsPackage): homepage = "https://www.gnu.org/software/m4/m4.html" url = "ftp://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz" + version('1.4.18', 'a077779db287adf4e12a035029002d28') version('1.4.17', 'a5e9954b1dae036762f7b13673a2cf76') patch('pgi.patch', when='@1.4.17') From adac3ebbf9fd764f27b7f63b85b3250226a08c0f Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 20 Jan 2017 13:28:07 -0500 Subject: [PATCH 0026/2394] cfitsio: Allow building as shared libraries (#2887) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * cfitsio: Allow building as shared libraries - Allow building as shared libraries - Also add optional bzip2 variant - Also update to newest version This requires the recent correction to “fix_darwin_install_name”. * cfitsio: Simplify code, default to +shared --- .../repos/builtin/packages/cfitsio/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/var/spack/repos/builtin/packages/cfitsio/package.py b/var/spack/repos/builtin/packages/cfitsio/package.py index 6853c33119c..8c2ae95e8e0 100644 --- a/var/spack/repos/builtin/packages/cfitsio/package.py +++ b/var/spack/repos/builtin/packages/cfitsio/package.py @@ -32,8 +32,31 @@ class Cfitsio(AutotoolsPackage): homepage = 'http://heasarc.gsfc.nasa.gov/fitsio/' + version('3.410', '8a4a66fcdd816aae41768baa0b025552') version('3.370', 'abebd2d02ba5b0503c633581e3bfa116') + variant('bzip2', default=True, description='Enable bzip2 support') + variant('shared', default=True, description='Build shared libraries') + + depends_on('bzip2', when='+bzip2') + def url_for_version(self, version): url = 'ftp://heasarc.gsfc.nasa.gov/software/fitsio/c/cfitsio{0}.tar.gz' return url.format(version.joined) + + def configure_args(self): + spec = self.spec + extra_args = [] + if '+bzip2' in spec: + extra_args.append('--with-bzip2=%s' % spec['bzip2'].prefix), + return extra_args + + @property + def build_targets(self): + targets = ['all'] + + # Build shared if variant is set. + if '+shared' in self.spec: + targets += ['shared'] + + return targets From 3e8106955b9077bd9b95837b63de4577d896c194 Mon Sep 17 00:00:00 2001 From: John Wohlbier Date: Fri, 20 Jan 2017 13:34:40 -0500 Subject: [PATCH 0027/2394] For qt3, append to LD_LIBRARY_PATH, do not nuke it (#2862) * libmonitor does not exist at http://libmonitor.googlecode.com/svn/trunk/ Change location to HPCToolkit version at github. Specify the hash corresponding to the 20130218 version. * When xcb is version 1.11, patch the configure file so it doesn't trip on pthread-stubs and xau. * Add os.getcwd()/lib to LD_LIBRARY_PATH, instead of nuking existing LD_LIBRARY_PATH. --- var/spack/repos/builtin/packages/qt/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 95698018fa4..447af5f1af8 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -227,7 +227,7 @@ def common_config_args(self): @when('@3') def configure(self): # A user reported that this was necessary to link Qt3 on ubuntu - os.environ['LD_LIBRARY_PATH'] = os.getcwd() + '/lib' + os.environ['LD_LIBRARY_PATH'] += os.pathsep + os.getcwd() + '/lib' configure('-prefix', self.prefix, '-v', '-thread', From 19699a7607689d11dd66b21b8755e92d98c2b494 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 20 Jan 2017 16:57:15 -0500 Subject: [PATCH 0028/2394] libevent: Properly declare OpenSSL dependency version bounds (#2888) * libevent: Properly declare OpenSSL dependency version bounds * libevent: Handle ~openssl variant correctly --- var/spack/repos/builtin/packages/libevent/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libevent/package.py b/var/spack/repos/builtin/packages/libevent/package.py index 415e905c125..f06c46a7159 100644 --- a/var/spack/repos/builtin/packages/libevent/package.py +++ b/var/spack/repos/builtin/packages/libevent/package.py @@ -48,9 +48,10 @@ class Libevent(AutotoolsPackage): version('2.0.13', 'af786b4b3f790c9d3279792edf7867fc') version('2.0.12', '42986228baf95e325778ed328a93e070') + # Does not build with OpenSSL 1.1.0 variant('openssl', default=True, description="Build with encryption enabled at the libevent level.") - depends_on('openssl', when='+openssl') + depends_on('openssl @:1.0', when='+openssl') def configure_args(self): spec = self.spec @@ -58,6 +59,6 @@ def configure_args(self): if '+openssl' in spec: configure_args.append('--enable-openssl') else: - configure_args.append('--enable-openssl') + configure_args.append('--disable-openssl') return configure_args From 6bc7be9217f62169e689f9a38fca6c47a2bc2873 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Mon, 23 Jan 2017 09:34:50 -0800 Subject: [PATCH 0029/2394] updated config file name for Python 3.6 (#2881) --- .../repos/builtin/packages/python/package.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 348b075e2f4..9a04aaf9812 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -148,6 +148,16 @@ def install(self, spec, prefix): make() make('install') + self.sysconfigfilename = '_sysconfigdata.py' + if spec.satisfies('@3.6:'): + # Python 3.6.0 renamed the sys config file + python3 = os.path.join(prefix.bin, + 'python{0}'.format(self.version.up_to(1))) + python = Executable(python3) + sc = 'import sysconfig; print(sysconfig._get_sysconfigdata_name())' + cf = python('-c', sc, output=str).strip('\n') + self.sysconfigfilename = '{0}.py'.format(cf) + self._save_distutil_vars(prefix) self.filter_compilers(prefix) @@ -207,12 +217,11 @@ def _save_distutil_vars(self, prefix): input_filename = None for filename in [join_path(lib_dir, 'python{0}'.format(self.version.up_to(2)), - '_sysconfigdata.py') + self.sysconfigfilename) for lib_dir in [prefix.lib, prefix.lib64]]: if os.path.isfile(filename): input_filename = filename break - if not input_filename: return @@ -301,7 +310,7 @@ def filter_compilers(self, prefix): config_dirname = 'config-{0}m'.format( self.version.up_to(2)) if self.spec.satisfies('@3:') else 'config' - rel_filenames = ['_sysconfigdata.py', + rel_filenames = [self.sysconfigfilename, join_path(config_dirname, 'Makefile')] abs_filenames = [join_path(dirname, filename) for dirname in From dae353374eb9e2a3561ea590063fad51ddaafe2d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 23 Jan 2017 11:48:49 -0600 Subject: [PATCH 0030/2394] Simplify unit tests listed in Contribution Guide (#2904) * Simplify unit tests listed in Contribution Guide * Use long name for option flags --- lib/spack/docs/contribution_guide.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/spack/docs/contribution_guide.rst b/lib/spack/docs/contribution_guide.rst index 4abf97ef924..e9cfe1fa540 100644 --- a/lib/spack/docs/contribution_guide.rst +++ b/lib/spack/docs/contribution_guide.rst @@ -75,7 +75,10 @@ This allows you to develop iteratively: make a change, test that change, make another change, test that change, etc. To get a list of all available unit tests, run: -.. command-output:: spack test --collect-only +.. command-output:: spack test --list + +A more detailed list of available unit tests can be found by running +``spack test --long-list``. Unit tests are crucial to making sure bugs aren't introduced into Spack. If you are modifying core Spack libraries or adding new functionality, please consider From 7fd936735cfecba6fd250bf328d85ebf1de4cd58 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Mon, 23 Jan 2017 19:18:51 +0100 Subject: [PATCH 0031/2394] Add zstd package (#2897) --- .../repos/builtin/packages/zstd/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/zstd/package.py diff --git a/var/spack/repos/builtin/packages/zstd/package.py b/var/spack/repos/builtin/packages/zstd/package.py new file mode 100644 index 00000000000..e5e34591f77 --- /dev/null +++ b/var/spack/repos/builtin/packages/zstd/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Zstd(Package): + """Zstandard, or zstd as short version, is a fast lossless compression + algorithm, targeting real-time compression scenarios at zlib-level and + better compression ratios.""" + + homepage = "http://facebook.github.io/zstd/" + url = "https://github.com/facebook/zstd/archive/v1.1.2.tar.gz" + + version('1.1.2', '4c57a080d194bdaac83f2d3251fc7ffc') + + def install(self, spec, prefix): + make() + if self.run_tests: + make('test') + make('install', 'PREFIX={0}'.format(prefix)) From 162be154d29a19407722611519524a7384affe8e Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 23 Jan 2017 10:20:54 -0800 Subject: [PATCH 0032/2394] Fix configure's zlib version check (#2901) * Fix configure's zlib version check R wants a version of zlib that is 1.2.5 or newer. The version checking code just does a lexicographic comparison of the first 5 characters of the string, so it seesthat the latest zlib version, 1.2.10, as 1.2.1 and fails. This patch changes the comparison to use zlibs' hex ZLIB_VERNUM so that it does not suffer from this problem. A version of this patch is wending it's way through the R comunity community and will/should be included in a future release. I tested the patch with the current R, 3.3.1. * Tighten zlib dependency version (>= 1.2.5) * Convert patch to level=1 format. --- var/spack/repos/builtin/packages/r/package.py | 4 ++- var/spack/repos/builtin/packages/r/zlib.patch | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/r/zlib.patch diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 3fed62d1fa7..590c5b2feba 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -63,7 +63,7 @@ class R(Package): depends_on('ncurses') depends_on('icu4c') depends_on('glib') - depends_on('zlib@:1.2.8') + depends_on('zlib@1.2.5:') depends_on('bzip2') depends_on('libtiff') depends_on('jpeg') @@ -82,6 +82,8 @@ class R(Package): depends_on('pcre') depends_on('jdk') + patch('zlib.patch', when='@:3.3.1') + @property def etcdir(self): return join_path(prefix, 'rlib', 'R', 'etc') diff --git a/var/spack/repos/builtin/packages/r/zlib.patch b/var/spack/repos/builtin/packages/r/zlib.patch new file mode 100644 index 00000000000..673d5352fac --- /dev/null +++ b/var/spack/repos/builtin/packages/r/zlib.patch @@ -0,0 +1,29 @@ +*** a/configure 2017-01-21 21:48:35.077000000 +0000 +--- b/configure 2017-01-21 21:50:50.700000000 +0000 +*************** +*** 35496,35505 **** + #include + #include + int main() { +! #ifdef ZLIB_VERSION +! /* Work around Debian bug: it uses 1.2.3.4 even though there was no such +! version on the master site zlib.net */ +! exit(strncmp(ZLIB_VERSION, "1.2.5", 5) < 0); + #else + exit(1); + #endif +--- 35496,35509 ---- + #include + #include + int main() { +! /* Checking ZLIB_VERNUM trick learned here: +! * https://github.com/TransitApp/protobuf/blob/master/configure.ac#L95 +! */ +! #ifdef ZLIB_VERNUM +! if (ZLIB_VERNUM < 0x1250) { +! exit(1); +! } +! exit(0); + #else + exit(1); + #endif From 3686d0ceb324be8f830b561a085981bc6e2f7914 Mon Sep 17 00:00:00 2001 From: Jason Sarich Date: Mon, 23 Jan 2017 12:24:21 -0600 Subject: [PATCH 0033/2394] have trilinos search for static libraries first when not using shared variant (#2896) --- var/spack/repos/builtin/packages/trilinos/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 4b3412ce7af..aed722814b1 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -157,6 +157,10 @@ def cmake_args(self): 'DEBUG' if '+debug' in spec else 'RELEASE'), '-DBUILD_SHARED_LIBS:BOOL=%s' % ( 'ON' if '+shared' in spec else 'OFF'), + '-DTPL_FIND_SHARED_LIBS:BOOL=%s' % ( + 'ON' if '+shared' in spec else 'OFF'), + '-DTrilinos_LINK_SEARCH_START_STATIC:BOOL=%s' % ( + 'OFF' if '+shared' in spec else 'ON'), '-DTPL_ENABLE_MPI:BOOL=ON', '-DMPI_BASE_DIR:PATH=%s' % spec['mpi'].prefix, '-DTPL_ENABLE_BLAS=ON', From 72f2f845e7247530c76926f9ad27bcdbece83c31 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Mon, 23 Jan 2017 19:26:21 +0100 Subject: [PATCH 0034/2394] Update lz4 to 1.7.5 (#2878) --- var/spack/repos/builtin/packages/lz4/package.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/lz4/package.py b/var/spack/repos/builtin/packages/lz4/package.py index de7e566e709..85299419196 100644 --- a/var/spack/repos/builtin/packages/lz4/package.py +++ b/var/spack/repos/builtin/packages/lz4/package.py @@ -31,13 +31,22 @@ class Lz4(Package): an extremely fast decoder, with speed in multiple GB/s per core, typically reaching RAM speed limits on multi-core systems.""" - homepage = "http://cyan4973.github.io/lz4/" - url = "https://github.com/Cyan4973/lz4/archive/r131.tar.gz" + homepage = "http://lz4.github.io/lz4/" + url = "https://github.com/lz4/lz4/archive/v1.7.5.tar.gz" - version('131', '42b09fab42331da9d3fb33bd5c560de9') + version('1.7.5', 'c9610c5ce97eb431dddddf0073d919b9') + version('1.3.1', '42b09fab42331da9d3fb33bd5c560de9') # depends_on('valgrind', type='test') + def url_for_version(self, version): + url = "https://github.com/lz4/lz4/archive" + + if version > Version('1.3.1'): + return "{0}/v{1}.tar.gz".format(url, version) + else: + return "{0}/r{1}.tar.gz".format(url, version.joined) + def install(self, spec, prefix): make() if self.run_tests: From a8e1d78881ce09f3c3d3a22b84dca4a0630d49e5 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 23 Jan 2017 22:55:39 +0100 Subject: [PATCH 0035/2394] documentation: build-system phases + build-time tests (#2780) * documentation: reworked packaging guide to add build-system phases * documentation: improvements to AutotoolsPackage autodocs * build_systems: updated autodocs * run-tests: added a few information on how to run tests fixes #2606 fixes#2605 * documentation: fixed items brought up by @davydden * typos in docs * consistent use of 'build system' (i.e. removed 'build-system' from docs) * added a note on possible default implementations for build-time tests * documentation: fixed items brought up by @citibeth * added note to explain the difference between build system and language used in a package * capitalized bullet items * added link to API docs * documentation: fixed multiple cross-references after rebase * documentation: fixed minor issues raised by @tgamblin * documentation: added entry in table for the `PythonPackage` class * docs: fixed issues brought up by @citybeth in the second review --- lib/spack/docs/packaging_guide.rst | 213 ++++++++++++++++----- lib/spack/spack/build_systems/autotools.py | 93 ++++++--- lib/spack/spack/build_systems/cmake.py | 69 +++++-- lib/spack/spack/build_systems/makefile.py | 53 +++-- lib/spack/spack/build_systems/r.py | 10 +- lib/spack/spack/package.py | 8 +- 6 files changed, 332 insertions(+), 114 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index b09c677e0b1..f3927a0709d 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1999,41 +1999,122 @@ the Python extensions provided by them: once for ``+python`` and once for ``~python``. Other than using a little extra disk space, that solution has no serious problems. ------------------------------------ -Implementing the ``install`` method ------------------------------------ +.. _installation_procedure: -The last element of a package is its ``install()`` method. This is +--------------------------------------- +Implementing the installation procedure +--------------------------------------- + +The last element of a package is its **installation procedure**. This is where the real work of installation happens, and it's the main part of the package you'll need to customize for each piece of software. -.. code-block:: python - :linenos: +Defining an installation procedure means overriding a set of methods or attributes +that will be called at some point during the installation of the package. +The package base class, usually specialized for a given build system, determines the +actual set of entities available for overriding. +The classes that are currently provided by Spack are: - def install(self, spec prefix): - configure('--prefix={0}'.format(prefix)) + +------------------------------------+----------------------------------+ + | | **Base class purpose** | + +====================================+==================================+ + | :py:class:`.Package` | General base class not | + | | specialized for any build system | + +------------------------------------+----------------------------------+ + | :py:class:`.MakefilePackage` | Specialized class for packages | + | | built invoking | + | | hand-written Makefiles | + +------------------------------------+----------------------------------+ + | :py:class:`.AutotoolsPackage` | Specialized class for packages | + | | built using GNU Autotools | + +------------------------------------+----------------------------------+ + | :py:class:`.CMakePackage` | Specialized class for packages | + | | built using CMake | + +------------------------------------+----------------------------------+ + | :py:class:`.RPackage` | Specialized class for | + | | :py:class:`.R` extensions | + +------------------------------------+----------------------------------+ + | :py:class:`.PythonPackage` | Specialized class for | + | | :py:class:`.Python` extensions | + +------------------------------------+----------------------------------+ - make() - make('install') -``install`` takes a ``spec``: a description of how the package should -be built, and a ``prefix``: the path to the directory where the -software should be installed. -Spack provides wrapper functions for ``configure`` and ``make`` so -that you can call them in a similar way to how you'd call a shell -command. In reality, these are Python functions. Spack provides -these functions to make writing packages more natural. See the section -on :ref:`shell wrappers `. +.. note:: + Choice of the appropriate base class for a package + In most cases packagers don't have to worry about the selection of the right base class + for a package, as ``spack create`` will make the appropriate choice on their behalf. In those + rare cases where manual intervention is needed we need to stress that a + package base class depends on the *build system* being used, not the language of the package. + For example, a Python extension installed with CMake would ``extends('python')`` and + subclass from :py:class:`.CMakePackage`. -Now that the metadata is out of the way, we can move on to the -``install()`` method. When a user runs ``spack install``, Spack -fetches an archive for the correct version of the software, expands -the archive, and sets the current working directory to the root -directory of the expanded archive. It then instantiates a package -object and calls the ``install()`` method. +^^^^^^^^^^^^^^^^^^^^^ +Installation pipeline +^^^^^^^^^^^^^^^^^^^^^ -The ``install()`` signature looks like this: +When a user runs ``spack install``, Spack: + +1. Fetches an archive for the correct version of the software. +2. Expands the archive. +3. Sets the current working directory to the root directory of the expanded archive. + +Then, depending on the base class of the package under consideration, it will execute +a certain number of **phases** that reflect the way a package of that type is usually built. +The name and order in which the phases will be executed can be obtained either reading the API +docs at :py:mod:`~.spack.build_systems`, or using the ``spack info`` command: + +.. code-block:: console + :emphasize-lines: 13,14 + + $ spack info m4 + AutotoolsPackage: m4 + Homepage: https://www.gnu.org/software/m4/m4.html + + Safe versions: + 1.4.17 ftp://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz + + Variants: + Name Default Description + + sigsegv on Build the libsigsegv dependency + + Installation Phases: + autoreconf configure build install + + Build Dependencies: + libsigsegv + + ... + + +Typically, phases have default implementations that fit most of the common cases: + +.. literalinclude:: ../../../lib/spack/spack/build_systems/autotools.py + :pyobject: AutotoolsPackage.configure + :linenos: + +It is thus just sufficient for a packager to override a few +build system specific helper methods or attributes to provide, for instance, +configure arguments: + +.. literalinclude:: ../../../var/spack/repos/builtin/packages/m4/package.py + :pyobject: M4.configure_args + :linenos: + +.. note:: + Each specific build system has a list of attributes that can be overridden to + fine-tune the installation of a package without overriding an entire phase. To + have more information on them the place to go is the API docs of the :py:mod:`~.spack.build_systems` + module. + +^^^^^^^^^^^^^^^^^^^^^^^^^^ +Overriding an entire phase +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In extreme cases it may be necessary to override an entire phase. Regardless +of the build system, the signature is the same. For example, the signature +for the install phase is: .. code-block:: python @@ -2041,8 +2122,6 @@ The ``install()`` signature looks like this: def install(self, spec, prefix): ... -The parameters are as follows: - ``self`` For those not used to Python instance methods, this is the package itself. In this case it's an instance of ``Foo``, which @@ -2059,19 +2138,15 @@ The parameters are as follows: targets into. It acts like a string, but it's actually its own special type, :py:class:`Prefix `. -``spec`` and ``prefix`` are passed to ``install`` for convenience. -``spec`` is also available as an attribute on the package -(``self.spec``), and ``prefix`` is actually an attribute of ``spec`` -(``spec.prefix``). +The arguments ``spec`` and ``prefix`` are passed only for convenience, as they always +correspond to ``self.spec`` and ``self.spec.prefix`` respectively. -As mentioned in :ref:`install-environment`, you will usually not need -to refer to dependencies explicitly in your package file, as the -compiler wrappers take care of most of the heavy lifting here. There -will be times, though, when you need to refer to the install locations -of dependencies, or when you need to do something different depending -on the version, compiler, dependencies, etc. that your package is -built with. These parameters give you access to this type of -information. +As mentioned in :ref:`install-environment`, you will usually not need to refer +to dependencies explicitly in your package file, as the compiler wrappers take care of most of +the heavy lifting here. There will be times, though, when you need to refer to +the install locations of dependencies, or when you need to do something different +depending on the version, compiler, dependencies, etc. that your package is +built with. These parameters give you access to this type of information. .. _install-environment: @@ -2629,9 +2704,9 @@ build system. .. _sanity-checks: -------------------------------- -Sanity checking an installation -------------------------------- +------------------------ +Checking an installation +------------------------ By default, Spack assumes that a build has failed if nothing is written to the install prefix, and that it has succeeded if anything @@ -2650,16 +2725,18 @@ Consider a simple autotools build like this: If you are using using standard autotools or CMake, ``configure`` and ``make`` will not write anything to the install prefix. Only ``make install`` writes the files, and only once the build is already -complete. Not all builds are like this. Many builds of scientific -software modify the install prefix *before* ``make install``. Builds -like this can falsely report that they were successfully installed if -an error occurs before the install is complete but after files have -been written to the ``prefix``. +complete. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``sanity_check_is_file`` and ``sanity_check_is_dir`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Unfortunately, many builds of scientific +software modify the install prefix *before* ``make install``. Builds +like this can falsely report that they were successfully installed if +an error occurs before the install is complete but after files have +been written to the ``prefix``. + You can optionally specify *sanity checks* to deal with this problem. Add properties like this to your package: @@ -2683,6 +2760,48 @@ the build will fail and the install prefix will be removed. If they succeed, Spack considers the build successful and keeps the prefix in place. +^^^^^^^^^^^^^^^^ +Build-time tests +^^^^^^^^^^^^^^^^ + +Sometimes packages finish to build "correctly" and issues with their run-time +behavior are discovered only at a later stage, maybe after a full software stack +relying on them has already been built. To avoid situations of that kind it's possible +to write build-time tests that will be executed only if the option ``--run-tests`` +of ``spack install`` has been activated. + +The proper way to write these tests is relying on two decorators that come with +any base class listed in :ref:`installation_procedure`. + +.. code-block:: python + + @MakefilePackage.sanity_check('build') + @MakefilePackage.on_package_attributes(run_tests=True) + def check_build(self): + # Custom implementation goes here + pass + +The first decorator ``MakefilePackage.sanity_check('build')`` schedules this +function to be invoked after the ``build`` phase has been executed, while the +second one makes the invocation conditional on the fact that ``self.run_tests == True``. +It is also possible to schedule a function to be invoked *before* a given phase +using the ``MakefilePackage.precondition`` decorator. + +.. note:: + + Default implementations for build-time tests + + Packages that are built using specific build systems may already have a + default implementation for build-time tests. For instance :py:class:`~.AutotoolsPackage` + based packages will try to invoke ``make test`` and ``make check`` if + Spack is asked to run tests. + More information on each class is available in the the :py:mod:`~.spack.build_systems` + documentation. + +.. warning:: + + The API for adding tests is not yet considered stable and may change drastically in future releases. + .. _file-manipulation: --------------------------- diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index 78a4df5e117..37c780b3604 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -36,31 +36,51 @@ class AutotoolsPackage(PackageBase): - """Specialized class for packages that are built using GNU Autotools + """Specialized class for packages built using GNU Autotools. This class provides four phases that can be overridden: - * autoreconf - * configure - * build - * install + 1. :py:meth:`~.AutotoolsPackage.autoreconf` + 2. :py:meth:`~.AutotoolsPackage.configure` + 3. :py:meth:`~.AutotoolsPackage.build` + 4. :py:meth:`~.AutotoolsPackage.install` They all have sensible defaults and for many packages the only thing - necessary will be to override ``configure_args`` + necessary will be to override the helper method :py:meth:`.configure_args`. + For a finer tuning you may also override: + + +-----------------------------------------------+--------------------+ + | **Method** | **Purpose** | + +===============================================+====================+ + | :py:attr:`~.AutotoolsPackage.build_targets` | Specify ``make`` | + | | targets for the | + | | build phase | + +-----------------------------------------------+--------------------+ + | :py:attr:`~.AutotoolsPackage.install_targets` | Specify ``make`` | + | | targets for the | + | | install phase | + +-----------------------------------------------+--------------------+ + | :py:meth:`~.AutotoolsPackage.check` | Run build time | + | | tests if required | + +-----------------------------------------------+--------------------+ - Additionally, you may specify make targets for build and install - phases by overriding ``build_targets`` and ``install_targets`` """ + #: Phases of a GNU Autotools package phases = ['autoreconf', 'configure', 'build', 'install'] - # To be used in UI queries that require to know which - # build-system class we are using + #: This attribute is used in UI queries that need to know the build + #: system base class build_system_class = 'AutotoolsPackage' + #: Whether or not to update ``config.guess`` on old architectures patch_config_guess = True + #: Targets for ``make`` during the :py:meth:`~.AutotoolsPackage.build` + #: phase build_targets = [] + #: Targets for ``make`` during the :py:meth:`~.AutotoolsPackage.install` + #: phase install_targets = ['install'] - def do_patch_config_guess(self): + def _do_patch_config_guess(self): """Some packages ship with an older config.guess and need to have this updated when installed on a newer architecture.""" @@ -86,7 +106,7 @@ def do_patch_config_guess(self): check_call([my_config_guess], stdout=PIPE, stderr=PIPE) # The package's config.guess already runs OK, so just use it return True - except: + except Exception: pass else: return True @@ -104,7 +124,7 @@ def do_patch_config_guess(self): check_call([config_guess], stdout=PIPE, stderr=PIPE) shutil.copyfile(config_guess, my_config_guess) return True - except: + except Exception: pass # Look for the system's config.guess @@ -121,7 +141,7 @@ def do_patch_config_guess(self): check_call([config_guess], stdout=PIPE, stderr=PIPE) shutil.copyfile(config_guess, my_config_guess) return True - except: + except Exception: pass return False @@ -131,11 +151,17 @@ def build_directory(self): return self.stage.source_path def patch(self): - """Perform any required patches.""" + """Patches config.guess if + :py:attr:``~.AutotoolsPackage.patch_config_guess`` is True + + :raise RuntimeError: if something goes wrong when patching + ``config.guess`` + """ if self.patch_config_guess and self.spec.satisfies( - 'arch=linux-rhel7-ppc64le'): - if not self.do_patch_config_guess(): + 'arch=linux-rhel7-ppc64le' + ): + if not self._do_patch_config_guess(): raise RuntimeError('Failed to find suitable config.guess') def autoreconf(self, spec, prefix): @@ -144,22 +170,27 @@ def autoreconf(self, spec, prefix): @PackageBase.sanity_check('autoreconf') def is_configure_or_die(self): - """Checks the presence of a ``configure`` file after the - autoreconf phase""" + """Checks the presence of a `configure` file after the + :py:meth:`.autoreconf` phase. + + :raise RuntimeError: if the ``configure`` script does not exist. + """ with working_dir(self.build_directory()): if not os.path.exists('configure'): raise RuntimeError( 'configure script not found in {0}'.format(os.getcwd())) def configure_args(self): - """Method to be overridden. Should return an iterable containing - all the arguments that must be passed to configure, except ``--prefix`` + """Produces a list containing all the arguments that must be passed to + configure, except ``--prefix`` which will be pre-pended to the list. + + :return: list of arguments for configure """ return [] def configure(self, spec, prefix): - """Runs configure with the arguments specified in ``configure_args`` - and an appropriately set prefix + """Runs configure with the arguments specified in :py:meth:`.configure_args` + and an appropriately set prefix. """ options = ['--prefix={0}'.format(prefix)] + self.configure_args() @@ -167,12 +198,16 @@ def configure(self, spec, prefix): inspect.getmodule(self).configure(*options) def build(self, spec, prefix): - """Make the build targets""" + """Makes the build targets specified by + :py:attr:``~.AutotoolsPackage.build_targets`` + """ with working_dir(self.build_directory()): inspect.getmodule(self).make(*self.build_targets) def install(self, spec, prefix): - """Make the install targets""" + """Makes the install targets specified by + :py:attr:``~.AutotoolsPackage.install_targets`` + """ with working_dir(self.build_directory()): inspect.getmodule(self).make(*self.install_targets) @@ -181,8 +216,8 @@ def install(self, spec, prefix): def _run_default_function(self): """This function is run after build if ``self.run_tests == True`` - It will search for a method named ``check`` and run it. A sensible - default is provided in the base class. + It will search for a method named :py:meth:`.check` and run it. A + sensible default is provided in the base class. """ try: fn = getattr(self, 'check') @@ -192,8 +227,8 @@ def _run_default_function(self): tty.msg('Skipping default sanity checks [method `check` not implemented]') # NOQA: ignore=E501 def check(self): - """Default test: search the Makefile for targets ``test`` and ``check`` - and run them if found. + """Searches the Makefile for targets ``test`` and ``check`` + and runs them if found. """ with working_dir(self.build_directory()): self._if_make_target_execute('test') diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index 61d45784e8f..a5e23e54f45 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -34,23 +34,39 @@ class CMakePackage(PackageBase): - """Specialized class for packages that are built using CMake + """Specialized class for packages built using CMake This class provides three phases that can be overridden: - * cmake - * build - * install + 1. :py:meth:`~.CMakePackage.cmake` + 2. :py:meth:`~.CMakePackage.build` + 3. :py:meth:`~.CMakePackage.install` They all have sensible defaults and for many packages the only thing - necessary will be to override ``cmake_args`` + necessary will be to override :py:meth:`~.CMakePackage.cmake_args`. + For a finer tuning you may also override: + + +-----------------------------------------------+--------------------+ + | **Method** | **Purpose** | + +===============================================+====================+ + | :py:meth:`~.CMakePackage.build_type` | Specify the value | + | | for the | + | | CMAKE_BUILD_TYPE | + | | variable | + +-----------------------------------------------+--------------------+ + | :py:meth:`~.CMakePackage.root_cmakelists_dir` | Location of the | + | | root CMakeLists.txt| + +-----------------------------------------------+--------------------+ + | :py:meth:`~.CMakePackage.build_directory` | Directory where to | + | | build the package | + +-----------------------------------------------+--------------------+ + - Additionally, you may specify make targets for build and install - phases by overriding ``build_targets`` and ``install_targets`` """ + #: Phases of a CMake package phases = ['cmake', 'build', 'install'] - # To be used in UI queries that require to know which - # build-system class we are using + #: This attribute is used in UI queries that need to know the build + #: system base class build_system_class = 'CMakePackage' build_targets = [] @@ -59,19 +75,25 @@ class CMakePackage(PackageBase): depends_on('cmake', type='build') def build_type(self): - """Override to provide the correct build_type in case a complex - logic is needed + """Returns the correct value for the ``CMAKE_BUILD_TYPE`` variable + + :return: value for ``CMAKE_BUILD_TYPE`` """ return 'RelWithDebInfo' def root_cmakelists_dir(self): - """Directory where to find the root CMakeLists.txt""" + """Returns the location of the root CMakeLists.txt + + :return: directory containing the root CMakeLists.txt + """ return self.stage.source_path @property def std_cmake_args(self): """Standard cmake arguments provided as a property for convenience of package writers + + :return: standard cmake arguments """ # standard CMake arguments return CMakePackage._std_args(self) @@ -97,20 +119,27 @@ def _std_args(pkg): return args def build_directory(self): - """Override to provide another place to build the package""" + """Returns the directory to use when building the package + + :return: directory where to build the package + """ return join_path(self.stage.source_path, 'spack-build') def cmake_args(self): - """Method to be overridden. Should return an iterable containing - all the arguments that must be passed to configure, except: + """Produces a list containing all the arguments that must be passed to + cmake, except: - * CMAKE_INSTALL_PREFIX - * CMAKE_BUILD_TYPE + * CMAKE_INSTALL_PREFIX + * CMAKE_BUILD_TYPE + + which will be set automatically. + + :return: list of arguments for cmake """ return [] def cmake(self, spec, prefix): - """Run cmake in the build directory""" + """Runs ``cmake`` in the build directory""" options = [self.root_cmakelists_dir()] + self.std_cmake_args + \ self.cmake_args() with working_dir(self.build_directory(), create=True): @@ -142,8 +171,8 @@ def _run_default_function(self): tty.msg('Skipping default build sanity checks [method `check` not implemented]') # NOQA: ignore=E501 def check(self): - """Default test: search the Makefile for the target ``test`` - and run them if found. + """Searches the CMake-generated Makefile for the target ``test`` + and runs it if found. """ with working_dir(self.build_directory()): self._if_make_target_execute('test') diff --git a/lib/spack/spack/build_systems/makefile.py b/lib/spack/spack/build_systems/makefile.py index a56f316109a..e8fa86264bf 100644 --- a/lib/spack/spack/build_systems/makefile.py +++ b/lib/spack/spack/build_systems/makefile.py @@ -35,36 +35,67 @@ class MakefilePackage(PackageBase): This class provides three phases that can be overridden: - * edit - * build - * install + 1. :py:meth:`~.MakefilePackage.edit` + 2. :py:meth:`~.MakefilePackage.build` + 3. :py:meth:`~.MakefilePackage.install` - It is necessary to override the 'edit' phase, while 'build' and 'install' - have sensible defaults. + It is usually necessary to override the :py:meth:`~.MakefilePackage.edit` + phase, while :py:meth:`~.MakefilePackage.build` and + :py:meth:`~.MakefilePackage.install` have sensible defaults. + For a finer tuning you may override: + + +-----------------------------------------------+--------------------+ + | **Method** | **Purpose** | + +===============================================+====================+ + | :py:attr:`~.MakefilePackage.build_targets` | Specify ``make`` | + | | targets for the | + | | build phase | + +-----------------------------------------------+--------------------+ + | :py:attr:`~.MakefilePackage.install_targets` | Specify ``make`` | + | | targets for the | + | | install phase | + +-----------------------------------------------+--------------------+ + | :py:meth:`~.MakefilePackage.build_directory` | Directory where the| + | | Makefile is located| + +-----------------------------------------------+--------------------+ """ + #: Phases of a package that is built with an hand-written Makefile phases = ['edit', 'build', 'install'] - # To be used in UI queries that require to know which - # build-system class we are using + #: This attribute is used in UI queries that need to know the build + #: system base class build_system_class = 'MakefilePackage' + #: Targets for ``make`` during the :py:meth:`~.MakefilePackage.build` + #: phase build_targets = [] + #: Targets for ``make`` during the :py:meth:`~.MakefilePackage.install` + #: phase install_targets = ['install'] def build_directory(self): - """Directory where the main Makefile is located""" + """Returns the directory containing the main Makefile + + :return: build directory + """ return self.stage.source_path def edit(self, spec, prefix): - """This phase cannot be defaulted for obvious reasons...""" + """Edits the Makefile before calling make. This phase cannot + be defaulted. + """ tty.msg('Using default implementation: skipping edit phase.') def build(self, spec, prefix): - """Make the build targets""" + """Calls make, passing :py:attr:`~.MakefilePackage.build_targets` + as targets. + """ with working_dir(self.build_directory()): inspect.getmodule(self).make(*self.build_targets) def install(self, spec, prefix): - """Make the install targets""" + """Calls make, passing :py:attr:`~.MakefilePackage.install_targets` + as targets. + """ with working_dir(self.build_directory()): inspect.getmodule(self).make(*self.install_targets) diff --git a/lib/spack/spack/build_systems/r.py b/lib/spack/spack/build_systems/r.py index f642f2dfd82..a4f7359ec8a 100644 --- a/lib/spack/spack/build_systems/r.py +++ b/lib/spack/spack/build_systems/r.py @@ -34,21 +34,21 @@ class RPackage(PackageBase): This class provides a single phase that can be overridden: - * install + 1. :py:meth:`~.RPackage.install` - It has sensible defaults and for many packages the only thing + It has sensible defaults, and for many packages the only thing necessary will be to add dependencies """ phases = ['install'] - # To be used in UI queries that require to know which - # build-system class we are using + #: This attribute is used in UI queries that need to know the build + #: system base class build_system_class = 'RPackage' extends('r') def install(self, spec, prefix): - """Install the R package""" + """Installs an R package.""" inspect.getmodule(self).R( 'CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir), diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index f9bc1fafbc0..24ff82fa385 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1706,9 +1706,13 @@ def rpath_args(self): class Package(PackageBase): + """General purpose class with a single ``install`` + phase that needs to be coded by packagers. + """ + #: The one and only phase phases = ['install'] - # To be used in UI queries that require to know which - # build-system class we are using + #: This attribute is used in UI queries that require to know which + #: build-system class we are using build_system_class = 'Package' # This will be used as a registration decorator in user # packages, if need be From c76088906e91af11a343decb5ae532be1d48d896 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 23 Jan 2017 22:59:16 +0100 Subject: [PATCH 0036/2394] oce & trilinos: force rpath on Sierra to avoid issues with load commands size (#2855) * oce: force rpath on Sierra to avoid issues with load commands size * trilinos: use rpath on Sierra to avoid load commands limit --- var/spack/repos/builtin/packages/oce/package.py | 6 +++++- var/spack/repos/builtin/packages/trilinos/package.py | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py index 36b58269f15..950621da40a 100644 --- a/var/spack/repos/builtin/packages/oce/package.py +++ b/var/spack/repos/builtin/packages/oce/package.py @@ -87,7 +87,11 @@ def install(self, spec, prefix): '-DOCE_OSX_USE_COCOA:BOOL=ON', ]) - options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix) + if '.'.join(platform.mac_ver()[0].split('.')[:2]) == '10.12': + # use @rpath on Sierra due to limit of dynamic loader + options.append('-DCMAKE_MACOSX_RPATH=ON') + else: + options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix) cmake('.', *options) make("install/strip") diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index aed722814b1..5f8c2debb05 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -25,6 +25,7 @@ from spack import * import os import sys +import platform # Trilinos is complicated to build, as an inspiration a couple of links to # other repositories which build it: @@ -171,10 +172,15 @@ def cmake_args(self): '-DLAPACK_LIBRARY_DIRS=%s' % ';'.join(lapack.directories), '-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON', '-DTrilinos_ENABLE_CXX11:BOOL=ON', - '-DTPL_ENABLE_Netcdf:BOOL=ON', - '-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % self.prefix + '-DTPL_ENABLE_Netcdf:BOOL=ON' ]) + if '.'.join(platform.mac_ver()[0].split('.')[:2]) == '10.12': + # use @rpath on Sierra due to limit of dynamic loader + options.append('-DCMAKE_MACOSX_RPATH=ON') + else: + options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix) + # Force Trilinos to use the MPI wrappers instead of raw compilers # this is needed on Apple systems that require full resolution of # all symbols when linking shared libraries From 258dfc707de77d63843cd85d0886ef0ef82e6eb7 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 24 Jan 2017 00:29:25 +0100 Subject: [PATCH 0037/2394] Export spack function so it works in subshells (#2908) --- share/spack/setup-env.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 943db726120..24ab3dae6f4 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -167,6 +167,11 @@ function _spack_pathadd { fi } +# Export spack function so it is available in subshells (only works with bash) +if [ -n "${BASH_VERSION:-}" ]; then + export -f spack +fi + # # Figure out where this file is. Below code needs to be portable to # bash and zsh. From bcef90fe10f7969d9d0c65498b9c6822e2b6e173 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 23 Jan 2017 17:29:48 -0600 Subject: [PATCH 0038/2394] Add --without-x when building r~X (#2864) * Add --without-x when building r~X * Add latest version of R * Run patch for latest version as well --- var/spack/repos/builtin/packages/r/package.py | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 590c5b2feba..30a6887a696 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -28,7 +28,7 @@ import shutil -class R(Package): +class R(AutotoolsPackage): """R is 'GNU S', a freely available language and environment for statistical computing and graphics which provides a wide variety of statistical and graphical techniques: linear and nonlinear modelling, @@ -40,6 +40,7 @@ class R(Package): extendable = True + version('3.3.2', '2437014ef40641cdc9673e89c040b7a8') version('3.3.1', 'f50a659738b73036e2f5635adbd229c5') version('3.3.0', '5a7506c8813432d1621c9725e86baf7a') version('3.2.3', '1ba3dac113efab69e706902810cc2970') @@ -82,35 +83,46 @@ class R(Package): depends_on('pcre') depends_on('jdk') - patch('zlib.patch', when='@:3.3.1') + patch('zlib.patch', when='@:3.3.2') @property def etcdir(self): return join_path(prefix, 'rlib', 'R', 'etc') - def install(self, spec, prefix): - rlibdir = join_path(prefix, 'rlib') - configure_args = ['--prefix=%s' % prefix, - '--libdir=%s' % rlibdir, - '--enable-R-shlib', - '--enable-BLAS-shlib', - '--enable-R-framework=no'] + def configure_args(self): + spec = self.spec + prefix = self.prefix + + config_args = [ + '--libdir={0}'.format(join_path(prefix, 'rlib')), + '--enable-R-shlib', + '--enable-BLAS-shlib', + '--enable-R-framework=no' + ] + if '+external-lapack' in spec: - configure_args.extend(['--with-blas', '--with-lapack']) + config_args.extend([ + '--with-blas', + '--with-lapack' + ]) - configure(*configure_args) - make() - make('install') + if '+X' in spec: + config_args.append('--with-x') + else: + config_args.append('--without-x') + return config_args + + @AutotoolsPackage.sanity_check('install') + def copy_makeconf(self): # Make a copy of Makeconf because it will be needed to properly build R # dependencies in Spack. src_makeconf = join_path(self.etcdir, 'Makeconf') dst_makeconf = join_path(self.etcdir, 'Makeconf.spack') shutil.copy(src_makeconf, dst_makeconf) - self.filter_compilers(spec, prefix) - - def filter_compilers(self, spec, prefix): + @AutotoolsPackage.sanity_check('install') + def filter_compilers(self): """Run after install to tell the configuration files and Makefiles to use the compilers that Spack built the package with. From e317f2639c671ae64e7647599f9d6e9be07b744a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 23 Jan 2017 17:30:01 -0600 Subject: [PATCH 0039/2394] Add latest version of PnetCDF (#2906) --- var/spack/repos/builtin/packages/parallel-netcdf/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py index 65512017ef6..0563bd06867 100644 --- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py +++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py @@ -32,7 +32,9 @@ class ParallelNetcdf(AutotoolsPackage): homepage = "https://trac.mcs.anl.gov/projects/parallel-netcdf" url = "http://cucis.ece.northwestern.edu/projects/PnetCDF/Release/parallel-netcdf-1.6.1.tar.gz" + list_url = "http://cucis.ece.northwestern.edu/projects/PnetCDF/download.html" + version('1.8.0', '825825481aa629eb82f21ca37afff1609b8eeb07') version('1.7.0', '267eab7b6f9dc78c4d0e6def2def3aea4bc7c9f0') version('1.6.1', '62a094eb952f9d1e15f07d56e535052604f1ac34') From f8c7dab826b86006ee4a74007a8a035bdf0723e6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 23 Jan 2017 17:50:34 -0600 Subject: [PATCH 0040/2394] Convert xerces-c to AutotoolsPackage (#2907) --- .../repos/builtin/packages/xerces-c/package.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py index 9f3ad8a4dce..bd28a9eec6c 100644 --- a/var/spack/repos/builtin/packages/xerces-c/package.py +++ b/var/spack/repos/builtin/packages/xerces-c/package.py @@ -25,21 +25,17 @@ from spack import * -class XercesC(Package): +class XercesC(AutotoolsPackage): """Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data. A shared library is provided for parsing, generating, manipulating, and validating XML documents using the DOM, SAX, and SAX2 - APIs. - """ + APIs.""" homepage = "https://xerces.apache.org/xerces-c" url = "https://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.1.4.tar.bz2" + version('3.1.4', 'd04ae9d8b2dee2157c6db95fa908abfd') - def install(self, spec, prefix): - configure("--prefix=%s" % prefix, - "--disable-network") - make("clean") - make() - make("install") + def configure_args(self): + return ['--disable-network'] From db7a786d1cb61ee87d84c52781740440d8632096 Mon Sep 17 00:00:00 2001 From: Mayeul d'Avezac Date: Tue, 24 Jan 2017 00:12:31 +0000 Subject: [PATCH 0041/2394] Simplifying gbenchmark (#2892) Also, it seems the cmake_args API has changed in spack --- var/spack/repos/builtin/packages/gbenchmark/package.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/gbenchmark/package.py b/var/spack/repos/builtin/packages/gbenchmark/package.py index 1c54f602437..a25ddd7a4da 100644 --- a/var/spack/repos/builtin/packages/gbenchmark/package.py +++ b/var/spack/repos/builtin/packages/gbenchmark/package.py @@ -48,12 +48,3 @@ def patch(self): r'##### add_cxx_compiler_flag(-Werror', 'CMakeLists.txt' ) - - def cmake_args(self, spec, prefix): - if self.compiler.name == 'intel': - return [ - "-DCMAKE_CXX_FLAGS=-no-ansi-alias -fno-strict-aliasing", - "-DCMAKE_C_FLAGS=-no-ansi-alias -fno-strict-aliasing", - "-DBENCHMARK_ENABLE_TESTING=OFF" - ] - return [] From 416e52c150addbfa0f81a70f422f35494a92cfd2 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Tue, 24 Jan 2017 18:00:27 +0100 Subject: [PATCH 0042/2394] Update SymEngine package (#2919) Take advantage of new configuration options in the @develop branch --- .../builtin/packages/symengine/package.py | 82 +++++++++++-------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/var/spack/repos/builtin/packages/symengine/package.py b/var/spack/repos/builtin/packages/symengine/package.py index f3fc13474cb..e3c00f849ae 100644 --- a/var/spack/repos/builtin/packages/symengine/package.py +++ b/var/spack/repos/builtin/packages/symengine/package.py @@ -23,9 +23,10 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys -class Symengine(Package): +class Symengine(CMakePackage): """SymEngine is a fast symbolic manipulation library, written in C++.""" homepage = "https://github.com/symengine/symengine" @@ -35,7 +36,9 @@ class Symengine(Package): version('0.1.0', '41ad7daed61fc5a77c285eb6c7303425') version('develop', git='https://github.com/symengine/symengine.git') - variant('flint', default=True, + variant('boostmp', default=False, + description='Compile with Boost multi-precision integer library') + variant('flint', default=False, description='Compile with Flint integer library') variant('mpc', default=True, description='Compile with MPC library') @@ -54,20 +57,22 @@ class Symengine(Package): depends_on('cmake', type='build') # Other dependencies - depends_on('gmp') # mpir is a drop-in replacement for this - depends_on('mpc', when='+mpc') # Could also be built against mpir - depends_on('mpfr', when='+mpfr') # Could also be built against mpir - depends_on('flint', when='+flint') # Could also be built against mpir - depends_on('piranha', when='+piranha~flint') # Could also be built against mpir # NOQA + # NOTE: mpir is a drop-in replacement for gmp + # NOTE: [mpc,mpfr,flint,piranha] could also be built against mpir + depends_on('boost', when='+boostmp') + depends_on('gmp', when='~boostmp') + depends_on('mpc', when='+mpc~boostmp') + depends_on('mpfr', when='+mpfr~boostmp') + depends_on('flint', when='+flint~boostmp') + depends_on('piranha', when='+piranha~flint~boostmp') - def install(self, spec, prefix): + def build_type(self): + # CMAKE_BUILD_TYPE should be Debug | Release + return 'Release' + + def cmake_args(self): + spec = self.spec options = [] - options.extend(std_cmake_args) - - # CMAKE_BUILD_TYPE should be Debug | Release - for word in options[:]: - if word.startswith('-DCMAKE_BUILD_TYPE'): - options.remove(word) # See https://github.com/symengine/symengine/blob/master/README.md # for build options @@ -76,38 +81,47 @@ def install(self, spec, prefix): '-DWITH_SYMENGINE_RCP:BOOL=ON', '-DWITH_SYMENGINE_THREAD_SAFE:BOOL=%s' % ( 'ON' if ('+thread_safe' or '+openmp') in spec else 'OFF'), - '-DBUILD_TESTS:BOOL=ON', + '-DBUILD_TESTS:BOOL=%s' % ( + 'ON' if self.run_tests else 'OFF'), '-DBUILD_BENCHMARKS:BOOL=ON', - '-DWITH_MPC:BOOL=%s' % ( - 'ON' if '+mpc' in spec else 'OFF'), - '-DWITH_MPFR:BOOL=%s' % ( - 'ON' if '+mpfr' in spec else 'OFF'), - '-DINTEGER_CLASS:STRING=gmp', '-DWITH_OPENMP:BOOL=%s' % ( 'ON' if '+openmp' in spec else 'OFF'), '-DBUILD_SHARED_LIBS:BOOL=%s' % ( 'ON' if '+shared' in spec else 'OFF'), ]) - if '+flint' in spec: + if sys.platform == 'darwin': options.extend([ - '-DWITH_FLINT:BOOL=ON', - '-DINTEGER_CLASS:STRING=flint' + '-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=on' ]) - elif '+piranha' in spec: + + if '+boostmp' in spec: options.extend([ - '-DWITH_PIRANHA:BOOL=ON', - '-DINTEGER_CLASS:STRING=piranha' + '-DINTEGER_CLASS:STRING=boostmp', + '-DBoost_INCLUDE_DIR=%s' % spec['boost'].prefix.include, + '-DWITH_MPC:BOOL=OFF', + '-DWITH_MPFR:BOOL=OFF', ]) else: options.extend([ - '-DINTEGER_CLASS:STRING=gmp' + '-DWITH_MPC:BOOL=%s' % ( + 'ON' if '+mpc' in spec else 'OFF'), + '-DWITH_MPFR:BOOL=%s' % ( + 'ON' if '+mpfr' in spec else 'OFF'), ]) + if '+flint' in spec: + options.extend([ + '-DWITH_FLINT:BOOL=ON', + '-DINTEGER_CLASS:STRING=flint' + ]) + elif '+piranha' in spec: + options.extend([ + '-DWITH_PIRANHA:BOOL=ON', + '-DINTEGER_CLASS:STRING=piranha' + ]) + else: + options.extend([ + '-DINTEGER_CLASS:STRING=gmp' + ]) - with working_dir('spack-build', create=True): - cmake('..', *options) - - make() - make('install') - if self.run_tests: - ctest() + return options From 7d3da2ebdcdbd5e42aebb41db4cf497d8219a53d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 24 Jan 2017 11:25:44 -0600 Subject: [PATCH 0043/2394] Grammar and broken link fixes in modules tutorial (#2912) --- lib/spack/docs/tutorial_sc16_modules.rst | 35 +++++++++++------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/lib/spack/docs/tutorial_sc16_modules.rst b/lib/spack/docs/tutorial_sc16_modules.rst index 407f679ae68..0a79d943f96 100644 --- a/lib/spack/docs/tutorial_sc16_modules.rst +++ b/lib/spack/docs/tutorial_sc16_modules.rst @@ -45,7 +45,7 @@ Add a new compiler ^^^^^^^^^^^^^^^^^^ Spack automatically scans the environment to search for available -compilers on first use. On a Ubuntu 14.04 a fresh clone will show +compilers on first use. On Ubuntu 14.04, a fresh clone will show something like this: .. code-block:: console @@ -58,9 +58,10 @@ something like this: -- gcc ---------------------------------------------------------- gcc@4.8 -For the purpose of building a limited set of packages with some features -that will help showcasing the capabilities of -module customization the first thing we need is to build a new compiler: +In order to showcase the capabilities of module customization, we will want to +build a limited set of packages with multiple compilers. If you do not already +have multiple compilers listed by ``spack compilers``, you should build one +with Spack: .. code-block:: console @@ -85,7 +86,7 @@ Then we can use shell support for modules to add it to the list of known compile -- gcc ---------------------------------------------------------- gcc@6.2.0 gcc@4.8 -Note that the final 7 digits hash at the end of the generated module may vary depending +Note that the 7-digit hash at the end of the generated module may vary depending on architecture or package version. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -96,16 +97,11 @@ Next you should install a few modules that will be used in the tutorial: .. code-block:: console - $ spack install netlib-scalapack ^openmpi ^openblas - # ... - -The packages you need to install are: - -- ``netlib-scalapack ^openmpi ^openblas`` -- ``netlib-scalapack ^mpich ^openblas`` -- ``netlib-scalapack ^openmpi ^netlib-lapack`` -- ``netlib-scalapack ^mpich ^netlib-lapack`` -- ``py-scipy ^openblas`` + $ spack install netlib-scalapack ^openmpi ^openblas + $ spack install netlib-scalapack ^mpich ^openblas + $ spack install netlib-scalapack ^openmpi ^netlib-lapack + $ spack install netlib-scalapack ^mpich ^netlib-lapack + $ spack install py-scipy ^openblas In the end your environment should look something like: @@ -500,7 +496,7 @@ Regenerating the module files should result in something like: Fortran, and Java. ]]) -As you see the ``gcc`` module has the environment variable ``GCC_ROOT`` set. +As you can see, the ``gcc`` module has the environment variable ``GCC_ROOT`` set. Sometimes it's also useful to apply environment modifications selectively and target only certain packages. You can, for instance set the common variables ``CC``, ``CXX``, @@ -727,7 +723,7 @@ Core/Compiler/MPI The most common hierarchy is the so called ``Core/Compiler/MPI``. To have an idea how a hierarchy is organized you may refer to the -`Lmod guide `_. +`Lmod guide `_. Since ``lmod`` is not enabled by default, you need to add it to the list of enabled module file generators. The other things you need to do are: @@ -782,9 +778,10 @@ After modifications the configuration file will be: purpose of overriding the default list of enabled generators so that only ``lmod`` will be active (see :ref:`the reference manual ` for a more detailed explanation of - config scopes). + config scopes). If a single colon is used, it will append instead + of override. -The directive ``core_compilers`` accepts a list of compilers : everything built +The directive ``core_compilers`` accepts a list of compilers; everything built using these compilers will create a module in the ``Core`` part of the hierarchy. It is common practice to put the OS provided compilers in the list and only build common utilities and other compilers in ``Core``. From 6e895c4cccb67304d3391478cc3fd0c5641bca51 Mon Sep 17 00:00:00 2001 From: Jason Sarich Date: Tue, 24 Jan 2017 13:48:01 -0600 Subject: [PATCH 0044/2394] add static options for some libraries (#2876) * add static options for some libraries * make requested changes: add comments and use configure_args --- .../repos/builtin/packages/bzip2/package.py | 34 +++++++++++-------- .../repos/builtin/packages/matio/package.py | 4 +++ .../repos/builtin/packages/metis/package.py | 9 +++++ .../builtin/packages/parmetis/package.py | 10 ++++++ .../repos/builtin/packages/zlib/package.py | 8 +++++ 5 files changed, 50 insertions(+), 15 deletions(-) diff --git a/var/spack/repos/builtin/packages/bzip2/package.py b/var/spack/repos/builtin/packages/bzip2/package.py index 9e5894a6a84..d12b88e734d 100644 --- a/var/spack/repos/builtin/packages/bzip2/package.py +++ b/var/spack/repos/builtin/packages/bzip2/package.py @@ -36,6 +36,7 @@ class Bzip2(Package): url = "http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz" version('1.0.6', '00b516f4704d4a7cb50a1d97e6e8e15b') + variant('shared', default=True, description='Enables the build of shared libraries.') def patch(self): # bzip2 comes with two separate Makefiles for static and dynamic builds @@ -71,27 +72,30 @@ def patch(self): def install(self, spec, prefix): # Build the dynamic library first - make('-f', 'Makefile-libbz2_so') + if '+shared' in spec: + make('-f', 'Makefile-libbz2_so') + # Build the static library and everything else make() make('install', 'PREFIX={0}'.format(prefix)) - install('bzip2-shared', join_path(prefix.bin, 'bzip2')) + if '+shared' in spec: + install('bzip2-shared', join_path(prefix.bin, 'bzip2')) - v1, v2, v3 = (self.spec.version.up_to(i) for i in (1, 2, 3)) - if 'darwin' in self.spec.architecture: - lib = 'libbz2.dylib' - lib1, lib2, lib3 = ('libbz2.{0}.dylib'.format(v) - for v in (v1, v2, v3)) - else: - lib = 'libbz2.so' - lib1, lib2, lib3 = ('libbz2.so.{0}'.format(v) - for v in (v1, v2, v3)) + v1, v2, v3 = (self.spec.version.up_to(i) for i in (1, 2, 3)) + if 'darwin' in self.spec.architecture: + lib = 'libbz2.dylib' + lib1, lib2, lib3 = ('libbz2.{0}.dylib'.format(v) + for v in (v1, v2, v3)) + else: + lib = 'libbz2.so' + lib1, lib2, lib3 = ('libbz2.so.{0}'.format(v) + for v in (v1, v2, v3)) - install(lib3, join_path(prefix.lib, lib3)) - with working_dir(prefix.lib): - for l in (lib, lib1, lib2): - symlink(lib3, l) + install(lib3, join_path(prefix.lib, lib3)) + with working_dir(prefix.lib): + for l in (lib, lib1, lib2): + symlink(lib3, l) with working_dir(prefix.bin): force_remove('bunzip2', 'bzcat') diff --git a/var/spack/repos/builtin/packages/matio/package.py b/var/spack/repos/builtin/packages/matio/package.py index a33b23a4e95..3c48b8f3fc0 100644 --- a/var/spack/repos/builtin/packages/matio/package.py +++ b/var/spack/repos/builtin/packages/matio/package.py @@ -37,6 +37,8 @@ class Matio(AutotoolsPackage): description='support for compressed mat files') variant("hdf5", default=True, description='support for version 7.3 mat files via hdf5') + variant("shared", default=True, description='Enables the build of shared libraries.') + depends_on("zlib", when="+zlib") depends_on("hdf5", when="+hdf5") @@ -47,4 +49,6 @@ def configure_args(self): args.append("--with-zlib=%s" % self.spec['zlib'].prefix) if '+hdf5' in self.spec: args.append("--with-hdf5=%s" % self.spec['hdf5'].prefix) + if '+shared' not in self.spec: + args.append("--disable-shared") return args diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index b66677288c1..f15d544b7be 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -186,6 +186,15 @@ def install(self, spec, prefix): if '+shared' in spec: options.append('-DSHARED:BOOL=ON') + else: + # Remove all RPATH options + # (RPATHxxx options somehow trigger cmake to link dynamically) + rpath_options = [] + for o in options: + if o.find('RPATH') >= 0: + rpath_options.append(o) + for o in rpath_options: + options.remove(o) if '+debug' in spec: options.extend(['-DDEBUG:BOOL=ON', '-DCMAKE_BUILD_TYPE:STRING=Debug']) diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py index 74e00cc9e01..0e6cd5390a0 100644 --- a/var/spack/repos/builtin/packages/parmetis/package.py +++ b/var/spack/repos/builtin/packages/parmetis/package.py @@ -71,6 +71,16 @@ def install(self, spec, prefix): if '+shared' in spec: options.append('-DSHARED:BOOL=ON') + else: + # Remove all RPATH options + # (RPATHxxx options somehow trigger cmake to link dynamically) + rpath_options = [] + for o in options: + if o.find('RPATH') >= 0: + rpath_options.append(o) + for o in rpath_options: + options.remove(o) + if '+debug' in spec: options.extend(['-DDEBUG:BOOL=ON', '-DCMAKE_BUILD_TYPE:STRING=Debug']) diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index ea758e01889..05b9bb8deda 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -40,7 +40,15 @@ class Zlib(AutotoolsPackage): variant('pic', default=True, description='Produce position-independent code (for shared libs)') + variant('shared', default=True, + description='Enables the build of shared libraries.') def setup_environment(self, spack_env, run_env): if '+pic' in self.spec: spack_env.set('CFLAGS', self.compiler.pic_flag) + + def configure_args(self): + config_args = [] + if '+shared' not in self.spec: + config_args.append('--static') + return config_args From a04ac74c4ce15f041d920556bda74af96ccdefd9 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 24 Jan 2017 15:01:10 -0600 Subject: [PATCH 0045/2394] Add latest version of xz (#2916) --- var/spack/repos/builtin/packages/xz/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/xz/package.py b/var/spack/repos/builtin/packages/xz/package.py index c86c8c64b28..839f5130582 100644 --- a/var/spack/repos/builtin/packages/xz/package.py +++ b/var/spack/repos/builtin/packages/xz/package.py @@ -32,6 +32,8 @@ class Xz(AutotoolsPackage): the successor to LZMA Utils.""" homepage = "http://tukaani.org/xz/" url = "http://tukaani.org/xz/xz-5.2.0.tar.bz2" + list_url = "http://tukaani.org/xz/old.html" - version('5.2.0', '867cc8611760240ebf3440bd6e170bb9') + version('5.2.3', '1592e7ca3eece099b03b35f4d9179e7c') version('5.2.2', 'f90c9a0c8b259aee2234c4e0d7fd70af') + version('5.2.0', '867cc8611760240ebf3440bd6e170bb9') From fae36b8489af1136ba773d44be108e2114bb11e7 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 24 Jan 2017 15:06:42 -0600 Subject: [PATCH 0046/2394] Add latest version of NetCDF (#2915) --- var/spack/repos/builtin/packages/netcdf/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py index 79a1be2090d..af3e69b5e6a 100644 --- a/var/spack/repos/builtin/packages/netcdf/package.py +++ b/var/spack/repos/builtin/packages/netcdf/package.py @@ -33,6 +33,7 @@ class Netcdf(AutotoolsPackage): homepage = "http://www.unidata.ucar.edu/software/netcdf" url = "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.3.tar.gz" + version('4.4.1.1', '503a2d6b6035d116ed53b1d80c811bda') version('4.4.1', '7843e35b661c99e1d49e60791d5072d8') version('4.4.0', 'cffda0cbd97fdb3a06e9274f7aef438e') version('4.3.3.1', '5c9dad3705a3408d27f696e5b31fb88c') From 268347ccbf9521c3bcb56567657f202fab376309 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 24 Jan 2017 15:06:56 -0600 Subject: [PATCH 0047/2394] Add latest version of flex (#2914) --- var/spack/repos/builtin/packages/flex/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py index 23b3c8b21a8..e4117877c17 100644 --- a/var/spack/repos/builtin/packages/flex/package.py +++ b/var/spack/repos/builtin/packages/flex/package.py @@ -31,6 +31,7 @@ class Flex(AutotoolsPackage): homepage = "https://github.com/westes/flex" url = "https://github.com/westes/flex/releases/download/v2.6.1/flex-2.6.1.tar.gz" + version('2.6.3', 'a5f65570cd9107ec8a8ec88f17b31bb1') # Problematic version: # See issue #2554; https://github.com/westes/flex/issues/113 # version('2.6.2', 'cc6d76c333db7653d5caf423a3335239') From 90d47a3eadb5f9b3f90a790c276f8ca5a90c81a1 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 24 Jan 2017 13:07:13 -0800 Subject: [PATCH 0048/2394] Add dependency on perl (#2909) * Add dependency on perl The build process uses perl and also needs `Test::More`. Some distros, e.g. CentOS, break the core Perl distribution into separate packages, so it's possible to "have perl" but not have all the bits one needs to build OpenSSL. We'll just install one of ours, which comes with all of its factory parts included. * Remove uninformative comment > # Also requires make doesn't really add any value... --- var/spack/repos/builtin/packages/openssl/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 5a413111dd9..9b4070d43a3 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -53,7 +53,7 @@ class Openssl(Package): version('1.0.1h', '8d6d684a9430d5cc98a62a5d8fbda8cf') depends_on("zlib") - # Also requires make and perl + depends_on("perl", type='build') parallel = False From fc866ae0fe960abf723d5f89c2ae6c6baaa3ce5e Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 25 Jan 2017 16:57:01 +0100 Subject: [PATCH 0049/2394] build systems: simpler, clearer decorators: run_after, run_before (#2860) * PackageMeta: `run_before` is an alias of `precondition`, `run_after` an alias of `sanity_check` * PackageMeta: removed `precondition` and `sanity_check` * PackageMeta: decorators are now free-standing * package: modified/added docstrings. Fixed the semantics of `on_package_attributes`. * package: added unit test assertion as side effects of install * build_systems: factored build-time test running into base class * r: updated decorators in package.py * docs: updated decorator names --- lib/spack/docs/packaging_guide.rst | 8 +- lib/spack/spack/__init__.py | 16 +- lib/spack/spack/build_systems/autotools.py | 24 +-- lib/spack/spack/build_systems/cmake.py | 22 +-- lib/spack/spack/build_systems/makefile.py | 4 +- lib/spack/spack/build_systems/python.py | 4 +- lib/spack/spack/build_systems/r.py | 4 +- lib/spack/spack/package.py | 158 ++++++++++-------- .../packages/cmake-client/package.py | 33 +++- .../repos/builtin/packages/cmor/package.py | 2 +- .../repos/builtin/packages/h5hut/package.py | 2 +- .../repos/builtin/packages/hdf5/package.py | 4 +- .../repos/builtin/packages/mpich/package.py | 4 +- .../builtin/packages/openblas/package.py | 6 +- .../repos/builtin/packages/openmpi/package.py | 4 +- .../builtin/packages/py-basemap/package.py | 2 +- .../builtin/packages/py-matplotlib/package.py | 2 +- .../repos/builtin/packages/py-yt/package.py | 2 +- var/spack/repos/builtin/packages/r/package.py | 4 +- .../repos/builtin/packages/tcl/package.py | 2 +- .../builtin/packages/trilinos/package.py | 2 +- 21 files changed, 174 insertions(+), 135 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index f3927a0709d..9b08a7d4987 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2775,17 +2775,17 @@ any base class listed in :ref:`installation_procedure`. .. code-block:: python - @MakefilePackage.sanity_check('build') - @MakefilePackage.on_package_attributes(run_tests=True) + @run_after('build') + @on_package_attributes(run_tests=True) def check_build(self): # Custom implementation goes here pass -The first decorator ``MakefilePackage.sanity_check('build')`` schedules this +The first decorator ``run_after('build')`` schedules this function to be invoked after the ``build`` phase has been executed, while the second one makes the invocation conditional on the fact that ``self.run_tests == True``. It is also possible to schedule a function to be invoked *before* a given phase -using the ``MakefilePackage.precondition`` decorator. +using the ``run_before`` decorator. .. note:: diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 0b1934112ee..6a28fbb2b03 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -156,14 +156,24 @@ #----------------------------------------------------------------------------- __all__ = [] -from spack.package import Package +from spack.package import Package, run_before, run_after, on_package_attributes from spack.build_systems.makefile import MakefilePackage from spack.build_systems.autotools import AutotoolsPackage from spack.build_systems.cmake import CMakePackage from spack.build_systems.python import PythonPackage from spack.build_systems.r import RPackage -__all__ += ['Package', 'CMakePackage', 'AutotoolsPackage', 'MakefilePackage', - 'PythonPackage', 'RPackage'] + +__all__ += [ + 'run_before', + 'run_after', + 'on_package_attributes', + 'Package', + 'CMakePackage', + 'AutotoolsPackage', + 'MakefilePackage', + 'PythonPackage', + 'RPackage' +] from spack.version import Version, ver __all__ += ['Version', 'ver'] diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index 37c780b3604..d08ea024283 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -30,9 +30,8 @@ from subprocess import PIPE from subprocess import check_call -import llnl.util.tty as tty from llnl.util.filesystem import working_dir -from spack.package import PackageBase +from spack.package import PackageBase, run_after class AutotoolsPackage(PackageBase): @@ -80,6 +79,8 @@ class AutotoolsPackage(PackageBase): #: phase install_targets = ['install'] + build_time_test_callbacks = ['check'] + def _do_patch_config_guess(self): """Some packages ship with an older config.guess and need to have this updated when installed on a newer architecture.""" @@ -168,7 +169,7 @@ def autoreconf(self, spec, prefix): """Not needed usually, configure should be already there""" pass - @PackageBase.sanity_check('autoreconf') + @run_after('autoreconf') def is_configure_or_die(self): """Checks the presence of a `configure` file after the :py:meth:`.autoreconf` phase. @@ -211,20 +212,7 @@ def install(self, spec, prefix): with working_dir(self.build_directory()): inspect.getmodule(self).make(*self.install_targets) - @PackageBase.sanity_check('build') - @PackageBase.on_package_attributes(run_tests=True) - def _run_default_function(self): - """This function is run after build if ``self.run_tests == True`` - - It will search for a method named :py:meth:`.check` and run it. A - sensible default is provided in the base class. - """ - try: - fn = getattr(self, 'check') - tty.msg('Trying default sanity checks [check]') - fn() - except AttributeError: - tty.msg('Skipping default sanity checks [method `check` not implemented]') # NOQA: ignore=E501 + run_after('build')(PackageBase._run_default_build_time_test_callbacks) def check(self): """Searches the Makefile for targets ``test`` and ``check`` @@ -235,4 +223,4 @@ def check(self): self._if_make_target_execute('check') # Check that self.prefix is there after installation - PackageBase.sanity_check('install')(PackageBase.sanity_check_prefix) + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index a5e23e54f45..823ef502c40 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -26,11 +26,10 @@ import inspect import platform -import llnl.util.tty as tty import spack.build_environment from llnl.util.filesystem import working_dir, join_path from spack.directives import depends_on -from spack.package import PackageBase +from spack.package import PackageBase, run_after class CMakePackage(PackageBase): @@ -72,6 +71,8 @@ class CMakePackage(PackageBase): build_targets = [] install_targets = ['install'] + build_time_test_callbacks = ['check'] + depends_on('cmake', type='build') def build_type(self): @@ -155,20 +156,7 @@ def install(self, spec, prefix): with working_dir(self.build_directory()): inspect.getmodule(self).make(*self.install_targets) - @PackageBase.sanity_check('build') - @PackageBase.on_package_attributes(run_tests=True) - def _run_default_function(self): - """This function is run after build if ``self.run_tests == True`` - - It will search for a method named ``check`` and run it. A sensible - default is provided in the base class. - """ - try: - fn = getattr(self, 'check') - tty.msg('Trying default build sanity checks [check]') - fn() - except AttributeError: - tty.msg('Skipping default build sanity checks [method `check` not implemented]') # NOQA: ignore=E501 + run_after('build')(PackageBase._run_default_build_time_test_callbacks) def check(self): """Searches the CMake-generated Makefile for the target ``test`` @@ -178,4 +166,4 @@ def check(self): self._if_make_target_execute('test') # Check that self.prefix is there after installation - PackageBase.sanity_check('install')(PackageBase.sanity_check_prefix) + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/build_systems/makefile.py b/lib/spack/spack/build_systems/makefile.py index e8fa86264bf..f07bcd62ab6 100644 --- a/lib/spack/spack/build_systems/makefile.py +++ b/lib/spack/spack/build_systems/makefile.py @@ -27,7 +27,7 @@ import llnl.util.tty as tty from llnl.util.filesystem import working_dir -from spack.package import PackageBase +from spack.package import PackageBase, run_after class MakefilePackage(PackageBase): @@ -100,4 +100,4 @@ def install(self, spec, prefix): inspect.getmodule(self).make(*self.install_targets) # Check that self.prefix is there after installation - PackageBase.sanity_check('install')(PackageBase.sanity_check_prefix) + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index d21c291ae6c..5e7c1c356d0 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -26,7 +26,7 @@ import inspect from spack.directives import extends -from spack.package import PackageBase +from spack.package import PackageBase, run_after from llnl.util.filesystem import working_dir @@ -306,4 +306,4 @@ def check_args(self, spec, prefix): return [] # Check that self.prefix is there after installation - PackageBase.sanity_check('install')(PackageBase.sanity_check_prefix) + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/build_systems/r.py b/lib/spack/spack/build_systems/r.py index a4f7359ec8a..cde3dc9fdd6 100644 --- a/lib/spack/spack/build_systems/r.py +++ b/lib/spack/spack/build_systems/r.py @@ -26,7 +26,7 @@ import inspect from spack.directives import extends -from spack.package import PackageBase +from spack.package import PackageBase, run_after class RPackage(PackageBase): @@ -55,4 +55,4 @@ def install(self, spec, prefix): self.stage.source_path) # Check that self.prefix is there after installation - PackageBase.sanity_check('install')(PackageBase.sanity_check_prefix) + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 24ff82fa385..0841ddcd617 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -78,13 +78,14 @@ class InstallPhase(object): search for execution. The method is retrieved at __get__ time, so that it can be overridden by subclasses of whatever class declared the phases. - It also provides hooks to execute prerequisite and sanity checks. + It also provides hooks to execute arbitrary callbacks before and after + the phase. """ def __init__(self, name): self.name = name - self.preconditions = [] - self.sanity_checks = [] + self.run_before = [] + self.run_after = [] def __get__(self, instance, owner): # The caller is a class that is trying to customize @@ -101,14 +102,13 @@ def phase_wrapper(spec, prefix): self._on_phase_start(instance) # Execute phase pre-conditions, # and give them the chance to fail - for check in self.preconditions: - # Do something sensible at some point - check(instance) + for callback in self.run_before: + callback(instance) phase(spec, prefix) # Execute phase sanity_checks, # and give them the chance to fail - for check in self.sanity_checks: - check(instance) + for callback in self.run_after: + callback(instance) # Check instance attributes at the end of a phase self._on_phase_exit(instance) return phase_wrapper @@ -129,8 +129,8 @@ def copy(self): # This bug-fix was not back-ported in Python 2.6 # http://bugs.python.org/issue1515 other = InstallPhase(self.name) - other.preconditions.extend(self.preconditions) - other.sanity_checks.extend(self.sanity_checks) + other.run_before.extend(self.run_before) + other.run_after.extend(self.run_after) return other @@ -142,22 +142,23 @@ class PackageMeta(spack.directives.DirectiveMetaMixin): """ phase_fmt = '_InstallPhase_{0}' - _InstallPhase_sanity_checks = {} - _InstallPhase_preconditions = {} + _InstallPhase_run_before = {} + _InstallPhase_run_after = {} + + def __new__(mcs, name, bases, attr_dict): - def __new__(meta, name, bases, attr_dict): - # Check if phases is in attr dict, then set - # install phases wrappers if 'phases' in attr_dict: + # Turn the strings in 'phases' into InstallPhase instances + # and add them as private attributes _InstallPhase_phases = [PackageMeta.phase_fmt.format(x) for x in attr_dict['phases']] # NOQA: ignore=E501 for phase_name, callback_name in zip(_InstallPhase_phases, attr_dict['phases']): # NOQA: ignore=E501 attr_dict[phase_name] = InstallPhase(callback_name) attr_dict['_InstallPhase_phases'] = _InstallPhase_phases - def _append_checks(check_name): + def _flush_callbacks(check_name): # Name of the attribute I am going to check it exists attr_name = PackageMeta.phase_fmt.format(check_name) - checks = getattr(meta, attr_name) + checks = getattr(mcs, attr_name) if checks: for phase_name, funcs in checks.items(): try: @@ -180,57 +181,61 @@ def _append_checks(check_name): PackageMeta.phase_fmt.format(phase_name)] getattr(phase, check_name).extend(funcs) # Clear the attribute for the next class - setattr(meta, attr_name, {}) - - @classmethod - def _register_checks(cls, check_type, *args): - def _register_sanity_checks(func): - attr_name = PackageMeta.phase_fmt.format(check_type) - check_list = getattr(meta, attr_name) - for item in args: - checks = check_list.setdefault(item, []) - checks.append(func) - setattr(meta, attr_name, check_list) - return func - return _register_sanity_checks - - @staticmethod - def on_package_attributes(**attrs): - def _execute_under_condition(func): - @functools.wraps(func) - def _wrapper(instance): - # If all the attributes have the value we require, then - # execute - if all([getattr(instance, key, None) == value for key, value in attrs.items()]): # NOQA: ignore=E501 - func(instance) - return _wrapper - return _execute_under_condition - - @classmethod - def precondition(cls, *args): - return cls._register_checks('preconditions', *args) - - @classmethod - def sanity_check(cls, *args): - return cls._register_checks('sanity_checks', *args) - - if all([not hasattr(x, '_register_checks') for x in bases]): - attr_dict['_register_checks'] = _register_checks - - if all([not hasattr(x, 'sanity_check') for x in bases]): - attr_dict['sanity_check'] = sanity_check - - if all([not hasattr(x, 'precondition') for x in bases]): - attr_dict['precondition'] = precondition - - if all([not hasattr(x, 'on_package_attributes') for x in bases]): - attr_dict['on_package_attributes'] = on_package_attributes + setattr(mcs, attr_name, {}) # Preconditions - _append_checks('preconditions') + _flush_callbacks('run_before') # Sanity checks - _append_checks('sanity_checks') - return super(PackageMeta, meta).__new__(meta, name, bases, attr_dict) + _flush_callbacks('run_after') + return super(PackageMeta, mcs).__new__(mcs, name, bases, attr_dict) + + @staticmethod + def register_callback(check_type, *phases): + def _decorator(func): + attr_name = PackageMeta.phase_fmt.format(check_type) + check_list = getattr(PackageMeta, attr_name) + for item in phases: + checks = check_list.setdefault(item, []) + checks.append(func) + setattr(PackageMeta, attr_name, check_list) + return func + return _decorator + + +def run_before(*phases): + """Registers a method of a package to be run before a given phase""" + return PackageMeta.register_callback('run_before', *phases) + + +def run_after(*phases): + """Registers a method of a package to be run after a given phase""" + return PackageMeta.register_callback('run_after', *phases) + + +def on_package_attributes(**attr_dict): + """Executes the decorated method only if at the moment of calling + the instance has attributes that are equal to certain values. + + :param dict attr_dict: dictionary mapping attribute names to their + required values + """ + def _execute_under_condition(func): + + @functools.wraps(func) + def _wrapper(instance, *args, **kwargs): + # If all the attributes have the value we require, then execute + has_all_attributes = all( + [hasattr(instance, key) for key in attr_dict] + ) + if has_all_attributes: + has_the_right_values = all( + [getattr(instance, key) == value for key, value in attr_dict.items()] # NOQA: ignore=E501 + ) + if has_the_right_values: + func(instance, *args, **kwargs) + return _wrapper + + return _execute_under_condition class PackageBase(object): @@ -1704,6 +1709,27 @@ def rpath_args(self): """ return " ".join("-Wl,-rpath,%s" % p for p in self.rpath) + build_time_test_callbacks = None + + @on_package_attributes(run_tests=True) + def _run_default_build_time_test_callbacks(self): + """Tries to call all the methods that are listed in the attribute + ``build_time_test_callbacks`` if ``self.run_tests is True``. + + If ``build_time_test_callbacks is None`` returns immediately. + """ + if self.build_time_test_callbacks is None: + return + + for name in self.build_time_test_callbacks: + try: + fn = getattr(self, name) + tty.msg('RUN-TESTS: build-time tests [{0}]'.format(name)) + fn() + except AttributeError: + msg = 'RUN-TESTS: method not implemented [{0}]' + tty.warn(msg.format(name)) + class Package(PackageBase): """General purpose class with a single ``install`` @@ -1716,7 +1742,7 @@ class Package(PackageBase): build_system_class = 'Package' # This will be used as a registration decorator in user # packages, if need be - PackageBase.sanity_check('install')(PackageBase.sanity_check_prefix) + run_after('install')(PackageBase.sanity_check_prefix) def install_dependency_symlinks(pkg, spec, prefix): diff --git a/var/spack/repos/builtin.mock/packages/cmake-client/package.py b/var/spack/repos/builtin.mock/packages/cmake-client/package.py index 51704e3f4b6..e82d2cd781c 100644 --- a/var/spack/repos/builtin.mock/packages/cmake-client/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake-client/package.py @@ -22,9 +22,10 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * import os +from spack import * + def check(condition, msg): """Raise an install error if condition is False.""" @@ -39,6 +40,28 @@ class CmakeClient(CMakePackage): version('1.0', '4cb3ff35b2472aae70f542116d616e63') + callback_counter = 0 + + flipped = False + run_this = True + check_this_is_None = None + did_something = False + + @run_after('cmake') + @run_before('cmake', 'build', 'install') + def increment(self): + self.callback_counter += 1 + + @run_after('cmake') + @on_package_attributes(run_this=True, check_this_is_None=None) + def flip(self): + self.flipped = True + + @run_after('cmake') + @on_package_attributes(does_not_exist=None) + def do_not_execute(self): + self.did_something = True + def setup_environment(self, spack_env, run_env): spack_cc # Ensure spack module-scope variable is avaiabl check(from_cmake == "from_cmake", @@ -67,11 +90,15 @@ def setup_dependent_package(self, module, dspec): "setup_dependent_package.") def cmake(self, spec, prefix): - pass + assert self.callback_counter == 1 - build = cmake + def build(self, spec, prefix): + assert self.did_something is False + assert self.flipped is True + assert self.callback_counter == 3 def install(self, spec, prefix): + assert self.callback_counter == 4 # check that cmake is in the global scope. global cmake check(cmake is not None, "No cmake was in environment!") diff --git a/var/spack/repos/builtin/packages/cmor/package.py b/var/spack/repos/builtin/packages/cmor/package.py index b5debf95377..bb4f3b4df22 100644 --- a/var/spack/repos/builtin/packages/cmor/package.py +++ b/var/spack/repos/builtin/packages/cmor/package.py @@ -49,7 +49,7 @@ class Cmor(AutotoolsPackage): depends_on('python@:2.7', when='+python') depends_on('py-numpy', type=('build', 'run'), when='+python') - @AutotoolsPackage.precondition('configure') + @run_before('configure') def validate(self): if '+fortran' in self.spec and not self.compiler.fc: msg = 'cannot build a fortran variant without a fortran compiler' diff --git a/var/spack/repos/builtin/packages/h5hut/package.py b/var/spack/repos/builtin/packages/h5hut/package.py index 22146372dcf..b12549df0da 100644 --- a/var/spack/repos/builtin/packages/h5hut/package.py +++ b/var/spack/repos/builtin/packages/h5hut/package.py @@ -47,7 +47,7 @@ class H5hut(AutotoolsPackage): # install: .libs/libH5hut.a: No such file or directory parallel = False - @AutotoolsPackage.precondition('configure') + @run_before('configure') def validate(self): """Checks if Fortran compiler is available.""" diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 222af536017..5e82818697d 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -70,7 +70,7 @@ class Hdf5(AutotoolsPackage): depends_on('szip', when='+szip') depends_on('zlib@1.1.2:') - @AutotoolsPackage.precondition('configure') + @run_before('configure') def validate(self): """ Checks if incompatible variants have been activated at the same time @@ -170,7 +170,7 @@ def configure(self, spec, prefix): arg for arg in m.group(1).split(' ') if arg != '-l'), 'libtool') - @AutotoolsPackage.sanity_check('install') + @run_after('install') def check_install(self): # Build and run a small program to test the installed HDF5 library spec = self.spec diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index dd864acbe31..4c34f3e3a0a 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -86,7 +86,7 @@ def setup_dependent_package(self, module, dep_spec): join_path(self.prefix.lib, 'libmpi.{0}'.format(dso_suffix)) ] - @AutotoolsPackage.precondition('autoreconf') + @run_before('autoreconf') def die_without_fortran(self): # Until we can pass variants such as +fortran through virtual # dependencies depends_on('mpi'), require Fortran compiler to @@ -106,7 +106,7 @@ def configure_args(self): '--{0}-ibverbs'.format('with' if '+verbs' in spec else 'without') ] - @AutotoolsPackage.sanity_check('install') + @run_after('install') def filter_compilers(self): """Run after install to make the MPI compilers use the compilers that Spack built the package with. diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index d5a70f077b5..327031b87e9 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -68,7 +68,7 @@ def blas_libs(self): def lapack_libs(self): return self.blas_libs - @MakefilePackage.precondition('edit') + @run_before('edit') def check_compilers(self): # As of 06/2016 there is no mechanism to specify that packages which # depends on Blas/Lapack need C or/and Fortran symbols. For now @@ -126,7 +126,7 @@ def build_targets(self): return self.make_defs + targets - @MakefilePackage.sanity_check('build') + @run_after('build') def check_build(self): make('tests', *self.make_defs) @@ -138,7 +138,7 @@ def install_targets(self): ] return make_args + self.make_defs - @MakefilePackage.sanity_check('install') + @run_after('install') def check_install(self): spec = self.spec # Openblas may pass its own test but still fail to compile Lapack diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 2c6b6d68ac6..bf844b74594 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -145,7 +145,7 @@ def verbs(self): elif self.spec.satisfies('@1.7:'): return 'verbs' - @AutotoolsPackage.precondition('autoreconf') + @run_before('autoreconf') def die_without_fortran(self): # Until we can pass variants such as +fortran through virtual # dependencies depends_on('mpi'), require Fortran compiler to @@ -239,7 +239,7 @@ def configure_args(self): return config_args - @AutotoolsPackage.sanity_check('install') + @run_after('install') def filter_compilers(self): """Run after install to make the MPI compilers use the compilers that Spack built the package with. diff --git a/var/spack/repos/builtin/packages/py-basemap/package.py b/var/spack/repos/builtin/packages/py-basemap/package.py index 4a35134e40a..d2934eb3c77 100644 --- a/var/spack/repos/builtin/packages/py-basemap/package.py +++ b/var/spack/repos/builtin/packages/py-basemap/package.py @@ -44,7 +44,7 @@ class PyBasemap(PythonPackage): def setup_environment(self, spack_env, run_env): spack_env.set('GEOS_DIR', self.spec['geos'].prefix) - @PythonPackage.sanity_check('install') + @run_after('install') def post_install_patch(self): spec = self.spec # We are not sure if this fix is needed before Python 3.5.2. diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index d808b0fc4bf..fc40dce9c11 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -95,7 +95,7 @@ class PyMatplotlib(PythonPackage): # depends_on('ttconv') depends_on('py-six@1.9.0:', type=('build', 'run')) - @PythonPackage.sanity_check('install') + @run_after('install') def set_backend(self): spec = self.spec prefix = self.prefix diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index 6ab967d8a51..4a61bfcec99 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -65,7 +65,7 @@ class PyYt(PythonPackage): depends_on("py-sympy", type=('build', 'run')) depends_on("python @2.7:2.999,3.4:") - @PythonPackage.sanity_check('install') + @run_after('install') def check_install(self): # The Python interpreter path can be too long for this # yt = Executable(join_path(prefix.bin, "yt")) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 30a6887a696..2babb250a56 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -113,7 +113,7 @@ def configure_args(self): return config_args - @AutotoolsPackage.sanity_check('install') + @run_after('install') def copy_makeconf(self): # Make a copy of Makeconf because it will be needed to properly build R # dependencies in Spack. @@ -121,7 +121,7 @@ def copy_makeconf(self): dst_makeconf = join_path(self.etcdir, 'Makeconf.spack') shutil.copy(src_makeconf, dst_makeconf) - @AutotoolsPackage.sanity_check('install') + @run_after('install') def filter_compilers(self): """Run after install to tell the configuration files and Makefiles to use the compilers that Spack built the package with. diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index d9b535305db..2ec8bb5236d 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -55,7 +55,7 @@ def setup_environment(self, spack_env, env): def build_directory(self): return 'unix' - @AutotoolsPackage.sanity_check('install') + @run_after('install') def symlink_tclsh(self): with working_dir(self.prefix.bin): symlink('tclsh{0}'.format(self.version.up_to(2)), 'tclsh') diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 5f8c2debb05..9add3b238cc 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -379,7 +379,7 @@ def cmake_args(self): ]) return options - @CMakePackage.sanity_check('install') + @run_after('install') def filter_python(self): # When trilinos is built with Python, libpytrilinos is included # through cmake configure files. Namely, Trilinos_LIBRARIES in From 5e2a96574b4a08d9558bfce82c05a07cd7571dbd Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Wed, 25 Jan 2017 18:26:17 -0500 Subject: [PATCH 0050/2394] Add support for IBM threaded compilers: xl*_r (#2894) * Add support for IBM threaded compilers, xl*_r Added new compiler class, xl_r; added default flags to the compilers.yaml file. * Add cppflags to the set of default flags to be added to the compilers stanza in compiler.yaml. These flags are optional. Only defined flags will be listed in the compilers.yaml file. * Fix scripting warnings revealed by flake8. Updated __init__.py and xl_r.py to conform with flake8 rules. * Add justification to the definition of the XL default compiler flags. --- lib/spack/env/cc | 8 +- lib/spack/env/xl_r/xlc++_r | 1 + lib/spack/env/xl_r/xlc_r | 1 + lib/spack/env/xl_r/xlf90_r | 1 + lib/spack/env/xl_r/xlf_r | 1 + lib/spack/spack/compilers/__init__.py | 4 + lib/spack/spack/compilers/xl.py | 23 ++++- lib/spack/spack/compilers/xl_r.py | 128 ++++++++++++++++++++++++++ 8 files changed, 158 insertions(+), 9 deletions(-) create mode 120000 lib/spack/env/xl_r/xlc++_r create mode 120000 lib/spack/env/xl_r/xlc_r create mode 120000 lib/spack/env/xl_r/xlf90_r create mode 120000 lib/spack/env/xl_r/xlf_r create mode 100644 lib/spack/spack/compilers/xl_r.py diff --git a/lib/spack/env/cc b/lib/spack/env/cc index c4e51834a5f..c0e97f3416f 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -98,25 +98,25 @@ case "$command" in cpp) mode=cpp ;; - cc|c89|c99|gcc|clang|icc|pgcc|xlc) + cc|c89|c99|gcc|clang|icc|pgcc|xlc|xlc_r) command="$SPACK_CC" language="C" comp="CC" lang_flags=C ;; - c++|CC|g++|clang++|icpc|pgc++|xlc++) + c++|CC|g++|clang++|icpc|pgc++|xlc++|xlc++_r) command="$SPACK_CXX" language="C++" comp="CXX" lang_flags=CXX ;; - ftn|f90|fc|f95|gfortran|ifort|pgfortran|xlf90|nagfor) + ftn|f90|fc|f95|gfortran|ifort|pgfortran|xlf90|xlf90_r|nagfor) command="$SPACK_FC" language="Fortran 90" comp="FC" lang_flags=F ;; - f77|gfortran|ifort|pgfortran|xlf|nagfor|ftn) + f77|gfortran|ifort|pgfortran|xlf|xlf_r|nagfor|ftn) command="$SPACK_F77" language="Fortran 77" comp="F77" diff --git a/lib/spack/env/xl_r/xlc++_r b/lib/spack/env/xl_r/xlc++_r new file mode 120000 index 00000000000..82c2b8e90a3 --- /dev/null +++ b/lib/spack/env/xl_r/xlc++_r @@ -0,0 +1 @@ +../cc \ No newline at end of file diff --git a/lib/spack/env/xl_r/xlc_r b/lib/spack/env/xl_r/xlc_r new file mode 120000 index 00000000000..82c2b8e90a3 --- /dev/null +++ b/lib/spack/env/xl_r/xlc_r @@ -0,0 +1 @@ +../cc \ No newline at end of file diff --git a/lib/spack/env/xl_r/xlf90_r b/lib/spack/env/xl_r/xlf90_r new file mode 120000 index 00000000000..82c2b8e90a3 --- /dev/null +++ b/lib/spack/env/xl_r/xlf90_r @@ -0,0 +1 @@ +../cc \ No newline at end of file diff --git a/lib/spack/env/xl_r/xlf_r b/lib/spack/env/xl_r/xlf_r new file mode 120000 index 00000000000..82c2b8e90a3 --- /dev/null +++ b/lib/spack/env/xl_r/xlf_r @@ -0,0 +1 @@ +../cc \ No newline at end of file diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index 6e65f502697..731acaf9c29 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -40,6 +40,7 @@ _imported_compilers_module = 'spack.compilers' _path_instance_vars = ['cc', 'cxx', 'f77', 'fc'] +_flags_instance_vars = ['cflags', 'cppflags', 'cxxflags', 'fflags'] _other_instance_vars = ['modules', 'operating_system', 'environment', 'extra_rpaths'] _cache_config_file = [] @@ -60,6 +61,9 @@ def _to_dict(compiler): d['paths'] = dict((attr, getattr(compiler, attr, None)) for attr in _path_instance_vars) d['flags'] = dict((fname, fvals) for fname, fvals in compiler.flags) + d['flags'].update(dict((attr, getattr(compiler, attr, None)) + for attr in _flags_instance_vars + if hasattr(compiler, attr))) d['operating_system'] = str(compiler.operating_system) d['target'] = str(compiler.target) d['modules'] = compiler.modules if compiler.modules else [] diff --git a/lib/spack/spack/compilers/xl.py b/lib/spack/spack/compilers/xl.py index f4b7c4237db..77a5ed7acd7 100644 --- a/lib/spack/spack/compilers/xl.py +++ b/lib/spack/spack/compilers/xl.py @@ -29,17 +29,16 @@ class Xl(Compiler): # Subclasses use possible names of C compiler - cc_names = ['xlc', 'xlc_r'] + cc_names = ['xlc'] # Subclasses use possible names of C++ compiler - cxx_names = ['xlC', 'xlC_r', 'xlc++', 'xlc++_r'] + cxx_names = ['xlC', 'xlc++'] # Subclasses use possible names of Fortran 77 compiler - f77_names = ['xlf', 'xlf_r'] + f77_names = ['xlf'] # Subclasses use possible names of Fortran 90 compiler - fc_names = ['xlf90', 'xlf90_r', 'xlf95', 'xlf95_r', - 'xlf2003', 'xlf2003_r', 'xlf2008', 'xlf2008_r'] + fc_names = ['xlf90', 'xlf95', 'xlf2003', 'xlf2008'] # Named wrapper links within spack.build_env_path link_paths = {'cc': 'xl/xlc', @@ -62,6 +61,20 @@ def cxx11_flag(self): def pic_flag(self): return "-qpic" + @property + def fflags(self): + # The -qzerosize flag is effective only for the Fortran 77 + # compilers and allows the use of zero size objects. + # For Fortran 90 and beyond, it is set by default and has not impact. + # Its use has no negative side effects. + # The -qstrict flag allows the Fortran 90+ compilers to parse the + # source files using fixed form rule. As a result, if -qfixed is in + # effect, free form files (that are not also fixed form files) will + # fail to compile regardless of the compiler invocation command. + # Use the -qfree flag in the packages' configuration file to undo the + # -qfixed flag, as the last one wins. + return "-qzerosize -qfixed" + @classmethod def default_version(cls, comp): """The '-qversion' is the standard option fo XL compilers. diff --git a/lib/spack/spack/compilers/xl_r.py b/lib/spack/spack/compilers/xl_r.py new file mode 100644 index 00000000000..ca76f219ce2 --- /dev/null +++ b/lib/spack/spack/compilers/xl_r.py @@ -0,0 +1,128 @@ +############################################################################## +# Copyright (c) 2016, International Business Machines Corporation +# +# This file is part of Spack. +# Created by Serban Maerean, serban@us.ibm.com based on a similar file, +# spack/lib/spack/spack/compilers/xl.py, produced by Todd Gamblin, +# tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack.compiler import * +import llnl.util.tty as tty +from spack.version import ver + + +class XlR(Compiler): + # Subclasses use possible names of C compiler + cc_names = ['xlc_r'] + + # Subclasses use possible names of C++ compiler + cxx_names = ['xlC_r', 'xlc++_r'] + + # Subclasses use possible names of Fortran 77 compiler + f77_names = ['xlf_r'] + + # Subclasses use possible names of Fortran 90 compiler + fc_names = ['xlf90_r', 'xlf95_r', 'xlf2003_r', 'xlf2008_r'] + + # Named wrapper links within spack.build_env_path + link_paths = {'cc': 'xl_r/xlc_r', + 'cxx': 'xl_r/xlc++_r', + 'f77': 'xl_r/xlf_r', + 'fc': 'xl_r/xlf90_r'} + + @property + def openmp_flag(self): + return "-qsmp=omp" + + @property + def cxx11_flag(self): + if self.version < ver('13.1'): + tty.die("Only xlC 13.1 and above have some c++11 support.") + else: + return "-qlanglvl=extended0x" + + @property + def pic_flag(self): + return("-qpic") + + @property + def fflags(self): + # The -qzerosize flag is effective only for the Fortran 77 + # compilers and allows the use of zero size objects. + # For Fortran 90 and beyond, it is set by default and has not impact. + # Its use has no negative side effects. + # The -qstrict flag allows the Fortran 90+ compilers to parse the + # source files using fixed form rule. As a result, if -qfixed is in + # effect, free form files (that are not also fixed form files) will + # fail to compile regardless of the compiler invocation command. + # Use the -qfree flag in the packages' configuration file to undo the + # -qfixed flag, as the last one wins. + return "-qzerosize -qfixed" + + @classmethod + def default_version(self, comp): + """The '-qversion' is the standard option fo XL compilers. + Output looks like this:: + + IBM XL C/C++ for Linux, V11.1 (5724-X14) + Version: 11.01.0000.0000 + + or:: + + IBM XL Fortran for Linux, V13.1 (5724-X16) + Version: 13.01.0000.0000 + + or:: + + IBM XL C/C++ for AIX, V11.1 (5724-X13) + Version: 11.01.0000.0009 + + or:: + + IBM XL C/C++ Advanced Edition for Blue Gene/P, V9.0 + Version: 09.00.0000.0017 + """ + + return get_compiler_version( + comp, '-qversion', r'([0-9]?[0-9]\.[0-9])') + + @classmethod + def fc_version(cls, fc): + """The fortran and C/C++ versions of the XL compiler are always + two units apart. By this we mean that the fortran release that + goes with XL C/C++ 11.1 is 13.1. Having such a difference in + version number is confusing spack quite a lot. Most notably + if you keep the versions as is the default xl compiler will + only have fortran and no C/C++. So we associate the Fortran + compiler with the version associated to the C/C++ compiler. + One last stumble. Version numbers over 10 have at least a .1 + those under 10 a .0. There is no xlf 9.x or under currently + available. BG/P and BG/L can such a compiler mix and possibly + older version of AIX and linux on power. + """ + fver = get_compiler_version(fc, '-qversion', r'([0-9]?[0-9]\.[0-9])') + cver = float(fver) - 2 + if cver < 10: + cver = cver - 0.1 + return str(cver) + + @classmethod + def f77_version(cls, f77): + return cls.fc_version(f77) From a4f594a68da6fb50799961d2ef81be1dac772d19 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Thu, 26 Jan 2017 02:14:55 +0100 Subject: [PATCH 0051/2394] Update valgrind to 3.12.0 (#2929) --- var/spack/repos/builtin/packages/valgrind/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/valgrind/package.py b/var/spack/repos/builtin/packages/valgrind/package.py index e7ae227c27c..0794e77ba09 100644 --- a/var/spack/repos/builtin/packages/valgrind/package.py +++ b/var/spack/repos/builtin/packages/valgrind/package.py @@ -40,6 +40,7 @@ class Valgrind(Package): homepage = "http://valgrind.org/" url = "http://valgrind.org/downloads/valgrind-3.11.0.tar.bz2" + version('3.12.0', '6eb03c0c10ea917013a7622e483d61bb') version('3.11.0', '4ea62074da73ae82e0162d6550d3f129') version('3.10.1', '60ddae962bc79e7c95cfc4667245707f') version('3.10.0', '7c311a72a20388aceced1aa5573ce970') From 8ae380fb71eefc288a532b4574cf53cec32f74e4 Mon Sep 17 00:00:00 2001 From: becker33 Date: Wed, 25 Jan 2017 20:38:10 -0800 Subject: [PATCH 0052/2394] Fixes for parsing specs with hashes (#2889) - Allows hashes to be specified after other parts of the spec - Does not allow other parts of the spec to be specified after the hash - The hash must either end input or be followed by another separate spec - The next spec cannot be an anonymous spec (it must start with a package name or a hash) See #2769 (after it was merged) for further discussion of this interface addition. That discussion resulted in these requirements: ``` python # 1 spec /abc123 # 1 spec python /abc123 # 1 spec /456789 # 1 spec python /abc123 /456789 # 2 specs python /456789 /abc123 # 2 specs /abc123 /456789 # 2 specs /456789 /abc123 # 2 specs /456789 /abc123 python # 3 specs ``` assuming `abc123` and `456789` are both hashes of different python specs. --- lib/spack/spack/spec.py | 120 +++++++++++++++++----------- lib/spack/spack/test/spec_syntax.py | 116 +++++++++++++++++++++++++++ 2 files changed, 191 insertions(+), 45 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 6cf80754a1d..8f315fdabf5 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -152,7 +152,9 @@ 'UnsatisfiableArchitectureSpecError', 'UnsatisfiableProviderSpecError', 'UnsatisfiableDependencySpecError', - 'AmbiguousHashError'] + 'AmbiguousHashError', + 'InvalidHashError', + 'RedundantSpecError'] # Valid pattern for an identifier in Spack identifier_re = r'\w[\w-]*' @@ -1993,7 +1995,7 @@ def _autospec(self, spec_like): except SpecError: return parse_anonymous_spec(spec_like, self.name) - def satisfies(self, other, deps=True, strict=False): + def satisfies(self, other, deps=True, strict=False, strict_deps=False): """Determine if this spec satisfies all constraints of another. There are two senses for satisfies: @@ -2067,7 +2069,8 @@ def satisfies(self, other, deps=True, strict=False): # If we need to descend into dependencies, do it, otherwise we're done. if deps: deps_strict = strict - if not (self.name and other.name): + if self.concrete and not other.name: + # We're dealing with existing specs deps_strict = True return self.satisfies_dependencies(other, strict=deps_strict) else: @@ -2083,9 +2086,10 @@ def satisfies_dependencies(self, other, strict=False): if other._dependencies and not self._dependencies: return False - alldeps = set(d.name for d in self.traverse(root=False)) - if not all(dep.name in alldeps - for dep in other.traverse(root=False)): + selfdeps = self.traverse(root=False) + otherdeps = other.traverse(root=False) + if not all(any(d.satisfies(dep) for d in selfdeps) + for dep in otherdeps): return False elif not self._dependencies or not other._dependencies: @@ -2697,30 +2701,28 @@ def do_parse(self): specs = [] try: - while self.next or self.previous: + while self.next: # TODO: clean this parsing up a bit - if self.previous: - # We picked up the name of this spec while finishing the - # previous spec - specs.append(self.spec(self.previous.value)) - self.previous = None - elif self.accept(ID): + if self.accept(ID): self.previous = self.token if self.accept(EQ): - # We're either parsing an anonymous spec beginning - # with a key-value pair or adding a key-value pair - # to the last spec + # We're parsing an anonymous spec beginning with a + # key-value pair. if not specs: specs.append(self.spec(None)) self.expect(VAL) + # Raise an error if the previous spec is already + # concrete (assigned by hash) + if specs[-1]._hash: + raise RedundantSpecError(specs[-1], + 'key-value pair') specs[-1]._add_flag( self.previous.value, self.token.value) self.previous = None else: # We're parsing a new spec by name - value = self.previous.value self.previous = None - specs.append(self.spec(value)) + specs.append(self.spec(self.token.value)) elif self.accept(HASH): # We're finding a spec by hash specs.append(self.spec_by_hash()) @@ -2728,27 +2730,38 @@ def do_parse(self): elif self.accept(DEP): if not specs: # We're parsing an anonymous spec beginning with a - # dependency - self.previous = self.token + # dependency. Push the token to recover after creating + # anonymous spec + self.push_tokens([self.token]) specs.append(self.spec(None)) - self.previous = None - if self.accept(HASH): - # We're finding a dependency by hash for an anonymous - # spec - dep = self.spec_by_hash() else: - # We're adding a dependency to the last spec - self.expect(ID) - dep = self.spec(self.token.value) + if self.accept(HASH): + # We're finding a dependency by hash for an + # anonymous spec + dep = self.spec_by_hash() + else: + # We're adding a dependency to the last spec + self.expect(ID) + dep = self.spec(self.token.value) - # command line deps get empty deptypes now. - # Real deptypes are assigned later per packages. - specs[-1]._add_dependency(dep, ()) + # Raise an error if the previous spec is already + # concrete (assigned by hash) + if specs[-1]._hash: + raise RedundantSpecError(specs[-1], 'dependency') + # command line deps get empty deptypes now. + # Real deptypes are assigned later per packages. + specs[-1]._add_dependency(dep, ()) else: # If the next token can be part of a valid anonymous spec, # create the anonymous spec if self.next.type in (AT, ON, OFF, PCT): + # Raise an error if the previous spec is already + # concrete (assigned by hash) + if specs and specs[-1]._hash: + raise RedundantSpecError(specs[-1], + 'compiler, version, ' + 'or variant') specs.append(self.spec(None)) else: self.unexpected_token() @@ -2783,13 +2796,13 @@ def spec_by_hash(self): if len(matches) != 1: raise AmbiguousHashError( - "Multiple packages specify hash %s." % self.token.value, - *matches) + "Multiple packages specify hash beginning %s." + % self.token.value, *matches) return matches[0] def spec(self, name): - """Parse a spec out of the input. If a spec is supplied, then initialize + """Parse a spec out of the input. If a spec is supplied, initialize and return it instead of creating a new one.""" if name: spec_namespace, dot, spec_name = name.rpartition('.') @@ -2823,16 +2836,6 @@ def spec(self, name): # unspecified or not. added_version = False - if self.previous and self.previous.value == DEP: - if self.accept(HASH): - spec.add_dependency(self.spec_by_hash()) - else: - self.expect(ID) - if self.accept(EQ): - raise SpecParseError(spack.parse.ParseError( - "", "", "Expected dependency received anonymous spec")) - spec.add_dependency(self.spec(self.token.value)) - while self.next: if self.accept(AT): vlist = self.version_list() @@ -2858,13 +2861,25 @@ def spec(self, name): self.previous = None else: # We've found the start of a new spec. Go back to do_parse + # and read this token again. + self.push_tokens([self.token]) + self.previous = None break + elif self.accept(HASH): + # Get spec by hash and confirm it matches what we already have + hash_spec = self.spec_by_hash() + if hash_spec.satisfies(spec): + spec = hash_spec + break + else: + raise InvalidHashError(spec, hash_spec.dag_hash()) + else: break # If there was no version in the spec, consier it an open range - if not added_version: + if not added_version and not spec._hash: spec.versions = VersionList(':') return spec @@ -3139,3 +3154,18 @@ def __init__(self, msg, *specs): super(AmbiguousHashError, self).__init__(msg) for spec in specs: print(' ', spec.format('$.$@$%@+$+$=$#')) + + +class InvalidHashError(SpecError): + def __init__(self, spec, hash): + super(InvalidHashError, self).__init__( + "The spec specified by %s does not match provided spec %s" + % (hash, spec)) + + +class RedundantSpecError(SpecError): + def __init__(self, spec, addition): + super(RedundantSpecError, self).__init__( + "Attempting to add %s to spec %s which is already concrete." + " This is likely the result of adding to a spec specified by hash." + % (addition, spec)) diff --git a/lib/spack/spack/test/spec_syntax.py b/lib/spack/spack/test/spec_syntax.py index 043d9b176fb..fcb6cfa907b 100644 --- a/lib/spack/spack/test/spec_syntax.py +++ b/lib/spack/spack/test/spec_syntax.py @@ -132,6 +132,13 @@ def test_package_names(self): self.check_parse("mvapich_foo") self.check_parse("_mvapich_foo") + def test_anonymous_specs(self): + self.check_parse("%intel") + self.check_parse("@2.7") + self.check_parse("^zlib") + self.check_parse("+foo") + self.check_parse("arch=test-None-None", "platform=test") + def test_simple_dependence(self): self.check_parse("openmpi^hwloc") self.check_parse("openmpi^hwloc^libunwind") @@ -218,6 +225,115 @@ def test_parse_errors(self): errors = ['x@@1.2', 'x ^y@@1.2', 'x@1.2::', 'x::'] self._check_raises(SpecParseError, errors) + def test_spec_by_hash(self, database): + specs = database.mock.db.query() + hashes = [s._hash for s in specs] # Preserves order of elements + + # Make sure the database is still the shape we expect + assert len(specs) > 3 + + self.check_parse(str(specs[0]), '/' + hashes[0]) + self.check_parse(str(specs[1]), '/ ' + hashes[1][:5]) + self.check_parse(str(specs[2]), specs[2].name + '/' + hashes[2]) + self.check_parse(str(specs[3]), + specs[3].name + '@' + str(specs[3].version) + + ' /' + hashes[3][:6]) + + def test_dep_spec_by_hash(self, database): + specs = database.mock.db.query() + hashes = [s._hash for s in specs] # Preserves order of elements + + # Make sure the database is still the shape we expect + assert len(specs) > 10 + assert specs[4].name in specs[10] + assert specs[-1].name in specs[10] + + spec1 = sp.Spec(specs[10].name + '^/' + hashes[4]) + assert specs[4].name in spec1 and spec1[specs[4].name] == specs[4] + spec2 = sp.Spec(specs[10].name + '%' + str(specs[10].compiler) + + ' ^ / ' + hashes[-1]) + assert (specs[-1].name in spec2 and + spec2[specs[-1].name] == specs[-1] and + spec2.compiler == specs[10].compiler) + spec3 = sp.Spec(specs[10].name + '^/' + hashes[4][:4] + + '^ / ' + hashes[-1][:5]) + assert (specs[-1].name in spec3 and + spec3[specs[-1].name] == specs[-1] and + specs[4].name in spec3 and spec3[specs[4].name] == specs[4]) + + def test_multiple_specs_with_hash(self, database): + specs = database.mock.db.query() + hashes = [s._hash for s in specs] # Preserves order of elements + + assert len(specs) > 3 + + output = sp.parse(specs[0].name + '/' + hashes[0] + '/' + hashes[1]) + assert len(output) == 2 + output = sp.parse('/' + hashes[0] + '/' + hashes[1]) + assert len(output) == 2 + output = sp.parse('/' + hashes[0] + '/' + hashes[1] + + ' ' + specs[2].name) + assert len(output) == 3 + output = sp.parse('/' + hashes[0] + + ' ' + specs[1].name + ' ' + specs[2].name) + assert len(output) == 3 + output = sp.parse('/' + hashes[0] + ' ' + + specs[1].name + ' / ' + hashes[1]) + assert len(output) == 2 + + def test_ambiguous_hash(self, database): + specs = database.mock.db.query() + hashes = [s._hash for s in specs] # Preserves order of elements + + # Make sure the database is as expected + assert hashes[1][:1] == hashes[2][:1] == 'b' + + ambiguous_hashes = ['/b', + specs[1].name + '/b', + specs[0].name + '^/b', + specs[0].name + '^' + specs[1].name + '/b'] + self._check_raises(AmbiguousHashError, ambiguous_hashes) + + def test_invalid_hash(self, database): + specs = database.mock.db.query() + hashes = [s._hash for s in specs] # Preserves order of elements + + # Make sure the database is as expected + assert (hashes[0] != hashes[3] and + hashes[1] != hashes[4] and len(specs) > 4) + + inputs = [specs[0].name + '/' + hashes[3], + specs[1].name + '^' + specs[4].name + '/' + hashes[0], + specs[1].name + '^' + specs[4].name + '/' + hashes[1]] + self._check_raises(InvalidHashError, inputs) + + def test_nonexistent_hash(self, database): + # This test uses database to make sure we don't accidentally access + # real installs, however unlikely + specs = database.mock.db.query() + hashes = [s._hash for s in specs] # Preserves order of elements + + # Make sure the database is as expected + assert 'abc123' not in [h[:6] for h in hashes] + + nonexistant_hashes = ['/abc123', + specs[0].name + '/abc123'] + self._check_raises(SystemExit, nonexistant_hashes) + + def test_redundant_spec(self, database): + specs = database.mock.db.query() + hashes = [s._hash for s in specs] # Preserves order of elements + + # Make sure the database is as expected + assert len(specs) > 3 + + redundant_specs = ['/' + hashes[0] + '%' + str(specs[0].compiler), + specs[1].name + '/' + hashes[1] + + '@' + str(specs[1].version), + specs[2].name + '/' + hashes[2] + '^ libelf', + '/' + hashes[3] + ' cflags="-O3 -fPIC"'] + self._check_raises(RedundantSpecError, redundant_specs) + def test_duplicate_variant(self): duplicates = [ 'x@1.2+debug+debug', From 11454280e72badd5ca07f90cd87733e54566f2ab Mon Sep 17 00:00:00 2001 From: Timothy Brown Date: Thu, 26 Jan 2017 04:38:44 +0000 Subject: [PATCH 0053/2394] Updating udunits version. (#2922) * Updating udunits. Udunits 2.2.21 is no longer on the unidata ftp site. The latest is 2.2.23, adding that and it's md5sum. * Updating udunits2 download URL. The Unidata ftp site does not keep previous versions of udunits. However all the tagged versions are in their github.com repository. Updating the URL to use github. * Updating udunits2 with a autoreconf def. The udunits packages on github do not contain a configure script. One has to run autoreconf to generate it, so adding that to package file. Also updated to the latest version and all md5 checksums. --- .../builtin/packages/udunits2/package.py | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/udunits2/package.py b/var/spack/repos/builtin/packages/udunits2/package.py index cfc8e30c413..faf40551947 100644 --- a/var/spack/repos/builtin/packages/udunits2/package.py +++ b/var/spack/repos/builtin/packages/udunits2/package.py @@ -29,11 +29,34 @@ class Udunits2(AutotoolsPackage): """Automated units conversion""" homepage = "http://www.unidata.ucar.edu/software/udunits" - url = "ftp://ftp.unidata.ucar.edu/pub/udunits/udunits-2.2.21.tar.gz" + url = "https://github.com/Unidata/UDUNITS-2/archive/v2.2.23.tar.gz" - version('2.2.21', '1f6d3375efc1f124790a4efb7102cdb7') + version('2.2.25', '373106a0fcd20c40fc53a975c9fa4fca') + version('2.2.24', '316911493e3b5c28ff7019223b4e27ea') + version('2.2.23', '0c0d9b1ebd7ad066233bedf40e66f1ba') + version('2.2.21', '167738b3ec886da1b92239de9cbbbc39') depends_on('expat') depends_on('bison', type='build') depends_on('flex', type='build') + depends_on('libtool', type='build') + depends_on('automake', type='build') + depends_on('autoconf', type='build') + depends_on('pkg-config', type='build') + + def autoreconf(self, spec, prefix): + # Work around autogen.sh oddities + # bash = which("bash") + # bash("./autogen.sh") + mkdirp("config") + autoreconf = which("autoreconf") + autoreconf("--install", "--verbose", "--force", + "-I", "config", + "-I", join_path(spec['pkg-config'].prefix, + "share", "aclocal"), + "-I", join_path(spec['automake'].prefix, + "share", "aclocal"), + "-I", join_path(spec['libtool'].prefix, + "share", "aclocal"), + ) From 1ddd9c75c6326cb5733769a168d62e410d02fe46 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 25 Jan 2017 23:39:10 -0500 Subject: [PATCH 0054/2394] c-blosc: Add variant to disable AVX2 support (#2931) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not all compilers support AVX2 instructions, and the package’s test for this is much too simplistic. --- var/spack/repos/builtin/packages/c-blosc/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/c-blosc/package.py b/var/spack/repos/builtin/packages/c-blosc/package.py index e7695c67c78..8bb0e295afb 100644 --- a/var/spack/repos/builtin/packages/c-blosc/package.py +++ b/var/spack/repos/builtin/packages/c-blosc/package.py @@ -40,12 +40,15 @@ class CBlosc(Package): version('1.8.1', 'd73d5be01359cf271e9386c90dcf5b05') version('1.8.0', '5b92ecb287695ba20cc33d30bf221c4f') + variant('avx2', default=True, description='Enable AVX2 support') + depends_on("cmake", type='build') depends_on("snappy") depends_on("zlib") def install(self, spec, prefix): - cmake('.', *std_cmake_args) + avx2 = '-DDEACTIVATE_AVX2=%s' % ('ON' if '~avx2' in spec else 'OFF') + cmake('.', avx2, *std_cmake_args) make() make("install") From c24dc9072e1e8bddc3dbda09f1b98b51d91fc644 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 26 Jan 2017 05:39:40 +0100 Subject: [PATCH 0055/2394] oce: fix fetching (#2921) * oce: fix fetching apparently the fetcher is confused when there is a mixture of 3-digits versions and 2-digits versions, i.e. 0.18 and 0.17.2 * flake8 --- var/spack/repos/builtin/packages/oce/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py index 950621da40a..c3488c137af 100644 --- a/var/spack/repos/builtin/packages/oce/package.py +++ b/var/spack/repos/builtin/packages/oce/package.py @@ -32,7 +32,6 @@ class Oce(Package): Open CASCADE library. """ homepage = "https://github.com/tpaviot/oce" - url = "https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz" version('0.18', '226e45e77c16a4a6e127c71fefcd171410703960ae75c7ecc7eb68895446a993') version('0.17.2', 'bf2226be4cd192606af677cf178088e5') @@ -47,6 +46,10 @@ class Oce(Package): depends_on('cmake@2.8:', type='build') depends_on('tbb', when='+tbb') + def url_for_version(self, version): + return 'https://github.com/tpaviot/oce/archive/OCE-%s.tar.gz' % ( + version.dotted) + # There is a bug in OCE which appears with Clang (version?) or GCC 6.0 # and has to do with compiler optimization, see # https://github.com/tpaviot/oce/issues/576 From b18b6bad6f35ffa67ed7f293901b4918d53dd3d4 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 25 Jan 2017 22:41:09 -0600 Subject: [PATCH 0056/2394] Remove intel-parallel-studio +all checks (#2905) --- .../packages/intel-parallel-studio/package.py | 13 ------------- 1 file changed, 13 deletions(-) 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 8564eeb9411..941ef9befbe 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -127,20 +127,7 @@ def url_for_version(self, version): return url + ".tgz" - 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 = "" mkl_components = "" From 596190c83cd10111b35565bd19e0bcf6cdd58f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sam=20Guti=C3=A9rrez?= Date: Wed, 25 Jan 2017 21:41:26 -0700 Subject: [PATCH 0057/2394] Update libquo's homepage, url, and description. (#2925) * Update libquo's homepage, url, and description. Recently LANL moved to lanl (from losalamos). * Fix formatting. Conform to style guidelines. * More style updates. Doesn't appear to be necessary, but for good measure. --- var/spack/repos/builtin/packages/libquo/package.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/libquo/package.py b/var/spack/repos/builtin/packages/libquo/package.py index 8856913bb26..3e574f70047 100644 --- a/var/spack/repos/builtin/packages/libquo/package.py +++ b/var/spack/repos/builtin/packages/libquo/package.py @@ -27,15 +27,13 @@ class Libquo(Package): - """A high-level, easy to use programming interface tailored specifically - for MPI/MPI+X codes that may benefit from evolving process binding - policies during their execution. QUO allows for arbitrary process binding - policies to be enacted and reverted during the execution of an MPI/MPI+X - application as different computational phases are entered and exited, - respectively.""" - homepage = "https://github.com/losalamos/libquo" - url = "https://github.com/losalamos/libquo/archive/v1.2.9.tar.gz" + """QUO (as in "status quo") is a runtime library that aids in accommodating + thread-level heterogeneity in dynamic, phased MPI+X applications comprising + single- and multi-threaded libraries.""" + + homepage = "https://github.com/lanl/libquo" + url = "https://github.com/lanl/libquo/archive/v1.2.9.tar.gz" version('1.2.9', 'ca82ab33f13e2b89983f81e7c02e98c2') From e4d2d747ce247f726551e9207f6bedb7c68f2162 Mon Sep 17 00:00:00 2001 From: scheibelp Date: Wed, 25 Jan 2017 20:43:12 -0800 Subject: [PATCH 0058/2394] Spec.satisfies accesses Spec.concrete as property (#2928) * Spec.satisfies accesses Spec.concrete as property Fixes #2760 When copying a spec, _concrete is always set to False for each dependency. "Spec.satisfies" was accessing the member "_concrete" directly instead of using the property "concrete". This means that if you copy a spec, the dependencies will be considered equal, but did not necessarily satisfy one another. Spec.satisfies is a prerequisite for a package to be considered an extension; as a consequence, an extension with run-time dependencies that were also extensions did not activate those extensions. This updates Spec.satisfies to avoid checking the cached member "_concrete" directly. * Added test to check for activation of dependency extension * Added test to check for transitive satisfiability between a spec and its copy --- lib/spack/spack/package.py | 11 +++-- lib/spack/spack/spec.py | 4 +- lib/spack/spack/test/packages.py | 7 ++++ lib/spack/spack/test/spec_semantics.py | 8 ++++ .../builtin.mock/packages/extendee/package.py | 39 ++++++++++++++++++ .../packages/extension1/package.py | 39 ++++++++++++++++++ .../packages/extension2/package.py | 41 +++++++++++++++++++ 7 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/extendee/package.py create mode 100644 var/spack/repos/builtin.mock/packages/extension1/package.py create mode 100644 var/spack/repos/builtin.mock/packages/extension2/package.py diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 0841ddcd617..797ae1ff5d5 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1560,10 +1560,9 @@ def do_activate(self, force=False): # Activate any package dependencies that are also extensions. if not force: - for spec in self.spec.traverse(root=False, deptype='run'): - if spec.package.extends(self.extendee_spec): - if not spec.package.activated: - spec.package.do_activate(force=force) + for spec in self.dependency_activations(): + if not spec.package.activated: + spec.package.do_activate(force=force) self.extendee_spec.package.activate(self, **self.extendee_args) @@ -1571,6 +1570,10 @@ def do_activate(self, force=False): tty.msg("Activated extension %s for %s" % (self.spec.short_spec, self.extendee_spec.format("$_$@$+$%@"))) + def dependency_activations(self): + return (spec for spec in self.spec.traverse(root=False, deptype='run') + if spec.package.extends(self.extendee_spec)) + def activate(self, extension, **kwargs): """Symlinks all files from the extension into extendee's install dir. diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 8f315fdabf5..059653a72ad 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2011,8 +2011,8 @@ def satisfies(self, other, deps=True, strict=False, strict_deps=False): other = self._autospec(other) # The only way to satisfy a concrete spec is to match its hash exactly. - if other._concrete: - return self._concrete and self.dag_hash() == other.dag_hash() + if other.concrete: + return self.concrete and self.dag_hash() == other.dag_hash() # A concrete provider can satisfy a virtual dependency. if not self.virtual and other.virtual: diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py index 6ae8a33a247..bc1f438e448 100644 --- a/lib/spack/spack/test/packages.py +++ b/lib/spack/spack/test/packages.py @@ -108,6 +108,13 @@ def test_inheritance_of_diretives(): assert 'mpi' in s +def test_dependency_extensions(): + s = Spec('extension2') + s.concretize() + deps = set(x.name for x in s.package.dependency_activations()) + assert deps == set(['extension1']) + + def test_import_class_from_package(builtin_mock): from spack.pkg.builtin.mock.mpich import Mpich # noqa diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 84c8650f15f..2f3b2b1b8de 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -287,6 +287,14 @@ def test_unsatisfiable_compiler_flag(self): # 'mpich' is concrete: check_unsatisfiable('mpich', 'mpich cppflags="-O3"', True) + def test_copy_satisfies_transitive(self): + spec = Spec('dttop') + spec.concretize() + copy = spec.copy() + for s in spec.traverse(): + assert s.satisfies(copy[s.name]) + assert copy[s.name].satisfies(s) + def test_unsatisfiable_compiler_flag_mismatch(self): # No matchi in specs check_unsatisfiable( diff --git a/var/spack/repos/builtin.mock/packages/extendee/package.py b/var/spack/repos/builtin.mock/packages/extendee/package.py new file mode 100644 index 00000000000..f86bcf7de5a --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/extendee/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Extendee(Package): + """A package with extensions""" + + homepage = "http://www.example.com" + url = "http://www.example.com/extendee-1.0.tar.gz" + + extendable = True + + version('1.0', 'hash-extendee-1.0') + + def install(self, spec, prefix): + pass diff --git a/var/spack/repos/builtin.mock/packages/extension1/package.py b/var/spack/repos/builtin.mock/packages/extension1/package.py new file mode 100644 index 00000000000..d3babc6ce40 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/extension1/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Extension1(Package): + """A package which extends another package""" + + homepage = "http://www.example.com" + url = "http://www.example.com/extension1-1.0.tar.gz" + + extends('extendee') + + version('1.0', 'hash-extension1-1.0') + + def install(self, spec, prefix): + pass diff --git a/var/spack/repos/builtin.mock/packages/extension2/package.py b/var/spack/repos/builtin.mock/packages/extension2/package.py new file mode 100644 index 00000000000..fcb23ab8ede --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/extension2/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Extension2(Package): + """A package which extends another package. It also depends on another + package which extends the same package.""" + + homepage = "http://www.example.com" + url = "http://www.example.com/extension2-1.0.tar.gz" + + extends('extendee') + depends_on('extension1', type=('build', 'run')) + + version('1.0', 'hash-extension2-1.0') + + def install(self, spec, prefix): + pass From d324d13456611c4c93f0eb33a636affd7839febd Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 26 Jan 2017 09:46:35 +0100 Subject: [PATCH 0059/2394] py-numpy: rework blas/lapack (#2365) * py-numpy: fix blas/lapack section title * py-numpy: rework BLAS/LAPACK including a workaround for MKL due to limited config system of numpy --- .../builtin/packages/py-numpy/package.py | 52 +++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 25a5f04b8c6..a48f5a19552 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -75,10 +75,56 @@ def patch(self): lapackblas += spec['blas'].blas_libs if '+blas' in spec or '+lapack' in spec: + # note that one should not use [blas_opt] and [lapack_opt], see + # https://github.com/numpy/numpy/commit/ffd4332262ee0295cb942c94ed124f043d801eb6 with open('site.cfg', 'w') as f: - f.write('[DEFAULT]\n') - f.write('libraries=%s\n' % ','.join(lapackblas.names)) - f.write('library_dirs=%s\n' % ':'.join(lapackblas.directories)) + # Unfortunately, numpy prefers to provide each BLAS/LAPACK + # differently. + names = ','.join(lapackblas.names) + dirs = ':'.join(lapackblas.directories) + # First, workout the defaults. + # The section title for the defaults changed in @1.10, see + # https://github.com/numpy/numpy/blob/master/site.cfg.example + if spec.satisfies('@:1.9.2'): + f.write('[DEFAULT]\n') + else: + f.write('[ALL]\n') + if not ('^openblas' in spec or + '^mkl' in spec or + '^atlas' in spec): + f.write('libraries=%s\n' % names) + f.write('library_dirs=%s\n' % dirs) + if not ((platform.system() == "Darwin") and (platform.mac_ver()[0] == '10.12')): f.write('rpath=%s\n' % ':'.join(lapackblas.directories)) + + # Now special treatment for some (!) BLAS/LAPACK. Note that + # in this case library_dirs can not be specified within [ALL]. + if '^openblas' in spec: + f.write('[openblas]\n') + f.write('libraries=%s\n' % names) + f.write('library_dirs=%s\n' % dirs) + elif '^mkl' in spec: + # numpy does not expect system libraries needed for MKL + # here. + # names = [x for x in names if x.startswith('mkl')] + # FIXME: as of @1.11.2, numpy does not work with separately + # specified threading and interface layers. A workaround is + # a terribly bad idea to use mkl_rt. In this case Spack + # won't no longer be able to guarantee that one and the + # same variant of Blas/Lapack (32/64bit, threaded/serial) + # is used within the DAG. This may lead to a lot of + # hard-to-debug segmentation faults on user's side. Users + # may also break working installation by (unconciously) + # setting environment variable to switch between different + # interface and threading layers dynamically. From this + # perspective it is no different from throwing away RPATH's + # and using LD_LIBRARY_PATH throughout Spack. + f.write('[mkl]\n') + f.write('mkl_libs=%s\n' % 'mkl_rt') + f.write('library_dirs=%s\n' % dirs) + elif '^atlas' in spec: + f.write('[atlas]\n') + f.write('atlas_libs=%s\n' % names) + f.write('library_dirs=%s\n' % dirs) From f59011f31418dd78121683696dc2ba23a80f9bb1 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Thu, 26 Jan 2017 10:33:20 +0100 Subject: [PATCH 0060/2394] Adol-C: Enable trig/erf functions; advanced branching (#2747) --- var/spack/repos/builtin/packages/adol-c/package.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/adol-c/package.py b/var/spack/repos/builtin/packages/adol-c/package.py index 5c8d8947574..4260b6b21b2 100644 --- a/var/spack/repos/builtin/packages/adol-c/package.py +++ b/var/spack/repos/builtin/packages/adol-c/package.py @@ -36,6 +36,8 @@ class AdolC(Package): version('2.6.2', '0f9547584c99c0673e4f81cf64e8d865') version('2.6.1', '1032b28427d6e399af4610e78c0f087b') + variant('advanced_branching', default=False, + description='Enable advanced branching to reduce retaping') variant('doc', default=True, description='Install documentation') variant('openmp', default=False, description='Enable OpenMP support') variant('sparse', default=False, description='Enable sparse drivers') @@ -45,10 +47,13 @@ class AdolC(Package): patch('openmp_exam_261.patch', when='@2.6.1') def install(self, spec, prefix): - make_args = ['--prefix=%s' % prefix] + make_args = ['--prefix=%s' % prefix, + '--enable-atrig-erf'] - # --with-cflags=FLAGS use CFLAGS=FLAGS (default: -O3 -Wall -ansi) - # --with-cxxflags=FLAGS use CXXFLAGS=FLAGS (default: -O3 -Wall) + if '+advanced_branching' in spec: + make_args.extend([ + '--enable-advanced-branching' + ]) if '+openmp' in spec: if spec.satisfies('%gcc'): From a5700a8888dd26789a8f8d36cec565a4a18d72bc Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 26 Jan 2017 02:19:35 -0800 Subject: [PATCH 0061/2394] Use codecov for coverage instead of coveralls (#2933) * Switch from coveralls to codecov - Add .codecov.yml, simplify .travis.yml - Add codecov badge to README.md * Add tests for spack graph. --- .codecov.yml | 10 +++ .travis.yml | 46 ++++++------ README.md | 2 +- lib/spack/spack/graph.py | 13 ++-- lib/spack/spack/test/graph.py | 138 ++++++++++++++++++++++++++++++++++ 5 files changed, 176 insertions(+), 33 deletions(-) create mode 100644 .codecov.yml create mode 100644 lib/spack/spack/test/graph.py diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 00000000000..a6ec081c85b --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,10 @@ +coverage: + precision: 2 + round: nearest + range: 60...100 + +ignore: + - lib/spack/spack/test/.* + - lib/spack/env/.* + - lib/spack/docs/.* + - lib/spack/external/.* diff --git a/.travis.yml b/.travis.yml index 0a9a118b73c..2e7b1c64fcb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ #============================================================================= # Project settings #============================================================================= -language: python - # Only build master and develop on push; do not build every branch. branches: only: @@ -13,29 +11,27 @@ branches: #============================================================================= # Build matrix #============================================================================= -python: - - 2.6 - - 2.7 - -env: - - TEST_SUITE=unit - - TEST_SUITE=flake8 - - TEST_SUITE=doc - matrix: - # Flake8 and Sphinx no longer support Python 2.6, and one run is enough. - exclude: - - python: 2.6 - env: TEST_SUITE=flake8 - - python: 2.6 - env: TEST_SUITE=doc - # Explicitly include an OS X build with homebrew's python. - # Works around Python issues on Travis for OSX, described here: - # http://blog.fizyk.net.pl/blog/running-python-tests-on-traviss-osx-workers.html include: - - os: osx - language: generic - env: TEST_SUITE=unit + - python: '2.6' + os: linux + language: python + env: TEST_SUITE=unit + - python: '2.7' + os: linux + language: python + env: TEST_SUITE=unit + - python: '2.7' + os: linux + language: python + env: TEST_SUITE=flake8 + - python: '2.7' + os: linux + language: python + env: TEST_SUITE=doc + - os: osx + language: generic + env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7 ] #============================================================================= # Environment @@ -61,7 +57,7 @@ before_install: # Install various dependencies install: - - pip install --upgrade coveralls + - pip install --upgrade codecov - pip install --upgrade flake8 - pip install --upgrade sphinx - pip install --upgrade mercurial @@ -80,7 +76,7 @@ before_script: script: share/spack/qa/run-$TEST_SUITE-tests after_success: - - if [[ $TEST_SUITE == unit && $TRAVIS_PYTHON_VERSION == 2.7 && $TRAVIS_OS_NAME == "linux" ]]; then coveralls; fi + - if [[ $TEST_SUITE == unit && $TRAVIS_PYTHON_VERSION == 2.7 && $TRAVIS_OS_NAME == "linux" ]]; then codecov --env PY_VERSION; fi #============================================================================= # Notifications diff --git a/README.md b/README.md index 9d005605ebc..375aad4dd7a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ============ [![Build Status](https://travis-ci.org/LLNL/spack.svg?branch=develop)](https://travis-ci.org/LLNL/spack) -[![Coverage Status](https://coveralls.io/repos/github/LLNL/spack/badge.svg?branch=develop)](https://coveralls.io/github/LLNL/spack?branch=develop) +[![codecov](https://codecov.io/gh/LLNL/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/LLNL/spack) Spack is a package management tool designed to support multiple versions and configurations of software on a wide variety of platforms diff --git a/lib/spack/spack/graph.py b/lib/spack/spack/graph.py index 1f0390dae90..7cc2046b9dc 100644 --- a/lib/spack/spack/graph.py +++ b/lib/spack/spack/graph.py @@ -138,7 +138,7 @@ class AsciiGraph(object): def __init__(self): # These can be set after initialization or after a call to # graph() to change behavior. - self.node_character = '*' + self.node_character = 'o' self.debug = False self.indent = 0 self.deptype = alldeps @@ -364,7 +364,7 @@ def _expand_right_line(self, index): self._set_state(EXPAND_RIGHT, index) self._out.write("\n") - def write(self, spec, **kwargs): + def write(self, spec, color=None, out=None): """Write out an ascii graph of the provided spec. Arguments: @@ -378,14 +378,13 @@ def write(self, spec, **kwargs): based on output file. """ - out = kwargs.get('out', None) - if not out: + if out is None: out = sys.stdout - color = kwargs.get('color', None) - if not color: + if color is None: color = out.isatty() - self._out = ColorStream(sys.stdout, color=color) + + self._out = ColorStream(out, color=color) # We'll traverse the spec in topo order as we graph it. topo_order = topological_sort(spec, reverse=True, deptype=self.deptype) diff --git a/lib/spack/spack/test/graph.py b/lib/spack/spack/test/graph.py new file mode 100644 index 00000000000..09dbcd05486 --- /dev/null +++ b/lib/spack/spack/test/graph.py @@ -0,0 +1,138 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from StringIO import StringIO + +from spack.spec import Spec +from spack.graph import AsciiGraph, topological_sort, graph_dot + + +def test_topo_sort(builtin_mock): + """Test topo sort gives correct order.""" + s = Spec('mpileaks').normalized() + + topo = topological_sort(s) + + assert topo.index('mpileaks') < topo.index('callpath') + assert topo.index('mpileaks') < topo.index('mpi') + assert topo.index('mpileaks') < topo.index('dyninst') + assert topo.index('mpileaks') < topo.index('libdwarf') + assert topo.index('mpileaks') < topo.index('libelf') + + assert topo.index('callpath') < topo.index('mpi') + assert topo.index('callpath') < topo.index('dyninst') + assert topo.index('callpath') < topo.index('libdwarf') + assert topo.index('callpath') < topo.index('libelf') + + assert topo.index('dyninst') < topo.index('libdwarf') + assert topo.index('dyninst') < topo.index('libelf') + + assert topo.index('libdwarf') < topo.index('libelf') + + +def test_static_graph_mpileaks(builtin_mock): + """Test a static spack graph for a simple package.""" + s = Spec('mpileaks').normalized() + + stream = StringIO() + graph_dot([s], static=True, out=stream) + + dot = stream.getvalue() + + assert ' "mpileaks" [label="mpileaks"]\n' in dot + assert ' "dyninst" [label="dyninst"]\n' in dot + assert ' "callpath" [label="callpath"]\n' in dot + assert ' "libelf" [label="libelf"]\n' in dot + assert ' "libdwarf" [label="libdwarf"]\n' in dot + + assert ' "dyninst" -> "libdwarf"\n' in dot + assert ' "callpath" -> "dyninst"\n' in dot + assert ' "mpileaks" -> "mpi"\n' in dot + assert ' "libdwarf" -> "libelf"\n' in dot + assert ' "callpath" -> "mpi"\n' in dot + assert ' "mpileaks" -> "callpath"\n' in dot + assert ' "dyninst" -> "libelf"\n' in dot + + +def test_dynamic_dot_graph_mpileaks(builtin_mock): + """Test dynamically graphing the mpileaks package.""" + s = Spec('mpileaks').normalized() + + stream = StringIO() + graph_dot([s], static=False, out=stream) + + dot = stream.getvalue() + + mpileaks_hash, mpileaks_lbl = s.dag_hash(), s.format('$_$#') + mpi_hash, mpi_lbl = s['mpi'].dag_hash(), s['mpi'].format('$_$#') + callpath_hash, callpath_lbl = ( + s['callpath'].dag_hash(), s['callpath'].format('$_$#')) + dyninst_hash, dyninst_lbl = ( + s['dyninst'].dag_hash(), s['dyninst'].format('$_$#')) + libdwarf_hash, libdwarf_lbl = ( + s['libdwarf'].dag_hash(), s['libdwarf'].format('$_$#')) + libelf_hash, libelf_lbl = ( + s['libelf'].dag_hash(), s['libelf'].format('$_$#')) + + assert ' "%s" [label="%s"]\n' % (mpileaks_hash, mpileaks_lbl) in dot + assert ' "%s" [label="%s"]\n' % (callpath_hash, callpath_lbl) in dot + assert ' "%s" [label="%s"]\n' % (mpi_hash, mpi_lbl) in dot + assert ' "%s" [label="%s"]\n' % (dyninst_hash, dyninst_lbl) in dot + assert ' "%s" [label="%s"]\n' % (libdwarf_hash, libdwarf_lbl) in dot + assert ' "%s" [label="%s"]\n' % (libelf_hash, libelf_lbl) in dot + + assert ' "%s" -> "%s"\n' % (dyninst_hash, libdwarf_hash) in dot + assert ' "%s" -> "%s"\n' % (callpath_hash, dyninst_hash) in dot + assert ' "%s" -> "%s"\n' % (mpileaks_hash, mpi_hash) in dot + assert ' "%s" -> "%s"\n' % (libdwarf_hash, libelf_hash) in dot + assert ' "%s" -> "%s"\n' % (callpath_hash, mpi_hash) in dot + assert ' "%s" -> "%s"\n' % (mpileaks_hash, callpath_hash) in dot + assert ' "%s" -> "%s"\n' % (dyninst_hash, libelf_hash) in dot + + +def test_ascii_graph_mpileaks(builtin_mock): + """Test dynamically graphing the mpileaks package.""" + s = Spec('mpileaks').normalized() + + stream = StringIO() + graph = AsciiGraph() + graph.write(s, out=stream, color=False) + string = stream.getvalue() + + # Some lines in spack graph still have trailing space + # TODO: fix this. + string = '\n'.join([line.rstrip() for line in string.split('\n')]) + + assert string == r'''o mpileaks +|\ +| o callpath +|/| +o | mpi + / +o dyninst +|\ +| o libdwarf +|/ +o libelf +''' From 3b2124af6a861273df5bc19345f2a03e8c9db0e1 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 26 Jan 2017 02:21:26 -0800 Subject: [PATCH 0062/2394] Turn off codecov comments (use only statuses) --- .codecov.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.codecov.yml b/.codecov.yml index a6ec081c85b..62fc306ec3b 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -8,3 +8,5 @@ ignore: - lib/spack/env/.* - lib/spack/docs/.* - lib/spack/external/.* + +comment: off From 81a5146b1df1f69172c0f76bc3dbe469f4e366f9 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 26 Jan 2017 11:27:15 +0100 Subject: [PATCH 0063/2394] AutotoolsPackage: minor improvements (#2859) * AutotoolsPackage: added configure_directory to permit build out of source. The configure script executable is now invoked with an absolute path. Modified a few packages accordingly. * build_systems: functions returning directories are now properties * build_systems: fixed issues with tcl and tk * AutotoolsPackage: reworked recipe for autoreconf --- lib/spack/spack/build_systems/autotools.py | 98 ++++++++++++++++--- lib/spack/spack/build_systems/cmake.py | 12 ++- lib/spack/spack/build_systems/makefile.py | 5 +- lib/spack/spack/build_systems/python.py | 5 +- .../repos/builtin/packages/astyle/package.py | 1 + .../builtin/packages/autoconf/package.py | 2 + .../builtin/packages/automake/package.py | 2 + .../packages/bash-completion/package.py | 19 ++-- .../repos/builtin/packages/bison/package.py | 2 + .../repos/builtin/packages/czmq/package.py | 16 --- .../builtin/packages/elfutils/package.py | 8 +- .../repos/builtin/packages/flex/package.py | 8 -- .../repos/builtin/packages/gcc/package.py | 26 ++--- .../repos/builtin/packages/glib/package.py | 17 +--- .../repos/builtin/packages/gource/package.py | 26 ++--- .../repos/builtin/packages/libgd/package.py | 16 +-- .../repos/builtin/packages/libquo/package.py | 28 +----- .../repos/builtin/packages/libtool/package.py | 2 + .../repos/builtin/packages/libuv/package.py | 2 + .../repos/builtin/packages/m4/package.py | 2 + .../builtin/packages/netcdf-cxx4/package.py | 9 +- .../repos/builtin/packages/plumed/package.py | 20 ++-- .../repos/builtin/packages/py-meep/package.py | 4 +- .../builtin/packages/py-pypar/package.py | 5 +- .../builtin/packages/swiftsim/package.py | 7 -- .../repos/builtin/packages/tcl/package.py | 5 +- .../repos/builtin/packages/tk/package.py | 5 +- 27 files changed, 179 insertions(+), 173 deletions(-) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index d08ea024283..af6f5507b23 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -30,8 +30,10 @@ from subprocess import PIPE from subprocess import check_call -from llnl.util.filesystem import working_dir -from spack.package import PackageBase, run_after +import llnl.util.tty as tty +from llnl.util.filesystem import working_dir, join_path, force_remove +from spack.package import PackageBase, run_after, run_before +from spack.util.executable import Executable class AutotoolsPackage(PackageBase): @@ -79,8 +81,14 @@ class AutotoolsPackage(PackageBase): #: phase install_targets = ['install'] + #: Callback names for build-time test build_time_test_callbacks = ['check'] + #: Set to true to force the autoreconf step even if configure is present + force_autoreconf = False + #: Options to be passed to autoreconf when using the default implementation + autoreconf_extra_args = [] + def _do_patch_config_guess(self): """Some packages ship with an older config.guess and need to have this updated when installed on a newer architecture.""" @@ -147,9 +155,26 @@ def _do_patch_config_guess(self): return False + @property + def configure_directory(self): + """Returns the directory where 'configure' resides. + + :return: directory where to find configure + """ + return self.stage.source_path + + @property + def configure_abs_path(self): + # Absolute path to configure + configure_abs_path = join_path( + os.path.abspath(self.configure_directory), 'configure' + ) + return configure_abs_path + + @property def build_directory(self): """Override to provide another place to build the package""" - return self.stage.source_path + return self.configure_directory def patch(self): """Patches config.guess if @@ -165,21 +190,62 @@ def patch(self): if not self._do_patch_config_guess(): raise RuntimeError('Failed to find suitable config.guess') + @run_before('autoreconf') + def delete_configure_to_force_update(self): + if self.force_autoreconf: + force_remove(self.configure_abs_path) + def autoreconf(self, spec, prefix): """Not needed usually, configure should be already there""" - pass + # If configure exists nothing needs to be done + if os.path.exists(self.configure_abs_path): + return + # Else try to regenerate it + autotools = ['m4', 'autoconf', 'automake', 'libtool'] + missing = [x for x in autotools if x not in spec] + if missing: + msg = 'Cannot generate configure: missing dependencies {0}' + raise RuntimeError(msg.format(missing)) + tty.msg('Configure script not found: trying to generate it') + tty.warn('*********************************************************') + tty.warn('* If the default procedure fails, consider implementing *') + tty.warn('* a custom AUTORECONF phase in the package *') + tty.warn('*********************************************************') + with working_dir(self.configure_directory): + m = inspect.getmodule(self) + # This part should be redundant in principle, but + # won't hurt + m.libtoolize() + m.aclocal() + # This line is what is needed most of the time + # --install, --verbose, --force + autoreconf_args = ['-ivf'] + if 'pkg-config' in spec: + autoreconf_args += [ + '-I', + join_path(spec['pkg-config'].prefix, 'share', 'aclocal'), + ] + autoreconf_args += self.autoreconf_extra_args + m.autoreconf(*autoreconf_args) @run_after('autoreconf') - def is_configure_or_die(self): - """Checks the presence of a `configure` file after the - :py:meth:`.autoreconf` phase. + def set_configure_or_die(self): + """Checks the presence of a ``configure`` file after the + autoreconf phase. If it is found sets a module attribute + appropriately, otherwise raises an error. - :raise RuntimeError: if the ``configure`` script does not exist. + :raises RuntimeError: if a configure script is not found in + :py:meth:`~.configure_directory` """ - with working_dir(self.build_directory()): - if not os.path.exists('configure'): - raise RuntimeError( - 'configure script not found in {0}'.format(os.getcwd())) + # Check if a configure script is there. If not raise a RuntimeError. + if not os.path.exists(self.configure_abs_path): + msg = 'configure script not found in {0}' + raise RuntimeError(msg.format(self.configure_directory)) + + # Monkey-patch the configure script in the corresponding module + inspect.getmodule(self).configure = Executable( + self.configure_abs_path + ) def configure_args(self): """Produces a list containing all the arguments that must be passed to @@ -195,21 +261,21 @@ def configure(self, spec, prefix): """ options = ['--prefix={0}'.format(prefix)] + self.configure_args() - with working_dir(self.build_directory()): + with working_dir(self.build_directory, create=True): inspect.getmodule(self).configure(*options) def build(self, spec, prefix): """Makes the build targets specified by :py:attr:``~.AutotoolsPackage.build_targets`` """ - with working_dir(self.build_directory()): + with working_dir(self.build_directory): inspect.getmodule(self).make(*self.build_targets) def install(self, spec, prefix): """Makes the install targets specified by :py:attr:``~.AutotoolsPackage.install_targets`` """ - with working_dir(self.build_directory()): + with working_dir(self.build_directory): inspect.getmodule(self).make(*self.install_targets) run_after('build')(PackageBase._run_default_build_time_test_callbacks) @@ -218,7 +284,7 @@ def check(self): """Searches the Makefile for targets ``test`` and ``check`` and runs them if found. """ - with working_dir(self.build_directory()): + with working_dir(self.build_directory): self._if_make_target_execute('test') self._if_make_target_execute('check') diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index 823ef502c40..43d177d3cb6 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -82,6 +82,7 @@ def build_type(self): """ return 'RelWithDebInfo' + @property def root_cmakelists_dir(self): """Returns the location of the root CMakeLists.txt @@ -119,6 +120,7 @@ def _std_args(pkg): args.append('-DCMAKE_INSTALL_RPATH:STRING={0}'.format(rpaths)) return args + @property def build_directory(self): """Returns the directory to use when building the package @@ -141,19 +143,19 @@ def cmake_args(self): def cmake(self, spec, prefix): """Runs ``cmake`` in the build directory""" - options = [self.root_cmakelists_dir()] + self.std_cmake_args + \ + options = [self.root_cmakelists_dir] + self.std_cmake_args + \ self.cmake_args() - with working_dir(self.build_directory(), create=True): + with working_dir(self.build_directory, create=True): inspect.getmodule(self).cmake(*options) def build(self, spec, prefix): """Make the build targets""" - with working_dir(self.build_directory()): + with working_dir(self.build_directory): inspect.getmodule(self).make(*self.build_targets) def install(self, spec, prefix): """Make the install targets""" - with working_dir(self.build_directory()): + with working_dir(self.build_directory): inspect.getmodule(self).make(*self.install_targets) run_after('build')(PackageBase._run_default_build_time_test_callbacks) @@ -162,7 +164,7 @@ def check(self): """Searches the CMake-generated Makefile for the target ``test`` and runs it if found. """ - with working_dir(self.build_directory()): + with working_dir(self.build_directory): self._if_make_target_execute('test') # Check that self.prefix is there after installation diff --git a/lib/spack/spack/build_systems/makefile.py b/lib/spack/spack/build_systems/makefile.py index f07bcd62ab6..72743844782 100644 --- a/lib/spack/spack/build_systems/makefile.py +++ b/lib/spack/spack/build_systems/makefile.py @@ -72,6 +72,7 @@ class MakefilePackage(PackageBase): #: phase install_targets = ['install'] + @property def build_directory(self): """Returns the directory containing the main Makefile @@ -89,14 +90,14 @@ def build(self, spec, prefix): """Calls make, passing :py:attr:`~.MakefilePackage.build_targets` as targets. """ - with working_dir(self.build_directory()): + with working_dir(self.build_directory): inspect.getmodule(self).make(*self.build_targets) def install(self, spec, prefix): """Calls make, passing :py:attr:`~.MakefilePackage.install_targets` as targets. """ - with working_dir(self.build_directory()): + with working_dir(self.build_directory): inspect.getmodule(self).make(*self.install_targets) # Check that self.prefix is there after installation diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index 5e7c1c356d0..60a850d3563 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -97,10 +97,11 @@ def configure(self, spec, prefix): extends('python') - def setup_file(self, spec, prefix): + def setup_file(self): """Returns the name of the setup file to use.""" return 'setup.py' + @property def build_directory(self): """The directory containing the ``setup.py`` file.""" return self.stage.source_path @@ -109,7 +110,7 @@ def python(self, *args): inspect.getmodule(self).python(*args) def setup_py(self, *args): - setup = self.setup_file(self.spec, self.prefix) + setup = self.setup_file() with working_dir(self.build_directory()): self.python(setup, '--no-user-cfg', *args) diff --git a/var/spack/repos/builtin/packages/astyle/package.py b/var/spack/repos/builtin/packages/astyle/package.py index 16c59469fab..851952be660 100644 --- a/var/spack/repos/builtin/packages/astyle/package.py +++ b/var/spack/repos/builtin/packages/astyle/package.py @@ -39,6 +39,7 @@ class Astyle(MakefilePackage): parallel = False + @property def build_directory(self): return join_path(self.stage.source_path, 'build', self.compiler.name) diff --git a/var/spack/repos/builtin/packages/autoconf/package.py b/var/spack/repos/builtin/packages/autoconf/package.py index d812350ae8f..3dcf8f36b5f 100644 --- a/var/spack/repos/builtin/packages/autoconf/package.py +++ b/var/spack/repos/builtin/packages/autoconf/package.py @@ -38,6 +38,8 @@ class Autoconf(AutotoolsPackage): depends_on('m4@1.4.6:', type='build') + build_directory = 'spack-build' + def _make_executable(self, name): return Executable(join_path(self.prefix.bin, name)) diff --git a/var/spack/repos/builtin/packages/automake/package.py b/var/spack/repos/builtin/packages/automake/package.py index 6c0a47ff95a..8643f5d8364 100644 --- a/var/spack/repos/builtin/packages/automake/package.py +++ b/var/spack/repos/builtin/packages/automake/package.py @@ -37,6 +37,8 @@ class Automake(AutotoolsPackage): depends_on('autoconf', type='build') + build_directory = 'spack-build' + def _make_executable(self, name): return Executable(join_path(self.prefix.bin, name)) diff --git a/var/spack/repos/builtin/packages/bash-completion/package.py b/var/spack/repos/builtin/packages/bash-completion/package.py index 666a1bef13e..0bd4d7c294a 100644 --- a/var/spack/repos/builtin/packages/bash-completion/package.py +++ b/var/spack/repos/builtin/packages/bash-completion/package.py @@ -25,10 +25,10 @@ from spack import * -class BashCompletion(Package): +class BashCompletion(AutotoolsPackage): """Programmable completion functions for bash.""" homepage = "https://github.com/scop/bash-completion" - url = "https://github.com/scop/bash-completion/archive/2.3.tar.gz" + url = "https://github.com/scop/bash-completion/archive/2.3.tar.gz" version('2.3', '67e50f5f3c804350b43f2b664c33dde811d24292') version('develop', git='https://github.com/scop/bash-completion.git') @@ -41,16 +41,9 @@ class BashCompletion(Package): # Other dependencies depends_on('bash@4.1:', type='run') - def install(self, spec, prefix): - make_args = ['--prefix=%s' % prefix] - - autoreconf('-i') - configure(*make_args) - make() - # make("check") # optional, requires dejagnu and tcllib - make("install", - parallel=False) - + @run_after('install') + def show_message_to_user(self): + prefix = self.prefix # Guidelines for individual user as provided by the author at # https://github.com/scop/bash-completion print('=====================================================') @@ -59,6 +52,6 @@ def install(self, spec, prefix): print('') print('# Use bash-completion, if available') print('[[ $PS1 && -f %s/share/bash-completion/bash_completion ]] && \ ' % prefix) # NOQA: ignore=E501 - print(' . %s/share/bash-completion/bash_completion' % prefix) + print(' . %s/share/bash-completion/bash_completion' % prefix) print('') print('=====================================================') diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index cc2d10dea11..a9691fab8b1 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -36,3 +36,5 @@ class Bison(AutotoolsPackage): version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8') depends_on("m4", type='build') + + build_directory = 'spack-build' diff --git a/var/spack/repos/builtin/packages/czmq/package.py b/var/spack/repos/builtin/packages/czmq/package.py index f7791967b36..fd50197326d 100644 --- a/var/spack/repos/builtin/packages/czmq/package.py +++ b/var/spack/repos/builtin/packages/czmq/package.py @@ -38,19 +38,3 @@ class Czmq(AutotoolsPackage): depends_on('autoconf', type='build') depends_on('pkg-config', type='build') depends_on('zeromq') - - def autoreconf(self, spec, prefix): - # Work around autogen.sh oddities - # bash = which("bash") - # bash("./autogen.sh") - mkdirp("config") - autoreconf = which("autoreconf") - autoreconf("--install", "--verbose", "--force", - "-I", "config", - "-I", join_path(spec['pkg-config'].prefix, - "share", "aclocal"), - "-I", join_path(spec['automake'].prefix, - "share", "aclocal"), - "-I", join_path(spec['libtool'].prefix, - "share", "aclocal"), - ) diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index bdc858e121e..4a91c7db304 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -35,15 +35,15 @@ class Elfutils(AutotoolsPackage): homepage = "https://fedorahosted.org/elfutils/" + depends_on('libtool', type='build') + depends_on('automake', type='build') + depends_on('autoconf', type='build') + version('0.163', git='git://git.fedorahosted.org/git/elfutils.git', tag='elfutils-0.163') provides('elf') - def autoreconf(self, spec, prefix): - autoreconf = which('autoreconf') - autoreconf('-if') - def configure_args(self): return ['--enable-maintainer-mode'] diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py index e4117877c17..0314950140f 100644 --- a/var/spack/repos/builtin/packages/flex/package.py +++ b/var/spack/repos/builtin/packages/flex/package.py @@ -61,11 +61,3 @@ def url_for_version(self, version): url += "/archive/flex-{0}.tar.gz".format(version.dashed) return url - - def autoreconf(self, spec, prefix): - pass - - @when('@:2.6.0') - def autoreconf(self, spec, prefix): - libtoolize('--install', '--force') - autoreconf('--install', '--force') diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 31da068d72d..a9fed4d8dd2 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -30,7 +30,7 @@ from os.path import isfile -class Gcc(Package): +class Gcc(AutotoolsPackage): """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, and Java.""" homepage = "https://gcc.gnu.org" @@ -85,7 +85,9 @@ class Gcc(Package): patch('piclibs.patch', when='+piclibs') patch('gcc-backport.patch', when='@4.7:4.9.2,5:5.3') - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec + prefix = self.spec.prefix # libjava/configure needs a minor fix to install into spack paths. filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure', string=True) @@ -138,18 +140,15 @@ def install(self, spec, prefix): darwin_options = ["--with-build-config=bootstrap-debug"] options.extend(darwin_options) - build_dir = join_path(self.stage.path, 'spack-build') - configure = Executable(join_path(self.stage.source_path, 'configure')) - with working_dir(build_dir, create=True): - # Rest of install is straightforward. - configure(*options) - if sys.platform == 'darwin': - make("bootstrap") - else: - make() - make("install") + return options - self.write_rpath_specs() + build_directory = 'spack-build' + + @property + def build_targets(self): + if sys.platform == 'darwin': + return ['bootstrap'] + return [] @property def spec_dir(self): @@ -157,6 +156,7 @@ def spec_dir(self): spec_dir = glob("%s/lib64/gcc/*/*" % self.prefix) return spec_dir[0] if spec_dir else None + @run_after('install') def write_rpath_specs(self): """Generate a spec file so the linker adds a rpath to the libs the compiler used to build the executable.""" diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index a4d8c289d73..e2eb984876c 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -53,22 +53,9 @@ class Glib(AutotoolsPackage): # around a legitimate usage. patch('no-Werror=format-security.patch') + force_autoreconf = True + def url_for_version(self, version): """Handle glib's version-based custom URLs.""" url = 'http://ftp.gnome.org/pub/gnome/sources/glib' return url + '/%s/glib-%s.tar.xz' % (version.up_to(2), version) - - def autoreconf(self, spec, prefix): - autoreconf = which("autoreconf") - autoreconf("--install", "--verbose", "--force", - "-I", "config", - "-I", join_path(spec['pkg-config'].prefix, - "share", "aclocal"), - "-I", join_path(spec['automake'].prefix, - "share", "aclocal"), - "-I", join_path(spec['libtool'].prefix, - "share", "aclocal"), - ) - - def install(self, spec, prefix): - make("install", parallel=False) diff --git a/var/spack/repos/builtin/packages/gource/package.py b/var/spack/repos/builtin/packages/gource/package.py index dda00420a38..21994ad42ca 100644 --- a/var/spack/repos/builtin/packages/gource/package.py +++ b/var/spack/repos/builtin/packages/gource/package.py @@ -25,11 +25,11 @@ from spack import * -class Gource(Package): +class Gource(AutotoolsPackage): """Software version control visualization.""" homepage = "http://gource.io" - url = "https://github.com/acaudwell/Gource/releases/download/gource-0.44/gource-0.44.tar.gz" + url = "https://github.com/acaudwell/Gource/releases/download/gource-0.44/gource-0.44.tar.gz" version('0.44', '79cda1bfaad16027d59cce55455bfab88b57c69d') @@ -49,15 +49,17 @@ class Gource(Package): depends_on('sdl2') depends_on('sdl2-image') - def install(self, spec, prefix): - make_args = ['--prefix=%s' % prefix, - '--disable-dependency-tracking', - '--without-x', - '--with-boost=%s' % spec['boost'].prefix] + parallel = False + force_autoreconf = True - autoreconf('-i') - configure(*make_args) - make() + def url_for_version(self, version): + tmp = 'https://github.com/acaudwell/Gource/releases/download/gource-{0}/gource-{0}.tar.gz' # NOQA: ignore=E501 + return tmp.format(version.dotted) - make("install", - parallel=False) + def configure_args(self): + spec = self.spec + return [ + '--disable-dependency-tracking', + '--without-x', + '--with-boost=%s' % spec['boost'].prefix + ] diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py index 42eb23d85ab..58867c85f8d 100644 --- a/var/spack/repos/builtin/packages/libgd/package.py +++ b/var/spack/repos/builtin/packages/libgd/package.py @@ -38,8 +38,9 @@ class Libgd(AutotoolsPackage): """ homepage = "https://github.com/libgd/libgd" - url = "https://github.com/libgd/libgd/archive/gd-2.1.1.tar.gz" + url = 'https://github.com/libgd/libgd/releases/download/gd-2.2.4/libgd-2.2.4.tar.gz' + version('2.2.4', '0a3c307b5075edbe1883543dd1153c02') version('2.2.3', 'a67bd15fa33d4aac0a1c7904aed19f49') version('2.1.1', 'e91a1a99903e460e7ba00a794e72cc1e') @@ -54,16 +55,3 @@ class Libgd(AutotoolsPackage): depends_on('libpng') depends_on('libtiff') depends_on('fontconfig') - - def autoreconf(self, spec, prefix): - autoreconf("--install", "--force", - "-I", "m4", - "-I", join_path(spec['gettext'].prefix, - "share", "aclocal"), - "-I", join_path(spec['pkg-config'].prefix, - "share", "aclocal"), - "-I", join_path(spec['automake'].prefix, - "share", "aclocal"), - "-I", join_path(spec['libtool'].prefix, - "share", "aclocal") - ) diff --git a/var/spack/repos/builtin/packages/libquo/package.py b/var/spack/repos/builtin/packages/libquo/package.py index 3e574f70047..76a508f9c61 100644 --- a/var/spack/repos/builtin/packages/libquo/package.py +++ b/var/spack/repos/builtin/packages/libquo/package.py @@ -23,10 +23,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os -class Libquo(Package): +class Libquo(AutotoolsPackage): """QUO (as in "status quo") is a runtime library that aids in accommodating thread-level heterogeneity in dynamic, phased MPI+X applications comprising @@ -42,25 +41,8 @@ class Libquo(Package): depends_on('automake', type='build') depends_on('libtool', type='build') - def install(self, spec, prefix): - autoreconf_options = [ - '--install', - '--verbose', - '--force', - '-I', 'config', - '-I', os.path.join(spec['automake'].prefix, - 'share', 'aclocal'), - '-I', os.path.join(spec['libtool'].prefix, - 'share', 'aclocal') + def configure_args(self): + return [ + 'CC={0}'.format(self.spec['mpi'].mpicc), + 'FC={0}'.format(self.spec['mpi'].mpifc) ] - autoreconf(*autoreconf_options) - - configure_options = [ - '--prefix={0}'.format(prefix), - 'CC=%s' % join_path(spec['mpi'].prefix.bin, "mpicc"), - 'FC=%s' % join_path(spec['mpi'].prefix.bin, "mpif90") - ] - configure(*configure_options) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libtool/package.py b/var/spack/repos/builtin/packages/libtool/package.py index cd125036814..ae706089c97 100644 --- a/var/spack/repos/builtin/packages/libtool/package.py +++ b/var/spack/repos/builtin/packages/libtool/package.py @@ -36,6 +36,8 @@ class Libtool(AutotoolsPackage): depends_on('m4@1.4.6:', type='build') + build_directory = 'spack-build' + def _make_executable(self, name): return Executable(join_path(self.prefix.bin, name)) diff --git a/var/spack/repos/builtin/packages/libuv/package.py b/var/spack/repos/builtin/packages/libuv/package.py index 52542390190..2f303280daf 100644 --- a/var/spack/repos/builtin/packages/libuv/package.py +++ b/var/spack/repos/builtin/packages/libuv/package.py @@ -37,5 +37,7 @@ class Libuv(AutotoolsPackage): depends_on('libtool', type='build') def autoreconf(self, spec, prefix): + # This is needed because autogen.sh generates on-the-fly + # an m4 macro needed during configuration bash = which("bash") bash('autogen.sh') diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index 415c55b21a5..a8b04239330 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -41,6 +41,8 @@ class M4(AutotoolsPackage): depends_on('libsigsegv', when='+sigsegv') + build_directory = 'spack-build' + def configure_args(self): spec = self.spec args = ['--enable-c++'] diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py index 2da30c7b0c0..36ab8766b92 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py @@ -34,8 +34,9 @@ class NetcdfCxx4(AutotoolsPackage): version('4.2.1', 'd019853802092cf686254aaba165fc81') depends_on('netcdf') - depends_on('autoconf', type='build') - def autoreconf(self, spec, prefix): - # Rebuild to prevent problems of inconsistency in git repo - which('autoreconf')('-ivf') + depends_on('automake', type='build') + depends_on('autoconf', type='build') + depends_on('libtool', type='build') + + force_autoreconf = True diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 60dfdf74055..69949b0017d 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -27,7 +27,7 @@ from spack import * -class Plumed(Package): +class Plumed(AutotoolsPackage): """PLUMED is an open source library for free energy calculations in molecular systems which works together with some of the most popular molecular dynamics engines. @@ -67,6 +67,8 @@ class Plumed(Package): depends_on('gsl', when='+gsl') depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') # Dictionary mapping PLUMED versions to the patches it provides # interactively @@ -84,6 +86,8 @@ class Plumed(Package): } } + force_autoreconf = True + def apply_patch(self, other): plumed = subprocess.Popen( [join_path(self.spec.prefix.bin, 'plumed'), 'patch', '-p'], @@ -99,12 +103,15 @@ def setup_dependent_package(self, module, ext_spec): # Make plumed visible from dependent packages module.plumed = Executable(join_path(self.spec.prefix.bin, 'plumed')) - def install(self, spec, prefix): + @run_before('autoreconf') + def filter_gslcblas(self): # This part is needed to avoid linking with gsl cblas # interface which will mask the cblas interface # provided by optimized libraries due to linking order filter_file('-lgslcblas', '', 'configure.ac') - autoreconf('-ivf') + + def configure_args(self): + spec = self.spec # From plumed docs : # Also consider that this is different with respect to what some other @@ -114,8 +121,7 @@ def install(self, spec, prefix): # with MPI you should use: # # > ./configure CXX="$MPICXX" - configure_opts = ['--prefix=' + prefix] - + configure_opts = [] # If using MPI then ensure the correct compiler wrapper is used. if '+mpi' in spec: configure_opts.extend([ @@ -153,6 +159,4 @@ def install(self, spec, prefix): configure_opts.extend([ '--enable-modules={0}'.format("".join(module_opts))]) - configure(*configure_opts) - make() - make('install') + return configure_opts diff --git a/var/spack/repos/builtin/packages/py-meep/package.py b/var/spack/repos/builtin/packages/py-meep/package.py index 0ebba77ac62..64ca4e25d93 100644 --- a/var/spack/repos/builtin/packages/py-meep/package.py +++ b/var/spack/repos/builtin/packages/py-meep/package.py @@ -51,8 +51,8 @@ class PyMeep(PythonPackage): phases = ['clean', 'build_ext', 'install', 'bdist'] - def setup_file(self, spec, prefix): - return 'setup-mpi.py' if '+mpi' in spec else 'setup.py' + def setup_file(self): + return 'setup-mpi.py' if '+mpi' in self.spec else 'setup.py' def common_args(self, spec, prefix): include_dirs = [ diff --git a/var/spack/repos/builtin/packages/py-pypar/package.py b/var/spack/repos/builtin/packages/py-pypar/package.py index f10b6d807f3..6ba999c063f 100644 --- a/var/spack/repos/builtin/packages/py-pypar/package.py +++ b/var/spack/repos/builtin/packages/py-pypar/package.py @@ -37,8 +37,7 @@ class PyPypar(PythonPackage): depends_on('mpi') depends_on('py-numpy', type=('build', 'run')) + build_directory = 'source' + def url_for_version(self, version): return "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pypar/pypar-%s.tgz" % version - - def build_directory(self): - return 'source' diff --git a/var/spack/repos/builtin/packages/swiftsim/package.py b/var/spack/repos/builtin/packages/swiftsim/package.py index 1c424b5ca0e..2ebdc1fdcbe 100644 --- a/var/spack/repos/builtin/packages/swiftsim/package.py +++ b/var/spack/repos/builtin/packages/swiftsim/package.py @@ -58,13 +58,6 @@ def setup_environment(self, spack_env, run_env): tty.warn('This is needed to clone SWIFT repository') spack_env.set('GIT_SSL_NO_VERIFY', 1) - def autoreconf(self, spec, prefix): - libtoolize() - aclocal() - autoconf() - autogen = Executable('./autogen.sh') - autogen() - def configure_args(self): return ['--prefix=%s' % self.prefix, '--enable-mpi' if '+mpi' in self.spec else '--disable-mpi', diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index 2ec8bb5236d..a9bc3cceaab 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -42,6 +42,8 @@ class Tcl(AutotoolsPackage): depends_on('zlib') + configure_directory = 'unix' + def url_for_version(self, version): base_url = 'http://prdownloads.sourceforge.net/tcl' return '{0}/tcl{1}-src.tar.gz'.format(base_url, version) @@ -52,9 +54,6 @@ def setup_environment(self, spack_env, env): env.set('TCL_LIBRARY', join_path(self.prefix.lib, 'tcl{0}'.format( self.spec.version.up_to(2)))) - def build_directory(self): - return 'unix' - @run_after('install') def symlink_tclsh(self): with working_dir(self.prefix.bin): diff --git a/var/spack/repos/builtin/packages/tk/package.py b/var/spack/repos/builtin/packages/tk/package.py index 071db04e635..66573eaa451 100644 --- a/var/spack/repos/builtin/packages/tk/package.py +++ b/var/spack/repos/builtin/packages/tk/package.py @@ -42,6 +42,8 @@ class Tk(AutotoolsPackage): depends_on("tcl") depends_on("libx11", when='+X') + configure_directory = 'unix' + def url_for_version(self, version): base_url = "http://prdownloads.sourceforge.net/tcl" return "{0}/tk{1}-src.tar.gz".format(base_url, version) @@ -52,9 +54,6 @@ def setup_environment(self, spack_env, run_env): run_env.set('TK_LIBRARY', join_path(self.prefix.lib, 'tk{0}'.format( self.spec.version.up_to(2)))) - def build_directory(self): - return 'unix' - def configure_args(self): spec = self.spec return ['--with-tcl={0}'.format(spec['tcl'].prefix.lib)] From ffb8aaa3f30669e8189aa72c30f3674721023a6f Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 26 Jan 2017 02:29:31 -0800 Subject: [PATCH 0064/2394] Packaging docs for MPI (#2838) * Add MPI docs to packaging guide and simplify packaging guide TOC a bit. --- lib/spack/docs/packaging_guide.rst | 774 +++++++++++++++++------------ 1 file changed, 469 insertions(+), 305 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 9b08a7d4987..75546d943e8 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -405,70 +405,22 @@ For tarball downloads, Spack can currently support checksums using the MD5, SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512 algorithms. It determines the algorithm to use based on the hash length. ------------------------ -Package Version Numbers ------------------------ +--------------------- +Versions and fetching +--------------------- -Most Spack versions are numeric, a tuple of integers; for example, -``apex@0.1``, ``ferret@6.96`` or ``py-netcdf@1.2.3.1``. Spack knows -how to compare and sort numeric versions. +The most straightforward way to add new versions to your package is to +add a line like this in the package class: -Some Spack versions involve slight extensions of numeric syntax; for -example, ``py-sphinx-rtd-theme@0.1.10a0``. In this case, numbers are -always considered to be "newer" than letters. This is for consistency -with `RPM `_. +.. code-block:: python + :linenos: -Spack versions may also be arbitrary non-numeric strings; any string -here will suffice; for example, ``@develop``, ``@master``, ``@local``. -The following rules determine the sort order of numeric -vs. non-numeric versions: + class Foo(Package): + url = 'http://example.com/foo-1.0.tar.gz' + version('8.2.1', '4136d7b4c04df68b686570afa26988ac') + ... -#. The non-numeric versions ``@develop`` is considered greatest (newest). - -#. Numeric versions are all less than ``@develop`` version, and are - sorted numerically. - -#. All other non-numeric versions are less than numeric versions, and - are sorted alphabetically. - -The logic behind this sort order is two-fold: - -#. Non-numeric versions are usually used for special cases while - developing or debugging a piece of software. Keeping most of them - less than numeric versions ensures that Spack choose numeric - versions by default whenever possible. - -#. The most-recent development version of a package will usually be - newer than any released numeric versions. This allows the - ``develop`` version to satisfy dependencies like ``depends_on(abc, - when="@x.y.z:")`` - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Concretization Version Selection -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -When concretizing, many versions might match a user-supplied spec. -For example, the spec ``python`` matches all available versions of the -package ``python``. Similarly, ``python@3:`` matches all versions of -Python3. Given a set of versions that match a spec, Spack -concretization uses the following priorities to decide which one to -use: - -#. If the user provided a list of versions in ``packages.yaml``, the - first matching version in that list will be used. - -#. If one or more versions is specified as ``preferred=True``, in - either ``packages.yaml`` or ``package.py``, the largest matching - version will be used. ("Latest" is defined by the sort order - above). - -#. If no preferences in particular are specified in the package or in - ``packages.yaml``, then the largest matching non-develop version - will be used. By avoiding ``@develop``, this prevents users from - accidentally installing a ``@develop`` version. - -#. If all else fails and ``@develop`` is the only matching version, it - will be used. +Versions should be listed with the newest version first. ^^^^^^^^^^^^^ Date Versions @@ -484,24 +436,6 @@ Alternately, you might use a hybrid release-version / date scheme. For example, ``@1.3.2016.08.31`` would mean the version from the ``1.3`` branch, as of August 31, 2016. - -------------------- -Adding new versions -------------------- - -The most straightforward way to add new versions to your package is to -add a line like this in the package class: - -.. code-block:: python - :linenos: - - class Foo(Package): - url = 'http://example.com/foo-1.0.tar.gz' - version('8.2.1', '4136d7b4c04df68b686570afa26988ac') - ... - -Versions should be listed with the newest version first. - ^^^^^^^^^^^^ Version URLs ^^^^^^^^^^^^ @@ -566,6 +500,37 @@ way to guess the URL systematically. When you supply a custom URL for a version, Spack uses that URL *verbatim* and does not perform extrapolation. +^^^^^^^^^^^^^^^^^^^^^ +PyPI and version URLs +^^^^^^^^^^^^^^^^^^^^^ + +In addition to their developer websites, many python packages are hosted at the +`Python Package Index (PyPi) `_. Although links to +these individual files are typically `generated using a hash +`_ it is often possible to find a +reliable link of the format + +.. code-block:: sh + + https://pypi.python.org/packages/source///-. + +Packages hosted on GitHub and the like are often developer versions that do not +contain all of the files (e.g. configuration scripts) necessary to support +compilation. For this reason it is ideal to link to a repository such as PyPi +if possible. + +More recently, sources are being indexed at `pypi.io `_ as +well. Links obtained from this site follow a similar pattern, namely + +.. code-block:: sh + + https://pypi.io/packages/source///-. + +These links currently redirect back to `pypi.python.org +`_, but this `may change in the future +`_. + + ^^^^^^^^^^^^^^^^^^^^^^^^ Skipping the expand step ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -596,6 +561,79 @@ it executable, then runs it with some arguments. installer = Executable(self.stage.archive_file) installer('--prefix=%s' % prefix, 'arg1', 'arg2', 'etc.') +^^^^^^^^^^^^^^^^ +Download caching +^^^^^^^^^^^^^^^^ + +Spack maintains a cache (described :ref:`here `) which saves files +retrieved during package installations to avoid re-downloading in the case that +a package is installed with a different specification (but the same version) or +reinstalled on account of a change in the hashing scheme. + +^^^^^^^^^^^^^^^^^^ +Version comparison +^^^^^^^^^^^^^^^^^^ + +Most Spack versions are numeric, a tuple of integers; for example, +``apex@0.1``, ``ferret@6.96`` or ``py-netcdf@1.2.3.1``. Spack knows +how to compare and sort numeric versions. + +Some Spack versions involve slight extensions of numeric syntax; for +example, ``py-sphinx-rtd-theme@0.1.10a0``. In this case, numbers are +always considered to be "newer" than letters. This is for consistency +with `RPM `_. + +Spack versions may also be arbitrary non-numeric strings; any string +here will suffice; for example, ``@develop``, ``@master``, ``@local``. +The following rules determine the sort order of numeric +vs. non-numeric versions: + +#. The non-numeric versions ``@develop`` is considered greatest (newest). + +#. Numeric versions are all less than ``@develop`` version, and are + sorted numerically. + +#. All other non-numeric versions are less than numeric versions, and + are sorted alphabetically. + +The logic behind this sort order is two-fold: + +#. Non-numeric versions are usually used for special cases while + developing or debugging a piece of software. Keeping most of them + less than numeric versions ensures that Spack choose numeric + versions by default whenever possible. + +#. The most-recent development version of a package will usually be + newer than any released numeric versions. This allows the + ``develop`` version to satisfy dependencies like ``depends_on(abc, + when="@x.y.z:")`` + +^^^^^^^^^^^^^^^^^ +Version selection +^^^^^^^^^^^^^^^^^ + +When concretizing, many versions might match a user-supplied spec. +For example, the spec ``python`` matches all available versions of the +package ``python``. Similarly, ``python@3:`` matches all versions of +Python3. Given a set of versions that match a spec, Spack +concretization uses the following priorities to decide which one to +use: + +#. If the user provided a list of versions in ``packages.yaml``, the + first matching version in that list will be used. + +#. If one or more versions is specified as ``preferred=True``, in + either ``packages.yaml`` or ``package.py``, the largest matching + version will be used. ("Latest" is defined by the sort order + above). + +#. If no preferences in particular are specified in the package or in + ``packages.yaml``, then the largest matching non-develop version + will be used. By avoiding ``@develop``, this prevents users from + accidentally installing a ``@develop`` version. + +#. If all else fails and ``@develop`` is the only matching version, it + will be used. ^^^^^^^^^^^^^ ``spack md5`` @@ -693,9 +731,9 @@ versions. See the documentation on `attribute_list_url`_ and .. _vcs-fetch: ------------------------------- -Fetching from VCS repositories ------------------------------- +------------------------------- +Fetching from code repositories +------------------------------- For some packages, source code is provided in a Version Control System (VCS) repository rather than in a tarball. Spack can fetch packages @@ -793,9 +831,9 @@ Submodules .. _github-fetch: -"""""" +^^^^^^ GitHub -"""""" +^^^^^^ If a project is hosted on GitHub, *any* valid Git branch, tag or hash may be downloaded as a tarball. This is accomplished simply by @@ -875,38 +913,8 @@ Fetching a revision Subversion branches are handled as part of the directory structure, so you can check out a branch or tag by changing the ``url``. ------------------------------------------ -Standard repositories for python packages ------------------------------------------ - -In addition to their developer websites, many python packages are hosted at the -`Python Package Index (PyPi) `_. Although links to -these individual files are typically `generated using a hash -`_ it is often possible to find a -reliable link of the format - -.. code-block:: sh - - https://pypi.python.org/packages/source///-. - -Packages hosted on GitHub and the like are often developer versions that do not -contain all of the files (e.g. configuration scripts) necessary to support -compilation. For this reason it is ideal to link to a repository such as PyPi -if possible. - -More recently, sources are being indexed at `pypi.io `_ as -well. Links obtained from this site follow a similar pattern, namely - -.. code-block:: sh - - https://pypi.io/packages/source///-. - -These links currently redirect back to `pypi.python.org -`_, but this `may change in the future -`_. - ------------------------------------------------- -Expanding additional resources in the source tree +Resources (expanding extra tarballs) ------------------------------------------------- Some packages (most notably compilers) provide optional features if additional @@ -926,15 +934,6 @@ Based on the keywords present among the arguments the appropriate ``FetchStrateg will be used for the resource. The keyword ``destination`` is relative to the source root of the package and should point to where the resource is to be expanded. ------------------------------------------------------- -Automatic caching of files fetched during installation ------------------------------------------------------- - -Spack maintains a cache (described :ref:`here `) which saves files -retrieved during package installations to avoid re-downloading in the case that -a package is installed with a different specification (but the same version) or -reinstalled on account of a change in the hashing scheme. - .. _license: ----------------- @@ -1099,20 +1098,28 @@ structure like this: package.py ad_lustre_rwcontig_open_source.patch -If you supply a URL instead of a filename, the patch will be fetched -from the URL and then applied to your source code. +If you supply a URL instead of a filename, you need to supply a checksum, +like this: -.. warning:: +.. code-block:: python - It is generally better to use a filename rather than a URL for your - patch. Patches fetched from URLs are not currently checksummed, - and adding checksums for them is tedious for the package builder. - File patches go into the spack repository, which gives you git's - integrity guarantees. URL patches may be removed in a future spack - version. + patch('http://www.nwchem-sw.org/images/Tddft_mxvec20.patch.gz', + md5='f91c6a04df56e228fe946291d2f38c9a') + +This directive provides an ``md5`` checksum. You can use other hashing +algorihtms like ``sha256`` as well. The patch will be fetched from the +URL, checked, and applied to your source code. You can use the ``spack +md5`` command to generate a checksum for a patch file. ``patch`` can take two options keyword arguments. They are: +"""""""""""""""""""""""""""""""""""""" +``md5``, ``sha256``, ``sha512``, etc. +"""""""""""""""""""""""""""""""""""""" + +Use one of these when you supply a patch to be downloaded from a remote +site. The downloaded file will be validated using the given checksum. + """""""" ``when`` """""""" @@ -1960,7 +1967,7 @@ See the :ref:`concretization-preferences` section for more details. .. _install-method: ------------------ -Inconsistent Specs +Conflicting Specs ------------------ Suppose a user needs to install package C, which depends on packages A @@ -2151,7 +2158,7 @@ built with. These parameters give you access to this type of information. .. _install-environment: ----------------------- -The install environment +The build environment ----------------------- In general, you should not have to do much differently in your install @@ -2169,6 +2176,17 @@ custom Makefiles, you may need to add logic to modify the makefiles. The remainder of the section covers the way Spack's build environment works. +^^^^^^^^^^^^^^^^^^^^^ +Forking ``install()`` +^^^^^^^^^^^^^^^^^^^^^ + +To give packagers free reign over their install environment, Spack forks +a new process each time it invokes a package's ``install()`` method. +This allows packages to have a sandboxed build environment, without +impacting the environments ofother jobs that the main Spack process runs. +Packages are free to change the environment or to modify Spack internals, +because each ``install()`` call has its own dedicated process. + ^^^^^^^^^^^^^^^^^^^^^ Environment variables ^^^^^^^^^^^^^^^^^^^^^ @@ -2190,6 +2208,10 @@ The Compiler environment variables that Spack sets are: ``FC`` Fortran 90 and above compiler ============ =============================== +Spack sets these variables so that they point to *compiler +wrappers*. These are covered in :ref:`their own section +` below. + All of these are standard variables respected by most build systems. If your project uses ``Autotools`` or ``CMake``, then it should pick them up automatically when you run ``configure`` or ``cmake`` in the @@ -2237,145 +2259,9 @@ if you want to run commands in that environment to test them out, you can use the :ref:`cmd-spack-env` command, documented below. -.. _compiler-wrappers: - ^^^^^^^^^^^^^^^^^^^^^ -Compiler interceptors -^^^^^^^^^^^^^^^^^^^^^ - -As mentioned, ``CC``, ``CXX``, ``F77``, and ``FC`` are set to point to -Spack's compiler wrappers. These are simply called ``cc``, ``c++``, -``f77``, and ``f90``, and they live in ``$SPACK_ROOT/lib/spack/env``. - -``$SPACK_ROOT/lib/spack/env`` is added first in the ``PATH`` -environment variable when ``install()`` runs so that system compilers -are not picked up instead. - -All of these compiler wrappers point to a single compiler wrapper -script that figures out which *real* compiler it should be building -with. This comes either from spec `concretization -`_ or from a user explicitly asking for a -particular compiler using, e.g., ``%intel`` on the command line. - -In addition to invoking the right compiler, the compiler wrappers add -flags to the compile line so that dependencies can be easily found. -These flags are added for each dependency, if they exist: - -Compile-time library search paths -* ``-L$dep_prefix/lib`` -* ``-L$dep_prefix/lib64`` - -Runtime library search paths (RPATHs) -* ``$rpath_flag$dep_prefix/lib`` -* ``$rpath_flag$dep_prefix/lib64`` - -Include search paths -* ``-I$dep_prefix/include`` - -An example of this would be the ``libdwarf`` build, which has one -dependency: ``libelf``. Every call to ``cc`` in the ``libdwarf`` -build will have ``-I$LIBELF_PREFIX/include``, -``-L$LIBELF_PREFIX/lib``, and ``$rpath_flag$LIBELF_PREFIX/lib`` -inserted on the command line. This is done transparently to the -project's build system, which will just think it's using a system -where ``libelf`` is readily available. Because of this, you **do -not** have to insert extra ``-I``, ``-L``, etc. on the command line. - -Another useful consequence of this is that you often do *not* have to -add extra parameters on the ``configure`` line to get autotools to -find dependencies. The ``libdwarf`` install method just calls -configure like this: - -.. code-block:: python - - configure("--prefix=" + prefix) - -Because of the ``-L`` and ``-I`` arguments, configure will -successfully find ``libdwarf.h`` and ``libdwarf.so``, without the -packager having to provide ``--with-libdwarf=/path/to/libdwarf`` on -the command line. - -.. note:: - - For most compilers, ``$rpath_flag`` is ``-Wl,-rpath,``. However, NAG - passes its flags to GCC instead of passing them directly to the linker. - Therefore, its ``$rpath_flag`` is doubly wrapped: ``-Wl,-Wl,,-rpath,``. - ``$rpath_flag`` can be overriden on a compiler specific basis in - ``lib/spack/spack/compilers/$compiler.py``. - -The compiler wrappers also pass the compiler flags specified by the user from -the command line (``cflags``, ``cxxflags``, ``fflags``, ``cppflags``, ``ldflags``, -and/or ``ldlibs``). They do not override the canonical autotools flags with the -same names (but in ALL-CAPS) that may be passed into the build by particularly -challenging package scripts. - -^^^^^^^^^^^^^^ -Compiler flags -^^^^^^^^^^^^^^ - -In rare circumstances such as compiling and running small unit tests, a package -developer may need to know what are the appropriate compiler flags to enable -features like ``OpenMP``, ``c++11``, ``c++14`` and alike. To that end the -compiler classes in ``spack`` implement the following **properties**: -``openmp_flag``, ``cxx11_flag``, ``cxx14_flag``, which can be accessed in a -package by ``self.compiler.cxx11_flag`` and alike. Note that the implementation -is such that if a given compiler version does not support this feature, an -error will be produced. Therefore package developers can also use these properties -to assert that a compiler supports the requested feature. This is handy when a -package supports additional variants like - -.. code-block:: python - - variant('openmp', default=True, description="Enable OpenMP support.") - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Message Parsing Interface (MPI) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -It is common for high performance computing software/packages to use ``MPI``. -As a result of conretization, a given package can be built using different -implementations of MPI such as ``Openmpi``, ``MPICH`` or ``IntelMPI``. -In some scenarios, to configure a package, one has to provide it with appropriate MPI -compiler wrappers such as ``mpicc``, ``mpic++``. -However different implementations of ``MPI`` may have different names for those -wrappers. In order to make package's ``install()`` method indifferent to the -choice ``MPI`` implementation, each package which implements ``MPI`` sets up -``self.spec.mpicc``, ``self.spec.mpicxx``, ``self.spec.mpifc`` and ``self.spec.mpif77`` -to point to ``C``, ``C++``, ``Fortran 90`` and ``Fortran 77`` ``MPI`` wrappers. -Package developers are advised to use these variables, for example ``self.spec['mpi'].mpicc`` -instead of hard-coding ``join_path(self.spec['mpi'].prefix.bin, 'mpicc')`` for -the reasons outlined above. - -^^^^^^^^^^^^^^^^^^^^^^^^^ -Blas and Lapack libraries -^^^^^^^^^^^^^^^^^^^^^^^^^ - -Different packages provide implementation of ``Blas`` and ``Lapack`` routines. -The names of the resulting static and/or shared libraries differ from package -to package. In order to make the ``install()`` method independent of the -choice of ``Blas`` implementation, each package which provides it -sets up ``self.spec.blas_libs`` to point to the correct ``Blas`` libraries. -The same applies to packages which provide ``Lapack``. Package developers are advised to -use these variables, for example ``spec['blas'].blas_libs.joined()`` instead of -hard-coding ``join_path(spec['blas'].prefix.lib, 'libopenblas.so')``. - -^^^^^^^^^^^^^^^^^^^^^ -Forking ``install()`` -^^^^^^^^^^^^^^^^^^^^^ - -To give packagers free reign over their install environment, Spack -forks a new process each time it invokes a package's ``install()`` -method. This allows packages to have their own completely sandboxed -build environment, without impacting other jobs that the main Spack -process runs. Packages are free to change the environment or to -modify Spack internals, because each ``install()`` call has its own -dedicated process. - -.. _prefix-objects: - ------------------ Failing the build ------------------ +^^^^^^^^^^^^^^^^^^^^^ Sometimes you don't want a package to successfully install unless some condition is true. You can explicitly cause the build to fail from @@ -2386,9 +2272,89 @@ condition is true. You can explicitly cause the build to fail from if spec.architecture.startswith('darwin'): raise InstallError('This package does not build on Mac OS X!') --------------- +.. _shell-wrappers: + +^^^^^^^^^^^^^^^^^^^^^^^ +Shell command functions +^^^^^^^^^^^^^^^^^^^^^^^ + +Recall the install method from ``libelf``: + +.. literalinclude:: ../../../var/spack/repos/builtin/packages/libelf/package.py + :pyobject: Libelf.install + :linenos: + +Normally in Python, you'd have to write something like this in order +to execute shell commands: + +.. code-block:: python + + import subprocess + subprocess.check_call('configure', '--prefix={0}'.format(prefix)) + +We've tried to make this a bit easier by providing callable wrapper +objects for some shell commands. By default, ``configure``, +``cmake``, and ``make`` wrappers are are provided, so you can call +them more naturally in your package files. + +If you need other commands, you can use ``which`` to get them: + +.. code-block:: python + + sed = which('sed') + sed('s/foo/bar/', filename) + +The ``which`` function will search the ``PATH`` for the application. + +Callable wrappers also allow spack to provide some special features. +For example, in Spack, ``make`` is parallel by default, and Spack +figures out the number of cores on your machine and passes an +appropriate value for ``-j`` when it calls ``make`` (see the +``parallel`` `package attribute `). In +a package file, you can supply a keyword argument, ``parallel=False``, +to the ``make`` wrapper to disable parallel make. In the ``libelf`` +package, this allows us to avoid race conditions in the library's +build system. + +^^^^^^^^^^^^^^ +Compiler flags +^^^^^^^^^^^^^^ + +In rare circumstances such as compiling and running small unit tests, a +package developer may need to know what are the appropriate compiler +flags to enable features like ``OpenMP``, ``c++11``, ``c++14`` and +alike. To that end the compiler classes in ``spack`` implement the +following **properties**: ``openmp_flag``, ``cxx11_flag``, +``cxx14_flag``, which can be accessed in a package by +``self.compiler.cxx11_flag`` and alike. Note that the implementation is +such that if a given compiler version does not support this feature, an +error will be produced. Therefore package developers can also use these +properties to assert that a compiler supports the requested feature. This +is handy when a package supports additional variants like + +.. code-block:: python + + variant('openmp', default=True, description="Enable OpenMP support.") + +^^^^^^^^^^^^^^^^^^^^^^^^^ +Blas and Lapack libraries +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Different packages provide implementation of ``Blas`` and ``Lapack`` +routines. The names of the resulting static and/or shared libraries +differ from package to package. In order to make the ``install()`` method +independent of the choice of ``Blas`` implementation, each package which +provides it sets up ``self.spec.blas_libs`` to point to the correct +``Blas`` libraries. The same applies to packages which provide +``Lapack``. Package developers are advised to use these variables, for +example ``spec['blas'].blas_libs.joined()`` instead of hard-coding +``join_path(spec['blas'].prefix.lib, 'libopenblas.so')``. + +.. _prefix-objects: + +^^^^^^^^^^^^^^^^^^^^^ Prefix objects --------------- +^^^^^^^^^^^^^^^^^^^^^ Spack passes the ``prefix`` parameter to the install method so that you can pass it to ``configure``, ``cmake``, or some other installer, @@ -2657,50 +2623,248 @@ method (the one without the ``@when`` decorator) will be called. versions. There's not much we can do to get around this because of the way decorators work. +.. _compiler-wrappers: -.. _shell-wrappers: +--------------------- +Compiler wrappers +--------------------- ------------------------ -Shell command functions ------------------------ +As mentioned, ``CC``, ``CXX``, ``F77``, and ``FC`` are set to point to +Spack's compiler wrappers. These are simply called ``cc``, ``c++``, +``f77``, and ``f90``, and they live in ``$SPACK_ROOT/lib/spack/env``. -Recall the install method from ``libelf``: +``$SPACK_ROOT/lib/spack/env`` is added first in the ``PATH`` +environment variable when ``install()`` runs so that system compilers +are not picked up instead. -.. literalinclude:: ../../../var/spack/repos/builtin/packages/libelf/package.py - :pyobject: Libelf.install - :linenos: +All of these compiler wrappers point to a single compiler wrapper +script that figures out which *real* compiler it should be building +with. This comes either from spec `concretization +`_ or from a user explicitly asking for a +particular compiler using, e.g., ``%intel`` on the command line. -Normally in Python, you'd have to write something like this in order -to execute shell commands: +In addition to invoking the right compiler, the compiler wrappers add +flags to the compile line so that dependencies can be easily found. +These flags are added for each dependency, if they exist: + +Compile-time library search paths +* ``-L$dep_prefix/lib`` +* ``-L$dep_prefix/lib64`` + +Runtime library search paths (RPATHs) +* ``$rpath_flag$dep_prefix/lib`` +* ``$rpath_flag$dep_prefix/lib64`` + +Include search paths +* ``-I$dep_prefix/include`` + +An example of this would be the ``libdwarf`` build, which has one +dependency: ``libelf``. Every call to ``cc`` in the ``libdwarf`` +build will have ``-I$LIBELF_PREFIX/include``, +``-L$LIBELF_PREFIX/lib``, and ``$rpath_flag$LIBELF_PREFIX/lib`` +inserted on the command line. This is done transparently to the +project's build system, which will just think it's using a system +where ``libelf`` is readily available. Because of this, you **do +not** have to insert extra ``-I``, ``-L``, etc. on the command line. + +Another useful consequence of this is that you often do *not* have to +add extra parameters on the ``configure`` line to get autotools to +find dependencies. The ``libdwarf`` install method just calls +configure like this: .. code-block:: python - import subprocess - subprocess.check_call('configure', '--prefix={0}'.format(prefix)) + configure("--prefix=" + prefix) -We've tried to make this a bit easier by providing callable wrapper -objects for some shell commands. By default, ``configure``, -``cmake``, and ``make`` wrappers are are provided, so you can call -them more naturally in your package files. +Because of the ``-L`` and ``-I`` arguments, configure will +successfully find ``libdwarf.h`` and ``libdwarf.so``, without the +packager having to provide ``--with-libdwarf=/path/to/libdwarf`` on +the command line. -If you need other commands, you can use ``which`` to get them: +.. note:: + + For most compilers, ``$rpath_flag`` is ``-Wl,-rpath,``. However, NAG + passes its flags to GCC instead of passing them directly to the linker. + Therefore, its ``$rpath_flag`` is doubly wrapped: ``-Wl,-Wl,,-rpath,``. + ``$rpath_flag`` can be overriden on a compiler specific basis in + ``lib/spack/spack/compilers/$compiler.py``. + +The compiler wrappers also pass the compiler flags specified by the user from +the command line (``cflags``, ``cxxflags``, ``fflags``, ``cppflags``, ``ldflags``, +and/or ``ldlibs``). They do not override the canonical autotools flags with the +same names (but in ALL-CAPS) that may be passed into the build by particularly +challenging package scripts. + +--------------------- +MPI support in Spack +--------------------- + +It is common for high performance computing software/packages to use the +Message Passing Interface ( ``MPI``). As a result of conretization, a +given package can be built using different implementations of MPI such as +``Openmpi``, ``MPICH`` or ``IntelMPI``. That is, when your package +declares that it ``depends_on('mpi')``, it can be built with any of these +``mpi`` implementations. In some scenarios, to configure a package, one +has to provide it with appropriate MPI compiler wrappers such as +``mpicc``, ``mpic++``. However different implementations of ``MPI`` may +have different names for those wrappers. + +Spack provides an idiomatic way to use MPI compilers in your package. To +use MPI wrappers to compile your whole build, do this in your +``install()`` method: .. code-block:: python - sed = which('sed') - sed('s/foo/bar/', filename) + env['CC'] = spec['mpi'].mpicc + env['CXX'] = spec['mpi'].mpicxx + env['F77'] = spec['mpi'].mpif77 + env['FC'] = spec['mpi'].mpifc -The ``which`` function will search the ``PATH`` for the application. +That's all. A longer explanation of why this works is below. -Callable wrappers also allow spack to provide some special features. -For example, in Spack, ``make`` is parallel by default, and Spack -figures out the number of cores on your machine and passes an -appropriate value for ``-j`` when it calls ``make`` (see the -``parallel`` `package attribute `). In -a package file, you can supply a keyword argument, ``parallel=False``, -to the ``make`` wrapper to disable parallel make. In the ``libelf`` -package, this allows us to avoid race conditions in the library's -build system. +We don't try to force any particular build method on packagers. The +decision to use MPI wrappers depends on the way the package is written, +on common practice, and on "what works". Loosely, There are three types +of MPI builds: + + 1. Some build systems work well without the wrappers and can treat MPI + as an external library, where the person doing the build has to + supply includes/libs/etc. This is fairly uncommon. + + 2. Others really want the wrappers and assume you're using an MPI + "compiler" – i.e., they have no mechanism to add MPI + includes/libraries/etc. + + 3. CMake's ``FindMPI`` needs the compiler wrappers, but it uses them to + extract ``–I`` / ``-L`` / ``-D`` arguments, then treats MPI like a + regular library. + +Note that some CMake builds fall into case 2 because they either don't +know about or don't like CMake's ``FindMPI`` support – they just assume +an MPI compiler. Also, some autotools builds fall into case 3 (e.g. `here +is an autotools version of CMake's FindMPI +`_). + +Given all of this, we leave the use of the wrappers up to the packager. +Spack will support all three ways of building MPI packages. + +^^^^^^^^^^^^^^^^^^^^^ +Packaging Conventions +^^^^^^^^^^^^^^^^^^^^^ + +As mentioned above, in the ``install()`` method, ``CC``, ``CXX``, +``F77``, and ``FC`` point to Spack's wrappers around the chosen compiler. +Spack's wrappers are not the MPI compiler wrappers, though they do +automatically add ``–I``, ``–L``, and ``–Wl,-rpath`` args for +dependencies in a similar way. The MPI wrappers are a bit different in +that they also add ``-l`` arguments for the MPI libraries, and some add +special ``-D`` arguments to trigger build options in MPI programs. + +For case 1 above, you generally don't need to do more than patch your +Makefile or add configure args as you normally would. + +For case 3, you don't need to do much of anything, as Spack puts the MPI +compiler wrappers in the PATH, and the build will find them and +interrogate them. + +For case 2, things are a bit more complicated, as you'll need to tell the +build to use the MPI compiler wrappers instead of Spack's compiler +wrappers. All it takes some lines like this: + +.. code-block:: python + + env['CC'] = spec['mpi'].mpicc + env['CXX'] = spec['mpi'].mpicxx + env['F77'] = spec['mpi'].mpif77 + env['FC'] = spec['mpi'].mpifc + +Or, if you pass CC, CXX, etc. directly to your build with, e.g., +`--with-cc=`, you'll want to substitute `spec['mpi'].mpicc` in +there instead, e.g.: + +.. code-block:: python + + configure('—prefix=%s' % prefix, + '—with-cc=%s' % spec['mpi'].mpicc) + +Now, you may think that doing this will lose the includes, library paths, +and RPATHs that Spack's compiler wrapper get you, but we've actually set +things up so that the MPI compiler wrappers use Spack's compiler wrappers +when run from within Spack. So using the MPI wrappers should really be as +simple as the code above. + +^^^^^^^^^^^^^^^^^^^^^ +``spec['mpi']`` +^^^^^^^^^^^^^^^^^^^^^ + +Ok, so how does all this work? + +If your package has a virtual dependency like ``mpi``, then referring to +``spec['mpi']`` within ``install()`` will get you the concrete ``mpi`` +implementation in your dependency DAG. That is a spec object just like +the one passed to install, only the MPI implementations all set some +additional properties on it to help you out. E.g., in mvapich2, you'll +find this: + +.. code-block:: python + + def setup_dependent_package(self, module, dep_spec): + self.spec.mpicc = join_path(self.prefix.bin, 'mpicc') + # … etc … + +That code allows the mvapich2 package to associate an ``mpicc`` property +with the ``mvapich2`` node in the DAG, so that dependents can access it. +``openmpi`` and ``mpich`` do similar things. So, no matter what MPI +you're using, spec['mpi'].mpicc gets you the location of the MPI +compilers. This allows us to have a fairly simple polymorphic interface +for information about virtual dependencies like MPI. + +^^^^^^^^^^^^^^^^^^^^^ +Wrapping wrappers +^^^^^^^^^^^^^^^^^^^^^ + +Spack likes to use its own compiler wrappers to make it easy to add +``RPATHs`` to builds, and to try hard to ensure that your builds use the +right dependencies. This doesn't play nicely by default with MPI, so we +have to do a couple tricks. + + 1. If we build MPI with Spack's wrappers, mpicc and friends will be + installed with hard-coded paths to Spack's wrappers, and using them + from outside of Spack will fail because they only work within Spack. + To fix this, we patch mpicc and friends to use the regular + compilers. Look at the filter_compilers method in mpich, openmpi, + or mvapich2 for details. + + 2. We still want to use the Spack compiler wrappers when Spack is + calling mpicc. Luckily, wrappers in all mainstream MPI + implementations provide environment variables that allow us to + dynamically set the compiler to be used by mpicc, mpicxx, etc. + Denis pasted some code from this below – Spack's build environment + sets ``MPICC``, ``MPICXX``, etc. for mpich derivatives and + ``OMPI_CC``, ``OMPI_CXX``, etc. for OpenMPI. This makes the MPI + compiler wrappers use the Spack compiler wrappers so that your + dependencies still get proper RPATHs even if you use the MPI + wrappers. + +^^^^^^^^^^^^^^^^^^^^^ +MPI on Cray machines +^^^^^^^^^^^^^^^^^^^^^ + +The Cray programming environment notably uses ITS OWN compiler wrappers, +which function like MPI wrappers. On Cray systems, the ``CC``, ``cc``, +and ``ftn`` wrappers ARE the MPI compiler wrappers, and it's assumed that +you'll use them for all of your builds. So on Cray we don't bother with +``mpicc``, ``mpicxx``, etc, Spack MPI implementations set +``spec['mpi'].mpicc`` to point to Spack's wrappers, which wrap the Cray +wrappers, which wrap the regular compilers and include MPI flags. That +may seem complicated, but for packagers, that means the same code for +using MPI wrappers will work, even on even on a Cray: + +.. code-block:: python + + env['CC'] = spec['mpi'].mpicc + +This is because on Cray, ``spec['mpi'].mpicc`` is just ``spack_cc``. .. _sanity-checks: @@ -2963,9 +3127,9 @@ File functions .. _package-lifecycle: ------------------------ -Coding Style Guidelines ------------------------ +----------------------------- +Style guidelines for packages +----------------------------- The following guidelines are provided, in the interests of making Spack packages work in a consistent manner: From c7a1328326054980bd8f8e78dfb5fe6c0a83819d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 26 Jan 2017 04:30:18 -0600 Subject: [PATCH 0065/2394] Add missing dependencies to VizGlow package (#2581) * Add missing dependencies to VizGlow package * Use a version-specific URL for xterm --- .../builtin/packages/libcanberra/package.py | 68 +++++++++++++++++++ .../repos/builtin/packages/libogg/package.py | 35 ++++++++++ .../builtin/packages/libvorbis/package.py | 44 ++++++++++++ .../repos/builtin/packages/vizglow/package.py | 57 +++++++++++++++- .../repos/builtin/packages/xterm/package.py | 55 +++++++++++++++ 5 files changed, 257 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/libcanberra/package.py create mode 100644 var/spack/repos/builtin/packages/libogg/package.py create mode 100644 var/spack/repos/builtin/packages/libvorbis/package.py create mode 100644 var/spack/repos/builtin/packages/xterm/package.py diff --git a/var/spack/repos/builtin/packages/libcanberra/package.py b/var/spack/repos/builtin/packages/libcanberra/package.py new file mode 100644 index 00000000000..dfeb5c9c3e9 --- /dev/null +++ b/var/spack/repos/builtin/packages/libcanberra/package.py @@ -0,0 +1,68 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libcanberra(AutotoolsPackage): + """libcanberra is an implementation of the XDG Sound Theme and + Name Specifications, for generating event sounds on free desktops, + such as GNOME.""" + + homepage = "http://0pointer.de/lennart/projects/libcanberra/" + url = "http://0pointer.de/lennart/projects/libcanberra/libcanberra-0.30.tar.xz" + + version('0.30', '34cb7e4430afaf6f447c4ebdb9b42072') + + # TODO: Add variants and dependencies for the following audio support: + # ALSA, OSS, PulseAudio, udev, GStreamer, null, GTK3+ , tdb + + variant('gtk', default=False, description='Enable optional GTK+ support') + + depends_on('libxrender', when='+gtk') + depends_on('libxext', when='+gtk') + depends_on('libx11', when='+gtk') + depends_on('libxinerama', when='+gtk') + depends_on('libxrandr', when='+gtk') + depends_on('libxcursor', when='+gtk') + depends_on('libxcomposite', when='+gtk') + depends_on('libxdamage', when='+gtk') + depends_on('libxfixes', when='+gtk') + depends_on('libxcb', when='+gtk') + depends_on('libxau', when='+gtk') + depends_on('gtkplus', when='+gtk') + + depends_on('libvorbis') + + depends_on('pkg-config@0.9.0:', type='build') + + def configure_args(self): + args = ['--enable-static'] + + if '+gtk' in self.spec: + args.append('--enable-gtk') + else: + args.append('--disable-gtk') + + return args diff --git a/var/spack/repos/builtin/packages/libogg/package.py b/var/spack/repos/builtin/packages/libogg/package.py new file mode 100644 index 00000000000..bb80764b7cd --- /dev/null +++ b/var/spack/repos/builtin/packages/libogg/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libogg(AutotoolsPackage): + """Ogg is a multimedia container format, and the native file and stream + format for the Xiph.org multimedia codecs.""" + + homepage = "https://www.xiph.org/ogg/" + url = "http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz" + + version('1.3.2', 'b72e1a1dbadff3248e4ed62a4177e937') diff --git a/var/spack/repos/builtin/packages/libvorbis/package.py b/var/spack/repos/builtin/packages/libvorbis/package.py new file mode 100644 index 00000000000..e716abe46dc --- /dev/null +++ b/var/spack/repos/builtin/packages/libvorbis/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libvorbis(AutotoolsPackage): + """Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, + general-purpose compressed audio format for mid to high quality (8kHz- + 48.0kHz, 16+ bit, polyphonic) audio and music at fixed and variable + bitrates from 16 to 128 kbps/channel.""" + + homepage = "https://xiph.org/vorbis/" + url = "http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz" + + version('1.3.5', '7220e089f3be3412a2317d6fde9e3944') + + depends_on('libogg') + + depends_on('pkg-config@0.9.0:', type='build') + + # `make check` crashes when run in parallel + parallel = False diff --git a/var/spack/repos/builtin/packages/vizglow/package.py b/var/spack/repos/builtin/packages/vizglow/package.py index 9e4506b05a6..42e3e23aced 100644 --- a/var/spack/repos/builtin/packages/vizglow/package.py +++ b/var/spack/repos/builtin/packages/vizglow/package.py @@ -39,20 +39,73 @@ class Vizglow(Package): homepage = "http://esgeetech.com/products/vizglow-plasma-modeling/" - version('2.2a-15', 'be2b5044f30f2b2c3bbe87a0037bf228', expand=False, + version('2.2alpha20', '2bef890c66f3a44aaf96f7c96788c89e', expand=False, + url="file://{0}/VizGlow_v2.2alpha20-Linux-x86_64-R09December2016-Install".format(os.getcwd())) + version('2.2alpha17', '1de268564363e0ee86f9ffff1c3b82e1', expand=False, + url="file://{0}/VizGlow_v2.2alpha17-R21November2016-Linux-x86_64-Install".format(os.getcwd())) + version('2.2alpha15', 'be2b5044f30f2b2c3bbe87a0037bf228', expand=False, url="file://{0}/VizGlow_v2.2alpha15-Linux-x86_64-R31October2016-Install".format(os.getcwd())) + # depends_on('mesa') # TODO: mesa build doesn't work for me + depends_on('zlib') + depends_on('freetype') + depends_on('fontconfig') + depends_on('libxrender') + depends_on('xterm') + # Can't get mozjs to build, packagekit -> polkit -> mozjs + # depends_on('packagekit+gtk') + depends_on('libcanberra+gtk') + # Licensing license_required = True license_comment = '#' license_files = ['esgeelm.lic'] license_vars = ['ESGEE_LICENSE_FILE'] + def configure(self, prefix): + # Dictionary of responses + responses = { + 'CreateDesktopShortcut': 'No', + 'CreateQuickLaunchShortcut': 'No', + 'InstallDir': prefix + } + + # Write response file + with open('spack-responses.txt', 'w') as response_file: + for key in responses: + response_file.write('{0}: {1}\n'.format(key, responses[key])) + def install(self, spec, prefix): + self.configure(prefix) + installer = glob.glob('VizGlow*Install')[0] chmod = which('chmod') chmod('+x', installer) installer = Executable(installer) - installer('--mode', 'silent', '--prefix', prefix) + installer('--mode', 'silent', '--response-file', 'spack-responses.txt') + + self.filter_ld_library_path(spec, prefix) + + def filter_ld_library_path(self, spec, prefix): + """Run after install to inject dependencies into LD_LIBRARY_PATH. + + If we don't do this, the run files will clear the LD_LIBRARY_PATH. + Since the installer is a binary file, we have no means of specifying + an RPATH to use.""" + + files = glob.glob(prefix + '/binaries/*.run') + + ld_library_path = ':'.join([ + spec['zlib'].prefix.lib, + spec['freetype'].prefix.lib, + spec['fontconfig'].prefix.lib, + spec['libxrender'].prefix.lib, + spec['libcanberra'].prefix.lib + ]) + + for runfile in files: + filter_file('(export LD_LIBRARY_PATH=)$', + r'\1{0}'.format(ld_library_path), + runfile) diff --git a/var/spack/repos/builtin/packages/xterm/package.py b/var/spack/repos/builtin/packages/xterm/package.py new file mode 100644 index 00000000000..a4977491ea0 --- /dev/null +++ b/var/spack/repos/builtin/packages/xterm/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Xterm(AutotoolsPackage): + """The xterm program is a terminal emulator for the X Window System. It + provides DEC VT102 and Tektronix 4014 compatible terminals for programs + that can't use the window system directly.""" + + homepage = "http://invisible-island.net/xterm/" + url = "ftp://invisible-island.net/xterm/xterm-327.tgz" + + version('327', '3c32e931adcad44e64e57892e75d9e02') + + depends_on('libxft') + depends_on('fontconfig') + depends_on('libxaw') + depends_on('libxmu') + depends_on('libxt') + depends_on('libx11') + depends_on('libxinerama') + depends_on('libxpm') + depends_on('libice') + depends_on('freetype') + depends_on('libxrender') + depends_on('libxext') + depends_on('libsm') + depends_on('libxcb') + depends_on('libxau') + depends_on('bzip2') + + depends_on('pkg-config', type='build') From 6158115ca8ca8604d69865b38099134c30aa4fc8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 26 Jan 2017 04:33:01 -0600 Subject: [PATCH 0066/2394] Standardize argparse help messages (#2847) --- bin/spack | 14 ++++++------- lib/spack/spack/cmd/activate.py | 6 +++--- lib/spack/spack/cmd/arch.py | 4 ++-- lib/spack/spack/cmd/bootstrap.py | 2 +- lib/spack/spack/cmd/build.py | 2 +- lib/spack/spack/cmd/cd.py | 2 +- lib/spack/spack/cmd/checksum.py | 8 +++---- lib/spack/spack/cmd/clean.py | 2 +- lib/spack/spack/cmd/common/arguments.py | 16 +++++++------- lib/spack/spack/cmd/compiler.py | 18 ++++++++-------- lib/spack/spack/cmd/compilers.py | 4 ++-- lib/spack/spack/cmd/config.py | 16 +++++++------- lib/spack/spack/cmd/configure.py | 4 ++-- lib/spack/spack/cmd/create.py | 12 +++++------ lib/spack/spack/cmd/deactivate.py | 10 ++++----- lib/spack/spack/cmd/debug.py | 4 ++-- lib/spack/spack/cmd/dependents.py | 4 ++-- lib/spack/spack/cmd/diy.py | 12 +++++------ lib/spack/spack/cmd/doc.py | 4 ++-- lib/spack/spack/cmd/edit.py | 12 +++++------ lib/spack/spack/cmd/env.py | 4 ++-- lib/spack/spack/cmd/extensions.py | 10 ++++----- lib/spack/spack/cmd/fetch.py | 8 +++---- lib/spack/spack/cmd/find.py | 24 ++++++++++----------- lib/spack/spack/cmd/flake8.py | 10 ++++----- lib/spack/spack/cmd/graph.py | 16 +++++++------- lib/spack/spack/cmd/help.py | 2 +- lib/spack/spack/cmd/info.py | 4 ++-- lib/spack/spack/cmd/install.py | 28 ++++++++++++------------- lib/spack/spack/cmd/list.py | 8 +++---- lib/spack/spack/cmd/load.py | 6 +++--- lib/spack/spack/cmd/location.py | 22 +++++++++---------- lib/spack/spack/cmd/md5.py | 4 ++-- lib/spack/spack/cmd/mirror.py | 24 ++++++++++----------- lib/spack/spack/cmd/module.py | 18 ++++++++-------- lib/spack/spack/cmd/patch.py | 4 ++-- lib/spack/spack/cmd/pkg.py | 18 ++++++++-------- lib/spack/spack/cmd/providers.py | 4 ++-- lib/spack/spack/cmd/purge.py | 10 ++++----- lib/spack/spack/cmd/python.py | 10 ++++----- lib/spack/spack/cmd/reindex.py | 2 +- lib/spack/spack/cmd/repo.py | 18 ++++++++-------- lib/spack/spack/cmd/restage.py | 2 +- lib/spack/spack/cmd/setup.py | 8 +++---- lib/spack/spack/cmd/spec.py | 14 ++++++------- lib/spack/spack/cmd/stage.py | 6 +++--- lib/spack/spack/cmd/test.py | 10 ++++----- lib/spack/spack/cmd/uninstall.py | 18 ++++++++-------- lib/spack/spack/cmd/unload.py | 4 ++-- lib/spack/spack/cmd/unuse.py | 4 ++-- lib/spack/spack/cmd/url_parse.py | 4 ++-- lib/spack/spack/cmd/urls.py | 10 ++++----- lib/spack/spack/cmd/use.py | 4 ++-- lib/spack/spack/cmd/versions.py | 4 ++-- lib/spack/spack/cmd/view.py | 20 +++++++++--------- 55 files changed, 259 insertions(+), 259 deletions(-) diff --git a/bin/spack b/bin/spack index 66bebe57e72..9f17443d009 100755 --- a/bin/spack +++ b/bin/spack @@ -102,19 +102,19 @@ spec expressions: [^DEPENDENCY [CONSTRAINTS] ...]""")) parser.add_argument('-d', '--debug', action='store_true', - help="Write out debug logs during compile") + help="write out debug logs during compile") parser.add_argument('-D', '--pdb', action='store_true', - help="Run spack under the pdb debugger") + help="run spack under the pdb debugger") parser.add_argument('-k', '--insecure', action='store_true', - help="Do not check ssl certificates when downloading.") + help="do not check ssl certificates when downloading") parser.add_argument('-m', '--mock', action='store_true', - help="Use mock packages instead of real ones.") + help="use mock packages instead of real ones") parser.add_argument('-p', '--profile', action='store_true', - help="Profile execution using cProfile.") + help="profile execution using cProfile") parser.add_argument('-v', '--verbose', action='store_true', - help="Print additional output during builds") + help="print additional output during builds") parser.add_argument('-s', '--stacktrace', action='store_true', - help="Add stacktrace information to all printed statements") + help="add stacktrace information to all printed statements") parser.add_argument('-V', '--version', action='version', version="%s" % spack.spack_version) diff --git a/lib/spack/spack/cmd/activate.py b/lib/spack/spack/cmd/activate.py index 797cdcb1367..f21799753b5 100644 --- a/lib/spack/spack/cmd/activate.py +++ b/lib/spack/spack/cmd/activate.py @@ -27,16 +27,16 @@ import spack import spack.cmd -description = "Activate a package extension." +description = "activate a package extension" def setup_parser(subparser): subparser.add_argument( '-f', '--force', action='store_true', - help="Activate without first activating dependencies.") + help="activate without first activating dependencies") subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="spec of package extension to activate.") + help="spec of package extension to activate") def activate(parser, args): diff --git a/lib/spack/spack/cmd/arch.py b/lib/spack/spack/cmd/arch.py index 4e29230c288..5b9daf9dea0 100644 --- a/lib/spack/spack/cmd/arch.py +++ b/lib/spack/spack/cmd/arch.py @@ -24,14 +24,14 @@ ############################################################################## import spack.architecture as architecture -description = "Print architecture information about this machine." +description = "print architecture information about this machine" def setup_parser(subparser): parts = subparser.add_mutually_exclusive_group() parts.add_argument( '-p', '--platform', action='store_true', default=False, - help="Print only the platform.") + help="print only the platform") def arch(parser, args): diff --git a/lib/spack/spack/cmd/bootstrap.py b/lib/spack/spack/cmd/bootstrap.py index a79ef4aa680..a804086a389 100644 --- a/lib/spack/spack/cmd/bootstrap.py +++ b/lib/spack/spack/cmd/bootstrap.py @@ -32,7 +32,7 @@ _SPACK_UPSTREAM = 'https://github.com/llnl/spack' -description = "Create a new installation of spack in another prefix" +description = "create a new installation of spack in another prefix" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/build.py b/lib/spack/spack/cmd/build.py index 6c0029794f9..6a90af907d8 100644 --- a/lib/spack/spack/cmd/build.py +++ b/lib/spack/spack/cmd/build.py @@ -26,7 +26,7 @@ from spack import * -description = 'Stops at build stage when installing a package, if possible' +description = 'stops at build stage when installing a package, if possible' build_system_to_phase = { CMakePackage: 'build', diff --git a/lib/spack/spack/cmd/cd.py b/lib/spack/spack/cmd/cd.py index cf7232258c0..784ad4ac83c 100644 --- a/lib/spack/spack/cmd/cd.py +++ b/lib/spack/spack/cmd/cd.py @@ -25,7 +25,7 @@ import spack.cmd.location import spack.modules -description = "cd to spack directories in the shell." +description = "cd to spack directories in the shell" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/checksum.py b/lib/spack/spack/cmd/checksum.py index 8e4de0efc31..4ea31efe08b 100644 --- a/lib/spack/spack/cmd/checksum.py +++ b/lib/spack/spack/cmd/checksum.py @@ -35,19 +35,19 @@ from spack.util.naming import * from spack.version import * -description = "Checksum available versions of a package." +description = "checksum available versions of a package" def setup_parser(subparser): subparser.add_argument( 'package', - help='Package to checksum versions for') + help='package to checksum versions for') subparser.add_argument( '--keep-stage', action='store_true', - help="Don't clean up staging area when command completes.") + help="don't clean up staging area when command completes") subparser.add_argument( 'versions', nargs=argparse.REMAINDER, - help='Versions to generate checksums for') + help='versions to generate checksums for') def get_checksums(url_dict, name, **kwargs): diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py index dc62fbcaf66..6c70b5bd38f 100644 --- a/lib/spack/spack/cmd/clean.py +++ b/lib/spack/spack/cmd/clean.py @@ -29,7 +29,7 @@ import spack import spack.cmd -description = "Remove build stage and source tarball for packages." +description = "remove build stage and source tarball for packages" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index f091b9cf759..b527c7f1387 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -76,32 +76,32 @@ def _specs(self, **kwargs): _arguments['constraint'] = Args( 'constraint', nargs=argparse.REMAINDER, action=ConstraintAction, - help='Constraint to select a subset of installed packages') + help='constraint to select a subset of installed packages') _arguments['module_type'] = Args( - '-m', '--module-type', help='Type of module files', + '-m', '--module-type', help='type of module files', default='tcl', choices=spack.modules.module_types) _arguments['yes_to_all'] = Args( '-y', '--yes-to-all', action='store_true', dest='yes_to_all', - help='Assume "yes" is the answer to every confirmation request.') + help='assume "yes" is the answer to every confirmation request') _arguments['recurse_dependencies'] = Args( '-r', '--dependencies', action='store_true', dest='recurse_dependencies', - help='Recursively traverse spec dependencies') + help='recursively traverse spec dependencies') _arguments['clean'] = Args( '--clean', action='store_false', dest='dirty', - help='Clean environment before installing package.') + help='clean environment before installing package') _arguments['dirty'] = Args( '--dirty', action='store_true', dest='dirty', - help='Do NOT clean environment before installing.') + help='do NOT clean environment before installing') _arguments['long'] = Args( '-l', '--long', action='store_true', - help='Show dependency hashes as well as versions.') + help='show dependency hashes as well as versions') _arguments['very_long'] = Args( '-L', '--very-long', action='store_true', - help='Show full dependency hashes as well as versions.') + help='show full dependency hashes as well as versions') diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index 609210f77e3..c6097941850 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -35,7 +35,7 @@ from spack.spec import CompilerSpec, ArchSpec from spack.util.environment import get_path -description = "Manage compilers" +description = "manage compilers" def setup_parser(subparser): @@ -47,35 +47,35 @@ def setup_parser(subparser): # Find find_parser = sp.add_parser( 'find', aliases=['add'], - help='Search the system for compilers to add to Spack configuration.') + help='search the system for compilers to add to Spack configuration') find_parser.add_argument('add_paths', nargs=argparse.REMAINDER) find_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_modify_scope, - help="Configuration scope to modify.") + help="configuration scope to modify") # Remove remove_parser = sp.add_parser( - 'remove', aliases=['rm'], help='Remove compiler by spec.') + 'remove', aliases=['rm'], help='remove compiler by spec') remove_parser.add_argument( '-a', '--all', action='store_true', - help='Remove ALL compilers that match spec.') + help='remove ALL compilers that match spec') remove_parser.add_argument('compiler_spec') remove_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_modify_scope, - help="Configuration scope to modify.") + help="configuration scope to modify") # List list_parser = sp.add_parser('list', help='list available compilers') list_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_list_scope, - help="Configuration scope to read from.") + help="configuration scope to read from") # Info - info_parser = sp.add_parser('info', help='Show compiler paths.') + info_parser = sp.add_parser('info', help='show compiler paths') info_parser.add_argument('compiler_spec') info_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_list_scope, - help="Configuration scope to read from.") + help="configuration scope to read from") def compiler_find(args): diff --git a/lib/spack/spack/cmd/compilers.py b/lib/spack/spack/cmd/compilers.py index b87f977e5a3..934fc6cf061 100644 --- a/lib/spack/spack/cmd/compilers.py +++ b/lib/spack/spack/cmd/compilers.py @@ -25,12 +25,12 @@ import spack from spack.cmd.compiler import compiler_list -description = "List available compilers. Same as 'spack compiler list'." +description = "list available compilers, same as 'spack compiler list'" def setup_parser(subparser): subparser.add_argument('--scope', choices=spack.config.config_scopes, - help="Configuration scope to read/modify.") + help="configuration scope to read/modify") def compilers(parser, args): diff --git a/lib/spack/spack/cmd/config.py b/lib/spack/spack/cmd/config.py index 3288c4cb8bc..1a9e44a8b96 100644 --- a/lib/spack/spack/cmd/config.py +++ b/lib/spack/spack/cmd/config.py @@ -24,27 +24,27 @@ ############################################################################## import spack.config -description = "Get and set configuration options." +description = "get and set configuration options" def setup_parser(subparser): # User can only choose one subparser.add_argument('--scope', choices=spack.config.config_scopes, - help="Configuration scope to read/modify.") + help="configuration scope to read/modify") sp = subparser.add_subparsers(metavar='SUBCOMMAND', dest='config_command') - get_parser = sp.add_parser('get', help='Print configuration values.') + get_parser = sp.add_parser('get', help='print configuration values') get_parser.add_argument('section', - help="Configuration section to print. " - "Options: %(choices)s.", + help="configuration section to print. " + "options: %(choices)s", metavar='SECTION', choices=spack.config.section_schemas) - edit_parser = sp.add_parser('edit', help='Edit configuration file.') + edit_parser = sp.add_parser('edit', help='edit configuration file') edit_parser.add_argument('section', - help="Configuration section to edit. " - "Options: %(choices)s.", + help="configuration section to edit. " + "options: %(choices)s", metavar='SECTION', choices=spack.config.section_schemas) diff --git a/lib/spack/spack/cmd/configure.py b/lib/spack/spack/cmd/configure.py index 3eebe2584bb..7b1ef04522a 100644 --- a/lib/spack/spack/cmd/configure.py +++ b/lib/spack/spack/cmd/configure.py @@ -31,7 +31,7 @@ from spack import * -description = 'Stops at configuration stage when installing a package, if possible' # NOQA: ignore=E501 +description = 'stops at configuration stage when installing a package, if possible' # NOQA: ignore=E501 build_system_to_phase = { @@ -49,7 +49,7 @@ def setup_parser(subparser): subparser.add_argument( '-v', '--verbose', action='store_true', - help="Print additional output during builds" + help="print additional output during builds" ) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 19128e35134..aa3f82a3316 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -39,7 +39,7 @@ from spack.util.executable import which from spack.util.naming import * -description = "Create a new package file" +description = "create a new package file" package_template = '''\ ############################################################################## @@ -315,7 +315,7 @@ def setup_parser(subparser): help="url of package archive") subparser.add_argument( '--keep-stage', action='store_true', - help="Don't clean up staging area when command completes.") + help="don't clean up staging area when command completes") subparser.add_argument( '-n', '--name', help="name of the package to create") @@ -324,14 +324,14 @@ def setup_parser(subparser): help="build system template to use. options: %(choices)s") subparser.add_argument( '-r', '--repo', - help="Path to a repository where the package should be created.") + help="path to a repository where the package should be created") subparser.add_argument( '-N', '--namespace', - help="Specify a namespace for the package. Must be the namespace of " - "a repository registered with Spack.") + help="specify a namespace for the package. must be the namespace of " + "a repository registered with Spack") subparser.add_argument( '-f', '--force', action='store_true', - help="Overwrite any existing package file with the same name.") + help="overwrite any existing package file with the same name") class BuildSystemGuesser: diff --git a/lib/spack/spack/cmd/deactivate.py b/lib/spack/spack/cmd/deactivate.py index fedd078972d..7ea20392362 100644 --- a/lib/spack/spack/cmd/deactivate.py +++ b/lib/spack/spack/cmd/deactivate.py @@ -30,20 +30,20 @@ import spack.store from spack.graph import topological_sort -description = "Deactivate a package extension." +description = "deactivate a package extension" def setup_parser(subparser): subparser.add_argument( '-f', '--force', action='store_true', - help="Run deactivation even if spec is NOT currently activated.") + help="run deactivation even if spec is NOT currently activated") subparser.add_argument( '-a', '--all', action='store_true', - help="Deactivate all extensions of an extendable package, or " - "deactivate an extension AND its dependencies.") + help="deactivate all extensions of an extendable package, or " + "deactivate an extension AND its dependencies") subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="spec of package extension to deactivate.") + help="spec of package extension to deactivate") def deactivate(parser, args): diff --git a/lib/spack/spack/cmd/debug.py b/lib/spack/spack/cmd/debug.py index c7e90cb2108..06dea9ea708 100644 --- a/lib/spack/spack/cmd/debug.py +++ b/lib/spack/spack/cmd/debug.py @@ -33,13 +33,13 @@ import spack from spack.util.executable import which -description = "Debugging commands for troubleshooting Spack." +description = "debugging commands for troubleshooting Spack" def setup_parser(subparser): sp = subparser.add_subparsers(metavar='SUBCOMMAND', dest='debug_command') sp.add_parser('create-db-tarball', - help="Create a tarball of Spack's installation metadata.") + help="create a tarball of Spack's installation metadata") def _debug_tarball_suffix(): diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index dc2ee658ac2..8c533561e3e 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -30,13 +30,13 @@ import spack.store import spack.cmd -description = "Show installed packages that depend on another." +description = "show installed packages that depend on another" def setup_parser(subparser): subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="specs to list dependencies of.") + help="specs to list dependencies of") def dependents(parser, args): diff --git a/lib/spack/spack/cmd/diy.py b/lib/spack/spack/cmd/diy.py index dbb5a253ec3..c67e189f733 100644 --- a/lib/spack/spack/cmd/diy.py +++ b/lib/spack/spack/cmd/diy.py @@ -33,25 +33,25 @@ import spack.cmd.common.arguments as arguments from spack.stage import DIYStage -description = "Do-It-Yourself: build from an existing source directory." +description = "do-it-yourself: build from an existing source directory" def setup_parser(subparser): subparser.add_argument( '-i', '--ignore-dependencies', action='store_true', dest='ignore_deps', - help="Do not try to install dependencies of requested packages.") + help="don't try to install dependencies of requested packages") subparser.add_argument( '--keep-prefix', action='store_true', - help="Don't remove the install prefix if installation fails.") + help="do not remove the install prefix if installation fails") subparser.add_argument( '--skip-patch', action='store_true', - help="Skip patching for the DIY build.") + help="skip patching for the DIY build") subparser.add_argument( '-q', '--quiet', action='store_true', dest='quiet', - help="Do not display verbose build output while installing.") + help="do not display verbose build output while installing") subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="specs to use for install. Must contain package AND version.") + help="specs to use for install. must contain package AND version") cd_group = subparser.add_mutually_exclusive_group() arguments.add_common_arguments(cd_group, ['clean', 'dirty']) diff --git a/lib/spack/spack/cmd/doc.py b/lib/spack/spack/cmd/doc.py index 291b17216fe..12ae6b49738 100644 --- a/lib/spack/spack/cmd/doc.py +++ b/lib/spack/spack/cmd/doc.py @@ -23,11 +23,11 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -description = "Run pydoc from within spack." +description = "run pydoc from within spack" def setup_parser(subparser): - subparser.add_argument('entity', help="Run pydoc help on entity") + subparser.add_argument('entity', help="run pydoc help on entity") def doc(parser, args): diff --git a/lib/spack/spack/cmd/edit.py b/lib/spack/spack/cmd/edit.py index 23fd307ab46..f4397361921 100644 --- a/lib/spack/spack/cmd/edit.py +++ b/lib/spack/spack/cmd/edit.py @@ -32,7 +32,7 @@ from spack.spec import Spec from spack.repository import Repo -description = "Open package files in $EDITOR" +description = "open package files in $EDITOR" def edit_package(name, repo_path, namespace): @@ -76,23 +76,23 @@ def setup_parser(subparser): excl_args.add_argument( '-c', '--command', dest='path', action='store_const', const=spack.cmd.command_path, - help="Edit the command with the supplied name.") + help="edit the command with the supplied name") excl_args.add_argument( '-t', '--test', dest='path', action='store_const', const=spack.test_path, - help="Edit the test with the supplied name.") + help="edit the test with the supplied name") excl_args.add_argument( '-m', '--module', dest='path', action='store_const', const=spack.module_path, - help="Edit the main spack module with the supplied name.") + help="edit the main spack module with the supplied name") # Options for editing packages excl_args.add_argument( '-r', '--repo', default=None, - help="Path to repo to edit package in.") + help="path to repo to edit package in") excl_args.add_argument( '-N', '--namespace', default=None, - help="Namespace of package to edit.") + help="namespace of package to edit") subparser.add_argument( 'name', nargs='?', default=None, diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index f3bad039d4c..49fc48700c8 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -28,13 +28,13 @@ import spack.cmd import spack.build_environment as build_env -description = "Run a command with the install environment for a spec." +description = "run a command with the install environment for a spec" def setup_parser(subparser): subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="specs of package environment to emulate.") + help="specs of package environment to emulate") def env(parser, args): diff --git a/lib/spack/spack/cmd/extensions.py b/lib/spack/spack/cmd/extensions.py index bd149044ca3..94a3e8288f5 100644 --- a/lib/spack/spack/cmd/extensions.py +++ b/lib/spack/spack/cmd/extensions.py @@ -32,24 +32,24 @@ import spack.cmd.find import spack.store -description = "List extensions for package." +description = "list extensions for package" def setup_parser(subparser): format_group = subparser.add_mutually_exclusive_group() format_group.add_argument( '-l', '--long', action='store_true', dest='long', - help='Show dependency hashes as well as versions.') + help='show dependency hashes as well as versions') format_group.add_argument( '-p', '--paths', action='store_const', dest='mode', const='paths', - help='Show paths to extension install directories') + help='show paths to extension install directories') format_group.add_argument( '-d', '--deps', action='store_const', dest='mode', const='deps', - help='Show full dependency DAG of extensions') + help='show full dependency DAG of extensions') subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help='Spec of package to list extensions for') + help='spec of package to list extensions for') def extensions(parser, args): diff --git a/lib/spack/spack/cmd/fetch.py b/lib/spack/spack/cmd/fetch.py index c1ac2ed48d1..35cc23a9631 100644 --- a/lib/spack/spack/cmd/fetch.py +++ b/lib/spack/spack/cmd/fetch.py @@ -27,19 +27,19 @@ import spack import spack.cmd -description = "Fetch archives for packages" +description = "fetch archives for packages" def setup_parser(subparser): subparser.add_argument( '-n', '--no-checksum', action='store_true', dest='no_checksum', - help="Do not check packages against checksum") + help="do not check packages against checksum") subparser.add_argument( '-m', '--missing', action='store_true', - help="Also fetch all missing dependencies") + help="also fetch all missing dependencies") subparser.add_argument( '-D', '--dependencies', action='store_true', - help="Also fetch all dependencies") + help="also fetch all dependencies") subparser.add_argument( 'packages', nargs=argparse.REMAINDER, help="specs of packages to fetch") diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index ecd6ae28221..3a6d8270fb8 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -29,7 +29,7 @@ from spack.cmd import display_specs -description = "Find installed spack packages" +description = "find installed spack packages" def setup_parser(subparser): @@ -39,56 +39,56 @@ def setup_parser(subparser): dest='mode', const='short', default='short', - help='Show only specs (default)') + help='show only specs (default)') format_group.add_argument('-p', '--paths', action='store_const', dest='mode', const='paths', - help='Show paths to package install directories') + help='show paths to package install directories') format_group.add_argument( '-d', '--deps', action='store_const', dest='mode', const='deps', - help='Show full dependency DAG of installed packages') + help='show full dependency DAG of installed packages') arguments.add_common_arguments(subparser, ['long', 'very_long']) subparser.add_argument('-f', '--show-flags', action='store_true', dest='show_flags', - help='Show spec compiler flags.') + help='show spec compiler flags') implicit_explicit = subparser.add_mutually_exclusive_group() implicit_explicit.add_argument( '-e', '--explicit', action='store_true', - help='Show only specs that were installed explicitly') + help='show only specs that were installed explicitly') implicit_explicit.add_argument( '-E', '--implicit', action='store_true', - help='Show only specs that were installed as dependencies') + help='show only specs that were installed as dependencies') subparser.add_argument( '-u', '--unknown', action='store_true', dest='unknown', - help='Show only specs Spack does not have a package for.') + help='show only specs Spack does not have a package for') subparser.add_argument( '-m', '--missing', action='store_true', dest='missing', - help='Show missing dependencies as well as installed specs.') + help='show missing dependencies as well as installed specs') subparser.add_argument( '-v', '--variants', action='store_true', dest='variants', - help='Show variants in output (can be long)') + help='show variants in output (can be long)') subparser.add_argument('-M', '--only-missing', action='store_true', dest='only_missing', - help='Show only missing dependencies.') + help='show only missing dependencies') subparser.add_argument('-N', '--namespace', action='store_true', - help='Show fully qualified package names.') + help='show fully qualified package names') arguments.add_common_arguments(subparser, ['constraint']) diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index b8e28b08602..5ee68a80df6 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -34,7 +34,7 @@ import spack from spack.util.executable import * -description = "Runs source code style checks on Spack. Requires flake8." +description = "runs source code style checks on Spack. requires flake8" flake8 = None include_untracked = True @@ -138,17 +138,17 @@ def filter_file(source, dest, output=False): def setup_parser(subparser): subparser.add_argument( '-k', '--keep-temp', action='store_true', - help="Do not delete temporary directory where flake8 runs. " - "Use for debugging, to see filtered files.") + help="do not delete temporary directory where flake8 runs. " + "use for debugging, to see filtered files") subparser.add_argument( '-o', '--output', action='store_true', - help="Send filtered files to stdout as well as temp files.") + help="send filtered files to stdout as well as temp files") subparser.add_argument( '-r', '--root-relative', action='store_true', default=False, help="print root-relative paths (default is cwd-relative)") subparser.add_argument( '-U', '--no-untracked', dest='untracked', action='store_false', - default=True, help="Exclude untracked files from checks.") + default=True, help="exclude untracked files from checks") subparser.add_argument( 'files', nargs=argparse.REMAINDER, help="specific files to check") diff --git a/lib/spack/spack/cmd/graph.py b/lib/spack/spack/cmd/graph.py index 6a268e6961a..414b6d78ec4 100644 --- a/lib/spack/spack/cmd/graph.py +++ b/lib/spack/spack/cmd/graph.py @@ -32,7 +32,7 @@ from spack.spec import * from spack.graph import * -description = "Generate graphs of package dependency relationships." +description = "generate graphs of package dependency relationships" def setup_parser(subparser): @@ -41,31 +41,31 @@ def setup_parser(subparser): method = subparser.add_mutually_exclusive_group() method.add_argument( '-a', '--ascii', action='store_true', - help="Draw graph as ascii to stdout (default).") + help="draw graph as ascii to stdout (default)") method.add_argument( '-d', '--dot', action='store_true', - help="Generate graph in dot format and print to stdout.") + help="generate graph in dot format and print to stdout") subparser.add_argument( '-n', '--normalize', action='store_true', - help="Skip concretization; only print normalized spec.") + help="skip concretization; only print normalized spec") subparser.add_argument( '-s', '--static', action='store_true', - help="Use static information from packages, not dynamic spec info.") + help="use static information from packages, not dynamic spec info") subparser.add_argument( '-i', '--installed', action='store_true', - help="Graph all installed specs in dot format (implies --dot).") + help="graph all installed specs in dot format (implies --dot)") subparser.add_argument( '-t', '--deptype', action='store', - help="Comma-separated list of deptypes to traverse. default=%s." + help="comma-separated list of deptypes to traverse. default=%s" % ','.join(alldeps)) subparser.add_argument( 'specs', nargs=argparse.REMAINDER, - help="specs of packages to graph.") + help="specs of packages to graph") def graph(parser, args): diff --git a/lib/spack/spack/cmd/help.py b/lib/spack/spack/cmd/help.py index 5bc8fc3e743..e867ca12958 100644 --- a/lib/spack/spack/cmd/help.py +++ b/lib/spack/spack/cmd/help.py @@ -22,7 +22,7 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -description = "Get help on spack and its commands" +description = "get help on spack and its commands" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 8e7df87a023..1dd0ee4e789 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -27,7 +27,7 @@ import spack import spack.fetch_strategy as fs -description = "Get detailed information on a particular package" +description = "get detailed information on a particular package" def padder(str_list, extra=0): @@ -43,7 +43,7 @@ def pad(string): def setup_parser(subparser): subparser.add_argument( - 'name', metavar="PACKAGE", help="Name of package to get info for.") + 'name', metavar="PACKAGE", help="name of package to get info for") def print_text_info(pkg): diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index 3731fe3c81a..fb01fc2d5e1 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -40,7 +40,7 @@ from spack.fetch_strategy import FetchError from spack.package import PackageBase -description = "Build and install packages" +description = "build and install packages" def setup_parser(subparser): @@ -49,29 +49,29 @@ def setup_parser(subparser): default='package,dependencies', dest='things_to_install', choices=['package', 'dependencies'], - help="""Select the mode of installation. -The default is to install the package along with all its dependencies. -Alternatively one can decide to install only the package or only -the dependencies.""" + help="""select the mode of installation. +the default is to install the package along with all its dependencies. +alternatively one can decide to install only the package or only +the dependencies""" ) subparser.add_argument( '-j', '--jobs', action='store', type=int, - help="Explicitly set number of make jobs. Default is #cpus.") + help="explicitly set number of make jobs. default is #cpus") subparser.add_argument( '--keep-prefix', action='store_true', dest='keep_prefix', - help="Don't remove the install prefix if installation fails.") + help="don't remove the install prefix if installation fails") subparser.add_argument( '--keep-stage', action='store_true', dest='keep_stage', - help="Don't remove the build stage if installation succeeds.") + help="don't remove the build stage if installation succeeds") subparser.add_argument( '-n', '--no-checksum', action='store_true', dest='no_checksum', - help="Do not check packages against checksum") + help="do not check packages against checksum") subparser.add_argument( '-v', '--verbose', action='store_true', dest='verbose', - help="Display verbose build output while installing.") + help="display verbose build output while installing") subparser.add_argument( '--fake', action='store_true', dest='fake', - help="Fake install. Just remove prefix and create a fake file.") + help="fake install. just remove prefix and create a fake file") cd_group = subparser.add_mutually_exclusive_group() arguments.add_common_arguments(cd_group, ['clean', 'dirty']) @@ -83,18 +83,18 @@ def setup_parser(subparser): ) subparser.add_argument( '--run-tests', action='store_true', dest='run_tests', - help="Run package level tests during installation." + help="run package level tests during installation" ) subparser.add_argument( '--log-format', default=None, choices=['junit'], - help="Format to be used for log files." + help="format to be used for log files" ) subparser.add_argument( '--log-file', default=None, - help="Filename for the log file. If not passed a default will be used." + help="filename for the log file. if not passed a default will be used" ) diff --git a/lib/spack/spack/cmd/list.py b/lib/spack/spack/cmd/list.py index e1389df69f1..b5b699dccdb 100644 --- a/lib/spack/spack/cmd/list.py +++ b/lib/spack/spack/cmd/list.py @@ -33,7 +33,7 @@ import spack from llnl.util.tty.colify import colify -description = "Print available spack packages to stdout in different formats" +description = "print available spack packages to stdout in different formats" formatters = {} @@ -47,13 +47,13 @@ def formatter(func): def setup_parser(subparser): subparser.add_argument( 'filter', nargs=argparse.REMAINDER, - help='Optional case-insensitive glob patterns to filter results.') + help='optional case-insensitive glob patterns to filter results') subparser.add_argument( '-d', '--search-description', action='store_true', default=False, - help='Filtering will also search the description for a match.') + help='filtering will also search the description for a match') subparser.add_argument( '--format', default='name_only', choices=formatters, - help='Format to be used to print the output [default: name_only]') + help='format to be used to print the output [default: name_only]') def filter_by_name(pkgs, args): diff --git a/lib/spack/spack/cmd/load.py b/lib/spack/spack/cmd/load.py index 85190a5d0b5..cdc3a741ae0 100644 --- a/lib/spack/spack/cmd/load.py +++ b/lib/spack/spack/cmd/load.py @@ -25,7 +25,7 @@ import argparse import spack.modules -description = "Add package to environment using modules." +description = "add package to environment using modules" def setup_parser(subparser): @@ -33,8 +33,8 @@ def setup_parser(subparser): message with -h. """ subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="Spec of package to load with modules. " - "(If -, read specs from STDIN)") + help="spec of package to load with modules " + "(if -, read specs from STDIN)") def load(parser, args): diff --git a/lib/spack/spack/cmd/location.py b/lib/spack/spack/cmd/location.py index 54f71857072..c82b7072f98 100644 --- a/lib/spack/spack/cmd/location.py +++ b/lib/spack/spack/cmd/location.py @@ -29,7 +29,7 @@ import spack import spack.cmd -description = "Print out locations of various directories used by Spack" +description = "print out locations of various directories used by Spack" def setup_parser(subparser): @@ -38,34 +38,34 @@ def setup_parser(subparser): directories.add_argument( '-m', '--module-dir', action='store_true', - help="Spack python module directory.") + help="spack python module directory") directories.add_argument( '-r', '--spack-root', action='store_true', - help="Spack installation root.") + help="spack installation root") directories.add_argument( '-i', '--install-dir', action='store_true', - help="Install prefix for spec (spec need not be installed).") + help="install prefix for spec (spec need not be installed)") directories.add_argument( '-p', '--package-dir', action='store_true', - help="Directory enclosing a spec's package.py file.") + help="directory enclosing a spec's package.py file") directories.add_argument( '-P', '--packages', action='store_true', - help="Top-level packages directory for Spack.") + help="top-level packages directory for Spack") directories.add_argument( '-s', '--stage-dir', action='store_true', - help="Stage directory for a spec.") + help="stage directory for a spec") directories.add_argument( '-S', '--stages', action='store_true', - help="Top level Stage directory.") + help="top level stage directory") directories.add_argument( '-b', '--build-dir', action='store_true', - help="Checked out or expanded source directory for a spec " - "(requires it to be staged first).") + help="checked out or expanded source directory for a spec " + "(requires it to be staged first)") subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="spec of package to fetch directory for.") + help="spec of package to fetch directory for") def location(parser, args): diff --git a/lib/spack/spack/cmd/md5.py b/lib/spack/spack/cmd/md5.py index 2ae279a41e7..7940d1327bb 100644 --- a/lib/spack/spack/cmd/md5.py +++ b/lib/spack/spack/cmd/md5.py @@ -31,13 +31,13 @@ import spack.util.crypto from spack.stage import Stage, FailedDownloadError -description = "Calculate md5 checksums for files/urls." +description = "calculate md5 checksums for files/urls" def setup_parser(subparser): setup_parser.parser = subparser subparser.add_argument('files', nargs=argparse.REMAINDER, - help="Files/urls to checksum.") + help="files/urls to checksum") def compute_md5_checksum(url): diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py index 585faaf5249..2db75a0b1f1 100644 --- a/lib/spack/spack/cmd/mirror.py +++ b/lib/spack/spack/cmd/mirror.py @@ -37,13 +37,13 @@ from spack.error import SpackError from spack.util.spack_yaml import syaml_dict -description = "Manage mirrors." +description = "manage mirrors" def setup_parser(subparser): subparser.add_argument( '-n', '--no-checksum', action='store_true', dest='no_checksum', - help="Do not check fetched packages against checksum") + help="do not check fetched packages against checksum") sp = subparser.add_subparsers( metavar='SUBCOMMAND', dest='mirror_command') @@ -51,30 +51,30 @@ def setup_parser(subparser): # Create create_parser = sp.add_parser('create', help=mirror_create.__doc__) create_parser.add_argument('-d', '--directory', default=None, - help="Directory in which to create mirror.") + help="directory in which to create mirror") create_parser.add_argument( 'specs', nargs=argparse.REMAINDER, - help="Specs of packages to put in mirror") + help="specs of packages to put in mirror") create_parser.add_argument( - '-f', '--file', help="File with specs of packages to put in mirror.") + '-f', '--file', help="file with specs of packages to put in mirror") create_parser.add_argument( '-D', '--dependencies', action='store_true', - help="Also fetch all dependencies") + help="also fetch all dependencies") create_parser.add_argument( '-o', '--one-version-per-spec', action='store_const', const=1, default=0, - help="Only fetch one 'preferred' version per spec, not all known.") + help="only fetch one 'preferred' version per spec, not all known") scopes = spack.config.config_scopes # Add add_parser = sp.add_parser('add', help=mirror_add.__doc__) - add_parser.add_argument('name', help="Mnemonic name for mirror.") + add_parser.add_argument('name', help="mnemonic name for mirror") add_parser.add_argument( - 'url', help="URL of mirror directory from 'spack mirror create'.") + 'url', help="url of mirror directory from 'spack mirror create'") add_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_modify_scope, - help="Configuration scope to modify.") + help="configuration scope to modify") # Remove remove_parser = sp.add_parser('remove', aliases=['rm'], @@ -82,13 +82,13 @@ def setup_parser(subparser): remove_parser.add_argument('name') remove_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_modify_scope, - help="Configuration scope to modify.") + help="configuration scope to modify") # List list_parser = sp.add_parser('list', help=mirror_list.__doc__) list_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_list_scope, - help="Configuration scope to read from.") + help="configuration scope to read from") def mirror_add(args): diff --git a/lib/spack/spack/cmd/module.py b/lib/spack/spack/cmd/module.py index b4ee5613397..a924c5f912c 100644 --- a/lib/spack/spack/cmd/module.py +++ b/lib/spack/spack/cmd/module.py @@ -35,7 +35,7 @@ import spack.cmd.common.arguments as arguments from spack.modules import module_types -description = "Manipulate module files" +description = "manipulate module files" # Dictionary that will be populated with the list of sub-commands # Each sub-command must be callable and accept 3 arguments : @@ -57,10 +57,10 @@ def setup_parser(subparser): sp = subparser.add_subparsers(metavar='SUBCOMMAND', dest='subparser_name') # spack module refresh - refresh_parser = sp.add_parser('refresh', help='Regenerate module files') + refresh_parser = sp.add_parser('refresh', help='regenerate module files') refresh_parser.add_argument( '--delete-tree', - help='Delete the module file tree before refresh', + help='delete the module file tree before refresh', action='store_true' ) arguments.add_common_arguments( @@ -68,11 +68,11 @@ def setup_parser(subparser): ) # spack module find - find_parser = sp.add_parser('find', help='Find module files for packages') + find_parser = sp.add_parser('find', help='find module files for packages') arguments.add_common_arguments(find_parser, ['constraint', 'module_type']) # spack module rm - rm_parser = sp.add_parser('rm', help='Remove module files') + rm_parser = sp.add_parser('rm', help='remove module files') arguments.add_common_arguments( rm_parser, ['constraint', 'module_type', 'yes_to_all'] ) @@ -80,19 +80,19 @@ def setup_parser(subparser): # spack module loads loads_parser = sp.add_parser( 'loads', - help='Prompt the list of modules associated with a constraint' + help='prompt the list of modules associated with a constraint' ) loads_parser.add_argument( '--input-only', action='store_false', dest='shell', - help='Generate input for module command (instead of a shell script)' + help='generate input for module command (instead of a shell script)' ) loads_parser.add_argument( '-p', '--prefix', dest='prefix', default='', - help='Prepend to module names when issuing module load commands' + help='prepend to module names when issuing module load commands' ) loads_parser.add_argument( '-x', '--exclude', dest='exclude', action='append', default=[], - help="Exclude package from output; may be specified multiple times" + help="exclude package from output; may be specified multiple times" ) arguments.add_common_arguments( loads_parser, ['constraint', 'module_type', 'recurse_dependencies'] diff --git a/lib/spack/spack/cmd/patch.py b/lib/spack/spack/cmd/patch.py index 9c72da40b5d..2e332554ad8 100644 --- a/lib/spack/spack/cmd/patch.py +++ b/lib/spack/spack/cmd/patch.py @@ -29,13 +29,13 @@ import spack -description = "Patch expanded archive sources in preparation for install" +description = "patch expanded archive sources in preparation for install" def setup_parser(subparser): subparser.add_argument( '-n', '--no-checksum', action='store_true', dest='no_checksum', - help="Do not check downloaded packages against checksum") + help="do not check downloaded packages against checksum") subparser.add_argument( 'packages', nargs=argparse.REMAINDER, help="specs of packages to stage") diff --git a/lib/spack/spack/cmd/pkg.py b/lib/spack/spack/cmd/pkg.py index 7791b93cf58..45104a9ff2a 100644 --- a/lib/spack/spack/cmd/pkg.py +++ b/lib/spack/spack/cmd/pkg.py @@ -31,7 +31,7 @@ import spack from spack.util.executable import * -description = "Query packages associated with particular git revisions." +description = "query packages associated with particular git revisions" def setup_parser(subparser): @@ -40,35 +40,35 @@ def setup_parser(subparser): add_parser = sp.add_parser('add', help=pkg_add.__doc__) add_parser.add_argument('packages', nargs=argparse.REMAINDER, - help="Names of packages to add to git repo.") + help="names of packages to add to git repo") list_parser = sp.add_parser('list', help=pkg_list.__doc__) list_parser.add_argument('rev', default='HEAD', nargs='?', - help="Revision to list packages for.") + help="revision to list packages for") diff_parser = sp.add_parser('diff', help=pkg_diff.__doc__) diff_parser.add_argument( 'rev1', nargs='?', default='HEAD^', - help="Revision to compare against.") + help="revision to compare against") diff_parser.add_argument( 'rev2', nargs='?', default='HEAD', - help="Revision to compare to rev1 (default is HEAD).") + help="revision to compare to rev1 (default is HEAD)") add_parser = sp.add_parser('added', help=pkg_added.__doc__) add_parser.add_argument( 'rev1', nargs='?', default='HEAD^', - help="Revision to compare against.") + help="revision to compare against") add_parser.add_argument( 'rev2', nargs='?', default='HEAD', - help="Revision to compare to rev1 (default is HEAD).") + help="revision to compare to rev1 (default is HEAD)") rm_parser = sp.add_parser('removed', help=pkg_removed.__doc__) rm_parser.add_argument( 'rev1', nargs='?', default='HEAD^', - help="Revision to compare against.") + help="revision to compare against") rm_parser.add_argument( 'rev2', nargs='?', default='HEAD', - help="Revision to compare to rev1 (default is HEAD).") + help="revision to compare to rev1 (default is HEAD)") def get_git(): diff --git a/lib/spack/spack/cmd/providers.py b/lib/spack/spack/cmd/providers.py index 0f4a97cc4a7..470e3e5ed2f 100644 --- a/lib/spack/spack/cmd/providers.py +++ b/lib/spack/spack/cmd/providers.py @@ -29,13 +29,13 @@ import spack import spack.cmd -description = "List packages that provide a particular virtual package" +description = "list packages that provide a particular virtual package" def setup_parser(subparser): subparser.add_argument( 'vpkg_spec', metavar='VPACKAGE_SPEC', nargs=argparse.REMAINDER, - help='Find packages that provide this virtual package') + help='find packages that provide this virtual package') def providers(parser, args): diff --git a/lib/spack/spack/cmd/purge.py b/lib/spack/spack/cmd/purge.py index 66cfc2af29d..56165d5d97a 100644 --- a/lib/spack/spack/cmd/purge.py +++ b/lib/spack/spack/cmd/purge.py @@ -25,22 +25,22 @@ import spack import spack.stage as stage -description = "Remove temporary build files and/or downloaded archives" +description = "remove temporary build files and/or downloaded archives" def setup_parser(subparser): subparser.add_argument( '-s', '--stage', action='store_true', default=True, - help="Remove all temporary build stages (default).") + help="remove all temporary build stages (default)") subparser.add_argument( '-d', '--downloads', action='store_true', - help="Remove cached downloads.") + help="remove cached downloads") subparser.add_argument( '-m', '--misc-cache', action='store_true', - help="Remove long-lived caches, like the virtual package index.") + help="remove long-lived caches, like the virtual package index") subparser.add_argument( '-a', '--all', action='store_true', - help="Remove all of the above.") + help="remove all of the above") def purge(parser, args): diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py index 12727cb5998..05af7bc7764 100644 --- a/lib/spack/spack/cmd/python.py +++ b/lib/spack/spack/cmd/python.py @@ -31,15 +31,15 @@ import spack +description = "launch an interpreter as spack would launch a command" + + def setup_parser(subparser): subparser.add_argument( - '-c', dest='python_command', help='Command to execute.') + '-c', dest='python_command', help='command to execute') subparser.add_argument( 'python_args', nargs=argparse.REMAINDER, - help="File to run plus arguments.") - - -description = "Launch an interpreter as spack would launch a command" + help="file to run plus arguments") def python(parser, args): diff --git a/lib/spack/spack/cmd/reindex.py b/lib/spack/spack/cmd/reindex.py index 7dddda2ffb8..0bbd85069fc 100644 --- a/lib/spack/spack/cmd/reindex.py +++ b/lib/spack/spack/cmd/reindex.py @@ -24,7 +24,7 @@ ############################################################################## import spack import spack.store -description = "Rebuild Spack's package database." +description = "rebuild Spack's package database" def reindex(parser, args): diff --git a/lib/spack/spack/cmd/repo.py b/lib/spack/spack/cmd/repo.py index 79df63ce8d6..1881654cac4 100644 --- a/lib/spack/spack/cmd/repo.py +++ b/lib/spack/spack/cmd/repo.py @@ -30,7 +30,7 @@ import spack.config from spack.repository import * -description = "Manage package source repositories." +description = "manage package source repositories" def setup_parser(subparser): @@ -40,34 +40,34 @@ def setup_parser(subparser): # Create create_parser = sp.add_parser('create', help=repo_create.__doc__) create_parser.add_argument( - 'directory', help="Directory to create the repo in.") + 'directory', help="directory to create the repo in") create_parser.add_argument( - 'namespace', help="Namespace to identify packages in the repository. " - "Defaults to the directory name.", nargs='?') + 'namespace', help="namespace to identify packages in the repository. " + "defaults to the directory name", nargs='?') # List list_parser = sp.add_parser('list', help=repo_list.__doc__) list_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_list_scope, - help="Configuration scope to read from.") + help="configuration scope to read from") # Add add_parser = sp.add_parser('add', help=repo_add.__doc__) add_parser.add_argument( - 'path', help="Path to a Spack package repository directory.") + 'path', help="path to a Spack package repository directory") add_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_modify_scope, - help="Configuration scope to modify.") + help="configuration scope to modify") # Remove remove_parser = sp.add_parser( 'remove', help=repo_remove.__doc__, aliases=['rm']) remove_parser.add_argument( 'path_or_namespace', - help="Path or namespace of a Spack package repository.") + help="path or namespace of a Spack package repository") remove_parser.add_argument( '--scope', choices=scopes, default=spack.cmd.default_modify_scope, - help="Configuration scope to modify.") + help="configuration scope to modify") def repo_create(args): diff --git a/lib/spack/spack/cmd/restage.py b/lib/spack/spack/cmd/restage.py index 969afe09bda..36fee9237b5 100644 --- a/lib/spack/spack/cmd/restage.py +++ b/lib/spack/spack/cmd/restage.py @@ -29,7 +29,7 @@ import spack import spack.cmd -description = "Revert checked out package source code." +description = "revert checked out package source code" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/setup.py b/lib/spack/spack/cmd/setup.py index 5d8aaefa72a..82d00f4e11f 100644 --- a/lib/spack/spack/cmd/setup.py +++ b/lib/spack/spack/cmd/setup.py @@ -38,19 +38,19 @@ from spack import which from spack.stage import DIYStage -description = "Create a configuration script and module, but don't build." +description = "create a configuration script and module, but don't build" def setup_parser(subparser): subparser.add_argument( '-i', '--ignore-dependencies', action='store_true', dest='ignore_deps', - help="Do not try to install dependencies of requested packages.") + help="do not try to install dependencies of requested packages") subparser.add_argument( '-v', '--verbose', action='store_true', dest='verbose', - help="Display verbose build output while installing.") + help="display verbose build output while installing") subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="specs to use for install. Must contain package AND version.") + help="specs to use for install. must contain package AND version") cd_group = subparser.add_mutually_exclusive_group() arguments.add_common_arguments(cd_group, ['clean', 'dirty']) diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index 4ecd4d6e549..9eea404bc7a 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -28,29 +28,29 @@ import spack.cmd import spack.cmd.common.arguments as arguments -description = "print out abstract and concrete versions of a spec." +description = "print out abstract and concrete versions of a spec" def setup_parser(subparser): arguments.add_common_arguments(subparser, ['long', 'very_long']) subparser.add_argument( '-y', '--yaml', action='store_true', default=False, - help='Print concrete spec as YAML.') + help='print concrete spec as YAML') subparser.add_argument( '-c', '--cover', action='store', default='nodes', choices=['nodes', 'edges', 'paths'], - help='How extensively to traverse the DAG. (default: nodes).') + help='how extensively to traverse the DAG (default: nodes)') subparser.add_argument( '-N', '--namespaces', action='store_true', default=False, - help='Show fully qualified package names.') + help='show fully qualified package names') subparser.add_argument( '-I', '--install-status', action='store_true', default=False, - help='Show install status of packages. Packages can be: ' + help='show install status of packages. packages can be: ' 'installed [+], missing and needed by an installed package [-], ' - 'or not installed (no annotation).') + 'or not installed (no annotation)') subparser.add_argument( '-t', '--types', action='store_true', default=False, - help='Show dependency types.') + help='show dependency types') subparser.add_argument( 'specs', nargs=argparse.REMAINDER, help="specs of packages") diff --git a/lib/spack/spack/cmd/stage.py b/lib/spack/spack/cmd/stage.py index bfc2e5f4561..e0023b7254d 100644 --- a/lib/spack/spack/cmd/stage.py +++ b/lib/spack/spack/cmd/stage.py @@ -28,16 +28,16 @@ import spack import spack.cmd -description = "Expand downloaded archive in preparation for install" +description = "expand downloaded archive in preparation for install" def setup_parser(subparser): subparser.add_argument( '-n', '--no-checksum', action='store_true', dest='no_checksum', - help="Do not check downloaded packages against checksum") + help="do not check downloaded packages against checksum") subparser.add_argument( '-p', '--path', dest='path', - help="Path to stage package, does not add to spack tree") + help="path to stage package, does not add to spack tree") subparser.add_argument( 'specs', nargs=argparse.REMAINDER, help="specs of packages to stage") diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index 9d92037bb64..c569a1bc880 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -34,24 +34,24 @@ import spack -description = "A thin wrapper around the pytest command." +description = "a thin wrapper around the pytest command" def setup_parser(subparser): subparser.add_argument( '-H', '--pytest-help', action='store_true', default=False, - help="print full pytest help message, showing advanced options.") + help="print full pytest help message, showing advanced options") list_group = subparser.add_mutually_exclusive_group() list_group.add_argument( '-l', '--list', action='store_true', default=False, - help="list basic test names.") + help="list basic test names") list_group.add_argument( '-L', '--long-list', action='store_true', default=False, - help="list the entire hierarchy of tests.") + help="list the entire hierarchy of tests") subparser.add_argument( 'tests', nargs=argparse.REMAINDER, - help="list of tests to run (will be passed to pytest -k).") + help="list of tests to run (will be passed to pytest -k)") def do_list(args, unknown_args): diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index 0fc22ce538a..f8b5408ba14 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -32,7 +32,7 @@ import spack.store import spack.repository -description = "Remove an installed package" +description = "remove an installed package" error_message = """You can either: a) Use a more specific spec, or @@ -50,24 +50,24 @@ def setup_parser(subparser): subparser.add_argument( '-f', '--force', action='store_true', dest='force', - help="Remove regardless of whether other packages depend on this one.") + help="remove regardless of whether other packages depend on this one") subparser.add_argument( '-a', '--all', action='store_true', dest='all', - help="USE CAREFULLY. Remove ALL installed packages that match each " + help="USE CAREFULLY. remove ALL installed packages that match each " "supplied spec. i.e., if you say uninstall `libelf`," - " ALL versions of `libelf` are uninstalled. If no spec is " - "supplied all installed software will be uninstalled. This " - "is both useful and dangerous, like rm -r.") + " ALL versions of `libelf` are uninstalled. if no spec is " + "supplied all installed software will be uninstalled. this " + "is both useful and dangerous, like rm -r") subparser.add_argument( '-d', '--dependents', action='store_true', dest='dependents', - help='Also uninstall any packages that depend on the ones given ' - 'via command line.') + help='also uninstall any packages that depend on the ones given ' + 'via command line') subparser.add_argument( '-y', '--yes-to-all', action='store_true', dest='yes_to_all', - help='Assume "yes" is the answer to every confirmation requested') + help='assume "yes" is the answer to every confirmation requested') subparser.add_argument( 'packages', diff --git a/lib/spack/spack/cmd/unload.py b/lib/spack/spack/cmd/unload.py index b52bedb7b48..5da6f5daa58 100644 --- a/lib/spack/spack/cmd/unload.py +++ b/lib/spack/spack/cmd/unload.py @@ -25,7 +25,7 @@ import argparse import spack.modules -description = "Remove package from environment using module." +description = "remove package from environment using module" def setup_parser(subparser): @@ -33,7 +33,7 @@ def setup_parser(subparser): message with -h. """ subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help='Spec of package to unload with modules.') + help='spec of package to unload with modules') def unload(parser, args): diff --git a/lib/spack/spack/cmd/unuse.py b/lib/spack/spack/cmd/unuse.py index 6403cf61628..e4797494578 100644 --- a/lib/spack/spack/cmd/unuse.py +++ b/lib/spack/spack/cmd/unuse.py @@ -25,7 +25,7 @@ import argparse import spack.modules -description = "Remove package from environment using dotkit." +description = "remove package from environment using dotkit" def setup_parser(subparser): @@ -33,7 +33,7 @@ def setup_parser(subparser): message with -h. """ subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help='Spec of package to unuse with dotkit.') + help='spec of package to unuse with dotkit') def unuse(parser, args): diff --git a/lib/spack/spack/cmd/url_parse.py b/lib/spack/spack/cmd/url_parse.py index 2af9671459d..b33d96299fa 100644 --- a/lib/spack/spack/cmd/url_parse.py +++ b/lib/spack/spack/cmd/url_parse.py @@ -28,14 +28,14 @@ import spack.url from spack.util.web import find_versions_of_archive -description = "Show parsing of a URL, optionally spider web for versions." +description = "show parsing of a URL, optionally spider web for versions" def setup_parser(subparser): subparser.add_argument('url', help="url of a package archive") subparser.add_argument( '-s', '--spider', action='store_true', - help="Spider the source page for versions.") + help="spider the source page for versions") def print_name_and_version(url): diff --git a/lib/spack/spack/cmd/urls.py b/lib/spack/spack/cmd/urls.py index f151581d7db..4ff23e69c14 100644 --- a/lib/spack/spack/cmd/urls.py +++ b/lib/spack/spack/cmd/urls.py @@ -25,18 +25,18 @@ import spack import spack.url -description = "Inspect urls used by packages in spack." +description = "inspect urls used by packages in spack" def setup_parser(subparser): subparser.add_argument( '-c', '--color', action='store_true', - help="Color the parsed version and name in the urls shown. " - "Version will be cyan, name red.") + help="color the parsed version and name in the urls shown. " + "version will be cyan, name red") subparser.add_argument( '-e', '--extrapolation', action='store_true', - help="Color the versions used for extrapolation as well." - "Additional versions are green, names magenta.") + help="color the versions used for extrapolation as well. " + "additional versions are green, names magenta") def urls(parser, args): diff --git a/lib/spack/spack/cmd/use.py b/lib/spack/spack/cmd/use.py index e3612ace483..c9714d9de07 100644 --- a/lib/spack/spack/cmd/use.py +++ b/lib/spack/spack/cmd/use.py @@ -25,7 +25,7 @@ import argparse import spack.modules -description = "Add package to environment using dotkit." +description = "add package to environment using dotkit" def setup_parser(subparser): @@ -33,7 +33,7 @@ def setup_parser(subparser): message with -h. """ subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help='Spec of package to use with dotkit.') + help='spec of package to use with dotkit') def use(parser, args): diff --git a/lib/spack/spack/cmd/versions.py b/lib/spack/spack/cmd/versions.py index 1e95225ab8c..dacca2489b5 100644 --- a/lib/spack/spack/cmd/versions.py +++ b/lib/spack/spack/cmd/versions.py @@ -26,12 +26,12 @@ import llnl.util.tty as tty import spack -description = "List available versions of a package" +description = "list available versions of a package" def setup_parser(subparser): subparser.add_argument('package', metavar='PACKAGE', - help='Package to list versions for') + help='package to list versions for') def versions(parser, args): diff --git a/lib/spack/spack/cmd/view.py b/lib/spack/spack/cmd/view.py index 869a58f15cb..72e139d123c 100644 --- a/lib/spack/spack/cmd/view.py +++ b/lib/spack/spack/cmd/view.py @@ -69,7 +69,7 @@ import spack.cmd import llnl.util.tty as tty -description = "Produce a single-rooted directory view of a spec." +description = "produce a single-rooted directory view of a spec" def setup_parser(sp): @@ -77,40 +77,40 @@ def setup_parser(sp): sp.add_argument( '-v', '--verbose', action='store_true', default=False, - help="Display verbose output.") + help="display verbose output") sp.add_argument( '-e', '--exclude', action='append', default=[], - help="Exclude packages with names matching the given regex pattern.") + help="exclude packages with names matching the given regex pattern") sp.add_argument( '-d', '--dependencies', choices=['true', 'false', 'yes', 'no'], default='true', - help="Follow dependencies.") + help="follow dependencies") ssp = sp.add_subparsers(metavar='ACTION', dest='action') specs_opts = dict(metavar='spec', nargs='+', - help="Seed specs of the packages to view.") + help="seed specs of the packages to view") # The action parameterizes the command but in keeping with Spack # patterns we make it a subcommand. file_system_view_actions = [ ssp.add_parser( 'symlink', aliases=['add', 'soft'], - help='Add package files to a filesystem view via symbolic links.'), + help='add package files to a filesystem view via symbolic links'), ssp.add_parser( 'hardlink', aliases=['hard'], - help='Add packages files to a filesystem via via hard links.'), + help='add packages files to a filesystem via via hard links'), ssp.add_parser( 'remove', aliases=['rm'], - help='Remove packages from a filesystem view.'), + help='remove packages from a filesystem view'), ssp.add_parser( 'statlink', aliases=['status', 'check'], - help='Check status of packages in a filesystem view.') + help='check status of packages in a filesystem view') ] # All these options and arguments are common to every action. for act in file_system_view_actions: act.add_argument('path', nargs=1, - help="Path to file system view directory.") + help="path to file system view directory") act.add_argument('specs', **specs_opts) return From aa7c5d111531ded399cad06f04fb973d17892c46 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 27 Jan 2017 20:32:25 +0100 Subject: [PATCH 0067/2394] mumps: fix compilation with MKL (#2936) --- var/spack/repos/builtin/packages/mumps/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index 82d0c606b68..1d87d6f35a3 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -81,7 +81,7 @@ def write_makefile_inc(self): lapack_blas = (self.spec['lapack'].lapack_libs + self.spec['blas'].blas_libs) - makefile_conf = ["LIBBLAS = %s" % lapack_blas.joined()] + makefile_conf = ["LIBBLAS = %s" % lapack_blas.ld_flags] orderings = ['-Dpord'] From 58a4c5c14d386c862ccf5150b5ab07b57ff2b9b2 Mon Sep 17 00:00:00 2001 From: becker33 Date: Fri, 27 Jan 2017 11:37:21 -0800 Subject: [PATCH 0068/2394] Fix ambiguous hash message generation. (#2940) * Fix ambiguous hash message generation. Engineering fix --- lib/spack/spack/spec.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 059653a72ad..07e3221ed7a 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2796,7 +2796,7 @@ def spec_by_hash(self): if len(matches) != 1: raise AmbiguousHashError( - "Multiple packages specify hash beginning %s." + "Multiple packages specify hash beginning '%s'." % self.token.value, *matches) return matches[0] @@ -3151,9 +3151,9 @@ def __init__(self, provided, required): class AmbiguousHashError(SpecError): def __init__(self, msg, *specs): - super(AmbiguousHashError, self).__init__(msg) - for spec in specs: - print(' ', spec.format('$.$@$%@+$+$=$#')) + specs_str = '\n ' + '\n '.join(spec.format('$.$@$%@+$+$=$#') + for spec in specs) + super(AmbiguousHashError, self).__init__(msg + specs_str) class InvalidHashError(SpecError): From 75763bb8e38f7fbb2b855ace453d0c31ec542427 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 27 Jan 2017 13:38:21 -0600 Subject: [PATCH 0069/2394] Make OpenSSL tests optional (#2939) * Make OpenSSL tests optional * Add version constraint to Perl dependency in OpenSSL --- var/spack/repos/builtin/packages/openssl/package.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 9b4070d43a3..88896231fde 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -52,8 +52,10 @@ class Openssl(Package): version('1.0.1r', '1abd905e079542ccae948af37e393d28') version('1.0.1h', '8d6d684a9430d5cc98a62a5d8fbda8cf') - depends_on("zlib") - depends_on("perl", type='build') + depends_on('zlib') + + # 'make test' requires Test::More version 0.96 + depends_on('perl@5.14.0:', type='build') parallel = False @@ -88,5 +90,6 @@ def install(self, spec, prefix): filter_file(r'-arch x86_64', '', 'Makefile') make() - make('test') # 'VERBOSE=1' + if self.run_tests: + make('test') # 'VERBOSE=1' make('install') From 617786707f8bbc3a45d5f06a47ba764d9b498e4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Bederi=C3=A1n?= Date: Mon, 30 Jan 2017 18:17:36 -0300 Subject: [PATCH 0070/2394] FFTW: Add SSE2 support to x86_64 target --- var/spack/repos/builtin/packages/fftw/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 838f6ff7444..9b40d10fe0e 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -89,14 +89,20 @@ def install(self, spec, prefix): autoreconf = which('autoreconf') autoreconf('-ifv') - configure(*options) + float_options = [] + double_options = [] + if 'x86_64' in spec.architecture: + float_options.append('--enable-sse2') + double_options.append('--enable-sse2') + + configure(*(options + double_options)) make() if self.run_tests: make("check") make("install") if '+float' in spec: - configure('--enable-float', *options) + configure('--enable-float', *(options + float_options)) make() if self.run_tests: make("check") From 19cf7a2833ba2ffcff46bd4543ed93fd80c1d8ea Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 31 Jan 2017 15:49:29 +0100 Subject: [PATCH 0071/2394] libmng: fix trying to run configure on an already configured directory fixes #2959 (#2961) --- var/spack/repos/builtin/packages/libmng/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/libmng/package.py b/var/spack/repos/builtin/packages/libmng/package.py index a867c1997e2..c8ea90401b2 100644 --- a/var/spack/repos/builtin/packages/libmng/package.py +++ b/var/spack/repos/builtin/packages/libmng/package.py @@ -42,3 +42,7 @@ def patch(self): # jpeg requires stdio to beincluded before its headrs. filter_file(r'^(\#include \)', '#include\n\\1', 'libmng_types.h') + + @run_before('configure') + def clean_configure_directory(self): + make('distclean') From 0c0a1fdedc036c1a7bbd420780d48215a9488819 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 31 Jan 2017 08:54:34 -0600 Subject: [PATCH 0072/2394] Add several new R packages (#2952) * Add several new R packages * Add a few more R packages * Update more versions * Convert Package to RPackage * Add a few more packages * Add missing dependencies --- lib/spack/spack/cmd/create.py | 1 + .../builtin/packages/r-adabag/package.py | 39 ++++++++++++++ .../builtin/packages/r-assertthat/package.py | 3 +- .../packages/r-biocinstaller/package.py | 37 +++++++++++++ .../repos/builtin/packages/r-car/package.py | 13 ++--- .../repos/builtin/packages/r-caret/package.py | 20 ++++--- .../builtin/packages/r-checkpoint/package.py | 41 ++++++++++++++ .../builtin/packages/r-cluster/package.py | 3 +- .../builtin/packages/r-codetools/package.py | 3 +- .../repos/builtin/packages/r-coin/package.py | 44 +++++++++++++++ .../builtin/packages/r-colorspace/package.py | 3 +- .../builtin/packages/r-corrplot/package.py | 36 +++++++++++++ .../builtin/packages/r-cubist/package.py | 38 +++++++++++++ .../repos/builtin/packages/r-curl/package.py | 6 ++- .../{r-datatable => r-data-table}/package.py | 9 ++-- .../builtin/packages/r-devtools/package.py | 13 +++-- .../builtin/packages/r-digest/package.py | 8 ++- .../repos/builtin/packages/r-domc/package.py | 41 ++++++++++++++ .../builtin/packages/r-ellipse/package.py | 38 +++++++++++++ .../builtin/packages/r-evaluate/package.py | 7 ++- .../builtin/packages/r-ggplot2/package.py | 13 +++-- .../repos/builtin/packages/r-git2r/package.py | 5 +- .../builtin/packages/r-httpuv/package.py | 4 +- .../repos/builtin/packages/r-httr/package.py | 7 ++- .../repos/builtin/packages/r-ipred/package.py | 46 ++++++++++++++++ .../repos/builtin/packages/r-irlba/package.py | 3 +- .../builtin/packages/r-jsonlite/package.py | 3 +- .../builtin/packages/r-kernlab/package.py | 40 ++++++++++++++ .../builtin/packages/r-kernsmooth/package.py | 37 +++++++++++++ .../repos/builtin/packages/r-kknn/package.py | 41 ++++++++++++++ .../repos/builtin/packages/r-lava/package.py | 40 ++++++++++++++ .../builtin/packages/r-matrix/package.py | 3 +- .../repos/builtin/packages/r-mda/package.py | 40 ++++++++++++++ .../repos/builtin/packages/r-mgcv/package.py | 3 +- .../builtin/packages/r-mlbench/package.py | 40 ++++++++++++++ .../packages/r-modelmetrics/package.py | 40 ++++++++++++++ .../builtin/packages/r-modeltools/package.py | 35 ++++++++++++ .../builtin/packages/r-multcomp/package.py | 8 +-- .../repos/builtin/packages/r-nlme/package.py | 3 +- .../builtin/packages/r-numderiv/package.py | 38 +++++++++++++ .../builtin/packages/r-openssl/package.py | 5 +- .../builtin/packages/r-pacman/package.py | 42 +++++++++++++++ .../repos/builtin/packages/r-party/package.py | 45 ++++++++++++++++ .../builtin/packages/r-pbkrtest/package.py | 7 ++- .../builtin/packages/r-plotrix/package.py | 3 +- .../repos/builtin/packages/r-pls/package.py | 39 ++++++++++++++ .../builtin/packages/r-prodlim/package.py | 44 +++++++++++++++ .../builtin/packages/r-quantreg/package.py | 3 +- .../repos/builtin/packages/r-r6/package.py | 5 +- .../repos/builtin/packages/r-rcpp/package.py | 3 +- .../builtin/packages/r-rcppeigen/package.py | 3 +- .../builtin/packages/r-reshape2/package.py | 3 +- .../builtin/packages/r-rminer/package.py | 54 +++++++++++++++++++ .../builtin/packages/r-rpart-plot/package.py | 38 +++++++++++++ .../repos/builtin/packages/r-rpart/package.py | 38 +++++++++++++ .../builtin/packages/r-sandwich/package.py | 2 + .../builtin/packages/r-scales/package.py | 3 +- .../builtin/packages/r-sparsem/package.py | 5 +- .../builtin/packages/r-stringi/package.py | 3 +- .../builtin/packages/r-stringr/package.py | 3 +- .../builtin/packages/r-strucchange/package.py | 41 ++++++++++++++ .../builtin/packages/r-survival/package.py | 3 +- .../{r-thdata => r-th-data}/package.py | 5 +- .../builtin/packages/r-tibble/package.py | 7 ++- .../repos/builtin/packages/r-withr/package.py | 5 +- .../builtin/packages/r-xgboost/package.py | 15 ++++-- .../repos/builtin/packages/r-zoo/package.py | 3 +- 67 files changed, 1203 insertions(+), 76 deletions(-) create mode 100644 var/spack/repos/builtin/packages/r-adabag/package.py create mode 100644 var/spack/repos/builtin/packages/r-biocinstaller/package.py create mode 100644 var/spack/repos/builtin/packages/r-checkpoint/package.py create mode 100644 var/spack/repos/builtin/packages/r-coin/package.py create mode 100644 var/spack/repos/builtin/packages/r-corrplot/package.py create mode 100644 var/spack/repos/builtin/packages/r-cubist/package.py rename var/spack/repos/builtin/packages/{r-datatable => r-data-table}/package.py (90%) create mode 100644 var/spack/repos/builtin/packages/r-domc/package.py create mode 100644 var/spack/repos/builtin/packages/r-ellipse/package.py create mode 100644 var/spack/repos/builtin/packages/r-ipred/package.py create mode 100644 var/spack/repos/builtin/packages/r-kernlab/package.py create mode 100644 var/spack/repos/builtin/packages/r-kernsmooth/package.py create mode 100644 var/spack/repos/builtin/packages/r-kknn/package.py create mode 100644 var/spack/repos/builtin/packages/r-lava/package.py create mode 100644 var/spack/repos/builtin/packages/r-mda/package.py create mode 100644 var/spack/repos/builtin/packages/r-mlbench/package.py create mode 100644 var/spack/repos/builtin/packages/r-modelmetrics/package.py create mode 100644 var/spack/repos/builtin/packages/r-modeltools/package.py create mode 100644 var/spack/repos/builtin/packages/r-numderiv/package.py create mode 100644 var/spack/repos/builtin/packages/r-pacman/package.py create mode 100644 var/spack/repos/builtin/packages/r-party/package.py create mode 100644 var/spack/repos/builtin/packages/r-pls/package.py create mode 100644 var/spack/repos/builtin/packages/r-prodlim/package.py create mode 100644 var/spack/repos/builtin/packages/r-rminer/package.py create mode 100644 var/spack/repos/builtin/packages/r-rpart-plot/package.py create mode 100644 var/spack/repos/builtin/packages/r-rpart/package.py create mode 100644 var/spack/repos/builtin/packages/r-strucchange/package.py rename var/spack/repos/builtin/packages/{r-thdata => r-th-data}/package.py (94%) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index aa3f82a3316..2901dcfa63d 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -249,6 +249,7 @@ def __init__(self, name, *args): class RPackageTemplate(PackageTemplate): """Provides appropriate overrides for R extensions""" + base_class_name = 'RPackage' dependencies = """\ # FIXME: Add dependencies if required. diff --git a/var/spack/repos/builtin/packages/r-adabag/package.py b/var/spack/repos/builtin/packages/r-adabag/package.py new file mode 100644 index 00000000000..aa160478568 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-adabag/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RAdabag(RPackage): + """Applies Multiclass AdaBoost.M1, SAMME and Bagging.""" + + homepage = "https://cran.r-project.org/package=adabag" + url = "https://cran.r-project.org/src/contrib/adabag_4.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/adabag" + + version('4.1', '2e019f053d49f62ebb3b1697bbb50afa') + + depends_on('r-rpart', type=('build', 'run')) + depends_on('r-mlbench', type=('build', 'run')) + depends_on('r-caret', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-assertthat/package.py b/var/spack/repos/builtin/packages/r-assertthat/package.py index 97c29b4a999..b8ab7d7a0cd 100644 --- a/var/spack/repos/builtin/packages/r-assertthat/package.py +++ b/var/spack/repos/builtin/packages/r-assertthat/package.py @@ -31,7 +31,8 @@ class RAssertthat(RPackage): producing friendly error messages so that your users know what they've done wrong.""" - homepage = "https://cran.r-project.org/web/packages/assertthat/index.html" + homepage = "https://cran.r-project.org/package=assertthat" url = "https://cran.r-project.org/src/contrib/assertthat_0.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/assertthat" version('0.1', '59f9d7f7c00077ea54d763b78eeb5798') diff --git a/var/spack/repos/builtin/packages/r-biocinstaller/package.py b/var/spack/repos/builtin/packages/r-biocinstaller/package.py new file mode 100644 index 00000000000..c145de688cc --- /dev/null +++ b/var/spack/repos/builtin/packages/r-biocinstaller/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RBiocinstaller(RPackage): + """This package is used to install and update Bioconductor, CRAN, + and (some) github packages.""" + + homepage = "http://bioconductor.org/packages/devel/bioc/html/BiocInstaller.html" + url = "http://bioconductor.org/packages/devel/bioc/src/contrib/BiocInstaller_1.25.3.tar.gz" + + version('1.25.3', '6214770455a5122dca5544861f52c91d') + + depends_on('r@3.4.0:') diff --git a/var/spack/repos/builtin/packages/r-car/package.py b/var/spack/repos/builtin/packages/r-car/package.py index 80a0206a8ac..56c87c27a6d 100644 --- a/var/spack/repos/builtin/packages/r-car/package.py +++ b/var/spack/repos/builtin/packages/r-car/package.py @@ -30,13 +30,14 @@ class RCar(RPackage): Companion to Applied Regression, Second Edition, Sage, 2011.""" homepage = "https://r-forge.r-project.org/projects/car/" - url = "https://cran.r-project.org/src/contrib/car_2.1-2.tar.gz" + url = "https://cran.r-project.org/src/contrib/car_2.1-4.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/car" + version('2.1-4', 'a66c307e8ccf0c336ed197c0f1799565') version('2.1-2', '0f78ad74ef7130126d319acec23951a0') - depends_on('r-mass', type=('build','run')) - depends_on('r-mgcv', type=('build','run')) - depends_on('r-nnet', type=('build','run')) - depends_on('r-pbkrtest', type=('build','run')) - depends_on('r-quantreg', type=('build','run')) + depends_on('r-mass', type=('build', 'run')) + depends_on('r-mgcv', type=('build', 'run')) + depends_on('r-nnet', type=('build', 'run')) + depends_on('r-pbkrtest', type=('build', 'run')) + depends_on('r-quantreg', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-caret/package.py b/var/spack/repos/builtin/packages/r-caret/package.py index d795cfa2047..277fdc71430 100644 --- a/var/spack/repos/builtin/packages/r-caret/package.py +++ b/var/spack/repos/builtin/packages/r-caret/package.py @@ -30,15 +30,19 @@ class RCaret(RPackage): models.""" homepage = "https://github.com/topepo/caret/" - url = "https://cran.r-project.org/src/contrib/caret_6.0-70.tar.gz" + url = "https://cran.r-project.org/src/contrib/caret_6.0-73.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/caret" + version('6.0-73', 'ca869e3357b5358f028fb926eb62eb70') version('6.0-70', '202d7abb6a679af716ea69fb2573f108') - depends_on('r-lattice', type=('build','run')) - depends_on('r-ggplot2', type=('build','run')) - depends_on('r-car', type=('build','run')) - depends_on('r-foreach', type=('build','run')) - depends_on('r-plyr', type=('build','run')) - depends_on('r-nlme', type=('build','run')) - depends_on('r-reshape2', type=('build','run')) + depends_on('r@2.10:') + + depends_on('r-lattice@0.20:', type=('build', 'run')) + depends_on('r-ggplot2', type=('build', 'run')) + depends_on('r-car', type=('build', 'run')) + depends_on('r-foreach', type=('build', 'run')) + depends_on('r-plyr', type=('build', 'run')) + depends_on('r-modelmetrics@1.1.0:', type=('build', 'run')) + depends_on('r-nlme', type=('build', 'run')) + depends_on('r-reshape2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-checkpoint/package.py b/var/spack/repos/builtin/packages/r-checkpoint/package.py new file mode 100644 index 00000000000..5fd862fa46f --- /dev/null +++ b/var/spack/repos/builtin/packages/r-checkpoint/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RCheckpoint(RPackage): + """The goal of checkpoint is to solve the problem of package + reproducibility in R. Specifically, checkpoint allows you to + install packages as they existed on CRAN on a specific snapshot + date as if you had a CRAN time machine.""" + + homepage = "https://cran.r-project.org/package=checkpoint" + url = "https://cran.r-project.org/src/contrib/checkpoint_0.3.18.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/checkpoint" + + version('0.3.18', '021d7faeb72c36167951e103b2b065ea') + version('0.3.15', 'a4aa8320338f1434a330d984e97981ea') + + depends_on('r@3.0.0:') diff --git a/var/spack/repos/builtin/packages/r-cluster/package.py b/var/spack/repos/builtin/packages/r-cluster/package.py index 29e16c22715..caa96a380a1 100644 --- a/var/spack/repos/builtin/packages/r-cluster/package.py +++ b/var/spack/repos/builtin/packages/r-cluster/package.py @@ -31,7 +31,8 @@ class RCluster(RPackage): (1990) "Finding Groups in Data".""" homepage = "https://cran.r-project.org/web/packages/cluster/index.html" - url = "https://cran.r-project.org/src/contrib/cluster_2.0.4.tar.gz" + url = "https://cran.r-project.org/src/contrib/cluster_2.0.5.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/cluster" + version('2.0.5', '7330f209ebce960bdee1a6d6679cb85a') version('2.0.4', 'bb4deceaafb1c42bb1278d5d0dc11e59') diff --git a/var/spack/repos/builtin/packages/r-codetools/package.py b/var/spack/repos/builtin/packages/r-codetools/package.py index 39186bf54a1..60b8fc2cc8a 100644 --- a/var/spack/repos/builtin/packages/r-codetools/package.py +++ b/var/spack/repos/builtin/packages/r-codetools/package.py @@ -29,7 +29,8 @@ class RCodetools(RPackage): """Code analysis tools for R.""" homepage = "https://cran.r-project.org/web/packages/codetools/index.html" - url = "https://cran.r-project.org/src/contrib/codetools_0.2-14.tar.gz" + url = "https://cran.r-project.org/src/contrib/codetools_0.2-15.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/codetools" + version('0.2-15', '37419cbc3de81984cf6d9b207d4f62d4') version('0.2-14', '7ec41d4f8bd6ba85facc8c5e6adc1f4d') diff --git a/var/spack/repos/builtin/packages/r-coin/package.py b/var/spack/repos/builtin/packages/r-coin/package.py new file mode 100644 index 00000000000..51b61a6164e --- /dev/null +++ b/var/spack/repos/builtin/packages/r-coin/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RCoin(RPackage): + """Conditional inference procedures for the general independence problem + including two-sample, K-sample (non-parametric ANOVA), correlation, + censored, ordered and multivariate problems.""" + + homepage = "https://cran.r-project.org/package=coin" + url = "https://cran.r-project.org/src/contrib/coin_1.1-3.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/coin" + + version('1.1-3', '97d3d21f1e4a5762e36dd718dd2d0661') + + depends_on('r@2.14.0:') + + depends_on('r-survival', type=('build', 'run')) + depends_on('r-modeltools@0.2-9:', type=('build', 'run')) + depends_on('r-mvtnorm@1.0-5:', type=('build', 'run')) + depends_on('r-multcomp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-colorspace/package.py b/var/spack/repos/builtin/packages/r-colorspace/package.py index b7561ea3603..af2895acbf4 100644 --- a/var/spack/repos/builtin/packages/r-colorspace/package.py +++ b/var/spack/repos/builtin/packages/r-colorspace/package.py @@ -32,7 +32,8 @@ class RColorspace(RPackage): are provided.""" homepage = "https://cran.r-project.org/web/packages/colorspace/index.html" - url = "https://cran.r-project.org/src/contrib/colorspace_1.2-6.tar.gz" + url = "https://cran.r-project.org/src/contrib/colorspace_1.3-2.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/colorspace" + version('1.3-2', '63000bab81d995ff167df76fb97b2984') version('1.2-6', 'a30191e9caf66f77ff4e99c062e9dce1') diff --git a/var/spack/repos/builtin/packages/r-corrplot/package.py b/var/spack/repos/builtin/packages/r-corrplot/package.py new file mode 100644 index 00000000000..ccae3bf9138 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-corrplot/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RCorrplot(RPackage): + """A graphical display of a correlation matrix or general matrix. + It also contains some algorithms to do matrix reordering.""" + + homepage = "https://cran.r-project.org/package=corrplot" + url = "https://cran.r-project.org/src/contrib/corrplot_0.77.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/corrplot" + + version('0.77', '2a5d54fd5c65618b9afba1a32f6b4542') diff --git a/var/spack/repos/builtin/packages/r-cubist/package.py b/var/spack/repos/builtin/packages/r-cubist/package.py new file mode 100644 index 00000000000..acc02613833 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-cubist/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RCubist(RPackage): + """Regression modeling using rules with added instance-based corrections""" + + homepage = "https://cran.r-project.org/package=Cubist" + url = "https://cran.r-project.org/src/contrib/Cubist_0.0.19.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/Cubist" + + version('0.0.19', 'bf9364f655536ec03717fd2ad6223a47') + + depends_on('r-lattice', type=('build', 'run')) + depends_on('r-reshape2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-curl/package.py b/var/spack/repos/builtin/packages/r-curl/package.py index 7b62d1be603..ae9ccf3f5e8 100644 --- a/var/spack/repos/builtin/packages/r-curl/package.py +++ b/var/spack/repos/builtin/packages/r-curl/package.py @@ -37,10 +37,12 @@ class RCurl(RPackage): package with http specific tools and logic.""" homepage = "https://github.com/jeroenooms/curl" - url = "https://cran.r-project.org/src/contrib/curl_0.9.7.tar.gz" + url = "https://cran.r-project.org/src/contrib/curl_2.3.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/curl" - version('1.0', '93d34926d6071e1fba7e728b482f0dd9') + version('2.3', '7250ee8caed98ba76906ab4d32da60f8') + version('1.0', '93d34926d6071e1fba7e728b482f0dd9') version('0.9.7', 'a101f7de948cb828fef571c730f39217') + depends_on('r@3.0.0:') depends_on('curl') diff --git a/var/spack/repos/builtin/packages/r-datatable/package.py b/var/spack/repos/builtin/packages/r-data-table/package.py similarity index 90% rename from var/spack/repos/builtin/packages/r-datatable/package.py rename to var/spack/repos/builtin/packages/r-data-table/package.py index 23802524e82..4381d1e0f88 100644 --- a/var/spack/repos/builtin/packages/r-datatable/package.py +++ b/var/spack/repos/builtin/packages/r-data-table/package.py @@ -25,16 +25,17 @@ from spack import * -class RDatatable(RPackage): +class RDataTable(RPackage): """Fast aggregation of large data (e.g. 100GB in RAM), fast ordered joins, fast add/modify/delete of columns by group using no copies at all, list columns and a fast file reader (fread). Offers a natural and flexible syntax, for faster development.""" homepage = "https://github.com/Rdatatable/data.table/wiki" - url = "https://cran.r-project.org/src/contrib/data.table_1.9.6.tar.gz" + url = "https://cran.r-project.org/src/contrib/data.table_1.10.0.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/data.table" - version('1.9.6', 'b1c0c7cce490bdf42ab288541cc55372') + version('1.10.0', 'f0e08dd5ba1b3f46c59dd1574fe497c1') + version('1.9.6', 'b1c0c7cce490bdf42ab288541cc55372') - depends_on('r-chron', type=('build', 'run')) + depends_on('r@3.0.0:') diff --git a/var/spack/repos/builtin/packages/r-devtools/package.py b/var/spack/repos/builtin/packages/r-devtools/package.py index 9895a3b3900..c994f557c81 100644 --- a/var/spack/repos/builtin/packages/r-devtools/package.py +++ b/var/spack/repos/builtin/packages/r-devtools/package.py @@ -29,16 +29,19 @@ class RDevtools(RPackage): """Collection of package development tools.""" homepage = "https://github.com/hadley/devtools" - url = "https://cran.r-project.org/src/contrib/devtools_1.11.1.tar.gz" + url = "https://cran.r-project.org/src/contrib/devtools_1.12.0.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/devtools" + version('1.12.0', '73b46c446273566e5b21c9f5f72aeca3') version('1.11.1', '242672ee27d24dddcbdaac88c586b6c2') - depends_on('r-httr', type=('build', 'run')) - depends_on('r-memoise', type=('build', 'run')) + depends_on('r@3.0.2:') + + depends_on('r-httr@0.4:', type=('build', 'run')) + depends_on('r-memoise@1.0.0:', type=('build', 'run')) depends_on('r-whisker', type=('build', 'run')) depends_on('r-digest', type=('build', 'run')) - depends_on('r-rstudioapi', type=('build', 'run')) + depends_on('r-rstudioapi@0.2.0:', type=('build', 'run')) depends_on('r-jsonlite', type=('build', 'run')) - depends_on('r-git2r', type=('build', 'run')) + depends_on('r-git2r@0.11.0:', type=('build', 'run')) depends_on('r-withr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-digest/package.py b/var/spack/repos/builtin/packages/r-digest/package.py index 7e077442f96..08f5af0aca3 100644 --- a/var/spack/repos/builtin/packages/r-digest/package.py +++ b/var/spack/repos/builtin/packages/r-digest/package.py @@ -44,7 +44,11 @@ class RDigest(RPackage): used.""" homepage = "http://dirk.eddelbuettel.com/code/digest.html" - url = "https://cran.r-project.org/src/contrib/digest_0.6.9.tar.gz" + url = "https://cran.r-project.org/src/contrib/digest_0.6.12.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/digest" - version('0.6.9', '48048ce6c466bdb124716e45ba4a0e83') + version('0.6.12', '738efd4d9a37c5a4001ae66e954ce07e') + version('0.6.11', '52a864f55846b48b3cab0b5d0304a82a') + version('0.6.9', '48048ce6c466bdb124716e45ba4a0e83') + + depends_on('r@2.4.1:') diff --git a/var/spack/repos/builtin/packages/r-domc/package.py b/var/spack/repos/builtin/packages/r-domc/package.py new file mode 100644 index 00000000000..1a44aa537d7 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-domc/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RDomc(RPackage): + """Provides a parallel backend for the %dopar% function using + the multicore functionality of the parallel package.""" + + homepage = "https://cran.r-project.org/package=doMC" + url = "https://cran.r-project.org/src/contrib/doMC_1.3.4.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/doMC" + + version('1.3.4', 'f965b09add9056e84f99a831dc3af7d1') + + depends_on('r@2.14.0:') + + depends_on('r-foreach@1.2.0:', type=('build', 'run')) + depends_on('r-iterators@1.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ellipse/package.py b/var/spack/repos/builtin/packages/r-ellipse/package.py new file mode 100644 index 00000000000..1f6144285e9 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ellipse/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class REllipse(RPackage): + """This package contains various routines for drawing ellipses and + ellipse-like confidence regions.""" + + homepage = "https://cran.r-project.org/package=ellipse" + url = "https://cran.r-project.org/src/contrib/ellipse_0.3-8.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/ellipse" + + version('0.3-8', '385f5ec5e49bcda4317ca9dffd33f771') + + depends_on('r@2.0.0:') diff --git a/var/spack/repos/builtin/packages/r-evaluate/package.py b/var/spack/repos/builtin/packages/r-evaluate/package.py index cf6c72dc62e..004048e9857 100644 --- a/var/spack/repos/builtin/packages/r-evaluate/package.py +++ b/var/spack/repos/builtin/packages/r-evaluate/package.py @@ -35,6 +35,9 @@ class REvaluate(RPackage): url = "https://cran.rstudio.com/src/contrib/evaluate_0.9.tar.gz" list_url = "https://cran.rstudio.com/src/contrib/Archive/evaluate" - version('0.9', '877d89ce8a9ef7f403b1089ca1021775') + version('0.10', 'c49326babf984a8b36e7e276da370ad2') + version('0.9', '877d89ce8a9ef7f403b1089ca1021775') - depends_on('r-stringr', type=('build', 'run')) + depends_on('r@3.0.2:') + + depends_on('r-stringr@0.6.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ggplot2/package.py b/var/spack/repos/builtin/packages/r-ggplot2/package.py index 3b4c437f0c2..e5c80e4b799 100644 --- a/var/spack/repos/builtin/packages/r-ggplot2/package.py +++ b/var/spack/repos/builtin/packages/r-ggplot2/package.py @@ -35,14 +35,19 @@ class RGgplot2(RPackage): documentation and examples.""" homepage = "http://ggplot2.org/" - url = "https://cran.r-project.org/src/contrib/ggplot2_2.1.0.tar.gz" + url = "https://cran.r-project.org/src/contrib/ggplot2_2.2.1.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/ggplot2" + version('2.2.1', '14c5a3507bc123c6e7e9ad3bef7cee5c') version('2.1.0', '771928cfb97c649c720423deb3ec7fd3') + depends_on('r@3.1:') + depends_on('r-digest', type=('build', 'run')) - depends_on('r-gtable', type=('build', 'run')) + depends_on('r-gtable@0.1.1:', type=('build', 'run')) depends_on('r-mass', type=('build', 'run')) - depends_on('r-plyr', type=('build', 'run')) + depends_on('r-plyr@1.7.1:', type=('build', 'run')) depends_on('r-reshape2', type=('build', 'run')) - depends_on('r-scales', type=('build', 'run')) + depends_on('r-scales@0.4.1', type=('build', 'run')) + depends_on('r-tibble', type=('build', 'run')) + depends_on('r-lazyeval', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-git2r/package.py b/var/spack/repos/builtin/packages/r-git2r/package.py index 7c4ff3144ba..a0df2d9b230 100644 --- a/var/spack/repos/builtin/packages/r-git2r/package.py +++ b/var/spack/repos/builtin/packages/r-git2r/package.py @@ -31,10 +31,13 @@ class RGit2r(RPackage): data and running some basic 'Git' commands.""" homepage = "https://github.com/ropensci/git2r" - url = "https://cran.r-project.org/src/contrib/git2r_0.15.0.tar.gz" + url = "https://cran.r-project.org/src/contrib/git2r_0.18.0.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/git2r" + version('0.18.0', 'fb5741eb490c3d6e23a751a72336f24d') version('0.15.0', '57658b3298f9b9aadc0dd77b4ef6a1e1') + depends_on('r@3.0.2:') + depends_on('zlib') depends_on('openssl') diff --git a/var/spack/repos/builtin/packages/r-httpuv/package.py b/var/spack/repos/builtin/packages/r-httpuv/package.py index e4b60893b61..a81e3c3fb18 100644 --- a/var/spack/repos/builtin/packages/r-httpuv/package.py +++ b/var/spack/repos/builtin/packages/r-httpuv/package.py @@ -40,4 +40,6 @@ class RHttpuv(RPackage): version('1.3.3', 'c78ae068cf59e949b9791be987bb4489') - depends_on('r-rcpp', type=('build', 'run')) + depends_on('r@2.15.1:') + + depends_on('r-rcpp@0.11.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-httr/package.py b/var/spack/repos/builtin/packages/r-httr/package.py index 55a5b0efab2..b27bee4fbbe 100644 --- a/var/spack/repos/builtin/packages/r-httr/package.py +++ b/var/spack/repos/builtin/packages/r-httr/package.py @@ -31,13 +31,16 @@ class RHttr(RPackage): request components (authenticate(), add_headers() and so on).""" homepage = "https://github.com/hadley/httr" - url = "https://cran.r-project.org/src/contrib/httr_1.1.0.tar.gz" + url = "https://cran.r-project.org/src/contrib/httr_1.2.1.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/httr" + version('1.2.1', 'c469948dedac9ab3926f23cf484b33d9') version('1.1.0', '5ffbbc5c2529e49f00aaa521a2b35600') + depends_on('r@3.0.0:') + depends_on('r-jsonlite', type=('build', 'run')) depends_on('r-mime', type=('build', 'run')) - depends_on('r-curl', type=('build', 'run')) + depends_on('r-curl@0.9.1:', type=('build', 'run')) depends_on('r-openssl', type=('build', 'run')) depends_on('r-r6', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ipred/package.py b/var/spack/repos/builtin/packages/r-ipred/package.py new file mode 100644 index 00000000000..37accb6ee28 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ipred/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RIpred(RPackage): + """Improved predictive models by indirect classification and bagging for + classification, regression and survival problems as well as resampling + based estimators of prediction error.""" + + homepage = "https://cran.r-project.org/package=ipred" + url = "https://cran.r-project.org/src/contrib/ipred_0.9-5.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/ipred" + + version('0.9-5', 'ce8768547a7aa9554ad3650b18ea3cbd') + + depends_on('r@2.10:') + + depends_on('r-rpart@3.1-8:', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run')) + depends_on('r-survival', type=('build', 'run')) + depends_on('r-nnet', type=('build', 'run')) + depends_on('r-class', type=('build', 'run')) + depends_on('r-prodlim', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-irlba/package.py b/var/spack/repos/builtin/packages/r-irlba/package.py index e0d1b325659..ad383492ff2 100644 --- a/var/spack/repos/builtin/packages/r-irlba/package.py +++ b/var/spack/repos/builtin/packages/r-irlba/package.py @@ -31,9 +31,10 @@ class RIrlba(RPackage): matrices.""" homepage = "https://cran.r-project.org/web/packages/irlba/index.html" - url = "https://cran.r-project.org/src/contrib/irlba_2.0.0.tar.gz" + url = "https://cran.r-project.org/src/contrib/irlba_2.1.2.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/irlba" + version('2.1.2', '290940abf6662ed10c0c5a8db1bc6e88') version('2.0.0', '557674cf8b68fea5b9f231058c324d26') depends_on('r-matrix', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-jsonlite/package.py b/var/spack/repos/builtin/packages/r-jsonlite/package.py index 7368187af5d..4a690d475a6 100644 --- a/var/spack/repos/builtin/packages/r-jsonlite/package.py +++ b/var/spack/repos/builtin/packages/r-jsonlite/package.py @@ -38,8 +38,9 @@ class RJsonlite(RPackage): use with dynamic data in systems and applications.""" homepage = "https://github.com/jeroenooms/jsonlite" - url = "https://cran.r-project.org/src/contrib/jsonlite_1.0.tar.gz" + url = "https://cran.r-project.org/src/contrib/jsonlite_1.2.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/jsonlite" + version('1.2', '80cd2678ae77254be470f5931db71c51') version('1.0', 'c8524e086de22ab39b8ac8000220cc87') version('0.9.21', '4fc382747f88a79ff0718a0d06bed45d') diff --git a/var/spack/repos/builtin/packages/r-kernlab/package.py b/var/spack/repos/builtin/packages/r-kernlab/package.py new file mode 100644 index 00000000000..67159297ab0 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-kernlab/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RKernlab(RPackage): + """Kernel-based machine learning methods for classification, regression, + clustering, novelty detection, quantile regression and dimensionality + reduction. Among other methods 'kernlab' includes Support Vector Machines, + Spectral Clustering, Kernel PCA, Gaussian Processes and a QP solver.""" + + homepage = "https://cran.r-project.org/package=kernlab" + url = "https://cran.r-project.org/src/contrib/kernlab_0.9-25.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/kernlab" + + version('0.9-25', '1182a2a336a79fd2cf70b4bc5a35353f') + + depends_on('r@2.10:') diff --git a/var/spack/repos/builtin/packages/r-kernsmooth/package.py b/var/spack/repos/builtin/packages/r-kernsmooth/package.py new file mode 100644 index 00000000000..14e58072dc5 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-kernsmooth/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RKernsmooth(RPackage): + """Functions for kernel smoothing (and density estimation).""" + + homepage = "https://cran.r-project.org/package=KernSmooth" + url = "https://cran.r-project.org/src/contrib/KernSmooth_2.23-15.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/KernSmooth" + + version('2.23-15', '746cdf26dec72004cf19978e87dcc982') + + depends_on('r@2.5.0:') diff --git a/var/spack/repos/builtin/packages/r-kknn/package.py b/var/spack/repos/builtin/packages/r-kknn/package.py new file mode 100644 index 00000000000..bd5d688b140 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-kknn/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RKknn(RPackage): + """Weighted k-Nearest Neighbors for Classification, Regression and + Clustering.""" + + homepage = "https://cran.r-project.org/package=kknn" + url = "https://cran.r-project.org/src/contrib/kknn_1.3.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/kknn" + + version('1.3.1', '372cd84f618cd5005f8c4c5721755117') + + depends_on('r@2.10:') + + depends_on('r-igraph@1.0:', type=('build', 'run')) + depends_on('r-matrix', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-lava/package.py b/var/spack/repos/builtin/packages/r-lava/package.py new file mode 100644 index 00000000000..c38f9003ea8 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-lava/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RLava(RPackage): + """Estimation and simulation of latent variable models.""" + + homepage = "https://cran.r-project.org/package=lava" + url = "https://cran.r-project.org/src/contrib/lava_1.4.6.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/lava" + + version('1.4.7', '28039248a7039ba9281d172e4dbf9543') + + depends_on('r@3.0:') + + depends_on('r-numderiv', type=('build', 'run')) + depends_on('r-survival', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-matrix/package.py b/var/spack/repos/builtin/packages/r-matrix/package.py index 07c2eaf9da1..ba1323a7372 100644 --- a/var/spack/repos/builtin/packages/r-matrix/package.py +++ b/var/spack/repos/builtin/packages/r-matrix/package.py @@ -30,9 +30,10 @@ class RMatrix(RPackage): using 'LAPACK' and 'SuiteSparse'.""" homepage = "http://matrix.r-forge.r-project.org/" - url = "https://cran.r-project.org/src/contrib/Matrix_1.2-6.tar.gz" + url = "https://cran.r-project.org/src/contrib/Matrix_1.2-8.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/Matrix" + version('1.2-8', '4a6406666bf97d3ec6b698eea5d9c0f5') version('1.2-6', 'f545307fb1284861e9266c4e9712c55e') depends_on('r-lattice', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mda/package.py b/var/spack/repos/builtin/packages/r-mda/package.py new file mode 100644 index 00000000000..4a3325abec1 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-mda/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RMda(RPackage): + """Mixture and flexible discriminant analysis, multivariate adaptive + regression splines (MARS), BRUTO.""" + + homepage = "https://cran.r-project.org/package=mda" + url = "https://cran.r-project.org/src/contrib/mda_0.4-9.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/mda" + + version('0.4-9', '2ce1446c4a013e0ebcc1099a00269ad9') + + depends_on('r@1.9.0:') + + depends_on('r-class', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mgcv/package.py b/var/spack/repos/builtin/packages/r-mgcv/package.py index c8cb067275e..611abfd47c1 100644 --- a/var/spack/repos/builtin/packages/r-mgcv/package.py +++ b/var/spack/repos/builtin/packages/r-mgcv/package.py @@ -32,9 +32,10 @@ class RMgcv(RPackage): beyond the exponential family.""" homepage = "https://cran.r-project.org/package=mgcv" - url = "https://cran.r-project.org/src/contrib/mgcv_1.8-13.tar.gz" + url = "https://cran.r-project.org/src/contrib/mgcv_1.8-16.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/mgcv" + version('1.8-16', '4c1d85e0f80b017bccb4b63395842911') version('1.8-13', '30607be3aaf44b13bd8c81fc32e8c984') depends_on('r-nlme', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-mlbench/package.py b/var/spack/repos/builtin/packages/r-mlbench/package.py new file mode 100644 index 00000000000..ec7957d5f71 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-mlbench/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RMlbench(RPackage): + """A collection of artificial and real-world machine learning benchmark + problems, including, e.g., several data sets from the UCI repository.""" + + homepage = "https://cran.r-project.org/web/packages/mlbench/index.html" + url = "https://cran.r-project.org/src/contrib/mlbench_2.1-1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/mlbench" + + version('2.1-1', '9f06848b8e137b8a37417c92d8e57f3b') + + depends_on('r@2.10:') + + depends_on('r-lattice', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-modelmetrics/package.py b/var/spack/repos/builtin/packages/r-modelmetrics/package.py new file mode 100644 index 00000000000..99644ef1900 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-modelmetrics/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RModelmetrics(RPackage): + """Collection of metrics for evaluating models written in C++ using + 'Rcpp'.""" + + homepage = "https://cran.r-project.org/package=ModelMetrics" + url = "https://cran.r-project.org/src/contrib/ModelMetrics_1.1.0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/ModelMetrics" + + version('1.1.0', 'd43175001f0531b8810d2802d76b7b44') + + depends_on('r@3.2.2:') + + depends_on('r-rcpp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-modeltools/package.py b/var/spack/repos/builtin/packages/r-modeltools/package.py new file mode 100644 index 00000000000..97c3cf0682b --- /dev/null +++ b/var/spack/repos/builtin/packages/r-modeltools/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RModeltools(RPackage): + """A collection of tools to deal with statistical models.""" + + homepage = "https://cran.r-project.org/package=modeltools" + url = "https://cran.r-project.org/src/contrib/modeltools_0.2-21.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/modeltools" + + version('0.2-21', '3bf56b2e7bf78981444385d87eeccdd7') diff --git a/var/spack/repos/builtin/packages/r-multcomp/package.py b/var/spack/repos/builtin/packages/r-multcomp/package.py index 70704a9c618..0dbfb14ea00 100644 --- a/var/spack/repos/builtin/packages/r-multcomp/package.py +++ b/var/spack/repos/builtin/packages/r-multcomp/package.py @@ -38,8 +38,8 @@ class RMultcomp(RPackage): version('1.4-6', 'f1353ede2ed78b23859a7f1f1f9ebe88') - depends_on('r-mvtnorm', type=('build', 'run')) - depends_on('r-survival', type=('build', 'run')) - depends_on('r-thdata', type=('build', 'run')) - depends_on('r-sandwich', type=('build', 'run')) + depends_on('r-mvtnorm@1.0-3:', type=('build', 'run')) + depends_on('r-survival@2.39-4:', type=('build', 'run')) + depends_on('r-th-data@1.0-2:', type=('build', 'run')) + depends_on('r-sandwich@2.3-0:', type=('build', 'run')) depends_on('r-codetools', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-nlme/package.py b/var/spack/repos/builtin/packages/r-nlme/package.py index 869e03ab51d..32fa484f60a 100644 --- a/var/spack/repos/builtin/packages/r-nlme/package.py +++ b/var/spack/repos/builtin/packages/r-nlme/package.py @@ -29,9 +29,10 @@ class RNlme(RPackage): """Fit and compare Gaussian linear and nonlinear mixed-effects models.""" homepage = "https://cran.r-project.org/package=nlme" - url = "https://cran.r-project.org/src/contrib/nlme_3.1-128.tar.gz" + url = "https://cran.r-project.org/src/contrib/nlme_3.1-130.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/nlme" + version('3.1-130', '1935d6e308a8018ed8e45d25c8731288') version('3.1-128', '3d75ae7380bf123761b95a073eb55008') depends_on('r-lattice', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-numderiv/package.py b/var/spack/repos/builtin/packages/r-numderiv/package.py new file mode 100644 index 00000000000..135c4f41418 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-numderiv/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RNumderiv(RPackage): + """Methods for calculating (usually) accurate numerical first and + second order derivatives.""" + + homepage = "https://cran.r-project.org/package=numDeriv" + url = "https://cran.r-project.org/src/contrib/numDeriv_2016.8-1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/numDeriv" + + version('2016.8-1', '30e486298d5126d86560095be8e8aac1') + + depends_on('r@2.11.1:') diff --git a/var/spack/repos/builtin/packages/r-openssl/package.py b/var/spack/repos/builtin/packages/r-openssl/package.py index bf9f38be723..8b20482c322 100644 --- a/var/spack/repos/builtin/packages/r-openssl/package.py +++ b/var/spack/repos/builtin/packages/r-openssl/package.py @@ -38,9 +38,10 @@ class ROpenssl(RPackage): calculations on large multibyte integers.""" homepage = "https://github.com/jeroenooms/openssl#readme" - url = "https://cran.r-project.org/src/contrib/openssl_0.9.4.tar.gz" + url = "https://cran.r-project.org/src/contrib/openssl_0.9.6.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/openssl" + version('0.9.6', '7ef137929d9dd07db690d35db242ba4b') version('0.9.4', '82a890e71ed0e74499878bedacfb8ccb') - depends_on('openssl') + depends_on('openssl@1.0.1:') diff --git a/var/spack/repos/builtin/packages/r-pacman/package.py b/var/spack/repos/builtin/packages/r-pacman/package.py new file mode 100644 index 00000000000..a51633fbb4d --- /dev/null +++ b/var/spack/repos/builtin/packages/r-pacman/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RPacman(RPackage): + """Tools to more conveniently perform tasks associated with add-on + packages. pacman conveniently wraps library and package related functions + and names them in an intuitive and consistent fashion. It seeks to combine + functionality from lower level functions which can speed up workflow.""" + + homepage = "https://cran.r-project.org/package=pacman" + url = "https://cran.r-project.org/src/contrib/pacman_0.4.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/pacman" + + version('0.4.1', 'bf18fe6d1407d31e00b337d9b07fb648') + + depends_on('r@3.0.2:') + + depends_on('r-devtools', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-party/package.py b/var/spack/repos/builtin/packages/r-party/package.py new file mode 100644 index 00000000000..23f66ca4a4d --- /dev/null +++ b/var/spack/repos/builtin/packages/r-party/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RParty(RPackage): + """A computational toolbox for recursive partitioning.""" + + homepage = "https://cran.r-project.org/web/packages/party/index.html" + url = "https://cran.r-project.org/src/contrib/party_1.1-2.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/party" + + version('1.1-2', '40a00336cf8418042d2ab616675c8ddf') + + depends_on('r@2.14.0:') + + depends_on('r-mvtnorm@1.0-2:', type=('build', 'run')) + depends_on('r-modeltools@0.1-21:', type=('build', 'run')) + depends_on('r-strucchange', type=('build', 'run')) + depends_on('r-survival@2.37-7:', type=('build', 'run')) + depends_on('r-coin@1.1-0:', type=('build', 'run')) + depends_on('r-zoo', type=('build', 'run')) + depends_on('r-sandwich@1.1-1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-pbkrtest/package.py b/var/spack/repos/builtin/packages/r-pbkrtest/package.py index 2d51d2b9586..2a2edc50ce5 100644 --- a/var/spack/repos/builtin/packages/r-pbkrtest/package.py +++ b/var/spack/repos/builtin/packages/r-pbkrtest/package.py @@ -37,7 +37,10 @@ class RPbkrtest(RPackage): list_url = "https://cran.r-project.org/src/contrib/Archive/pbkrtest" version('0.4-6', '0a7d9ff83b8d131af9b2335f35781ef9') + version('0.4-4', '5e54b1b1b35413dd1d24ef15735ec645') - depends_on('r-lme4', type=('build', 'run')) - depends_on('r-matrix', type=('build', 'run')) + depends_on('r@3.2.3:') + + depends_on('r-lme4@1.1.10:', type=('build', 'run')) + depends_on('r-matrix@1.2.3:', type=('build', 'run')) depends_on('r-mass', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-plotrix/package.py b/var/spack/repos/builtin/packages/r-plotrix/package.py index 8a17c72f912..0cd3423f733 100644 --- a/var/spack/repos/builtin/packages/r-plotrix/package.py +++ b/var/spack/repos/builtin/packages/r-plotrix/package.py @@ -29,7 +29,8 @@ class RPlotrix(RPackage): """Lots of plots, various labeling, axis and color scaling functions.""" homepage = "https://cran.r-project.org/package=plotrix" - url = "https://cran.r-project.org/src/contrib/plotrix_3.6-3.tar.gz" + url = "https://cran.r-project.org/src/contrib/plotrix_3.6-4.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/plotrix" + version('3.6-4', 'efe9b9b093d8903228a9b56c46d943fa') version('3.6-3', '23e3e022a13a596e9b77b40afcb4a2ef') diff --git a/var/spack/repos/builtin/packages/r-pls/package.py b/var/spack/repos/builtin/packages/r-pls/package.py new file mode 100644 index 00000000000..ddb18ff42ec --- /dev/null +++ b/var/spack/repos/builtin/packages/r-pls/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RPls(RPackage): + """Multivariate regression methods Partial Least Squares Regression (PLSR), + Principal Component Regression (PCR) and Canonical Powered Partial Least + Squares (CPPLS).""" + + homepage = "https://cran.r-project.org/package=pls" + url = "https://cran.r-project.org/src/contrib/pls_2.6-0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/pls" + + version('2.6-0', '04e02e8e46d983c5ed53c1f952b329df') + + depends_on('r@2.10:') diff --git a/var/spack/repos/builtin/packages/r-prodlim/package.py b/var/spack/repos/builtin/packages/r-prodlim/package.py new file mode 100644 index 00000000000..5219578d943 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-prodlim/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RProdlim(RPackage): + """Product-Limit Estimation for Censored Event History Analysis. Fast and + user friendly implementation of nonparametric estimators for censored event + history (survival) analysis. Kaplan-Meier and Aalen-Johansen method.""" + + homepage = "https://cran.r-project.org/package=prodlim" + url = "https://cran.r-project.org/src/contrib/prodlim_1.5.9.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/prodlim" + + version('1.5.9', 'e0843053c9270e41b657a733d6675dc9') + + depends_on('r@2.9.0:') + + depends_on('r-rcpp@0.11.5:', type=('build', 'run')) + depends_on('r-survival', type=('build', 'run')) + depends_on('r-kernsmooth', type=('build', 'run')) + depends_on('r-lava', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-quantreg/package.py b/var/spack/repos/builtin/packages/r-quantreg/package.py index 2d5091ccafe..c9bdaefa44e 100644 --- a/var/spack/repos/builtin/packages/r-quantreg/package.py +++ b/var/spack/repos/builtin/packages/r-quantreg/package.py @@ -34,9 +34,10 @@ class RQuantreg(RPackage): included.""" homepage = "https://cran.r-project.org/package=quantreg" - url = "https://cran.r-project.org/src/contrib/quantreg_5.26.tar.gz" + url = "https://cran.r-project.org/src/contrib/quantreg_5.29.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/quantreg" + version('5.29', '643ca728200d13f8c2e62365204e9907') version('5.26', '1d89ed932fb4d67ae2d5da0eb8c2989f') depends_on('r-sparsem', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-r6/package.py b/var/spack/repos/builtin/packages/r-r6/package.py index e64a8a65324..700771f40fd 100644 --- a/var/spack/repos/builtin/packages/r-r6/package.py +++ b/var/spack/repos/builtin/packages/r-r6/package.py @@ -34,7 +34,10 @@ class RR6(RPackage): classes are defined in different packages.""" homepage = "https://github.com/wch/R6/" - url = "https://cran.r-project.org/src/contrib/R6_2.1.2.tar.gz" + url = "https://cran.r-project.org/src/contrib/R6_2.2.0.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/R6" + version('2.2.0', '659d83b2d3f7a308a48332b4cfbdab49') version('2.1.2', 'b6afb9430e48707be87638675390e457') + + depends_on('r@3.0:') diff --git a/var/spack/repos/builtin/packages/r-rcpp/package.py b/var/spack/repos/builtin/packages/r-rcpp/package.py index b447dea8bdd..5b89324970e 100644 --- a/var/spack/repos/builtin/packages/r-rcpp/package.py +++ b/var/spack/repos/builtin/packages/r-rcpp/package.py @@ -37,8 +37,9 @@ class RRcpp(RPackage): last two.""" homepage = "http://dirk.eddelbuettel.com/code/rcpp.html" - url = "https://cran.r-project.org/src/contrib/Rcpp_0.12.6.tar.gz" + url = "https://cran.r-project.org/src/contrib/Rcpp_0.12.9.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/Rcpp" + version('0.12.9', '691c49b12794507288b728ede03668a5') version('0.12.6', 'db4280fb0a79cd19be73a662c33b0a8b') version('0.12.5', 'f03ec05b4e391cc46e7ce330e82ff5e2') diff --git a/var/spack/repos/builtin/packages/r-rcppeigen/package.py b/var/spack/repos/builtin/packages/r-rcppeigen/package.py index 23ec0bc27bc..b33e938d5bf 100644 --- a/var/spack/repos/builtin/packages/r-rcppeigen/package.py +++ b/var/spack/repos/builtin/packages/r-rcppeigen/package.py @@ -41,9 +41,10 @@ class RRcppeigen(RPackage): GNU GPL version 2 or later, as is the rest of 'Rcpp'.""" homepage = "http://eigen.tuxfamily.org/" - url = "https://cran.r-project.org/src/contrib/RcppEigen_0.3.2.8.1.tar.gz" + url = "https://cran.r-project.org/src/contrib/RcppEigen_0.3.2.9.0.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/RcppEigen" + version('0.3.2.9.0', '14a7786882a5d9862d53c4b2217df318') version('0.3.2.8.1', '4146e06e4fdf7f4d08db7839069d479f') depends_on('r-matrix', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-reshape2/package.py b/var/spack/repos/builtin/packages/r-reshape2/package.py index d27231e139f..ca65e006dc2 100644 --- a/var/spack/repos/builtin/packages/r-reshape2/package.py +++ b/var/spack/repos/builtin/packages/r-reshape2/package.py @@ -30,9 +30,10 @@ class RReshape2(RPackage): and dcast (or acast).""" homepage = "https://github.com/hadley/reshape" - url = "https://cran.r-project.org/src/contrib/reshape2_1.4.1.tar.gz" + url = "https://cran.r-project.org/src/contrib/reshape2_1.4.2.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/reshape2" + version('1.4.2', 'c851a0312191b8c5bab956445df7cf5f') version('1.4.1', '41e9dffdf5c6fa830321ac9c8ebffe00') depends_on('r-plyr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rminer/package.py b/var/spack/repos/builtin/packages/r-rminer/package.py new file mode 100644 index 00000000000..b22612a2389 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rminer/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RRminer(RPackage): + """Facilitates the use of data mining algorithms in classification and + regression (including time series forecasting) tasks by presenting a short + and coherent set of functions.""" + + homepage = "http://www3.dsi.uminho.pt/pcortez/rminer.html" + url = "https://cran.r-project.org/src/contrib/rminer_1.4.2.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/rminer" + + version('1.4.2', '7d5d90f4ae030cf647d67aa962412c05') + + depends_on('r-plotrix', type=('build', 'run')) + depends_on('r-lattice', type=('build', 'run')) + depends_on('r-nnet', type=('build', 'run')) + depends_on('r-kknn', type=('build', 'run')) + depends_on('r-pls', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run')) + depends_on('r-mda', type=('build', 'run')) + depends_on('r-rpart', type=('build', 'run')) + depends_on('r-randomforest', type=('build', 'run')) + depends_on('r-adabag', type=('build', 'run')) + depends_on('r-party', type=('build', 'run')) + depends_on('r-cubist', type=('build', 'run')) + depends_on('r-kernlab', type=('build', 'run')) + depends_on('r-e1071', type=('build', 'run')) + depends_on('r-glmnet', type=('build', 'run')) + depends_on('r-xgboost', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rpart-plot/package.py b/var/spack/repos/builtin/packages/r-rpart-plot/package.py new file mode 100644 index 00000000000..d7d40f21545 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rpart-plot/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RRpartPlot(RPackage): + """Plot 'rpart' models. Extends plot.rpart() and text.rpart() in the + 'rpart' package.""" + + homepage = "https://cran.r-project.org/package=rpart.plot" + url = "https://cran.r-project.org/src/contrib/rpart.plot_2.1.0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/rpart.plot" + + version('2.1.0', 'fb0f8edfe22c464683ee82aa429136f9') + + depends_on('r-rpart@4.1-0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rpart/package.py b/var/spack/repos/builtin/packages/r-rpart/package.py new file mode 100644 index 00000000000..a81c9d7d919 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rpart/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RRpart(RPackage): + """Recursive partitioning for classification, regression and + survival trees.""" + + homepage = "https://cran.r-project.org/package=rpart" + url = "https://cran.r-project.org/src/contrib/rpart_4.1-10.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/rpart" + + version('4.1-10', '15873cded4feb3ef44d63580ba3ca46e') + + depends_on('r@2.15.0:') diff --git a/var/spack/repos/builtin/packages/r-sandwich/package.py b/var/spack/repos/builtin/packages/r-sandwich/package.py index 62bd2880e59..bae8e82d68b 100644 --- a/var/spack/repos/builtin/packages/r-sandwich/package.py +++ b/var/spack/repos/builtin/packages/r-sandwich/package.py @@ -35,4 +35,6 @@ class RSandwich(RPackage): version('2.3-4', 'a621dbd8a57b6e1e036496642aadc2e5') + depends_on('r@2.0.0:') + depends_on('r-zoo', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-scales/package.py b/var/spack/repos/builtin/packages/r-scales/package.py index e3832f78e08..e88ef144cfa 100644 --- a/var/spack/repos/builtin/packages/r-scales/package.py +++ b/var/spack/repos/builtin/packages/r-scales/package.py @@ -30,9 +30,10 @@ class RScales(RPackage): automatically determining breaks and labels for axes and legends.""" homepage = "https://github.com/hadley/scales" - url = "https://cran.r-project.org/src/contrib/scales_0.4.0.tar.gz" + url = "https://cran.r-project.org/src/contrib/scales_0.4.1.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/scales" + version('0.4.1', '3fb2218866a7fe4c1f6e66790876f85a') version('0.4.0', '7b5602d9c55595901192248bca25c099') depends_on('r-rcolorbrewer', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-sparsem/package.py b/var/spack/repos/builtin/packages/r-sparsem/package.py index 370497e395d..bcd11a5c1f3 100644 --- a/var/spack/repos/builtin/packages/r-sparsem/package.py +++ b/var/spack/repos/builtin/packages/r-sparsem/package.py @@ -31,7 +31,8 @@ class RSparsem(RPackage): subsetting and Kronecker products.""" homepage = "http://www.econ.uiuc.edu/~roger/research/sparse/sparse.html" - url = "https://cran.r-project.org/src/contrib/SparseM_1.7.tar.gz" + url = "https://cran.r-project.org/src/contrib/SparseM_1.74.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/SparseM" - version('1.7', '7b5b0ab166a0929ef6dcfe1d97643601') + version('1.74', 'a16c9b7db172dfd2b7b6508c48e81a5d') + version('1.7', '7b5b0ab166a0929ef6dcfe1d97643601') diff --git a/var/spack/repos/builtin/packages/r-stringi/package.py b/var/spack/repos/builtin/packages/r-stringi/package.py index d89238f3d73..b116c328f58 100644 --- a/var/spack/repos/builtin/packages/r-stringi/package.py +++ b/var/spack/repos/builtin/packages/r-stringi/package.py @@ -37,9 +37,10 @@ class RStringi(RPackage): etc.""" homepage = "http://www.gagolewski.com/software/stringi/" - url = "https://cran.r-project.org/src/contrib/stringi_1.1.1.tar.gz" + url = "https://cran.r-project.org/src/contrib/stringi_1.1.2.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/stringi" + version('1.1.2', '0ec2faa62643e1900734c0eaf5096648') version('1.1.1', '32b919ee3fa8474530c4942962a6d8d9') depends_on('icu4c') diff --git a/var/spack/repos/builtin/packages/r-stringr/package.py b/var/spack/repos/builtin/packages/r-stringr/package.py index de8d83b5007..4accd04e51e 100644 --- a/var/spack/repos/builtin/packages/r-stringr/package.py +++ b/var/spack/repos/builtin/packages/r-stringr/package.py @@ -33,9 +33,10 @@ class RStringr(RPackage): into the input of another.""" homepage = "https://cran.r-project.org/web/packages/stringr/index.html" - url = "https://cran.r-project.org/src/contrib/stringr_1.0.0.tar.gz" + url = "https://cran.r-project.org/src/contrib/stringr_1.1.0.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/stringr" + version('1.1.0', '47973a33944c6d5db9524b1e835b8a5d') version('1.0.0', '5ca977c90351f78b1b888b379114a7b4') depends_on('r-stringi', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-strucchange/package.py b/var/spack/repos/builtin/packages/r-strucchange/package.py new file mode 100644 index 00000000000..6d00d314020 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-strucchange/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RStrucchange(RPackage): + """Testing, monitoring and dating structural changes in (linear) + regression models.""" + + homepage = "https://cran.r-project.org/package=strucchange" + url = "https://cran.r-project.org/src/contrib/strucchange_1.5-1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/strucchange" + + version('1.5-1', 'fc751fc011df9c8df82d577298cb8395') + + depends_on('r@2.10.0:') + + depends_on('r-zoo', type=('build', 'run')) + depends_on('r-sandwich', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-survival/package.py b/var/spack/repos/builtin/packages/r-survival/package.py index 1df00f0c935..067cdcfd6bf 100644 --- a/var/spack/repos/builtin/packages/r-survival/package.py +++ b/var/spack/repos/builtin/packages/r-survival/package.py @@ -31,9 +31,10 @@ class RSurvival(RPackage): models, and parametric accelerated failure time models.""" homepage = "https://cran.r-project.org/package=survival" - url = "https://cran.r-project.org/src/contrib/survival_2.39-5.tar.gz" + url = "https://cran.r-project.org/src/contrib/survival_2.40-1.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/survival" + version('2.40-1', 'a2474b656cd723791268e3114481b8a7') version('2.39-5', 'a3cc6b5762e8c5c0bb9e64a276710be2') depends_on('r-matrix', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-thdata/package.py b/var/spack/repos/builtin/packages/r-th-data/package.py similarity index 94% rename from var/spack/repos/builtin/packages/r-thdata/package.py rename to var/spack/repos/builtin/packages/r-th-data/package.py index cf2b01e6e8b..b9c5fab0d07 100644 --- a/var/spack/repos/builtin/packages/r-thdata/package.py +++ b/var/spack/repos/builtin/packages/r-th-data/package.py @@ -25,13 +25,14 @@ from spack import * -class RThdata(RPackage): +class RThData(RPackage): """Contains data sets used in other packages Torsten Hothorn maintains.""" homepage = "https://cran.r-project.org/package=TH.data" - url = "https://cran.r-project.org/src/contrib/TH.data_1.0-7.tar.gz" + url = "https://cran.r-project.org/src/contrib/TH.data_1.0-8.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/TH.data" + version('1.0-8', '2cc20acc8b470dff1202749b4bea55c4') version('1.0-7', '3e8b6b1a4699544f175215aed7039a94') depends_on('r-survival', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-tibble/package.py b/var/spack/repos/builtin/packages/r-tibble/package.py index 39dfc3893ba..a06b33e7f21 100644 --- a/var/spack/repos/builtin/packages/r-tibble/package.py +++ b/var/spack/repos/builtin/packages/r-tibble/package.py @@ -30,11 +30,14 @@ class RTibble(RPackage): capabilities than traditional data frames.""" homepage = "https://github.com/hadley/tibble" - url = "https://cran.r-project.org/src/contrib/tibble_1.1.tar.gz" + url = "https://cran.r-project.org/src/contrib/tibble_1.2.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/tibble" + version('1.2', 'bdbc3d67aa16860741add6d6ec20ea13') version('1.1', '2fe9f806109d0b7fadafb1ffafea4cb8') + depends_on('r@3.1.2:') + depends_on('r-assertthat', type=('build', 'run')) - depends_on('r-lazyeval', type=('build', 'run')) + depends_on('r-lazyeval@0.1.10:', type=('build', 'run')) depends_on('r-rcpp', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-withr/package.py b/var/spack/repos/builtin/packages/r-withr/package.py index 785050ed873..082b94e2a62 100644 --- a/var/spack/repos/builtin/packages/r-withr/package.py +++ b/var/spack/repos/builtin/packages/r-withr/package.py @@ -32,7 +32,10 @@ class RWithr(RPackage): dependencies to provide access to these functions.""" homepage = "http://github.com/jimhester/withr" - url = "https://cran.r-project.org/src/contrib/withr_1.0.1.tar.gz" + url = "https://cran.r-project.org/src/contrib/withr_1.0.2.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/withr" + version('1.0.2', 'ca52b729af9bbaa14fc8b7bafe38663c') version('1.0.1', 'ac38af2c6f74027c9592dd8f0acb7598') + + depends_on('r@3.0.2:') diff --git a/var/spack/repos/builtin/packages/r-xgboost/package.py b/var/spack/repos/builtin/packages/r-xgboost/package.py index 766191dcc16..4246d73e498 100644 --- a/var/spack/repos/builtin/packages/r-xgboost/package.py +++ b/var/spack/repos/builtin/packages/r-xgboost/package.py @@ -37,12 +37,19 @@ class RXgboost(RPackage): users are also allowed to define their own objectives easily.""" homepage = "https://github.com/dmlc/xgboost" - url = "https://cran.r-project.org/src/contrib/xgboost_0.4-4.tar.gz" + url = "https://cran.r-project.org/src/contrib/xgboost_0.6-4.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/xgboost" + version('0.6-4', '86e517e3ce39f8a01de796920f6b425e') version('0.4-4', 'c24d3076058101a71de4b8af8806697c') - depends_on('r-matrix', type=('build', 'run')) - depends_on('r-datatable', type=('build', 'run')) - depends_on('r-magrittr', type=('build', 'run')) + depends_on('r@3.3.0:') + + depends_on('r-matrix@1.1-0:', type=('build', 'run')) + depends_on('r-data-table@1.9.6:', type=('build', 'run')) + depends_on('r-magrittr@1.5:', type=('build', 'run')) + depends_on('r-stringi@0.5.2:', type=('build', 'run')) + + # This is not listed as required, but installation fails without it + # ERROR: dependency 'stringr' is not available for package 'xgboost' depends_on('r-stringr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-zoo/package.py b/var/spack/repos/builtin/packages/r-zoo/package.py index 230c78a61ac..7418d36a64d 100644 --- a/var/spack/repos/builtin/packages/r-zoo/package.py +++ b/var/spack/repos/builtin/packages/r-zoo/package.py @@ -33,9 +33,10 @@ class RZoo(RPackage): methods to extend standard generics.""" homepage = "http://zoo.r-forge.r-project.org/" - url = "https://cran.r-project.org/src/contrib/zoo_1.7-13.tar.gz" + url = "https://cran.r-project.org/src/contrib/zoo_1.7-14.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/zoo" + version('1.7-14', '8c577a7c1e535c899ab14177b1039c32') version('1.7-13', '99521dfa4c668e692720cefcc5a1bf30') depends_on('r-lattice', type=('build', 'run')) From d46a1eadcd1d1b6bb6165a8f6e9cfda734e7458c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Tue, 31 Jan 2017 22:56:35 +0800 Subject: [PATCH 0073/2394] Replace FTP retrieval URLs with HTTP/HTTPS serving packages with identical checksum. (#2958) --- var/spack/repos/builtin/packages/bash/package.py | 2 +- var/spack/repos/builtin/packages/cdd/package.py | 4 ++-- var/spack/repos/builtin/packages/cfitsio/package.py | 2 +- var/spack/repos/builtin/packages/darshan-runtime/package.py | 2 +- var/spack/repos/builtin/packages/darshan-util/package.py | 2 +- var/spack/repos/builtin/packages/gconf/package.py | 2 +- var/spack/repos/builtin/packages/ghostscript-fonts/package.py | 2 +- var/spack/repos/builtin/packages/gmake/package.py | 2 +- var/spack/repos/builtin/packages/gnutls/package.py | 2 +- var/spack/repos/builtin/packages/gromacs/package.py | 2 +- var/spack/repos/builtin/packages/guile/package.py | 2 +- var/spack/repos/builtin/packages/libffi/package.py | 2 +- var/spack/repos/builtin/packages/libgcrypt/package.py | 2 +- var/spack/repos/builtin/packages/libgpg-error/package.py | 2 +- var/spack/repos/builtin/packages/libsigsegv/package.py | 2 +- var/spack/repos/builtin/packages/libtiff/package.py | 2 +- var/spack/repos/builtin/packages/m4/package.py | 2 +- var/spack/repos/builtin/packages/mesa/package.py | 2 +- var/spack/repos/builtin/packages/mpc/package.py | 4 ++-- var/spack/repos/builtin/packages/mpe2/package.py | 2 +- var/spack/repos/builtin/packages/mrnet/package.py | 2 +- var/spack/repos/builtin/packages/ncview/package.py | 2 +- var/spack/repos/builtin/packages/netcdf/package.py | 2 +- var/spack/repos/builtin/packages/octave/package.py | 2 +- var/spack/repos/builtin/packages/openssl/package.py | 2 +- var/spack/repos/builtin/packages/pcre/package.py | 2 +- var/spack/repos/builtin/packages/pcre2/package.py | 2 +- var/spack/repos/builtin/packages/readline/package.py | 2 +- var/spack/repos/builtin/packages/unixodbc/package.py | 2 +- var/spack/repos/builtin/packages/xterm/package.py | 2 +- 30 files changed, 32 insertions(+), 32 deletions(-) diff --git a/var/spack/repos/builtin/packages/bash/package.py b/var/spack/repos/builtin/packages/bash/package.py index e0cd114635e..33168c2c34c 100644 --- a/var/spack/repos/builtin/packages/bash/package.py +++ b/var/spack/repos/builtin/packages/bash/package.py @@ -29,7 +29,7 @@ class Bash(Package): """The GNU Project's Bourne Again SHell.""" homepage = "https://www.gnu.org/software/bash/" - url = "ftp://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz" + url = "https://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz" version('4.3', '81348932d5da294953e15d4814c74dd1') diff --git a/var/spack/repos/builtin/packages/cdd/package.py b/var/spack/repos/builtin/packages/cdd/package.py index 4a0a0aefef7..96414bc54b6 100644 --- a/var/spack/repos/builtin/packages/cdd/package.py +++ b/var/spack/repos/builtin/packages/cdd/package.py @@ -33,7 +33,7 @@ class Cdd(Package): a general convex polyhedron given by a system of linear inequalities""" homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/cdd.html" - url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cdd-061a.tar.gz" + url = "http://www.cs.mcgill.ca/~fukuda/download/cdd/cdd-061a.tar.gz" version('0.61a', '22c24a7a9349dd7ec0e24531925a02d9') @@ -42,7 +42,7 @@ class Cdd(Package): patch("Makefile.spack.patch") def url_for_version(self, version): - url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cdd-{0}.tar.gz" + url = "http://www.cs.mcgill.ca/~fukuda/download/cdd/cdd-{0}.tar.gz" return url.format(version.joined) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/cfitsio/package.py b/var/spack/repos/builtin/packages/cfitsio/package.py index 8c2ae95e8e0..811b3ca9bc7 100644 --- a/var/spack/repos/builtin/packages/cfitsio/package.py +++ b/var/spack/repos/builtin/packages/cfitsio/package.py @@ -41,7 +41,7 @@ class Cfitsio(AutotoolsPackage): depends_on('bzip2', when='+bzip2') def url_for_version(self, version): - url = 'ftp://heasarc.gsfc.nasa.gov/software/fitsio/c/cfitsio{0}.tar.gz' + url = 'http://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/cfitsio{0}.tar.gz' return url.format(version.joined) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/darshan-runtime/package.py b/var/spack/repos/builtin/packages/darshan-runtime/package.py index a0313743819..93b2744e194 100644 --- a/var/spack/repos/builtin/packages/darshan-runtime/package.py +++ b/var/spack/repos/builtin/packages/darshan-runtime/package.py @@ -34,7 +34,7 @@ class DarshanRuntime(Package): systems where you intend to instrument MPI applications.""" homepage = "http://www.mcs.anl.gov/research/projects/darshan/" - url = "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz" + url = "http://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz" version('3.1.0', '439d717323e6265b2612ed127886ae52') version('3.0.0', '732577fe94238936268d74d7d74ebd08') diff --git a/var/spack/repos/builtin/packages/darshan-util/package.py b/var/spack/repos/builtin/packages/darshan-util/package.py index 47b0497ca8f..2a970fa95f7 100644 --- a/var/spack/repos/builtin/packages/darshan-util/package.py +++ b/var/spack/repos/builtin/packages/darshan-util/package.py @@ -32,7 +32,7 @@ class DarshanUtil(Package): log files produced by Darshan (runtime).""" homepage = "http://www.mcs.anl.gov/research/projects/darshan/" - url = "ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz" + url = "http://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz" version('3.1.0', '439d717323e6265b2612ed127886ae52') version('3.0.0', '732577fe94238936268d74d7d74ebd08') diff --git a/var/spack/repos/builtin/packages/gconf/package.py b/var/spack/repos/builtin/packages/gconf/package.py index 80bc54a6030..65023017840 100644 --- a/var/spack/repos/builtin/packages/gconf/package.py +++ b/var/spack/repos/builtin/packages/gconf/package.py @@ -29,7 +29,7 @@ class Gconf(AutotoolsPackage): """GConf is a system for storing application preferences.""" homepage = "https://projects.gnome.org/gconf/" - url = "ftp://ftp.gnome.org/pub/gnome/sources/GConf/3.2/GConf-3.2.6.tar.xz" + url = "http://ftp.gnome.org/pub/gnome/sources/GConf/3.2/GConf-3.2.6.tar.xz" version('3.2.6', '2b16996d0e4b112856ee5c59130e822c') diff --git a/var/spack/repos/builtin/packages/ghostscript-fonts/package.py b/var/spack/repos/builtin/packages/ghostscript-fonts/package.py index 1bf3f857b03..86c937d5554 100644 --- a/var/spack/repos/builtin/packages/ghostscript-fonts/package.py +++ b/var/spack/repos/builtin/packages/ghostscript-fonts/package.py @@ -30,7 +30,7 @@ class GhostscriptFonts(Package): """Ghostscript Fonts""" homepage = "http://ghostscript.com/" - url = "ftp://ftp.imagemagick.org/pub/ImageMagick/delegates/ghostscript-fonts-std-8.11.tar.gz" + url = "https://www.imagemagick.org/download/delegates/ghostscript-fonts-std-8.11.tar.gz" version('8.11', '6865682b095f8c4500c54b285ff05ef6') diff --git a/var/spack/repos/builtin/packages/gmake/package.py b/var/spack/repos/builtin/packages/gmake/package.py index ca296350a41..ed89a46758a 100644 --- a/var/spack/repos/builtin/packages/gmake/package.py +++ b/var/spack/repos/builtin/packages/gmake/package.py @@ -29,7 +29,7 @@ class Gmake(Package): """GNU Make.""" homepage = "http://gnu.org/gnu/make" - url = "ftp://ftp.gnu.org/gnu/make/make-4.0.tar.gz" + url = "https://ftp.gnu.org/gnu/make/make-4.0.tar.gz" version('4.0', 'b5e558f981326d9ca1bfdb841640721a') diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index 87e83649a4d..638ef7e30cf 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -35,7 +35,7 @@ class Gnutls(AutotoolsPackage): with focus on security and interoperability.""" homepage = "http://www.gnutls.org" - url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.9.tar.xz" + url = "http://www.ring.gr.jp/pub/net/gnupg/gnutls/v3.3/gnutls-3.3.9.tar.xz" version('3.3.9', 'ff61b77e39d09f1140ab5a9cf52c58b6') diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index d079188db61..fd5814ca08b 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -39,7 +39,7 @@ class Gromacs(CMakePackage): """ homepage = 'http://www.gromacs.org' - url = 'ftp://ftp.gromacs.org/pub/gromacs/gromacs-5.1.2.tar.gz' + url = 'http://ftp.gromacs.org/gromacs/gromacs-5.1.2.tar.gz' version('5.1.2', '614d0be372f1a6f1f36382b7a6fcab98') diff --git a/var/spack/repos/builtin/packages/guile/package.py b/var/spack/repos/builtin/packages/guile/package.py index 22aff1bddf3..15e24e56345 100644 --- a/var/spack/repos/builtin/packages/guile/package.py +++ b/var/spack/repos/builtin/packages/guile/package.py @@ -30,7 +30,7 @@ class Guile(Package): the official extension language for the GNU operating system.""" homepage = "https://www.gnu.org/software/guile/" - url = "ftp://ftp.gnu.org/gnu/guile/guile-2.0.11.tar.gz" + url = "https://ftp.gnu.org/gnu/guile/guile-2.0.11.tar.gz" version('2.0.11', 'e532c68c6f17822561e3001136635ddd') diff --git a/var/spack/repos/builtin/packages/libffi/package.py b/var/spack/repos/builtin/packages/libffi/package.py index ddb7709ddfc..79ba50d77a2 100644 --- a/var/spack/repos/builtin/packages/libffi/package.py +++ b/var/spack/repos/builtin/packages/libffi/package.py @@ -33,7 +33,7 @@ class Libffi(AutotoolsPackage): homepage = "https://sourceware.org/libffi/" version('3.2.1', '83b89587607e3eb65c70d361f13bab43', - url="ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz") + url="https://www.mirrorservice.org/sites/sourceware.org/pub/libffi/libffi-3.2.1.tar.gz") # version('3.1', 'f5898b29bbfd70502831a212d9249d10',url = # "ftp://sourceware.org/pub/libffi/libffi-3.1.tar.gz") # Has a bug # $(lib64) instead of ${lib64} in libffi.pc diff --git a/var/spack/repos/builtin/packages/libgcrypt/package.py b/var/spack/repos/builtin/packages/libgcrypt/package.py index 968793315e6..1eae9c6530a 100644 --- a/var/spack/repos/builtin/packages/libgcrypt/package.py +++ b/var/spack/repos/builtin/packages/libgcrypt/package.py @@ -32,7 +32,7 @@ class Libgcrypt(AutotoolsPackage): key algorithms, large integer functions, random numbers and a lot of supporting functions. """ homepage = "http://www.gnu.org/software/libgcrypt/" - url = "ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.2.tar.bz2" + url = "http://gd.tuwien.ac.at/pub/gnupg/libgcrypt/libgcrypt-1.6.2.tar.bz2" version('1.6.2', 'b54395a93cb1e57619943c082da09d5f') diff --git a/var/spack/repos/builtin/packages/libgpg-error/package.py b/var/spack/repos/builtin/packages/libgpg-error/package.py index 26b7e6d05e8..67cd1759c0c 100644 --- a/var/spack/repos/builtin/packages/libgpg-error/package.py +++ b/var/spack/repos/builtin/packages/libgpg-error/package.py @@ -32,7 +32,7 @@ class LibgpgError(AutotoolsPackage): SmartCard Daemon and possibly more in the future. """ homepage = "https://www.gnupg.org/related_software/libgpg-error" - url = "ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.18.tar.bz2" + url = "http://gd.tuwien.ac.at/pub/gnupg/libgpg-error/libgpg-error-1.18.tar.bz2" version('1.21', 'ab0b5aba6d0a185b41d07bda804fd8b2') version('1.18', '12312802d2065774b787cbfc22cc04e9') diff --git a/var/spack/repos/builtin/packages/libsigsegv/package.py b/var/spack/repos/builtin/packages/libsigsegv/package.py index a5a3e8eb5ff..f354b260a92 100644 --- a/var/spack/repos/builtin/packages/libsigsegv/package.py +++ b/var/spack/repos/builtin/packages/libsigsegv/package.py @@ -29,7 +29,7 @@ class Libsigsegv(AutotoolsPackage): """GNU libsigsegv is a library for handling page faults in user mode.""" homepage = "https://www.gnu.org/software/libsigsegv/" - url = "ftp://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.10.tar.gz" + url = "https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.10.tar.gz" patch('patch.new_config_guess', when='@2.10') diff --git a/var/spack/repos/builtin/packages/libtiff/package.py b/var/spack/repos/builtin/packages/libtiff/package.py index 70c371b3b81..3e5b57a9656 100644 --- a/var/spack/repos/builtin/packages/libtiff/package.py +++ b/var/spack/repos/builtin/packages/libtiff/package.py @@ -28,7 +28,7 @@ class Libtiff(AutotoolsPackage): """libtiff graphics format library""" homepage = "http://www.simplesystems.org/libtiff/" - url = "ftp://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz" + url = "http://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz" version('4.0.6', 'd1d2e940dea0b5ad435f21f03d96dd72') version('4.0.3', '051c1068e6a0627f461948c365290410') diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index a8b04239330..128e1c2a41f 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -29,7 +29,7 @@ class M4(AutotoolsPackage): """GNU M4 is an implementation of the traditional Unix macro processor.""" homepage = "https://www.gnu.org/software/m4/m4.html" - url = "ftp://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz" + url = "https://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz" version('1.4.18', 'a077779db287adf4e12a035029002d28') version('1.4.17', 'a5e9954b1dae036762f7b13673a2cf76') diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index 094a7155d20..7d6c5596961 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -30,7 +30,7 @@ class Mesa(AutotoolsPackage): specification - a system for rendering interactive 3D graphics.""" homepage = "http://www.mesa3d.org" - url = "ftp://ftp.freedesktop.org/pub/mesa/12.0.3/mesa-12.0.3.tar.gz" + url = "http://ftp.iij.ad.jp/pub/X11/x.org/pub/mesa/12.0.3/mesa-12.0.3.tar.gz" version('12.0.3', '60c5f9897ddc38b46f8144c7366e84ad') diff --git a/var/spack/repos/builtin/packages/mpc/package.py b/var/spack/repos/builtin/packages/mpc/package.py index 40e7d95de9e..39c4f3d8c08 100644 --- a/var/spack/repos/builtin/packages/mpc/package.py +++ b/var/spack/repos/builtin/packages/mpc/package.py @@ -30,7 +30,7 @@ class Mpc(AutotoolsPackage): with arbitrarily high precision and correct rounding of the result.""" homepage = "http://www.multiprecision.org" - url = "ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz" + url = "https://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz" version('1.0.3', 'd6a1d5f8ddea3abd2cc3e98f58352d26') version('1.0.2', '68fadff3358fb3e7976c7a398a0af4c3') @@ -42,4 +42,4 @@ def url_for_version(self, version): if version < Version("1.0.1"): return "http://www.multiprecision.org/mpc/download/mpc-%s.tar.gz" % version else: - return "ftp://ftp.gnu.org/gnu/mpc/mpc-%s.tar.gz" % version + return "https://ftp.gnu.org/gnu/mpc/mpc-%s.tar.gz" % version diff --git a/var/spack/repos/builtin/packages/mpe2/package.py b/var/spack/repos/builtin/packages/mpe2/package.py index a129d599497..78201281bb0 100644 --- a/var/spack/repos/builtin/packages/mpe2/package.py +++ b/var/spack/repos/builtin/packages/mpe2/package.py @@ -29,7 +29,7 @@ class Mpe2(Package): """Message Passing Extensions (MPE): Parallel, shared X window graphics""" homepage = "http://www.mcs.anl.gov/research/projects/perfvis/software/MPE/" - url = "ftp://ftp.mcs.anl.gov/pub/mpi/mpe/mpe2-1.3.0.tar.gz" + url = "http://ftp.mcs.anl.gov/pub/mpi/mpe/mpe2-1.3.0.tar.gz" version('1.3.0', '67bf0c7b2e573df3ba0d2059a96c2f7b') diff --git a/var/spack/repos/builtin/packages/mrnet/package.py b/var/spack/repos/builtin/packages/mrnet/package.py index b58d7a8c87e..81938827f1f 100644 --- a/var/spack/repos/builtin/packages/mrnet/package.py +++ b/var/spack/repos/builtin/packages/mrnet/package.py @@ -28,7 +28,7 @@ class Mrnet(AutotoolsPackage): """The MRNet Multi-Cast Reduction Network.""" homepage = "http://paradyn.org/mrnet" - url = "ftp://ftp.cs.wisc.edu/paradyn/mrnet/mrnet_5.0.1.tar.gz" + url = "http://ftp.cs.wisc.edu/pub/paradyn/mrnet/mrnet_5.0.1.tar.gz" list_url = "http://ftp.cs.wisc.edu/paradyn/mrnet" version('5.0.1-2', git='https://github.com/dyninst/mrnet.git', diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py index da541c18b31..6f83aa9139e 100644 --- a/var/spack/repos/builtin/packages/ncview/package.py +++ b/var/spack/repos/builtin/packages/ncview/package.py @@ -28,7 +28,7 @@ class Ncview(AutotoolsPackage): """Simple viewer for NetCDF files.""" homepage = "http://meteora.ucsd.edu/~pierce/ncview_home_page.html" - url = "ftp://cirrus.ucsd.edu/pub/ncview/ncview-2.1.7.tar.gz" + url = "https://fossies.org/linux/misc/ncview-2.1.7.tar.gz" version('2.1.7', 'debd6ca61410aac3514e53122ab2ba07') diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py index af3e69b5e6a..34d3bd41c6f 100644 --- a/var/spack/repos/builtin/packages/netcdf/package.py +++ b/var/spack/repos/builtin/packages/netcdf/package.py @@ -31,7 +31,7 @@ class Netcdf(AutotoolsPackage): and sharing of array-oriented scientific data.""" homepage = "http://www.unidata.ucar.edu/software/netcdf" - url = "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.3.tar.gz" + url = "http://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-4.3.3.tar.gz" version('4.4.1.1', '503a2d6b6035d116ed53b1d80c811bda') version('4.4.1', '7843e35b661c99e1d49e60791d5072d8') diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index 2ba70382505..ed8d28ebdad 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -34,7 +34,7 @@ class Octave(AutotoolsPackage): Matlab. It may also be used as a batch-oriented language.""" homepage = "https://www.gnu.org/software/octave/" - url = "ftp://ftp.gnu.org/gnu/octave/octave-4.0.0.tar.gz" + url = "https://ftp.gnu.org/gnu/octave/octave-4.0.0.tar.gz" extendable = True diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 88896231fde..9fe76418861 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -33,7 +33,7 @@ class Openssl(Package): Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.""" homepage = "http://www.openssl.org" - url = "ftp://openssl.org/source/openssl-1.0.1h.tar.gz" + url = "http://openssl.org/source/openssl-1.0.1h.tar.gz" # Note: Version 1.0.2 is the "long-term support" version that will # remain supported until 2019. We could thus make this version the diff --git a/var/spack/repos/builtin/packages/pcre/package.py b/var/spack/repos/builtin/packages/pcre/package.py index a2236e682b0..f1a106f8d79 100644 --- a/var/spack/repos/builtin/packages/pcre/package.py +++ b/var/spack/repos/builtin/packages/pcre/package.py @@ -30,7 +30,7 @@ class Pcre(Package): libraries. These are useful for implementing regular expression pattern matching using the same syntax and semantics as Perl 5.""" homepage = "http://www.pcre.org""" - url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2" + url = "https://ftp.pcre.org/pub/pcre/pcre-8.36.tar.bz2" version('8.39', 'e3fca7650a0556a2647821679d81f585') version('8.38', '00aabbfe56d5a48b270f999b508c5ad2') diff --git a/var/spack/repos/builtin/packages/pcre2/package.py b/var/spack/repos/builtin/packages/pcre2/package.py index d2915dd60e0..5fb582cab0c 100644 --- a/var/spack/repos/builtin/packages/pcre2/package.py +++ b/var/spack/repos/builtin/packages/pcre2/package.py @@ -30,6 +30,6 @@ class Pcre2(AutotoolsPackage): libraries. These are useful for implementing regular expression pattern matching using the same syntax and semantics as Perl 5.""" homepage = "http://www.pcre.org""" - url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.20.tar.bz2" + url = "https://ftp.pcre.org/pub/pcre/pcre2-10.20.tar.bz2" version('10.20', 'dcd027c57ecfdc8a6c3af9d0acf5e3f7') diff --git a/var/spack/repos/builtin/packages/readline/package.py b/var/spack/repos/builtin/packages/readline/package.py index ab9454b0fc0..631a49183f3 100644 --- a/var/spack/repos/builtin/packages/readline/package.py +++ b/var/spack/repos/builtin/packages/readline/package.py @@ -34,7 +34,7 @@ class Readline(AutotoolsPackage): recall and perhaps reedit those lines, and perform csh-like history expansion on previous commands.""" homepage = "http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html" - url = "ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz" + url = "https://ftp.gnu.org/gnu/readline/readline-6.3.tar.gz" version('6.3', '33c8fb279e981274f485fd91da77e94a') diff --git a/var/spack/repos/builtin/packages/unixodbc/package.py b/var/spack/repos/builtin/packages/unixodbc/package.py index cba34b29c3f..8ce11d27ddf 100644 --- a/var/spack/repos/builtin/packages/unixodbc/package.py +++ b/var/spack/repos/builtin/packages/unixodbc/package.py @@ -31,6 +31,6 @@ class Unixodbc(AutotoolsPackage): SQL Servers and any Data Source with an ODBC Driver.""" homepage = "http://www.unixodbc.org/" - url = "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz" + url = "http://www.unixodbc.org/unixODBC-2.3.4.tar.gz" version('2.3.4', 'bd25d261ca1808c947cb687e2034be81') diff --git a/var/spack/repos/builtin/packages/xterm/package.py b/var/spack/repos/builtin/packages/xterm/package.py index a4977491ea0..f4212021e95 100644 --- a/var/spack/repos/builtin/packages/xterm/package.py +++ b/var/spack/repos/builtin/packages/xterm/package.py @@ -31,7 +31,7 @@ class Xterm(AutotoolsPackage): that can't use the window system directly.""" homepage = "http://invisible-island.net/xterm/" - url = "ftp://invisible-island.net/xterm/xterm-327.tgz" + url = "http://invisible-island.net/xterm/xterm-327.tgz" version('327', '3c32e931adcad44e64e57892e75d9e02') From 2babe4e4ff0a3c684193daa7722c30140214610d Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 31 Jan 2017 16:48:57 +0100 Subject: [PATCH 0074/2394] removed call syntax from property fixes #2944 (#2945) --- lib/spack/spack/build_systems/python.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index 60a850d3563..d2ee72925da 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -112,7 +112,7 @@ def python(self, *args): def setup_py(self, *args): setup = self.setup_file() - with working_dir(self.build_directory()): + with working_dir(self.build_directory): self.python(setup, '--no-user-cfg', *args) # The following phases and their descriptions come from: From 2e81fe4fb3a8982932f16c212f2a0732ee1766ea Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 31 Jan 2017 16:51:26 +0100 Subject: [PATCH 0075/2394] openssl: add extra url to download old versions (#2935) --- var/spack/repos/builtin/packages/openssl/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 9fe76418861..f74a4203561 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -33,13 +33,17 @@ class Openssl(Package): Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.""" homepage = "http://www.openssl.org" - url = "http://openssl.org/source/openssl-1.0.1h.tar.gz" + url = "http://www.openssl.org/source/openssl-1.0.1h.tar.gz" + list_url = "https://www.openssl.org/source/old/" + list_depth = 2 # Note: Version 1.0.2 is the "long-term support" version that will # remain supported until 2019. We could thus make this version the # preferred version, if we find that many packages cannot handle # version 1.1. + version('1.1.0d', '711ce3cd5f53a99c0e12a7d5804f0f63') version('1.1.0c', '601e8191f72b18192a937ecf1a800f3f') + version('1.0.2k', 'f965fc0bf01bf882b31314b61391ae65') version('1.0.2j', '96322138f0b69e61b7212bc53d5e912b') version('1.0.2i', '678374e63f8df456a697d3e5e5a931fb') version('1.0.2h', '9392e65072ce4b614c1392eefc1f23d0') From 123f057089547d79d6f308bc47698be936aa1cb5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 31 Jan 2017 10:14:52 -0600 Subject: [PATCH 0076/2394] Refactor Spack's URL parsing commands (#2938) * Replace `spack urls` and `spack url-parse` with `spack url` * Allow spack url list to only list incorrect parsings * Add spack url test reporting * Add unit tests for new URL commands --- lib/spack/docs/developer_guide.rst | 102 +++++++++ lib/spack/docs/packaging_guide.rst | 197 +++++++++--------- lib/spack/spack/cmd/url.py | 319 +++++++++++++++++++++++++++++ lib/spack/spack/cmd/url_parse.py | 79 ------- lib/spack/spack/cmd/urls.py | 59 ------ lib/spack/spack/test/cmd/url.py | 116 +++++++++++ lib/spack/spack/url.py | 235 ++++++++++++++------- 7 files changed, 796 insertions(+), 311 deletions(-) create mode 100644 lib/spack/spack/cmd/url.py delete mode 100644 lib/spack/spack/cmd/url_parse.py delete mode 100644 lib/spack/spack/cmd/urls.py create mode 100644 lib/spack/spack/test/cmd/url.py diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index 5ddbaf24782..dbb9a670b46 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -300,6 +300,42 @@ Stage objects Writing commands ---------------- +Adding a new command to Spack is easy. Simply add a ``.py`` file to +``lib/spack/spack/cmd/``, where ```` is the name of the subcommand. +At the bare minimum, two functions are required in this file: + +^^^^^^^^^^^^^^^^^^ +``setup_parser()`` +^^^^^^^^^^^^^^^^^^ + +Unless your command doesn't accept any arguments, a ``setup_parser()`` +function is required to define what arguments and flags your command takes. +See the `Argparse documentation `_ +for more details on how to add arguments. + +Some commands have a set of subcommands, like ``spack compiler find`` or +``spack module refresh``. You can add subparsers to your parser to handle +this. Check out ``spack edit --command compiler`` for an example of this. + +A lot of commands take the same arguments and flags. These arguments should +be defined in ``lib/spack/spack/cmd/common/arguments.py`` so that they don't +need to be redefined in multiple commands. + +^^^^^^^^^^^^ +``()`` +^^^^^^^^^^^^ + +In order to run your command, Spack searches for a function with the same +name as your command in ``.py``. This is the main method for your +command, and can call other helper methods to handle common tasks. + +Remember, before adding a new command, think to yourself whether or not this +new command is actually necessary. Sometimes, the functionality you desire +can be added to an existing command. Also remember to add unit tests for +your command. If it isn't used very frequently, changes to the rest of +Spack can cause your command to break without sufficient unit tests to +prevent this from happening. + ---------- Unit tests ---------- @@ -312,14 +348,80 @@ Unit testing Developer commands ------------------ +.. _cmd-spack-doc: + ^^^^^^^^^^^^^ ``spack doc`` ^^^^^^^^^^^^^ +.. _cmd-spack-test: + ^^^^^^^^^^^^^^ ``spack test`` ^^^^^^^^^^^^^^ +.. _cmd-spack-url: + +^^^^^^^^^^^^^ +``spack url`` +^^^^^^^^^^^^^ + +A package containing a single URL can be used to download several different +versions of the package. If you've ever wondered how this works, all of the +magic is in :mod:`spack.url`. This module contains methods for extracting +the name and version of a package from its URL. The name is used by +``spack create`` to guess the name of the package. By determining the version +from the URL, Spack can replace it with other versions to determine where to +download them from. + +The regular expressions in ``parse_name_offset`` and ``parse_version_offset`` +are used to extract the name and version, but they aren't perfect. In order +to debug Spack's URL parsing support, the ``spack url`` command can be used. + +""""""""""""""""""" +``spack url parse`` +""""""""""""""""""" + +If you need to debug a single URL, you can use the following command: + +.. command-output:: spack url parse http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz + +You'll notice that the name and version of this URL are correctly detected, +and you can even see which regular expressions it was matched to. However, +you'll notice that when it substitutes the version number in, it doesn't +replace the ``2.2`` with ``9.9`` where we would expect ``9.9.9b`` to live. +This particular package may require a ``list_url`` or ``url_for_version`` +function. + +This command also accepts a ``--spider`` flag. If provided, Spack searches +for other versions of the package and prints the matching URLs. + +"""""""""""""""""" +``spack url list`` +"""""""""""""""""" + +This command lists every URL in every package in Spack. If given the +``--color`` and ``--extrapolation`` flags, it also colors the part of +the string that it detected to be the name and version. The +``--incorrect-name`` and ``--incorrect-version`` flags can be used to +print URLs that were not being parsed correctly. + +"""""""""""""""""" +``spack url test`` +"""""""""""""""""" + +This command attempts to parse every URL for every package in Spack +and prints a summary of how many of them are being correctly parsed. +It also prints a histogram showing which regular expressions are being +matched and how frequently: + +.. command-output:: spack url test + +This command is essential for anyone adding or changing the regular +expressions that parse names and versions. By running this command +before and after the change, you can make sure that your regular +expression fixes more packages than it breaks. + --------- Profiling --------- diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 75546d943e8..41d42896360 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -712,8 +712,8 @@ is at ``http://example.com/downloads/foo-1.0.tar.gz``, Spack will look in ``http://example.com/downloads/`` for links to additional versions. If you need to search another path for download links, you can supply some extra attributes that control how your package finds new -versions. See the documentation on `attribute_list_url`_ and -`attribute_list_depth`_. +versions. See the documentation on :ref:`attribute_list_url` and +:ref:`attribute_list_depth`. .. note:: @@ -728,6 +728,102 @@ versions. See the documentation on `attribute_list_url`_ and syntax errors, or the ``import`` will fail. Use this once you've got your package in working order. +-------------------- +Finding new versions +-------------------- + +You've already seen the ``homepage`` and ``url`` package attributes: + +.. code-block:: python + :linenos: + + from spack import * + + + class Mpich(Package): + """MPICH is a high performance and widely portable implementation of + the Message Passing Interface (MPI) standard.""" + homepage = "http://www.mpich.org" + url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz" + +These are class-level attributes used by Spack to show users +information about the package, and to determine where to download its +source code. + +Spack uses the tarball URL to extrapolate where to find other tarballs +of the same package (e.g. in :ref:`cmd-spack-checksum`, but +this does not always work. This section covers ways you can tell +Spack to find tarballs elsewhere. + +.. _attribute_list_url: + +^^^^^^^^^^^^ +``list_url`` +^^^^^^^^^^^^ + +When spack tries to find available versions of packages (e.g. with +:ref:`cmd-spack-checksum`), it spiders the parent directory +of the tarball in the ``url`` attribute. For example, for libelf, the +url is: + +.. code-block:: python + + url = "http://www.mr511.de/software/libelf-0.8.13.tar.gz" + +Here, Spack spiders ``http://www.mr511.de/software/`` to find similar +tarball links and ultimately to make a list of available versions of +``libelf``. + +For many packages, the tarball's parent directory may be unlistable, +or it may not contain any links to source code archives. In fact, +many times additional package downloads aren't even available in the +same directory as the download URL. + +For these, you can specify a separate ``list_url`` indicating the page +to search for tarballs. For example, ``libdwarf`` has the homepage as +the ``list_url``, because that is where links to old versions are: + +.. code-block:: python + :linenos: + + class Libdwarf(Package): + homepage = "http://www.prevanders.net/dwarf.html" + url = "http://www.prevanders.net/libdwarf-20130729.tar.gz" + list_url = homepage + +.. _attribute_list_depth: + +^^^^^^^^^^^^^^ +``list_depth`` +^^^^^^^^^^^^^^ + +``libdwarf`` and many other packages have a listing of available +versions on a single webpage, but not all do. For example, ``mpich`` +has a tarball URL that looks like this: + +.. code-block:: python + + url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz" + +But its downloads are in many different subdirectories of +``http://www.mpich.org/static/downloads/``. So, we need to add a +``list_url`` *and* a ``list_depth`` attribute: + +.. code-block:: python + :linenos: + + class Mpich(Package): + homepage = "http://www.mpich.org" + url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz" + list_url = "http://www.mpich.org/static/downloads/" + list_depth = 2 + +By default, Spack only looks at the top-level page available at +``list_url``. ``list_depth`` tells it to follow up to 2 levels of +links from the top-level page. Note that here, this implies two +levels of subdirectories, as the ``mpich`` website is structured much +like a filesystem. But ``list_depth`` really refers to link depth +when spidering the page. .. _vcs-fetch: @@ -1241,103 +1337,6 @@ RPATHs in Spack are handled in one of three ways: links. You can see this how this is used in the :ref:`PySide example ` above. --------------------- -Finding new versions --------------------- - -You've already seen the ``homepage`` and ``url`` package attributes: - -.. code-block:: python - :linenos: - - from spack import * - - - class Mpich(Package): - """MPICH is a high performance and widely portable implementation of - the Message Passing Interface (MPI) standard.""" - homepage = "http://www.mpich.org" - url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz" - -These are class-level attributes used by Spack to show users -information about the package, and to determine where to download its -source code. - -Spack uses the tarball URL to extrapolate where to find other tarballs -of the same package (e.g. in :ref:`cmd-spack-checksum`, but -this does not always work. This section covers ways you can tell -Spack to find tarballs elsewhere. - -.. _attribute_list_url: - -^^^^^^^^^^^^ -``list_url`` -^^^^^^^^^^^^ - -When spack tries to find available versions of packages (e.g. with -:ref:`cmd-spack-checksum`), it spiders the parent directory -of the tarball in the ``url`` attribute. For example, for libelf, the -url is: - -.. code-block:: python - - url = "http://www.mr511.de/software/libelf-0.8.13.tar.gz" - -Here, Spack spiders ``http://www.mr511.de/software/`` to find similar -tarball links and ultimately to make a list of available versions of -``libelf``. - -For many packages, the tarball's parent directory may be unlistable, -or it may not contain any links to source code archives. In fact, -many times additional package downloads aren't even available in the -same directory as the download URL. - -For these, you can specify a separate ``list_url`` indicating the page -to search for tarballs. For example, ``libdwarf`` has the homepage as -the ``list_url``, because that is where links to old versions are: - -.. code-block:: python - :linenos: - - class Libdwarf(Package): - homepage = "http://www.prevanders.net/dwarf.html" - url = "http://www.prevanders.net/libdwarf-20130729.tar.gz" - list_url = homepage - -.. _attribute_list_depth: - -^^^^^^^^^^^^^^ -``list_depth`` -^^^^^^^^^^^^^^ - -``libdwarf`` and many other packages have a listing of available -versions on a single webpage, but not all do. For example, ``mpich`` -has a tarball URL that looks like this: - -.. code-block:: python - - url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz" - -But its downloads are in many different subdirectories of -``http://www.mpich.org/static/downloads/``. So, we need to add a -``list_url`` *and* a ``list_depth`` attribute: - -.. code-block:: python - :linenos: - - class Mpich(Package): - homepage = "http://www.mpich.org" - url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz" - list_url = "http://www.mpich.org/static/downloads/" - list_depth = 2 - -By default, Spack only looks at the top-level page available at -``list_url``. ``list_depth`` tells it to follow up to 2 levels of -links from the top-level page. Note that here, this implies two -levels of subdirectories, as the ``mpich`` website is structured much -like a filesystem. But ``list_depth`` really refers to link depth -when spidering the page. - .. _attribute_parallel: --------------- diff --git a/lib/spack/spack/cmd/url.py b/lib/spack/spack/cmd/url.py new file mode 100644 index 00000000000..6823f0febd1 --- /dev/null +++ b/lib/spack/spack/cmd/url.py @@ -0,0 +1,319 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from __future__ import division, print_function + +from collections import defaultdict + +import spack + +from llnl.util import tty +from spack.url import * +from spack.util.web import find_versions_of_archive + +description = "debugging tool for url parsing" + + +def setup_parser(subparser): + sp = subparser.add_subparsers(metavar='SUBCOMMAND', dest='subcommand') + + # Parse + parse_parser = sp.add_parser('parse', help='attempt to parse a url') + + parse_parser.add_argument( + 'url', + help='url to parse') + parse_parser.add_argument( + '-s', '--spider', action='store_true', + help='spider the source page for versions') + + # List + list_parser = sp.add_parser('list', help='list urls in all packages') + + list_parser.add_argument( + '-c', '--color', action='store_true', + help='color the parsed version and name in the urls shown ' + '(versions will be cyan, name red)') + list_parser.add_argument( + '-e', '--extrapolation', action='store_true', + help='color the versions used for extrapolation as well ' + '(additional versions will be green, names magenta)') + + excl_args = list_parser.add_mutually_exclusive_group() + + excl_args.add_argument( + '-n', '--incorrect-name', action='store_true', + help='only list urls for which the name was incorrectly parsed') + excl_args.add_argument( + '-v', '--incorrect-version', action='store_true', + help='only list urls for which the version was incorrectly parsed') + + # Test + sp.add_parser( + 'test', help='print a summary of how well we are parsing package urls') + + +def url(parser, args): + action = { + 'parse': url_parse, + 'list': url_list, + 'test': url_test + } + + action[args.subcommand](args) + + +def url_parse(args): + url = args.url + + tty.msg('Parsing URL: {0}'.format(url)) + print() + + ver, vs, vl, vi, vregex = parse_version_offset(url) + tty.msg('Matched version regex {0:>2}: r{1!r}'.format(vi, vregex)) + + name, ns, nl, ni, nregex = parse_name_offset(url, ver) + tty.msg('Matched name regex {0:>2}: r{1!r}'.format(ni, nregex)) + + print() + tty.msg('Detected:') + try: + print_name_and_version(url) + except UrlParseError as e: + tty.error(str(e)) + + print(' name: {0}'.format(name)) + print(' version: {0}'.format(ver)) + print() + + tty.msg('Substituting version 9.9.9b:') + newurl = substitute_version(url, '9.9.9b') + print_name_and_version(newurl) + + if args.spider: + print() + tty.msg('Spidering for versions:') + versions = find_versions_of_archive(url) + + max_len = max(len(str(v)) for v in versions) + + for v in sorted(versions): + print('{0:{1}} {2}'.format(v, max_len, versions[v])) + + +def url_list(args): + urls = set() + + # Gather set of URLs from all packages + for pkg in spack.repo.all_packages(): + url = getattr(pkg.__class__, 'url', None) + urls = url_list_parsing(args, urls, url, pkg) + + for params in pkg.versions.values(): + url = params.get('url', None) + urls = url_list_parsing(args, urls, url, pkg) + + # Print URLs + for url in sorted(urls): + if args.color or args.extrapolation: + print(color_url(url, subs=args.extrapolation, errors=True)) + else: + print(url) + + # Return the number of URLs that were printed, only for testing purposes + return len(urls) + + +def url_test(args): + # Collect statistics on how many URLs were correctly parsed + total_urls = 0 + correct_names = 0 + correct_versions = 0 + + # Collect statistics on which regexes were matched and how often + name_regex_dict = dict() + name_count_dict = defaultdict(int) + version_regex_dict = dict() + version_count_dict = defaultdict(int) + + tty.msg('Generating a summary of URL parsing in Spack...') + + # Loop through all packages + for pkg in spack.repo.all_packages(): + urls = set() + + url = getattr(pkg.__class__, 'url', None) + if url: + urls.add(url) + + for params in pkg.versions.values(): + url = params.get('url', None) + if url: + urls.add(url) + + # Calculate statistics + for url in urls: + total_urls += 1 + + # Parse versions + version = None + try: + version, vs, vl, vi, vregex = parse_version_offset(url) + version_regex_dict[vi] = vregex + version_count_dict[vi] += 1 + if version_parsed_correctly(pkg, version): + correct_versions += 1 + except UndetectableVersionError: + pass + + # Parse names + try: + name, ns, nl, ni, nregex = parse_name_offset(url, version) + name_regex_dict[ni] = nregex + name_count_dict[ni] += 1 + if name_parsed_correctly(pkg, name): + correct_names += 1 + except UndetectableNameError: + pass + + print() + print(' Total URLs found: {0}'.format(total_urls)) + print(' Names correctly parsed: {0:>4}/{1:>4} ({2:>6.2%})'.format( + correct_names, total_urls, correct_names / total_urls)) + print(' Versions correctly parsed: {0:>4}/{1:>4} ({2:>6.2%})'.format( + correct_versions, total_urls, correct_versions / total_urls)) + print() + + tty.msg('Statistics on name regular expresions:') + + print() + print(' Index Count Regular Expresion') + for ni in name_regex_dict: + print(' {0:>3}: {1:>6} r{2!r}'.format( + ni, name_count_dict[ni], name_regex_dict[ni])) + print() + + tty.msg('Statistics on version regular expresions:') + + print() + print(' Index Count Regular Expresion') + for vi in version_regex_dict: + print(' {0:>3}: {1:>6} r{2!r}'.format( + vi, version_count_dict[vi], version_regex_dict[vi])) + print() + + # Return statistics, only for testing purposes + return (total_urls, correct_names, correct_versions, + name_count_dict, version_count_dict) + + +def print_name_and_version(url): + """Prints a URL. Underlines the detected name with dashes and + the detected version with tildes. + + :param str url: The url to parse + """ + name, ns, nl, ntup, ver, vs, vl, vtup = substitution_offsets(url) + underlines = [' '] * max(ns + nl, vs + vl) + for i in range(ns, ns + nl): + underlines[i] = '-' + for i in range(vs, vs + vl): + underlines[i] = '~' + + print(' {0}'.format(url)) + print(' {0}'.format(''.join(underlines))) + + +def url_list_parsing(args, urls, url, pkg): + """Helper function for :func:`url_list`. + + :param argparse.Namespace args: The arguments given to ``spack url list`` + :param set urls: List of URLs that have already been added + :param url: A URL to potentially add to ``urls`` depending on ``args`` + :type url: str or None + :param spack.package.PackageBase pkg: The Spack package + :returns: The updated ``urls`` list + :rtype: set + """ + if url: + if args.incorrect_name: + # Only add URLs whose name was incorrectly parsed + try: + name = parse_name(url) + if not name_parsed_correctly(pkg, name): + urls.add(url) + except UndetectableNameError: + urls.add(url) + elif args.incorrect_version: + # Only add URLs whose version was incorrectly parsed + try: + version = parse_version(url) + if not version_parsed_correctly(pkg, version): + urls.add(url) + except UndetectableVersionError: + urls.add(url) + else: + urls.add(url) + + return urls + + +def name_parsed_correctly(pkg, name): + """Determine if the name of a package was correctly parsed. + + :param spack.package.PackageBase pkg: The Spack package + :param str name: The name that was extracted from the URL + :returns: True if the name was correctly parsed, else False + :rtype: bool + """ + pkg_name = pkg.name + + # After determining a name, `spack create` determines a build system. + # Some build systems prepend a special string to the front of the name. + # Since this can't be guessed from the URL, it would be unfair to say + # that these names are incorrectly parsed, so we remove them. + if pkg_name.startswith('r-'): + pkg_name = pkg_name[2:] + elif pkg_name.startswith('py-'): + pkg_name = pkg_name[3:] + elif pkg_name.startswith('octave-'): + pkg_name = pkg_name[7:] + + return name == pkg_name + + +def version_parsed_correctly(pkg, version): + """Determine if the version of a package was correctly parsed. + + :param spack.package.PackageBase pkg: The Spack package + :param str version: The version that was extracted from the URL + :returns: True if the name was correctly parsed, else False + :rtype: bool + """ + # If the version parsed from the URL is listed in a version() + # directive, we assume it was correctly parsed + for pkg_version in pkg.versions: + if str(pkg_version) == str(version): + return True + return False diff --git a/lib/spack/spack/cmd/url_parse.py b/lib/spack/spack/cmd/url_parse.py deleted file mode 100644 index b33d96299fa..00000000000 --- a/lib/spack/spack/cmd/url_parse.py +++ /dev/null @@ -1,79 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, February 1999. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -# conditions of the GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# 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 llnl.util.tty as tty - -import spack -import spack.url -from spack.util.web import find_versions_of_archive - -description = "show parsing of a URL, optionally spider web for versions" - - -def setup_parser(subparser): - subparser.add_argument('url', help="url of a package archive") - subparser.add_argument( - '-s', '--spider', action='store_true', - help="spider the source page for versions") - - -def print_name_and_version(url): - name, ns, nl, ntup, ver, vs, vl, vtup = spack.url.substitution_offsets(url) - underlines = [" "] * max(ns + nl, vs + vl) - for i in range(ns, ns + nl): - underlines[i] = '-' - for i in range(vs, vs + vl): - underlines[i] = '~' - - print " %s" % url - print " %s" % ''.join(underlines) - - -def url_parse(parser, args): - url = args.url - - ver, vs, vl = spack.url.parse_version_offset(url, debug=True) - name, ns, nl = spack.url.parse_name_offset(url, ver, debug=True) - print - - tty.msg("Detected:") - try: - print_name_and_version(url) - except spack.url.UrlParseError as e: - tty.error(str(e)) - - print ' name: %s' % name - print ' version: %s' % ver - - print - tty.msg("Substituting version 9.9.9b:") - newurl = spack.url.substitute_version(url, '9.9.9b') - print_name_and_version(newurl) - - if args.spider: - print - tty.msg("Spidering for versions:") - versions = find_versions_of_archive(url) - for v in sorted(versions): - print "%-20s%s" % (v, versions[v]) diff --git a/lib/spack/spack/cmd/urls.py b/lib/spack/spack/cmd/urls.py deleted file mode 100644 index 4ff23e69c14..00000000000 --- a/lib/spack/spack/cmd/urls.py +++ /dev/null @@ -1,59 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, February 1999. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -# conditions of the GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# 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 spack -import spack.url - -description = "inspect urls used by packages in spack" - - -def setup_parser(subparser): - subparser.add_argument( - '-c', '--color', action='store_true', - help="color the parsed version and name in the urls shown. " - "version will be cyan, name red") - subparser.add_argument( - '-e', '--extrapolation', action='store_true', - help="color the versions used for extrapolation as well. " - "additional versions are green, names magenta") - - -def urls(parser, args): - urls = set() - for pkg in spack.repo.all_packages(): - url = getattr(pkg.__class__, 'url', None) - if url: - urls.add(url) - - for params in pkg.versions.values(): - url = params.get('url', None) - if url: - urls.add(url) - - for url in sorted(urls): - if args.color or args.extrapolation: - print spack.url.color_url( - url, subs=args.extrapolation, errors=True) - else: - print url diff --git a/lib/spack/spack/test/cmd/url.py b/lib/spack/spack/test/cmd/url.py new file mode 100644 index 00000000000..4c60d814cea --- /dev/null +++ b/lib/spack/spack/test/cmd/url.py @@ -0,0 +1,116 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 argparse +import pytest + +from spack.cmd.url import * + + +@pytest.fixture(scope='module') +def parser(): + """Returns the parser for the ``url`` command""" + parser = argparse.ArgumentParser() + setup_parser(parser) + return parser + + +class MyPackage: + def __init__(self, name, versions): + self.name = name + self.versions = versions + + +def test_name_parsed_correctly(): + # Expected True + assert name_parsed_correctly(MyPackage('netcdf', []), 'netcdf') + assert name_parsed_correctly(MyPackage('r-devtools', []), 'devtools') + assert name_parsed_correctly(MyPackage('py-numpy', []), 'numpy') + assert name_parsed_correctly(MyPackage('octave-splines', []), 'splines') + + # Expected False + assert not name_parsed_correctly(MyPackage('', []), 'hdf5') + assert not name_parsed_correctly(MyPackage('hdf5', []), '') + assert not name_parsed_correctly(MyPackage('imagemagick', []), 'ImageMagick') # noqa + assert not name_parsed_correctly(MyPackage('yaml-cpp', []), 'yamlcpp') + assert not name_parsed_correctly(MyPackage('yamlcpp', []), 'yaml-cpp') + assert not name_parsed_correctly(MyPackage('r-py-parser', []), 'parser') + assert not name_parsed_correctly(MyPackage('oce', []), 'oce-0.18.0') # noqa + + +def test_version_parsed_correctly(): + # Expected True + assert version_parsed_correctly(MyPackage('', ['1.2.3']), '1.2.3') + assert version_parsed_correctly(MyPackage('', ['5.4a', '5.4b']), '5.4a') + assert version_parsed_correctly(MyPackage('', ['5.4a', '5.4b']), '5.4b') + + # Expected False + assert not version_parsed_correctly(MyPackage('', []), '1.2.3') + assert not version_parsed_correctly(MyPackage('', ['1.2.3']), '') + assert not version_parsed_correctly(MyPackage('', ['1.2.3']), '1.2.4') + assert not version_parsed_correctly(MyPackage('', ['3.4a']), '3.4') + assert not version_parsed_correctly(MyPackage('', ['3.4']), '3.4b') + assert not version_parsed_correctly(MyPackage('', ['0.18.0']), 'oce-0.18.0') # noqa + + +def test_url_parse(parser): + args = parser.parse_args(['parse', 'http://zlib.net/fossils/zlib-1.2.10.tar.gz']) + url(parser, args) + + +@pytest.mark.xfail +def test_url_parse_xfail(parser): + # No version in URL + args = parser.parse_args(['parse', 'http://www.netlib.org/voronoi/triangle.zip']) + url(parser, args) + + +def test_url_list(parser): + args = parser.parse_args(['list']) + total_urls = url_list(args) + + # The following two options should not change the number of URLs printed. + args = parser.parse_args(['list', '--color', '--extrapolation']) + colored_urls = url_list(args) + assert colored_urls == total_urls + + # The following two options should print fewer URLs than the default. + # If they print the same number of URLs, something is horribly broken. + # If they say we missed 0 URLs, something is probably broken too. + args = parser.parse_args(['list', '--incorrect-name']) + incorrect_name_urls = url_list(args) + assert 0 < incorrect_name_urls < total_urls + + args = parser.parse_args(['list', '--incorrect-version']) + incorrect_version_urls = url_list(args) + assert 0 < incorrect_version_urls < total_urls + + +def test_url_test(parser): + args = parser.parse_args(['test']) + (total_urls, correct_names, correct_versions, + name_count_dict, version_count_dict) = url_test(args) + + assert 0 < correct_names <= sum(name_count_dict.values()) <= total_urls # noqa + assert 0 < correct_versions <= sum(version_count_dict.values()) <= total_urls # noqa diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 93c443fde8d..65f8e12e58f 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -28,17 +28,17 @@ download location of the package, and figure out version and name information from there. -Example: when spack is given the following URL: +**Example:** when spack is given the following URL: - ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz + https://www.hdfgroup.org/ftp/HDF/releases/HDF4.2.12/src/hdf-4.2.12.tar.gz -It can figure out that the package name is ruby, and that it is at version -1.9.1-p243. This is useful for making the creation of packages simple: a user +It can figure out that the package name is ``hdf``, and that it is at version +``4.2.12``. This is useful for making the creation of packages simple: a user just supplies a URL and skeleton code is generated automatically. -Spack can also figure out that it can most likely download 1.8.1 at this URL: +Spack can also figure out that it can most likely download 4.2.6 at this URL: - ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.8.1.tar.gz + https://www.hdfgroup.org/ftp/HDF/releases/HDF4.2.6/src/hdf-4.2.6.tar.gz This is useful if a user asks for a package at a particular version number; spack doesn't need anyone to tell it where to get the tarball even though @@ -104,24 +104,23 @@ def strip_query_and_fragment(path): def split_url_extension(path): """Some URLs have a query string, e.g.: - 1. https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true - 2. http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz - 3. https://gitlab.kitware.com/vtk/vtk/repository/archive.tar.bz2?ref=v7.0.0 + 1. https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true + 2. http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz + 3. https://gitlab.kitware.com/vtk/vtk/repository/archive.tar.bz2?ref=v7.0.0 - In (1), the query string needs to be stripped to get at the - extension, but in (2) & (3), the filename is IN a single final query - argument. + In (1), the query string needs to be stripped to get at the + extension, but in (2) & (3), the filename is IN a single final query + argument. - This strips the URL into three pieces: prefix, ext, and suffix. - The suffix contains anything that was stripped off the URL to - get at the file extension. In (1), it will be '?raw=true', but - in (2), it will be empty. In (3) the suffix is a parameter that follows - after the file extension, e.g.: + This strips the URL into three pieces: ``prefix``, ``ext``, and ``suffix``. + The suffix contains anything that was stripped off the URL to + get at the file extension. In (1), it will be ``'?raw=true'``, but + in (2), it will be empty. In (3) the suffix is a parameter that follows + after the file extension, e.g.: - 1. ('https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7', '.tgz', '?raw=true') - 2. ('http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin', - '.tar.gz', None) - 3. ('https://gitlab.kitware.com/vtk/vtk/repository/archive', '.tar.bz2', '?ref=v7.0.0') + 1. ``('https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7', '.tgz', '?raw=true')`` + 2. ``('http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin', '.tar.gz', None)`` + 3. ``('https://gitlab.kitware.com/vtk/vtk/repository/archive', '.tar.bz2', '?ref=v7.0.0')`` """ prefix, ext, suffix = path, '', '' @@ -149,7 +148,7 @@ def determine_url_file_extension(path): """This returns the type of archive a URL refers to. This is sometimes confusing because of URLs like: - (1) https://github.com/petdance/ack/tarball/1.93_02 + (1) https://github.com/petdance/ack/tarball/1.93_02 Where the URL doesn't actually contain the filename. We need to know what type it is so that we can appropriately name files @@ -166,19 +165,44 @@ def determine_url_file_extension(path): return ext -def parse_version_offset(path, debug=False): - """Try to extract a version string from a filename or URL. This is taken - largely from Homebrew's Version class.""" +def parse_version_offset(path): + """Try to extract a version string from a filename or URL. + + :param str path: The filename or URL for the package + + :return: A tuple containing: + version of the package, + first index of version, + length of version string, + the index of the matching regex + the matching regex + + :rtype: tuple + + :raises UndetectableVersionError: If the URL does not match any regexes + """ original_path = path + # path: The prefix of the URL, everything before the ext and suffix + # ext: The file extension + # suffix: Any kind of query string that begins with a '?' path, ext, suffix = split_url_extension(path) - # Allow matches against the basename, to avoid including parent - # dirs in version name Remember the offset of the stem in the path + # stem: Everything from path after the final '/' stem = os.path.basename(path) offset = len(path) - len(stem) - version_types = [ + # List of the following format: + # + # [ + # (regex, string), + # ... + # ] + # + # The first regex that matches string will be used to determine + # the version of the package. Thefore, hyperspecific regexes should + # come first while generic, catch-all regexes should come last. + version_regexes = [ # GitHub tarballs, e.g. v1.2.3 (r'github.com/.+/(?:zip|tar)ball/v?((\d+\.)+\d+)$', path), @@ -258,16 +282,13 @@ def parse_version_offset(path, debug=False): (r'\/(\d\.\d+)\/', path), # e.g. http://www.ijg.org/files/jpegsrc.v8d.tar.gz - (r'\.v(\d+[a-z]?)', stem)] + (r'\.v(\d+[a-z]?)', stem) + ] - for i, vtype in enumerate(version_types): - regex, match_string = vtype + for i, version_regex in enumerate(version_regexes): + regex, match_string = version_regex match = re.search(regex, match_string) if match and match.group(1) is not None: - if debug: - tty.msg("Parsing URL: %s" % path, - " Matched regex %d: r'%s'" % (i, regex)) - version = match.group(1) start = match.start(1) @@ -275,30 +296,74 @@ def parse_version_offset(path, debug=False): if match_string is stem: start += offset - return version, start, len(version) + return version, start, len(version), i, regex raise UndetectableVersionError(original_path) -def parse_version(path, debug=False): - """Given a URL or archive name, extract a version from it and return - a version object. +def parse_version(path): + """Try to extract a version string from a filename or URL. + + :param str path: The filename or URL for the package + + :return: The version of the package + :rtype: spack.version.Version + + :raises UndetectableVersionError: If the URL does not match any regexes """ - ver, start, l = parse_version_offset(path, debug=debug) - return Version(ver) + version, start, length, i, regex = parse_version_offset(path) + return Version(version) -def parse_name_offset(path, v=None, debug=False): +def parse_name_offset(path, v=None): + """Try to determine the name of a package from its filename or URL. + + :param str path: The filename or URL for the package + :param str v: The version of the package + + :return: A tuple containing: + name of the package, + first index of name, + length of name, + the index of the matching regex + the matching regex + + :rtype: tuple + + :raises UndetectableNameError: If the URL does not match any regexes + """ + original_path = path + + # We really need to know the version of the package + # This helps us prevent collisions between the name and version if v is None: - v = parse_version(path, debug=debug) + try: + v = parse_version(path) + except UndetectableVersionError: + # Not all URLs contain a version. We still want to be able + # to determine a name if possible. + v = '' + # path: The prefix of the URL, everything before the ext and suffix + # ext: The file extension + # suffix: Any kind of query string that begins with a '?' path, ext, suffix = split_url_extension(path) - # Allow matching with either path or stem, as with the version. + # stem: Everything from path after the final '/' stem = os.path.basename(path) offset = len(path) - len(stem) - name_types = [ + # List of the following format: + # + # [ + # (regex, string), + # ... + # ] + # + # The first regex that matches string will be used to determine + # the name of the package. Thefore, hyperspecific regexes should + # come first while generic, catch-all regexes should come last. + name_regexes = [ (r'/sourceforge/([^/]+)/', path), (r'github.com/[^/]+/[^/]+/releases/download/%s/(.*)-%s$' % (v, v), path), @@ -316,10 +381,11 @@ def parse_name_offset(path, v=None, debug=False): (r'/([^/]+)%s' % v, path), (r'^([^/]+)[_.-]v?%s' % v, path), - (r'^([^/]+)%s' % v, path)] + (r'^([^/]+)%s' % v, path) + ] - for i, name_type in enumerate(name_types): - regex, match_string = name_type + for i, name_regex in enumerate(name_regexes): + regex, match_string = name_regex match = re.search(regex, match_string) if match: name = match.group(1) @@ -333,17 +399,38 @@ def parse_name_offset(path, v=None, debug=False): name = name.lower() name = re.sub('[_.]', '-', name) - return name, start, len(name) + return name, start, len(name), i, regex - raise UndetectableNameError(path) + raise UndetectableNameError(original_path) def parse_name(path, ver=None): - name, start, l = parse_name_offset(path, ver) + """Try to determine the name of a package from its filename or URL. + + :param str path: The filename or URL for the package + :param str ver: The version of the package + + :return: The name of the package + :rtype: str + + :raises UndetectableNameError: If the URL does not match any regexes + """ + name, start, length, i, regex = parse_name_offset(path, ver) return name def parse_name_and_version(path): + """Try to determine the name of a package and extract its version + from its filename or URL. + + :param str path: The filename or URL for the package + + :return: A tuple containing: + The name of the package + The version of the package + + :rtype: tuple + """ ver = parse_version(path) name = parse_name(path, ver) return (name, ver) @@ -371,12 +458,12 @@ def cumsum(elts, init=0, fn=lambda x: x): def substitution_offsets(path): """This returns offsets for substituting versions and names in the - provided path. It is a helper for substitute_version(). + provided path. It is a helper for :func:`substitute_version`. """ # Get name and version offsets try: - ver, vs, vl = parse_version_offset(path) - name, ns, nl = parse_name_offset(path, ver) + ver, vs, vl, vi, vregex = parse_version_offset(path) + name, ns, nl, ni, nregex = parse_name_offset(path, ver) except UndetectableNameError: return (None, -1, -1, (), ver, vs, vl, (vs,)) except UndetectableVersionError: @@ -444,21 +531,22 @@ def wildcard_version(path): def substitute_version(path, new_version): """Given a URL or archive name, find the version in the path and - substitute the new version for it. Replace all occurrences of - the version *if* they don't overlap with the package name. + substitute the new version for it. Replace all occurrences of + the version *if* they don't overlap with the package name. - Simple example:: - substitute_version('http://www.mr511.de/software/libelf-0.8.13.tar.gz', '2.9.3') - ->'http://www.mr511.de/software/libelf-2.9.3.tar.gz' + Simple example: - Complex examples:: - substitute_version('http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.0.tar.gz', 2.1) - -> 'http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.1.tar.gz' + .. code-block:: python - # In this string, the "2" in mvapich2 is NOT replaced. - substitute_version('http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.tar.gz', 2.1) - -> 'http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.1.tar.gz' + substitute_version('http://www.mr511.de/software/libelf-0.8.13.tar.gz', '2.9.3') + >>> 'http://www.mr511.de/software/libelf-2.9.3.tar.gz' + Complex example: + + .. code-block:: python + + substitute_version('https://www.hdfgroup.org/ftp/HDF/releases/HDF4.2.12/src/hdf-4.2.12.tar.gz', '2.3') + >>> 'https://www.hdfgroup.org/ftp/HDF/releases/HDF2.3/src/hdf-2.3.tar.gz' """ (name, ns, nl, noffs, ver, vs, vl, voffs) = substitution_offsets(path) @@ -477,17 +565,16 @@ def substitute_version(path, new_version): def color_url(path, **kwargs): """Color the parts of the url according to Spack's parsing. - Colors are: - Cyan: The version found by parse_version_offset(). - Red: The name found by parse_name_offset(). + Colors are: + | Cyan: The version found by :func:`parse_version_offset`. + | Red: The name found by :func:`parse_name_offset`. - Green: Instances of version string from substitute_version(). - Magenta: Instances of the name (protected from substitution). - - Optional args: - errors=True Append parse errors at end of string. - subs=True Color substitutions as well as parsed name/version. + | Green: Instances of version string from :func:`substitute_version`. + | Magenta: Instances of the name (protected from substitution). + :param str path: The filename or URL for the package + :keyword bool errors: Append parse errors at end of string. + :keyword bool subs: Color substitutions as well as parsed name/version. """ errors = kwargs.get('errors', False) subs = kwargs.get('subs', False) From 6e729bc333f1e54f98bbe92804996747e3015d5c Mon Sep 17 00:00:00 2001 From: Henrik Bengtsson Date: Tue, 31 Jan 2017 08:26:19 -0800 Subject: [PATCH 0077/2394] DOCS: Examplify what file types are automatically extracted (#2955) --- lib/spack/docs/packaging_guide.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 41d42896360..211e72158c4 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -535,9 +535,9 @@ These links currently redirect back to `pypi.python.org Skipping the expand step ^^^^^^^^^^^^^^^^^^^^^^^^ -Spack normally expands archives automatically after downloading -them. If you want to skip this step (e.g., for self-extracting -executables and other custom archive types), you can add +Spack normally expands archives (e.g. `*.tar.gz` and `*.zip`) automatically +after downloading them. If you want to skip this step (e.g., for +self-extracting executables and other custom archive types), you can add ``expand=False`` to a ``version`` directive. .. code-block:: python From 2ac0bcfcb059914cb79b1a40e261f1f503b4f52d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 31 Jan 2017 10:30:08 -0600 Subject: [PATCH 0078/2394] Add latest version of Xorg util-macros (#2965) --- var/spack/repos/builtin/packages/util-macros/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/util-macros/package.py b/var/spack/repos/builtin/packages/util-macros/package.py index 181302a34a0..1d7515b4cf5 100644 --- a/var/spack/repos/builtin/packages/util-macros/package.py +++ b/var/spack/repos/builtin/packages/util-macros/package.py @@ -31,6 +31,7 @@ class UtilMacros(AutotoolsPackage): of their configure scripts with autoconf.""" homepage = "http://cgit.freedesktop.org/xorg/util/macros/" - url = "https://www.x.org/archive/individual/util/util-macros-1.19.0.tar.bz2" + url = "https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2" + version('1.19.1', '6e76e546a4e580f15cebaf8019ef1625') version('1.19.0', '1cf984125e75f8204938d998a8b6c1e1') From 41c77d7429debad4df86a0bc5382a94173b46700 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 31 Jan 2017 13:35:38 -0600 Subject: [PATCH 0079/2394] Add installcheck phase to AutotoolsPackage (#2863) * Add installcheck phase to AutotoolsPackage * Update installcheck phase with new callbacks API * build_directory has been converted to a property --- lib/spack/spack/build_systems/autotools.py | 12 ++++++++++++ lib/spack/spack/package.py | 21 +++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index af6f5507b23..f0f57b12322 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -84,6 +84,9 @@ class AutotoolsPackage(PackageBase): #: Callback names for build-time test build_time_test_callbacks = ['check'] + #: Callback names for install-time test + install_time_test_callbacks = ['installcheck'] + #: Set to true to force the autoreconf step even if configure is present force_autoreconf = False #: Options to be passed to autoreconf when using the default implementation @@ -288,5 +291,14 @@ def check(self): self._if_make_target_execute('test') self._if_make_target_execute('check') + run_after('install')(PackageBase._run_default_install_time_test_callbacks) + + def installcheck(self): + """Searches the Makefile for an ``installcheck`` target + and runs it if found. + """ + with working_dir(self.build_directory): + self._if_make_target_execute('installcheck') + # Check that self.prefix is there after installation run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 797ae1ff5d5..e5ea8c56add 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1733,6 +1733,27 @@ def _run_default_build_time_test_callbacks(self): msg = 'RUN-TESTS: method not implemented [{0}]' tty.warn(msg.format(name)) + install_time_test_callbacks = None + + @on_package_attributes(run_tests=True) + def _run_default_install_time_test_callbacks(self): + """Tries to call all the methods that are listed in the attribute + ``install_time_test_callbacks`` if ``self.run_tests is True``. + + If ``install_time_test_callbacks is None`` returns immediately. + """ + if self.install_time_test_callbacks is None: + return + + for name in self.install_time_test_callbacks: + try: + fn = getattr(self, name) + tty.msg('RUN-TESTS: install-time tests [{0}]'.format(name)) + fn() + except AttributeError: + msg = 'RUN-TESTS: method not implemented [{0}]' + tty.warn(msg.format(name)) + class Package(PackageBase): """General purpose class with a single ``install`` From 4f297f4336bc09688aee9d876c566f3aaa34e623 Mon Sep 17 00:00:00 2001 From: Henrik Bengtsson Date: Tue, 31 Jan 2017 11:47:20 -0800 Subject: [PATCH 0080/2394] R: Using official cloud URL for CRAN (#2956) cran.r-project.org runs on a single old-school server in Austria and could potentially be overloaded if "everyone" used it. cloud.r-project.org is a cloud-based repository that "automatic redirection to servers worldwide [...]", cf. https://cran.r-project.org/mirrors.html. I assume, that cloud.* can be scale up as needed. Out of the official CRAN mirror, this should be the safest one to pick if a static CRAN mirror is needed. --- var/spack/repos/builtin/packages/r/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 2babb250a56..842affc4cce 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -36,7 +36,7 @@ class R(AutotoolsPackage): Please consult the R project homepage for further information.""" homepage = "https://www.r-project.org" - url = "http://cran.cnr.berkeley.edu/src/base/R-3/R-3.1.2.tar.gz" + url = "https://cloud.r-project.org/src/base/R-3/R-3.3.2.tar.gz" extendable = True From 8275b4471556c3b55bbac75cea748c0496007eb4 Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Tue, 31 Jan 2017 14:51:05 -0500 Subject: [PATCH 0081/2394] Change default fflags for XL compiler to only "-qzerosize" (#2966) --- lib/spack/spack/compilers/xl.py | 8 +------- lib/spack/spack/compilers/xl_r.py | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/lib/spack/spack/compilers/xl.py b/lib/spack/spack/compilers/xl.py index 77a5ed7acd7..686807ae335 100644 --- a/lib/spack/spack/compilers/xl.py +++ b/lib/spack/spack/compilers/xl.py @@ -67,13 +67,7 @@ def fflags(self): # compilers and allows the use of zero size objects. # For Fortran 90 and beyond, it is set by default and has not impact. # Its use has no negative side effects. - # The -qstrict flag allows the Fortran 90+ compilers to parse the - # source files using fixed form rule. As a result, if -qfixed is in - # effect, free form files (that are not also fixed form files) will - # fail to compile regardless of the compiler invocation command. - # Use the -qfree flag in the packages' configuration file to undo the - # -qfixed flag, as the last one wins. - return "-qzerosize -qfixed" + return "-qzerosize" @classmethod def default_version(cls, comp): diff --git a/lib/spack/spack/compilers/xl_r.py b/lib/spack/spack/compilers/xl_r.py index ca76f219ce2..d08e700f420 100644 --- a/lib/spack/spack/compilers/xl_r.py +++ b/lib/spack/spack/compilers/xl_r.py @@ -68,13 +68,7 @@ def fflags(self): # compilers and allows the use of zero size objects. # For Fortran 90 and beyond, it is set by default and has not impact. # Its use has no negative side effects. - # The -qstrict flag allows the Fortran 90+ compilers to parse the - # source files using fixed form rule. As a result, if -qfixed is in - # effect, free form files (that are not also fixed form files) will - # fail to compile regardless of the compiler invocation command. - # Use the -qfree flag in the packages' configuration file to undo the - # -qfixed flag, as the last one wins. - return "-qzerosize -qfixed" + return "-qzerosize" @classmethod def default_version(self, comp): From a08ccbedeede499a568c5c818579320ab41247c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Wed, 1 Feb 2017 03:52:38 +0800 Subject: [PATCH 0082/2394] Patch OpenMPI 2.0.x to fix pmi_opcaddy_t_class issue. (#2962) --- .../openmpi/fix_multidef_pmi_class.patch | 54 +++++++++++++++++++ .../repos/builtin/packages/openmpi/package.py | 1 + 2 files changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/openmpi/fix_multidef_pmi_class.patch diff --git a/var/spack/repos/builtin/packages/openmpi/fix_multidef_pmi_class.patch b/var/spack/repos/builtin/packages/openmpi/fix_multidef_pmi_class.patch new file mode 100644 index 00000000000..28ebd9aeca9 --- /dev/null +++ b/var/spack/repos/builtin/packages/openmpi/fix_multidef_pmi_class.patch @@ -0,0 +1,54 @@ +diff -Naur openmpi-2.0.1.orig/opal/mca/pmix/cray/pmix_cray.c openmpi-2.0.1/opal/mca/pmix/cray/pmix_cray.c +--- openmpi-2.0.1.orig/opal/mca/pmix/cray/pmix_cray.c 2016-08-23 04:56:37.000000000 +0800 ++++ openmpi-2.0.1/opal/mca/pmix/cray/pmix_cray.c 2017-01-31 01:05:34.302807465 +0800 +@@ -6,7 +6,7 @@ + * Copyright (c) 2011-2015 Los Alamos National Security, LLC. All + * rights reserved. + * Copyright (c) 2013-2015 Intel, Inc. All rights reserved. +- * Copyright (c) 2014-2015 Research Organization for Information Science ++ * Copyright (c) 2014-2016 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * +@@ -127,7 +127,7 @@ + opal_pmix_op_cbfunc_t opcbfunc; + void *cbdata; + } pmi_opcaddy_t; +-OBJ_CLASS_INSTANCE(pmi_opcaddy_t, ++static OBJ_CLASS_INSTANCE(pmi_opcaddy_t, + opal_object_t, + NULL, NULL); + +diff -Naur openmpi-2.0.1.orig/opal/mca/pmix/s1/pmix_s1.c openmpi-2.0.1/opal/mca/pmix/s1/pmix_s1.c +--- openmpi-2.0.1.orig/opal/mca/pmix/s1/pmix_s1.c 2016-08-23 04:56:37.000000000 +0800 ++++ openmpi-2.0.1/opal/mca/pmix/s1/pmix_s1.c 2017-01-31 01:06:08.014808847 +0800 +@@ -1,7 +1,7 @@ + /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ + /* + * Copyright (c) 2014-2015 Intel, Inc. All rights reserved. +- * Copyright (c) 2014-2015 Research Organization for Information Science ++ * Copyright (c) 2014-2016 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * +@@ -88,7 +88,7 @@ + opal_pmix_op_cbfunc_t opcbfunc; + void *cbdata; + } pmi_opcaddy_t; +-OBJ_CLASS_INSTANCE(pmi_opcaddy_t, ++static OBJ_CLASS_INSTANCE(pmi_opcaddy_t, + opal_object_t, + NULL, NULL); + +diff -Naur openmpi-2.0.1.orig/opal/mca/pmix/s2/pmix_s2.c openmpi-2.0.1/opal/mca/pmix/s2/pmix_s2.c +--- openmpi-2.0.1.orig/opal/mca/pmix/s2/pmix_s2.c 2016-08-23 04:56:37.000000000 +0800 ++++ openmpi-2.0.1/opal/mca/pmix/s2/pmix_s2.c 2017-01-31 01:06:27.718809655 +0800 +@@ -95,7 +95,7 @@ + opal_pmix_op_cbfunc_t opcbfunc; + void *cbdata; + } pmi_opcaddy_t; +-OBJ_CLASS_INSTANCE(pmi_opcaddy_t, ++static OBJ_CLASS_INSTANCE(pmi_opcaddy_t, + opal_object_t, + NULL, NULL); + diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index bf844b74594..3740923cf09 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -75,6 +75,7 @@ class Openmpi(AutotoolsPackage): patch('ad_lustre_rwcontig_open_source.patch', when="@1.6.5") patch('llnl-platforms.patch', when="@1.6.5") patch('configure.patch', when="@1.10.0:1.10.1") + patch('fix_multidef_pmi_class.patch', when="@2.0.0:2.0.1") # Fabrics variant('psm', default=False, description='Build support for the PSM library') From 95c04f3ab17f77c9e81b68db3e8317a2d9fbf116 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Fri, 3 Feb 2017 14:04:36 -0800 Subject: [PATCH 0083/2394] llvm: add 3.9.1, only download necessary resources (#3015) * llvm: add 3.9.1, only download necessary resources * sacrifice some spaces on the altar of flake8 the vengeful and merciless --- .../repos/builtin/packages/llvm/package.py | 44 +++++++++++++++---- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 06572ea3121..029177cea2b 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -98,46 +98,55 @@ class Llvm(Package): 'url': base_url % {'pkg': 'compiler-rt'}, 'destination': 'projects', 'placement': 'compiler-rt', + 'variant': '+compiler-rt', }, 'openmp': { 'url': base_url % {'pkg': 'openmp'}, 'destination': 'projects', 'placement': 'openmp', + 'variant': '+clang', }, 'libcxx': { 'url': base_url % {'pkg': 'libcxx'}, 'destination': 'projects', 'placement': 'libcxx', + 'variant': '+libcxx', }, 'libcxxabi': { 'url': base_url % {'pkg': 'libcxxabi'}, 'destination': 'projects', 'placement': 'libcxxabi', + 'variant': '+libcxx', }, 'cfe': { 'url': base_url % {'pkg': 'cfe'}, 'destination': 'tools', 'placement': 'clang', + 'variant': '+clang', }, 'clang-tools-extra': { 'url': base_url % {'pkg': 'clang-tools-extra'}, 'destination': 'tools/clang/tools', 'placement': 'extra', + 'variant': '+clang', }, 'lldb': { 'url': base_url % {'pkg': 'lldb'}, 'destination': 'tools', 'placement': 'lldb', + 'variant': '+lldb', }, 'polly': { 'url': base_url % {'pkg': 'polly'}, 'destination': 'tools', 'placement': 'polly', + 'variant': '+polly', }, - 'llvm-libunwind': { + 'libunwind': { 'url': base_url % {'pkg': 'libunwind'}, 'destination': 'projects', 'placement': 'libunwind', + 'variant': '+internal_unwind', }, } releases = [ @@ -153,9 +162,24 @@ class Llvm(Package): 'cfe': 'http://llvm.org/svn/llvm-project/cfe/trunk', 'clang-tools-extra': 'http://llvm.org/svn/llvm-project/clang-tools-extra/trunk', 'lldb': 'http://llvm.org/svn/llvm-project/lldb/trunk', - 'llvm-libunwind': 'http://llvm.org/svn/llvm-project/libunwind/trunk', + 'libunwind': 'http://llvm.org/svn/llvm-project/libunwind/trunk', } }, + { + 'version': '3.9.1', + 'md5': '3259018a7437e157f3642df80f1983ea', + 'resources': { + 'compiler-rt': 'aadc76e7e180fafb10fb729444e287a3', + 'openmp': 'f076916bf2f49229b4df9fa0bb002599', + 'polly': '2cc7fe2bd9539775ba140abfd375bec6', + 'libcxx': '75a3214224301fc543fa6a38bdf7efe0', + 'libcxxabi': '62fd584b38cc502172c2ffab041b5fcc', + 'cfe': '45713ec5c417ed9cad614cd283d786a1', + 'clang-tools-extra': '1a01d545a064fcbc46a2f05f6880d3d7', + 'lldb': '91399402f287d3f637db1207113deecb', + 'libunwind': 'f273dd0ed638ad0601b23176a36f187b', + } + }, { 'version': '3.9.0', 'md5': 'f2093e98060532449eb7d2fcfd0bc6c6', @@ -168,7 +192,7 @@ class Llvm(Package): 'cfe': '29e1d86bee422ab5345f5e9fb808d2dc', 'clang-tools-extra': 'f4f663068c77fc742113211841e94d5e', 'lldb': '968d053c3c3d7297983589164c6999e9', - 'llvm-libunwind': '3e5c87c723a456be599727a444b1c166', + 'libunwind': '3e5c87c723a456be599727a444b1c166', } }, { @@ -183,7 +207,7 @@ class Llvm(Package): 'cfe': '4ff2f8844a786edb0220f490f7896080', 'clang-tools-extra': '6e49f285d0b366cc3cab782d8c92d382', 'lldb': '9e4787b71be8e432fffd31e13ac87623', - 'llvm-libunwind': 'd66e2387e1d37a8a0c8fe6a0063a3bab', + 'libunwind': 'd66e2387e1d37a8a0c8fe6a0063a3bab', } }, { @@ -198,7 +222,7 @@ class Llvm(Package): 'cfe': 'cc99e7019bb74e6459e80863606250c5', 'clang-tools-extra': 'c2344f50e0eea0b402f0092a80ddc036', 'lldb': 'a5da35ed9cc8c8817ee854e3dbfba00e', - 'llvm-libunwind': '162ade468607f153cca12be90b5194fa', + 'libunwind': '162ade468607f153cca12be90b5194fa', } }, { @@ -213,7 +237,7 @@ class Llvm(Package): 'cfe': '0acd026b5529164197563d135a8fd83e', 'clang-tools-extra': '5d49ff745037f061a7c86aeb6a24c3d2', 'lldb': 'a106d8a0d21fc84d76953822fbaf3398', - 'llvm-libunwind': '814bd52c9247c5d04629658fbcb3ab8c', + 'libunwind': '814bd52c9247c5d04629658fbcb3ab8c', } }, { @@ -228,7 +252,7 @@ class Llvm(Package): 'cfe': '8f9d27335e7331cf0a4711e952f21f01', 'clang-tools-extra': 'd5a87dacb65d981a427a536f6964642e', 'lldb': 'e5931740400d1dc3e7db4c7ba2ceff68', - 'llvm-libunwind': '9a75392eb7eb8ed5c0840007e212baf5', + 'libunwind': '9a75392eb7eb8ed5c0840007e212baf5', } }, { @@ -267,7 +291,8 @@ class Llvm(Package): resource(name=name, svn=repo, destination=resources[name]['destination'], - when='@%(version)s' % release, + when='@%s%s' % (release['version'], + resources[name].get('variant', "")), placement=resources[name].get('placement', None)) else: version(release['version'], release['md5'], url=llvm_url % release) @@ -277,7 +302,8 @@ class Llvm(Package): url=resources[name]['url'] % release, md5=md5, destination=resources[name]['destination'], - when='@%(version)s' % release, + when='@%s%s' % (release['version'], + resources[name].get('variant', "")), placement=resources[name].get('placement', None)) def install(self, spec, prefix): From dbb18df3f27cae1b06731eae53a27bde5f6b8277 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 3 Feb 2017 16:10:08 -0600 Subject: [PATCH 0084/2394] Add latest stable Perl release (#2969) --- var/spack/repos/builtin/packages/perl/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index d71a7492bad..ec0837e6a03 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -35,8 +35,9 @@ class Perl(Package): """Perl 5 is a highly capable, feature-rich programming language with over 27 years of development.""" homepage = "http://www.perl.org" - url = "http://www.cpan.org/src/5.0/perl-5.22.2.tar.gz" + url = "http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz" + version('5.24.1', '765ef511b5b87a164e2531403ee16b3c') version('5.24.0', 'c5bf7f3285439a2d3b6a488e14503701') version('5.22.2', '5767e2a10dd62a46d7b57f74a90d952b') version('5.20.3', 'd647d0ea5a7a8194c34759ab9f2610cd') From 0cdbd74b820eafb3e09d9c927eee71294abf0ec1 Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Fri, 3 Feb 2017 17:10:44 -0500 Subject: [PATCH 0085/2394] openmpi (#2988) We just released 2.0.2 yesterday, so add in that release for spack. Don't need the PMI patch for this release. Signed-off-by: Howard Pritchard --- var/spack/repos/builtin/packages/openmpi/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 3740923cf09..562ef22a096 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -63,6 +63,7 @@ class Openmpi(AutotoolsPackage): list_url = "http://www.open-mpi.org/software/ompi/" list_depth = 3 + version('2.0.2', 'ecd99aa436a1ca69ce936a96d6a3fa48') version('2.0.1', '6f78155bd7203039d2448390f3b51c96') version('2.0.0', 'cdacc800cb4ce690c1f1273cb6366674') version('1.10.3', 'e2fe4513200e2aaa1500b762342c674b') From 3d67bf46bafdf95dec84be6876b1489fdb8a7d0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Bederi=C3=A1n?= Date: Fri, 3 Feb 2017 19:15:15 -0300 Subject: [PATCH 0086/2394] Update Tcl/Tk to 8.6.6 (#3002) --- var/spack/repos/builtin/packages/tcl/package.py | 1 + var/spack/repos/builtin/packages/tk/package.py | 1 + 2 files changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index a9bc3cceaab..31678caac6d 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -35,6 +35,7 @@ class Tcl(AutotoolsPackage): extensible.""" homepage = "http://www.tcl.tk" + version('8.6.6', '5193aea8107839a79df8ac709552ecb7') version('8.6.5', '0e6426a4ca9401825fbc6ecf3d89a326') version('8.6.4', 'd7cbb91f1ded1919370a30edd1534304') version('8.6.3', 'db382feca91754b7f93da16dc4cdad1f') diff --git a/var/spack/repos/builtin/packages/tk/package.py b/var/spack/repos/builtin/packages/tk/package.py index 66573eaa451..48fc32ebb97 100644 --- a/var/spack/repos/builtin/packages/tk/package.py +++ b/var/spack/repos/builtin/packages/tk/package.py @@ -34,6 +34,7 @@ class Tk(AutotoolsPackage): and more.""" homepage = "http://www.tcl.tk" + version('8.6.6', 'dd7dbb3a6523c42d05f6ab6e86096e99') version('8.6.5', '11dbbd425c3e0201f20d6a51482ce6c4') version('8.6.3', '85ca4dbf4dcc19777fd456f6ee5d0221') From 0929b23d539e447fa07fd148f40de220754c7a61 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 3 Feb 2017 14:17:33 -0800 Subject: [PATCH 0087/2394] Update git package to include 2.11.1 (#3020) Add git v2.11.1 digest. Built and lightly tested on CentOS 7. --- var/spack/repos/builtin/packages/git/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index c7b239ef122..a0a0879382e 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -33,6 +33,7 @@ class Git(Package): homepage = "http://git-scm.com" url = "https://github.com/git/git/tarball/v2.7.1" + version('2.11.1', '2cf960f19e56f27248816809ae896794') version('2.11.0', 'c63fb83b86431af96f8e9722ebb3ca01') version('2.9.3', 'b0edfc0f3cb046aec7ed68a4b7282a75') version('2.9.2', '3ff8a9b30fd5c99a02e6d6585ab543fc') From d7c816386a6781a8c3a53f1529f14e6319046aeb Mon Sep 17 00:00:00 2001 From: Mayeul d'Avezac Date: Fri, 3 Feb 2017 22:20:41 +0000 Subject: [PATCH 0088/2394] Add new versions of catch (#3016) --- var/spack/repos/builtin/packages/catch/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/catch/package.py b/var/spack/repos/builtin/packages/catch/package.py index 8d2b0a1b243..880d0f88b57 100644 --- a/var/spack/repos/builtin/packages/catch/package.py +++ b/var/spack/repos/builtin/packages/catch/package.py @@ -31,6 +31,13 @@ class Catch(Package): homepage = "https://github.com/philsquared/Catch" url = "https://github.com/philsquared/Catch/archive/v1.3.0.tar.gz" + version('1.7.0', 'fe39f5b3eb07a5dd0e3f84a1335ceca7de8982e6') + version('1.6.1', '7d46961a3131655b986123f8a1f439a04a0af623') + version('1.6.0', '890a3b21085d796e13c3bfaf4b6c6f1d06e4a52e') + version('1.5.9', '8bc32146a5a2789cd3d3ce2893772e32f412f1b1') + version('1.5.0', 'c87397846ea5126febd39f513b413e32f9ed552b') + version('1.4.0', 'c165406968fbfb46949885da571cd528c62c4d9a') + version('1.3.5', '31553ba6e4bd0cc61e0507d6754847e354699284') version('1.3.0', 'e13694aaff72817d02af8ed27d077cd261b6e857') def install(self, spec, prefix): From 10d36ee34339cfc3130b0959d81eb0675ecbc820 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 3 Feb 2017 14:21:14 -0800 Subject: [PATCH 0089/2394] Fetch tarballs from ant archive dir. (#2997) There was a new release of Ant (1.9.8) which led to the v1.9.7 tarball disappearing. This changes the URL to Ant's archive dir, which seems to contain *everything* including the two current releases (1.9.8 and 1.10.0) It adds a digest for 1.9.8. It adds and comments out a digest for 1.10.0 (which requires Java 8), as I have not tested it. --- var/spack/repos/builtin/packages/ant/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/ant/package.py b/var/spack/repos/builtin/packages/ant/package.py index 81a0e089e5b..19f03e1e536 100644 --- a/var/spack/repos/builtin/packages/ant/package.py +++ b/var/spack/repos/builtin/packages/ant/package.py @@ -32,9 +32,12 @@ class Ant(Package): """ homepage = "http://ant.apache.org/" - url = "http://apache.claz.org/ant/source/apache-ant-1.9.7-src.tar.gz" + url = "https://archive.apache.org/dist/ant/source/apache-ant-1.9.7-src.tar.gz" - version('1.9.7', 'a2fd9458c76700b7be51ef12f07d4bb1') + # 1.10.0 requires newer Java, not yet tested.... + # version('1.10.0', '2260301bb7734e34d8b96f1a5fd7979c') + version('1.9.8', '16253d516d5c33c4af9ef8fafcf1004b') + version('1.9.7', 'a2fd9458c76700b7be51ef12f07d4bb1') depends_on('jdk') From 6c1b19f394ec3ef8959deb9d63e1cdd3a3a3f2c1 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 3 Feb 2017 14:22:50 -0800 Subject: [PATCH 0090/2394] Ocaml fails as an AutotoolsPackage (#2995) Switch the ocaml install bit back to being a Package with its own little install method. This fix allows me to build Unison on CentOS 7. --- var/spack/repos/builtin/packages/ocaml/package.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/ocaml/package.py b/var/spack/repos/builtin/packages/ocaml/package.py index 855e2d7b3bc..75c19ec7c61 100644 --- a/var/spack/repos/builtin/packages/ocaml/package.py +++ b/var/spack/repos/builtin/packages/ocaml/package.py @@ -25,7 +25,7 @@ from spack import * -class Ocaml(AutotoolsPackage): +class Ocaml(Package): """OCaml is an industrial strength programming language supporting functional, imperative and object-oriented styles""" @@ -36,4 +36,8 @@ class Ocaml(AutotoolsPackage): depends_on('ncurses') - build_targets = ['world.opt'] + def install(self, spec, prefix): + configure('-prefix', '{0}'.format(prefix)) + + make('world.opt') + make('install') From acb9281dbf41c30535d18a9adb432e218b1f22b3 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 3 Feb 2017 14:35:16 -0800 Subject: [PATCH 0091/2394] Different versions of cmake need diff vers of openssl (#2993) * Different versions of cmake need diff vers of openssl. See Issue https://github.com/LLNL/spack/issues/2990 for background. Versions of cmake through 3.6.9 seem to need OpenSSL up to 1.0.99. Later versions can use the current release (thanks to @citibeth for [digging up details](https://cmake.org/pipermail/cmake/2016-November/064631.html)). @davydden suggested this change. Without it I *am not* able to build `cmake@3.6.1` on CentOS 7 and I *am* able to build `cmake@3.7.2`. Tested with `cmake@3.7.2` and `cmake@3.6.1` on CentOS 7. With this change I am able to build both `cmake@3.6.1` and `cmake@3.7.2` on CentOS 7. --- var/spack/repos/builtin/packages/cmake/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 276db137ad9..4ff9615016b 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -63,7 +63,8 @@ class Cmake(Package): depends_on('qt', when='+qt') depends_on('python@2.7.11:', when='+doc', type='build') depends_on('py-sphinx', when='+doc', type='build') - depends_on('openssl', when='+openssl') + depends_on("openssl", when='+openssl') + depends_on("openssl@:1.0.99", when='@:3.6.9+openssl') depends_on('ncurses', when='+ncurses') # Cannot build with Intel, should be fixed in 3.6.2 From 5a836fd06eb5a0042ce4b245a858a77129703d38 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 3 Feb 2017 15:42:46 -0800 Subject: [PATCH 0092/2394] Blacklist implicit packages for modulefile generation (#2603) Add the ability to the modules generation process to blacklist packages that were installed implicitly. One can still whitelist modules that were installed implicitly. This changes adds a `blacklist_implicts` boolean as a peer to the `whitelist` and `blacklist` arrays, e.g.: ``` modules: enable:: - lmod lmod: whitelist: - 'lua' - 'py-setuptools' blacklist: - '%gcc@4.8.3' blacklist_implicits: True ``` It adds a small helper in `spec.py` and then touches up the package filtering code in `modules.py`. --- lib/spack/spack/modules.py | 12 +++++++++++- lib/spack/spack/spec.py | 10 ++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index 5e2a840e14c..ba220291a05 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -327,6 +327,10 @@ def blacklisted(self): blacklist_matches = [x for x in configuration.get('blacklist', []) if self.spec.satisfies(x)] + blacklist_implicits = configuration.get('blacklist_implicits') + installed_implicitly = not self.spec._installed_explicitly() + blacklisted_as_implicit = blacklist_implicits and installed_implicitly + if whitelist_matches: message = '\tWHITELIST : %s [matches : ' % self.spec.cshort_spec for rule in whitelist_matches: @@ -341,7 +345,13 @@ def blacklisted(self): message += ' ]' tty.debug(message) - if not whitelist_matches and blacklist_matches: + if blacklisted_as_implicit: + message = '\tBLACKLISTED_AS_IMPLICIT : %s' % \ + self.spec.cshort_spec + tty.debug(message) + + is_blacklisted = blacklist_matches or blacklisted_as_implicit + if not whitelist_matches and is_blacklisted: return True return False diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 07e3221ed7a..36806b757df 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2596,6 +2596,16 @@ def _install_status(self): except KeyError: return None + def _installed_explicitly(self): + """Helper for tree to print DB install status.""" + if not self.concrete: + return None + try: + record = spack.store.db.get_record(self) + return record.explicit + except KeyError: + return None + def tree(self, **kwargs): """Prints out this spec and its dependencies, tree-formatted with indentation.""" From b28d8345ec1fbc07493f42cb784a2bd28c7ddde8 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 3 Feb 2017 15:44:26 -0800 Subject: [PATCH 0093/2394] Force particular repo to increase predictability (#2746) The repository used by the texlive installer defaults to a redirector that sends one off to various URLs depending on . This is problematic because all of the mirrors do not update in synchrony and bad tarballs often hang around for a while. This leads to problems that are particularly hard to diagnose because you're likely to end up using a different repo the next time around. This commit constraints the package to a particular, mainstream, repository. It's not fast, but it's consistent and usually correct. It also updates the installer digest, because no day is complete without updating it at least (sigh) once. --- var/spack/repos/builtin/packages/texlive/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/texlive/package.py b/var/spack/repos/builtin/packages/texlive/package.py index a960e5b68df..27f6c4c7166 100644 --- a/var/spack/repos/builtin/packages/texlive/package.py +++ b/var/spack/repos/builtin/packages/texlive/package.py @@ -41,7 +41,7 @@ class Texlive(Package): # digest values, but don't be surprised if this package is # briefly unbuildable. # - version('live', '01461ec2cc49fe0b14812eb67abbea46', + version('live', 'ad230fa814d122084c13d75c0b135fda', url="http://ctan.math.utah.edu/ctan/tex-archive/systems/texlive/tlnet/install-tl-unx.tar.gz") # There does not seem to be a complete list of schemes. @@ -59,9 +59,14 @@ class Texlive(Package): depends_on('perl', type='build') def install(self, spec, prefix): + # Using texlive's mirror system leads to mysterious problems, + # in lieu of being able to specify a repository as a variant, hardwire + # a particular (slow, but central) one for now. + _repository='http://ctan.math.washington.edu/tex-archive/systems/texlive/tlnet/' env = os.environ env['TEXLIVE_INSTALL_PREFIX'] = prefix perl = which('perl') scheme = spec.variants['scheme'].value perl('./install-tl', '-scheme', scheme, + '-repository', _repository, '-portable', '-profile', '/dev/null') From c456dfb60fdcd24448140278f29f0e9d1de95800 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 3 Feb 2017 15:53:30 -0800 Subject: [PATCH 0094/2394] Make module autoload warnings configurable (#2763) Modules generated by the module creation machinery currently print out a notice that warnts the user that things are being autoloaded. In some situations those warnings are problematic. See #2754 for discussion. This is a first cut at optionally disabling the warning messages: - adds a helper tothe EnvModule base class that encapsulates the config file variable; - adds a method to the base class that provides a default (empty) code fragment for generating a warning message; - passes the warning fragment into the bit that formats the autoload string; - adds specialized autload_warner() methods in the tcl and lmod subclasses;; and finally - touches up the autoload_format strings in the specialized classes. --- lib/spack/spack/modules.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index ba220291a05..885f2197eff 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -438,13 +438,20 @@ def header(self): def module_specific_content(self, configuration): return tuple() + # Subclasses can return a fragment of module code that prints out + # a warning that modules are being autoloaded. + def autoload_warner(self): + return '' + def autoload(self, spec): if not isinstance(spec, str): m = type(self)(spec) module_file = m.use_name else: module_file = spec - return self.autoload_format.format(module_file=module_file) + return self.autoload_format.format( + module_file=module_file, + warner=self.autoload_warner().format(module_file=module_file)) def prerequisite(self, spec): m = type(self)(spec) @@ -486,6 +493,10 @@ def remove(self): # removedirs throws OSError on first non-empty directory found pass + def verbose_autoload(self): + configuration = _module_config.get(self.name, {}) + return configuration.get('verbose_autoload', True) + class Dotkit(EnvModule): name = 'dotkit' @@ -537,8 +548,13 @@ class TclModule(EnvModule): path = canonicalize_path( _roots.get(name, join_path(spack.share_path, 'modules'))) + def autoload_warner(self): + if self.verbose_autoload(): + return 'puts stderr "Autoloading {module_file}"\n' + return '' + autoload_format = ('if ![ is-loaded {module_file} ] {{\n' - ' puts stderr "Autoloading {module_file}"\n' + ' {warner}' ' module load {module_file}\n' '}}\n\n') @@ -665,8 +681,13 @@ class LmodModule(EnvModule): UnsetEnv: 'unsetenv("{name}")\n' } + def autoload_warner(self): + if self.verbose_autoload(): + return 'LmodMessage("Autoloading {module_file}")\n' + return '' + autoload_format = ('if not isloaded("{module_file}") then\n' - ' LmodMessage("Autoloading {module_file}")\n' + ' {warner}' ' load("{module_file}")\n' 'end\n\n') From 24553c12bbce5fcd5e1a73581a823cdd5fe319f6 Mon Sep 17 00:00:00 2001 From: sknigh Date: Fri, 3 Feb 2017 17:19:23 -0800 Subject: [PATCH 0095/2394] Flex and Glib builds are dependent on m4 (#3022) --- var/spack/repos/builtin/packages/flex/package.py | 2 +- var/spack/repos/builtin/packages/glib/package.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py index 0314950140f..8f0c46bc56e 100644 --- a/var/spack/repos/builtin/packages/flex/package.py +++ b/var/spack/repos/builtin/packages/flex/package.py @@ -44,7 +44,7 @@ class Flex(AutotoolsPackage): depends_on('help2man', type='build') # Older tarballs don't come with a configure script - depends_on('m4', type='build', when='@:2.6.0') + depends_on('m4', type='build') depends_on('autoconf', type='build', when='@:2.6.0') depends_on('automake', type='build', when='@:2.6.0') depends_on('libtool', type='build', when='@:2.6.0') diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index e2eb984876c..cede9ae0ae8 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -41,6 +41,7 @@ class Glib(AutotoolsPackage): depends_on('autoconf', type='build') depends_on('automake', type='build') depends_on('libtool', type='build') + depends_on('m4', type='build') depends_on('pkg-config+internal_glib', type='build') depends_on('libffi') depends_on('zlib') From 864670c0abc959e94685e45202742656733b5006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sat, 4 Feb 2017 10:07:54 +0800 Subject: [PATCH 0096/2394] Retrive CUDA installers from Internet. (#3012) --- var/spack/repos/builtin/packages/cuda/package.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index ed8518f98fe..f01cf9c7302 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -51,14 +51,14 @@ class Cuda(Package): homepage = "http://www.nvidia.com/object/cuda_home_new.html" version('8.0.44', '6dca912f9b7e2b7569b0074a41713640', expand=False, - url="file://%s/cuda_8.0.44_linux.run" % os.getcwd()) + url="https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda_8.0.44_linux-run") version('7.5.18', '4b3bcecf0dfc35928a0898793cf3e4c6', expand=False, - url="file://%s/cuda_7.5.18_linux.run" % os.getcwd()) + url="http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_7.5.18_linux.run") version('6.5.14', '90b1b8f77313600cc294d9271741f4da', expand=False, - url="file://%s/cuda_6.5.14_linux_64.run" % os.getcwd()) + url="http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda_6.5.14_linux_64.run") def install(self, spec, prefix): - runfile = glob(os.path.join(self.stage.path, 'cuda*.run'))[0] + runfile = glob(os.path.join(self.stage.path, 'cuda*run'))[0] chmod = which('chmod') chmod('+x', runfile) runfile = which(runfile) From 5e2827433cc9702dbeb77c2cda229c36a6d479e0 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 3 Feb 2017 18:09:01 -0800 Subject: [PATCH 0097/2394] Update go to v1.7.5 (#3023) Update the go package to v1.7.5. - This release no longer needs the time-test patch (it's been merged upstream). - This release still seems to need the cgo-testcshared patch. - Also add a comment about environment set up that I need to build it successfully on a very large server. Tested on CentOS 7. --- var/spack/repos/builtin/packages/go/package.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index ad1436c0c37..d0fb40096bc 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -42,6 +42,11 @@ # # - on CentOS 7 systems (and possibly others) you need to have the # glibc package installed or various static cgo tests fail. +# +# - When building on a *large* machine (144 cores, 1.5TB RAM) I need +# to run `ulimit -u 8192` to bump up the max number of user processes. +# Failure to do so results in an explosion in one of the tests and an +# epic stack trace.... class Go(Package): @@ -51,6 +56,7 @@ class Go(Package): extendable = True + version('1.7.5', '506de2d870409e9003e1440bcfeb3a65') version('1.7.4', '49c1076428a5d3b5ad7ac65233fcca2f') version('1.6.4', 'b023240be707b34059d2c114d3465c92') @@ -67,7 +73,7 @@ class Go(Package): patch('time_test.patch', when='@1.6.4:1.7.4') # https://github.com/golang/go/issues/17986 - patch('misc-cgo-testcshared.patch', level=0, when='@1.6.4:1.7.4') + patch('misc-cgo-testcshared.patch', level=0, when='@1.6.4:1.7.5') # NOTE: Older versions of Go attempt to download external files that have # since been moved while running the test suite. This patch modifies the From 4c1c284e569f0e1496e85d7a3462e99b6278fc4f Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 3 Feb 2017 21:09:25 -0500 Subject: [PATCH 0098/2394] =?UTF-8?q?New=20package=20=E2=80=9Ces=E2=80=9D?= =?UTF-8?q?=20(extensible=20shell)=20(#3009)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repos/builtin/packages/es/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/es/package.py diff --git a/var/spack/repos/builtin/packages/es/package.py b/var/spack/repos/builtin/packages/es/package.py new file mode 100644 index 00000000000..80891b66006 --- /dev/null +++ b/var/spack/repos/builtin/packages/es/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Es(AutotoolsPackage): + + """Es is an extensible shell. The language was derived from the Plan 9 + shell, rc, and was influenced by functional programming languages, + such as Scheme, and the Tcl embeddable programming language. This + implementation is derived from Byron Rakitzis's public domain + implementation of rc.""" + + homepage = "http://wryun.github.io/es-shell/" + url = "https://github.com/wryun/es-shell/releases/download/v0.9.1/es-0.9.1.tar.gz" + + version('0.9.1', 'bf4db55b47bcc99892468b2e0aec0c9e') From 384698157a01a1861ee4f4c19e2cbf5d512f03c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Bederi=C3=A1n?= Date: Sat, 4 Feb 2017 04:18:31 +0200 Subject: [PATCH 0099/2394] MKL: Provide scalapack (#2974) --- .../builtin/packages/intel-mkl/package.py | 30 ++++++++++++++++++- .../packages/intel-parallel-studio/package.py | 30 ++++++++++++++++++- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index f369e10d38c..1d7ea1ee898 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -55,8 +55,8 @@ class IntelMkl(IntelInstaller): # virtual dependency provides('blas') provides('lapack') + provides('scalapack') provides('mkl') - # TODO: MKL also provides implementation of Scalapack. @property def blas_libs(self): @@ -83,6 +83,34 @@ def blas_libs(self): def lapack_libs(self): return self.blas_libs + @property + def scalapack_libs(self): + libnames = ['libmkl_scalapack'] + if self.spec.satisfies('^openmpi'): + libnames.append('libmkl_blacs_openmpi') + elif self.spec.satisfies('^mpich@1'): + libnames.append('libmkl_blacs') + elif self.spec.satisfies('^mpich@2:'): + libnames.append('libmkl_blacs_intelmpi') + elif self.spec.satisfies('^mvapich2'): + libnames.append('libmkl_blacs_intelmpi') + elif self.spec.satisfies('^mpt'): + libnames.append('libmkl_blacs_sgimpt') + # TODO: ^intel-parallel-studio can mean intel mpi, a compiler or a lib + # elif self.spec.satisfies('^intel-parallel-studio'): + # libnames.append('libmkl_blacs_intelmpi') + else: + raise InstallError("No MPI found for scalapack") + + shared = True if '+shared' in self.spec else False + integer = 'ilp64' if '+ilp64' in self.spec else 'lp64' + libs = find_libraries( + ['{0}_{1}'.format(l, integer) for l in libnames], + root=join_path(self.prefix.lib, 'intel64'), + shared=shared + ) + return libs + def install(self, spec, prefix): self.intel_prefix = os.path.join(prefix, "pkg") IntelInstaller.install(self, spec, prefix) 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 941ef9befbe..fbafb4fb0d2 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -77,7 +77,7 @@ class IntelParallelStudio(IntelInstaller): # virtual dependency provides('blas', when='+mkl') provides('lapack', when='+mkl') - # TODO: MKL also provides implementation of Scalapack. + provides('scalapack', when='+mkl') @property def blas_libs(self): @@ -104,6 +104,34 @@ def blas_libs(self): def lapack_libs(self): return self.blas_libs + @property + def scalapack_libs(self): + libnames = ['libmkl_scalapack'] + if self.spec.satisfies('^openmpi'): + libnames.append('libmkl_blacs_openmpi') + elif self.spec.satisfies('^mpich@1'): + libnames.append('libmkl_blacs') + elif self.spec.satisfies('^mpich@2:'): + libnames.append('libmkl_blacs_intelmpi') + elif self.spec.satisfies('^mvapich2'): + libnames.append('libmkl_blacs_intelmpi') + elif self.spec.satisfies('^mpt'): + libnames.append('libmkl_blacs_sgimpt') + # TODO: ^intel-parallel-studio can mean intel mpi, a compiler or a lib + # elif self.spec.satisfies('^intel-parallel-studio'): + # libnames.append('libmkl_blacs_intelmpi') + else: + raise InstallError("No MPI found for scalapack") + + shared = True if '+shared' in self.spec else False + integer = 'ilp64' if '+ilp64' in self.spec else 'lp64' + libs = find_libraries( + ['{0}_{1}'.format(l, integer) for l in libnames], + root=join_path(self.prefix, 'mkl', 'lib', 'intel64'), + shared=shared + ) + return libs + def url_for_version(self, version): """Assume the tarball is in the current directory.""" From 5aefaa6ffec851f6b6ed704257a4889efd47837a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Bederi=C3=A1n?= Date: Sat, 4 Feb 2017 04:26:27 +0200 Subject: [PATCH 0100/2394] Add FFTW 2.1.5 (#2987) --- .../repos/builtin/packages/fftw/package.py | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 9b40d10fe0e..e35a1c92c33 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -38,6 +38,7 @@ class Fftw(Package): version('3.3.5', '6cc08a3b9c7ee06fdd5b9eb02e06f569') version('3.3.4', '2edab8c06b24feeb3b82bbb3ebf3e7b3') + version('2.1.5', '8d16a84f3ca02a785ef9eb36249ba433') patch('pfft-3.3.5.patch', when="@3.3.5+pfft_patches", level=0) patch('pfft-3.3.4.patch', when="@3.3.4+pfft_patches", level=0) @@ -62,17 +63,19 @@ class Fftw(Package): depends_on('automake', type='build', when='+pfft_patches') depends_on('autoconf', type='build', when='+pfft_patches') - # TODO : add support for architecture specific optimizations as soon as - # targets are supported - def install(self, spec, prefix): + # Base options options = [ '--prefix={0}'.format(prefix), '--enable-shared', '--enable-threads' ] + if not self.compiler.f77 or not self.compiler.fc: + options.append("--disable-fortran") + if spec.satisfies('@:2'): + options.append('--enable-type-prefix') - # Add support for OpenMP + # Variants that affect every precision if '+openmp' in spec: # Note: Apple's Clang does not support OpenMP. if spec.satisfies('%clang'): @@ -80,40 +83,45 @@ def install(self, spec, prefix): if ver.endswith('-apple'): raise InstallError("Apple's clang does not support OpenMP") options.append('--enable-openmp') - if not self.compiler.f77 or not self.compiler.fc: - options.append("--disable-fortran") + if spec.satisfies('@:2'): + # TODO: libtool strips CFLAGS, so 2.x libxfftw_threads + # isn't linked to the openmp library. Patch Makefile? + options.insert(0, 'CFLAGS=' + self.compiler.openmp_flag) if '+mpi' in spec: options.append('--enable-mpi') - if '+pfft_patches' in spec: autoreconf = which('autoreconf') autoreconf('-ifv') + # SIMD support + # TODO: add support for more architectures float_options = [] double_options = [] - if 'x86_64' in spec.architecture: + if 'x86_64' in spec.architecture and spec.satisfies('@3:'): float_options.append('--enable-sse2') double_options.append('--enable-sse2') + # Build double precision configure(*(options + double_options)) make() if self.run_tests: make("check") make("install") + # Build float/long double/quad variants if '+float' in spec: configure('--enable-float', *(options + float_options)) make() if self.run_tests: make("check") make("install") - if '+long_double' in spec: + if spec.satisfies('@3:+long_double'): configure('--enable-long-double', *options) make() if self.run_tests: make("check") make("install") - if '+quad' in spec: + if spec.satisfies('@3:+quad'): configure('--enable-quad-precision', *options) make() if self.run_tests: From 968199de7d15fa6150c26f94100c19f4202f139b Mon Sep 17 00:00:00 2001 From: becker33 Date: Fri, 3 Feb 2017 18:27:34 -0800 Subject: [PATCH 0101/2394] Fix spec hash printing (#2941) - Fix format printing to match command line for hashes and full name formats - Update spack graph to use new format - Changed format string signifier for hashes from `$#` to `$/` --- lib/spack/spack/cmd/dependents.py | 2 +- lib/spack/spack/cmd/uninstall.py | 2 +- lib/spack/spack/database.py | 2 +- lib/spack/spack/graph.py | 2 +- lib/spack/spack/spec.py | 16 ++++++++-------- lib/spack/spack/test/graph.py | 12 ++++++------ 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index 8c533561e3e..42181b55024 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -45,7 +45,7 @@ def dependents(parser, args): tty.die("spack dependents takes only one spec.") spec = spack.cmd.disambiguate_spec(specs[0]) - tty.msg("Dependents of %s" % spec.format('$_$@$%@$#', color=True)) + tty.msg("Dependents of %s" % spec.format('$_$@$%@$/', color=True)) deps = spack.store.db.installed_dependents(spec) if deps: spack.cmd.display_specs(deps) diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index f8b5408ba14..fb9094f1b4f 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -177,7 +177,7 @@ def get_uninstall_list(args): if dependent_list and not args.dependents and not args.force: for spec, lst in dependent_list.items(): tty.error("Will not uninstall %s" % - spec.format("$_$@$%@$#", color=True)) + spec.format("$_$@$%@$/", color=True)) print('') print("The following packages depend on it:") spack.cmd.display_specs(lst, **display_args) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index ff552233515..d3fc03fb40f 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -239,7 +239,7 @@ def _assign_dependencies(self, hash_key, installs, data): if dhash not in data: tty.warn("Missing dependency not in database: ", "%s needs %s-%s" % ( - spec.format('$_$#'), dname, dhash[:7])) + spec.format('$_$/'), dname, dhash[:7])) continue child = data[dhash].spec diff --git a/lib/spack/spack/graph.py b/lib/spack/spack/graph.py index 7cc2046b9dc..91230263f15 100644 --- a/lib/spack/spack/graph.py +++ b/lib/spack/spack/graph.py @@ -571,7 +571,7 @@ def label(key, label): else: def key_label(s): - return s.dag_hash(), "%s-%s" % (s.name, s.dag_hash(7)) + return s.dag_hash(), "%s/%s" % (s.name, s.dag_hash(7)) for s in spec.traverse(deptype=deptype): skey, slabel = key_label(s) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 36806b757df..0df0ff71ea5 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1145,13 +1145,13 @@ def return_val(dspec): def short_spec(self): """Returns a version of the spec with the dependencies hashed instead of completely enumerated.""" - return self.format('$_$@$%@$+$=$#') + return self.format('$_$@$%@$+$=$/') @property def cshort_spec(self): """Returns a version of the spec with the dependencies hashed instead of completely enumerated.""" - return self.format('$_$@$%@$+$=$#', color=True) + return self.format('$_$@$%@$+$=$/', color=True) @property def prefix(self): @@ -2374,7 +2374,7 @@ def format(self, format_string='$_$@$%@+$+$=', **kwargs): prefixes as above $+ Options $= Architecture prefixed by 'arch=' - $# 7-char prefix of DAG hash with '-' prefix + $/ 7-char prefix of DAG hash with '-' prefix $$ $ You can also use full-string versions, which elide the prefixes:: @@ -2408,7 +2408,7 @@ def format(self, format_string='$_$@$%@+$+$=', **kwargs): of the package, but no dependencies, arch, or compiler. TODO: allow, e.g., ``$6#`` to customize short hash length - TODO: allow, e.g., ``$##`` for full hash. + TODO: allow, e.g., ``$//`` for full hash. """ color = kwargs.get('color', False) length = len(format_string) @@ -2455,8 +2455,8 @@ def write(s, c): if self.architecture and str(self.architecture): a_str = ' arch' + c + str(self.architecture) + ' ' write(fmt % (a_str), c) - elif c == '#': - out.write('-' + fmt % (self.dag_hash(7))) + elif c == '/': + out.write('/' + fmt % (self.dag_hash(7))) elif c == '$': if fmt != '%s': raise ValueError("Can't use format width with $$.") @@ -2529,7 +2529,7 @@ def write(s, c): hashlen = int(hashlen) else: hashlen = None - out.write(fmt % (self.dag_hash(hashlen))) + out.write('/' + fmt % (self.dag_hash(hashlen))) named = False @@ -3161,7 +3161,7 @@ def __init__(self, provided, required): class AmbiguousHashError(SpecError): def __init__(self, msg, *specs): - specs_str = '\n ' + '\n '.join(spec.format('$.$@$%@+$+$=$#') + specs_str = '\n ' + '\n '.join(spec.format('$.$@$%@+$+$=$/') for spec in specs) super(AmbiguousHashError, self).__init__(msg + specs_str) diff --git a/lib/spack/spack/test/graph.py b/lib/spack/spack/test/graph.py index 09dbcd05486..ce7b07ed866 100644 --- a/lib/spack/spack/test/graph.py +++ b/lib/spack/spack/test/graph.py @@ -84,16 +84,16 @@ def test_dynamic_dot_graph_mpileaks(builtin_mock): dot = stream.getvalue() - mpileaks_hash, mpileaks_lbl = s.dag_hash(), s.format('$_$#') - mpi_hash, mpi_lbl = s['mpi'].dag_hash(), s['mpi'].format('$_$#') + mpileaks_hash, mpileaks_lbl = s.dag_hash(), s.format('$_$/') + mpi_hash, mpi_lbl = s['mpi'].dag_hash(), s['mpi'].format('$_$/') callpath_hash, callpath_lbl = ( - s['callpath'].dag_hash(), s['callpath'].format('$_$#')) + s['callpath'].dag_hash(), s['callpath'].format('$_$/')) dyninst_hash, dyninst_lbl = ( - s['dyninst'].dag_hash(), s['dyninst'].format('$_$#')) + s['dyninst'].dag_hash(), s['dyninst'].format('$_$/')) libdwarf_hash, libdwarf_lbl = ( - s['libdwarf'].dag_hash(), s['libdwarf'].format('$_$#')) + s['libdwarf'].dag_hash(), s['libdwarf'].format('$_$/')) libelf_hash, libelf_lbl = ( - s['libelf'].dag_hash(), s['libelf'].format('$_$#')) + s['libelf'].dag_hash(), s['libelf'].format('$_$/')) assert ' "%s" [label="%s"]\n' % (mpileaks_hash, mpileaks_lbl) in dot assert ' "%s" [label="%s"]\n' % (callpath_hash, callpath_lbl) in dot From ccb07dc25efefce017fc40aec3713c3ac8f30199 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Sat, 4 Feb 2017 15:42:22 -0800 Subject: [PATCH 0102/2394] added archer OpenMP race detector and its deps (#3030) --- .../repos/builtin/packages/archer/package.py | 57 ++++++++++++++++++ .../packages/llvm-openmp-ompt/package.py | 60 +++++++++++++++++++ .../repos/builtin/packages/llvm/package.py | 1 + .../repos/builtin/packages/py-lit/package.py | 39 ++++++++++++ 4 files changed, 157 insertions(+) create mode 100644 var/spack/repos/builtin/packages/archer/package.py create mode 100644 var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py create mode 100644 var/spack/repos/builtin/packages/py-lit/package.py diff --git a/var/spack/repos/builtin/packages/archer/package.py b/var/spack/repos/builtin/packages/archer/package.py new file mode 100644 index 00000000000..dd4c27700f4 --- /dev/null +++ b/var/spack/repos/builtin/packages/archer/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Archer(Package): + """ARCHER, a data race detection tool for large OpenMP applications.""" + + homepage = "https://github.com/PRUNERS/ARCHER" + + version('1.0.0b', git='https://github.com/PRUNERS/ARCHER.git', + commit='2cf7ead36358842871d5bd9c33d499f62bf8dd38') + + depends_on('cmake', type='build') + depends_on('llvm+clang~gold') + depends_on('ninja', type='build') + depends_on('llvm-openmp-ompt') + + def install(self, spec, prefix): + + with working_dir('spack-build', create=True): + cmake_args = std_cmake_args[:] + cmake_args.extend([ + '-G', 'Ninja', + '-DCMAKE_C_COMPILER=clang', + '-DCMAKE_CXX_COMPILER=clang++', + '-DOMP_PREFIX:PATH=%s' % spec['llvm-openmp-ompt'].prefix, + '-DLIBOMP_TSAN_SUPPORT=TRUE', + ]) + + cmake('..', *cmake_args) + ninja = Executable('ninja') + ninja() + ninja('install') diff --git a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py new file mode 100644 index 00000000000..1dc1089d685 --- /dev/null +++ b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py @@ -0,0 +1,60 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class LlvmOpenmpOmpt(Package): + """The OpenMP subproject provides an OpenMP runtime for use with the + OpenMP implementation in Clang. This branch includes experimental + changes for OMPT, the OpenMP Tools interface""" + + homepage = "https://github.com/OpenMPToolsInterface/LLVM-openmp" + + # align-to-tr-rebased branch + version('3.9.2b', + git='https://github.com/OpenMPToolsInterface/LLVM-openmp.git', + commit='982a08bcf3df9fb5afc04ac3bada47f19cc4e3d3') + + depends_on('cmake', type='build') + depends_on('llvm+clang~gold') + depends_on('ninja', type='build') + + def install(self, spec, prefix): + + with working_dir('spack-build', create=True): + cmake_args = std_cmake_args[:] + cmake_args.extend([ + '-G', 'Ninja', + '-DCMAKE_C_COMPILER=clang', + '-DCMAKE_CXX_COMPILER=clang++', + '-DCMAKE_BUILD_TYPE=Release', + '-DLIBOMP_TSAN_SUPPORT=TRUE' + ]) + + cmake('..', *cmake_args) + ninja = Executable('ninja') + ninja() + ninja('install') diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 029177cea2b..1da14feb4f4 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -77,6 +77,7 @@ class Llvm(Package): # Universal dependency depends_on('python@2.7:2.8') # Seems not to support python 3.X.Y + depends_on('py-lit') # lldb dependencies depends_on('ncurses', when='+lldb') diff --git a/var/spack/repos/builtin/packages/py-lit/package.py b/var/spack/repos/builtin/packages/py-lit/package.py new file mode 100644 index 00000000000..238d1b15001 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-lit/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyLit(PythonPackage): + """lit is a portable tool for executing LLVM and Clang style test suites, + summarizing their results, and providing indication of failures. lit is + designed to be a lightweight testing tool with as simple a user + interface as possible.""" + + homepage = "https://pypi.python.org/pypi/lit" + url = "https://pypi.python.org/packages/5b/a0/dbed2c8dfb220eb9a5a893257223cd0ff791c0fbc34ce2f1a957fa4b6c6f/lit-0.5.0.tar.gz" + + version('0.5.0', '8144660cc692be8fb903395a5f06564d') + + depends_on('py-setuptools', type='build') From 47f9096073a3f11bb3e3d9af75a1ee0323616fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Mon, 6 Feb 2017 07:49:05 +0800 Subject: [PATCH 0103/2394] Use the official Maven site. (#3034) --- var/spack/repos/builtin/packages/maven/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/maven/package.py b/var/spack/repos/builtin/packages/maven/package.py index c4e0a1d0a49..60c9e387cbb 100644 --- a/var/spack/repos/builtin/packages/maven/package.py +++ b/var/spack/repos/builtin/packages/maven/package.py @@ -30,7 +30,7 @@ class Maven(Package): """Apache Maven is a software project management and comprehension tool.""" homepage = "https://maven.apache.org/index.html" - url = "http://www.gtlib.gatech.edu/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz" + url = "https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.tar.gz" version('3.3.9', '516923b3955b6035ba6b0a5b031fbd8b') From d1c7f9c8bd32cbbcdaaed2a6c022031140b6e787 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sun, 5 Feb 2017 15:55:55 -0800 Subject: [PATCH 0104/2394] Add a package for hunspell (#3029) Add a package for the hunspell spelling checker. This was created by `spack create`, trimmed down, and tested on CentOS 7. --- .../builtin/packages/hunspell/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hunspell/package.py diff --git a/var/spack/repos/builtin/packages/hunspell/package.py b/var/spack/repos/builtin/packages/hunspell/package.py new file mode 100644 index 00000000000..4e4cdce9487 --- /dev/null +++ b/var/spack/repos/builtin/packages/hunspell/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Hunspell(AutotoolsPackage): + """The most popular spellchecking library (sez the author...).""" + + homepage = "http://hunspell.github.io/" + url = "https://github.com/hunspell/hunspell/archive/v1.6.0.tar.gz" + + version('1.6.0', '047c3feb121261b76dc16cdb62f54483') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') From dfff1f5cf42d7f1f8ee5f440c06707db514b17ab Mon Sep 17 00:00:00 2001 From: sknigh Date: Sun, 5 Feb 2017 15:56:34 -0800 Subject: [PATCH 0105/2394] Changed spark URL, Added version 2.0.2, 2.1.0 (#3027) --- var/spack/repos/builtin/packages/spark/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py index 84b63fa87f8..24dca5571df 100644 --- a/var/spack/repos/builtin/packages/spark/package.py +++ b/var/spack/repos/builtin/packages/spark/package.py @@ -33,7 +33,7 @@ class Spark(Package): """ homepage = "http://spark.apache.org" - url = "http://mirrors.ocf.berkeley.edu/apache/spark/spark-2.0.0/spark-2.0.0-bin-without-hadoop.tgz" + url = "http://archive.apache.org/dist/spark/spark-2.0.0/spark-2.0.0-bin-without-hadoop.tgz" variant('hadoop', default=False, description='Build with Hadoop') @@ -41,6 +41,8 @@ class Spark(Package): depends_on('jdk', type=('build', 'run')) depends_on('hadoop', when='+hadoop', type=('build', 'run')) + version('2.1.0', '21d4471e78250775b1fa7c0e6c3a1326') + version('2.0.2', '32110c1bb8f081359738742bd26bced1') version('2.0.0', '8a5307d973da6949a385aefb6ff747bb') version('1.6.2', '304394fbe2899211217f0cd9e9b2b5d9') version('1.6.1', 'fcf4961649f15af1fea78c882e65b001') From 7c09ad5305dc12d89e0d840afef8f61a3b437783 Mon Sep 17 00:00:00 2001 From: Nicolas Richart Date: Mon, 6 Feb 2017 04:34:53 +0100 Subject: [PATCH 0106/2394] Boostrapping the lammps package (#3032) * First commit for the lammps package * reviewed by adamjstewart and davydden --- .../builtin/packages/lammps/Makefile.inc | 49 +++++ .../repos/builtin/packages/lammps/package.py | 207 ++++++++++++++++++ .../repos/builtin/packages/voropp/package.py | 53 +++++ 3 files changed, 309 insertions(+) create mode 100644 var/spack/repos/builtin/packages/lammps/Makefile.inc create mode 100644 var/spack/repos/builtin/packages/lammps/package.py create mode 100644 var/spack/repos/builtin/packages/voropp/package.py diff --git a/var/spack/repos/builtin/packages/lammps/Makefile.inc b/var/spack/repos/builtin/packages/lammps/Makefile.inc new file mode 100644 index 00000000000..6986a255b7e --- /dev/null +++ b/var/spack/repos/builtin/packages/lammps/Makefile.inc @@ -0,0 +1,49 @@ +SHELL = /bin/sh + +# --------------------------------------------------------------------- +# build rules and dependencies +# do not edit this section + +include Makefile.package.settings +include Makefile.package + +EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) +EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) +EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) + +# Path to src files + +vpath %.cpp .. +vpath %.h .. + +# Link target + +$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) + $(SIZE) $(EXE) + +# Library targets + +lib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) + +shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + +# Compilation rules + +%.o:%.cpp + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +# Individual dependencies + +depend : fastdep.exe $(SRC) + @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 + +fastdep.exe: ../DEPEND/fastdep.c + cc -O -o $@ $< + +sinclude .depend diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py new file mode 100644 index 00000000000..d7c41f2e2e2 --- /dev/null +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -0,0 +1,207 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# +# Please also see the LICENSE file for our notice and the LGPL. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os +import string +import datetime as dt + + +class Lammps(MakefilePackage): + """LAMMPS stands for Large-scale Atomic/Molecular Massively + Parallel Simulator.""" + homepage = "http://lammps.sandia.gov/" + url = "https://github.com/lammps/lammps/archive/stable_17Nov2016.tar.gz" + + version('2016.11.17', '8aecc58a39f9775203517c62a592d13b') + + def url_for_version(self, version): + vdate = dt.datetime.strptime(str(version), "%Y.%m.%d") + return "https://github.com/lammps/lammps/archive/stable_{0}.tar.gz".format( + vdate.strftime("%d%b%Y")) + + supported_packages = ['voronoi', 'rigid', 'user-nc-dump', + 'user-atc', 'meam', 'manybody'] + + for pkg in supported_packages: + variant(pkg, default=False, + description='Activate the {0} package'.format(pkg)) + variant('lib', default=True, + description='Build the liblammps in addition to the executable') + + depends_on('mpi') + depends_on('fftw') + depends_on('voropp', when='+voronoi') + depends_on('netcdf+mpi', when='+user-nc-dump') + depends_on('blas', when='+user-atc') + depends_on('lapack', when='+user-atc') + + def setup_environment(self, spack_env, run_env): + self.target_name = self.compiler.name + + def edit(self, spec, prefix): + config = [] + + config.append('CC = c++') + if self.compiler.name == 'intel': + # This is taken from MAKE/OPTIONS/Makefile.intel_cpu_intelmpi + config.append('OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits') # noqa: E501 + config.append('CCFLAGS = -g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload -fno-alias -ansi-alias -restrict $(OPTFLAGS)') # noqa: E501 + config.append('LINKFLAGS = -qopenmp $(OPTFLAGS)') + else: + # This is taken from MAKE/OPTIONS/Makefile.g++ + config.append('OPTFLAGS = -O3') + config.append('CCFLAGS = -fopenmp') + config.append('LINKFLAGS = -fopenmp $(OPTFLAGS)') + + config.append('SHFLAGS = -fPIC') + config.append('DEPFLAGS = -M') + config.append('LINK = c++') + + config.append('LIB = ') + config.append('SIZE = size') + + config.append('ARCHIVE = ar') + config.append('ARFLAGS = -rc') + config.append('SHLIBFLAGS = -shared') + + config.append('LMP_INC = -DLAMMPS_GZIP') + + mpi_path = self.spec['mpi'].prefix.lib + mpi_inc = self.spec['mpi'].prefix.include + + config.append( + 'MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -I{0}'.format( + mpi_inc)) + config.append('MPI_PATH = -L{0}'.format(mpi_path)) + config.append('MPI_LIB = {0}'.format( + ' '.join(self.spec['mpi'].mpicxx_shared_libs))) + + config.append('FFT_INC = -DFFT_FFTW3 -L{0}'.format( + self.spec['fftw'].prefix.include)) + config.append('FFT_PATH = -L{0}'.format(self.spec['fftw'].prefix.lib)) + config.append('FFT_LIB = -lfftw3') + + config.append('JPG_INC = ') + config.append('JPG_PATH = ') + config.append('JPG_LIB = ') + + makefile_inc_template = \ + join_path(os.path.dirname(self.module.__file__), + 'Makefile.inc') + with open(makefile_inc_template, "r") as fhr: + config.extend(fhr.read().split('\n')) + + with working_dir('src/MAKE/'): + with open('Makefile.{0}'.format(self.target_name), 'w') as fh: + fh.write('\n'.join(config)) + + def build_meam(self): + with working_dir('lib/meam'): + filter_file(r'EXTRAMAKE = Makefile.lammps.ifort', + 'EXTRAMAKE = Makefile.lammps.spack', + 'Makefile.ifort') + filter_file('F90 = *ifort', + 'F90 = {0}'.format(self.compiler.fc), + 'Makefile.ifort') + + with open('Makefile.lammps.spack', 'w') as fh: + syslib = '' + syspath = '' + if self.compiler.name == 'gcc': + syslib = '-lgfortran' + elif self.compiler.name == 'intel': + syslib = '-lifcore' + + makefile = ['meam_SYSINC =', + 'meam_SYSLIB = {0}'.format(syslib), + 'meam_SYSPATH = {0}'.format(syspath)] + + fh.write('\n'.join(makefile)) + + make('lib', '-f', 'Makefile.ifort') + + def build_user_atc(self): + with working_dir('lib/atc'): + filter_file(r'CC =.*', + 'CC = {0}'.format(self.compiler.cxx), + 'Makefile.icc') + + mpi_include = self.spec['mpi'].prefix.include + + filter_file(r'CCFLAGS = *', + 'CCFLAGS = -I{0} '.format(mpi_include), + 'Makefile.icc') + + filter_file('LINK =.*', + 'LINK = {0}'.format(self.compiler.cxx), + 'Makefile.icc') + + make('lib', '-f', 'Makefile.icc') + with open('Makefile.lammps', 'w') as fh: + lapack_blas = (self.spec['lapack'].lapack_libs + + self.spec['blas'].blas_libs) + makefile = [ + 'user-atc_SYSINC =', + 'user-atc_SYSLIB = {0}'.format(lapack_blas.ld_flags), + 'user-atc_SYSPATH = '] + fh.write('\n'.join(makefile)) + + def build_voronoi(self): + # no need to set the voronoi_SYS variable in Makefile.lammps + # since the spack wrapper takes care of the path + with working_dir('src/VORONOI'): + filter_file(r'#include "voro\+\+\.hh"', + '#include ', + 'compute_voronoi_atom.h') + + def build(self, spec, prefix): + for pkg in self.supported_packages: + _build_pkg_name = string.replace('build_{0}'.format(pkg), '-', '_') + if hasattr(self, _build_pkg_name): + _build_pkg = getattr(self, _build_pkg_name) + _build_pkg() + + with working_dir('src'): + for pkg in self.supported_packages: + if '+{0}'.format(pkg) in spec: + make('yes-{0}'.format(pkg)) + + make(self.target_name) + + if '+lib' in spec: + make('mode=shlib', self.target_name) + + def install(self, spec, prefix): + with working_dir('src'): + mkdirp(prefix.bin) + install('lmp_{0}'.format(self.target_name), prefix.bin) + + if '+lib' in spec: + mkdirp(prefix.lib) + install('liblammps_{0}.{1}'.format(self.target_name, + dso_suffix), prefix.lib) + + # TODO: install the necessary headers + mkdirp(prefix.include) diff --git a/var/spack/repos/builtin/packages/voropp/package.py b/var/spack/repos/builtin/packages/voropp/package.py new file mode 100644 index 00000000000..0e39769927b --- /dev/null +++ b/var/spack/repos/builtin/packages/voropp/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Voropp(MakefilePackage): + """Voro++ is a open source software library for the computation of the + Voronoi diagram, a widely-used tessellation that has applications in many + scientific fields.""" + + homepage = "http://math.lbl.gov/voro++/about.html" + + # This url is wrong but it passes the test the ++ make the url parser fail, + # the correct url is constructed by url_for_version that has to be used in + # any case due to the difference between the package name and the url + url = "http://math.lbl.gov/voropp/download/dir/voropp-0.4.6.tar.gz" + + version('0.4.6', '2338b824c3b7b25590e18e8df5d68af9') + + def url_for_version(self, version): + url = "http://math.lbl.gov/voro++/download/dir/voro++-{0}.tar.gz".format( # noqa: E501 + str(version)) + return url + + def edit(self, spec, prefix): + filter_file(r'CC=g\+\+', + 'CC={0}'.format(self.compiler.cxx), + 'config.mk') + filter_file(r'PREFIX=/usr/local', + 'PREFIX={0}'.format(self.prefix), + 'config.mk') From 158a1b9c366b91fccbe1971a98d2edcb85c2e5a5 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Sun, 5 Feb 2017 23:34:38 -0800 Subject: [PATCH 0107/2394] fix OMPT support in Archer (#3035) --- var/spack/repos/builtin/packages/archer/package.py | 1 - var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/archer/package.py b/var/spack/repos/builtin/packages/archer/package.py index dd4c27700f4..31a1d498daf 100644 --- a/var/spack/repos/builtin/packages/archer/package.py +++ b/var/spack/repos/builtin/packages/archer/package.py @@ -48,7 +48,6 @@ def install(self, spec, prefix): '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', '-DOMP_PREFIX:PATH=%s' % spec['llvm-openmp-ompt'].prefix, - '-DLIBOMP_TSAN_SUPPORT=TRUE', ]) cmake('..', *cmake_args) diff --git a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py index 1dc1089d685..8b83f216b60 100644 --- a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py +++ b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py @@ -51,7 +51,9 @@ def install(self, spec, prefix): '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', '-DCMAKE_BUILD_TYPE=Release', - '-DLIBOMP_TSAN_SUPPORT=TRUE' + '-DLIBOMP_OMPT_SUPPORT=on', + '-DLIBOMP_OMPT_BLAME=on', + '-DLIBOMP_OMPT_TRACE=on' ]) cmake('..', *cmake_args) From ffd582b2f647f208e9de7b8919aa46b60f186d1f Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Mon, 6 Feb 2017 00:04:41 -0800 Subject: [PATCH 0108/2394] Elemental (#2991) * Add a package for the Elemental distributed linear algebra library. --- .../builtin/packages/elemental/package.py | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 var/spack/repos/builtin/packages/elemental/package.py diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py new file mode 100644 index 00000000000..625f0a1e3eb --- /dev/null +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -0,0 +1,136 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Elemental(CMakePackage): + """Elemental: Distributed-memory dense and sparse-direct linear algebra + and optimization library.""" + + homepage = "http://libelemental.org" + url = "https://github.com/elemental/Elemental/archive/v0.87.6.tar.gz" + + version('0.87.6', '9fd29783d45b0a0e27c0df85f548abe9') + + variant('debug', default=False, + description='Builds a debug version of the libraries') + variant('shared', default=True, + description='Enables the build of shared libraries') + variant('hybrid', default=True, + description='Make use of OpenMP within MPI packing/unpacking') + variant('openmp_blas', default=False, + description='Use OpenMP for threading in the BLAS library') + variant('c', default=False, + description='Build C interface') + variant('python', default=False, + description='Install Python interface') + variant('parmetis', default=False, + description='Enable ParMETIS') + variant('quad', default=False, + description='Enable quad precision') + variant('int64', default=False, + description='Use 64bit integers') + # When this variant is set remove the normal dependencies since + # Elemental has to build BLAS and ScaLAPACK internally + variant('int64_blas', default=False, + description='Use 64bit integers for BLAS.' + ' Requires local build of BLAS library.') + variant('scalapack', default=False, + description='Build with ScaLAPACK library') + + depends_on('cmake', type='build') + # Note that this forces us to use OpenBLAS until #1712 is fixed + depends_on('blas', when='~openmp_blas ~int64_blas') + # Hack to forward variant to openblas package + # Allow Elemental to build internally when using 8-byte ints + depends_on('openblas +openmp', when='+openmp_blas ~int64_blas') + # Note that this forces us to use OpenBLAS until #1712 is fixed + depends_on('lapack', when='~openmp_blas') + depends_on('metis') + depends_on('metis +int64', when='+int64') + depends_on('mpi') + # Allow Elemental to build internally when using 8-byte ints + depends_on('scalapack', when='+scalapack ~int64_blas') + extends('python', when='+python') + depends_on('python@:2.8', when='+python') + + @property + def elemental_libs(self): + shared = True if '+shared' in self.spec else False + return find_libraries( + ['libEl'], root=self.prefix, shared=shared, recurse=True + ) + + def build_type(self): + """Returns the correct value for the ``CMAKE_BUILD_TYPE`` variable + :return: value for ``CMAKE_BUILD_TYPE`` + """ + if '+debug' in self.spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + spec = self.spec + args = [ + '-DCMAKE_INSTALL_MESSAGE:STRING=LAZY', + '-DEL_PREFER_OPENBLAS:BOOL=TRUE', + '-DEL_DISABLE_SCALAPACK:BOOL=%s' % ('~scalapack' in spec), + '-DGFORTRAN_LIB=libgfortran.so', + '-DBUILD_SHARED_LIBS:BOOL=%s' % ('+shared' in spec), + '-DEL_HYBRID:BOOL=%s' % ('+hybrid' in spec), + '-DEL_C_INTERFACE:BOOL=%s' % ('+c' in spec), + '-DINSTALL_PYTHON_PACKAGE:BOOL=%s' % ('+python' in spec), + '-DEL_DISABLE_PARMETIS:BOOL=%s' % ('~parmetis' in spec), + '-DEL_DISABLE_QUAD:BOOL=%s' % ('~quad' in spec), + '-DEL_USE_64BIT_INTS:BOOL=%s' % ('+int64' in spec), + '-DEL_USE_64BIT_BLAS_INTS:BOOL=%s' % ('+int64_blas' in spec)] + + # If using 64bit int BLAS libraries, elemental has to build + # them internally + if '+int64_blas' in spec: + args.extend(['-DEL_BLAS_SUFFIX:STRING={0}'.format(( + '_64_' if '+int64_blas' in spec else '_')), + '-DCUSTOM_BLAS_SUFFIX:BOOL=TRUE']), + if '+scalapack' in spec: + args.extend(['-DEL_LAPACK_SUFFIX:STRING={0}'.format(( + '_64_' if '+int64_blas' in spec else '_')), + '-DCUSTOM_LAPACK_SUFFIX:BOOL=TRUE']), + else: + math_libs = (spec['lapack'].lapack_libs + + spec['blas'].blas_libs) + + if '+scalapack' in spec: + math_libs = spec['scalapack'].scalapack_libs + math_libs + + args.extend([ + '-DMATH_LIBS:STRING={0}'.format(math_libs.search_flags), + '-DMATH_LIBS:STRING={0}'.format(math_libs.link_flags)]) + + if '+python' in spec: + args.extend([ + '-DPYTHON_SITE_PACKAGES:STRING={0}'.format(site_packages_dir)]) + + return args From d78a35bb548566ddfc5c60079ac7b2cc1361aab9 Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Mon, 6 Feb 2017 13:53:53 -0500 Subject: [PATCH 0109/2394] spectrum-mpi: Add new package file for external package (#3005) * spectrum-mpi: Add new package file for external package IBM Spectrum MPI is a commercial implementation of MPI based on OpenMPI. It is usually install in /opt/ibm/spectrum_mpi. Users need to add the Spectrum MPI package in their packages.yaml file as follows: packages: spectrum-mpi: version: ['10.1.0.2'] paths: spectrum-mpi@10.1.0.2: /opt/ibm/spectrum_mpi/ buildable: False all: providers: mpi: [spectrum-mpi@10.1.0.2] * spectrum-mpi: Added license files and removed the versions No need for versions as the package is external. * spectrum-mpi: Remove extraneous defines Keep only the defines that other MPI implementation define in their package file: self.spec.mpicc self.spec.mpicxx self.spec.mpif77 self.spec.mpifc --- .../builtin/packages/spectrum-mpi/package.py | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 var/spack/repos/builtin/packages/spectrum-mpi/package.py diff --git a/var/spack/repos/builtin/packages/spectrum-mpi/package.py b/var/spack/repos/builtin/packages/spectrum-mpi/package.py new file mode 100644 index 00000000000..28ba423b9cc --- /dev/null +++ b/var/spack/repos/builtin/packages/spectrum-mpi/package.py @@ -0,0 +1,64 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at International Business Machines Corporation +# +# This file is part of Spack. +# Created by Serban Maerean, serban@us.ibm.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class SpectrumMpi(Package): + """ + IBM MPI implementation from Spectrum MPI. + + """ + + homepage = "http://www-03.ibm.com/systems/spectrum-computing/products/mpi" + + provides('mpi') + + def install(self, spec, prefix): + raise InstallError('IBM MPI is not installable; it is vendor supplied') + + def setup_dependent_package(self, module, dependent_spec): + # get the compiler names + if '%xl' in dependent_spec or '%xl_r' in dependent_spec: + self.spec.mpicc = join_path(self.prefix.bin, 'mpixlc') + self.spec.mpicxx = join_path(self.prefix.bin, 'mpixlC') + self.spec.mpif77 = join_path(self.prefix.bin, 'mpixlf') + self.spec.mpifc = join_path(self.prefix.bin, 'mpixlf') + else: + self.spec.mpicc = join_path(self.prefix.bin, 'mpicc') + self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx') + self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77') + self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + if '%xl' in dependent_spec or '%xl_r' in dependent_spec: + spack_env.set('MPICC', join_path(self.prefix.bin, 'mpixlc')) + spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpixlC')) + spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpixlf')) + spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpixlf')) + else: + spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc')) + spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpic++')) + spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77')) + spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90')) From 941dfcbe43c7d2af4d842b2f07b3eac140448903 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 6 Feb 2017 14:34:35 -0600 Subject: [PATCH 0110/2394] Bash Programmable Completion for Spack (#3026) --- share/spack/setup-env.sh | 7 + share/spack/spack-completion.bash | 932 ++++++++++++++++++++++++++++++ 2 files changed, 939 insertions(+) create mode 100755 share/spack/spack-completion.bash diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 24ab3dae6f4..a67ae04b245 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -198,3 +198,10 @@ _sp_dotkit_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack _sp_tcl_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots', {}).get('tcl')))") _spack_pathadd DK_NODE "${_sp_dotkit_root%/}/$_sp_sys_type" _spack_pathadd MODULEPATH "${_sp_tcl_root%/}/$_sp_sys_type" + +# +# Add programmable tab completion for Bash +# +if [ -n "${BASH_VERSION:-}" ]; then + source $_sp_share_dir/spack-completion.bash +fi diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash new file mode 100755 index 00000000000..dde1a5280f7 --- /dev/null +++ b/share/spack/spack-completion.bash @@ -0,0 +1,932 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +# The following global variables are used/set by Bash programmable completion +# COMP_CWORD: An index into ${COMP_WORDS} of the word containing the +# current cursor position +# COMP_LINE: The current command line +# COMP_WORDS: an array containing individual command arguments typed so far +# COMPREPLY: an array containing possible completions as a result of your +# function + +# Bash programmable completion for Spack +function _bash_completion_spack { + # In all following examples, let the cursor be denoted by brackets, i.e. [] + + # For our purposes, flags should not affect tab completion. For instance, + # `spack install []` and `spack -d install --jobs 8 []` should both give the same + # possible completions. Therefore, we need to ignore any flags in COMP_WORDS. + local COMP_WORDS_NO_FLAGS=() + local index=0 + while [[ "$index" -lt "$COMP_CWORD" ]] + do + if [[ "${COMP_WORDS[$index]}" == [a-z]* ]] + then + COMP_WORDS_NO_FLAGS+=("${COMP_WORDS[$index]}") + fi + let index++ + done + + # Options will be listed by a subfunction named after non-flag arguments. + # For example, `spack -d install []` will call _spack_install + # and `spack compiler add []` will call _spack_compiler_add + local subfunction=$(IFS='_'; echo "_${COMP_WORDS_NO_FLAGS[*]}") + + # However, the word containing the current cursor position needs to be + # added regardless of whether or not it is a flag. This allows us to + # complete something like `spack install --keep-st[]` + COMP_WORDS_NO_FLAGS+=("${COMP_WORDS[$COMP_CWORD]}") + + # Since we have removed all words after COMP_CWORD, we can safely assume + # that COMP_CWORD_NO_FLAGS is simply the index of the last element + local COMP_CWORD_NO_FLAGS=$(( ${#COMP_WORDS_NO_FLAGS[@]} - 1 )) + + # There is no guarantee that the cursor is at the end of the command line + # when tab completion is envoked. For example, in the following situation: + # `spack -d [] install` + # if the user presses the TAB key, a list of valid flags should be listed. + # Note that we cannot simply ignore everything after the cursor. In the + # previous scenario, the user should expect to see a list of flags, but + # not of other subcommands. Obviously, `spack -d list install` would be + # invalid syntax. To accomplish this, we use the variable list_options + # which is true if the current word starts with '-' or if the cursor is + # not at the end of the line. + local list_options=false + if [[ "${COMP_WORDS[$COMP_CWORD]}" == -* || \ + "$COMP_CWORD" -ne "${#COMP_WORDS[@]}-1" ]] + then + list_options=true + fi + + # In general, when envoking tab completion, the user is not expecting to + # see optional flags mixed in with subcommands or package names. Tab + # completion is used by those who are either lazy or just bad at spelling. + # If someone doesn't remember what flag to use, seeing single letter flags + # in their results won't help them, and they should instead consult the + # documentation. However, if the user explicitly declares that they are + # looking for a flag, we can certainly help them out. + # `spack install -[]` + # and + # `spack install --[]` + # should list all flags and long flags, respectively. Furthermore, if a + # subcommand has no non-flag completions, such as `spack arch []`, it + # should list flag completions. + + local cur=${COMP_WORDS_NO_FLAGS[$COMP_CWORD_NO_FLAGS]} + local prev=${COMP_WORDS_NO_FLAGS[$COMP_CWORD_NO_FLAGS-1]} + + #_test_vars + + # Make sure function exists before calling it + if [[ "$(type -t $subfunction)" == "function" ]] + then + COMPREPLY=($($subfunction)) + fi +} + +# Spack commands + +function _spack { + if $list_options + then + compgen -W "-h --help -d --debug -D --pdb -k --insecure -m --mock -p + --profile -v --verbose -s --stacktrace -V --version" -- "$cur" + else + compgen -W "$(_subcommands)" -- "$cur" + fi +} + +function _spack_activate { + if $list_options + then + compgen -W "-h --help -f --force" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi +} + +function _spack_arch { + compgen -W "-h --help -p --platform" -- "$cur" +} + +function _spack_bootstrap { + # FIXME: What does this command even do? + if $list_options + then + compgen -W "-h --help -r --remote" -- "$cur" + else + compgen -o dirnames -- "$cur" + fi +} + +function _spack_build { + if $list_options + then + compgen -W "-h --help -v --verbose" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_cd { + if $list_options + then + compgen -W "-h --help -m --module-dir -r --spack-root -i --install-dir + -p --package-dir -P --packages -s --stage-dir -S --stages + -b --build-dir" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_checksum { + if $list_options + then + compgen -W "-h --help --keep-stage" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_clean { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_compiler { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "find add remove rm list info" -- "$cur" + fi +} + +function _spack_compiler_add { + if $list_options + then + compgen -W "-h --help --scope" -- "$cur" + else + compgen -o dirnames -- "$cur" + fi +} + +function _spack_compiler_find { + # Alias to `spack compiler add` + _spack_compiler_add +} + +function _spack_compiler_info { + if $list_options + then + compgen -W "-h --help --scope" -- "$cur" + else + compgen -W "$(_installed_compilers)" -- "$cur" + fi +} + +function _spack_compiler_list { + compgen -W "-h --help --scope" -- "$cur" +} + +function _spack_compiler_remove { + if $list_options + then + compgen -W "-h --help -a --all --scope" -- "$cur" + else + compgen -W "$(_installed_compilers)" -- "$cur" + fi +} + +function _spack_compiler_rm { + # Alias to `spack compiler remove` + _spack_compiler_remove +} + +function _spack_compilers { + compgen -W "-h --help --scope" -- "$cur" +} + +function _spack_config { + if $list_options + then + compgen -W "-h --help --scope" -- "$cur" + else + compgen -W "edit get" -- "$cur" + fi +} + +function _spack_config_edit { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "mirrors repos modules packages config compilers" -- "$cur" + fi +} + +function _spack_config_get { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "mirrors repos modules packages config compilers" -- "$cur" + fi +} + +function _spack_configure { + if $list_options + then + compgen -W "-h --help -v --verbose" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_create { + compgen -W "-h --help --keep-stage -n --name -t --template -r --repo + -N --namespace -f --force" -- "$cur" +} + +function _spack_deactivate { + if $list_options + then + compgen -W "-h --help -f --force -a --all" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi +} + +function _spack_debug { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "create-db-tarball" -- "$cur" + fi +} + +function _spack_create-db-tarball { + compgen -W "-h --help" -- "$cur" +} + +function _spack_dependents { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_diy { + if $list_options + then + compgen -W "-h --help -i --ignore-dependencies --keep-prefix + --skip-patch -q --quiet --clean --dirty" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_doc { + # FIXME: What does this command even do? + compgen -W "-h --help" -- "$cur" +} + +function _spack_edit { + if $list_options + then + compgen -W "-h --help -b --build-system -c --command -t --test -m --module + -r --repo -N --namespace" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_env { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_extensions { + if $list_options + then + compgen -W "-h --help -l --long -p --paths -d --deps" -- "$cur" + else + compgen -W "go-bootstrap go lua octave python r ruby rust" -- "$cur" + fi +} + +function _spack_fetch { + if $list_options + then + compgen -W "-h --help -n --no-checksum -m --missing + -D --dependencies" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_find { + if $list_options + then + compgen -W "-h --help -s --short -p --paths -d --deps -l --long + -L --very-long -f --show-flags -e --explicit + -E --implicit -u --unknown -m --missing -v --variants + -M --only-missing -N --namespace" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi +} + +function _spack_flake8 { + if $list_options + then + compgen -W "-h --help -k --keep-temp -o --output + -r --root-relative -U --no-untracked" -- "$cur" + else + compgen -o filenames -- "$cur" + fi +} + +function _spack_graph { + if $list_options + then + compgen -W "-h --help -a --ascii -d --dot -n --normalize -s --static + -i --installed -t --deptype" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_help { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_subcommands)" -- "$cur" + fi +} + +function _spack_info { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_install { + if $list_options + then + compgen -W "-h --help --only -j --jobs --keep-prefix --keep-stage + -n --no-checksum -v --verbose --fake --clean --dirty + --run-tests --log-format --log-file" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_list { + if $list_options + then + compgen -W "-h --help -d --search-description --format" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_load { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi +} + +function _spack_location { + if $list_options + then + compgen -W "-h --help -m --module-dir -r --spack-root -i --install-dir + -p --package-dir -P --packages -s --stage-dir -S --stages + -b --build-dir" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_md5 { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -o filenames -- "$cur" + fi +} + +function _spack_mirror { + if $list_options + then + compgen -W "-h --help -n --no-checksum" -- "$cur" + else + compgen -W "add create list remove rm" -- "$cur" + fi +} + +function _spack_mirror_add { + if $list_options + then + compgen -W "-h --help --scope" -- "$cur" + else + compgen -o dirnames -- "$cur" + fi +} + +function _spack_mirror_create { + if $list_options + then + compgen -W "-h --help -d --directory -f --file + -D --dependencies -o --one-version-per-spec" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_mirror_list { + compgen -W "-h --help --scope" -- "$cur" +} + +function _spack_mirror_remove { + if $list_options + then + compgen -W "-h --help --scope" -- "$cur" + else + compgen -W "$(_mirrors)" -- "$cur" + fi +} + +function _spack_module { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "find loads refresh rm" -- "$cur" + fi +} + +function _spack_module_find { + if $list_options + then + compgen -W "-h --help -m --module-type" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi +} + +function _spack_module_loads { + if $list_options + then + compgen -W "-h --help --input-only -p --prefix -x --exclude + -m --module-type -r --dependencies" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi + +} + +function _spack_module_refresh { + if $list_options + then + compgen -W "-h --help --delete-tree -m --module-type + -y --yes-to-all" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi +} + +function _spack_module_rm { + if $list_options + then + compgen -W "-h --help -m --module-type -y --yes-to-all" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi +} + +function _spack_patch { + if $list_options + then + compgen -W "-h --help -n --no-checksum" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_pkg { + # FIXME: What does this subcommand even do? + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "add added diff list removed" -- "$cur" + fi +} + +function _spack_pkg_add { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_pkg_added { + # FIXME: How to list git revisions? + compgen -W "-h --help" -- "$cur" +} + +function _spack_pkg_diff { + # FIXME: How to list git revisions? + compgen -W "-h --help" -- "$cur" +} + +function _spack_pkg_list { + # FIXME: How to list git revisions? + compgen -W "-h --help" -- "$cur" +} + +function _spack_pkg_removed { + # FIXME: How to list git revisions? + compgen -W "-h --help" -- "$cur" +} + +function _spack_providers { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "blas daal elf golang ipp lapack mkl + mpe mpi pil scalapack" -- "$cur" + fi +} + +function _spack_purge { + compgen -W "-h --help -s --stage -d --downloads + -m --misc-cache -a --all" -- "$cur" +} + +function _spack_python { + if $list_options + then + compgen -W "-h --help -c" -- "$cur" + else + compgen -o filenames -- "$cur" + fi +} + +function _spack_reindex { + compgen -W "-h --help" -- "$cur" +} + +function _spack_repo { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "add create list remove rm" -- "$cur" + fi +} + +function _spack_repo_add { + if $list_options + then + compgen -W "-h --help --scope" -- "$cur" + else + compgen -o dirnames -- "$cur" + fi +} + +function _spack_repo_create { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -o dirnames -- "$cur" + fi +} + +function _spack_repo_list { + compgen -W "-h --help --scope" -- "$cur" +} + +function _spack_repo_remove { + if $list_options + then + compgen -W "-h --help --scope" -- "$cur" + else + compgen -W "$(_repos)" -- "$cur" + fi +} + +function _spack_repo_rm { + # Alias to `spack repo remove` + _spack_repo_remove +} + +function _spack_restage { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_setup { + if $list_options + then + compgen -W "-h --help -i --ignore-dependencies -v --verbose + --clean --dirty" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_spec { + if $list_options + then + compgen -W "-h --help -l --long -L --very-long -y --yaml -c --cover + -N --namespaces -I --install-status -t --types" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_stage { + if $list_options + then + compgen -W "-h --help -n --no-checksum -p --path" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_test { + if $list_options + then + compgen -W "-h --help -H --pytest-help -l --list + -L --long-list" -- "$cur" + else + compgen -W "$(_tests)" -- "$cur" + fi +} + +function _spack_uninstall { + if $list_options + then + compgen -W "-h --help -f --force -a --all -d --dependents + -y --yes-to-all" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi +} + +function _spack_unload { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_installed_packages)" + fi +} + +function _spack_unuse { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_installed_packages)" + fi +} + +function _spack_url { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "list parse test" -- "$cur" + fi +} + +function _spack_url_list { + compgen -W "-h --help -c --color -e --extrapolation -n --incorrect-name + -v --incorrect-version" -- "$cur" +} + +function _spack_url_parse { + compgen -W "-h --help -s --spider" -- "$cur" +} + +function _spack_url_test { + compgen -W "-h --help" -- "$cur" +} + +function _spack_use { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_installed_packages)" -- "$cur" + fi +} + +function _spack_versions { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_view { + if $list_options + then + compgen -W "-h --help -v --verbose -e --exclude + -d --dependencies" -- "$cur" + else + compgen -W "add check hard hardlink remove rm soft + statlink status symlink" -- "$cur" + fi +} + +function _spack_view_add { + # Alias for `spack view symlink` + _spack_view_symlink +} + +function _spack_view_check { + # Alias for `spack view statlink` + _spack_view_statlink +} + +function _spack_view_hard { + # Alias for `spack view hardlink` + _spack_view_hardlink +} + +function _spack_view_hardlink { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -o dirnames -- "$cur" + fi +} + +function _spack_view_remove { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -o dirnames -- "$cur" + fi +} + +function _spack_view_rm { + # Alias for `spack view remove` + _spack_view_remove +} + +function _spack_view_soft { + # Alias for `spack view symlink` + _spack_view_symlink +} + +function _spack_view_statlink { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -o dirnames -- "$cur" + fi +} + +function _spack_view_status { + # Alias for `spack view statlink` + _spack_view_statlink +} + +function _spack_view_symlink { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -o dirnames -- "$cur" + fi +} + +# Helper functions for subcommands + +function _subcommands { + spack help | grep "^ [a-z]" | awk '{print $1}' +} + +function _all_packages { + spack list +} + +function _installed_packages { + # Perl one-liner used to strip out color codes + spack find | grep -v "^--" | perl -pe 's/\e\[?.*?[\@-~]//g' +} + +function _installed_compilers { + spack compilers | egrep -v "^(-|=)" +} + +function _mirrors { + spack mirror list | awk '{print $1}' +} + +function _repos { + spack repo list | awk '{print $1}' +} + +function _tests { + spack test -l +} + +# Testing functions + +function _test_vars { + echo "-----------------------------------------------------" >> temp + echo "Full line: '$COMP_LINE'" >> temp + echo >> temp + echo "Word list w/ flags: $(_pretty_print COMP_WORDS[@])" >> temp + echo "# words w/ flags: '${#COMP_WORDS[@]}'" >> temp + echo "Cursor index w/ flags: '$COMP_CWORD'" >> temp + echo >> temp + echo "Word list w/out flags: $(_pretty_print COMP_WORDS_NO_FLAGS[@])" >> temp + echo "# words w/out flags: '${#COMP_WORDS_NO_FLAGS[@]}'" >> temp + echo "Cursor index w/out flags: '$COMP_CWORD_NO_FLAGS'" >> temp + echo >> temp + echo "Subfunction: '$subfunction'" >> temp + if $list_options + then + echo "List options: 'True'" >> temp + else + echo "List options: 'False'" >> temp + fi + echo "Current word: '$cur'" >> temp + echo "Previous word: '$prev'" >> temp +} + +# Pretty-prints one or more arrays +# Syntax: _pretty_print array1[@] ... +function _pretty_print { + for arg in $@ + do + local array=("${!arg}") + echo -n "$arg: [" + printf "'%s'" "${array[0]}" + printf ", '%s'" "${array[@]:1}" + echo "]" + done +} + +complete -F _bash_completion_spack spack From 88e9bb586e85e1793f1b42d4c99883d638358c53 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Tue, 7 Feb 2017 10:05:02 -0800 Subject: [PATCH 0111/2394] Added a new version of the Google protobuf to the spack package. (#3046) --- var/spack/repos/builtin/packages/protobuf/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index 6faa0376ada..34d167b28c9 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -31,4 +31,10 @@ class Protobuf(AutotoolsPackage): homepage = "https://developers.google.com/protocol-buffers" url = "https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.bz2" + version('3.0.2', '845b39e4b7681a2ddfd8c7f528299fbb', url='https://github.com/google/protobuf/archive/v3.0.2.tar.gz') version('2.5.0', 'a72001a9067a4c2c4e0e836d0f92ece4') + + depends_on('m4', when='@3.0.2:') + depends_on('autoconf', when='@3.0.2:') + depends_on('automake', when='@3.0.2:') + depends_on('libtool', when='@3.0.2:') From f71df7bda3c4364ba6acd20411e8acac1c8f754c Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Tue, 7 Feb 2017 15:15:02 -0600 Subject: [PATCH 0112/2394] move rpath from ALL to other sections of site.cfg (#3028) * move rpath from ALL to other sections of site.cfg. Solves #3007 * Add back mac condition to py-numpy * Refactor py-numpy a bit. --- .../builtin/packages/py-numpy/package.py | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index a48f5a19552..182616232e0 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -82,29 +82,12 @@ def patch(self): # differently. names = ','.join(lapackblas.names) dirs = ':'.join(lapackblas.directories) - # First, workout the defaults. - # The section title for the defaults changed in @1.10, see - # https://github.com/numpy/numpy/blob/master/site.cfg.example - if spec.satisfies('@:1.9.2'): - f.write('[DEFAULT]\n') - else: - f.write('[ALL]\n') - if not ('^openblas' in spec or - '^mkl' in spec or - '^atlas' in spec): - f.write('libraries=%s\n' % names) - f.write('library_dirs=%s\n' % dirs) - if not ((platform.system() == "Darwin") and - (platform.mac_ver()[0] == '10.12')): - f.write('rpath=%s\n' % ':'.join(lapackblas.directories)) - - # Now special treatment for some (!) BLAS/LAPACK. Note that + # Special treatment for some (!) BLAS/LAPACK. Note that # in this case library_dirs can not be specified within [ALL]. if '^openblas' in spec: f.write('[openblas]\n') f.write('libraries=%s\n' % names) - f.write('library_dirs=%s\n' % dirs) elif '^mkl' in spec: # numpy does not expect system libraries needed for MKL # here. @@ -123,8 +106,19 @@ def patch(self): # and using LD_LIBRARY_PATH throughout Spack. f.write('[mkl]\n') f.write('mkl_libs=%s\n' % 'mkl_rt') - f.write('library_dirs=%s\n' % dirs) elif '^atlas' in spec: f.write('[atlas]\n') f.write('atlas_libs=%s\n' % names) - f.write('library_dirs=%s\n' % dirs) + else: + # The section title for the defaults changed in @1.10, see + # https://github.com/numpy/numpy/blob/master/site.cfg.example + if spec.satisfies('@:1.9.2'): + f.write('[DEFAULT]\n') + else: + f.write('[ALL]\n') + f.write('libraries=%s\n' % names) + + f.write('library_dirs=%s\n' % dirs) + if not ((platform.system() == "Darwin") and + (platform.mac_ver()[0] == '10.12')): + f.write('rpath=%s\n' % dirs) From 7bf70163834ad6f730865502f76a0927ffa70425 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 8 Feb 2017 03:22:13 +0100 Subject: [PATCH 0113/2394] mpfr: add 3.1.5 (#3050) --- var/spack/repos/builtin/packages/mpfr/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mpfr/package.py b/var/spack/repos/builtin/packages/mpfr/package.py index 5dc33b2fb98..09377804f66 100644 --- a/var/spack/repos/builtin/packages/mpfr/package.py +++ b/var/spack/repos/builtin/packages/mpfr/package.py @@ -31,6 +31,7 @@ class Mpfr(AutotoolsPackage): homepage = "http://www.mpfr.org" url = "https://gforge.inria.fr/frs/download.php/latestfile/159/mpfr-3.1.2.tar.bz2" + version('3.1.5', 'b1d23a55588e3b2a13e3be66bc69fd8d') version('3.1.4', 'b8a2f6b0e68bef46e53da2ac439e1cf4') version('3.1.3', '5fdfa3cfa5c86514ee4a241a1affa138') version('3.1.2', 'ee2c3ac63bf0c2359bf08fc3ee094c19') From b1f5b5f75bf0cf9ecb1b05eb0670ee6dd0143e01 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 7 Feb 2017 18:22:30 -0800 Subject: [PATCH 0114/2394] Add comment explaining why patch is still needed (#3054) [The fix](https://github.com/golang/go/issues/17986) for the small buglet addressed by `misc-cgo-testcshared.patch` has been merged into the tree a while back. I was surprised to see that it wasn't in 1.7.5 and did a bit of digging. It is *has not* been merged into the 1.7 branch but it *has* been merged into 1.8 (and therefor the patch will no longer be necessary). Figured I'd document my digging for the next person to come along. --- var/spack/repos/builtin/packages/go/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index d0fb40096bc..8d7596eee40 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -73,6 +73,7 @@ class Go(Package): patch('time_test.patch', when='@1.6.4:1.7.4') # https://github.com/golang/go/issues/17986 + # The fix for this issue has been merged into the 1.8 tree. patch('misc-cgo-testcshared.patch', level=0, when='@1.6.4:1.7.5') # NOTE: Older versions of Go attempt to download external files that have From 426405195454b1f40a3a62483bd985a122c504d3 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 8 Feb 2017 03:22:52 +0100 Subject: [PATCH 0115/2394] fix usage of self.build_directory in espressopp and astyle (#3053) --- var/spack/repos/builtin/packages/astyle/package.py | 2 +- var/spack/repos/builtin/packages/espressopp/package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/astyle/package.py b/var/spack/repos/builtin/packages/astyle/package.py index 851952be660..5598373b44d 100644 --- a/var/spack/repos/builtin/packages/astyle/package.py +++ b/var/spack/repos/builtin/packages/astyle/package.py @@ -44,7 +44,7 @@ def build_directory(self): return join_path(self.stage.source_path, 'build', self.compiler.name) def edit(self, spec, prefix): - makefile = join_path(self.build_directory(), 'Makefile') + makefile = join_path(self.build_directory, 'Makefile') filter_file(r'^CXX\s*=.*', 'CXX=%s' % spack_cxx, makefile) # strangely enough install -o $(USER) -g $(USER) stoped working on OSX if sys.platform == 'darwin': diff --git a/var/spack/repos/builtin/packages/espressopp/package.py b/var/spack/repos/builtin/packages/espressopp/package.py index 2903a02f7de..06974a38d84 100644 --- a/var/spack/repos/builtin/packages/espressopp/package.py +++ b/var/spack/repos/builtin/packages/espressopp/package.py @@ -72,7 +72,7 @@ def cmake_args(self): return ['-DEXTERNAL_MPI4PY=ON', '-DEXTERNAL_BOOST=ON'] def build(self, spec, prefix): - with working_dir(self.build_directory()): + with working_dir(self.build_directory): make() if '+ug' in spec: make("ug", parallel=False) From 892955cc460ddb9d611246a81cdd463abc1b31c1 Mon Sep 17 00:00:00 2001 From: Elizabeth Fischer Date: Tue, 7 Feb 2017 21:23:33 -0500 Subject: [PATCH 0116/2394] Add comments documenting problems in recent versions of NetCDF. (#3058) --- var/spack/repos/builtin/packages/netcdf/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py index 34d3bd41c6f..f512ecf2ea2 100644 --- a/var/spack/repos/builtin/packages/netcdf/package.py +++ b/var/spack/repos/builtin/packages/netcdf/package.py @@ -33,7 +33,11 @@ class Netcdf(AutotoolsPackage): homepage = "http://www.unidata.ucar.edu/software/netcdf" url = "http://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-4.3.3.tar.gz" + # Version 4.4.1.1 is having problems in tests + # https://github.com/Unidata/netcdf-c/issues/343 version('4.4.1.1', '503a2d6b6035d116ed53b1d80c811bda') + # netcdf@4.4.1 can crash on you (in real life and in tests). See: + # https://github.com/Unidata/netcdf-c/issues/282 version('4.4.1', '7843e35b661c99e1d49e60791d5072d8') version('4.4.0', 'cffda0cbd97fdb3a06e9274f7aef438e') version('4.3.3.1', '5c9dad3705a3408d27f696e5b31fb88c') From 28b7ef3175fd16fb12b60fcaba46a06b1154f78b Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 8 Feb 2017 03:25:38 +0100 Subject: [PATCH 0117/2394] codecov: added commit status, made green a reachable state (#3051) --- .codecov.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.codecov.yml b/.codecov.yml index 62fc306ec3b..52e4b38d9ce 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,7 +1,19 @@ coverage: precision: 2 round: nearest - range: 60...100 + range: 60...90 + status: + project: + llnl: + paths: + - lib/spack/llnl + commands: + paths: + - lib/spack/spack/cmd + core: + paths: + - "!lib/spack/llnl" + - "!lib/spack/spack/cmd" ignore: - lib/spack/spack/test/.* From 79c1f7885a7d249eb03b259f1c885a6de90222ce Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 8 Feb 2017 03:28:01 +0100 Subject: [PATCH 0118/2394] db and concretization of modified packages: fixes #2911 (#2920) --- lib/spack/spack/database.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index d3fc03fb40f..01d545de6d1 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -340,6 +340,7 @@ def invalid_record(hash_key, error): # cached prematurely. for hash_key, rec in data.items(): rec.spec._mark_concrete() + rec.spec.package.spec._mark_concrete() self._data = data From b192011addad8e62ea1fdbdc4039887d0df6db4d Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 8 Feb 2017 13:12:10 -0800 Subject: [PATCH 0119/2394] Revert "db and concretization of packages modified after installation: fixes #2911" (#3078) --- lib/spack/spack/database.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 01d545de6d1..d3fc03fb40f 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -340,7 +340,6 @@ def invalid_record(hash_key, error): # cached prematurely. for hash_key, rec in data.items(): rec.spec._mark_concrete() - rec.spec.package.spec._mark_concrete() self._data = data From c91d18b6223b006c75d41e10509a7f34a5b03346 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 9 Feb 2017 17:31:57 +0100 Subject: [PATCH 0120/2394] qa: adjust thresholds for acceptance (#3105) --- .codecov.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.codecov.yml b/.codecov.yml index 52e4b38d9ce..1782e78ff9b 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -4,13 +4,17 @@ coverage: range: 60...90 status: project: + default: true llnl: + threshold: 0.5 paths: - lib/spack/llnl commands: + threshold: 0.5 paths: - lib/spack/spack/cmd core: + threshold: 0.5 paths: - "!lib/spack/llnl" - "!lib/spack/spack/cmd" From 2a3228e0049b765aaeb0495e429fc6057b5b7cc2 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 9 Feb 2017 10:33:01 -0600 Subject: [PATCH 0121/2394] Add latest version of NCO (#3080) --- var/spack/repos/builtin/packages/nco/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index acd96f5e9c8..0f96cf403c1 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -30,8 +30,9 @@ class Nco(AutotoolsPackage): netCDF-accessible formats""" homepage = "http://nco.sourceforge.net/" - url = "https://github.com/nco/nco/archive/4.6.2.tar.gz" + url = "https://github.com/nco/nco/archive/4.6.4.tar.gz" + version('4.6.4', '22f4e779d0011a9c0db90fda416c8e45') version('4.6.3', '0e1d6616c65ed3a30c54cc776da4f987') version('4.6.2', 'b7471acf0cc100343392f4171fb56113') version('4.6.1', 'ef43cc989229c2790a9094bd84728fd8') From 8d7bcbbbbb307ea72596bdcf1374d87d063daf5f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 9 Feb 2017 12:38:08 -0600 Subject: [PATCH 0122/2394] Add latest version of GNU Parallel (#3106) --- var/spack/repos/builtin/packages/parallel/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/parallel/package.py b/var/spack/repos/builtin/packages/parallel/package.py index 4297e8acb01..32c3b3f5cdb 100644 --- a/var/spack/repos/builtin/packages/parallel/package.py +++ b/var/spack/repos/builtin/packages/parallel/package.py @@ -32,7 +32,12 @@ class Parallel(AutotoolsPackage): """ homepage = "http://www.gnu.org/software/parallel/" - url = "http://ftp.gnu.org/gnu/parallel/parallel-20160422.tar.bz2" + url = "http://ftp.gnu.org/gnu/parallel/parallel-20170122.tar.bz2" + version('20170122', 'c9f0ec01463dc75dbbf292fd8be5f1eb') version('20160422', '24621f684130472694333709bd4454cb') version('20160322', '4e81e0d36902ab4c4e969ee6f35e6e57') + + def check(self): + # The Makefile has a 'test' target, but it does not work + make('check') From b1eb921f2815309eecd5fd89c92e322b91ae46dd Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 9 Feb 2017 22:55:18 +0100 Subject: [PATCH 0123/2394] make svn fetch quiet (#3070) --- lib/spack/spack/fetch_strategy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index 23f3b9a41ee..eadcef85f3f 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -719,7 +719,7 @@ def fetch(self): tty.msg("Trying to check out svn repository: %s" % self.url) - args = ['checkout', '--force'] + args = ['checkout', '--force', '--quiet'] if self.revision: args += ['-r', self.revision] args.append(self.url) From b07835904afb072049c57df43d86141e8ce1ded0 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 9 Feb 2017 22:57:50 +0100 Subject: [PATCH 0124/2394] valgrind: add develop; fix build on macOS with clang (#3066) - add develop version to valgrind; fix build on macOS with clang - switch valgrind to AutotoolsPackage --- .../builtin/packages/valgrind/package.py | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/valgrind/package.py b/var/spack/repos/builtin/packages/valgrind/package.py index 0794e77ba09..b84c95fb8a4 100644 --- a/var/spack/repos/builtin/packages/valgrind/package.py +++ b/var/spack/repos/builtin/packages/valgrind/package.py @@ -22,11 +22,11 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## - from spack import * +import sys -class Valgrind(Package): +class Valgrind(AutotoolsPackage): """An instrumentation framework for building dynamic analysis. There are Valgrind tools that can automatically detect many memory @@ -44,17 +44,31 @@ class Valgrind(Package): version('3.11.0', '4ea62074da73ae82e0162d6550d3f129') version('3.10.1', '60ddae962bc79e7c95cfc4667245707f') version('3.10.0', '7c311a72a20388aceced1aa5573ce970') + version('develop', svn='svn://svn.valgrind.org/valgrind/trunk') - variant('mpi', default=True, description='Activates MPI support for valgrind') + variant('mpi', default=True, + description='Activates MPI support for valgrind') variant('boost', default=True, description='Activates boost support for valgrind') depends_on('mpi', when='+mpi') depends_on('boost', when='+boost') - def install(self, spec, prefix): - options = ['--prefix=%s' % prefix, - '--enable-ubsan'] - configure(*options) - make() - make("install") + depends_on("autoconf", type='build', when='@develop') + depends_on("automake", type='build', when='@develop') + depends_on("libtool", type='build', when='@develop') + + def configure_args(self): + spec = self.spec + options = [] + if not (spec.satisfies('%clang') and sys.platform == 'darwin'): + # Otherwise with (Apple's) clang there is a linker error: + # clang: error: unknown argument: '-static-libubsan' + options.append('--enable-ubsan') + + if sys.platform == 'darwin': + options.extend([ + '--build=amd64-darwin', + '--enable-only64bit' + ]) + return options From f1ca79ba6c4217744f2804e8392f7f0e3216e8ca Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 9 Feb 2017 15:58:17 -0600 Subject: [PATCH 0125/2394] Add latest version of PGI (#3107) --- var/spack/repos/builtin/packages/pgi/package.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py index e8a2f53497b..fe52dc24ae4 100644 --- a/var/spack/repos/builtin/packages/pgi/package.py +++ b/var/spack/repos/builtin/packages/pgi/package.py @@ -40,9 +40,10 @@ class Pgi(Package): homepage = "http://www.pgroup.com/" - version('16.5', 'a40e8852071b5d600cb42f31631b3de1') - version('16.3', '618cb7ddbc57d4e4ed1f21a0ab25f427') - version('15.7', '84a689217b17cdaf78c39270c70bea5d') + version('16.10', '9bb6bfb7b1052f9e6a45829ba7a24e47') + version('16.5', 'a40e8852071b5d600cb42f31631b3de1') + version('16.3', '618cb7ddbc57d4e4ed1f21a0ab25f427') + version('15.7', '84a689217b17cdaf78c39270c70bea5d') variant('network', default=True, description="Perform a network install") From f9e3b58d7ec2190cdb517ff89ca82019b8eb78da Mon Sep 17 00:00:00 2001 From: becker33 Date: Fri, 10 Feb 2017 10:23:04 -0800 Subject: [PATCH 0126/2394] Make distro more robust to unreadable files (#3110) * Make distro more robust to unreadable files. Will upstream * Comment for clarify --- lib/spack/external/distro.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/spack/external/distro.py b/lib/spack/external/distro.py index ca25339ec9b..c4905c25a55 100644 --- a/lib/spack/external/distro.py +++ b/lib/spack/external/distro.py @@ -993,13 +993,18 @@ def _get_distro_release_info(self): continue match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) if match: - filepath = os.path.join(_UNIXCONFDIR, basename) - distro_info = self._parse_distro_release_file(filepath) - if 'name' in distro_info: - # The name is always present if the pattern matches - self.distro_release_file = filepath - distro_info['id'] = match.group(1) - return distro_info + try: + filepath = os.path.join(_UNIXCONFDIR, basename) + distro_info = self._parse_distro_release_file(filepath) + if 'name' in distro_info: + # The name is always present if the pattern matches + self.distro_release_file = filepath + distro_info['id'] = match.group(1) + return distro_info + except IOError: + # We found a file we do not have permission to read + # Continue checking candidate files for distro file. + continue return {} def _parse_distro_release_file(self, filepath): From 2aec15a6f9472d735a204efb4c9df4bf46640dd0 Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 11 Feb 2017 00:52:39 +0100 Subject: [PATCH 0127/2394] Add version 2.49.7 to glib (#3089) --- var/spack/repos/builtin/packages/glib/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index cede9ae0ae8..91343043669 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -34,6 +34,7 @@ class Glib(AutotoolsPackage): homepage = "https://developer.gnome.org/glib/" url = "http://ftp.gnome.org/pub/gnome/sources/glib/2.42/glib-2.42.1.tar.xz" + version('2.49.7', '397ead3fcf325cb921d54e2c9e7dfd7a') version('2.49.4', 'e2c87c03017b0cd02c4c73274b92b148') version('2.48.1', '67bd3b75c9f6d5587b457dc01cdcd5bb') version('2.42.1', '89c4119e50e767d3532158605ee9121a') From 563b6ab73a1d8a2aab685f273003cfde851edfba Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 11 Feb 2017 00:55:02 +0100 Subject: [PATCH 0128/2394] Add version 2017.0.098 to intel-mkl (#3092) --- var/spack/repos/builtin/packages/intel-mkl/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 1d7ea1ee898..eb3ce37c370 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -43,6 +43,8 @@ class IntelMkl(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-mkl" + version('2017.0.098', '3cdcb739ab5ab1e047eb130b9ffdd8d0', + url="file://%s/l_mkl_2017.0.098.tgz" % os.getcwd()) version('11.3.2.181', '536dbd82896d6facc16de8f961d17d65', url="file://%s/l_mkl_11.3.2.181.tgz" % os.getcwd()) version('11.3.3.210', 'f72546df27f5ebb0941b5d21fd804e34', From 57855cab5d53c75aa7bf983877206b2c2c7ce66a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 10 Feb 2017 17:59:46 -0600 Subject: [PATCH 0129/2394] Explicitly tell MPC where to find its deps (#3073) --- var/spack/repos/builtin/packages/mpc/package.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/mpc/package.py b/var/spack/repos/builtin/packages/mpc/package.py index 39c4f3d8c08..8a807399e8a 100644 --- a/var/spack/repos/builtin/packages/mpc/package.py +++ b/var/spack/repos/builtin/packages/mpc/package.py @@ -35,11 +35,18 @@ class Mpc(AutotoolsPackage): version('1.0.3', 'd6a1d5f8ddea3abd2cc3e98f58352d26') version('1.0.2', '68fadff3358fb3e7976c7a398a0af4c3') - depends_on('gmp') # mpir is a drop-in replacement for this - depends_on('mpfr') # Could also be built against mpir + depends_on('gmp@4.3.2:') # mpir is a drop-in replacement for this + depends_on('mpfr@2.4.2:') # Could also be built against mpir def url_for_version(self, version): if version < Version("1.0.1"): return "http://www.multiprecision.org/mpc/download/mpc-%s.tar.gz" % version else: return "https://ftp.gnu.org/gnu/mpc/mpc-%s.tar.gz" % version + + def configure_args(self): + spec = self.spec + return [ + '--with-mpfr={0}'.format(spec['mpfr'].prefix), + '--with-gmp={0}'.format(spec['gmp'].prefix) + ] From 4362caa51a0827c1f90ca3de12579ae2d8c5dfc2 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 10 Feb 2017 19:00:20 -0500 Subject: [PATCH 0130/2394] es: Declare readline dependency (#3071) --- var/spack/repos/builtin/packages/es/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/es/package.py b/var/spack/repos/builtin/packages/es/package.py index 80891b66006..3ca39c74a21 100644 --- a/var/spack/repos/builtin/packages/es/package.py +++ b/var/spack/repos/builtin/packages/es/package.py @@ -37,3 +37,5 @@ class Es(AutotoolsPackage): url = "https://github.com/wryun/es-shell/releases/download/v0.9.1/es-0.9.1.tar.gz" version('0.9.1', 'bf4db55b47bcc99892468b2e0aec0c9e') + + depends_on('readline') From c98249c12981a30ad5e76a6066011d7963a6198f Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 11 Feb 2017 01:00:52 +0100 Subject: [PATCH 0131/2394] Add version 2017.0.098 to ipp (#3093) --- var/spack/repos/builtin/packages/ipp/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/ipp/package.py b/var/spack/repos/builtin/packages/ipp/package.py index c48ace79c13..a9765e1a0ad 100644 --- a/var/spack/repos/builtin/packages/ipp/package.py +++ b/var/spack/repos/builtin/packages/ipp/package.py @@ -37,6 +37,8 @@ class Ipp(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-ipp" + version('2017.0.098', 'e7be757ebe351d9f9beed7efdc7b7118', + url="file://%s/l_ipp_2017.0.098.tgz" % os.getcwd()) version('9.0.3.210', '0e1520dd3de7f811a6ef6ebc7aa429a3', url="file://%s/l_ipp_9.0.3.210.tgz" % os.getcwd()) From 2305f6434ef234a4c3c3359edf5e25822064a793 Mon Sep 17 00:00:00 2001 From: Justin M Wozniak Date: Fri, 10 Feb 2017 18:03:40 -0600 Subject: [PATCH 0132/2394] New package.py for ExM C-Utils and Turbine (#3076) * New package.py for ExM C-Utils: An initial package dependency for Swift/T * New package turbine * Fix package.py as requested by @adamjstewart * New package.py for ADLB/X: A 2nd package dependency for Swift/T * Add latest version of GNU Parallel (#3106) * Address formatting guidelines from @adamjstewart * WIP on new Turbine package.py * Formatting fixes * Complete Turbine package.py --- .../repos/builtin/packages/adlbx/package.py | 41 +++++++++++++++++ .../builtin/packages/exmcutils/package.py | 37 +++++++++++++++ .../repos/builtin/packages/turbine/package.py | 45 +++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 var/spack/repos/builtin/packages/adlbx/package.py create mode 100644 var/spack/repos/builtin/packages/exmcutils/package.py create mode 100644 var/spack/repos/builtin/packages/turbine/package.py diff --git a/var/spack/repos/builtin/packages/adlbx/package.py b/var/spack/repos/builtin/packages/adlbx/package.py new file mode 100644 index 00000000000..4bb6c438aa0 --- /dev/null +++ b/var/spack/repos/builtin/packages/adlbx/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Adlbx(AutotoolsPackage): + """ADLB/X: Master-worker library + work stealing and data dependencies""" + + homepage = "http://swift-lang.org/Swift-T" + url = "http://swift-lang.github.io/swift-t-downloads/adlbx-0.8.0.tar.gz" + version('0.8.0', '34ade59ce3be5bc296955231d47a27dd') + + depends_on('exmcutils') + depends_on('mpi') + + def configure_args(self): + args = ["--with-c-utils=" + self.spec['exmcutils'].prefix] + return args diff --git a/var/spack/repos/builtin/packages/exmcutils/package.py b/var/spack/repos/builtin/packages/exmcutils/package.py new file mode 100644 index 00000000000..c0b2cdac973 --- /dev/null +++ b/var/spack/repos/builtin/packages/exmcutils/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Exmcutils(AutotoolsPackage): + """ExM C-Utils: Generic C utility library for ADLB/X and Swift/T""" + + homepage = "http://swift-lang.org/Swift-T" + url = "http://swift-lang.github.io/swift-t-downloads/exmcutils-0.5.3.tar.gz" + + version('0.5.3', '0e3ed6cc2991c684cd8f08db45c99a39') + + # This package has no dependencies. diff --git a/var/spack/repos/builtin/packages/turbine/package.py b/var/spack/repos/builtin/packages/turbine/package.py new file mode 100644 index 00000000000..20bc0303a09 --- /dev/null +++ b/var/spack/repos/builtin/packages/turbine/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Turbine(AutotoolsPackage): + + homepage = "http://swift-lang.org/Swift-T" + url = "http://swift-lang.github.io/swift-t-downloads/turbine-1.0.0.tar.gz" + + version('1.0.0', '7ed56d65d6db0bfe15a439d818b4259e') + + depends_on('adlbx') + depends_on('tcl') + depends_on('zsh') + + def configure_args(self): + args = ["--with-c-utils=" + self.spec['exmcutils'].prefix, + "--with-adlb=" + self.spec['adlbx'].prefix, + "--with-tcl=" + self.spec['tcl'].prefix, + "--with-mpi=" + self.spec['mpi'].prefix] + return args From cbbf5791bade31cfaab0da9104582955eead5411 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 11 Feb 2017 01:05:07 +0100 Subject: [PATCH 0133/2394] numdiff: update dependencies and fix (#3061) compile with -O0 as per upstream known issue with optimization and GMP, according to Ubuntu folks. --- .../repos/builtin/packages/numdiff/package.py | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/numdiff/package.py b/var/spack/repos/builtin/packages/numdiff/package.py index 0a912d3db98..64ba565032c 100644 --- a/var/spack/repos/builtin/packages/numdiff/package.py +++ b/var/spack/repos/builtin/packages/numdiff/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import sys class Numdiff(AutotoolsPackage): @@ -34,6 +33,35 @@ class Numdiff(AutotoolsPackage): homepage = 'https://www.nongnu.org/numdiff' url = 'http://nongnu.askapache.com/numdiff/numdiff-5.8.1.tar.gz' - version('5.8.1', 'a295eb391f6cb1578209fc6b4f9d994e') + version('5.8.1', 'a295eb391f6cb1578209fc6b4f9d994e') - depends_on('gettext', when=sys.platform == 'darwin') + variant('nls', default=False, + description="Enable Natural Language Support") + variant('gmp', default=False, + description="Use GNU Multiple Precision Arithmetic Library") + + depends_on('gettext', when='+nls') + depends_on('gmp', when='+gmp') + + def configure_args(self): + spec = self.spec + args = [] + if '+nls' in spec: + args.append('--enable-nls') + else: + args.append('--disable-nls') + + if '+gmp' in spec: + # compile with -O0 as per upstream known issue with optimization + # and GMP; https://launchpad.net/ubuntu/+source/numdiff/+changelog + # http://www.nongnu.org/numdiff/#issues + # keep this variant off by default as one still encounter + # GNU MP: Cannot allocate memory (size=2305843009206983184) + args.extend([ + '--enable-gmp', + 'CFLAGS=-O0' + ]) + else: + args.append('--disable-gmp') + + return args From e24fdb49ea92fe310d5a39e610821bf0e51be8b1 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 11 Feb 2017 01:09:43 +0100 Subject: [PATCH 0134/2394] fix: don't call setup_environment when not needed (#3060) * Don't call setup_environment when not needed. fixes #3059 * setup_environment and modules: added unit tests --- lib/spack/spack/modules.py | 1 - lib/spack/spack/package.py | 2 +- lib/spack/spack/test/modules.py | 15 +++++++++++++++ .../builtin.mock/packages/callpath/package.py | 3 +++ .../builtin.mock/packages/mpileaks/package.py | 3 +++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index 885f2197eff..a6ffded9353 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -389,7 +389,6 @@ def write(self, overwrite=False): for mod in modules: set_module_variables_for_package(package, mod) set_module_variables_for_package(package, package.module) - package.setup_environment(spack_env, env) package.setup_dependent_package(self.pkg.module, self.spec) package.setup_dependent_environment(spack_env, env, self.spec) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index e5ea8c56add..361691379ec 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1452,7 +1452,7 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): This is useful if there are some common steps to installing all extensions for a certain package. """ - self.setup_environment(spack_env, run_env) + pass def setup_dependent_package(self, module, dependent_spec): """Set up Python module-scope variables for dependent packages. diff --git a/lib/spack/spack/test/modules.py b/lib/spack/spack/test/modules.py index 4f35df19827..bb1b0006f80 100644 --- a/lib/spack/spack/test/modules.py +++ b/lib/spack/spack/test/modules.py @@ -357,6 +357,21 @@ def test_suffixes(self, tcl_factory): generator = tcl_factory(spec) assert 'bar' in generator.use_name + def test_setup_environment(self, tcl_factory): + spec = spack.spec.Spec('mpileaks') + spec.concretize() + content = get_modulefile_content(tcl_factory, spec) + assert len([x for x in content if 'setenv FOOBAR' in x]) == 1 + assert len( + [x for x in content if 'setenv FOOBAR "mpileaks"' in x] + ) == 1 + + content = get_modulefile_content(tcl_factory, spec['callpath']) + assert len([x for x in content if 'setenv FOOBAR' in x]) == 1 + assert len( + [x for x in content if 'setenv FOOBAR "callpath"' in x] + ) == 1 + @pytest.mark.usefixtures('config', 'builtin_mock', 'stringio_open') class TestLmod(object): diff --git a/var/spack/repos/builtin.mock/packages/callpath/package.py b/var/spack/repos/builtin.mock/packages/callpath/package.py index 56b969df98a..c00f4088662 100644 --- a/var/spack/repos/builtin.mock/packages/callpath/package.py +++ b/var/spack/repos/builtin.mock/packages/callpath/package.py @@ -40,3 +40,6 @@ def install(self, spec, prefix): configure("--prefix=%s" % prefix) make() make("install") + + def setup_environment(self, senv, renv): + renv.set('FOOBAR', self.name) diff --git a/var/spack/repos/builtin.mock/packages/mpileaks/package.py b/var/spack/repos/builtin.mock/packages/mpileaks/package.py index 10fbf3845eb..749fcc601ad 100644 --- a/var/spack/repos/builtin.mock/packages/mpileaks/package.py +++ b/var/spack/repos/builtin.mock/packages/mpileaks/package.py @@ -44,3 +44,6 @@ class Mpileaks(Package): def install(self, spec, prefix): pass + + def setup_environment(self, senv, renv): + renv.set('FOOBAR', self.name) From 6e2903534a0444ac9c36c512fec7042a711aaa3f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 10 Feb 2017 18:17:55 -0600 Subject: [PATCH 0135/2394] Add patch to allow PGI to build Bison (#3044) --- var/spack/repos/builtin/packages/bison/package.py | 4 +++- var/spack/repos/builtin/packages/bison/pgi.patch | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/bison/pgi.patch diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index a9691fab8b1..2615266c8ad 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -35,6 +35,8 @@ class Bison(AutotoolsPackage): version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8') - depends_on("m4", type='build') + depends_on('m4', type='build') + + patch('pgi.patch', when='@3.0.4') build_directory = 'spack-build' diff --git a/var/spack/repos/builtin/packages/bison/pgi.patch b/var/spack/repos/builtin/packages/bison/pgi.patch new file mode 100644 index 00000000000..8aeaa96a516 --- /dev/null +++ b/var/spack/repos/builtin/packages/bison/pgi.patch @@ -0,0 +1,10 @@ +--- a/lib/config.in.h ++++ b/lib/config.in.h +@@ -2182,6 +2182,7 @@ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : (199901L <= __STDC_VERSION__ \ + && !defined __HP_cc \ ++ && !defined __PGI \ + && !(defined __SUNPRO_C && __STDC__))) \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) + # define _GL_INLINE inline From 4dd0b349f971cd5ba4842f79a7dba36bf4999b6f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 10 Feb 2017 18:18:56 -0600 Subject: [PATCH 0136/2394] Add Jmol package (#3041) --- .../repos/builtin/packages/jmol/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/jmol/package.py diff --git a/var/spack/repos/builtin/packages/jmol/package.py b/var/spack/repos/builtin/packages/jmol/package.py new file mode 100644 index 00000000000..ec58fa844a6 --- /dev/null +++ b/var/spack/repos/builtin/packages/jmol/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree + + +class Jmol(Package): + """Jmol: an open-source Java viewer for chemical structures in 3D + with features for chemicals, crystals, materials and biomolecules.""" + + homepage = "http://jmol.sourceforge.net/" + url = "https://sourceforge.net/projects/jmol/files/Jmol/Version%2014.8/Jmol%2014.8.0/Jmol-14.8.0-binary.tar.gz" + + version('14.8.0', '3c9f4004b9e617ea3ea0b78ab32397ea') + + depends_on('jdk', type='run') + + def install(self, spec, prefix): + copy_tree('jmol-{0}'.format(self.version), prefix) + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PATH', self.prefix) + run_env.set('JMOL_HOME', self.prefix) From e34acd007413970974e81628208c150532feed5f Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 11 Feb 2017 03:21:52 +0100 Subject: [PATCH 0137/2394] qa: allow fast finish to avoid consuming a precious OSX build on a PR that will fail (#3120) --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 2e7b1c64fcb..11e7e5fac3a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,7 @@ branches: # Build matrix #============================================================================= matrix: + fast_finish: true include: - python: '2.6' os: linux From 56952aaf1f1eace70c4a21d82c54f90bfb176cae Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Mon, 13 Feb 2017 11:57:46 -0800 Subject: [PATCH 0138/2394] LBANN (#3049) * Creating a spack package for LLNL's LBANN (Livermore Big Artificial Neural Network) training toolkit. * Recipe for building LBANN toolkit. Contains limited feature set and is optimized for building with GNU gcc and OpenBLAS. * Removed unnecessary dependencies based on reviewers feedback. * Added support for the int64 data type in the Elemental library. This is required for supporting indices for large matrices. * Added a variant to force a sequential weight matrix initialization. This is slow, but provides an initialization that is independent of model parallelism. * Added a guard to prevent building Elemental with the Intel compiler for versions that have known bugs. --- .../builtin/packages/elemental/package.py | 8 ++ .../repos/builtin/packages/lbann/package.py | 83 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 var/spack/repos/builtin/packages/lbann/package.py diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index 625f0a1e3eb..4aae98e3e14 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +from spack.spec import UnsupportedCompilerError class Elemental(CMakePackage): @@ -32,6 +33,7 @@ class Elemental(CMakePackage): homepage = "http://libelemental.org" url = "https://github.com/elemental/Elemental/archive/v0.87.6.tar.gz" + version('0.87.7', '6c1e7442021c59a36049e37ea69b8075') version('0.87.6', '9fd29783d45b0a0e27c0df85f548abe9') variant('debug', default=False, @@ -94,6 +96,12 @@ def build_type(self): def cmake_args(self): spec = self.spec + + if '@:0.87.7' in spec and '%intel@:17.0.2' in spec: + raise UnsupportedCompilerError( + "Elemental {0} has a known bug with compiler: {1} {2}".format( + spec.version, spec.compiler.name, spec.compiler.version)) + args = [ '-DCMAKE_INSTALL_MESSAGE:STRING=LAZY', '-DEL_PREFER_OPENBLAS:BOOL=TRUE', diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py new file mode 100644 index 00000000000..341487ca770 --- /dev/null +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -0,0 +1,83 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Lbann(CMakePackage): + """LBANN: Livermore Big Artificial Neural Network Toolkit. A distributed + memory, HPC-optimized, model and data parallel training toolkit for deep + neural networks.""" + + homepage = "http://software.llnl.gov/lbann/" + url = "https://github.com/LLNL/lbann/archive/v0.91.tar.gz" + + version('develop', git='https://github.com/LLNL/lbann.git', branch="develop") + version('0.91', '83b0ec9cd0b7625d41dfb06d2abd4134') + + variant('debug', default=False, description='Builds a debug version of the libraries') + variant('gpu', default=False, description='Builds with support for GPUs via CUDA and cuDNN') + variant('opencv', default=True, description='Builds with support for image processing routines with OpenCV') + variant('seq_init', default=False, description='Force serial initialization of weight matrices.') + + depends_on('elemental +openmp_blas +scalapack +shared +int64') + depends_on('elemental +openmp_blas +scalapack +shared +int64 +debug', when='+debug') + depends_on('cuda', when='+gpu') + depends_on('mpi') + depends_on('opencv@2.4.13', when='+opencv') + depends_on('protobuf@3.0.2') + + def build_type(self): + if '+debug' in self.spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + spec = self.spec + # Environment variables + CPPFLAGS = [] + CPPFLAGS.append('-DLBANN_SET_EL_RNG') + if '~seq_init' in spec: + CPPFLAGS.append('-DLBANN_PARALLEL_RANDOM_MATRICES') + + args = [ + '-DCMAKE_INSTALL_MESSAGE=LAZY', + '-DCMAKE_CXX_FLAGS=%s' % ' '.join(CPPFLAGS), + '-DWITH_CUDA:BOOL=%s' % ('+gpu' in spec), + '-DWITH_CUDNN:BOOL=%s' % ('+gpu' in spec), + '-DWITH_TBINF=OFF', + '-DWITH_VTUNE=OFF', + '-DElemental_DIR={0}'.format(self.spec['elemental'].prefix), + '-DELEMENTAL_MATH_LIBS={0}'.format( + self.spec['elemental'].elemental_libs), + '-DVERBOSE=0', + '-DLBANN_HOME=.', + '-DLBANN_VER=spack'] + + if '+opencv' in self.spec: + args.extend(['-DOpenCV_DIR:STRING={0}'.format( + self.spec['opencv'].prefix)]) + + return args From 4a20d170f43d2c8c5c165da2dbd0cb40787d97ff Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Tue, 14 Feb 2017 10:52:05 -0800 Subject: [PATCH 0139/2394] fixes for pygtk and some dependencies (#3077) --- .../builtin/packages/fontconfig/package.py | 11 +++- .../repos/builtin/packages/gtkplus/package.py | 1 + .../builtin/packages/py-pygobject/package.py | 11 ++-- .../pygobject-2.28.6-gio-types-2.32.patch | 50 +++++++++++++++++++ .../builtin/packages/py-pygtk/package.py | 8 +-- .../builtin/packages/py-virtualenv/package.py | 2 +- 6 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-pygobject/pygobject-2.28.6-gio-types-2.32.patch diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py index 4f79bbb6fcc..ec486bac61e 100644 --- a/var/spack/repos/builtin/packages/fontconfig/package.py +++ b/var/spack/repos/builtin/packages/fontconfig/package.py @@ -35,7 +35,7 @@ class Fontconfig(AutotoolsPackage): depends_on('freetype') depends_on('libxml2') depends_on('pkg-config', type='build') - depends_on('font-util', type='build') + depends_on('font-util') def configure_args(self): font_path = join_path(self.spec['font-util'].prefix, 'share', 'fonts') @@ -44,3 +44,12 @@ def configure_args(self): "--enable-libxml2", "--disable-docs", "--with-default-fonts={0}".format(font_path)] + + @run_after('install') + def system_fonts(self): + # point configuration file to system-install fonts + # gtk applications were failing to display text without this + config_file = join_path(self.prefix, 'etc', 'fonts', 'fonts.conf') + filter_file('fonts', + 'fonts/usr/share/fonts', + config_file) diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index b17b1877ec4..13036c3e338 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -42,6 +42,7 @@ class Gtkplus(AutotoolsPackage): depends_on("pango") depends_on("pango~X", when='~X') depends_on("pango+X", when='+X') + depends_on('gobject-introspection', when='+X') def patch(self): # remove disable deprecated flag. diff --git a/var/spack/repos/builtin/packages/py-pygobject/package.py b/var/spack/repos/builtin/packages/py-pygobject/package.py index 1dae1a128bd..52a8c13dd63 100644 --- a/var/spack/repos/builtin/packages/py-pygobject/package.py +++ b/var/spack/repos/builtin/packages/py-pygobject/package.py @@ -31,18 +31,23 @@ class PyPygobject(AutotoolsPackage): homepage = "https://pypi.python.org/pypi/pygobject" - # FIXME: This URL is no longer available for download from PyPi - url = "https://pypi.python.org/packages/6d/15/97c8b5ccca2be14cf59a2f79e15e3a82a1c3408a6b76b4107689a8b94846/pygobject-2.28.3.tar.bz2" + url = "http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.28/pygobject-2.28.6.tar.bz2" + version('2.28.6', 'a43d783228dd32899e6908352b8308f3') version('2.28.3', 'aa64900b274c4661a5c32e52922977f9') extends('python') + depends_on("libffi") depends_on('glib') depends_on('py-py2cairo') depends_on('gobject-introspection') - patch('pygobject-2.28.6-introspection-1.patch') + patch('pygobject-2.28.6-introspection-1.patch', when='@2.28.3:2.28.6') + + # patch from https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/development/python-modules/pygobject/pygobject-2.28.6-gio-types-2.32.patch + # for https://bugzilla.gnome.org/show_bug.cgi?id=668522 + patch('pygobject-2.28.6-gio-types-2.32.patch', when='@2.28.6') def install(self, spec, prefix): make('install', parallel=False) diff --git a/var/spack/repos/builtin/packages/py-pygobject/pygobject-2.28.6-gio-types-2.32.patch b/var/spack/repos/builtin/packages/py-pygobject/pygobject-2.28.6-gio-types-2.32.patch new file mode 100644 index 00000000000..fa0adf54ad0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pygobject/pygobject-2.28.6-gio-types-2.32.patch @@ -0,0 +1,50 @@ +From 42d01f060c5d764baa881d13c103d68897163a49 Mon Sep 17 00:00:00 2001 +From: Ryan Lortie +Date: Mon, 12 Mar 2012 16:44:14 -0400 +Subject: [PATCH] gio-types.defs: change some enums to flags + +These flags types were originally incorrectly handled in glib as being +enums. That bug was fixed, but they're still enums here, leading to +warnings about the mismatch. + +Change them to flags. + +https://bugzilla.gnome.org/show_bug.cgi?id=668522 +--- + gio/gio-types.defs | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/gio/gio-types.defs b/gio/gio-types.defs +index 331e0bc..7eee5c8 100644 +--- a/gio/gio-types.defs ++++ b/gio/gio-types.defs +@@ -526,7 +526,7 @@ + ) + ) + +-(define-enum MountMountFlags ++(define-flags MountMountFlags + (in-module "gio") + (c-name "GMountMountFlags") + (gtype-id "G_TYPE_MOUNT_MOUNT_FLAGS") +@@ -545,7 +545,7 @@ + ) + ) + +-(define-enum DriveStartFlags ++(define-flags DriveStartFlags + (in-module "gio") + (c-name "GDriveStartFlags") + (gtype-id "G_TYPE_DRIVE_START_FLAGS") +@@ -770,7 +770,7 @@ + ) + ) + +-(define-enum SocketMsgFlags ++(define-flags SocketMsgFlags + (in-module "gio") + (c-name "GSocketMsgFlags") + (gtype-id "G_TYPE_SOCKET_MSG_FLAGS") +-- +1.7.8.5 + diff --git a/var/spack/repos/builtin/packages/py-pygtk/package.py b/var/spack/repos/builtin/packages/py-pygtk/package.py index 56e0b39fd57..462bc88910a 100644 --- a/var/spack/repos/builtin/packages/py-pygtk/package.py +++ b/var/spack/repos/builtin/packages/py-pygtk/package.py @@ -26,7 +26,8 @@ class PyPygtk(AutotoolsPackage): - """bindings for the Gtk in Python""" + """bindings for the Gtk2 in Python. + use pygobject for Gtk3.""" homepage = "http://www.pygtk.org/" url = "http://ftp.gnome.org/pub/GNOME/sources/pygtk/2.24/pygtk-2.24.0.tar.gz" @@ -36,8 +37,9 @@ class PyPygtk(AutotoolsPackage): depends_on("libffi") depends_on('cairo') depends_on('glib') - depends_on('gtkplus') - depends_on('py-pygobject') + # for GTK 3.X use pygobject 3.X instead of pygtk + depends_on('gtkplus+X@2.24:2.99') + depends_on('py-pygobject@2.28:2.99') depends_on('py-py2cairo') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/py-virtualenv/package.py b/var/spack/repos/builtin/packages/py-virtualenv/package.py index 5e6431b6372..535a525b1cc 100644 --- a/var/spack/repos/builtin/packages/py-virtualenv/package.py +++ b/var/spack/repos/builtin/packages/py-virtualenv/package.py @@ -34,4 +34,4 @@ class PyVirtualenv(PythonPackage): version('13.0.1', '1ffc011bde6667f0e37ecd976f4934db') version('15.0.1', '28d76a0d9cbd5dc42046dd14e76a6ecc') - depends_on('py-setuptools', type='build') + depends_on('py-setuptools') # not just build-time, requires pkg_resources From 7bebfd29c2190a645fcfec208d492cf3c096f763 Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Tue, 14 Feb 2017 14:28:35 -0500 Subject: [PATCH 0140/2394] spectrum-mpi: Add url info to spectrum-mpi package file (#3042) Spack wants URL info even for external packages. Without it, I get the following error: NoURLError: Package SpectrumMpi has no version with a URL. File "/home_local/serbanspack/spack/lib/spack/spack/repository.py", line 580, in get self._instances[key] = package_class(copy) File "/home_local/serbanspack/spack/lib/spack/spack/package.py", line 562, in __init__ f = fs.for_package_version(self, self.version) File "/home_local/serbanspack/spack/lib/spack/spack/fetch_strategy.py", line 878, in for_package_version url = pkg.url_for_version(version) File "/home_local/serbanspack/spack/lib/spack/spack/package.py", line 682, in url_for_version raise NoURLError(cls) --- var/spack/repos/builtin/packages/spectrum-mpi/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/spectrum-mpi/package.py b/var/spack/repos/builtin/packages/spectrum-mpi/package.py index 28ba423b9cc..58af1acc841 100644 --- a/var/spack/repos/builtin/packages/spectrum-mpi/package.py +++ b/var/spack/repos/builtin/packages/spectrum-mpi/package.py @@ -32,6 +32,7 @@ class SpectrumMpi(Package): """ homepage = "http://www-03.ibm.com/systems/spectrum-computing/products/mpi" + url = "http://www-03.ibm.com/systems/spectrum-computing/products/mpi" provides('mpi') From f7a0a6fbc4dffa056406da434b60de2e0e9b2496 Mon Sep 17 00:00:00 2001 From: Ce Qin Date: Fri, 17 Feb 2017 10:37:20 +0800 Subject: [PATCH 0141/2394] Add tag master for version develop of dealii. (#3048) --- var/spack/repos/builtin/packages/dealii/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index ca26edfb400..e4c7579f312 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -42,7 +42,7 @@ class Dealii(CMakePackage): version('8.3.0', 'fc6cdcb16309ef4bea338a4f014de6fa') version('8.2.1', '71c728dbec14f371297cd405776ccf08') version('8.1.0', 'aa8fadc2ce5eb674f44f997461bf668d') - version('develop', git='https://github.com/dealii/dealii.git') + version('develop', git='https://github.com/dealii/dealii.git', tag='master') variant('mpi', default=True, description='Compile with MPI') variant('arpack', default=True, From c2fa7b12546a1d3393b9121f7e8bda4fedebff67 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Feb 2017 09:11:54 -0600 Subject: [PATCH 0142/2394] Add latest version of OpenSSL (#3171) --- var/spack/repos/builtin/packages/openssl/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index f74a4203561..01af951773a 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -41,6 +41,7 @@ class Openssl(Package): # remain supported until 2019. We could thus make this version the # preferred version, if we find that many packages cannot handle # version 1.1. + version('1.1.0e', '51c42d152122e474754aea96f66928c6') version('1.1.0d', '711ce3cd5f53a99c0e12a7d5804f0f63') version('1.1.0c', '601e8191f72b18192a937ecf1a800f3f') version('1.0.2k', 'f965fc0bf01bf882b31314b61391ae65') From 163bdfde93a9cbbdc3b5415d0a79cb0f57dc0ebb Mon Sep 17 00:00:00 2001 From: Justin M Wozniak Date: Fri, 17 Feb 2017 13:35:45 -0600 Subject: [PATCH 0143/2394] Swift/T: all packages (#3130) * New package.py for ExM C-Utils: An initial package dependency for Swift/T * New package.py for ADLB/X: A 2nd package dependency for Swift/T * New package.py for Turbine * New package.py for STC --- .../repos/builtin/packages/adlbx/package.py | 6 +-- .../builtin/packages/exmcutils/package.py | 4 +- .../repos/builtin/packages/stc/package.py | 43 +++++++++++++++++++ .../repos/builtin/packages/turbine/package.py | 15 ++++--- 4 files changed, 56 insertions(+), 12 deletions(-) create mode 100644 var/spack/repos/builtin/packages/stc/package.py diff --git a/var/spack/repos/builtin/packages/adlbx/package.py b/var/spack/repos/builtin/packages/adlbx/package.py index 4bb6c438aa0..ad54320007e 100644 --- a/var/spack/repos/builtin/packages/adlbx/package.py +++ b/var/spack/repos/builtin/packages/adlbx/package.py @@ -29,13 +29,13 @@ class Adlbx(AutotoolsPackage): """ADLB/X: Master-worker library + work stealing and data dependencies""" - homepage = "http://swift-lang.org/Swift-T" - url = "http://swift-lang.github.io/swift-t-downloads/adlbx-0.8.0.tar.gz" + homepage = 'http://swift-lang.org/Swift-T' + url = 'http://swift-lang.github.io/swift-t-downloads/adlbx-0.8.0.tar.gz' version('0.8.0', '34ade59ce3be5bc296955231d47a27dd') depends_on('exmcutils') depends_on('mpi') def configure_args(self): - args = ["--with-c-utils=" + self.spec['exmcutils'].prefix] + args = ['--with-c-utils=' + self.spec['exmcutils'].prefix] return args diff --git a/var/spack/repos/builtin/packages/exmcutils/package.py b/var/spack/repos/builtin/packages/exmcutils/package.py index c0b2cdac973..73f3df3c9b5 100644 --- a/var/spack/repos/builtin/packages/exmcutils/package.py +++ b/var/spack/repos/builtin/packages/exmcutils/package.py @@ -29,8 +29,8 @@ class Exmcutils(AutotoolsPackage): """ExM C-Utils: Generic C utility library for ADLB/X and Swift/T""" - homepage = "http://swift-lang.org/Swift-T" - url = "http://swift-lang.github.io/swift-t-downloads/exmcutils-0.5.3.tar.gz" + homepage = 'http://swift-lang.org/Swift-T' + url = 'http://swift-lang.github.io/swift-t-downloads/exmcutils-0.5.3.tar.gz' version('0.5.3', '0e3ed6cc2991c684cd8f08db45c99a39') diff --git a/var/spack/repos/builtin/packages/stc/package.py b/var/spack/repos/builtin/packages/stc/package.py new file mode 100644 index 00000000000..d8daa4e20e1 --- /dev/null +++ b/var/spack/repos/builtin/packages/stc/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Stc(AutotoolsPackage): + """STC: The Swift-Turbine Compiler""" + + homepage = 'http://swift-lang.org/Swift-T' + url = 'http://swift-lang.github.io/swift-t-downloads/stc-0.7.3.tar.gz' + + version('0.7.3', '6bf769f406f6c33d1c134521373718d3') + + depends_on('jdk') + depends_on('ant') + depends_on('turbine') + + def configure_args(self): + args = ['--with-turbine=' + self.spec['turbine'].prefix] + return args diff --git a/var/spack/repos/builtin/packages/turbine/package.py b/var/spack/repos/builtin/packages/turbine/package.py index 20bc0303a09..ed5c4d1000e 100644 --- a/var/spack/repos/builtin/packages/turbine/package.py +++ b/var/spack/repos/builtin/packages/turbine/package.py @@ -27,19 +27,20 @@ class Turbine(AutotoolsPackage): + """Turbine: The Swift/T runtime""" - homepage = "http://swift-lang.org/Swift-T" - url = "http://swift-lang.github.io/swift-t-downloads/turbine-1.0.0.tar.gz" + homepage = 'http://swift-lang.org/Swift-T' + url = 'http://swift-lang.github.io/swift-t-downloads/turbine-1.0.0.tar.gz' version('1.0.0', '7ed56d65d6db0bfe15a439d818b4259e') depends_on('adlbx') depends_on('tcl') - depends_on('zsh') + depends_on('zsh', type='run') def configure_args(self): - args = ["--with-c-utils=" + self.spec['exmcutils'].prefix, - "--with-adlb=" + self.spec['adlbx'].prefix, - "--with-tcl=" + self.spec['tcl'].prefix, - "--with-mpi=" + self.spec['mpi'].prefix] + args = ['--with-c-utils=' + self.spec['exmcutils'].prefix, + '--with-adlb=' + self.spec['adlbx'].prefix, + '--with-tcl=' + self.spec['tcl'].prefix, + '--with-mpi=' + self.spec['mpi'].prefix] return args From 4f6001112199524910e7754e13564e7f5d107d05 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Feb 2017 13:39:05 -0600 Subject: [PATCH 0144/2394] Add patch to allow ncurses to be built with PGI (#3135) --- .../repos/builtin/packages/ncurses/package.py | 41 +++++++++---------- .../builtin/packages/ncurses/sed_pgi.patch | 11 +++++ 2 files changed, 30 insertions(+), 22 deletions(-) create mode 100644 var/spack/repos/builtin/packages/ncurses/sed_pgi.patch diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index e4fd5bf2695..79b5e88cebe 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -25,14 +25,12 @@ from spack import * -class Ncurses(Package): +class Ncurses(AutotoolsPackage): """The ncurses (new curses) library is a free software emulation of - curses in System V Release 4.0, and more. It uses terminfo format, - supports pads and color and multiple highlights and forms - characters and function-key mapping, and has all the other - SYSV-curses enhancements over BSD curses. - - """ + curses in System V Release 4.0, and more. It uses terminfo format, + supports pads and color and multiple highlights and forms + characters and function-key mapping, and has all the other + SYSV-curses enhancements over BSD curses.""" homepage = "http://invisible-island.net/ncurses/ncurses.html" url = "http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.0.tar.gz" @@ -40,20 +38,19 @@ class Ncurses(Package): version('6.0', 'ee13d052e1ead260d7c28071f46eefb1') version('5.9', '8cb9c412e5f2d96bc6f459aa8c6282a1') - patch('patch_gcc_5.txt', when='%gcc@5.0:') + patch('patch_gcc_5.txt', when='@6.0%gcc@5.0:') + patch('sed_pgi.patch', when='@:6.0') - def install(self, spec, prefix): - opts = [ - "--prefix=%s" % prefix, - "--with-shared", - "--with-cxx-shared", - "--enable-widec", - "--enable-overwrite", - "--disable-lib-suffixes", - "--without-ada", - "--enable-pc-files", - "--with-pkg-config-libdir={0}/lib/pkgconfig".format(prefix) + def configure_args(self): + return [ + 'CFLAGS={0}'.format(self.compiler.pic_flag), + 'CXXFLAGS={0}'.format(self.compiler.pic_flag), + '--with-shared', + '--with-cxx-shared', + '--enable-widec', + '--enable-overwrite', + '--disable-lib-suffixes', + '--without-ada', + '--enable-pc-files', + '--with-pkg-config-libdir={0}/lib/pkgconfig'.format(self.prefix) ] - configure(*opts) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/ncurses/sed_pgi.patch b/var/spack/repos/builtin/packages/ncurses/sed_pgi.patch new file mode 100644 index 00000000000..f51b96c5213 --- /dev/null +++ b/var/spack/repos/builtin/packages/ncurses/sed_pgi.patch @@ -0,0 +1,11 @@ +--- a/ncurses/tty/MKexpanded.sh 2017-02-12 09:09:33.828954282 -0600 ++++ b/ncurses/tty/MKexpanded.sh 2017-02-12 09:11:03.430673306 -0600 +@@ -125,7 +125,7 @@ + EOF + + $preprocessor $TMP 2>/dev/null | \ +- sed -e '1,/^IGNORE$/d' -e 's/^@/#/' -e 's/^#if_/#if /' ++ sed -e '1,/^IGNORE$/d' -e 's/^@/#/' -e 's/^#[ ]*if_/#if /' + + cat < Date: Fri, 17 Feb 2017 13:39:21 -0600 Subject: [PATCH 0145/2394] Add new version of zlib, deprecate 1.2.10 (#3136) --- var/spack/repos/builtin/packages/zlib/package.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 05b9bb8deda..86e153fbae6 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -32,10 +32,9 @@ class Zlib(AutotoolsPackage): homepage = "http://zlib.net" url = "http://zlib.net/fossils/zlib-1.2.10.tar.gz" - version('1.2.10', 'd9794246f853d15ce0fcbf79b9a3cf13') - # author had this to say about 1.2.9.... - # Due to the bug fixes, any installations of 1.2.9 should be immediately - # replaced with 1.2.10. + version('1.2.11', '1c9f62f0778697a09d36121ead88e08e') + # Due to the bug fixes, any installations of 1.2.9 or 1.2.10 should be + # immediately replaced with 1.2.11. version('1.2.8', '44d667c142d7cda120332623eab69f40') variant('pic', default=True, From 78962c8978c2f5b1badfb4c19c38d64c7870ba24 Mon Sep 17 00:00:00 2001 From: "Kelly (KT) Thompson" Date: Fri, 17 Feb 2017 12:40:14 -0700 Subject: [PATCH 0146/2394] Provide Random123 header-only package. (#3141) Add DESRES Random123 package: - http://www.deshawresearch.com/resources_random123.html --- .../builtin/packages/random123/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/random123/package.py diff --git a/var/spack/repos/builtin/packages/random123/package.py b/var/spack/repos/builtin/packages/random123/package.py new file mode 100644 index 00000000000..b5096f67673 --- /dev/null +++ b/var/spack/repos/builtin/packages/random123/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Random123(Package): + """Random123 is a library of 'counter-based' random number + generators (CBRNGs), in which the Nth random number can be obtained + by applying a stateless mixing function to N instead of the + conventional approach of using N iterations of a stateful + transformation.""" + homepage = "http://www.deshawresearch.com/resources_random123.html" + url = "http://www.deshawresearch.com/downloads/download_random123.cgi/Random123-1.09.tar.gz" + + version('1.09', '67ae45ff94b12acea590a6aa04ed1123') + + def install(self, spec, prefix): + # Random123 doesn't have a build system. + # We have to do our own install here. + install_tree('include', prefix.include) + install('./LICENSE', "%s" % prefix) From 0f51daff24717d1837227f6630b20a2f6472dfdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Bederi=C3=A1n?= Date: Fri, 17 Feb 2017 21:44:16 +0200 Subject: [PATCH 0147/2394] hdf5: configure uses FCFLAGS instead of FFLAGS (#3155) When building `hdf5+pic`, `-fPIC` wasn't being passed to the fortran compiler because `configure` takes `FCFLAGS` instead of `FFLAGS`. --- var/spack/repos/builtin/packages/hdf5/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 5e82818697d..3b646f825cd 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -126,7 +126,7 @@ def configure_args(self): if '+pic' in spec: extra_args.append('CFLAGS={0}'.format(self.compiler.pic_flag)) extra_args.append('CXXFLAGS={0}'.format(self.compiler.pic_flag)) - extra_args.append('FFLAGS={0}'.format(self.compiler.pic_flag)) + extra_args.append('FCFLAGS={0}'.format(self.compiler.pic_flag)) if '+mpi' in spec: # The HDF5 configure script warns if cxx and mpi are enabled From 3c5024232c48faa320a266298b656a148bee1aa1 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 17 Feb 2017 20:46:58 +0100 Subject: [PATCH 0148/2394] abinit: fix compilation on macOS, disable internal netcdf (#3157) * abinit: fix compilation on macOS * disable internal netcdf --- var/spack/repos/builtin/packages/abinit/package.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/abinit/package.py b/var/spack/repos/builtin/packages/abinit/package.py index 76fa044982d..ff27f69723b 100644 --- a/var/spack/repos/builtin/packages/abinit/package.py +++ b/var/spack/repos/builtin/packages/abinit/package.py @@ -25,7 +25,6 @@ # # Author: Matteo Giantomassi # Date: October 11, 2016 - from spack import * @@ -63,6 +62,10 @@ class Abinit(Package): # TODO: To be tested. # It was working before the last `git pull` but now all tests crash. # For the time being, the default is netcdf3 and the internal fallbacks + # FIXME: rename (trio?) and use multivalued variants to cover + # --with-trio-flavor={netcdf, none} + # Note that Abinit@8: does not support etsf_io anymore because it is not + # compatible with HDF5 and MPI-IO variant('hdf5', default=False, description='Enables HDF5+Netcdf4 with MPI. WARNING: experimental') @@ -156,6 +159,8 @@ def install(self, spec, prefix): # Netcdf4/HDF5 if "+hdf5" in spec: oapp("--with-trio-flavor=netcdf") + # Since version 8, Abinit started to use netcdf4 + hdf5 and we have + # to link with -lhdf5_hl -lhdf5 hdf_libs = "-L%s -lhdf5_hl -lhdf5" % spec["hdf5"].prefix.lib options.extend([ "--with-netcdf-incs=-I%s" % ( @@ -164,8 +169,9 @@ def install(self, spec, prefix): spec["netcdf-fortran"].prefix.lib, hdf_libs), ]) else: - # Use internal fallbacks (netcdf3) - oapp("--with-trio-flavor=netcdf-fallback") + # In Spack we do our best to avoid building any internally provided + # dependencies, such as netcdf3 in this case. + oapp("--with-trio-flavor=none") configure(*options) make() From ea1c5821457c74d0dbc33ba047aa3c8199ff5bbd Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 17 Feb 2017 11:48:45 -0800 Subject: [PATCH 0149/2394] go: add support for v1.8 (#3165) --- var/spack/repos/builtin/packages/go/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 8d7596eee40..3a1ca9f1e89 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -56,6 +56,7 @@ class Go(Package): extendable = True + version('1.8', '7743960c968760437b6e39093cfe6f67') version('1.7.5', '506de2d870409e9003e1440bcfeb3a65') version('1.7.4', '49c1076428a5d3b5ad7ac65233fcca2f') version('1.6.4', 'b023240be707b34059d2c114d3465c92') From a9cf99b3e2b490f02c87c40072312983d657069e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Feb 2017 13:49:55 -0600 Subject: [PATCH 0150/2394] Fix typos in External Packages documentation (#3168) --- lib/spack/docs/build_settings.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst index 60ff26f26fa..0f935aa1cea 100644 --- a/lib/spack/docs/build_settings.rst +++ b/lib/spack/docs/build_settings.rst @@ -71,9 +71,9 @@ package lacks a spec component, such as missing a compiler or package version, then Spack will guess the missing component based on its most-favored packages, and it may guess incorrectly. -Each package version and compilers listed in an external should +Each package version and compiler listed in an external should have entries in Spack's packages and compiler configuration, even -though the package and compiler may not every be built. +though the package and compiler may not ever be built. The packages configuration can tell Spack to use an external location for certain package versions, but it does not restrict Spack to using From 8cb7f3d262b97674f0d77f80ab1dc29c4b6038e0 Mon Sep 17 00:00:00 2001 From: Elizabeth Fischer Date: Fri, 17 Feb 2017 14:52:08 -0500 Subject: [PATCH 0151/2394] Keep Curl Bootstrap Working With http:// (#3113) * Add comments documenting problems in recent versions of NetCDF. * Add comments to packages required to install curl. --- var/spack/repos/builtin/packages/curl/package.py | 1 + var/spack/repos/builtin/packages/openssl/package.py | 1 + var/spack/repos/builtin/packages/perl/package.py | 1 + var/spack/repos/builtin/packages/zlib/package.py | 1 + 4 files changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 46d3ccc23bf..5e7a6945157 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -30,6 +30,7 @@ class Curl(Package): transferring data with URL syntax""" homepage = "http://curl.haxx.se" + # URL must remain http:// so Spack can bootstrap curl url = "http://curl.haxx.se/download/curl-7.46.0.tar.bz2" version('7.52.1', 'dd014df06ff1d12e173de86873f9f77a') diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 01af951773a..eb19ebcdbcd 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -33,6 +33,7 @@ class Openssl(Package): Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.""" homepage = "http://www.openssl.org" + # URL must remain http:// so Spack can bootstrap curl url = "http://www.openssl.org/source/openssl-1.0.1h.tar.gz" list_url = "https://www.openssl.org/source/old/" list_depth = 2 diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index ec0837e6a03..45036f68101 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -35,6 +35,7 @@ class Perl(Package): """Perl 5 is a highly capable, feature-rich programming language with over 27 years of development.""" homepage = "http://www.perl.org" + # URL must remain http:// so Spack can bootstrap curl url = "http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz" version('5.24.1', '765ef511b5b87a164e2531403ee16b3c') diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 86e153fbae6..c3d6b4bae24 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -30,6 +30,7 @@ class Zlib(AutotoolsPackage): data-compression library.""" homepage = "http://zlib.net" + # URL must remain http:// so Spack can bootstrap curl url = "http://zlib.net/fossils/zlib-1.2.10.tar.gz" version('1.2.11', '1c9f62f0778697a09d36121ead88e08e') From 682d5cf1649b2f6304887aac6e5428308f65906a Mon Sep 17 00:00:00 2001 From: Elizabeth Fischer Date: Fri, 17 Feb 2017 14:55:22 -0500 Subject: [PATCH 0152/2394] py-git2: New Package (#1971) --- lib/spack/spack/spec.py | 3 +- .../repos/builtin/packages/libgit2/package.py | 41 +++++++++++++++ .../repos/builtin/packages/libssh2/package.py | 48 ++++++++++++++++++ .../repos/builtin/packages/py-git2/package.py | 50 +++++++++++++++++++ 4 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/libgit2/package.py create mode 100644 var/spack/repos/builtin/packages/libssh2/package.py create mode 100644 var/spack/repos/builtin/packages/py-git2/package.py diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 0df0ff71ea5..5c7acfcd951 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2955,7 +2955,8 @@ def check_identifier(self, id=None): if not id: id = self.token.value if '.' in id: - self.last_token_error("Identifier cannot contain '.'") + self.last_token_error( + "{0}: Identifier cannot contain '.'".format(id)) def parse(string): diff --git a/var/spack/repos/builtin/packages/libgit2/package.py b/var/spack/repos/builtin/packages/libgit2/package.py new file mode 100644 index 00000000000..d3163e39230 --- /dev/null +++ b/var/spack/repos/builtin/packages/libgit2/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libgit2(CMakePackage): + """libgit2 is a portable, pure C implementation of the Git core + methods provided as a re-entrant linkable library with a solid + API, allowing you to write native speed custom Git applications in + any language which supports C bindings. + """ + + homepage = "https://libgit2.github.com/" + url = "https://github.com/libgit2/libgit2/archive/v0.24.2.tar.gz" + + version('0.24.2', '735661b5b73e3c120d13e2bae21e49b3') + + depends_on('cmake@2.8:', type='build') + depends_on('libssh2') diff --git a/var/spack/repos/builtin/packages/libssh2/package.py b/var/spack/repos/builtin/packages/libssh2/package.py new file mode 100644 index 00000000000..2c582b477e6 --- /dev/null +++ b/var/spack/repos/builtin/packages/libssh2/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libssh2(CMakePackage): + """libssh2 is a client-side C library implementing the SSH2 protocol""" + + homepage = "https://www.libssh2.org/" + url = "https://www.libssh2.org/download/libssh2-1.7.0.tar.gz" + + version('1.7.0', 'b01662a210e94cccf2f76094db7dac5c') + version('1.4.3', '071004c60c5d6f90354ad1b701013a0b') # CentOS7 + + variant('shared', default=True, + description="Build shared libraries") + + depends_on('cmake@2.8.11:', type='build') + depends_on('openssl') + depends_on('zlib') + depends_on('xz') + + def cmake_args(self): + spec = self.spec + return [ + '-DBUILD_SHARED_LIBS=%s' % ('YES' if '+shared' in spec else 'NO')] diff --git a/var/spack/repos/builtin/packages/py-git2/package.py b/var/spack/repos/builtin/packages/py-git2/package.py new file mode 100644 index 00000000000..a750ecae0e0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-git2/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyGit2(PythonPackage): + """Pygit2 is a set of Python bindings to the libgit2 shared library, + libgit2 implements the core of Git. + """ + + homepage = "http://www.pygit2.org/" + + version('0.24.1', 'dd98b6a9fded731e36ca5a40484c8545', + url="https://pypi.python.org/packages/aa/56/84dcce942a48d4b7b970cfb7a779b8db1d904e5ec5f71e7a67a63a23a4e2/pygit2-0.24.1.tar.gz") + + extends('python') + depends_on('py-setuptools', type='build') + # Version must match with libgit2 + # See: http://www.pygit2.org/install.html + depends_on('libgit2@0.24:', when='@0.24:') + depends_on('py-six', type=('build', 'run')) + depends_on('py-cffi', type=('build', 'run')) + + def setup_environment(self, spack_env, run_env): + spec = self.spec + # http://www.pygit2.org/install.html + spack_env.set('LIBGIT2', spec['libgit2'].prefix) + spack_env.set('LIBGIT2_LIB', spec['libgit2'].prefix.lib) From 38dd01f6b5c8275fbf386910fa7fe3a0b62d8cd2 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Feb 2017 14:02:48 -0600 Subject: [PATCH 0153/2394] Fix missing space in error message output (#3169) --- lib/spack/spack/concretize.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 36e8b301961..bc3675ad849 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -473,8 +473,8 @@ class UnavailableCompilerVersionError(spack.error.SpackError): def __init__(self, compiler_spec, operating_system, target): super(UnavailableCompilerVersionError, self).__init__( - "No available compiler version matches '%s' on operating_system %s" - "for target %s" + "No available compiler version matches '%s' on operating_system " + "'%s' for target '%s'" % (compiler_spec, operating_system, target), "Run 'spack compilers' to see available compiler Options.") From 1de2c5393585c698a9ba0223228891c247992caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sat, 18 Feb 2017 04:03:43 +0800 Subject: [PATCH 0154/2394] Patch openblas Makefile only when version >= 0.2.16. (#3170) --- var/spack/repos/builtin/packages/openblas/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 327031b87e9..cdb3042f738 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -50,7 +50,7 @@ class Openblas(MakefilePackage): provides('blas') provides('lapack') - patch('make.patch') + patch('make.patch', when='@0.2.16:') # This patch is in a pull request to OpenBLAS that has not been handled # https://github.com/xianyi/OpenBLAS/pull/915 patch('openblas_icc.patch', when='%intel') From 71806132181a1916b046ab996951e61203de4739 Mon Sep 17 00:00:00 2001 From: Elizabeth Fischer Date: Fri, 17 Feb 2017 15:07:54 -0500 Subject: [PATCH 0155/2394] graphviz: Tame Language Bindings (#1089) graphviz: * Download from Fedora projet, as main graphviz site not working. * Disable java because Spack does not yet support Java, and the system might not have it installed. * Added all language binding variants; disabled enough in the default configuration to avoid dependencies. * Removed alternate download location (turned into comments). * Turn off all language bindings by default. * Raise an exception on bindings that have not been verified to work. * Added text indicating what works and doesn't work when user runs `spack info`. --- .../builtin/packages/graphviz/package.py | 97 +++++++++++++++---- 1 file changed, 79 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py index 1bf6c709265..a6d3234695f 100644 --- a/var/spack/repos/builtin/packages/graphviz/package.py +++ b/var/spack/repos/builtin/packages/graphviz/package.py @@ -29,33 +29,94 @@ class Graphviz(AutotoolsPackage): """Graph Visualization Software""" - homepage = "http://www.graphviz.org" - url = "http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.38.0.tar.gz" + homepage = 'http://www.graphviz.org' + url = 'http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.38.0.tar.gz' version('2.38.0', '5b6a829b2ac94efcd5fa3c223ed6d3ae') - # By default disable optional Perl language support to prevent build issues - # related to missing Perl packages. If spack begins support for Perl in the - # future, this package can be updated to depend_on('perl') and the - # ncecessary devel packages. - variant( - 'perl', default=False, - description='Enable if you need the optional Perl language bindings.') + # We try to leave language bindings enabled if they don't cause + # build issues or add dependencies. + variant('swig', default=False, + description='Enable for optional swig language bindings' + ' (not yet functional)') + variant('sharp', default=False, + description='Enable for optional sharp language bindings' + ' (not yet functional)') + variant('go', default=False, + description='Enable for optional go language bindings' + ' (not yet functional)') + variant('guile', default=False, + description='Enable for optional guile language bindings' + ' (not yet functional)') + variant('io', default=False, + description='Enable for optional io language bindings' + ' (not yet functional)') + variant('java', default=False, # Spack has no Java support + description='Enable for optional java language bindings') + variant('lua', default=False, + description='Enable for optional lua language bindings' + ' (not yet functional)') + variant('ocaml', default=False, + description='Enable for optional ocaml language bindings' + ' (not yet functional)') + variant('perl', default=False, # Spack has no Perl support + description='Enable for optional perl language bindings') + variant('php', default=False, + description='Enable for optional php language bindings' + ' (not yet functional)') + variant('python', default=False, # Build issues with Python 2/3 + description='Enable for optional python language bindings' + ' (not yet functional)') + variant('r', default=False, + description='Enable for optional r language bindings' + ' (not yet functional)') + variant('ruby', default=False, + description='Enable for optional ruby language bindings' + ' (not yet functional)') + variant('tcl', default=False, + description='Enable for optional tcl language bindings' + ' (not yet functional)') parallel = False - depends_on("swig") - depends_on("python") - depends_on("ghostscript") - depends_on("freetype") - depends_on("expat") - depends_on("libtool") - depends_on("pkg-config", type='build') + depends_on('swig', when='+swig') + depends_on('ghostscript') + depends_on('freetype') + depends_on('expat') + depends_on('libtool') + depends_on('pkg-config', type='build') + + depends_on('jdk', when='+java') + depends_on('python@2:2.8', when='+python') def configure_args(self): options = [] - if '+perl' not in self.spec: - options.append('--disable-perl') + + # These language bindings have been tested, we know they work. + tested_bindings = ('+java', '+perl') + + # These language bindings have not yet been tested. They + # likely need additional dependencies to get working. + untested_bindings = ( + '+swig', '+sharp', '+go', '+guile', '+io', + '+lua', '+ocaml', '+php', + '+python', '+r', '+ruby', '+tcl') + + for var in untested_bindings: + if var in spec: + raise SpackException( + "The variant {0} for language bindings has not been " + "tested. It might or might not work. To try it " + "out, run `spack edit graphviz`, and then move '{0}' " + "from the `untested_bindings` list to the " + "`tested_bindings` list. Be prepared to add " + "required dependencies. " + "Please then submit a pull request to " + "http://github.com/llnl/spack") + + for var in tested_bindings: + enable = 'enable' if (var in spec) else 'disable' + options.append('--%s-%s' % (enable, var[1:])) # On OSX fix the compiler error: # In file included from tkStubLib.c:15: From 29d070e50c3756bae4251865a5feed6ec4cb95a1 Mon Sep 17 00:00:00 2001 From: Elizabeth Fischer Date: Fri, 17 Feb 2017 15:08:17 -0500 Subject: [PATCH 0156/2394] On uninstall, change shortcut flag for --dependents to -R, as per Spack convention. (-r = --dependencies, -R = --dependents). (#1917) --- lib/spack/spack/cmd/uninstall.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index fb9094f1b4f..5c33a4d648a 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -61,7 +61,7 @@ def setup_parser(subparser): "is both useful and dangerous, like rm -r") subparser.add_argument( - '-d', '--dependents', action='store_true', dest='dependents', + '-R', '--dependents', action='store_true', dest='dependents', help='also uninstall any packages that depend on the ones given ' 'via command line') From e492aff4f708524a56f60f5ca200c8a97e2d3b4c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Feb 2017 15:45:02 -0600 Subject: [PATCH 0157/2394] More consistent yes/no prompts (#3174) * More consistent yes/no prompts * Add ==> prefix to yes/no and number prompts --- lib/spack/docs/tutorial_sc16_modules.rst | 6 ++-- lib/spack/docs/tutorial_sc16_spack_basics.rst | 9 ++--- lib/spack/llnl/util/tty/__init__.py | 16 ++++++--- lib/spack/spack/cmd/__init__.py | 11 ------ lib/spack/spack/cmd/module.py | 28 ++++++++------- lib/spack/spack/cmd/uninstall.py | 35 ++++++++++--------- 6 files changed, 51 insertions(+), 54 deletions(-) diff --git a/lib/spack/docs/tutorial_sc16_modules.rst b/lib/spack/docs/tutorial_sc16_modules.rst index 0a79d943f96..00b42251db1 100644 --- a/lib/spack/docs/tutorial_sc16_modules.rst +++ b/lib/spack/docs/tutorial_sc16_modules.rst @@ -178,8 +178,7 @@ Next you should regenerate all the module files: ... - ==> Do you want to proceed ? [y/n] - y + ==> Do you want to proceed? [y/n] y ==> Regenerating tcl module files If you take a look now at the module for ``gcc`` you'll see that the unwanted @@ -242,8 +241,7 @@ and regenerate the module files: 3cfh3hi gmp@6.1.1 3k4ykbe libxml2@2.9.4 7tb426s ncurses@6.0 djdthlh nettle@3.2 i3rpk4e py-numpy@1.11.1 t5lk6in xz@5.2.2 3ostwel hwloc@1.11.4 cagoem4 lz4@131 mirer2l netlib-lapack@3.6.1 js33umc openblas@0.2.19 e6uljfi py-scipy@0.18.1 asydrba zlib@1.2.8 - ==> Do you want to proceed ? [y/n] - y + ==> Do you want to proceed? [y/n] y $ module avail diff --git a/lib/spack/docs/tutorial_sc16_spack_basics.rst b/lib/spack/docs/tutorial_sc16_spack_basics.rst index 9511907cebb..ed58c7c5cfb 100644 --- a/lib/spack/docs/tutorial_sc16_spack_basics.rst +++ b/lib/spack/docs/tutorial_sc16_spack_basics.rst @@ -1006,8 +1006,7 @@ We can uninstall packages by spec using the same syntax as install. w33hrej libelf@0.8.13%intel - ==> Do you want to proceed ? [y/n] - y + ==> Do you want to proceed? [y/n] y ==> Successfully uninstalled libelf@0.8.13%intel@15.0.4 arch=linux-redhat6-x86_64-w33hrej @@ -1054,8 +1053,7 @@ remove packages that are required by another installed package. 4blbe3q libelf@0.8.12%intel - ==> Do you want to proceed ? [y/n] - y + ==> Do you want to proceed? [y/n] y ==> Successfully uninstalled libdwarf@20160507%intel@16.0.3 arch=linux-redhat6-x86_64-csruprg ==> Successfully uninstalled libelf@0.8.12%intel@16.0.3 arch=linux-redhat6-x86_64-4blbe3q @@ -1088,8 +1086,7 @@ packages at once. ffwrpxn trilinos@12.8.1%gcc+boost~debug+hdf5+hypre+metis+mumps~python+shared+suite-sparse+superlu-dist - ==> Do you want to proceed ? [y/n] - y + ==> Do you want to proceed? [y/n] y ==> Successfully uninstalled trilinos@12.8.1%gcc@4.4.7+boost~debug+hdf5+hypre+metis+mumps~python+shared+suite-sparse+superlu-dist arch=linux-redhat6-x86_64-ffwrpxn ----------------------------- diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index 1381bb2f7d9..f73d96a4e4e 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -59,7 +59,7 @@ def set_debug(flag): def set_verbose(flag): global _verbose _verbose = flag - + def set_stacktrace(flag): global _stacktrace @@ -83,11 +83,15 @@ def process_stacktrace(countback): return st_text -def msg(message, *args): +def msg(message, *args, **kwargs): + newline = kwargs.get('newline', True) st_text = "" if _stacktrace: st_text = process_stacktrace(2) - cprint("@*b{%s==>} %s" % (st_text, cescape(message))) + if newline: + cprint("@*b{%s==>} %s" % (st_text, cescape(message))) + else: + cwrite("@*b{%s==>} %s" % (st_text, cescape(message))) for arg in args: print indent + str(arg) @@ -159,7 +163,8 @@ def get_number(prompt, **kwargs): number = None while number is None: - ans = raw_input(prompt) + msg(prompt, newline=False) + ans = raw_input() if ans == str(abort): return None @@ -191,7 +196,8 @@ def get_yes_or_no(prompt, **kwargs): result = None while result is None: - ans = raw_input(prompt).lower() + msg(prompt, newline=False) + ans = raw_input().lower() if not ans: result = default_value if result is None: diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 764b6fffcff..3a425102450 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -159,17 +159,6 @@ def disambiguate_spec(spec): return matching_specs[0] -def ask_for_confirmation(message): - while True: - tty.msg(message + '[y/n]') - choice = raw_input().lower() - if choice == 'y': - break - elif choice == 'n': - raise SystemExit('Operation aborted') - tty.warn('Please reply either "y" or "n"') - - def gray_hash(spec, length): return colorize('@K{%s}' % spec.dag_hash(length)) diff --git a/lib/spack/spack/cmd/module.py b/lib/spack/spack/cmd/module.py index a924c5f912c..37c79a358bb 100644 --- a/lib/spack/spack/cmd/module.py +++ b/lib/spack/spack/cmd/module.py @@ -29,10 +29,10 @@ import shutil import sys -import llnl.util.filesystem as filesystem -import llnl.util.tty as tty import spack.cmd -import spack.cmd.common.arguments as arguments + +from llnl.util import filesystem, tty +from spack.cmd.common import arguments from spack.modules import module_types description = "manipulate module files" @@ -168,7 +168,7 @@ def find(mtype, specs, args): spec = specs.pop() mod = module_types[mtype](spec) if not os.path.isfile(mod.file_name): - tty.die("No %s module is installed for %s" % (mtype, spec)) + tty.die('No {0} module is installed for {1}'.format(mtype, spec)) print(mod.use_name) @@ -191,7 +191,9 @@ def rm(mtype, specs, args): .format(mtype)) spack.cmd.display_specs(specs_with_modules, long=True) print('') - spack.cmd.ask_for_confirmation('Do you want to proceed ? ') + answer = tty.get_yes_or_no('Do you want to proceed?') + if not answer: + tty.die('Will not remove any module files') # Remove the module files for s in modules: @@ -212,7 +214,9 @@ def refresh(mtype, specs, args): .format(name=mtype)) spack.cmd.display_specs(specs, long=True) print('') - spack.cmd.ask_for_confirmation('Do you want to proceed ? ') + answer = tty.get_yes_or_no('Do you want to proceed?') + if not answer: + tty.die('Will not regenerate any module files') cls = module_types[mtype] @@ -227,9 +231,9 @@ def refresh(mtype, specs, args): message = 'Name clashes detected in module files:\n' for filename, writer_list in file2writer.items(): if len(writer_list) > 1: - message += '\nfile : {0}\n'.format(filename) + message += '\nfile: {0}\n'.format(filename) for x in writer_list: - message += 'spec : {0}\n'.format(x.spec.format(color=True)) + message += 'spec: {0}\n'.format(x.spec.format(color=True)) tty.error(message) tty.error('Operation aborted') raise SystemExit(1) @@ -258,13 +262,13 @@ def module(parser, args): try: callbacks[args.subparser_name](module_type, specs, args) except MultipleMatches: - message = ('the constraint \'{query}\' matches multiple packages, ' - 'and this is not allowed in this context') + message = ("the constraint '{query}' matches multiple packages, " + "and this is not allowed in this context") tty.error(message.format(query=constraint)) for s in specs: sys.stderr.write(s.format(color=True) + '\n') raise SystemExit(1) except NoMatch: - message = ('the constraint \'{query}\' match no package, ' - 'and this is not allowed in this context') + message = ("the constraint '{query}' matches no package, " + "and this is not allowed in this context") tty.die(message.format(query=constraint)) diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index 5c33a4d648a..e0b40e0627a 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -26,17 +26,18 @@ import argparse -import llnl.util.tty as tty import spack import spack.cmd import spack.store import spack.repository +from llnl.util import tty + description = "remove an installed package" error_message = """You can either: - a) Use a more specific spec, or - b) use spack uninstall -a to uninstall ALL matching specs. + a) use a more specific spec, or + b) use `spack uninstall --all` to uninstall ALL matching specs. """ # Arguments for display_specs when we find ambiguity @@ -94,7 +95,7 @@ def concretize_specs(specs, allow_multiple_matches=False, force=False): # For each spec provided, make sure it refers to only one package. # Fail and ask user to be unambiguous if it doesn't if not allow_multiple_matches and len(matching) > 1: - tty.error("%s matches multiple packages:" % spec) + tty.error('{0} matches multiple packages:'.format(spec)) print() spack.cmd.display_specs(matching, **display_args) print() @@ -102,7 +103,8 @@ def concretize_specs(specs, allow_multiple_matches=False, force=False): # No installed package matches the query if len(matching) == 0 and spec is not any: - tty.error("%s does not match any installed packages." % spec) + tty.error('{0} does not match any installed packages.'.format( + spec)) has_errors = True specs_from_cli.extend(matching) @@ -176,10 +178,10 @@ def get_uninstall_list(args): has_error = False if dependent_list and not args.dependents and not args.force: for spec, lst in dependent_list.items(): - tty.error("Will not uninstall %s" % - spec.format("$_$@$%@$/", color=True)) + tty.error('Will not uninstall {0}'.format( + spec.format("$_$@$%@$/", color=True))) print('') - print("The following packages depend on it:") + print('The following packages depend on it:') spack.cmd.display_specs(lst, **display_args) print('') has_error = True @@ -188,28 +190,29 @@ def get_uninstall_list(args): uninstall_list.extend(lst) uninstall_list = list(set(uninstall_list)) if has_error: - tty.die('You can use spack uninstall --dependents ' - 'to uninstall these dependencies as well') + tty.die('Use `spack uninstall --dependents` ' + 'to uninstall these dependencies as well.') return uninstall_list def uninstall(parser, args): if not args.packages and not args.all: - tty.die("uninstall requires at least one package argument.") + tty.die('uninstall requires at least one package argument.', + ' Use `spack uninstall --all` to uninstall ALL packages.') uninstall_list = get_uninstall_list(args) if not uninstall_list: - tty.msg("There are no package to uninstall.") + tty.warn('There are no package to uninstall.') return if not args.yes_to_all: - tty.msg("The following packages will be uninstalled : ") - print('') + tty.msg('The following packages will be uninstalled:\n') spack.cmd.display_specs(uninstall_list, **display_args) - print('') - spack.cmd.ask_for_confirmation('Do you want to proceed ? ') + answer = tty.get_yes_or_no('Do you want to proceed?', default=False) + if not answer: + tty.die('Will not uninstall any packages.') # Uninstall everything on the list do_uninstall(uninstall_list, args.force) From 524303db06797c87dfedea4d043b1f13132496d2 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Feb 2017 15:46:31 -0600 Subject: [PATCH 0158/2394] Set default module type based on modules.yaml (#3173) --- lib/spack/spack/cmd/common/arguments.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index b527c7f1387..6fc3b5d3cf6 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -79,8 +79,10 @@ def _specs(self, **kwargs): help='constraint to select a subset of installed packages') _arguments['module_type'] = Args( - '-m', '--module-type', help='type of module files', - default='tcl', choices=spack.modules.module_types) + '-m', '--module-type', + choices=spack.modules.module_types.keys(), + default=spack.modules.module_types.keys()[0], + help='type of module files [default: %(default)s]') _arguments['yes_to_all'] = Args( '-y', '--yes-to-all', action='store_true', dest='yes_to_all', From 5c37c17173d343cf75d27f7105064f183a365761 Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 18 Feb 2017 00:30:49 +0100 Subject: [PATCH 0159/2394] Add package: py-apache-libcloud (#3101) * Add py-apache-libcloud package --- .../packages/py-apache-libcloud/package.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-apache-libcloud/package.py diff --git a/var/spack/repos/builtin/packages/py-apache-libcloud/package.py b/var/spack/repos/builtin/packages/py-apache-libcloud/package.py new file mode 100644 index 00000000000..1f265370f66 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-apache-libcloud/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyApacheLibcloud(PythonPackage): + """Python library for multiple cloud provider APIs""" + + homepage = "http://libcloud.apache.org" + + version('1.2.1', '912e6fb1f2d13f7d3b58ee982b9f9d1f', url="https://pypi.python.org/packages/dd/b5/7b8b5796177345b6a7c1f3d4fda9fbbe9aeef000ac33f3aac06f176845d0/apache-libcloud-1.2.1.tar.gz") + + depends_on('py-setuptools', type='build') From 0d22b3eea9e7adc4af999c96f1e92f38ce998351 Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Fri, 17 Feb 2017 18:51:10 -0500 Subject: [PATCH 0160/2394] netlib-lapack: Update package file for netlib-lapack to work with IBM (#3040) Update package file for netlib-lapack to work with IBM XL compiler The flag -qzerosize is redundant, as the IBM XL compiler should set this flag by default. However, at this time the default flag appears to be ignore. Hence, I am setting it in the package file as well, as it has no negative effect if set twice. --- .../builtin/packages/netlib-lapack/ibm-xl.patch | 16 ++++++++++++++++ .../builtin/packages/netlib-lapack/package.py | 12 +++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/netlib-lapack/ibm-xl.patch diff --git a/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl.patch b/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl.patch new file mode 100644 index 00000000000..c9598a4e7c2 --- /dev/null +++ b/var/spack/repos/builtin/packages/netlib-lapack/ibm-xl.patch @@ -0,0 +1,16 @@ +diff -Naur lapack-3.6.1/CMAKE/CheckLAPACKCompilerFlags.cmake lapack-3.6.1-patched/CMAKE/CheckLAPACKCompilerFlags.cmake +--- lapack-3.6.1/CMAKE/CheckLAPACKCompilerFlags.cmake 2017-01-27 17:14:37.414854283 -0500 ++++ lapack-3.6.1-patched/CMAKE/CheckLAPACKCompilerFlags.cmake 2017-01-27 17:14:24.754719546 -0500 +@@ -43,12 +43,6 @@ + if( "${CMAKE_Fortran_FLAGS}" MATCHES "-qflttrap=[a-zA-Z:]:enable" ) + set( FPE_EXIT TRUE ) + endif() +- +- if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "-qfixed") ) +- message( STATUS "Enabling fixed format F90/F95 with -qfixed" ) +- set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qfixed" +- CACHE STRING "Flags for Fortran compiler." FORCE ) +- endif() + + # HP Fortran + elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "HP" ) diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py index 4b03259cbdf..ee011e7d1b4 100644 --- a/var/spack/repos/builtin/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py @@ -52,6 +52,9 @@ class NetlibLapack(Package): variant('lapacke', default=True, description='Activates the build of the LAPACKE C interface') + patch('ibm-xl.patch', when='@3:6%xl') + patch('ibm-xl.patch', when='@3:6%xl_r') + # virtual dependency provides('blas', when='~external-blas') provides('lapack') @@ -96,7 +99,14 @@ def install_one(self, spec, prefix, shared): cmake_args.extend(['-DCBLAS=OFF']) cmake_args.extend(['-DLAPACKE:BOOL=OFF']) - # deprecated routines are commonly need by, for example, suitesparse + if self.compiler.name == 'xl' or self.compiler.name == 'xl_r': + # use F77 compiler if IBM XL + cmake_args.extend([ + '-DCMAKE_Fortran_COMPILER=%s' % self.compiler.f77, + '-DCMAKE_Fortran_FLAGS=-qzerosize' + ]) + + # deprecated routines are commonly needed by, for example, suitesparse # Note that OpenBLAS spack is built with deprecated routines cmake_args.extend(['-DBUILD_DEPRECATED:BOOL=ON']) From 6d3f649382dc9e5407aba8e1557dc777076d320e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Feb 2017 17:58:06 -0600 Subject: [PATCH 0161/2394] Fix readline support in `spack python` (#3132) * Fix readline support in `spack python` * Add documentation on `spack python` * Add unit tests for `spack python` --- lib/spack/docs/developer_guide.rst | 41 ++++++++++++++++++++++++++++ lib/spack/spack/cmd/python.py | 3 +++ lib/spack/spack/test/cmd/python.py | 43 ++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 lib/spack/spack/test/cmd/python.py diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index dbb9a670b46..0ce40299508 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -360,6 +360,47 @@ Developer commands ``spack test`` ^^^^^^^^^^^^^^ +.. _cmd-spack-python: + +^^^^^^^^^^^^^^^^ +``spack python`` +^^^^^^^^^^^^^^^^ + +``spack python`` is a command that lets you import and debug things as if +you were in a Spack interactive shell. Without any arguments, it is similar +to a normal interactive Python shell, except you can import spack and any +other Spack modules: + +.. code-block:: console + + $ spack python + Spack version 0.10.0 + Python 2.7.13, Linux x86_64 + >>> from spack.version import Version + >>> a = Version('1.2.3') + >>> b = Version('1_2_3') + >>> a == b + True + >>> c = Version('1.2.3b') + >>> c > a + True + >>> + +You can also run a single command: + +.. code-block:: console + + $ spack python -c 'import distro; distro.linux_distribution()' + ('Fedora', '25', 'Workstation Edition') + +or a file: + +.. code-block:: console + + $ spack python ~/test_fetching.py + +just like you would with the normal ``python`` command. + .. _cmd-spack-url: ^^^^^^^^^^^^^ diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py index 05af7bc7764..6df95075803 100644 --- a/lib/spack/spack/cmd/python.py +++ b/lib/spack/spack/cmd/python.py @@ -62,6 +62,9 @@ def python(parser, args): with open(python_args[0]) as file: console.runsource(file.read(), python_args[0], 'exec') else: + # Provides readline support, allowing user to use arrow keys + console.push('import readline') + console.interact("Spack version %s\nPython %s, %s %s""" % (spack.spack_version, platform.python_version(), platform.system(), platform.machine())) diff --git a/lib/spack/spack/test/cmd/python.py b/lib/spack/spack/test/cmd/python.py new file mode 100644 index 00000000000..5dc82bd90e8 --- /dev/null +++ b/lib/spack/spack/test/cmd/python.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 argparse +import pytest + +from spack.cmd.python import * + + +@pytest.fixture(scope='module') +def parser(): + """Returns the parser for the ``python`` command""" + parser = argparse.ArgumentParser() + setup_parser(parser) + return parser + + +def test_python(parser): + args = parser.parse_args([ + '-c', 'import spack; print(spack.spack_version)' + ]) + python(parser, args) From c2d210568cbc7ac5937c553f4e61cd277e9ad686 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 18 Feb 2017 13:08:59 -0600 Subject: [PATCH 0162/2394] Fix tab completion after change to uninstall flag (#3175) --- share/spack/spack-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index dde1a5280f7..3e98b20df03 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -718,7 +718,7 @@ function _spack_test { function _spack_uninstall { if $list_options then - compgen -W "-h --help -f --force -a --all -d --dependents + compgen -W "-h --help -f --force -a --all -R --dependents -y --yes-to-all" -- "$cur" else compgen -W "$(_installed_packages)" -- "$cur" From 18334edf1ab379cbae513418e403f7acedc5cbb1 Mon Sep 17 00:00:00 2001 From: Pramod Kumbhar Date: Sat, 18 Feb 2017 22:45:47 +0100 Subject: [PATCH 0163/2394] Bug fix: PDT configure uses -prefix, not --prefix (#2976) * This bug was introduced in #2845. --- var/spack/repos/builtin/packages/pdt/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index 081c32c861d..589d40e8435 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -43,3 +43,6 @@ class Pdt(AutotoolsPackage): version('3.20', 'c3edabe202926abe04552e33cd39672d') version('3.19', '5c5e1e6607086aa13bf4b1b9befc5864') version('3.18.1', 'e401534f5c476c3e77f05b7f73b6c4f2') + + def configure(self, spec, prefix): + configure('-prefix=%s' % prefix) From 69b01c617eafd192ff3ec0643f101d9fcd1d7f2f Mon Sep 17 00:00:00 2001 From: sknigh Date: Sat, 18 Feb 2017 13:54:57 -0800 Subject: [PATCH 0164/2394] Added shmem variant to Score-p build (#3024) * Disable by default to fix builds on Centos 7 --- var/spack/repos/builtin/packages/scorep/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index e0f79723040..6b3345d83b4 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -61,6 +61,8 @@ class Scorep(Package): depends_on("mpi") depends_on("papi") + variant('shmem', default=False, description='Enable shmem tracing') + def install(self, spec, prefix): configure = Executable(join_path(self.stage.source_path, 'configure')) with working_dir('spack-build', create=True): @@ -72,6 +74,7 @@ def install(self, spec, prefix): "--with-papi-header=%s" % spec['papi'].prefix.include, "--with-papi-lib=%s" % spec['papi'].prefix.lib, "--enable-shared", + "--without-shmem" if '~shmem' in spec else '', "CFLAGS=-fPIC", "CXXFLAGS=-fPIC"] configure(*configure_args) From 4da66d71b0c8522905d5647c68a5caca60eec008 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Sat, 18 Feb 2017 13:56:40 -0800 Subject: [PATCH 0165/2394] Fix for qt3 specific qt build (#3063) * Update the krell institute products to use the latest features of spack for building on cluster platforms. * Address travis error messages and resubmit the pull request. * Update the contents of openspeedshop package.py so it passes the flake8 tests. * Fix flake8 error-whitespack issue in mrnet package.py file. * Add updates based on spack reviewer feedback. * More fixes based on comments from reviewers. Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH. * More review related changes. Update MPIOption.append lines and take out xercesc references. * Create a base options function for common openspeedshop base cmake options to reduce redundencies. * Add libxml2+python depends on to get around issues with the libxml2 package file. * Using boost over 1.60.0 causes compile errors. This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build. * Fix bad syntax in specifying the boost version range. * Update the version numbers for the krell institute components and tools: cbtf and openspeedshop. * Do not build glib for qt3, it is not needed and causes build problems at this time anyway. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Trim comments to fit more concisely. * Fix tabs versus spaces and swap if and else clause check from a negative to a positive check. --- var/spack/repos/builtin/packages/qt/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 447af5f1af8..dfe83888e59 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -226,8 +226,14 @@ def common_config_args(self): @when('@3') def configure(self): - # A user reported that this was necessary to link Qt3 on ubuntu - os.environ['LD_LIBRARY_PATH'] += os.pathsep + os.getcwd() + '/lib' + # A user reported that this was necessary to link Qt3 on ubuntu. + # However, if LD_LIBRARY_PATH is not set the qt build fails, check + # and set LD_LIBRARY_PATH if not set, update if it is set. + if os.environ.get('LD_LIBRARY_PATH'): + os.environ['LD_LIBRARY_PATH'] += os.pathsep + os.getcwd() + '/lib' + else: + os.environ['LD_LIBRARY_PATH'] = os.pathsep + os.getcwd() + '/lib' + configure('-prefix', self.prefix, '-v', '-thread', From 5712b524cc1c0c137248023e56204edfb91847d5 Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 18 Feb 2017 23:02:01 +0100 Subject: [PATCH 0166/2394] Add binutils variant +plugins (#3083) * Add binutils variant +plugins * added description to plugins variant --- var/spack/repos/builtin/packages/binutils/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index bf49ca94054..1fea4f5b60d 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -46,6 +46,8 @@ class Binutils(Package): # OpenSpeedShop and cbtf-krell variant('krellpatch', default=False, description="build with openspeedshop based patch.") + variant('plugins', default=False, + description="enable plugins, needed for gold linker") variant('gold', default=True, description="build the gold linker") patch('binutilskrell-2.24.patch', when='@2.24+krellpatch') @@ -69,6 +71,9 @@ def install(self, spec, prefix): if '+gold' in spec: configure_args.append('--enable-gold') + if '+plugins' in spec: + configure_args.append('--enable-plugins') + if '+libiberty' in spec: configure_args.append('--enable-install-libiberty') From 63a0ca729d7a1330fcbb2a1dcbd1a4d35ce989c1 Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 18 Feb 2017 23:02:33 +0100 Subject: [PATCH 0167/2394] Added 2017 Intel libraries (#3084) --- var/spack/repos/builtin/packages/daal/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/daal/package.py b/var/spack/repos/builtin/packages/daal/package.py index a39064df9e6..18ecfed7c21 100644 --- a/var/spack/repos/builtin/packages/daal/package.py +++ b/var/spack/repos/builtin/packages/daal/package.py @@ -37,6 +37,8 @@ class Daal(IntelInstaller): homepage = "https://software.intel.com/en-us/daal" + version('2017.0.098', 'b4eb234de12beff4a5cba4b81ea60673', + url="file://%s/l_daal_2017.0.098.tgz" % os.getcwd()) version('2016.2.181', 'aad2aa70e5599ebfe6f85b29d8719d46', url="file://%s/l_daal_2016.2.181.tgz" % os.getcwd()) version('2016.3.210', 'ad747c0dd97dace4cad03cf2266cad28', From 1a5b3e184fa2eafc563e52db21a311969614d4a4 Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 18 Feb 2017 23:10:15 +0100 Subject: [PATCH 0168/2394] Add package: log4cxx (#3097) * Add log4cxx package * add missing patch files to log4cxx * remove unnecessary dependencies * this fails at 'make check' * this is the AutotoolsPackage version * fixed install bug --- .../log4cxx-0.10.0-missing_includes.patch | 38 ++++++ ...0.10.0-narrowing-fixes-from-upstream.patch | 117 ++++++++++++++++++ .../repos/builtin/packages/log4cxx/package.py | 47 +++++++ 3 files changed, 202 insertions(+) create mode 100644 var/spack/repos/builtin/packages/log4cxx/log4cxx-0.10.0-missing_includes.patch create mode 100644 var/spack/repos/builtin/packages/log4cxx/log4cxx-0.10.0-narrowing-fixes-from-upstream.patch create mode 100644 var/spack/repos/builtin/packages/log4cxx/package.py diff --git a/var/spack/repos/builtin/packages/log4cxx/log4cxx-0.10.0-missing_includes.patch b/var/spack/repos/builtin/packages/log4cxx/log4cxx-0.10.0-missing_includes.patch new file mode 100644 index 00000000000..6834648d09a --- /dev/null +++ b/var/spack/repos/builtin/packages/log4cxx/log4cxx-0.10.0-missing_includes.patch @@ -0,0 +1,38 @@ +diff -Naur apache-log4cxx-0.10.0.orig/src/examples/cpp/console.cpp apache-log4cxx-0.10.0/src/examples/cpp/console.cpp +--- apache-log4cxx-0.10.0.orig/src/examples/cpp/console.cpp 2008-04-01 00:34:52.000000000 +0200 ++++ apache-log4cxx-0.10.0/src/examples/cpp/console.cpp 2008-05-06 05:40:52.000000000 +0200 +@@ -15,7 +15,10 @@ + * limitations under the License. + */ + +-#include ++#include ++#include ++#include ++#include + #include + #include + #include +diff -Naur apache-log4cxx-0.10.0.orig/src/main/cpp/inputstreamreader.cpp apache-log4cxx-0.10.0/src/main/cpp/inputstreamreader.cpp +--- apache-log4cxx-0.10.0.orig/src/main/cpp/inputstreamreader.cpp 2008-04-01 00:34:09.000000000 +0200 ++++ apache-log4cxx-0.10.0/src/main/cpp/inputstreamreader.cpp 2008-05-06 05:32:31.000000000 +0200 +@@ -21,6 +21,8 @@ + #include + #include + ++#include ++ + using namespace log4cxx; + using namespace log4cxx::helpers; + +diff -Naur apache-log4cxx-0.10.0.orig/src/main/cpp/socketoutputstream.cpp apache-log4cxx-0.10.0/src/main/cpp/socketoutputstream.cpp +--- apache-log4cxx-0.10.0.orig/src/main/cpp/socketoutputstream.cpp 2008-04-01 00:34:09.000000000 +0200 ++++ apache-log4cxx-0.10.0/src/main/cpp/socketoutputstream.cpp 2008-05-06 05:35:55.000000000 +0200 +@@ -20,6 +20,8 @@ + #include + #include + ++#include ++ + using namespace log4cxx; + using namespace log4cxx::helpers; \ No newline at end of file diff --git a/var/spack/repos/builtin/packages/log4cxx/log4cxx-0.10.0-narrowing-fixes-from-upstream.patch b/var/spack/repos/builtin/packages/log4cxx/log4cxx-0.10.0-narrowing-fixes-from-upstream.patch new file mode 100644 index 00000000000..e583e7661d1 --- /dev/null +++ b/var/spack/repos/builtin/packages/log4cxx/log4cxx-0.10.0-narrowing-fixes-from-upstream.patch @@ -0,0 +1,117 @@ +diff --git a/src/main/cpp/locationinfo.cpp b/src/main/cpp/locationinfo.cpp +index e76ea29..bd22a1d 100644 +--- a/src/main/cpp/locationinfo.cpp ++++ b/src/main/cpp/locationinfo.cpp +@@ -149,18 +149,21 @@ void LocationInfo::write(ObjectOutputStream& os, Pool& p) const { + os.writeNull(p); + } else { + char prolog[] = { +- 0x72, 0x00, 0x21, 0x6F, 0x72, 0x67, 0x2E, +- 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2E, 0x6C, +- 0x6F, 0x67, 0x34, 0x6A, 0x2E, 0x73, 0x70, 0x69, +- 0x2E, 0x4C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, +- 0x6E, 0x49, 0x6E, 0x66, 0x6F, 0xED, 0x99, 0xBB, +- 0xE1, 0x4A, 0x91, 0xA5, 0x7C, 0x02, 0x00, 0x01, +- 0x4C, 0x00, 0x08, 0x66, 0x75, 0x6C, 0x6C, 0x49, +- 0x6E, 0x66, 0x6F, +- 0x74, 0x00, 0x12, 0x4C, 0x6A, +- 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, +- 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, +- 0x78, 0x70 }; ++ 0x72, ++ 0x00, ++ 0x21, 0x6F, 0x72, 0x67, 0x2E, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2E, ++ 0x6C, 0x6F, 0x67, 0x34, 0x6A, 0x2E, 0x73, 0x70, 0x69, 0x2E, 0x4C, 0x6F, ++ 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x49, 0x6E, 0x66, 0x6F, static_cast(0xED), ++ static_cast(0x99), static_cast(0xBB), static_cast(0xE1), ++ 0x4A, static_cast(0x91), static_cast(0xA5), 0x7C, 0x02, ++ 0x00, ++ 0x01, 0x4C, ++ 0x00, ++ 0x08, 0x66, 0x75, 0x6C, 0x6C, 0x49, 0x6E, 0x66, 0x6F, 0x74, ++ 0x00, ++ 0x12, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, ++ 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 0x78, 0x70 ++ }; + os.writeProlog("org.apache.log4j.spi.LocationInfo", 2, prolog, sizeof(prolog), p); + char* line = p.itoa(lineNumber); + // +diff --git a/src/main/cpp/loggingevent.cpp b/src/main/cpp/loggingevent.cpp +index 1c0d4be..edbf40b 100644 +--- a/src/main/cpp/loggingevent.cpp ++++ b/src/main/cpp/loggingevent.cpp +@@ -242,7 +242,7 @@ void LoggingEvent::writeProlog(ObjectOutputStream& os, Pool& p) { + 0x68, 0x65, 0x2E, 0x6C, 0x6F, 0x67, 0x34, 0x6A, + 0x2E, 0x73, 0x70, 0x69, 0x2E, 0x4C, 0x6F, 0x67, + 0x67, 0x69, 0x6E, 0x67, 0x45, 0x76, 0x65, 0x6E, +- 0x74, 0xF3, 0xF2, 0xB9, 0x23, 0x74, 0x0B, 0xB5, ++ 0x74, static_cast(0xF3), static_cast(0xF2), static_cast(0xB9), 0x23, 0x74, 0x0B, static_cast(0xB5), + 0x3F, 0x03, 0x00, 0x0A, 0x5A, 0x00, 0x15, 0x6D, + 0x64, 0x63, 0x43, 0x6F, 0x70, 0x79, 0x4C, 0x6F, + 0x6F, 0x6B, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, +diff --git a/src/main/cpp/objectoutputstream.cpp b/src/main/cpp/objectoutputstream.cpp +index 7cd696b..5442420 100644 +--- a/src/main/cpp/objectoutputstream.cpp ++++ b/src/main/cpp/objectoutputstream.cpp +@@ -36,7 +36,7 @@ ObjectOutputStream::ObjectOutputStream(OutputStreamPtr outputStream, Pool& p) + objectHandle(0x7E0000), + classDescriptions(new ClassDescriptionMap()) + { +- char start[] = { 0xAC, 0xED, 0x00, 0x05 }; ++ char start[] = { static_cast(0xAC), static_cast(0xED), 0x00, 0x05 }; + ByteBuffer buf(start, sizeof(start)); + os->write(buf, p); + } +@@ -81,15 +81,15 @@ void ObjectOutputStream::writeObject(const MDC::Map& val, Pool& p) { + // + // TC_OBJECT and the classDesc for java.util.Hashtable + // +- char prolog[] = { +- 0x72, 0x00, 0x13, 0x6A, 0x61, 0x76, 0x61, +- 0x2E, 0x75, 0x74, 0x69, 0x6C, 0x2E, 0x48, 0x61, +- 0x73, 0x68, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x13, +- 0xBB, 0x0F, 0x25, 0x21, 0x4A, 0xE4, 0xB8, 0x03, +- 0x00, 0x02, 0x46, 0x00, 0x0A, 0x6C, 0x6F, 0x61, +- 0x64, 0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x49, +- 0x00, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, +- 0x6F, 0x6C, 0x64, 0x78, 0x70 }; ++ char prolog[] = { ++ 0x72, 0x00, 0x13, 0x6A, 0x61, 0x76, 0x61, ++ 0x2E, 0x75, 0x74, 0x69, 0x6C, 0x2E, 0x48, 0x61, ++ 0x73, 0x68, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x13, ++ static_cast(0xBB), 0x0F, 0x25, 0x21, 0x4A, static_cast(0xE4), static_cast(0xB8), 0x03, ++ 0x00, 0x02, 0x46, 0x00, 0x0A, 0x6C, 0x6F, 0x61, ++ 0x64, 0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x49, ++ 0x00, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, ++ 0x6F, 0x6C, 0x64, 0x78, 0x70 }; + writeProlog("java.util.Hashtable", 1, prolog, sizeof(prolog), p); + // + // loadFactor = 0.75, threshold = 5, blockdata start, buckets.size = 7 +diff --git a/src/test/cpp/xml/domtestcase.cpp b/src/test/cpp/xml/domtestcase.cpp +index a500628..29d67dd 100644 +--- a/src/test/cpp/xml/domtestcase.cpp ++++ b/src/test/cpp/xml/domtestcase.cpp +@@ -190,9 +190,9 @@ public: + DOMConfigurator::configure(LOG4CXX_TEST_STR("input/xml/DOMTestCase3.xml")); + LOG4CXX_INFO(logger, "File name is expected to end with a superscript 3"); + #if LOG4CXX_LOGCHAR_IS_UTF8 +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xC2, 0xB3, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast(0xC2), static_cast(0xB3), 0 }; + #else +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xB3, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast(0xB3), 0 }; + #endif + File file; + file.setPath(fname); +@@ -209,9 +209,9 @@ public: + DOMConfigurator::configure(LOG4CXX_TEST_STR("input/xml/DOMTestCase4.xml")); + LOG4CXX_INFO(logger, "File name is expected to end with an ideographic 4"); + #if LOG4CXX_LOGCHAR_IS_UTF8 +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xE3, 0x86, 0x95, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast(0xE3), static_cast(0x86), static_cast(0x95), 0 }; + #else +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0x3195, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast(0x3195), 0 }; + #endif + File file; + file.setPath(fname); \ No newline at end of file diff --git a/var/spack/repos/builtin/packages/log4cxx/package.py b/var/spack/repos/builtin/packages/log4cxx/package.py new file mode 100644 index 00000000000..b6611544dff --- /dev/null +++ b/var/spack/repos/builtin/packages/log4cxx/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Log4cxx(AutotoolsPackage): + """A C++ port of Log4j""" + + homepage = "https://logging.apache.org/log4cxx/latest_stable/" + url = "http://mirror.netcologne.de/apache.org/logging/log4cxx/0.10.0/apache-log4cxx-0.10.0.tar.gz" + + version('0.10.0', 'b30ffb8da3665178e68940ff7a61084c') + + depends_on('libxml2') + depends_on('apr-util') + + build_directory = 'spack-build' + + # patches from https://aur.archlinux.org/packages/log4cxx/ + patch('log4cxx-0.10.0-missing_includes.patch') + patch('log4cxx-0.10.0-narrowing-fixes-from-upstream.patch') + + def configure_args(self): + args = ['--disable-static'] + return args From 7f89bc1e1d82fa4b452f0573cc7c8f382a604a05 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 18 Feb 2017 23:13:00 +0100 Subject: [PATCH 0169/2394] octave: fix missing --without statements (#3178) --- var/spack/repos/builtin/packages/octave/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index ed8d28ebdad..731e2a630ff 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -88,7 +88,7 @@ class Octave(AutotoolsPackage): depends_on('gnuplot', when='+gnuplot') depends_on('image-magick', when='+magick') depends_on('hdf5', when='+hdf5') - depends_on('jdk', when='+jdk') + depends_on('jdk', when='+jdk') # TODO: requires Java 6 ? depends_on('llvm', when='+llvm') # depends_on('opengl', when='+opengl') # TODO: add package depends_on('qhull', when='+qhull') @@ -167,6 +167,8 @@ def configure_args(self): if '+magick' in spec: config_args.append("--with-magick=%s" % spec['image-magick'].prefix.lib) + else: + config_args.append("--without-magick") if '+hdf5' in spec: config_args.extend([ @@ -182,12 +184,15 @@ def configure_args(self): "--with-java-includedir=%s" % spec['jdk'].prefix.include, "--with-java-libdir=%s" % spec['jdk'].prefix.lib ]) + else: + config_args.append("--disable-java") if '~opengl' in spec: config_args.extend([ "--without-opengl", "--without-framework-opengl" ]) + # TODO: opengl dependency and package is missing? if '+qhull' in spec: config_args.extend([ From 341b78a96dbdebf8a2e7a353c993a04f001d9e71 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 18 Feb 2017 16:42:13 -0600 Subject: [PATCH 0170/2394] Add patch to allow M4 `make check` to pass for PGI (#3108) --- .../builtin/packages/m4/gnulib-pgi.patch | 195 ++++++++++++++++++ .../repos/builtin/packages/m4/package.py | 3 +- 2 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/m4/gnulib-pgi.patch diff --git a/var/spack/repos/builtin/packages/m4/gnulib-pgi.patch b/var/spack/repos/builtin/packages/m4/gnulib-pgi.patch new file mode 100644 index 00000000000..059d897de38 --- /dev/null +++ b/var/spack/repos/builtin/packages/m4/gnulib-pgi.patch @@ -0,0 +1,195 @@ +Port to PGI 16.10 x86-64 + +This patch fixes one real bug in gl_anylinked_list2.h, along with some minor +glitches that are not bugs. It does not silence PGI's thousands of bogus +warnings when compiling test-intprops.c. Fortunately, the warnings do not +cause a failure. + +* lib/c-ctype.h (_C_CTYPE_LOWER_A_THRU_F_N, _C_CTYPE_LOWER_N): Rename parameter + to avoid PGI warning about '#define f(n) 'n''. My goodness, PGI goes back a + long ways - this predates C89! +* lib/gl_anylinked_list2.h (ASYNCSAFE): Fix bug caught by PGI. For example, + ASYNCSAFE (const void *) should expand to 'const void *volatile', not to + 'volatile const void *'. +* lib/spawn.in.h (POSIX_SPAWN_USEVFORK): Don't define if already defined. +* lib/verify.h (verify) [!__GNUC__]: Use shorter albeit meaningless string to + bypass silly compiler limits. +* tests/infinity.h (Infinityf, Infinityd, Infinityl) [__PGI]: +* tests/nan.h (NaNf, NaNd, NaNl): Use static functions to avoid misguided + compiler diagnostics. Is there some reason we don’t use static functions + on all platforms? + +diff --git a/lib/c-ctype.h b/lib/c-ctype.h +index bdca1f1..ec6a3a0 100644 +--- a/lib/c-ctype.h ++++ b/lib/c-ctype.h +@@ -115,16 +115,16 @@ extern "C" { + + /* Cases for lowercase hex letters, and lowercase letters, all offset by N. */ + +-#define _C_CTYPE_LOWER_A_THRU_F_N(n) \ +- case 'a' + (n): case 'b' + (n): case 'c' + (n): case 'd' + (n): \ +- case 'e' + (n): case 'f' + (n) +-#define _C_CTYPE_LOWER_N(n) \ +- _C_CTYPE_LOWER_A_THRU_F_N(n): \ +- case 'g' + (n): case 'h' + (n): case 'i' + (n): case 'j' + (n): \ +- case 'k' + (n): case 'l' + (n): case 'm' + (n): case 'n' + (n): \ +- case 'o' + (n): case 'p' + (n): case 'q' + (n): case 'r' + (n): \ +- case 's' + (n): case 't' + (n): case 'u' + (n): case 'v' + (n): \ +- case 'w' + (n): case 'x' + (n): case 'y' + (n): case 'z' + (n) ++#define _C_CTYPE_LOWER_A_THRU_F_N(N) \ ++ case 'a' + (N): case 'b' + (N): case 'c' + (N): case 'd' + (N): \ ++ case 'e' + (N): case 'f' + (N) ++#define _C_CTYPE_LOWER_N(N) \ ++ _C_CTYPE_LOWER_A_THRU_F_N(N): \ ++ case 'g' + (N): case 'h' + (N): case 'i' + (N): case 'j' + (N): \ ++ case 'k' + (N): case 'l' + (N): case 'm' + (N): case 'n' + (N): \ ++ case 'o' + (N): case 'p' + (N): case 'q' + (N): case 'r' + (N): \ ++ case 's' + (N): case 't' + (N): case 'u' + (N): case 'v' + (N): \ ++ case 'w' + (N): case 'x' + (N): case 'y' + (N): case 'z' + (N) + + /* Cases for hex letters, digits, lower, punct, and upper. */ + +diff --git a/lib/gl_anylinked_list2.h b/lib/gl_anylinked_list2.h +index c249f31..4545da9 100644 +--- a/lib/gl_anylinked_list2.h ++++ b/lib/gl_anylinked_list2.h +@@ -29,7 +29,7 @@ + and we use 'volatile' assignments to prevent the compiler from reordering + such assignments. */ + #ifdef SIGNAL_SAFE_LIST +-# define ASYNCSAFE(type) *(volatile type *)& ++# define ASYNCSAFE(type) *(type volatile *)& + #else + # define ASYNCSAFE(type) + #endif +diff --git a/lib/spawn.in.h b/lib/spawn.in.h +index e8116f9..b4b9197 100644 +--- a/lib/spawn.in.h ++++ b/lib/spawn.in.h +@@ -142,7 +142,8 @@ typedef struct + # endif + #endif + /* A GNU extension. Use the next free bit position. */ +-#define POSIX_SPAWN_USEVFORK \ ++#ifndef POSIX_SPAWN_USEVFORK ++# define POSIX_SPAWN_USEVFORK \ + ((POSIX_SPAWN_RESETIDS | (POSIX_SPAWN_RESETIDS - 1) \ + | POSIX_SPAWN_SETPGROUP | (POSIX_SPAWN_SETPGROUP - 1) \ + | POSIX_SPAWN_SETSIGDEF | (POSIX_SPAWN_SETSIGDEF - 1) \ +@@ -152,6 +153,7 @@ typedef struct + | POSIX_SPAWN_SETSCHEDULER \ + | (POSIX_SPAWN_SETSCHEDULER > 0 ? POSIX_SPAWN_SETSCHEDULER - 1 : 0)) \ + + 1) ++#endif + #if !GNULIB_defined_verify_POSIX_SPAWN_USEVFORK_no_overlap + typedef int verify_POSIX_SPAWN_USEVFORK_no_overlap + [(((POSIX_SPAWN_RESETIDS | POSIX_SPAWN_SETPGROUP +diff --git a/lib/verify.h b/lib/verify.h +index dcaf7ca..dcba9c8 100644 +--- a/lib/verify.h ++++ b/lib/verify.h +@@ -248,7 +248,12 @@ template + /* Verify requirement R at compile-time, as a declaration without a + trailing ';'. */ + +-#define verify(R) _GL_VERIFY (R, "verify (" #R ")") ++#ifdef __GNUC__ ++# define verify(R) _GL_VERIFY (R, "verify (" #R ")") ++#else ++/* PGI barfs if R is long. Play it safe. */ ++# define verify(R) _GL_VERIFY (R, "verify (...)") ++#endif + + #ifndef __has_builtin + # define __has_builtin(x) 0 +diff --git a/tests/infinity.h b/tests/infinity.h +index 431f700..ef5d3bd 100644 +--- a/tests/infinity.h ++++ b/tests/infinity.h +@@ -18,8 +18,9 @@ + /* Infinityf () returns a 'float' +Infinity. */ + + /* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. +- The IBM XL C compiler on z/OS complains. */ +-#if defined _MSC_VER || (defined __MVS__ && defined __IBMC__) ++ The IBM XL C compiler on z/OS complains. ++ PGI 16.10 complains. */ ++#if defined _MSC_VER || (defined __MVS__ && defined __IBMC__) || defined __PGI + static float + Infinityf () + { +@@ -34,8 +35,9 @@ Infinityf () + /* Infinityd () returns a 'double' +Infinity. */ + + /* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. +- The IBM XL C compiler on z/OS complains. */ +-#if defined _MSC_VER || (defined __MVS__ && defined __IBMC__) ++ The IBM XL C compiler on z/OS complains. ++ PGI 16.10 complains. */ ++#if defined _MSC_VER || (defined __MVS__ && defined __IBMC__) || defined __PGI + static double + Infinityd () + { +@@ -50,8 +52,9 @@ Infinityd () + /* Infinityl () returns a 'long double' +Infinity. */ + + /* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. +- The IBM XL C compiler on z/OS complains. */ +-#if defined _MSC_VER || (defined __MVS__ && defined __IBMC__) ++ The IBM XL C compiler on z/OS complains. ++ PGI 16.10 complains. */ ++#if defined _MSC_VER || (defined __MVS__ && defined __IBMC__) || defined __PGI + static long double + Infinityl () + { +diff --git a/tests/nan.h b/tests/nan.h +index 48236b5..b5a0f29 100644 +--- a/tests/nan.h ++++ b/tests/nan.h +@@ -25,8 +25,11 @@ + /* NaNf () returns a 'float' not-a-number. */ + + /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke +- on the expression 0.0 / 0.0. The IBM XL C compiler on z/OS complains. */ +-#if defined __DECC || defined _MSC_VER || (defined __MVS__ && defined __IBMC__) ++ on the expression 0.0 / 0.0. The IBM XL C compiler on z/OS complains. ++ PGI 16.10 complains. */ ++#if (defined __DECC || defined _MSC_VER \ ++ || (defined __MVS__ && defined __IBMC__) \ ++ || defined __PGI) + static float + NaNf () + { +@@ -41,8 +44,11 @@ NaNf () + /* NaNd () returns a 'double' not-a-number. */ + + /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke +- on the expression 0.0 / 0.0. The IBM XL C compiler on z/OS complains. */ +-#if defined __DECC || defined _MSC_VER || (defined __MVS__ && defined __IBMC__) ++ on the expression 0.0 / 0.0. The IBM XL C compiler on z/OS complains. ++ PGI 16.10 complains. */ ++#if (defined __DECC || defined _MSC_VER \ ++ || (defined __MVS__ && defined __IBMC__) \ ++ || defined __PGI) + static double + NaNd () + { +@@ -59,14 +65,15 @@ NaNd () + /* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the + runtime type conversion. + The Microsoft MSVC 9 compiler chokes on the expression 0.0L / 0.0L. +- The IBM XL C compiler on z/OS complains. */ ++ The IBM XL C compiler on z/OS complains. ++ PGI 16.10 complains. */ + #ifdef __sgi + static long double NaNl () + { + double zero = 0.0; + return zero / zero; + } +-#elif defined _MSC_VER || (defined __MVS__ && defined __IBMC__) ++#elif defined _MSC_VER || (defined __MVS__ && defined __IBMC__) || defined __PGI + static long double + NaNl () + { diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index 128e1c2a41f..33929eea6f2 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -29,11 +29,12 @@ class M4(AutotoolsPackage): """GNU M4 is an implementation of the traditional Unix macro processor.""" homepage = "https://www.gnu.org/software/m4/m4.html" - url = "https://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz" + url = "https://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.gz" version('1.4.18', 'a077779db287adf4e12a035029002d28') version('1.4.17', 'a5e9954b1dae036762f7b13673a2cf76') + patch('gnulib-pgi.patch', when='@1.4.18') patch('pgi.patch', when='@1.4.17') variant('sigsegv', default=True, From 4397ce8118a44fae4bef2b2ddcdfa3377922563f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 18 Feb 2017 16:42:45 -0600 Subject: [PATCH 0171/2394] Replace GCC-specific warning flags with valid PGI flags (#3137) --- var/spack/repos/builtin/packages/bzip2/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/bzip2/package.py b/var/spack/repos/builtin/packages/bzip2/package.py index d12b88e734d..e4b24637841 100644 --- a/var/spack/repos/builtin/packages/bzip2/package.py +++ b/var/spack/repos/builtin/packages/bzip2/package.py @@ -36,6 +36,7 @@ class Bzip2(Package): url = "http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz" version('1.0.6', '00b516f4704d4a7cb50a1d97e6e8e15b') + variant('shared', default=True, description='Enables the build of shared libraries.') def patch(self): @@ -44,6 +45,11 @@ def patch(self): filter_file(r'^CC=gcc', 'CC=cc', 'Makefile') filter_file(r'^CC=gcc', 'CC=cc', 'Makefile-libbz2_so') + # The Makefiles use GCC flags that are incompatible with PGI + if self.compiler.name == 'pgi': + filter_file('-Wall -Winline', '-Minform=inform', 'Makefile') + filter_file('-Wall -Winline', '-Minform=inform', 'Makefile-libbz2_so') # noqa + # Patch the link line to use RPATHs on macOS if 'darwin' in self.spec.architecture: v = self.spec.version From 49d7f9db3d1198e5664818cc204b558aeb5268aa Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 18 Feb 2017 21:09:50 -0600 Subject: [PATCH 0172/2394] Add patches to allow PGI to build Tar properly (#3177) --- .../repos/builtin/packages/tar/argp-pgi.patch | 25 +++++++ .../builtin/packages/tar/config-pgi.patch | 10 +++ .../tar/gnutar-configure-xattrs.patch | 6 +- .../repos/builtin/packages/tar/package.py | 10 +-- .../builtin/packages/tar/se-selinux.patch | 66 +++++++++++++++++++ .../repos/builtin/packages/tar/tar-pgi.patch | 66 +++++++++++++++++++ 6 files changed, 178 insertions(+), 5 deletions(-) create mode 100644 var/spack/repos/builtin/packages/tar/argp-pgi.patch create mode 100644 var/spack/repos/builtin/packages/tar/config-pgi.patch create mode 100644 var/spack/repos/builtin/packages/tar/se-selinux.patch create mode 100644 var/spack/repos/builtin/packages/tar/tar-pgi.patch diff --git a/var/spack/repos/builtin/packages/tar/argp-pgi.patch b/var/spack/repos/builtin/packages/tar/argp-pgi.patch new file mode 100644 index 00000000000..d4f2ccbdc9a --- /dev/null +++ b/var/spack/repos/builtin/packages/tar/argp-pgi.patch @@ -0,0 +1,25 @@ +From 8b3e22b18791f2148da46e60040fc4d9270936b5 Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Tue, 14 Feb 2017 08:40:23 -0800 +Subject: argp: port to PGI 16.10 + +* gnu/argp-pin.c (dummy): Declare as needed to make file nonempty. + +diff --git a/gnu/argp-pin.c b/gnu/argp-pin.c +index 261191f..64d831d 100644 +--- a/gnu/argp-pin.c ++++ b/gnu/argp-pin.c +@@ -24,3 +24,10 @@ char *program_invocation_short_name = 0; + #ifndef HAVE_PROGRAM_INVOCATION_NAME + char *program_invocation_name = 0; + #endif ++ ++#if (defined HAVE_PROGRAM_INVOCATION_SHORT_NAME \ ++ && defined HAVE_PROGRAM_INVOCATION_NAME) ++/* This declaration is solely to ensure that after preprocessing ++ this file is never empty. */ ++typedef int dummy; ++#endif +-- +cgit v1.0-41-gc330 + diff --git a/var/spack/repos/builtin/packages/tar/config-pgi.patch b/var/spack/repos/builtin/packages/tar/config-pgi.patch new file mode 100644 index 00000000000..fb6ebd5b2ab --- /dev/null +++ b/var/spack/repos/builtin/packages/tar/config-pgi.patch @@ -0,0 +1,10 @@ +--- a/config.h.in ++++ b/config.h.in +@@ -2182,6 +2182,7 @@ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : (199901L <= __STDC_VERSION__ \ + && !defined __HP_cc \ ++ && !defined __PGI \ + && !(defined __SUNPRO_C && __STDC__))) \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) + # define _GL_INLINE inline diff --git a/var/spack/repos/builtin/packages/tar/gnutar-configure-xattrs.patch b/var/spack/repos/builtin/packages/tar/gnutar-configure-xattrs.patch index e5c183b7203..8b65ebab22d 100644 --- a/var/spack/repos/builtin/packages/tar/gnutar-configure-xattrs.patch +++ b/var/spack/repos/builtin/packages/tar/gnutar-configure-xattrs.patch @@ -1,3 +1,7 @@ +Fixes major build errors on macOS + +See http://lists.gnu.org/archive/html/bug-tar/2014-08/msg00001.html + diff --git a/Makefile.in b/Makefile.in index f9f1d1d..b403e46 100644 --- a/Makefile.in @@ -479,4 +483,4 @@ index 82b2d46..42daaef 100644 -tar_LDADD += -lattr -endif -- -1.9.3 \ No newline at end of file +1.9.3 diff --git a/var/spack/repos/builtin/packages/tar/package.py b/var/spack/repos/builtin/packages/tar/package.py index 7b6313827fe..cabd422c0d3 100644 --- a/var/spack/repos/builtin/packages/tar/package.py +++ b/var/spack/repos/builtin/packages/tar/package.py @@ -28,13 +28,15 @@ class Tar(AutotoolsPackage): """GNU Tar provides the ability to create tar archives, as well as various other kinds of manipulation.""" + homepage = "https://www.gnu.org/software/tar/" - url = "https://ftp.gnu.org/gnu/tar/tar-1.28.tar.gz" + url = "https://ftp.gnu.org/gnu/tar/tar-1.29.tar.gz" version('1.29', 'cae466e6e58c7292355e7080248f244db3a4cf755f33f4fa25ca7f9a7ed09af0') version('1.28', '6ea3dbea1f2b0409b234048e021a9fd7') - # see http://lists.gnu.org/archive/html/bug-tar/2014-08/msg00001.html and - # https://github.com/Homebrew/homebrew-core/commit/aef9a1792de4648d0322b4b04d32287532f046bb - # TODO: when=sys.platform=='darwin' ? + patch('tar-pgi.patch', when='@1.29') + patch('config-pgi.patch', when='@:1.29') + patch('se-selinux.patch', when='@:1.29') + patch('argp-pgi.patch', when='@:1.29') patch('gnutar-configure-xattrs.patch', when='@1.28') diff --git a/var/spack/repos/builtin/packages/tar/se-selinux.patch b/var/spack/repos/builtin/packages/tar/se-selinux.patch new file mode 100644 index 00000000000..1146b9838e1 --- /dev/null +++ b/var/spack/repos/builtin/packages/tar/se-selinux.patch @@ -0,0 +1,66 @@ +From e041ac5f63e23b20c322f2777d6330074c8a7215 Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Tue, 14 Feb 2017 08:46:05 -0800 +Subject: selinux-h: port to PGI 16.10 + +* gnu/se-selinux.in.h: Don't assume that include_next skips over +duplicate -I DIR options. + +diff --git a/gnu/se-selinux.in.h b/gnu/se-selinux.in.h +index cd19951..1cf7c00 100644 +--- a/gnu/se-selinux.in.h ++++ b/gnu/se-selinux.in.h +@@ -14,26 +14,25 @@ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +-#ifndef _@GUARD_PREFIX@_SELINUX_SELINUX_H +-# define _@GUARD_PREFIX@_SELINUX_SELINUX_H +- +-# if __GNUC__ >= 3 ++#if __GNUC__ >= 3 + @PRAGMA_SYSTEM_HEADER@ +-# endif ++#endif + @PRAGMA_COLUMNS@ + +-# if HAVE_SELINUX_SELINUX_H ++#if HAVE_SELINUX_SELINUX_H + + #@INCLUDE_NEXT@ @NEXT_SELINUX_SELINUX_H@ + +-# else ++#else ++# if !defined _@GUARD_PREFIX@_SELINUX_SELINUX_H ++# define _@GUARD_PREFIX@_SELINUX_SELINUX_H + + # include + # include + +-#ifndef _GL_INLINE_HEADER_BEGIN +- #error "Please include config.h first." +-#endif ++# ifndef _GL_INLINE_HEADER_BEGIN ++ #error "Please include config.h first." ++# endif + _GL_INLINE_HEADER_BEGIN + # ifndef SE_SELINUX_INLINE + # define SE_SELINUX_INLINE _GL_INLINE +@@ -114,10 +113,10 @@ matchpathcon_init_prefix (char const *path _GL_UNUSED_PARAMETER, + # define GNULIB_defined_security_types 1 + # endif + +-#ifndef _GL_INLINE_HEADER_BEGIN +- #error "Please include config.h first." +-#endif ++# ifndef _GL_INLINE_HEADER_BEGIN ++ #error "Please include config.h first." ++# endif + _GL_INLINE_HEADER_BEGIN + + # endif +-#endif /* _@GUARD_PREFIX@_SELINUX_SELINUX_H */ ++#endif +-- +cgit v1.0-41-gc330 + diff --git a/var/spack/repos/builtin/packages/tar/tar-pgi.patch b/var/spack/repos/builtin/packages/tar/tar-pgi.patch new file mode 100644 index 00000000000..1cfed1839aa --- /dev/null +++ b/var/spack/repos/builtin/packages/tar/tar-pgi.patch @@ -0,0 +1,66 @@ +From 2be02a7c9afa5b4f01261e5b66c64217f7f3c29a Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Tue, 14 Feb 2017 08:55:05 -0800 +Subject: Fix incompatibility with PGI 16.10 + +* src/tar.c (options): Fix incompatibility with the C standard, +which says that arguments to macro calls cannot contain # directives. + +diff --git a/src/tar.c b/src/tar.c +index fd29cd3..ea68c82 100644 +--- a/src/tar.c ++++ b/src/tar.c +@@ -548,11 +548,11 @@ static struct argp_option options[] = { + N_("cancel the effect of --delay-directory-restore option"), GRID+1 }, + {"sort", SORT_OPTION, N_("ORDER"), 0, + #if D_INO_IN_DIRENT +- N_("directory sorting order: none (default), name or inode" ++ N_("directory sorting order: none (default), name or inode") + #else +- N_("directory sorting order: none (default) or name" ++ N_("directory sorting order: none (default) or name") + #endif +- ), GRID+1 }, ++ , GRID+1 }, + #undef GRID + + #define GRID 55 +@@ -1758,7 +1758,7 @@ parse_opt (int key, char *arg, struct argp_state *state) + case GROUP_MAP_OPTION: + group_map_read (arg); + break; +- ++ + case MODE_OPTION: + mode_option = mode_compile (arg); + if (!mode_option) +@@ -1829,7 +1829,7 @@ parse_opt (int key, char *arg, struct argp_state *state) + case OWNER_MAP_OPTION: + owner_map_read (arg); + break; +- ++ + case QUOTE_CHARS_OPTION: + for (;*arg; arg++) + set_char_quoting (NULL, *arg, 1); +@@ -2123,7 +2123,7 @@ find_argp_option (struct argp *ap, int key) + { + struct argp_option const *p = NULL; + struct argp_child const *child; +- ++ + p = find_argp_option_key (ap->options, key); + if (!p && ap->children) + { +@@ -2136,7 +2136,7 @@ find_argp_option (struct argp *ap, int key) + } + return p; + } +- ++ + static const char *tar_authors[] = { + "John Gilmore", + "Jay Fenlason", +-- +cgit v1.0-41-gc330 + From a211795a0c62b7e6c4c619f8d5dbe3611ecd7ddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sun, 19 Feb 2017 11:12:05 +0800 Subject: [PATCH 0173/2394] Add Intel Parallel Studio XE 2016u4 and 2015u6. (#3182) --- .../repos/builtin/packages/intel-parallel-studio/package.py | 4 ++++ 1 file changed, 4 insertions(+) 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 fbafb4fb0d2..dad1f6dc3a7 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -45,11 +45,15 @@ class IntelParallelStudio(IntelInstaller): version('professional.2017.0', '34c98e3329d6ac57408b738ae1daaa01') version('cluster.2017.0', '34c98e3329d6ac57408b738ae1daaa01') version('composer.2016.3', '3208eeabee951fc27579177b593cefe9') + version('professional.2016.4', '16a641a06b156bb647c8a56e71f3bb33') + version('cluster.2016.4', '16a641a06b156bb647c8a56e71f3bb33') version('professional.2016.3', 'eda19bb0d0d19709197ede58f13443f3') version('cluster.2016.3', 'eda19bb0d0d19709197ede58f13443f3') version('composer.2016.2', '1133fb831312eb519f7da897fec223fa') version('professional.2016.2', '70be832f2d34c9bf596a5e99d5f2d832') version('cluster.2016.2', '70be832f2d34c9bf596a5e99d5f2d832') + version('professional.2015.6', 'd460f362c30017b60f85da2e51ad25bf') + version('cluster.2015.6', 'd460f362c30017b60f85da2e51ad25bf') variant('rpath', default=True, description="Add rpath to .cfg files") variant('newdtags', default=False, From 7edea4361f724a50e3925751ed4604652d58cb74 Mon Sep 17 00:00:00 2001 From: Barry Smith Date: Sun, 19 Feb 2017 19:44:16 -0600 Subject: [PATCH 0174/2394] Add installer for SAWs (#3186) --- .../repos/builtin/packages/saws/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/saws/package.py diff --git a/var/spack/repos/builtin/packages/saws/package.py b/var/spack/repos/builtin/packages/saws/package.py new file mode 100644 index 00000000000..7549a94b91c --- /dev/null +++ b/var/spack/repos/builtin/packages/saws/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Saws(AutotoolsPackage): + """The Scientific Application Web server (SAWs) turns any C or C++ + scientific or engineering application code into a webserver, + allowing one to examine (and even modify) the state of the + simulation with any browser from anywhere.""" + homepage = "https://bitbucket.org/saws/saws/wiki/Home" + + version('develop', git='https://bitbucket.org/saws/saws.git', tag='master') + version('0.1.0', git='https://bitbucket.org/saws/saws.git', tag='v0.1.0') From 4b9a37a357af4f36df05d7a06de4b9d5d841aa26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Bederi=C3=A1n?= Date: Mon, 20 Feb 2017 03:45:19 +0200 Subject: [PATCH 0175/2394] silo: adding patch to support newer versions of hdf5 (#3162) --- .../repos/builtin/packages/silo/package.py | 5 ++- .../packages/silo/remove-mpiposix.patch | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/silo/remove-mpiposix.patch diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index 691d53a9f10..6a9326517ba 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -41,10 +41,11 @@ class Silo(Package): variant('silex', default=False, description='Builds Silex, a GUI for viewing Silo files') - # silo uses the obsolete function H5Pset_fapl_mpiposix: - depends_on("hdf5 @:1.8.12") + depends_on('hdf5') depends_on('qt', when='+silex') + patch('remove-mpiposix.patch', when='@4.8:4.10.2') + def install(self, spec, prefix): config_args = [ '--enable-fortran' if '+fortran' in spec else '--disable-fortran', diff --git a/var/spack/repos/builtin/packages/silo/remove-mpiposix.patch b/var/spack/repos/builtin/packages/silo/remove-mpiposix.patch new file mode 100644 index 00000000000..1c6449f0c02 --- /dev/null +++ b/var/spack/repos/builtin/packages/silo/remove-mpiposix.patch @@ -0,0 +1,40 @@ +Index: silo-llnl-4.9.1/src/hdf5_drv/silo_hdf5.c +=================================================================== +--- silo-llnl-4.9.1.orig/src/hdf5_drv/silo_hdf5.c ++++ silo-llnl-4.9.1/src/hdf5_drv/silo_hdf5.c +@@ -4717,16 +4717,7 @@ db_hdf5_process_file_options(opts_set_id + + /* default HDF5 mpi drivers */ + case DB_FILE_OPTS_H5_DEFAULT_MPIP: +- { +-#ifdef H5_HAVE_PARALLEL +- h5status |= H5Pset_fapl_mpiposix(retval, MPI_COMM_SELF, TRUE); +-#else +- H5Pclose(retval); +- return db_perror("HDF5 MPI VFD", E_NOTENABLEDINBUILD, me); +-#endif +- break; +- } +- ++ /* FALLTHROUGH */ + case DB_FILE_OPTS_H5_DEFAULT_MPIO: + { + #ifdef H5_HAVE_PARALLEL +@@ -4963,15 +4954,8 @@ db_hdf5_process_file_options(opts_set_id + if (p = DBGetOption(opts, DBOPT_H5_MPIP_NO_GPFS_HINTS)) + use_gpfs_hints = FALSE; + +- if (vfd == DB_H5VFD_MPIO) +- { +- h5status |= H5Pset_fapl_mpio(retval, mpi_comm, mpi_info); +- if (created_info) MPI_Info_free(&mpi_info); +- } +- else +- { +- h5status |= H5Pset_fapl_mpiposix(retval, mpi_comm, use_gpfs_hints); +- } ++ h5status |= H5Pset_fapl_mpio(retval, mpi_comm, mpi_info); ++ if (created_info) MPI_Info_free(&mpi_info); + #else + H5Pclose(retval); + return db_perror("HDF5 MPI VFD", E_NOTENABLEDINBUILD, me); From c8cfe317c200fbb255a885dff5b76ce5336a17f7 Mon Sep 17 00:00:00 2001 From: healther Date: Mon, 20 Feb 2017 14:53:33 +0100 Subject: [PATCH 0176/2394] Added version 1.49.2 to gobject-introspection (#3090) --- .../repos/builtin/packages/gobject-introspection/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index 952ec216610..e20688c9e98 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -31,12 +31,14 @@ class GobjectIntrospection(Package): library with support for multiple output""" homepage = "https://wiki.gnome.org/Projects/GObjectIntrospection" - url = "http://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.48/gobject-introspection-1.48.0.tar.xz" + url = "http://ftp.gnome.org/pub/gnome/sources/gobject-introspection/1.49/gobject-introspection-1.49.2.tar.xz" + version('1.49.2', 'c47a76b05b2d8438089f519922180747') version('1.48.0', '01301fa9019667d48e927353e08bc218') + depends_on("glib@2.49.2:", when="@1.49.2:") # version 1.48.0 build fails with glib 2.49.4 - depends_on("glib@2.48.1") + depends_on("glib@2.48.1", when="@1.48.0") depends_on("python") depends_on("cairo") depends_on("bison", type="build") From 8ebd49c96239e64f963b7df9e8f33d7544b60780 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 21 Feb 2017 00:14:44 +0100 Subject: [PATCH 0177/2394] add symlink variant (needed for AFS) (#3147) * add symlink variant (needed for AFS) * fix flake8 * added missing return statement --- var/spack/repos/builtin/packages/ncurses/package.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 79b5e88cebe..3d4a0838c57 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -41,8 +41,11 @@ class Ncurses(AutotoolsPackage): patch('patch_gcc_5.txt', when='@6.0%gcc@5.0:') patch('sed_pgi.patch', when='@:6.0') + variant('symlinks', default=False, + description='Enables symlinks. Needed on AFS filesystem.') + def configure_args(self): - return [ + opts = [ 'CFLAGS={0}'.format(self.compiler.pic_flag), 'CXXFLAGS={0}'.format(self.compiler.pic_flag), '--with-shared', @@ -54,3 +57,6 @@ def configure_args(self): '--enable-pc-files', '--with-pkg-config-libdir={0}/lib/pkgconfig'.format(self.prefix) ] + if '+symlinks' in self.spec: + opts += ["--enable-symlinks"] + return opts From 4de85ab4b79f81b82603f6eee5b68065535106f5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 20 Feb 2017 17:38:30 -0600 Subject: [PATCH 0178/2394] Add new versions of several Python packages (#3195) --- .../repos/builtin/packages/py-nose/package.py | 8 ++-- .../builtin/packages/py-numpy/package.py | 18 +++++++-- .../repos/builtin/packages/py-pip/package.py | 1 + .../packages/py-pytest-flake8/package.py | 40 +++++++++++++++++++ .../packages/py-scikit-learn/package.py | 15 ++++--- .../builtin/packages/py-scipy/package.py | 13 +++--- .../builtin/packages/py-setuptools/package.py | 15 +++---- 7 files changed, 85 insertions(+), 25 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-pytest-flake8/package.py diff --git a/var/spack/repos/builtin/packages/py-nose/package.py b/var/spack/repos/builtin/packages/py-nose/package.py index 050a018ffa0..c78c52647a9 100644 --- a/var/spack/repos/builtin/packages/py-nose/package.py +++ b/var/spack/repos/builtin/packages/py-nose/package.py @@ -30,10 +30,12 @@ class PyNose(PythonPackage): making it easier to write, find and run tests.""" homepage = "https://pypi.python.org/pypi/nose" - url = "https://pypi.python.org/packages/source/n/nose/nose-1.3.4.tar.gz" + url = "https://pypi.io/packages/source/n/nose/nose-1.3.4.tar.gz" + list_url = "https://pypi.python.org/pypi/nose/" + list_depth = 2 - version('1.3.4', '6ed7169887580ddc9a8e16048d38274d') - version('1.3.6', '0ca546d81ca8309080fc80cb389e7a16') version('1.3.7', '4d3ad0ff07b61373d2cefc89c5d0b20b') + version('1.3.6', '0ca546d81ca8309080fc80cb389e7a16') + version('1.3.4', '6ed7169887580ddc9a8e16048d38274d') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 182616232e0..a1aedb730c9 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -36,6 +36,8 @@ class PyNumpy(PythonPackage): homepage = "http://www.numpy.org/" url = "https://pypi.io/packages/source/n/numpy/numpy-1.9.1.tar.gz" + version('1.12.0', '33e5a84579f31829bbbba084fe0a4300', + url="https://pypi.io/packages/source/n/numpy/numpy-1.12.0.zip") version('1.11.2', '03bd7927c314c43780271bf1ab795ebc') version('1.11.1', '2f44a895a8104ffac140c3a70edbd450') version('1.11.0', 'bc56fb9fc2895aa4961802ffbdb31d0b') @@ -43,11 +45,10 @@ class PyNumpy(PythonPackage): version('1.9.2', 'a1ed53432dbcd256398898d35bc8e645') version('1.9.1', '78842b73560ec378142665e712ae4ad9') - variant('blas', default=True) - variant('lapack', default=True) + variant('blas', default=True, description='Build with BLAS support') + variant('lapack', default=True, description='Build with LAPACK support') - depends_on('python@2.6:2.8,3.2:') - depends_on('py-nose', type='build') + depends_on('python@2.7:2.8,3.4:') depends_on('py-setuptools', type='build') depends_on('blas', when='+blas') depends_on('lapack', when='+lapack') @@ -122,3 +123,12 @@ def patch(self): if not ((platform.system() == "Darwin") and (platform.mac_ver()[0] == '10.12')): f.write('rpath=%s\n' % dirs) + + def build_args(self, spec, prefix): + args = [] + + # From NumPy 1.10.0 on it's possible to do a parallel build + if self.version >= Version('1.10.0'): + args = ['-j', str(make_jobs)] + + return args diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index 73e1661245e..7a41d6caa5c 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -33,4 +33,5 @@ class PyPip(PythonPackage): version('9.0.1', '35f01da33009719497f01a4ba69d63c9') + depends_on('python@2.6:2.7,3.3:') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pytest-flake8/package.py b/var/spack/repos/builtin/packages/py-pytest-flake8/package.py new file mode 100644 index 00000000000..8a3ee5bb4a2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pytest-flake8/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPytestFlake8(PythonPackage): + """pytest plugin to check FLAKE8 requirements.""" + + homepage = "https://github.com/tholo/pytest-flake8" + url = "https://pypi.io/packages/source/p/pytest-flake8/pytest-flake8-0.8.1.tar.gz" + + version('0.8.1', '39b64ebceb2849805975a2ff4ea7e947') + + depends_on('py-setuptools', type='build') + + # Install requires: + depends_on('py-flake8@3.0:', type=('build', 'run')) + depends_on('py-pytest@2.8:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py index 7c7102ce418..e61a90f352f 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -27,13 +27,18 @@ class PyScikitLearn(PythonPackage): """A set of python modules for machine learning and data mining.""" - homepage = "https://pypi.python.org/pypi/scikit-learn" - url = "https://pypi.python.org/packages/source/s/scikit-learn/scikit-learn-0.15.2.tar.gz" + homepage = "https://pypi.python.org/pypi/scikit-learn" + url = "https://pypi.io/packages/source/s/scikit-learn/scikit-learn-0.18.1.tar.gz" + list_url = "https://pypi.python.org/pypi/scikit-learn" + list_depth = 2 + + version('0.18.1', '6b0ff1eaa5010043895dd63d1e3c60c9') version('0.15.2', 'd9822ad0238e17b382a3c756ea94fe0d') version('0.16.1', '363ddda501e3b6b61726aa40b8dbdb7e') version('0.17.1', 'a2f8b877e6d99b1ed737144f5a478dfc') - depends_on('py-setuptools', type='build') - depends_on('py-numpy', type=('build', 'run')) - depends_on('py-scipy', type=('build', 'run')) + depends_on('python@2.6:2.7,3.3:') + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.6.1:', type=('build', 'run')) + depends_on('py-scipy@0.9:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index 85b6f631e13..2039fc07c33 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -31,21 +31,22 @@ class PyScipy(PythonPackage): as routines for numerical integration and optimization.""" homepage = "http://www.scipy.org/" - url = "https://pypi.python.org/packages/source/s/scipy/scipy-0.15.0.tar.gz" + url = "https://pypi.io/packages/source/s/scipy/scipy-0.18.1.tar.gz" - version('0.18.1', '5fb5fb7ccb113ab3a039702b6c2f3327', - url="https://pypi.python.org/packages/22/41/b1538a75309ae4913cdbbdc8d1cc54cae6d37981d2759532c1aa37a41121/scipy-0.18.1.tar.gz") + version('0.18.1', '5fb5fb7ccb113ab3a039702b6c2f3327') version('0.17.0', '5ff2971e1ce90e762c59d2cd84837224') version('0.15.1', 'be56cd8e60591d6332aac792a5880110') version('0.15.0', '639112f077f0aeb6d80718dc5019dc7a') depends_on('python@2.6:2.8,3.2:') - depends_on('py-nose', type='build') - # Known not to work with 2.23, 2.25 - depends_on('binutils@2.26:', type='build') + depends_on('py-setuptools', type='build') depends_on('py-numpy@1.7.1:+blas+lapack', type=('build', 'run')) # NOTE: scipy picks up Blas/Lapack from numpy, see # http://www.scipy.org/scipylib/building/linux.html#step-4-build-numpy-1-5-0 depends_on('blas') depends_on('lapack') + + def build_args(self, spec, prefix): + # Build in parallel + return ['-j', str(make_jobs)] diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index d3558009589..38b316861e2 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -30,14 +30,15 @@ class PySetuptools(PythonPackage): upgrading, installing, and uninstalling Python packages.""" homepage = "https://pypi.python.org/pypi/setuptools" - url = "https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.tar.gz" + url = "https://pypi.io/packages/source/s/setuptools/setuptools-25.2.0.tar.gz" - version('25.2.0', 'a0dbb65889c46214c691f6c516cf959c', - url="https://pypi.python.org/packages/9f/32/81c324675725d78e7f6da777483a3453611a427db0145dfb878940469692/setuptools-25.2.0.tar.gz") + version('34.2.0', '41b630da4ea6cfa5894d9eb3142922be', + url="https://pypi.io/packages/source/s/setuptools/setuptools-34.2.0.zip") + version('25.2.0', 'a0dbb65889c46214c691f6c516cf959c') version('20.7.0', '5d12b39bf3e75e80fdce54e44b255615') version('20.6.7', '45d6110f3ec14924e44c33411db64fe6') - version('20.5', 'fadc1e1123ddbe31006e5e43e927362b') - version('19.2', '78353b1f80375ca5e088f4b4627ffe03') - version('18.1', 'f72e87f34fbf07f299f6cb46256a0b06') - version('16.0', '0ace0b96233516fc5f7c857d086aa3ad') + version('20.5', 'fadc1e1123ddbe31006e5e43e927362b') + version('19.2', '78353b1f80375ca5e088f4b4627ffe03') + version('18.1', 'f72e87f34fbf07f299f6cb46256a0b06') + version('16.0', '0ace0b96233516fc5f7c857d086aa3ad') version('11.3.1', '01f69212e019a2420c1693fb43593930') From 8c2f5baa195457d9890d0624ee810a9adec6cbf7 Mon Sep 17 00:00:00 2001 From: Pramod Kumbhar Date: Tue, 21 Feb 2017 00:39:51 +0100 Subject: [PATCH 0179/2394] Fix zoltan installation issue on bg-q #3193 (#3194) Zoltan expects mpi libraries with option --with-mpi-libs. If this option is not provided then it uses '-lmpi' which may not be correct. To avoid this, we have to explicitly pass empty string. This adds notes to the source explaining the change. --- var/spack/repos/builtin/packages/zoltan/package.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py index 8d4dd321b07..21c90a05e41 100644 --- a/var/spack/repos/builtin/packages/zoltan/package.py +++ b/var/spack/repos/builtin/packages/zoltan/package.py @@ -88,9 +88,18 @@ def install(self, spec, prefix): config_args.append('CXX={0}'.format(spec['mpi'].mpicxx)) config_args.append('FC={0}'.format(spec['mpi'].mpifc)) - mpi_libs = ' -l'.join(self.get_mpi_libs()) config_args.append('--with-mpi={0}'.format(spec['mpi'].prefix)) - config_args.append('--with-mpi-libs=-l{0}'.format(mpi_libs)) + + mpi_libs = self.get_mpi_libs() + + # NOTE: Some external mpi installations may have empty lib + # directory (e.g. bg-q). In this case we need to explicitly + # pass empty library name. + if mpi_libs: + mpi_libs = ' -l'.join(mpi_libs) + config_args.append('--with-mpi-libs=-l{0}'.format(mpi_libs)) + else: + config_args.append('--with-mpi-libs= ') # NOTE: Early versions of Zoltan come packaged with a few embedded # library packages (e.g. ParMETIS, Scotch), which messes with Spack's From 031cde6e25e2b48035b61c95f9b2e4c92183fb30 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 21 Feb 2017 00:40:46 +0100 Subject: [PATCH 0180/2394] openblas: add develop version to make it work with Kabylake CPUs (#3192) * openblas: add develop version to make it work with Kabylake CPUs * dealii: fix develop branch --- var/spack/repos/builtin/packages/dealii/package.py | 2 +- var/spack/repos/builtin/packages/openblas/package.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index e4c7579f312..1fab8913d4d 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -42,7 +42,7 @@ class Dealii(CMakePackage): version('8.3.0', 'fc6cdcb16309ef4bea338a4f014de6fa') version('8.2.1', '71c728dbec14f371297cd405776ccf08') version('8.1.0', 'aa8fadc2ce5eb674f44f997461bf668d') - version('develop', git='https://github.com/dealii/dealii.git', tag='master') + version('develop', git='https://github.com/dealii/dealii.git', branch='master') variant('mpi', default=True, description='Compile with MPI') variant('arpack', default=True, diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index cdb3042f738..3909744dc89 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -38,6 +38,8 @@ class Openblas(MakefilePackage): version('0.2.16', 'fef46ab92463bdbb1479dcec594ef6dc') version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9') + version('develop', git='https://github.com/xianyi/OpenBLAS.git', branch='develop') + variant( 'shared', default=True, From 0203545eb82a295e67fd1451a806551dbc56a0f4 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 20 Feb 2017 17:41:31 -0600 Subject: [PATCH 0181/2394] Update CUDA docstring, no longer need to download manually (#3191) * Update CUDA docstring, no longer need to download manually --- var/spack/repos/builtin/packages/cuda/package.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index f01cf9c7302..19c787f5e6e 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -24,7 +24,6 @@ ############################################################################## from spack import * from glob import glob -import os class Cuda(Package): @@ -32,21 +31,10 @@ class Cuda(Package): by NVIDIA. It enables dramatic increases in computing performance by harnessing the power of the graphics processing unit (GPU). - Note: NVIDIA does not provide a download URL for CUDA so you will - need to download it yourself. Go to - https://developer.nvidia.com/cuda-downloads and select your Operating - System, Architecture, Distribution, and Version. For the Installer - Type, select runfile and click Download. Spack will search your - current directory for this file. Alternatively, add this file to a - mirror so that Spack can find it. For instructions on how to set up a - mirror, see http://spack.readthedocs.io/en/latest/mirrors.html. - Note: This package does not currently install the drivers necessary to run CUDA. These will need to be installed manually. See: http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux for - details. - - """ + details.""" homepage = "http://www.nvidia.com/object/cuda_home_new.html" @@ -58,7 +46,7 @@ class Cuda(Package): url="http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda_6.5.14_linux_64.run") def install(self, spec, prefix): - runfile = glob(os.path.join(self.stage.path, 'cuda*run'))[0] + runfile = glob(join_path(self.stage.path, 'cuda*run'))[0] chmod = which('chmod') chmod('+x', runfile) runfile = which(runfile) From ab2d6285c497595eef3f6245b1afb6155dea3661 Mon Sep 17 00:00:00 2001 From: Barry Smith Date: Mon, 20 Feb 2017 17:43:33 -0600 Subject: [PATCH 0182/2394] Add installer for petsc4py and slepc4py (#3187) * Add installer for petsc4py and slepc4py * @adamjstewart requested changes on this pull request; make these type=('build', 'run') * @citibeth suggestion Remove unneeded indirect dependencies --- .../builtin/packages/py-petsc4py/package.py | 38 +++++++++++++++++++ .../builtin/packages/py-slepc4py/package.py | 38 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-petsc4py/package.py create mode 100644 var/spack/repos/builtin/packages/py-slepc4py/package.py diff --git a/var/spack/repos/builtin/packages/py-petsc4py/package.py b/var/spack/repos/builtin/packages/py-petsc4py/package.py new file mode 100644 index 00000000000..d2b1d30ff1f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-petsc4py/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPetsc4py(PythonPackage): + """This package provides Python bindings for the PETSc package. + """ + homepage = "https://pypi.python.org/pypi/petsc4py" + url = "https://pypi.python.org/packages/b3/d5/84a71e3ccc13bf90b5055d264e5b256d161ae513392d0f28e8a7ac80d15c/petsc4py-3.7.0.tar.gz" + + version('3.7.0', '816a20040a6a477bd637f397c9fb5b6d') + + depends_on('py-setuptools', type='build') + depends_on('py-mpi4py', type=('build', 'run')) + depends_on('petsc+mpi') diff --git a/var/spack/repos/builtin/packages/py-slepc4py/package.py b/var/spack/repos/builtin/packages/py-slepc4py/package.py new file mode 100644 index 00000000000..f02a2f2ba96 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-slepc4py/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySlepc4py(PythonPackage): + """This package provides Python bindings for the SLEPc package. + """ + homepage = "https://pypi.python.org/pypi/slepc4py" + url = "https://pypi.python.org/packages/b4/dd/116fbdf865f6f9eda779c5d31bc5b68f37ef3dd5dbfc3feb4aaba1565560/slepc4py-3.7.0.tar.gz" + + version('3.7.0', 'c4775e88b0825c7313629c01de60ecb2') + + depends_on('py-setuptools', type='build') + depends_on('py-petsc4py', type=('build', 'run')) + depends_on('slepc') \ No newline at end of file From f0e99456ed9cf85751c019a200a7ba7c6c300f65 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 20 Feb 2017 17:44:58 -0600 Subject: [PATCH 0183/2394] Fix tab completion of directories and filenames (#3184) --- share/spack/spack-completion.bash | 46 ++++++++----------------------- 1 file changed, 11 insertions(+), 35 deletions(-) diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 3e98b20df03..61cbb272435 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -136,8 +136,6 @@ function _spack_bootstrap { if $list_options then compgen -W "-h --help -r --remote" -- "$cur" - else - compgen -o dirnames -- "$cur" fi } @@ -192,8 +190,6 @@ function _spack_compiler_add { if $list_options then compgen -W "-h --help --scope" -- "$cur" - else - compgen -o dirnames -- "$cur" fi } @@ -375,8 +371,6 @@ function _spack_flake8 { then compgen -W "-h --help -k --keep-temp -o --output -r --root-relative -U --no-untracked" -- "$cur" - else - compgen -o filenames -- "$cur" fi } @@ -452,8 +446,6 @@ function _spack_md5 { if $list_options then compgen -W "-h --help" -- "$cur" - else - compgen -o filenames -- "$cur" fi } @@ -470,8 +462,6 @@ function _spack_mirror_add { if $list_options then compgen -W "-h --help --scope" -- "$cur" - else - compgen -o dirnames -- "$cur" fi } @@ -613,8 +603,6 @@ function _spack_python { if $list_options then compgen -W "-h --help -c" -- "$cur" - else - compgen -o filenames -- "$cur" fi } @@ -635,8 +623,6 @@ function _spack_repo_add { if $list_options then compgen -W "-h --help --scope" -- "$cur" - else - compgen -o dirnames -- "$cur" fi } @@ -644,8 +630,6 @@ function _spack_repo_create { if $list_options then compgen -W "-h --help" -- "$cur" - else - compgen -o dirnames -- "$cur" fi } @@ -813,8 +797,6 @@ function _spack_view_hardlink { if $list_options then compgen -W "-h --help" -- "$cur" - else - compgen -o dirnames -- "$cur" fi } @@ -822,8 +804,6 @@ function _spack_view_remove { if $list_options then compgen -W "-h --help" -- "$cur" - else - compgen -o dirnames -- "$cur" fi } @@ -841,8 +821,6 @@ function _spack_view_statlink { if $list_options then compgen -W "-h --help" -- "$cur" - else - compgen -o dirnames -- "$cur" fi } @@ -855,8 +833,6 @@ function _spack_view_symlink { if $list_options then compgen -W "-h --help" -- "$cur" - else - compgen -o dirnames -- "$cur" fi } @@ -894,18 +870,18 @@ function _tests { # Testing functions function _test_vars { - echo "-----------------------------------------------------" >> temp - echo "Full line: '$COMP_LINE'" >> temp - echo >> temp + echo "-----------------------------------------------------" >> temp + echo "Full line: '$COMP_LINE'" >> temp + echo >> temp echo "Word list w/ flags: $(_pretty_print COMP_WORDS[@])" >> temp - echo "# words w/ flags: '${#COMP_WORDS[@]}'" >> temp - echo "Cursor index w/ flags: '$COMP_CWORD'" >> temp - echo >> temp + echo "# words w/ flags: '${#COMP_WORDS[@]}'" >> temp + echo "Cursor index w/ flags: '$COMP_CWORD'" >> temp + echo >> temp echo "Word list w/out flags: $(_pretty_print COMP_WORDS_NO_FLAGS[@])" >> temp - echo "# words w/out flags: '${#COMP_WORDS_NO_FLAGS[@]}'" >> temp - echo "Cursor index w/out flags: '$COMP_CWORD_NO_FLAGS'" >> temp - echo >> temp - echo "Subfunction: '$subfunction'" >> temp + echo "# words w/out flags: '${#COMP_WORDS_NO_FLAGS[@]}'" >> temp + echo "Cursor index w/out flags: '$COMP_CWORD_NO_FLAGS'" >> temp + echo >> temp + echo "Subfunction: '$subfunction'" >> temp if $list_options then echo "List options: 'True'" >> temp @@ -929,4 +905,4 @@ function _pretty_print { done } -complete -F _bash_completion_spack spack +complete -o default -F _bash_completion_spack spack From 5b6d2754d933f2ca2f728be492c230ee1ee4f219 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 20 Feb 2017 18:10:06 -0600 Subject: [PATCH 0184/2394] Add MATLAB package (#2614) * Add MATLAB package * Remove auto-accept license feature --- .../repos/builtin/packages/matlab/package.py | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 var/spack/repos/builtin/packages/matlab/package.py diff --git a/var/spack/repos/builtin/packages/matlab/package.py b/var/spack/repos/builtin/packages/matlab/package.py new file mode 100644 index 00000000000..787b89031ed --- /dev/null +++ b/var/spack/repos/builtin/packages/matlab/package.py @@ -0,0 +1,81 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os +import subprocess + + +class Matlab(Package): + """MATLAB (MATrix LABoratory) is a multi-paradigm numerical computing + environment and fourth-generation programming language. A proprietary + programming language developed by MathWorks, MATLAB allows matrix + manipulations, plotting of functions and data, implementation of + algorithms, creation of user interfaces, and interfacing with programs + written in other languages, including C, C++, C#, Java, Fortran and Python. + + Note: MATLAB is licensed software. You will need to create an account on + the MathWorks homepage and download MATLAB yourself. Spack will search your + current directory for the download file. Alternatively, add this file to a + mirror so that Spack can find it. For instructions on how to set up a + mirror, see http://spack.readthedocs.io/en/latest/mirrors.html""" + + homepage = "https://www.mathworks.com/products/matlab.html" + + version('R2016b', 'b0e0b688894282139fa787b5a86a5cf7') + + variant('mode', default='interactive', description='Installation mode (interactive, silent, or automated)') + variant('key', default='', description='The file installation key to use') + + # Licensing + license_required = True + license_comment = '#' + license_files = ['licenses/license.dat'] + license_vars = ['LM_LICENSE_FILE'] + license_url = 'https://www.mathworks.com/help/install/index.html' + + def url_for_version(self, version): + return "file://{0}/matlab_{1}_glnxa64.zip".format(os.getcwd(), version) + + def configure(self, spec, prefix): + config = { + 'destinationFolder': prefix, + 'mode': spec.variants['mode'].value, + 'fileInstallationKey': spec.variants['key'].value, + 'licensePath': self.global_license_file + } + + # Store values requested by the installer in a file + with open('spack_installer_input.txt', 'w') as inputFile: + for key in config: + inputFile.write('{0}={1}\n'.format(key, config[key])) + + def install(self, spec, prefix): + self.configure(spec, prefix) + + # Run silent installation script + # Full path required + inputFile = join_path(self.stage.source_path, + 'spack_installer_input.txt') + subprocess.call(['./install', '-inputFile', inputFile]) From fbbcf456e9f8e14509ac0adc62ba0c8711018b5e Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 21 Feb 2017 02:33:32 +0100 Subject: [PATCH 0185/2394] Updating package: geant4 (#3197) --- .../repos/builtin/packages/geant4/package.py | 75 ++++++++++++------- .../repos/builtin/packages/vecgeom/package.py | 63 ++++++++++++++++ 2 files changed, 110 insertions(+), 28 deletions(-) create mode 100644 var/spack/repos/builtin/packages/vecgeom/package.py diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index 239ef6d5869..c940c254bcc 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -24,62 +24,81 @@ ############################################################################## from spack import * +import platform -class Geant4(Package): +class Geant4(CMakePackage): """Geant4 is a toolkit for the simulation of the passage of particles through matter. Its areas of application include high energy, nuclear and accelerator physics, as well as studies in medical and space science.""" homepage = "http://geant4.cern.ch/" - url = "http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz" + url = "http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz" + version('10.02.p02', '6aae1d0fc743b0edc358c5c8fbe48657') version('10.02.p01', 'b81f7082a15f6a34b720b6f15c6289cfe4ddbbbdcef0dc52719f71fac95f7f1c') version('10.01.p03', '4fb4175cc0dabcd517443fbdccd97439') - variant('qt', default=False, description='Enable Qt support') + variant('qt', default=True, description='Enable Qt support') + variant('debug', default=False, description='Build debug version') depends_on('cmake@3.5:', type='build') + depends_on("clhep@2.3.1.1~cxx11+cxx14", when="@10.02.p02") depends_on("clhep@2.3.1.1~cxx11+cxx14", when="@10.02.p01") depends_on("clhep@2.2.0.4~cxx11+cxx14", when="@10.01.p03") depends_on("expat") depends_on("zlib") + depends_on("vecgeom") depends_on("xerces-c") depends_on("qt@4.8:", when="+qt") - def install(self, spec, prefix): - cmake_args = list(std_cmake_args) - cmake_args.append('-DXERCESC_ROOT_DIR:STRING=%s' % - spec['xerces-c'].prefix) - cmake_args.append('-DGEANT4_BUILD_CXXSTD=c++14') + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' - cmake_args += ['-DGEANT4_USE_GDML=ON', - '-DGEANT4_USE_SYSTEM_EXPAT=ON', - '-DGEANT4_USE_SYSTEM_ZLIB=ON', - '-DGEANT4_USE_SYSTEM_CLHEP=ON'] + def cmake_args(self): + spec = self.spec - # fixme: turn off data for now and maybe each data set should - # go into a separate package to cut down on disk usage between - # different code versions using the same data versions. - cmake_args.append('-DGEANT4_INSTALL_DATA=OFF') + options = [ + '-DGEANT4_USE_GDML=ON', + '-DGEANT4_USE_SYSTEM_CLHEP=ON', + '-DGEANT4_USE_G3TOG4=ON', + '-DGEANT4_INSTALL_DATA=ON', + '-DGEANT4_BUILD_TLS_MODEL=global-dynamic', + '-DGEANT4_BUILD_MULTITHREADED=ON', + '-DGEANT4_USE_USOLIDS=ON', + '-DGEANT4_USE_SYSTEM_EXPAT=ON', + '-DGEANT4_USE_SYSTEM_ZLIB=ON', + '-DXERCESC_ROOT_DIR:STRING=%s' % + spec['xerces-c'].prefix, + '-DUSolids_DIR=%s' % + join_path(spec['vecgeom'].prefix, 'lib/CMake/USolids')] - # http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/InstallationGuide/html/ch02s03.html - # fixme: likely things that need addressing: - # -DGEANT4_USE_OPENGL_X11=ON + arch = platform.system().lower() + if arch is not 'darwin': + options.append('-DGEANT4_USE_OPENGL_X11=ON') + options.append('-DGEANT4_USE_XM=ON') + options.append('-DGEANT4_USE_RAYTRACER_X11=ON') + + if '+cxx11' in spec: + options.append('-DGEANT4_BUILD_CXXSTD=c++11') + if '+cxx14' or '+cxx1y' in spec: + options.append('-DGEANT4_BUILD_CXXSTD=c++14') if '+qt' in spec: - cmake_args.append('-DGEANT4_USE_QT=ON') + options.append('-DGEANT4_USE_QT=ON') + options.append( + '-DQT_QMAKE_EXECUTABLE=%s' % + spec['qt'].prefix + '/bin/qmake' + ) - build_directory = join_path(self.stage.path, 'spack-build') - source_directory = self.stage.source_path - - with working_dir(build_directory, create=True): - cmake(source_directory, *cmake_args) - make() - make("install") + return options def url_for_version(self, version): """Handle Geant4's unusual version string.""" - return "http://geant4.cern.ch/support/source/geant4.%s.tar.gz" % version + return ("http://geant4.cern.ch/support/source/geant4.%s.tar.gz" % version) diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py new file mode 100644 index 00000000000..988542e4d45 --- /dev/null +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -0,0 +1,63 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * +import platform + + +class Vecgeom(CMakePackage): + """The vectorized geometry library for particle-detector simulation + (toolkits).""" + + homepage = "https://gitlab.cern.ch/VecGeom/VecGeom" + + version('0.3.rc', git='https://gitlab.cern.ch/VecGeom/VecGeom.git', + tag='v0.3.rc') + + variant('debug', default=False, description='Build debug version') + + depends_on('cmake@3.5:', type='build') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + options = [ + '-DBACKEND=Scalar', + '-DGEANT4=OFF', + '-DUSOLIDS=ON', + '-DUSOLIDS_VECGEOM=ON' + ] + + arch = platform.machine() + if arch == 'x86_64': + options.append('-DVECGEOM_VECTOR=sse4.2') + else: + options.append('-DVECGEOM_VECTOR=' + arch) + return options From d2a52d6dd6232abc0a22ef3413b970b790837dd5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 20 Feb 2017 20:09:03 -0600 Subject: [PATCH 0186/2394] Fix setuptools bootstrapping now that dependencies are no longer vendored (#3198) * Fix setuptools bootstrapping now that dependencies are no longer vendored * Reorder patch and comments * Use exact same patch as https://github.com/ActiveState/appdirs/pull/84 * Use exact same patch as https://sourceforge.net/p/pyparsing/patches/10/ --- .../builtin/packages/py-appdirs/package.py | 44 ++++++++++++++++++ .../py-appdirs/setuptools-import.patch | 17 +++++++ .../builtin/packages/py-packaging/package.py | 45 +++++++++++++++++++ .../builtin/packages/py-pyparsing/package.py | 14 +++++- .../py-pyparsing/setuptools-import.patch | 20 +++++++++ .../builtin/packages/py-setuptools/package.py | 9 ++++ .../repos/builtin/packages/py-six/package.py | 9 +++- 7 files changed, 154 insertions(+), 4 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-appdirs/package.py create mode 100644 var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch create mode 100644 var/spack/repos/builtin/packages/py-packaging/package.py create mode 100644 var/spack/repos/builtin/packages/py-pyparsing/setuptools-import.patch diff --git a/var/spack/repos/builtin/packages/py-appdirs/package.py b/var/spack/repos/builtin/packages/py-appdirs/package.py new file mode 100644 index 00000000000..360f56d9873 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-appdirs/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyAppdirs(PythonPackage): + """A small Python module for determining appropriate platform-specific + dirs, e.g. a "user data dir".""" + + homepage = "https://github.com/ActiveState/appdirs" + url = "https://pypi.io/packages/source/a/appdirs/appdirs-1.4.0.tar.gz" + + version('1.4.0', '1d17b4c9694ab84794e228f28dc3275b') + + patch('setuptools-import.patch', when='@:1.4.0') + + # Newer versions of setuptools require appdirs. Although setuptools is an + # optional dependency of appdirs, if it is not found, setup.py will + # fallback on distutils.core instead. Don't add a setuptools dependency + # or we won't be able to bootstrap setuptools. + + # depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch b/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch new file mode 100644 index 00000000000..0b0eb4b84ab --- /dev/null +++ b/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch @@ -0,0 +1,17 @@ +diff --git a/setup.py b/setup.py +index ccd1e72..5d907aa 100644 +--- a/setup.py ++++ b/setup.py +@@ -2,7 +2,12 @@ + import sys + import os + import os.path +-from setuptools import setup ++# appdirs is a dependency of setuptools, so allow installing without it. ++try: ++ from setuptools import setup ++except ImportError: ++ from distutils.core import setup + import appdirs + + tests_require = [] diff --git a/var/spack/repos/builtin/packages/py-packaging/package.py b/var/spack/repos/builtin/packages/py-packaging/package.py new file mode 100644 index 00000000000..506bb6f976e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-packaging/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPackaging(PythonPackage): + """Core utilities for Python packages.""" + + homepage = "https://github.com/pypa/packaging" + url = "https://pypi.io/packages/source/p/packaging/packaging-16.8.tar.gz" + + version('16.8', '53895cdca04ecff80b54128e475b5d3b') + + # Not needed for the installation, but used at runtime + depends_on('py-six', type='run') + depends_on('py-pyparsing', type='run') + + # Newer versions of setuptools require packaging. Although setuptools is an + # optional dependency of packaging, if it is not found, setup.py will + # fallback on distutils.core instead. Don't add a setuptools dependency + # or we won't be able to bootstrap setuptools. + + # depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pyparsing/package.py b/var/spack/repos/builtin/packages/py-pyparsing/package.py index cb158a76d69..936295a132c 100644 --- a/var/spack/repos/builtin/packages/py-pyparsing/package.py +++ b/var/spack/repos/builtin/packages/py-pyparsing/package.py @@ -28,6 +28,16 @@ class PyPyparsing(PythonPackage): """A Python Parsing Module.""" homepage = "https://pypi.python.org/pypi/pyparsing" - url = "https://pypi.python.org/packages/source/p/pyparsing/pyparsing-2.0.3.tar.gz" + url = "https://pypi.io/packages/source/p/pyparsing/pyparsing-2.0.3.tar.gz" - version('2.0.3', '0fe479be09fc2cf005f753d3acc35939') + version('2.1.10', '065908b92904e0d3634eb156f44cc80e') + version('2.0.3', '0fe479be09fc2cf005f753d3acc35939') + + patch('setuptools-import.patch', when='@:2.1.10') + + # Newer versions of setuptools require pyparsing. Although setuptools is an + # optional dependency of pyparsing, if it is not found, setup.py will + # fallback on distutils.core instead. Don't add a setuptools dependency + # or we won't be able to bootstrap setuptools. + + # depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pyparsing/setuptools-import.patch b/var/spack/repos/builtin/packages/py-pyparsing/setuptools-import.patch new file mode 100644 index 00000000000..a4ba828c23f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyparsing/setuptools-import.patch @@ -0,0 +1,20 @@ +diff --git a/setup.py b/setup.py +index 82061c6..ff342af 100644 +--- a/setup.py ++++ b/setup.py +@@ -1,7 +1,13 @@ + #!/usr/bin/env python + + """Setup script for the pyparsing module distribution.""" +-from setuptools import setup ++ ++# Setuptools depends on pyparsing (via packaging) as of version 34, so allow ++# installing without it to avoid bootstrap problems. ++try: ++ from setuptools import setup ++except ImportError: ++ from distutils.core import setup + + import sys + import os + diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 38b316861e2..c4f0ce9802a 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -42,3 +42,12 @@ class PySetuptools(PythonPackage): version('18.1', 'f72e87f34fbf07f299f6cb46256a0b06') version('16.0', '0ace0b96233516fc5f7c857d086aa3ad') version('11.3.1', '01f69212e019a2420c1693fb43593930') + + depends_on('python@2.6:2.7,3.3:') + + # Previously, setuptools vendored all of its dependencies to allow + # easy bootstrapping. As of version 34.0.0, this is no longer done + # and the dependencies need to be installed externally. + depends_on('py-packaging@16.8:', when='@34.0.0:', type=('build', 'run')) + depends_on('py-six@1.6.0:', when='@34.0.0:', type=('build', 'run')) + depends_on('py-appdirs@1.4.0:', when='@34.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-six/package.py b/var/spack/repos/builtin/packages/py-six/package.py index 7d653fd102c..b2faad3819c 100644 --- a/var/spack/repos/builtin/packages/py-six/package.py +++ b/var/spack/repos/builtin/packages/py-six/package.py @@ -29,11 +29,16 @@ class PySix(PythonPackage): """Python 2 and 3 compatibility utilities.""" homepage = "https://pypi.python.org/pypi/six" - url = "https://pypi.python.org/packages/source/s/six/six-1.9.0.tar.gz" + url = "https://pypi.io/packages/source/s/six/six-1.9.0.tar.gz" version('1.10.0', '34eed507548117b2ab523ab14b2f8b55') version('1.9.0', '476881ef4012262dfc8adc645ee786c4') extends('python', ignore=r'bin/pytest') - depends_on('py-setuptools', type='build') + # Newer versions of setuptools require six. Although setuptools is an + # optional dependency of six, if it is not found, setup.py will fallback + # on distutils.core instead. Don't add a setuptools dependency or we + # won't be able to bootstrap setuptools. + + # depends_on('py-setuptools', type='build') From 6681fc1a477d0db98b8835333bfeecfcf5d2b773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Bederi=C3=A1n?= Date: Tue, 21 Feb 2017 04:19:45 +0200 Subject: [PATCH 0187/2394] parallel-netcdf: use spack_cc for sequential code instead of system gcc (#3143) --- var/spack/repos/builtin/packages/parallel-netcdf/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py index 0563bd06867..43f93db0c6d 100644 --- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py +++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py @@ -53,6 +53,7 @@ def configure_args(self): spec = self.spec args = ['--with-mpi={0}'.format(spec['mpi'].prefix)] + args.append('SEQ_CC=%s' % spack_cc) if '+fpic' in spec: args.extend(['CFLAGS=-fPIC', 'CXXFLAGS=-fPIC', 'FFLAGS=-fPIC']) From 7827a0ff674c2e33f81cc6cf8138bceb7bd60b25 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 21 Feb 2017 03:21:27 +0100 Subject: [PATCH 0188/2394] Default to OpenSSL 1.0 (#3100) * Added version 1.1 to openssl * restore note explaining preferred=True for 1.0.2k --- var/spack/repos/builtin/packages/openssl/package.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index eb19ebcdbcd..1432ac76fcc 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -33,19 +33,18 @@ class Openssl(Package): Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.""" homepage = "http://www.openssl.org" + # URL must remain http:// so Spack can bootstrap curl - url = "http://www.openssl.org/source/openssl-1.0.1h.tar.gz" + url = "http://www.openssl.org/source/openssl-1.0.1h.tar.gz" list_url = "https://www.openssl.org/source/old/" list_depth = 2 - # Note: Version 1.0.2 is the "long-term support" version that will - # remain supported until 2019. We could thus make this version the - # preferred version, if we find that many packages cannot handle - # version 1.1. version('1.1.0e', '51c42d152122e474754aea96f66928c6') version('1.1.0d', '711ce3cd5f53a99c0e12a7d5804f0f63') version('1.1.0c', '601e8191f72b18192a937ecf1a800f3f') - version('1.0.2k', 'f965fc0bf01bf882b31314b61391ae65') + # Note: Version 1.0.2 is the "long-term support" version that will + # remain supported until 2019. + version('1.0.2k', 'f965fc0bf01bf882b31314b61391ae65', preferred=True) version('1.0.2j', '96322138f0b69e61b7212bc53d5e912b') version('1.0.2i', '678374e63f8df456a697d3e5e5a931fb') version('1.0.2h', '9392e65072ce4b614c1392eefc1f23d0') From 31952645466a7e2d749256181c297635bb988cb7 Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 21 Feb 2017 14:51:19 +0100 Subject: [PATCH 0189/2394] Fix malformed py-appdirs patch (#3203) --- .../repos/builtin/packages/py-appdirs/setuptools-import.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch b/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch index 0b0eb4b84ab..55b3ce7b384 100644 --- a/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch +++ b/var/spack/repos/builtin/packages/py-appdirs/setuptools-import.patch @@ -2,7 +2,7 @@ diff --git a/setup.py b/setup.py index ccd1e72..5d907aa 100644 --- a/setup.py +++ b/setup.py -@@ -2,7 +2,12 @@ +@@ -2,7 +2,11 @@ import sys import os import os.path @@ -13,5 +13,5 @@ index ccd1e72..5d907aa 100644 +except ImportError: + from distutils.core import setup import appdirs - + tests_require = [] From d49cb2734f21f064f6abe563726ae7fdeb1dcf62 Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 21 Feb 2017 15:04:32 +0100 Subject: [PATCH 0190/2394] Fixing issue wheh overwriting build_args in PythonPackage (#3200) --- lib/spack/spack/cmd/create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 2901dcfa63d..14b213a756b 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -231,7 +231,7 @@ class PythonPackageTemplate(PackageTemplate): # depends_on('py-foo', type=('build', 'run'))""" body = """\ - def build_args(self): + def build_args(self, spec, prefix): # FIXME: Add arguments other than --prefix # FIXME: If not needed delete the function args = [] From 177c54ecbfd3cd790930fc62ff1a23314464af3d Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 21 Feb 2017 18:50:06 +0100 Subject: [PATCH 0191/2394] Add packages: mosh (#3098) * Add packages: mosh Perl is a run dependency. See https://github.com/mobile-shell/mosh/wiki/Build-Instructions --- .../repos/builtin/packages/mosh/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mosh/package.py diff --git a/var/spack/repos/builtin/packages/mosh/package.py b/var/spack/repos/builtin/packages/mosh/package.py new file mode 100644 index 00000000000..91318915850 --- /dev/null +++ b/var/spack/repos/builtin/packages/mosh/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mosh(AutotoolsPackage): + """Remote terminal application that allows roaming, supports intermittent + connectivity, and provides intelligent local echo and line editing of user + keystrokes. Mosh is a replacement for SSH. It's more robust and responsive, + especially over Wi-Fi, cellular, and long-distance links. + """ + + homepage = "https://mosh.org/" + url = "https://mosh.org/mosh-1.2.6.tar.gz" + + version('1.2.6', 'bb4e24795bb135a754558176a981ee9e') + + depends_on('protobuf') + depends_on('ncurses') + depends_on('zlib') + depends_on('openssl') + + depends_on('perl', type='run') From 52fab8fff31907b17190bc682541f8071ecbce24 Mon Sep 17 00:00:00 2001 From: eklee15 Date: Tue, 21 Feb 2017 19:40:09 -0500 Subject: [PATCH 0192/2394] Boost modification for IBM xl compiler (#3205) Tested with: spack install boost@1.62.0+iostreams%xl_r^zlib%gcc^bzip2%gcc --- .../repos/builtin/packages/boost/package.py | 8 +- .../builtin/packages/boost/xl_1_62_0_le.patch | 787 ++++++++++++++++++ 2 files changed, 794 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/boost/xl_1_62_0_le.patch diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 738e8a0e35a..878e62db5cb 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -133,6 +133,10 @@ class Boost(Package): # Patch fix from https://svn.boost.org/trac/boost/ticket/10125 patch('boost_10125.patch', when='@1.55.0%gcc@5.0:5.9') + # Patch fix for IBM XL compiler + patch('xl_1_62_0_le.patch', when='@1.62.0%xl_r') + patch('xl_1_62_0_le.patch', when='@1.62.0%xl') + def url_for_version(self, version): """ Handle Boost's weird URLs, @@ -149,7 +153,9 @@ def determine_toolset(self, spec): toolsets = {'g++': 'gcc', 'icpc': 'intel', - 'clang++': 'clang'} + 'clang++': 'clang', + 'xlc++': 'xlcpp', + 'xlc++_r': 'xlcpp'} if spec.satisfies('@1.47:'): toolsets['icpc'] += '-linux' diff --git a/var/spack/repos/builtin/packages/boost/xl_1_62_0_le.patch b/var/spack/repos/builtin/packages/boost/xl_1_62_0_le.patch new file mode 100644 index 00000000000..fd0eba345b1 --- /dev/null +++ b/var/spack/repos/builtin/packages/boost/xl_1_62_0_le.patch @@ -0,0 +1,787 @@ +diff -uNr boost_1_62_0/boost/accumulators/statistics/p_square_cumulative_distribution.hpp boost_1_62_0/boost/accumulators/statistics/p_square_cumulative_distribution.hpp +--- boost_1_62_0/boost/accumulators/statistics/p_square_cumulative_distribution.hpp 2015-03-23 13:17:14.000000000 -0400 ++++ boost_1_62_0/boost/accumulators/statistics/p_square_cumulative_distribution.hpp 2016-01-08 13:29:52.612408601 -0500 +@@ -10,7 +10,7 @@ + + #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) + # pragma message ("Warning: This header is deprecated. Please use: boost/accumulators/statistics/p_square_cumul_dist.hpp") +-#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) ++#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) + # warning "This header is deprecated. Please use: boost/accumulators/statistics/p_square_cumul_dist.hpp" + #endif + +diff -uNr boost_1_62_0/boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp boost_1_62_0/boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp +--- boost_1_62_0/boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp 2015-03-23 13:17:14.000000000 -0400 ++++ boost_1_62_0/boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp 2016-01-08 13:29:52.649942984 -0500 +@@ -10,7 +10,7 @@ + + #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) + # pragma message ("Warning: This header is deprecated. Please use: boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp") +-#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) ++#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) + # warning "This header is deprecated. Please use: boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp" + #endif + +diff -uNr boost_1_62_0/boost/asio/detail/pop_options.hpp boost_1_62_0/boost/asio/detail/pop_options.hpp +--- boost_1_62_0/boost/asio/detail/pop_options.hpp 2015-03-23 16:24:12.000000000 -0400 ++++ boost_1_62_0/boost/asio/detail/pop_options.hpp 2016-01-08 13:29:52.725151630 -0500 +@@ -107,7 +107,7 @@ + + // MPW MrCpp or SCpp + +-#elif defined(__IBMCPP__) ++#elif defined(__IBMCPP__) && !defined(__ibmxl__) + + // IBM Visual Age + +diff -uNr boost_1_62_0/boost/asio/detail/push_options.hpp boost_1_62_0/boost/asio/detail/push_options.hpp +--- boost_1_62_0/boost/asio/detail/push_options.hpp 2015-03-23 16:24:12.000000000 -0400 ++++ boost_1_62_0/boost/asio/detail/push_options.hpp 2016-01-08 13:29:52.779979004 -0500 +@@ -114,7 +114,7 @@ + + // MPW MrCpp or SCpp + +-#elif defined(__IBMCPP__) ++#elif defined(__IBMCPP__) && !defined(__ibmxl__) + + // IBM Visual Age + +diff -uNr boost_1_62_0/boost/asio/impl/src.cpp boost_1_62_0/boost/asio/impl/src.cpp +--- boost_1_62_0/boost/asio/impl/src.cpp 2015-03-23 16:24:12.000000000 -0400 ++++ boost_1_62_0/boost/asio/impl/src.cpp 2016-01-08 13:29:52.855662358 -0500 +@@ -17,7 +17,7 @@ + #elif defined(__GNUC__) \ + || defined(__HP_aCC) \ + || defined(__SUNPRO_CC) \ +- || defined(__IBMCPP__) ++ || defined(__IBMCPP__) && !defined(__ibmxl__) + # warning "This file is deprecated." + # warning "Please #include instead." + #endif +diff -uNr boost_1_62_0/boost/bind/bind.hpp boost_1_62_0/boost/bind/bind.hpp +--- boost_1_62_0/boost/bind/bind.hpp 2015-05-03 18:08:08.000000000 -0400 ++++ boost_1_62_0/boost/bind/bind.hpp 2016-01-08 13:29:52.921370966 -0500 +@@ -1970,7 +1970,7 @@ + typedef void type; + }; + +-#if !defined(__IBMCPP__) || __IBMCPP_FUNC_CV_TMPL_ARG_DEDUCTION ++#if !(defined(__IBMCPP__) && !defined(__ibmxl__)) || __IBMCPP_FUNC_CV_TMPL_ARG_DEDUCTION + + template< class R, class T > struct add_cref< R (T::*) () const, 1 > + { +diff -uNr boost_1_62_0/boost/config/requires_threads.hpp boost_1_62_0/boost/config/requires_threads.hpp +--- boost_1_62_0/boost/config/requires_threads.hpp 2015-08-04 07:44:49.000000000 -0400 ++++ boost_1_62_0/boost/config/requires_threads.hpp 2016-01-08 13:29:53.028994548 -0500 +@@ -70,7 +70,7 @@ + // HP aCC + # error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt" + +-#elif defined(__IBMCPP__) ++#elif defined(__IBMCPP__) && !defined(__ibmxl__) + // IBM Visual Age + # error "Compiler threading support is not turned on. Please compile the code with the xlC_r compiler" + +diff -uNr boost_1_62_0/boost/config/select_compiler_config.hpp boost_1_62_0/boost/config/select_compiler_config.hpp +--- boost_1_62_0/boost/config/select_compiler_config.hpp 2015-08-04 07:44:49.000000000 -0400 ++++ boost_1_62_0/boost/config/select_compiler_config.hpp 2016-01-08 13:29:53.495533933 -0500 +@@ -96,7 +96,7 @@ + // IBM XL C/C++ for Linux (Little Endian) + # define BOOST_COMPILER_CONFIG "boost/config/compiler/xlcpp.hpp" + +-#elif defined(__IBMCPP__) ++#elif defined(__IBMCPP__) && !defined(__ibmxl__) + // IBM Visual Age or IBM XL C/C++ for Linux (Big Endian) + # define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp" + +diff -uNr boost_1_62_0/boost/config/select_platform_config.hpp boost_1_62_0/boost/config/select_platform_config.hpp +--- boost_1_62_0/boost/config/select_platform_config.hpp 2015-08-04 07:44:49.000000000 -0400 ++++ boost_1_62_0/boost/config/select_platform_config.hpp 2016-01-08 13:29:53.575187839 -0500 +@@ -53,7 +53,7 @@ + // MacOS + # define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp" + +-#elif defined(__IBMCPP__) || defined(_AIX) ++#elif (defined(__IBMCPP__) && !defined(__ibmxl__)) || defined(_AIX) + // IBM + # define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp" + +diff -uNr boost_1_62_0/boost/config/select_stdlib_config.hpp boost_1_62_0/boost/config/select_stdlib_config.hpp +--- boost_1_62_0/boost/config/select_stdlib_config.hpp 2015-08-04 07:44:49.000000000 -0400 ++++ boost_1_62_0/boost/config/select_stdlib_config.hpp 2016-01-08 13:29:53.626526177 -0500 +@@ -37,7 +37,7 @@ + // #include if they know whose std lib they are using. + #if !defined(__LIBCOMO__) && !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)\ + && !defined(_LIBCPP_VERSION) && !defined(__GLIBCPP__) && !defined(__GLIBCXX__)\ +- && !defined(__STL_CONFIG_H) && !defined(__MSL_CPP__) && !defined(__IBMCPP__)\ ++ && !defined(__STL_CONFIG_H) && !defined(__MSL_CPP__) && !(defined(__IBMCPP__) && !defined(__ibmxl__) )\ + && !defined(MSIPL_COMPILE_H) && !defined(_YVALS) && !defined(_CPPLIB_VER) + #include + #endif +@@ -66,7 +66,7 @@ + // MSL standard lib: + # define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp" + +-#elif defined(__IBMCPP__) ++#elif defined(__IBMCPP__) && !defined(__ibmxl__) + // take the default VACPP std lib + # define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp" + +@@ -74,7 +74,7 @@ + // Modena C++ standard library + # define BOOST_STDLIB_CONFIG "boost/config/stdlib/modena.hpp" + +-#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) ++#elif (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__) )) || defined(_CPPLIB_VER) + // Dinkumware Library (this has to appear after any possible replacement libraries): + # define BOOST_STDLIB_CONFIG "boost/config/stdlib/dinkumware.hpp" + +diff -uNr boost_1_62_0/boost/core/explicit_operator_bool.hpp boost_1_62_0/boost/core/explicit_operator_bool.hpp +--- boost_1_62_0/boost/core/explicit_operator_bool.hpp 2015-07-20 05:32:52.000000000 -0400 ++++ boost_1_62_0/boost/core/explicit_operator_bool.hpp 2016-01-08 13:29:53.895509554 -0500 +@@ -78,7 +78,7 @@ + + namespace detail { + +-#if !defined(_MSC_VER) && !defined(__IBMCPP__) ++#if !defined(_MSC_VER) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) + + struct unspecified_bool + { +diff -uNr boost_1_62_0/boost/cstdint.hpp boost_1_62_0/boost/cstdint.hpp +--- boost_1_62_0/boost/cstdint.hpp 2015-08-04 07:44:49.000000000 -0400 ++++ boost_1_62_0/boost/cstdint.hpp 2016-01-08 13:29:53.969672718 -0500 +@@ -54,7 +54,7 @@ + // this is triggered with GCC, because it defines __cplusplus < 199707L + # define BOOST_NO_INT64_T + # endif +-# elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX) ++# elif defined(__FreeBSD__) || (defined(__IBMCPP__) && !defined(__ibmxl__))|| defined(_AIX) + # include + # else + # include +diff -uNr boost_1_62_0/boost/current_function.hpp boost_1_62_0/boost/current_function.hpp +--- boost_1_62_0/boost/current_function.hpp 2015-01-30 18:08:49.000000000 -0500 ++++ boost_1_62_0/boost/current_function.hpp 2016-01-08 13:29:54.012897946 -0500 +@@ -40,7 +40,7 @@ + + # define BOOST_CURRENT_FUNCTION __FUNCSIG__ + +-#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && (__IBMCPP__ >= 500)) ++#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && !defined(__ibmxl__) && (__IBMCPP__ >= 500)) + + # define BOOST_CURRENT_FUNCTION __FUNCTION__ + +diff -uNr boost_1_62_0/boost/detail/container_fwd.hpp boost_1_62_0/boost/detail/container_fwd.hpp +--- boost_1_62_0/boost/detail/container_fwd.hpp 2015-04-01 11:49:11.000000000 -0400 ++++ boost_1_62_0/boost/detail/container_fwd.hpp 2016-01-08 13:29:54.062758504 -0500 +@@ -70,12 +70,12 @@ + # elif defined(__MSL_CPP__) + // MSL standard lib: + # define BOOST_DETAIL_NO_CONTAINER_FWD +-# elif defined(__IBMCPP__) ++# elif defined(__IBMCPP__) && !defined(__ibmxl__) + // The default VACPP std lib, forward declaration seems to be fine. + # elif defined(MSIPL_COMPILE_H) + // Modena C++ standard library + # define BOOST_DETAIL_NO_CONTAINER_FWD +-# elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) ++# elif (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__))) || defined(_CPPLIB_VER) + // Dinkumware Library (this has to appear after any possible replacement + // libraries) + # else +diff -uNr boost_1_62_0/boost/detail/workaround.hpp boost_1_62_0/boost/detail/workaround.hpp +--- boost_1_62_0/boost/detail/workaround.hpp 2015-08-04 07:44:49.000000000 -0400 ++++ boost_1_62_0/boost/detail/workaround.hpp 2016-01-09 13:56:47.218685439 -0500 +@@ -85,7 +85,7 @@ + #else + #define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0 + #endif +-#ifndef __IBMCPP__ ++#if !defined(__IBMCPP__) || defined(__ibmxl__) + #define __IBMCPP___WORKAROUND_GUARD 1 + #else + #define __IBMCPP___WORKAROUND_GUARD 0 +diff -uNr boost_1_62_0/boost/foreach.hpp boost_1_62_0/boost/foreach.hpp +--- boost_1_62_0/boost/foreach.hpp 2015-03-04 15:36:38.000000000 -0500 ++++ boost_1_62_0/boost/foreach.hpp 2016-01-09 13:58:39.495427757 -0500 +@@ -55,7 +55,7 @@ + || BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \ + || BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(1400)) \ + || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 3) && defined(__APPLE_CC__)) \ +- || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \ ++ || (BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) && (__IBMCPP__ < 1300)) \ + || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3206)) \ + || BOOST_WORKAROUND(__SUNPRO_CC, >= 0x5100) \ + || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) +diff -uNr boost_1_62_0/boost/functional/hash/detail/float_functions.hpp boost_1_62_0/boost/functional/hash/detail/float_functions.hpp +--- boost_1_62_0/boost/functional/hash/detail/float_functions.hpp 2015-01-24 09:37:21.000000000 -0500 ++++ boost_1_62_0/boost/functional/hash/detail/float_functions.hpp 2016-01-08 13:29:54.116374393 -0500 +@@ -47,7 +47,7 @@ + #elif defined(__MSL_CPP__) + // MSL standard lib: + # define BOOST_HASH_CONFORMANT_FLOATS 0 +-#elif defined(__IBMCPP__) ++#elif defined(__IBMCPP__) && !defined(__ibmxl__) + // VACPP std lib (probably conformant for much earlier version). + # if __IBMCPP__ >= 1210 + # define BOOST_HASH_CONFORMANT_FLOATS 1 +@@ -57,7 +57,7 @@ + #elif defined(MSIPL_COMPILE_H) + // Modena C++ standard library + # define BOOST_HASH_CONFORMANT_FLOATS 0 +-#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) ++#elif (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__))) || defined(_CPPLIB_VER) + // Dinkumware Library (this has to appear after any possible replacement libraries): + # if _CPPLIB_VER >= 405 + # define BOOST_HASH_CONFORMANT_FLOATS 1 +diff -uNr boost_1_62_0/boost/graph/edmunds_karp_max_flow.hpp boost_1_62_0/boost/graph/edmunds_karp_max_flow.hpp +--- boost_1_62_0/boost/graph/edmunds_karp_max_flow.hpp 2014-08-03 15:46:30.000000000 -0400 ++++ boost_1_62_0/boost/graph/edmunds_karp_max_flow.hpp 2016-01-08 13:29:54.165330185 -0500 +@@ -10,7 +10,7 @@ + + #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) + # pragma message ("Warning: This header is deprecated. Please use: boost/graph/edmonds_karp_max_flow.hpp") +-#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) ++#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || (defined(__IBMCPP__) && !defined(__ibmxl__)) + # warning "This header is deprecated. Please use: boost/graph/edmonds_karp_max_flow.hpp" + #endif + +diff -uNr boost_1_62_0/boost/intrusive/detail/parent_from_member.hpp boost_1_62_0/boost/intrusive/detail/parent_from_member.hpp +--- boost_1_62_0/boost/intrusive/detail/parent_from_member.hpp 2015-07-21 17:39:18.000000000 -0400 ++++ boost_1_62_0/boost/intrusive/detail/parent_from_member.hpp 2016-01-08 13:29:54.266801426 -0500 +@@ -71,7 +71,7 @@ + + //This works with gcc, msvc, ac++, ibmcpp + #elif defined(__GNUC__) || defined(__HP_aCC) || defined(BOOST_INTEL) || \ +- defined(__IBMCPP__) || defined(__DECCXX) ++ defined(__IBMCPP__) && !defined(__ibmxl__) || defined(__DECCXX) + const Parent * const parent = 0; + const char *const member = static_cast(static_cast(&(parent->*ptr_to_member))); + return std::ptrdiff_t(member - static_cast(static_cast(parent))); +diff -uNr boost_1_62_0/boost/iostreams/detail/add_facet.hpp boost_1_62_0/boost/iostreams/detail/add_facet.hpp +--- boost_1_62_0/boost/iostreams/detail/add_facet.hpp 2015-01-25 14:33:40.000000000 -0500 ++++ boost_1_62_0/boost/iostreams/detail/add_facet.hpp 2016-01-08 13:29:54.290652933 -0500 +@@ -23,7 +23,7 @@ + #if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && \ + defined(_STLP_NO_OWN_IOSTREAMS) \ + /**/ +-# if (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) ++# if (defined(_YVALS) && !(defined(__IBMCPP__) && !defined(__ibmxl__))) || defined(_CPPLIB_VER) + # define BOOST_IOSTREMS_STLPORT_WITH_OLD_DINKUMWARE + # endif + #endif +diff -uNr boost_1_62_0/boost/iostreams/positioning.hpp boost_1_62_0/boost/iostreams/positioning.hpp +--- boost_1_62_0/boost/iostreams/positioning.hpp 2015-01-25 14:33:40.000000000 -0500 ++++ boost_1_62_0/boost/iostreams/positioning.hpp 2016-01-08 13:29:54.321832608 -0500 +@@ -82,7 +82,7 @@ + // Converts a std::fpos_t to a stream_offset + inline stream_offset fpos_t_to_offset(std::fpos_t pos) + { +-# if defined(_POSIX_) || (_INTEGRAL_MAX_BITS >= 64) || defined(__IBMCPP__) ++# if defined(_POSIX_) || (_INTEGRAL_MAX_BITS >= 64) || defined(__IBMCPP__) && !defined(__ibmxl__) + return pos; + # else + return _FPOSOFF(pos); +@@ -92,7 +92,7 @@ + // Extracts the member _Fpos from a std::fpos + inline std::fpos_t streampos_to_fpos_t(std::streampos pos) + { +-# if defined (_CPPLIB_VER) || defined(__IBMCPP__) ++# if defined (_CPPLIB_VER) || defined(__IBMCPP__) && !defined(__ibmxl__) + return pos.seekpos(); + # else + return pos.get_fpos_t(); +diff -uNr boost_1_62_0/boost/math/tools/config.hpp boost_1_62_0/boost/math/tools/config.hpp +--- boost_1_62_0/boost/math/tools/config.hpp 2015-05-05 08:32:10.000000000 -0400 ++++ boost_1_62_0/boost/math/tools/config.hpp 2016-01-08 13:29:54.360466863 -0500 +@@ -43,7 +43,7 @@ + # define BOOST_MATH_CONTROL_FP _control87(MCW_EM,MCW_EM) + # include + #endif +-#ifdef __IBMCPP__ ++#if defined(__IBMCPP__) && !defined(__ibmxl__) + // + // For reasons I don't unserstand, the tests with IMB's compiler all + // pass at long double precision, but fail with real_concept, those tests +@@ -98,7 +98,7 @@ + # define BOOST_MATH_CONTROL_FP _control87(MCW_EM,MCW_EM) + #endif + +-#ifdef __IBMCPP__ ++#if defined(__IBMCPP__) && !defined(__ibmxl__) + # define BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS + #endif + +@@ -336,7 +336,7 @@ + # endif + #endif + +-#if ((defined(__linux__) && !defined(__UCLIBC__) && !defined(BOOST_MATH_HAVE_FIXED_GLIBC)) || defined(__QNX__) || defined(__IBMCPP__)) && !defined(BOOST_NO_FENV_H) ++#if ((defined(__linux__) && !defined(__UCLIBC__) && !defined(BOOST_MATH_HAVE_FIXED_GLIBC)) || defined(__QNX__) || (defined(__IBMCPP__) && !defined(__ibmxl__))) && !defined(BOOST_NO_FENV_H) + // + // This code was introduced in response to this glibc bug: http://sourceware.org/bugzilla/show_bug.cgi?id=2445 + // Basically powl and expl can return garbage when the result is small and certain exception flags are set +diff -uNr boost_1_62_0/boost/math/tools/tuple.hpp boost_1_62_0/boost/math/tools/tuple.hpp +--- boost_1_62_0/boost/math/tools/tuple.hpp 2015-05-05 08:32:10.000000000 -0400 ++++ boost_1_62_0/boost/math/tools/tuple.hpp 2016-01-08 13:29:54.575224775 -0500 +@@ -27,7 +27,7 @@ + + }} + +-#elif (defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)) || defined(__IBMCPP__) ++#elif (defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)) || defined(__IBMCPP__) && !defined(__ibmxl__) + + #include + #include +diff -uNr boost_1_62_0/boost/preprocessor/config/config.hpp boost_1_62_0/boost/preprocessor/config/config.hpp +--- boost_1_62_0/boost/preprocessor/config/config.hpp 2015-07-17 07:45:08.000000000 -0400 ++++ boost_1_62_0/boost/preprocessor/config/config.hpp 2016-01-10 01:51:46.139445697 -0500 +@@ -43,7 +43,7 @@ + # define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_DMC()) + # elif defined(__BORLANDC__) && __BORLANDC__ >= 0x581 + # define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT()) +-# elif defined(__BORLANDC__) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__SUNPRO_CC) ++# elif defined(__BORLANDC__) || defined(__IBMC__) && !defined(__ibmxl__) || defined(__IBMCPP__) && !defined(__ibmxl__) || defined(__SUNPRO_CC) + # define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_BCC()) + # elif defined(_MSC_VER) && !defined(__clang__) + # define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC()) +@@ -73,7 +73,7 @@ + # define BOOST_PP_VARIADICS_MSVC 0 + # if !defined BOOST_PP_VARIADICS + # /* variadic support explicitly disabled for all untested compilers */ +-# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || ( defined __SUNPRO_CC && __SUNPRO_CC < 0x5120 ) || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI ++# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || ( defined __SUNPRO_CC && __SUNPRO_CC < 0x5120 ) || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || (defined __IBMCPP__ && !defined __ibmxl__ ) || defined __PGI + # define BOOST_PP_VARIADICS 0 + # /* VC++ (C/C++) */ + # elif defined _MSC_VER && _MSC_VER >= 1400 && (!defined __EDG__ || defined(__INTELLISENSE__)) && !defined __clang__ +@@ -92,7 +92,7 @@ + # elif !BOOST_PP_VARIADICS + 1 < 2 + # undef BOOST_PP_VARIADICS + # define BOOST_PP_VARIADICS 1 +-# if defined _MSC_VER && _MSC_VER >= 1400 && (defined(__INTELLISENSE__) || !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI)) ++# if defined _MSC_VER && _MSC_VER >= 1400 && (defined(__INTELLISENSE__) || !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __clang__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || (defined __IBMCPP__ && !defined __ibmxl__ ) || defined __PGI)) + # undef BOOST_PP_VARIADICS_MSVC + # define BOOST_PP_VARIADICS_MSVC 1 + # endif +diff -uNr boost_1_62_0/boost/preprocessor/seq/elem.hpp boost_1_62_0/boost/preprocessor/seq/elem.hpp +--- boost_1_62_0/boost/preprocessor/seq/elem.hpp 2015-07-17 07:45:08.000000000 -0400 ++++ boost_1_62_0/boost/preprocessor/seq/elem.hpp 2016-01-10 01:53:11.941880189 -0500 +@@ -35,7 +35,7 @@ + # define BOOST_PP_SEQ_ELEM_III(im) BOOST_PP_SEQ_ELEM_IV(im) + # define BOOST_PP_SEQ_ELEM_IV(x, _) x + # else +-# if defined(__IBMC__) || defined(__IBMCPP__) ++# if defined(__IBMC__) && !defined(__ibmxl__) || defined(__IBMCPP__) && !defined(__ibmxl__) + # define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq)) + # else + # define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_SEQ_ELEM_ ## i seq) +diff -uNr boost_1_62_0/boost/preprocessor/seq/size.hpp boost_1_62_0/boost/preprocessor/seq/size.hpp +--- boost_1_62_0/boost/preprocessor/seq/size.hpp 2015-07-17 07:45:08.000000000 -0400 ++++ boost_1_62_0/boost/preprocessor/seq/size.hpp 2016-01-10 01:53:59.736320846 -0500 +@@ -22,7 +22,7 @@ + # elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() || BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() + # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_SEQ_SIZE_I(seq) + # define BOOST_PP_SEQ_SIZE_I(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq) +-# elif defined(__IBMC__) || defined(__IBMCPP__) ++# elif defined(__IBMC__) && !defined(__ibmxl__) || defined(__IBMCPP__) && !defined(__ibmxl__) + # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) + # else + # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq) +diff -uNr boost_1_62_0/boost/regex/icu.hpp boost_1_62_0/boost/regex/icu.hpp +--- boost_1_62_0/boost/regex/icu.hpp 2015-02-14 08:22:25.000000000 -0500 ++++ boost_1_62_0/boost/regex/icu.hpp 2016-01-08 13:29:54.840564509 -0500 +@@ -243,7 +243,7 @@ + // + namespace re_detail{ + +-#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) ++#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) + template + inline u32regex do_make_u32regex(InputIterator i, + InputIterator j, +diff -uNr boost_1_62_0/boost/regex/v4/cpp_regex_traits.hpp boost_1_62_0/boost/regex/v4/cpp_regex_traits.hpp +--- boost_1_62_0/boost/regex/v4/cpp_regex_traits.hpp 2015-02-14 08:22:25.000000000 -0500 ++++ boost_1_62_0/boost/regex/v4/cpp_regex_traits.hpp 2016-01-08 13:29:54.936872839 -0500 +@@ -275,7 +275,7 @@ + // we need to start by initialising our syntax map so we know which + // character is used for which purpose: + #ifndef BOOST_NO_STD_MESSAGES +-#ifndef __IBMCPP__ ++#if !defined(__IBMCPP__) || defined(__ibmxl__) + typename std::messages::catalog cat = static_cast::catalog>(-1); + #else + typename std::messages::catalog cat = reinterpret_cast::catalog>(-1); +@@ -702,7 +702,7 @@ + void cpp_regex_traits_implementation::init() + { + #ifndef BOOST_NO_STD_MESSAGES +-#ifndef __IBMCPP__ ++#if !defined(__IBMCPP__) || defined(__ibmxl__) + typename std::messages::catalog cat = static_cast::catalog>(-1); + #else + typename std::messages::catalog cat = reinterpret_cast::catalog>(-1); +diff -uNr boost_1_62_0/boost/serialization/force_include.hpp boost_1_62_0/boost/serialization/force_include.hpp +--- boost_1_62_0/boost/serialization/force_include.hpp 2015-05-23 14:51:06.000000000 -0400 ++++ boost_1_62_0/boost/serialization/force_include.hpp 2016-01-08 13:29:55.027329880 -0500 +@@ -37,7 +37,7 @@ + # define BOOST_DLLEXPORT __declspec(dllexport) + # elif defined(__GNUC__) && (__GNUC__ >= 3) + # define BOOST_USED __attribute__ ((__used__)) +-# elif defined(__IBMCPP__) && (__IBMCPP__ >= 1110) ++# elif defined(__IBMCPP__) && !defined(__ibmxl__) && (__IBMCPP__ >= 1110) + # define BOOST_USED __attribute__ ((__used__)) + # elif defined(__INTEL_COMPILER) && (BOOST_INTEL_CXX_VERSION >= 800) + # define BOOST_USED __attribute__ ((__used__)) +diff -uNr boost_1_62_0/boost/signal.hpp boost_1_62_0/boost/signal.hpp +--- boost_1_62_0/boost/signal.hpp 2015-04-01 13:32:16.000000000 -0400 ++++ boost_1_62_0/boost/signal.hpp 2016-01-08 13:29:55.079443080 -0500 +@@ -13,7 +13,7 @@ + #ifndef BOOST_SIGNALS_NO_DEPRECATION_WARNING + # if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) + # pragma message ("Warning: Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING.") +-# elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) ++# elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) + # warning "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING." + # endif + #endif +diff -uNr boost_1_62_0/boost/spirit.hpp boost_1_62_0/boost/spirit.hpp +--- boost_1_62_0/boost/spirit.hpp 2015-07-14 18:38:56.000000000 -0400 ++++ boost_1_62_0/boost/spirit.hpp 2016-01-08 13:29:55.145408036 -0500 +@@ -14,7 +14,7 @@ + #if BOOST_VERSION >= 103800 + #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) + # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic.hpp") +-#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) ++#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) && !defined(__ibmxl__) + # warning "This header is deprecated. Please use: boost/spirit/include/classic.hpp" + #endif + #endif +diff -uNr boost_1_62_0/boost/thread/detail/platform.hpp boost_1_62_0/boost/thread/detail/platform.hpp +--- boost_1_62_0/boost/thread/detail/platform.hpp 2015-04-18 05:56:34.000000000 -0400 ++++ boost_1_62_0/boost/thread/detail/platform.hpp 2016-01-08 13:29:55.225161873 -0500 +@@ -37,7 +37,7 @@ + #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) + # define BOOST_THREAD_MACOS + //# define BOOST_THREAD_WAIT_BUG boost::posix_time::microseconds(1000) +-#elif defined(__IBMCPP__) || defined(_AIX) ++#elif defined(__IBMCPP__) && !defined(__ibmxl__) || defined(_AIX) + # define BOOST_THREAD_AIX + #elif defined(__amigaos__) + # define BOOST_THREAD_AMIGAOS +diff -uNr boost_1_62_0/boost/tr1/detail/config.hpp boost_1_62_0/boost/tr1/detail/config.hpp +--- boost_1_62_0/boost/tr1/detail/config.hpp 2014-02-20 08:26:34.000000000 -0500 ++++ boost_1_62_0/boost/tr1/detail/config.hpp 2016-01-08 13:29:55.295115823 -0500 +@@ -10,7 +10,7 @@ + + #if (defined(__GNUC__) && !(defined(linux) || defined(__linux) || defined(__linux__))) \ + || (!defined(__FreeBSD__) && defined(__GNUC__)) \ +- || (!defined(_AIX) && defined(__IBMCPP__) && (__IBMCPP__ >= 800)) ++ || (!defined(_AIX) && defined(__IBMCPP__) && !defined(__ibmxl__) && (__IBMCPP__ >= 800)) + // Disable use of #include_next on Linux as typically we are installed in a + // directory that is searched *after* the std lib include path. + #if !defined(BOOST_HAS_INCLUDE_NEXT) +diff -uNr boost_1_62_0/boost/type_traits/extent.hpp boost_1_62_0/boost/type_traits/extent.hpp +--- boost_1_62_0/boost/type_traits/extent.hpp 2015-05-21 13:51:23.000000000 -0400 ++++ boost_1_62_0/boost/type_traits/extent.hpp 2016-01-08 13:29:55.455420729 -0500 +@@ -80,7 +80,7 @@ + BOOST_STATIC_CONSTANT(std::size_t, value = R); + }; + +-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) && !defined(__MWERKS__) ++#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) && !defined(__MWERKS__) + template + struct extent_imp + { +diff -uNr boost_1_62_0/boost/type_traits/is_array.hpp boost_1_62_0/boost/type_traits/is_array.hpp +--- boost_1_62_0/boost/type_traits/is_array.hpp 2016-07-11 13:30:44.296134002 -0400 ++++ boost_1_62_0/boost/type_traits/is_array.hpp 2016-07-11 13:30:28.084752131 -0400 +@@ -28,7 +28,7 @@ + template struct is_array : public true_type{}; + template struct is_array : public true_type{}; + template struct is_array : public true_type{}; +-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) ++#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) + template struct is_array : public true_type{}; + template struct is_array : public true_type{}; + template struct is_array : public true_type{}; +diff -uNr boost_1_62_0/boost/type_traits/is_convertible.hpp boost_1_62_0/boost/type_traits/is_convertible.hpp +--- boost_1_62_0/boost/type_traits/is_convertible.hpp 2015-05-21 13:51:23.000000000 -0400 ++++ boost_1_62_0/boost/type_traits/is_convertible.hpp 2016-01-08 13:29:55.605870032 -0500 +@@ -152,7 +152,7 @@ + }; + + #elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \ +- || defined(__IBMCPP__) || defined(__HP_aCC) ++ || defined(__IBMCPP__) && !defined(__ibmxl__) || defined(__HP_aCC) + // + // This is *almost* an ideal world implementation as it doesn't rely + // on undefined behaviour by passing UDT's through (...). +diff -uNr boost_1_62_0/boost/type_traits/rank.hpp boost_1_62_0/boost/type_traits/rank.hpp +--- boost_1_62_0/boost/type_traits/rank.hpp 2015-05-21 13:51:23.000000000 -0400 ++++ boost_1_62_0/boost/type_traits/rank.hpp 2016-01-08 13:29:55.675140771 -0500 +@@ -49,7 +49,7 @@ + BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp::value)); + }; + +-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) ++#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) + template + struct rank_imp + { +diff -uNr boost_1_62_0/boost/type_traits/remove_all_extents.hpp boost_1_62_0/boost/type_traits/remove_all_extents.hpp +--- boost_1_62_0/boost/type_traits/remove_all_extents.hpp 2015-05-21 13:51:23.000000000 -0400 ++++ boost_1_62_0/boost/type_traits/remove_all_extents.hpp 2016-01-08 13:29:55.746149995 -0500 +@@ -22,7 +22,7 @@ + template struct remove_all_extents : public remove_all_extents{}; + template struct remove_all_extents : public remove_all_extents{}; + template struct remove_all_extents : public remove_all_extents{}; +-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) ++#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) + template struct remove_all_extents : public remove_all_extents{}; + template struct remove_all_extents : public remove_all_extents{}; + template struct remove_all_extents : public remove_all_extents{}; +diff -uNr boost_1_62_0/boost/type_traits/remove_extent.hpp boost_1_62_0/boost/type_traits/remove_extent.hpp +--- boost_1_62_0/boost/type_traits/remove_extent.hpp 2015-05-21 13:51:23.000000000 -0400 ++++ boost_1_62_0/boost/type_traits/remove_extent.hpp 2016-01-10 02:18:53.967902075 -0500 +@@ -22,7 +22,7 @@ + template struct remove_extent { typedef T const type; }; + template struct remove_extent { typedef T volatile type; }; + template struct remove_extent { typedef T const volatile type; }; +-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) ++#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !(defined(__IBMCPP__) && !defined(__ibmxl__)) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) + template struct remove_extent { typedef T type; }; + template struct remove_extent { typedef T const type; }; + template struct remove_extent { typedef T volatile type; }; +diff -uNr boost_1_62_0/bootstrap.sh boost_1_62_0/bootstrap.sh +--- boost_1_62_0/bootstrap.sh 2015-08-11 10:00:14.000000000 -0400 ++++ boost_1_62_0/bootstrap.sh 2016-01-08 12:17:34.671934715 -0500 +@@ -195,7 +195,7 @@ + if test "x$TOOLSET" = x; then + guessed_toolset=`$my_dir/tools/build/src/engine/build.sh --guess-toolset` + case $guessed_toolset in +- acc | darwin | gcc | como | mipspro | pathscale | pgi | qcc | vacpp ) ++ acc | darwin | gcc | como | mipspro | pathscale | pgi | qcc | vacpp | xlcpp ) + TOOLSET=$guessed_toolset + ;; + +diff -uNr boost_1_62_0/libs/atomic/test/Jamfile.v2 boost_1_62_0/libs/atomic/test/Jamfile.v2 +--- boost_1_62_0/libs/atomic/test/Jamfile.v2 2015-01-25 10:50:58.000000000 -0500 ++++ boost_1_62_0/libs/atomic/test/Jamfile.v2 2016-01-08 12:23:33.758048088 -0500 +@@ -17,6 +17,7 @@ + windows:BOOST_USE_WINDOWS_H + windows:_WIN32_WINNT=0x0500 + gcc,windows:"-lkernel32" ++ xlcpp:"-latomic" + ; + + test-suite atomic +diff -uNr boost_1_62_0/libs/context/build/Jamfile.v2 boost_1_62_0/libs/context/build/Jamfile.v2 +--- boost_1_62_0/libs/context/build/Jamfile.v2 2015-06-29 11:08:22.000000000 -0400 ++++ boost_1_62_0/libs/context/build/Jamfile.v2 2016-01-08 12:24:40.614024908 -0500 +@@ -99,6 +99,11 @@ + cpp -x assembler-with-cpp "$(>)" | as --64 -o "$(<)" + } + ++actions gaspower64 ++{ ++ cpp -x assembler-with-cpp "$(>)" | as -a64 -o "$(<)" ++} ++ + actions gasx32 + { + cpp -x assembler-with-cpp "$(>)" | as --x32 -o "$(<)" +@@ -442,9 +447,9 @@ + # POWERPC_64 + # POWERPC_64/SYSV/ELF + alias asm_context_sources +- : [ make asm/make_ppc64_sysv_elf_gas.o : asm/make_ppc64_sysv_elf_gas.S : @gas64 ] +- [ make asm/jump_ppc64_sysv_elf_gas.o : asm/jump_ppc64_sysv_elf_gas.S : @gas64 ] +- [ make asm/ontop_ppc64_sysv_elf_gas.o : asm/ontop_ppc64_sysv_elf_gas.S : @gas64 ] ++ : [ make asm/make_ppc64_sysv_elf_gas.o : asm/make_ppc64_sysv_elf_gas.S : @gaspower64 ] ++ [ make asm/jump_ppc64_sysv_elf_gas.o : asm/jump_ppc64_sysv_elf_gas.S : @gaspower64 ] ++ [ make asm/ontop_ppc64_sysv_elf_gas.o : asm/ontop_ppc64_sysv_elf_gas.S : @gaspower64 ] + : sysv + 64 + power +diff -uNr boost_1_62_0/libs/foreach/test/Jamfile.v2 boost_1_62_0/libs/foreach/test/Jamfile.v2 +--- boost_1_62_0/libs/foreach/test/Jamfile.v2 2015-03-04 15:36:38.000000000 -0500 ++++ boost_1_62_0/libs/foreach/test/Jamfile.v2 2016-01-08 12:25:51.293898849 -0500 +@@ -8,9 +8,9 @@ + project : requirements msvc:on ; + + test-suite "foreach" +- : [ run stl_byval.cpp ] ++ : [ run stl_byval.cpp : : : xlcpp:-qalias=noansi ] + [ run stl_byref.cpp ] +- [ run stl_byval_r.cpp ] ++ [ run stl_byval_r.cpp : : : xlcpp:-qalias=noansi ] + [ run stl_byref_r.cpp ] + [ run array_byval.cpp ] + [ run array_byref.cpp ] +@@ -25,12 +25,12 @@ + [ run pair_byval_r.cpp ] + [ run pair_byref_r.cpp ] + [ run user_defined.cpp ] +- [ run call_once.cpp ] ++ [ run call_once.cpp : : : xlcpp:-qalias=noansi ] + [ run rvalue_const.cpp ] + [ run rvalue_nonconst.cpp ] + [ run rvalue_const_r.cpp ] + [ run rvalue_nonconst_r.cpp ] +- [ run dependent_type.cpp ] ++ [ run dependent_type.cpp : : : xlcpp:-qalias=noansi ] + [ run misc.cpp ] + [ compile noncopyable.cpp ] + ; +diff -uNr boost_1_62_0/libs/geometry/test/algorithms/set_operations/intersection/Jamfile.v2 boost_1_62_0/libs/geometry/test/algorithms/set_operations/intersection/Jamfile.v2 +--- boost_1_62_0/libs/geometry/test/algorithms/set_operations/intersection/Jamfile.v2 2015-08-03 08:51:49.000000000 -0400 ++++ boost_1_62_0/libs/geometry/test/algorithms/set_operations/intersection/Jamfile.v2 2016-01-08 12:29:08.081503553 -0500 +@@ -16,7 +16,7 @@ + + test-suite boost-geometry-algorithms-intersection + : +- [ run intersection.cpp : : : BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE ++ [ run intersection.cpp : : : BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE xlcpp:-qfloat=nomaf + : algorithms_intersection ] + [ run intersection_areal_areal_linear.cpp : : : : algorithms_intersection_areal_areal_linear ] + [ run intersection_linear_linear.cpp : : : : algorithms_intersection_linear_linear ] +diff -uNr boost_1_62_0/libs/lockfree/test/Jamfile.v2 boost_1_62_0/libs/lockfree/test/Jamfile.v2 +--- boost_1_62_0/libs/lockfree/test/Jamfile.v2 2015-06-11 12:00:57.000000000 -0400 ++++ boost_1_62_0/libs/lockfree/test/Jamfile.v2 2016-01-08 12:38:25.909320596 -0500 +@@ -29,6 +29,7 @@ + : # requirements + acc:-lrt + acc-pa_risc:-lrt ++ xlcpp:-latomic + windows,gcc:"-lole32 -loleaut32 -lpsapi -ladvapi32" + hpux,gcc:"-Wl,+as,mpas" + ../../thread/build//boost_thread/ +diff -uNr boost_1_62_0/libs/spirit/test/Jamfile boost_1_62_0/libs/spirit/test/Jamfile +--- boost_1_62_0/libs/spirit/test/Jamfile 2015-07-14 18:38:56.000000000 -0400 ++++ boost_1_62_0/libs/spirit/test/Jamfile 2016-01-08 12:52:18.540491314 -0500 +@@ -218,9 +218,9 @@ + [ run karma/sequence1.cpp : : : : karma_sequence1 ] + [ run karma/sequence2.cpp : : : : karma_sequence2 ] + [ run karma/stream.cpp : : : : karma_stream ] +- [ run karma/symbols1.cpp : : : : karma_symbols1 ] +- [ run karma/symbols2.cpp : : : : karma_symbols2 ] +- [ run karma/symbols3.cpp : : : : karma_symbols3 ] ++ [ run karma/symbols1.cpp : : : xlcpp:-qalias=noansi : karma_symbols1 ] ++ [ run karma/symbols2.cpp : : : xlcpp:-qalias=noansi : karma_symbols2 ] ++ [ run karma/symbols3.cpp : : : xlcpp:-qalias=noansi : karma_symbols3 ] + [ run karma/tricky_alignment.cpp : : : : karma_tricky_alignment ] + [ run karma/uint_radix.cpp : : : : karma_uint_radix ] + [ run karma/utree1.cpp : : : : karma_utree1 ] +diff -uNr boost_1_62_0/libs/test/test/Jamfile.v2 boost_1_62_0/libs/test/test/Jamfile.v2 +--- boost_1_62_0/libs/test/test/Jamfile.v2 2015-07-21 17:41:49.000000000 -0400 ++++ boost_1_62_0/libs/test/test/Jamfile.v2 2016-01-08 12:53:36.068217432 -0500 +@@ -47,6 +47,7 @@ + gcc:-Wno-variadic-macros + clang:-Wno-c99-extensions + clang:-Wno-variadic-macros ++ xlcpp:-std=c++11 + # gcc:--coverage + all + $(extra-options) +diff -uNr boost_1_62_0/libs/type_index/test/Jamfile.v2 boost_1_62_0/libs/type_index/test/Jamfile.v2 +--- boost_1_62_0/libs/type_index/test/Jamfile.v2 2015-07-30 16:00:41.000000000 -0400 ++++ boost_1_62_0/libs/type_index/test/Jamfile.v2 2016-01-08 12:54:28.968296112 -0500 +@@ -13,9 +13,9 @@ + + # Making own `nortti` that is link compatible. + # We explicitly define BOOST_NO_RTTI because it sometimes can not be detected by build system. +-nortti = gcc:"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" clang:"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" intel:"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" darwin:"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" msvc:/GR- ; ++nortti = gcc:"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" clang:"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" intel:"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" darwin:"-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" msvc:/GR- xlcpp:"-qnortti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID" ; + +-norttidefines = gcc:"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" clang:"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" intel:"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" darwin:"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" msvc:-DBOOST_NO_RTTI ; ++norttidefines = gcc:"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" clang:"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" intel:"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" darwin:"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" msvc:-DBOOST_NO_RTTI xlcpp:"-DBOOST_NO_RTTI -DBOOST_NO_TYPEID" ; + + + # Making libraries that CANNOT work between rtti-on/rtti-off modules +diff -uNr boost_1_62_0/libs/utility/test/Jamfile.v2 boost_1_62_0/libs/utility/test/Jamfile.v2 +--- boost_1_62_0/libs/utility/test/Jamfile.v2 2015-02-27 01:26:11.000000000 -0500 ++++ boost_1_62_0/libs/utility/test/Jamfile.v2 2016-01-08 12:54:59.380260948 -0500 +@@ -33,7 +33,7 @@ + [ run string_view_test1.cpp unit_test_framework ] + [ run string_view_test2.cpp unit_test_framework ] + [ run string_view_test_io.cpp unit_test_framework ] +- [ run ../value_init_test.cpp ] ++ [ run ../value_init_test.cpp : : : xlcpp:-qalias=noansi ] + [ run ../value_init_workaround_test.cpp ] + [ run ../initialized_test.cpp ] + [ compile-fail ../value_init_test_fail1.cpp ] +diff -uNr boost_1_62_0/tools/build/src/engine/boehm_gc/os_dep.c boost_1_62_0/tools/build/src/engine/boehm_gc/os_dep.c +--- boost_1_62_0/tools/build/src/engine/boehm_gc/os_dep.c 2015-08-11 09:53:51.000000000 -0400 ++++ boost_1_62_0/tools/build/src/engine/boehm_gc/os_dep.c 2016-01-10 01:57:04.489001841 -0500 +@@ -503,7 +503,7 @@ + + # include + +-# if !defined(__IBMC__) && !defined(__WATCOMC__) /* e.g. EMX */ ++# if !(defined(__IBMC__) && !defined(__ibmxl__)) && !defined(__WATCOMC__) /* e.g. EMX */ + + struct exe_hdr { + unsigned short magic_number; +diff -uNr boost_1_62_0/tools/build/src/tools/xlcpp.jam boost_1_62_0/tools/build/src/tools/xlcpp.jam +--- boost_1_62_0/tools/build/src/tools/xlcpp.jam 2015-08-11 09:53:51.000000000 -0400 ++++ boost_1_62_0/tools/build/src/tools/xlcpp.jam 2016-01-20 15:09:00.897879191 -0500 +@@ -41,7 +41,7 @@ + + # Declare flags + flags xlcpp CFLAGS off : -qNOOPTimize ; +-flags xlcpp CFLAGS speed : ; ++flags xlcpp CFLAGS speed : ; + flags xlcpp CFLAGS space : -O2 -qcompact ; + + # Discretionary inlining (not recommended) +@@ -51,8 +51,8 @@ + flags xlcpp CFLAGS full : ; + + # Exception handling +-flags xlcpp C++FLAGS off : -qnoeh ; +-flags xlcpp C++FLAGS on : -qeh ; ++flags xlcpp C++FLAGS off : -fno-exceptions ; ++flags xlcpp C++FLAGS on : -fexceptions ; + + # Run-time Type Identification + flags xlcpp C++FLAGS off : -qnortti ; +@@ -108,6 +108,8 @@ + flags xlcpp HDRS ; + flags xlcpp STDHDRS ; + flags xlcpp.link OPTIONS ; ++flags xlcpp.link RPATH_LINK ; ++flags xlcpp.link RPATH ; + flags xlcpp ARFLAGS ; + + flags xlcpp LIBPATH ; +@@ -116,10 +118,10 @@ + flags xlcpp FINDLIBS ; + + # Select the compiler name according to the threading model. +-flags xlcpp VA_C_COMPILER single : xlc ; +-flags xlcpp VA_C_COMPILER multi : xlc ; +-flags xlcpp VA_CXX_COMPILER single : xlC ; +-flags xlcpp VA_CXX_COMPILER multi : xlC ; ++flags xlcpp VA_C_COMPILER single : xlc ; ++flags xlcpp VA_C_COMPILER multi : xlc_r ; ++flags xlcpp VA_CXX_COMPILER single : xlC ; ++flags xlcpp VA_CXX_COMPILER multi : xlC_r ; + + SPACE = " " ; + +@@ -127,12 +129,12 @@ + + actions xlcpp.link bind NEEDLIBS + { +- $(VA_CXX_COMPILER) $(EXE-LINKFLAGS) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) ++ $(VA_CXX_COMPILER) $(EXE-LINKFLAGS) $(LINKFLAGS) -Wl,-R$(SPACE)-Wl,"$(RPATH)" -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) + } + + actions xlcpp.link.dll bind NEEDLIBS + { +- xlC -G $(LINKFLAGS) -o "$(<[1])" $(HAVE_SONAME)-Wl,-soname$(SPACE)-Wl,$(<[-1]:D=) -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) ++ $(VA_CXX_COMPILER) -G $(LINKFLAGS) -o "$(<[1])" $(HAVE_SONAME)-Wl,-soname$(SPACE)-Wl,$(<[-1]:D=) -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) + } + + actions xlcpp.compile.c From 539a454900c74655abc57bbbf85dc0614196ec91 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 22 Feb 2017 09:29:34 -0800 Subject: [PATCH 0193/2394] Convert Jaspert to AutotoolsPackage (#3212) --- .../repos/builtin/packages/jasper/package.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/jasper/package.py b/var/spack/repos/builtin/packages/jasper/package.py index f450c7d155f..d4bb00b39e7 100644 --- a/var/spack/repos/builtin/packages/jasper/package.py +++ b/var/spack/repos/builtin/packages/jasper/package.py @@ -25,7 +25,7 @@ from spack import * -class Jasper(Package): +class Jasper(AutotoolsPackage): """Library for manipulating JPEG-2000 images""" homepage = "https://www.ece.uvic.ca/~frodo/jasper/" @@ -45,19 +45,14 @@ class Jasper(Package): # see: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=469786 patch('fix_alpha_channel_assert_fail.patch') - def install(self, spec, prefix): - configure_options = [ - '--prefix={0}'.format(prefix), - '--mandir={0}'.format(spec.prefix.man), - ] + def configure_args(self): + spec = self.spec + args = ['--mandir={0}'.format(spec.prefix.man)] if '+shared' in spec: - configure_options.append('--enable-shared') + args.append('--enable-shared') if '+debug' not in spec: - configure_options.append('--disable-debug') + args.append('--disable-debug') - configure(*configure_options) - - make() - make('install') + return args From 871a94ee41043b8e026f898ab9208f610814b85c Mon Sep 17 00:00:00 2001 From: Kim Serradell Date: Wed, 22 Feb 2017 20:03:25 +0100 Subject: [PATCH 0194/2394] Updating homepages and sources from two BSC packages (#3216) * Corrected extrae package homepage and url * Corrected paraver package homepage and url * To fix 'undefined reference to libintl_dgettext' appearing in extrae package when using binutils+libiberty * Adding support to previous paraver version and reverting binutils changes to open another PR --- var/spack/repos/builtin/packages/extrae/package.py | 6 +++--- var/spack/repos/builtin/packages/paraver/package.py | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index cb20a8109eb..2a2b4df5bf8 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -52,9 +52,9 @@ class Extrae(Package): instrument the MPI programin model, and the following parallel programming models either alone or in conjunction with MPI : OpenMP, CUDA, OpenCL, pthread, OmpSs""" - homepage = "http://www.bsc.es/computer-sciences/extrae" - url = "http://www.bsc.es/ssl/apps/performanceTools/files/extrae-3.3.0.tar.bz2" - version('3.3.0', 'f46e3f1a6086b5b3ac41c9585b42952d') + homepage = "https://tools.bsc.es/extrae" + url = "https://ftp.tools.bsc.es/extrae/extrae-3.4.1-src.tar.bz2" + version('3.4.1', '69001f5cfac46e445d61eeb567bc8844') depends_on("mpi") depends_on("dyninst") diff --git a/var/spack/repos/builtin/packages/paraver/package.py b/var/spack/repos/builtin/packages/paraver/package.py index 0a2ffdbb843..d7fe2152c39 100644 --- a/var/spack/repos/builtin/packages/paraver/package.py +++ b/var/spack/repos/builtin/packages/paraver/package.py @@ -31,12 +31,13 @@ class Paraver(Package): based on traces that can be used to analyse any information that is expressed on its input trace format. Traces for parallel MPI, OpenMP and other programs can be genereated with Extrae.""" - homepage = "http://www.bsc.es/computer-sciences/performance-tools/paraver" - url = "http://www.bsc.es/ssl/apps/performanceTools/files/paraver-sources-4.6.2.tar.gz" + homepage = "https://tools.bsc.es/paraver" + url = "https://ftp.tools.bsc.es/paraver/wxparaver-4.6.3-src.tar.bz2" # NOTE: Paraver provides only latest version for download. # Don't keep/add older versions. - version('4.6.2', 'c54e124382b597574628b00e31649803') + version('4.6.3', '7940a2651f56712c4e8a21138b4bf16c') + version('4.6.2', '3f5b3e207d98b2c44101f1ff5685aa55') depends_on("boost") # depends_on("extrae") From f86dcd8b4cff3b49ba5395c9f64e91f066c0a8be Mon Sep 17 00:00:00 2001 From: Pramod Kumbhar Date: Wed, 22 Feb 2017 20:04:14 +0100 Subject: [PATCH 0195/2394] Fix scotch build on bg-q (#3196) * Fix build issue #3190 on bg-q : - disable parallel build as it produces weired linker errors in cross compiling environment - update ldflags for bg-q as per Makefile provided Makefile.inc.ppca2_ibm_bgq * Added note about -lpthread vs -pthread --- var/spack/repos/builtin/packages/scotch/package.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index ca8e3e3fa0d..f164037efaf 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -56,6 +56,10 @@ class Scotch(Package): depends_on('mpi', when='+mpi') depends_on('zlib', when='+compression') + # NOTE: In cross-compiling environment parallel build + # produces weird linker errors. + parallel = False + # NOTE: Versions of Scotch up to version 6.0.0 don't include support for # building with 'esmumps' in their default packages. In order to enable # support for this feature, we must grab the 'esmumps' enabled archives @@ -140,9 +144,14 @@ def configure(self): ldflags.append('-L%s -lz' % (self.spec['zlib'].prefix.lib)) cflags.append('-DCOMMON_PTHREAD') + + # NOTE: bg-q platform needs -lpthread (and not -pthread) + # otherwise we get illegal instruction error during runtime if self.spec.satisfies('platform=darwin'): cflags.append('-DCOMMON_PTHREAD_BARRIER') ldflags.append('-lm -pthread') + elif self.spec.satisfies('platform=bgq'): + ldflags.append('-lm -lrt -lpthread') else: ldflags.append('-lm -lrt -pthread') From c9f705ffc24354d4a4472b68286dd444768cbc4d Mon Sep 17 00:00:00 2001 From: Pramod Kumbhar Date: Wed, 22 Feb 2017 23:03:11 +0100 Subject: [PATCH 0196/2394] Add SCOREC Core package for unstructured mesh simulations. (#3202) * Add SCOREC Core package for unstructured mesh simulations. --- .../builtin/packages/scorec-core/package.py | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 var/spack/repos/builtin/packages/scorec-core/package.py diff --git a/var/spack/repos/builtin/packages/scorec-core/package.py b/var/spack/repos/builtin/packages/scorec-core/package.py new file mode 100644 index 00000000000..f8605e9859c --- /dev/null +++ b/var/spack/repos/builtin/packages/scorec-core/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class ScorecCore(CMakePackage): + """The SCOREC Core is a set of C/C++ libraries for unstructured mesh + simulations on supercomputers. + """ + + homepage = 'https://www.scorec.rpi.edu/' + url = 'https://github.com/SCOREC/core.git' + + version('develop', git=url) + + depends_on('mpi') + depends_on('zoltan') + depends_on('cmake@3.0:', type='build') + + @property + def std_cmake_args(self): + # Default cmake RPATH options causes build failure on bg-q + if self.spec.satisfies('platform=bgq'): + return ['-DCMAKE_INSTALL_PREFIX:PATH={0}'.format(self.prefix)] + else: + return self._std_args(self) + + def cmake_args(self): + options = [] + options.append('-DCMAKE_C_COMPILER=%s' % self.spec['mpi'].mpicc) + options.append('-DCMAKE_CXX_COMPILER=%s' % self.spec['mpi'].mpicxx) + options.append('-DENABLE_ZOLTAN=ON') + + if self.compiler.name == 'xl': + options.append('-DSCOREC_EXTRA_CXX_FLAGS=%s' % '-qminimaltoc') + + return options From 60b7e13e1a7499c91e1e30bf4de18606c77a3f87 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 23 Feb 2017 00:15:23 +0100 Subject: [PATCH 0197/2394] fix py-setuptools (#3217) --- var/spack/repos/builtin/packages/py-setuptools/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index c4f0ce9802a..af1ea9bf06d 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -43,7 +43,9 @@ class PySetuptools(PythonPackage): version('16.0', '0ace0b96233516fc5f7c857d086aa3ad') version('11.3.1', '01f69212e019a2420c1693fb43593930') - depends_on('python@2.6:2.7,3.3:') + # FIXME: when we use 2.6:2.7, spack spec llvm tries to install non-existing + # python@2.7 instead of python@2.7.13 + depends_on('python@2.6:2.7.99,3.3:') # Previously, setuptools vendored all of its dependencies to allow # easy bootstrapping. As of version 34.0.0, this is no longer done From 9650afd97eb57dcf1e01eeacb670b824474f2063 Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 23 Feb 2017 14:56:39 +0100 Subject: [PATCH 0198/2394] Fixing graphviz issue when calling spec (#3225) --- var/spack/repos/builtin/packages/graphviz/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py index a6d3234695f..18b69b9f2bf 100644 --- a/var/spack/repos/builtin/packages/graphviz/package.py +++ b/var/spack/repos/builtin/packages/graphviz/package.py @@ -90,6 +90,7 @@ class Graphviz(AutotoolsPackage): depends_on('python@2:2.8', when='+python') def configure_args(self): + spec = self.spec options = [] # These language bindings have been tested, we know they work. From 06f366c53fd19a3ef56d9e1164e34875592311da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20M=C3=BCller?= Date: Fri, 24 Feb 2017 15:05:21 +0100 Subject: [PATCH 0199/2394] Add bazel version 0.4.4 (#3233) --- var/spack/repos/builtin/packages/bazel/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index 94ac73cbd2d..95af1e4cc0f 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -34,6 +34,8 @@ class Bazel(Package): homepage = "https://www.bazel.io" url = "https://github.com/bazelbuild/bazel/archive/0.3.1.tar.gz" + version('0.4.4', '5e7c52b89071efc41277e2f0057d258f', + url="https://github.com/bazelbuild/bazel/releases/download/0.4.4/bazel-0.4.4-dist.zip") version('0.3.1', '5c959467484a7fc7dd2e5e4a1e8e866b') version('0.3.0', '33a2cb457d28e1bee9282134769b9283') version('0.2.3', '393a491d690e43caaba88005efe6da91') From ef55b019068de0aef8a81cc3ec4148f5ad59fa3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20M=C3=BCller?= Date: Fri, 24 Feb 2017 15:05:49 +0100 Subject: [PATCH 0200/2394] Add py-mock version 2.0.0 (#3234) --- var/spack/repos/builtin/packages/py-mock/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-mock/package.py b/var/spack/repos/builtin/packages/py-mock/package.py index 21edbd1dc0b..0ea571080a6 100644 --- a/var/spack/repos/builtin/packages/py-mock/package.py +++ b/var/spack/repos/builtin/packages/py-mock/package.py @@ -33,6 +33,7 @@ class PyMock(PythonPackage): homepage = "https://github.com/testing-cabal/mock" url = "https://pypi.python.org/packages/source/m/mock/mock-1.3.0.tar.gz" + version('2.0.0', '0febfafd14330c9dcaa40de2d82d40ad') version('1.3.0', '73ee8a4afb3ff4da1b4afa287f39fdeb') depends_on('py-pbr', type=('build', 'run')) From b5b1e588435a4aa6e04b016bbf1e544e6d2ba11c Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sun, 26 Feb 2017 15:17:17 +0100 Subject: [PATCH 0201/2394] numdiff: add 5.9.0 (#3243) --- var/spack/repos/builtin/packages/numdiff/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/numdiff/package.py b/var/spack/repos/builtin/packages/numdiff/package.py index 64ba565032c..6b8266eaa13 100644 --- a/var/spack/repos/builtin/packages/numdiff/package.py +++ b/var/spack/repos/builtin/packages/numdiff/package.py @@ -33,6 +33,7 @@ class Numdiff(AutotoolsPackage): homepage = 'https://www.nongnu.org/numdiff' url = 'http://nongnu.askapache.com/numdiff/numdiff-5.8.1.tar.gz' + version('5.9.0', '794461a7285d8b9b1f2c4a8149889ea6') version('5.8.1', 'a295eb391f6cb1578209fc6b4f9d994e') variant('nls', default=False, From a43f2a49cb977161d87630a55619c05f61f8d1fd Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Feb 2017 17:12:51 +0100 Subject: [PATCH 0202/2394] add version 0.29.0 to py-wheel (#3261) --- var/spack/repos/builtin/packages/py-wheel/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py index 7e678df2e86..c95a83a965b 100644 --- a/var/spack/repos/builtin/packages/py-wheel/package.py +++ b/var/spack/repos/builtin/packages/py-wheel/package.py @@ -31,6 +31,7 @@ class PyWheel(PythonPackage): homepage = "https://pypi.python.org/pypi/wheel" url = "https://pypi.python.org/packages/source/w/wheel/wheel-0.26.0.tar.gz" + version('0.29.0', '555a67e4507cedee23a0deb9651e452f') version('0.26.0', '4cfc6e7e3dc7377d0164914623922a10') depends_on('py-setuptools', type='build') From 25f10cca481798f079031796a27b5de6a32b1875 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Feb 2017 17:17:43 +0100 Subject: [PATCH 0203/2394] add package py-xarray (#3259) --- .../builtin/packages/py-xarray/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-xarray/package.py diff --git a/var/spack/repos/builtin/packages/py-xarray/package.py b/var/spack/repos/builtin/packages/py-xarray/package.py new file mode 100644 index 00000000000..4f29d6c91ee --- /dev/null +++ b/var/spack/repos/builtin/packages/py-xarray/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyXarray(PythonPackage): + """N-D labeled arrays and datasets in Python""" + + homepage = "https://github.com/pydata/xarray" + url = "https://pypi.io/packages/source/x/xarray/xarray-0.9.1.tar.gz" + + version('0.9.1', '24cc99f19da95427604846c9d1e20e70') + + depends_on('py-setuptools', type='build') + depends_on('py-pandas@0.15.0:', type=('build', 'run')) + depends_on('py-numpy@1.7:', type=('build', 'run')) From be0033ac91c28f3e45eff34c84b7da59d7fcefe2 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Feb 2017 17:21:06 +0100 Subject: [PATCH 0204/2394] add py-ranger package (#3258) --- .../builtin/packages/py-ranger/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-ranger/package.py diff --git a/var/spack/repos/builtin/packages/py-ranger/package.py b/var/spack/repos/builtin/packages/py-ranger/package.py new file mode 100644 index 00000000000..ecd4146280e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ranger/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PyRanger(PythonPackage): + """A VIM-inspired filemanager for the console""" + + homepage = "http://ranger.nongnu.org/" + url = "https://github.com/ranger/ranger/archive/v1.7.2.tar.gz" + + version('1.7.2', '27805c3ab7ec4b129e1b93249506d925') + + depends_on('python@2.6:') From 70d0cdcd0ae7860dc1ed849aa695f2edc368fe9b Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Feb 2017 17:51:31 +0100 Subject: [PATCH 0205/2394] add package py-attrs (#3253) --- .../builtin/packages/py-attrs/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-attrs/package.py diff --git a/var/spack/repos/builtin/packages/py-attrs/package.py b/var/spack/repos/builtin/packages/py-attrs/package.py new file mode 100644 index 00000000000..b99b55da065 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-attrs/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyAttrs(PythonPackage): + """Python Attributes Without Boilerplate""" + + homepage = "http://attrs.org/" + url = "https://pypi.io/packages/source/a/attrs/attrs-16.3.0.tar.gz" + + version('16.3.0', '4ec003c49360853cf935113d1ae56151') + + depends_on('py-setuptools', type='build') From dee2259f3ab29388eff2b627355818be231d1c03 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Feb 2017 19:56:36 +0100 Subject: [PATCH 0206/2394] add package py-saga-python and dependencies (#3267) * add package py-saga-python and dependencies * fixed url and dependencies --- .../builtin/packages/py-colorama/package.py | 36 +++++++++++++++++ .../builtin/packages/py-netifaces/package.py | 36 +++++++++++++++++ .../packages/py-radical-utils/package.py | 39 +++++++++++++++++++ .../packages/py-saga-python/package.py | 38 ++++++++++++++++++ 4 files changed, 149 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-colorama/package.py create mode 100644 var/spack/repos/builtin/packages/py-netifaces/package.py create mode 100644 var/spack/repos/builtin/packages/py-radical-utils/package.py create mode 100644 var/spack/repos/builtin/packages/py-saga-python/package.py diff --git a/var/spack/repos/builtin/packages/py-colorama/package.py b/var/spack/repos/builtin/packages/py-colorama/package.py new file mode 100644 index 00000000000..82938cfdb52 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-colorama/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyColorama(PythonPackage): + """Cross-platform colored terminal text.""" + + homepage = "https://github.com/tartley/colorama" + url = "https://pypi.io/packages/source/c/colorama/colorama-0.3.7.tar.gz" + + version('0.3.7', '349d2b02618d3d39e5c6aede36fe3c1a') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-netifaces/package.py b/var/spack/repos/builtin/packages/py-netifaces/package.py new file mode 100644 index 00000000000..3229af495ff --- /dev/null +++ b/var/spack/repos/builtin/packages/py-netifaces/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyNetifaces(PythonPackage): + """Portable network interface information""" + + homepage = "https://bitbucket.org/al45tair/netifaces" + url = "https://pypi.io/packages/source/n/netifaces/netifaces-0.10.5.tar.gz" + + version('0.10.5', '5b4d1f1310ed279e6df27ef3a9b71519') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-radical-utils/package.py b/var/spack/repos/builtin/packages/py-radical-utils/package.py new file mode 100644 index 00000000000..fc3d8452b4d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-radical-utils/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyRadicalUtils(PythonPackage): + """Shared code and tools for various RADICAL Projects""" + + homepage = "http://radical.rutgers.edu" + url = "https://pypi.io/packages/source/r/radical.utils/radical.utils-0.45.tar.gz" + + version('0.45', 'c0bec2a0951b0dc990366d82e78e65fe') + version('0.41.1', '923446539545dc157768026c957cecb2') + + depends_on('py-setuptools', type='build') + depends_on('py-colorama', type=('build', 'run')) + depends_on('py-netifaces', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-saga-python/package.py b/var/spack/repos/builtin/packages/py-saga-python/package.py new file mode 100644 index 00000000000..48f6237b6e2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-saga-python/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySagaPython(PythonPackage): + """A light-weight access layer for distributed computing infrastructure""" + + homepage = "http://radical.rutgers.edu" + url = "https://pypi.io/packages/source/s/saga-python/saga-python-0.41.3.tar.gz" + + version('0.41.3', '3f92e16a53635ffe529fca4bae3b705d') + + depends_on('py-setuptools', type='build') + depends_on('py-apache-libcloud', type=('build', 'run')) + depends_on('py-radical-utils', type=('build', 'run')) From b2784f366490493edc67969a9a45775b9704524b Mon Sep 17 00:00:00 2001 From: Bryce Allen Date: Tue, 28 Feb 2017 12:57:16 -0600 Subject: [PATCH 0207/2394] add sz package (#3251) --- .../repos/builtin/packages/sz/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sz/package.py diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py new file mode 100644 index 00000000000..5ac870c8ba7 --- /dev/null +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Sz(AutotoolsPackage): + """Error-bounded Lossy Compressor for HPC Data.""" + + homepage = "https://collab.cels.anl.gov/display/ESR/SZ" + url = "http://www.mcs.anl.gov/~shdi/download/sz-1.4.9-beta.tar.gz" + + version('develop', git='https://github.com/disheng222/SZ.git', + branch='master') + version('1.4.9-beta', '8a00cddc39780c18d766215f69713f82') + + variant('fortran', default=False, + description='Enable fortran compilation') + + def configure_args(self): + args = [] + if '+fortran' in self.spec: + args += ['--enable-fortran'] + else: + args += ['--disable-fortran'] + return args From c1382f9d02f6086ebdde85263b65f1320837a415 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 28 Feb 2017 12:58:08 -0600 Subject: [PATCH 0208/2394] Fix infinite recursion in swig build (#3249) --- var/spack/repos/builtin/packages/swig/package.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/swig/package.py b/var/spack/repos/builtin/packages/swig/package.py index 3bc1f9ac2ad..4d3a8724839 100644 --- a/var/spack/repos/builtin/packages/swig/package.py +++ b/var/spack/repos/builtin/packages/swig/package.py @@ -36,14 +36,17 @@ class Swig(AutotoolsPackage): application.""" homepage = "http://www.swig.org" - url = "http://prdownloads.sourceforge.net/swig/swig-3.0.8.tar.gz" + url = "http://prdownloads.sourceforge.net/swig/swig-3.0.12.tar.gz" + version('3.0.12', '82133dfa7bba75ff9ad98a7046be687c') version('3.0.11', '13732eb0f1ab2123d180db8425c1edea') version('3.0.10', 'bb4ab8047159469add7d00910e203124') - version('3.0.8', 'c96a1d5ecb13d38604d7e92148c73c97') - version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41') + version('3.0.8', 'c96a1d5ecb13d38604d7e92148c73c97') + version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41') version('2.0.12', 'c3fb0b2d710cc82ed0154b91e43085a4') - version('2.0.2', 'eaf619a4169886923e5f828349504a29') + version('2.0.2', 'eaf619a4169886923e5f828349504a29') version('1.3.40', '2df766c9e03e02811b1ab4bba1c7b9cc') depends_on('pcre') + + build_directory = 'spack-build' From d1040b7111300ddf26e86185ac2ef4d72eea2515 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Feb 2017 19:59:43 +0100 Subject: [PATCH 0209/2394] add package py-sh (#3266) * add package py-sh * removed constraint on py-setuptools --- .../repos/builtin/packages/py-sh/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-sh/package.py diff --git a/var/spack/repos/builtin/packages/py-sh/package.py b/var/spack/repos/builtin/packages/py-sh/package.py new file mode 100644 index 00000000000..c089cddf0c5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sh/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySh(PythonPackage): + """Python subprocess interface""" + + homepage = "https://github.com/amoffat/sh" + url = "https://pypi.io/packages/source/s/sh/sh-1.12.9.tar.gz" + + version('1.12.9', 'ddc128a8d943d25afa6e01af11e0063b') + version('1.11', '7af8df6c92d29ff927b6db0146bddec3') + + depends_on('py-setuptools', type='build') From 315dfe097051b4ce844cf27c30abdf9783e3e2d2 Mon Sep 17 00:00:00 2001 From: Thierry Date: Tue, 28 Feb 2017 11:05:01 -0800 Subject: [PATCH 0210/2394] nfft distclean before configure patch (#3241) --- var/spack/repos/builtin/packages/nfft/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/nfft/package.py b/var/spack/repos/builtin/packages/nfft/package.py index 4c1ce2b03d6..522191d89a6 100644 --- a/var/spack/repos/builtin/packages/nfft/package.py +++ b/var/spack/repos/builtin/packages/nfft/package.py @@ -40,6 +40,7 @@ class Nfft(AutotoolsPackage): def install(self, spec, prefix): options = ['--prefix={0}'.format(prefix)] + make("distclean") configure(*options) make() if self.run_tests: @@ -47,12 +48,14 @@ def install(self, spec, prefix): make("install") if '+float' in spec['fftw']: + make("distclean") configure('--enable-float', *options) make() if self.run_tests: make("check") make("install") if '+long_double' in spec['fftw']: + make("distclean") configure('--enable-long-double', *options) make() if self.run_tests: From 86276cd734b4902d181db35e7788df739045c96a Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Tue, 28 Feb 2017 20:18:40 +0100 Subject: [PATCH 0211/2394] Update Adol-C to AutotoolsPackage; Change develop repository (#3246) The new repository for the development version points to the most up-to-date official source for Adol-C. The previous SVN repository was only occasionally sync'd with this repository. --- .../repos/builtin/packages/adol-c/package.py | 57 +++++++++++-------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/var/spack/repos/builtin/packages/adol-c/package.py b/var/spack/repos/builtin/packages/adol-c/package.py index 4260b6b21b2..8ba19542186 100644 --- a/var/spack/repos/builtin/packages/adol-c/package.py +++ b/var/spack/repos/builtin/packages/adol-c/package.py @@ -25,68 +25,79 @@ from spack import * -class AdolC(Package): +class AdolC(AutotoolsPackage): """A package for the automatic differentiation of first and higher derivatives of vector functions in C and C++ programs by operator overloading.""" homepage = "https://projects.coin-or.org/ADOL-C" url = "http://www.coin-or.org/download/source/ADOL-C/ADOL-C-2.6.1.tgz" - version('develop', svn='https://projects.coin-or.org/svn/ADOL-C/trunk/') + version('develop', git='https://gitlab.com/adol-c/adol-c.git', + branch='master') version('2.6.2', '0f9547584c99c0673e4f81cf64e8d865') version('2.6.1', '1032b28427d6e399af4610e78c0f087b') variant('advanced_branching', default=False, description='Enable advanced branching to reduce retaping') + variant('atrig_erf', default=True, + description='Enable arc-trig and error functions') variant('doc', default=True, description='Install documentation') variant('openmp', default=False, description='Enable OpenMP support') variant('sparse', default=False, description='Enable sparse drivers') variant('tests', default=True, description='Build all included examples as a test case') + # Build dependencies + depends_on('automake', type='build', when='@develop') + depends_on('autoconf', type='build', when='@develop') + depends_on('libtool', type='build', when='@develop') + depends_on('m4', type='build', when='@develop') + patch('openmp_exam_261.patch', when='@2.6.1') - def install(self, spec, prefix): - make_args = ['--prefix=%s' % prefix, - '--enable-atrig-erf'] + def configure_args(self): + spec = self.spec + + configure_args = [] if '+advanced_branching' in spec: - make_args.extend([ + configure_args.extend([ '--enable-advanced-branching' ]) + if '+atrig_erf' in spec: + configure_args.extend([ + '--enable-atrig-erf' + ]) + if '+openmp' in spec: - if spec.satisfies('%gcc'): - make_args.extend([ - # FIXME: Is this required? -I -L - '--with-openmp-flag=-fopenmp' - ]) - else: - raise InstallError( - "OpenMP flags for compilers other than GCC " - "are not implemented.") + configure_args.extend([ + '--with-openmp-flag={0}'.format(self.compiler.openmp_flag) + ]) if '+sparse' in spec: - make_args.extend([ + configure_args.extend([ '--enable-sparse' ]) # We can simply use the bundled examples to check # whether Adol-C works as expected if '+tests' in spec: - make_args.extend([ - '--enable-docexa', # Documeted examples + configure_args.extend([ + '--enable-docexa', # Documented examples '--enable-addexa' # Additional examples ]) if '+openmp' in spec: - make_args.extend([ + configure_args.extend([ '--enable-parexa' # Parallel examples ]) - configure(*make_args) - make() - make("install") + return configure_args + + @run_after('install') + def install_additional_files(self): + spec = self.spec + prefix = self.prefix # Copy the config.h file, as some packages might require it source_directory = self.stage.source_path From c32a9416ec706191ca996013086cdd6afb5b877b Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Feb 2017 20:20:47 +0100 Subject: [PATCH 0212/2394] add package py-tabulate (#3263) * add package py-tabulate * added py-setuptools dependency --- .../builtin/packages/py-tabulate/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-tabulate/package.py diff --git a/var/spack/repos/builtin/packages/py-tabulate/package.py b/var/spack/repos/builtin/packages/py-tabulate/package.py new file mode 100644 index 00000000000..b0ad7da9b00 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tabulate/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyTabulate(PythonPackage): + """Pretty-print tabular data""" + + homepage = "https://bitbucket.org/astanin/python-tabulate" + url = "https://pypi.io/packages/source/t/tabulate/tabulate-0.7.7.tar.gz" + + version('0.7.7', '39a21aaa9c10be0749c545be34552559') + + depends_on('py-setuptools', type='build') From 9be0c06b9866e7ddd580ff5ff5c7c3228962d31d Mon Sep 17 00:00:00 2001 From: eklee15 Date: Tue, 28 Feb 2017 14:24:43 -0500 Subject: [PATCH 0213/2394] Patch hypre to support ppc64le (#3238) - Patch applies through v2.11.1 --- .../repos/builtin/packages/hypre/ibm-ppc64le.patch | 12 ++++++++++++ var/spack/repos/builtin/packages/hypre/package.py | 3 +++ 2 files changed, 15 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hypre/ibm-ppc64le.patch diff --git a/var/spack/repos/builtin/packages/hypre/ibm-ppc64le.patch b/var/spack/repos/builtin/packages/hypre/ibm-ppc64le.patch new file mode 100644 index 00000000000..b1ade00c09d --- /dev/null +++ b/var/spack/repos/builtin/packages/hypre/ibm-ppc64le.patch @@ -0,0 +1,12 @@ +--- hypre-2.11.1/src/config/config.guess 2016-06-09 10:56:18.000000000 -0400 ++++ hypre-2.11.1/src/config/config.guess.patch 2017-02-24 22:53:42.718337013 -0500 +@@ -882,6 +882,9 @@ + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; ++ ppc64le:Linux:*:*) ++ echo powerpc64le-unknown-linux-gnu ++ exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index ed0f665462f..14a2a5cc0c0 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -48,6 +48,9 @@ class Hypre(Package): description="Use internal Superlu routines") variant('int64', default=False, description="Use 64bit integers") + + # Patch to add ppc64le in config.guess + patch('ibm-ppc64le.patch', when='@:2.11.1') depends_on("mpi") depends_on("blas") From bce2accb69eea21ba88d7bf768d421b9cd0b023b Mon Sep 17 00:00:00 2001 From: eklee15 Date: Tue, 28 Feb 2017 14:26:49 -0500 Subject: [PATCH 0214/2394] xl support for suite-sparse (#3226) * xl support for suite-sparse * make_args.extend([ 'CFLAGS={0}'.format(self.compiler.pic_flag), 'FFLAGS={0}'.format(self.compiler.pic_flag) ]) --- .../builtin/packages/suite-sparse/package.py | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index aa22e1eccec..740e490b5a2 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -35,8 +35,8 @@ class SuiteSparse(Package): version('4.5.3', '8ec57324585df3c6483ad7f556afccbd') version('4.5.1', 'f0ea9aad8d2d1ffec66a5b6bfeff5319') - variant('tbb', default=True, description='Build with Intel TBB') - variant('fpic', default=True, description='Build position independent code (required to link with shared libraries)') + variant('tbb', default=False, description='Build with Intel TBB') + variant('pic', default=True, description='Build position independent code (required to link with shared libraries)') depends_on('blas') depends_on('lapack') @@ -46,7 +46,7 @@ class SuiteSparse(Package): # flags does not seem to be used, which leads to linking errors on Linux. depends_on('tbb', when='@4.5.3:+tbb') - patch('tbb_453.patch', when='@4.5.3') + patch('tbb_453.patch', when='@4.5.3:+tbb') def install(self, spec, prefix): # The build system of SuiteSparse is quite old-fashioned. @@ -60,9 +60,9 @@ def install(self, spec, prefix): # inject Spack compiler wrappers make_args.extend([ 'AUTOCC=no', - 'CC=cc', - 'CXX=c++', - 'F77=f77', + 'CC=%s' % self.compiler.cc, + 'CXX=%s' % self.compiler.cxx, + 'F77=%s' % self.compiler.f77, 'CUDA_ROOT =', 'GPU_BLAS_PATH =', 'GPU_CONFIG =', @@ -76,8 +76,14 @@ def install(self, spec, prefix): 'NVCC = echo', 'NVCCFLAGS =', ]) - if '+fpic' in spec: - make_args.extend(['CFLAGS=-fPIC', 'FFLAGS=-fPIC']) + if '+pic' in spec: + make_args.extend([ + 'CFLAGS={0}'.format(self.compiler.pic_flag), + 'FFLAGS={0}'.format(self.compiler.pic_flag) + ]) + + if '%xl' in spec or '%xl_r' in spec: + make_args.extend(['CFLAGS+=-DBLAS_NO_UNDERSCORE']) # use Spack's metis in CHOLMOD/Partition module, # otherwise internal Metis will be compiled From 37c36cf04ef91eb7ef7382a6b1feda48c00b721f Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Feb 2017 20:36:32 +0100 Subject: [PATCH 0215/2394] add package py-tqdm (#3262) * add package py-tqdm * added py-setuptools dependency --- .../repos/builtin/packages/py-tqdm/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-tqdm/package.py diff --git a/var/spack/repos/builtin/packages/py-tqdm/package.py b/var/spack/repos/builtin/packages/py-tqdm/package.py new file mode 100644 index 00000000000..ba49800adab --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tqdm/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyTqdm(PythonPackage): + """A Fast, Extensible Progress Meter""" + + homepage = "https://github.com/tqdm/tqdm" + url = "https://pypi.io/packages/source/t/tqdm/tqdm-4.8.4.tar.gz" + + version('4.8.4', 'b30a0aa20641d239296eab1c48a06b4e') + + depends_on('py-setuptools', type='build') From ecc8f578af5a976c0eb18b0dbf5bb59a07f2d602 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Tue, 28 Feb 2017 12:57:10 -0800 Subject: [PATCH 0216/2394] added urls for Intel Parallel Studio (#3220) --- .../packages/intel-parallel-studio/package.py | 74 +++++++++---------- 1 file changed, 36 insertions(+), 38 deletions(-) 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 dad1f6dc3a7..287f2bb76ef 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -39,21 +39,42 @@ class IntelParallelStudio(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" - version('professional.2017.1', '7f75a4a7e2c563be778c377f9d35a542') - version('cluster.2017.1', '7f75a4a7e2c563be778c377f9d35a542') - version('composer.2017.1', '1f31976931ed8ec424ac7c3ef56f5e85') - version('professional.2017.0', '34c98e3329d6ac57408b738ae1daaa01') - version('cluster.2017.0', '34c98e3329d6ac57408b738ae1daaa01') - version('composer.2016.3', '3208eeabee951fc27579177b593cefe9') - version('professional.2016.4', '16a641a06b156bb647c8a56e71f3bb33') - version('cluster.2016.4', '16a641a06b156bb647c8a56e71f3bb33') - version('professional.2016.3', 'eda19bb0d0d19709197ede58f13443f3') - version('cluster.2016.3', 'eda19bb0d0d19709197ede58f13443f3') - version('composer.2016.2', '1133fb831312eb519f7da897fec223fa') - version('professional.2016.2', '70be832f2d34c9bf596a5e99d5f2d832') - version('cluster.2016.2', '70be832f2d34c9bf596a5e99d5f2d832') - version('professional.2015.6', 'd460f362c30017b60f85da2e51ad25bf') - version('cluster.2015.6', 'd460f362c30017b60f85da2e51ad25bf') + version('professional.2017.1', '7f75a4a7e2c563be778c377f9d35a542', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/10973/parallel_studio_xe_2017_update1.tgz') + version('cluster.2017.1', '7f75a4a7e2c563be778c377f9d35a542', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/10973/parallel_studio_xe_2017_update1.tgz') + version('composer.2017.1', '1f31976931ed8ec424ac7c3ef56f5e85', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/10978/parallel_studio_xe_2017_update1_composer_edition.tgz') + version('professional.2017.0', '34c98e3329d6ac57408b738ae1daaa01', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9651/parallel_studio_xe_2017.tgz') + version('cluster.2017.0', '34c98e3329d6ac57408b738ae1daaa01', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9651/parallel_studio_xe_2017.tgz') + version('composer.2017.0', 'b67da0065a17a05f110ed1d15c3c6312', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9656/parallel_studio_xe_2017_composer_edition.tgz') + version('professional.2016.4', '16a641a06b156bb647c8a56e71f3bb33', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9781/parallel_studio_xe_2016_update4.tgz') + version('cluster.2016.4', '16a641a06b156bb647c8a56e71f3bb33', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9781/parallel_studio_xe_2016_update4.tgz') + version('composer.2016.4', '2bc9bfc9be9c1968a6e42efb4378f40e', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9785/parallel_studio_xe_2016_composer_edition_update4.tgz') + version('professional.2016.3', 'eda19bb0d0d19709197ede58f13443f3', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9061/parallel_studio_xe_2016_update3.tgz') + version('cluster.2016.3', 'eda19bb0d0d19709197ede58f13443f3', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9061/parallel_studio_xe_2016_update3.tgz') + version('composer.2016.3', '3208eeabee951fc27579177b593cefe9', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9063/parallel_studio_xe_2016_composer_edition_update3.tgz') + version('professional.2016.2', '70be832f2d34c9bf596a5e99d5f2d832', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8676/parallel_studio_xe_2016_update2.tgz') + version('cluster.2016.2', '70be832f2d34c9bf596a5e99d5f2d832', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8676/parallel_studio_xe_2016_update2.tgz') + version('composer.2016.2', '1133fb831312eb519f7da897fec223fa', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8680/parallel_studio_xe_2016_composer_edition_update2.tgz') + version('professional.2015.6', 'd460f362c30017b60f85da2e51ad25bf', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8469/parallel_studio_xe_2015_update6.tgz') + version('cluster.2015.6', 'd460f362c30017b60f85da2e51ad25bf', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8469/parallel_studio_xe_2015_update6.tgz') + version('composer.2015.6', 'da9f8600c18d43d58fba0488844f79c9', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8432/l_compxe_2015.6.233.tgz') variant('rpath', default=True, description="Add rpath to .cfg files") variant('newdtags', default=False, @@ -136,29 +157,6 @@ def scalapack_libs(self): ) return libs - def url_for_version(self, version): - """Assume the tarball is in the current directory.""" - - version_tuple = str(version).split('.') - year = int(version_tuple[1]) - - url = "file://{0}/parallel_studio_xe_{1}".format( - os.getcwd(), version_tuple[1]) - - update_string = "" - if version_tuple[2] != '0': - update_string = "_update{0}".format(version_tuple[2]) - - if version_tuple[0] == 'composer': - if year == 2016: - url += "_composer_edition{0}".format(update_string) - else: - url += "{0}_composer_edition".format(update_string) - else: - url += update_string - - return url + ".tgz" - def install(self, spec, prefix): base_components = "ALL" # when in doubt, install everything mpi_components = "" From 186d990791fbd984db9a5d1193caa75949c8af47 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 1 Mar 2017 07:49:57 -0600 Subject: [PATCH 0217/2394] pip requires setuptools during runtime (#3272) --- var/spack/repos/builtin/packages/py-pip/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index 7a41d6caa5c..234601a8ee8 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -34,4 +34,7 @@ class PyPip(PythonPackage): version('9.0.1', '35f01da33009719497f01a4ba69d63c9') depends_on('python@2.6:2.7,3.3:') - depends_on('py-setuptools', type='build') + + # Most Python packages only require setuptools as a build dependency. + # However, pip requires setuptools during runtime as well. + depends_on('py-setuptools', type=('build', 'run')) From 4e433f8a030a0a5d67df0d80f91eca11ef413e4f Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 1 Mar 2017 14:50:28 +0100 Subject: [PATCH 0218/2394] add package py-statsmodels and py-patsy (#3265) * add package py-statsmodels and py-patsy * fixed typo * fixed urls * removed rc version --- .../builtin/packages/py-patsy/package.py | 44 +++++++++++++++++ .../packages/py-statsmodels/package.py | 48 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-patsy/package.py create mode 100644 var/spack/repos/builtin/packages/py-statsmodels/package.py diff --git a/var/spack/repos/builtin/packages/py-patsy/package.py b/var/spack/repos/builtin/packages/py-patsy/package.py new file mode 100644 index 00000000000..fc92c62ccdd --- /dev/null +++ b/var/spack/repos/builtin/packages/py-patsy/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPatsy(PythonPackage): + """A Python package for describing statistical models and for + building design matrices.""" + + homepage = "https://github.com/pydata/patsy" + url = "https://pypi.io/packages/source/p/patsy/patsy-0.4.1.zip" + + version('0.4.1', '9445f29e3426d1ed30d683a1e1453f84') + + variant('splines', description="Offers spline related functions") + variant('tests', description="allows nose tests") + + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run'), when="+splines") + depends_on('py-nose', type=('build', 'run'), when="+tests") + depends_on('py-six', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-statsmodels/package.py b/var/spack/repos/builtin/packages/py-statsmodels/package.py new file mode 100644 index 00000000000..d9a1115dbe5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-statsmodels/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyStatsmodels(PythonPackage): + """Statistical computations and models for use with SciPy""" + + homepage = "http://www.statsmodels.org" + url = "https://pypi.io/packages/source/s/statsmodels/statsmodels-0.8.0.tar.gz" + + version('0.8.0', 'b3e5911cc9b00b71228d5d39a880bba0') + + variant('tests', default=False, description='With nose tests') + variant('plotting', default=False, description='With matplotlib') + + # according to http://www.statsmodels.org/dev/install.html earlier versions + # might work. + depends_on('py-setuptools@0.6c5:', type='build') + depends_on('py-numpy@1.7.0:', type=('build', 'run')) + depends_on('py-scipy@0.11:', type=('build', 'run')) + depends_on('py-pandas@0.12:', type=('build', 'run')) + depends_on('py-patsy@0.2.1:', type=('build', 'run')) + depends_on('py-cython@0.24:', type=('build', 'run')) + depends_on('py-nose', type='run', when='+tests') + depends_on('py-matplotlib@1.3:', type='run', when='+plotting') From d5884bdb78a14674dd295d273eeceeaf3475f0d7 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 1 Mar 2017 14:50:54 +0100 Subject: [PATCH 0219/2394] add package py-symfit (#3264) * add package py-symfit * added missing dependency * fixed ordering of versions --- .../repos/builtin/packages/py-pbr/package.py | 4 +- .../builtin/packages/py-symfit/package.py | 41 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/py-symfit/package.py diff --git a/var/spack/repos/builtin/packages/py-pbr/package.py b/var/spack/repos/builtin/packages/py-pbr/package.py index 2a320eb76d6..6bacda73f3f 100644 --- a/var/spack/repos/builtin/packages/py-pbr/package.py +++ b/var/spack/repos/builtin/packages/py-pbr/package.py @@ -29,8 +29,10 @@ class PyPbr(PythonPackage): """PBR is a library that injects some useful and sensible default behaviors into your setuptools run.""" homepage = "https://pypi.python.org/pypi/pbr" - url = "https://pypi.python.org/packages/source/p/pbr/pbr-1.8.1.tar.gz" + url = "https://pypi.io/packages/source/p/pbr/pbr-1.10.0.tar.gz" + version('1.10.0', '8e4968c587268f030e38329feb9c8f17') version('1.8.1', 'c8f9285e1a4ca6f9654c529b158baa3a') depends_on('py-setuptools', type='build') + depends_on('py-enum34', type='build', when='^python@:3.3') diff --git a/var/spack/repos/builtin/packages/py-symfit/package.py b/var/spack/repos/builtin/packages/py-symfit/package.py new file mode 100644 index 00000000000..9355288bcb8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-symfit/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySymfit(PythonPackage): + """Symbolic Fitting; fitting as it should be.""" + + homepage = "http://symfit.readthedocs.org" + url = "https://pypi.io/packages/source/s/symfit/symfit-0.3.5.tar.gz" + + version('0.3.5', '7f62552ffeba4b4d203c01ff52fe15d5') + + depends_on('py-setuptools@17.1:', type='build') + depends_on('py-pbr@1.9:', type='build') + depends_on('py-numpy', type='run') + depends_on('py-scipy', type='run') + depends_on('py-sympy', type='run') + depends_on('py-funcsigs', type='run', when='^python@:2.7.999') From 2fb179f55bdf449cada21b163ea8f74ae8705cb4 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 1 Mar 2017 14:51:05 +0100 Subject: [PATCH 0220/2394] add package py-xmlrunner and fix unittest2 dependency (#3260) * add package py-xmlrunner and fix unittest2 dependency * add setuptools dependency --- .../builtin/packages/py-unittest2/package.py | 1 + .../builtin/packages/py-xmlrunner/package.py | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-xmlrunner/package.py diff --git a/var/spack/repos/builtin/packages/py-unittest2/package.py b/var/spack/repos/builtin/packages/py-unittest2/package.py index d6a68c35359..f0c0208978f 100644 --- a/var/spack/repos/builtin/packages/py-unittest2/package.py +++ b/var/spack/repos/builtin/packages/py-unittest2/package.py @@ -35,3 +35,4 @@ class PyUnittest2(PythonPackage): version('1.1.0', 'f72dae5d44f091df36b6b513305ea000') depends_on('py-setuptools', type='build') + depends_on('py-enum34', when='^python@:3.3') diff --git a/var/spack/repos/builtin/packages/py-xmlrunner/package.py b/var/spack/repos/builtin/packages/py-xmlrunner/package.py new file mode 100644 index 00000000000..93af57fe201 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-xmlrunner/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyXmlrunner(PythonPackage): + """PyUnit-based test runner with JUnit like XML reporting.""" + + homepage = "https://github.com/pycontribs/xmlrunner" + url = "https://pypi.io/packages/source/x/xmlrunner/xmlrunner-1.7.7.tar.gz" + + version('1.7.7', '7b0b152ed2d278516aedbc0cac22dfb3') + + depends_on('py-setuptools', type='build') + depends_on('py-unittest2', type=('build', 'run'), when='^python@:2.7') From 6a1a2d5ec167a1b86163a344dab4c529620e021f Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 1 Mar 2017 14:51:17 +0100 Subject: [PATCH 0221/2394] add package units (#3257) * add package units * removed unnecessary dependency * readded python dependency --- .../repos/builtin/packages/units/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/units/package.py diff --git a/var/spack/repos/builtin/packages/units/package.py b/var/spack/repos/builtin/packages/units/package.py new file mode 100644 index 00000000000..2c62d48b942 --- /dev/null +++ b/var/spack/repos/builtin/packages/units/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Units(AutotoolsPackage): + """GNU units converts between different systems of units""" + + homepage = "https://www.gnu.org/software/units/" + url = "https://ftp.gnu.org/gnu/units/units-2.13.tar.gz" + + version('2.13', '5cbf2a6af76e94ba0ac55fc8d99d5a3e') + + depends_on('python', type=('build', 'run')) From 5fe96dec274cf7cb9fe9120dc69fcb5cf9011d7e Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 1 Mar 2017 14:51:36 +0100 Subject: [PATCH 0222/2394] add packages vcsh (#3256) * add packages vcsh * added git dependency * added comment regarding makefile --- .../repos/builtin/packages/vcsh/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vcsh/package.py diff --git a/var/spack/repos/builtin/packages/vcsh/package.py b/var/spack/repos/builtin/packages/vcsh/package.py new file mode 100644 index 00000000000..8b067582e6a --- /dev/null +++ b/var/spack/repos/builtin/packages/vcsh/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Vcsh(Package): + """config manager based on git""" + homepage = "https://github.com/RichiH/vcsh" + url = "https://github.com/RichiH/vcsh/archive/v1.20151229.tar.gz" + + version('1.20151229-1', '85c18fb15e5837d417b22980683e69ed') + version('1.20151229', '61edf032807bba98c41c62bb2bd3d497') + version('1.20150502', 'a6c75b5754e04bd74ae701967bb38e19') + version('1.20141026', 'e8f42a9dbb7460f641545bea5ca1cbc4') + version('1.20141025', '93c7fad67ab4300d76d753a32c300831') + + depends_on('git', type='run') + + # vcsh provides a makefile, if needed the install method should be adapted + def install(self, spec, prefix): + install('vcsh', prefix.bin) From 1ee470c37e04175ebffec8ad30414a15e482929f Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 1 Mar 2017 19:29:22 +0100 Subject: [PATCH 0223/2394] Add package: git-review (#3088) * Add git-review * Fix flake8 errors * use PythonPackage for git-review * added dependencies for git-review * fix flake8 * moved url's to pypi.io based urls * fixed flake8... again * mostly url fixes, not tested, will do tomorrow * flake8 fix * changed URL for py-pysocks * Fixed URL for pysocks * fixed url --- .../builtin/packages/py-click/package.py | 36 ++++++++++++++ .../builtin/packages/py-coverage/package.py | 3 +- .../builtin/packages/py-enum34/package.py | 8 ++- .../builtin/packages/py-flask/package.py | 40 +++++++++++++++ .../builtin/packages/py-git-review/package.py | 49 +++++++++++++++++++ .../builtin/packages/py-httpbin/package.py | 41 ++++++++++++++++ .../packages/py-itsdangerous/package.py | 36 ++++++++++++++ .../repos/builtin/packages/py-pbr/package.py | 2 + .../builtin/packages/py-pysocks/package.py | 37 ++++++++++++++ .../builtin/packages/py-pytest-cov/package.py | 40 +++++++++++++++ .../packages/py-pytest-httpbin/package.py | 42 ++++++++++++++++ .../packages/py-pytest-mock/package.py | 40 +++++++++++++++ .../builtin/packages/py-requests/package.py | 45 +++++++++++++++++ .../builtin/packages/py-werkzeug/package.py | 37 ++++++++++++++ .../builtin/packages/py-wheel/package.py | 2 +- 15 files changed, 451 insertions(+), 7 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-click/package.py create mode 100644 var/spack/repos/builtin/packages/py-flask/package.py create mode 100644 var/spack/repos/builtin/packages/py-git-review/package.py create mode 100644 var/spack/repos/builtin/packages/py-httpbin/package.py create mode 100644 var/spack/repos/builtin/packages/py-itsdangerous/package.py create mode 100644 var/spack/repos/builtin/packages/py-pysocks/package.py create mode 100644 var/spack/repos/builtin/packages/py-pytest-cov/package.py create mode 100644 var/spack/repos/builtin/packages/py-pytest-httpbin/package.py create mode 100644 var/spack/repos/builtin/packages/py-pytest-mock/package.py create mode 100644 var/spack/repos/builtin/packages/py-requests/package.py create mode 100644 var/spack/repos/builtin/packages/py-werkzeug/package.py diff --git a/var/spack/repos/builtin/packages/py-click/package.py b/var/spack/repos/builtin/packages/py-click/package.py new file mode 100644 index 00000000000..6645134f480 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-click/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyClick(PythonPackage): + """A simple wrapper around optparse for powerful command line utilities.""" + + homepage = "http://github.com/mitsuhiko/click" + url = "https://pypi.io/packages/source/c/click/click-6.6.tar.gz" + + version('6.6', 'd0b09582123605220ad6977175f3e51d') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-coverage/package.py b/var/spack/repos/builtin/packages/py-coverage/package.py index dc8fc08e24b..1dcaeec7d5f 100644 --- a/var/spack/repos/builtin/packages/py-coverage/package.py +++ b/var/spack/repos/builtin/packages/py-coverage/package.py @@ -29,8 +29,9 @@ class PyCoverage(PythonPackage): """ Testing coverage checker for python """ homepage = "http://nedbatchelder.com/code/coverage/" - url = "https://pypi.python.org/packages/source/c/coverage/coverage-4.0a6.tar.gz" + url = "https://pypi.io/packages/source/c/coverage/coverage-4.3.4.tar.gz" + version('4.3.4', 'd347766b06bbb4fd0bc822014b7cfb0a') version('4.0a6', '1bb4058062646148965bef0796b61efc') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-enum34/package.py b/var/spack/repos/builtin/packages/py-enum34/package.py index cc111ce0924..9c0bd646852 100644 --- a/var/spack/repos/builtin/packages/py-enum34/package.py +++ b/var/spack/repos/builtin/packages/py-enum34/package.py @@ -29,15 +29,13 @@ class PyEnum34(PythonPackage): """Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4.""" homepage = "https://pypi.python.org/pypi/enum34" - url = "https://pypi.python.org/packages/source/e/enum34/enum34-1.1.6.tar.gz" + url = "https://pypi.io/packages/source/e/enum34/enum34-1.1.6.tar.gz" - version('1.1.6', '5f13a0841a61f7fc295c514490d120d0', - url="https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz") + version('1.1.6', '5f13a0841a61f7fc295c514490d120d0') - depends_on('python@2.4:2.8,3.3:') + depends_on('python') # This dependency breaks concretization # See https://github.com/LLNL/spack/issues/2793 # depends_on('py-ordereddict', when='^python@:2.6.999', type=('build', 'run')) # noqa - depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-flask/package.py b/var/spack/repos/builtin/packages/py-flask/package.py new file mode 100644 index 00000000000..cd400f6339f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-flask/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyFlask(PythonPackage): + """A microframework based on Werkzeug, Jinja2 and good intentions""" + + homepage = "http://github.com/pallets/flask" + url = "https://pypi.io/packages/source/f/flask/flask-0.11.1.tar.gz" + + version('0.11.1', 'd2af95d8fe79cf7da099f062dd122a08') + + depends_on('py-setuptools', type='build') + depends_on('py-werkzeug@0.7:', type=('build', 'run')) + depends_on('py-jinja2@2.4:', type=('build', 'run')) + depends_on('py-itsdangerous@0.21:', type=('build', 'run')) + depends_on('py-click@2.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-git-review/package.py b/var/spack/repos/builtin/packages/py-git-review/package.py new file mode 100644 index 00000000000..6e6ebbbdafe --- /dev/null +++ b/var/spack/repos/builtin/packages/py-git-review/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyGitReview(PythonPackage): + """git-review is a tool that helps submitting git branches to gerrit""" + + homepage = "http://docs.openstack.org/infra/git-review" + url = "https://pypi.io/packages/source/g/git-review/git-review-1.25.0.tar.gz" + + version('1.25.0', '0a061d0e23ee9b93c6212a3fe68fb7ab') + version('1.24', '145116fe58a3487c3ad1bf55538fd741') + version('1.23', 'b0023ad8c037ab710da81412194c6a3a') + version('1.22', 'e889df5838c059362e5e0d411bde9c48') + version('1.21', 'eee88bdef1aa37a55cc8becd48c6aba9') + + extends('python') + + depends_on('py-setuptools', type=('build')) + depends_on('py-pbr', type=('build', 'run')) + depends_on('py-requests@1.1:', type=('build', 'run')) + depends_on('git', type=('run')) + depends_on('tk', type=('run')) + + def setup_environment(self, spack_env, run_env): + run_env.set('PBR_VERSION', self.spec.version) diff --git a/var/spack/repos/builtin/packages/py-httpbin/package.py b/var/spack/repos/builtin/packages/py-httpbin/package.py new file mode 100644 index 00000000000..70557ca8406 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-httpbin/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyHttpbin(PythonPackage): + """HTTP Request and Response Service""" + + homepage = "https://github.com/Runscope/httpbin" + url = "https://pypi.io/packages/source/h/httpbin/httpbin-0.5.0.tar.gz" + + version('0.5.0', '923793df99156caa484975ade96ee115') + + depends_on('py-setuptools', type='build') + depends_on('py-decorator@3.4.0:', type=('build', 'run')) + depends_on('py-flask@0.10.1:', type=('build', 'run')) + depends_on('py-itsdangerous@0.24:', type=('build', 'run')) + depends_on('py-markupsafe@0.23:', type=('build', 'run')) + depends_on('py-six@1.6.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-itsdangerous/package.py b/var/spack/repos/builtin/packages/py-itsdangerous/package.py new file mode 100644 index 00000000000..82e66c2eebc --- /dev/null +++ b/var/spack/repos/builtin/packages/py-itsdangerous/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyItsdangerous(PythonPackage): + """Various helpers to pass trusted data to untrusted environments.""" + + homepage = "http://github.com/mitsuhiko/itsdangerous" + url = "https://pypi.io/packages/source/i/itsdangerous/itsdangerous-0.24.tar.gz" + + version('0.24', 'a3d55aa79369aef5345c036a8a26307f') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pbr/package.py b/var/spack/repos/builtin/packages/py-pbr/package.py index 6bacda73f3f..7036ffee8a8 100644 --- a/var/spack/repos/builtin/packages/py-pbr/package.py +++ b/var/spack/repos/builtin/packages/py-pbr/package.py @@ -35,4 +35,6 @@ class PyPbr(PythonPackage): version('1.8.1', 'c8f9285e1a4ca6f9654c529b158baa3a') depends_on('py-setuptools', type='build') + # Only needed for py<3.4, however when='^python@:3.4.2' syntax might be + # broken, if this fails, remove the when-clause depends_on('py-enum34', type='build', when='^python@:3.3') diff --git a/var/spack/repos/builtin/packages/py-pysocks/package.py b/var/spack/repos/builtin/packages/py-pysocks/package.py new file mode 100644 index 00000000000..27f219c64c0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pysocks/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPysocks(PythonPackage): + """A Python SOCKS client module.""" + + homepage = "https://github.com/Anorov/PySocks" + url = "https://pypi.io/packages/source/P/PySocks/PySocks-1.6.6.tar.gz" + + version('1.6.6', '571f4c23982fa86bf0e7a441f1b6c881') + version('1.5.7', '68f4ad7a8d4fa725656ae3e9dd142d29') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pytest-cov/package.py b/var/spack/repos/builtin/packages/py-pytest-cov/package.py new file mode 100644 index 00000000000..f40fc7872ed --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pytest-cov/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPytestCov(PythonPackage): + """Pytest plugin for measuring coverage.""" + + homepage = "https://github.com/pytest-dev/pytest-cov" + url = "https://pypi.io/packages/source/p/pytest-cov/pytest-cov-2.3.1.tar.gz" + + version('2.3.1', '8e7475454313a035d08f387ee6d725cb') + + extends('python', ignore=r'bin/*') + + depends_on('py-setuptools', type='build') + depends_on('py-pytest@2.6.0:', type=('build', 'run')) + depends_on('py-coverage@3.7.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py b/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py new file mode 100644 index 00000000000..2eb498987df --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPytestHttpbin(PythonPackage): + """Easily test your HTTP library against a local copy of httpbin""" + + homepage = "https://github.com/kevin1024/pytest-httpbin" + url = "https://pypi.io/packages/source/p/pytest-httpbin/pytest-httpbin-0.2.3.tar.gz" + + version('0.2.3', 'b8ebb8e2fbac1a445fb5d044f7fec556') + + extends('python', ignore=r'bin/flask') + + depends_on('py-setuptools', type='build') + depends_on('py-flask', type=('build', 'run')) + depends_on('py-decorator', type=('build', 'run')) + depends_on('py-httpbin', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pytest-mock/package.py b/var/spack/repos/builtin/packages/py-pytest-mock/package.py new file mode 100644 index 00000000000..354b799e923 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pytest-mock/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPytestMock(PythonPackage): + """Thin-wrapper around the mock package for easier use with py.test""" + + homepage = "https://github.com/pytest-dev/pytest-mock" + url = "https://pypi.io/packages/source/p/pytest-mock/pytest-mock-1.2.zip" + + version('1.2', 'a7fa820f7bc71698660945836ff93c73') + + extends('python', ignore=r'bin/*') + + depends_on('py-setuptools', type='build') + depends_on('py-pytest@2.7:', type=('build', 'run')) + depends_on('py-mock', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-requests/package.py b/var/spack/repos/builtin/packages/py-requests/package.py new file mode 100644 index 00000000000..ca8c74d13a1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-requests/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyRequests(PythonPackage): + """Python HTTP for Humans.""" + + homepage = "http://python-requests.org" + url = "https://pypi.io/packages/source/r/requests/requests-2.13.0.tar.gz" + + version('2.13.0', '921ec6b48f2ddafc8bb6160957baf444') + version('2.11.1', 'ad5f9c47b5c5dfdb28363ad7546b0763') + + depends_on('py-setuptools', type='build') + # from setup.py: + # test_requirements = ['pytest>=2.8.0', 'pytest-httpbin'==0.0.7, + # 'pytest-cov', 'pytest-mock'] + # needs #1279 and #2869 + # depends_on('py-pytest@2.8.7:', type=('build', 'run')) + # depends_on('py-pytest-cov@2.2.1:', type=('build', 'run')) + # depends_on('py-pytest-httpbin@0.2.0:', type=('build', 'run')) + # depends_on('py-pytest-mock@0.11.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-werkzeug/package.py b/var/spack/repos/builtin/packages/py-werkzeug/package.py new file mode 100644 index 00000000000..f563b9ce193 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-werkzeug/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyWerkzeug(PythonPackage): + """The Swiss Army knife of Python web development""" + + homepage = "http://werkzeug.pocoo.org" + url = "https://pypi.io/packages/source/W/Werkzeug/Werkzeug-0.11.11.tar.gz" + + version('0.11.15', 'cb4010478dd33905f95920e4880204a2') + version('0.11.11', '1d34afa1f19abcef4c0da51ebc2c4ea7') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py index c95a83a965b..b199f990c76 100644 --- a/var/spack/repos/builtin/packages/py-wheel/package.py +++ b/var/spack/repos/builtin/packages/py-wheel/package.py @@ -29,7 +29,7 @@ class PyWheel(PythonPackage): """A built-package format for Python.""" homepage = "https://pypi.python.org/pypi/wheel" - url = "https://pypi.python.org/packages/source/w/wheel/wheel-0.26.0.tar.gz" + url = "https://pypi.io/packages/source/w/wheel/wheel-0.29.0.tar.gz" version('0.29.0', '555a67e4507cedee23a0deb9651e452f') version('0.26.0', '4cfc6e7e3dc7377d0164914623922a10') From fa294a25dbc085179eb3a42ad011e00b40e04942 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 1 Mar 2017 20:37:47 +0100 Subject: [PATCH 0224/2394] add version 2.2.0 to package bear (#3278) --- var/spack/repos/builtin/packages/bear/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/bear/package.py b/var/spack/repos/builtin/packages/bear/package.py index f52050d7b9d..8c8eb87fb38 100644 --- a/var/spack/repos/builtin/packages/bear/package.py +++ b/var/spack/repos/builtin/packages/bear/package.py @@ -31,6 +31,7 @@ class Bear(Package): homepage = "https://github.com/rizsotto/Bear" url = "https://github.com/rizsotto/Bear/archive/2.0.4.tar.gz" + version('2.2.0', '87250cc3a9a697e7d1e8972253a35259') version('2.0.4', 'fd8afb5e8e18f8737ba06f90bd77d011') depends_on('cmake', type='build') From 4e601bb6d3c4c4376293c06c6bc29b759eadf651 Mon Sep 17 00:00:00 2001 From: eklee15 Date: Wed, 1 Mar 2017 15:46:58 -0500 Subject: [PATCH 0225/2394] Exclude a few packages to build with xl (#3270) --- var/spack/repos/builtin/packages/trilinos/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 9add3b238cc..d3c8c3a0d06 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -373,6 +373,14 @@ def cmake_args(self): '-DTrilinos_ENABLE_Pike=OFF', '-DTrilinos_ENABLE_STK=OFF' ]) + + # disable due to compiler / config errors: + if spec.satisfies('%xl') or spec.satisfies('%xl_r'): + options.extend([ + '-DTrilinos_ENABLE_Pamgen:BOOL=OFF', + '-DTrilinos_ENABLE_Stokhos:BOOL=OFF' + ]) + if sys.platform == 'darwin': options.extend([ '-DTrilinos_ENABLE_FEI=OFF' From 8b52a87285025387635e146345bfd04cb9e8fc5c Mon Sep 17 00:00:00 2001 From: eklee15 Date: Wed, 1 Mar 2017 16:33:41 -0500 Subject: [PATCH 0226/2394] Add xl and spectrum mpi support for mumps (#3231) * Add xl and spectrum mpi support for mumps * Incorporated Denis's comments. fPIC and if-else --- .../repos/builtin/packages/mumps/package.py | 59 +++++++++++---- .../packages/mumps/spectrum-mpi-xl.patch | 75 +++++++++++++++++++ 2 files changed, 118 insertions(+), 16 deletions(-) create mode 100644 var/spack/repos/builtin/packages/mumps/spectrum-mpi-xl.patch diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index 1d87d6f35a3..9fd5b5f36b9 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -68,6 +68,9 @@ class Mumps(Package): depends_on('scalapack', when='+mpi') depends_on('mpi', when='+mpi') + patch('spectrum-mpi-xl.patch', when='%xl^spectrum-mpi') + patch('spectrum-mpi-xl.patch', when='%xl_r^spectrum-mpi') + # this function is not a patch function because in case scalapack # is needed it uses self.spec['scalapack'].fc_link set by the # setup_dependent_environment in scalapck. This happen after patch @@ -122,31 +125,49 @@ def write_makefile_inc(self): # when building shared libs need -fPIC, otherwise # /usr/bin/ld: graph.o: relocation R_X86_64_32 against `.rodata.str1.1' # can not be used when making a shared object; recompile with -fPIC - fpic = '-fPIC' if '+shared' in self.spec else '' + fpic = self.compiler.pic_flag if '+shared' in self.spec else '' # TODO: test this part, it needs a full blas, scalapack and # partitionning environment with 64bit integers + if '+int64' in self.spec: - makefile_conf.extend( - # the fortran compilation flags most probably are - # working only for intel and gnu compilers this is - # perhaps something the compiler should provide - ['OPTF = %s -O -DALLOW_NON_INIT %s' % (fpic, '-fdefault-integer-8' if self.compiler.name == "gcc" else '-i8'), # noqa - 'OPTL = %s -O ' % fpic, - 'OPTC = %s -O -DINTSIZE64' % fpic]) + if self.compiler.name == "xl" or self.compiler.name == "xl_r": + makefile_conf.extend( + ['OPTF = -O3', + 'OPTL = %s -O3' % fpic, + 'OPTC = %s -O3-DINTSIZE64' % fpic]) + else: + makefile_conf.extend( + # the fortran compilation flags most probably are + # working only for intel and gnu compilers this is + # perhaps something the compiler should provide + ['OPTF = %s -O -DALLOW_NON_INIT %s' % (fpic, '-fdefault-integer-8' if self.compiler.name == "gcc" else '-i8'), # noqa + 'OPTL = %s -O ' % fpic, + 'OPTC = %s -O -DINTSIZE64' % fpic]) else: - makefile_conf.extend( - ['OPTF = %s -O -DALLOW_NON_INIT' % fpic, - 'OPTL = %s -O ' % fpic, - 'OPTC = %s -O ' % fpic]) + if self.compiler.name == "xl" or self.compiler.name == "xl_r": + makefile_conf.extend( + ['OPTF = -O3', + 'OPTL = %s -O3' % fpic, + 'OPTC = %s -O3' % fpic]) + else: + makefile_conf.extend( + ['OPTF = %s -O -DALLOW_NON_INIT' % fpic, + 'OPTL = %s -O ' % fpic, + 'OPTC = %s -O ' % fpic]) if '+mpi' in self.spec: scalapack = self.spec['scalapack'].scalapack_libs makefile_conf.extend( - ["CC = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpicc'), - "FC = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpif90'), - "FL = %s" % join_path(self.spec['mpi'].prefix.bin, 'mpif90'), + ['CC = {0}'.format(self.spec['mpi'].mpicc), + 'FC = {0}'.format(self.spec['mpi'].mpifc), "SCALAP = %s" % scalapack.ld_flags, "MUMPS_TYPE = par"]) + if (self.spec.satisfies('%xl_r' or '%xl')) and self.spec.satisfies('^spectrum-mpi'): # noqa + makefile_conf.extend( + ['FL = {0}'.format(self.spec['mpi'].mpicc)]) + else: + makefile_conf.extend( + ['FL = {0}'.format(self.spec['mpi'].mpifc)]) else: makefile_conf.extend( ["CC = cc", @@ -162,7 +183,8 @@ def write_makefile_inc(self): # hack defined by _DMAIN_COMP (see examples/c_example.c) makefile_conf.append("CDEFS = -DAdd_ -DMAIN_COMP") else: - makefile_conf.append("CDEFS = -DAdd_") + if self.compiler.name != "xl" and self.compiler.name != "xl_r": + makefile_conf.append("CDEFS = -DAdd_") if '+shared' in self.spec: if sys.platform == 'darwin': @@ -179,6 +201,11 @@ def write_makefile_inc(self): 'AR=$(FL) -shared -Wl,-soname -Wl,%s/$(notdir $@) -o' % prefix.lib, # noqa 'RANLIB=echo' ]) + + if self.compiler.name == 'xl' or self.compiler.name == 'xl_r': + makefile_conf.extend([ + 'SAR=/bin/xlc -shared -Wl,-soname -Wl,%s/$(notdir $@) -o' % prefix.lib # noqa + ]) else: makefile_conf.extend([ 'LIBEXT = .a', diff --git a/var/spack/repos/builtin/packages/mumps/spectrum-mpi-xl.patch b/var/spack/repos/builtin/packages/mumps/spectrum-mpi-xl.patch new file mode 100644 index 00000000000..d2bd17cb445 --- /dev/null +++ b/var/spack/repos/builtin/packages/mumps/spectrum-mpi-xl.patch @@ -0,0 +1,75 @@ +diff -Naur MUMPS_5.0.1/Makefile MUMPS_5.0.1-patched/MUMPS_5.0.1/Makefile +--- ./Makefile 2015-07-23 13:08:29.000000000 -0400 ++++ ./Makefile 2016-12-05 14:08:30.788638382 -0500 +@@ -62,7 +62,7 @@ + $(libdir)/libpord$(PLAT)$(LIBEXT): + if [ "$(LPORDDIR)" != "" ] ; then \ + cd $(LPORDDIR); \ +- $(MAKE) CC="$(CC)" CFLAGS="$(OPTC)" AR="$(AR)" RANLIB="$(RANLIB)" OUTC="$(OUTC)" LIBEXT=$(LIBEXT); \ ++ $(MAKE) CC="$(CC)" CFLAGS="$(OPTC)" SAR="$(SAR)" RANLIB="$(RANLIB)" OUTC="$(OUTC)" LIBEXT=$(LIBEXT); \ + fi; + if [ "$(LPORDDIR)" != "" ] ; then \ + cp $(LPORDDIR)/libpord$(LIBEXT) $@; \ +diff -Naur MUMPS_5.0.1/PORD/lib/Makefile MUMPS_5.0.1-patched/PORD/lib/MUMPS_5.0.1/Makefile +--- ./PORD/lib/Makefile 2015-07-23 13:08:29.000000000 -0400 ++++ ./PORD/lib/Makefile 2016-12-05 11:26:24.785317467 -0500 +@@ -25,7 +25,7 @@ + $(CC) $(COPTIONS) -c $*.c $(OUTC)$*.o + + libpord$(LIBEXT):$(OBJS) +- $(AR)$@ $(OBJS) ++ $(SAR)$@ $(OBJS) + $(RANLIB) $@ + + clean: +diff -Naur MUMPS_5.0.1/examples/Makefile MUMPS_5.0.1-patched/examples/Makefile +--- ./examples/Makefile 2015-07-23 13:08:32.000000000 -0400 ++++ ./examples/Makefile 2016-12-05 14:36:10.692857906 -0500 +@@ -25,37 +25,30 @@ + + LIBSMUMPS = $(libdir)/libsmumps$(PLAT)$(LIBEXT) $(LIBMUMPS_COMMON) + +-ssimpletest: $(LIBSMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) ssimpletest.o $(LIBSMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) ++ssimpletest: $(LIBSMUMPS) $$@.F ++ $(FC) -o $@ $(OPTF) $(INCS) -I. -I$(topdir)/include ssimpletest.F $(LIBSMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + + LIBDMUMPS = $(libdir)/libdmumps$(PLAT)$(LIBEXT) $(LIBMUMPS_COMMON) + +-dsimpletest: $(LIBDMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) dsimpletest.o $(LIBDMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) ++dsimpletest: $(LIBDMUMPS) $$@.F ++ $(FC) -o $@ $(OPTF) $(INCS) -I. -I$(topdir)/include dsimpletest.F $(LIBDMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + + LIBCMUMPS = $(libdir)/libcmumps$(PLAT)$(LIBEXT) $(LIBMUMPS_COMMON) + +-csimpletest: $(LIBCMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) csimpletest.o $(LIBCMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) ++csimpletest: $(LIBCMUMPS) $$@.F ++ $(FC) -o $@ $(OPTF) $(INCS) -I. -I$(topdir)/include csimpletest.F $(LIBCMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + + LIBZMUMPS = $(libdir)/libzmumps$(PLAT)$(LIBEXT) $(LIBMUMPS_COMMON) + +-zsimpletest: $(LIBZMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) zsimpletest.o $(LIBZMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) ++zsimpletest: $(LIBZMUMPS) $$@.F ++ $(FC) -o $@ $(OPTF) $(INCS) -I. -I$(topdir)/include zsimpletest.F $(LIBZMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + +-c_example: $(LIBDMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) $@.o $(LIBDMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) +- +- +-.SUFFIXES: .c .F .o +-.F.o: +- $(FC) $(OPTF) $(INCS) -I. -I$(topdir)/include -c $*.F $(OUTF)$*.o +-.c.o: +- $(CC) $(OPTC) $(INCS) $(CDEFS) -I. -I$(topdir)/include -I$(topdir)/src -c $*.c $(OUTC)$*.o ++c_example: $(LIBDMUMPS) $$@.c ++ $(CC) -o $@ $(OPTC) $(INCS) -I. -I$(topdir)/include c_example.c $(LIBDMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + + $(libdir)/libsmumps$(PLAT)$(LIBEXT): From 20360f67275d780117a47da9c026408d83fdfbfd Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 1 Mar 2017 22:34:04 +0100 Subject: [PATCH 0227/2394] add package py-current (#3282) --- .../builtin/packages/py-current/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-current/package.py diff --git a/var/spack/repos/builtin/packages/py-current/package.py b/var/spack/repos/builtin/packages/py-current/package.py new file mode 100644 index 00000000000..8f28c320172 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-current/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyCurrent(PythonPackage): + """Current module relative paths and imports""" + + homepage = "http://github.com/xflr6/current" + url = "https://pypi.io/packages/source/c/current/current-0.3.1.zip" + + version('0.3.1', '6378769c64d76831e72a6930b47ced27') + + depends_on('py-setuptools', type='build') From ffce6e1c4e8ab98c6d90dd2187a63387d13c098e Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 1 Mar 2017 23:36:46 +0100 Subject: [PATCH 0228/2394] add variant shared to yaml-cpp (#3254) --- var/spack/repos/builtin/packages/yaml-cpp/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py index 0ced7c89fc6..e600d470a95 100644 --- a/var/spack/repos/builtin/packages/yaml-cpp/package.py +++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py @@ -33,6 +33,8 @@ class YamlCpp(CMakePackage): version('0.5.3', '4e47733d98266e46a1a73ae0a72954eb') + variant('shared', default=True, + description='Enable build of shared libraries') variant('fpic', default=False, description='Build with position independent code') @@ -46,5 +48,9 @@ def cmake_args(self): options.extend([ '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true' ]) + if '+shared' in spec: + options.append('-DBUILD_SHARED_LIBS=ON') + else: + options.append('-DBUILD_SHARED_LIBS=OFF') return options From 8f915de610544bbbf06cb17a7de8b2241195b471 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 2 Mar 2017 05:52:53 -0700 Subject: [PATCH 0229/2394] Updating SAMRAI package with new urls and new versions (#3188) * Updating SAMRAI package file with new urls and new versions. Also using Spack's MPI compilers. * Using default optimization for Samrai and setting type to build for m4 dependency. * Adding debug variant to Samrai. * Converting Samrai to AutotoolsPackage. --- .../repos/builtin/packages/samrai/package.py | 64 ++++++++++++------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/var/spack/repos/builtin/packages/samrai/package.py b/var/spack/repos/builtin/packages/samrai/package.py index e0648290d60..c9bb34d5475 100644 --- a/var/spack/repos/builtin/packages/samrai/package.py +++ b/var/spack/repos/builtin/packages/samrai/package.py @@ -25,7 +25,7 @@ from spack import * -class Samrai(Package): +class Samrai(AutotoolsPackage): """SAMRAI (Structured Adaptive Mesh Refinement Application Infrastructure) is an object-oriented C++ software library enables exploration of numerical, algorithmic, parallel computing, and software issues @@ -33,10 +33,12 @@ class Samrai(Package): (SAMR) technology in large-scale parallel application development. """ - homepage = "https://computation.llnl.gov/project/SAMRAI/" - url = "https://computation.llnl.gov/project/SAMRAI/download/SAMRAI-v3.9.1.tar.gz" + homepage = "https://computation.llnl.gov/projects/samrai" + url = "https://computation.llnl.gov/projects/samrai/download/SAMRAI-v3.11.2.tar.gz" list_url = homepage + version('3.11.2', 'd5f59f8efd755b23b797e46349428206') + version('3.10.0', 'ff5f5b8b4a35b52a1b7e37a74166c65a') version('3.9.1', '232d04d0c995f5abf20d94350befd0b2') version('3.8.0', 'c18fcffa706346bfa5828b36787ce5fe') version('3.7.3', '12d574eacadf8c9a70f1bb4cd1a69df6') @@ -49,29 +51,43 @@ class Samrai(Package): version('3.3.2-beta', 'e598a085dab979498fcb6c110c4dd26c') version('2.4.4', '04fb048ed0efe7c531ac10c81cc5f6ac') - depends_on("mpi") - depends_on("zlib") - depends_on("hdf5+mpi") - depends_on("boost") + # Debug mode reduces optimization, includes assertions, debug symbols + # and more print statements + variant('debug', default=False, + description='Compile with reduced optimization and debugging on') + + depends_on('mpi') + depends_on('zlib') + depends_on('hdf5+mpi') + depends_on('boost') + depends_on('m4', type='build') # don't build tools with gcc patch('no-tool-build.patch', when='%gcc') - # TODO: currently hard-coded to use openmpi - be careful! - def install(self, spec, prefix): - configure( - "--prefix=%s" % prefix, - "--with-CXX=%s" % spec['mpi'].prefix.bin + "/mpic++", - "--with-CC=%s" % spec['mpi'].prefix.bin + "/mpicc", - "--with-hdf5=%s" % spec['hdf5'].prefix, - "--with-boost=%s" % spec['boost'].prefix, - "--with-zlib=%s" % spec['zlib'].prefix, - "--without-blas", - "--without-lapack", - "--with-hypre=no", - "--with-petsc=no", - "--enable-opt", - "--disable-debug") + def configure_args(self): + options = [] - make() - make("install") + options.extend([ + '--with-CXX=%s' % self.spec['mpi'].mpicxx, + '--with-CC=%s' % self.spec['mpi'].mpicc, + '--with-F77=%s' % self.spec['mpi'].mpifc, + '--with-M4=%s' % self.spec['m4'].prefix, + '--with-hdf5=%s' % self.spec['hdf5'].prefix, + '--with-boost=%s' % self.spec['boost'].prefix, + '--with-zlib=%s' % self.spec['zlib'].prefix, + '--without-blas', + '--without-lapack', + '--with-hypre=no', + '--with-petsc=no']) + + if '+debug' in spec: + options.extend([ + '--disable-opt', + '--enable-debug']) + else: + options.extend([ + '--enable-opt', + '--disable-debug']) + + return options From 88f97c07dea843f2a2c1d87347edccb69c093903 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 2 Mar 2017 15:16:58 +0100 Subject: [PATCH 0230/2394] fix build of 64bit PETSc and Trilinos in the same deal.II DAG (#3223) Declare that (i) Trilinos can be only built against 32bit Hypre (ii) SLEPc can not be built with Arpack when 64bit indices are used (iii) reflect those constraints in deal.II's depends_on While there, add extra release flags for best performance. --- .../repos/builtin/packages/dealii/package.py | 42 ++++++++++++++++--- .../repos/builtin/packages/slepc/package.py | 7 +++- .../builtin/packages/trilinos/package.py | 3 +- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 1fab8913d4d..22fb168e65a 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -68,6 +68,8 @@ class Dealii(CMakePackage): description='Compile with Python bindings') variant('int64', default=False, description='Compile with 64 bit indices support') + variant('optflags', default=False, + description='Compile using additional optimization flags') # required dependencies, light version depends_on("blas") @@ -75,6 +77,11 @@ class Dealii(CMakePackage): # https://github.com/dealii/dealii/issues/1591 # Require at least 1.59 # +python won't affect @:8.4.2 + # FIXME: once concretizer can unite unconditional and + # conditional dependencies, simplify to: + # depends_on("boost@1.59.0+thread+system+serialization+iostreams") + # depends_on("boost+mpi", when='+mpi') + # depends_on("boost+python", when='+python') depends_on("boost@1.59.0:+thread+system+serialization+iostreams", when='@:8.4.2~mpi') depends_on("boost@1.59.0:+thread+system+serialization+iostreams+mpi", @@ -103,17 +110,23 @@ class Dealii(CMakePackage): depends_on("graphviz", when='+doc') depends_on("gsl", when='@8.5.0:+gsl') depends_on("hdf5+mpi", when='+hdf5+mpi') - depends_on("metis@5:", when='+metis') + # FIXME: concretizer bug. The two lines mimic what comes from PETSc + # but we should not need it + depends_on("metis@5:+int64", when='+metis+int64') + depends_on("metis@5:~int64", when='+metis~int64') depends_on("netcdf+mpi", when="+netcdf+mpi") depends_on("netcdf-cxx", when='+netcdf+mpi') depends_on("oce", when='+oce') depends_on("p4est", when='+p4est+mpi') - depends_on("petsc+mpi", when='@8.4.2:+petsc+mpi~int64') + depends_on("petsc+mpi~int64", when='+petsc+mpi~int64') + depends_on("petsc+mpi+int64", when='+petsc+mpi+int64') + depends_on("petsc@:3.6.4", when='@:8.4.1+petsc+mpi') depends_on('python', when='@8.5.0:+python') - depends_on("slepc", when='@8.4.2:+slepc+petsc+mpi~int64') - depends_on("petsc@:3.6.4+mpi", when='@:8.4.1+petsc+mpi~int64') - depends_on("slepc@:3.6.3", when='@:8.4.1+slepc+petsc+mpi~int64') - depends_on("trilinos", when='+trilinos+mpi') + depends_on("slepc", when='+slepc+petsc+mpi') + depends_on("slepc@:3.6.3", when='@:8.4.1+slepc+petsc+mpi') + depends_on("slepc~arpack", when='+slepc+petsc+mpi+int64') + depends_on("trilinos", when='+trilinos+mpi~int64') + depends_on("trilinos~hypre", when="+trilinos+mpi+int64") # check that the combination of variants makes sense def variants_check(self): @@ -130,6 +143,7 @@ def cmake_args(self): self.variants_check() spec = self.spec options = [] + cxx_flags = [] lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs options.extend([ @@ -150,6 +164,16 @@ def cmake_args(self): '-DZLIB_DIR=%s' % spec['zlib'].prefix ]) + # Set recommended flags for maximum (matrix-free) performance, see + # https://groups.google.com/forum/?fromgroups#!topic/dealii/3Yjy8CBIrgU + if spec.satisfies('%gcc'): + cxx_flags.extend(['-O3', '-march=native']) + elif spec.satisfies('%intel'): + cxx_flags.extend(['-O3', '-march=native']) + elif spec.satisfies('%clang'): + cxx_flags.extend(['-O3', '-march=native', '-ffp-contract=fast']) + + # Python bindings if spec.satisfies('@8.5.0:'): options.extend([ '-DDEAL_II_COMPONENT_PYTHON_BINDINGS=%s' % @@ -255,6 +279,12 @@ def cmake_args(self): '-DDEAL_II_WITH_64BIT_INDICES=%s' % ('+int64' in spec) ]) + # collect CXX flags: + if len(cxx_flags) > 0 and '+optflags' in spec: + options.extend([ + '-DCMAKE_CXX_FLAGS_RELEASE:STRING=%s' % (' '.join(cxx_flags)) + ]) + return options def setup_environment(self, spack_env, env): diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 17c512119cd..9400023327d 100644 --- a/var/spack/repos/builtin/packages/slepc/package.py +++ b/var/spack/repos/builtin/packages/slepc/package.py @@ -45,12 +45,15 @@ class Slepc(Package): depends_on('python@2.6:2.7', type='build') depends_on('petsc@3.7:', when='@3.7.1:') depends_on('petsc@3.6.3:3.6.4', when='@3.6.2:3.6.3') - depends_on('arpack-ng~mpi', when='+arpack^petsc~mpi') - depends_on('arpack-ng+mpi', when='+arpack^petsc+mpi') + depends_on('arpack-ng~mpi', when='+arpack^petsc~mpi~int64') + depends_on('arpack-ng+mpi', when='+arpack^petsc+mpi~int64') patch('install_name_371.patch', when='@3.7.1') def install(self, spec, prefix): + if spec.satisfies('+arpack^petsc+int64'): + raise RuntimeError('Arpack can not be used with 64bit integers.') + # set SLEPC_DIR for installation # Note that one should set the current (temporary) directory instead # its symlink in spack/stage/ ! diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index d3c8c3a0d06..a4d97a6bc7d 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -116,7 +116,8 @@ def url_for_version(self, version): depends_on('superlu-dist@:4.3', when='@:12.6.1+superlu-dist') depends_on('superlu-dist', when='@12.6.2:+superlu-dist') depends_on('superlu+fpic@4.3', when='+superlu') - depends_on('hypre~internal-superlu', when='+hypre') + # Trilinos can not be built against 64bit int hypre + depends_on('hypre~internal-superlu~int64', when='+hypre') depends_on('hdf5+mpi', when='+hdf5') depends_on('python', when='+python') depends_on('py-numpy', when='+python') From 5ce926d2d16d7ecd5aae72f586caba74cf07862d Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 2 Mar 2017 18:29:23 +0100 Subject: [PATCH 0231/2394] test/packages: fixed test suite (#3236) It seems the tests in `packages.py` were running just because we had a specific order of execution. This should fix the problem, and make the test_suite more resilient to running order. --- lib/spack/spack/test/packages.py | 171 +++++++++++++++---------------- 1 file changed, 82 insertions(+), 89 deletions(-) diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py index bc1f438e448..8ae2effc381 100644 --- a/lib/spack/spack/test/packages.py +++ b/lib/spack/spack/test/packages.py @@ -23,115 +23,108 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import spack +import pytest + from llnl.util.filesystem import join_path from spack.repository import Repo from spack.util.naming import mod_to_class from spack.spec import * -def test_load_package(builtin_mock): - spack.repo.get('mpich') +@pytest.mark.usefixtures('config', 'builtin_mock') +class TestPackage(object): + def test_load_package(self): + spack.repo.get('mpich') + def test_package_name(self): + pkg = spack.repo.get('mpich') + assert pkg.name == 'mpich' -def test_package_name(builtin_mock): - pkg = spack.repo.get('mpich') - assert pkg.name == 'mpich' + def test_package_filename(self): + repo = Repo(spack.mock_packages_path) + filename = repo.filename_for_package_name('mpich') + assert filename == join_path( + spack.mock_packages_path, + 'packages', + 'mpich', + 'package.py' + ) + def test_nonexisting_package_filename(self): + repo = Repo(spack.mock_packages_path) + filename = repo.filename_for_package_name('some-nonexisting-package') + assert filename == join_path( + spack.mock_packages_path, + 'packages', + 'some-nonexisting-package', + 'package.py' + ) -def test_package_filename(builtin_mock): - repo = Repo(spack.mock_packages_path) - filename = repo.filename_for_package_name('mpich') - assert filename == join_path( - spack.mock_packages_path, - 'packages', - 'mpich', - 'package.py' - ) + def test_package_class_names(self): + assert 'Mpich' == mod_to_class('mpich') + assert 'PmgrCollective' == mod_to_class('pmgr_collective') + assert 'PmgrCollective' == mod_to_class('pmgr-collective') + assert 'Pmgrcollective' == mod_to_class('PmgrCollective') + assert '_3db' == mod_to_class('3db') + # Below tests target direct imports of spack packages from the + # spack.pkg namespace + def test_import_package(self): + import spack.pkg.builtin.mock.mpich # noqa -def test_nonexisting_package_filename(): - repo = Repo(spack.mock_packages_path) - filename = repo.filename_for_package_name('some-nonexisting-package') - assert filename == join_path( - spack.mock_packages_path, - 'packages', - 'some-nonexisting-package', - 'package.py' - ) + def test_import_package_as(self): + import spack.pkg.builtin.mock.mpich as mp # noqa + import spack.pkg.builtin.mock # noqa + import spack.pkg.builtin.mock as m # noqa + from spack.pkg.builtin import mock # noqa -def test_package_class_names(): - assert 'Mpich' == mod_to_class('mpich') - assert 'PmgrCollective' == mod_to_class('pmgr_collective') - assert 'PmgrCollective' == mod_to_class('pmgr-collective') - assert 'Pmgrcollective' == mod_to_class('PmgrCollective') - assert '_3db' == mod_to_class('3db') + def test_inheritance_of_diretives(self): + p = spack.repo.get('simple-inheritance') + # Check dictionaries that should have been filled by directives + assert len(p.dependencies) == 3 + assert 'cmake' in p.dependencies + assert 'openblas' in p.dependencies + assert 'mpi' in p.dependencies + assert len(p.provided) == 2 -# Below tests target direct imports of spack packages from the -# spack.pkg namespace -def test_import_package(builtin_mock): - import spack.pkg.builtin.mock.mpich # noqa + # Check that Spec instantiation behaves as we expect + s = Spec('simple-inheritance') + s.concretize() + assert '^cmake' in s + assert '^openblas' in s + assert '+openblas' in s + assert 'mpi' in s + s = Spec('simple-inheritance~openblas') + s.concretize() + assert '^cmake' in s + assert '^openblas' not in s + assert '~openblas' in s + assert 'mpi' in s -def test_import_package_as(builtin_mock): - import spack.pkg.builtin.mock.mpich as mp # noqa + def test_dependency_extensions(self): + s = Spec('extension2') + s.concretize() + deps = set(x.name for x in s.package.dependency_activations()) + assert deps == set(['extension1']) - import spack.pkg.builtin.mock # noqa - import spack.pkg.builtin.mock as m # noqa - from spack.pkg.builtin import mock # noqa + def test_import_class_from_package(self): + from spack.pkg.builtin.mock.mpich import Mpich # noqa + def test_import_module_from_package(self): + from spack.pkg.builtin.mock import mpich # noqa -def test_inheritance_of_diretives(): - p = spack.repo.get('simple-inheritance') + def test_import_namespace_container_modules(self): + import spack.pkg # noqa + import spack.pkg as p # noqa + from spack import pkg # noqa - # Check dictionaries that should have been filled by directives - assert len(p.dependencies) == 3 - assert 'cmake' in p.dependencies - assert 'openblas' in p.dependencies - assert 'mpi' in p.dependencies - assert len(p.provided) == 2 + import spack.pkg.builtin # noqa + import spack.pkg.builtin as b # noqa + from spack.pkg import builtin # noqa - # Check that Spec instantiation behaves as we expect - s = Spec('simple-inheritance') - s.concretize() - assert '^cmake' in s - assert '^openblas' in s - assert '+openblas' in s - assert 'mpi' in s - - s = Spec('simple-inheritance~openblas') - s.concretize() - assert '^cmake' in s - assert '^openblas' not in s - assert '~openblas' in s - assert 'mpi' in s - - -def test_dependency_extensions(): - s = Spec('extension2') - s.concretize() - deps = set(x.name for x in s.package.dependency_activations()) - assert deps == set(['extension1']) - - -def test_import_class_from_package(builtin_mock): - from spack.pkg.builtin.mock.mpich import Mpich # noqa - - -def test_import_module_from_package(builtin_mock): - from spack.pkg.builtin.mock import mpich # noqa - - -def test_import_namespace_container_modules(builtin_mock): - import spack.pkg # noqa - import spack.pkg as p # noqa - from spack import pkg # noqa - - import spack.pkg.builtin # noqa - import spack.pkg.builtin as b # noqa - from spack.pkg import builtin # noqa - - import spack.pkg.builtin.mock # noqa - import spack.pkg.builtin.mock as m # noqa - from spack.pkg.builtin import mock # noqa + import spack.pkg.builtin.mock # noqa + import spack.pkg.builtin.mock as m # noqa + from spack.pkg.builtin import mock # noqa From ed582cef68585b6090866fb0bb3aa2cc72dbe2ed Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 2 Mar 2017 19:01:29 +0100 Subject: [PATCH 0232/2394] New interface for passing build information among specs (#1875) - Added a new interface for Specs to pass build information - Calls forwarded from Spec to Package are now explicit - Added descriptor within Spec to manage forwarding - Added state in Spec to maintain query information - Modified a few packages (the one involved in spack install pexsi) to showcase changes - This uses an object wrapper to `spec` to implement the `libs` sub-calls. - wrapper is returned from `__getitem__` only if spec is concrete - allows packagers to access build information easily --- lib/spack/llnl/util/lang.py | 14 + lib/spack/spack/package.py | 6 +- lib/spack/spack/spec.py | 248 +++++++++++++++--- lib/spack/spack/test/database.py | 12 + lib/spack/spack/test/spec_dag.py | 47 +++- .../builtin.mock/packages/mpileaks/package.py | 3 + .../repos/builtin/packages/abinit/package.py | 6 +- .../builtin/packages/armadillo/package.py | 4 +- .../builtin/packages/arpack-ng/package.py | 8 +- .../repos/builtin/packages/atlas/package.py | 9 +- .../repos/builtin/packages/atompaw/package.py | 2 +- .../repos/builtin/packages/cantera/package.py | 2 +- .../repos/builtin/packages/cp2k/package.py | 14 +- .../repos/builtin/packages/dealii/package.py | 2 +- .../repos/builtin/packages/elk/package.py | 4 +- .../repos/builtin/packages/elpa/package.py | 8 +- .../repos/builtin/packages/gmsh/package.py | 2 +- .../repos/builtin/packages/hpl/package.py | 2 +- .../repos/builtin/packages/hypre/package.py | 4 +- .../builtin/packages/intel-mkl/package.py | 2 +- .../packages/intel-parallel-studio/package.py | 2 +- .../repos/builtin/packages/ipopt/package.py | 4 +- .../repos/builtin/packages/mfem/package.py | 2 +- .../repos/builtin/packages/mumps/package.py | 6 +- .../builtin/packages/netlib-lapack/package.py | 2 +- .../packages/netlib-scalapack/package.py | 4 +- .../repos/builtin/packages/nwchem/package.py | 6 +- .../repos/builtin/packages/octave/package.py | 4 +- .../repos/builtin/packages/octopus/package.py | 8 +- .../builtin/packages/openblas/package.py | 25 +- .../repos/builtin/packages/openmpi/package.py | 12 + .../repos/builtin/packages/opium/package.py | 2 +- .../repos/builtin/packages/petsc/package.py | 2 +- .../repos/builtin/packages/pexsi/make.inc | 2 +- .../repos/builtin/packages/pexsi/package.py | 7 +- .../repos/builtin/packages/psi4/package.py | 4 +- .../builtin/packages/py-numpy/package.py | 4 +- .../builtin/packages/suite-sparse/package.py | 4 +- .../builtin/packages/sundials/package.py | 4 +- .../builtin/packages/superlu-dist/package.py | 12 +- .../builtin/packages/superlu-mt/package.py | 2 +- .../repos/builtin/packages/superlu/package.py | 4 +- .../builtin/packages/trilinos/package.py | 4 +- .../builtin/packages/veclibfort/package.py | 9 +- .../builtin/packages/wannier90/package.py | 4 +- 45 files changed, 390 insertions(+), 148 deletions(-) diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 331cf2b3c5e..d9fef42e53a 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -374,3 +374,17 @@ def duplicate_stream(original): :rtype: file like object """ return os.fdopen(os.dup(original.fileno())) + + +class ObjectWrapper(object): + """Base class that wraps an object. Derived classes can add new behavior + while staying undercover. + + This class is modeled after the stackoverflow answer: + - http://stackoverflow.com/a/1445289/771663 + """ + def __init__(self, wrapped_object): + wrapped_cls = type(wrapped_object) + wrapped_name = wrapped_cls.__name__ + self.__class__ = type(wrapped_name, (type(self), wrapped_cls), {}) + self.__dict__ = wrapped_object.__dict__ diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 361691379ec..3be3bffc709 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -42,7 +42,6 @@ import sys import textwrap import time -from StringIO import StringIO import llnl.util.lock import llnl.util.tty as tty @@ -57,6 +56,7 @@ import spack.repository import spack.url import spack.util.web +from StringIO import StringIO from llnl.util.filesystem import * from llnl.util.lang import * from llnl.util.link_tree import LinkTree @@ -1053,6 +1053,10 @@ def do_fake_install(self): touch(join_path(self.prefix.bin, 'fake')) mkdirp(self.prefix.include) mkdirp(self.prefix.lib) + library_name = 'lib' + self.name + dso_suffix = 'dylib' if sys.platform == 'darwin' else 'so' + touch(join_path(self.prefix.lib, library_name + dso_suffix)) + touch(join_path(self.prefix.lib, library_name + '.a')) mkdirp(self.prefix.man1) def _if_make_target_execute(self, target): diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 5c7acfcd951..c0ee8486db4 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -96,32 +96,35 @@ expansion when it is the first character in an id typed on the command line. """ import base64 -import hashlib +import collections +import csv import ctypes -from StringIO import StringIO +import hashlib +import itertools from operator import attrgetter -from yaml.error import MarkedYAMLError - +import cStringIO import llnl.util.tty as tty -from llnl.util.lang import * -from llnl.util.tty.color import * - import spack import spack.architecture -import spack.store import spack.compilers as compilers import spack.error import spack.parse -from spack.build_environment import get_path_from_module, load_module -from spack.util.prefix import Prefix -from spack.util.string import * -import spack.util.spack_yaml as syaml +import spack.store import spack.util.spack_json as sjson -from spack.util.spack_yaml import syaml_dict -from spack.util.crypto import prefix_bits -from spack.version import * +import spack.util.spack_yaml as syaml +from cStringIO import StringIO +from llnl.util.filesystem import find_libraries +from llnl.util.lang import * +from llnl.util.tty.color import * +from spack.build_environment import get_path_from_module, load_module from spack.provider_index import ProviderIndex +from spack.util.crypto import prefix_bits +from spack.util.prefix import Prefix +from spack.util.spack_yaml import syaml_dict +from spack.util.string import * +from spack.version import * +from yaml.error import MarkedYAMLError __all__ = [ 'Spec', @@ -750,6 +753,161 @@ def __str__(self): return "{deps: %s}" % ', '.join(str(d) for d in sorted(self.values())) +def _libs_default_handler(descriptor, spec, cls): + """Default handler when looking for 'libs' attribute. The default + tries to search for 'lib{spec.name}' recursively starting from + `spec.prefix`. + + :param ForwardQueryToPackage descriptor: descriptor that triggered + the call + :param Spec spec: spec that is being queried + :param type(spec) cls: type of spec, to match the signature of the + descriptor `__get__` method + """ + name = 'lib' + spec.name + shared = '+shared' in spec + return find_libraries( + [name], root=spec.prefix, shared=shared, recurse=True + ) + + +def _cppflags_default_handler(descriptor, spec, cls): + """Default handler when looking for cppflags attribute. The default + just returns '-I{spec.prefix.include}'. + + :param ForwardQueryToPackage descriptor: descriptor that triggered + the call + :param Spec spec: spec that is being queried + :param type(spec) cls: type of spec, to match the signature of the + descriptor `__get__` method + """ + return '-I' + spec.prefix.include + + +class ForwardQueryToPackage(object): + """Descriptor used to forward queries from Spec to Package""" + + def __init__(self, attribute_name, default_handler=None): + """Initializes the instance of the descriptor + + :param str attribute_name: name of the attribute to be + searched for in the Package instance + :param callable default_handler: [optional] default function + to be called if the attribute was not found in the Package + instance + """ + self.attribute_name = attribute_name + # Turn the default handler into a function with the right + # signature that always returns None + if default_handler is None: + default_handler = lambda descriptor, spec, cls: None + self.default = default_handler + + def __get__(self, instance, cls): + """Retrieves the property from Package using a well defined chain + of responsibility. + + The order of call is : + + 1. if the query was through the name of a virtual package try to + search for the attribute `{virtual_name}_{attribute_name}` + in Package + + 2. try to search for attribute `{attribute_name}` in Package + + 3. try to call the default handler + + The first call that produces a value will stop the chain. + + If no call can handle the request or a None value is produced, + then AttributeError is raised. + """ + pkg = instance.package + try: + query = instance.last_query + except AttributeError: + # There has been no query yet: this means + # a spec is trying to access its own attributes + _ = instance[instance.name] # NOQA: ignore=F841 + query = instance.last_query + + callbacks_chain = [] + # First in the chain : specialized attribute for virtual packages + if query.isvirtual: + specialized_name = '{0}_{1}'.format( + query.name, self.attribute_name + ) + callbacks_chain.append(lambda: getattr(pkg, specialized_name)) + # Try to get the generic method from Package + callbacks_chain.append(lambda: getattr(pkg, self.attribute_name)) + # Final resort : default callback + callbacks_chain.append(lambda: self.default(self, instance, cls)) + + # Trigger the callbacks in order, the first one producing a + # value wins + value = None + for f in callbacks_chain: + try: + value = f() + break + except AttributeError: + pass + # 'None' value raises AttributeError : this permits to 'disable' + # the call in a particular package by returning None from the + # queried attribute, or will trigger an exception if things + # searched for were not found + if value is None: + fmt = '\'{name}\' package has no relevant attribute \'{query}\'\n' # NOQA: ignore=E501 + fmt += '\tspec : \'{spec}\'\n' + fmt += '\tqueried as : \'{spec.last_query.name}\'\n' + fmt += '\textra parameters : \'{spec.last_query.extra_parameters}\'\n' # NOQA: ignore=E501 + message = fmt.format( + name=pkg.name, + query=self.attribute_name, + spec=instance + ) + raise AttributeError(message) + + return value + + def __set__(self, instance, value): + cls_name = type(instance).__name__ + msg = "'{0}' object attribute '{1}' is read-only" + raise AttributeError(msg.format(cls_name, self.attribute_name)) + + +class SpecBuildInterface(ObjectWrapper): + + libs = ForwardQueryToPackage( + 'libs', + default_handler=_libs_default_handler + ) + + cppflags = ForwardQueryToPackage( + 'cppflags', + default_handler=_cppflags_default_handler + ) + + def __init__(self, spec, name, query_parameters): + super(SpecBuildInterface, self).__init__(spec) + + # Represents a query state in a BuildInterface object + QueryState = collections.namedtuple( + 'QueryState', ['name', 'extra_parameters', 'isvirtual'] + ) + + is_virtual = Spec.is_virtual(name) + self._query_to_package = QueryState( + name=name, + extra_parameters=query_parameters, + isvirtual=is_virtual + ) + + @property + def last_query(self): + return self._query_to_package + + @key_ordering class Spec(object): @@ -818,14 +976,6 @@ def __init__(self, spec_like, *dep_like, **kwargs): self._add_dependency(spec, deptypes) deptypes = () - def __getattr__(self, item): - """Delegate to self.package if the attribute is not in the spec""" - # This line is to avoid infinite recursion in case package is - # not present among self attributes - if item.endswith('libs'): - return getattr(self.package, item) - raise AttributeError(item) - def get_dependency(self, name): dep = self._dependencies.get(name) if dep is not None: @@ -2239,22 +2389,46 @@ def version(self): return self.versions[0] def __getitem__(self, name): - """Get a dependency from the spec by its name.""" - for spec in self.traverse(): - if spec.name == name: - return spec + """Get a dependency from the spec by its name. This call implicitly + sets a query state in the package being retrieved. The behavior of + packages may be influenced by additional query parameters that are + passed after a colon symbol. - if Spec.is_virtual(name): - # TODO: this is a kind of kludgy way to find providers - # TODO: should we just keep virtual deps in the DAG instead of - # TODO: removing them on concretize? - for spec in self.traverse(): - if spec.virtual: - continue - if spec.package.provides(name): - return spec + Note that if a virtual package is queried a copy of the Spec is + returned while for non-virtual a reference is returned. + """ + query_parameters = name.split(':') + if len(query_parameters) > 2: + msg = 'key has more than one \':\' symbol.' + msg += ' At most one is admitted.' + raise KeyError(msg) - raise KeyError("No spec with name %s in %s" % (name, self)) + name, query_parameters = query_parameters[0], query_parameters[1:] + if query_parameters: + # We have extra query parameters, which are comma separated + # values + f = cStringIO.StringIO(query_parameters.pop()) + try: + query_parameters = next(csv.reader(f, skipinitialspace=True)) + except StopIteration: + query_parameters = [''] + + try: + value = next( + itertools.chain( + # Regular specs + (x for x in self.traverse() if x.name == name), + (x for x in self.traverse() + if (not x.virtual) and x.package.provides(name)) + ) + ) + except StopIteration: + raise KeyError("No spec with name %s in %s" % (name, self)) + + if self._concrete: + return SpecBuildInterface(value, name, query_parameters) + + return value def __contains__(self, spec): """True if this spec satisfies the provided spec, or if any dependency diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index bbaa88b91de..0d7999cd367 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -103,6 +103,18 @@ def _mock_remove(spec): spec.package.do_uninstall(spec) +def test_default_queries(database): + install_db = database.mock.db + rec = install_db.get_record('zmpi') + + spec = rec.spec + libraries = spec['zmpi'].libs + assert len(libraries) == 1 + + cppflags_expected = '-I' + spec.prefix.include + assert spec['zmpi'].cppflags == cppflags_expected + + def test_005_db_exists(database): """Make sure db cache file exists after creating.""" install_path = database.mock.path diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index 1578bcacbe0..2c414bd0c0b 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -24,9 +24,6 @@ ############################################################################## """ These tests check Spec DAG operations using dummy packages. -You can find the dummy packages here:: - - spack/lib/spack/spack/test/mock_packages """ import pytest import spack @@ -690,3 +687,47 @@ def test_copy_deptypes(self): s4 = s3.copy() self.check_diamond_deptypes(s4) + + def test_getitem_query(self): + s = Spec('mpileaks') + s.concretize() + + # Check a query to a non-virtual package + a = s['callpath'] + + query = a.last_query + assert query.name == 'callpath' + assert len(query.extra_parameters) == 0 + assert not query.isvirtual + + # Check a query to a virtual package + a = s['mpi'] + + query = a.last_query + assert query.name == 'mpi' + assert len(query.extra_parameters) == 0 + assert query.isvirtual + + # Check a query to a virtual package with + # extra parameters after query + a = s['mpi:cxx,fortran'] + + query = a.last_query + assert query.name == 'mpi' + assert len(query.extra_parameters) == 2 + assert 'cxx' in query.extra_parameters + assert 'fortran' in query.extra_parameters + assert query.isvirtual + + def test_getitem_exceptional_paths(self): + s = Spec('mpileaks') + s.concretize() + # Needed to get a proxy object + q = s['mpileaks'] + + # Test that the attribute is read-only + with pytest.raises(AttributeError): + q.libs = 'foo' + + with pytest.raises(AttributeError): + q.libs diff --git a/var/spack/repos/builtin.mock/packages/mpileaks/package.py b/var/spack/repos/builtin.mock/packages/mpileaks/package.py index 749fcc601ad..c84fdf22381 100644 --- a/var/spack/repos/builtin.mock/packages/mpileaks/package.py +++ b/var/spack/repos/builtin.mock/packages/mpileaks/package.py @@ -42,6 +42,9 @@ class Mpileaks(Package): depends_on("mpi") depends_on("callpath") + # Will be used to try raising an exception + libs = None + def install(self, spec, prefix): pass diff --git a/var/spack/repos/builtin/packages/abinit/package.py b/var/spack/repos/builtin/packages/abinit/package.py index ff27f69723b..1798059ee72 100644 --- a/var/spack/repos/builtin/packages/abinit/package.py +++ b/var/spack/repos/builtin/packages/abinit/package.py @@ -127,13 +127,13 @@ def install(self, spec, prefix): # BLAS/LAPACK if '+scalapack' in spec: oapp("--with-linalg-flavor=custom+scalapack") - linalg = (spec['scalapack'].scalapack_libs + - spec['lapack'].lapack_libs + spec['blas'].blas_libs) + linalg = (spec['scalapack'].libs + + spec['lapack'].libs + spec['blas'].libs) # elif '+elpa' in spec: else: oapp("--with-linalg-flavor=custom") - linalg = spec['lapack'].lapack_libs + spec['blas'].blas_libs + linalg = spec['lapack'].libs + spec['blas'].libs oapp("--with-linalg-libs=%s" % linalg.ld_flags) diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index 2336da45209..9ab1b66880e 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -55,9 +55,9 @@ def install(self, spec, prefix): # ARPACK support '-DARPACK_LIBRARY={0}'.format(arpack.joined()), # BLAS support - '-DBLAS_LIBRARY={0}'.format(spec['blas'].blas_libs.joined()), + '-DBLAS_LIBRARY={0}'.format(spec['blas'].libs.joined()), # LAPACK support - '-DLAPACK_LIBRARY={0}'.format(spec['lapack'].lapack_libs.joined()), + '-DLAPACK_LIBRARY={0}'.format(spec['lapack'].libs.joined()), # SuperLU support '-DSuperLU_INCLUDE_DIR={0}'.format(spec['superlu'].prefix.include), '-DSuperLU_LIBRARY={0}'.format(superlu.joined()), diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py index a1c18d80866..1168d4623cd 100644 --- a/var/spack/repos/builtin/packages/arpack-ng/package.py +++ b/var/spack/repos/builtin/packages/arpack-ng/package.py @@ -88,8 +88,8 @@ def install(self, spec, prefix): options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix) # Make sure we use Spack's blas/lapack: - lapack_libs = spec['lapack'].lapack_libs.joined(';') - blas_libs = spec['blas'].blas_libs.joined(';') + lapack_libs = spec['lapack'].libs.joined(';') + blas_libs = spec['blas'].libs.joined(';') options.extend([ '-DLAPACK_FOUND=true', @@ -129,8 +129,8 @@ def install(self, spec, prefix): ]) options.extend([ - '--with-blas={0}'.format(spec['blas'].blas_libs.ld_flags), - '--with-lapack={0}'.format(spec['lapack'].lapack_libs.ld_flags) + '--with-blas={0}'.format(spec['blas'].libs.ld_flags), + '--with-lapack={0}'.format(spec['lapack'].libs.ld_flags) ]) if '+shared' not in spec: options.append('--enable-shared=no') diff --git a/var/spack/repos/builtin/packages/atlas/package.py b/var/spack/repos/builtin/packages/atlas/package.py index 51f0fced2bf..b62d39dde8f 100644 --- a/var/spack/repos/builtin/packages/atlas/package.py +++ b/var/spack/repos/builtin/packages/atlas/package.py @@ -112,8 +112,7 @@ def install(self, spec, prefix): make("install") self.install_test() - @property - def blas_libs(self): + def libs(self): # libsatlas.[so,dylib,dll ] contains all serial APIs (serial lapack, # serial BLAS), and all ATLAS symbols needed to support them. Whereas # libtatlas.[so,dylib,dll ] is parallel (multithreaded) version. @@ -135,10 +134,6 @@ def blas_libs(self): to_find, root=self.prefix, shared=shared, recurse=True ) - @property - def lapack_libs(self): - return self.blas_libs - def install_test(self): source_file = join_path(os.path.dirname(self.module.__file__), 'test_cblas_dgemm.c') @@ -146,7 +141,7 @@ def install_test(self): 'test_cblas_dgemm.output') include_flags = ["-I%s" % self.spec.prefix.include] - link_flags = self.lapack_libs.ld_flags.split() + link_flags = self.libs.ld_flags.split() output = compile_c_and_execute(source_file, include_flags, link_flags) compare_output_file(output, blessed_file) diff --git a/var/spack/repos/builtin/packages/atompaw/package.py b/var/spack/repos/builtin/packages/atompaw/package.py index 17d0ef82099..987eb86e302 100644 --- a/var/spack/repos/builtin/packages/atompaw/package.py +++ b/var/spack/repos/builtin/packages/atompaw/package.py @@ -49,7 +49,7 @@ class Atompaw(Package): def install(self, spec, prefix): options = ['--prefix=%s' % prefix] - linalg = spec['lapack'].lapack_libs + spec['blas'].blas_libs + linalg = spec['lapack'].libs + spec['blas'].libs options.extend([ "--with-linalg-libs=%s" % linalg.ld_flags, "--enable-libxc", diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py index 5cd9fcdd17d..fece11380de 100644 --- a/var/spack/repos/builtin/packages/cantera/package.py +++ b/var/spack/repos/builtin/packages/cantera/package.py @@ -85,7 +85,7 @@ def install(self, spec, prefix): # BLAS/LAPACK support if '+lapack' in spec: - lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs + lapack_blas = spec['lapack'].libs + spec['blas'].libs options.extend([ 'blas_lapack_libs={0}'.format(','.join(lapack_blas.names)), 'blas_lapack_dir={0}'.format(spec['lapack'].prefix.lib) diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 3a175ea1a28..9bf7a5bc6bd 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -88,12 +88,10 @@ def install(self, spec, prefix): cppflags = [ '-D__FFTW3', '-D__LIBINT', - '-I' + spec['fftw'].prefix.include + spec['fftw'].cppflags ] fcflags = copy.deepcopy(optflags[self.spec.compiler.name]) - fcflags.extend([ - '-I' + spec['fftw'].prefix.include - ]) + fcflags.append(spec['fftw'].cppflags) fftw = find_libraries(['libfftw3'], root=spec['fftw'].prefix.lib) ldflags = [fftw.search_flags] libs = [ @@ -154,15 +152,17 @@ def install(self, spec, prefix): '-D__SCALAPACK' ]) fcflags.extend([ + # spec['elpa:fortran'].cppflags '-I' + join_path( spec['elpa'].prefix, 'include', 'elpa-{0}'.format(str(spec['elpa'].version)), 'modules' ), + # spec[pexsi:fortran].cppflags '-I' + join_path(spec['pexsi'].prefix, 'fortran') ]) - scalapack = spec['scalapack'].scalapack_libs + scalapack = spec['scalapack'].libs ldflags.append(scalapack.search_flags) libs.extend([ join_path(spec['elpa'].prefix.lib, @@ -184,8 +184,8 @@ def install(self, spec, prefix): libs.extend(self.spec['mpi'].mpicxx_shared_libs) libs.extend(self.compiler.stdcxx_libs) # LAPACK / BLAS - lapack = spec['lapack'].lapack_libs - blas = spec['blas'].blas_libs + lapack = spec['lapack'].libs + blas = spec['blas'].libs ldflags.append((lapack + blas).search_flags) libs.extend([str(x) for x in (fftw, lapack, blas)]) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 22fb168e65a..61dae81a3dc 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -145,7 +145,7 @@ def cmake_args(self): options = [] cxx_flags = [] - lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs + lapack_blas = spec['lapack'].libs + spec['blas'].libs options.extend([ '-DDEAL_II_COMPONENT_EXAMPLES=ON', '-DDEAL_II_WITH_THREADS:BOOL=ON', diff --git a/var/spack/repos/builtin/packages/elk/package.py b/var/spack/repos/builtin/packages/elk/package.py index acaf8639353..148fbd999ab 100644 --- a/var/spack/repos/builtin/packages/elk/package.py +++ b/var/spack/repos/builtin/packages/elk/package.py @@ -90,9 +90,9 @@ def configure(self, spec): blas = 'blas.a' lapack = 'lapack.a' if '+blas' in spec: - blas = spec['blas'].blas_libs.joined() + blas = spec['blas'].libs.joined() if '+lapack' in spec: - lapack = spec['lapack'].lapack_libs.joined() + lapack = spec['lapack'].libs.joined() # lapack must come before blas config['LIB_LPK'] = ' '.join([lapack, blas]) diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py index b433bf40b01..fe249269c7d 100644 --- a/var/spack/repos/builtin/packages/elpa/package.py +++ b/var/spack/repos/builtin/packages/elpa/package.py @@ -59,16 +59,16 @@ def install(self, spec, prefix): 'FC={0}'.format(self.spec['mpi'].mpifc), 'CXX={0}'.format(self.spec['mpi'].mpicxx), 'FCFLAGS={0}'.format( - spec['lapack'].lapack_libs.joined() + spec['lapack'].libs.joined() ), 'LDFLAGS={0}'.format( - spec['lapack'].lapack_libs.joined() + spec['lapack'].libs.joined() ), 'SCALAPACK_FCFLAGS={0}'.format( - spec['scalapack'].scalapack_libs.joined() + spec['scalapack'].libs.joined() ), 'SCALAPACK_LDFLAGS={0}'.format( - spec['scalapack'].scalapack_libs.joined() + spec['scalapack'].libs.joined() ), '--prefix={0}'.format(self.prefix) ] diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py index 5c42fcf39fc..54ff17e3875 100644 --- a/var/spack/repos/builtin/packages/gmsh/package.py +++ b/var/spack/repos/builtin/packages/gmsh/package.py @@ -88,7 +88,7 @@ def cmake_args(self): options.append('-DENABLE_OS_SPECIFIC_INSTALL=OFF') # Make sure GMSH picks up correct BlasLapack by providing linker flags - blas_lapack = spec['lapack'].lapack_libs + spec['blas'].blas_libs + blas_lapack = spec['lapack'].libs + spec['blas'].libs options.append( '-DBLAS_LAPACK_LIBRARIES={0}'.format(blas_lapack.ld_flags)) diff --git a/var/spack/repos/builtin/packages/hpl/package.py b/var/spack/repos/builtin/packages/hpl/package.py index fa0013de174..a171408a265 100644 --- a/var/spack/repos/builtin/packages/hpl/package.py +++ b/var/spack/repos/builtin/packages/hpl/package.py @@ -78,7 +78,7 @@ def configure(self, spec, arch): 'MPlib = -L{0}'.format(spec['mpi'].prefix.lib), # Linear Algebra library (BLAS or VSIPL) 'LAinc = {0}'.format(spec['blas'].prefix.include), - 'LAlib = {0}'.format(spec['blas'].blas_libs.joined()), + 'LAlib = {0}'.format(spec['blas'].libs.joined()), # F77 / C interface 'F2CDEFS = -DAdd_ -DF77_INTEGER=int -DStringSunStyle', # HPL includes / libraries / specifics diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index 14a2a5cc0c0..0c6ee732b70 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -62,8 +62,8 @@ def install(self, spec, prefix): os.environ['F77'] = spec['mpi'].mpif77 # Note: --with-(lapack|blas)_libs= needs space separated list of names - lapack = spec['lapack'].lapack_libs - blas = spec['blas'].blas_libs + lapack = spec['lapack'].libs + blas = spec['blas'].libs configure_args = [ '--prefix=%s' % prefix, diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index eb3ce37c370..6bd4689bc13 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -83,7 +83,7 @@ def blas_libs(self): @property def lapack_libs(self): - return self.blas_libs + return self.libs @property def scalapack_libs(self): 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 287f2bb76ef..afaed8b5ed3 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -127,7 +127,7 @@ def blas_libs(self): @property def lapack_libs(self): - return self.blas_libs + return self.libs @property def scalapack_libs(self): diff --git a/var/spack/repos/builtin/packages/ipopt/package.py b/var/spack/repos/builtin/packages/ipopt/package.py index bd1e5f36efa..1aa8e807c41 100644 --- a/var/spack/repos/builtin/packages/ipopt/package.py +++ b/var/spack/repos/builtin/packages/ipopt/package.py @@ -53,8 +53,8 @@ def install(self, spec, prefix): mumps_flags = "-ldmumps -lmumps_common -lpord -lmpiseq" mumps_libcmd = "-L%s " % mumps_dir.lib + mumps_flags - blas_lib = spec['blas'].blas_libs.ld_flags - lapack_lib = spec['lapack'].lapack_libs.ld_flags + blas_lib = spec['blas'].libs.ld_flags + lapack_lib = spec['lapack'].libs.ld_flags configure_args = [ "--prefix=%s" % prefix, diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index 45f64cef656..a25583e1641 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -102,7 +102,7 @@ def install(self, spec, prefix): options = ['PREFIX=%s' % prefix] if '+lapack' in spec: - lapack_lib = (spec['lapack'].lapack_libs + spec['blas'].blas_libs).ld_flags # NOQA: ignore=E501 + lapack_lib = (spec['lapack'].libs + spec['blas'].libs).ld_flags # NOQA: ignore=E501 options.extend([ 'MFEM_USE_LAPACK=YES', 'LAPACK_OPT=-I%s' % spec['lapack'].prefix.include, diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index 9fd5b5f36b9..01469b1f0fe 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -82,8 +82,8 @@ def write_makefile_inc(self): raise RuntimeError( 'You cannot use the variants parmetis or ptscotch without mpi') - lapack_blas = (self.spec['lapack'].lapack_libs + - self.spec['blas'].blas_libs) + lapack_blas = (self.spec['lapack'].libs + + self.spec['blas'].libs) makefile_conf = ["LIBBLAS = %s" % lapack_blas.ld_flags] orderings = ['-Dpord'] @@ -156,7 +156,7 @@ def write_makefile_inc(self): 'OPTC = %s -O ' % fpic]) if '+mpi' in self.spec: - scalapack = self.spec['scalapack'].scalapack_libs + scalapack = self.spec['scalapack'].libs makefile_conf.extend( ['CC = {0}'.format(self.spec['mpi'].mpicc), 'FC = {0}'.format(self.spec['mpi'].mpifc), diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py index ee011e7d1b4..9d0ebae371f 100644 --- a/var/spack/repos/builtin/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py @@ -113,7 +113,7 @@ def install_one(self, spec, prefix, shared): if '+external-blas' in spec: cmake_args.extend([ '-DUSE_OPTIMIZED_BLAS:BOOL=ON', - '-DBLAS_LIBRARIES:PATH=%s' % spec['blas'].blas_libs.joined(';') + '-DBLAS_LIBRARIES:PATH=%s' % spec['blas'].libs.joined(';') ]) cmake_args.extend(std_cmake_args) diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py index 578d2d89881..7d8b803abf8 100644 --- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py @@ -74,8 +74,8 @@ def install(self, spec, prefix): ] # Make sure we use Spack's Lapack: - blas = spec['blas'].blas_libs - lapack = spec['lapack'].lapack_libs + blas = spec['blas'].libs + lapack = spec['lapack'].libs options.extend([ '-DLAPACK_FOUND=true', '-DLAPACK_INCLUDE_DIRS=%s' % spec['lapack'].prefix.include, diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 556dba34c21..f39d8ad0c79 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -73,9 +73,9 @@ class Nwchem(Package): patch(url, when=condition, level=0, md5=md5) def install(self, spec, prefix): - scalapack = spec['scalapack'].scalapack_libs - lapack = spec['lapack'].lapack_libs - blas = spec['blas'].blas_libs + scalapack = spec['scalapack'].libs + lapack = spec['lapack'].libs + blas = spec['blas'].libs # see http://www.nwchem-sw.org/index.php/Compiling_NWChem args = [] args.extend([ diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index 731e2a630ff..fe6ea8ce680 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -108,8 +108,8 @@ def configure_args(self): # Required dependencies config_args.extend([ - "--with-blas=%s" % spec['blas'].blas_libs.ld_flags, - "--with-lapack=%s" % spec['lapack'].lapack_libs.ld_flags + "--with-blas=%s" % spec['blas'].libs.ld_flags, + "--with-lapack=%s" % spec['lapack'].libs.ld_flags ]) # Strongly recommended dependencies diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py index b74befbe350..81e4543745a 100644 --- a/var/spack/repos/builtin/packages/octopus/package.py +++ b/var/spack/repos/builtin/packages/octopus/package.py @@ -71,8 +71,8 @@ def url_for_version(self, version): def install(self, spec, prefix): arpack = find_libraries(['libarpack'], root=spec[ 'arpack-ng'].prefix.lib, shared=True) - lapack = spec['lapack'].lapack_libs - blas = spec['blas'].blas_libs + lapack = spec['lapack'].libs + blas = spec['blas'].libs args = [] args.extend([ '--prefix=%s' % prefix, @@ -105,8 +105,8 @@ def install(self, spec, prefix): ]) if '+scalapack' in spec: args.extend([ - '--with-blacs=%s' % spec['scalapack'].scalapack_libs, - '--with-scalapack=%s' % spec['scalapack'].scalapack_libs, + '--with-blacs=%s' % spec['scalapack'].libs, + '--with-scalapack=%s' % spec['scalapack'].libs, ]) # --with-etsf-io-prefix= # --with-sparskit=${prefix}/lib/libskit.a diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 3909744dc89..5648e58b02e 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -59,17 +59,6 @@ class Openblas(MakefilePackage): parallel = False - @property - def blas_libs(self): - shared = True if '+shared' in self.spec else False - return find_libraries( - ['libopenblas'], root=self.prefix, shared=shared, recurse=True - ) - - @property - def lapack_libs(self): - return self.blas_libs - @run_before('edit') def check_compilers(self): # As of 06/2016 there is no mechanism to specify that packages which @@ -151,13 +140,15 @@ def check_install(self): blessed_file = join_path(os.path.dirname(self.module.__file__), 'test_cblas_dgemm.output') - include_flags = ["-I%s" % join_path(spec.prefix, "include")] - link_flags = self.lapack_libs.ld_flags.split() + include_flags = spec.cppflags + link_flags = spec.libs.ld_flags if self.compiler.name == 'intel': - link_flags.extend(["-lifcore"]) - link_flags.extend(["-lpthread"]) + link_flags += ' -lifcore' + link_flags += ' -lpthread' if '+openmp' in spec: - link_flags.extend([self.compiler.openmp_flag]) + link_flags += ' ' + self.compiler.openmp_flag - output = compile_c_and_execute(source_file, include_flags, link_flags) + output = compile_c_and_execute( + source_file, [include_flags], link_flags.split() + ) compare_output_file(output, blessed_file) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 562ef22a096..4d09676facf 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -116,6 +116,18 @@ def url_for_version(self, version): return "http://www.open-mpi.org/software/ompi/v%s/downloads/openmpi-%s.tar.bz2" % ( version.up_to(2), version) + @property + def libs(self): + query_parameters = self.spec.last_query.extra_parameters + libraries = ['libmpi'] + + if 'cxx' in query_parameters: + libraries = ['libmpi_cxx'] + libraries + + return find_libraries( + libraries, root=self.prefix, shared=True, recurse=True + ) + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc')) spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpic++')) diff --git a/var/spack/repos/builtin/packages/opium/package.py b/var/spack/repos/builtin/packages/opium/package.py index 521f9172307..4c50bcfaf29 100644 --- a/var/spack/repos/builtin/packages/opium/package.py +++ b/var/spack/repos/builtin/packages/opium/package.py @@ -37,7 +37,7 @@ class Opium(Package): depends_on('lapack') def install(self, spec, prefix): - libs = spec['lapack'].lapack_libs + spec['blas'].blas_libs + libs = spec['lapack'].libs + spec['blas'].libs options = ['LDFLAGS=%s' % libs.ld_flags] configure(*options) diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index a9d4ff60655..3e670cba634 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -161,7 +161,7 @@ def install(self, spec, prefix): ]) # Make sure we use exactly the same Blas/Lapack libraries # across the DAG. To that end list them explicitly - lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs + lapack_blas = spec['lapack'].libs + spec['blas'].libs options.extend([ '--with-blas-lapack-lib=%s' % lapack_blas.joined() ]) diff --git a/var/spack/repos/builtin/packages/pexsi/make.inc b/var/spack/repos/builtin/packages/pexsi/make.inc index a8020fb370b..c97b09b4243 100644 --- a/var/spack/repos/builtin/packages/pexsi/make.inc +++ b/var/spack/repos/builtin/packages/pexsi/make.inc @@ -36,7 +36,7 @@ DSUPERLU_INCLUDE = -I${DSUPERLU_DIR}/include INCLUDES = ${PEXSI_INCLUDE} ${DSUPERLU_INCLUDE} # Libraries -CPP_LIB = @STDCXX_LIB @MPICXX_LIB +CPP_LIB = @MPICXX_LIB @STDCXX_LIB #GFORTRAN_LIB = /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a LAPACK_LIB = @LAPACK_LIBS BLAS_LIB = @BLAS_LIBS diff --git a/var/spack/repos/builtin/packages/pexsi/package.py b/var/spack/repos/builtin/packages/pexsi/package.py index 9fc71d4c525..989e2ebf6ed 100644 --- a/var/spack/repos/builtin/packages/pexsi/package.py +++ b/var/spack/repos/builtin/packages/pexsi/package.py @@ -59,7 +59,7 @@ def install(self, spec, prefix): '@MPICC': self.spec['mpi'].mpicc, '@MPICXX': self.spec['mpi'].mpicxx, '@MPIFC': self.spec['mpi'].mpifc, - '@MPICXX_LIB': ' '.join(self.spec['mpi'].mpicxx_shared_libs), + '@MPICXX_LIB': self.spec['mpi:cxx'].libs.joined(), '@RANLIB': 'ranlib', '@PEXSI_STAGE': self.stage.source_path, '@SUPERLU_PREFIX': self.spec['superlu-dist'].prefix, @@ -67,8 +67,9 @@ def install(self, spec, prefix): '@PARMETIS_PREFIX': self.spec['parmetis'].prefix, '@LAPACK_PREFIX': self.spec['lapack'].prefix, '@BLAS_PREFIX': self.spec['blas'].prefix, - '@LAPACK_LIBS': self.spec['lapack'].lapack_libs.joined(), - '@BLAS_LIBS': self.spec['lapack'].blas_libs.joined(), + '@LAPACK_LIBS': self.spec['lapack'].libs.joined(), + '@BLAS_LIBS': self.spec['blas'].libs.joined(), + # FIXME : what to do with compiler provided libraries ? '@STDCXX_LIB': ' '.join(self.compiler.stdcxx_libs) } diff --git a/var/spack/repos/builtin/packages/psi4/package.py b/var/spack/repos/builtin/packages/psi4/package.py index 4248c246464..d14aff363be 100644 --- a/var/spack/repos/builtin/packages/psi4/package.py +++ b/var/spack/repos/builtin/packages/psi4/package.py @@ -62,10 +62,10 @@ class Psi4(Package): def install(self, spec, prefix): cmake_args = [ '-DBLAS_TYPE={0}'.format(spec['blas'].name.upper()), - '-DBLAS_LIBRARIES={0}'.format(spec['blas'].blas_libs.joined()), + '-DBLAS_LIBRARIES={0}'.format(spec['blas'].libs.joined()), '-DLAPACK_TYPE={0}'.format(spec['lapack'].name.upper()), '-DLAPACK_LIBRARIES={0}'.format( - spec['lapack'].lapack_libs.joined()), + spec['lapack'].libs.joined()), '-DBOOST_INCLUDEDIR={0}'.format(spec['boost'].prefix.include), '-DBOOST_LIBRARYDIR={0}'.format(spec['boost'].prefix.lib), '-DENABLE_CHEMPS2=OFF' diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index a1aedb730c9..11f6ebb1a54 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -70,10 +70,10 @@ def patch(self): # for build notes see http://www.scipy.org/scipylib/building/linux.html lapackblas = LibraryList('') if '+lapack' in spec: - lapackblas += spec['lapack'].lapack_libs + lapackblas += spec['lapack'].libs if '+blas' in spec: - lapackblas += spec['blas'].blas_libs + lapackblas += spec['blas'].libs if '+blas' in spec or '+lapack' in spec: # note that one should not use [blas_opt] and [lapack_opt], see diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index 740e490b5a2..122032e1318 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -101,8 +101,8 @@ def install(self, spec, prefix): # Make sure Spack's Blas/Lapack is used. Otherwise System's # Blas/Lapack might be picked up. - blas = spec['blas'].blas_libs.ld_flags - lapack = spec['lapack'].lapack_libs.ld_flags + blas = spec['blas'].libs.ld_flags + lapack = spec['lapack'].libs.ld_flags if '@4.5.1' in spec: # adding -lstdc++ is clearly an ugly way to do this, but it follows # with the TCOV path of SparseSuite 4.5.1's Suitesparse_config.mk diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index 6ee247b7ea8..cb12a410f4a 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -80,8 +80,8 @@ def install(self, spec, prefix): cmake_args.extend([ '-DLAPACK_ENABLE=ON', '-DLAPACK_LIBRARIES={0}'.format( - (spec['lapack'].lapack_libs + - spec['blas'].blas_libs).joined(';') + (spec['lapack'].libs + + spec['blas'].libs).joined(';') ) ]) else: diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index f076358e90e..802c7abc375 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -53,7 +53,7 @@ class SuperluDist(Package): depends_on('metis@5:') def install(self, spec, prefix): - lapack_blas = spec['lapack'].lapack_libs + spec['blas'].blas_libs + lapack_blas = spec['lapack'].libs + spec['blas'].libs makefile_inc = [] makefile_inc.extend([ 'PLAT = _mac_x', @@ -61,17 +61,17 @@ def install(self, spec, prefix): 'DSUPERLULIB = $(DSuperLUroot)/lib/libsuperlu_dist.a', 'BLASDEF = -DUSE_VENDOR_BLAS', 'BLASLIB = %s' % lapack_blas.ld_flags, - 'METISLIB = -L%s -lmetis' % spec['metis'].prefix.lib, - 'PARMETISLIB = -L%s -lparmetis' % spec['parmetis'].prefix.lib, + 'METISLIB = %s' % spec['metis'].libs.ld_flags, + 'PARMETISLIB = %s' % spec['parmetis'].libs.ld_flags, 'FLIBS =', 'LIBS = $(DSUPERLULIB) $(BLASLIB) $(PARMETISLIB) $(METISLIB)', # noqa 'ARCH = ar', 'ARCHFLAGS = cr', 'RANLIB = true', 'CC = {0}'.format(self.spec['mpi'].mpicc), - 'CFLAGS = -fPIC -std=c99 -O2 -I%s -I%s %s' % ( - spec['parmetis'].prefix.include, - spec['metis'].prefix.include, + 'CFLAGS = -fPIC -std=c99 -O2 %s %s %s' % ( + spec['parmetis'].cppflags, + spec['metis'].cppflags, '-D_LONGINT' if '+int64' in spec else ''), 'NOOPTS = -fPIC -std=c99', 'FORTRAN = {0}'.format(self.spec['mpi'].mpif77), diff --git a/var/spack/repos/builtin/packages/superlu-mt/package.py b/var/spack/repos/builtin/packages/superlu-mt/package.py index ea94c2d4c53..fd6091a0f0b 100644 --- a/var/spack/repos/builtin/packages/superlu-mt/package.py +++ b/var/spack/repos/builtin/packages/superlu-mt/package.py @@ -86,7 +86,7 @@ def configure(self, spec): if '+blas' in spec: config.extend([ 'BLASDEF = -DUSE_VENDOR_BLAS', - 'BLASLIB = {0}'.format(spec['blas'].blas_libs.ld_flags) + 'BLASLIB = {0}'.format(spec['blas'].libs.ld_flags) ]) else: config.append('BLASLIB = ../lib/libblas$(PLAT).a') diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py index 829949e504d..13c11b66b99 100644 --- a/var/spack/repos/builtin/packages/superlu/package.py +++ b/var/spack/repos/builtin/packages/superlu/package.py @@ -48,7 +48,7 @@ class Superlu(Package): def install(self, spec, prefix): cmake_args = [ '-Denable_blaslib=OFF', - '-DBLAS_blas_LIBRARY={0}'.format(spec['blas'].blas_libs.joined()) + '-DBLAS_blas_LIBRARY={0}'.format(spec['blas'].libs.joined()) ] if '+fpic' in spec: @@ -76,7 +76,7 @@ def install(self, spec, prefix): 'SUPERLULIB = $(SuperLUroot)/lib/libsuperlu_{0}.a' \ .format(self.spec.version), 'BLASDEF = -DUSE_VENDOR_BLAS', - 'BLASLIB = {0}'.format(spec['blas'].blas_libs.ld_flags), + 'BLASLIB = {0}'.format(spec['blas'].libs.ld_flags), # or BLASLIB = -L/usr/lib64 -lblas 'TMGLIB = libtmglib.a', 'LIBS = $(SUPERLULIB) $(BLASLIB)', diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index a4d97a6bc7d..6cf1032f83f 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -147,8 +147,8 @@ def cmake_args(self): mpi_bin = spec['mpi'].prefix.bin # Note: -DXYZ_LIBRARY_NAMES= needs semicolon separated list of names - blas = spec['blas'].blas_libs - lapack = spec['lapack'].lapack_libs + blas = spec['blas'].libs + lapack = spec['lapack'].libs options.extend([ '-DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON', '-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON', diff --git a/var/spack/repos/builtin/packages/veclibfort/package.py b/var/spack/repos/builtin/packages/veclibfort/package.py index b906d4f9c93..fa99acfa971 100644 --- a/var/spack/repos/builtin/packages/veclibfort/package.py +++ b/var/spack/repos/builtin/packages/veclibfort/package.py @@ -44,17 +44,12 @@ class Veclibfort(Package): provides('blas') provides('lapack') - @property - def blas_libs(self): + def libs(self): shared = True if '+shared' in self.spec else False return find_libraries( ['libvecLibFort'], root=self.prefix, shared=shared, recurse=True ) - @property - def lapack_libs(self): - return self.blas_libs - def install(self, spec, prefix): if sys.platform != 'darwin': raise InstallError('vecLibFort can be installed on macOS only') @@ -65,6 +60,6 @@ def install(self, spec, prefix): # test fc = which('fc') flags = ['-o', 'tester', '-O', 'tester.f90'] - flags.extend(self.lapack_libs.ld_flags.split()) + flags.extend(spec.libs.ld_flags.split()) fc(*flags) Executable('./tester')() diff --git a/var/spack/repos/builtin/packages/wannier90/package.py b/var/spack/repos/builtin/packages/wannier90/package.py index 119d2cf7695..ad61860d737 100644 --- a/var/spack/repos/builtin/packages/wannier90/package.py +++ b/var/spack/repos/builtin/packages/wannier90/package.py @@ -47,8 +47,8 @@ class Wannier90(Package): def install(self, spec, prefix): - lapack = self.spec['lapack'].lapack_libs - blas = self.spec['blas'].blas_libs + lapack = self.spec['lapack'].libs + blas = self.spec['blas'].libs substitutions = { '@F90': spack_fc, '@MPIF90': self.spec['mpi'].mpifc, From 5bb22c3024d7f66649d1a50789da0e5d26517201 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Thu, 2 Mar 2017 10:30:00 -0800 Subject: [PATCH 0233/2394] Added a recipe for the Caffe deep learning toolkit. (#3232) * Added a recipe for the Caffe deep learning toolkit. * Added code to extend python and fixed flake8 error. * Fixed Flake8 error --- .../repos/builtin/packages/caffe/package.py | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 var/spack/repos/builtin/packages/caffe/package.py diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py new file mode 100644 index 00000000000..f282262d212 --- /dev/null +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -0,0 +1,82 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Caffe(CMakePackage): + """Caffe is a deep learning framework made with expression, speed, and + modularity in mind. It is developed by the Berkeley Vision and Learning + Center (BVLC) and by community contributors.""" + + homepage = "http://caffe.berkeleyvision.org" + url = "https://github.com/BVLC/caffe/archive/rc5.tar.gz" + + version('rc5', '692bd3580b7576485cde6b1e03eb5a6d') + + variant('gpu', default=False, + description='Builds with support for GPUs via CUDA and cuDNN') + variant('opencv', default=True, + description='Build with OpenCV support') + variant('leveldb', default=True, + description="Build with levelDB") + variant('lmdb', default=True, + description="Build with lmdb") + variant('python', default=False, + description='Build python wrapper and caffe python layer') + variant('matlab', default=False, + description='Build Matlab wrapper') + + depends_on('boost') + depends_on('boost +python', when='+python') + depends_on('cuda', when='+gpu') + depends_on('blas') + depends_on('protobuf') + depends_on('glog') + depends_on('gflags') + depends_on('hdf5') + + # Optional dependencies + depends_on('opencv@3.2.0', when='+opencv') + depends_on('leveldb', when='+leveldb') + depends_on('lmdb', when='+lmdb') + depends_on('python@2.7:', when='+python') + depends_on('py-numpy@1.7:', when='+python') + depends_on('matlab', when='+matlab') + + extends('python', when='+python') + + def cmake_args(self): + spec = self.spec + args = ['-DBLAS={0}'.format(spec['blas'].name), + '-DCPU_ONLY=%s' % ('~gpu' in spec), + '-DUSE_CUDNN=%s' % ('+gpu' in spec), + '-DBUILD_python=%s' % ('+python' in spec), + '-DBUILD_python_layer=%s' % ('+python' in spec), + '-DBUILD_matlab=%s' % ('+matlab' in spec), + '-DUSE_OPENCV=%s' % ('+opencv' in spec), + '-DUSE_LEVELDB=%s' % ('+leveldb' in spec), + '-DUSE_LMDB=%s' % ('+lmdb' in spec)] + + return args From 0c1ccd5180601d3ed3f5dc98b3330d40c014f7c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Fri, 3 Mar 2017 02:42:15 +0800 Subject: [PATCH 0234/2394] Add simul. (#3300) --- .../repos/builtin/packages/simul/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/simul/package.py diff --git a/var/spack/repos/builtin/packages/simul/package.py b/var/spack/repos/builtin/packages/simul/package.py new file mode 100644 index 00000000000..2d379740baa --- /dev/null +++ b/var/spack/repos/builtin/packages/simul/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Simul(Package): + """simul is an MPI coordinated test of parallel + filesystem system calls and library functions. """ + + homepage = "https://github.com/LLNL/simul" + url = "https://github.com/LLNL/simul/archive/1.16.tar.gz" + + version('1.16', 'd616c1046a170c1e1b7956c402d23a95') + version('1.15', 'a5744673c094a87c05c6f0799d1f496f') + version('1.14', 'f8c14f0bac15741e2af354e3f9a0e30f') + version('1.13', '8a80a62d569557715d6c9c326e39a8ef') + + depends_on('mpi') + + def install(self, spec, prefix): + make('simul') + mkdirp(prefix.bin) + install('simul', prefix.bin) From 7bcc12a3c1a26e4493de0fb9fdaaf27dff862ffb Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 19:42:33 +0100 Subject: [PATCH 0235/2394] add package py-lazy (#3291) --- .../repos/builtin/packages/py-lazy/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-lazy/package.py diff --git a/var/spack/repos/builtin/packages/py-lazy/package.py b/var/spack/repos/builtin/packages/py-lazy/package.py new file mode 100644 index 00000000000..7dd8775f8aa --- /dev/null +++ b/var/spack/repos/builtin/packages/py-lazy/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyLazy(PythonPackage): + """Lazy attributes for Python objects""" + + homepage = "https://pypi.python.org/pypi/lazy" + url = "https://pypi.io/packages/source/l/lazy/lazy-1.2.zip" + + version('1.2', '02713784e0a92ff9b6af1df8863dd79d') + + depends_on('py-setuptools', type='build') From 0c014bf36ce9bbbf4fd6cecee76d3ced98fa8a3a Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 19:43:02 +0100 Subject: [PATCH 0236/2394] add package py-lazyarray (#3290) * add package py-lazyarray * added numpy dependency * flake8 fixes --- .../builtin/packages/py-lazyarray/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-lazyarray/package.py diff --git a/var/spack/repos/builtin/packages/py-lazyarray/package.py b/var/spack/repos/builtin/packages/py-lazyarray/package.py new file mode 100644 index 00000000000..413a51020bb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-lazyarray/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyLazyarray(PythonPackage): + """a Python package that provides a lazily-evaluated numerical array class, + larray, based on and compatible with NumPy arrays.""" + + homepage = "http://bitbucket.org/apdavison/lazyarray/" + url = "https://pypi.io/packages/source/l/lazyarray/lazyarray-0.2.8.tar.gz" + + version('0.2.8', '8e0072f0892b9fc0516e7048f96e9d74') + + depends_on('py-numpy@1.3:') + depends_on('py-numpy@1.5:', when='^python@3:') From 2f0c3d81aac5abd09b50136ec62efbf896ea4687 Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 19:43:13 +0100 Subject: [PATCH 0237/2394] add version 2.0.0 for py-matplotlib (#3289) --- var/spack/repos/builtin/packages/py-matplotlib/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index fc40dce9c11..36e26aa7ee7 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -34,6 +34,7 @@ class PyMatplotlib(PythonPackage): homepage = "https://pypi.python.org/pypi/matplotlib" url = "https://pypi.io/packages/source/m/matplotlib/matplotlib-1.4.2.tar.gz" + version('2.0.0', '7aa54b06327f0e1c4f3877fc2f7d6b17') version('1.5.3', 'ba993b06113040fee6628d74b80af0fd') version('1.5.1', 'f51847d8692cb63df64cd0bd0304fd20') version('1.4.3', '86af2e3e3c61849ac7576a6f5ca44267') From a8c57d65c1bb66a2fdb35af57e670a5e86102b77 Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 19:43:24 +0100 Subject: [PATCH 0238/2394] add package py-flexx (#3288) --- .../builtin/packages/py-flexx/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-flexx/package.py diff --git a/var/spack/repos/builtin/packages/py-flexx/package.py b/var/spack/repos/builtin/packages/py-flexx/package.py new file mode 100644 index 00000000000..6e6fbad4b3c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-flexx/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyFlexx(PythonPackage): + """Write desktop and web apps in pure Python.""" + + homepage = "http://flexx.readthedocs.io" + url = "https://pypi.io/packages/source/f/flexx/flexx-0.4.1.zip" + + version('0.4.1', '7138a378aa68d781212c4b2cfb6ddfcb') + + depends_on('py-setuptools', type='build') + depends_on('py-tornado', type=('build', 'run')) From 98baff016705ef6f04bd0bda22fe1be92589c4b4 Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 19:43:34 +0100 Subject: [PATCH 0239/2394] add package py-fasteners (#3285) * add package py-fasteners * fixed dependencies --- .../builtin/packages/py-fasteners/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-fasteners/package.py diff --git a/var/spack/repos/builtin/packages/py-fasteners/package.py b/var/spack/repos/builtin/packages/py-fasteners/package.py new file mode 100644 index 00000000000..a5805b755d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fasteners/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyFasteners(PythonPackage): + """A python package that provides useful locks.""" + + homepage = "https://github.com/harlowja/fasteners" + url = "https://pypi.io/packages/source/f/fasteners/fasteners-0.14.1.tar.gz" + + version('0.14.1', 'fcb13261c9b0039d9b1c4feb9bc75e04') + + depends_on('py-setuptools', type='build') + depends_on('py-monotonic@0.1:', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) From 9607c55eacfd58704a4e83a2476471aa2da6124c Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 19:43:43 +0100 Subject: [PATCH 0240/2394] add package py-doxypypy (#3284) --- .../builtin/packages/py-doxypypy/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-doxypypy/package.py diff --git a/var/spack/repos/builtin/packages/py-doxypypy/package.py b/var/spack/repos/builtin/packages/py-doxypypy/package.py new file mode 100644 index 00000000000..7d22fe1c650 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-doxypypy/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyDoxypypy(PythonPackage): + """A Doxygen filter for Python. + + A more Pythonic version of doxypy, a Doxygen filter for Python. + """ + + homepage = "https://github.com/Feneric/doxypypy" + url = "https://pypi.io/packages/source/d/doxypypy/doxypypy-0.8.8.6.tar.gz" + + version('0.8.8.6', '6b3fe4eff5d459400071b626333fe15f') + + depends_on('py-setuptools', type='build') From c610c197baa093da08b894ada2600024f3bfcf9e Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 19:44:01 +0100 Subject: [PATCH 0241/2394] Feature/py doxypy (#3283) * add package py-doxypy * fixed template and url --- .../builtin/packages/py-doxypy/package.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-doxypy/package.py diff --git a/var/spack/repos/builtin/packages/py-doxypy/package.py b/var/spack/repos/builtin/packages/py-doxypy/package.py new file mode 100644 index 00000000000..dcfe6b3b88f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-doxypy/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyDoxypy(PythonPackage): + """doxypy is an input filter for Doxygen.""" + + homepage = "https://pypi.python.org/pypi/doxypy" + url = "https://pypi.io/packages/source/d/doxypy/doxypy-0.3.tar.gz" + + version('0.3', '3b52289e0962d31b92af8be0eef8cbb2') From acb72c703772324088c536e91a06f9bb8af1238e Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 19:44:09 +0100 Subject: [PATCH 0242/2394] add package py-brian (#3280) * add package py-brian * fixed typo * removed unnecessary dependency * fixed typo2 --- .../builtin/packages/py-brian/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-brian/package.py diff --git a/var/spack/repos/builtin/packages/py-brian/package.py b/var/spack/repos/builtin/packages/py-brian/package.py new file mode 100644 index 00000000000..e3046c939a3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-brian/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyBrian(PythonPackage): + """A clock-driven simulator for spiking neural networks""" + + homepage = "http://www.briansimulator.org" + url = "https://pypi.io/packages/source/b/brian/brian-1.4.3.tar.gz" + + version('1.4.3', '0570099bcce4d7afde73ff4126e6c30f') + + depends_on('py-matplotlib@0.90.1:', type=('build', 'run')) + depends_on('py-numpy@1.4.1:', type=('build', 'run')) + depends_on('py-scipy@0.7.0:', type=('build', 'run')) From 6d0fbe7d96294c731c7add28f37aa35fbad1bb16 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 2 Mar 2017 19:44:43 +0100 Subject: [PATCH 0243/2394] Update adios to 1.11.1 (#3221) Add a zfp variant and a patch that resets the interpreter for gpp.py. --- var/spack/repos/builtin/packages/adios/package.py | 12 ++++++++++-- var/spack/repos/builtin/packages/adios/python.patch | 10 ++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/adios/python.patch diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index e240ce08587..6066dd078ed 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -34,10 +34,11 @@ class Adios(Package): """ homepage = "http://www.olcf.ornl.gov/center-projects/adios/" - url = "https://github.com/ornladios/ADIOS/archive/v1.10.0.tar.gz" + url = "https://github.com/ornladios/ADIOS/archive/v1.11.1.tar.gz" version('develop', git='https://github.com/ornladios/ADIOS.git', branch='master') + version('1.11.1', '5639bfc235e50bf17ba9dafb14ea4185') version('1.10.0', 'eff450a4c0130479417cfd63186957f3') version('1.9.0', '310ff02388bbaa2b1c1710ee970b5678') @@ -51,8 +52,9 @@ class Adios(Package): variant('infiniband', default=False, description='Enable infiniband support') # transforms - variant('zlib', default=True, description='Enable szip transform support') + variant('zlib', default=True, description='Enable zlib transform support') variant('szip', default=False, description='Enable szip transform support') + variant('zfp', default=False, description='Enable ZFP transform support') # transports and serial file converters variant('hdf5', default=False, description='Enable parallel HDF5 transport and serial bp2h5 converter') @@ -71,9 +73,13 @@ class Adios(Package): # optional transformations depends_on('zlib', when='+zlib') depends_on('szip', when='+szip') + depends_on('zfp', when='+zfp') # optional transports & file converters depends_on('hdf5@1.8:+mpi', when='+hdf5') + # ADIOS uses the absolute Python path, which is too long and results in + # "bad interpreter" errors + patch('python.patch') # Fix ADIOS <=1.10.0 compile error on HDF5 1.10+ # https://github.com/ornladios/ADIOS/commit/3b21a8a41509 # https://github.com/LLNL/spack/issues/1683 @@ -119,6 +125,8 @@ def install(self, spec, prefix): extra_args.append('--with-zlib=%s' % spec['zlib'].prefix) if '+szip' in spec: extra_args.append('--with-szip=%s' % spec['szip'].prefix) + if '+zfp' in spec: + extra_args.append('--with-zfp=%s' % spec['zfp'].prefix) if '+hdf5' in spec: extra_args.append('--with-phdf5=%s' % spec['hdf5'].prefix) diff --git a/var/spack/repos/builtin/packages/adios/python.patch b/var/spack/repos/builtin/packages/adios/python.patch new file mode 100644 index 00000000000..96c9f576613 --- /dev/null +++ b/var/spack/repos/builtin/packages/adios/python.patch @@ -0,0 +1,10 @@ +diff --git a/utils/gpp/gpp.py.in b/utils/gpp/gpp.py.in +index cbb0d88..6977a55 100755 +--- a/utils/gpp/gpp.py.in ++++ b/utils/gpp/gpp.py.in +@@ -1,4 +1,4 @@ +-#!@PYTHON_EXECUTABLE@ ++#!/usr/bin/env python + + import sys + import os From 73836fccd2942079db8eb12c014c3ce32e8fc203 Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 19:51:00 +0100 Subject: [PATCH 0244/2394] add package py-boltons (#3279) * add package py-boltons * added description * fixed non-utf8 characters --- .../builtin/packages/py-boltons/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-boltons/package.py diff --git a/var/spack/repos/builtin/packages/py-boltons/package.py b/var/spack/repos/builtin/packages/py-boltons/package.py new file mode 100644 index 00000000000..da86792f8d5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-boltons/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyBoltons(PythonPackage): + """When they're not builtins, they're boltons. + + Functionality that should be in the standard library. Like builtins, + but Boltons. + + Otherwise known as, "everyone's util.py," but cleaned up and tested. + """ + homepage = "https://boltons.readthedocs.io/" + url = "https://pypi.io/packages/source/b/boltons/boltons-16.5.1.tar.gz" + + version('16.5.1', '014b10f240fa509fc333ebff4978111b') + + depends_on('py-setuptools', type='build') From d0835289e8578452a755ca3fcb0afb62ee885e5a Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 20:50:21 +0100 Subject: [PATCH 0245/2394] add package py-chardet (#3310) --- .../builtin/packages/py-chardet/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-chardet/package.py diff --git a/var/spack/repos/builtin/packages/py-chardet/package.py b/var/spack/repos/builtin/packages/py-chardet/package.py new file mode 100644 index 00000000000..82e6df80ea0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-chardet/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyChardet(PythonPackage): + """Universal encoding detector for Python 2 and 3""" + + homepage = "https://github.com/chardet/chardet" + url = "https://pypi.io/packages/source/c/chardet/chardet-2.3.0.tar.gz" + + version('2.3.0', '25274d664ccb5130adae08047416e1a8') + + depends_on('py-setuptools', type='build') From a562d684b7be852e51547c638029b5fdf891ad2b Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 21:26:52 +0100 Subject: [PATCH 0246/2394] add various variants to vim (#3255) * add various variants to vim * default to --enable-fail-if-missing * vim package: -{python,ruby,lua,perl} sets build option to `no` * vim's interpreter build options are `--enable-XXXXinterp={yes,no,dynamic}` * dynamic seems to work only on windows builds * `=no` is the default => use it in spack if the variant is disabled --- .../repos/builtin/packages/vim/package.py | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index e2542c3f56a..c89bc6cb8fd 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -50,6 +50,12 @@ class Vim(Package): variant('ruby', default=False, description="build with Ruby") depends_on('ruby', when='+ruby') + variant('lua', default=False, description="build with Lua") + depends_on('lua', when='+lua') + + variant('perl', default=False, description="build with Perl") + depends_on('perl', when='+perl') + variant('cscope', default=False, description="build with cscope support") depends_on('cscope', when='+cscope', type='run') @@ -77,18 +83,30 @@ def install(self, spec, prefix): if feature_set is None: feature_set = 'normal' - configure_args = [] + configure_args = ["--enable-fail-if-missing"] + configure_args.append("--with-features=" + feature_set) if '+python' in spec: configure_args.append("--enable-pythoninterp=yes") else: - configure_args.append("--enable-pythoninterp=dynamic") + configure_args.append("--enable-pythoninterp=no") if '+ruby' in spec: configure_args.append("--enable-rubyinterp=yes") else: - configure_args.append("--enable-rubyinterp=dynamic") + configure_args.append("--enable-rubyinterp=no") + + if '+lua' in spec: + configure_args.append("--enable-luainterp=yes") + configure_args.append("--with-lua-prefix=%s" % spec['lua'].prefix) + else: + configure_args.append("--enable-luainterp=no") + + if '+perl' in spec: + configure_args.append("--enable-perlinterp=yes") + else: + configure_args.append("--enable-perlinterp=no") if '+gui' in spec: configure_args.append("--enable-gui=auto") From c67b8173e33ed619d9601654a71c47d67fb82fe3 Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 23:28:42 +0100 Subject: [PATCH 0247/2394] add package py-rope (#3314) --- .../repos/builtin/packages/py-rope/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-rope/package.py diff --git a/var/spack/repos/builtin/packages/py-rope/package.py b/var/spack/repos/builtin/packages/py-rope/package.py new file mode 100644 index 00000000000..2fd7a588a0d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-rope/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyRope(PythonPackage): + """a python refactoring library.""" + + homepage = "https://github.com/python-rope/rope" + url = "https://pypi.io/packages/source/r/rope/rope-0.10.5.tar.gz" + + version('0.10.5', '21882fd7c04c29d09f75995d8a088be7') + + depends_on('py-setuptools', type='build') From 7baefa83b9d4083f13b0e085d02e4ae9b27cd9e0 Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 2 Mar 2017 23:29:01 +0100 Subject: [PATCH 0248/2394] add package py-jedi (#3313) --- .../repos/builtin/packages/py-jedi/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-jedi/package.py diff --git a/var/spack/repos/builtin/packages/py-jedi/package.py b/var/spack/repos/builtin/packages/py-jedi/package.py new file mode 100644 index 00000000000..eb058f27322 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-jedi/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyJedi(PythonPackage): + """An autocompletion tool for Python that can be used for text editors.""" + + homepage = "https://github.com/davidhalter/jedi" + url = "https://pypi.io/packages/source/j/jedi/jedi-0.9.0.tar.gz" + + version('0.9.0', '2fee93d273622527ef8c97ac736e92bd') + + depends_on('py-setuptools', type='build') From 4afb7a729c2886a25809d2c00d78f99f6e4286fa Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Thu, 2 Mar 2017 16:39:05 -0600 Subject: [PATCH 0249/2394] Make libgcc_s relocatable on Macos by adding @rpath to installname (#1671) * Make libgcc_s relocatable * spack specifies full path to lib64 * don't need trailing / * setting rpath is different on macos * add -headerpad_max_install_names linker options * formatting fixes * Add Adam's recommendation --- var/spack/repos/builtin/packages/gcc/package.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index a9fed4d8dd2..c005cd581a5 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -92,6 +92,10 @@ def configure_args(self): filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure', string=True) + # Make libgcc_s relocatable + filter_file(r"@shlib_slibdir@", "@rpath", + 'libgcc/config/t-slibgcc-darwin', string=True) + enabled_languages = set(('c', 'c++', 'fortran', 'java', 'objc')) if spec.satisfies("@4.7.1:") and sys.platform != 'darwin' and \ @@ -172,6 +176,11 @@ def write_rpath_specs(self): for line in lines: out.write(line + "\n") if line.startswith("*link:"): - out.write("-rpath %s/lib:%s/lib64 \\\n" % - (self.prefix, self.prefix)) + if sys.platform == 'darwin': + out.write("-rpath %s/lib -rpath %s/lib64 " + r"-headerpad_max_install_names \n" % + (self.prefix, self.prefix)) + else: + out.write(r"-rpath %s/lib:%s/lib64 \n" % + (self.prefix, self.prefix)) set_install_permissions(specs_file) From a7be0d4e5d9dcfd189fd8e7a9240fab7218c73b5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 2 Mar 2017 18:32:04 -0600 Subject: [PATCH 0250/2394] Convert icu4c to AutotoolsPackage (#3316) --- .../repos/builtin/packages/icu4c/package.py | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/icu4c/package.py b/var/spack/repos/builtin/packages/icu4c/package.py index e2fcb7bd5ff..5b69dfea0fd 100644 --- a/var/spack/repos/builtin/packages/icu4c/package.py +++ b/var/spack/repos/builtin/packages/icu4c/package.py @@ -25,26 +25,24 @@ from spack import * -class Icu4c(Package): +class Icu4c(AutotoolsPackage): """ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications. ICU4C is the C/C++ interface.""" homepage = "http://site.icu-project.org/" url = "http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz" + list_url = "http://download.icu-project.org/files/icu4c" + list_depth = 2 + version('58.2', 'fac212b32b7ec7ab007a12dff1f3aea1') version('57.1', '976734806026a4ef8bdd17937c8898b9') + configure_directory = 'source' + def url_for_version(self, version): - base_url = "http://download.icu-project.org/files/icu4c" - return "{0}/{1}/icu4c-{2}-src.tgz".format( - base_url, version, version.underscored) + url = "http://download.icu-project.org/files/icu4c/{0}/icu4c-{1}-src.tgz" + return url.format(version.dotted, version.underscored) - def install(self, spec, prefix): - with working_dir('source'): - configure('--prefix={0}'.format(prefix), - '--enable-rpath') - - make() - make('check') - make('install') + def configure_args(self): + return ['--enable-rpath'] From ecca9abc729df54017ed43d836eacfc6825be29e Mon Sep 17 00:00:00 2001 From: Federico Padua Date: Fri, 3 Mar 2017 01:33:36 +0100 Subject: [PATCH 0251/2394] Ior package: fix build issues (#3276) This commits address build issues reported in issue #3268. In particular, makes cleaner the dependency on parallel-netcdf when +ncmpi variant is requested and adds CFLAGS=-D H5_USE_16_API to handle the fact that Ior uses old 1.6 style APIs when +hdf5 is requested. These changes make Ior build fine and create modules for HDF5 versions 1.8.x and 1.10.0. Even though build is successfull the modules haven't been tested in a run. --- var/spack/repos/builtin/packages/ior/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ior/package.py b/var/spack/repos/builtin/packages/ior/package.py index b8825c0fe4c..04e32d88871 100644 --- a/var/spack/repos/builtin/packages/ior/package.py +++ b/var/spack/repos/builtin/packages/ior/package.py @@ -40,7 +40,7 @@ class Ior(Package): depends_on('mpi') depends_on('hdf5+mpi', when='+hdf5') - depends_on('netcdf+mpi', when='+ncmpi') + depends_on('parallel-netcdf', when='+ncmpi') def install(self, spec, prefix): os.system('./bootstrap') @@ -52,6 +52,7 @@ def install(self, spec, prefix): if '+hdf5' in spec: config_args.append('--with-hdf5') + config_args.append('CFLAGS=-D H5_USE_16_API') else: config_args.append('--without-hdf5') From bde0a674151dc514571b7e5357df7a2711b7ac3a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 2 Mar 2017 18:35:19 -0600 Subject: [PATCH 0252/2394] Add new package for PaGMO/PyGMO (#3210) * Add new package for PaGMO/PyGMO * Rename py-pygmo to pagmo * Fix concretization bug * Correct Python detection, use correct flags * Install PyGMO to the pagmo prefix, not the Python prefix --- .../repos/builtin/packages/pagmo/package.py | 119 ++++++++++++++++++ .../repos/builtin/packages/python/package.py | 1 + 2 files changed, 120 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pagmo/package.py diff --git a/var/spack/repos/builtin/packages/pagmo/package.py b/var/spack/repos/builtin/packages/pagmo/package.py new file mode 100644 index 00000000000..f4cd532bdbc --- /dev/null +++ b/var/spack/repos/builtin/packages/pagmo/package.py @@ -0,0 +1,119 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Pagmo(CMakePackage): + """Parallel Global Multiobjective Optimizer (and its Python alter ego + PyGMO) is a C++ / Python platform to perform parallel computations of + optimisation tasks (global and local) via the asynchronous generalized + island model.""" + + # Multiple homepages: + # C++ interface: https://esa.github.io/pagmo/ + # Python interface: https://esa.github.io/pygmo/ + + homepage = "https://esa.github.io/pagmo/" + url = "https://github.com/esa/pagmo/archive/1.1.7.tar.gz" + + version('1.1.7', '57ee65a5871ae36ab97087af5199cb89') + + variant('examples', default=False, description='Build examples') + variant('cxx', default=True, description='Build the C++ interface') + variant('python', default=True, description='Build Python bindings') + variant('gsl', default=True, description='Enable support for GSL minimisers') + variant('gtop', default=False, description='Build GTOP database problems') + variant('ipopt', default=False, description='Enable support for IPOPT minimiser') + variant('mpi', default=True, description='Enable support for MPI') + variant('nlopt', default=False, description='Enable support for NLopt minimisers') + variant('snopt', default=False, description='Enable support for SNOPT minimiser') + variant('tests', default=False, description='Build test set') + variant('worhp', default=False, description='Enable support for WORHP minimiser') + variant('headers', default=True, description='Installs the header files') + variant('blas', default=True, description='Enable support for BLAS') + variant('scipy', default=True, description='Enable support for scipy') + variant('networkx', default=False, description='Enable support for networkx') + variant('vpython', default=False, description='Enable support for vpython') + variant('pykep', default=False, description='Enable support for pykep') + + extends('python', when='+python') + + # Concretization in Python is currently broken + # depends_on('boost+system+serialization+thread') + # depends_on('boost+python', when='+python') + # depends_on('boost+date_time', when='+gtop') + + # Workaround for now + depends_on('boost+system+serialization+thread', when='~python~gtop') + depends_on('boost+system+serialization+thread+python', when='+python~gtop') + depends_on('boost+system+serialization+thread+date_time', when='~python+gtop') + depends_on('boost+system+serialization+thread+python+date_time', when='+python+gtop') + + depends_on('gsl@1.15:', when='+gsl') + depends_on('ipopt', when='+ipopt') + depends_on('mpi@1.2:', when='+mpi') + depends_on('blas', when='+blas') + depends_on('py-scipy', type=('build', 'run'), when='+scipy') + depends_on('py-networkx', type=('build', 'run'), when='+networkx') + + # TODO: Add packages for missing dependencies + # depends_on('nlopt+cxx', when='+nlopt') + # depends_on('snopt', when='+snopt') + # depends_on('py-vpython', type=('build', 'run'), when='+vpython') + # depends_on('py-pykep@1.15:', type=('build', 'run'), when='+gtop') + # depends_on('py-pykep@1.15:', type=('build', 'run'), when='+pykep') + + depends_on('cmake@2.8:', type='build') + + def variant_to_bool(self, variant): + return 'ON' if variant in self.spec else 'OFF' + + def cmake_args(self): + spec = self.spec + + args = [ + '-DBUILD_EXAMPLES={0}'.format(self.variant_to_bool('+examples')), + '-DBUILD_MAIN={0}'.format(self.variant_to_bool('+cxx')), + '-DBUILD_PYGMO={0}'.format(self.variant_to_bool('+python')), + '-DENABLE_GSL={0}'.format(self.variant_to_bool('+gsl')), + '-DENABLE_GTOP_DATABASE={0}'.format(self.variant_to_bool('+gtop')), + '-DENABLE_IPOPT={0}'.format(self.variant_to_bool('+ipopt')), + '-DENABLE_MPI={0}'.format(self.variant_to_bool('+mpi')), + '-DENABLE_NLOPT={0}'.format(self.variant_to_bool('+nlopt')), + '-DENABLE_SNOPT={0}'.format(self.variant_to_bool('+snopt')), + '-DENABLE_TESTS={0}'.format(self.variant_to_bool('+tests')), + '-DENABLE_WORHP={0}'.format(self.variant_to_bool('+worhp')), + '-DINSTALL_HEADERS={0}'.format(self.variant_to_bool('+headers')), + ] + + if '+python' in spec: + args.extend([ + # By default picks up the system python not the Spack build + '-DPYTHON_EXECUTABLE={0}'.format(python_exe), + # By default installs to the python prefix not the pagmo prefix + '-DPYTHON_MODULES_DIR={0}'.format(site_packages_dir), + ]) + + return args diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 9a04aaf9812..f3e2813ae86 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -387,6 +387,7 @@ def setup_dependent_package(self, module, ext_spec): 'python{0}'.format('3' if self.spec.satisfies('@3') else '') ) + module.python_exe = python_path module.python = Executable(python_path) module.setup_py = Executable(python_path + ' setup.py --no-user-cfg') From 7fcd414050c25782dcdca2d41eab90e091fcaee1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 2 Mar 2017 18:36:10 -0600 Subject: [PATCH 0253/2394] Fixes to allow Boost to build with Python 3 (#3293) * Fixes to allow Boost to build with Python 3 * Restrict patch to Python 3 only --- .../repos/builtin/packages/boost/package.py | 8 ++-- .../builtin/packages/boost/python_jam.patch | 42 +++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin/packages/boost/python_jam.patch diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 878e62db5cb..6f891de6643 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -130,6 +130,9 @@ class Boost(Package): # Patch fix from https://svn.boost.org/trac/boost/ticket/11856 patch('boost_11856.patch', when='@1.60.0%gcc@4.4.7') + # Patch fix from https://svn.boost.org/trac/boost/ticket/11120 + patch('python_jam.patch', when='^python@3:') + # Patch fix from https://svn.boost.org/trac/boost/ticket/10125 patch('boost_10125.patch', when='@1.55.0%gcc@5.0:5.9') @@ -153,7 +156,7 @@ def determine_toolset(self, spec): toolsets = {'g++': 'gcc', 'icpc': 'intel', - 'clang++': 'clang', + 'clang++': 'clang', 'xlc++': 'xlcpp', 'xlc++_r': 'xlcpp'} @@ -192,8 +195,7 @@ def determine_bootstrap_options(self, spec, withLibs, options): options.append("--with-libraries=%s" % ','.join(withLibs)) if '+python' in spec: - options.append('--with-python=%s' % - join_path(spec['python'].prefix.bin, 'python')) + options.append('--with-python=%s' % python_exe) with open('user-config.jam', 'w') as f: # Boost may end up using gcc even though clang+gfortran is set in diff --git a/var/spack/repos/builtin/packages/boost/python_jam.patch b/var/spack/repos/builtin/packages/boost/python_jam.patch new file mode 100644 index 00000000000..70054ba4edd --- /dev/null +++ b/var/spack/repos/builtin/packages/boost/python_jam.patch @@ -0,0 +1,42 @@ +diff --git a/tools/build/src/tools/python.jam b/tools/build/src/tools/python.jam +index 90377ea..123f66a 100644 +--- a/tools/build/src/tools/python.jam ++++ b/tools/build/src/tools/python.jam +@@ -493,6 +493,10 @@ local rule probe ( python-cmd ) + sys.$(s) = [ SUBST $(output) \\<$(s)=([^$(nl)]+) $1 ] ; + } + } ++ # Try to get python abiflags ++ full-cmd = $(python-cmd)" -c \"from sys import abiflags; print(abiflags, end='')\"" ; ++ ++ sys.abiflags = [ SHELL $(full-cmd) ] ; + return $(output) ; + } + } +@@ -502,7 +506,7 @@ local rule probe ( python-cmd ) + # have a value based on the information given. + # + local rule compute-default-paths ( target-os : version ? : prefix ? : +- exec-prefix ? ) ++ exec-prefix ? : abiflags ? ) + { + exec-prefix ?= $(prefix) ; + +@@ -539,7 +543,7 @@ local rule compute-default-paths ( target-os : version ? : prefix ? : + } + else + { +- includes ?= $(prefix)/include/python$(version) ; ++ includes ?= $(prefix)/include/python$(version)$(abiflags) ; + + local lib = $(exec-prefix)/lib ; + libraries ?= $(lib)/python$(version)/config $(lib) ; +@@ -783,7 +787,7 @@ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? : + exec-prefix = $(sys.exec_prefix) ; + + compute-default-paths $(target-os) : $(sys.version) : +- $(sys.prefix) : $(sys.exec_prefix) ; ++ $(sys.prefix) : $(sys.exec_prefix) : $(sys.abiflags) ; + + version = $(sys.version) ; + interpreter-cmd ?= $(cmd) ; From 4494233c93e5ac3a506f81e0684a95b5ea84fc66 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 14:57:15 +0100 Subject: [PATCH 0254/2394] add package gmime (#3327) * add package gmime * flake8 fix.. --- .../repos/builtin/packages/gmime/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gmime/package.py diff --git a/var/spack/repos/builtin/packages/gmime/package.py b/var/spack/repos/builtin/packages/gmime/package.py new file mode 100644 index 00000000000..93d0a710219 --- /dev/null +++ b/var/spack/repos/builtin/packages/gmime/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Gmime(AutotoolsPackage): + """GMime is a C/C++ library which may be used for the creation and + parsing of messages using the Multipurpose Internet Mail Extension (MIME). + """ + + homepage = "http://spruce.sourceforge.net/gmime/" + url = "https://download.gnome.org/sources/gmime/2.6/gmime-2.6.23.tar.xz" + + version('2.6.23', '247072236d84bd0fbbff299d69bdf333') + + depends_on('glib@2.18.0:') + depends_on('libgpg-error') From 15c311fbebac486b5a6199a163350428232c080c Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 14:57:47 +0100 Subject: [PATCH 0255/2394] add package notmuch and dependencies (#3329) * add package notmuch and dependencies depends on * gmime * flake8 again --- .../repos/builtin/packages/notmuch/package.py | 42 +++++++++++++++++++ .../repos/builtin/packages/talloc/package.py | 35 ++++++++++++++++ .../builtin/packages/xapian-core/package.py | 39 +++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 var/spack/repos/builtin/packages/notmuch/package.py create mode 100644 var/spack/repos/builtin/packages/talloc/package.py create mode 100644 var/spack/repos/builtin/packages/xapian-core/package.py diff --git a/var/spack/repos/builtin/packages/notmuch/package.py b/var/spack/repos/builtin/packages/notmuch/package.py new file mode 100644 index 00000000000..fea7cd89207 --- /dev/null +++ b/var/spack/repos/builtin/packages/notmuch/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Notmuch(AutotoolsPackage): + """Notmuch is a mail indexer. + + Essentially, is a very thin front end on top of xapian. + """ + + homepage = "https://notmuchmail.org/" + url = "https://notmuchmail.org/releases/notmuch-0.23.7.tar.gz" + + version('0.23.7', '1ad339b6d0c03548140434c7bcdf0624') + + depends_on('zlib') + depends_on('talloc') + depends_on('gmime@2.6:') + depends_on('xapian-core') diff --git a/var/spack/repos/builtin/packages/talloc/package.py b/var/spack/repos/builtin/packages/talloc/package.py new file mode 100644 index 00000000000..502057b3e9c --- /dev/null +++ b/var/spack/repos/builtin/packages/talloc/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Talloc(AutotoolsPackage): + """Talloc provides a hierarchical, reference counted memory pool system + with destructors. It is the core memory allocator used in Samba.""" + + homepage = "https://talloc.samba.org" + url = "https://www.samba.org/ftp/talloc/talloc-2.1.9.tar.gz" + + version('2.1.9', '19ba14eba97d79a169fa92ea824d2b9e') diff --git a/var/spack/repos/builtin/packages/xapian-core/package.py b/var/spack/repos/builtin/packages/xapian-core/package.py new file mode 100644 index 00000000000..9c2e4a55ee5 --- /dev/null +++ b/var/spack/repos/builtin/packages/xapian-core/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class XapianCore(AutotoolsPackage): + """Xapian is a highly adaptable toolkit which allows developers to easily + add advanced indexing and search facilities to their own applications. + It supports the Probabilistic Information Retrieval model and also + supports a rich set of boolean query operators.""" + + homepage = "https://xapian.org" + url = "http://oligarchy.co.uk/xapian/1.4.3/xapian-core-1.4.3.tar.xz" + + version('1.4.3', '143f72693219f7fc5913815ed858f295') + + depends_on('zlib') From 7511c9cd1ad16404263cd9590a5292fab890e715 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Fri, 3 Mar 2017 21:58:41 +0800 Subject: [PATCH 0256/2394] Add a new version for bamtools 2.4.1. (#3328) --- var/spack/repos/builtin/packages/bamtools/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/bamtools/package.py b/var/spack/repos/builtin/packages/bamtools/package.py index 7bb19850033..6ad90c779b7 100644 --- a/var/spack/repos/builtin/packages/bamtools/package.py +++ b/var/spack/repos/builtin/packages/bamtools/package.py @@ -31,6 +31,7 @@ class Bamtools(Package): homepage = "https://github.com/pezmaster31/bamtools" url = "https://github.com/pezmaster31/bamtools/archive/v2.4.0.tar.gz" + version('2.4.1', '41cadf513f2744256851accac2bc7baa') version('2.4.0', '6139d00c1b1fe88fe15d094d8a74d8b9') version('2.3.0', 'd327df4ba037d6eb8beef65d7da75ebc') version('2.2.3', '6eccd3e45e4ba12a68daa3298998e76d') From ac0fa0ca6e461c4022eba90d74791cd97f48e1aa Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 14:59:28 +0100 Subject: [PATCH 0257/2394] add package py-numpydoc (#3311) * add package py-numpydoc * removed unnecessary dependency * added dependency --- .../builtin/packages/py-numpydoc/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-numpydoc/package.py diff --git a/var/spack/repos/builtin/packages/py-numpydoc/package.py b/var/spack/repos/builtin/packages/py-numpydoc/package.py new file mode 100644 index 00000000000..70f7a603a97 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-numpydoc/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyNumpydoc(PythonPackage): + """numpydoc - Numpy's Sphinx extensions""" + + homepage = "https://github.com/numpy/numpydoc" + url = "https://pypi.io/packages/source/n/numpydoc/numpydoc-0.6.0.tar.gz" + + version('0.6.0', '5f1763c44e613850d56ba1b1cf1cb146') + + depends_on('python@2.6:2.8,3.3:') + depends_on('py-setuptools', type='build') + depends_on('py-sphinx@1.0.1:', type='build') From 2d395d7d75d9168c3eaadb4f940f654a445d0784 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 15:00:01 +0100 Subject: [PATCH 0258/2394] add package py-qtpy (#3307) * add package py-qtpy * (re)added qt dependence * changed url --- .../repos/builtin/packages/py-qtpy/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-qtpy/package.py diff --git a/var/spack/repos/builtin/packages/py-qtpy/package.py b/var/spack/repos/builtin/packages/py-qtpy/package.py new file mode 100644 index 00000000000..aeaf012999c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-qtpy/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyQtpy(PythonPackage): + """QtPy: Abtraction layer for PyQt5/PyQt4/PySide""" + + homepage = "https://github.com/spyder-ide/qtpy" + url = "https://pypi.io/packages/source/Q/QtPy/QtPy-1.2.1.tar.gz" + + version('1.2.1', 'e2f783fb7f8e502815237bd8d30c6d11') + + depends_on('py-setuptools', type='build') + depends_on('py-pyqt@4:', type=('build', 'run')) From 818118c589d89999fdf456ed8159b8dae0bba5fe Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 15:00:21 +0100 Subject: [PATCH 0259/2394] add package py-qtawesome (#3308) * add package py-qtawesome requires py-qtpy * fixed url * remove unnecessary comment --- .../builtin/packages/py-qtawesome/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-qtawesome/package.py diff --git a/var/spack/repos/builtin/packages/py-qtawesome/package.py b/var/spack/repos/builtin/packages/py-qtawesome/package.py new file mode 100644 index 00000000000..72fb53e3df7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-qtawesome/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyQtawesome(PythonPackage): + """FontAwesome icons in PyQt and PySide applications""" + + homepage = "https://github.com/spyder-ide/qtawesome" + url = "https://pypi.io/packages/source/Q/QtAwesome/QtAwesome-0.4.1.tar.gz" + + version('0.4.1', 'bf93df612a31f3b501d751fc994c1b05') + version('0.3.3', '830677aa6ca4e7014e228147475183d3') + + depends_on('py-setuptools', type='build') + depends_on('py-qtpy', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) From bb997d2de55e132af378af291add94aaf4ed3914 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 15:01:20 +0100 Subject: [PATCH 0260/2394] add package py-spyder (#3312) * add package py-spyder * fixed dependencies * py-flake8 -> py-pycodestyle * fixed packagename * Update package.py * Update package.py --- .../builtin/packages/py-spyder/package.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-spyder/package.py diff --git a/var/spack/repos/builtin/packages/py-spyder/package.py b/var/spack/repos/builtin/packages/py-spyder/package.py new file mode 100644 index 00000000000..51169e8ee4b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-spyder/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySpyder(PythonPackage): + """Scientific PYthon Development EnviRonment""" + + homepage = "https://github.com/spyder-ide/spyder" + url = "https://pypi.io/packages/source/s/spyder/spyder-3.1.3.tar.gz" + + version('3.1.3', '4b9b7c8c3e6dc00001e6e98473473c36') + version('2.3.9', 'dd01e07a77123c128ff79ba57b97c1d7') + + depends_on('py-setuptools', type='build') + depends_on('py-rope@0.9.4:', type=('build', 'run'), when='^python@:3') + # depends_on('py-rope_py3k', type=('build', 'run'), when='^python@3:') + depends_on('py-jedi@0.9.0', type=('build', 'run')) + # otherwise collision with py-flake8 + depends_on('py-pyflakes@1.2.3', type=('build', 'run')) + depends_on('py-pygments@2.0:', type=('build', 'run')) + depends_on('py-qtconsole@4.2.0:', type=('build', 'run')) + depends_on('py-nbconvert', type=('build', 'run')) + depends_on('py-sphinx', type=('build', 'run')) + depends_on('py-pycodestyle', type=('build', 'run')) + depends_on('py-pylint', type=('build', 'run')) + depends_on('py-psutil', type=('build', 'run')) + depends_on('py-qtawesome@0.4.1:', type=('build', 'run')) + depends_on('py-qtpy@1.1.0:', type=('build', 'run')) + depends_on('py-zmq', type=('build', 'run')) + depends_on('py-chardet@2:', type=('build', 'run')) + depends_on('py-pickleshare', type=('build', 'run')) + depends_on('py-numpydoc', type=('build', 'run')) From e4a0d8a78e994490ff15dd7c398c2e8abf7de367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Fri, 3 Mar 2017 22:02:32 +0800 Subject: [PATCH 0261/2394] Add packag gradle. (#3326) --- .../repos/builtin/packages/gradle/package.py | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gradle/package.py diff --git a/var/spack/repos/builtin/packages/gradle/package.py b/var/spack/repos/builtin/packages/gradle/package.py new file mode 100644 index 00000000000..a5622e70e94 --- /dev/null +++ b/var/spack/repos/builtin/packages/gradle/package.py @@ -0,0 +1,83 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree + + +class Gradle(Package): + """Gradle is an open source build automation system that builds + upon the concepts of Apache Ant and Apache Maven and introduces + a Groovy-based domain-specific language (DSL) instead of the XML + form used by Apache Maven for declaring the project configuration. + Gradle uses a directed acyclic graph ("DAG") to determine the + order in which tasks can be run.""" + + homepage = "https://gradle.org" + url = "https://services.gradle.org/distributions/gradle-3.4-all.zip" + + version('3.4', '5ae23dbd730dea22eb79cd97a072f06a') + version('3.3', '355f61e9c5d092d49577765ab3712dc0') + version('3.2.1', 'd44dba900ff364103e1f45c0f4b27bbe') + version('3.2', '296cb0e8a94bf72dd80ff7f0ebbf33ed') + version('3.1', '21b34a8c6bae67c729b37b4bd59cf9d0') + version('3.0', '0a7533599b86909c85b117e897501165') + version('2.14.1', 'f74b094923ae76f15f138d42373bb4bc') + version('2.14', 'e069dca1ec042665d61c85caeb4b32ed') + version('2.13', '8e7b31a8b8500752c3d80bd683d120c1') + version('2.12', '42cce06d8fe3a7125ac9b2a6dcc13927') + version('2.11', 'd99911cb2d0e86293e1793efc61cd642') + version('2.10', 'c5d8e57186b60c6d6485682f9907b257') + version('2.9', '1ee1a98b9a73c24633c14abf7f2a5189') + version('2.8', '9f0e8b0c195d7ea6335a724bc90622a9') + version('2.7', '77a77e364c1e2005c62909e6f51a434a') + version('2.6', '6947e873602b3668b2f3cd8e2dd228f1') + version('2.5', '17295dee02217cbe4f07b0d8bb72c467') + version('2.4', 'e1528eeca5c66579ebaee4c7c13bec2a') + version('2.3', '26c527220d869dbd6bb8cd903dd044e1') + version('2.2.1', '1107fbaf94ab7eae26d76d71b5f8db13') + version('2.2', '143830aea6bbed4ee77baa3dd191745f') + version('2.1', '603c07bc1fa737809ef0d9bc5b11960a') + version('2.0', '1d0853b99e6097ea3dea5f3604dc0846') + version('1.12', 'f957126d8e84d7ee7c859d02c2ae1fc1') + version('1.11', '36d2e8f0d5059c815496775af5f688b4') + version('1.10', 'c7ea1213cee7cf2272c5189dbc6f983b') + version('1.9', 'cc0a214649b283cc9594b5b82cb84ce5') + version('1.8', '1733ee0850618a73b54c9ba407de56b6') + version('1.5', '80e60e3b71f1745bbf06f41795ac2908') + version('1.4', 'cc934cab80bed0caccaa096b83cd4d67') + version('1.3', 'f6bce3798f4ee184926592e9a6893e0e') + version('1.2', 'c4741339370bd5e825b2abb9f2cb5b40') + version('1.1', 'afb37b4b35a30ebd5d758c333c147ce9') + version('1.0', '7697cb1e78c7e7362aa422d1790238bd') + version('0.9.2', '8574a445267ce3ad21558e300d854d24') + version('0.9.1', '8fa0acfbcdf01a8425c1f797f5079e21') + version('0.9', '9da1eb9fb32d9c303de5fd5568694634') + version('0.8', '73a0ed51b6ec00a7d3a9d242d51aae60') + version('0.7', 'a8417dbbd62f7013002cb55a44f12cc3') + + depends_on('jdk') + + def install(self, spec, prefix): + copy_tree('.', prefix) From f443490f340c388a265b9a64788c18167fd3543c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Fri, 3 Mar 2017 22:04:01 +0800 Subject: [PATCH 0262/2394] Add package sctk. (#3325) --- .../repos/builtin/packages/sctk/package.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sctk/package.py diff --git a/var/spack/repos/builtin/packages/sctk/package.py b/var/spack/repos/builtin/packages/sctk/package.py new file mode 100644 index 00000000000..680a202d7b8 --- /dev/null +++ b/var/spack/repos/builtin/packages/sctk/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree + + +class Sctk(Package): + """The NIST Scoring Toolkit (SCTK) is a collection of software tools + designed to score benchmark test evaluations of Automatic Speech + Recognition (ASR) Systems. The toolkit is currently used by NIST, + benchmark test participants, and reserchers worldwide to as a + common scoring engine.""" + + homepage = "https://www.nist.gov/itl/iad/mig/tools" + url = "http://www.openslr.org/resources/4/sctk-2.4.10-20151007-1312Z.tar.bz2" + + version('2.4.10', 'dd01ad49a33486a4754655d06177f646', + url='http://www.openslr.org/resources/4/sctk-2.4.10-20151007-1312Z.tar.bz2') + version('2.4.9', '8cdab2a1263fe103481e23776e2178a1', + url='http://www.openslr.org/resources/4/sctk-2.4.9-20141015-1634Z.tar.bz2') + version('2.4.8', '2385209185b584e28dc42ea2cd324478', + url='http://www.openslr.org/resources/4/sctk-2.4.8-20130429-2145.tar.bz2') + version('2.4.0', '77912e75304098ffcc6850ecf641d1a4', + url='http://www.openslr.org/resources/4/sctk-2.4.0-20091110-0958.tar.bz2') + + def install(self, spec, prefix): + make('config') + make('all') + make('install') + mkdirp(prefix.bin) + copy_tree('bin', prefix.bin) From 9df2649d029e666f732be1edaa79047e58aeb8cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Fri, 3 Mar 2017 22:05:16 +0800 Subject: [PATCH 0263/2394] Add package mdtest. (#3303) --- .../repos/builtin/packages/mdtest/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mdtest/package.py diff --git a/var/spack/repos/builtin/packages/mdtest/package.py b/var/spack/repos/builtin/packages/mdtest/package.py new file mode 100644 index 00000000000..06f3949bbe0 --- /dev/null +++ b/var/spack/repos/builtin/packages/mdtest/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mdtest(Package): + """mdtest is an MPI-coordinated metadata benchmark test + that performs open/stat/close operations on files + and directories and then reports the performance.""" + + homepage = "https://github.com/LLNL/mdtest" + + version('1.9.3', git='https://github.com/LLNL/mdtest.git', commit='49f3f0') + + depends_on('mpi') + + def install(self, spec, prefix): + filter_file('$(CC.$(OS))', spec['mpi'].mpicc, 'Makefile', string=True) + make('mdtest') + mkdirp(prefix.bin) + install('mdtest', prefix.bin) From def42f156d8bd914fa4e291ecc5e89cbc4f71aea Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 15:06:25 +0100 Subject: [PATCH 0264/2394] add flex variant to cscope (#3252) * add flex variant to cscope * fixed dependency * fixed typo --- var/spack/repos/builtin/packages/cscope/package.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cscope/package.py b/var/spack/repos/builtin/packages/cscope/package.py index 73017ffc57c..1e392163675 100644 --- a/var/spack/repos/builtin/packages/cscope/package.py +++ b/var/spack/repos/builtin/packages/cscope/package.py @@ -33,5 +33,12 @@ class Cscope(AutotoolsPackage): version('15.8b', '8f9409a238ee313a96f9f87fe0f3b176') - # Can be configured to use flex (not necessary) - # ./configure --with-flex + variant('flex', default=False, description="Builds with flex") + + depends_on('flex', when='+flex') + + def configure_args(self): + args = [] + if '+flex' in self.spec: + args.append('--with-flex') + return args From ba219404099dc4801b7f640acfc36502364006bc Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 15:07:50 +0100 Subject: [PATCH 0265/2394] add resource manpages to package git (#3299) * add resource manpages to package git * Update package.py * added manpages per version * added explaining comment * fixed synatx error --- .../repos/builtin/packages/git/package.py | 104 +++++++++++++++--- 1 file changed, 90 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index a0a0879382e..ef48c552c40 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -33,20 +33,6 @@ class Git(Package): homepage = "http://git-scm.com" url = "https://github.com/git/git/tarball/v2.7.1" - version('2.11.1', '2cf960f19e56f27248816809ae896794') - version('2.11.0', 'c63fb83b86431af96f8e9722ebb3ca01') - version('2.9.3', 'b0edfc0f3cb046aec7ed68a4b7282a75') - version('2.9.2', '3ff8a9b30fd5c99a02e6d6585ab543fc') - version('2.9.1', 'a5d806743a992300b45f734d1667ddd2') - version('2.9.0', 'bf33a13c2adc05bc9d654c415332bc65') - version('2.8.4', '86afb10254c3803894c9863fb5896bb6') - version('2.8.3', '0e19f31f96f9364fd247b8dc737dacfd') - version('2.8.2', '3d55550880af98f6e35c7f1d7c5aecfe') - version('2.8.1', '1308448d95afa41a4135903f22262fc8') - version('2.8.0', 'eca687e46e9750121638f258cff8317b') - version('2.7.3', 'fa1c008b56618c355a32ba4a678305f6') - version('2.7.1', 'bf0706b433a8dedd27a63a72f9a66060') - # See here for info on vulnerable Git versions: # http://www.theregister.co.uk/2016/03/16/git_server_client_patch_now/ # All the following are vulnerable @@ -57,6 +43,91 @@ class Git(Package): # version('2.5.4', '3eca2390cf1fa698b48e2a233563a76b') # version('2.2.1', 'ff41fdb094eed1ec430aed8ee9b9849c') + # In order to add new versions here, add a new list entry with: + # * version: versionnumber + # * md5: the md5sum of the v.tar.gz + # * md5_manpages: the md5sum of the corresponding manpage from + # https://www.kernel.org/pub/software/scm/git/ + # git-manpages-{}.tar.xz + + releases = [ + { + 'version': '2.11.1', + 'md5': '2cf960f19e56f27248816809ae896794', + 'md5_manpages': 'ade1e458a34a89d03dda9a6de85976bd', + }, + { + 'version': '2.11.0', + 'md5': 'c63fb83b86431af96f8e9722ebb3ca01', + 'md5_manpages': '72718851626e5b2267877cc2194a1ac9', + }, + { + 'version': '2.9.3', + 'md5': 'b0edfc0f3cb046aec7ed68a4b7282a75', + 'md5_manpages': '337165a3b2bbe4814c73075cb6854ca2', + }, + { + 'version': '2.9.2', + 'md5': '3ff8a9b30fd5c99a02e6d6585ab543fc', + 'md5_manpages': 'c4f415b4fc94cf75a1deb651ba769594', + }, + { + 'version': '2.9.1', + 'md5': 'a5d806743a992300b45f734d1667ddd2', + 'md5_manpages': '2aa797ff70c704a563c910e04c0f620a', + }, + { + 'version': '2.9.0', + 'md5': 'bf33a13c2adc05bc9d654c415332bc65', + 'md5_manpages': 'c840c968062251b768ba9852fd29054c', + }, + { + 'version': '2.8.4', + 'md5': '86afb10254c3803894c9863fb5896bb6', + 'md5_manpages': '8340e772d60ccd04a5da88fa9c976dad', + }, + { + 'version': '2.8.3', + 'md5': '0e19f31f96f9364fd247b8dc737dacfd', + 'md5_manpages': '553827e1b6c422ecc485499c1a1ae28d', + }, + { + 'version': '2.8.2', + 'md5': '3d55550880af98f6e35c7f1d7c5aecfe', + 'md5_manpages': '33330463af27eb1238cbc2b4ca100b3a', + }, + { + 'version': '2.8.1', + 'md5': '1308448d95afa41a4135903f22262fc8', + 'md5_manpages': '87bc202c6f6ae32c1c46c2dda3134ed1', + }, + { + 'version': '2.8.0', + 'md5': 'eca687e46e9750121638f258cff8317b', + 'md5_manpages': 'd67a7db0f363e8c3b2960cd84ad0373f', + }, + { + 'version': '2.7.3', + 'md5': 'fa1c008b56618c355a32ba4a678305f6', + 'md5_manpages': '97a525cca7fe38ff6bd7aaa4f0438896', + }, + { + 'version': '2.7.1', + 'md5': 'bf0706b433a8dedd27a63a72f9a66060', + 'md5_manpages': '19881ca231f73dec91fb456d74943950', + }, + ] + + for release in releases: + version(release['version'], release['md5']) + resource( + name="git-manpages", + url="https://www.kernel.org/pub/software/scm/git/" + "git-manpages-{0}.tar.xz".format(release['version']), + md5=release['md5_manpages'], + placement="git-manpages", + when="@{0}".format(release['version'])) + depends_on("autoconf", type='build') depends_on("curl") depends_on("expat") @@ -87,3 +158,8 @@ def install(self, spec, prefix): filter_file(r' -lrt$', '', 'Makefile') make() make("install") + + with working_dir("git-manpages"): + install_tree("man1", prefix.share_man1) + install_tree("man5", prefix.share_man5) + install_tree("man7", prefix.share_man7) From 191bf1e132cd63e52d39abe2a94452322131e613 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 15:39:06 +0100 Subject: [PATCH 0266/2394] add package py-elephant (#3302) * add package py-elephant * add variants for docs and pandas --- .../builtin/packages/py-elephant/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-elephant/package.py diff --git a/var/spack/repos/builtin/packages/py-elephant/package.py b/var/spack/repos/builtin/packages/py-elephant/package.py new file mode 100644 index 00000000000..eee222e19a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-elephant/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyElephant(PythonPackage): + """Elephant is a package for analysis of electrophysiology data in Python + """ + + homepage = "http://neuralensemble.org/elephant" + url = "https://pypi.io/packages/source/e/elephant/elephant-0.3.0.tar.gz" + + version('0.3.0', '84e69e6628fd617af469780c30d2da6c') + + variant('docs', default=False, description='Build the documentation') + variant('pandas', default=True, description='Build with pandas') + + depends_on('py-setuptools', type='build') + depends_on('py-neo@0.3.4:', type=('build', 'run')) # > 0.3.3 ? + depends_on('py-numpy@1.8.2:', type=('build', 'run')) + depends_on('py-quantities@0.10.1:', type=('build', 'run')) + depends_on('py-scipy@0.14.0:', type=('build', 'run')) + depends_on('py-pandas@0.14.1:', type=('build', 'run'), when='+pandas') + depends_on('py-numpydoc@0.5:', type=('build', 'run'), when='+docs') + depends_on('py-sphinx@1.2.2:', type=('build', 'run'), when='+docs') + # depends_on('py-nose@1.3.3:', type=('build', 'run')) # tests From d63a53e691669235768db51bc048c0fff88431ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sat, 4 Mar 2017 00:19:17 +0800 Subject: [PATCH 0267/2394] Fix simul by diabling inline and replacing mpicc command. (#3323) --- var/spack/repos/builtin/packages/simul/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/simul/package.py b/var/spack/repos/builtin/packages/simul/package.py index 2d379740baa..67ee61e4165 100644 --- a/var/spack/repos/builtin/packages/simul/package.py +++ b/var/spack/repos/builtin/packages/simul/package.py @@ -40,6 +40,8 @@ class Simul(Package): depends_on('mpi') def install(self, spec, prefix): + filter_file('mpicc', '$(MPICC)', 'Makefile', string=True) + filter_file('inline void', 'void', 'simul.c', string=True) make('simul') mkdirp(prefix.bin) install('simul', prefix.bin) From 897d0f3f3edacbab9f7ecb96c8e756b42f820063 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 3 Mar 2017 15:24:44 -0600 Subject: [PATCH 0268/2394] Fix unexpected keyword error in Python 2.6 (#2954) --- bin/spack | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bin/spack b/bin/spack index 9f17443d009..f885f577c8d 100755 --- a/bin/spack +++ b/bin/spack @@ -199,8 +199,7 @@ def main(args): if args.profile: import cProfile - cProfile.runctx('_main(args, unknown)', globals(), locals(), - sort='time') + cProfile.runctx('_main(args, unknown)', globals(), locals()) elif args.pdb: import pdb pdb.runctx('_main(args, unknown)', globals(), locals()) From 7dff5e76461896639d63e7362511b42a7d77c849 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 23:27:14 +0100 Subject: [PATCH 0269/2394] add package py-myhdl (#3335) * add package py-myhdl * Update package.py --- .../builtin/packages/py-myhdl/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-myhdl/package.py diff --git a/var/spack/repos/builtin/packages/py-myhdl/package.py b/var/spack/repos/builtin/packages/py-myhdl/package.py new file mode 100644 index 00000000000..cf4936a3f93 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-myhdl/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PyMyhdl(PythonPackage): + """Python as a Hardware Description Language""" + + homepage = "http://www.myhdl.org" + url = "https://pypi.io/packages/source/m/myhdl/myhdl-0.9.0.tar.gz" + + version('0.9.0', 'c3b4e7b857b6f51d43720413546df15c') + + depends_on('python@2.6:2.8,3.4:') + depends_on('py-setuptools', type='build') From dfbe3278c45497faf98207a4369d1a35700e7d24 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 23:27:32 +0100 Subject: [PATCH 0270/2394] add package py-lmfit (#3333) * add package py-lmfit * needed to deactivate testing in openblas due to spec.cppflags being undefined * undid openblas modification --- .../builtin/packages/py-lmfit/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-lmfit/package.py diff --git a/var/spack/repos/builtin/packages/py-lmfit/package.py b/var/spack/repos/builtin/packages/py-lmfit/package.py new file mode 100644 index 00000000000..460c68573da --- /dev/null +++ b/var/spack/repos/builtin/packages/py-lmfit/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyLmfit(PythonPackage): + """Least-Squares Minimization with Bounds and Constraints""" + + homepage = "http://lmfit.github.io/lmfit-py/" + url = "https://pypi.io/packages/source/l/lmfit/lmfit-0.9.5.tar.gz" + + version('0.9.5', '3a38aa3e4510a564d9e2f606d2537522') + + depends_on('py-numpy@1.5:', type=('build', 'run')) + depends_on('py-scipy@0.14:', type=('build', 'run')) + depends_on('py-setuptools', type='build') From 9ec148e4845dd5c5366cb7b77e591325cb913c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sat, 4 Mar 2017 06:28:34 +0800 Subject: [PATCH 0271/2394] Add package sga. (#3330) --- .../repos/builtin/packages/sga/package.py | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sga/package.py diff --git a/var/spack/repos/builtin/packages/sga/package.py b/var/spack/repos/builtin/packages/sga/package.py new file mode 100644 index 00000000000..41e1830de15 --- /dev/null +++ b/var/spack/repos/builtin/packages/sga/package.py @@ -0,0 +1,61 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Sga(AutotoolsPackage): + """SGA is a de novo genome assembler based on the concept of string graphs. + The major goal of SGA is to be very memory efficient, which is achieved + by using a compressed representation of DNA sequence reads.""" + + homepage = "https://www.msi.umn.edu/sw/sga" + url = "https://github.com/jts/sga/archive/v0.10.15.tar.gz" + + version('0.10.15', '990aed1593f8072650c6366e5cf32519') + version('0.10.14', '211edb372898d6515dcde98d17078b7b') + version('0.10.13', 'd4f6aefc48c940dba96cc6513649ecdd') + version('0.10.12', '993bc165b4c77b75a5a2fe01c200c0da') + version('0.10.11', 'b649da5471209f50df2d53f0f2bfa0ed') + version('0.10.10', '494ff18d82b34cdaf8432b48b0356aae') + version('0.10.9', 'c2111bfd278d8faaab19732aec79fa78') + version('0.10.8', '4d75f836eaae6018d993a0b75326014a') + version('0.10.3', 'b12d35b24ca8a63c4dcc9f5d7e7c4133') + + depends_on('zlib') + depends_on('sparsehash') + depends_on('jemalloc') + depends_on('bamtools') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + + configure_directory = 'src' + + def configure_args(self): + return [ + '--with-sparsehash={0}'.format(self.spec['sparsehash'].prefix), + '--with-bamtools={0}'.format(self.spec['bamtools'].prefix), + '--with-jemalloc={0}'.format(self.spec['jemalloc'].prefix) + ] From 37eb59622de37abab334fb586ed28819108ab9ba Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 3 Mar 2017 17:29:56 -0500 Subject: [PATCH 0272/2394] opencoarrays: Correct download url, update version (#3322) --- var/spack/repos/builtin/packages/opencoarrays/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/opencoarrays/package.py b/var/spack/repos/builtin/packages/opencoarrays/package.py index 387bc459465..3500cf75844 100644 --- a/var/spack/repos/builtin/packages/opencoarrays/package.py +++ b/var/spack/repos/builtin/packages/opencoarrays/package.py @@ -34,8 +34,9 @@ class Opencoarrays(CMakePackage): """ homepage = "http://www.opencoarrays.org/" - url = "https://github.com/sourceryinstitute/opencoarrays/releases/download/1.7.4/OpenCoarrays-1.7.4.tar.gz" + url = "https://github.com/sourceryinstitute/OpenCoarrays/releases/download/1.8.4/OpenCoarrays-1.8.4.tar.gz" + version('1.8.4', '7c9eaffc3a0b5748d0d840e52ec9d4ad') version('1.8.0', 'ca78d1507b2a118c75128c6c2e093e27') version('1.7.4', '85ba87def461e3ff5a164de2e6482930') version('1.6.2', '5a4da993794f3e04ea7855a6678981ba') From 7ef95767eef03a8498ed1a24659b9e5b52856f01 Mon Sep 17 00:00:00 2001 From: Joschka Lingemann Date: Fri, 3 Mar 2017 23:30:32 +0100 Subject: [PATCH 0273/2394] Fix error raised for multiple virtual packages. (#3306) --- lib/spack/spack/package_prefs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py index 190647bb817..63f90d9b501 100644 --- a/lib/spack/spack/package_prefs.py +++ b/lib/spack/spack/package_prefs.py @@ -43,7 +43,8 @@ def get_packages_config(): if virtuals: errors = ["%s: %s" % (line_info, name) for name, line_info in virtuals] raise VirtualInPackagesYAMLError( - "packages.yaml entries cannot be virtual packages:", *errors) + "packages.yaml entries cannot be virtual packages:", + '\n'.join(errors)) return config From 678603f3cccdd0af99de619e0bafb9c80b59a772 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 3 Mar 2017 16:31:03 -0600 Subject: [PATCH 0274/2394] scipy build fails when built in parallel (#3275) --- var/spack/repos/builtin/packages/py-scipy/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index 2039fc07c33..d99c92c58ec 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -48,5 +48,12 @@ class PyScipy(PythonPackage): depends_on('lapack') def build_args(self, spec, prefix): + args = [] + # Build in parallel - return ['-j', str(make_jobs)] + # Known problems with Python 3 + # https://github.com/scipy/scipy/issues/7112 + if not spec.satisfies('^python@3:'): + args.extend(['-j', str(make_jobs)]) + + return args From 8333c56ab8f81ddae0f9af0f9a8e5cc42f3416c3 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 3 Mar 2017 23:35:04 +0100 Subject: [PATCH 0275/2394] add versions to package py-pandas (#3338) --- var/spack/repos/builtin/packages/py-pandas/package.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py index c0da33054fb..65e70e0f5e4 100644 --- a/var/spack/repos/builtin/packages/py-pandas/package.py +++ b/var/spack/repos/builtin/packages/py-pandas/package.py @@ -36,15 +36,17 @@ class PyPandas(PythonPackage): """ homepage = "http://pandas.pydata.org/" - url = "https://pypi.python.org/packages/source/p/pandas/pandas-0.16.0.tar.gz#md5=bfe311f05dc0c351f8955fbd1e296e73" + url = "https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz" - version('0.16.0', 'bfe311f05dc0c351f8955fbd1e296e73') - version('0.16.1', 'fac4f25748f9610a3e00e765474bdea8') + version('0.19.0', 'bc9bb7188e510b5d44fbdd249698a2c3') version('0.18.0', 'f143762cd7a59815e348adf4308d2cf6') + version('0.16.1', 'fac4f25748f9610a3e00e765474bdea8') + version('0.16.0', 'bfe311f05dc0c351f8955fbd1e296e73') depends_on('py-dateutil', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run')) depends_on('py-setuptools', type='build') + depends_on('py-cython', type='build') depends_on('py-pytz', type=('build', 'run')) depends_on('py-numexpr', type=('build', 'run')) depends_on('py-bottleneck', type=('build', 'run')) From 1cf8dbd200f6e0a3e25f58a779973d314589a2d2 Mon Sep 17 00:00:00 2001 From: Andrew Holler Date: Fri, 3 Mar 2017 19:00:43 -0600 Subject: [PATCH 0276/2394] features/highwayhash (#3242) * Adding highwayhash package from Google * Added the highwayhash package for Tensorflow * Fixed the numerous flake8 issues * fixed requested changes * added conditionals for some installs * forgot an import * create install directories before you install anything in them --- .../builtin/packages/highwayhash/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/highwayhash/package.py diff --git a/var/spack/repos/builtin/packages/highwayhash/package.py b/var/spack/repos/builtin/packages/highwayhash/package.py new file mode 100644 index 00000000000..8abc1cab86d --- /dev/null +++ b/var/spack/repos/builtin/packages/highwayhash/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from glob import glob +import os + + +class Highwayhash(MakefilePackage): + """Strong (well-distributed and unpredictable) hashes: + - Portable implementation of SipHash + - HighwayHash, a 5x faster SIMD hash with security claims + """ + + homepage = "https://github.com/google/highwayhash" + + version('dfcb97', git='https://github.com/google/highwayhash.git', + commit='dfcb97ca4fe9277bf9dc1802dd979b071896453b') + + build_targets = ['all', 'libhighwayhash.a'] + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.include) + + # The following are CPU and compiler flag specific + if(os.path.exists('libhighwayhash.a')): + mkdirp(prefix.lib) + install('libhighwayhash.a', prefix.lib) + if(os.path.exists('highwayhash_test')): + install('highwayhash_test', prefix.bin) + if(os.path.exists('benchmark')): + install('benchmark', prefix.bin) + + # Always installed + install('profiler_example', prefix.bin) + install('nanobenchmark_example', prefix.bin) + install('vector_test', prefix.bin) + install('sip_hash_test', prefix.bin) + for i in glob('highwayhash/*.h'): + install(i, prefix.include) From 003e841016fdb0a0ddc1334cc519ea62b1c9d392 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 4 Mar 2017 02:30:35 +0100 Subject: [PATCH 0277/2394] openblas: fix flags (#3344) --- var/spack/repos/builtin/packages/openblas/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 5648e58b02e..4e100d715ca 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -140,8 +140,8 @@ def check_install(self): blessed_file = join_path(os.path.dirname(self.module.__file__), 'test_cblas_dgemm.output') - include_flags = spec.cppflags - link_flags = spec.libs.ld_flags + include_flags = spec['openblas'].cppflags + link_flags = spec['openblas'].libs.ld_flags if self.compiler.name == 'intel': link_flags += ' -lifcore' link_flags += ' -lpthread' From e7b019bf48922225da2f523d1475a780cf6050a5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 3 Mar 2017 21:32:44 -0600 Subject: [PATCH 0278/2394] Revert "Make libgcc_s relocatable on Macos by adding @rpath to installname" (#3349) --- var/spack/repos/builtin/packages/gcc/package.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index c005cd581a5..a9fed4d8dd2 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -92,10 +92,6 @@ def configure_args(self): filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure', string=True) - # Make libgcc_s relocatable - filter_file(r"@shlib_slibdir@", "@rpath", - 'libgcc/config/t-slibgcc-darwin', string=True) - enabled_languages = set(('c', 'c++', 'fortran', 'java', 'objc')) if spec.satisfies("@4.7.1:") and sys.platform != 'darwin' and \ @@ -176,11 +172,6 @@ def write_rpath_specs(self): for line in lines: out.write(line + "\n") if line.startswith("*link:"): - if sys.platform == 'darwin': - out.write("-rpath %s/lib -rpath %s/lib64 " - r"-headerpad_max_install_names \n" % - (self.prefix, self.prefix)) - else: - out.write(r"-rpath %s/lib:%s/lib64 \n" % - (self.prefix, self.prefix)) + out.write("-rpath %s/lib:%s/lib64 \\\n" % + (self.prefix, self.prefix)) set_install_permissions(specs_file) From 16e77086e01f32cbd0ab3abc5dcb2166f7094110 Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 4 Mar 2017 04:33:31 +0100 Subject: [PATCH 0279/2394] add package py-pyfftw (#3342) * add package py-pyfftw * Update package.py --- .../builtin/packages/py-pyfftw/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pyfftw/package.py diff --git a/var/spack/repos/builtin/packages/py-pyfftw/package.py b/var/spack/repos/builtin/packages/py-pyfftw/package.py new file mode 100644 index 00000000000..d26f2756c86 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyfftw/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPyfftw(PythonPackage): + """A pythonic wrapper around FFTW, the FFT library, + presenting a unified interface for all the supported transforms.""" + + homepage = "http://hgomersall.github.com/pyFFTW" + url = "https://pypi.io/packages/source/p/pyFFTW/pyFFTW-0.10.4.tar.gz" + + version('0.10.4', '7fb59450308881bb48d9f178947d950e') + + depends_on('fftw') + depends_on('py-setuptools', type='build') + depends_on('py-cython', type='build') + depends_on('py-numpy@1.6:', type=('build', 'run')) + depends_on('py-scipy@0.12.0:', type=('build', 'run')) From b6ebfdaa60f643e6c208256ce9bce645d396dace Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 4 Mar 2017 04:33:48 +0100 Subject: [PATCH 0280/2394] add package py-serial (#3341) * add package py-serial * fixed setuptools dependency --- .../builtin/packages/py-pyserial/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pyserial/package.py diff --git a/var/spack/repos/builtin/packages/py-pyserial/package.py b/var/spack/repos/builtin/packages/py-pyserial/package.py new file mode 100644 index 00000000000..98ecd8bffd2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyserial/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPyserial(Package): + """Python Serial Port Extension""" + + homepage = "https://github.com/pyserial/pyserial" + url = "https://pypi.io/packages/source/p/pyserial/pyserial-3.1.1.tar.gz" + + version('3.1.1', '2f72100de3e410b36d575e12e82e9d27') + + depends_on('py-setuptools', type='build') From ec816439064dd24ff1648df30b880187d591d8a3 Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 4 Mar 2017 04:34:04 +0100 Subject: [PATCH 0281/2394] add package py-pyminifier (#3340) --- .../builtin/packages/py-pyminifier/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pyminifier/package.py diff --git a/var/spack/repos/builtin/packages/py-pyminifier/package.py b/var/spack/repos/builtin/packages/py-pyminifier/package.py new file mode 100644 index 00000000000..8562a7a4728 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyminifier/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPyminifier(PythonPackage): + """Pyminifier is a Python code minifier, obfuscator, and compressor.""" + + homepage = "http://liftoff.github.io/pyminifier/" + url = "https://pypi.io/packages/source/p/pyminifier/pyminifier-2.1.tar.gz" + + version('2.1', 'c1a6b92e69f664005f7adf188c514de7') + + depends_on('py-setuptools', type='build') From f34cd4be2bbf7c66794950545bf9e3f4d0bc92ea Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 4 Mar 2017 04:34:20 +0100 Subject: [PATCH 0282/2394] add package py-neo and py-quantities (#3337) * add package py-neo and py-quantities * Update package.py * fixed errors --- .../repos/builtin/packages/py-neo/package.py | 40 +++++++++++++++++++ .../builtin/packages/py-quantities/package.py | 37 +++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-neo/package.py create mode 100644 var/spack/repos/builtin/packages/py-quantities/package.py diff --git a/var/spack/repos/builtin/packages/py-neo/package.py b/var/spack/repos/builtin/packages/py-neo/package.py new file mode 100644 index 00000000000..b7a5180add7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-neo/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyNeo(PythonPackage): + """Neo is a package for representing electrophysiology data in Python, + together with support for reading a wide range of neurophysiology + file formats""" + + homepage = "http://neuralensemble.org/neo" + url = "https://pypi.io/packages/source/n/neo/neo-0.4.1.tar.gz" + + version('0.4.1', 'f706df3a1bce835cb490b812ac198a6e') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.7.1:', type=('build', 'run')) + depends_on('py-quantities@0.9.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-quantities/package.py b/var/spack/repos/builtin/packages/py-quantities/package.py new file mode 100644 index 00000000000..617415e8394 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-quantities/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyQuantities(PythonPackage): + """Support for physical quantities with units, based on numpy""" + + homepage = "http://python-quantities.readthedocs.org" + url = "https://pypi.io/packages/source/q/quantities/quantities-0.11.1.zip" + + version('0.11.1', 'f4c6287bfd2e93322b25a7c1311a0243') + + depends_on('python@2.6.0:') + depends_on('py-numpy@1.4.0:', type=('build', 'run')) From c4e7cfe02b358dd23674b0655f1eefd03f324957 Mon Sep 17 00:00:00 2001 From: eklee15 Date: Fri, 3 Mar 2017 22:37:29 -0500 Subject: [PATCH 0283/2394] Added magma package (#3273) * Added magma package * Incorporated Serban's change * Removed cmake dependency --- .../repos/builtin/packages/magma/ibm-xl.patch | 248 ++++++++++++++++++ .../repos/builtin/packages/magma/package.py | 67 +++++ 2 files changed, 315 insertions(+) create mode 100644 var/spack/repos/builtin/packages/magma/ibm-xl.patch create mode 100644 var/spack/repos/builtin/packages/magma/package.py diff --git a/var/spack/repos/builtin/packages/magma/ibm-xl.patch b/var/spack/repos/builtin/packages/magma/ibm-xl.patch new file mode 100644 index 00000000000..0deab656464 --- /dev/null +++ b/var/spack/repos/builtin/packages/magma/ibm-xl.patch @@ -0,0 +1,248 @@ +diff -Naur magma-2.2.0/src/dlaex3_m.cpp magma-2.2.0-patched/src/dlaex3_m.cpp +--- magma-2.2.0/src/dlaex3_m.cpp 2016-11-20 20:20:06.000000000 -0500 ++++ magma-2.2.0/src/dlaex3_m.cpp 2017-01-06 15:54:29.423668874 -0500 +@@ -197,7 +197,7 @@ + magmaDouble_ptr dwork[], + magma_queue_t queues[MagmaMaxGPUs][2], + magma_range_t range, double vl, double vu, magma_int_t il, magma_int_t iu, +- magma_int_t *info ) ++ magma_int_t *infom ) + { + #define Q(i_,j_) (Q + (i_) + (j_)*ldq) + +@@ -209,8 +209,8 @@ + magma_setdevice(0); + magma_dlaex3( k, n, n1, d, Q, ldq, rho, + dlamda, Q2, indx, ctot, w, s, indxq, +- *dwork, range, vl, vu, il, iu, info ); +- return *info; ++ *dwork, range, vl, vu, il, iu, infom ); ++ return *infom; + } + double d_one = 1.; + double d_zero = 0.; +@@ -229,37 +229,37 @@ + valeig = (range == MagmaRangeV); + indeig = (range == MagmaRangeI); + +- *info = 0; ++ *infom = 0; + + if (k < 0) +- *info=-1; ++ *infom=-1; + else if (n < k) +- *info=-2; ++ *infom=-2; + else if (ldq < max(1,n)) +- *info=-6; ++ *infom=-6; + else if (! (alleig || valeig || indeig)) +- *info = -15; ++ *infom = -15; + else { + if (valeig) { + if (n > 0 && vu <= vl) +- *info = -17; ++ *infom = -17; + } + else if (indeig) { + if (il < 1 || il > max(1,n)) +- *info = -18; ++ *infom = -18; + else if (iu < min(n,il) || iu > n) +- *info = -19; ++ *infom = -19; + } + } + +- if (*info != 0) { +- magma_xerbla( __func__, -(*info) ); +- return *info; ++ if (*infom != 0) { ++ magma_xerbla( __func__, -(*infom) ); ++ return *infom; + } + + // Quick return if possible + if (k == 0) +- return *info; ++ return *infom; + + magma_device_t orig_dev; + magma_getdevice( &orig_dev ); +@@ -360,15 +360,15 @@ + lapackf77_dlaed4( &k, &tmpp, dlamda, w, Q(0,j), &rho, &d[j], &iinfo ); + // If the zero finder fails, the computation is terminated. + if (iinfo != 0) { +- #pragma omp critical (info) +- *info = iinfo; ++ #pragma omp critical (infom) ++ *infom = iinfo; + break; + } + } + + #pragma omp barrier + +- if (*info == 0) { ++ if (*infom == 0) { + #pragma omp single + { + // Prepare the INDXQ sorting permutation. +@@ -452,8 +452,8 @@ + } + } + } // end omp parallel +- if (*info != 0) +- return *info; ++ if (*infom != 0) ++ return *infom; + + timer_stop( time ); + timer_printf( "eigenvalues/vector D+zzT = %6.2f\n", time ); +@@ -474,10 +474,10 @@ + lapackf77_dlaed4( &k, &tmpp, dlamda, w, Q(0,j), &rho, &d[j], &iinfo ); + // If the zero finder fails, the computation is terminated. + if (iinfo != 0) +- *info=iinfo; ++ *infom=iinfo; + } +- if (*info != 0) +- return *info; ++ if (*infom != 0) ++ return *infom; + + // Prepare the INDXQ sorting permutation. + magma_int_t nk = n - k; +@@ -688,5 +688,5 @@ + + magma_setdevice( orig_dev ); + +- return *info; ++ return *infom; + } /* magma_dlaed3_m */ +diff -Naur magma-2.2.0/src/slaex3_m.cpp magma-2.2.0-patched/src/slaex3_m.cpp +--- magma-2.2.0/src/slaex3_m.cpp 2016-11-20 20:20:24.000000000 -0500 ++++ magma-2.2.0/src/slaex3_m.cpp 2017-01-06 10:20:13.200783151 -0500 +@@ -197,7 +197,7 @@ + magmaFloat_ptr dwork[], + magma_queue_t queues[MagmaMaxGPUs][2], + magma_range_t range, float vl, float vu, magma_int_t il, magma_int_t iu, +- magma_int_t *info ) ++ magma_int_t *infom ) + { + #define Q(i_,j_) (Q + (i_) + (j_)*ldq) + +@@ -209,8 +209,8 @@ + magma_setdevice(0); + magma_slaex3( k, n, n1, d, Q, ldq, rho, + dlamda, Q2, indx, ctot, w, s, indxq, +- *dwork, range, vl, vu, il, iu, info ); +- return *info; ++ *dwork, range, vl, vu, il, iu, infom ); ++ return *infom; + } + float d_one = 1.; + float d_zero = 0.; +@@ -229,37 +229,37 @@ + valeig = (range == MagmaRangeV); + indeig = (range == MagmaRangeI); + +- *info = 0; ++ *infom = 0; + + if (k < 0) +- *info=-1; ++ *infom=-1; + else if (n < k) +- *info=-2; ++ *infom=-2; + else if (ldq < max(1,n)) +- *info=-6; ++ *infom=-6; + else if (! (alleig || valeig || indeig)) +- *info = -15; ++ *infom = -15; + else { + if (valeig) { + if (n > 0 && vu <= vl) +- *info = -17; ++ *infom = -17; + } + else if (indeig) { + if (il < 1 || il > max(1,n)) +- *info = -18; ++ *infom = -18; + else if (iu < min(n,il) || iu > n) +- *info = -19; ++ *infom = -19; + } + } + +- if (*info != 0) { +- magma_xerbla( __func__, -(*info) ); +- return *info; ++ if (*infom != 0) { ++ magma_xerbla( __func__, -(*infom) ); ++ return *infom; + } + + // Quick return if possible + if (k == 0) +- return *info; ++ return *infom; + + magma_device_t orig_dev; + magma_getdevice( &orig_dev ); +@@ -360,15 +360,15 @@ + lapackf77_slaed4( &k, &tmpp, dlamda, w, Q(0,j), &rho, &d[j], &iinfo ); + // If the zero finder fails, the computation is terminated. + if (iinfo != 0) { +- #pragma omp critical (info) +- *info = iinfo; ++ #pragma omp critical (infom) ++ *infom = iinfo; + break; + } + } + + #pragma omp barrier + +- if (*info == 0) { ++ if (*infom == 0) { + #pragma omp single + { + // Prepare the INDXQ sorting permutation. +@@ -452,8 +452,8 @@ + } + } + } // end omp parallel +- if (*info != 0) +- return *info; ++ if (*infom != 0) ++ return *infom; + + timer_stop( time ); + timer_printf( "eigenvalues/vector D+zzT = %6.2f\n", time ); +@@ -474,10 +474,10 @@ + lapackf77_slaed4( &k, &tmpp, dlamda, w, Q(0,j), &rho, &d[j], &iinfo ); + // If the zero finder fails, the computation is terminated. + if (iinfo != 0) +- *info=iinfo; ++ *infom=iinfo; + } +- if (*info != 0) +- return *info; ++ if (*infom != 0) ++ return *infom; + + // Prepare the INDXQ sorting permutation. + magma_int_t nk = n - k; +@@ -688,5 +688,5 @@ + + magma_setdevice( orig_dev ); + +- return *info; ++ return *infom; + } /* magma_slaed3_m */ diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py new file mode 100644 index 00000000000..23a80755090 --- /dev/null +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -0,0 +1,67 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Serban Maerean, serban@us.ibm.com, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Magma(CMakePackage): + """The MAGMA project aims to develop a dense linear algebra library + similar to LAPACK but for heterogeneous/hybrid architectures, + starting with current "Multicore+GPU" systems. + """ + + homepage = "http://icl.cs.utk.edu/magma/" + url = "http://icl.cs.utk.edu/projectsfiles/magma/downloads/magma-2.2.0.tar.gz" + + version('2.2.0', '6c1ebf4cdf63eb302ff6258ff8c49217') + + variant('fortran', default=True, + description='Enable Fortran bindings support') + + depends_on('lapack') + + patch('ibm-xl.patch', when='@2.2:%xl') + patch('ibm-xl.patch', when='@2.2:%xl_r') + + def cmake_args(self): + spec = self.spec + options = [] + + options.extend([ + '-DCMAKE_INSTALL_PREFIX=%s' % prefix, + '-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix, + '-DLAPACK_LIBRARIES=%s;%s' % (spec['blas'].blas_libs, + spec['lapack'].lapack_libs) + ]) + + if '+fortran' in spec: + options.extend([ + '-DUSE_FORTRAN=yes' + ]) + if spec.satisfies('%xl') or spec.satisfies('%xl_r'): + options.extend([ + '-DCMAKE_Fortran_COMPILER=%s' % self.compiler.f77 + ]) + + return options From 16c08fb5b31a8e0173aa4c14df8228705efbc628 Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 4 Mar 2017 14:44:36 +0100 Subject: [PATCH 0284/2394] add package py-junit-xml (#3336) * add package py-junit-xml * Update package.py * flake8 fix --- .../builtin/packages/py-junit-xml/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-junit-xml/package.py diff --git a/var/spack/repos/builtin/packages/py-junit-xml/package.py b/var/spack/repos/builtin/packages/py-junit-xml/package.py new file mode 100644 index 00000000000..887193e347b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-junit-xml/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyJunitXml(PythonPackage): + """Creates JUnit XML test result documents that can be read by tools + such as Jenkins""" + + homepage = "https://github.com/kyrus/python-junit-xml" + url = "https://pypi.io/packages/source/j/junit-xml/junit-xml-1.7.tar.gz" + + version('1.7', '5e6a96edb8a1592f2832241cfd99983e') + + depends_on('py-setuptools', type='build') + depends_on('py-six', type=('build', 'run')) From 1e6871add1726e420676dae264c7399b95055bf4 Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 4 Mar 2017 14:45:07 +0100 Subject: [PATCH 0285/2394] correct ipython dependency (#3332) * correct ipython dependency * needed to introduce a github download for py-jedi * corrected dependencies * restrict appnope dependency to darwin>10.8 * flake8 fix --- .../builtin/packages/py-appnope/package.py | 34 +++++++++++++++++++ .../builtin/packages/py-ipython/package.py | 20 ++++++++--- .../repos/builtin/packages/py-jedi/package.py | 3 ++ 3 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-appnope/package.py diff --git a/var/spack/repos/builtin/packages/py-appnope/package.py b/var/spack/repos/builtin/packages/py-appnope/package.py new file mode 100644 index 00000000000..59dac3a8b37 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-appnope/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyAppnope(PythonPackage): + """Disable App Nap on OS X 10.9""" + + homepage = "https://github.com/minrk/appnope" + url = "https://pypi.io/packages/source/a/appnope/appnope-0.1.0.tar.gz" + + version('0.1.0', '932fbaa73792c9b06754755a774dcac5') diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py index 277e090faa5..ff0355c5df6 100644 --- a/var/spack/repos/builtin/packages/py-ipython/package.py +++ b/var/spack/repos/builtin/packages/py-ipython/package.py @@ -23,6 +23,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys +import platform class PyIpython(PythonPackage): @@ -35,15 +37,23 @@ class PyIpython(PythonPackage): version('3.1.0', 'a749d90c16068687b0ec45a27e72ef8f') version('2.3.1', '2b7085525dac11190bfb45bb8ec8dcbf') - depends_on('py-pygments', type=('build', 'run')) - depends_on('py-setuptools', type=('build', 'run')) + depends_on('python@2.7:2.8,3.3:') + depends_on('py-setuptools@18.5:', type=('build', 'run')) # These dependencies breaks concretization # See https://github.com/LLNL/spack/issues/2793 # depends_on('py-backports-shutil-get-terminal-size', when="^python@:3.2.999") # noqa # depends_on('py-pathlib2', when="^python@:3.3.999") depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run')) - depends_on('py-pathlib2', type=('build', 'run')) + depends_on('py-pathlib2', type=('build', 'run')) - depends_on('py-pickleshare', type=('build', 'run')) - depends_on('py-simplegeneric', type=('build', 'run')) + depends_on('py-pygments', type=('build', 'run')) + depends_on('py-pickleshare', type=('build', 'run')) + depends_on('py-simplegeneric@0.8:', type=('build', 'run')) + depends_on('py-prompt-toolkit@1.0.4:1.999', type=('build', 'run')) + depends_on('py-traitlets@4.2:', type=('build', 'run')) + depends_on('py-decorator', type=('build', 'run')) + + depends_on('py-appnope', type=('build', 'run'), + when=sys.platform == 'darwin' and + int(platform.mac_ver()[0].split('.')[1]) >= 9) diff --git a/var/spack/repos/builtin/packages/py-jedi/package.py b/var/spack/repos/builtin/packages/py-jedi/package.py index eb058f27322..81f83f9ab76 100644 --- a/var/spack/repos/builtin/packages/py-jedi/package.py +++ b/var/spack/repos/builtin/packages/py-jedi/package.py @@ -31,6 +31,9 @@ class PyJedi(PythonPackage): homepage = "https://github.com/davidhalter/jedi" url = "https://pypi.io/packages/source/j/jedi/jedi-0.9.0.tar.gz" + # unfortunately pypi.io only offers a .whl + version('0.10.0', '89ed853d4a283bfa0fdbcf688b4d35fe', + url='https://github.com/davidhalter/jedi/archive/v0.10.0.tar.gz') version('0.9.0', '2fee93d273622527ef8c97ac736e92bd') depends_on('py-setuptools', type='build') From 3e4fced7d8057dbb5bb4a364b91e386abaedefaa Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 4 Mar 2017 08:49:12 -0500 Subject: [PATCH 0286/2394] ncurses: Work around an awk bug (#3361) --- var/spack/repos/builtin/packages/ncurses/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 3d4a0838c57..74ed140a292 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -46,6 +46,9 @@ class Ncurses(AutotoolsPackage): def configure_args(self): opts = [ + # The CPPFLAGS setting works around this bug: + # + 'CPPFLAGS=-P', 'CFLAGS={0}'.format(self.compiler.pic_flag), 'CXXFLAGS={0}'.format(self.compiler.pic_flag), '--with-shared', From d52ac82f95673f55599ed1c2fb3b007f97ff2f33 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 4 Mar 2017 07:49:57 -0600 Subject: [PATCH 0287/2394] Convert gl2ps to CMakePackage (#3360) * Convert gl2ps to CMakePackage * Remove unused spec variable --- .../repos/builtin/packages/gl2ps/package.py | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/gl2ps/package.py b/var/spack/repos/builtin/packages/gl2ps/package.py index d5e7b00027d..606e97e27b4 100644 --- a/var/spack/repos/builtin/packages/gl2ps/package.py +++ b/var/spack/repos/builtin/packages/gl2ps/package.py @@ -25,7 +25,7 @@ from spack import * -class Gl2ps(Package): +class Gl2ps(CMakePackage): """GL2PS is a C library providing high quality vector output for any OpenGL application.""" @@ -34,10 +34,37 @@ class Gl2ps(Package): version('1.3.9', '377b2bcad62d528e7096e76358f41140') - depends_on("libpng") + variant('png', default=True, description='Enable PNG support') + variant('zlib', default=True, description='Enable compression using ZLIB') - def install(self, spec, prefix): - cmake('.', *std_cmake_args) + depends_on('cmake@2.4:', type='build') - make() - make("install") + # TODO: Add missing dependencies on OpenGL/Mesa and LaTeX + + # X11 libraries: + depends_on('libice') + depends_on('libsm') + depends_on('libxau') + depends_on('libxdamage') + depends_on('libxdmcp') + depends_on('libxext') + depends_on('libxfixes') + depends_on('libxi') + depends_on('libxmu') + depends_on('libxt') + depends_on('libxxf86vm') + depends_on('libxcb') + depends_on('libdrm') + depends_on('expat') + + depends_on('libpng', when='+png') + depends_on('zlib', when='+zlib') + + def variant_to_bool(self, variant): + return 'ON' if variant in self.spec else 'OFF' + + def cmake_args(self): + return [ + '-DENABLE_PNG={0}'.format(self.variant_to_bool('+png')), + '-DENABLE_ZLIB={0}'.format(self.variant_to_bool('+zlib')), + ] From 0c1441c3e3f4dfaf1b0cd6c607efeddd7f55d454 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Sat, 4 Mar 2017 06:50:38 -0700 Subject: [PATCH 0288/2394] Using fPIC in PERL when using an Intel compiler. (#3355) --- var/spack/repos/builtin/packages/perl/package.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 45036f68101..4bacad427bd 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -31,7 +31,7 @@ from spack import * -class Perl(Package): +class Perl(Package): # Perl doesn't use Autotools, it should subclass Package """Perl 5 is a highly capable, feature-rich programming language with over 27 years of development.""" homepage = "http://www.perl.org" @@ -63,7 +63,12 @@ class Perl(Package): def install(self, spec, prefix): configure = Executable('./Configure') - configure("-des", "-Dprefix=" + prefix) + configure_args = ["-des", "-Dprefix=" + prefix] + # Discussion of -fPIC for Intel at: + # https://github.com/LLNL/spack/pull/3081 + if spec.satisfies('%intel'): + configure_args.append("-Accflags=" + self.compiler.pic_flag) + configure(*configure_args) make() if self.run_tests: make("test") From c3ac86310e7d091e775ef3835b3f2fb3f7c26c02 Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Sat, 4 Mar 2017 08:53:50 -0500 Subject: [PATCH 0289/2394] ADIOS: change subclassing from Package to AutotoolsPackage (#3230) * ADIOS: change the invocation of python script that generates test files The python script ADIOS*/utils/gpp/gpp.py is invoked directly in the ADIOS*/tests/genarray/Makefile and the name of the python interpreter can be quite long if it is one built under spack, i.e. longer than the 80 characters allowed by the #! line in bash. The name of the shbang line is truncated at 80 characters and bash cannot find the python interpreter specified. This fix changes how the script is executed, by invoking it under python. This way, the shbang line is ignored. * adios: fixed flake8 errors from previous commit. * adio: Switch to AutotoolsPackage class from Package class Switched in order to add support for the ppc64le platform. --- .../repos/builtin/packages/adios/package.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 6066dd078ed..870e049fc91 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -26,7 +26,7 @@ from spack import * -class Adios(Package): +class Adios(AutotoolsPackage): """The Adaptable IO System (ADIOS) provides a simple, flexible way for scientists to describe the data in their code that may need to be written, @@ -77,6 +77,8 @@ class Adios(Package): # optional transports & file converters depends_on('hdf5@1.8:+mpi', when='+hdf5') + build_directory = 'spack-build' + # ADIOS uses the absolute Python path, which is too long and results in # "bad interpreter" errors patch('python.patch') @@ -95,9 +97,10 @@ def validate(self, spec): msg = 'cannot build a fortran variant without a fortran compiler' raise RuntimeError(msg) - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec self.validate(spec) - # Handle compilation after spec validation + extra_args = [] # required, otherwise building its python bindings on ADIOS will fail @@ -130,10 +133,4 @@ def install(self, spec, prefix): if '+hdf5' in spec: extra_args.append('--with-phdf5=%s' % spec['hdf5'].prefix) - sh = which('sh') - sh('./autogen.sh') - - configure("--prefix=%s" % prefix, - *extra_args) - make() - make("install") + return extra_args From a36ed7fb9b93163358b8e5f63ad0f702f2410b6e Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 4 Mar 2017 16:42:02 +0100 Subject: [PATCH 0290/2394] fix blas/lapack usage after PR 1875 (#3365) --- .../builtin/packages/elemental/package.py | 28 +++++++++---------- .../repos/builtin/packages/lammps/package.py | 4 +-- .../repos/builtin/packages/magma/package.py | 8 +++--- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index 4aae98e3e14..dd4ae291ec8 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -27,7 +27,7 @@ class Elemental(CMakePackage): - """Elemental: Distributed-memory dense and sparse-direct linear algebra + """Elemental: Distributed-memory dense and sparse-direct linear algebra and optimization library.""" homepage = "http://libelemental.org" @@ -36,28 +36,28 @@ class Elemental(CMakePackage): version('0.87.7', '6c1e7442021c59a36049e37ea69b8075') version('0.87.6', '9fd29783d45b0a0e27c0df85f548abe9') - variant('debug', default=False, + variant('debug', default=False, description='Builds a debug version of the libraries') - variant('shared', default=True, + variant('shared', default=True, description='Enables the build of shared libraries') - variant('hybrid', default=True, + variant('hybrid', default=True, description='Make use of OpenMP within MPI packing/unpacking') variant('openmp_blas', default=False, description='Use OpenMP for threading in the BLAS library') - variant('c', default=False, + variant('c', default=False, description='Build C interface') - variant('python', default=False, + variant('python', default=False, description='Install Python interface') - variant('parmetis', default=False, + variant('parmetis', default=False, description='Enable ParMETIS') - variant('quad', default=False, + variant('quad', default=False, description='Enable quad precision') - variant('int64', default=False, + variant('int64', default=False, description='Use 64bit integers') # When this variant is set remove the normal dependencies since # Elemental has to build BLAS and ScaLAPACK internally - variant('int64_blas', default=False, - description='Use 64bit integers for BLAS.' + variant('int64_blas', default=False, + description='Use 64bit integers for BLAS.' ' Requires local build of BLAS library.') variant('scalapack', default=False, description='Build with ScaLAPACK library') @@ -127,11 +127,11 @@ def cmake_args(self): '_64_' if '+int64_blas' in spec else '_')), '-DCUSTOM_LAPACK_SUFFIX:BOOL=TRUE']), else: - math_libs = (spec['lapack'].lapack_libs + - spec['blas'].blas_libs) + math_libs = (spec['lapack'].libs + + spec['blas'].libs) if '+scalapack' in spec: - math_libs = spec['scalapack'].scalapack_libs + math_libs + math_libs = spec['scalapack'].libs + math_libs args.extend([ '-DMATH_LIBS:STRING={0}'.format(math_libs.search_flags), diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index d7c41f2e2e2..61c7b229807 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -160,8 +160,8 @@ def build_user_atc(self): make('lib', '-f', 'Makefile.icc') with open('Makefile.lammps', 'w') as fh: - lapack_blas = (self.spec['lapack'].lapack_libs + - self.spec['blas'].blas_libs) + lapack_blas = (self.spec['lapack'].libs + + self.spec['blas'].libs) makefile = [ 'user-atc_SYSINC =', 'user-atc_SYSLIB = {0}'.format(lapack_blas.ld_flags), diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py index 23a80755090..c45974c7c64 100644 --- a/var/spack/repos/builtin/packages/magma/package.py +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -26,7 +26,7 @@ class Magma(CMakePackage): - """The MAGMA project aims to develop a dense linear algebra library + """The MAGMA project aims to develop a dense linear algebra library similar to LAPACK but for heterogeneous/hybrid architectures, starting with current "Multicore+GPU" systems. """ @@ -51,9 +51,9 @@ def cmake_args(self): options.extend([ '-DCMAKE_INSTALL_PREFIX=%s' % prefix, '-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix, - '-DLAPACK_LIBRARIES=%s;%s' % (spec['blas'].blas_libs, - spec['lapack'].lapack_libs) - ]) + '-DLAPACK_LIBRARIES=%s;%s' % (spec['blas'].libs, + spec['lapack'].libs) + ]) if '+fortran' in spec: options.extend([ From 192a4b30f0a08f3e05aad9accfe3bf42f7554759 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 4 Mar 2017 17:24:48 +0100 Subject: [PATCH 0291/2394] atlas: added a missing property decorator (#3366) --- var/spack/repos/builtin/packages/atlas/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/atlas/package.py b/var/spack/repos/builtin/packages/atlas/package.py index b62d39dde8f..68a91c964b7 100644 --- a/var/spack/repos/builtin/packages/atlas/package.py +++ b/var/spack/repos/builtin/packages/atlas/package.py @@ -112,6 +112,7 @@ def install(self, spec, prefix): make("install") self.install_test() + @property def libs(self): # libsatlas.[so,dylib,dll ] contains all serial APIs (serial lapack, # serial BLAS), and all ATLAS symbols needed to support them. Whereas From a2d70a45fbc2ee07160c3ee750dbffe9d4fd5b1b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 4 Mar 2017 11:23:57 -0600 Subject: [PATCH 0292/2394] Allow find_libraries to accept lists or strings (#3363) * Allow find_libraries to accept lists or strings * Convert one more example from list to string --- lib/spack/llnl/util/filesystem.py | 26 ++++++++++--------- lib/spack/spack/spec.py | 2 +- .../builtin/packages/armadillo/package.py | 4 +-- .../repos/builtin/packages/cp2k/package.py | 2 +- .../builtin/packages/elemental/package.py | 2 +- .../builtin/packages/netlib-lapack/package.py | 4 +-- .../packages/netlib-scalapack/package.py | 2 +- .../repos/builtin/packages/octopus/package.py | 8 +++--- .../builtin/packages/openspeedshop/package.py | 6 ++--- .../builtin/packages/veclibfort/package.py | 2 +- 10 files changed, 30 insertions(+), 28 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 79f15f9a214..7f6773266d7 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -568,20 +568,22 @@ def find_libraries(args, root, shared=True, recurse=False): """Returns an iterable object containing a list of full paths to libraries if found. - Args: - args: iterable object containing a list of library names to \ - search for (e.g. 'libhdf5') - root: root folder where to start searching - shared: if True searches for shared libraries, otherwise for static - recurse: if False search only root folder, if True descends top-down \ - from the root + :param args: Library name(s) to search for + :type args: str or collections.Sequence + :param str root: The root directory to start searching from + :param bool shared: if True searches for shared libraries, + otherwise for static + :param bool recurse: if False search only root folder, + if True descends top-down from the root - Returns: - list of full paths to the libraries that have been found + :returns: The libraries that have been found + :rtype: LibraryList """ - if not isinstance(args, collections.Sequence) or isinstance(args, str): - message = '{0} expects a sequence of strings as first argument' - message += ' [got {1} instead]' + if isinstance(args, str): + args = [args] + elif not isinstance(args, collections.Sequence): + message = '{0} expects a string or sequence of strings as the ' + message += 'first argument [got {1} instead]' raise TypeError(message.format(find_libraries.__name__, type(args))) # Construct the right suffix for the library diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index c0ee8486db4..9fc2c99e4ad 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -767,7 +767,7 @@ def _libs_default_handler(descriptor, spec, cls): name = 'lib' + spec.name shared = '+shared' in spec return find_libraries( - [name], root=spec.prefix, shared=shared, recurse=True + name, root=spec.prefix, shared=shared, recurse=True ) diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index 9ab1b66880e..7bf28efc0dc 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -47,9 +47,9 @@ class Armadillo(Package): depends_on('hdf5', when='+hdf5') def install(self, spec, prefix): - arpack = find_libraries(['libarpack'], root=spec[ + arpack = find_libraries('libarpack', root=spec[ 'arpack-ng'].prefix.lib, shared=True) - superlu = find_libraries(['libsuperlu'], root=spec[ + superlu = find_libraries('libsuperlu', root=spec[ 'superlu'].prefix, shared=False, recurse=True) cmake_args = [ # ARPACK support diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 9bf7a5bc6bd..0909d8cb81c 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -92,7 +92,7 @@ def install(self, spec, prefix): ] fcflags = copy.deepcopy(optflags[self.spec.compiler.name]) fcflags.append(spec['fftw'].cppflags) - fftw = find_libraries(['libfftw3'], root=spec['fftw'].prefix.lib) + fftw = find_libraries('libfftw3', root=spec['fftw'].prefix.lib) ldflags = [fftw.search_flags] libs = [ join_path(spec['libint'].prefix.lib, 'libint.so'), diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index dd4ae291ec8..ccc55092d06 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -82,7 +82,7 @@ class Elemental(CMakePackage): def elemental_libs(self): shared = True if '+shared' in self.spec else False return find_libraries( - ['libEl'], root=self.prefix, shared=shared, recurse=True + 'libEl', root=self.prefix, shared=shared, recurse=True ) def build_type(self): diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py index 9d0ebae371f..fa11ae63671 100644 --- a/var/spack/repos/builtin/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py @@ -74,14 +74,14 @@ def patch(self): def blas_libs(self): shared = True if '+shared' in self.spec else False return find_libraries( - ['libblas'], root=self.prefix, shared=shared, recurse=True + 'libblas', root=self.prefix, shared=shared, recurse=True ) @property def lapack_libs(self): shared = True if '+shared' in self.spec else False return find_libraries( - ['liblapack'], root=self.prefix, shared=shared, recurse=True + 'liblapack', root=self.prefix, shared=shared, recurse=True ) def install_one(self, spec, prefix, shared): diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py index 7d8b803abf8..6a97180328e 100644 --- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py @@ -62,7 +62,7 @@ class NetlibScalapack(Package): def scalapack_libs(self): shared = True if '+shared' in self.spec else False return find_libraries( - ['libscalapack'], root=self.prefix, shared=shared, recurse=True + 'libscalapack', root=self.prefix, shared=shared, recurse=True ) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py index 81e4543745a..88350f50bca 100644 --- a/var/spack/repos/builtin/packages/octopus/package.py +++ b/var/spack/repos/builtin/packages/octopus/package.py @@ -38,7 +38,7 @@ class Octopus(Package): # Sample url is: # "http://www.tddft.org/programs/octopus/down.php?file=5.0.1/octopus-5.0.1.tar.gz" def url_for_version(self, version): - return '{0}/{1}/octopus-{1}.tar.gz'.format(Octopus.base_url, + return '{0}/{1}/octopus-{1}.tar.gz'.format(Octopus.base_url, version.dotted) variant('scalapack', default=False, @@ -69,7 +69,7 @@ def url_for_version(self, version): # feast, libfm, pfft, isf, pnfft def install(self, spec, prefix): - arpack = find_libraries(['libarpack'], root=spec[ + arpack = find_libraries('libarpack', root=spec[ 'arpack-ng'].prefix.lib, shared=True) lapack = spec['lapack'].libs blas = spec['blas'].libs @@ -96,12 +96,12 @@ def install(self, spec, prefix): if '+netcdf' in spec: args.extend([ '--with-netcdf-prefix=%s' % spec['netcdf-fortran'].prefix, - '--with-netcdf-include=%s' % + '--with-netcdf-include=%s' % spec['netcdf-fortran'].prefix.include, ]) if '+arpack-ng' in spec: args.extend([ - '--with-arpack={0}'.format(arpack.joined()), + '--with-arpack={0}'.format(arpack.joined()), ]) if '+scalapack' in spec: args.extend([ diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 2e908b40994..ae2655735aa 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -60,7 +60,7 @@ class Openspeedshop(Package): """ homepage = "http://www.openspeedshop.org" - url = "https://github.com/OpenSpeedShop" + url = "https://github.com/OpenSpeedShop" version('2.2', '16cb051179c2038de4e8a845edf1d573') # Use when the git repository is available version('2.3', branch='master', @@ -230,7 +230,7 @@ def setup_environment(self, spack_env, run_env): # set the DYNINSTAPI_RT_LIB library which is # required for OpenSpeedShop to find loop level # performance information - dyninst_libdir = find_libraries(['libdyninstAPI_RT'], + dyninst_libdir = find_libraries('libdyninstAPI_RT', root=self.spec['dyninst'].prefix, shared=True, recurse=True) @@ -238,7 +238,7 @@ def setup_environment(self, spack_env, run_env): run_env.set('DYNINSTAPI_RT_LIB', dyninst_libdir) # Find openspeedshop library path - oss_libdir = find_libraries(['libopenss-framework'], + oss_libdir = find_libraries('libopenss-framework', root=self.spec['openspeedshop'].prefix, shared=True, recurse=True) run_env.prepend_path('LD_LIBRARY_PATH', diff --git a/var/spack/repos/builtin/packages/veclibfort/package.py b/var/spack/repos/builtin/packages/veclibfort/package.py index fa99acfa971..26e64248bbd 100644 --- a/var/spack/repos/builtin/packages/veclibfort/package.py +++ b/var/spack/repos/builtin/packages/veclibfort/package.py @@ -47,7 +47,7 @@ class Veclibfort(Package): def libs(self): shared = True if '+shared' in self.spec else False return find_libraries( - ['libvecLibFort'], root=self.prefix, shared=shared, recurse=True + 'libvecLibFort', root=self.prefix, shared=shared, recurse=True ) def install(self, spec, prefix): From a7bab8a4186755c40de9dc3331c0538fe85f1a33 Mon Sep 17 00:00:00 2001 From: healther Date: Sun, 5 Mar 2017 03:12:37 +0100 Subject: [PATCH 0293/2394] add package py-py-cpuinfo (#3339) * add package py-py-cpuinfo * renamed package to py-cpuinfo --- .../builtin/packages/py-cpuinfo/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-cpuinfo/package.py diff --git a/var/spack/repos/builtin/packages/py-cpuinfo/package.py b/var/spack/repos/builtin/packages/py-cpuinfo/package.py new file mode 100644 index 00000000000..bc517624eb0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-cpuinfo/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyCpuinfo(PythonPackage): + """Get CPU info with pure Python 2 & 3""" + + homepage = "https://github.com/workhorsy/py-cpuinfo" + url = "https://pypi.io/packages/source/p/py-cpuinfo/py-cpuinfo-0.2.3.tar.gz" + + version('0.2.3', '780ff46a0e122af09cb2c40b2706c6dc') + + depends_on('py-setuptools', type='build') From 00d6cb9a8fab30f21d35413e4e882dccacb52676 Mon Sep 17 00:00:00 2001 From: Barry Smith Date: Sun, 5 Mar 2017 07:34:38 -0600 Subject: [PATCH 0294/2394] Fixes veclibfort which was broken by PR1875 (#3368) Funded-by: IDEAS Project: IDEAS/xSDK Thanks-to: Adam J. Stewart --- var/spack/repos/builtin/packages/veclibfort/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/veclibfort/package.py b/var/spack/repos/builtin/packages/veclibfort/package.py index 26e64248bbd..4a056803ca4 100644 --- a/var/spack/repos/builtin/packages/veclibfort/package.py +++ b/var/spack/repos/builtin/packages/veclibfort/package.py @@ -44,6 +44,7 @@ class Veclibfort(Package): provides('blas') provides('lapack') + @property def libs(self): shared = True if '+shared' in self.spec else False return find_libraries( @@ -60,6 +61,6 @@ def install(self, spec, prefix): # test fc = which('fc') flags = ['-o', 'tester', '-O', 'tester.f90'] - flags.extend(spec.libs.ld_flags.split()) + flags.extend(spec['veclibfort'].libs.ld_flags.split()) fc(*flags) Executable('./tester')() From 55e1550a59cc2d354723b0c85aba6350c400d90c Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 5 Mar 2017 13:29:02 -0500 Subject: [PATCH 0295/2394] openblas: Run tests only when requested (#3370) The tests fail on some systems (e.g. Comet at SDSC) that impose limits on the number of processes or threads one can run simultaneously on the head node. Thus the tests should not be run by default. --- var/spack/repos/builtin/packages/openblas/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 4e100d715ca..b6a81c2055e 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -117,6 +117,7 @@ def build_targets(self): return self.make_defs + targets + @on_package_attributes(run_tests=True) @run_after('build') def check_build(self): make('tests', *self.make_defs) @@ -129,6 +130,7 @@ def install_targets(self): ] return make_args + self.make_defs + @on_package_attributes(run_tests=True) @run_after('install') def check_install(self): spec = self.spec From 2ae1ebbbe8e6364d7926429cd1014d8092365477 Mon Sep 17 00:00:00 2001 From: Hans Pabst Date: Tue, 7 Mar 2017 15:58:17 +0100 Subject: [PATCH 0296/2394] LIBXSMM 1.7.1 (#3371) * Cleanup list of offered versions (only the latest update release of each minor version is kept: 1.4.4, 1.5.2, 1.6.6, 1.7.1); introduced master revision (via Git). Slightly more selective installation of the documentation; copy README.md and LICENSE files to documentation folder. Removed outdated build options (make_args); generally stay with LIBXSMM's defaults (general purpose build). Introduced one build variant ("debug"). * Incorporated comments of PR #3371 (https://github.com/LLNL/spack/pull/3371). * Fixed flake8 complaints. * Made the full list of versions available starting with version 1.4 (there are earlier releases, however those have been released before the Spack specification became available; original spec. also started with 1.4). * Made DBG and TRACE actually two separate arguments. --- .../repos/builtin/packages/libxsmm/package.py | 54 +++++++++++++++---- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py index a7364906005..969557c3298 100644 --- a/var/spack/repos/builtin/packages/libxsmm/package.py +++ b/var/spack/repos/builtin/packages/libxsmm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -23,20 +23,40 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +from glob import glob class Libxsmm(Package): - '''LIBXSMM is a library for small dense and small sparse matrix-matrix - multiplications targeting Intel Architecture (x86).''' + '''Library targeting Intel Architecture + for small, dense or sparse matrix multiplications, + and small convolutions.''' homepage = 'https://github.com/hfp/libxsmm' - url = 'https://github.com/hfp/libxsmm/archive/1.4.3.tar.gz' + url = 'https://github.com/hfp/libxsmm/archive/1.7.1.tar.gz' + version('develop', git='https://github.com/hfp/libxsmm.git') + + version('1.7.1', 'a938335b1c2c90616dc72c2c1a5824ab') + version('1.7', 'cb3aff6d123ba70bd3d4daf575767d14') + version('1.6.6', '8b45ae022f36b8c212f579a0952b5034') + version('1.6.5', 'fa21fe88d092477fa796a346ac7674ff') + version('1.6.4', '23e484f7b9f980c2a3819db6e6c68710') + version('1.6.3', '7969c56e6faed66f9e07d86f063ecf0b') + version('1.6.2', '1920e58fdf00d2635d24cf5c07007bfc') + version('1.6.1', 'e3493c77c57d42cfa58e0e55a69ee22c') + version('1.6', '31c130aa176db23944de420b59e1c74d') + version('1.5.2', 'ecda62ec3e5c60897d0d7780c524bc19') + version('1.5.1', '612244e92024e11ec672bafb6e85c01b') + version('1.5', '7b550702b55dc8e73a42a2986a1e1b36') + version('1.4.4', '78beefa57da02126cf4556f0eef3f8f0') version('1.4.3', '9839bf0fb8be7badf1e97ce4c817149b') version('1.4.2', 'ea025761437f3b5c936821b9ca21ec31') version('1.4.1', '71648500ea4510529845d329091917df') version('1.4', 'b42f91bf5285e7ad0463446e55ebdc2b') + variant('debug', default=False, + description='Unoptimized with call-trace (LIBXSMM_TRACE).') + def patch(self): kwargs = {'ignore_absent': False, 'backup': False, 'string': True} makefile = FileFilter('Makefile.inc') @@ -53,14 +73,26 @@ def patch(self): def manual_install(self, prefix): install_tree('include', prefix.include) install_tree('lib', prefix.lib) - install_tree('documentation', prefix.share + '/libxsmm/doc') + doc_path = prefix.share + '/libxsmm/doc' + mkdirp(doc_path) + for doc_file in glob('documentation/*.md'): + install(doc_file, doc_path) + for doc_file in glob('documentation/*.pdf'): + install(doc_file, doc_path) + install('README.md', doc_path) + install('LICENSE', doc_path) def install(self, spec, prefix): - make_args = [ - 'ROW_MAJOR=0', - 'INDICES_M={0}'.format(' '.join(str(i) for i in range(1, 25))), - 'INDICES_N={0}'.format(' '.join(str(i) for i in range(1, 25))), - 'INDICES_K={0}'.format(' '.join(str(i) for i in range(1, 25))) - ] + # include symbols by default + make_args = ['SYM=1'] + + # JIT (AVX and later) makes MNK, M, N, or K spec. superfluous +# make_args += ['MNK=1 4 5 6 8 9 13 16 17 22 23 24 26 32'] + + # include call trace as the build is already de-optimized + if '+debug' in spec: + make_args += ['DBG=1'] + make_args += ['TRACE=1'] + make(*make_args) self.manual_install(prefix) From 5d1a16805e10e49a864f994f6b247b7796d70475 Mon Sep 17 00:00:00 2001 From: Aidan San Date: Tue, 7 Mar 2017 09:00:53 -0600 Subject: [PATCH 0297/2394] Added gemmlowp package (#3240) --- .../builtin/packages/gemmlowp/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gemmlowp/package.py diff --git a/var/spack/repos/builtin/packages/gemmlowp/package.py b/var/spack/repos/builtin/packages/gemmlowp/package.py new file mode 100644 index 00000000000..3cc4a1135f2 --- /dev/null +++ b/var/spack/repos/builtin/packages/gemmlowp/package.py @@ -0,0 +1,40 @@ +############################################################################# +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Gemmlowp(Package): + """Google low-precision matrix multiplication library""" + + homepage = "https://github.com/google/gemmlowp" + version('a6f29d9ac', git='https://github.com/google/gemmlowp.git', + commit='a6f29d8ac48d63293f845f2253eccbf86bc28321') + + def install(self, spec, prefix): + header_directories = ('eight_bit_int_gemm', 'fixedpoint', + 'internal', 'meta', 'profiling', 'public') + + for directory in header_directories: + install_tree(directory, join_path(prefix.include, directory)) From 3d9cd72e33c3cd249685835fec89427e0136a632 Mon Sep 17 00:00:00 2001 From: AP97 Date: Tue, 7 Mar 2017 09:02:08 -0600 Subject: [PATCH 0298/2394] Adding farmhash package from google (#3239) * Adding farmhash package from google --- .../builtin/packages/farmhash/CMakeLists.txt | 25 +++++++++++ .../builtin/packages/farmhash/package.py | 42 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 var/spack/repos/builtin/packages/farmhash/CMakeLists.txt create mode 100644 var/spack/repos/builtin/packages/farmhash/package.py diff --git a/var/spack/repos/builtin/packages/farmhash/CMakeLists.txt b/var/spack/repos/builtin/packages/farmhash/CMakeLists.txt new file mode 100644 index 00000000000..0286f29ad0c --- /dev/null +++ b/var/spack/repos/builtin/packages/farmhash/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 2.8.3) + +project(farmhash) + +set(FARMHASH_SRCS + "src/farmhash.h" + "src/farmhash.cc" +) + +set(FARMHASH_INCLUDES + "src/farmhash.h" +) + +include_directories("${CMAKE_CURRENT_SOURCE_DIR}") + +add_library(farmhash ${FARMHASH_SRCS}) +add_definitions(-DFARMHASH_NO_BUILTIN_EXPECT) + +install(TARGETS farmhash + LIBRARY DESTINATION lib COMPONENT RuntimeLibraries + ARCHIVE DESTINATION lib COMPONENT Development) + +foreach(FARMHASH_INCLUDE ${FARMHASH_INCLUDES}) + install(FILES ${FARMHASH_INCLUDE} DESTINATION include COMPONENT Development) +endforeach() diff --git a/var/spack/repos/builtin/packages/farmhash/package.py b/var/spack/repos/builtin/packages/farmhash/package.py new file mode 100644 index 00000000000..13ed781d17b --- /dev/null +++ b/var/spack/repos/builtin/packages/farmhash/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os.path +from shutil import copyfile + + +class Farmhash(CMakePackage): + """ + FarmHash provides hash functions for strings and other data. + """ + + homepage = "https://github.com/google/farmhash" + + version('92e897', git='https://github.com/google/farmhash.git', + commit='92e897b282426729f4724d91a637596c7e2fe28f') + + def patch(self): + copyfile(join_path(os.path.dirname(__file__), "CMakeLists.txt"), + "CMakeLists.txt") From c6d9a45f18cedd810cdee891d462199f86dc6a7c Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 7 Mar 2017 16:03:12 +0100 Subject: [PATCH 0299/2394] test/environment.py: ported to pytest, added a test on separators (#3375) --- lib/spack/spack/test/environment.py | 364 ++++++++++++++++------------ 1 file changed, 214 insertions(+), 150 deletions(-) diff --git a/lib/spack/spack/test/environment.py b/lib/spack/spack/test/environment.py index e9f0a5182fd..0da137c1922 100644 --- a/lib/spack/spack/test/environment.py +++ b/lib/spack/spack/test/environment.py @@ -22,182 +22,246 @@ # 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 unittest import os +import pytest from spack import spack_root -from llnl.util.filesystem import join_path from spack.environment import EnvironmentModifications -from spack.environment import SetEnv, UnsetEnv from spack.environment import RemovePath, PrependPath, AppendPath +from spack.environment import SetEnv, UnsetEnv from spack.util.environment import filter_system_paths, filter_system_bin_paths -class EnvironmentTest(unittest.TestCase): +@pytest.fixture() +def prepare_environment_for_tests(): + """Sets a few dummy variables in the current environment, that will be + useful for the tests below. + """ + os.environ['UNSET_ME'] = 'foo' + os.environ['EMPTY_PATH_LIST'] = '' + os.environ['PATH_LIST'] = '/path/second:/path/third' + os.environ['REMOVE_PATH_LIST'] = '/a/b:/duplicate:/a/c:/remove/this:/a/d:/duplicate/:/f/g' # NOQA: ignore=E501 + yield + for x in ('UNSET_ME', 'EMPTY_PATH_LIST', 'PATH_LIST', 'REMOVE_PATH_LIST'): + if x in os.environ: + del os.environ[x] - def setUp(self): - os.environ['UNSET_ME'] = 'foo' - os.environ['EMPTY_PATH_LIST'] = '' - os.environ['PATH_LIST'] = '/path/second:/path/third' - os.environ['REMOVE_PATH_LIST'] = \ - '/a/b:/duplicate:/a/c:/remove/this:/a/d:/duplicate/:/f/g' - def tearDown(self): - pass +@pytest.fixture +def env(prepare_environment_for_tests): + """Returns an empty EnvironmentModifications object.""" + return EnvironmentModifications() - def test_set(self): - env = EnvironmentModifications() - env.set('A', 'dummy value') - env.set('B', 3) - env.apply_modifications() - self.assertEqual('dummy value', os.environ['A']) - self.assertEqual(str(3), os.environ['B']) - def test_unset(self): - env = EnvironmentModifications() - self.assertEqual('foo', os.environ['UNSET_ME']) - env.unset('UNSET_ME') - env.apply_modifications() - self.assertRaises(KeyError, os.environ.__getitem__, 'UNSET_ME') +@pytest.fixture +def miscellaneous_paths(): + """Returns a list of paths, including system ones.""" + return [ + '/usr/local/Cellar/gcc/5.3.0/lib', + '/usr/local/lib', + '/usr/local', + '/usr/local/include', + '/usr/local/lib64', + '/usr/local/opt/some-package/lib', + '/usr/opt/lib', + '/lib', + '/', + '/usr', + '/lib64', + '/include', + '/opt/some-package/include', + ] - def test_filter_system_paths(self): - filtered = filter_system_paths([ - '/usr/local/Cellar/gcc/5.3.0/lib', - '/usr/local/lib', - '/usr/local', - '/usr/local/include', - '/usr/local/lib64', - '/usr/local/opt/some-package/lib', - '/usr/opt/lib', - '/lib', - '/', - '/usr', - '/lib64', - '/include', - '/opt/some-package/include', - ]) - self.assertEqual(filtered, - ['/usr/local/Cellar/gcc/5.3.0/lib', - '/usr/local/opt/some-package/lib', - '/usr/opt/lib', - '/opt/some-package/include']) - filtered = filter_system_bin_paths([ - '/usr/local/Cellar/gcc/5.3.0/bin', - '/usr/local/bin', - '/usr/local/opt/some-package/bin', - '/usr/opt/bin', - '/bin', - '/opt/some-package/bin', - ]) - self.assertEqual(filtered, - ['/usr/local/bin', - '/bin', - '/usr/local/Cellar/gcc/5.3.0/bin', - '/usr/local/opt/some-package/bin', - '/usr/opt/bin', - '/opt/some-package/bin']) +@pytest.fixture +def bin_paths(): + """Returns a list of bin paths, including system ones.""" + return [ + '/usr/local/Cellar/gcc/5.3.0/bin', + '/usr/local/bin', + '/usr/local/opt/some-package/bin', + '/usr/opt/bin', + '/bin', + '/opt/some-package/bin', + ] - def test_set_path(self): - env = EnvironmentModifications() - env.set_path('A', ['foo', 'bar', 'baz']) - env.apply_modifications() - self.assertEqual('foo:bar:baz', os.environ['A']) - def test_path_manipulation(self): - env = EnvironmentModifications() +@pytest.fixture +def files_to_be_sourced(): + """Returns a list of files to be sourced""" + datadir = os.path.join( + spack_root, 'lib', 'spack', 'spack', 'test', 'data' + ) - env.append_path('PATH_LIST', '/path/last') - env.prepend_path('PATH_LIST', '/path/first') + files = [ + os.path.join(datadir, 'sourceme_first.sh'), + os.path.join(datadir, 'sourceme_second.sh'), + os.path.join(datadir, 'sourceme_parameters.sh intel64') + ] - env.append_path('EMPTY_PATH_LIST', '/path/middle') - env.append_path('EMPTY_PATH_LIST', '/path/last') - env.prepend_path('EMPTY_PATH_LIST', '/path/first') + return files - env.append_path('NEWLY_CREATED_PATH_LIST', '/path/middle') - env.append_path('NEWLY_CREATED_PATH_LIST', '/path/last') - env.prepend_path('NEWLY_CREATED_PATH_LIST', '/path/first') - env.remove_path('REMOVE_PATH_LIST', '/remove/this') - env.remove_path('REMOVE_PATH_LIST', '/duplicate/') +def test_set(env): + """Tests setting values in the environment.""" - env.apply_modifications() - self.assertEqual( - '/path/first:/path/second:/path/third:/path/last', - os.environ['PATH_LIST'] - ) - self.assertEqual( - '/path/first:/path/middle:/path/last', - os.environ['EMPTY_PATH_LIST'] - ) - self.assertEqual( - '/path/first:/path/middle:/path/last', - os.environ['NEWLY_CREATED_PATH_LIST'] - ) - self.assertEqual('/a/b:/a/c:/a/d:/f/g', os.environ['REMOVE_PATH_LIST']) + # Here we are storing the commands to set a couple of variables + env.set('A', 'dummy value') + env.set('B', 3) - def test_extra_arguments(self): - env = EnvironmentModifications() - env.set('A', 'dummy value', who='Pkg1') - for x in env: - assert 'who' in x.args - env.apply_modifications() - self.assertEqual('dummy value', os.environ['A']) + # ...and then we are executing them + env.apply_modifications() - def test_extend(self): - env = EnvironmentModifications() - env.set('A', 'dummy value') - env.set('B', 3) - copy_construct = EnvironmentModifications(env) - self.assertEqual(len(copy_construct), 2) - for x, y in zip(env, copy_construct): - assert x is y + assert 'dummy value' == os.environ['A'] + assert str(3) == os.environ['B'] - def test_source_files(self): - datadir = join_path(spack_root, 'lib', 'spack', - 'spack', 'test', 'data') - files = [ - join_path(datadir, 'sourceme_first.sh'), - join_path(datadir, 'sourceme_second.sh'), - join_path(datadir, 'sourceme_parameters.sh intel64') - ] - env = EnvironmentModifications.from_sourcing_files(*files) - modifications = env.group_by_name() - # This is sensitive to the user's environment; can include - # spurious entries for things like PS1 - # - # TODO: figure out how to make a bit more robust. - self.assertTrue(len(modifications) >= 4) +def test_unset(env): + """Tests unsetting values in the environment.""" - # Set new variables - self.assertEqual(len(modifications['NEW_VAR']), 1) - self.assertTrue(isinstance(modifications['NEW_VAR'][0], SetEnv)) - self.assertEqual(modifications['NEW_VAR'][0].value, 'new') + # Assert that the target variable is there and unset it + assert 'foo' == os.environ['UNSET_ME'] + env.unset('UNSET_ME') + env.apply_modifications() - self.assertEqual(len(modifications['FOO']), 1) - self.assertTrue(isinstance(modifications['FOO'][0], SetEnv)) - self.assertEqual(modifications['FOO'][0].value, 'intel64') + # Trying to retrieve is after deletion should cause a KeyError + with pytest.raises(KeyError): + os.environ['UNSET_ME'] - # Unset variables - self.assertEqual(len(modifications['EMPTY_PATH_LIST']), 1) - self.assertTrue(isinstance( - modifications['EMPTY_PATH_LIST'][0], UnsetEnv)) - # Modified variables - self.assertEqual(len(modifications['UNSET_ME']), 1) - self.assertTrue(isinstance(modifications['UNSET_ME'][0], SetEnv)) - self.assertEqual(modifications['UNSET_ME'][0].value, 'overridden') - self.assertEqual(len(modifications['PATH_LIST']), 3) - self.assertTrue( - isinstance(modifications['PATH_LIST'][0], RemovePath) - ) - self.assertEqual(modifications['PATH_LIST'][0].value, '/path/third') - self.assertTrue( - isinstance(modifications['PATH_LIST'][1], AppendPath) - ) - self.assertEqual(modifications['PATH_LIST'][1].value, '/path/fourth') - self.assertTrue( - isinstance(modifications['PATH_LIST'][2], PrependPath) - ) - self.assertEqual(modifications['PATH_LIST'][2].value, '/path/first') +def test_filter_system_paths(miscellaneous_paths): + """Tests that the filtering of system paths works as expected.""" + filtered = filter_system_paths(miscellaneous_paths) + expected = [ + '/usr/local/Cellar/gcc/5.3.0/lib', + '/usr/local/opt/some-package/lib', + '/usr/opt/lib', + '/opt/some-package/include' + ] + assert filtered == expected + + +def test_filter_system_bin_paths(bin_paths): + """Tests that the filtering of system bin paths works as expected.""" + filtered = filter_system_bin_paths(bin_paths) + expected = [ + '/usr/local/bin', + '/bin', + '/usr/local/Cellar/gcc/5.3.0/bin', + '/usr/local/opt/some-package/bin', + '/usr/opt/bin', + '/opt/some-package/bin' + ] + assert filtered == expected + + +def test_set_path(env): + """Tests setting paths in an environment variable.""" + + # Check setting paths with the default separator + env.set_path('A', ['foo', 'bar', 'baz']) + env.apply_modifications() + + assert 'foo:bar:baz' == os.environ['A'] + + env.set_path('B', ['foo', 'bar', 'baz'], separator=';') + env.apply_modifications() + + assert 'foo;bar;baz' == os.environ['B'] + + +def test_path_manipulation(env): + """Tests manipulating list of paths in the environment.""" + + env.append_path('PATH_LIST', '/path/last') + env.prepend_path('PATH_LIST', '/path/first') + + env.append_path('EMPTY_PATH_LIST', '/path/middle') + env.append_path('EMPTY_PATH_LIST', '/path/last') + env.prepend_path('EMPTY_PATH_LIST', '/path/first') + + env.append_path('NEWLY_CREATED_PATH_LIST', '/path/middle') + env.append_path('NEWLY_CREATED_PATH_LIST', '/path/last') + env.prepend_path('NEWLY_CREATED_PATH_LIST', '/path/first') + + env.remove_path('REMOVE_PATH_LIST', '/remove/this') + env.remove_path('REMOVE_PATH_LIST', '/duplicate/') + + env.apply_modifications() + + expected = '/path/first:/path/second:/path/third:/path/last' + assert os.environ['PATH_LIST'] == expected + + expected = '/path/first:/path/middle:/path/last' + assert os.environ['EMPTY_PATH_LIST'] == expected + + expected = '/path/first:/path/middle:/path/last' + assert os.environ['NEWLY_CREATED_PATH_LIST'] == expected + + assert os.environ['REMOVE_PATH_LIST'] == '/a/b:/a/c:/a/d:/f/g' + + +def test_extra_arguments(env): + """Tests that we can attach extra arguments to any command.""" + env.set('A', 'dummy value', who='Pkg1') + for x in env: + assert 'who' in x.args + + env.apply_modifications() + assert 'dummy value' == os.environ['A'] + + +def test_extend(env): + """Tests that we can construct a list of environment modifications + starting from another list. + """ + env.set('A', 'dummy value') + env.set('B', 3) + copy_construct = EnvironmentModifications(env) + + assert len(copy_construct) == 2 + + for x, y in zip(env, copy_construct): + assert x is y + + +@pytest.mark.usefixtures('prepare_environment_for_tests') +def test_source_files(files_to_be_sourced): + """Tests the construction of a list of environment modifications that are + the result of sourcing a file. + """ + + env = EnvironmentModifications.from_sourcing_files(*files_to_be_sourced) + modifications = env.group_by_name() + + # This is sensitive to the user's environment; can include + # spurious entries for things like PS1 + # + # TODO: figure out how to make a bit more robust. + assert len(modifications) >= 4 + + # Set new variables + assert len(modifications['NEW_VAR']) == 1 + assert isinstance(modifications['NEW_VAR'][0], SetEnv) + assert modifications['NEW_VAR'][0].value == 'new' + + assert len(modifications['FOO']) == 1 + assert isinstance(modifications['FOO'][0], SetEnv) + assert modifications['FOO'][0].value == 'intel64' + + # Unset variables + assert len(modifications['EMPTY_PATH_LIST']) == 1 + assert isinstance(modifications['EMPTY_PATH_LIST'][0], UnsetEnv) + + # Modified variables + assert len(modifications['UNSET_ME']) == 1 + assert isinstance(modifications['UNSET_ME'][0], SetEnv) + assert modifications['UNSET_ME'][0].value == 'overridden' + + assert len(modifications['PATH_LIST']) == 3 + assert isinstance(modifications['PATH_LIST'][0], RemovePath) + assert modifications['PATH_LIST'][0].value == '/path/third' + assert isinstance(modifications['PATH_LIST'][1], AppendPath) + assert modifications['PATH_LIST'][1].value == '/path/fourth' + assert isinstance(modifications['PATH_LIST'][2], PrependPath) + assert modifications['PATH_LIST'][2].value == '/path/first' From f1d66467e33e26c5d4e73cf94858c6222a8ca00b Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 7 Mar 2017 16:05:45 +0100 Subject: [PATCH 0300/2394] package.py: packages dump build dependencies in prefix (#3373) Modifications: - `dump_packages` copies build dependencies into `$prefix/.spack`, as well as the link/run dependencies that we already copied there. - fake installs copy dependency packages into `$prefix/.spack` as well --- lib/spack/spack/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 3be3bffc709..8889de75763 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1058,6 +1058,8 @@ def do_fake_install(self): touch(join_path(self.prefix.lib, library_name + dso_suffix)) touch(join_path(self.prefix.lib, library_name + '.a')) mkdirp(self.prefix.man1) + packages_dir = spack.store.layout.build_packages_path(self.spec) + dump_packages(self.spec, packages_dir) def _if_make_target_execute(self, target): try: @@ -1816,7 +1818,7 @@ def dump_packages(spec, path): # Note that we copy them in as they are in the *install* directory # NOT as they are in the repository, because we want a snapshot of # how *this* particular build was done. - for node in spec.traverse(): + for node in spec.traverse(deptype=spack.alldeps): if node is not spec: # Locate the dependency package in the install tree and find # its provenance information. From bacb60457d0490f4fd4ab4132006e8099e65535e Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 8 Mar 2017 17:18:57 +0100 Subject: [PATCH 0301/2394] Add package py-guiqwt and dependencies (#3334) * add package py-guiqwt with dependencies * fixed url * fixed url2 * Update package.py * Update package.py --- .../builtin/packages/py-guidata/package.py | 40 +++++++++++++++++ .../builtin/packages/py-guiqwt/package.py | 42 +++++++++++++++++ .../builtin/packages/py-pythonqwt/package.py | 42 +++++++++++++++++ .../builtin/packages/py-qtconsole/package.py | 45 +++++++++++++++++++ 4 files changed, 169 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-guidata/package.py create mode 100644 var/spack/repos/builtin/packages/py-guiqwt/package.py create mode 100644 var/spack/repos/builtin/packages/py-pythonqwt/package.py create mode 100644 var/spack/repos/builtin/packages/py-qtconsole/package.py diff --git a/var/spack/repos/builtin/packages/py-guidata/package.py b/var/spack/repos/builtin/packages/py-guidata/package.py new file mode 100644 index 00000000000..57863de39c7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-guidata/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyGuidata(PythonPackage): + """Automatic graphical user interfaces generation for easy dataset editing + and display""" + + homepage = "https://github.com/PierreRaybaut/guidata" + url = "https://pypi.io/packages/source/g/guidata/guidata-1.7.5.zip" + + version('1.7.5', '915188c02ad3c89951ee260db65d84a7') + + depends_on('py-setuptools', type='build') + depends_on('py-pyqt@4:', type=('build', 'run')) + depends_on('py-spyder@2.0:2.9.9', type=('build', 'run')) + depends_on('py-h5py', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-guiqwt/package.py b/var/spack/repos/builtin/packages/py-guiqwt/package.py new file mode 100644 index 00000000000..8422ff51972 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-guiqwt/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyGuiqwt(PythonPackage): + """guiqwt is a set of tools for curve and image plotting + (extension to PythonQwt)""" + + homepage = "https://github.com/PierreRaybaut/guiqwt" + url = "https://pypi.io/packages/source/g/guiqwt/guiqwt-3.0.2.zip" + + version('3.0.2', 'b49cd9706f56eb5d519390ba709d8c8c') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.3:', type=('build', 'run')) + depends_on('py-scipy@0.7:', type=('build', 'run')) + depends_on('py-guidata@1.7.0:', type=('build', 'run')) + depends_on('py-pythonqwt@0.5.0:', type=('build', 'run')) + depends_on('py-pillow', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pythonqwt/package.py b/var/spack/repos/builtin/packages/py-pythonqwt/package.py new file mode 100644 index 00000000000..22ede1f8684 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pythonqwt/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPythonqwt(PythonPackage): + """Qt plotting widgets for Python""" + + homepage = "https://github.com/PierreRaybaut/PythonQwt" + url = "https://pypi.io/packages/source/P/PythonQwt/PythonQwt-0.5.5.zip" + + version('0.5.5', 'a60c7da9fbca667337d14aca094b6fda') + + variant('docs', default=False, description="Build documentation.") + + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.3:', type=('build', 'run')) + depends_on('py-sip', type=('build', 'run')) + depends_on('py-pyqt@4:', type=('build', 'run')) + depends_on('py-sphinx@1.1:', type=('build', 'run'), when='+docs') diff --git a/var/spack/repos/builtin/packages/py-qtconsole/package.py b/var/spack/repos/builtin/packages/py-qtconsole/package.py new file mode 100644 index 00000000000..73f423943a4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-qtconsole/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyQtconsole(PythonPackage): + """Jupyter Qt console""" + + homepage = "http://ipython.org" + url = "https://pypi.io/packages/source/q/qtconsole/qtconsole-4.2.1.tar.gz" + + version('4.2.1', 'c08ebebc7a60629ebadf685361ca0798') + + variant('docs', default=False, description='Build documentation') + + depends_on('py-setuptools', type='build') + depends_on('py-ipykernel@4.1:', type=('build', 'run')) + depends_on('py-jupyter-client@4.1:', type=('build', 'run')) + depends_on('py-jupyter-core', type=('build', 'run')) + depends_on('py-pygments', type=('build', 'run')) + depends_on('py-traitlets', type=('build', 'run')) + depends_on('py-sphinx@1.3:', type=('build', 'run'), when='+docs') + # mock; python_version=="2.7" and extra == 'test' From acf95c92a667e0861b3a55451717744ffffcd5b7 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Wed, 8 Mar 2017 12:32:26 -0800 Subject: [PATCH 0302/2394] Fixes the Elemental and LBANN packages to conform to the new syntax (#3382) introduced by PR https://github.com/LLNL/spack/pull/1875 --- var/spack/repos/builtin/packages/elemental/package.py | 2 +- var/spack/repos/builtin/packages/lbann/package.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index ccc55092d06..f1cc77c33c6 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -79,7 +79,7 @@ class Elemental(CMakePackage): depends_on('python@:2.8', when='+python') @property - def elemental_libs(self): + def libs(self): shared = True if '+shared' in self.spec else False return find_libraries( 'libEl', root=self.prefix, shared=shared, recurse=True diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index 341487ca770..f0355fb96dd 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -45,7 +45,7 @@ class Lbann(CMakePackage): depends_on('elemental +openmp_blas +scalapack +shared +int64 +debug', when='+debug') depends_on('cuda', when='+gpu') depends_on('mpi') - depends_on('opencv@2.4.13', when='+opencv') + depends_on('opencv@3.2.0', when='+opencv') depends_on('protobuf@3.0.2') def build_type(self): @@ -71,7 +71,7 @@ def cmake_args(self): '-DWITH_VTUNE=OFF', '-DElemental_DIR={0}'.format(self.spec['elemental'].prefix), '-DELEMENTAL_MATH_LIBS={0}'.format( - self.spec['elemental'].elemental_libs), + self.spec['elemental'].libs), '-DVERBOSE=0', '-DLBANN_HOME=.', '-DLBANN_VER=spack'] From f2c1cbdcd3b0ebc2e9984c573ecc07df88c16849 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 9 Mar 2017 14:40:05 +0100 Subject: [PATCH 0303/2394] patch: configure and build out of source fixes #3387 (#3388) --- var/spack/repos/builtin/packages/patch/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/patch/package.py b/var/spack/repos/builtin/packages/patch/package.py index df890c057a7..3bdaf8c3bde 100644 --- a/var/spack/repos/builtin/packages/patch/package.py +++ b/var/spack/repos/builtin/packages/patch/package.py @@ -35,3 +35,5 @@ class Patch(AutotoolsPackage): url = "http://ftp.gnu.org/gnu/patch/patch-2.7.5.tar.xz" version('2.7.5', 'e3da7940431633fb65a01b91d3b7a27a') + + build_directory = 'spack-build' From e8c8e444e879a6244ce3b089beb34aaae604be7a Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 9 Mar 2017 15:10:45 +0100 Subject: [PATCH 0304/2394] Fixing checkum of py-coverage v4.3.4 (#3386) --- var/spack/repos/builtin/packages/py-coverage/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-coverage/package.py b/var/spack/repos/builtin/packages/py-coverage/package.py index 1dcaeec7d5f..c55b4373fc4 100644 --- a/var/spack/repos/builtin/packages/py-coverage/package.py +++ b/var/spack/repos/builtin/packages/py-coverage/package.py @@ -31,7 +31,7 @@ class PyCoverage(PythonPackage): homepage = "http://nedbatchelder.com/code/coverage/" url = "https://pypi.io/packages/source/c/coverage/coverage-4.3.4.tar.gz" - version('4.3.4', 'd347766b06bbb4fd0bc822014b7cfb0a') + version('4.3.4', '89759813309185efcf4af8b9f7762630') version('4.0a6', '1bb4058062646148965bef0796b61efc') depends_on('py-setuptools', type='build') From c1f8fbed34ad856edcb621c028f70d269bca5e15 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 9 Mar 2017 15:11:06 +0100 Subject: [PATCH 0305/2394] ncl: Update to 6.4.0 (#3384) --- var/spack/repos/builtin/packages/ncl/package.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index 7d31c7a8f77..9f834eee3b7 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -36,9 +36,8 @@ class Ncl(Package): homepage = "https://www.ncl.ucar.edu" - version('6.3.0', '4834df63d3b56778441246303ab921c4', - url='https://www.earthsystemgrid.org/download/fileDownload.html?' - 'logicalFileId=bec58cb3-cd9b-11e4-bb80-00c0f03d5b7c', + version('6.4.0', 'a981848ddcaf1c263279648265f24766', + url='https://www.earthsystemgrid.org/download/fileDownload.html?logicalFileId=86b9bec2-fa01-11e6-a976-00c0f03d5b7c', extension='tar.gz') patch('spack_ncl.patch') @@ -180,6 +179,8 @@ def prepare_install_config(self): 'y\n', # Build GDAL support (optional) into NCL? 'y\n' if '+gdal' in self.spec else 'n\n', + # Build EEMD support (optional) into NCL? + 'n\n', # Build Udunits-2 support (optional) into NCL? 'y\n' if '+uduints2' in self.spec else 'n\n', # Build Vis5d+ support (optional) into NCL? From 44b165461a1c3c069e9115f4ae1141926807f014 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 9 Mar 2017 15:11:23 +0100 Subject: [PATCH 0306/2394] udunits2: Add build dependency on texinfo (#3383) --- var/spack/repos/builtin/packages/udunits2/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/udunits2/package.py b/var/spack/repos/builtin/packages/udunits2/package.py index faf40551947..1f2243907e9 100644 --- a/var/spack/repos/builtin/packages/udunits2/package.py +++ b/var/spack/repos/builtin/packages/udunits2/package.py @@ -44,6 +44,7 @@ class Udunits2(AutotoolsPackage): depends_on('automake', type='build') depends_on('autoconf', type='build') depends_on('pkg-config', type='build') + depends_on('texinfo', type='build') def autoreconf(self, spec, prefix): # Work around autogen.sh oddities From 21e913bac531a674c7f4c574d09aceb8e7b212cf Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Thu, 9 Mar 2017 06:11:59 -0800 Subject: [PATCH 0307/2394] Updated the spectrum-mpi package to get the right compiler names when (#3381) we use spectrum. --- var/spack/repos/builtin/packages/spectrum-mpi/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/spectrum-mpi/package.py b/var/spack/repos/builtin/packages/spectrum-mpi/package.py index 58af1acc841..d743f4874ad 100644 --- a/var/spack/repos/builtin/packages/spectrum-mpi/package.py +++ b/var/spack/repos/builtin/packages/spectrum-mpi/package.py @@ -63,3 +63,8 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpic++')) spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77')) spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90')) + + spack_env.set('OMPI_CC', spack_cc) + spack_env.set('OMPI_CXX', spack_cxx) + spack_env.set('OMPI_FC', spack_fc) + spack_env.set('OMPI_F77', spack_f77) From 2ac343e92ea0213121f05e4edaf51da4abfd79c9 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 9 Mar 2017 09:14:13 -0500 Subject: [PATCH 0308/2394] cosmomc: New package CosmoMC (#3292) * cosmomc: New package CosmoMC * cosmomc: Improve version numbering scheme * planck-likelihood: New package * cosmomc: Pacify flake8 * cosmomc: Code cleanup as requested in the review * cosmomc: Various updates suggested during review * cosmomc: Limit compiler versions (as documented in the build instructions) * cosmomc: Correct flake8 error * cosmomc: Use `libs` instead of `lapack_libs` * planck-likelihood: Make makefile output more verbose and readable * planck-likelilhood: Correct order of libraries when calling linker * cosmomc: Clean up check for suitable compiler * planck-likelihood: Use modern mechanism to set environment variables --- .../builtin/packages/cosmomc/Makefile.patch | 26 +++ .../builtin/packages/cosmomc/errorstop.patch | 11 + .../repos/builtin/packages/cosmomc/package.py | 201 ++++++++++++++++++ .../packages/planck-likelihood/fortran.patch | 11 + .../packages/planck-likelihood/make.patch | 21 ++ .../packages/planck-likelihood/package.py | 148 +++++++++++++ 6 files changed, 418 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cosmomc/Makefile.patch create mode 100644 var/spack/repos/builtin/packages/cosmomc/errorstop.patch create mode 100644 var/spack/repos/builtin/packages/cosmomc/package.py create mode 100644 var/spack/repos/builtin/packages/planck-likelihood/fortran.patch create mode 100644 var/spack/repos/builtin/packages/planck-likelihood/make.patch create mode 100644 var/spack/repos/builtin/packages/planck-likelihood/package.py diff --git a/var/spack/repos/builtin/packages/cosmomc/Makefile.patch b/var/spack/repos/builtin/packages/cosmomc/Makefile.patch new file mode 100644 index 00000000000..f7241af3d05 --- /dev/null +++ b/var/spack/repos/builtin/packages/cosmomc/Makefile.patch @@ -0,0 +1,26 @@ +--- a/Makefile ++++ b/Makefile +@@ -7,8 +7,7 @@ + + rebuild: clean delete cosmomc + +-cosmomc: BUILD ?= MPI +-cosmomc_debug: BUILD ?= MPI ++BUILD ?= MPI + + getdist: ./source/*.*90 + cd ./source && make getdist BUILD=$(BUILD) +--- a/source/Makefile ++++ b/source/Makefile +@@ -57,11 +57,7 @@ + #commented above is (I think) for Mac; this is standard linux (sudo apt-get install liblapack-dev) + LAPACKL = -lblas -llapack + +-#march native does not work on Mac, otherwise use (comment out if your cluster is inhomogeneous) +-ifneq ($(shell uname -s),Darwin) +-#native optimization does not work on Mac + FFLAGS+=-march=native +-endif + + endif + diff --git a/var/spack/repos/builtin/packages/cosmomc/errorstop.patch b/var/spack/repos/builtin/packages/cosmomc/errorstop.patch new file mode 100644 index 00000000000..b23e925daf6 --- /dev/null +++ b/var/spack/repos/builtin/packages/cosmomc/errorstop.patch @@ -0,0 +1,11 @@ +--- a/camb/constants.f90 ++++ b/camb/constants.f90 +@@ -87,7 +87,7 @@ + global_error_message='' + end if + if (present(id)) then +- if (id==0) error stop('Error id must be non-zero') ++ if (id==0) error stop + global_error_flag=id + else + global_error_flag=-1 diff --git a/var/spack/repos/builtin/packages/cosmomc/package.py b/var/spack/repos/builtin/packages/cosmomc/package.py new file mode 100644 index 00000000000..a6a4409b254 --- /dev/null +++ b/var/spack/repos/builtin/packages/cosmomc/package.py @@ -0,0 +1,201 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * +import fnmatch +import os + + +class Cosmomc(Package): + """CosmoMC is a Fortran 2008 Markov-Chain Monte-Carlo (MCMC) engine + for exploring cosmological parameter space, together with + Fortran and python code for analysing Monte-Carlo samples and + importance sampling (plus a suite of scripts for building grids + of runs, plotting and presenting results).""" + + homepage = "http://cosmologist.info/cosmomc/" + url = "https://github.com/cmbant/CosmoMC/archive/Nov2016.tar.gz" + + version('2016.11', '98620cb746352f68fb0c1196e9a070ac') + version('2016.06', '92dc651d1407cca6ea9228992165f5cb') + + def url_for_version(self, version): + names = {'2016.11': "Nov2016", + '2016.06': "June2016"} + return ("https://github.com/cmbant/CosmoMC/archive/%s.tar.gz" % + names[str(version)]) + + variant('mpi', default=True, description='Enable MPI support') + variant('planck', default=False, + description='Enable Planck Likelihood code and baseline data') + + patch('Makefile.patch') + patch('errorstop.patch') + + depends_on('mpi', when='+mpi') + depends_on('planck-likelihood', when='+planck') + depends_on('python @2.7:2.999,3.4:') + + parallel = False + + def install(self, spec, prefix): + # Clean up environment to avoid configure problems + os.environ.pop('LINKMPI', '') + os.environ.pop('NERSC_HOST', '') + os.environ.pop('NONCLIKLIKE', '') + os.environ.pop('PICO', '') + os.environ.pop('PRECISION', '') + os.environ.pop('RECOMBINATION', '') + os.environ.pop('WMAP', '') + + # Set up Planck data if requested + clikdir = join_path('data', 'clik') + try: + os.remove(clikdir) + except OSError: + pass + if '+planck' in spec: + os.symlink(join_path(os.environ['CLIK_DATA'], 'plc_2.0'), clikdir) + else: + os.environ.pop('CLIK_DATA', '') + os.environ.pop('CLIK_PATH', '') + os.environ.pop('CLIK_PLUGIN', '') + + # Choose compiler + # Note: Instead of checking the compiler vendor, we should + # rewrite the Makefile to use Spack's options all the time + if spec.satisfies('%gcc'): + if not spec.satisfies('%gcc@6:'): + raise InstallError( + "When using GCC, " + "CosmoMC requires version gcc@6: for building") + choosecomp = 'ifortErr=1' # choose gfortran + elif spec.satisfies('%intel'): + if not spec.satifies('%intel@14:'): + raise InstallError( + "When using the Intel compiler, " + "CosmoMC requires version intel@14: for building") + choosecomp = 'ifortErr=0' # choose ifort + else: + raise InstallError("Only GCC and Intel compilers are supported") + + # Configure MPI + if '+mpi' in spec: + wantmpi = 'BUILD=MPI' + mpif90 = 'MPIF90C=%s' % spec['mpi'].mpifc + else: + wantmpi = 'BUILD=NOMPI' + mpif90 = 'MPIF90C=' + + # Choose BLAS and LAPACK + lapack = ("LAPACKL=%s" % + (spec['lapack'].libs + spec['blas'].libs).ld_flags) + + # Build + make(choosecomp, wantmpi, mpif90, lapack) + + # Install + mkdirp(prefix.bin) + install('cosmomc', prefix.bin) + root = join_path(prefix.share, 'cosmomc') + mkdirp(root) + entries = [ + 'batch1', + 'batch2', + 'batch3', + 'camb', + 'chains', + 'clik_latex.paramnames', + 'clik_units.paramnames', + 'cosmomc.cbp', + 'data', + 'distgeneric.ini', + 'distparams.ini', + 'disttest.ini', + 'docs', + 'job_script', + 'job_script_MOAB', + 'job_script_SLURM', + 'paramnames', + 'params_generic.ini', + 'planck_covmats', + 'python', + 'scripts', + # don't copy 'source' + 'test.ini', + 'test_pico.ini', + 'test_planck.ini', + 'tests', + ] + for entry in entries: + if os.path.isfile(entry): + install(entry, root) + else: + install_tree(entry, join_path(root, entry)) + for dirpath, dirnames, filenames in os.walk(prefix): + for filename in fnmatch.filter(filenames, '*~'): + os.remove(os.path.join(dirpath, filename)) + + @on_package_attributes(run_tests=True) + @run_after('install') + def check_install(self): + prefix = self.prefix + spec = self.spec + + os.environ.pop('LINKMPI', '') + os.environ.pop('NERSC_HOST', '') + os.environ.pop('NONCLIKLIKE', '') + os.environ.pop('PICO', '') + os.environ.pop('PRECISION', '') + os.environ.pop('RECOMBINATION', '') + os.environ.pop('WMAP', '') + + os.environ.pop('COSMOMC_LOCATION', '') + os.environ.pop('PLC_LOCATION', '') + + os.environ.pop('CLIKPATH', '') + os.environ.pop('PLANCKLIKE', '') + + exe = join_path(prefix.bin, 'cosmomc') + args = [] + if '+mpi' in spec: + # Add mpirun prefix + args = ['-np', '1', exe] + exe = join_path(spec['mpi'].prefix.bin, 'mpiexec') + cosmomc = Executable(exe) + with working_dir('spack-check', create=True): + for entry in [ + 'camb', + 'chains', + 'data', + 'paramnames', + 'planck_covmats', + ]: + os.symlink(join_path(prefix.share, 'cosmomc', entry), entry) + inifile = join_path(prefix.share, 'cosmomc', 'test.ini') + cosmomc(*(args + [inifile])) + if '+planck' in spec: + inifile = join_path(prefix.share, 'cosmomc', 'test_planck.ini') + cosmomc(*(args + [inifile])) diff --git a/var/spack/repos/builtin/packages/planck-likelihood/fortran.patch b/var/spack/repos/builtin/packages/planck-likelihood/fortran.patch new file mode 100644 index 00000000000..b63d268eca1 --- /dev/null +++ b/var/spack/repos/builtin/packages/planck-likelihood/fortran.patch @@ -0,0 +1,11 @@ +--- a/src/bflike/bflike_smw.f90 ++++ b/src/bflike/bflike_smw.f90 +@@ -1600,6 +1600,8 @@ + ok = .false. + + call fid%init() ++ ++ unit = 3001 + + open(unit = unit,file=trim(filein),status='old',action='read',& + iostat=istat) diff --git a/var/spack/repos/builtin/packages/planck-likelihood/make.patch b/var/spack/repos/builtin/packages/planck-likelihood/make.patch new file mode 100644 index 00000000000..6f3ce81b801 --- /dev/null +++ b/var/spack/repos/builtin/packages/planck-likelihood/make.patch @@ -0,0 +1,21 @@ +--- a/Makefile ++++ b/Makefile +@@ -336,15 +336,15 @@ + + $(BDIR)/libclik_f90.$(SO): $(BDIR)/libclik.$(SO) $(addprefix $(ODIR)/,clik_fortran.o clik.f90.o) + @$(ECHO) "build $(BLUE_COLOR)$(@) $(NO_COLOR)" +- @$(LD) $(SHARED) $(LDFLAG) $(LAPACK) -L$(BDIR) -lclik $^ -o $@ ++ @$(LD) -o $@ $(addprefix $(ODIR)/,clik_fortran.o clik.f90.o) -L$(BDIR) -lclik $(SHARED) $(LAPACK) $(LDFLAG) + + $(BDIR)/clik_example_C: $(ODIR)/clik_example_c.o $(BDIR)/libclik.$(SO) + @$(ECHO) "build $(BLUE_COLOR)$(@) $(NO_COLOR)" +- @$(CC) $(LDFLAG) $(LAPACK) -L$(BDIR) -lclik $< -o $@ ++ @$(CC) -o $@ $(ODIR)/clik_example_c.o -L$(BDIR) -lclik $(LAPACK) $(LDFLAG) + + $(BDIR)/clik_example_f90: $(ODIR)/clik_example_f90.f90.o $(BDIR)/libclik_f90.$(SO) + @$(ECHO) "build $(BLUE_COLOR)$(@) $(NO_COLOR)" +- @$(FC) $(LDFLAG) $(LAPACK) -L$(BDIR) -lclik_f90 -lclik $< -o $@ ++ @$(FC) -o $@ $(ODIR)/clik_example_f90.f90.o -L$(BDIR) -lclik_f90 -lclik $(LAPACK) $(LDFLAG) + + $(BDIR)/liblapack_clik.$(SO): |$(BDIR) + ifndef MKL_LIB_FULLPATH diff --git a/var/spack/repos/builtin/packages/planck-likelihood/package.py b/var/spack/repos/builtin/packages/planck-likelihood/package.py new file mode 100644 index 00000000000..c5c5cac6cf8 --- /dev/null +++ b/var/spack/repos/builtin/packages/planck-likelihood/package.py @@ -0,0 +1,148 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PlanckLikelihood(Package): + """2015 Cosmic Microwave Background (CMB) spectra and likelihood code""" + + homepage = "https://wiki.cosmos.esa.int/planckpla2015/index.php/CMB_spectrum_%26_Likelihood_Code" + url = "http://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Code-v2.0.R2.00.tar.bz2" + + version('2.00', '7a081679ff249dc4f94fb7177e16e818', + url="http://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Code-v2.0.R2.00.tar.bz2") + + variant('lensing-ext', default=False, + description="Provide lensing-ext data") + variant('plik-DS', default=False, + description="Provide plik-DS data") + variant('plik-HM-ext', default=False, + description="Provide plik-HM-ext data") + variant('plik-unbinned', default=False, + description="Provide plik-unbinned data") + + patch('fortran.patch') + patch('make.patch') + + resource( + name='baseline', + url="http://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-baseline_R2.00.tar.gz", + md5='7e784819cea65dbc290ea3619420295a', + destination='.') + resource( + name='lensing-ext', + url="http://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-extra-lensing-ext.R2.00.tar.gz", + md5='091736f73b47a09162050bee27d68399', + destination='.', + when='+lensing-ext') + resource( + name='plik-DS', + url="http://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-extra-plik-DS.R2.00.tar.gz", + md5='76ac04f989025eecab3825aba7e41f36', + destination='.', + when='+plik-DS') + resource( + name='plik-HM-ext', + url="http://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-extra-plik-HM-ext.R2.00.tar.gz", + md5='1c3bd8221f973b7bf7e76647451fd6e5', + destination='.', + when='+plik-HM-ext') + resource( + name='plik-unbinned', + url="http://irsa.ipac.caltech.edu/data/Planck/release_2/software/COM_Likelihood_Data-extra-plik-unbinned.R2.00.tar.gz", + md5='c5869aa6b6581b6863d2a6e0ffd3826c', + destination='.', + when='+plik-unbinned') + + depends_on('blas') + depends_on('cfitsio +shared') + depends_on('lapack') + + # Note: Could also install Python bindings + + parallel = False + + def install(self, spec, prefix): + # Configure + + # Don't hide build commands + filter_file("^\t@", "\t", "Makefile") + + makeflags = [ + 'PREFIX=%s' % prefix, + 'COLORS=0', + 'CFITSIOPATH=%s' % spec['cfitsio'].prefix, + 'CC=cc', + 'FC=fc', + 'IFORTLIBPATH=', + 'IFORTRUNTIME=-lintlc -limf -lsvml -liomp5 -lifportmt -lifcoremt', + 'GFORTRANLIBPATH=', + 'GFORTRANRUNTIME=-lgfortran -lgomp', + 'LAPACKLIBPATH=', + 'LAPACK=%s' % (spec['lapack'].libs + spec['blas'].libs).ld_flags, + 'COPENMP=%s' % self.compiler.openmp_flag, + 'FOPENMP=%s' % self.compiler.openmp_flag, + ] + + # Build + make(*makeflags) + + # Install + make('install', *makeflags) + fix_darwin_install_name(prefix.lib) + dirs = ['plc_2.0'] + if '+lensing-ext' in spec: + dirs.append('lensing_ext') + if '+plik-DS' in spec: + dirs.append('plik_DS') + if '+plik-HM-ext' in spec: + dirs.append('plik_HM_ext') + if '+plik-unbinned' in spec: + dirs.append('plik_unbinned') + for dir in dirs: + install_tree(dir, join_path(prefix, 'share', 'clik', dir)) + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + prefix = self.prefix + spack_env.set('CLIK_PATH', prefix) + spack_env.set('CLIK_DATA', join_path(prefix, 'share', 'clik')) + spack_env.set('CLIK_PLUGIN', 'rel2015') + + def setup_environment(self, spack_env, run_env): + prefix = self.prefix + run_env.set('CLIK_PATH', prefix) + run_env.set('CLIK_DATA', join_path(prefix, 'share', 'clik')) + run_env.set('CLIK_PLUGIN', 'rel2015') + + @on_package_attributes(run_tests=True) + @run_after('install') + def check_install(self): + prefix = self.prefix + clik_example_C = Executable(join_path(prefix.bin, 'clik_example_C')) + with working_dir('spack-check', create=True): + clik_example_C(join_path(prefix, 'share', 'clik', + 'plc_2.0', 'hi_l', 'plik', + 'plik_dx11dr2_HM_v18_TT.clik')) From 604b75c1f9d53e0f094a22d1167558aa4df566af Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Thu, 9 Mar 2017 10:36:32 -0800 Subject: [PATCH 0309/2394] created elf virtual package and updated dependent packages (#3317) * created elf virtual package and updated dependent packages * added `hide_files` context manager to handle moving files. --- lib/spack/llnl/util/filesystem.py | 13 ++++ .../builtin/packages/callpath/package.py | 7 +- .../repos/builtin/packages/dyninst/package.py | 13 ++-- .../builtin/packages/elfutils/package.py | 2 +- .../repos/builtin/packages/extrae/package.py | 21 +++++- .../builtin/packages/launchmon/package.py | 3 + .../builtin/packages/libdwarf/package.py | 65 ++++++++++++------- .../repos/builtin/packages/libelf/package.py | 2 +- .../builtin/packages/openspeedshop/package.py | 4 +- .../repos/builtin/packages/stat/package.py | 5 +- 10 files changed, 91 insertions(+), 44 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 7f6773266d7..f456a5edf14 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -50,6 +50,7 @@ 'fix_darwin_install_name', 'force_remove', 'force_symlink', + 'hide_files', 'install', 'install_tree', 'is_exe', @@ -257,6 +258,18 @@ def working_dir(dirname, **kwargs): os.chdir(orig_dir) +@contextmanager +def hide_files(*file_list): + try: + baks = ['%s.bak' % f for f in file_list] + for f, bak in zip(file_list, baks): + shutil.move(f, bak) + yield + finally: + for f, bak in zip(file_list, baks): + shutil.move(bak, f) + + def touch(path): """Creates an empty file at the specified path.""" with open(path, 'a'): diff --git a/var/spack/repos/builtin/packages/callpath/package.py b/var/spack/repos/builtin/packages/callpath/package.py index f8227fa49e7..27a04393f58 100644 --- a/var/spack/repos/builtin/packages/callpath/package.py +++ b/var/spack/repos/builtin/packages/callpath/package.py @@ -35,7 +35,7 @@ class Callpath(Package): version('1.0.2', 'b1994d5ee7c7db9d27586fc2dcf8f373') version('1.0.1', '0047983d2a52c5c335f8ba7f5bab2325') - depends_on("libelf") + depends_on("elf", type="link") depends_on("libdwarf") depends_on("dyninst") depends_on("adept-utils") @@ -44,6 +44,9 @@ class Callpath(Package): def install(self, spec, prefix): # TODO: offer options for the walker used. - cmake('.', "-DCALLPATH_WALKER=dyninst", *std_cmake_args) + cmake_args = std_cmake_args + if spec.satisfies("^dyninst@9.3.0:"): + cmake_args.append("-DCMAKE_CXX_FLAGS='-std=c++11 -fpermissive'") + cmake('.', "-DCALLPATH_WALKER=dyninst", *cmake_args) make() make("install") diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 420ab0fc68c..8f9a2ffb4ad 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -33,13 +33,7 @@ class Dyninst(Package): url = "https://github.com/dyninst/dyninst/archive/v9.2.0.tar.gz" list_url = "http://www.dyninst.org/downloads/dyninst-8.x" - # version 9.2.1b was the latest git commit when trying to port to a - # ppc64le system to get fixes in computeAddrWidth independent of - # endianness. This version can be removed if the next release includes - # this change. The actual commit was - # b8596ad4023ec40ac07e669ff8ea3ec06e262703 - version('9.2.1b', git='https://github.com/dyninst/dyninst.git', - commit='859cb778e20b619443c943c96dd1851da763142b') + version('9.3.0', 'edde7847dc673ca69bd59412af572450') version('9.2.0', 'ad023f85e8e57837ed9de073b59d6bab', url="https://github.com/dyninst/dyninst/archive/v9.2.0.tar.gz") version('9.1.0', '5c64b77521457199db44bec82e4988ac', @@ -54,7 +48,8 @@ class Dyninst(Package): variant('stat_dysect', default=False, description="patch for STAT's DySectAPI") - depends_on("libelf") + depends_on("elf@0", type='link', when='@:9.2.99') + depends_on("elf@1", type='link', when='@9.3.0:') depends_on("libdwarf") depends_on("boost@1.42:") depends_on('cmake', type='build') @@ -70,7 +65,7 @@ def install(self, spec, prefix): make("install") return - libelf = spec['libelf'].prefix + libelf = spec['elf'].prefix libdwarf = spec['libdwarf'].prefix with working_dir('spack-build', create=True): diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index 4a91c7db304..15ae077bea4 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -43,7 +43,7 @@ class Elfutils(AutotoolsPackage): git='git://git.fedorahosted.org/git/elfutils.git', tag='elfutils-0.163') - provides('elf') + provides('elf@1') def configure_args(self): return ['--enable-maintainer-mode'] diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index 2a2b4df5bf8..5a596ab9f78 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -62,8 +62,12 @@ class Extrae(Package): depends_on("boost") depends_on("libdwarf") depends_on("papi") - depends_on("libelf") + depends_on("elf", type="link") depends_on("libxml2") + + # gettext dependency added to find -lintl + # https://www.gnu.org/software/gettext/FAQ.html#integrating_undefined + depends_on("gettext") depends_on("binutils+libiberty") def install(self, spec, prefix): @@ -74,6 +78,16 @@ def install(self, spec, prefix): elif 'mvapich2' in spec: mpi = spec['mvapich2'] + extra_config_args = [] + + # This was added due to configure failure + # https://www.gnu.org/software/gettext/FAQ.html#integrating_undefined + extra_config_args.append('LDFLAGS=-lintl') + + if spec.satisfies("^dyninst@9.3.0:"): + make.add_default_arg('CXXFLAGS=-std=c++11') + extra_config_args.append('CXXFLAGS=-std=c++11') + configure("--prefix=%s" % prefix, "--with-mpi=%s" % mpi.prefix, "--with-unwind=%s" % spec['libunwind'].prefix, @@ -83,10 +97,11 @@ def install(self, spec, prefix): "--with-papi=%s" % spec['papi'].prefix, "--with-dyninst-headers=%s" % spec[ 'dyninst'].prefix.include, - "--with-elf=%s" % spec['libelf'].prefix, + "--with-elf=%s" % spec['elf'].prefix, "--with-xml-prefix=%s" % spec['libxml2'].prefix, "--with-binutils=%s" % spec['binutils'].prefix, - "--with-dyninst-libs=%s" % spec['dyninst'].prefix.lib) + "--with-dyninst-libs=%s" % spec['dyninst'].prefix.lib, + *extra_config_args) make() make("install", parallel=False) diff --git a/var/spack/repos/builtin/packages/launchmon/package.py b/var/spack/repos/builtin/packages/launchmon/package.py index c2b289da4f7..c7b44e35dfb 100644 --- a/var/spack/repos/builtin/packages/launchmon/package.py +++ b/var/spack/repos/builtin/packages/launchmon/package.py @@ -38,6 +38,9 @@ class Launchmon(Package): depends_on('libtool', type='build') depends_on('libgcrypt') depends_on('libgpg-error') + depends_on("elf", type='link') + depends_on("boost") + depends_on("spectrum-mpi", when='arch=ppc64le') def install(self, spec, prefix): configure( diff --git a/var/spack/repos/builtin/packages/libdwarf/package.py b/var/spack/repos/builtin/packages/libdwarf/package.py index 594271f655f..fe131a842c1 100644 --- a/var/spack/repos/builtin/packages/libdwarf/package.py +++ b/var/spack/repos/builtin/packages/libdwarf/package.py @@ -48,37 +48,54 @@ class Libdwarf(Package): version('20130729', '4cc5e48693f7b93b7aa0261e63c0e21d') version('20130207', '64b42692e947d5180e162e46c689dfbf') version('20130126', 'ded74a5e90edb5a12aac3c29d260c5db') - depends_on("libelf") + depends_on("elf", type='link') parallel = False def install(self, spec, prefix): - # dwarf build does not set arguments for ar properly - make.add_default_arg('ARFLAGS=rcs') - # Dwarf doesn't provide an install, so we have to do it. - mkdirp(prefix.bin, prefix.include, prefix.lib, prefix.man1) + # elfutils contains a dwarf.h that conflicts with libdwarf's + # TODO: we should remove this when we can modify the include order + hide_list = [] + if spec.satisfies('^elfutils'): + dwarf_h = join_path(spec['elfutils'].prefix, 'include/dwarf.h') + hide_list.append(dwarf_h) + with hide_files(*hide_list): + # dwarf build does not set arguments for ar properly + make.add_default_arg('ARFLAGS=rcs') - with working_dir('libdwarf'): - configure("--prefix=" + prefix, "--enable-shared") - make() + # Dwarf doesn't provide an install, so we have to do it. + mkdirp(prefix.bin, prefix.include, prefix.lib, prefix.man1) - install('libdwarf.a', prefix.lib) - install('libdwarf.so', prefix.lib) - install('libdwarf.h', prefix.include) - install('dwarf.h', prefix.include) + with working_dir('libdwarf'): + extra_config_args = [] - if spec.satisfies('@20130126:20130729'): - dwarfdump_dir = 'dwarfdump2' - else: - dwarfdump_dir = 'dwarfdump' - with working_dir(dwarfdump_dir): - configure("--prefix=" + prefix) + # this is to prevent picking up system /usr/include/libelf.h + if spec.satisfies('^libelf'): + libelf_inc_dir = join_path(spec['libelf'].prefix, + 'include/libelf') + extra_config_args.append('CFLAGS=-I{0}'.format( + libelf_inc_dir)) + configure("--prefix=" + prefix, "--enable-shared", + *extra_config_args) + make() - # This makefile has strings of copy commands that - # cause a race in parallel - make(parallel=False) + install('libdwarf.a', prefix.lib) + install('libdwarf.so', prefix.lib) + install('libdwarf.h', prefix.include) + install('dwarf.h', prefix.include) - install('dwarfdump', prefix.bin) - install('dwarfdump.conf', prefix.lib) - install('dwarfdump.1', prefix.man1) + if spec.satisfies('@20130126:20130729'): + dwarfdump_dir = 'dwarfdump2' + else: + dwarfdump_dir = 'dwarfdump' + with working_dir(dwarfdump_dir): + configure("--prefix=" + prefix) + + # This makefile has strings of copy commands that + # cause a race in parallel + make(parallel=False) + + install('dwarfdump', prefix.bin) + install('dwarfdump.conf', prefix.lib) + install('dwarfdump.1', prefix.man1) diff --git a/var/spack/repos/builtin/packages/libelf/package.py b/var/spack/repos/builtin/packages/libelf/package.py index 5af4ab705d7..68db7b99c25 100644 --- a/var/spack/repos/builtin/packages/libelf/package.py +++ b/var/spack/repos/builtin/packages/libelf/package.py @@ -37,7 +37,7 @@ class Libelf(AutotoolsPackage): version('0.8.13', '4136d7b4c04df68b686570afa26988ac') version('0.8.12', 'e21f8273d9f5f6d43a59878dc274fec7') - provides('elf') + provides('elf@0') def configure_args(self): args = ["--enable-shared", diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index ae2655735aa..c4b150f56c4 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -60,7 +60,7 @@ class Openspeedshop(Package): """ homepage = "http://www.openspeedshop.org" - url = "https://github.com/OpenSpeedShop" + url = "https://github.com/OpenSpeedShop" version('2.2', '16cb051179c2038de4e8a845edf1d573') # Use when the git repository is available version('2.3', branch='master', @@ -115,6 +115,8 @@ class Openspeedshop(Package): depends_on("bison", type='build') depends_on("flex", type='build') depends_on("binutils@2.24+krellpatch", type='build') + # TODO: when using dyninst@9.3.0:, we will need to use elf + # depends_on("elf", type="link") depends_on("libelf") depends_on("libdwarf") depends_on("sqlite") diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index c511fcee70f..aacebfd8c86 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -31,11 +31,11 @@ class Stat(Package): homepage = "http://paradyn.org/STAT/STAT.html" url = "https://github.com/lee218llnl/stat/archive/v2.0.0.tar.gz" + version('3.0.0', 'a97cb235c266371c4a26329112de48a2', + url='https://github.com/LLNL/STAT/releases/download/v3.0.0/STAT-3.0.0.tar.gz') version('2.2.0', '26bd69dd57a15afdd5d0ebdb0b7fb6fc') version('2.1.0', 'ece26beaf057aa9134d62adcdda1ba91') version('2.0.0', 'c7494210b0ba26b577171b92838e1a9b') - version('3.0.0', 'a97cb235c266371c4a26329112de48a2', - url='https://github.com/LLNL/STAT/releases/download/v3.0.0/STAT-3.0.0.tar.gz') # TODO: dysect requires Dyninst patch for version 3.0.0b variant('dysect', default=False, description="enable DySectAPI") @@ -44,7 +44,6 @@ class Stat(Package): depends_on('autoconf', type='build') depends_on('automake', type='build') depends_on('libtool', type='build') - depends_on('libelf') depends_on('libdwarf') depends_on('dyninst', when='~dysect') depends_on('dyninst@8.2.1+stat_dysect', when='+dysect') From ebd5066d0771f62525186631365843a145fe5631 Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 9 Mar 2017 20:44:37 +0100 Subject: [PATCH 0310/2394] Adding new package: py-4suite-xml (#3389) --- .../builtin/packages/py-4suite-xml/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-4suite-xml/package.py diff --git a/var/spack/repos/builtin/packages/py-4suite-xml/package.py b/var/spack/repos/builtin/packages/py-4suite-xml/package.py new file mode 100644 index 00000000000..759f87c0639 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-4suite-xml/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Py4suiteXml(PythonPackage): + """XML tools and libraries for Python: Domlette, XPath, XSLT, XPointer, + XLink, XUpdate""" + + homepage = "http://4suite.org/" + url = "https://pypi.io/packages/source/4/4Suite-XML/4Suite-XML-1.0.2.tar.gz" + + version('1.0.2', '3ca3db95cb0263ad80beba034d1ff6ea') + + depends_on('python@2.2.1:') From 611df0bebfae67247fc8cec4c7f28a5ee901e9fb Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 9 Mar 2017 15:27:56 -0800 Subject: [PATCH 0311/2394] New gcc uses C++14 mode, this fixes implicit conversion (#3392) * New gcc uses C++14 mode, this fixes implicit conversion The issue is described in depth [here][desc]. C++14 no longer allows implicit conversion from iostream classes to void*. This patch comes directly from [PR #6][patch]. [desc]: http://stackoverflow.com/questions/38659115/make-fails-with-error-cannot-convert-stdistream-aka-stdbasic-istreamchar [patch]: https://github.com/agordon/libgtextutils/pull/6 * mend --- .../repos/builtin/packages/libgtextutils/package.py | 1 + .../packages/libgtextutils/text_line_reader.patch | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libgtextutils/text_line_reader.patch diff --git a/var/spack/repos/builtin/packages/libgtextutils/package.py b/var/spack/repos/builtin/packages/libgtextutils/package.py index 05b6b7dabe7..adecc6c7f72 100644 --- a/var/spack/repos/builtin/packages/libgtextutils/package.py +++ b/var/spack/repos/builtin/packages/libgtextutils/package.py @@ -31,4 +31,5 @@ class Libgtextutils(AutotoolsPackage): homepage = "https://github.com/agordon/libgtextutils" url = "https://github.com/agordon/libgtextutils/releases/download/0.7/libgtextutils-0.7.tar.gz" + patch('text_line_reader.patch') version('0.7', '593c7c62e3c76ec49f5736eed4f96806') diff --git a/var/spack/repos/builtin/packages/libgtextutils/text_line_reader.patch b/var/spack/repos/builtin/packages/libgtextutils/text_line_reader.patch new file mode 100644 index 00000000000..cc9c4cda087 --- /dev/null +++ b/var/spack/repos/builtin/packages/libgtextutils/text_line_reader.patch @@ -0,0 +1,10 @@ +--- libgtextutils/src/gtextutils/text_line_reader.cpp.orig 2017-03-09 07:49:56.358283887 -0800 ++++ libgtextutils/src/gtextutils/text_line_reader.cpp 2017-03-09 07:50:24.317503887 -0800 +@@ -44,6 +44,6 @@ + if (input_stream.eof()) + return false; + +- return input_stream ; ++ return static_cast(input_stream) ; + } + From f0fd0156de3b2b5d73e45003bdd411c78ce5645e Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 10 Mar 2017 00:28:32 +0100 Subject: [PATCH 0312/2394] Adding new package: py-pathos (and dependencies) (#3391) * Adding new package: py-pathos (and dependencies) * Fixing required versions --- .../repos/builtin/packages/py-dill/package.py | 44 +++++++++++++++++++ .../packages/py-multiprocess/package.py | 40 +++++++++++++++++ .../builtin/packages/py-pathos/package.py | 42 ++++++++++++++++++ .../repos/builtin/packages/py-pox/package.py | 40 +++++++++++++++++ .../repos/builtin/packages/py-ppft/package.py | 42 ++++++++++++++++++ 5 files changed, 208 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-dill/package.py create mode 100644 var/spack/repos/builtin/packages/py-multiprocess/package.py create mode 100644 var/spack/repos/builtin/packages/py-pathos/package.py create mode 100644 var/spack/repos/builtin/packages/py-pox/package.py create mode 100644 var/spack/repos/builtin/packages/py-ppft/package.py diff --git a/var/spack/repos/builtin/packages/py-dill/package.py b/var/spack/repos/builtin/packages/py-dill/package.py new file mode 100644 index 00000000000..5064a2fc477 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-dill/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyDill(PythonPackage): + """Serialize all of python """ + + homepage = "https://github.com/uqfoundation/dill" + url = "https://pypi.io/packages/source/d/dill/dill-0.2.6.zip" + + version('0.2.6', 'f8b98b15223d23431024349f2102b4f9') + version('0.2.5', 'c9eecc32351f4934e2e67740a40397f6') + version('0.2.4', '5d10cd1cafea38a45bcd4542f2ca3adc') + version('0.2.3', '0b6c4f55da320893991cc32628a6e9be') + version('0.2.2', 'a282b81a6d289f91218bba8d07f49bd8') + version('0.2.1', 'b2354a5717da6228acae33cb13bc407b') + version('0.2', '759002d9b71605cde2a7a052dad96b5d') + + depends_on('python@2.5:2.999,3.1:') + + depends_on('py-setuptools@0.6:', type='build') diff --git a/var/spack/repos/builtin/packages/py-multiprocess/package.py b/var/spack/repos/builtin/packages/py-multiprocess/package.py new file mode 100644 index 00000000000..fc4576a538f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-multiprocess/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyMultiprocess(PythonPackage): + """Better multiprocessing and multithreading in Python""" + + homepage = "https://github.com/uqfoundation/multiprocess" + url = "https://pypi.io/packages/source/m/multiprocess/multiprocess-0.70.5.zip" + + version('0.70.5', 'bfe394368b1d98192f1f62cc0060be20') + version('0.70.4', '443336d84c574106da6c67d4574b7614') + + depends_on('python@2.6:2.8,3.1:') + + depends_on('py-setuptools@0.6:', type='build') + depends_on('py-dill@0.2.6:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pathos/package.py b/var/spack/repos/builtin/packages/py-pathos/package.py new file mode 100644 index 00000000000..172abdc725e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pathos/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPathos(PythonPackage): + """Parallel graph management and execution in heterogeneous computing """ + + homepage = "https://github.com/uqfoundation/pathos" + url = "https://pypi.io/packages/source/p/pathos/pathos-0.2.0.zip" + + version('0.2.0', '7a840ce6c3a67d71e6ad7339034ec53e') + + depends_on('python@2.6:2.8,3.1:') + + depends_on('py-setuptools@0.6:', type='build') + depends_on('py-multiprocess@0.70.4:', type=('build', 'run')) + depends_on('py-pox@0.2.2:', type=('build', 'run')) + depends_on('py-ppft@1.6.4.5:', type=('build', 'run')) + depends_on('py-dill@0.2.5:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pox/package.py b/var/spack/repos/builtin/packages/py-pox/package.py new file mode 100644 index 00000000000..3c22c73b850 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pox/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPox(PythonPackage): + """Utilities for filesystem exploration and automated builds.""" + + homepage = "https://github.com/uqfoundation/pox" + url = "https://pypi.io/packages/source/p/pox/pox-0.2.3.zip" + + version('0.2.3', 'fcdfd9a9ab0f72367258b675554f6a83') + version('0.2.2', 'e1e2ce99a63d7226ea3c1a2ce389610d') + version('0.2.1', '517dc13c2bc2429d36a0c636f3ce42db') + + depends_on('python@2.5:2.8,3.1:') + + depends_on('py-setuptools@0.6:', type='build') diff --git a/var/spack/repos/builtin/packages/py-ppft/package.py b/var/spack/repos/builtin/packages/py-ppft/package.py new file mode 100644 index 00000000000..a07aaf6d919 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ppft/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPpft(PythonPackage): + """Distributed and parallel python """ + + homepage = "https://github.com/uqfoundation/ppft" + url = "https://pypi.org/packages/source/p/ppft/ppft-1.6.4.7.1.zip" + + version('1.6.4.7.1', '2b196a03bfbc102773f849c6b21e617b') + version('1.6.4.6', 'e533432bfba4b5a523a07d58011df209') + version('1.6.4.5', 'd2b1f9f07eae22b31bfe90f544dd3044') + + depends_on('python@2.5:2.8,3.1:') + + depends_on('py-setuptools@0.6:', type='build') + depends_on('py-six@1.7.3:', type=('build', 'run')) + depends_on('py-dill@0.2.6:', type=('build', 'run')) From 901f044bbff830b19daa5bfba0c7961b2fc0078f Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 10 Mar 2017 14:08:17 +0100 Subject: [PATCH 0313/2394] Adding new package: vc (#3397) --- .../repos/builtin/packages/vc/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vc/package.py diff --git a/var/spack/repos/builtin/packages/vc/package.py b/var/spack/repos/builtin/packages/vc/package.py new file mode 100644 index 00000000000..ee64cc16969 --- /dev/null +++ b/var/spack/repos/builtin/packages/vc/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Vc(CMakePackage): + """SIMD Vector Classes for C++""" + + homepage = "https://github.com/VcDevel/Vc" + url = "https://github.com/VcDevel/Vc/archive/1.3.0.tar.gz" + + version('1.3.0', '77efc1c16691c7925d4b58f9b30cf03b') + version('1.2.0', 'a5236df286b845d2fee5ef1e4d27549f') + version('1.1.0', 'e354c1e3ea1d674b6f2af9c6fd230d81') + + variant('debug', default=False) + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' From 84db03b5a82b2706a31de384a0306a926770eec7 Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 10 Mar 2017 14:08:41 +0100 Subject: [PATCH 0314/2394] Adding new package: vdt (#3396) --- .../repos/builtin/packages/vdt/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vdt/package.py diff --git a/var/spack/repos/builtin/packages/vdt/package.py b/var/spack/repos/builtin/packages/vdt/package.py new file mode 100644 index 00000000000..d90b1abdf07 --- /dev/null +++ b/var/spack/repos/builtin/packages/vdt/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Vdt(CMakePackage): + """Vectorised math. A collection of fast and inline implementations of + mathematical functions.""" + + homepage = "https://github.com/dpiparo/vdt" + url = "https://github.com/dpiparo/vdt/archive/v0.3.9.tar.gz" + + version('0.3.9', '80a2d73a82f7ef8257a8206ca22dd145') + version('0.3.8', '25b07c72510aaa95fffc11e33579061c') + version('0.3.7', 'd2621d4c489894fd1fe8e056d9a0a67c') + version('0.3.6', '6eaff3bbbd5175332ccbd66cd71a741d') From a7f35b3db64a7376ca373c5212bedda9f71cd3c2 Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 10 Mar 2017 14:30:01 +0100 Subject: [PATCH 0315/2394] Adding new package: py-joblib (#3399) --- .../builtin/packages/py-joblib/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-joblib/package.py diff --git a/var/spack/repos/builtin/packages/py-joblib/package.py b/var/spack/repos/builtin/packages/py-joblib/package.py new file mode 100644 index 00000000000..07306333f54 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-joblib/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyJoblib(PythonPackage): + """Python function as pipeline jobs""" + + homepage = "http://packages.python.org/joblib/" + url = "https://pypi.io/packages/source/j/joblib/joblib-0.10.3.tar.gz" + + version('0.10.3', '455401ccfaf399538d8e5333086df2d3') + version('0.10.2', 'ebb42af4342c2445b175f86bd478d869') + version('0.10.0', '61e40322c4fed5c22905f67d7d1aa557') + + depends_on('py-setuptools', type='build') + # for testing + # depends_on('py-nose', type=('build', 'run')) From 22d7f9da40de93c6562b33a24970180b20830f9e Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 10 Mar 2017 14:30:28 +0100 Subject: [PATCH 0316/2394] Adding new package: py-py4j (#3390) * Adding new package: py-py4j * Adding missing depedency --- .../repos/builtin/packages/py-py4j/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-py4j/package.py diff --git a/var/spack/repos/builtin/packages/py-py4j/package.py b/var/spack/repos/builtin/packages/py-py4j/package.py new file mode 100644 index 00000000000..3fb4b2f79f8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-py4j/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPy4j(PythonPackage): + """Enables Python programs to dynamically access arbitrary Java + objects.""" + + homepage = "https://www.py4j.org/" + url = "https://pypi.io/packages/source/p/py4j/py4j-0.10.4.tar.gz" + + version('0.10.4', 'de1ce072fb8d5bff8aba537b1700ace4') + version('0.10.3', '6c86aebb4f1cdd4bf192b16c8a8fe8e4') + + depends_on('py-setuptools', type='build') From 60665264922babfc52882dc47bccfece7f231421 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Fri, 10 Mar 2017 11:48:03 -0700 Subject: [PATCH 0317/2394] Confining CPPFLAGS=-P to only happen for GCC. (#3404) --- var/spack/repos/builtin/packages/ncurses/package.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 74ed140a292..6a1e8d49960 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -46,9 +46,6 @@ class Ncurses(AutotoolsPackage): def configure_args(self): opts = [ - # The CPPFLAGS setting works around this bug: - # - 'CPPFLAGS=-P', 'CFLAGS={0}'.format(self.compiler.pic_flag), 'CXXFLAGS={0}'.format(self.compiler.pic_flag), '--with-shared', @@ -60,6 +57,13 @@ def configure_args(self): '--enable-pc-files', '--with-pkg-config-libdir={0}/lib/pkgconfig'.format(self.prefix) ] + if '+symlinks' in self.spec: - opts += ["--enable-symlinks"] + opts.append('--enable-symlinks') + + # The CPPFLAGS setting works around this bug: + # + if self.spec.satisfies('%gcc'): + opts.append('CPPFLAGS=-P') + return opts From 0c9ddeafe447a3650fd14e2099430b56db37db3c Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 10 Mar 2017 19:48:22 +0100 Subject: [PATCH 0318/2394] Adding new package: py-keras (#3400) * Adding new package: py-keras (and dependencies) * Fixing dependencies --- .../builtin/packages/py-keras/package.py | 45 +++++++++++++++++++ .../builtin/packages/py-pydot/package.py | 39 ++++++++++++++++ .../builtin/packages/py-theano/package.py | 45 +++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-keras/package.py create mode 100644 var/spack/repos/builtin/packages/py-pydot/package.py create mode 100644 var/spack/repos/builtin/packages/py-theano/package.py diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py new file mode 100644 index 00000000000..541072f9875 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyKeras(PythonPackage): + """Deep Learning library for Python. Convnets, recurrent neural networks, + and more. Runs on Theano or TensorFlow.""" + + homepage = "http://keras.io" + url = "https://pypi.io/packages/source/K/Keras/Keras-1.2.2.tar.gz" + + version('1.2.2', '8e26b25bf16494f6eca726887d232319') + version('1.2.1', '95525b9faa890267d80d119b13ce2984') + version('1.2.0', 'd24d8b72747f8cc38e659ce8fc92ad3c') + version('1.1.2', '53027097f240735f873119ee2e8d27ff') + version('1.1.1', '4bd8b75e8c6948ec0498cc603bbc6590') + version('1.1.0', 'd1711362ac8473238b0d198d2e3a0574') + + depends_on('py-setuptools', type='build') + depends_on('py-theano', type=('build', 'run')) + depends_on('py-pyyaml', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pydot/package.py b/var/spack/repos/builtin/packages/py-pydot/package.py new file mode 100644 index 00000000000..844840a6064 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pydot/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPydot(PythonPackage): + """Python interface to Graphviz's Dot language""" + + homepage = "https://github.com/erocarrera/pydot/" + url = "https://pypi.io/packages/source/p/pydot/pydot-1.2.3.tar.gz" + + version('1.2.3', '5b50fd8cf022811d8718562ebc8aefb2') + version('1.2.2', 'fad67d9798dbb33bb3dca3e6d4c47665') + + depends_on('py-setuptools', type='build') + depends_on('py-pyparsing@2.1.4:', type=('build', 'run')) + depends_on('graphviz', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-theano/package.py b/var/spack/repos/builtin/packages/py-theano/package.py new file mode 100644 index 00000000000..2806c00be3e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-theano/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyTheano(PythonPackage): + """Optimizing compiler for evaluating mathematical expressions on CPUs + and GPUs.""" + + homepage = "http://deeplearning.net/software/theano/" + url = "https://pypi.io/packages/source/T/Theano/Theano-0.8.2.tar.gz" + + version('0.8.2', 'f2d0dfe7df141115201077cd933b2c52') + + depends_on('python@2.6:2.8,3.3:') + + depends_on('py-setuptools', type='build') + depends_on('py-scipy@0.11:', type=('build', 'run')) + depends_on('py-numpy@1.7.1:', type=('build', 'run')) + depends_on('py-six@1.9.0:', type=('build', 'run')) + # test requirements + # depends_on('py-nose@1.3.0:', type=('build', 'run')) + # depends_on('py-nose-parameterized@0.5.0:', type=('build', 'run')) From a1e8644f635b2f7da20f4dae847e1b7c8f477168 Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 10 Mar 2017 19:48:41 +0100 Subject: [PATCH 0319/2394] Adding new package: py-elasticsearch (#3398) * Adding new package: py-elasticsearch * Adding missing dependency --- .../packages/py-elasticsearch/package.py | 45 +++++++++++++++++++ .../builtin/packages/py-nosexcover/package.py | 39 ++++++++++++++++ .../builtin/packages/py-urllib3/package.py | 38 ++++++++++++++++ 3 files changed, 122 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-elasticsearch/package.py create mode 100644 var/spack/repos/builtin/packages/py-nosexcover/package.py create mode 100644 var/spack/repos/builtin/packages/py-urllib3/package.py diff --git a/var/spack/repos/builtin/packages/py-elasticsearch/package.py b/var/spack/repos/builtin/packages/py-elasticsearch/package.py new file mode 100644 index 00000000000..823d3cc741b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-elasticsearch/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyElasticsearch(PythonPackage): + """Python client for Elasticsearch""" + + homepage = "https://github.com/elastic/elasticsearch-py" + url = "https://pypi.io/packages/source/e/elasticsearch/elasticsearch-5.2.0.tar.gz" + + version('5.2.0', '66692fd1b4189039206c2fde4a4d616a') + version('2.3.0', '2550f3b51629cf1ef9636608af92c340') + + depends_on('py-setuptools', type='build') + depends_on('py-urllib3@1.8:1.999', type=('build', 'run')) + # tests_require + # depends_on('py-requests@1.0.0:2.9.999', type=('build', 'run')) + # depends_on('py-nose', type=('build', 'run')) + # depends_on('py-coverage', type=('build', 'run')) + # depends_on('py-mock', type=('build', 'run')) + # depends_on('py-pyyaml', type=('build', 'run')) + # depends_on('py-nosexcover', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-nosexcover/package.py b/var/spack/repos/builtin/packages/py-nosexcover/package.py new file mode 100644 index 00000000000..277070b0d93 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-nosexcover/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyNosexcover(PythonPackage): + """A companion to the built-in nose.plugins.cover, this plugin will write + out an XML coverage report to a file named coverage.xml.""" + + homepage = "https://github.com/cmheisel/nose-xcover" + url = "https://pypi.io/packages/source/n/nosexcover/nosexcover-1.0.11.tar.gz" + + version('1.0.11', 'f32ef4824b4484343e9766b2c376365d') + + depends_on('py-setuptools', type='build') + depends_on('py-nose', type=('build', 'run')) + depends_on('py-coverage@3.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-urllib3/package.py b/var/spack/repos/builtin/packages/py-urllib3/package.py new file mode 100644 index 00000000000..bf56ca96ada --- /dev/null +++ b/var/spack/repos/builtin/packages/py-urllib3/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyUrllib3(PythonPackage): + """HTTP library with thread-safe connection pooling, file post, and + more.""" + + homepage = "https://urllib3.readthedocs.io/" + url = "https://pypi.io/packages/source/u/urllib3/urllib3-1.20.tar.gz" + + version('1.20', '34691d4e7e20a8e9cdb452ea24fc38e7') + version('1.14', '5e1407428ac33b521c71a7ac273b3847') + + depends_on('py-setuptools', type='build') From 68f5b9adf8a2bfab1061ea48d4f02754888b930d Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 10 Mar 2017 20:18:17 +0100 Subject: [PATCH 0320/2394] Adding new package: py-lxml (#3403) * Adding new package: py-lxml * Adding missing version --- .../repos/builtin/packages/py-lxml/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-lxml/package.py diff --git a/var/spack/repos/builtin/packages/py-lxml/package.py b/var/spack/repos/builtin/packages/py-lxml/package.py new file mode 100644 index 00000000000..ad78d816ceb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-lxml/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyLxml(PythonPackage): + """lxml is the most feature-rich and easy-to-use library for processing + XML and HTML in the Python language.""" + + homepage = "http://lxml.de/" + url = "https://pypi.io/packages/source/l/lxml/lxml-2.3.tar.gz" + + version('2.3', 'a245a015fd59b63e220005f263e1682a') + + depends_on('py-setuptools@0.6c5:', type='build') From e727f56d89ccd2aa9aabc14cf4efb471f32341dc Mon Sep 17 00:00:00 2001 From: scheibelp Date: Fri, 10 Mar 2017 13:58:48 -0800 Subject: [PATCH 0321/2394] Features/compiler config consistency (#2999) * default scope for config command is made consistent with cmd/__init__ default * dont specify a scope when looking for compilers with a matching spec (since compiler concretization is scope-independent) * config edit should default to platform-specific file only for compilers * when duplicate compiler specs are detected, the exception raised now points the user to the files where the duplicates appear * updated error message to emphasize that a spec is duplicated (since multiple specs can reference the same compiler) * 'spack compilers' is now also broken down into sections by os and target * Added tests for new compiler methods --- lib/spack/spack/cmd/compiler.py | 17 +- lib/spack/spack/cmd/config.py | 5 +- lib/spack/spack/compilers/__init__.py | 173 ++++++++++++------ lib/spack/spack/concretize.py | 2 +- lib/spack/spack/test/cmd/test_compiler_cmd.py | 6 +- lib/spack/spack/test/compilers.py | 48 +++++ 6 files changed, 181 insertions(+), 70 deletions(-) create mode 100644 lib/spack/spack/test/compilers.py diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index c6097941850..444e658a927 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -96,8 +96,7 @@ def compiler_find(args): for c in compilers: arch_spec = ArchSpec(None, c.operating_system, c.target) same_specs = spack.compilers.compilers_for_spec(c.spec, - arch_spec, - args.scope) + arch_spec) if not same_specs: new_compilers.append(c) @@ -165,14 +164,18 @@ def compiler_info(args): def compiler_list(args): tty.msg("Available compilers") - index = index_by(spack.compilers.all_compilers(scope=args.scope), 'name') - for i, (name, compilers) in enumerate(index.items()): + index = index_by(spack.compilers.all_compilers(scope=args.scope), + lambda c: (c.spec.name, c.operating_system, c.target)) + for i, (key, compilers) in enumerate(index.items()): if i >= 1: print - - cname = "%s{%s}" % (spack.spec.compiler_color, name) + name, os, target = key + os_str = os + if target: + os_str += "-%s" % target + cname = "%s{%s} %s" % (spack.spec.compiler_color, name, os_str) tty.hline(colorize(cname), char='-') - colify(reversed(sorted(compilers))) + colify(reversed(sorted(c.spec for c in compilers))) def compiler(parser, args): diff --git a/lib/spack/spack/cmd/config.py b/lib/spack/spack/cmd/config.py index 1a9e44a8b96..a647e3ed6e6 100644 --- a/lib/spack/spack/cmd/config.py +++ b/lib/spack/spack/cmd/config.py @@ -55,7 +55,10 @@ def config_get(args): def config_edit(args): if not args.scope: - args.scope = 'user' + if args.section == 'compilers': + args.scope = spack.cmd.default_modify_scope + else: + args.scope = 'user' if not args.section: args.section = None config_file = spack.config.get_config_filename(args.scope, args.section) diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index 731acaf9c29..be19841539b 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -164,7 +164,7 @@ def all_compilers_config(scope=None, init_config=True): return _cache_config_file -def all_compilers(scope=None, init_config=True): +def all_compiler_specs(scope=None, init_config=True): # Return compiler specs from the merged config. return [spack.spec.CompilerSpec(s['compiler']['spec']) for s in all_compilers_config(scope, init_config)] @@ -203,72 +203,93 @@ def supported(compiler_spec): def find(compiler_spec, scope=None): """Return specs of available compilers that match the supplied compiler spec. Return an empty list if nothing found.""" - return [c for c in all_compilers(scope) if c.satisfies(compiler_spec)] + return [c for c in all_compiler_specs(scope) if c.satisfies(compiler_spec)] + + +def all_compilers(scope=None): + config = get_compiler_config(scope) + compilers = list() + for items in config: + items = items['compiler'] + compilers.append(compiler_from_config_entry(items)) + return compilers @_auto_compiler_spec -def compilers_for_spec(compiler_spec, arch_spec=None, scope=None): +def compilers_for_spec(compiler_spec, arch_spec=None, scope=None, + use_cache=True): """This gets all compilers that satisfy the supplied CompilerSpec. Returns an empty list if none are found. """ - config = all_compilers_config(scope) - - def get_compilers(cspec): - compilers = [] - - for items in config: - items = items['compiler'] - if items['spec'] != str(cspec): - continue - - # If an arch spec is given, confirm that this compiler - # is for the given operating system - os = items.get('operating_system', None) - if arch_spec and os != arch_spec.platform_os: - continue - - # If an arch spec is given, confirm that this compiler - # is for the given target. If the target is 'any', match - # any given arch spec. If the compiler has no assigned - # target this is an old compiler config file, skip this logic. - target = items.get('target', None) - if arch_spec and target and (target != arch_spec.target and - target != 'any'): - continue - - if not ('paths' in items and - all(n in items['paths'] for n in _path_instance_vars)): - raise InvalidCompilerConfigurationError(cspec) - - cls = class_for_compiler_name(cspec.name) - - compiler_paths = [] - for c in _path_instance_vars: - compiler_path = items['paths'][c] - if compiler_path != 'None': - compiler_paths.append(compiler_path) - else: - compiler_paths.append(None) - - mods = items.get('modules') - if mods == 'None': - mods = [] - - alias = items.get('alias', None) - compiler_flags = items.get('flags', {}) - environment = items.get('environment', {}) - extra_rpaths = items.get('extra_rpaths', []) - - compilers.append( - cls(cspec, os, target, compiler_paths, mods, alias, - environment, extra_rpaths, **compiler_flags)) - - return compilers + if use_cache: + config = all_compilers_config(scope) + else: + config = get_compiler_config(scope) matches = set(find(compiler_spec, scope)) compilers = [] for cspec in matches: - compilers.extend(get_compilers(cspec)) + compilers.extend(get_compilers(cspec, config, arch_spec)) + return compilers + + +def compiler_from_config_entry(items): + cspec = spack.spec.CompilerSpec(items['spec']) + os = items.get('operating_system', None) + target = items.get('target', None) + + if not ('paths' in items and + all(n in items['paths'] for n in _path_instance_vars)): + raise InvalidCompilerConfigurationError(cspec) + + cls = class_for_compiler_name(cspec.name) + + compiler_paths = [] + for c in _path_instance_vars: + compiler_path = items['paths'][c] + if compiler_path != 'None': + compiler_paths.append(compiler_path) + else: + compiler_paths.append(None) + + mods = items.get('modules') + if mods == 'None': + mods = [] + + alias = items.get('alias', None) + compiler_flags = items.get('flags', {}) + environment = items.get('environment', {}) + extra_rpaths = items.get('extra_rpaths', []) + + return cls(cspec, os, target, compiler_paths, mods, alias, + environment, extra_rpaths, **compiler_flags) + + +def get_compilers(cspec, config, arch_spec=None): + compilers = [] + + for items in config: + items = items['compiler'] + if items['spec'] != str(cspec): + continue + + # If an arch spec is given, confirm that this compiler + # is for the given operating system + os = items.get('operating_system', None) + if arch_spec and os != arch_spec.platform_os: + continue + + # If an arch spec is given, confirm that this compiler + # is for the given target. If the target is 'any', match + # any given arch spec. If the compiler has no assigned + # target this is an old compiler config file, skip this logic. + target = items.get('target', None) + if arch_spec and target and (target != arch_spec.target and + target != 'any'): + continue + + compilers.append(compiler_from_config_entry(items)) + return compilers @@ -283,10 +304,28 @@ def compiler_for_spec(compiler_spec, arch_spec): if len(compilers) < 1: raise NoCompilerForSpecError(compiler_spec, arch_spec.platform_os) if len(compilers) > 1: - raise CompilerSpecInsufficientlySpecificError(compiler_spec) + raise CompilerDuplicateError(compiler_spec, arch_spec) return compilers[0] +@_auto_compiler_spec +def get_compiler_duplicates(compiler_spec, arch_spec): + config_scopes = spack.config.config_scopes + scope_to_compilers = dict() + for scope in config_scopes: + compilers = compilers_for_spec(compiler_spec, arch_spec=arch_spec, + scope=scope, use_cache=False) + if compilers: + scope_to_compilers[scope] = compilers + + cfg_file_to_duplicates = dict() + for scope, compilers in scope_to_compilers.iteritems(): + config_file = config_scopes[scope].get_section_filename('compilers') + cfg_file_to_duplicates[config_file] = compilers + + return cfg_file_to_duplicates + + def class_for_compiler_name(compiler_name): """Given a compiler module name, get the corresponding Compiler class.""" assert(supported(compiler_name)) @@ -341,6 +380,24 @@ def __init__(self, compiler_spec, target): % (target, compiler_spec)) +class CompilerDuplicateError(spack.error.SpackError): + def __init__(self, compiler_spec, arch_spec): + config_file_to_duplicates = get_compiler_duplicates( + compiler_spec, arch_spec) + duplicate_table = list( + (x, len(y)) for x, y in config_file_to_duplicates.iteritems()) + descriptor = lambda num: 'time' if num == 1 else 'times' + duplicate_msg = ( + lambda cfgfile, count: "{0}: {1} {2}".format( + cfgfile, str(count), descriptor(count))) + msg = ( + "Compiler configuration contains entries with duplicate" + + " specification ({0}, {1})".format(compiler_spec, arch_spec) + + " in the following files:\n\t" + + '\n\t'.join(duplicate_msg(x, y) for x, y in duplicate_table)) + super(CompilerDuplicateError, self).__init__(msg) + + class CompilerSpecInsufficientlySpecificError(spack.error.SpackError): def __init__(self, compiler_spec): super(CompilerSpecInsufficientlySpecificError, self).__init__( diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index bc3675ad849..1be0a7a81eb 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -315,7 +315,7 @@ def concretize_compiler(self, spec): def _proper_compiler_style(cspec, aspec): return spack.compilers.compilers_for_spec(cspec, arch_spec=aspec) - all_compilers = spack.compilers.all_compilers() + all_compilers = spack.compilers.all_compiler_specs() if (spec.compiler and spec.compiler.concrete and diff --git a/lib/spack/spack/test/cmd/test_compiler_cmd.py b/lib/spack/spack/test/cmd/test_compiler_cmd.py index 647404e6daf..f0160e274aa 100644 --- a/lib/spack/spack/test/cmd/test_compiler_cmd.py +++ b/lib/spack/spack/test/cmd/test_compiler_cmd.py @@ -71,12 +71,12 @@ def test_compiler_remove(self): all=True, compiler_spec='gcc@4.5.0', add_paths=[], scope=None ) spack.cmd.compiler.compiler_remove(args) - compilers = spack.compilers.all_compilers() + compilers = spack.compilers.all_compiler_specs() assert spack.spec.CompilerSpec("gcc@4.5.0") not in compilers def test_compiler_add(self, mock_compiler_dir): # Compilers available by default. - old_compilers = set(spack.compilers.all_compilers()) + old_compilers = set(spack.compilers.all_compiler_specs()) args = spack.util.pattern.Bunch( all=None, @@ -87,7 +87,7 @@ def test_compiler_add(self, mock_compiler_dir): spack.cmd.compiler.compiler_find(args) # Ensure new compiler is in there - new_compilers = set(spack.compilers.all_compilers()) + new_compilers = set(spack.compilers.all_compiler_specs()) new_compiler = new_compilers - old_compilers assert new_compiler c = new_compiler.pop() diff --git a/lib/spack/spack/test/compilers.py b/lib/spack/spack/test/compilers.py new file mode 100644 index 00000000000..d0fc506f400 --- /dev/null +++ b/lib/spack/spack/test/compilers.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 pytest + +import spack.spec +import spack.compilers as compilers + + +@pytest.mark.usefixtures('config') +class TestCompilers(object): + + def test_get_compiler_duplicates(self): + # In this case there is only one instance of the specified compiler in + # the test configuration (so it is not actually a duplicate), but the + # method behaves the same. + cfg_file_to_duplicates = compilers.get_compiler_duplicates( + 'gcc@4.5.0', spack.spec.ArchSpec('cray-CNL-xeon')) + assert len(cfg_file_to_duplicates) == 1 + cfg_file, duplicates = cfg_file_to_duplicates.iteritems().next() + assert len(duplicates) == 1 + + def test_all_compilers(self): + all_compilers = compilers.all_compilers() + filtered = list(x for x in all_compilers if str(x.spec) == 'clang@3.3') + filtered = list(x for x in filtered if x.operating_system == 'SuSE11') + assert len(filtered) == 1 From 15f80ed15c31c4a36c05d9fe405f9bc712898b1c Mon Sep 17 00:00:00 2001 From: Mario Melara Date: Fri, 10 Mar 2017 16:29:20 -0800 Subject: [PATCH 0322/2394] Add paths to PKG_CONFIG_PATH to find cray .pc file (#3378) * Add paths to PKG_CONFIG_PATH to find cray .pc file Adds two paths: /usr/lib64/pkgconfig and /usr/local/lib64/pkgconfig. cray pkg-config looks at two different paths which are not included in PKG_CONFIG_PATH environment variable. This PR addresses #3167. * Flake8 fixes * flake8 fix again --- var/spack/repos/builtin/packages/pkg-config/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py index a98f65fb07f..4d677172c4f 100644 --- a/var/spack/repos/builtin/packages/pkg-config/package.py +++ b/var/spack/repos/builtin/packages/pkg-config/package.py @@ -42,6 +42,14 @@ class PkgConfig(Package): # The following patch is needed for gcc-6.1 patch('g_date_strftime.patch') + @when("platform=cray") + def setup_dependent_environment(self, spack_env, run_env, dep_spec): + """spack built pkg-config on cray's requires adding /usr/local/ + and /usr/lib64/ to PKG_CONFIG_PATH in order to access cray '.pc' + files.""" + spack_env.prepend_path("PKG_CONFIG_PATH", "/usr/lib64/pkgconfig") + spack_env.prepend_path("PKG_CONFIG_PATH", "/usr/local/lib64/pkgconfig") + def install(self, spec, prefix): args = ["--prefix={0}".format(prefix), "--enable-shared"] From e3101808ae077a3d352d8740cc39d877ed355b86 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 11 Mar 2017 05:48:36 -0800 Subject: [PATCH 0323/2394] Make multimethods work with inheritance. (#3411) Previously, this would fail with a NoSuchMethodError: class Package(object): # this is the default implementation def some_method(self): ... class Foo(Package): @when('platform=cray') def some_method(self): ... @when('platform=linux') def some_method(self): ... This fixes the implementation of `@when` so that the superclass method will be invoked when no subclass method matches. Adds tests to ensure this works, as well. --- lib/spack/spack/multimethod.py | 12 ++++-- lib/spack/spack/test/multimethod.py | 8 ++++ .../packages/multimethod-base/package.py | 40 +++++++++++++++++++ .../packages/multimethod/package.py | 12 +++++- 4 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/multimethod-base/package.py diff --git a/lib/spack/spack/multimethod.py b/lib/spack/spack/multimethod.py index 4e2fb3bdaa0..67737c8bedd 100644 --- a/lib/spack/spack/multimethod.py +++ b/lib/spack/spack/multimethod.py @@ -128,10 +128,16 @@ def __call__(self, package_self, *args, **kwargs): if self.default: return self.default(package_self, *args, **kwargs) + else: - raise NoSuchMethodError( - type(package_self), self.__name__, spec, - [m[0] for m in self.method_list]) + superclass = super(package_self.__class__, package_self) + superclass_fn = getattr(superclass, self.__name__, None) + if callable(superclass_fn): + return superclass_fn(*args, **kwargs) + else: + raise NoSuchMethodError( + type(package_self), self.__name__, spec, + [m[0] for m in self.method_list]) def __str__(self): return "SpecMultiMethod {\n\tdefault: %s,\n\tspecs: %s\n}" % ( diff --git a/lib/spack/spack/test/multimethod.py b/lib/spack/spack/test/multimethod.py index 90948f010c1..fbcc70afe84 100644 --- a/lib/spack/spack/test/multimethod.py +++ b/lib/spack/spack/test/multimethod.py @@ -118,3 +118,11 @@ def test_virtual_dep_match(builtin_mock): pkg = spack.repo.get('multimethod^mpich@1.0') assert pkg.different_by_virtual_dep() == 1 + + +def test_multimethod_with_base_class(builtin_mock): + pkg = spack.repo.get('multimethod@3') + assert pkg.base_method() == "subclass_method" + + pkg = spack.repo.get('multimethod@1') + assert pkg.base_method() == "base_method" diff --git a/var/spack/repos/builtin.mock/packages/multimethod-base/package.py b/var/spack/repos/builtin.mock/packages/multimethod-base/package.py new file mode 100644 index 00000000000..bd3b29c5eea --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/multimethod-base/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class MultimethodBase(Package): + """This is a base class for the Multimethod test case. + + It tests whether mutlimethod properly invokes methods in a base + class when subclass multi-methods do not match. + + """ + + homepage = 'http://www.example.com/' + url = 'http://www.example.com/example-1.0.tar.gz' + + def base_method(self): + return "base_method" diff --git a/var/spack/repos/builtin.mock/packages/multimethod/package.py b/var/spack/repos/builtin.mock/packages/multimethod/package.py index fa3f8151350..9e18d65cbb9 100644 --- a/var/spack/repos/builtin.mock/packages/multimethod/package.py +++ b/var/spack/repos/builtin.mock/packages/multimethod/package.py @@ -25,8 +25,10 @@ from spack import * import spack.architecture +from spack.pkg.builtin.mock.multimethod_base import MultimethodBase -class Multimethod(Package): + +class Multimethod(MultimethodBase): """This package is designed for use with Spack's multimethod test. It has a bunch of test cases for the @when decorator that the test uses. @@ -132,3 +134,11 @@ def different_by_virtual_dep(self): @when('^mpi@2:') def different_by_virtual_dep(self): return 2 + + # + # Make sure methods with a default implementation in a superclass + # will invoke that method when none in the subclass match. + # + @when("@2:") + def base_method(self): + return "subclass_method" From eef2021d912bad3decc2f8fa96eda8bde5135fa0 Mon Sep 17 00:00:00 2001 From: Elsa Gonsiorowski Date: Sat, 11 Mar 2017 07:12:26 -0800 Subject: [PATCH 0324/2394] pdsh basic package (#3408) * added basic pdsh package * need link to actual archive file --- .../repos/builtin/packages/pdsh/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pdsh/package.py diff --git a/var/spack/repos/builtin/packages/pdsh/package.py b/var/spack/repos/builtin/packages/pdsh/package.py new file mode 100644 index 00000000000..b54afca6fc8 --- /dev/null +++ b/var/spack/repos/builtin/packages/pdsh/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Pdsh(AutotoolsPackage): + """ + PDSH: a high performance, parallel remote shell utility + """ + + homepage = "https://github.com/grondo/pdsh" + url = "https://github.com/grondo/pdsh/archive/pdsh-2.31.tar.gz" + + version('2.31', 'cab34b0ca78f3cf596fd648b265223ed') From 48640cf2fa9e195f273a04a4e2277aebfaed07f9 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 13:38:51 -0500 Subject: [PATCH 0325/2394] binutils: Add gettext dependency (#3423) --- var/spack/repos/builtin/packages/binutils/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index 1fea4f5b60d..4ad6ed809e3 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -41,6 +41,7 @@ class Binutils(Package): depends_on('m4', type='build') depends_on('flex', type='build') depends_on('bison', type='build') + depends_on('gettext') # Add a patch that creates binutils libiberty_pic.a which is preferred by # OpenSpeedShop and cbtf-krell From b30637e1ce73ff5dd5504184c899025aba72067f Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 13:39:33 -0500 Subject: [PATCH 0326/2394] py-yt: New version 3.3.4 (#3420) --- var/spack/repos/builtin/packages/py-yt/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index 4a61bfcec99..9cc571b09a1 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -37,6 +37,8 @@ class PyYt(PythonPackage): homepage = "http://yt-project.org" url = "https://bitbucket.org/yt_analysis/yt" + version("3.3.4", "3a84e56dfd82f9dd923f3fb8490e679c", + url="https://bitbucket.org/yt_analysis/yt/get/yt-3.3.4.tar.gz") version("3.3.1", hg="https://bitbucket.org/yt_analysis/yt", tag="yt-3.3.1", commit="9bc3d0e9b750c923d44d73c447df64fc431f5838") version("3.2.3", hg="https://bitbucket.org/yt_analysis/yt", From 093ffdfa45bdbdddab6be5597c6b04d4bee106a7 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 13:42:02 -0500 Subject: [PATCH 0327/2394] cuda: Allow using unknown compilers (#3416) * cuda: Allow using unknown compilers * cuda: Correct flake8 error --- var/spack/repos/builtin/packages/cuda/package.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index 19c787f5e6e..bf5a64fa595 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -58,8 +58,9 @@ def install(self, spec, prefix): # for details. runfile( - '--silent', # disable interactive prompts - '--verbose', # create verbose log file - '--toolkit', # install CUDA Toolkit + '--silent', # disable interactive prompts + '--verbose', # create verbose log file + '--override', # override compiler version checks + '--toolkit', # install CUDA Toolkit '--toolkitpath=%s' % prefix ) From 7e3eaba89968ac95d7d376b8444786de9ebab834 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 13:50:54 -0500 Subject: [PATCH 0328/2394] hdf5-blosc: Update compiler selection in self-test (#3417) --- var/spack/repos/builtin/packages/hdf5-blosc/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index 088c1e9d9b1..4afce02f70d 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -174,9 +174,9 @@ def check_install(self, spec): with open("check.c", "w") as f: f.write(source) if "+mpi" in spec["hdf5"]: - cc = which("mpicc") + cc = Executable(spec["mpi"].mpicc) else: - cc = which("cc") + cc = Executable(self.compiler.cc) # TODO: Automate these path and library settings cc("-c", "-I%s" % spec["hdf5"].prefix.include, "check.c") cc("-o", "check", "check.o", From 63a8f79980628a3fea62f660b4fc6edecb9e7507 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 13:52:08 -0500 Subject: [PATCH 0329/2394] Correct inconsistency in comment (#3414) --- lib/spack/env/cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/env/cc b/lib/spack/env/cc index c0e97f3416f..d7212bf89c6 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -58,7 +58,7 @@ parameters=( # The default compiler flags are passed from these variables: # SPACK_CFLAGS, SPACK_CXXFLAGS, SPACK_FCFLAGS, SPACK_FFLAGS, # SPACK_LDFLAGS, SPACK_LDLIBS -# Debug env var is optional; set to true for debug logging: +# Debug env var is optional; set to "TRUE" for debug logging: # SPACK_DEBUG # Test command is used to unit test the compiler script. # SPACK_TEST_COMMAND From 23d4a60639194bb5f7b61edfef65818ce1f4567d Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 16:58:09 -0500 Subject: [PATCH 0330/2394] funhpc: New package (#3421) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * funhpc: New package * funhpc: Rename development version to “develop” * funhpc: Try to make flake8 happy * funhpc: Correct flake8 error --- .../repos/builtin/packages/funhpc/package.py | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 var/spack/repos/builtin/packages/funhpc/package.py diff --git a/var/spack/repos/builtin/packages/funhpc/package.py b/var/spack/repos/builtin/packages/funhpc/package.py new file mode 100644 index 00000000000..03120d07ba3 --- /dev/null +++ b/var/spack/repos/builtin/packages/funhpc/package.py @@ -0,0 +1,61 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + + +from spack import * + + +class Funhpc(CMakePackage): + """FunHPC: Functional HPC Programming""" + homepage = "https://github.com/eschnett/FunHPC.cxx" + url = "https://github.com/eschnett/FunHPC.cxx/archive/version/0.1.0.tar.gz" + + version('1.1.1', '7b9ef638b02fffe35b75517e8eeff580') + version('1.1.0', '897bd968c42cd4f14f86fcf67da70444') + version('1.0.0', 'f34e71ccd5548b42672e692c913ba5ee') + version('0.1.1', 'f0248710f2de88ed2a595ad40d99997c') + version('0.1.0', '00f7dabc08ed1ab77858785ce0809f50') + version('develop', + git='https://github.com/eschnett/FunHPC.cxx', branch='master') + + variant('pic', default=True, + description="Produce position-independent code") + + depends_on('cereal') + depends_on('hwloc') + depends_on('jemalloc') + depends_on('mpi') + depends_on('qthreads') + + def cmake_args(self): + spec = self.spec + options = [] + if '+pic' in spec: + options.extend(["-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true"]) + return options + + def check(self): + with working_dir(self.build_directory): + make("test", "CTEST_OUTPUT_ON_FAILURE=1") From 18ac76b32094d0b99809feae182609dc198cc69d Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 16:58:57 -0500 Subject: [PATCH 0331/2394] bison: Declare m4 dependency correctly (#3424) * bison: Declare m4 dependency correctly * bison: Declare m4 as run-time dependency --- var/spack/repos/builtin/packages/bison/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index 2615266c8ad..e87c7da7ce3 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -35,7 +35,7 @@ class Bison(AutotoolsPackage): version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8') - depends_on('m4', type='build') + depends_on('m4', type=('build', 'run')) patch('pgi.patch', when='@3.0.4') From 41a395754027d394b8b75b0b02f52d6aeb8f88fa Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 17:00:47 -0500 Subject: [PATCH 0332/2394] libxsmm: Add header-only variant (#3419) * libxsmm: Add header-only variant * libxsmm: Implement requestes from code review * libxsmm: Correct error in previous simplification * libxsmm: Raise error if `header-only` variant is not supported by version * libxsmm: Correct flake8 errors --- .../repos/builtin/packages/libxsmm/package.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py index 969557c3298..abc5dc5cde6 100644 --- a/var/spack/repos/builtin/packages/libxsmm/package.py +++ b/var/spack/repos/builtin/packages/libxsmm/package.py @@ -56,6 +56,8 @@ class Libxsmm(Package): variant('debug', default=False, description='Unoptimized with call-trace (LIBXSMM_TRACE).') + variant('header-only', default=False, + description='Produce header-only installation') def patch(self): kwargs = {'ignore_absent': False, 'backup': False, 'string': True} @@ -71,8 +73,10 @@ def patch(self): makefile.filter('FC = gfortran', 'FC ?= gfortran', **kwargs) def manual_install(self, prefix): + spec = self.spec install_tree('include', prefix.include) - install_tree('lib', prefix.lib) + if '~header-only' in spec: + install_tree('lib', prefix.lib) doc_path = prefix.share + '/libxsmm/doc' mkdirp(doc_path) for doc_file in glob('documentation/*.md'): @@ -83,9 +87,17 @@ def manual_install(self, prefix): install('LICENSE', doc_path) def install(self, spec, prefix): + if '+header-only' in spec and '@1.6.2:' not in spec: + raise InstallError( + "The variant +header-only is only available " + + "for versions @1.6.2:") + # include symbols by default make_args = ['SYM=1'] + if '+header-only' in spec: + make_args += ['header-only'] + # JIT (AVX and later) makes MNK, M, N, or K spec. superfluous # make_args += ['MNK=1 4 5 6 8 9 13 16 17 22 23 24 26 32'] From 02db630985aed5609f36686b349c76fc7fd9b346 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 21:59:06 -0500 Subject: [PATCH 0333/2394] hwloc: Disable OpenCL (#2854) * hwloc: Disable OpenCL * hwloc: Convert `install` to `configure_args` --- var/spack/repos/builtin/packages/hwloc/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index 68c92b3aff5..b5f6bf99516 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -53,3 +53,9 @@ class Hwloc(AutotoolsPackage): def url_for_version(self, version): return "http://www.open-mpi.org/software/hwloc/v%s/downloads/hwloc-%s.tar.gz" % (version.up_to(2), version) + + def configure_args(self): + # Disable OpenCL, since hwloc might pick up an OpenCL library + # at build time that is then not found at run time + # (Alternatively, we could require OpenCL as dependency.) + return ["--disable-opencl"] From 9a14597493c4e7d5b85a07173e7711c6892de421 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 22:04:18 -0500 Subject: [PATCH 0334/2394] autoconf: Correct m4 dependency declaration (#3415) * autoconf: Correct m4 dependency declaration Closes #3406. * autoconf: Correct m4 dependency type * autoconf: Update comment --- var/spack/repos/builtin/packages/autoconf/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/autoconf/package.py b/var/spack/repos/builtin/packages/autoconf/package.py index 3dcf8f36b5f..694622fe806 100644 --- a/var/spack/repos/builtin/packages/autoconf/package.py +++ b/var/spack/repos/builtin/packages/autoconf/package.py @@ -36,7 +36,9 @@ class Autoconf(AutotoolsPackage): version('2.59', 'd4d45eaa1769d45e59dcb131a4af17a0') version('2.13', '9de56d4a161a723228220b0f425dc711') - depends_on('m4@1.4.6:', type='build') + # Note: m4 is not a pure build-time dependency of autoconf. m4 is + # needed when autoconf runs, not only when autoconf is built. + depends_on('m4@1.4.6:', type=('build', 'run')) build_directory = 'spack-build' From d8f1446265f76347b6e5a9368b942fa4cc98f95e Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 11 Mar 2017 22:04:44 -0500 Subject: [PATCH 0335/2394] julia: New version 0.5.1 (#3418) * julia: New version 0.5.1 * julia: Define url on a single line --- var/spack/repos/builtin/packages/julia/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index 89db570b81e..d25a9a9b91a 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -37,7 +37,8 @@ class Julia(Package): git='https://github.com/JuliaLang/julia.git', branch='master') version('release-0.5', git='https://github.com/JuliaLang/julia.git', branch='release-0.5') - version('0.5.0', 'b61385671ba74767ab452363c43131fb', preferred=True) + version('0.5.1', 'bce119b98f274e0f07ce01498c463ad5', preferred=True) + version('0.5.0', 'b61385671ba74767ab452363c43131fb') version('release-0.4', git='https://github.com/JuliaLang/julia.git', branch='release-0.4') version('0.4.7', '75a7a7dd882b7840829d8f165e9b9078') From 0b948da74c113ec328ecc7a33c203c8bf635cc4e Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sun, 12 Mar 2017 15:37:26 +0100 Subject: [PATCH 0336/2394] gnuplot: fixed broken package and add variants (#3185) * gnuplot: fix conflict in header via a simple patch; add variants * gtkplus: fix missing dependency * wx: fix build on macOS; switch to AutotoolsPackage * gnuplot: add missing dependencies * wx: put back parallel build --- .../repos/builtin/packages/gnuplot/package.py | 105 +++++++++++++++--- .../packages/gnuplot/term_include.patch | 11 ++ .../repos/builtin/packages/gtkplus/package.py | 2 + .../repos/builtin/packages/wx/package.py | 29 +++-- 4 files changed, 121 insertions(+), 26 deletions(-) create mode 100644 var/spack/repos/builtin/packages/gnuplot/term_include.patch diff --git a/var/spack/repos/builtin/packages/gnuplot/package.py b/var/spack/repos/builtin/packages/gnuplot/package.py index 600b6d285f1..c29b83be51c 100644 --- a/var/spack/repos/builtin/packages/gnuplot/package.py +++ b/var/spack/repos/builtin/packages/gnuplot/package.py @@ -22,13 +22,11 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## - from spack import * - import os -class Gnuplot(Package): +class Gnuplot(AutotoolsPackage): """Gnuplot is a portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other platforms. The source code is copyrighted but freely distributed (i.e., you don't have @@ -43,24 +41,99 @@ class Gnuplot(Package): homepage = "http://www.gnuplot.info" url = "http://downloads.sourceforge.net/project/gnuplot/gnuplot/5.0.1/gnuplot-5.0.1.tar.gz" + # There is a conflict in term.h between gnuplot and ncurses, which is a + # dependency of readline. Fix it with a small patch + patch('term_include.patch') + + version('5.0.5', 'c5e96fca73afbee4f57cbc1bfce6b3b8') version('5.0.1', '79b4f9e203728f76b60b28bcd402d3c7') + variant('wx', default=False, + description='Activates wxWidgets terminal') + variant('gd', default=True, + description='Activates gd based terminal') + variant('cairo', default=True, + description='Activates cairo based terminal') + variant('X', default=False, + description='Build with X11') + variant('libcerf', default=True, + description='Build with libcerf support') + variant('pbm', default=False, + description='Enable PBM (Portable Bit Map) and other older bitmap terminals') # NOQA: ignore=E501 + + # required dependencies depends_on('readline') - depends_on('libcerf') - depends_on('libgd') - depends_on('cairo') - depends_on('pango') + depends_on('pkg-config', type='build') + depends_on('libxpm') + depends_on('libiconv') + + # optional dependencies: + depends_on('libcerf', when='+libcerf') + depends_on('libgd', when='+gd') + depends_on('cairo@1.2:', when='+cairo') depends_on('wx', when='+wx') + depends_on('pango@1.10:', when='+wx') + depends_on('pango@1.10:', when='+cairo') - variant('wx', default=False, description='Activates wxWidgets terminal') + def configure_args(self): + # see https://github.com/Homebrew/homebrew-core/blob/master/Formula/gnuplot.rb + # and https://github.com/macports/macports-ports/blob/master/math/gnuplot/Portfile + spec = self.spec + options = [ + '--disable-dependency-tracking', + '--disable-silent-rules', + # Per upstream: "--with-tutorial is horribly out of date." + '--without-tutorial', + '--with-readline=%s' % spec['readline'].prefix + ] - def install(self, spec, prefix): - # It seems there's an open bug for wxWidgets support - # See : http://sourceforge.net/p/gnuplot/bugs/1694/ - os.environ['TERMLIBS'] = '-lX11' + if '+pbm' in spec: + options.append('--with-bitmap-terminals') + else: + options.append('--without-bitmap-terminals') - options = ['--prefix=%s' % prefix] + if '+X' in spec: + # It seems there's an open bug for wxWidgets support + # See : http://sourceforge.net/p/gnuplot/bugs/1694/ + os.environ['TERMLIBS'] = '-lX11' + options.append('--with-x') + else: + options.append('--without-x') - configure(*options) - make() - make("install") + if '+wx' in spec: + options.append('--with-wx=%s' % spec['wx'].prefix) + else: + options.append('--disable-wxwidgets') + + if '+gd' in spec: + options.append('--with-gd=%s' % spec['libgd'].prefix) + else: + options.append('--without-gd') + + if '+cairo' in spec: + options.append('--with-cairo') + else: + options.append('--without-cairo') + + if '+libcerf' in spec: + options.append('--with-libcerf') + else: + options.append('--without-libcerf') + + # TODO: Enable pdflib-based pdf terminal + # '--with-pdf=%s' % spec['pdflib-lite'].prefix (or pdflib) + options.append('--without-pdf') + + # TODO: Enable qt terminal qt@5.7 + options.append('--with-qt=no') + + # TODO: Enable lua-based terminals + options.append('--without-lua') + + # TODO: --with-latex + options.append('--without-latex') + + # TODO: --with-aquaterm depends_on('aquaterm') + options.append('--without-aquaterm') + + return options diff --git a/var/spack/repos/builtin/packages/gnuplot/term_include.patch b/var/spack/repos/builtin/packages/gnuplot/term_include.patch new file mode 100644 index 00000000000..64145a68c6b --- /dev/null +++ b/var/spack/repos/builtin/packages/gnuplot/term_include.patch @@ -0,0 +1,11 @@ +--- a/docs/doc2x.h 2017-03-10 13:55:51.719850190 -0500 ++++ b/docs/doc2x.h 2017-03-10 13:56:17.569826925 -0500 +@@ -69,7 +69,7 @@ + # ifdef ALL_TERM_DOC + # include "allterm.h" + # else +-# include "term.h" ++# include "src/term.h" + # endif + NULL + }; diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index 13036c3e338..4664cfcbb23 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -36,6 +36,8 @@ class Gtkplus(AutotoolsPackage): variant('X', default=False, description="Enable an X toolkit") + depends_on('pkg-config', type='build') + depends_on("atk") depends_on("gdk-pixbuf") depends_on("glib") diff --git a/var/spack/repos/builtin/packages/wx/package.py b/var/spack/repos/builtin/packages/wx/package.py index 42d39df9e63..ae1facc1c39 100644 --- a/var/spack/repos/builtin/packages/wx/package.py +++ b/var/spack/repos/builtin/packages/wx/package.py @@ -23,9 +23,10 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys -class Wx(Package): +class Wx(AutotoolsPackage): """wxWidgets is a C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base. It has popular language bindings for @@ -41,18 +42,26 @@ class Wx(Package): version('3.0.2', '6461eab4428c0a8b9e41781b8787510484dea800') version('3.0.1', '73e58521d6871c9f4d1e7974c6e3a81629fddcf8') + version('develop', git='https://github.com/wxWidgets/wxWidgets.git', branch='master') + depends_on('gtkplus') - def make_wx(self): - make() - @when('@:3.0.2') - def make_wx(self): + def build(self, spec, prefix): make(parallel=False) - def install(self, spec, prefix): - configure("--prefix=%s" % prefix, "--enable-unicode", - "--disable-precomp-headers") + def configure_args(self): + spec = self.spec + options = [ + '--enable-unicode', + '--disable-precomp-headers' + ] - self.make_wx() - make("install") + # see http://trac.wxwidgets.org/ticket/17639 + if spec.satisfies('@:3.1.0') and sys.platform == 'darwin': + options.extend([ + '--disable-qtkit', + '--disable-mediactrl' + ]) + + return options From 9121599145162a37e20491f05b79f03f80fe2741 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 12 Mar 2017 13:52:18 -0400 Subject: [PATCH 0337/2394] New package pocl (#3413) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * New package pocl * pocl: Update dependencies, add self-test * pocl: Don't require LLVM shared libraries LLVM build fails with shared libraries. * Add patch * Update * Update * Make build and install work; install test still fails * Split pocl into pocl proper and pocl-test * Add debug output * pocl: Update to 0.14-rc * pocl: Correct flake8 error * pocl: Heed code review recommendations * pocl: Add newline at end of file * pocl: Correct flake8 error I don’t want to use an even longer line by putting the whole variant declaration onto a single line, nor do I think that having an overlong line and adding `# noqa` at the end is more readable than splitting a string over three lines. * pocl: Correct dependency type for libtool --- .../repos/builtin/packages/pocl/example1.c | 232 ++++++++++++++++++ .../repos/builtin/packages/pocl/example1.out | 5 + .../repos/builtin/packages/pocl/package.py | 108 ++++++++ .../repos/builtin/packages/pocl/uint.patch | 11 + .../builtin/packages/pocl/vecmathlib.patch | 75 ++++++ 5 files changed, 431 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pocl/example1.c create mode 100644 var/spack/repos/builtin/packages/pocl/example1.out create mode 100644 var/spack/repos/builtin/packages/pocl/package.py create mode 100644 var/spack/repos/builtin/packages/pocl/uint.patch create mode 100644 var/spack/repos/builtin/packages/pocl/vecmathlib.patch diff --git a/var/spack/repos/builtin/packages/pocl/example1.c b/var/spack/repos/builtin/packages/pocl/example1.c new file mode 100644 index 00000000000..84c3e5e30f1 --- /dev/null +++ b/var/spack/repos/builtin/packages/pocl/example1.c @@ -0,0 +1,232 @@ +/* example1 - Simple example from OpenCL specification. + + Copyright (c) 2011 Universidad Rey Juan Carlos + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ + +#include +#include +#include +#include + +#define N 128 + +void delete_memobjs(cl_mem *memobjs, int n) { + for (int i = 0; i < n; ++i) + clReleaseMemObject(memobjs[i]); +} + +int exec_dot_product_kernel(const char *program_source, int n, cl_float4 *srcA, + cl_float4 *srcB, cl_float *dst) { + cl_context context = poclu_create_any_context(); + if (context == (cl_context)0) + return -1; + + // get the list of GPU devices associated with context + size_t cb; + clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &cb); + cl_device_id *devices = malloc(cb); + clGetContextInfo(context, CL_CONTEXT_DEVICES, cb, devices, NULL); + + // create a command-queue + cl_command_queue cmd_queue = + clCreateCommandQueue(context, devices[0], 0, NULL); + if (cmd_queue == 0) { + clReleaseContext(context); + free(devices); + return -1; + } + + // don't know why this is necessary + for (int i = 0; i < n; ++i) { + poclu_bswap_cl_float_array(devices[0], &srcA[i], 4); + poclu_bswap_cl_float_array(devices[0], &srcB[i], 4); + } + + // allocate the buffer memory objects + cl_mem memobjs[3]; + + memobjs[0] = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, + sizeof(cl_float4) * n, srcA, NULL); + if (memobjs[0] == 0) { + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + return -1; + } + + memobjs[1] = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, + sizeof(cl_float4) * n, srcB, NULL); + if (memobjs[1] == 0) { + delete_memobjs(memobjs, 1); + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + return -1; + } + + memobjs[2] = clCreateBuffer(context, CL_MEM_READ_WRITE, sizeof(cl_float) * n, + NULL, NULL); + if (memobjs[2] == 0) { + delete_memobjs(memobjs, 2); + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + return -1; + } + + // create the program + cl_program program = + clCreateProgramWithSource(context, 1, &program_source, NULL, NULL); + if (program == 0) { + delete_memobjs(memobjs, 3); + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + return -1; + } + + // build the program + cl_int err = clBuildProgram(program, 0, NULL, NULL, NULL, NULL); + if (err != CL_SUCCESS) { + delete_memobjs(memobjs, 3); + clReleaseProgram(program); + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + return -1; + } + + // create the kernel + cl_kernel kernel = clCreateKernel(program, "dot_product", NULL); + if (kernel == 0) { + delete_memobjs(memobjs, 3); + clReleaseProgram(program); + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + return -1; + } + + // set the args values + err = clSetKernelArg(kernel, 0, sizeof(cl_mem), (void *)&memobjs[0]); + err |= clSetKernelArg(kernel, 1, sizeof(cl_mem), (void *)&memobjs[1]); + err |= clSetKernelArg(kernel, 2, sizeof(cl_mem), (void *)&memobjs[2]); + + if (err != CL_SUCCESS) { + delete_memobjs(memobjs, 3); + clReleaseKernel(kernel); + clReleaseProgram(program); + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + return -1; + } + + // set work-item dimensions + size_t global_work_size[1]; + global_work_size[0] = n; + size_t local_work_size[1]; + local_work_size[0] = 128; + + // execute kernel + err = clEnqueueNDRangeKernel(cmd_queue, kernel, 1, NULL, global_work_size, + local_work_size, 0, NULL, NULL); + if (err != CL_SUCCESS) { + delete_memobjs(memobjs, 3); + clReleaseKernel(kernel); + clReleaseProgram(program); + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + return -1; + } + + // read output image + err = clEnqueueReadBuffer(cmd_queue, memobjs[2], CL_TRUE, 0, + n * sizeof(cl_float), dst, 0, NULL, NULL); + if (err != CL_SUCCESS) { + delete_memobjs(memobjs, 3); + clReleaseKernel(kernel); + clReleaseProgram(program); + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + return -1; + } + + for (int i = 0; i < n; ++i) { + poclu_bswap_cl_float_array(devices[0], &dst[i], 1); + poclu_bswap_cl_float_array(devices[0], &srcA[i], 4); + poclu_bswap_cl_float_array(devices[0], &srcB[i], 4); + } + + free(devices); + + // release kernel, program, and memory objects + delete_memobjs(memobjs, 3); + clReleaseKernel(kernel); + clReleaseProgram(program); + clReleaseCommandQueue(cmd_queue); + clReleaseContext(context); + + // success + return 0; +} + +int main(void) { + const char *source = "__kernel void dot_product(\n" + " __global const float4 *a,\n" + " __global const float4 *b,\n" + " __global float *c)\n" + "{\n" + " int gid = get_global_id(0);\n" + " float4 prod = a[gid] * b[gid];\n" + " c[gid] = prod.x + prod.y + prod.z + prod.w;\n" + "}\n"; + + cl_float4 *srcA = malloc(N * sizeof(cl_float4)); + cl_float4 *srcB = malloc(N * sizeof(cl_float4)); + cl_float *dst = malloc(N * sizeof(cl_float)); + + for (int i = 0; i < N; ++i) { + srcA[i].s[0] = (cl_float)i; + srcA[i].s[1] = (cl_float)i; + srcA[i].s[2] = (cl_float)i; + srcA[i].s[3] = (cl_float)i; + srcB[i].s[0] = (cl_float)i; + srcB[i].s[1] = (cl_float)i; + srcB[i].s[2] = (cl_float)i; + srcB[i].s[3] = (cl_float)i; + } + + if (exec_dot_product_kernel(source, N, srcA, srcB, dst)) { + printf("Error running the tests\n"); + return -1; + } + + for (int i = 0; i < 4; ++i) { + printf("(%f, %f, %f, %f) . (%f, %f, %f, %f) = %f\n", srcA[i].s[0], + srcA[i].s[1], srcA[i].s[2], srcA[i].s[3], srcB[i].s[0], srcB[i].s[1], + srcB[i].s[2], srcB[i].s[3], dst[i]); + if (srcA[i].s[0] * srcB[i].s[0] + srcA[i].s[1] * srcB[i].s[1] + + srcA[i].s[2] * srcB[i].s[2] + srcA[i].s[3] * srcB[i].s[3] != + dst[i]) { + printf("FAIL\n"); + return -1; + } + } + + printf("OK\n"); + return 0; +} diff --git a/var/spack/repos/builtin/packages/pocl/example1.out b/var/spack/repos/builtin/packages/pocl/example1.out new file mode 100644 index 00000000000..ef35a124f89 --- /dev/null +++ b/var/spack/repos/builtin/packages/pocl/example1.out @@ -0,0 +1,5 @@ +(0.000000, 0.000000, 0.000000, 0.000000) . (0.000000, 0.000000, 0.000000, 0.000000) = 0.000000 +(1.000000, 1.000000, 1.000000, 1.000000) . (1.000000, 1.000000, 1.000000, 1.000000) = 4.000000 +(2.000000, 2.000000, 2.000000, 2.000000) . (2.000000, 2.000000, 2.000000, 2.000000) = 16.000000 +(3.000000, 3.000000, 3.000000, 3.000000) . (3.000000, 3.000000, 3.000000, 3.000000) = 36.000000 +OK diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py new file mode 100644 index 00000000000..573b81131c2 --- /dev/null +++ b/var/spack/repos/builtin/packages/pocl/package.py @@ -0,0 +1,108 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * +from spack.package_test import * +import os + + +class Pocl(CMakePackage): + """Portable Computing Language (pocl) is an open source implementation + of the OpenCL standard which can be easily adapted for new targets + and devices, both for homogeneous CPU and heterogeneous + GPUs/accelerators.""" + + homepage = "http://portablecl.org" + url = "http://portablecl.org/downloads/pocl-0.13.tar.gz" + + version("master", git="https://github.com/pocl/pocl.git") + version("0.14-rc", + git="https://github.com/pocl/pocl.git", branch="release_0_14") + version("0.13", "344480864d4269f2f63f1509395898bd") + version("0.12", "e197ba3aa01a35f40581c48e053330dd") + version("0.11", "9be0640cde2983062c47393d9e8e8fe7") + version("0.10", "0096be4f595c7b5cbfa42430c8b3af6a") + + # This is Github's pocl/pocl#373 + patch("uint.patch", when="@:0.13") + patch("vecmathlib.patch", when="@:0.13") + + depends_on("cmake @2.8.12:", type="build") + depends_on("hwloc") + depends_on("libtool", type=("build", "run")) + # We don't request LLVM's shared libraries because these are not + # enabled by default, and also because they fail to build for us + # (see #1616) + depends_on("llvm +clang") + depends_on("pkg-config", type="build") + + # These are the supported LLVM versions + depends_on("llvm @3.7:3.9", when="@master") + depends_on("llvm @3.7:3.9", when="@0.14") + depends_on("llvm @3.7:3.8", when="@0.13") + depends_on("llvm @3.2:3.7", when="@0.12") + depends_on("llvm @3.2:3.6", when="@0.11") + depends_on("llvm @3.2:3.5", when="@0.10") + + variant("distro", default=False, + description=("Support several CPU architectures, " + "suitable e.g. in a build " + "that will be made available for download")) + variant("icd", default=False, + description="Support a system-wide ICD loader") + + def cmake_args(self): + spec = self.spec + args = ["-DINSTALL_OPENCL_HEADERS=ON"] + if "~shared" in spec["llvm"]: + args += ["-DSTATIC_LLVM"] + if "+distro" in spec: + args += ["-DKERNELLIB_HOST_CPU_VARIANTS=distro"] + args += ["-DENABLE_ICD=%s" % ("ON" if "+icd" in spec else "OFF")] + return args + + @run_after('install') + def symlink_opencl(self): + with working_dir(self.build_directory): + os.symlink("OpenCL", join_path(self.prefix.include, "CL")) + + @run_after('install') + def check_install(self): + # Build and run a small program to test the installed OpenCL library + spec = self.spec + print("Checking pocl installation...") + checkdir = "spack-check" + with working_dir(checkdir, create=True): + source = join_path(os.path.dirname(self.module.__file__), + "example1.c") + cflags = spec["pocl"].cppflags.split() + # ldflags = spec["pocl"].libs.ld_flags.split() + ldflags = ["-L%s" % spec["pocl"].prefix.lib, + "-lOpenCL", "-lpoclu"] + output = compile_c_and_execute(source, cflags, ldflags) + compare_output_file( + output, + join_path(os.path.dirname(self.module.__file__), + "example1.out")) diff --git a/var/spack/repos/builtin/packages/pocl/uint.patch b/var/spack/repos/builtin/packages/pocl/uint.patch new file mode 100644 index 00000000000..1a620cd9010 --- /dev/null +++ b/var/spack/repos/builtin/packages/pocl/uint.patch @@ -0,0 +1,11 @@ +--- a/lib/CL/clCreateSubDevices.c ++++ b/lib/CL/clCreateSubDevices.c +@@ -46,7 +46,7 @@ + cl_device_id *new_devs = NULL; + // number of elements in (copies of) properties, including terminating null + cl_uint num_props = 0; +- uint i; ++ cl_uint i; + + POCL_GOTO_ERROR_COND((in_device == NULL), CL_INVALID_DEVICE); + POCL_GOTO_ERROR_COND((properties == NULL), CL_INVALID_VALUE); diff --git a/var/spack/repos/builtin/packages/pocl/vecmathlib.patch b/var/spack/repos/builtin/packages/pocl/vecmathlib.patch new file mode 100644 index 00000000000..73d2742e435 --- /dev/null +++ b/var/spack/repos/builtin/packages/pocl/vecmathlib.patch @@ -0,0 +1,75 @@ +diff --git a/lib/kernel/vecmathlib/vec_sse_double1.h b/lib/kernel/vecmathlib/vec_sse_double1.h +index d727de8..dc582b3 100644 +--- a/lib/kernel/vecmathlib/vec_sse_double1.h ++++ b/lib/kernel/vecmathlib/vec_sse_double1.h +@@ -397,8 +397,8 @@ public: + } + return r; + } +- boolvec_t isfinite() const { return vml_std::isfinite(v); } +- boolvec_t isinf() const { return vml_std::isinf(v); } ++ boolvec_t isfinite() const { return bool(vml_std::isfinite(v)); } ++ boolvec_t isinf() const { return bool(vml_std::isinf(v)); } + boolvec_t isnan() const { + // This is wrong: + // return _mm_ucomineq_sd(from_double(v), from_double(v)); +@@ -407,9 +407,9 @@ public: + // __asm__("ucomisd %[v],%[v]; setp %[r]": [r]"=q"(r): [v]"x"(v)); + // return boolvec_t::scalar_t(r); + // This works as well: +- return vml_std::isnan(v); ++ return bool(vml_std::isnan(v)); + } +- boolvec_t isnormal() const { return vml_std::isnormal(v); } ++ boolvec_t isnormal() const { return bool(vml_std::isnormal(v)); } + realvec_t ldexp(int_t n) const { return vml_std::ldexp(v, n); } + realvec_t ldexp(intvec_t n) const { return vml_std::ldexp(v, n); } + realvec_t log() const { return MF::vml_log(*this); } +@@ -433,7 +433,7 @@ public: + } + realvec_t round() const { return MF::vml_round(*this); } + realvec_t rsqrt() const { return MF::vml_rsqrt(*this); } +- boolvec_t signbit() const { return vml_std::signbit(v); } ++ boolvec_t signbit() const { return bool(vml_std::signbit(v)); } + realvec_t sin() const { return MF::vml_sin(*this); } + realvec_t sinh() const { return MF::vml_sinh(*this); } + realvec_t sqrt() const { +diff --git a/lib/kernel/vecmathlib/vec_sse_float1.h b/lib/kernel/vecmathlib/vec_sse_float1.h +index a84a046..4868b2c 100644 +--- a/lib/kernel/vecmathlib/vec_sse_float1.h ++++ b/lib/kernel/vecmathlib/vec_sse_float1.h +@@ -394,8 +394,8 @@ public: + } + return r; + } +- boolvec_t isfinite() const { return vml_std::isfinite(v); } +- boolvec_t isinf() const { return vml_std::isinf(v); } ++ boolvec_t isfinite() const { return bool(vml_std::isfinite(v)); } ++ boolvec_t isinf() const { return bool(vml_std::isinf(v)); } + boolvec_t isnan() const { + #if defined VML_HAVE_NAN + // This is wrong: +@@ -405,12 +405,12 @@ public: + // __asm__("ucomiss %[v],%[v]; setp %[r]": [r]"=q"(r): [v]"x"(v)); + // return boolvec_t::scalar_t(r); + // This works as well: +- return vml_std::isnan(v); ++ return bool(vml_std::isnan(v)); + #else + return BV(false); + #endif + } +- boolvec_t isnormal() const { return vml_std::isnormal(v); } ++ boolvec_t isnormal() const { return bool(vml_std::isnormal(v)); } + realvec_t ldexp(int_t n) const { return vml_std::ldexp(v, n); } + realvec_t ldexp(intvec_t n) const { return vml_std::ldexp(v, n); } + realvec_t log() const { return MF::vml_log(*this); } +@@ -434,7 +434,7 @@ public: + } + realvec_t round() const { return MF::vml_round(*this); } + realvec_t rsqrt() const { return MF::vml_rsqrt(*this); } +- boolvec_t signbit() const { return vml_std::signbit(v); } ++ boolvec_t signbit() const { return bool(vml_std::signbit(v)); } + realvec_t sin() const { return MF::vml_sin(*this); } + realvec_t sinh() const { return MF::vml_sinh(*this); } + realvec_t sqrt() const { return to_float(_mm_sqrt_ss(from_float(v))); } From d11e262b366eba85c51585c5352b1df129ecbdd9 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 13 Mar 2017 15:52:36 -0700 Subject: [PATCH 0338/2394] Fix from_sourcing_files(): decode json input as utf-8 (#3433) --- lib/spack/spack/environment.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index de30a9c7be5..da69979ae1d 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -310,8 +310,10 @@ def from_sourcing_files(*args, **kwargs): raise RuntimeError('sourcing files returned a non-zero exit code') output = ''.join([line for line in proc.stdout]) # Construct a dictionary with all the variables in the new environment - after_source_env = dict(json.loads(output)) - this_environment = dict(os.environ) + after_source_env = dict( + (k, v.decode('utf8')) for k, v in json.loads(output).items()) + this_environment = dict( + (k, v.decode('utf8')) for k, v in os.environ.items()) # Filter variables that are not related to sourcing a file to_be_filtered = 'SHLVL', '_', 'PWD', 'OLDPWD' From 415c9398d2bbf258fcfb1757bb675fd5f0c6d573 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 14 Mar 2017 10:43:02 -0400 Subject: [PATCH 0339/2394] ncurses: Use gawk as awk (#3425) --- var/spack/repos/builtin/packages/ncurses/package.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 6a1e8d49960..93691ee6a19 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -41,11 +41,14 @@ class Ncurses(AutotoolsPackage): patch('patch_gcc_5.txt', when='@6.0%gcc@5.0:') patch('sed_pgi.patch', when='@:6.0') + depends_on("gawk", type='build') + variant('symlinks', default=False, description='Enables symlinks. Needed on AFS filesystem.') def configure_args(self): opts = [ + 'AWK=gawk', 'CFLAGS={0}'.format(self.compiler.pic_flag), 'CXXFLAGS={0}'.format(self.compiler.pic_flag), '--with-shared', @@ -61,9 +64,4 @@ def configure_args(self): if '+symlinks' in self.spec: opts.append('--enable-symlinks') - # The CPPFLAGS setting works around this bug: - # - if self.spec.satisfies('%gcc'): - opts.append('CPPFLAGS=-P') - return opts From b20305889166f9354a7bb8a146d695e5d98a28f3 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 14 Mar 2017 09:43:54 -0500 Subject: [PATCH 0340/2394] Fix zlib %pgi build (#3436) --- .../repos/builtin/packages/zlib/package.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index c3d6b4bae24..797c4fe7156 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -25,13 +25,15 @@ from spack import * -class Zlib(AutotoolsPackage): +# Although zlib comes with a configure script, it does not use Autotools +# The AutotoolsPackage causes zlib to fail to build with PGI +class Zlib(Package): """A free, general-purpose, legally unencumbered lossless data-compression library.""" homepage = "http://zlib.net" # URL must remain http:// so Spack can bootstrap curl - url = "http://zlib.net/fossils/zlib-1.2.10.tar.gz" + url = "http://zlib.net/fossils/zlib-1.2.11.tar.gz" version('1.2.11', '1c9f62f0778697a09d36121ead88e08e') # Due to the bug fixes, any installations of 1.2.9 or 1.2.10 should be @@ -47,8 +49,13 @@ def setup_environment(self, spack_env, run_env): if '+pic' in self.spec: spack_env.set('CFLAGS', self.compiler.pic_flag) - def configure_args(self): + def install(self, spec, prefix): config_args = [] - if '+shared' not in self.spec: + if '~shared' in spec: config_args.append('--static') - return config_args + configure('--prefix={0}'.format(prefix), *config_args) + + make() + if self.run_tests: + make('check') + make('install') From 5430d45db18f064741b86e6f61d0b03f17baf718 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 14 Mar 2017 09:44:46 -0500 Subject: [PATCH 0341/2394] Add latest version of openpyxl and missing dependencies (#3431) --- .../builtin/packages/py-et-xmlfile/package.py | 36 +++++++++++++++++++ .../builtin/packages/py-jdcal/package.py | 7 ++-- .../builtin/packages/py-openpyxl/package.py | 14 +++++--- 3 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-et-xmlfile/package.py diff --git a/var/spack/repos/builtin/packages/py-et-xmlfile/package.py b/var/spack/repos/builtin/packages/py-et-xmlfile/package.py new file mode 100644 index 00000000000..eccb9417019 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-et-xmlfile/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyEtXmlfile(PythonPackage): + """An implementation of lxml.xmlfile for the standard library.""" + + homepage = "https://bitbucket.org/openpyxl/et_xmlfile" + url = "https://pypi.io/packages/source/e/et_xmlfile/et_xmlfile-1.0.1.tar.gz" + + version('1.0.1', 'f47940fd9d556375420b2e276476cfaf') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-jdcal/package.py b/var/spack/repos/builtin/packages/py-jdcal/package.py index 964db1448f4..5eb2e57d823 100644 --- a/var/spack/repos/builtin/packages/py-jdcal/package.py +++ b/var/spack/repos/builtin/packages/py-jdcal/package.py @@ -28,7 +28,10 @@ class PyJdcal(PythonPackage): """Julian dates from proleptic Gregorian and Julian calendars""" - homepage = 'http://github.com/phn/jdcal' - url = "https://pypi.python.org/packages/source/j/jdcal/jdcal-1.2.tar.gz" + homepage = "http://github.com/phn/jdcal" + url = "https://pypi.io/packages/source/j/jdcal/jdcal-1.3.tar.gz" + version('1.3', '885ba61d28992f26acffec131bd2a17e') version('1.2', 'ab8d5ba300fd1eb01514f363d19b1eb9') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-openpyxl/package.py b/var/spack/repos/builtin/packages/py-openpyxl/package.py index d396916035b..04d4a51f6d3 100644 --- a/var/spack/repos/builtin/packages/py-openpyxl/package.py +++ b/var/spack/repos/builtin/packages/py-openpyxl/package.py @@ -26,12 +26,16 @@ class PyOpenpyxl(PythonPackage): - """A Python library to read/write Excel 2007 xlsx/xlsm files""" + """A Python library to read/write Excel 2010 xlsx/xlsm files""" - homepage = 'http://openpyxl.readthedocs.org/' - url = "https://pypi.python.org/packages/source/o/openpyxl/openpyxl-2.4.0-a1.tar.gz" + homepage = "http://openpyxl.readthedocs.org/" + url = "https://pypi.io/packages/source/o/openpyxl/openpyxl-2.4.5.tar.gz" - version('2.4.0-a1', 'e5ca6d23ceccb15115d45cdf26e736fc') + version('2.4.5', '3de13dc9b731e1a9dd61b873d9b35a8a') + + depends_on('python@2.6:2.8,3.0:3.1,3.3:') - depends_on('py-jdcal', type=('build', 'run')) depends_on('py-setuptools', type='build') + + depends_on('py-jdcal', type=('build', 'run')) + depends_on('py-et-xmlfile', type=('build', 'run')) From 64bd7adefabc76a6b1337ce3b9c678c4af84ae6e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 14 Mar 2017 09:45:17 -0500 Subject: [PATCH 0342/2394] Fix vim ~gui behavior (#3432) --- .../repos/builtin/packages/vim/package.py | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index c89bc6cb8fd..1ac0ce51862 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -25,7 +25,7 @@ from spack import * -class Vim(Package): +class Vim(AutotoolsPackage): """Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems. Vim is often called a "programmer's editor," and so useful @@ -37,6 +37,7 @@ class Vim(Package): homepage = "http://www.vim.org" url = "https://github.com/vim/vim/archive/v8.0.0134.tar.gz" + version('8.0.0454', '4030bf677bdfbd14efb588e4d9a24128') version('8.0.0134', 'c74668d25c2acc85d655430dd60886cd') version('7.4.2367', 'a0a7bc394f7ab1d95571fe6ab05da3ea') @@ -59,12 +60,15 @@ class Vim(Package): variant('cscope', default=False, description="build with cscope support") depends_on('cscope', when='+cscope', type='run') + # TODO: Once better support for multi-valued variants is added, add + # support for auto/no/gtk2/gnome2/gtk3/motif/athena/neXtaw/photon/carbon variant('gui', default=False, description="build with gui (gvim)") - # virtual dependency? + variant('x', default=False, description="use the X Window System") depends_on('ncurses', when="@7.4:") - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec feature_set = None for fs in self.feature_sets: if "+" + fs in spec: @@ -110,11 +114,15 @@ def install(self, spec, prefix): if '+gui' in spec: configure_args.append("--enable-gui=auto") + else: + configure_args.append("--enable-gui=no") + + if '+x' in spec: + configure_args.append("--with-x") + else: + configure_args.append("--without-x") if '+cscope' in spec: configure_args.append("--enable-cscope") - configure("--prefix=%s" % prefix, *configure_args) - - make() - make("install") + return configure_args From 8c3edfd36ffe668e4e82c8e01b0a6e7918707266 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 14 Mar 2017 17:07:04 +0100 Subject: [PATCH 0343/2394] test/file_cache.py: ported to pytest (#3429) --- lib/spack/spack/test/file_cache.py | 80 ++++++++++++++---------------- 1 file changed, 36 insertions(+), 44 deletions(-) diff --git a/lib/spack/spack/test/file_cache.py b/lib/spack/spack/test/file_cache.py index cc66beda2e4..af52380e340 100644 --- a/lib/spack/spack/test/file_cache.py +++ b/lib/spack/spack/test/file_cache.py @@ -22,62 +22,54 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -""" -Test Spack's FileCache. -""" +"""Test Spack's FileCache.""" import os -import shutil -import tempfile -import unittest +import pytest from spack.file_cache import FileCache -class FileCacheTest(unittest.TestCase): - """Ensure that a file cache can properly write to a file and recover its - contents.""" +@pytest.fixture() +def file_cache(tmpdir): + """Returns a properly initialized FileCache instance""" + return FileCache(str(tmpdir)) - def setUp(self): - self.scratch_dir = tempfile.mkdtemp() - self.cache = FileCache(self.scratch_dir) - def tearDown(self): - shutil.rmtree(self.scratch_dir) +def test_write_and_read_cache_file(file_cache): + """Test writing then reading a cached file.""" + with file_cache.write_transaction('test.yaml') as (old, new): + assert old is None + assert new is not None + new.write("foobar\n") - def test_write_and_read_cache_file(self): - """Test writing then reading a cached file.""" - with self.cache.write_transaction('test.yaml') as (old, new): - self.assertTrue(old is None) - self.assertTrue(new is not None) - new.write("foobar\n") + with file_cache.read_transaction('test.yaml') as stream: + text = stream.read() + assert text == "foobar\n" - with self.cache.read_transaction('test.yaml') as stream: - text = stream.read() - self.assertEqual("foobar\n", text) - def test_remove(self): - """Test removing an entry from the cache.""" - self.test_write_and_write_cache_file() +def test_write_and_remove_cache_file(file_cache): + """Test two write transactions on a cached file. Then try to remove an + entry from it. + """ - self.cache.remove('test.yaml') + with file_cache.write_transaction('test.yaml') as (old, new): + assert old is None + assert new is not None + new.write("foobar\n") - self.assertFalse(os.path.exists(self.cache.cache_path('test.yaml'))) - self.assertFalse(os.path.exists(self.cache._lock_path('test.yaml'))) + with file_cache.write_transaction('test.yaml') as (old, new): + assert old is not None + text = old.read() + assert text == "foobar\n" + assert new is not None + new.write("barbaz\n") - def test_write_and_write_cache_file(self): - """Test two write transactions on a cached file.""" - with self.cache.write_transaction('test.yaml') as (old, new): - self.assertTrue(old is None) - self.assertTrue(new is not None) - new.write("foobar\n") + with file_cache.read_transaction('test.yaml') as stream: + text = stream.read() + assert text == "barbaz\n" - with self.cache.write_transaction('test.yaml') as (old, new): - self.assertTrue(old is not None) - text = old.read() - self.assertEqual("foobar\n", text) - self.assertTrue(new is not None) - new.write("barbaz\n") + file_cache.remove('test.yaml') - with self.cache.read_transaction('test.yaml') as stream: - text = stream.read() - self.assertEqual("barbaz\n", text) + # After removal both the file and the lock file should not exist + assert not os.path.exists(file_cache.cache_path('test.yaml')) + assert not os.path.exists(file_cache._lock_path('test.yaml')) From 560d28ac7f138d7390dafc100728fce2640d8a35 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 14 Mar 2017 17:48:27 +0100 Subject: [PATCH 0344/2394] fix automatic mixing of clang with gfortran 6.3.0 on macOS (#3427) * fix automatic mixing of clang with gfortran 6.3.0 on macOS * automatically mix any gfortran with any clang on macOS * adjust the unit test --- lib/spack/spack/compilers/clang.py | 15 +++------------ lib/spack/spack/test/cmd/test_compiler_cmd.py | 4 ++-- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/lib/spack/spack/compilers/clang.py b/lib/spack/spack/compilers/clang.py index 3d68a37c446..f2f0883b205 100644 --- a/lib/spack/spack/compilers/clang.py +++ b/lib/spack/spack/compilers/clang.py @@ -164,19 +164,10 @@ def _find_full_path(self, path): @classmethod def fc_version(cls, fc): - version = get_compiler_version( - fc, '-dumpversion', - # older gfortran versions don't have simple dumpversion output. - r'(?:GNU Fortran \(GCC\))?(\d+\.\d+(?:\.\d+)?)') - # This is horribly ad hoc, we need to map from gcc/gfortran version - # to clang version, but there could be multiple clang - # versions that work for a single gcc/gfortran version + # We could map from gcc/gfortran version to clang version, but on macOS + # we normally mix any version of gfortran with any version of clang. if sys.platform == 'darwin': - clangversionfromgcc = {'6.2.0': '8.0.0-apple'} - else: - clangversionfromgcc = {} - if version in clangversionfromgcc: - return clangversionfromgcc[version] + return cls.default_version('clang') else: return 'unknown' diff --git a/lib/spack/spack/test/cmd/test_compiler_cmd.py b/lib/spack/spack/test/cmd/test_compiler_cmd.py index f0160e274aa..842b64039e4 100644 --- a/lib/spack/spack/test/cmd/test_compiler_cmd.py +++ b/lib/spack/spack/test/cmd/test_compiler_cmd.py @@ -90,5 +90,5 @@ def test_compiler_add(self, mock_compiler_dir): new_compilers = set(spack.compilers.all_compiler_specs()) new_compiler = new_compilers - old_compilers assert new_compiler - c = new_compiler.pop() - assert c.version == Version(test_version) + assert sum(1 for c in new_compiler if + c.version == Version(test_version)) > 0 From dca4d2b15e6e78058d1ebdb244877470241f8f9c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 15 Mar 2017 00:26:44 -0500 Subject: [PATCH 0345/2394] Consistent docs and usage of env mod methods (#3351) --- lib/spack/docs/packaging_guide.rst | 29 ++--- lib/spack/spack/package.py | 111 ++++++++---------- .../repos/builtin/packages/bazel/package.py | 8 +- .../repos/builtin/packages/dealii/package.py | 4 +- .../builtin/packages/docbook-xml/package.py | 2 +- .../builtin/packages/docbook-xsl/package.py | 2 +- .../packages/everytrace-example/package.py | 4 +- .../builtin/packages/everytrace/package.py | 4 +- .../repos/builtin/packages/fastqc/package.py | 4 +- .../builtin/packages/go-bootstrap/package.py | 2 +- .../repos/builtin/packages/go/package.py | 8 +- .../builtin/packages/intel-mkl/package.py | 4 +- .../repos/builtin/packages/lua/package.py | 10 +- .../repos/builtin/packages/mpich/package.py | 2 +- .../builtin/packages/mvapich2/package.py | 4 +- .../repos/builtin/packages/octave/package.py | 4 +- .../repos/builtin/packages/openmpi/package.py | 2 +- .../repos/builtin/packages/plumed/package.py | 2 +- .../builtin/packages/py-numpy/package.py | 2 +- .../repos/builtin/packages/python/package.py | 20 ++-- .../repos/builtin/packages/qt/package.py | 4 +- var/spack/repos/builtin/packages/r/package.py | 16 +-- .../repos/builtin/packages/root/package.py | 2 +- .../repos/builtin/packages/ruby/package.py | 8 +- .../repos/builtin/packages/rust/package.py | 2 +- .../repos/builtin/packages/tcl/package.py | 6 +- 26 files changed, 123 insertions(+), 143 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 211e72158c4..b794bb25813 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1523,23 +1523,23 @@ properties to be used by dependents. The function declaration should look like this: -.. code-block:: python - - class Qt(Package): - ... - def setup_dependent_environment(self, module, spec, dep_spec): - """Dependencies of Qt find it using the QTDIR environment variable.""" - os.environ['QTDIR'] = self.prefix +.. literalinclude:: ../../../var/spack/repos/builtin/packages/qt/package.py + :pyobject: Qt.setup_dependent_environment + :linenos: Here, the Qt package sets the ``QTDIR`` environment variable so that packages that depend on a particular Qt installation will find it. The arguments to this function are: -* **module**: the module of the dependent package, where global - properties can be assigned. -* **spec**: the spec of the *dependency package* (the one the function is called on). -* **dep_spec**: the spec of the dependent package (i.e. dep_spec depends on spec). +* **spack_env**: List of environment modifications to be applied when + the dependent package is built within Spack. +* **run_env**: List of environment modifications to be applied when + the dependent package is run outside of Spack. These are added to the + resulting module file. +* **dependent_spec**: The spec of the dependent package about to be + built. This allows the extendee (self) to query the dependent's state. + Note that *this* package's spec is available as ``self.spec``. A good example of using these is in the Python package: @@ -2805,11 +2805,8 @@ the one passed to install, only the MPI implementations all set some additional properties on it to help you out. E.g., in mvapich2, you'll find this: -.. code-block:: python - - def setup_dependent_package(self, module, dep_spec): - self.spec.mpicc = join_path(self.prefix.bin, 'mpicc') - # … etc … +.. literalinclude:: ../../../var/spack/repos/builtin/packages/mvapich2/package.py + :pyobject: Mvapich2.setup_dependent_package That code allows the mvapich2 package to associate an ``mpicc`` property with the ``mvapich2`` node in the DAG, so that dependents can access it. diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 8889de75763..80d65bd739e 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1393,32 +1393,29 @@ def module(self): def setup_environment(self, spack_env, run_env): """Set up the compile and runtime environments for a package. - `spack_env` and `run_env` are `EnvironmentModifications` - objects. Package authors can call methods on them to alter + ``spack_env`` and ``run_env`` are ``EnvironmentModifications`` + objects. Package authors can call methods on them to alter the environment within Spack and at runtime. - Both `spack_env` and `run_env` are applied within the build - process, before this package's `install()` method is called. + Both ``spack_env`` and ``run_env`` are applied within the build + process, before this package's ``install()`` method is called. - Modifications in `run_env` will *also* be added to the + Modifications in ``run_env`` will *also* be added to the generated environment modules for this package. Default implementation does nothing, but this can be overridden if the package needs a particular environment. - Examples: + Example: - 1. Qt extensions need `QTDIR` set. - - Args: - spack_env (EnvironmentModifications): list of - modifications to be applied when this package is built - within Spack. - - run_env (EnvironmentModifications): list of environment - changes to be applied when this package is run outside - of Spack. + 1. Qt extensions need ``QTDIR`` set. + :param EnvironmentModifications spack_env: List of environment + modifications to be applied when this package is built + within Spack. + :param EnvironmentModifications run_env: List of environment + modifications to be applied when this package is run outside + of Spack. These are added to the resulting module file. """ pass @@ -1431,32 +1428,26 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): others that follow the extension model a way to implement common environment or compile-time settings for dependencies. - By default, this delegates to ``self.setup_environment()`` + This is useful if there are some common steps to installing + all extensions for a certain package. Example: - 1. Installing python modules generally requires - `PYTHONPATH` to point to the lib/pythonX.Y/site-packages - directory in the module's install prefix. This could - set that variable. + 1. Installing python modules generally requires ``PYTHONPATH`` to point + to the ``lib/pythonX.Y/site-packages`` directory in the module's + install prefix. This method could be used to set that variable. - Args: - - spack_env (EnvironmentModifications): list of - modifications to be applied when the dependent package - is bulit within Spack. - - run_env (EnvironmentModifications): list of environment - changes to be applied when the dependent package is - run outside of Spack. - - dependent_spec (Spec): The spec of the dependent package - about to be built. This allows the extendee (self) to - query the dependent's state. Note that *this* - package's spec is available as `self.spec`. - - This is useful if there are some common steps to installing - all extensions for a certain package. + :param EnvironmentModifications spack_env: List of environment + modifications to be applied when the dependent package is + built within Spack. + :param EnvironmentModifications run_env: List of environment + modifications to be applied when the dependent package is + run outside of Spack. These are added to the resulting + module file. + :param Spec dependent_spec: The spec of the dependent package + about to be built. This allows the extendee (self) to query + the dependent's state. Note that *this* package's spec is + available as ``self.spec``. """ pass @@ -1470,37 +1461,29 @@ def setup_dependent_package(self, module, dependent_spec): its extensions. This is useful if there are some common steps to installing all extensions for a certain package. - Example : + Examples: - 1. Extensions often need to invoke the `python` - interpreter from the Python installation being - extended. This routine can put a 'python' Executable - object in the module scope for the extension package to - simplify extension installs. + 1. Extensions often need to invoke the ``python`` interpreter + from the Python installation being extended. This routine + can put a ``python()`` Executable object in the module scope + for the extension package to simplify extension installs. - 2. MPI compilers could set some variables in the - dependent's scope that point to `mpicc`, `mpicxx`, - etc., allowing them to be called by common names - regardless of which MPI is used. + 2. MPI compilers could set some variables in the dependent's + scope that point to ``mpicc``, ``mpicxx``, etc., allowing + them to be called by common name regardless of which MPI is used. - 3. BLAS/LAPACK implementations can set some variables - indicating the path to their libraries, since these - paths differ by BLAS/LAPACK implementation. + 3. BLAS/LAPACK implementations can set some variables + indicating the path to their libraries, since these + paths differ by BLAS/LAPACK implementation. - Args: - - module (module): The Python `module` object of the - dependent package. Packages can use this to set - module-scope variables for the dependent to use. - - dependent_spec (Spec): The spec of the dependent package - about to be built. This allows the extendee (self) to - query the dependent's state. Note that *this* - package's spec is available as `self.spec`. - - This is useful if there are some common steps to installing - all extensions for a certain package. + :param spack.package.PackageBase.module module: The Python ``module`` + object of the dependent package. Packages can use this to set + module-scope variables for the dependent to use. + :param Spec dependent_spec: The spec of the dependent package + about to be built. This allows the extendee (self) to + query the dependent's state. Note that *this* + package's spec is available as ``self.spec``. """ pass diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index 95af1e4cc0f..d2e3ee8f8a7 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -53,7 +53,7 @@ def install(self, spec, prefix): mkdir(prefix.bin) install('output/bazel', prefix.bin) - def setup_dependent_package(self, module, dep_spec): + def setup_dependent_package(self, module, dependent_spec): class BazelExecutable(Executable): """Special callable executable object for bazel so the user can specify parallel or not on a per-invocation basis. Using @@ -84,8 +84,8 @@ def __call__(self, *args, **kwargs): return super(BazelExecutable, self).__call__(*args, **kwargs) jobs = cpu_count() - if not dep_spec.package.parallel: + if not dependent_spec.package.parallel: jobs = 1 - elif dep_spec.package.make_jobs: - jobs = dep_spec.package.make_jobs + elif dependent_spec.package.make_jobs: + jobs = dependent_spec.package.make_jobs module.bazel = BazelExecutable('bazel', 'build', jobs) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 61dae81a3dc..de62ea213cf 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -287,5 +287,5 @@ def cmake_args(self): return options - def setup_environment(self, spack_env, env): - env.set('DEAL_II_DIR', self.prefix) + def setup_environment(self, spack_env, run_env): + run_env.set('DEAL_II_DIR', self.prefix) diff --git a/var/spack/repos/builtin/packages/docbook-xml/package.py b/var/spack/repos/builtin/packages/docbook-xml/package.py index f1e1a08c8f1..cff971f373c 100644 --- a/var/spack/repos/builtin/packages/docbook-xml/package.py +++ b/var/spack/repos/builtin/packages/docbook-xml/package.py @@ -42,7 +42,7 @@ def install(self, spec, prefix): else: install(src, dst) - def setup_dependent_environment(self, spack_env, run_env, extension_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): catalog = os.path.join(self.spec.prefix, 'catalog.xml') spack_env.set('XML_CATALOG_FILES', catalog, separator=' ') diff --git a/var/spack/repos/builtin/packages/docbook-xsl/package.py b/var/spack/repos/builtin/packages/docbook-xsl/package.py index 5de9cecdbb5..2554e4d7bf1 100644 --- a/var/spack/repos/builtin/packages/docbook-xsl/package.py +++ b/var/spack/repos/builtin/packages/docbook-xsl/package.py @@ -44,7 +44,7 @@ def install(self, spec, prefix): else: install(src, dst) - def setup_dependent_environment(self, spack_env, run_env, extension_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): catalog = os.path.join(self.spec.prefix, 'catalog.xml') spack_env.set('XML_CATALOG_FILES', catalog, separator=' ') diff --git a/var/spack/repos/builtin/packages/everytrace-example/package.py b/var/spack/repos/builtin/packages/everytrace-example/package.py index 76b437a38a0..17a7ed8658e 100644 --- a/var/spack/repos/builtin/packages/everytrace-example/package.py +++ b/var/spack/repos/builtin/packages/everytrace-example/package.py @@ -38,5 +38,5 @@ class EverytraceExample(CMakePackage): # Currently the only MPI this everytrace works with. depends_on('openmpi') - def setup_environment(self, spack_env, env): - env.prepend_path('PATH', join_path(self.prefix, 'bin')) + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PATH', join_path(self.prefix, 'bin')) diff --git a/var/spack/repos/builtin/packages/everytrace/package.py b/var/spack/repos/builtin/packages/everytrace/package.py index d884c7b165b..11d2a66bf46 100644 --- a/var/spack/repos/builtin/packages/everytrace/package.py +++ b/var/spack/repos/builtin/packages/everytrace/package.py @@ -47,5 +47,5 @@ def cmake_args(self): '-DUSE_MPI=%s' % ('YES' if '+mpi' in spec else 'NO'), '-DUSE_FORTRAN=%s' % ('YES' if '+fortran' in spec else 'NO')] - def setup_environment(self, spack_env, env): - env.prepend_path('PATH', join_path(self.prefix, 'bin')) + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PATH', join_path(self.prefix, 'bin')) diff --git a/var/spack/repos/builtin/packages/fastqc/package.py b/var/spack/repos/builtin/packages/fastqc/package.py index e2a1b54210d..a9e352e101f 100644 --- a/var/spack/repos/builtin/packages/fastqc/package.py +++ b/var/spack/repos/builtin/packages/fastqc/package.py @@ -53,8 +53,8 @@ def install(self, spec, prefix): # In theory the 'run' dependency on 'jdk' above should take # care of this for me. In practice, it does not. - def setup_environment(self, spack_env, env): + def setup_environment(self, spack_env, run_env): """Add to the path; the package has a script at the top level. """ - env.prepend_path('PATH', join_path(self.spec['jdk'].prefix, 'bin')) + run_env.prepend_path('PATH', join_path(self.spec['jdk'].prefix, 'bin')) diff --git a/var/spack/repos/builtin/packages/go-bootstrap/package.py b/var/spack/repos/builtin/packages/go-bootstrap/package.py index b497144f2f8..8d54486bf59 100644 --- a/var/spack/repos/builtin/packages/go-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/go-bootstrap/package.py @@ -87,7 +87,7 @@ def install(self, spec, prefix): else: shutil.copy2(f, os.path.join(prefix, f)) - def setup_dependent_environment(self, spack_env, run_env, dep_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('GOROOT_BOOTSTRAP', self.spec.prefix) def setup_environment(self, spack_env, run_env): diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 3a1ca9f1e89..6559e904961 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -114,7 +114,7 @@ def install(self, spec, prefix): def setup_environment(self, spack_env, run_env): spack_env.set('GOROOT_FINAL', self.spec.prefix) - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): """Called before go modules' install() methods. In most cases, extensions will only need to set GOPATH and use go:: @@ -127,13 +127,13 @@ def setup_dependent_package(self, module, ext_spec): # Add a go command/compiler for extensions module.go = Executable(join_path(self.spec.prefix.bin, 'go')) - def setup_dependent_environment(self, spack_env, run_env, ext_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): if os.environ.get('GOROOT', False): tty.warn('GOROOT is set, this is not recommended') path_components = [] # Set GOPATH to include paths of dependencies - for d in ext_spec.traverse(): + for d in dependent_spec.traverse(): if d.package.extends(self.spec): path_components.append(d.prefix) @@ -142,4 +142,4 @@ def setup_dependent_environment(self, spack_env, run_env, ext_spec): # Allow packages to find this when using module or dotkit run_env.prepend_path('GOPATH', ':'.join( - [ext_spec.prefix] + path_components)) + [dependent_spec.prefix] + path_components)) diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 6bd4689bc13..5e108a0867a 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -125,5 +125,5 @@ 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) + def setup_environment(self, spack_env, run_env): + run_env.set('MKLROOT', self.prefix) diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index 357e2cc03a4..a76e7c545b2 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -86,9 +86,9 @@ def append_paths(self, paths, cpaths, path): paths.append(os.path.join(path, '?', 'init.lua')) cpaths.append(os.path.join(path, '?.so')) - def setup_dependent_environment(self, spack_env, run_env, extension_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): lua_paths = [] - for d in extension_spec.traverse( + for d in dependent_spec.traverse( deptypes=('build', 'run'), deptype_query='run'): if d.package.extends(self.spec): lua_paths.append(os.path.join(d.prefix, self.lua_lib_dir)) @@ -111,9 +111,9 @@ def setup_dependent_environment(self, spack_env, run_env, extension_spec): # Add LUA to PATH for dependent packages spack_env.prepend_path('PATH', self.prefix.bin) - # For run time environment set only the path for extension_spec and + # For run time environment set only the path for dependent_spec and # prepend it to LUAPATH - if extension_spec.package.extends(self.spec): + if dependent_spec.package.extends(self.spec): run_env.prepend_path('LUA_PATH', ';'.join(lua_patterns), separator=';') run_env.prepend_path('LUA_CPATH', ';'.join(lua_cpatterns), @@ -149,7 +149,7 @@ def lua_lib_dir(self): def lua_share_dir(self): return os.path.join('share', 'lua', self.version.up_to(2)) - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): """ Called before lua modules's install() methods. diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index 4c34f3e3a0a..09fc683874a 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -69,7 +69,7 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('MPICH_F90', spack_fc) spack_env.set('MPICH_FC', spack_fc) - def setup_dependent_package(self, module, dep_spec): + def setup_dependent_package(self, module, dependent_spec): if 'platform=cray' in self.spec: self.spec.mpicc = spack_cc self.spec.mpicxx = spack_cxx diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 18f2ebe0bb8..de809c4fed5 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -209,7 +209,7 @@ def setup_environment(self, spack_env, run_env): self.version > Version('2.0'): run_env.set('SLURM_MPI_TYPE', 'pmi2') - def setup_dependent_environment(self, spack_env, run_env, extension_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc')) spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpicxx')) spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77')) @@ -221,7 +221,7 @@ def setup_dependent_environment(self, spack_env, run_env, extension_spec): spack_env.set('MPICH_F90', spack_fc) spack_env.set('MPICH_FC', spack_fc) - def setup_dependent_package(self, module, dep_spec): + def setup_dependent_package(self, module, dependent_spec): self.spec.mpicc = join_path(self.prefix.bin, 'mpicc') self.spec.mpicxx = join_path(self.prefix.bin, 'mpicxx') self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index fe6ea8ce680..33ed5c8bc38 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -88,7 +88,7 @@ class Octave(AutotoolsPackage): depends_on('gnuplot', when='+gnuplot') depends_on('image-magick', when='+magick') depends_on('hdf5', when='+hdf5') - depends_on('jdk', when='+jdk') # TODO: requires Java 6 ? + depends_on('jdk', when='+jdk') # TODO: requires Java 6 ? depends_on('llvm', when='+llvm') # depends_on('opengl', when='+opengl') # TODO: add package depends_on('qhull', when='+qhull') @@ -225,7 +225,7 @@ def configure_args(self): # Set up environment to make install easy for Octave extensions. # ======================================================================== - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): """Called before Octave modules' install() methods. In most cases, extensions will only need to have one line: diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 4d09676facf..27bde1d7aaf 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -139,7 +139,7 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('OMPI_FC', spack_fc) spack_env.set('OMPI_F77', spack_f77) - def setup_dependent_package(self, module, dep_spec): + def setup_dependent_package(self, module, dependent_spec): self.spec.mpicc = join_path(self.prefix.bin, 'mpicc') self.spec.mpicxx = join_path(self.prefix.bin, 'mpic++') self.spec.mpifc = join_path(self.prefix.bin, 'mpif90') diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 69949b0017d..80cc1aa66a4 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -99,7 +99,7 @@ def apply_patch(self, other): plumed.stdin.write(choice) plumed.wait() - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): # Make plumed visible from dependent packages module.plumed = Executable(join_path(self.spec.prefix.bin, 'plumed')) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 11f6ebb1a54..3571ff1f157 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -53,7 +53,7 @@ class PyNumpy(PythonPackage): depends_on('blas', when='+blas') depends_on('lapack', when='+lapack') - def setup_dependent_package(self, module, dep_spec): + def setup_dependent_package(self, module, dependent_spec): python_version = self.spec['python'].version.up_to(2) arch = '{0}-{1}'.format(platform.system().lower(), platform.machine()) diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index f3e2813ae86..15f7f4f987a 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -335,7 +335,7 @@ def python_include_dir(self): def site_packages_dir(self): return join_path(self.python_lib_dir, 'site-packages') - def setup_dependent_environment(self, spack_env, run_env, extension_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """Set PYTHONPATH to include site-packages dir for the extension and any other python extensions it depends on.""" # The python executable for version 3 may be python3 or python @@ -361,7 +361,7 @@ def setup_dependent_environment(self, spack_env, run_env, extension_spec): spack_env.set('PYTHONHOME', prefix.strip('\n')) python_paths = [] - for d in extension_spec.traverse( + for d in dependent_spec.traverse( deptype=('build', 'run'), deptype_query='run'): if d.package.extends(self.spec): python_paths.append(join_path(d.prefix, @@ -371,12 +371,12 @@ def setup_dependent_environment(self, spack_env, run_env, extension_spec): spack_env.set('PYTHONPATH', pythonpath) # For run time environment set only the path for - # extension_spec and prepend it to PYTHONPATH - if extension_spec.package.extends(self.spec): + # dependent_spec and prepend it to PYTHONPATH + if dependent_spec.package.extends(self.spec): run_env.prepend_path('PYTHONPATH', join_path( - extension_spec.prefix, self.site_packages_dir)) + dependent_spec.prefix, self.site_packages_dir)) - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): """Called before python modules' install() methods. In most cases, extensions will only need to have one line:: @@ -398,15 +398,15 @@ def setup_dependent_package(self, module, ext_spec): module.setup_py.add_default_env(key, value) # Add variables for lib/pythonX.Y and lib/pythonX.Y/site-packages dirs. - module.python_lib_dir = join_path(ext_spec.prefix, + module.python_lib_dir = join_path(dependent_spec.prefix, self.python_lib_dir) - module.python_include_dir = join_path(ext_spec.prefix, + module.python_include_dir = join_path(dependent_spec.prefix, self.python_include_dir) - module.site_packages_dir = join_path(ext_spec.prefix, + module.site_packages_dir = join_path(dependent_spec.prefix, self.site_packages_dir) # Make the site packages directory for extensions - if ext_spec.package.is_extension: + if dependent_spec.package.is_extension: mkdirp(module.site_packages_dir) # ======================================================================== diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index dfe83888e59..b795cd17abc 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -128,10 +128,10 @@ def url_for_version(self, version): def setup_environment(self, spack_env, run_env): run_env.set('QTDIR', self.prefix) - def setup_dependent_environment(self, spack_env, run_env, dspec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('QTDIR', self.prefix) - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): module.qmake = Executable(join_path(self.spec.prefix.bin, 'qmake')) def patch(self): diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 842affc4cce..f6ec720eb79 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -149,11 +149,11 @@ def filter_compilers(self): def r_lib_dir(self): return join_path('rlib', 'R', 'library') - def setup_dependent_environment(self, spack_env, run_env, extension_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): # Set R_LIBS to include the library dir for the # extension and any other R extensions it depends on. r_libs_path = [] - for d in extension_spec.traverse( + for d in dependent_spec.traverse( deptype=('build', 'run'), deptype_query='run'): if d.package.extends(self.spec): r_libs_path.append(join_path(d.prefix, self.r_lib_dir)) @@ -167,11 +167,11 @@ def setup_dependent_environment(self, spack_env, run_env, extension_spec): # determine how many jobs can actually be started. spack_env.set('MAKEFLAGS', '-j{0}'.format(make_jobs)) - # For run time environment set only the path for extension_spec and + # For run time environment set only the path for dependent_spec and # prepend it to R_LIBS - if extension_spec.package.extends(self.spec): + if dependent_spec.package.extends(self.spec): run_env.prepend_path('R_LIBS', join_path( - extension_spec.prefix, self.r_lib_dir)) + dependent_spec.prefix, self.r_lib_dir)) def setup_environment(self, spack_env, run_env): run_env.prepend_path('LIBRARY_PATH', @@ -181,7 +181,7 @@ def setup_environment(self, spack_env, run_env): run_env.prepend_path('CPATH', join_path(self.prefix, 'rlib', 'R', 'include')) - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): """Called before R modules' install() methods. In most cases, extensions will only need to have one line: R('CMD', 'INSTALL', '--library={0}'.format(self.module.r_lib_dir), @@ -191,9 +191,9 @@ def setup_dependent_package(self, module, ext_spec): module.R = Executable(join_path(self.spec.prefix.bin, 'R')) # Add variable for library directry - module.r_lib_dir = join_path(ext_spec.prefix, self.r_lib_dir) + module.r_lib_dir = join_path(dependent_spec.prefix, self.r_lib_dir) # Make the site packages directory for extensions, if it does not exist # already. - if ext_spec.package.is_extension: + if dependent_spec.package.is_extension: mkdirp(module.r_lib_dir) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 0f66dcebaa6..a96d7f6bbc6 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -79,7 +79,7 @@ def install(self, spec, prefix): make() make("install") - def setup_dependent_environment(self, spack_env, run_env, dspec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('ROOTSYS', self.prefix) spack_env.set('ROOT_VERSION', 'v6') spack_env.prepend_path('PYTHONPATH', self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/ruby/package.py b/var/spack/repos/builtin/packages/ruby/package.py index 8dc314c171b..728362a18c3 100644 --- a/var/spack/repos/builtin/packages/ruby/package.py +++ b/var/spack/repos/builtin/packages/ruby/package.py @@ -52,20 +52,20 @@ def install(self, spec, prefix): make() make("install") - def setup_dependent_environment(self, spack_env, run_env, extension_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): # TODO: do this only for actual extensions. # Set GEM_PATH to include dependent gem directories ruby_paths = [] - for d in extension_spec.traverse(): + for d in dependent_spec.traverse(): if d.package.extends(self.spec): ruby_paths.append(d.prefix) spack_env.set_path('GEM_PATH', ruby_paths) # The actual installation path for this gem - spack_env.set('GEM_HOME', extension_spec.prefix) + spack_env.set('GEM_HOME', dependent_spec.prefix) - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): """Called before ruby modules' install() methods. Sets GEM_HOME and GEM_PATH to values appropriate for the package being built. diff --git a/var/spack/repos/builtin/packages/rust/package.py b/var/spack/repos/builtin/packages/rust/package.py index 8a92fca6348..4d0e7f52cf0 100644 --- a/var/spack/repos/builtin/packages/rust/package.py +++ b/var/spack/repos/builtin/packages/rust/package.py @@ -71,7 +71,7 @@ def install(self, spec, prefix): make() make("install") - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): """ Called before python modules' install() methods. diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index 31678caac6d..22b300408a5 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -49,11 +49,11 @@ def url_for_version(self, version): base_url = 'http://prdownloads.sourceforge.net/tcl' return '{0}/tcl{1}-src.tar.gz'.format(base_url, version) - def setup_environment(self, spack_env, env): + def setup_environment(self, spack_env, run_env): # When using Tkinter from within spack provided python+tk, python # will not be able to find Tcl/Tk unless TCL_LIBRARY is set. - env.set('TCL_LIBRARY', join_path(self.prefix.lib, 'tcl{0}'.format( - self.spec.version.up_to(2)))) + run_env.set('TCL_LIBRARY', join_path(self.prefix.lib, 'tcl{0}'.format( + self.spec.version.up_to(2)))) @run_after('install') def symlink_tclsh(self): From 9af7bef10b3c7312de1fb20847d0e640032333b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Thu, 16 Mar 2017 02:02:36 +0800 Subject: [PATCH 0346/2394] Add version 4.0 for foam-extend. (#3442) --- var/spack/repos/builtin/packages/foam-extend/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/foam-extend/package.py b/var/spack/repos/builtin/packages/foam-extend/package.py index 67397a5b723..e009d64f512 100644 --- a/var/spack/repos/builtin/packages/foam-extend/package.py +++ b/var/spack/repos/builtin/packages/foam-extend/package.py @@ -35,6 +35,7 @@ class FoamExtend(Package): homepage = "http://www.extend-project.de/" + version('4.0', git='http://git.code.sf.net/p/foam-extend/foam-extend-4.0') version('3.2', git='http://git.code.sf.net/p/foam-extend/foam-extend-3.2') version('3.1', git='http://git.code.sf.net/p/foam-extend/foam-extend-3.1') version('3.0', git='http://git.code.sf.net/p/foam-extend/foam-extend-3.0') From 41114c3e76d8a82e9dbdf0761dfee990553af512 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 15 Mar 2017 13:46:48 -0500 Subject: [PATCH 0347/2394] Add latest version of Intel Parallel Studio (#3445) --- .../repos/builtin/packages/intel-parallel-studio/package.py | 4 ++++ 1 file changed, 4 insertions(+) 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 afaed8b5ed3..9b60840a751 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -39,6 +39,10 @@ class IntelParallelStudio(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" + version('professional.2017.2', '70e54b33d940a1609ff1d35d3c56e3b3', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11298/parallel_studio_xe_2017_update2.tgz') + version('cluster.2017.2', '70e54b33d940a1609ff1d35d3c56e3b3', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11298/parallel_studio_xe_2017_update2.tgz') version('professional.2017.1', '7f75a4a7e2c563be778c377f9d35a542', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/10973/parallel_studio_xe_2017_update1.tgz') version('cluster.2017.1', '7f75a4a7e2c563be778c377f9d35a542', From 9f1af5913ba5a80451572a69722bff5d9701e525 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 15 Mar 2017 16:01:10 -0500 Subject: [PATCH 0348/2394] Add latest version of cURL (#3447) --- .../repos/builtin/packages/curl/package.py | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 5e7a6945157..7a48f651c37 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -25,14 +25,15 @@ from spack import * -class Curl(Package): +class Curl(AutotoolsPackage): """cURL is an open source command line tool and library for transferring data with URL syntax""" homepage = "http://curl.haxx.se" # URL must remain http:// so Spack can bootstrap curl - url = "http://curl.haxx.se/download/curl-7.46.0.tar.bz2" + url = "http://curl.haxx.se/download/curl-7.53.1.tar.bz2" + version('7.53.1', 'fb1f03a142236840c1a77c035fa4c542') version('7.52.1', 'dd014df06ff1d12e173de86873f9f77a') version('7.50.3', 'bd177fd6deecce00cfa7b5916d831c5e') version('7.50.2', '6e161179f7af4b9f8b6ea21420132719') @@ -45,13 +46,13 @@ class Curl(Package): version('7.43.0', '11bddbb452a8b766b932f859aaeeed39') version('7.42.1', '296945012ce647b94083ed427c1877a8') - depends_on("openssl") - depends_on("zlib") + depends_on('openssl') + depends_on('zlib') - def install(self, spec, prefix): - configure('--prefix=%s' % prefix, - '--with-zlib=%s' % spec['zlib'].prefix, - '--with-ssl=%s' % spec['openssl'].prefix) + def configure_args(self): + spec = self.spec - make() - make("install") + return [ + '--with-zlib={0}'.format(spec['zlib'].prefix), + '--with-ssl={0}'.format(spec['openssl'].prefix), + ] From 7be728d551d7d2becd70b575f95facbbd561e69b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 15 Mar 2017 18:00:17 -0500 Subject: [PATCH 0349/2394] Add latest version of libsigsegv (#3449) --- var/spack/repos/builtin/packages/libsigsegv/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libsigsegv/package.py b/var/spack/repos/builtin/packages/libsigsegv/package.py index f354b260a92..8104de6072d 100644 --- a/var/spack/repos/builtin/packages/libsigsegv/package.py +++ b/var/spack/repos/builtin/packages/libsigsegv/package.py @@ -29,10 +29,11 @@ class Libsigsegv(AutotoolsPackage): """GNU libsigsegv is a library for handling page faults in user mode.""" homepage = "https://www.gnu.org/software/libsigsegv/" - url = "https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.10.tar.gz" + url = "https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.11.tar.gz" patch('patch.new_config_guess', when='@2.10') + version('2.11', 'a812d9481f6097f705599b218eea349f') version('2.10', '7f96fb1f65b3b8cbc1582fb7be774f0f') def configure_args(self): From d0060bc318ef68157107c5f533bae769a97ad848 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Wed, 15 Mar 2017 16:51:18 -0700 Subject: [PATCH 0350/2394] added parallel studio composer edition 2017.2 (#3450) --- .../repos/builtin/packages/intel-parallel-studio/package.py | 2 ++ 1 file changed, 2 insertions(+) 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 9b60840a751..380dfa06a18 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -43,6 +43,8 @@ class IntelParallelStudio(IntelInstaller): url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11298/parallel_studio_xe_2017_update2.tgz') version('cluster.2017.2', '70e54b33d940a1609ff1d35d3c56e3b3', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11298/parallel_studio_xe_2017_update2.tgz') + version('composer.2017.2', '2891ab1ece43eb61b6ab892f07c47f01', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11302/parallel_studio_xe_2017_update2_composer_edition.tgz') version('professional.2017.1', '7f75a4a7e2c563be778c377f9d35a542', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/10973/parallel_studio_xe_2017_update1.tgz') version('cluster.2017.1', '7f75a4a7e2c563be778c377f9d35a542', From caf209bdd7b66984b917f56a6ef85a0b5b018ecb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 15 Mar 2017 20:08:01 -0500 Subject: [PATCH 0351/2394] Add latest version of libiconv (#3451) --- var/spack/repos/builtin/packages/libiconv/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py index 72f67ec80d5..571088c562e 100644 --- a/var/spack/repos/builtin/packages/libiconv/package.py +++ b/var/spack/repos/builtin/packages/libiconv/package.py @@ -31,13 +31,14 @@ class Libiconv(AutotoolsPackage): and the iconv program for character set conversion.""" homepage = "https://www.gnu.org/software/libiconv/" - url = "http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz" + url = "http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz" + version('1.15', 'ace8b5f2db42f7b3b3057585e80d9808') version('1.14', 'e34509b1623cec449dfeb73d7ce9c6c6') # We cannot set up a warning for gets(), since gets() is not part # of C11 any more and thus might not exist. - patch("gets.patch") + patch('gets.patch', when='@1.14') def configure_args(self): args = ['--enable-extra-encodings'] From 72890f4840563c0ec31037e55abd1f0796026cfe Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 15 Mar 2017 20:36:24 -0500 Subject: [PATCH 0352/2394] Add latest version of readline (#3452) --- .../builtin/packages/readline/package.py | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/readline/package.py b/var/spack/repos/builtin/packages/readline/package.py index 631a49183f3..25d26f5d4fc 100644 --- a/var/spack/repos/builtin/packages/readline/package.py +++ b/var/spack/repos/builtin/packages/readline/package.py @@ -27,18 +27,19 @@ class Readline(AutotoolsPackage): """The GNU Readline library provides a set of functions for use by - applications that allow users to edit command lines as they - are typed in. Both Emacs and vi editing modes are - available. The Readline library includes additional functions - to maintain a list of previously-entered command lines, to - recall and perhaps reedit those lines, and perform csh-like - history expansion on previous commands.""" - homepage = "http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html" - url = "https://ftp.gnu.org/gnu/readline/readline-6.3.tar.gz" + applications that allow users to edit command lines as they are typed in. + Both Emacs and vi editing modes are available. The Readline library + includes additional functions to maintain a list of previously-entered + command lines, to recall and perhaps reedit those lines, and perform + csh-like history expansion on previous commands.""" + homepage = "http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html" + url = "https://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz" + + version('7.0', '205b03a87fc83dab653b628c59b9fc91') version('6.3', '33c8fb279e981274f485fd91da77e94a') - depends_on("ncurses") + depends_on('ncurses') def build(self, spec, prefix): - make("SHLIB_LIBS=-lncurses") + make('SHLIB_LIBS=-lncurses') From a40ccc24d6cee3975a7d4e5d216be794bbc701d1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 15 Mar 2017 21:28:29 -0500 Subject: [PATCH 0353/2394] Add latest version of pcre (#3453) --- .../repos/builtin/packages/pcre/package.py | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/pcre/package.py b/var/spack/repos/builtin/packages/pcre/package.py index f1a106f8d79..581dfe531e0 100644 --- a/var/spack/repos/builtin/packages/pcre/package.py +++ b/var/spack/repos/builtin/packages/pcre/package.py @@ -25,28 +25,29 @@ from spack import * -class Pcre(Package): +class Pcre(AutotoolsPackage): """The PCRE package contains Perl Compatible Regular Expression - libraries. These are useful for implementing regular expression - pattern matching using the same syntax and semantics as Perl 5.""" - homepage = "http://www.pcre.org""" - url = "https://ftp.pcre.org/pub/pcre/pcre-8.36.tar.bz2" + libraries. These are useful for implementing regular expression + pattern matching using the same syntax and semantics as Perl 5.""" + homepage = "http://www.pcre.org" + url = "https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.bz2" + + version('8.40', '41a842bf7dcecd6634219336e2167d1d') version('8.39', 'e3fca7650a0556a2647821679d81f585') version('8.38', '00aabbfe56d5a48b270f999b508c5ad2') - patch("intel.patch", when='@8.38') + patch('intel.patch', when='@8.38') variant('utf', default=True, description='Enable support for UTF-8/16/32, ' 'incompatible with EBCDIC.') - def install(self, spec, prefix): - configure_args = ['--prefix=%s' % prefix] - if '+utf' in spec: - configure_args.append('--enable-utf') - configure_args.append('--enable-unicode-properties') + def configure_args(self): + args = [] - configure(*configure_args) - make() - make("install") + if '+utf' in self.spec: + args.append('--enable-utf') + args.append('--enable-unicode-properties') + + return args From 4518ff0150d433230bc314abf68b0b5a51b15423 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 15 Mar 2017 21:28:56 -0500 Subject: [PATCH 0354/2394] Add latest version of lua (#3454) --- var/spack/repos/builtin/packages/lua/package.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index a76e7c545b2..78938beff9b 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -27,10 +27,12 @@ class Lua(Package): - """ The Lua programming language interpreter and library """ - homepage = "http://www.lua.org" - url = "http://www.lua.org/ftp/lua-5.1.5.tar.gz" + """The Lua programming language interpreter and library.""" + homepage = "http://www.lua.org" + url = "http://www.lua.org/ftp/lua-5.3.4.tar.gz" + + version('5.3.4', '53a9c68bcc0eda58bdc2095ad5cdfc63') version('5.3.2', '33278c2ab5ee3c1a875be8d55c1ca2a1') version('5.3.1', '797adacada8d85761c079390ff1d9961') version('5.3.0', 'a1b0a7e92d0c85bbff7a8d27bf29f8af') From 9e1e3a203a193cee31c6c00f8809e5e6deff4c53 Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 16 Mar 2017 12:37:09 +0100 Subject: [PATCH 0355/2394] Adding new package: py-jpype (#3402) * Adding new package: py-jpype * Moving jdk dependency --- .../builtin/packages/py-jpype/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-jpype/package.py diff --git a/var/spack/repos/builtin/packages/py-jpype/package.py b/var/spack/repos/builtin/packages/py-jpype/package.py new file mode 100644 index 00000000000..3c20c813f8e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-jpype/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyJpype(PythonPackage): + """JPype is an effort to allow python programs full access to java class + libraries.""" + + homepage = "https://github.com/originell/jpype" + url = "https://pypi.io/packages/source/J/JPype1/JPype1-0.6.2.tar.gz" + + version('0.6.2', '16e5ee92b29563dcc63bbc75556810c1') + version('0.6.1', '468ca2d4b2cff7802138789e951d5d58') + version('0.6.0', 'f0cbbe1d0c4b563f7e435d2bffc31736') + + depends_on('python@2.6:') + + depends_on('py-setuptools', type='build') + depends_on('jdk', type=('build', 'run')) + # extra requirements + # depends_on('py-numpy@1.6:', type=('build', 'run')) From 19a90ccc19e64fd751defa11383083915ced13f5 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 16 Mar 2017 10:39:26 -0400 Subject: [PATCH 0356/2394] py-scipy: New version 0.19.0 (#3463) --- var/spack/repos/builtin/packages/py-scipy/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index d99c92c58ec..c506d4747d7 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -33,6 +33,8 @@ class PyScipy(PythonPackage): homepage = "http://www.scipy.org/" url = "https://pypi.io/packages/source/s/scipy/scipy-0.18.1.tar.gz" + version('0.19.0', '91b8396231eec780222a57703d3ec550', + url="https://pypi.io/packages/source/s/scipy/scipy-0.19.0.zip") version('0.18.1', '5fb5fb7ccb113ab3a039702b6c2f3327') version('0.17.0', '5ff2971e1ce90e762c59d2cd84837224') version('0.15.1', 'be56cd8e60591d6332aac792a5880110') From d6a7000aee1613564bdacab31bdb45236eb73ce6 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 16 Mar 2017 10:45:09 -0400 Subject: [PATCH 0357/2394] py-numpy: Correct typos in comment (#3462) --- var/spack/repos/builtin/packages/py-numpy/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 3571ff1f157..3ed0d0bdb58 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -96,11 +96,11 @@ def patch(self): # FIXME: as of @1.11.2, numpy does not work with separately # specified threading and interface layers. A workaround is # a terribly bad idea to use mkl_rt. In this case Spack - # won't no longer be able to guarantee that one and the + # will no longer be able to guarantee that one and the # same variant of Blas/Lapack (32/64bit, threaded/serial) # is used within the DAG. This may lead to a lot of # hard-to-debug segmentation faults on user's side. Users - # may also break working installation by (unconciously) + # may also break working installation by (unconsciously) # setting environment variable to switch between different # interface and threading layers dynamically. From this # perspective it is no different from throwing away RPATH's From a609d22b95fcdb1cd6a9da923735944b554f1417 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 16 Mar 2017 10:47:46 -0400 Subject: [PATCH 0358/2394] =?UTF-8?q?pocl:=20Introduce=20virtual=20package?= =?UTF-8?q?=20=E2=80=9Copencl=E2=80=9D=20(#3461)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OpenCL is a standard like MPI, with several versions and several implementations. --- var/spack/repos/builtin/packages/pocl/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py index 573b81131c2..243b4cbf668 100644 --- a/var/spack/repos/builtin/packages/pocl/package.py +++ b/var/spack/repos/builtin/packages/pocl/package.py @@ -49,6 +49,10 @@ class Pocl(CMakePackage): patch("uint.patch", when="@:0.13") patch("vecmathlib.patch", when="@:0.13") + # Note: We should describe correctly which pocl versions provide + # what OpenCL version + provides('opencl@:2.0') + depends_on("cmake @2.8.12:", type="build") depends_on("hwloc") depends_on("libtool", type=("build", "run")) From 53ca628d8bce5050ff87dca48a0c4a8c6da1fd5f Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 16 Mar 2017 11:08:48 -0400 Subject: [PATCH 0359/2394] qthreads: New version 1.12 (#3464) --- var/spack/repos/builtin/packages/qthreads/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/qthreads/package.py b/var/spack/repos/builtin/packages/qthreads/package.py index aa2f0ac67a9..e3cf09ed6ce 100644 --- a/var/spack/repos/builtin/packages/qthreads/package.py +++ b/var/spack/repos/builtin/packages/qthreads/package.py @@ -39,6 +39,7 @@ class Qthreads(Package): homepage = "http://www.cs.sandia.gov/qthreads/" url = "https://github.com/Qthreads/qthreads/releases/download/1.10/qthread-1.10.tar.bz2" + version("1.12", "c857d175f8135eaa669f3f8fa0fb0c09") version("1.11", "68b5f9a41cfd1a2ac112cc4db0612326") version("1.10", "d1cf3cf3f30586921359f7840171e551") From 83fe65e121d3537229b01dbd21975e34f08f79ac Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 16 Mar 2017 12:48:39 -0400 Subject: [PATCH 0360/2394] hwloc: Add missing dependencies (#3457) * hwloc: Add missing dependencies - add several missing dependencies - add variants for various features - add new version 1.11.6 * hwloc: Add descriptions to variants --- .../repos/builtin/packages/hwloc/package.py | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index b5f6bf99516..4d027344e92 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys class Hwloc(AutotoolsPackage): @@ -42,6 +43,7 @@ class Hwloc(AutotoolsPackage): list_url = "http://www.open-mpi.org/software/hwloc/" list_depth = 3 + version('1.11.6', 'b4e95eadd2fbdb6d40bbd96be6f03c84') version('1.11.5', '8f5fe6a9be2eb478409ad5e640b2d3ba') version('1.11.4', 'b6f23eb59074fd09fdd84905d50b103d') version('1.11.3', 'c1d36a9de6028eac1d18ea4782ef958f') @@ -49,13 +51,28 @@ class Hwloc(AutotoolsPackage): version('1.11.1', 'feb4e416a1b25963ed565d8b42252fdc') version('1.9', '1f9f9155682fe8946a97c08896109508') - depends_on('libpciaccess') + variant('cuda', default=False, description="Support CUDA devices") + variant('libxml2', default=True, description="Build with libxml2") + variant('pci', default=(sys.platform != 'darwin'), + description="Support analyzing devices on PCI bus") + + depends_on('cuda', when='+cuda') + depends_on('libpciaccess', when='+pci') + depends_on('libxml2', when='+libxml2') + depends_on('pkg-config', type='build') def url_for_version(self, version): return "http://www.open-mpi.org/software/hwloc/v%s/downloads/hwloc-%s.tar.gz" % (version.up_to(2), version) def configure_args(self): - # Disable OpenCL, since hwloc might pick up an OpenCL library - # at build time that is then not found at run time - # (Alternatively, we could require OpenCL as dependency.) - return ["--disable-opencl"] + spec = self.spec + args = [ + "--enable-cuda" if '+cuda' in spec else "--disable-cuda", + "--enable-libxml2" if '+libxml2' in spec else "--disable-libxml2", + "--enable-pci" if '+pci' in spec else "--disable-pci", + # Disable OpenCL, since hwloc might pick up an OpenCL + # library at build time that is then not found at run time + # (Alternatively, we could require OpenCL as dependency.) + "--disable-opencl", + ] + return args From 2eda08f192330f835722626f533ba8fa2583af7e Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 16 Mar 2017 12:49:37 -0400 Subject: [PATCH 0361/2394] julia: New variant +simd (#3458) --- var/spack/repos/builtin/packages/julia/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index d25a9a9b91a..7650bfc6ca7 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -54,6 +54,7 @@ class Julia(Package): description="Install Julia plotting packages") variant("python", default=False, description="Install Julia Python package") + variant("simd", default=False, description="Install Julia SIMD package") patch('gc.patch', when='@0.4:0.4.5') patch('openblas.patch', when='@0.4:0.4.5') @@ -234,4 +235,8 @@ def install(self, spec, prefix): plot(x->sin(x)*cos(x), linspace(0, 2pi)) """) + # Install SIMD + if "+simd" in spec: + julia("-e", 'Pkg.add("SIMD"); using SIMD') + julia("-e", 'Pkg.status()') From 4c7a7213414fd59527dfc544094e8a31d237b220 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 16 Mar 2017 12:50:10 -0500 Subject: [PATCH 0362/2394] Add latest version of git, convert to AutotoolsPackage (#3466) --- .../repos/builtin/packages/git/package.py | 112 +++++++++--------- 1 file changed, 59 insertions(+), 53 deletions(-) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index ef48c552c40..9977794a758 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -26,31 +26,26 @@ from spack import * -class Git(Package): +class Git(AutotoolsPackage): """Git is a free and open source distributed version control - system designed to handle everything from small to very large - projects with speed and efficiency.""" - homepage = "http://git-scm.com" - url = "https://github.com/git/git/tarball/v2.7.1" + system designed to handle everything from small to very large + projects with speed and efficiency.""" - # See here for info on vulnerable Git versions: - # http://www.theregister.co.uk/2016/03/16/git_server_client_patch_now/ - # All the following are vulnerable - # version('2.6.3', 'b711be7628a4a2c25f38d859ee81b423') - # version('2.6.2', 'da293290da69f45a86a311ad3cd43dc8') - # version('2.6.1', '4c62ee9c5991fe93d99cf2a6b68397fd') - # version('2.6.0', 'eb76a07148d94802a1745d759716a57e') - # version('2.5.4', '3eca2390cf1fa698b48e2a233563a76b') - # version('2.2.1', 'ff41fdb094eed1ec430aed8ee9b9849c') + homepage = "http://git-scm.com" + url = "https://github.com/git/git/archive/v2.12.0.tar.gz" # In order to add new versions here, add a new list entry with: - # * version: versionnumber - # * md5: the md5sum of the v.tar.gz - # * md5_manpages: the md5sum of the corresponding manpage from - # https://www.kernel.org/pub/software/scm/git/ - # git-manpages-{}.tar.xz + # * version: {version} + # * md5: the md5sum of the v{version}.tar.gz + # * md5_manpages: the md5sum of the corresponding manpage from + # https://www.kernel.org/pub/software/scm/git/git-manpages-{version}.tar.xz releases = [ + { + 'version': '2.12.0', + 'md5': '11a440ce0ed02098adf554c797facfd3', + 'md5_manpages': '4d11e05068231e37d7e42935e9cc43a1', + }, { 'version': '2.11.1', 'md5': '2cf960f19e56f27248816809ae896794', @@ -121,45 +116,56 @@ class Git(Package): for release in releases: version(release['version'], release['md5']) resource( - name="git-manpages", - url="https://www.kernel.org/pub/software/scm/git/" - "git-manpages-{0}.tar.xz".format(release['version']), + name='git-manpages', + url="https://www.kernel.org/pub/software/scm/git/git-manpages-{0}.tar.xz".format( + release['version']), md5=release['md5_manpages'], - placement="git-manpages", - when="@{0}".format(release['version'])) + placement='git-manpages', + when='@{0}'.format(release['version'])) - depends_on("autoconf", type='build') - depends_on("curl") - depends_on("expat") - depends_on("gettext") - depends_on("libiconv") - depends_on("openssl") - depends_on("pcre") - depends_on("perl") - depends_on("zlib") + depends_on('curl') + depends_on('expat') + depends_on('gettext') + depends_on('libiconv') + depends_on('openssl') + depends_on('pcre') + depends_on('perl') + depends_on('zlib') - def install(self, spec, prefix): - env['LDFLAGS'] = "-L%s" % spec['gettext'].prefix.lib + " -lintl" - configure_args = [ - "--prefix=%s" % prefix, - "--with-curl=%s" % spec['curl'].prefix, - "--with-expat=%s" % spec['expat'].prefix, - "--with-iconv=%s" % spec['libiconv'].prefix, - "--with-libpcre=%s" % spec['pcre'].prefix, - "--with-openssl=%s" % spec['openssl'].prefix, - "--with-perl=%s" % join_path(spec['perl'].prefix.bin, 'perl'), - "--with-zlib=%s" % spec['zlib'].prefix, + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + def setup_environment(self, spack_env, run_env): + spack_env.set('LDFLAGS', '-L{0} -lintl'.format( + self.spec['gettext'].prefix.lib)) + + def configure_args(self): + spec = self.spec + + return [ + '--with-curl={0}'.format(spec['curl'].prefix), + '--with-expat={0}'.format(spec['expat'].prefix), + '--with-iconv={0}'.format(spec['libiconv'].prefix), + '--with-libpcre={0}'.format(spec['pcre'].prefix), + '--with-openssl={0}'.format(spec['openssl'].prefix), + '--with-perl={0}'.format( + join_path(spec['perl'].prefix.bin, 'perl')), + '--with-zlib={0}'.format(spec['zlib'].prefix), ] - which('autoreconf')('-i') - configure(*configure_args) - if sys.platform == "darwin": + @run_after('configure') + def filter_rt(self): + if sys.platform == 'darwin': # Don't link with -lrt; the system has no (and needs no) librt filter_file(r' -lrt$', '', 'Makefile') - make() - make("install") - with working_dir("git-manpages"): - install_tree("man1", prefix.share_man1) - install_tree("man5", prefix.share_man5) - install_tree("man7", prefix.share_man7) + @run_after('install') + def install_manpages(self): + prefix = self.prefix + + with working_dir('git-manpages'): + install_tree('man1', prefix.share_man1) + install_tree('man5', prefix.share_man5) + install_tree('man7', prefix.share_man7) From 99ef28b5d247ac9cbd907034fadc33e00c98e6ae Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 16 Mar 2017 12:50:30 -0500 Subject: [PATCH 0363/2394] Add latest version of lmod (#3467) --- var/spack/repos/builtin/packages/lmod/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 01df3c7f24b..7b17d5db5fe 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -36,8 +36,9 @@ class Lmod(AutotoolsPackage): """ homepage = 'https://www.tacc.utexas.edu/research-development/tacc-projects/lmod' - url = 'https://github.com/TACC/Lmod/archive/6.4.1.tar.gz' + url = 'https://github.com/TACC/Lmod/archive/7.3.tar.gz' + version('7.3', '70180ec2ea1fae53aa83350523f6b2b3') version('6.4.5', '14f6c58dbc0a5a75574d795eac2c1e3c') version('6.4.1', '7978ba777c8aa41a4d8c05fec5f780f4') version('6.3.7', '0fa4d5a24c41cae03776f781aa2dedc1') From 9a27dec8e878debe81bd4ab08dfcf8964c4e9e4a Mon Sep 17 00:00:00 2001 From: scheibelp Date: Thu, 16 Mar 2017 11:24:34 -0700 Subject: [PATCH 0364/2394] Dont auto-init compiler conf for 'compiler find' (#3439) Fixes #3428 Users can run 'spack compiler find' to automatically initialize their compilers.yaml configuration file. It also turns out that Spack will implicitly initialize the compilers configuration file as part of detecting compilers if none are found (so if a user were to attempt to concretize a spec without running 'spack compiler find' it would not fail). However, in this case Spack was overlooking its own implicit initialization of the config files and would report that no new compilers were found. This commit removes implicit initialization when the user calls 'spack compiler find'. This did not surface until #2999 because the 'spack compiler' command defaulted to using a scope 'user/platform' that was not accounted for in get_compiler_config (where the implicit initialization logic predates the addition of this new scope); #2999 removed the scope specification when checking through config files, leading to the implicit initialization. --- lib/spack/spack/cmd/compiler.py | 4 ++-- lib/spack/spack/compilers/__init__.py | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index 444e658a927..9601c5ba657 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -95,8 +95,8 @@ def compiler_find(args): new_compilers = [] for c in compilers: arch_spec = ArchSpec(None, c.operating_system, c.target) - same_specs = spack.compilers.compilers_for_spec(c.spec, - arch_spec) + same_specs = spack.compilers.compilers_for_spec( + c.spec, arch_spec, init_config=False) if not same_specs: new_compilers.append(c) diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index be19841539b..771c8c05591 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -200,10 +200,11 @@ def supported(compiler_spec): @_auto_compiler_spec -def find(compiler_spec, scope=None): +def find(compiler_spec, scope=None, init_config=True): """Return specs of available compilers that match the supplied compiler spec. Return an empty list if nothing found.""" - return [c for c in all_compiler_specs(scope) if c.satisfies(compiler_spec)] + return [c for c in all_compiler_specs(scope, init_config) + if c.satisfies(compiler_spec)] def all_compilers(scope=None): @@ -217,16 +218,16 @@ def all_compilers(scope=None): @_auto_compiler_spec def compilers_for_spec(compiler_spec, arch_spec=None, scope=None, - use_cache=True): + use_cache=True, init_config=True): """This gets all compilers that satisfy the supplied CompilerSpec. Returns an empty list if none are found. """ if use_cache: - config = all_compilers_config(scope) + config = all_compilers_config(scope, init_config) else: - config = get_compiler_config(scope) + config = get_compiler_config(scope, init_config) - matches = set(find(compiler_spec, scope)) + matches = set(find(compiler_spec, scope, init_config)) compilers = [] for cspec in matches: compilers.extend(get_compilers(cspec, config, arch_spec)) From 4f05fb4b3f236a4ff551b279c5f46a6d3c20f8e3 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 16 Mar 2017 19:12:25 -0400 Subject: [PATCH 0365/2394] gasnet: Convert to AutotoolsPackage, update (#3455) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gasnet: Convert to AutotoolsPackage, update - convert to AutotoolsPackage - add new version 1.28.0 - create variants for IB and MPI support * gasnet: Don’t specify prefix explicitly * gasnet: Add missing variant descriptions * gasnet: Correct syntax error --- .../repos/builtin/packages/gasnet/package.py | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/gasnet/package.py b/var/spack/repos/builtin/packages/gasnet/package.py index 12ecd9fd6f2..2cf632fe4de 100644 --- a/var/spack/repos/builtin/packages/gasnet/package.py +++ b/var/spack/repos/builtin/packages/gasnet/package.py @@ -25,7 +25,7 @@ from spack import * -class Gasnet(Package): +class Gasnet(AutotoolsPackage): """GASNet is a language-independent, low-level networking layer that provides network-independent, high-performance communication primitives tailored for implementing parallel global address space @@ -35,26 +35,29 @@ class Gasnet(Package): homepage = "http://gasnet.lbl.gov" url = "http://gasnet.lbl.gov/GASNet-1.24.0.tar.gz" + version('1.28.0', 'b44446d951d3d8954aa1570e3556ba61') version('1.24.0', 'c8afdf48381e8b5a7340bdb32ca0f41a') - def install(self, spec, prefix): - # TODO: don't use paths with @ in them. - change_sed_delimiter('@', ';', 'configure') + variant('ibv', default=False, description="Support InfiniBand") + variant('mpi', default=False, description="Support MPI") - configure( - "--prefix=%s" % prefix, + depends_on('mpi', when='+mpi') + + def configure_args(self): + args = [ # TODO: factor IB suport out into architecture description. - "--enable-ibv", - "--enable-udp", - "--disable-mpi", + "--enable-ibv" if '+ibv' in self.spec else '--disable-ibv', + "--enable-mpi" if '+mpi' in self.spec else '--disable-mpi', "--enable-par", + "--enable-smp", + "--enable-udp", "--enable-mpi-compat", + "--enable-smp-safe", "--enable-segment-fast", "--disable-aligned-segments", # TODO: make option so Legion can request builds with/without this. # See the Legion webpage for details on when to/not to use. "--disable-pshm", - "--with-segment-mmap-max=64MB") - - make() - make("install") + "--with-segment-mmap-max=64MB", + ] + return args From 328b2142f5ea49ce07d6813073f37906b8a9c47d Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 16 Mar 2017 17:55:06 -0700 Subject: [PATCH 0366/2394] Fix Qt4 build on Yosemite (10.11) (#3444) --- .../repos/builtin/packages/qt/package.py | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index b795cd17abc..6d77f288465 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import platform import os import sys @@ -186,7 +187,12 @@ def common_config_args(self): config_args.append('-no-phonon') if '+dbus' in self.spec: + dbus = self.spec['dbus'].prefix config_args.append('-dbus-linked') + config_args.append('-I%s/dbus-1.0/include' % dbus.lib) + config_args.append('-I%s/dbus-1.0' % dbus.include) + config_args.append('-L%s' % dbus.lib) + config_args.append('-ldbus-1') else: config_args.append('-no-dbus') @@ -199,25 +205,30 @@ def common_config_args(self): ]) if '@4' in self.spec and sys.platform == 'darwin': + config_args.append('-cocoa') + + mac_ver = tuple(platform.mac_ver()[0].split('.')[:2]) + sdkname = 'macosx%s' % '.'.join(mac_ver) sdkpath = which('xcrun')('--show-sdk-path', - # XXX(macos): 10.11 SDK fails to configure - '--sdk', 'macosx10.9', + '--sdk', sdkname, output=str) config_args.extend([ '-sdk', sdkpath.strip(), ]) use_clang_platform = False if self.spec.compiler.name == 'clang' and \ - str(self.spec.compiler.version).endwith('-apple'): + str(self.spec.compiler.version).endswith('-apple'): use_clang_platform = True # No one uses gcc-4.2.1 anymore; this is clang. if self.spec.compiler.name == 'gcc' and \ str(self.spec.compiler.version) == '4.2.1': use_clang_platform = True if use_clang_platform: - config_args.extend([ - '-platform', 'unsupported/macx-clang', - ]) + config_args.append('-platform') + if mac_ver >= (10, 9): + config_args.append('unsupported/macx-clang-libc++') + else: + config_args.append('unsupported/macx-clang') return config_args From 5936ad2ca78566fd13ad11081a75e333697b2065 Mon Sep 17 00:00:00 2001 From: scheibelp Date: Thu, 16 Mar 2017 21:07:35 -0700 Subject: [PATCH 0367/2394] Dont propagate flags between different compilers (#3379) * Dont propagate flags between different compilers Fixes #2786 Previously when a spec had no parents with an equivalent compiler, Spack would default to adding the compiler flags associated with the root of the DAG. This eliminates that default. * added test for compiler flag propagation * simplify compiler flag propagation logic --- lib/spack/spack/concretize.py | 59 +++++++++--------------------- lib/spack/spack/test/concretize.py | 10 +++++ 2 files changed, 28 insertions(+), 41 deletions(-) diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 1be0a7a81eb..3d38f22cb62 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -377,41 +377,26 @@ def concretize_compiler_flags(self, spec): # running. return True + compiler_match = lambda other: ( + spec.compiler == other.compiler and + spec.architecture == other.architecture) + ret = False for flag in spack.spec.FlagMap.valid_compiler_flags(): + if flag not in spec.compiler_flags: + spec.compiler_flags[flag] = list() try: nearest = next(p for p in spec.traverse(direction='parents') - if ((p.compiler == spec.compiler and - p is not spec) and + if (compiler_match(p) and + (p is not spec) and flag in p.compiler_flags)) - if flag not in spec.compiler_flags or \ - not (sorted(spec.compiler_flags[flag]) >= - sorted(nearest.compiler_flags[flag])): - if flag in spec.compiler_flags: - spec.compiler_flags[flag] = list( - set(spec.compiler_flags[flag]) | - set(nearest.compiler_flags[flag])) - else: - spec.compiler_flags[ - flag] = nearest.compiler_flags[flag] + nearest_flags = set(nearest.compiler_flags.get(flag, [])) + flags = set(spec.compiler_flags.get(flag, [])) + if (nearest_flags - flags): + spec.compiler_flags[flag] = list(nearest_flags | flags) ret = True - except StopIteration: - if (flag in spec.root.compiler_flags and - ((flag not in spec.compiler_flags) or - sorted(spec.compiler_flags[flag]) != - sorted(spec.root.compiler_flags[flag]))): - if flag in spec.compiler_flags: - spec.compiler_flags[flag] = list( - set(spec.compiler_flags[flag]) | - set(spec.root.compiler_flags[flag])) - else: - spec.compiler_flags[ - flag] = spec.root.compiler_flags[flag] - ret = True - else: - if flag not in spec.compiler_flags: - spec.compiler_flags[flag] = [] + pass # Include the compiler flag defaults from the config files # This ensures that spack will detect conflicts that stem from a change @@ -419,19 +404,11 @@ def concretize_compiler_flags(self, spec): compiler = spack.compilers.compiler_for_spec( spec.compiler, spec.architecture) for flag in compiler.flags: - if flag not in spec.compiler_flags: - spec.compiler_flags[flag] = compiler.flags[flag] - if compiler.flags[flag] != []: - ret = True - else: - if ((sorted(spec.compiler_flags[flag]) != - sorted(compiler.flags[flag])) and - (not set(spec.compiler_flags[flag]) >= - set(compiler.flags[flag]))): - ret = True - spec.compiler_flags[flag] = list( - set(spec.compiler_flags[flag]) | - set(compiler.flags[flag])) + config_flags = set(compiler.flags.get(flag, [])) + flags = set(spec.compiler_flags.get(flag, [])) + spec.compiler_flags[flag] = list(config_flags | flags) + if (config_flags - flags): + ret = True return ret diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index b7cad503a33..0cb3a34a487 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -175,6 +175,16 @@ def test_provides_handles_multiple_providers_of_same_vesrion(self): assert Spec('builtin.mock.multi-provider-mpi@1.10.0') in providers assert Spec('builtin.mock.multi-provider-mpi@1.8.8') in providers + def test_different_compilers_get_different_flags(self): + client = Spec('cmake-client %gcc@4.7.2 platform=test os=fe target=fe' + + ' ^cmake %clang@3.5 platform=test os=fe target=fe') + client.concretize() + cmake = client['cmake'] + assert set(client.compiler_flags['cflags']) == set(['-O0']) + assert set(cmake.compiler_flags['cflags']) == set(['-O3']) + assert set(client.compiler_flags['fflags']) == set(['-O0']) + assert not set(cmake.compiler_flags['fflags']) + def concretize_multi_provider(self): s = Spec('mpileaks ^multi-provider-mpi@3.0') s.concretize() From 0b27a7e13d5138ebf9b2d7510b1c16179e3b803c Mon Sep 17 00:00:00 2001 From: scheibelp Date: Thu, 16 Mar 2017 21:08:13 -0700 Subject: [PATCH 0368/2394] Detect when OS updates affect compiler selection (#3410) Fixes #1476 Concretization uses compilers defined in config files and if those are not available defaults to searching typical paths where the detected operating system would have a compiler. If there is an OS update, the detected OS can change; in this case all compilers defined in the config files would no longer match (because they would be associated with the previous OS version). The error message in this case was too vague. This commit adds logic for detecting when it is likely that the OS has been updated (in particular when that affects compiler concretization) and improves the information provided to the user in the error message. --- lib/spack/spack/compilers/__init__.py | 11 ++-- lib/spack/spack/concretize.py | 77 ++++++++++++++++++++------- lib/spack/spack/test/concretize.py | 10 ++++ 3 files changed, 77 insertions(+), 21 deletions(-) diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index 771c8c05591..cb3aab9b97a 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -230,10 +230,15 @@ def compilers_for_spec(compiler_spec, arch_spec=None, scope=None, matches = set(find(compiler_spec, scope, init_config)) compilers = [] for cspec in matches: - compilers.extend(get_compilers(cspec, config, arch_spec)) + compilers.extend(get_compilers(config, cspec, arch_spec)) return compilers +def compilers_for_arch(arch_spec, scope=None): + config = all_compilers_config(scope) + return list(get_compilers(config, arch_spec=arch_spec)) + + def compiler_from_config_entry(items): cspec = spack.spec.CompilerSpec(items['spec']) os = items.get('operating_system', None) @@ -266,12 +271,12 @@ def compiler_from_config_entry(items): environment, extra_rpaths, **compiler_flags) -def get_compilers(cspec, config, arch_spec=None): +def get_compilers(config, cspec=None, arch_spec=None): compilers = [] for items in config: items = items['compiler'] - if items['spec'] != str(cspec): + if cspec and items['spec'] != str(cspec): continue # If an arch spec is given, confirm that this compiler diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 3d38f22cb62..126db8b7806 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -315,11 +315,16 @@ def concretize_compiler(self, spec): def _proper_compiler_style(cspec, aspec): return spack.compilers.compilers_for_spec(cspec, arch_spec=aspec) - all_compilers = spack.compilers.all_compiler_specs() + all_compiler_specs = spack.compilers.all_compiler_specs() + if not all_compiler_specs: + raise spack.compilers.NoCompilersError() if (spec.compiler and spec.compiler.concrete and - spec.compiler in all_compilers): + spec.compiler in all_compiler_specs): + if not _proper_compiler_style(spec.compiler, spec.architecture): + _compiler_concretization_failure( + spec.compiler, spec.architecture) return False # Find the another spec that has a compiler, or the root if none do @@ -332,22 +337,23 @@ def _proper_compiler_style(cspec, aspec): assert(other_spec) # Check if the compiler is already fully specified - if other_compiler in all_compilers: + if other_compiler in all_compiler_specs: spec.compiler = other_compiler.copy() + if not _proper_compiler_style(spec.compiler, spec.architecture): + _compiler_concretization_failure( + spec.compiler, spec.architecture) return True # Filter the compilers into a sorted list based on the compiler_order # from spackconfig - compiler_list = all_compilers if not other_compiler else \ + compiler_list = all_compiler_specs if not other_compiler else \ spack.compilers.find(other_compiler) + if not compiler_list: + # No compiler with a satisfactory spec was found + raise UnavailableCompilerVersionError(other_compiler) cmp_compilers = partial( pkgsort().compiler_compare, other_spec.name) matches = sorted(compiler_list, cmp=cmp_compilers) - if not matches: - arch = spec.architecture - raise UnavailableCompilerVersionError(other_compiler, - arch.platform_os, - arch.target) # copy concrete version into other_compiler try: @@ -355,10 +361,9 @@ def _proper_compiler_style(cspec, aspec): c for c in matches if _proper_compiler_style(c, spec.architecture)).copy() except StopIteration: - raise UnavailableCompilerVersionError( - spec.compiler, spec.architecture.platform_os, - spec.architecture.target - ) + # No compiler with a satisfactory spec has a suitable arch + _compiler_concretization_failure( + other_compiler, spec.architecture) assert(spec.compiler.concrete) return True # things changed. @@ -443,17 +448,53 @@ def find_spec(spec, condition): return None # Nothing matched the condition. +def _compiler_concretization_failure(compiler_spec, arch): + # Distinguish between the case that there are compilers for + # the arch but not with the given compiler spec and the case that + # there are no compilers for the arch at all + if not spack.compilers.compilers_for_arch(arch): + available_os_targets = set( + (c.operating_system, c.target) for c in + spack.compilers.all_compilers()) + raise NoCompilersForArchError(arch, available_os_targets) + else: + raise UnavailableCompilerVersionError(compiler_spec, arch) + + +class NoCompilersForArchError(spack.error.SpackError): + def __init__(self, arch, available_os_targets): + err_msg = ("No compilers found" + " for operating system %s and target %s." + "\nIf previous installations have succeeded, the" + " operating system may have been updated." % + (arch.platform_os, arch.target)) + + available_os_target_strs = list() + for os, t in available_os_targets: + os_target_str = "%s-%s" % (os, t) if t else os + available_os_target_strs.append(os_target_str) + err_msg += ( + "\nCompilers are defined for the following" + " operating systems and targets:\n\t" + + "\n\t".join(available_os_target_strs)) + + super(NoCompilersForArchError, self).__init__( + err_msg, "Run 'spack compiler find' to add compilers.") + + class UnavailableCompilerVersionError(spack.error.SpackError): """Raised when there is no available compiler that satisfies a compiler spec.""" - def __init__(self, compiler_spec, operating_system, target): + def __init__(self, compiler_spec, arch=None): + err_msg = "No compilers with spec %s found" % compiler_spec + if arch: + err_msg += (" for operating system %s and target %s." % + (compiler_spec, arch.platform_os, arch.target)) + super(UnavailableCompilerVersionError, self).__init__( - "No available compiler version matches '%s' on operating_system " - "'%s' for target '%s'" - % (compiler_spec, operating_system, target), - "Run 'spack compilers' to see available compiler Options.") + err_msg, "Run 'spack compiler find' to add compilers.") class NoValidVersionError(spack.error.SpackError): diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 0cb3a34a487..f4021a89ee9 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -221,6 +221,16 @@ def test_concretize_two_virtuals_with_dual_provider_and_a_conflict( with pytest.raises(spack.spec.MultipleProviderError): s.concretize() + def test_no_matching_compiler_specs(self): + s = Spec('a %gcc@0.0.0') + with pytest.raises(spack.concretize.UnavailableCompilerVersionError): + s.concretize() + + def test_no_compilers_for_arch(self): + s = Spec('a arch=linux-rhel0-x86_64') + with pytest.raises(spack.concretize.NoCompilersForArchError): + s.concretize() + def test_virtual_is_fully_expanded_for_callpath(self): # force dependence on fake "zmpi" by asking for MPI 10.0 spec = Spec('callpath ^mpi@10.0') From 3f17f761fe4d0984b54565ef9a049b81bcb8e33c Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Thu, 16 Mar 2017 21:24:36 -0700 Subject: [PATCH 0369/2394] Py keras extension (#3468) * Added support for building Theano with GPU support. Added a package for the libgpuarry libary needed for Theano. * Added dependency on py-pexpect package which ipython requires. --- .../builtin/packages/libgpuarray/package.py | 42 +++++++++++++++++++ .../builtin/packages/py-ipython/package.py | 1 + .../builtin/packages/py-theano/package.py | 8 ++++ 3 files changed, 51 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libgpuarray/package.py diff --git a/var/spack/repos/builtin/packages/libgpuarray/package.py b/var/spack/repos/builtin/packages/libgpuarray/package.py new file mode 100644 index 00000000000..73cbc333853 --- /dev/null +++ b/var/spack/repos/builtin/packages/libgpuarray/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libgpuarray(CMakePackage): + """Make a common GPU ndarray(n dimensions array) that can be reused by all + projects that is as future proof as possible, while keeping it easy to use + for simple need/quick test.""" + + homepage = "http://deeplearning.net/software/libgpuarray/" + url = "https://github.com/Theano/libgpuarray/archive/v0.6.1.tar.gz" + + version('0.6.2', '7f163bd5f48f399cd6e608ee3d528ee4') + version('0.6.1', 'cfcd1b54447f9d55b05514df62c70ae2') + version('0.6.0', '98a4ec1b4c8f225f0b89c18b899a000b') + + depends_on('cuda') + + extends('python') diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py index ff0355c5df6..0d62ade3b35 100644 --- a/var/spack/repos/builtin/packages/py-ipython/package.py +++ b/var/spack/repos/builtin/packages/py-ipython/package.py @@ -53,6 +53,7 @@ class PyIpython(PythonPackage): depends_on('py-prompt-toolkit@1.0.4:1.999', type=('build', 'run')) depends_on('py-traitlets@4.2:', type=('build', 'run')) depends_on('py-decorator', type=('build', 'run')) + depends_on('py-pexpect', type=('build', 'run')) depends_on('py-appnope', type=('build', 'run'), when=sys.platform == 'darwin' and diff --git a/var/spack/repos/builtin/packages/py-theano/package.py b/var/spack/repos/builtin/packages/py-theano/package.py index 2806c00be3e..3d647265116 100644 --- a/var/spack/repos/builtin/packages/py-theano/package.py +++ b/var/spack/repos/builtin/packages/py-theano/package.py @@ -34,12 +34,20 @@ class PyTheano(PythonPackage): version('0.8.2', 'f2d0dfe7df141115201077cd933b2c52') + variant('gpu', default=False, + description='Builds with support for GPUs via CUDA and cuDNN') + depends_on('python@2.6:2.8,3.3:') depends_on('py-setuptools', type='build') depends_on('py-scipy@0.11:', type=('build', 'run')) depends_on('py-numpy@1.7.1:', type=('build', 'run')) depends_on('py-six@1.9.0:', type=('build', 'run')) + + depends_on('blas') + + depends_on('cuda', when='+gpu') + depends_on('libgpuarray', when='+gpu') # test requirements # depends_on('py-nose@1.3.0:', type=('build', 'run')) # depends_on('py-nose-parameterized@0.5.0:', type=('build', 'run')) From 386462c0cbb639ef630b95237856378018a0a473 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 16 Mar 2017 23:39:41 -0500 Subject: [PATCH 0370/2394] Add latest version of NCO (#3469) --- var/spack/repos/builtin/packages/nco/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 0f96cf403c1..3edca017ccd 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -30,8 +30,9 @@ class Nco(AutotoolsPackage): netCDF-accessible formats""" homepage = "http://nco.sourceforge.net/" - url = "https://github.com/nco/nco/archive/4.6.4.tar.gz" + url = "https://github.com/nco/nco/archive/4.6.5.tar.gz" + version('4.6.5', '2afd34a6bb5ff6c7ed39cf40c917b6e4') version('4.6.4', '22f4e779d0011a9c0db90fda416c8e45') version('4.6.3', '0e1d6616c65ed3a30c54cc776da4f987') version('4.6.2', 'b7471acf0cc100343392f4171fb56113') From 9c1885022ee582d121fe517706d90ef20f97d96a Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 17 Mar 2017 02:06:47 -0400 Subject: [PATCH 0371/2394] simulationio: New package (#3422) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * simulationio: New package * simulationio: Rename development version to “develop” * simulationio: Try to make flake8 happy * simulationio: Correct flake8 error * simulationio: Extend Python * simulationio: Remove unused imports --- .../builtin/packages/simulationio/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/simulationio/package.py diff --git a/var/spack/repos/builtin/packages/simulationio/package.py b/var/spack/repos/builtin/packages/simulationio/package.py new file mode 100644 index 00000000000..a42ad92528a --- /dev/null +++ b/var/spack/repos/builtin/packages/simulationio/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Simulationio(CMakePackage): + """SimulationIO: Efficient and convenient I/O for large PDE simulations""" + homepage = "https://github.com/eschnett/SimulationIO" + url= "https://github.com/eschnett/SimulationIO/archive/version/0.1.0.tar.gz" + + version('1.0.0', '5cbf1d0084eb436d861ffcdd297eaa08') + version('0.1.0', '00f7dabc08ed1ab77858785ce0809f50') + version('develop', + git='https://github.com/eschnett/SimulationIO.git', branch='master') + + variant('julia', default=False) + variant('python', default=True) + + variant('pic', default=True, + description="Produce position-independent code") + + depends_on('julia', when='+julia', type=('build', 'run')) + depends_on('py-h5py', when='+python', type=('build', 'run')) + depends_on('py-numpy', when='+python', type=('build', 'run')) + depends_on('python@2.7.0:2.999.999', when='+python', type=('build', 'run')) + depends_on('swig', type='build') + + extends('python') + + def cmake_args(self): + spec = self.spec + options = [] + if '+pic' in spec: + options.append("-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true") + return options + + def check(self): + with working_dir(self.build_directory): + make("test", "CTEST_OUTPUT_ON_FAILURE=1") From 1124bdc99ee84c26201c40536d9b04dac74d7f6a Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Fri, 17 Mar 2017 07:16:30 +0100 Subject: [PATCH 0372/2394] Add packages libbson and libmongoc (#3440) --- .../repos/builtin/packages/libbson/package.py | 43 +++++++++++++++++++ .../builtin/packages/libmongoc/package.py | 43 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libbson/package.py create mode 100644 var/spack/repos/builtin/packages/libmongoc/package.py diff --git a/var/spack/repos/builtin/packages/libbson/package.py b/var/spack/repos/builtin/packages/libbson/package.py new file mode 100644 index 00000000000..7bde0ea96c9 --- /dev/null +++ b/var/spack/repos/builtin/packages/libbson/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libbson(AutotoolsPackage): + """libbson is a library providing useful routines related to building, + parsing, and iterating BSON documents.""" + + homepage = "https://github.com/mongodb/libbson" + url = "https://github.com/mongodb/libbson/releases/download/1.6.1/libbson-1.6.1.tar.gz" + + version('1.6.1', '4d6779451bc5764a7d4982c01e7bd8c2') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + # 1.6.1 tarball is broken + force_autoreconf = True diff --git a/var/spack/repos/builtin/packages/libmongoc/package.py b/var/spack/repos/builtin/packages/libmongoc/package.py new file mode 100644 index 00000000000..1465e4d8e1a --- /dev/null +++ b/var/spack/repos/builtin/packages/libmongoc/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libmongoc(AutotoolsPackage): + """libmongoc is a client library written in C for MongoDB.""" + + homepage = "https://github.com/mongodb/mongo-c-driver" + url = "https://github.com/mongodb/mongo-c-driver/releases/download/1.6.1/mongo-c-driver-1.6.1.tar.gz" + + version('1.6.1', '826946de9a15f7f453aefecdc76b1c0d') + + depends_on('libbson') + + def configure_args(self): + args = [ + '--disable-automatic-init-and-cleanup', + '--with-libbson=system' + ] + return args From e7bf8034b0e814a53cff39651c053cd3f3923cd5 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 17 Mar 2017 10:09:09 -0400 Subject: [PATCH 0373/2394] libpciaccess: Convert to AutotoolsPackage, remove Darwin work-around (#3459) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * libpciaccess: Convert to AutotoolsPackage, remove Darwin work-around Other packages that depend on libpciaccess can do so via a conditional dependency (via a variant); we don’t need a dummy package for Darwin any more. * Disable libpciaccess dependency on non-Darwin platforms * hwloc: Remove direct dependency on libpciaccess --- var/spack/repos/builtin/packages/hwloc/package.py | 1 + .../builtin/packages/intel-gpu-tools/package.py | 3 ++- var/spack/repos/builtin/packages/libdrm/package.py | 3 ++- .../repos/builtin/packages/libpciaccess/package.py | 14 +------------- .../repos/builtin/packages/mvapich2/package.py | 3 ++- 5 files changed, 8 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index 4d027344e92..0030d5ffde8 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -22,6 +22,7 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## + from spack import * import sys diff --git a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py index f72ebf76e71..53a6a04e3f8 100644 --- a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py +++ b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys class IntelGpuTools(AutotoolsPackage): @@ -41,7 +42,7 @@ class IntelGpuTools(AutotoolsPackage): version('1.16', '3996f10fc86a28ec59e1cf7b227dad78') depends_on('libdrm@2.4.64:') - depends_on('libpciaccess@0.10:') + depends_on('libpciaccess@0.10:', when=(sys.platform != 'darwin')) depends_on('cairo@1.12.0:') depends_on('glib') diff --git a/var/spack/repos/builtin/packages/libdrm/package.py b/var/spack/repos/builtin/packages/libdrm/package.py index ab9661269ea..bebc20f089a 100644 --- a/var/spack/repos/builtin/packages/libdrm/package.py +++ b/var/spack/repos/builtin/packages/libdrm/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys class Libdrm(Package): @@ -37,7 +38,7 @@ class Libdrm(Package): version('2.4.59', '105ac7af1afcd742d402ca7b4eb168b6') version('2.4.33', '86e4e3debe7087d5404461e0032231c8') - depends_on('libpciaccess@0.10:') + depends_on('libpciaccess@0.10:', when=(sys.platform != 'darwin')) depends_on('libpthread-stubs') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/libpciaccess/package.py b/var/spack/repos/builtin/packages/libpciaccess/package.py index f4a3cf7157f..94b9dfe173b 100644 --- a/var/spack/repos/builtin/packages/libpciaccess/package.py +++ b/var/spack/repos/builtin/packages/libpciaccess/package.py @@ -25,7 +25,7 @@ from spack import * -class Libpciaccess(Package): +class Libpciaccess(AutotoolsPackage): """Generic PCI access library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libpciaccess/" @@ -36,15 +36,3 @@ class Libpciaccess(Package): depends_on('libtool', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') - - def install(self, spec, prefix): - # libpciaccess does not support OS X - if spec.satisfies('platform=darwin'): - # create a dummy directory - mkdir(prefix.lib) - return - - configure('--prefix={0}'.format(prefix)) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index de809c4fed5..55b593f6235 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys class Mvapich2(Package): @@ -94,7 +95,7 @@ class Mvapich2(Package): # FIXME : CUDA support is missing depends_on('bison') - depends_on('libpciaccess') + depends_on('libpciaccess', when=(sys.platform != 'darwin')) def url_for_version(self, version): base_url = "http://mvapich.cse.ohio-state.edu/download" From 19b3afebc91b65a677436a16d9e594ae1d97bb42 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 17 Mar 2017 10:11:02 -0400 Subject: [PATCH 0374/2394] hpx5: Convert to AutotoolsPackage, several updates (#3456) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * hpx5: Convert to AutotoolsPackage, several updates - convert to AutotoolsPackage - add several variants - add several dependencies - add new version 4.0.0 - don’t set compiler flags explicitly * hpx5: Don’t import os * hpx5: Clean up configure arguments * hpx5: Correct libffi configure declaration Also add new variant “+instrumentation”. * hpx5: Correct CUDA, MPI, OpenCL configuration * hpx5: Use built-in libffi Spack’s libffi installs its headers in a strange place, and hpx5 can’t pick them up. --- .../repos/builtin/packages/hpx5/package.py | 98 +++++++++++++++---- 1 file changed, 77 insertions(+), 21 deletions(-) diff --git a/var/spack/repos/builtin/packages/hpx5/package.py b/var/spack/repos/builtin/packages/hpx5/package.py index fe75c256f80..a32fb6dd4f4 100644 --- a/var/spack/repos/builtin/packages/hpx5/package.py +++ b/var/spack/repos/builtin/packages/hpx5/package.py @@ -22,11 +22,11 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## + from spack import * -import os -class Hpx5(Package): +class Hpx5(AutotoolsPackage): """The HPX-5 Runtime System. HPX-5 (High Performance ParalleX) is an open source, portable, performance-oriented runtime developed at CREST (Indiana University). HPX-5 provides a distributed @@ -39,6 +39,7 @@ class Hpx5(Package): homepage = "http://hpx.crest.iu.edu" url = "http://hpx.crest.iu.edu/release/hpx-3.1.0.tar.gz" + version('4.0.0', 'b40dc03449ae1039cbb48ee149952b22') version('3.1.0', '9e90b8ac46788c009079632828c77628') version('2.0.0', '3d2ff3aab6c46481f9ec65c5b2bfe7a6') version('1.3.0', '2260ecc7f850e71a4d365a43017d8cee') @@ -46,33 +47,88 @@ class Hpx5(Package): version('1.1.0', '646afb460ecb7e0eea713a634933ce4f') version('1.0.0', '8020822adf6090bd59ed7fe465f6c6cb') + variant('cuda', default=False, description='Enable CUDA support') + variant('cxx11', default=False, description='Enable C++11 hpx++ interface') variant('debug', default=False, description='Build debug version of HPX-5') - variant('photon', default=False, description='Enable Photon support') + variant('instrumentation', default=False, description='Enable instrumentation (may affect performance)') + variant('metis', default=False, description='Enable METIS support') variant('mpi', default=False, description='Enable MPI support') + variant('opencl', default=False, description='Enable OpenCL support') + variant('photon', default=False, description='Enable Photon support') + variant('pic', default=True, description='Produce position-independent code') + depends_on("autoconf", type='build') + depends_on("automake", type='build') + depends_on("hwloc") + depends_on("hwloc +cuda", when='+cuda') + # Note: We could disable CUDA support via "hwloc ~cuda" + depends_on("jemalloc") + # depends_on("libffi") + depends_on("libtool", type='build') + # depends_on("lz4") # hpx5 always builds its own lz4 + depends_on("m4", type='build') + depends_on("metis", when='+metis') depends_on("mpi", when='+mpi') depends_on("mpi", when='+photon') + depends_on("opencl", when='+opencl') + # depends_on("papi") + depends_on("pkg-config", type='build') + + configure_directory = "hpx" + build_directory = "spack-build" + + def configure_args(self): + spec = self.spec + args = [ + '--enable-agas', # make this a variant? + '--enable-jemalloc', # make this a variant? + '--enable-percolation', # make this a variant? + # '--enable-rebalancing', # this seems broken + '--with-hwloc=hwloc', + '--with-jemalloc=jemalloc', + # Spack's libffi installs its headers strangely, + # leading to problems + '--with-libffi=contrib', + # '--with-papi=papi', # currently disabled in HPX + ] + + if '+cxx11' in spec: + args += ['--enable-hpx++'] - def install(self, spec, prefix): - extra_args = [] if '+debug' in spec: - extra_args.extend([ - '--enable-debug', - 'CFLAGS=-g -O0' - ]) - else: - extra_args.append('CFLAGS=-O3') + args += ['--enable-debug'] - if '+mpi' in spec: - extra_args.append('--enable-mpi') + if '+instrumentation' in spec: + args += ['--enable-instrumentation'] + + if '+mpi' in spec or '+photon' in spec: + # photon requires mpi + args += ['--enable-mpi'] + # Choose pkg-config name for MPI library + if '^openmpi' in spec: + args += ['--with-mpi=ompi-cxx'] + elif '^mpich' in spec: + args += ['--with-mpi=mpich'] + elif '^mvapich2' in spec: + args += ['--with-mpi=mvapich2-cxx'] + else: + args += ['--with-mpi=system'] + + # METIS does not support pkg-config; HPX will pick it up automatically + # if '+metis' in spec: + # args += ['--with-metis=???'] + + if '+opencl' in spec: + args += ['--enable-opencl'] + if '^pocl' in spec: + args += ['--with-opencl=pocl'] + else: + args += ['--with-opencl=system'] if '+photon' in spec: - extra_args.extend([ - '--enable-mpi', - '--enable-photon' - ]) + args += ['--enable-photon'] - os.chdir("./hpx/") - configure('--prefix=%s' % prefix, *extra_args) - make() - make("install") + if '+pic' in spec: + args += ['--with-pic'] + + return args From 2c39f16d44ae2194bbdd4724b6a0c65ab3f73393 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Mar 2017 09:19:44 -0500 Subject: [PATCH 0375/2394] Add version constraints to VTK patch (#3357) --- .../repos/builtin/packages/vtk/package.py | 87 +++++++++---------- 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index c2d5ff399f4..36d18a08787 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -26,14 +26,15 @@ from spack import * -class Vtk(Package): +class Vtk(CMakePackage): """The Visualization Toolkit (VTK) is an open-source, freely available software system for 3D computer graphics, image processing and visualization. """ homepage = "http://www.vtk.org" - base_url = "http://www.vtk.org/files/release" + url = "http://www.vtk.org/files/release/7.1/VTK-7.1.0.tar.gz" + version('7.1.0', 'a7e814c1db503d896af72458c2d0228f') version('7.0.0', '5fe35312db5fb2341139b8e4955c367d') version('6.3.0', '0231ca4840408e9dd60af48b314c5b6d') version('6.1.0', '25e4dfb3bad778722dcaec80cd5dab7d') @@ -42,58 +43,54 @@ class Vtk(Package): variant('opengl2', default=True, description='Build with OpenGL2 instead of OpenGL as rendering backend') variant('python', default=False, description='Build the python modules') - patch('gcc.patch') + patch('gcc.patch', when='@6.1.0') - depends_on('cmake', type='build') depends_on('qt') extends('python', when='+python') - depends_on('python', when='+python') - def url_for_version(self, ver): - return '{0}/{1}/VTK-{2}.tar.gz'.format(Vtk.base_url, ver.up_to(2), ver) + def url_for_version(self, version): + url = "http://www.vtk.org/files/release/{0}/VTK-{1}.tar.gz" + return url.format(version.up_to(2), version) - def install(self, spec, prefix): - def feature_to_bool(feature, on='ON', off='OFF'): - return on if '+{0}'.format(feature) in spec else off + def cmake_args(self): + spec = self.spec - with working_dir('spack-build', create=True): - opengl_ver = 'OpenGL{0}'.format('2' if '+opengl2' in spec else '') - qt_ver = spec['qt'].version.up_to(1) - qt_bin = spec['qt'].prefix.bin + opengl_ver = 'OpenGL{0}'.format('2' if '+opengl2' in spec else '') + qt_ver = spec['qt'].version.up_to(1) + qt_bin = spec['qt'].prefix.bin - cmake_args = std_cmake_args[:] + cmake_args = std_cmake_args[:] + cmake_args.extend([ + '-DBUILD_SHARED_LIBS=ON', + '-DVTK_RENDERING_BACKEND:STRING={0}'.format(opengl_ver), + + # Enable/Disable wrappers for Python. + '-DVTK_WRAP_PYTHON={0}'.format( + 'ON' if '+python' in spec else 'OFF'), + + # Disable wrappers for other languages. + '-DVTK_WRAP_JAVA=OFF', + '-DVTK_WRAP_TCL=OFF', + + # Enable Qt support here. + '-DVTK_QT_VERSION:STRING={0}'.format(qt_ver), + '-DQT_QMAKE_EXECUTABLE:PATH={0}/qmake'.format(qt_bin), + '-DVTK_Group_Qt:BOOL=ON', + ]) + + # NOTE: The following definitions are required in order to allow + # VTK to build with qt~webkit versions (see the documentation for + # more info: http://www.vtk.org/Wiki/VTK/Tutorials/QtSetup). + if '~webkit' in spec['qt']: cmake_args.extend([ - '-DBUILD_SHARED_LIBS=ON', - '-DVTK_RENDERING_BACKEND:STRING={0}'.format(opengl_ver), - - # Enable/Disable wrappers for Python. - '-DVTK_WRAP_PYTHON={0}'.format(feature_to_bool('python')), - - # Disable wrappers for other languages. - '-DVTK_WRAP_JAVA=OFF', - '-DVTK_WRAP_TCL=OFF', - - # Enable Qt support here. - '-DVTK_QT_VERSION:STRING={0}'.format(qt_ver), - '-DQT_QMAKE_EXECUTABLE:PATH={0}/qmake'.format(qt_bin), - '-DVTK_Group_Qt:BOOL=ON', + '-DVTK_Group_Qt:BOOL=OFF', + '-DModule_vtkGUISupportQt:BOOL=ON', + '-DModule_vtkGUISupportQtOpenGL:BOOL=ON', ]) - # NOTE: The following definitions are required in order to allow - # VTK to build with qt~webkit versions (see the documentation for - # more info: http://www.vtk.org/Wiki/VTK/Tutorials/QtSetup). - if '~webkit' in spec['qt']: - cmake_args.extend([ - '-DVTK_Group_Qt:BOOL=OFF', - '-DModule_vtkGUISupportQt:BOOL=ON', - '-DModule_vtkGUISupportQtOpenGL:BOOL=ON', - ]) + if spec.satisfies('@:6.1.0'): + cmake_args.append('-DCMAKE_C_FLAGS=-DGLX_GLXEXT_LEGACY') + cmake_args.append('-DCMAKE_CXX_FLAGS=-DGLX_GLXEXT_LEGACY') - if spec.satisfies('@:6.1.0'): - cmake_args.append('-DCMAKE_C_FLAGS=-DGLX_GLXEXT_LEGACY') - cmake_args.append('-DCMAKE_CXX_FLAGS=-DGLX_GLXEXT_LEGACY') - - cmake('..', *cmake_args) - make() - make('install') + return cmake_args From 5f13e4065592799ccf8d75dbd5a420da4e7c0d22 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Mar 2017 09:21:25 -0500 Subject: [PATCH 0376/2394] Add package for ESMF (#2831) * Add package for ESMF * Apparently mvapich2 is supported? --- .../repos/builtin/packages/esmf/package.py | 253 ++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 var/spack/repos/builtin/packages/esmf/package.py diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py new file mode 100644 index 00000000000..9d68d17846b --- /dev/null +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -0,0 +1,253 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class Esmf(Package): + """The Earth System Modeling Framework (ESMF) is high-performance, flexible + software infrastructure for building and coupling weather, climate, and + related Earth science applications. The ESMF defines an architecture for + composing complex, coupled modeling systems and includes data structures + and utilities for developing individual models.""" + + homepage = "https://www.earthsystemcog.org/projects/esmf/" + url = "http://www.earthsystemmodeling.org/esmf_releases/non_public/ESMF_7_0_1/esmf_7_0_1_src.tar.gz" + + version('7.0.1', 'd3316ea79b032b8fb0cd40e5868a0261') + + variant('mpi', default=True, description='Build with MPI support') + variant('lapack', default=True, description='Build with LAPACK support') + variant('netcdf', default=True, description='Build with NetCDF support') + variant('pnetcdf', default=True, description='Build with pNetCDF support') + variant('xerces', default=True, description='Build with Xerces support') + variant('pio', default=True, description='Enable ParallelIO support') + variant('debug', default=False, description='Make a debuggable version of the library') + + # Required dependencies + depends_on('mpi', when='+mpi') + depends_on('zlib') + depends_on('libxml2') + # depends_on('perl', type='test') # TODO: Add a test deptype + + # Optional dependencies + depends_on('lapack@3:', when='+lapack') + depends_on('netcdf@3.6:', when='+netcdf') + depends_on('netcdf-fortran@3.6:', when='+netcdf') + depends_on('parallel-netcdf@1.2.0:', when='+pnetcdf') + depends_on('xerces-c@3.1.0:', when='+xerces') + + # NOTE: ESMF cannot be installed with GCC 6. It uses constructs that + # are no longer valid in GCC 6. GCC 4 is recommended for installation. + + def url_for_version(self, version): + return "http://www.earthsystemmodeling.org/esmf_releases/non_public/ESMF_{0}/esmf_{0}_src.tar.gz".format(version.underscored) + + def install(self, spec, prefix): + # Installation instructions can be found at: + # http://www.earthsystemmodeling.org/esmf_releases/last_built/ESMF_usrdoc/node9.html + + # Unset any environment variables that may influence the installation. + for var in os.environ: + if var.startswith('ESMF_'): + os.environ.pop(var) + + ###################################### + # Build and Installation Directories # + ###################################### + + # The environment variable ESMF_DIR must be set to the full pathname + # of the top level ESMF directory before building the framework. + os.environ['ESMF_DIR'] = os.getcwd() + + # This variable specifies the prefix of the installation path used + # with the install target. + os.environ['ESMF_INSTALL_PREFIX'] = prefix + + # Installation subdirectories default to: + # bin/binO/Linux.gfortran.64.default.default + os.environ['ESMF_INSTALL_BINDIR'] = 'bin' + os.environ['ESMF_INSTALL_LIBDIR'] = 'lib' + os.environ['ESMF_INSTALL_MODDIR'] = 'mod' + + ############ + # Compiler # + ############ + + # ESMF_COMPILER must be set to select which Fortran and + # C++ compilers are being used to build the ESMF library. + if self.compiler.name == 'gcc': + os.environ['ESMF_COMPILER'] = 'gfortran' + elif self.compiler.name == 'intel': + os.environ['ESMF_COMPILER'] = 'intel' + elif self.compiler.name == 'clang': + os.environ['ESMF_COMPILER'] = 'gfortranclang' + elif self.compiler.name == 'nag': + os.environ['ESMF_COMPILER'] = 'nag' + elif self.compiler.name == 'pgi': + os.environ['ESMF_COMPILER'] = 'pgi' + else: + msg = "The compiler you are building with, " + msg += "'{0}', is not supported by ESMF." + raise InstallError(msg.format(self.compiler.name)) + + if '+mpi' in spec: + os.environ['ESMF_CXX'] = spec['mpi'].mpicxx + os.environ['ESMF_F90'] = spec['mpi'].mpifc + else: + os.environ['ESMF_CXX'] = os.environ['CXX'] + os.environ['ESMF_F90'] = os.environ['FC'] + + # This environment variable controls the build option. + if '+debug' in spec: + # Build a debuggable version of the library. + os.environ['ESMF_BOPT'] = 'g' + else: + # Build an optimized version of the library. + os.environ['ESMF_BOPT'] = 'O' + + ####### + # MPI # + ####### + + # ESMF_COMM must be set to indicate which MPI implementation + # is used to build the ESMF library. + if '+mpi' in spec: + if '^mvapich2' in spec: + os.environ['ESMF_COMM'] = 'mvapich2' + elif '^mpich' in spec: + # FIXME: mpich or mpich2? + os.environ['ESMF_COMM'] = 'mpich2' + elif '^openmpi' in spec: + os.environ['ESMF_COMM'] = 'openmpi' + elif '^intel-parallel-studio+mpi' in spec: + os.environ['ESMF_COMM'] = 'intelmpi' + else: + # Force use of the single-processor MPI-bypass library. + os.environ['ESMF_COMM'] = 'mpiuni' + + ########## + # LAPACK # + ########## + + if '+lapack' in spec: + # A system-dependent external LAPACK/BLAS installation is used + # to satisfy the external dependencies of the LAPACK-dependent + # ESMF code. + os.environ['ESMF_LAPACK'] = 'system' + + # FIXME: determine whether or not we need to set this + # Specifies the path where the LAPACK library is located. + # os.environ['ESMF_LAPACK_LIBPATH'] = spec['lapack'].prefix.lib + + # Specifies the linker directive needed to link the LAPACK library + # to the application. + os.environ['ESMF_LAPACK_LIBS'] = spec['lapack'].lapack_libs.link_flags # noqa + else: + # Disables LAPACK-dependent code. + os.environ['ESMF_LAPACK'] = 'OFF' + + ########## + # NetCDF # + ########## + + if '+netcdf' in spec: + # ESMF provides the ability to read Grid and Mesh data in + # NetCDF format. + if spec.satisfies('^netcdf@4.2:'): + # ESMF_NETCDF_LIBS will be set to "-lnetcdff -lnetcdf". + # This option is useful for systems which have the Fortran + # and C bindings archived in seperate library files. + os.environ['ESMF_NETCDF'] = 'split' + else: + # ESMF_NETCDF_LIBS will be set to "-lnetcdf". + # This option is useful when the Fortran and C bindings + # are archived together in the same library file. + os.environ['ESMF_NETCDF'] = 'standard' + + # FIXME: determine whether or not we need to set these. + # ESMF_NETCDF_INCLUDE + # ESMF_NETCDF_LIBPATH + + ################### + # Parallel-NetCDF # + ################### + + if '+pnetcdf' in spec: + # ESMF provides the ability to write Mesh weights + # using Parallel-NetCDF. + + # When defined, enables the use of Parallel-NetCDF. + # ESMF_PNETCDF_LIBS will be set to "-lpnetcdf". + os.environ['ESMF_PNETCDF'] = 'standard' + + # FIXME: determine whether or not we need to set these. + # ESMF_PNETCDF_INCLUDE + # ESMF_PNETCDF_LIBPATH + + ############## + # ParallelIO # + ############## + + if '+pio' in spec and '+mpi' in spec: + # ESMF provides the ability to read and write data in both binary + # and NetCDF formats through ParallelIO (PIO), a third-party IO + # software library that is integrated in the ESMF library. + + # PIO-dependent features will be enabled and will use the + # PIO library that is included and built with ESMF. + os.environ['ESMF_PIO'] = 'internal' + else: + # Disables PIO-dependent code. + os.environ['ESMF_PIO'] = 'OFF' + + ########## + # XERCES # + ########## + + if '+xerces' in spec: + # ESMF provides the ability to read Attribute data in + # XML file format via the XERCES C++ library. + + # ESMF_XERCES_LIBS will be set to "-lxerces-c". + os.environ['ESMF_XERCES'] = 'standard' + + # FIXME: determine if the following are needed + # ESMF_XERCES_INCLUDE + # ESMF_XERCES_LIBPATH + + ################ + # Installation # + ################ + + make() + + if self.run_tests: + make('check', parallel=False) + + make('install') + + if self.run_tests: + make('installcheck') From 10b767b93f60926ef7e1cb132af364890819c5bc Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Mar 2017 09:55:55 -0500 Subject: [PATCH 0377/2394] Don't use @system in packages.yaml (#3472) --- lib/spack/docs/getting_started.rst | 41 +++++++++++------------------- lib/spack/docs/packaging_guide.rst | 31 ---------------------- lib/spack/docs/workflows.rst | 20 +++------------ 3 files changed, 19 insertions(+), 73 deletions(-) diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index efc1965ce97..3c2610beb0c 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -85,18 +85,8 @@ Check Installation With Spack installed, you should be able to run some basic Spack commands. For example: -.. code-block:: console +.. command-output:: spack spec netcdf - $ spack spec netcdf - ... - netcdf@4.4.1%gcc@5.3.0~hdf4+mpi arch=linux-SuSE11-x86_64 - ^curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^hdf5@1.10.0-patch1%gcc@5.3.0+cxx~debug+fortran+mpi+shared~szip~threadsafe arch=linux-SuSE11-x86_64 - ^openmpi@1.10.1%gcc@5.3.0~mxm~pmi~psm~psm2~slurm~sqlite3~thread_multiple~tm+verbs+vt arch=linux-SuSE11-x86_64 - ^m4@1.4.17%gcc@5.3.0+sigsegv arch=linux-SuSE11-x86_64 - ^libsigsegv@2.10%gcc@5.3.0 arch=linux-SuSE11-x86_64 ^^^^^^^^^^^^^^^^^^^^^^^^^^ Optional: Alternate Prefix @@ -225,7 +215,7 @@ If you want to see specifics on a particular compiler, you can run f77 = /usr/local/bin/ifort-15.0.090 fc = /usr/local/bin/ifort-15.0.090 modules = [] - operating system = centos6 + operating_system = centos6 ... This shows which C, C++, and Fortran compilers were detected by Spack. @@ -712,19 +702,22 @@ example: $ curl -O https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz -The recommended way to tell Spack to use the system-supplied OpenSSL is -to add the following to ``packages.yaml``. Note that the ``@system`` -"version" means "I don't care what version it is, just use what is -there." This is reasonable for OpenSSL, which has a stable API. +To tell Spack to use the system-supplied OpenSSL, first determine what +version you have: +.. code-block:: console + + $ openssl version + OpenSSL 1.0.2g 1 Mar 2016 + +Then add the following to ``~/.spack/packages.yaml``: .. code-block:: yaml packages: openssl: paths: - openssl@system: /usr - version: [system] + openssl@1.0.2g: /usr buildable: False @@ -740,8 +733,7 @@ to add the following to ``packages.yaml``: packages: netlib-lapack: paths: - netlib-lapack@system: /usr - version: [system] + netlib-lapack@3.6.1: /usr buildable: False all: providers: @@ -750,11 +742,9 @@ to add the following to ``packages.yaml``: .. note:: - The ``@system`` "version" means "I don't care what version it is, - just use what is there." Above we pretend that the system-provided - Blas/Lapack is ``netlib-lapack`` only because it is the only BLAS / LAPACK - provider which use standard names for libraries (as opposed to, for example, - `libopenblas.so`). + Above we pretend that the system-provided BLAS / LAPACK is ``netlib-lapack`` + only because it is the only BLAS / LAPACK provider which use standard names + for libraries (as opposed to, for example, ``libopenblas.so``). Although we specify external package in ``/usr``, Spack is smart enough not to add ``/usr/lib`` to RPATHs, where it could cause unrelated system @@ -909,7 +899,6 @@ with Spack: tcl: paths: tcl@8.5: /usr - version: [8.5] buildable: False #. Install with: diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index b794bb25813..729ea5d656d 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -3156,37 +3156,6 @@ Version Lists Spack packages should list supported versions with the newest first. -^^^^^^^^^^^^^^^^ -Special Versions -^^^^^^^^^^^^^^^^ - -The following *special* version names may be used when building a package: - -""""""""""" -``@system`` -""""""""""" - -Indicates a hook to the OS-installed version of the -package. This is useful, for example, to tell Spack to use the -OS-installed version in ``packages.yaml``: - -.. code-block:: yaml - - openssl: - paths: - openssl@system: /usr - buildable: False - -Certain Spack internals look for the ``@system`` version and do -appropriate things in that case. - -"""""""""" -``@local`` -"""""""""" - -Indicates the version was built manually from some source -tree of unknown provenance (see ``spack setup``). - --------------------------- Packaging workflow commands --------------------------- diff --git a/lib/spack/docs/workflows.rst b/lib/spack/docs/workflows.rst index 11b77c008d0..7814ebf3cd1 100644 --- a/lib/spack/docs/workflows.rst +++ b/lib/spack/docs/workflows.rst @@ -33,24 +33,12 @@ possible realization of a particular package, out of combinatorially many other realizations. For example, here is a concrete spec instantiated from ``curl``: -.. code-block:: console - - curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 +.. command-output:: spack spec curl Spack's core concretization algorithm generates concrete specs by instantiating packages from its repo, based on a set of "hints", including user input and the ``packages.yaml`` file. This algorithm -may be accessed at any time with the ``spack spec`` command. For -example: - -.. code-block:: console - - $ spack spec curl - curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 +may be accessed at any time with the ``spack spec`` command. Every time Spack installs a package, that installation corresponds to a concrete spec. Only a vanishingly small fraction of possible @@ -68,7 +56,7 @@ variant, compiler, etc. For example, the following set is consistent: .. code-block:: console curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64 + ^openssl@1.0.2k%gcc@5.3.0 arch=linux-SuSE11-x86_64 ^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 @@ -77,7 +65,7 @@ The following set is not consistent: .. code-block:: console curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64 - ^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64 + ^openssl@1.0.2k%gcc@5.3.0 arch=linux-SuSE11-x86_64 ^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64 zlib@1.2.7%gcc@5.3.0 arch=linux-SuSE11-x86_64 From b0d90886031312cb1633dc50d38b977dd9720cff Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 17 Mar 2017 19:59:38 +0100 Subject: [PATCH 0378/2394] Adding new package: py-future (#3401) * Adding new package: py-future * Commenting out deps needed when installing python@2.6 --- .../builtin/packages/py-future/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-future/package.py diff --git a/var/spack/repos/builtin/packages/py-future/package.py b/var/spack/repos/builtin/packages/py-future/package.py new file mode 100644 index 00000000000..6c41fd70706 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-future/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyFuture(PythonPackage): + """Clean single-source support for Python 3 and 2""" + + homepage = "https://python-future.org/" + url = "https://pypi.io/packages/source/f/future/future-0.16.0.tar.gz" + + version('0.16.0', '3e8e88a2bda48d54b1da7634d04760d7') + version('0.15.2', 'a68eb3c90b3b76714c5ceb8c09ea3a06') + + depends_on('py-setuptools', type='build') + # depends_on('py-importlib', type=('build', 'run'), when='^python@2.6') + # depends_on('py-argparse', type=('build', 'run'), when='^python@2.6') From a2235fed41bc246792c19829f2b5594ae8d539d1 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 17 Mar 2017 17:07:49 -0400 Subject: [PATCH 0379/2394] julia: Create cacert directory manually to ensure correct permissions (#3482) --- var/spack/repos/builtin/packages/julia/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index 7650bfc6ca7..97a4a6774e7 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -150,8 +150,10 @@ def install(self, spec, prefix): make("install") # Julia's package manager needs a certificate + cacert_dir = join_path(prefix, "etc", "curl") + mkdirp(cacert_dir) + cacert_file = join_path(cacert_dir, "cacert.pem") curl = which("curl") - cacert_file = join_path(prefix, "etc", "curl", "cacert.pem") curl("--create-dirs", "--output", cacert_file, "https://curl.haxx.se/ca/cacert.pem") From 773357e20f19776d40f317c878c5eaf52eddcd38 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 17 Mar 2017 16:25:48 -0500 Subject: [PATCH 0380/2394] setuptools is a runtime dependency of virtualenv (#3485) --- .../builtin/packages/py-virtualenv/package.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-virtualenv/package.py b/var/spack/repos/builtin/packages/py-virtualenv/package.py index 535a525b1cc..a19559ddbc1 100644 --- a/var/spack/repos/builtin/packages/py-virtualenv/package.py +++ b/var/spack/repos/builtin/packages/py-virtualenv/package.py @@ -27,11 +27,16 @@ class PyVirtualenv(PythonPackage): """virtualenv is a tool to create isolated Python environments.""" - homepage = "http://virtualenv.readthedocs.org/projects/virtualenv/" - url = "https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.11.6.tar.gz" - version('1.11.6', 'f61cdd983d2c4e6aeabb70b1060d6f49') - version('13.0.1', '1ffc011bde6667f0e37ecd976f4934db') + homepage = "https://virtualenv.pypa.io/" + url = "https://pypi.io/packages/source/v/virtualenv/virtualenv-15.1.0.tar.gz" + + version('15.1.0', '44e19f4134906fe2d75124427dc9b716') version('15.0.1', '28d76a0d9cbd5dc42046dd14e76a6ecc') + version('13.0.1', '1ffc011bde6667f0e37ecd976f4934db') + version('1.11.6', 'f61cdd983d2c4e6aeabb70b1060d6f49') - depends_on('py-setuptools') # not just build-time, requires pkg_resources + depends_on('python@2.6:') + + # not just build-time, requires pkg_resources + depends_on('py-setuptools', type=('build', 'run')) From 6b97f538cf47c83b3e9050757aa97c3eaf813f00 Mon Sep 17 00:00:00 2001 From: Javier Date: Sat, 18 Mar 2017 19:45:29 +0100 Subject: [PATCH 0381/2394] Adding new packages: py-argparse and py-importlib (#3488) --- .../builtin/packages/py-argparse/package.py | 38 +++++++++++++++++++ .../builtin/packages/py-importlib/package.py | 34 +++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-argparse/package.py create mode 100644 var/spack/repos/builtin/packages/py-importlib/package.py diff --git a/var/spack/repos/builtin/packages/py-argparse/package.py b/var/spack/repos/builtin/packages/py-argparse/package.py new file mode 100644 index 00000000000..ea34f5c2fe3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-argparse/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyArgparse(PythonPackage): + """Python command-line parsing library.""" + + homepage = "https://github.com/ThomasWaldmann/argparse/" + url = "https://pypi.io/packages/source/a/argparse/argparse-1.4.0.tar.gz" + + version('1.4.0', '08062d2ceb6596fcbc5a7e725b53746f') + + depends_on('python@2.3:') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-importlib/package.py b/var/spack/repos/builtin/packages/py-importlib/package.py new file mode 100644 index 00000000000..8d16c6b80aa --- /dev/null +++ b/var/spack/repos/builtin/packages/py-importlib/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyImportlib(PythonPackage): + """Packaging for importlib from Python 2.7""" + + homepage = "https://github.com/brettcannon/importlib" + url = "https://pypi.io/packages/source/i/importlib/importlib-1.0.4.zip" + + version('1.0.4', '5f9a0803bca7ba95f670d1464984296f') From 9d0a3c6b059f3f15ae892a497edd399cc076c120 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 18 Mar 2017 15:20:16 -0500 Subject: [PATCH 0382/2394] Fix deptype of various dependencies on Python packages (#3486) --- var/spack/repos/builtin/packages/caffe/package.py | 14 +++++++------- .../repos/builtin/packages/cantera/package.py | 4 ++-- .../repos/builtin/packages/conduit/package.py | 4 ++-- var/spack/repos/builtin/packages/dia/package.py | 6 ++++-- var/spack/repos/builtin/packages/flux/package.py | 2 +- var/spack/repos/builtin/packages/llvm/package.py | 2 +- var/spack/repos/builtin/packages/mesa/package.py | 2 +- .../repos/builtin/packages/py-h5py/package.py | 2 +- .../repos/builtin/packages/py-ipython/package.py | 4 ++-- .../repos/builtin/packages/py-lazyarray/package.py | 4 ++-- .../builtin/packages/py-matplotlib/package.py | 2 +- .../repos/builtin/packages/py-pygobject/package.py | 2 +- .../repos/builtin/packages/py-pygtk/package.py | 4 ++-- .../packages/py-scientificpython/package.py | 2 +- .../builtin/packages/py-singledispatch/package.py | 2 +- .../repos/builtin/packages/py-symengine/package.py | 2 +- .../repos/builtin/packages/py-sympy/package.py | 2 +- .../repos/builtin/packages/py-unittest2/package.py | 2 +- var/spack/repos/builtin/packages/stat/package.py | 2 +- .../repos/builtin/packages/trilinos/package.py | 2 +- 20 files changed, 34 insertions(+), 32 deletions(-) diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index f282262d212..24bbe1ec6a1 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -35,17 +35,17 @@ class Caffe(CMakePackage): version('rc5', '692bd3580b7576485cde6b1e03eb5a6d') - variant('gpu', default=False, + variant('gpu', default=False, description='Builds with support for GPUs via CUDA and cuDNN') - variant('opencv', default=True, + variant('opencv', default=True, description='Build with OpenCV support') - variant('leveldb', default=True, + variant('leveldb', default=True, description="Build with levelDB") - variant('lmdb', default=True, + variant('lmdb', default=True, description="Build with lmdb") - variant('python', default=False, + variant('python', default=False, description='Build python wrapper and caffe python layer') - variant('matlab', default=False, + variant('matlab', default=False, description='Build Matlab wrapper') depends_on('boost') @@ -62,7 +62,7 @@ class Caffe(CMakePackage): depends_on('leveldb', when='+leveldb') depends_on('lmdb', when='+lmdb') depends_on('python@2.7:', when='+python') - depends_on('py-numpy@1.7:', when='+python') + depends_on('py-numpy@1.7:', when='+python', type=('build', 'run')) depends_on('matlab', when='+matlab') extends('python', when='+python') diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py index fece11380de..0685772f82b 100644 --- a/var/spack/repos/builtin/packages/cantera/package.py +++ b/var/spack/repos/builtin/packages/cantera/package.py @@ -62,8 +62,8 @@ class Cantera(Package): depends_on('py-cython', when='+python', type=('build', 'run')) depends_on('py-3to2', when='+python', type=('build', 'run')) # TODO: these "when" specs don't actually work - # depends_on('py-unittest2', when='+python^python@2.6') - # depends_on('py-unittest2py3k', when='+python^python@3.1') + # depends_on('py-unittest2', when='+python^python@2.6', type=('build', 'run')) # noqa + # depends_on('py-unittest2py3k', when='+python^python@3.1', type=('build', 'run')) # noqa # Matlab toolbox dependencies # TODO: add Matlab package diff --git a/var/spack/repos/builtin/packages/conduit/package.py b/var/spack/repos/builtin/packages/conduit/package.py index 9715542126e..ddefde4fb75 100644 --- a/var/spack/repos/builtin/packages/conduit/package.py +++ b/var/spack/repos/builtin/packages/conduit/package.py @@ -88,7 +88,7 @@ class Conduit(Package): extends("python", when="+python") # TODO: blas and lapack are disabled due to build # issues Cyrus experienced on OSX 10.11.6 - depends_on("py-numpy~blas~lapack", when="+python") + depends_on("py-numpy~blas~lapack", when="+python", type=('build', 'run')) ####################### # I/O Packages @@ -113,7 +113,7 @@ class Conduit(Package): ####################### # Documentation related ####################### - depends_on("py-sphinx", when="+python+doc") + depends_on("py-sphinx", when="+python+doc", type='build') depends_on("doxygen", when="+doc") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/dia/package.py b/var/spack/repos/builtin/packages/dia/package.py index 94cd75656d5..af9d1b23aca 100644 --- a/var/spack/repos/builtin/packages/dia/package.py +++ b/var/spack/repos/builtin/packages/dia/package.py @@ -35,12 +35,14 @@ class Dia(Package): depends_on('intltool', type='build') depends_on('gtkplus@2.6.0:') depends_on('cairo') - # depends_on('libart') # optional dependency, not yet supported by spack. depends_on('libpng') depends_on('libxslt') depends_on('python') depends_on('swig') - # depends_on('py-gtk') # optional dependency, not yet supported by spack. + + # TODO: Optional dependencies, not yet supported by Spack + # depends_on('libart') + # depends_on('py-gtk', type=('build', 'run')) def url_for_version(self, version): """Handle Dia's version-based custom URLs.""" diff --git a/var/spack/repos/builtin/packages/flux/package.py b/var/spack/repos/builtin/packages/flux/package.py index 7abd9f46bd3..c5d61bbc2ae 100644 --- a/var/spack/repos/builtin/packages/flux/package.py +++ b/var/spack/repos/builtin/packages/flux/package.py @@ -47,7 +47,7 @@ class Flux(AutotoolsPackage): depends_on("libjson-c") depends_on("libxslt") depends_on("python") - depends_on("py-cffi") + depends_on("py-cffi", type=('build', 'run')) depends_on("jansson") depends_on("asciidoc", type='build', when="+docs") diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 1da14feb4f4..057297737cc 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -77,7 +77,7 @@ class Llvm(Package): # Universal dependency depends_on('python@2.7:2.8') # Seems not to support python 3.X.Y - depends_on('py-lit') + depends_on('py-lit', type=('build', 'run')) # lldb dependencies depends_on('ncurses', when='+lldb') diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index 7d6c5596961..0c7aed7fca1 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -36,7 +36,7 @@ class Mesa(AutotoolsPackage): # General dependencies depends_on('python@2.6.4:') - depends_on('py-mako@0.3.4:') + depends_on('py-mako@0.3.4:', type=('build', 'run')) depends_on('flex@2.5.35:', type='build') depends_on('bison@2.4.1:', type='build') diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index 666905e5c0c..edca2f45b0e 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -45,7 +45,7 @@ class PyH5py(PythonPackage): depends_on('hdf5@1.8.4:') depends_on('hdf5+mpi', when='+mpi') depends_on('mpi', when='+mpi') - depends_on('py-mpi4py', when='+mpi') + depends_on('py-mpi4py', when='+mpi', type=('build', 'run')) # Build and runtime dependencies depends_on('py-numpy@1.6.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py index 0d62ade3b35..8806e1cf8e6 100644 --- a/var/spack/repos/builtin/packages/py-ipython/package.py +++ b/var/spack/repos/builtin/packages/py-ipython/package.py @@ -42,8 +42,8 @@ class PyIpython(PythonPackage): # These dependencies breaks concretization # See https://github.com/LLNL/spack/issues/2793 - # depends_on('py-backports-shutil-get-terminal-size', when="^python@:3.2.999") # noqa - # depends_on('py-pathlib2', when="^python@:3.3.999") + # depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run'), when="^python@:3.2.999") # noqa + # depends_on('py-pathlib2', type=('build', 'run'), when="^python@:3.3.999") depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run')) depends_on('py-pathlib2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-lazyarray/package.py b/var/spack/repos/builtin/packages/py-lazyarray/package.py index 413a51020bb..8dcc999f62d 100644 --- a/var/spack/repos/builtin/packages/py-lazyarray/package.py +++ b/var/spack/repos/builtin/packages/py-lazyarray/package.py @@ -34,5 +34,5 @@ class PyLazyarray(PythonPackage): version('0.2.8', '8e0072f0892b9fc0516e7048f96e9d74') - depends_on('py-numpy@1.3:') - depends_on('py-numpy@1.5:', when='^python@3:') + depends_on('py-numpy@1.3:', type=('build', 'run')) + depends_on('py-numpy@1.5:', type=('build', 'run'), when='^python@3:') diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 36e26aa7ee7..53a7d9af975 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -82,7 +82,7 @@ class PyMatplotlib(PythonPackage): # --------- Optional dependencies depends_on('pkg-config', type='build') # why not... depends_on('pil', when='+image', type=('build', 'run')) - depends_on('py-ipython', when='+ipython') + depends_on('py-ipython', when='+ipython', type=('build', 'run')) depends_on('ghostscript', when='+latex', type='run') depends_on('texlive', when='+latex', type='run') diff --git a/var/spack/repos/builtin/packages/py-pygobject/package.py b/var/spack/repos/builtin/packages/py-pygobject/package.py index 52a8c13dd63..4cb6d6ccb06 100644 --- a/var/spack/repos/builtin/packages/py-pygobject/package.py +++ b/var/spack/repos/builtin/packages/py-pygobject/package.py @@ -40,7 +40,7 @@ class PyPygobject(AutotoolsPackage): depends_on("libffi") depends_on('glib') - depends_on('py-py2cairo') + depends_on('py-py2cairo', type=('build', 'run')) depends_on('gobject-introspection') patch('pygobject-2.28.6-introspection-1.patch', when='@2.28.3:2.28.6') diff --git a/var/spack/repos/builtin/packages/py-pygtk/package.py b/var/spack/repos/builtin/packages/py-pygtk/package.py index 462bc88910a..5d34a3cc86f 100644 --- a/var/spack/repos/builtin/packages/py-pygtk/package.py +++ b/var/spack/repos/builtin/packages/py-pygtk/package.py @@ -39,8 +39,8 @@ class PyPygtk(AutotoolsPackage): depends_on('glib') # for GTK 3.X use pygobject 3.X instead of pygtk depends_on('gtkplus+X@2.24:2.99') - depends_on('py-pygobject@2.28:2.99') - depends_on('py-py2cairo') + depends_on('py-pygobject@2.28:2.99', type=('build', 'run')) + depends_on('py-py2cairo', type=('build', 'run')) def install(self, spec, prefix): make('install', parallel=False) diff --git a/var/spack/repos/builtin/packages/py-scientificpython/package.py b/var/spack/repos/builtin/packages/py-scientificpython/package.py index f0fe2e4e6c1..0fb3524c0c3 100644 --- a/var/spack/repos/builtin/packages/py-scientificpython/package.py +++ b/var/spack/repos/builtin/packages/py-scientificpython/package.py @@ -35,4 +35,4 @@ class PyScientificpython(PythonPackage): url = "https://sourcesup.renater.fr/frs/download.php/file/4411/ScientificPython-2.8.1.tar.gz" version('2.8.1', '73ee0df19c7b58cdf2954261f0763c77') - depends_on('py-numpy') + depends_on('py-numpy', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-singledispatch/package.py b/var/spack/repos/builtin/packages/py-singledispatch/package.py index 9125ecb5f88..6fa4d9b1bd2 100644 --- a/var/spack/repos/builtin/packages/py-singledispatch/package.py +++ b/var/spack/repos/builtin/packages/py-singledispatch/package.py @@ -34,7 +34,7 @@ class PySingledispatch(PythonPackage): version('3.4.0.3', 'af2fc6a3d6cc5a02d0bf54d909785fcb') depends_on('py-setuptools', type='build') - depends_on('py-six') + depends_on('py-six', type=('build', 'run')) # This dependency breaks concretization # See https://github.com/LLNL/spack/issues/2793 diff --git a/var/spack/repos/builtin/packages/py-symengine/package.py b/var/spack/repos/builtin/packages/py-symengine/package.py index 0817d394f22..bc48785e367 100644 --- a/var/spack/repos/builtin/packages/py-symengine/package.py +++ b/var/spack/repos/builtin/packages/py-symengine/package.py @@ -37,7 +37,7 @@ class PySymengine(PythonPackage): # Build dependencies depends_on('python@2.7:2.8,3.3:') depends_on('py-setuptools', type='build') - depends_on('py-cython@0.19.1:') + depends_on('py-cython@0.19.1:', type='build') depends_on('cmake@2.8.7:', type='build') depends_on('symengine@0.2.0:') diff --git a/var/spack/repos/builtin/packages/py-sympy/package.py b/var/spack/repos/builtin/packages/py-sympy/package.py index 58c4167e23e..c47007be9fc 100644 --- a/var/spack/repos/builtin/packages/py-sympy/package.py +++ b/var/spack/repos/builtin/packages/py-sympy/package.py @@ -33,4 +33,4 @@ class PySympy(PythonPackage): version('0.7.6', '3d04753974306d8a13830008e17babca') version('1.0', '43e797de799f00f9e8fd2307dba9fab1') - depends_on('py-mpmath', when='@1.0:') + depends_on('py-mpmath', when='@1.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-unittest2/package.py b/var/spack/repos/builtin/packages/py-unittest2/package.py index f0c0208978f..ff11ce05cd7 100644 --- a/var/spack/repos/builtin/packages/py-unittest2/package.py +++ b/var/spack/repos/builtin/packages/py-unittest2/package.py @@ -35,4 +35,4 @@ class PyUnittest2(PythonPackage): version('1.1.0', 'f72dae5d44f091df36b6b513305ea000') depends_on('py-setuptools', type='build') - depends_on('py-enum34', when='^python@:3.3') + depends_on('py-enum34', when='^python@:3.3', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index aacebfd8c86..9d655b37580 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -53,7 +53,7 @@ class Stat(Package): depends_on('launchmon') depends_on('mrnet') depends_on('python') - depends_on('py-pygtk') + depends_on('py-pygtk', type=('build', 'run')) depends_on('swig') depends_on('mpi', when='+examples') diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 6cf1032f83f..3de72ea6c88 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -120,7 +120,7 @@ def url_for_version(self, version): depends_on('hypre~internal-superlu~int64', when='+hypre') depends_on('hdf5+mpi', when='+hdf5') depends_on('python', when='+python') - depends_on('py-numpy', when='+python') + depends_on('py-numpy', when='+python', type=('build', 'run')) depends_on('swig', when='+python') patch('umfpack_from_suitesparse.patch', when='@:12.8.1') From 4866b4592fedab14890e9173e86f1300a1bad933 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 18 Mar 2017 19:13:32 -0500 Subject: [PATCH 0383/2394] Add missing dependencies to gawk (#3481) * Add missing dependencies to gawk * Fix make check * Add mawk packages and awk virtual dependency * Use mawk instead of gawk to build ncurses * Rearrange order of patches and dependencies --- etc/spack/defaults/packages.yaml | 1 + .../repos/builtin/packages/gawk/package.py | 10 ++++++ .../repos/builtin/packages/mawk/package.py | 36 +++++++++++++++++++ .../repos/builtin/packages/ncurses/package.py | 14 ++++---- 4 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 var/spack/repos/builtin/packages/mawk/package.py diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index eae7752eeec..37737da7c6c 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -20,4 +20,5 @@ packages: mpi: [openmpi, mpich] blas: [openblas] lapack: [openblas] + awk: [gawk] pil: [py-pillow] diff --git a/var/spack/repos/builtin/packages/gawk/package.py b/var/spack/repos/builtin/packages/gawk/package.py index fbd0ae53bb2..431e21d6aeb 100644 --- a/var/spack/repos/builtin/packages/gawk/package.py +++ b/var/spack/repos/builtin/packages/gawk/package.py @@ -43,3 +43,13 @@ class Gawk(AutotoolsPackage): url = "http://ftp.gnu.org/gnu/gawk/gawk-4.1.4.tar.xz" version('4.1.4', '4e7dbc81163e60fd4f0b52496e7542c9') + + depends_on('gettext') + depends_on('libsigsegv') + depends_on('readline') + depends_on('mpfr') + depends_on('gmp') + + provides('awk') + + build_directory = 'spack-build' diff --git a/var/spack/repos/builtin/packages/mawk/package.py b/var/spack/repos/builtin/packages/mawk/package.py new file mode 100644 index 00000000000..ff100b6a7e5 --- /dev/null +++ b/var/spack/repos/builtin/packages/mawk/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mawk(AutotoolsPackage): + """mawk is an interpreter for the AWK Programming Language.""" + + homepage = "http://invisible-island.net/mawk/mawk.html" + url = "ftp://invisible-island.net/mawk/mawk-1.3.4.tgz" + + version('1.3.4', 'b1d27324ae80302452d0fa0c98447b65') + + provides('awk') diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 93691ee6a19..9a964d4d8a2 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -38,17 +38,19 @@ class Ncurses(AutotoolsPackage): version('6.0', 'ee13d052e1ead260d7c28071f46eefb1') version('5.9', '8cb9c412e5f2d96bc6f459aa8c6282a1') - patch('patch_gcc_5.txt', when='@6.0%gcc@5.0:') - patch('sed_pgi.patch', when='@:6.0') - - depends_on("gawk", type='build') - variant('symlinks', default=False, description='Enables symlinks. Needed on AFS filesystem.') + # Use mawk instead of gawk to prevent a circular dependency + depends_on('mawk', type='build') + depends_on('pkg-config', type='build') + + patch('patch_gcc_5.txt', when='@6.0%gcc@5.0:') + patch('sed_pgi.patch', when='@:6.0') + def configure_args(self): opts = [ - 'AWK=gawk', + 'AWK=mawk', 'CFLAGS={0}'.format(self.compiler.pic_flag), 'CXXFLAGS={0}'.format(self.compiler.pic_flag), '--with-shared', From a0ab3c2523d0d209803f2126ae218783d1dc93e6 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 18 Mar 2017 21:14:47 -0400 Subject: [PATCH 0384/2394] hdf5: Clean up building self-tests (#3483) * hdf5: Clean up building self-tests * hdf5: Clean up running self-tests --- var/spack/repos/builtin/packages/hdf5/package.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 3b646f825cd..15139db645c 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -196,16 +196,12 @@ def check_install(self): with open("check.c", 'w') as f: f.write(source) if '+mpi' in spec: - cc = which('%s' % spec['mpi'].mpicc) + cc = Executable(spec['mpi'].mpicc) else: - cc = which('cc') - # TODO: Automate these path and library settings - cc('-c', "-I%s" % join_path(spec.prefix, "include"), "check.c") - cc('-o', "check", "check.o", - "-L%s" % join_path(spec.prefix, "lib"), - "-L%s" % join_path(spec.prefix, "lib64"), - "-lhdf5", - "-lz") + cc = Executable(self.compiler.cc) + cc(*(['-c', "check.c"] + spec['hdf5'].cppflags.split())) + cc(*(['-o', "check", "check.o"] + + spec['hdf5'].libs.ld_flags.split())) try: check = Executable('./check') output = check(return_output=True) From 1297e47463cd1ecaad6637e9f86a92550f3d9a63 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 18 Mar 2017 22:48:20 -0700 Subject: [PATCH 0385/2394] Use byte-encoded UTF-8 for sourced environment in Python 2 (#3489) - Fixes recurring errors on develop with unicode commit characters. - still Python3-proof: python3 will use str instead of bytestrings. --- lib/spack/spack/environment.py | 21 ++++++++---- lib/spack/spack/test/data/sourceme_unicode.sh | 34 +++++++++++++++++++ lib/spack/spack/test/environment.py | 6 ++-- 3 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 lib/spack/spack/test/data/sourceme_unicode.sh diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index da69979ae1d..13330545183 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -26,6 +26,7 @@ import inspect import json import os +import sys import os.path import subprocess @@ -268,8 +269,8 @@ def from_sourcing_files(*args, **kwargs): :param \*args: list of files to be sourced :rtype: instance of EnvironmentModifications """ - env = EnvironmentModifications() + # Check if the files are actually there files = [line.split(' ')[0] for line in args] non_existing = [file for file in files if not os.path.isfile(file)] @@ -277,6 +278,7 @@ def from_sourcing_files(*args, **kwargs): message = 'trying to source non-existing files\n' message += '\n'.join(non_existing) raise RuntimeError(message) + # Relevant kwd parameters and formats info = dict(kwargs) info.setdefault('shell', '/bin/bash') @@ -309,11 +311,17 @@ def from_sourcing_files(*args, **kwargs): if proc.returncode != 0: raise RuntimeError('sourcing files returned a non-zero exit code') output = ''.join([line for line in proc.stdout]) - # Construct a dictionary with all the variables in the new environment - after_source_env = dict( - (k, v.decode('utf8')) for k, v in json.loads(output).items()) - this_environment = dict( - (k, v.decode('utf8')) for k, v in os.environ.items()) + + # Construct a dictionaries of the environment before and after + # sourcing the files, so that we can diff them. + this_environment = dict(os.environ) + after_source_env = json.loads(output) + + # If we're in python2, convert to str objects instead of unicode + # like json gives us. We can't put unicode in os.environ anyway. + if sys.version_info[0] < 3: + after_source_env = dict((k.encode('utf-8'), v.encode('utf-8')) + for k, v in after_source_env.items()) # Filter variables that are not related to sourcing a file to_be_filtered = 'SHLVL', '_', 'PWD', 'OLDPWD' @@ -364,6 +372,7 @@ def return_separator_if_any(first_value, second_value): start = modified_list.index(remaining_list[0]) end = modified_list.index(remaining_list[-1]) search = sep.join(modified_list[start:end + 1]) + if search not in current: # We just need to set the variable to the new value env.set(x, after_source_env[x]) diff --git a/lib/spack/spack/test/data/sourceme_unicode.sh b/lib/spack/spack/test/data/sourceme_unicode.sh new file mode 100644 index 00000000000..f01f6a49271 --- /dev/null +++ b/lib/spack/spack/test/data/sourceme_unicode.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +# Set an environment variable with some unicode in it to ensure that +# Spack can decode it. +# +# This has caused squashed commits on develop to break, as some +# committers use unicode in their messages, and Travis sets the +# current commit message in an environment variable. +export UNICODE_VAR='don\xe2\x80\x99t' diff --git a/lib/spack/spack/test/environment.py b/lib/spack/spack/test/environment.py index 0da137c1922..dbad2c5e1f7 100644 --- a/lib/spack/spack/test/environment.py +++ b/lib/spack/spack/test/environment.py @@ -96,7 +96,8 @@ def files_to_be_sourced(): files = [ os.path.join(datadir, 'sourceme_first.sh'), os.path.join(datadir, 'sourceme_second.sh'), - os.path.join(datadir, 'sourceme_parameters.sh intel64') + os.path.join(datadir, 'sourceme_parameters.sh intel64'), + os.path.join(datadir, 'sourceme_unicode.sh') ] return files @@ -230,7 +231,6 @@ def test_source_files(files_to_be_sourced): """Tests the construction of a list of environment modifications that are the result of sourcing a file. """ - env = EnvironmentModifications.from_sourcing_files(*files_to_be_sourced) modifications = env.group_by_name() @@ -238,7 +238,7 @@ def test_source_files(files_to_be_sourced): # spurious entries for things like PS1 # # TODO: figure out how to make a bit more robust. - assert len(modifications) >= 4 + assert len(modifications) >= 5 # Set new variables assert len(modifications['NEW_VAR']) == 1 From 14c181e4806d5a6bbba9145fd919b363f03ae23c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sun, 19 Mar 2017 20:57:06 +0800 Subject: [PATCH 0386/2394] Add new version for intel package: 16.0.4 17.0.2 . (#3490) --- .../repos/builtin/packages/intel/package.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index 4164383f5b9..3618f6f2635 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -105,13 +105,18 @@ class Intel(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" - # TODO: can also try the online installer (will download files on demand) - version('16.0.2', '1133fb831312eb519f7da897fec223fa', - url="file://%s/parallel_studio_xe_2016_composer_edition_update2.tgz" - % os.getcwd()) - version('16.0.3', '3208eeabee951fc27579177b593cefe9', - url="file://%s/parallel_studio_xe_2016_composer_edition_update3.tgz" - % os.getcwd()) + version('17.0.2', '2891ab1ece43eb61b6ab892f07c47f01', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11302/parallel_studio_xe_2017_update2_composer_edition.tgz') + version('17.0.1', '1f31976931ed8ec424ac7c3ef56f5e85', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/10978/parallel_studio_xe_2017_update1_composer_edition.tgz') + version('17.0.0', 'b67da0065a17a05f110ed1d15c3c6312', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9656/parallel_studio_xe_2017_composer_edition.tgz') + version('16.0.4', '2bc9bfc9be9c1968a6e42efb4378f40e', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9785/parallel_studio_xe_2016_composer_edition_update4.tgz') + version('16.0.3', '3208eeabee951fc27579177b593cefe9', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9063/parallel_studio_xe_2016_composer_edition_update3.tgz') + version('16.0.2', '1133fb831312eb519f7da897fec223fa', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8680/parallel_studio_xe_2016_composer_edition_update2.tgz') variant('rpath', default=True, description="Add rpath to .cfg files") From fb248f17fb0312c8cc29b22e176a61a3c1419018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sun, 19 Mar 2017 23:11:06 +0800 Subject: [PATCH 0387/2394] Substitue ftp:// with http:// (#3491) --- var/spack/repos/builtin/packages/mawk/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/mawk/package.py b/var/spack/repos/builtin/packages/mawk/package.py index ff100b6a7e5..d13bbe0f7b9 100644 --- a/var/spack/repos/builtin/packages/mawk/package.py +++ b/var/spack/repos/builtin/packages/mawk/package.py @@ -29,7 +29,7 @@ class Mawk(AutotoolsPackage): """mawk is an interpreter for the AWK Programming Language.""" homepage = "http://invisible-island.net/mawk/mawk.html" - url = "ftp://invisible-island.net/mawk/mawk-1.3.4.tgz" + url = "http://invisible-mirror.net/archives/mawk/mawk-1.3.4.tgz" version('1.3.4', 'b1d27324ae80302452d0fa0c98447b65') From 1655161ebb2f3b463bf25da51037c990717993c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sun, 19 Mar 2017 23:12:34 +0800 Subject: [PATCH 0388/2394] Add ffmpeg package. (#3470) --- .../repos/builtin/packages/ffmpeg/package.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ffmpeg/package.py diff --git a/var/spack/repos/builtin/packages/ffmpeg/package.py b/var/spack/repos/builtin/packages/ffmpeg/package.py new file mode 100644 index 00000000000..810a7b52cc9 --- /dev/null +++ b/var/spack/repos/builtin/packages/ffmpeg/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Ffmpeg(AutotoolsPackage): + """FFmpeg is a complete, cross-platform solution to record, + convert and stream audio and video.""" + + homepage = "https://ffmpeg.org" + url = "http://ffmpeg.org/releases/ffmpeg-3.2.4.tar.bz2" + + version('3.2.4', 'd3ebaacfa36c6e8145373785824265b4') + + variant('shared', default=True, + description='build shared libraries') + + def configure_args(self): + spec = self.spec + config_args = ['--enable-pic'] + + if '+shared' in spec: + config_args.append('--enable-shared') + + return config_args From 22f3c9de8454b7ba149f6612539136219f8645a7 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 20 Mar 2017 15:35:08 -0400 Subject: [PATCH 0389/2394] fftw: Update to 3.3.6-pl1 (#3495) --- var/spack/repos/builtin/packages/fftw/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index e35a1c92c33..90252a0d32d 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -36,6 +36,7 @@ class Fftw(Package): homepage = "http://www.fftw.org" url = "http://www.fftw.org/fftw-3.3.4.tar.gz" + version('3.3.6-pl1', '682a0e78d6966ca37c7446d4ab4cc2a1') version('3.3.5', '6cc08a3b9c7ee06fdd5b9eb02e06f569') version('3.3.4', '2edab8c06b24feeb3b82bbb3ebf3e7b3') version('2.1.5', '8d16a84f3ca02a785ef9eb36249ba433') From 5ac6421f148f43f6f90832978c45a5749f6d154e Mon Sep 17 00:00:00 2001 From: Matthew LeGendre Date: Mon, 20 Mar 2017 12:35:38 -0700 Subject: [PATCH 0390/2394] Fix issue with config.guess patching when the overwritten config.guess did not have write permissions. (#3494) --- lib/spack/spack/build_systems/autotools.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index f0f57b12322..a11a84acd0a 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -27,6 +27,8 @@ import os import os.path import shutil +from os import stat +from stat import * from subprocess import PIPE from subprocess import check_call @@ -131,16 +133,8 @@ def _do_patch_config_guess(self): path = os.path.join(automake_path, 'config.guess') if os.path.exists(path): config_guess = path - if config_guess is not None: - try: - check_call([config_guess], stdout=PIPE, stderr=PIPE) - shutil.copyfile(config_guess, my_config_guess) - return True - except Exception: - pass - # Look for the system's config.guess - if os.path.exists('/usr/share'): + if config_guess is None and os.path.exists('/usr/share'): automake_dir = [s for s in os.listdir('/usr/share') if "automake" in s] if automake_dir: @@ -151,6 +145,8 @@ def _do_patch_config_guess(self): if config_guess is not None: try: check_call([config_guess], stdout=PIPE, stderr=PIPE) + mod = stat(my_config_guess).st_mode & 0777 | S_IWUSR + os.chmod(my_config_guess, mod) shutil.copyfile(config_guess, my_config_guess) return True except Exception: From 19dca26f3ac3d5ded5ccfc7e561d997cfc4cdd2c Mon Sep 17 00:00:00 2001 From: scheibelp Date: Mon, 20 Mar 2017 12:36:44 -0700 Subject: [PATCH 0391/2394] Improve output for compiler commands (#3480) * Order listed compiler sections "spack compiler list" output compiler sections in an arbitrary order. With this commit compiler sections are ordered primarily by compiler name and then by operating system and target. * Compiler search lists config files with compilers If a compiler entry is already defined in a configuration file that the user does not know about, they may be confused when that compiler is not added by "spack compiler find". This commit adds a message at the end of "spack compiler find" to inform the user of the locations of all config files where compilers are defined. --- lib/spack/spack/cmd/compiler.py | 5 ++++- lib/spack/spack/compilers/__init__.py | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index 9601c5ba657..22f3b3f26a6 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -112,6 +112,8 @@ def compiler_find(args): colify(reversed(sorted(c.spec for c in new_compilers)), indent=4) else: tty.msg("Found no new compilers") + tty.msg("Compilers are defined in the following files:") + colify(spack.compilers.compiler_config_files(), indent=4) def compiler_remove(args): @@ -166,7 +168,8 @@ def compiler_list(args): tty.msg("Available compilers") index = index_by(spack.compilers.all_compilers(scope=args.scope), lambda c: (c.spec.name, c.operating_system, c.target)) - for i, (key, compilers) in enumerate(index.items()): + ordered_sections = sorted(index.items(), key=lambda (k, v): k) + for i, (key, compilers) in enumerate(ordered_sections): if i >= 1: print name, os, target = key diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index cb3aab9b97a..a16caa3a6ce 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -110,6 +110,16 @@ def init_compiler_config(): return [] # Return empty list which we will later append to. +def compiler_config_files(): + config_files = list() + for scope in spack.config.config_scopes: + config = spack.config.get_config('compilers', scope=scope) + if config: + config_files.append(spack.config.config_scopes[scope] + .get_section_filename('compilers')) + return config_files + + def add_compilers_to_config(compilers, scope=None, init_config=True): """Add compilers to the config for the specified architecture. From 68a4706b1ef5270afa84fe4d62f4059165b62225 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 20 Mar 2017 16:04:17 -0400 Subject: [PATCH 0392/2394] py-yt: Update to 3.3.5 (#3498) --- var/spack/repos/builtin/packages/py-yt/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index 9cc571b09a1..30ce507a9f8 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -37,6 +37,8 @@ class PyYt(PythonPackage): homepage = "http://yt-project.org" url = "https://bitbucket.org/yt_analysis/yt" + version("3.3.5", "2ad314ff3d3261e41825d15db027b0e7", + url="https://bitbucket.org/yt_analysis/yt/get/yt-3.3.5.tar.gz") version("3.3.4", "3a84e56dfd82f9dd923f3fb8490e679c", url="https://bitbucket.org/yt_analysis/yt/get/yt-3.3.4.tar.gz") version("3.3.1", hg="https://bitbucket.org/yt_analysis/yt", From 91dd854694c81300df08b2d20d860c94bbe2d28c Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 20 Mar 2017 16:04:34 -0400 Subject: [PATCH 0393/2394] jemalloc: Update to 4.5.0 (#3497) --- var/spack/repos/builtin/packages/jemalloc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/jemalloc/package.py b/var/spack/repos/builtin/packages/jemalloc/package.py index ddd08f862f2..2f1354d1b25 100644 --- a/var/spack/repos/builtin/packages/jemalloc/package.py +++ b/var/spack/repos/builtin/packages/jemalloc/package.py @@ -31,6 +31,7 @@ class Jemalloc(Package): homepage = "http://www.canonware.com/jemalloc/" url = "https://github.com/jemalloc/jemalloc/releases/download/4.0.4/jemalloc-4.0.4.tar.bz2" + version('4.5.0', 'a5624318fbf5bf653697306642683a11') version('4.4.0', '81b59778e19696d99e2f7922820671b0') version('4.3.1', 'f204c0ea1aef92fbb339dc640de338a6') version('4.2.1', '094b0a7b8c77c464d0dc8f0643fd3901') From ae8380c4fb77ced4bb9fab262ad45b7f8f9c8eb8 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 20 Mar 2017 16:05:02 -0400 Subject: [PATCH 0394/2394] cereal: Update to 1.2.2 (#3499) --- .../repos/builtin/packages/cereal/Boost.patch | 14 ++++++++++++++ .../repos/builtin/packages/cereal/Boost2.patch | 10 ++++++++++ var/spack/repos/builtin/packages/cereal/package.py | 10 ++++++++-- .../cereal/{Werror.patch => pointers.patch} | 14 -------------- 4 files changed, 32 insertions(+), 16 deletions(-) create mode 100644 var/spack/repos/builtin/packages/cereal/Boost.patch create mode 100644 var/spack/repos/builtin/packages/cereal/Boost2.patch rename var/spack/repos/builtin/packages/cereal/{Werror.patch => pointers.patch} (64%) diff --git a/var/spack/repos/builtin/packages/cereal/Boost.patch b/var/spack/repos/builtin/packages/cereal/Boost.patch new file mode 100644 index 00000000000..fdc2a722081 --- /dev/null +++ b/var/spack/repos/builtin/packages/cereal/Boost.patch @@ -0,0 +1,14 @@ +--- old/sandbox/CMakeLists.txt ++++ new/sandbox/CMakeLists.txt +@@ -4,9 +4,11 @@ + add_executable(sandbox_json sandbox_json.cpp) + add_executable(sandbox_rtti sandbox_rtti.cpp) + ++if(Boost_FOUND) + add_executable(sandbox_vs sandbox_vs.cpp) + target_link_libraries(sandbox_vs sandbox_vs_dll) + include_directories(sandbox_shared_lib) ++endif(Boost_FOUND) + + if(Boost_FOUND) + add_executable(performance performance.cpp) diff --git a/var/spack/repos/builtin/packages/cereal/Boost2.patch b/var/spack/repos/builtin/packages/cereal/Boost2.patch new file mode 100644 index 00000000000..f8edb2c479a --- /dev/null +++ b/var/spack/repos/builtin/packages/cereal/Boost2.patch @@ -0,0 +1,10 @@ +--- old/unittests/CMakeLists.txt ++++ new/unittests/CMakeLists.txt +@@ -1,4 +1,7 @@ + file(GLOB TESTS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp) ++if(NOT Boost_FOUND) ++ list(REMOVE_ITEM TESTS boost_variant.cpp) ++endif(Boost_FOUND) + + # A semi-colon separated list of test sources that should not be automatically built with doctest + set(SPECIAL_TESTS "portability_test.cpp") diff --git a/var/spack/repos/builtin/packages/cereal/package.py b/var/spack/repos/builtin/packages/cereal/package.py index 0ce6ec593cd..7f1f103a94f 100644 --- a/var/spack/repos/builtin/packages/cereal/package.py +++ b/var/spack/repos/builtin/packages/cereal/package.py @@ -39,6 +39,7 @@ class Cereal(Package): homepage = "http://uscilab.github.io/cereal/" url = "https://github.com/USCiLab/cereal/archive/v1.1.2.tar.gz" + version('1.2.2', '4c56c7b9499dba79404250ef9a040481') version('1.2.1', '64476ed74c19068ee543b53ad3992261') version('1.2.0', 'e372c9814696481dbdb7d500e1410d2b') version('1.1.2', '34d4ad174acbff005c36d4d10e48cbb9') @@ -47,7 +48,9 @@ class Cereal(Package): version('1.0.0', 'd1bacca70a95cec0ddbff68b0871296b') version('0.9.1', '8872d4444ff274ce6cd1ed364d0fc0ad') - patch("Werror.patch") + patch("Boost.patch") + patch("Boost2.patch", when="@1.2.2:") + patch("pointers.patch") depends_on('cmake@2.6.2:', type='build') @@ -57,7 +60,10 @@ def install(self, spec, prefix): # configure # Boost is only used for self-tests, which we are not running (yet?) - cmake('.', '-DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE', *std_cmake_args) + cmake('.', + '-DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE', + '-DSKIP_PORTABILITY_TEST=TRUE', + *std_cmake_args) # Build make() diff --git a/var/spack/repos/builtin/packages/cereal/Werror.patch b/var/spack/repos/builtin/packages/cereal/pointers.patch similarity index 64% rename from var/spack/repos/builtin/packages/cereal/Werror.patch rename to var/spack/repos/builtin/packages/cereal/pointers.patch index d39eaaffdb8..39d17a2d542 100644 --- a/var/spack/repos/builtin/packages/cereal/Werror.patch +++ b/var/spack/repos/builtin/packages/cereal/pointers.patch @@ -1,17 +1,3 @@ ---- old/sandbox/CMakeLists.txt -+++ new/sandbox/CMakeLists.txt -@@ -4,9 +4,11 @@ - add_executable(sandbox_json sandbox_json.cpp) - add_executable(sandbox_rtti sandbox_rtti.cpp) - -+if(Boost_FOUND) - add_executable(sandbox_vs sandbox_vs.cpp) - target_link_libraries(sandbox_vs sandbox_vs_dll) - include_directories(sandbox_shared_lib) -+endif(Boost_FOUND) - - if(Boost_FOUND) - add_executable(performance performance.cpp) --- old/include/cereal/types/common.hpp +++ new/include/cereal/types/common.hpp @@ -106,14 +106,16 @@ From 79d0e7a5d7077ceffdf7c8c176a8eba8ab969ea0 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 20 Mar 2017 16:05:23 -0400 Subject: [PATCH 0395/2394] gasnet: Update to 1.28.2 (#3496) --- var/spack/repos/builtin/packages/gasnet/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gasnet/package.py b/var/spack/repos/builtin/packages/gasnet/package.py index 2cf632fe4de..9d7f8ddc085 100644 --- a/var/spack/repos/builtin/packages/gasnet/package.py +++ b/var/spack/repos/builtin/packages/gasnet/package.py @@ -35,6 +35,7 @@ class Gasnet(AutotoolsPackage): homepage = "http://gasnet.lbl.gov" url = "http://gasnet.lbl.gov/GASNet-1.24.0.tar.gz" + version('1.28.2', '6ca0463dc2430570e40646c4d1e97b36') version('1.28.0', 'b44446d951d3d8954aa1570e3556ba61') version('1.24.0', 'c8afdf48381e8b5a7340bdb32ca0f41a') From 0be9cee98433d5e7a71574fcc78d891b1687024c Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Mon, 20 Mar 2017 21:07:24 +0100 Subject: [PATCH 0396/2394] Update leveldb to 1.20 (#3441) --- .../repos/builtin/packages/leveldb/package.py | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/leveldb/package.py b/var/spack/repos/builtin/packages/leveldb/package.py index f571baa1ce1..7d2c470b60c 100644 --- a/var/spack/repos/builtin/packages/leveldb/package.py +++ b/var/spack/repos/builtin/packages/leveldb/package.py @@ -31,8 +31,9 @@ class Leveldb(Package): 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.18.tar.gz" + url = "https://github.com/google/leveldb/archive/v1.20.tar.gz" + version('1.20', '298b5bddf12c675d6345784261302252') version('1.18', '73770de34a2a5ab34498d2e05b2b7fa0') depends_on("snappy") @@ -42,12 +43,28 @@ def install(self, spec, prefix): mkdirp(prefix.include) mkdirp(prefix.lib) + mkdirp(join_path(prefix.lib, 'pkgconfig')) cp = which('cp') # cp --preserve=links libleveldb.* prefix/lib - args = glob.glob('libleveldb.*') - args.append(prefix + '/lib') + args = glob.glob('out-shared/libleveldb.*') \ + + glob.glob('out-static/libleveldb.*') + args.append(prefix.lib) cp('--preserve=links', *args) - cp('-r', 'include/leveldb', prefix + '/include') + cp('-r', 'include/leveldb', prefix.include) + + with open(join_path(prefix.lib, 'pkgconfig', 'leveldb.pc'), 'w') as f: + f.write('prefix={0}\n'.format(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('\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('Cflags: -I${includedir}\n') + f.write('Libs: -L${libdir} -lleveldb\n') From d31bbe450b365d440b9dd21f60d45cb444f5ad27 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 20 Mar 2017 18:07:37 -0500 Subject: [PATCH 0397/2394] Add latest version of binutils (#3500) --- .../repos/builtin/packages/binutils/package.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index 4ad6ed809e3..be4675d1b0a 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -25,12 +25,13 @@ from spack import * -class Binutils(Package): +class Binutils(AutotoolsPackage): """GNU binutils, which contain the linker, assembler, objdump and others""" homepage = "http://www.gnu.org/software/binutils/" - url = "https://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2" + url = "https://ftp.gnu.org/gnu/binutils/binutils-2.28.tar.bz2" + version('2.28', '9e8340c96626b469a603c15c9d843727') version('2.27', '2869c9bf3e60ee97c74ac2a6bf4e9d68') version('2.26', '64146a0faa3b411ba774f47d41de239f') version('2.25', 'd9f3303f802a5b6b0bb73a335ab89d66') @@ -50,16 +51,17 @@ class Binutils(Package): variant('plugins', default=False, description="enable plugins, needed for gold linker") variant('gold', default=True, description="build the gold linker") - patch('binutilskrell-2.24.patch', when='@2.24+krellpatch') + patch('binutilskrell-2.24.patch', when='@2.24+krellpatch') patch('cr16.patch') patch('update_symbol-2.26.patch', when='@2.26') variant('libiberty', default=False, description='Also install libiberty.') - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec + configure_args = [ - '--prefix=%s' % prefix, '--disable-dependency-tracking', '--disable-werror', '--enable-interwork', @@ -78,6 +80,4 @@ def install(self, spec, prefix): if '+libiberty' in spec: configure_args.append('--enable-install-libiberty') - configure(*configure_args) - make() - make("install") + return configure_args From 777acb4c034ae7da2828a0c9283d1269578f8e20 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 20 Mar 2017 18:08:45 -0500 Subject: [PATCH 0398/2394] Fix: setuptools is a runtime dependency for pudb (#3502) --- var/spack/repos/builtin/packages/py-pudb/package.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pudb/package.py b/var/spack/repos/builtin/packages/py-pudb/package.py index 66896bd83fa..ea06dc0c93d 100644 --- a/var/spack/repos/builtin/packages/py-pudb/package.py +++ b/var/spack/repos/builtin/packages/py-pudb/package.py @@ -30,10 +30,13 @@ class PyPudb(PythonPackage): """Full-screen console debugger for Python""" homepage = "http://mathema.tician.de/software/pudb" - url = "https://pypi.io/packages/source/p/pudb/pudb-2016.2.tar.gz" + url = "https://pypi.io/packages/source/p/pudb/pudb-2017.1.1.tar.gz" - version('2016.2', '4573b70163329c1cb59836a357bfdf7c') + version('2017.1.1', '4ec3302ef90f22b13c60db16b3557c56') + version('2016.2', '4573b70163329c1cb59836a357bfdf7c') - depends_on('py-setuptools', type='build') - depends_on('py-urwid@1.1.1:', type=('build', 'run')) + # Most Python packages only require setuptools as a build dependency. + # However, pudb requires setuptools during runtime as well. + depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-urwid@1.1.1:', type=('build', 'run')) depends_on('py-pygments@1.0:', type=('build', 'run')) From 75c6c9f1ee047ae1db6fe28a4bb49ac6a94ee20c Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 20 Mar 2017 21:46:29 -0400 Subject: [PATCH 0399/2394] =?UTF-8?q?llvm:=20Don=E2=80=99t=20copy=20?= =?UTF-8?q?=E2=80=9Cprefix/bin=E2=80=9D=20into=20=E2=80=9Cprefix=E2=80=9D?= =?UTF-8?q?=20during=20install=20(#3460)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- var/spack/repos/builtin/packages/llvm/package.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 057297737cc..26eb9087add 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -374,5 +374,4 @@ def install(self, spec, prefix): cmake(*cmake_args) make() make("install") - cp = which('cp') - cp('-a', 'bin/', prefix) + install_tree("bin", prefix.bin) From babeb32c6de84c64179e4d279b7fbec801486849 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Tue, 21 Mar 2017 22:53:58 +0800 Subject: [PATCH 0400/2394] Add package openfst. (#3324) --- .../repos/builtin/packages/openfst/package.py | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 var/spack/repos/builtin/packages/openfst/package.py diff --git a/var/spack/repos/builtin/packages/openfst/package.py b/var/spack/repos/builtin/packages/openfst/package.py new file mode 100644 index 00000000000..e96575798b6 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfst/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Openfst(AutotoolsPackage): + """OpenFst is a library for constructing, combining, optimizing, + and searching weighted finite-state transducers (FSTs). Weighted + finite-state transducers are automata where each transition has + an input label, an output label, and a weight.""" + + homepage = "http://www.openfst.org" + url = "http://www.openfst.org/twiki/pub/FST/FstDownload/openfst-1.6.1.tar.gz" + list_url = "http://www.openfst.org/twiki/bin/view/FST/FstDownload" + + version('1.6.1', '1173066ed987072183b950b54bdc9315') + version('1.6.0', '2b7bcfde6b629857dc5f9ad7edd6ece9') + version('1.5.4', 'e52bd59ec9d9edde0c1268a382662741') + version('1.5.3', 'f04e580b5bc574571854304c9656a3e2') + version('1.5.2', 'e9d43874f7cadf791394caab3925eee4') + version('1.5.1', '8869e44c5a4af65409ae78b9f482b40e') + version('1.5.0', 'a24fee5ffe28744c6fb7b1a49e0006c4') + version('1.4.1', 'ca8f1730b9b9b281e515611fa9ae23c0') + version('1.4.0', '662367ec91084ffab48ee9b5716de39c') + + @run_before('autoreconf') + def check_compilers(self): + # Fails to built openfst with %gcc@6: or %intel@16 + if self.spec.satisfies('%intel@16:') or self.spec.satisfies('gcc@6:'): + raise InstallError( + 'openfst does not support Intel compiler >= 16 and gcc >= 6 ' + ) From 3923bdca90bd60678f041d7ad6235c406dc05459 Mon Sep 17 00:00:00 2001 From: Kim Serradell Date: Tue, 21 Mar 2017 16:50:34 +0100 Subject: [PATCH 0401/2394] Replacing failing git clone by valid url (#3505) * Replacing failing git clone by valid url * Moving to previous version package (0.163) * Removing automake and autoconf dependencies and adding url_list to pick up newer versions * Corrected typo * Reorder versions and removed libtool --- var/spack/repos/builtin/packages/elfutils/package.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index 15ae077bea4..16c1f6d2475 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -35,13 +35,12 @@ class Elfutils(AutotoolsPackage): homepage = "https://fedorahosted.org/elfutils/" - depends_on('libtool', type='build') - depends_on('automake', type='build') - depends_on('autoconf', type='build') + url = "https://sourceware.org/elfutils/ftp/0.168/elfutils-0.168.tar.bz2" + list_url = "https://sourceware.org/elfutils/ftp" + list_depth = 2 - version('0.163', - git='git://git.fedorahosted.org/git/elfutils.git', - tag='elfutils-0.163') + version('0.168','52adfa40758d0d39e5d5c57689bf38d6') + version('0.163','77ce87f259987d2e54e4d87b86cbee41') provides('elf@1') From ed9dec225909ae60554878070f952f425da0d4e9 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 21 Mar 2017 11:25:14 -0500 Subject: [PATCH 0402/2394] Add recommended patches to mpfr package (#3506) --- .../repos/builtin/packages/mpfr/package.py | 6 +- .../repos/builtin/packages/mpfr/strtofr.patch | 92 +++++++++++++++++++ .../builtin/packages/mpfr/vasprintf.patch | 82 +++++++++++++++++ 3 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/mpfr/strtofr.patch create mode 100644 var/spack/repos/builtin/packages/mpfr/vasprintf.patch diff --git a/var/spack/repos/builtin/packages/mpfr/package.py b/var/spack/repos/builtin/packages/mpfr/package.py index 09377804f66..1a86dfdb817 100644 --- a/var/spack/repos/builtin/packages/mpfr/package.py +++ b/var/spack/repos/builtin/packages/mpfr/package.py @@ -28,6 +28,7 @@ class Mpfr(AutotoolsPackage): """The MPFR library is a C library for multiple-precision floating-point computations with correct rounding.""" + homepage = "http://www.mpfr.org" url = "https://gforge.inria.fr/frs/download.php/latestfile/159/mpfr-3.1.2.tar.bz2" @@ -36,4 +37,7 @@ class Mpfr(AutotoolsPackage): version('3.1.3', '5fdfa3cfa5c86514ee4a241a1affa138') version('3.1.2', 'ee2c3ac63bf0c2359bf08fc3ee094c19') - depends_on('gmp') # mpir is a drop-in replacement for this + depends_on('gmp@4.1.0:') # mpir is a drop-in replacement for this + + patch('vasprintf.patch', when='@3.1.5') + patch('strtofr.patch', when='@3.1.5') diff --git a/var/spack/repos/builtin/packages/mpfr/strtofr.patch b/var/spack/repos/builtin/packages/mpfr/strtofr.patch new file mode 100644 index 00000000000..01878bf1b0d --- /dev/null +++ b/var/spack/repos/builtin/packages/mpfr/strtofr.patch @@ -0,0 +1,92 @@ +diff -Naurd mpfr-3.1.5-a/PATCHES mpfr-3.1.5-b/PATCHES +--- mpfr-3.1.5-a/PATCHES 2016-12-19 22:11:17.022676737 +0000 ++++ mpfr-3.1.5-b/PATCHES 2016-12-19 22:11:17.094676820 +0000 +@@ -0,0 +1 @@ ++strtofr +diff -Naurd mpfr-3.1.5-a/VERSION mpfr-3.1.5-b/VERSION +--- mpfr-3.1.5-a/VERSION 2016-12-15 08:35:46.544430346 +0000 ++++ mpfr-3.1.5-b/VERSION 2016-12-19 22:11:17.094676820 +0000 +@@ -1 +1 @@ +-3.1.5-p1 ++3.1.5-p2 +diff -Naurd mpfr-3.1.5-a/src/mpfr.h mpfr-3.1.5-b/src/mpfr.h +--- mpfr-3.1.5-a/src/mpfr.h 2016-12-15 08:35:46.540430340 +0000 ++++ mpfr-3.1.5-b/src/mpfr.h 2016-12-19 22:11:17.090676815 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 5 +-#define MPFR_VERSION_STRING "3.1.5-p1" ++#define MPFR_VERSION_STRING "3.1.5-p2" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.5-a/src/strtofr.c mpfr-3.1.5-b/src/strtofr.c +--- mpfr-3.1.5-a/src/strtofr.c 2016-09-27 07:58:15.000000000 +0000 ++++ mpfr-3.1.5-b/src/strtofr.c 2016-12-19 22:11:17.066676788 +0000 +@@ -743,11 +743,14 @@ + of the pstr_size most significant digits of pstr->mant, with + equality in case exact is non-zero. */ + +- /* test if rounding is possible, and if so exit the loop */ +- if (exact || mpfr_can_round_raw (result, ysize, +- (pstr->negative) ? -1 : 1, +- ysize_bits - err - 1, +- MPFR_RNDN, rnd, MPFR_PREC(x))) ++ /* test if rounding is possible, and if so exit the loop. ++ Note: we also need to be able to determine the correct ternary value, ++ thus we use the MPFR_PREC(x) + (rnd == MPFR_RNDN) trick. ++ For example if result = xxx...xxx111...111 and rnd = RNDN, ++ then we know the correct rounding is xxx...xx(x+1), but we cannot know ++ the correct ternary value. */ ++ if (exact || mpfr_round_p (result, ysize, ysize_bits - err - 1, ++ MPFR_PREC(x) + (rnd == MPFR_RNDN))) + break; + + next_loop: +diff -Naurd mpfr-3.1.5-a/src/version.c mpfr-3.1.5-b/src/version.c +--- mpfr-3.1.5-a/src/version.c 2016-12-15 08:35:46.544430346 +0000 ++++ mpfr-3.1.5-b/src/version.c 2016-12-19 22:11:17.094676820 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.5-p1"; ++ return "3.1.5-p2"; + } +diff -Naurd mpfr-3.1.5-a/tests/tstrtofr.c mpfr-3.1.5-b/tests/tstrtofr.c +--- mpfr-3.1.5-a/tests/tstrtofr.c 2016-09-27 07:58:14.000000000 +0000 ++++ mpfr-3.1.5-b/tests/tstrtofr.c 2016-12-19 22:11:17.066676788 +0000 +@@ -1191,6 +1191,24 @@ + mpfr_clears (e, x1, x2, (mpfr_ptr) 0); + } + ++/* Note: the number is 5^47/2^9. */ ++static void ++bug20161217 (void) ++{ ++ mpfr_t fp, z; ++ static const char * num = "0.1387778780781445675529539585113525390625e31"; ++ int inex; ++ ++ mpfr_init2 (fp, 110); ++ mpfr_init2 (z, 110); ++ inex = mpfr_strtofr (fp, num, NULL, 10, MPFR_RNDN); ++ MPFR_ASSERTN(inex == 0); ++ mpfr_set_str_binary (z, "10001100001000010011110110011101101001010000001011011110010001010100010100100110111101000010001011001100001101E-9"); ++ MPFR_ASSERTN(mpfr_equal_p (fp, z)); ++ mpfr_clear (fp); ++ mpfr_clear (z); ++} ++ + int + main (int argc, char *argv[]) + { +@@ -1205,6 +1223,7 @@ + test20100310 (); + bug20120814 (); + bug20120829 (); ++ bug20161217 (); + + tests_end_mpfr (); + return 0; diff --git a/var/spack/repos/builtin/packages/mpfr/vasprintf.patch b/var/spack/repos/builtin/packages/mpfr/vasprintf.patch new file mode 100644 index 00000000000..e1576d59766 --- /dev/null +++ b/var/spack/repos/builtin/packages/mpfr/vasprintf.patch @@ -0,0 +1,82 @@ +diff -Naurd mpfr-3.1.5-a/PATCHES mpfr-3.1.5-b/PATCHES +--- mpfr-3.1.5-a/PATCHES 2016-12-15 08:35:46.476430238 +0000 ++++ mpfr-3.1.5-b/PATCHES 2016-12-15 08:35:46.544430346 +0000 +@@ -0,0 +1 @@ ++vasprintf +diff -Naurd mpfr-3.1.5-a/VERSION mpfr-3.1.5-b/VERSION +--- mpfr-3.1.5-a/VERSION 2016-09-27 07:58:14.000000000 +0000 ++++ mpfr-3.1.5-b/VERSION 2016-12-15 08:35:46.544430346 +0000 +@@ -1 +1 @@ +-3.1.5 ++3.1.5-p1 +diff -Naurd mpfr-3.1.5-a/src/mpfr.h mpfr-3.1.5-b/src/mpfr.h +--- mpfr-3.1.5-a/src/mpfr.h 2016-09-27 07:58:15.000000000 +0000 ++++ mpfr-3.1.5-b/src/mpfr.h 2016-12-15 08:35:46.540430340 +0000 +@@ -27,7 +27,7 @@ + #define MPFR_VERSION_MAJOR 3 + #define MPFR_VERSION_MINOR 1 + #define MPFR_VERSION_PATCHLEVEL 5 +-#define MPFR_VERSION_STRING "3.1.5" ++#define MPFR_VERSION_STRING "3.1.5-p1" + + /* Macros dealing with MPFR VERSION */ + #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c)) +diff -Naurd mpfr-3.1.5-a/src/vasprintf.c mpfr-3.1.5-b/src/vasprintf.c +--- mpfr-3.1.5-a/src/vasprintf.c 2016-09-27 07:58:15.000000000 +0000 ++++ mpfr-3.1.5-b/src/vasprintf.c 2016-12-15 08:35:46.520430308 +0000 +@@ -1593,7 +1593,7 @@ + } + else if (spec.spec == 'f' || spec.spec == 'F') + { +- if (spec.prec == -1) ++ if (spec.prec < 0) + spec.prec = 6; + if (regular_fg (np, p, spec, NULL) == -1) + goto error; +diff -Naurd mpfr-3.1.5-a/src/version.c mpfr-3.1.5-b/src/version.c +--- mpfr-3.1.5-a/src/version.c 2016-09-27 07:58:15.000000000 +0000 ++++ mpfr-3.1.5-b/src/version.c 2016-12-15 08:35:46.544430346 +0000 +@@ -25,5 +25,5 @@ + const char * + mpfr_get_version (void) + { +- return "3.1.5"; ++ return "3.1.5-p1"; + } +diff -Naurd mpfr-3.1.5-a/tests/tsprintf.c mpfr-3.1.5-b/tests/tsprintf.c +--- mpfr-3.1.5-a/tests/tsprintf.c 2016-09-27 07:58:14.000000000 +0000 ++++ mpfr-3.1.5-b/tests/tsprintf.c 2016-12-15 08:35:46.520430308 +0000 +@@ -1251,6 +1251,25 @@ + check_emin_aux (MPFR_EMIN_MIN); + } + ++static void ++test20161214 (void) ++{ ++ mpfr_t x; ++ char buf[32]; ++ const char s[] = "0x0.fffffffffffff8p+1024"; ++ int r; ++ ++ mpfr_init2 (x, 64); ++ mpfr_set_str (x, s, 16, MPFR_RNDN); ++ r = mpfr_snprintf (buf, 32, "%.*RDf", -2, x); ++ MPFR_ASSERTN(r == 316); ++ r = mpfr_snprintf (buf, 32, "%.*RDf", INT_MIN + 1, x); ++ MPFR_ASSERTN(r == 316); ++ r = mpfr_snprintf (buf, 32, "%.*RDf", INT_MIN, x); ++ MPFR_ASSERTN(r == 316); ++ mpfr_clear (x); ++} ++ + int + main (int argc, char **argv) + { +@@ -1271,6 +1290,7 @@ + mixed (); + check_emax (); + check_emin (); ++ test20161214 (); + + #if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE) + #if MPFR_LCONV_DPTS From 657110f9d7bc70f9d05d0064651ba730dffa6d8b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 21 Mar 2017 12:11:03 -0500 Subject: [PATCH 0403/2394] Convert isl to AutotoolsPackage (#3507) --- .../repos/builtin/packages/isl/package.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/isl/package.py b/var/spack/repos/builtin/packages/isl/package.py index f6188e6b3e0..530864d4d37 100644 --- a/var/spack/repos/builtin/packages/isl/package.py +++ b/var/spack/repos/builtin/packages/isl/package.py @@ -25,19 +25,19 @@ from spack import * -class Isl(Package): - """isl is a thread-safe C library for manipulating sets and - relations of integer points bounded by affine constraints.""" +class Isl(AutotoolsPackage): + """isl (Integer Set Library) is a thread-safe C library for manipulating + sets and relations of integer points bounded by affine constraints.""" + homepage = "http://isl.gforge.inria.fr" - url = "http://isl.gforge.inria.fr/isl-0.14.tar.bz2" + url = "http://isl.gforge.inria.fr/isl-0.18.tar.bz2" version('0.18', '11436d6b205e516635b666090b94ab32') version('0.14', 'acd347243fca5609e3df37dba47fd0bb') - depends_on("gmp") + depends_on('gmp') - def install(self, spec, prefix): - configure("--prefix=%s" % prefix, - "--with-gmp-prefix=%s" % spec['gmp'].prefix) - make() - make("install") + def configure_args(self): + return [ + '--with-gmp-prefix={0}'.format(self.spec['gmp'].prefix) + ] From 9b5f5fccf0bef308a21cf69005e41904dc896f24 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 21 Mar 2017 15:30:38 -0700 Subject: [PATCH 0404/2394] Fix for `find --explicit` #3374 (#3492) This fixes the problem described in #3374, which describes `spack find` ignore explicit/implicit. I believe that this was broken in #2626. This restores the behavior of implicit/explicit for me. I believe that it does not screw anything else up, but .... --- lib/spack/spack/cmd/common/arguments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 6fc3b5d3cf6..a8bdcf692f9 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -64,7 +64,7 @@ def _specs(self, **kwargs): # return everything for an empty query. if not qspecs: - return spack.store.db.query() + return spack.store.db.query(**kwargs) # Return only matching stuff otherwise. specs = set() From 07397e8ef7486a7d2133b218a0095c53688dc450 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 21 Mar 2017 17:40:45 -0500 Subject: [PATCH 0405/2394] Convert gettext to AutotoolsPackage (#3510) --- var/spack/repos/builtin/packages/gettext/package.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/gettext/package.py b/var/spack/repos/builtin/packages/gettext/package.py index cf260c3f8ad..f5d9c7c45cc 100644 --- a/var/spack/repos/builtin/packages/gettext/package.py +++ b/var/spack/repos/builtin/packages/gettext/package.py @@ -25,8 +25,9 @@ from spack import * -class Gettext(Package): +class Gettext(AutotoolsPackage): """GNU internationalization (i18n) and localization (l10n) library.""" + homepage = "https://www.gnu.org/software/gettext/" url = "http://ftpmirror.gnu.org/gettext/gettext-0.19.7.tar.xz" @@ -60,9 +61,10 @@ class Gettext(Package): depends_on('libunistring', when='+libunistring') # depends_on('cvs') - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec + config_args = [ - '--prefix={0}'.format(prefix), '--disable-java', '--disable-csharp', '--with-included-glib', @@ -97,7 +99,4 @@ def install(self, spec, prefix): else: config_args.append('--with-included-libunistring') - configure(*config_args) - - make() - make("install") + return config_args From 606c5fbc5f737bf823033bfa66ae7aa08ea479ff Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Tue, 21 Mar 2017 16:24:13 -0700 Subject: [PATCH 0406/2394] patch readline to fix ipython seg fault (#3512) --- .../builtin/packages/readline/package.py | 3 + .../readline-6.3-upstream_fixes-1.patch | 90 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 var/spack/repos/builtin/packages/readline/readline-6.3-upstream_fixes-1.patch diff --git a/var/spack/repos/builtin/packages/readline/package.py b/var/spack/repos/builtin/packages/readline/package.py index 25d26f5d4fc..e0b0e0d4b2e 100644 --- a/var/spack/repos/builtin/packages/readline/package.py +++ b/var/spack/repos/builtin/packages/readline/package.py @@ -40,6 +40,9 @@ class Readline(AutotoolsPackage): version('6.3', '33c8fb279e981274f485fd91da77e94a') depends_on('ncurses') + # from url=http://www.linuxfromscratch.org/patches/downloads/readline/readline-6.3-upstream_fixes-1.patch + # this fixes a bug that could lead to seg faults in ipython + patch('readline-6.3-upstream_fixes-1.patch', when='@6.3') def build(self, spec, prefix): make('SHLIB_LIBS=-lncurses') diff --git a/var/spack/repos/builtin/packages/readline/readline-6.3-upstream_fixes-1.patch b/var/spack/repos/builtin/packages/readline/readline-6.3-upstream_fixes-1.patch new file mode 100644 index 00000000000..a1ee4d6f381 --- /dev/null +++ b/var/spack/repos/builtin/packages/readline/readline-6.3-upstream_fixes-1.patch @@ -0,0 +1,90 @@ +Submitted By: Bruce Dubbs +Date: 2014-04-18 +Initial Package Version: 6.3 +Upstream Status: Already in upstream patch repo +Origin: Upstream +Description: This patch contains upstream patch numbers 001 through 005. + +diff -Naur readline-6.3/display.c readline-6.3.patched/display.c +--- readline-6.3/display.c 2013-12-27 12:10:56.000000000 -0600 ++++ readline-6.3.patched/display.c 2014-04-18 15:51:38.249945858 -0500 +@@ -2677,7 +2677,8 @@ + { + if (_rl_echoing_p) + { +- _rl_move_vert (_rl_vis_botlin); ++ if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ ++ _rl_move_vert (_rl_vis_botlin); + _rl_vis_botlin = 0; + fflush (rl_outstream); + rl_restart_output (1, 0); +diff -Naur readline-6.3/readline.c readline-6.3.patched/readline.c +--- readline-6.3/readline.c 2013-10-28 13:58:06.000000000 -0500 ++++ readline-6.3.patched/readline.c 2014-04-18 15:51:38.247945883 -0500 +@@ -744,7 +744,8 @@ + r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ)); + + RL_CHECK_SIGNALS (); +- if (r == 0) /* success! */ ++ /* We only treat values < 0 specially to simulate recursion. */ ++ if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ + { + _rl_keyseq_chain_dispose (); + RL_UNSETSTATE (RL_STATE_MULTIKEY); +@@ -964,7 +965,7 @@ + #if defined (VI_MODE) + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && + key != ANYOTHERKEY && +- rl_key_sequence_length == 1 && /* XXX */ ++ _rl_dispatching_keymap == vi_movement_keymap && + _rl_vi_textmod_command (key)) + _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); + #endif +diff -Naur readline-6.3/rltypedefs.h readline-6.3.patched/rltypedefs.h +--- readline-6.3/rltypedefs.h 2011-03-26 13:53:31.000000000 -0500 ++++ readline-6.3.patched/rltypedefs.h 2014-04-18 15:51:38.250945845 -0500 +@@ -26,6 +26,25 @@ + extern "C" { + #endif + ++/* Old-style, attempt to mark as deprecated in some way people will notice. */ ++ ++#if !defined (_FUNCTION_DEF) ++# define _FUNCTION_DEF ++ ++#if defined(__GNUC__) || defined(__clang__) ++typedef int Function () __attribute__ ((deprecated)); ++typedef void VFunction () __attribute__ ((deprecated)); ++typedef char *CPFunction () __attribute__ ((deprecated)); ++typedef char **CPPFunction () __attribute__ ((deprecated)); ++#else ++typedef int Function (); ++typedef void VFunction (); ++typedef char *CPFunction (); ++typedef char **CPPFunction (); ++#endif ++ ++#endif /* _FUNCTION_DEF */ ++ + /* New style. */ + + #if !defined (_RL_FUNCTION_TYPEDEF) +diff -Naur readline-6.3/util.c readline-6.3.patched/util.c +--- readline-6.3/util.c 2013-09-02 12:36:12.000000000 -0500 ++++ readline-6.3.patched/util.c 2014-04-18 15:51:38.248945871 -0500 +@@ -476,6 +476,7 @@ + return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s))); + } + ++#if defined (DEBUG) + #if defined (USE_VARARGS) + static FILE *_rl_tracefp; + +@@ -538,6 +539,7 @@ + _rl_tracefp = fp; + } + #endif ++#endif /* DEBUG */ + + + #if HAVE_DECL_AUDIT_USER_TTY && defined (ENABLE_TTY_AUDIT_SUPPORT) From 31e28f9662bf644492b3aaee59fd912fab75f456 Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Wed, 22 Mar 2017 11:57:20 +0000 Subject: [PATCH 0407/2394] Update googletest (#3514) --- var/spack/repos/builtin/packages/googletest/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py index 6f3cafec06b..14ceb6ea493 100644 --- a/var/spack/repos/builtin/packages/googletest/package.py +++ b/var/spack/repos/builtin/packages/googletest/package.py @@ -30,7 +30,9 @@ class Googletest(Package): homepage = "https://github.com/google/googletest" url = "https://github.com/google/googletest/tarball/release-1.7.0" + version('1.8.0', 'd2edffbe844902d942c31db70c7cfec2') version('1.7.0', '5eaf03ed925a47b37c8e1d559eb19bc4') + version('1.6.0', '90407321648ab25b067fcd798caf8c78') depends_on("cmake", type='build') From 7e7045e0ca2ee188ac6ed52a59a38e90aa24a6e7 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 22 Mar 2017 12:01:10 -0400 Subject: [PATCH 0408/2394] llvm: Install utilities into libexec (#3516) --- var/spack/repos/builtin/packages/llvm/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 26eb9087add..9879c4ee0bf 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -374,4 +374,4 @@ def install(self, spec, prefix): cmake(*cmake_args) make() make("install") - install_tree("bin", prefix.bin) + install_tree("bin", join_path(prefix, "libexec", "llvm")) From f225741d07571b8b5c7da338b5b62715026e2c52 Mon Sep 17 00:00:00 2001 From: Jeffrey Salmond Date: Wed, 22 Mar 2017 19:53:05 +0000 Subject: [PATCH 0409/2394] configure vtk with external hdf5 and netcdf packages (#3504) * configure vtk with external hdf5 and netcdf packages * remove ~mpi constraints from hdf5 and netcdf --- var/spack/repos/builtin/packages/vtk/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index 36d18a08787..c577949c3a7 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -46,6 +46,9 @@ class Vtk(CMakePackage): patch('gcc.patch', when='@6.1.0') depends_on('qt') + depends_on('hdf5') + depends_on('netcdf') + depends_on('netcdf-cxx') extends('python', when='+python') @@ -64,6 +67,11 @@ def cmake_args(self): cmake_args.extend([ '-DBUILD_SHARED_LIBS=ON', '-DVTK_RENDERING_BACKEND:STRING={0}'.format(opengl_ver), + '-DVTK_USE_SYSTEM_HDF5=ON', + '-DVTK_USE_SYSTEM_NETCDF=ON', + '-DNETCDF_DIR={0}'.format(spec['netcdf'].prefix), + '-DNETCDF_C_ROOT={0}'.format(spec['netcdf'].prefix), + '-DNETCDF_CXX_ROOT={0}'.format(spec['netcdf-cxx'].prefix), # Enable/Disable wrappers for Python. '-DVTK_WRAP_PYTHON={0}'.format( From 7c82db07ac077ead4c9edcc97b51237629e4c397 Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Wed, 22 Mar 2017 15:16:32 -0600 Subject: [PATCH 0410/2394] Open MPI: add new packages (#3519) there were various updated packages, both for the 2.x, 2.0.x, and 1.10.x release branches of Open MPI. Signed-off-by: Howard Pritchard (cherry picked from commit 3b671935783fc3af76dc642a54461c2f02ab8ebf) --- var/spack/repos/builtin/packages/openmpi/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 27bde1d7aaf..3480311aeda 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -59,13 +59,17 @@ class Openmpi(AutotoolsPackage): """ homepage = "http://www.open-mpi.org" - url = "http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.1.tar.bz2" + url = "https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2" list_url = "http://www.open-mpi.org/software/ompi/" list_depth = 3 + version('2.1.0', '4838a5973115c44e14442c01d3f21d52') version('2.0.2', 'ecd99aa436a1ca69ce936a96d6a3fa48') version('2.0.1', '6f78155bd7203039d2448390f3b51c96') version('2.0.0', 'cdacc800cb4ce690c1f1273cb6366674') + version('1.10.6', '2e65008c1867b1f47c32f9f814d41706') + version('1.10.5', 'd32ba9530a869d9c1eae930882ea1834') + version('1.10.4', '9d2375835c5bc5c184ecdeb76c7c78ac') version('1.10.3', 'e2fe4513200e2aaa1500b762342c674b') version('1.10.2', 'b2f43d9635d2d52826e5ef9feb97fd4c') version('1.10.1', 'f0fcd77ed345b7eafb431968124ba16e') From 4e8a59a06213fb9e71feb728a5892baf6aed5959 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 22 Mar 2017 16:17:01 -0500 Subject: [PATCH 0411/2394] Add patch to fix xcb-proto make check (#3520) --- .../builtin/packages/xcb-proto/package.py | 2 +- .../xcb-proto/xcb-proto-1.12-schema-1.patch | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/xcb-proto/xcb-proto-1.12-schema-1.patch diff --git a/var/spack/repos/builtin/packages/xcb-proto/package.py b/var/spack/repos/builtin/packages/xcb-proto/package.py index be8a09ef62f..546375c7fc2 100644 --- a/var/spack/repos/builtin/packages/xcb-proto/package.py +++ b/var/spack/repos/builtin/packages/xcb-proto/package.py @@ -37,4 +37,4 @@ class XcbProto(AutotoolsPackage): extends('python') - # NOTE: `make check` fails xmllint validation + patch('xcb-proto-1.12-schema-1.patch', when='@1.12') diff --git a/var/spack/repos/builtin/packages/xcb-proto/xcb-proto-1.12-schema-1.patch b/var/spack/repos/builtin/packages/xcb-proto/xcb-proto-1.12-schema-1.patch new file mode 100644 index 00000000000..2a0b69255c4 --- /dev/null +++ b/var/spack/repos/builtin/packages/xcb-proto/xcb-proto-1.12-schema-1.patch @@ -0,0 +1,52 @@ +Submitted By: Bruce Dubbs +Date: 2016-06-01 +Initial Package Version: 1.12 +Upstream Status: Not Committed +Origin: https://lists.freedesktop.org/archives/xcb/2016-February/010676.html +Description: Fixes make check + + +--- a/src/xcb.xsd ++++ b/src/xcb.xsd +@@ -44,6 +44,15 @@ authorization from the authors. + + + ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -76,14 +85,13 @@ authorization from the authors. + + + ++ + + + + + + +- +- + + + +@@ -201,6 +209,7 @@ authorization from the authors. + + + ++ + + + + + From ace890af49645d264a2d3ec0ac93e53dd43278d5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 23 Mar 2017 12:28:17 -0500 Subject: [PATCH 0412/2394] Only configure requested lammps features (#3526) * Only configure requested lammps features * Run configure from root and make from src --- .../repos/builtin/packages/lammps/package.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 61c7b229807..6c80873f14b 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -24,7 +24,6 @@ ############################################################################## from spack import * import os -import string import datetime as dt @@ -178,16 +177,16 @@ def build_voronoi(self): def build(self, spec, prefix): for pkg in self.supported_packages: - _build_pkg_name = string.replace('build_{0}'.format(pkg), '-', '_') - if hasattr(self, _build_pkg_name): - _build_pkg = getattr(self, _build_pkg_name) - _build_pkg() + if '+{0}'.format(pkg) in spec: + _build_pkg_name = 'build_{0}'.format(pkg.replace('-', '_')) + if hasattr(self, _build_pkg_name): + _build_pkg = getattr(self, _build_pkg_name) + _build_pkg() - with working_dir('src'): - for pkg in self.supported_packages: - if '+{0}'.format(pkg) in spec: + with working_dir('src'): make('yes-{0}'.format(pkg)) + with working_dir('src'): make(self.target_name) if '+lib' in spec: From 4ecfc39e1e94581001a66f3280d58ae9e29d0acf Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 23 Mar 2017 14:35:11 -0500 Subject: [PATCH 0413/2394] Add Expect package (#3517) * Add Expect package * Ignore patches during flake8 tests for package.py files * Remove controversial changes --- lib/spack/spack/cmd/flake8.py | 3 +- ...cl_private_header_os_x_mountain_lion.patch | 23 ++++++ .../repos/builtin/packages/expect/package.py | 79 +++++++++++++++++++ .../repos/builtin/packages/tcl/package.py | 7 ++ .../repos/builtin/packages/tk/package.py | 6 +- 5 files changed, 113 insertions(+), 5 deletions(-) create mode 100644 var/spack/repos/builtin/packages/expect/expect_detect_tcl_private_header_os_x_mountain_lion.patch create mode 100644 var/spack/repos/builtin/packages/expect/package.py diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index 5ee68a80df6..d5ed9adf18b 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -59,7 +59,8 @@ r'^\s*version\(.*\)', r'^\s*variant\(.*\)', r'^\s*depends_on\(.*\)', - r'^\s*extends\(.*\)'], + r'^\s*extends\(.*\)', + r'^\s*patch\(.*\)'], # Exempt '@when' decorated functions from redefinition errors. 811: [r'^\s*\@when\(.*\)'], }, diff --git a/var/spack/repos/builtin/packages/expect/expect_detect_tcl_private_header_os_x_mountain_lion.patch b/var/spack/repos/builtin/packages/expect/expect_detect_tcl_private_header_os_x_mountain_lion.patch new file mode 100644 index 00000000000..31720eb7437 --- /dev/null +++ b/var/spack/repos/builtin/packages/expect/expect_detect_tcl_private_header_os_x_mountain_lion.patch @@ -0,0 +1,23 @@ +Fix Tcl private header detection on macOS + +https://sourceforge.net/p/expect/patches/17/ + +diff -Naur expect5.45.orig/tclconfig/tcl.m4 expect5.45/tclconfig/tcl.m4 +--- expect5.45.orig/tclconfig/tcl.m4 2010-11-09 11:42:10.000000000 -0800 ++++ expect5.45/tclconfig/tcl.m4 2013-09-23 00:10:00.000000000 -0700 +@@ -3389,9 +3389,12 @@ + # the framework's Headers and PrivateHeaders directories + case ${TCL_DEFS} in + *TCL_FRAMEWORK*) +- if test -d "${TCL_BIN_DIR}/Headers" -a \ +- -d "${TCL_BIN_DIR}/PrivateHeaders"; then +- TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/PrivateHeaders\" ${TCL_INCLUDES}" ++ if test -d "${TCL_BIN_DIR}/Headers"; then ++ if test -d "${TCL_BIN_DIR}/PrivateHeaders"; then ++ TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/PrivateHeaders\" ${TCL_INCLUDES}" ++ elif test -d "${TCL_BIN_DIR}/Headers/tcl-private"; then ++ TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/Headers/tcl-private\" ${TCL_INCLUDES}" ++ fi + else + TCL_INCLUDES="${TCL_INCLUDES} ${TCL_INCLUDE_SPEC} `echo "${TCL_INCLUDE_SPEC}" | sed -e 's/Headers/PrivateHeaders/'`" + fi diff --git a/var/spack/repos/builtin/packages/expect/package.py b/var/spack/repos/builtin/packages/expect/package.py new file mode 100644 index 00000000000..a8ea99a8ae2 --- /dev/null +++ b/var/spack/repos/builtin/packages/expect/package.py @@ -0,0 +1,79 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob +import os + + +class Expect(AutotoolsPackage): + """Expect is a tool for automating interactive applications such as + telnet, ftp, passwd, fsck, rlogin, tip, etc.""" + + homepage = "http://expect.sourceforge.net/" + url = "https://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download" + + version('5.45', '44e1a4f4c877e9ddc5a542dfa7ecc92b') + + depends_on('tcl') + + depends_on('automake', type='build') + depends_on('autoconf', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + force_autoreconf = True + + patch('expect_detect_tcl_private_header_os_x_mountain_lion.patch', when='@5.45') + + def configure_args(self): + spec = self.spec + + args = [ + # Without this, expect binary and library are not installed + '--exec-prefix={0}'.format(self.prefix), + '--enable-threads', + '--enable-shared', + '--enable-64bit', + '--with-tcl={0}'.format(spec['tcl'].prefix.lib), + '--with-tclinclude={0}'.format(spec['tcl'].prefix.include), + ] + + return args + + @run_after('install') + def symlink_library(self): + """Expect installs libraries into: + + lib/expect5.45/libexpect5.45.so + + Create a symlink so that the library can be found in lib.""" + + target = join_path(self.prefix.lib, 'expect*', 'libexpect*') + target = glob.glob(target)[0] + + link_name = os.path.basename(target) + link_name = join_path(self.prefix.lib, link_name) + + symlink(target, link_name) diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index 22b300408a5..79d4bc75442 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -55,6 +55,13 @@ def setup_environment(self, spack_env, run_env): run_env.set('TCL_LIBRARY', join_path(self.prefix.lib, 'tcl{0}'.format( self.spec.version.up_to(2)))) + def install(self, spec, prefix): + with working_dir(self.build_directory): + make('install') + + # Some applications like Expect require private Tcl headers. + make('install-private-headers') + @run_after('install') def symlink_tclsh(self): with working_dir(self.prefix.bin): diff --git a/var/spack/repos/builtin/packages/tk/package.py b/var/spack/repos/builtin/packages/tk/package.py index 48fc32ebb97..4d9651315a0 100644 --- a/var/spack/repos/builtin/packages/tk/package.py +++ b/var/spack/repos/builtin/packages/tk/package.py @@ -38,10 +38,8 @@ class Tk(AutotoolsPackage): version('8.6.5', '11dbbd425c3e0201f20d6a51482ce6c4') version('8.6.3', '85ca4dbf4dcc19777fd456f6ee5d0221') - variant('X', default=False, description='Enable X11 support') - - depends_on("tcl") - depends_on("libx11", when='+X') + depends_on('tcl') + depends_on('libx11') configure_directory = 'unix' From 10b49fd845c4d877ab6b55d5959ef134a888aad4 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 23 Mar 2017 14:35:38 -0500 Subject: [PATCH 0414/2394] Add DejaGnu package (#3518) --- .../repos/builtin/packages/dejagnu/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/dejagnu/package.py diff --git a/var/spack/repos/builtin/packages/dejagnu/package.py b/var/spack/repos/builtin/packages/dejagnu/package.py new file mode 100644 index 00000000000..4c83de7b673 --- /dev/null +++ b/var/spack/repos/builtin/packages/dejagnu/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Dejagnu(AutotoolsPackage): + """DejaGnu is a framework for testing other programs. Its purpose + is to provide a single front end for all tests.""" + + homepage = "https://www.gnu.org/software/dejagnu/" + url = "http://mirror.team-cymru.org/gnu/dejagnu/dejagnu-1.6.tar.gz" + + version('1.6', '1fdc2eb0d592c4f89d82d24dfdf02f0b') + version('1.4.4', '053f18fd5d00873de365413cab17a666') + + depends_on('expect') + depends_on('tcl@8.5:') From 929a3317e978712a69a11d381891ed7df28d3866 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 23 Mar 2017 15:58:12 -0500 Subject: [PATCH 0415/2394] Add env vars for Intel VTune Amplifier (#3531) * Add env vars for Intel VTune Amplifier * Flake8 fix --- .../packages/intel-parallel-studio/package.py | 14 +++++++++----- var/spack/repos/builtin/packages/intel/package.py | 6 +----- 2 files changed, 10 insertions(+), 10 deletions(-) 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 380dfa06a18..98043db4006 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -31,11 +31,7 @@ class IntelParallelStudio(IntelInstaller): - """Intel Parallel Studio. - - 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://spack.readthedocs.io/en/latest/mirrors.html""" + """Intel Parallel Studio.""" homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" @@ -383,3 +379,11 @@ def setup_environment(self, spack_env, run_env): run_env.prepend_path('MIC_LD_LIBRARY_PATH', join_path(self.prefix, 'ipp', 'lib', 'mic')) run_env.set('IPPROOT', join_path(self.prefix, 'ipp')) + + if self.spec.satisfies('+all') or self.spec.satisfies('+tools'): + run_env.prepend_path('PATH', + join_path(self.prefix, 'vtune_amplifier_xe', + 'bin64')) + run_env.prepend_path('VTUNE_AMPLIFIER_XE_{0}_DIR'.format( + major_ver), + join_path(self.prefix, 'vtune_amplifier_xe')) diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index 3618f6f2635..0866360d1b0 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -97,11 +97,7 @@ def install(self, spec, prefix): class Intel(IntelInstaller): - """Intel Compilers. - - 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://spack.readthedocs.io/en/latest/mirrors.html""" + """Intel Compilers.""" homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" From 4a36f23fa8c6b21a22999b6d376c276b8211d4b2 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 23 Mar 2017 15:43:28 -0700 Subject: [PATCH 0416/2394] Add release info for git v2.12.1 (#3532) Add info for git and git-manpages. Built/tested on CentOS7. --- var/spack/repos/builtin/packages/git/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index 9977794a758..f0f3bfc6bac 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -41,6 +41,11 @@ class Git(AutotoolsPackage): # https://www.kernel.org/pub/software/scm/git/git-manpages-{version}.tar.xz releases = [ + { + 'version': '2.12.1', + 'md5': 'a05c614c80ecd41e50699f1562e1130c', + 'md5_manpages': '8dfba0c9f51c6c23fb135d136c061c78', + }, { 'version': '2.12.0', 'md5': '11a440ce0ed02098adf554c797facfd3', From c68295df2c0d45eaf79a882c81bd06b5b663e5a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Fri, 24 Mar 2017 20:48:08 +0800 Subject: [PATCH 0417/2394] Add cuda support for gromacs. (#3527) --- var/spack/repos/builtin/packages/gromacs/package.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index fd5814ca08b..40d7858816c 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -51,14 +51,14 @@ class Gromacs(CMakePackage): 'double', default=False, description='Produces a double precision version of the executables') variant('plumed', default=False, description='Enable PLUMED support') + variant('cuda', default=False, description='Enable CUDA support') depends_on('mpi', when='+mpi') depends_on('plumed+mpi', when='+plumed+mpi') depends_on('plumed~mpi', when='+plumed~mpi') depends_on('fftw') depends_on('cmake@2.8.8:', type='build') - - # TODO : add GPU support + depends_on('cuda', when='+cuda') def patch(self): if '+plumed' in self.spec: @@ -82,4 +82,9 @@ def cmake_args(self): else: options.append('-DCMAKE_BUILD_TYPE:STRING=Release') + if '+cuda' in self.spec: + options.append('-DGMX_GPU:BOOL=ON') + options.append('-DCUDA_TOOLKIT_ROOT_DIR:STRING=' + + self.spec['cuda'].prefix) + return options From be5bb33aaccd75bf9ff4abe1951fa0c14e391f58 Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Fri, 24 Mar 2017 18:12:57 +0000 Subject: [PATCH 0418/2394] Initial add of dev package (#3533) * Initial add of dev package * Use a more acceptable URL --- .../repos/builtin/py-dev/__init__.py.patch | 10 +++++ var/spack/repos/builtin/py-dev/package.py | 38 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/py-dev/__init__.py.patch create mode 100644 var/spack/repos/builtin/py-dev/package.py diff --git a/var/spack/repos/builtin/py-dev/__init__.py.patch b/var/spack/repos/builtin/py-dev/__init__.py.patch new file mode 100644 index 00000000000..1c783b82c87 --- /dev/null +++ b/var/spack/repos/builtin/py-dev/__init__.py.patch @@ -0,0 +1,10 @@ +--- a/dev/__init__.py 2017-03-24 13:46:56.211385166 +0000 ++++ b/dev/__init__.py 2017-03-24 13:47:01.535332256 +0000 +@@ -1,6 +1,6 @@ + """ + +-🚧 About ++About + -------- + + dev is a collection of Python developer tools presented as a diff --git a/var/spack/repos/builtin/py-dev/package.py b/var/spack/repos/builtin/py-dev/package.py new file mode 100644 index 00000000000..449ed7dd80c --- /dev/null +++ b/var/spack/repos/builtin/py-dev/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyDev(PythonPackage): + """libraries and tools for Python development""" + + homepage = "https://pypi.python.org/pypi/dev" + url = "https://pypi.io/packages/source/d/dev/dev-0.4.0.tar.gz" + + version('0.4.0', '00449cf0b347c32da9c840adcb4cf24b') + + patch('__init__.py.patch') + + depends_on('py-setuptools', type='build') From 268d48b4078c8b38397fba3b6b3c1f143ab7194b Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 24 Mar 2017 20:22:26 +0100 Subject: [PATCH 0419/2394] CONFIG: update mxml versions (#3534) --- var/spack/repos/builtin/packages/mxml/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index bae1984bde8..fcb79596788 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -34,6 +34,7 @@ class Mxml(AutotoolsPackage): homepage = "http://www.msweet.org" url = "http://www.msweet.org/files/project3/mxml-2.9.tar.gz" + version('2.10', '8804c961a24500a95690ef287d150abe') version('2.9', 'e21cad0f7aacd18f942aa0568a8dee19') version('2.8', 'd85ee6d30de053581242c4a86e79a5d2') version('2.7', '76f2ae49bf0f5745d5cb5d9507774dc9') From 1fe987949f22f98e9f628f2958ac493fc4246409 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 14:56:22 -0500 Subject: [PATCH 0420/2394] Clean up the gcc package (#3511) * Clean up the gcc package * Add preliminary testing support * Older versions of GCC do not depend on MPC * DejaGnu 1.4.4 cannot be built in parallel * Fix GCC test dir * Add two more deps required to run the testsuite --- .../repos/builtin/packages/dejagnu/package.py | 4 ++ .../repos/builtin/packages/gcc/package.py | 50 +++++++++++-------- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/var/spack/repos/builtin/packages/dejagnu/package.py b/var/spack/repos/builtin/packages/dejagnu/package.py index 4c83de7b673..0ea4aa260a4 100644 --- a/var/spack/repos/builtin/packages/dejagnu/package.py +++ b/var/spack/repos/builtin/packages/dejagnu/package.py @@ -37,3 +37,7 @@ class Dejagnu(AutotoolsPackage): depends_on('expect') depends_on('tcl@8.5:') + + # DejaGnu 1.4.4 cannot be built in parallel + # `make check` also fails but this can be ignored + parallel = False diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index a9fed4d8dd2..1fddb77299d 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -59,9 +59,6 @@ class Gcc(AutotoolsPackage): variant('binutils', default=sys.platform != 'darwin', description="Build via binutils") - variant('gold', - default=sys.platform != 'darwin', - description="Build the gold linker plugin for ld-based LTO") variant('piclibs', default=False, description="Build PIC versions of libgfortran.a and libstdc++.a") @@ -70,12 +67,20 @@ class Gcc(AutotoolsPackage): depends_on("gmp") depends_on("mpc", when='@4.5:') depends_on("isl", when='@5.0:') - depends_on("binutils~libiberty", when='+binutils ~gold') - depends_on("binutils~libiberty+gold", when='+binutils +gold') + depends_on("binutils~libiberty", when='+binutils') # TODO: integrate these libraries. # depends_on("ppl") # depends_on("cloog") + + # TODO: Add a 'test' deptype + # https://github.com/LLNL/spack/issues/1279 + # depends_on('dejagnu@1.4.4', type='test') + # depends_on('expect', type='test') + # depends_on('tcl', type='test') + # depends_on('autogen@5.5.4:', type='test') + # depends_on('guile@1.4.1:', type='test') + if sys.platform == 'darwin': patch('darwin/gcc-4.9.patch1', when='@4.9.3') patch('darwin/gcc-4.9.patch2', when='@4.9.3') @@ -88,9 +93,6 @@ class Gcc(AutotoolsPackage): def configure_args(self): spec = self.spec prefix = self.spec.prefix - # libjava/configure needs a minor fix to install into spack paths. - filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure', - string=True) enabled_languages = set(('c', 'c++', 'fortran', 'java', 'objc')) @@ -112,12 +114,16 @@ def configure_args(self): new_header) # Generic options to compile GCC - options = ["--prefix=%s" % prefix, "--libdir=%s/lib64" % prefix, - "--disable-multilib", - "--enable-languages=" + ','.join(enabled_languages), - "--with-mpc=%s" % spec['mpc'].prefix, "--with-mpfr=%s" % - spec['mpfr'].prefix, "--with-gmp=%s" % spec['gmp'].prefix, - "--enable-lto", "--with-quad"] + options = [ + '--libdir={0}'.format(prefix.lib64), + '--disable-multilib', + '--enable-languages={0}'.format(','.join(enabled_languages)), + '--with-mpfr={0}'.format(spec['mpfr'].prefix), + '--with-gmp={0}'.format(spec['gmp'].prefix), + '--enable-lto', + '--with-quad' + ] + # Binutils if spec.satisfies('+binutils'): static_bootstrap_flags = "-static-libstdc++ -static-libgcc" @@ -131,14 +137,18 @@ def configure_args(self): "--with-as=%s/bin/as" % spec['binutils'].prefix ] options.extend(binutils_options) - # Isl - if 'isl' in spec: - isl_options = ["--with-isl=%s" % spec['isl'].prefix] - options.extend(isl_options) + # MPC + if 'mpc' in spec: + options.append('--with-mpc={0}'.format(spec['mpc'].prefix)) + + # ISL + if 'isl' in spec: + options.append('--with-isl={0}'.format(spec['isl'].prefix)) + + # macOS if sys.platform == 'darwin': - darwin_options = ["--with-build-config=bootstrap-debug"] - options.extend(darwin_options) + options.append('--with-build-config=bootstrap-debug') return options From 3c9674962267ee0a593d08442cbed53668b55b65 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 14:57:42 -0500 Subject: [PATCH 0421/2394] Add latest version of libunistring (#3538) --- var/spack/repos/builtin/packages/libunistring/package.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/libunistring/package.py b/var/spack/repos/builtin/packages/libunistring/package.py index 08657f89d19..1037a0ed3f9 100644 --- a/var/spack/repos/builtin/packages/libunistring/package.py +++ b/var/spack/repos/builtin/packages/libunistring/package.py @@ -30,8 +30,7 @@ class Libunistring(AutotoolsPackage): and for manipulating C strings according to the Unicode standard.""" homepage = "https://www.gnu.org/software/libunistring/" - url = "http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.6.tar.xz" + url = "http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.7.tar.xz" + version('0.9.7', '82e0545363d111bfdfec2ddbfe62ffd3') version('0.9.6', 'cb09c398020c27edac10ca590e9e9ef3') - - # NOTE: `make check` fails test-verify From 8a463c07ea8d16575bdb79c0e12aa4940f9f0c66 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 15:13:05 -0500 Subject: [PATCH 0422/2394] Convert libatomic-ops to AutotoolsPackage (#3540) --- .../repos/builtin/packages/libatomic-ops/package.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/libatomic-ops/package.py b/var/spack/repos/builtin/packages/libatomic-ops/package.py index 0167fbcb338..74f95079e1a 100644 --- a/var/spack/repos/builtin/packages/libatomic-ops/package.py +++ b/var/spack/repos/builtin/packages/libatomic-ops/package.py @@ -25,7 +25,7 @@ from spack import * -class LibatomicOps(Package): +class LibatomicOps(AutotoolsPackage): """This package provides semi-portable access to hardware-provided atomic memory update operations on a number architectures.""" @@ -34,9 +34,5 @@ class LibatomicOps(Package): version('7.4.4', '426d804baae12c372967a6d183e25af2') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix), - '--enable-shared') - - make() - make('install') + def configure_args(self): + return ['--enable-shared'] From a60210f6b2cae3e60254110c22b7828eda6845b2 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 15:20:25 -0500 Subject: [PATCH 0423/2394] Add latest version of bdw-gc (#3539) --- .../repos/builtin/packages/bdw-gc/package.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/bdw-gc/package.py b/var/spack/repos/builtin/packages/bdw-gc/package.py index 51202663196..9282f566be2 100644 --- a/var/spack/repos/builtin/packages/bdw-gc/package.py +++ b/var/spack/repos/builtin/packages/bdw-gc/package.py @@ -25,13 +25,14 @@ from spack import * -class BdwGc(Package): +class BdwGc(AutotoolsPackage): """The Boehm-Demers-Weiser conservative garbage collector is a garbage collecting replacement for C malloc or C++ new.""" homepage = "http://www.hboehm.info/gc/" - url = "http://www.hboehm.info/gc/gc_source/gc-7.4.4.tar.gz" + url = "http://www.hboehm.info/gc/gc_source/gc-7.6.0.tar.gz" + version('7.6.0', 'bf46ccbdaccfa3186c2ab87191c8855a') version('7.4.4', '96d18b0448a841c88d56e4ab3d180297') variant('libatomic-ops', default=True, @@ -39,15 +40,12 @@ class BdwGc(Package): depends_on('libatomic-ops', when='+libatomic-ops') - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec + config_args = [ - '--prefix={0}'.format(prefix), '--with-libatomic-ops={0}'.format( 'yes' if '+libatomic-ops' in spec else 'no') ] - configure(*config_args) - - make() - make('check') - make('install') + return config_args From 08799eac2316c2065f0e67f2d82a966877ca8035 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 15:20:52 -0500 Subject: [PATCH 0424/2394] Add latest version of GNU Guile (#3541) --- .../repos/builtin/packages/guile/package.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/guile/package.py b/var/spack/repos/builtin/packages/guile/package.py index 15e24e56345..90847a0088f 100644 --- a/var/spack/repos/builtin/packages/guile/package.py +++ b/var/spack/repos/builtin/packages/guile/package.py @@ -25,13 +25,15 @@ from spack import * -class Guile(Package): +class Guile(AutotoolsPackage): """Guile is the GNU Ubiquitous Intelligent Language for Extensions, the official extension language for the GNU operating system.""" homepage = "https://www.gnu.org/software/guile/" - url = "https://ftp.gnu.org/gnu/guile/guile-2.0.11.tar.gz" + url = "https://ftp.gnu.org/gnu/guile/guile-2.2.0.tar.gz" + version('2.2.0', '0d5de8075b965f9ee5ea04399b60a3f9') + version('2.0.14', '333b6eec83e779935a45c818f712484e') version('2.0.11', 'e532c68c6f17822561e3001136635ddd') variant('readline', default=True, description='Use the readline library') @@ -45,9 +47,12 @@ class Guile(Package): depends_on('readline', when='+readline') depends_on('pkg-config', type='build') - def install(self, spec, prefix): + build_directory = 'spack-build' + + def configure_args(self): + spec = self.spec + config_args = [ - '--prefix={0}'.format(prefix), '--with-libunistring-prefix={0}'.format( spec['libunistring'].prefix), '--with-libltdl-prefix={0}'.format(spec['libtool'].prefix), @@ -61,8 +66,4 @@ def install(self, spec, prefix): else: config_args.append('--without-libreadline-prefix') - configure(*config_args) - - make() - make('check') - make('install') + return config_args From b5acd5e44b31d156539b4dd885fd9dc6c9a56330 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 24 Mar 2017 13:43:25 -0700 Subject: [PATCH 0425/2394] Fix r package, tk no longer has an X variant (#3544) Tk recently lost its X variant (it now always uses X). That broke r, this commit fixes it. Tested on CentOS 7. --- var/spack/repos/builtin/packages/r/package.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index f6ec720eb79..ba3417caa08 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -75,8 +75,6 @@ class R(AutotoolsPackage): depends_on('freetype') depends_on('tcl') depends_on('tk') - depends_on('tk+X', when='+X') - depends_on('tk~X', when='~X') depends_on('libx11', when='+X') depends_on('libxt', when='+X') depends_on('curl') From eca8f548dca0c04ed9ec67a51bec3650a37ad52d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 15:44:01 -0500 Subject: [PATCH 0426/2394] coreutils can no longer be built in-source (#3543) --- var/spack/repos/builtin/packages/coreutils/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/coreutils/package.py b/var/spack/repos/builtin/packages/coreutils/package.py index a3c77dda9ce..7999eb3cf05 100644 --- a/var/spack/repos/builtin/packages/coreutils/package.py +++ b/var/spack/repos/builtin/packages/coreutils/package.py @@ -32,6 +32,9 @@ class Coreutils(AutotoolsPackage): operating system. """ homepage = "http://www.gnu.org/software/coreutils/" - url = "http://ftp.gnu.org/gnu/coreutils/coreutils-8.23.tar.xz" + url = "http://ftp.gnu.org/gnu/coreutils/coreutils-8.26.tar.xz" + version('8.26', 'd5aa2072f662d4118b9f4c63b94601a6') version('8.23', 'abed135279f87ad6762ce57ff6d89c41') + + build_directory = 'spack-build' From df777bf0771fdd8aadfbb26fe13b51692f4c161d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 15:44:34 -0500 Subject: [PATCH 0427/2394] Add autogen package (#3542) --- .../repos/builtin/packages/autogen/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/autogen/package.py diff --git a/var/spack/repos/builtin/packages/autogen/package.py b/var/spack/repos/builtin/packages/autogen/package.py new file mode 100644 index 00000000000..0bfe6159c93 --- /dev/null +++ b/var/spack/repos/builtin/packages/autogen/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Autogen(AutotoolsPackage): + """AutoGen is a tool designed to simplify the creation and maintenance of + programs that contain large amounts of repetitious text. It is especially + valuable in programs that have several blocks of text that must be kept + synchronized.""" + + homepage = "https://www.gnu.org/software/autogen/index.html" + url = "https://ftp.gnu.org/gnu/autogen/rel5.18.12/autogen-5.18.12.tar.gz" + list_url = "https://ftp.gnu.org/gnu/autogen" + list_depth = 2 + + version('5.18.12', '551d15ccbf5b5fc5658da375d5003389') + + variant('xml', default=True, description='Enable XML support') + + depends_on('pkg-config@0.9.0:', type='build') + + depends_on('guile@1.8:2.0') + depends_on('libxml2', when='+xml') + + def configure_args(self): + spec = self.spec + + args = [ + # `make check` fails without this + # Adding a gettext dependency does not help + '--disable-nls', + ] + + if '+xml' in spec: + args.append('--with-libxml2={0}'.format(spec['libxml2'].prefix)) + else: + args.append('--without-libxml2') + + return args From 0b4c39a9e0a828d46cb2d16b9b82c2e3d80e7d2a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 15:45:08 -0500 Subject: [PATCH 0428/2394] Various updates to the intltool package (#3545) --- .../builtin/packages/intltool/package.py | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/intltool/package.py b/var/spack/repos/builtin/packages/intltool/package.py index e9347346911..0007326eba5 100644 --- a/var/spack/repos/builtin/packages/intltool/package.py +++ b/var/spack/repos/builtin/packages/intltool/package.py @@ -25,23 +25,36 @@ from spack import * -class Intltool(Package): +class Intltool(AutotoolsPackage): """intltool is a set of tools to centralize translation of many different - file formats using GNU gettext-compatible PO files. + file formats using GNU gettext-compatible PO files.""" - """ - homepage = 'https://freedesktop.org/wiki/Software/intltool/' + homepage = 'https://freedesktop.org/wiki/Software/intltool/' + url = 'https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz' + list_url = 'https://launchpad.net/intltool/+download' - version('0.51.0', '12e517cac2b57a0121cda351570f1e63') + version('0.51.0', '12e517cac2b57a0121cda351570f1e63') - def url_for_version(self, version): - """Handle version-based custom URLs.""" - return 'https://launchpad.net/intltool/trunk/%s/+download/intltool-%s.tar.gz' % (version, version) + # requires XML::Parser perl module + # depends_on('perl@5.8.1:', type='build') - def install(self, spec, prefix): + def check(self): + # `make check` passes but causes `make install` to fail + pass - # configure, build, install: - options = ['--prefix=%s' % prefix] - configure(*options) - make() - make('install') + def _make_executable(self, name): + return Executable(join_path(self.prefix.bin, name)) + + def setup_dependent_package(self, module, dependent_spec): + # intltool is very likely to be a build dependency, + # so we add the tools it provides to the dependent module + executables = [ + 'intltool-extract', + 'intltoolize', + 'intltool-merge', + 'intltool-prepare', + 'intltool-update' + ] + + for name in executables: + setattr(module, name, self._make_executable(name)) From 50f4f0827daaa3e042a3fb2690677331104f5b80 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 16:02:01 -0500 Subject: [PATCH 0429/2394] Add libcap package (#3546) --- ...ative-building-failure-on-CentOS-6.7.patch | 31 +++++++++++ .../repos/builtin/packages/libcap/package.py | 51 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libcap/libcap-fix-the-libcap-native-building-failure-on-CentOS-6.7.patch create mode 100644 var/spack/repos/builtin/packages/libcap/package.py diff --git a/var/spack/repos/builtin/packages/libcap/libcap-fix-the-libcap-native-building-failure-on-CentOS-6.7.patch b/var/spack/repos/builtin/packages/libcap/libcap-fix-the-libcap-native-building-failure-on-CentOS-6.7.patch new file mode 100644 index 00000000000..762c69299ed --- /dev/null +++ b/var/spack/repos/builtin/packages/libcap/libcap-fix-the-libcap-native-building-failure-on-CentOS-6.7.patch @@ -0,0 +1,31 @@ +Ensure the XATTR_NAME_CAPS is defined when it is used + +Upstream-Status: Pending + +VFS_CAP_U32 can not ensure that XATTR_NAME_CAPS is defined, and failed to build +libcap-native in old release, like CentOS release 6.7 (Final), with the blow +error: + cap_file.c: In function ‘cap_get_fd’: + cap_file.c:199: error: ‘XATTR_NAME_CAPS’ undeclared (first use in this function) + cap_file.c:199: error: (Each undeclared identifier is reported only once + +Signed-off-by: Roy Li +--- + libcap/cap_file.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libcap/cap_file.c b/libcap/cap_file.c +index 40756ea..e27ca80 100644 +--- a/libcap/cap_file.c ++++ b/libcap/cap_file.c +@@ -25,7 +25,7 @@ extern int fremovexattr(int, const char *); + + #include "libcap.h" + +-#ifdef VFS_CAP_U32 ++#if defined (VFS_CAP_U32) && defined (XATTR_NAME_CAPS) + + #if VFS_CAP_U32 != __CAP_BLKS + # error VFS representation of capabilities is not the same size as kernel +-- +2.8.1 diff --git a/var/spack/repos/builtin/packages/libcap/package.py b/var/spack/repos/builtin/packages/libcap/package.py new file mode 100644 index 00000000000..a0e3065c882 --- /dev/null +++ b/var/spack/repos/builtin/packages/libcap/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libcap(MakefilePackage): + """Libcap implements the user-space interfaces to the POSIX 1003.1e + capabilities available in Linux kernels. These capabilities are a + partitioning of the all powerful root privilege into a set of + distinct privileges.""" + + homepage = "https://sites.google.com/site/fullycapable/" + url = "https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.25.tar.gz" + + version('2.25', '4b18f7166a121138cca0cdd8ab64df4c') + + patch('libcap-fix-the-libcap-native-building-failure-on-CentOS-6.7.patch') + + def install(self, spec, prefix): + make_args = [ + 'RAISE_SETFCAP=no', + 'lib=lib', + 'prefix={0}'.format(prefix), + 'install' + ] + make(*make_args) + + chmod = which('chmod') + chmod('+x', join_path(prefix.lib, 'libcap.so')) From 78301396f0270eb95e2feeb38f3021e5abf2df5b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 16:22:36 -0500 Subject: [PATCH 0430/2394] Add linux-headers package (#3547) --- .../builtin/packages/linux-headers/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/linux-headers/package.py diff --git a/var/spack/repos/builtin/packages/linux-headers/package.py b/var/spack/repos/builtin/packages/linux-headers/package.py new file mode 100644 index 00000000000..6acb0d6dc18 --- /dev/null +++ b/var/spack/repos/builtin/packages/linux-headers/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class LinuxHeaders(Package): + """The Linux kernel headers.""" + + homepage = "https://www.kernel.org/" + url = "https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.10.tar.xz" + list_url = "https://www.kernel.org/pub/linux/kernel" + list_depth = 2 + + version('4.9.10', 'ce5ab2a86c9b880617e36e84aa2deb6c') + + def setup_environment(self, spack_env, run_env): + # This variable is used in the Makefile. If it is defined on the + # system, it can break the build if there is no build recipe for + # that specific ARCH + spack_env.unset('ARCH') + + def install(self, spec, prefix): + make('headers_install', 'INSTALL_HDR_PATH={0}'.format(prefix)) From 5297d3d2ff217b19aa69baecf6d857bab6d1ae3b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 16:23:01 -0500 Subject: [PATCH 0431/2394] Add NSPR package (#3548) --- .../repos/builtin/packages/nspr/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nspr/package.py diff --git a/var/spack/repos/builtin/packages/nspr/package.py b/var/spack/repos/builtin/packages/nspr/package.py new file mode 100644 index 00000000000..482a11ab052 --- /dev/null +++ b/var/spack/repos/builtin/packages/nspr/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Nspr(AutotoolsPackage): + """Netscape Portable Runtime (NSPR) provides a platform-neutral API + for system level and libc-like functions.""" + + homepage = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR" + url = "http://ftp.mozilla.org/pub/nspr/releases/v4.13.1/src/nspr-4.13.1.tar.gz" + + version('4.13.1', '9c44298a6fc478b3c0a4e98f4f9981ed') + + depends_on('perl', type='build') + + configure_directory = 'nspr' + + def configure_args(self): + return [ + '--with-mozilla', + '--enable-64bit' # without this, fails when 32-bit glibc not found + ] From c97d79b150bcfdbc2a531f6e2fd207391db33378 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 16:31:31 -0500 Subject: [PATCH 0432/2394] Add old version of zlib (#3549) --- var/spack/repos/builtin/packages/zlib/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 797c4fe7156..5778c976ad7 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -39,6 +39,7 @@ class Zlib(Package): # Due to the bug fixes, any installations of 1.2.9 or 1.2.10 should be # immediately replaced with 1.2.11. version('1.2.8', '44d667c142d7cda120332623eab69f40') + version('1.2.3', 'debc62758716a169df9f62e6ab2bc634') variant('pic', default=True, description='Produce position-independent code (for shared libs)') From 821155470c6bb3e3d3c0d7d4be93430f4591f12c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 16:31:59 -0500 Subject: [PATCH 0433/2394] Add mozjs package (#3550) --- .../repos/builtin/packages/mozjs/package.py | 64 +++++++++++++++++++ .../builtin/packages/mozjs/perl-bug.patch | 21 ++++++ 2 files changed, 85 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mozjs/package.py create mode 100644 var/spack/repos/builtin/packages/mozjs/perl-bug.patch diff --git a/var/spack/repos/builtin/packages/mozjs/package.py b/var/spack/repos/builtin/packages/mozjs/package.py new file mode 100644 index 00000000000..26d3a42b3e4 --- /dev/null +++ b/var/spack/repos/builtin/packages/mozjs/package.py @@ -0,0 +1,64 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mozjs(AutotoolsPackage): + """SpiderMonkey is Mozilla's JavaScript engine written in C/C++. + It is used in various Mozilla products, including Firefox, and is + available under the MPL2.""" + + homepage = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey" + + version('24.2.0', '5db79c10e049a2dc117a6e6a3bc78a8e', + url="http://ftp.mozilla.org/pub/js/mozjs-24.2.0.tar.bz2") + version('17.0.0', '20b6f8f1140ef6e47daa3b16965c9202', + url="http://ftp.mozilla.org/pub/js/mozjs17.0.0.tar.gz") + version('1.8.5', 'a4574365938222adca0a6bd33329cb32', + url="http://ftp.mozilla.org/pub/js/js185-1.0.0.tar.gz") + + depends_on('perl@5.6:', type='build') + depends_on('pkg-config@0.9.0:', type='build') + depends_on('python@2.7.3:2.8', type='build') + depends_on('nspr', when='@:27') + depends_on('libffi@3.0.9:') + depends_on('readline') + depends_on('zlib@1.2.3') + + configure_directory = 'js/src' + build_directory = 'js/src/spack-build' + + patch('perl-bug.patch') + + def configure_args(self): + spec = self.spec + return [ + '--enable-readline', # enables readline support in JS shell + '--enable-threadsafe', # enables support for multiple threads + '--enable-system-ffi', + '--with-system-zlib={0}'.format(spec['zlib'].prefix), + '--with-system-nspr', + '--with-nspr-prefix={0}'.format(spec['nspr'].prefix), + ] diff --git a/var/spack/repos/builtin/packages/mozjs/perl-bug.patch b/var/spack/repos/builtin/packages/mozjs/perl-bug.patch new file mode 100644 index 00000000000..a05384c7f44 --- /dev/null +++ b/var/spack/repos/builtin/packages/mozjs/perl-bug.patch @@ -0,0 +1,21 @@ +Perl has deprecated the feature: + + defined(@array) + +In Perl 5.22+, this deprecation warning has been converted +to a fatal error. This results in the following error message: + + Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at milestone.pl line 58. + +This patch takes the suggestion of omitting defined(). +--- a/js/src/config/milestone.pl 2017-02-14 15:00:42.234275243 -0600 ++++ b/js/src/config/milestone.pl 2017-02-14 15:01:19.453313360 -0600 +@@ -55,7 +55,7 @@ + # + my $milestone = Moz::Milestone::getOfficialMilestone($MILESTONE_FILE); + +-if (defined(@TEMPLATE_FILE)) { ++if (@TEMPLATE_FILE) { + my $TFILE; + + foreach $TFILE (@TEMPLATE_FILE) { From 6461737bba24e9a66c09e9b60e9c9148a9406e49 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 24 Mar 2017 16:44:54 -0500 Subject: [PATCH 0434/2394] Add latest version of util-linux (#3551) --- .../builtin/packages/util-linux/package.py | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/util-linux/package.py b/var/spack/repos/builtin/packages/util-linux/package.py index 99af170ca12..5bbaa995f8d 100644 --- a/var/spack/repos/builtin/packages/util-linux/package.py +++ b/var/spack/repos/builtin/packages/util-linux/package.py @@ -25,20 +25,28 @@ from spack import * -class UtilLinux(Package): +class UtilLinux(AutotoolsPackage): """Util-linux is a suite of essential utilities for any Linux system.""" homepage = "http://freecode.com/projects/util-linux" - url = "https://www.kernel.org/pub/linux/utils/util-linux/v2.25/util-linux-2.25.tar.gz" + url = "https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.1.tar.gz" + list_url = "https://www.kernel.org/pub/linux/utils/util-linux" + list_depth = 2 - version('2.25', 'f6d7fc6952ec69c4dc62c8d7c59c1d57') + version('2.29.1', 'c7d5c111ef6bc5df65659e0b523ac9d9') + version('2.25', 'f6d7fc6952ec69c4dc62c8d7c59c1d57') - depends_on("python@2.7:") + depends_on('python@2.7:') - def install(self, spec, prefix): - configure("--prefix=%s" % prefix, - "PKG_CONFIG_PATH=%s/pkgconfig" % spec['python'].prefix.lib, - "--disable-use-tty-group") + def url_for_version(self, version): + url = "https://www.kernel.org/pub/linux/utils/util-linux/v{0}/util-linux-{1}.tar.gz" + return url.format(version.up_to(2), version) - make() - make("install") + def configure_args(self): + spec = self.spec + + return [ + 'PKG_CONFIG_PATH={0}'.format( + join_path(spec['python'].prefix.lib, 'pkgconfig')), + '--disable-use-tty-group', + ] From 61d01a71dd775eca0679c205390229b5d35624d9 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 25 Mar 2017 01:37:47 +0100 Subject: [PATCH 0435/2394] make git fetching quite (#3180) also output repo and branch/commit/tag in one line --- lib/spack/spack/fetch_strategy.py | 43 ++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index eadcef85f3f..d510db568f1 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -597,25 +597,33 @@ def fetch(self): tty.msg("Already fetched %s" % self.stage.source_path) return - args = [] + args = '' if self.commit: - args.append('at commit %s' % self.commit) + args = 'at commit %s' % self.commit elif self.tag: - args.append('at tag %s' % self.tag) + args = 'at tag %s' % self.tag elif self.branch: - args.append('on branch %s' % self.branch) - tty.msg("Trying to clone git repository:", self.url, *args) + args = 'on branch %s' % self.branch + tty.msg("Trying to clone git repository: %s %s" % (self.url, args)) if self.commit: # Need to do a regular clone and check out everything if # they asked for a particular commit. - self.git('clone', self.url) + if spack.debug: + self.git('clone', self.url) + else: + self.git('clone', '--quiet', self.url) self.stage.chdir_to_source() - self.git('checkout', self.commit) + if spack.debug: + self.git('checkout', self.commit) + else: + self.git('checkout', '--quiet', self.commit) else: # Can be more efficient if not checking out a specific commit. args = ['clone'] + if not spack.debug: + args.append('--quiet') # If we want a particular branch ask for it. if self.branch: @@ -652,12 +660,19 @@ def fetch(self): # pull --tags returns a "special" error code of 1 in # older versions that we have to ignore. # see: https://github.com/git/git/commit/19d122b - self.git('pull', '--tags', ignore_errors=1) - self.git('checkout', self.tag) + if spack.debug: + self.git('pull', '--tags', ignore_errors=1) + self.git('checkout', self.tag) + else: + self.git('pull', '--quiet', '--tags', ignore_errors=1) + self.git('checkout', '--quiet', self.tag) # Init submodules if the user asked for them. if self.submodules: - self.git('submodule', 'update', '--init') + if spack.debug: + self.git('submodule', 'update', '--init') + else: + self.git('submodule', '--quiet', 'update', '--init') def archive(self, destination): super(GitFetchStrategy, self).archive(destination, exclude='.git') @@ -665,8 +680,12 @@ def archive(self, destination): @_needs_stage def reset(self): self.stage.chdir_to_source() - self.git('checkout', '.') - self.git('clean', '-f') + if spack.debug: + self.git('checkout', '.') + self.git('clean', '-f') + else: + self.git('checkout', '--quiet', '.') + self.git('clean', '--quiet', '-f') def __str__(self): return "[git] %s" % self.url From 3af971165a4e6a682fb40fcef0e9c68e5c905d8c Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Fri, 24 Mar 2017 17:53:16 -0700 Subject: [PATCH 0436/2394] Added a package for Nvida NCCL (#3552) --- .../repos/builtin/packages/nccl/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nccl/package.py diff --git a/var/spack/repos/builtin/packages/nccl/package.py b/var/spack/repos/builtin/packages/nccl/package.py new file mode 100644 index 00000000000..b68d3429d18 --- /dev/null +++ b/var/spack/repos/builtin/packages/nccl/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Nccl(MakefilePackage): + """Optimized primitives for collective multi-GPU communication.""" + + homepage = "https://github.com/NVIDIA/nccl" + url = "https://github.com/NVIDIA/nccl/archive/v1.3.4-1.tar.gz" + + version('1.3.4-1', '5b9ce7fbdce0fde68e0f66318e6ff422') + version('1.3.0-1', 'f6fb1d56913a7d212ca0c300e76f01fb') + + depends_on('cuda') + + @property + def install_targets(self): + return ['PREFIX={0}'.format(self.prefix), 'install'] From 55300d1181cb07f62f9dc7c6cf40bef38e9dffa7 Mon Sep 17 00:00:00 2001 From: Michael Kuron Date: Sat, 25 Mar 2017 20:27:52 +0100 Subject: [PATCH 0437/2394] pnfft: new package (#2646) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * pnfft: new package * Convert some packages with overridden install from AutotoolsPackage to Package * pnfft: fix URL * Switch FFTW-derived packages back to AutotoolsPackage * Disable unneeded build phases in FFTW and derived packages * Separate build phases for FFTW and derived packages * Fix broken merge * fftw: pfft_patches for 3.3.6 * fftw: address @adamjstewart’s review comments --- .../repos/builtin/packages/fftw/package.py | 91 +++++++++++++------ .../repos/builtin/packages/nfft/package.py | 59 ++++++++---- .../repos/builtin/packages/pfft/package.py | 56 +++++++++--- .../repos/builtin/packages/pnfft/package.py | 87 ++++++++++++++++++ 4 files changed, 233 insertions(+), 60 deletions(-) create mode 100644 var/spack/repos/builtin/packages/pnfft/package.py diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 90252a0d32d..43892465dbe 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -25,7 +25,7 @@ from spack import * -class Fftw(Package): +class Fftw(AutotoolsPackage): """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd @@ -41,12 +41,15 @@ class Fftw(Package): version('3.3.4', '2edab8c06b24feeb3b82bbb3ebf3e7b3') version('2.1.5', '8d16a84f3ca02a785ef9eb36249ba433') - patch('pfft-3.3.5.patch', when="@3.3.5+pfft_patches", level=0) + patch('pfft-3.3.5.patch', when="@3.3.5:+pfft_patches", level=0) patch('pfft-3.3.4.patch', when="@3.3.4+pfft_patches", level=0) variant( 'float', default=True, description='Produces a single precision version of the library') + variant( + 'double', default=True, + description='Produces a double precision version of the library') variant( 'long_double', default=True, description='Produces a long double precision version of the library') @@ -63,8 +66,14 @@ class Fftw(Package): depends_on('mpi', when='+mpi') depends_on('automake', type='build', when='+pfft_patches') depends_on('autoconf', type='build', when='+pfft_patches') + depends_on('libtool', type='build', when='+pfft_patches') - def install(self, spec, prefix): + def autoreconf(self, spec, prefix): + if '+pfft_patches' in spec: + autoreconf = which('autoreconf') + autoreconf('-ifv') + + def configure(self, spec, prefix): # Base options options = [ '--prefix={0}'.format(prefix), @@ -90,9 +99,6 @@ def install(self, spec, prefix): options.insert(0, 'CFLAGS=' + self.compiler.openmp_flag) if '+mpi' in spec: options.append('--enable-mpi') - if '+pfft_patches' in spec: - autoreconf = which('autoreconf') - autoreconf('-ifv') # SIMD support # TODO: add support for more architectures @@ -102,29 +108,60 @@ def install(self, spec, prefix): float_options.append('--enable-sse2') double_options.append('--enable-sse2') - # Build double precision - configure(*(options + double_options)) - make() - if self.run_tests: - make("check") - make("install") + configure = Executable('../configure') - # Build float/long double/quad variants + # Build double/float/long double/quad variants + if '+double' in spec: + with working_dir('double', create=True): + configure(*(options + double_options)) if '+float' in spec: - configure('--enable-float', *(options + float_options)) - make() - if self.run_tests: - make("check") - make("install") + with working_dir('float', create=True): + configure('--enable-float', *(options + float_options)) if spec.satisfies('@3:+long_double'): - configure('--enable-long-double', *options) - make() - if self.run_tests: - make("check") - make("install") + with working_dir('long-double', create=True): + configure('--enable-long-double', *options) if spec.satisfies('@3:+quad'): - configure('--enable-quad-precision', *options) - make() - if self.run_tests: + with working_dir('quad', create=True): + configure('--enable-quad-precision', *options) + + def build(self, spec, prefix): + if '+double' in spec: + with working_dir('double'): + make() + if '+float' in spec: + with working_dir('float'): + make() + if '+long_double' in spec: + with working_dir('long-double'): + make() + if '+quad' in spec: + with working_dir('quad'): + make() + + def check(self, spec, prefix): + if '+double' in spec: + with working_dir('double'): make("check") - make("install") + if '+float' in spec: + with working_dir('float'): + make("check") + if '+long_double' in spec: + with working_dir('long-double'): + make("check") + if '+quad' in spec: + with working_dir('quad'): + make("check") + + def install(self, spec, prefix): + if '+double' in spec: + with working_dir('double'): + make("install") + if '+float' in spec: + with working_dir('float'): + make("install") + if '+long_double' in spec: + with working_dir('long-double'): + make("install") + if '+quad' in spec: + with working_dir('quad'): + make("install") diff --git a/var/spack/repos/builtin/packages/nfft/package.py b/var/spack/repos/builtin/packages/nfft/package.py index 522191d89a6..a137dcf0199 100644 --- a/var/spack/repos/builtin/packages/nfft/package.py +++ b/var/spack/repos/builtin/packages/nfft/package.py @@ -37,27 +37,50 @@ class Nfft(AutotoolsPackage): depends_on('fftw') - def install(self, spec, prefix): + def configure(self, spec, prefix): options = ['--prefix={0}'.format(prefix)] - make("distclean") - configure(*options) - make() - if self.run_tests: - make("check") - make("install") + configure = Executable('../configure') + if '+double' in spec['fftw']: + with working_dir('double', create=True): + configure(*options) if '+float' in spec['fftw']: - make("distclean") - configure('--enable-float', *options) - make() - if self.run_tests: - make("check") - make("install") + with working_dir('float', create=True): + configure('--enable-float', *options) if '+long_double' in spec['fftw']: - make("distclean") - configure('--enable-long-double', *options) - make() - if self.run_tests: + with working_dir('long-double', create=True): + configure('--enable-long-double', *options) + + def build(self, spec, prefix): + if '+double' in spec['fftw']: + with working_dir('double'): + make() + if '+float' in spec['fftw']: + with working_dir('float'): + make() + if '+long_double' in spec['fftw']: + with working_dir('long-double'): + make() + + def check(self, spec, prefix): + if '+double' in spec['fftw']: + with working_dir('double'): make("check") - make("install") + if '+float' in spec['fftw']: + with working_dir('float'): + make("check") + if '+long_double' in spec['fftw']: + with working_dir('long-double'): + make("check") + + def install(self, spec, prefix): + if '+double' in spec['fftw']: + with working_dir('double'): + make("install") + if '+float' in spec['fftw']: + with working_dir('float'): + make("install") + if '+long_double' in spec['fftw']: + with working_dir('long-double'): + make("install") diff --git a/var/spack/repos/builtin/packages/pfft/package.py b/var/spack/repos/builtin/packages/pfft/package.py index 575f0af3c5c..f46526be378 100644 --- a/var/spack/repos/builtin/packages/pfft/package.py +++ b/var/spack/repos/builtin/packages/pfft/package.py @@ -39,26 +39,52 @@ class Pfft(AutotoolsPackage): depends_on('fftw+mpi+pfft_patches') depends_on('mpi') - def install(self, spec, prefix): + def configure(self, spec, prefix): options = ['--prefix={0}'.format(prefix)] if not self.compiler.f77 or not self.compiler.fc: options.append("--disable-fortran") - configure(*options) - make() - if self.run_tests: - make("check") - make("install") + configure = Executable('../configure') + if '+double' in spec['fftw']: + with working_dir('double', create=True): + configure(*options) if '+float' in spec['fftw']: - configure('--enable-float', *options) - make() - if self.run_tests: - make("check") - make("install") + with working_dir('float', create=True): + configure('--enable-float', *options) if '+long_double' in spec['fftw']: - configure('--enable-long-double', *options) - make() - if self.run_tests: + with working_dir('long-double', create=True): + configure('--enable-long-double', *options) + + def build(self, spec, prefix): + if '+double' in spec['fftw']: + with working_dir('double'): + make() + if '+float' in spec['fftw']: + with working_dir('float'): + make() + if '+long_double' in spec['fftw']: + with working_dir('long-double'): + make() + + def check(self, spec, prefix): + if '+double' in spec['fftw']: + with working_dir('double'): make("check") - make("install") + if '+float' in spec['fftw']: + with working_dir('float'): + make("check") + if '+long_double' in spec['fftw']: + with working_dir('long-double'): + make("check") + + def install(self, spec, prefix): + if '+double' in spec['fftw']: + with working_dir('double'): + make("install") + if '+float' in spec['fftw']: + with working_dir('float'): + make("install") + if '+long_double' in spec['fftw']: + with working_dir('long-double'): + make("install") diff --git a/var/spack/repos/builtin/packages/pnfft/package.py b/var/spack/repos/builtin/packages/pnfft/package.py new file mode 100644 index 00000000000..772bd8f195d --- /dev/null +++ b/var/spack/repos/builtin/packages/pnfft/package.py @@ -0,0 +1,87 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Pnfft(AutotoolsPackage): + """PNFFT is a parallel software library for the calculation of + three-dimensional nonequispaced FFTs.""" + + homepage = "https://www-user.tu-chemnitz.de/~potts/workgroup/pippig/software.php.en" + url = "https://www-user.tu-chemnitz.de/~potts/workgroup/pippig/software/pnfft-1.0.7-alpha.tar.gz" + + version('1.0.7-alpha', '5caa7f214eed99de2281043ca2367e9e') + + depends_on('pfft') + + def configure(self, spec, prefix): + options = ['--prefix={0}'.format(prefix)] + if not self.compiler.f77 or not self.compiler.fc: + options.append("--disable-fortran") + + configure = Executable('../configure') + + if '+double' in spec['fftw']: + with working_dir('double', create=True): + configure(*options) + if '+float' in spec['fftw']: + with working_dir('float', create=True): + configure('--enable-float', *options) + if '+long_double' in spec['fftw']: + with working_dir('long-double', create=True): + configure('--enable-long-double', *options) + + def build(self, spec, prefix): + if '+double' in spec['fftw']: + with working_dir('double'): + make() + if '+float' in spec['fftw']: + with working_dir('float'): + make() + if '+long_double' in spec['fftw']: + with working_dir('long-double'): + make() + + def check(self, spec, prefix): + if '+double' in spec['fftw']: + with working_dir('double'): + make("check") + if '+float' in spec['fftw']: + with working_dir('float'): + make("check") + if '+long_double' in spec['fftw']: + with working_dir('long-double'): + make("check") + + def install(self, spec, prefix): + if '+double' in spec['fftw']: + with working_dir('double'): + make("install") + if '+float' in spec['fftw']: + with working_dir('float'): + make("install") + if '+long_double' in spec['fftw']: + with working_dir('long-double'): + make("install") From bfd2db0c7669fb29778a8cfbbb92020c31fffaf8 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sat, 25 Mar 2017 18:06:09 -0700 Subject: [PATCH 0438/2394] Add url_for_version and depends_on('libiconv') (#3555) * Add url_for_version and depends_on('libiconv') Fetching is broken. See https://github.com/LLNL/spack/issues/3554. libgd, when used in gnuplot at least, needs a dependency on libiconv. * Undo change from debugging pokery --- var/spack/repos/builtin/packages/libgd/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py index 58867c85f8d..adce0b75154 100644 --- a/var/spack/repos/builtin/packages/libgd/package.py +++ b/var/spack/repos/builtin/packages/libgd/package.py @@ -52,6 +52,11 @@ class Libgd(AutotoolsPackage): depends_on('gettext', type='build') depends_on('pkg-config', type='build') + depends_on('libiconv') depends_on('libpng') depends_on('libtiff') depends_on('fontconfig') + + def url_for_version(self, version): + url = "https://github.com/libgd/libgd/releases/download/gd-{0}/libgd-{0}.tar.gz" + return url.format(version) From 1e9eae4bfafe189f6451c1fbfcf1625cf3662c37 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sun, 26 Mar 2017 09:26:57 +0200 Subject: [PATCH 0439/2394] suite-sparse: add 4.5.4 (#3558) --- var/spack/repos/builtin/packages/suite-sparse/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index 122032e1318..40dc146ce89 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -32,6 +32,7 @@ class SuiteSparse(Package): homepage = 'http://faculty.cse.tamu.edu/davis/suitesparse.html' url = 'http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.5.1.tar.gz' + version('4.5.4', 'f6ab689442e64a1624a47aa220072d1b') version('4.5.3', '8ec57324585df3c6483ad7f556afccbd') version('4.5.1', 'f0ea9aad8d2d1ffec66a5b6bfeff5319') From 57ef1842542132451f4ebb9859cef23c82a6a064 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sun, 26 Mar 2017 09:31:32 +0200 Subject: [PATCH 0440/2394] superlu-dist: add 5.1.3 (#3559) --- var/spack/repos/builtin/packages/superlu-dist/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index 802c7abc375..9c31694295a 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -34,6 +34,7 @@ class SuperluDist(Package): url = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz" version('develop', git='https://github.com/xiaoyeli/superlu_dist', tag='master') + version('5.1.3', 'fec21a9207ef94f57501c9406da78285') version('5.1.1', '12638c631733a27dcbd87110e9f9cb1e') version('5.1.0', '6bb86e630bd4bd8650243aed8fd92eb9') version('5.0.0', '2b53baf1b0ddbd9fcf724992577f0670') From a14f9491dbbd78fef7be5c2362dd6e14b614c9e7 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sun, 26 Mar 2017 09:32:49 +0200 Subject: [PATCH 0441/2394] hypre: add 2.11.2 (#3556) --- var/spack/repos/builtin/packages/hypre/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index 0c6ee732b70..55886d86fa5 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -36,6 +36,7 @@ class Hypre(Package): url = "http://computation.llnl.gov/project/linear_solvers/download/hypre-2.10.0b.tar.gz" version('develop', git='https://github.com/LLNL/hypre', tag='master') + version('2.11.2', 'd507943a1a3ce5681c3308e2f3a6dd34') version('2.11.1', '3f02ef8fd679239a6723f60b7f796519') version('2.10.1', 'dc048c4cabb3cd549af72591474ad674') version('2.10.0b', '768be38793a35bb5d055905b271f5b8e') @@ -48,9 +49,9 @@ class Hypre(Package): description="Use internal Superlu routines") variant('int64', default=False, description="Use 64bit integers") - + # Patch to add ppc64le in config.guess - patch('ibm-ppc64le.patch', when='@:2.11.1') + patch('ibm-ppc64le.patch', when='@:2.11.1') depends_on("mpi") depends_on("blas") From b8486f413ab2ecf3935d98feefd246e999e0b038 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sun, 26 Mar 2017 09:33:44 +0200 Subject: [PATCH 0442/2394] mumps: add 5.1.1 (#3557) --- var/spack/repos/builtin/packages/mumps/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index 01469b1f0fe..c5bd783f393 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -34,6 +34,7 @@ class Mumps(Package): homepage = "http://mumps.enseeiht.fr" url = "http://mumps.enseeiht.fr/MUMPS_5.0.1.tar.gz" + version('5.1.1', 'f15c6b5dd8c71b1241004cd19818259d') version('5.0.2', '591bcb2c205dcb0283872608cdf04927') # Alternate location if main server is down. # version('5.0.1', 'b477573fdcc87babe861f62316833db0', url='http://pkgs.fedoraproject.org/repo/pkgs/MUMPS/MUMPS_5.0.1.tar.gz/md5/b477573fdcc87babe861f62316833db0/MUMPS_5.0.1.tar.gz') From 2b3ce576a58687ed344389ff0b847cbd1061d69f Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sun, 26 Mar 2017 09:38:18 +0200 Subject: [PATCH 0443/2394] tbb: add 2017.5 (#3560) --- var/spack/repos/builtin/packages/tbb/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/tbb/package.py b/var/spack/repos/builtin/packages/tbb/package.py index 33dea6625bf..a4e15e708b3 100644 --- a/var/spack/repos/builtin/packages/tbb/package.py +++ b/var/spack/repos/builtin/packages/tbb/package.py @@ -36,6 +36,8 @@ class Tbb(Package): # Only version-specific URL's work for TBB # can also use https://github.com/01org/tbb/releases/ + version('2017.5', '26f720729d322913912e99d1e4a36bd10625d3ca', + url='https://github.com/01org/tbb/archive/2017_U5.tar.gz') version('2017.3', '2c451a5bcf6fc31487b98b4b29651c369874277c', url='https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb2017_20161128oss_src.tgz') version('4.4.4', 'd4cee5e4ca75cab5181834877738619c56afeb71', From 2d78b3113cc9b3c835cffc5c00181e8880648e57 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sun, 26 Mar 2017 17:26:07 -0700 Subject: [PATCH 0444/2394] Nettle: new version (#3563) gnutls needs nettle from the 2.7 series. Might as well give it the latest. --- var/spack/repos/builtin/packages/nettle/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py index 6112dc6507e..2b6693a18c0 100644 --- a/var/spack/repos/builtin/packages/nettle/package.py +++ b/var/spack/repos/builtin/packages/nettle/package.py @@ -32,8 +32,9 @@ class Nettle(AutotoolsPackage): homepage = "https://www.lysator.liu.se/~nisse/nettle/" url = "http://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz" - version('3.2', 'afb15b4764ebf1b4e6d06c62bd4d29e4') - version('2.7', '2caa1bd667c35db71becb93c5d89737f') + version('3.2', 'afb15b4764ebf1b4e6d06c62bd4d29e4') + version('2.7.1', '003d5147911317931dd453520eb234a5') + version('2.7', '2caa1bd667c35db71becb93c5d89737f') depends_on('gmp') depends_on('m4', type='build') From dd7963046466f9957c42802c8a4cdc54da8eda20 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sun, 26 Mar 2017 17:26:33 -0700 Subject: [PATCH 0445/2394] Update texlive digest/md5 (sigh...) (#3564) --- var/spack/repos/builtin/packages/texlive/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/texlive/package.py b/var/spack/repos/builtin/packages/texlive/package.py index 27f6c4c7166..70d5a1d789f 100644 --- a/var/spack/repos/builtin/packages/texlive/package.py +++ b/var/spack/repos/builtin/packages/texlive/package.py @@ -41,7 +41,7 @@ class Texlive(Package): # digest values, but don't be surprised if this package is # briefly unbuildable. # - version('live', 'ad230fa814d122084c13d75c0b135fda', + version('live', '8925a175d2b69f5328003893b284a008', url="http://ctan.math.utah.edu/ctan/tex-archive/systems/texlive/tlnet/install-tl-unx.tar.gz") # There does not seem to be a complete list of schemes. From 1c73f9d92f15b1613041af5e8064e3c25b1104df Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Mon, 27 Mar 2017 14:48:14 +0200 Subject: [PATCH 0446/2394] ENH: add int64 variant to scotch (as per metis +int64) (#3536) BUG: provide patch for scotch 6.0.4 if building non-threaded - corresponds to issue #20179 from the scotch issue trackter --- .../builtin/packages/scotch/nonthreaded-6.0.4.patch | 11 +++++++++++ var/spack/repos/builtin/packages/scotch/package.py | 13 +++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/scotch/nonthreaded-6.0.4.patch diff --git a/var/spack/repos/builtin/packages/scotch/nonthreaded-6.0.4.patch b/var/spack/repos/builtin/packages/scotch/nonthreaded-6.0.4.patch new file mode 100644 index 00000000000..89d17e253e6 --- /dev/null +++ b/var/spack/repos/builtin/packages/scotch/nonthreaded-6.0.4.patch @@ -0,0 +1,11 @@ +--- scotch_6.0.4.orig/src/libscotch/common.h 2015-03-01 10:14:02.000000000 +0100 ++++ scotch_6.0.4/src/libscotch/common.h 2017-03-27 13:07:18.644221999 +0200 +@@ -306,6 +306,8 @@ + ThreadLaunchStartFunc stafptr; /*+ Pointer to start routine +*/ + ThreadLaunchJoinFunc joifptr; /*+ Pointer to join routine +*/ + ThreadBarrier barrdat; /*+ Barrier data structure +*/ ++#else ++ int thrdnbr; /* dummy for non-threaded */ + #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ + } ThreadGroupHeader; + diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index f164037efaf..b8783494852 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -31,7 +31,7 @@ class Scotch(Package): partitioning, graph clustering, and sparse matrix ordering.""" homepage = "http://www.labri.fr/perso/pelegrin/scotch/" - url = "http://gforge.inria.fr/frs/download.php/latestfile/298/scotch_6.0.3.tar.gz" + url = "http://gforge.inria.fr/frs/download.php/latestfile/298/scotch_6.0.3.tar.gz" # noqa: E501 base_url = "http://gforge.inria.fr/frs/download.php/latestfile/298" list_url = "http://gforge.inria.fr/frs/?group_id=248" @@ -50,12 +50,17 @@ class Scotch(Package): description='Build a shared version of the library') variant('metis', default=True, description='Build metis and parmetis wrapper libraries') + variant('int64', default=False, + description='Use int64_t for SCOTCH_Num typedef') depends_on('flex@:2.6.1', type='build') depends_on('bison', type='build') depends_on('mpi', when='+mpi') depends_on('zlib', when='+compression') + # Version-specific patches + patch('nonthreaded-6.0.4.patch', when='@6.0.4') + # NOTE: In cross-compiling environment parallel build # produces weird linker errors. parallel = False @@ -87,9 +92,13 @@ def configure(self): '-DCOMMON_RANDOM_FIXED_SEED', '-DSCOTCH_DETERMINISTIC', '-DSCOTCH_RENAME', - '-DIDXSIZE64' + '-DIDXSIZE64', # SCOTCH_Idx typedef: indices for addressing ] + # SCOTCH_Num typedef: size of integers in arguments + if '+int64' in self.spec: + cflags.append('-DINTSIZE64') + if self.spec.satisfies('platform=darwin'): cflags.extend([ '-Drestrict=__restrict' From a623a146def813c50a4a0721ead80d89e54828b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Mon, 27 Mar 2017 20:55:16 +0800 Subject: [PATCH 0447/2394] fftw: Add 3.3.6-pl2, remove 3.3.6-pl1. (#3566) --- var/spack/repos/builtin/packages/fftw/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 43892465dbe..555fbb91f79 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -36,7 +36,7 @@ class Fftw(AutotoolsPackage): homepage = "http://www.fftw.org" url = "http://www.fftw.org/fftw-3.3.4.tar.gz" - version('3.3.6-pl1', '682a0e78d6966ca37c7446d4ab4cc2a1') + version('3.3.6-pl2', '927e481edbb32575397eb3d62535a856') version('3.3.5', '6cc08a3b9c7ee06fdd5b9eb02e06f569') version('3.3.4', '2edab8c06b24feeb3b82bbb3ebf3e7b3') version('2.1.5', '8d16a84f3ca02a785ef9eb36249ba433') From f3ee4ec5bde6b16aed5aaf73ee340e34f47f789c Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Mon, 27 Mar 2017 15:29:33 +0200 Subject: [PATCH 0448/2394] CONFIG: update qt package to build qt-5.7.1 (#3535) - adjusted formatting to reduce some flake8 complaints --- .../repos/builtin/packages/qt/package.py | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 6d77f288465..60c5f15ece7 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -35,6 +35,7 @@ class Qt(Package): list_url = 'http://download.qt.io/archive/qt/' list_depth = 4 + version('5.7.1', '031fb3fd0c3cc0f1082644492683f18d') version('5.7.0', '9a46cce61fc64c20c3ac0a0e0fa41b42') version('5.5.1', '59f0216819152b77536cf660b015d784') version('5.4.2', 'fa1c4d819b401b267eb246a543a63ea5') @@ -46,13 +47,20 @@ class Qt(Package): # Add patch for compile issues with qt3 found with use in the # OpenSpeedShop project - variant('krellpatch', default=False, description="Build with openspeedshop based patch.") - variant('mesa', default=False, description="Depend on mesa.") - variant('gtk', default=False, description="Build with gtkplus.") - variant('webkit', default=False, description="Build the Webkit extension") - variant('examples', default=False, description="Build examples.") - variant('dbus', default=False, description="Build with D-Bus support.") - variant('phonon', default=False, description="Build with phonon support.") + variant('krellpatch', default=False, + description="Build with openspeedshop based patch.") + variant('mesa', default=False, + description="Depend on mesa.") + variant('gtk', default=False, + description="Build with gtkplus.") + variant('webkit', default=False, + description="Build the Webkit extension") + variant('examples', default=False, + description="Build examples.") + variant('dbus', default=False, + description="Build with D-Bus support.") + variant('phonon', default=False, + description="Build with phonon support.") patch('qt3krell.patch', when='@3.3.8b+krellpatch') @@ -77,6 +85,9 @@ class Qt(Package): depends_on("jpeg") depends_on("icu4c") + # QtQml + depends_on("python", when='@5.7.0:', type='build') + # OpenGL hardware acceleration depends_on("mesa", when='@4:+mesa') depends_on("libxcb", when=sys.platform != 'darwin') @@ -176,10 +187,15 @@ def common_config_args(self): '-optimized-qmake', '-no-openvg', '-no-pch', - # NIS is deprecated in more recent glibc - '-no-nis' ] + if '@:5.7.0' in self.spec: + config_args.extend([ + # NIS is deprecated in more recent glibc, + # but qt-5.7.1 does not recognize this option + '-no-nis', + ]) + if '~examples' in self.spec: config_args.extend(['-nomake', 'examples']) From 9f19cb4193d392b19190853fe560eab37ea4295c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 27 Mar 2017 08:29:56 -0700 Subject: [PATCH 0449/2394] Bugfix/gnutls (#3565) * Fix nettle dependency GnuTLS requires a nettle from the 2.7 series, won't work with 3.x (so sayeth configure when it crashes...). * Fix configure symlinking GNUmakefile to itself I'm confused about how this ever worked, but.... As configure runs, it does something like this: ``` config.status: linking /home/hartzelg/tmp/spack/var/spack/stage/gnutls-3.3.9-uq2u4ecucncv2l3akran765aystyvkys/gnutls-3.3.9/GNUmakefile to GNUmakefile ``` and since that is the cwd the build crashes with: ``` ==> 'make' '-j28' make: GNUmakefile: Too many levels of symbolic links make: stat: GNUmakefile: Too many levels of symbolic links make: *** No rule to make target `GNUmakefile'. Stop. ``` Since the comment in the configure script points out that the GNUmakefile is "only for the maintainer" I've just commented out the bit that leads to the symlinking. Builds for me on CentOS 7. (I do have a recent-ish set of auto-* things in my patch via linuxbrew) * Wordsmith * Fix symbolic link problem properly Autotools magic. See #3565 for the details. * Flake8 cleanup * Add some headroom on the version number constraint We really want < 3.0 but there's not a good way to express it. We'd like to avoid having to update the file if they release 2.7.2. This seems like a good compromise. --- var/spack/repos/builtin/packages/gnutls/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index 638ef7e30cf..06d784c8e08 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -39,4 +39,8 @@ class Gnutls(AutotoolsPackage): version('3.3.9', 'ff61b77e39d09f1140ab5a9cf52c58b6') - depends_on("nettle") + # configure sez: Note that this version of gnutls doesn't support + # nettle 3.0. + depends_on("nettle@:2.9") + + build_directory = 'spack-build' From 625a1634bbd8e75e2034e7214735937de063076c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 27 Mar 2017 09:24:51 -0700 Subject: [PATCH 0450/2394] Update to version 0.4.8-1 (#3568) --- var/spack/repos/builtin/packages/r-packrat/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/r-packrat/package.py b/var/spack/repos/builtin/packages/r-packrat/package.py index 726a6640e81..ff66ddaf39c 100644 --- a/var/spack/repos/builtin/packages/r-packrat/package.py +++ b/var/spack/repos/builtin/packages/r-packrat/package.py @@ -33,4 +33,5 @@ class RPackrat(RPackage): url = "https://cran.r-project.org/src/contrib/packrat_0.4.7-1.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/packrat" + version('0.4.8-1', '14e82feba55fcda923396282fc490038') version('0.4.7-1', '80c2413269b292ade163a70ba5053e84') From 394b78637d8c18e173783253f2de3d73b9ba1066 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 27 Mar 2017 10:13:16 -0700 Subject: [PATCH 0451/2394] Make 0.163 the preferred version of elfutils. - later versions do not seem to work well with libdwarf. --- var/spack/repos/builtin/packages/elfutils/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index 16c1f6d2475..960b9985ad2 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -40,7 +40,7 @@ class Elfutils(AutotoolsPackage): list_depth = 2 version('0.168','52adfa40758d0d39e5d5c57689bf38d6') - version('0.163','77ce87f259987d2e54e4d87b86cbee41') + version('0.163','77ce87f259987d2e54e4d87b86cbee41', preferred=True) provides('elf@1') From 8a873bbd8d7c64d1070c01b5bd1a38971350457a Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Mon, 27 Mar 2017 10:56:55 -0700 Subject: [PATCH 0452/2394] Fix easy-install.pth syntax (#3569) --- var/spack/repos/builtin/packages/python/package.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 15f7f4f987a..15bdbbc4d11 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -470,19 +470,10 @@ def write_easy_install_pth(self, exts): else: with closing(open(main_pth, 'w')) as f: - f.write(""" -import sys -sys.__plen = len(sys.path) -""") + f.write("import sys; sys.__plen = len(sys.path)") for path in paths: f.write("{0}\n".format(path)) - f.write(""" -new = sys.path[sys.__plen:] -del sys.path[sys.__plen:] -p = getattr(sys, '__egginsert', 0) -sys.path[p:p] = new -sys.__egginsert = p + len(new) -""") + f.write("import sys; new = sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p = getattr(sys, '__egginsert', 0); sys.path[p:p] = new; sys.__egginsert = p + len(new)") # noqa: E501 def activate(self, ext_pkg, **args): ignore = self.python_ignore(ext_pkg, args) From c20cd73b4a7c750f4d3b9614a37ffb79a47ce76c Mon Sep 17 00:00:00 2001 From: Peter Doak Date: Mon, 27 Mar 2017 17:33:22 -0400 Subject: [PATCH 0453/2394] this builds cvs CentOS Linux release 7.2.1511 (#3574) --- .../repos/builtin/packages/cvs/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cvs/package.py diff --git a/var/spack/repos/builtin/packages/cvs/package.py b/var/spack/repos/builtin/packages/cvs/package.py new file mode 100644 index 00000000000..e84c1ed92fe --- /dev/null +++ b/var/spack/repos/builtin/packages/cvs/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Cvs(AutotoolsPackage): + """CVS a very traditional source control system""" + homepage = "http://www.nongnu.org/cvs/" + url = "https://ftp.gnu.org/non-gnu/cvs/source/feature/1.12.13/cvs-1.12.13.tar.bz2" + + version('1.12.13', '93a8dacc6ff0e723a130835713235863f1f5ada9') + + parallel = False From 89d08c5be4006f5a11901e555a72678a45a556eb Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 28 Mar 2017 15:09:22 +0200 Subject: [PATCH 0454/2394] CONFIG: update versions for paraview (#3537) - drop old TCL support from paraview build. - add +plugins variant to have include directories installed. This is enabled by default since the additional diskspace for includes is really minimal and since this also allows re-use of the VTK libraries from ParaView without necessarily requiring a separate VTK installation. - +opengl2 is now the default. As per all newer VTK and paraview versions. BUG: broken install for paraview-5.0.1 with includes and without python - incorrect conditional for ui_pqExportStateWizard.h when python is disabled and includes are to be installed. gcc compiler detection patch. These have both been fixed in paraview 5.3.0 ENH: refactor as a CMakePackage. - Note that "spack install paraview" works as expected, but "spack build paraview" fails in weird unrelated ways. --- .../paraview/gcc-compiler-pv501.patch | 22 +++ .../builtin/packages/paraview/package.py | 138 ++++++++++-------- .../packages/paraview/stl-reader-pv440.patch | 11 ++ .../paraview/ui_pqExportStateWizard.patch | 11 ++ 4 files changed, 120 insertions(+), 62 deletions(-) create mode 100644 var/spack/repos/builtin/packages/paraview/gcc-compiler-pv501.patch create mode 100644 var/spack/repos/builtin/packages/paraview/stl-reader-pv440.patch create mode 100644 var/spack/repos/builtin/packages/paraview/ui_pqExportStateWizard.patch diff --git a/var/spack/repos/builtin/packages/paraview/gcc-compiler-pv501.patch b/var/spack/repos/builtin/packages/paraview/gcc-compiler-pv501.patch new file mode 100644 index 00000000000..bb3be1832fb --- /dev/null +++ b/var/spack/repos/builtin/packages/paraview/gcc-compiler-pv501.patch @@ -0,0 +1,22 @@ +--- ParaView-5.0.1.orig/VTK/CMake/vtkCompilerExtras.cmake 2016-03-28 17:07:10.000000000 +0200 ++++ ParaView-5.0.1/VTK/CMake/vtkCompilerExtras.cmake 2016-12-13 17:21:25.382720945 +0100 +@@ -32,7 +32,7 @@ + OUTPUT_VARIABLE _gcc_version_info + ERROR_VARIABLE _gcc_version_info) + +- string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]*" ++ string (REGEX MATCH "[3-9]\\.[0-9]\\.[0-9]*" + _gcc_version "${_gcc_version_info}") + if(NOT _gcc_version) + string (REGEX REPLACE ".*\\(GCC\\).*([34]\\.[0-9]).*" "\\1.0" +--- ParaView-5.0.1.orig/VTK/CMake/GenerateExportHeader.cmake 2016-03-28 17:07:10.000000000 +0200 ++++ ParaView-5.0.1/VTK/CMake/GenerateExportHeader.cmake 2016-12-13 17:21:25.382720945 +0100 +@@ -166,7 +166,7 @@ + execute_process(COMMAND ${CMAKE_C_COMPILER} ARGS --version + OUTPUT_VARIABLE _gcc_version_info + ERROR_VARIABLE _gcc_version_info) +- string(REGEX MATCH "[345]\\.[0-9]\\.[0-9]*" ++ string(REGEX MATCH "[3-9]\\.[0-9]\\.[0-9]*" + _gcc_version "${_gcc_version_info}") + # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the + # patch level, handle this here: diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 252f58247f1..d21b700e09a 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -25,32 +25,36 @@ from spack import * -class Paraview(Package): +class Paraview(CMakePackage): + """ParaView is an open-source, multi-platform data analysis and + visualization application.""" + homepage = 'http://www.paraview.org' - url = 'http://www.paraview.org/files/v5.0/ParaView-v' - _url_str = 'http://www.paraview.org/files/v%s/ParaView-v%s-source.tar.gz' + url = "http://www.paraview.org/files/v5.3/ParaView-v5.3.0.tar.gz" + _urlfmt = 'http://www.paraview.org/files/v{0}/ParaView-v{1}{2}.tar.gz' + version('5.3.0', '68fbbbe733aa607ec13d1db1ab5eba71') + version('5.2.0', '4570d1a2a183026adb65b73c7125b8b0') + version('5.1.2', '44fb32fc8988fcdfbc216c9e40c3e925') + version('5.0.1', 'fdf206113369746e2276b95b257d2c9b') version('4.4.0', 'fa1569857dd680ebb4d7ff89c2227378') - version('5.0.0', '4598f0b421460c8bbc635c9a1c3bdbee') + variant('plugins', default=True, + description='Install include files for plugins support') variant('python', default=False, description='Enable Python support') - - variant('tcl', default=False, description='Enable TCL support') - variant('mpi', default=True, description='Enable MPI support') - variant('osmesa', default=False, description='Enable OSMesa support') - variant('qt', default=False, description='Enable Qt support') - variant('opengl2', default=False, description='Enable OpenGL2 backend') + variant('qt', default=False, description='Enable Qt (gui) support') + variant('opengl2', default=True, description='Enable OpenGL2 backend') depends_on('python@2:2.7', when='+python') depends_on('py-numpy', when='+python', type='run') depends_on('py-matplotlib', when='+python', type='run') - depends_on('tcl', when='+tcl') depends_on('mpi', when='+mpi') depends_on('qt@:4', when='+qt') + # TODO# depends_on('qt@:4', when='@:5.2.0+qt') + # TODO# depends_on('qt@5', when='@5.3.0:+qt') - depends_on('cmake', type='build') depends_on('bzip2') depends_on('freetype') # depends_on('hdf5+mpi', when='+mpi') @@ -65,61 +69,71 @@ class Paraview(Package): # depends_on('sqlite') # external version not supported depends_on('zlib') + patch('stl-reader-pv440.patch', when='@4.4.0') + + # Broken gcc-detection - improved in 5.1.0, redundant later + patch('gcc-compiler-pv501.patch', when='@:5.0.1') + + # Broken installation (ui_pqExportStateWizard.h) - fixed in 5.2.0 + patch('ui_pqExportStateWizard.patch', when='@:5.1.2') + def url_for_version(self, version): """Handle ParaView version-based custom URLs.""" - return self._url_str % (version.up_to(2), version) + if version < Version('5.1.0'): + return self._urlfmt.format(version.up_to(2), version, '-source') + else: + return self._urlfmt.format(version.up_to(2), version, '') - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - def feature_to_bool(feature, on='ON', off='OFF'): - if feature in spec: - return on - return off + def cmake_args(self): + """Populate cmake arguments for ParaView.""" + spec = self.spec - def nfeature_to_bool(feature): - return feature_to_bool(feature, on='OFF', off='ON') + def variant_bool(feature, on='ON', off='OFF'): + """Ternary for spec variant to ON/OFF string""" + if feature in spec: + return on + return off - feature_args = std_cmake_args[:] - feature_args.append( - '-DPARAVIEW_BUILD_QT_GUI:BOOL=%s' % feature_to_bool('+qt')) - feature_args.append('-DPARAVIEW_ENABLE_PYTHON:BOOL=%s' % - feature_to_bool('+python')) - if '+python' in spec: - feature_args.append( - '-DPYTHON_EXECUTABLE:FILEPATH=%s/bin/python' - % spec['python'].prefix) - feature_args.append('-DPARAVIEW_USE_MPI:BOOL=%s' % - feature_to_bool('+mpi')) - if '+mpi' in spec: - feature_args.append( - '-DMPIEXEC:FILEPATH=%s/bin/mpiexec' % spec['mpi'].prefix) - feature_args.append( - '-DVTK_ENABLE_TCL_WRAPPING:BOOL=%s' % feature_to_bool('+tcl')) - feature_args.append('-DVTK_OPENGL_HAS_OSMESA:BOOL=%s' % - feature_to_bool('+osmesa')) - feature_args.append('-DVTK_USE_X:BOOL=%s' % - nfeature_to_bool('+osmesa')) - feature_args.append( - '-DVTK_RENDERING_BACKEND:STRING=%s' % - feature_to_bool('+opengl2', 'OpenGL2', 'OpenGL')) + def nvariant_bool(feature): + """Negated ternary for spec variant to OFF/ON string""" + return variant_bool(feature, on='OFF', off='ON') - feature_args.extend(std_cmake_args) + rendering = variant_bool('+opengl2', 'OpenGL2', 'OpenGL') + includes = variant_bool('+plugins') - if 'darwin' in self.spec.architecture: - feature_args.append('-DVTK_USE_X:BOOL=OFF') - feature_args.append( - '-DPARAVIEW_DO_UNIX_STYLE_INSTALLS:BOOL=ON') + cmake_args = [ + '-DPARAVIEW_BUILD_QT_GUI:BOOL=%s' % variant_bool('+qt'), + '-DVTK_OPENGL_HAS_OSMESA:BOOL=%s' % variant_bool('+osmesa'), + '-DVTK_USE_X:BOOL=%s' % nvariant_bool('+osmesa'), + '-DVTK_RENDERING_BACKEND:STRING=%s' % rendering, + '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=%s' % includes, + '-DBUILD_TESTING:BOOL=OFF', + '-DVTK_USE_SYSTEM_FREETYPE:BOOL=ON', + '-DVTK_USE_SYSTEM_HDF5:BOOL=OFF', + '-DVTK_USE_SYSTEM_JPEG:BOOL=ON', + '-DVTK_USE_SYSTEM_LIBXML2:BOOL=ON', + '-DVTK_USE_SYSTEM_NETCDF:BOOL=OFF', + '-DVTK_USE_SYSTEM_TIFF:BOOL=ON', + '-DVTK_USE_SYSTEM_ZLIB:BOOL=ON', + ] - cmake('..', - '-DCMAKE_INSTALL_PREFIX:PATH=%s' % prefix, - '-DBUILD_TESTING:BOOL=OFF', - '-DVTK_USE_SYSTEM_FREETYPE:BOOL=ON', - '-DVTK_USE_SYSTEM_HDF5:BOOL=OFF', - '-DVTK_USE_SYSTEM_JPEG:BOOL=ON', - '-DVTK_USE_SYSTEM_LIBXML2:BOOL=ON', - '-DVTK_USE_SYSTEM_NETCDF:BOOL=OFF', - '-DVTK_USE_SYSTEM_TIFF:BOOL=ON', - '-DVTK_USE_SYSTEM_ZLIB:BOOL=ON', - *feature_args) - make() - make('install') + if '+python' in spec: + cmake_args.extend([ + '-DPARAVIEW_ENABLE_PYTHON:BOOL=ON', + '-DPYTHON_EXECUTABLE:FILEPATH=%s/bin/python' + % spec['python'].prefix + ]) + + if '+mpi' in spec: + cmake_args.extend([ + '-DPARAVIEW_USE_MPI:BOOL=ON', + '-DMPIEXEC:FILEPATH=%s/bin/mpiexec' % spec['mpi'].prefix + ]) + + if 'darwin' in self.spec.architecture: + cmake_args.extend([ + '-DVTK_USE_X:BOOL=OFF', + '-DPARAVIEW_DO_UNIX_STYLE_INSTALLS:BOOL=ON', + ]) + + return cmake_args diff --git a/var/spack/repos/builtin/packages/paraview/stl-reader-pv440.patch b/var/spack/repos/builtin/packages/paraview/stl-reader-pv440.patch new file mode 100644 index 00000000000..06907fd8959 --- /dev/null +++ b/var/spack/repos/builtin/packages/paraview/stl-reader-pv440.patch @@ -0,0 +1,11 @@ +--- ParaView-4.4.0.orig/VTK/IO/Geometry/vtkSTLReader.cxx 2015-09-11 19:59:24.000000000 +0200 ++++ ParaView-4.4.0/VTK/IO/Geometry/vtkSTLReader.cxx 2016-06-19 12:59:50.769770143 +0200 +@@ -448,7 +448,7 @@ + done = done || (fscanf(fp,"%s", line)==EOF); + } + } +- if (!done) ++ else if (!done) + { + done = (fgets(line, 255, fp) == 0); + lineCount++; diff --git a/var/spack/repos/builtin/packages/paraview/ui_pqExportStateWizard.patch b/var/spack/repos/builtin/packages/paraview/ui_pqExportStateWizard.patch new file mode 100644 index 00000000000..2983af56ef3 --- /dev/null +++ b/var/spack/repos/builtin/packages/paraview/ui_pqExportStateWizard.patch @@ -0,0 +1,11 @@ +--- ParaView-5.0.1.orig/Qt/Components/CMakeLists.txt 2016-03-28 17:07:03.000000000 +0200 ++++ ParaView-5.0.1/Qt/Components/CMakeLists.txt 2016-12-13 17:38:42.713553032 +0100 +@@ -656,7 +656,7 @@ + #the pqSGExportStateWizard has subclasses that directly access + #the UI file, and currently we don't have a clean way to break this hard + #dependency, so for no we install this ui file. +-if(PARAVIEW_INSTALL_DEVELOPMENT_FILES) ++if(PARAVIEW_INSTALL_DEVELOPMENT_FILES AND PARAVIEW_ENABLE_PYTHON) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ui_pqExportStateWizard.h" + DESTINATION "${VTK_INSTALL_INCLUDE_DIR}") + endif() From a8c58551ae0c41ba1f7d200f09b7384f9250aa46 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 28 Mar 2017 16:14:12 +0300 Subject: [PATCH 0455/2394] openblas: raise an error when using unsupported Apple clang (#3577) --- var/spack/repos/builtin/packages/openblas/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index b6a81c2055e..bfa5a16b42a 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -76,6 +76,12 @@ def check_compilers(self): 'OpenBLAS does not support OpenMP with clang!' ) + spec = self.spec + if spec.satisfies('%clang@8.1.0:') and spec.satisfies('@:0.2.19'): + raise InstallError( + 'OpenBLAS @:0.2.19 does not build with Apple clang@8.1.0:' + ) + @property def make_defs(self): # Configure fails to pick up fortran from FC=/abs/path/to/f77, but From e9737ee4523b803572f2475cc706b0fb8217112b Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 28 Mar 2017 10:34:45 -0400 Subject: [PATCH 0456/2394] googletest: Convert to CMakePackage (#3571) * googletest: New version 1.8.0 * googletest: Simplify --- .../builtin/packages/googletest/package.py | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py index 14ceb6ea493..44a96bc170b 100644 --- a/var/spack/repos/builtin/packages/googletest/package.py +++ b/var/spack/repos/builtin/packages/googletest/package.py @@ -25,7 +25,7 @@ from spack import * -class Googletest(Package): +class Googletest(CMakePackage): """Google test framework for C++. Also called gtest.""" homepage = "https://github.com/google/googletest" url = "https://github.com/google/googletest/tarball/release-1.7.0" @@ -34,17 +34,25 @@ class Googletest(Package): version('1.7.0', '5eaf03ed925a47b37c8e1d559eb19bc4') version('1.6.0', '90407321648ab25b067fcd798caf8c78') - depends_on("cmake", type='build') + def cmake_args(self): + spec = self.spec + if '@1.8.0:' in spec: + # New style (contains both Google Mock and Google Test) + options = ['-DBUILD_GMOCK=OFF', '-DBUILD_GTEST=ON'] + else: + # Old style (contains only GTest) + options = [] + return options + @when('@:1.7.0') def install(self, spec, prefix): - which('cmake')('.', *std_cmake_args) + """Make the install targets""" + with working_dir(self.build_directory): + # Google Test doesn't have a make install + # We have to do our own install here. + install_tree(join_path(self.stage.source_path, 'include'), + prefix.include) - make() - - # Google Test doesn't have a make install - # We have to do our own install here. - install_tree('include', prefix.include) - - mkdirp(prefix.lib) - install('./libgtest.a', '%s' % prefix.lib) - install('./libgtest_main.a', '%s' % prefix.lib) + mkdirp(prefix.lib) + install('libgtest.a', prefix.lib) + install('libgtest_main.a', prefix.lib) From d9ddf2070cc0961b7ec0803ec6d9a24156314c91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Tue, 28 Mar 2017 22:39:23 +0800 Subject: [PATCH 0457/2394] Add package kaldi. (#3503) --- .../repos/builtin/packages/kaldi/package.py | 107 ++++++++++++++++++ .../repos/builtin/packages/speex/package.py | 35 ++++++ .../builtin/packages/sph2pipe/cmake.patch | 10 ++ .../builtin/packages/sph2pipe/package.py | 37 ++++++ 4 files changed, 189 insertions(+) create mode 100644 var/spack/repos/builtin/packages/kaldi/package.py create mode 100644 var/spack/repos/builtin/packages/speex/package.py create mode 100644 var/spack/repos/builtin/packages/sph2pipe/cmake.patch create mode 100644 var/spack/repos/builtin/packages/sph2pipe/package.py diff --git a/var/spack/repos/builtin/packages/kaldi/package.py b/var/spack/repos/builtin/packages/kaldi/package.py new file mode 100644 index 00000000000..3cf25df46b7 --- /dev/null +++ b/var/spack/repos/builtin/packages/kaldi/package.py @@ -0,0 +1,107 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree +from os.path import join +from fnmatch import fnmatch +import os + + +class Kaldi(Package): # Does not use Autotools + """Kaldi is a toolkit for speech recognition written + in C++ and licensed under the Apache License v2.0. + Kaldi is intended for use by speech recognition researchers.""" + + homepage = "https://github.com/kaldi-asr/kaldi" + url = "https://github.com/kaldi-asr/kaldi/archive/master.zip" + + version('master', git='https://github.com/kaldi-asr/kaldi.git') + + variant('shared', default=True, + description='build shared libraries') + variant('double', default=False, + description='build with double precision floats') + variant('cuda', default=False, + description='build with CUDA') + + depends_on('blas') + depends_on('speex') + depends_on('openfst@1.6:') + depends_on('cuda', when='+cuda') + depends_on('sph2pipe', type='run') + depends_on('sctk', type='run') + + def install(self, spec, prefix): + configure_args = [ + '--threaded-math', + '--speex-root=' + spec['speex'].prefix, + '--fst-root=' + spec['openfst'].prefix, + '--fst-version=' + str(spec['openfst'].version) + ] + + if '~shared' in spec: + configure_args.append('--static') + else: + configure_args.append('--shared') + + if '^openblas' in spec: + configure_args.append('--mathlib=OPENBLAS') + configure_args.append('--openblas-root=' + spec['blas'].prefix) + if '+openmp' in spec['blas'].variants: + configure_args.append('--threaded-math') + elif '^atlas' in spec: + configure_args.append('--mathlib=ATLAS') + configure_args.append('--atlas-root=' + spec['blas'].prefix) + if '+pthread' in spec['blas'].variants: + configure_args.append('--threaded-atlas') + elif '^intel-parallel-studio' in spec or '^intel-mkl' in spec: + configure_args.append('--mathlib=MKL') + configure_args.append('--mkl-root=' + spec['blas'].prefix) + if '+openmp' in spec['blas'].variants: + configure_args.append('--mkl-threading=iomp') + + if '+cuda' in spec: + configure_args.append('--use-cuda=yes') + configure_args.append('--cudatk-dir=' + spec['cuda'].prefix) + + with working_dir("src"): + configure(*configure_args) + make() + + mkdirp(prefix.bin) + for root, dirs, files in os.walk('bin'): + for name in files: + if os.access(join(root, name), os.X_OK): + install(join(root, name), prefix.bin) + + mkdir(prefix.lib) + copy_tree('lib', prefix.lib) + + for root, dirs, files in os.walk('.'): + for name in files: + if fnmatch(name, '*.h'): + mkdirp(join(prefix.include, root.strip("./"))) + install(join(root, name), + join(prefix.include, root.strip("./"))) diff --git a/var/spack/repos/builtin/packages/speex/package.py b/var/spack/repos/builtin/packages/speex/package.py new file mode 100644 index 00000000000..b8850e801f8 --- /dev/null +++ b/var/spack/repos/builtin/packages/speex/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Speex(AutotoolsPackage): + """Speex is an Open Source/Free Software patent-free + audio compression format designed for speech.""" + + homepage = "https://speex.org" + url = "http://downloads.us.xiph.org/releases/speex/speex-1.2.0.tar.gz" + + version('1.2.0', '8ab7bb2589110dfaf0ed7fa7757dc49c') diff --git a/var/spack/repos/builtin/packages/sph2pipe/cmake.patch b/var/spack/repos/builtin/packages/sph2pipe/cmake.patch new file mode 100644 index 00000000000..e5ff6dfc0c6 --- /dev/null +++ b/var/spack/repos/builtin/packages/sph2pipe/cmake.patch @@ -0,0 +1,10 @@ +diff -ruN sph2pipe_v2.5.ori/CMakeLists.txt sph2pipe_v2.5/CMakeLists.txt +--- sph2pipe_v2.5.ori/CMakeLists.txt 1970-01-01 08:00:00.000000000 +0800 ++++ sph2pipe_v2.5/CMakeLists.txt 2017-03-27 17:33:27.000000000 +0800 +@@ -0,0 +1,6 @@ ++PROJECT (SPH2PIPE) ++SET(SRC_LIST file_headers.c shorten_x.c sph2pipe.c) ++ADD_EXECUTABLE(sph2pipe ${SRC_LIST}) ++TARGET_LINK_LIBRARIES(sph2pipe m) ++INSTALL(TARGETS sph2pipe ++ RUNTIME DESTINATION bin) diff --git a/var/spack/repos/builtin/packages/sph2pipe/package.py b/var/spack/repos/builtin/packages/sph2pipe/package.py new file mode 100644 index 00000000000..445f2849026 --- /dev/null +++ b/var/spack/repos/builtin/packages/sph2pipe/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Sph2pipe(CMakePackage): + """Sph2pipe is a portable tool for + converting SPHERE files to other formats.""" + + homepage = "https://www.ldc.upenn.edu/language-resources/tools/sphere-conversion-tools" + url = "https://www.ldc.upenn.edu/sites/www.ldc.upenn.edu/files/ctools/sph2pipe_v2.5.tar.gz" + + version('2.5', '771d9143e9aec0a22c6a14e138974be2') + + patch('cmake.patch') From e549daa8ce1d928032411817bfbafa527d9396c1 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 28 Mar 2017 08:43:15 -0700 Subject: [PATCH 0458/2394] Bugfix: allow deactivating installs that don't have packages anymore. (#3572) - deactivate -a wouldn't work if the installation's package was no longer available. - Fix installed_extensions_for so that it doesn't need to look at the package.py file. --- lib/spack/spack/database.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index d3fc03fb40f..c81512d6821 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -619,13 +619,12 @@ def installed_extensions_for(self, extendee_spec): Return the specs of all packages that extend the given spec """ - for s in self.query(): + for spec in self.query(): try: - if s.package.extends(extendee_spec): - yield s.package - except spack.repository.UnknownPackageError: + spack.store.layout.check_activated(extendee_spec, spec) + yield spec.package + except spack.directory_layout.NoSuchExtensionError: continue - # skips unknown packages # TODO: conditional way to do this instead of catching exceptions def query(self, query_spec=any, known=any, installed=True, explicit=any): From 782f29bc4b15829adeab2a0432ab2e50a1f1da32 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 28 Mar 2017 08:43:43 -0700 Subject: [PATCH 0459/2394] Fix bug in `spack find` for installations with unknown namespaces. (#3573) - Spack find would fail with "unknown namespace" for some queries when a package from an unknown namespace was installed. - Solve by being conservative: assume unknown packages are NOT providers of virtual dependencies. --- lib/spack/spack/spec.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 9fc2c99e4ad..08b92cf7057 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2166,7 +2166,13 @@ def satisfies(self, other, deps=True, strict=False, strict_deps=False): # A concrete provider can satisfy a virtual dependency. if not self.virtual and other.virtual: - pkg = spack.repo.get(self.fullname) + try: + pkg = spack.repo.get(self.fullname) + except spack.repository.PackageLoadError: + # If we can't get package info on this spec, don't treat + # it as a provider of this vdep. + return False + if pkg.provides(other.name): for provided, when_specs in pkg.provided.items(): if any(self.satisfies(when_spec, deps=False, strict=strict) From dead67ae56587914f35ae3343b7240bed561c45d Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 28 Mar 2017 09:32:50 -0700 Subject: [PATCH 0460/2394] Restore newlines to easy-install.pth files. (#3583) Previous syntax fix in 8a873bb was not quite right. --- var/spack/repos/builtin/packages/python/package.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 15bdbbc4d11..d4d6f713bac 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -470,10 +470,14 @@ def write_easy_install_pth(self, exts): else: with closing(open(main_pth, 'w')) as f: - f.write("import sys; sys.__plen = len(sys.path)") + f.write("import sys; sys.__plen = len(sys.path)\n") for path in paths: f.write("{0}\n".format(path)) - f.write("import sys; new = sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p = getattr(sys, '__egginsert', 0); sys.path[p:p] = new; sys.__egginsert = p + len(new)") # noqa: E501 + f.write("import sys; new=sys.path[sys.__plen:]; " + "del sys.path[sys.__plen:]; " + "p=getattr(sys,'__egginsert',0); " + "sys.path[p:p]=new; " + "sys.__egginsert = p+len(new)\n") def activate(self, ext_pkg, **args): ignore = self.python_ignore(ext_pkg, args) From f6b6e397cb1ea1a4160bb71f07c6898cd8127ab8 Mon Sep 17 00:00:00 2001 From: sknigh Date: Tue, 28 Mar 2017 10:28:05 -0700 Subject: [PATCH 0461/2394] Add SST/macro and Dumpi trace packages (#3025) * Added packages for Structural Simulation Toolkit and Dumpi trace * sst-dumpi deps Remove extraneous dependency from sst-dumpi * Removed redundant function and fake-url from sst-dumpi package * Fixed URL, Added git branches, requested changes sst-dumpi version listed as 6.1, made an upstream change to 6.1.0 sst-macro and sst-dumpi can be installed as v6.1.0 and master branch * Added bootstrap. Tweaked URLs and description --- .../builtin/packages/sst-dumpi/package.py | 52 +++++++++++++++ .../builtin/packages/sst-macro/package.py | 64 +++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sst-dumpi/package.py create mode 100644 var/spack/repos/builtin/packages/sst-macro/package.py diff --git a/var/spack/repos/builtin/packages/sst-dumpi/package.py b/var/spack/repos/builtin/packages/sst-dumpi/package.py new file mode 100644 index 00000000000..edb18588093 --- /dev/null +++ b/var/spack/repos/builtin/packages/sst-dumpi/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +# Author: Samuel Knight +# Date: Feb 3, 2017 +# +from spack import * + + +class SstDumpi(AutotoolsPackage): + """The DUMPI package provides libraries to collect and read traces of MPI + applications. Traces are created by linking an application with a library + that uses the PMPI interface to intercept MPI calls. DUMPI records + signatures of all MPI-1 and MPI-2 subroutine calls, return values, request + information, and PAPI counters. + """ + + homepage = "http://sst.sandia.gov/about_dumpi.html" + url = "https://github.com/sstsimulator/sst-dumpi/archive/6.1.0.tar.gz" + + depends_on('autoconf@1.68:', type='build') + depends_on('automake@1.11.1:', type='build') + depends_on('libtool@1.2.4:', type='build') + depends_on('m4', type='build') + + version('master', + git='https://github.com/sstsimulator/sst-dumpi.git', + branch='master') + + version('6.1.0', '31c3f40a697dc85bf23dd34270982319') diff --git a/var/spack/repos/builtin/packages/sst-macro/package.py b/var/spack/repos/builtin/packages/sst-macro/package.py new file mode 100644 index 00000000000..1fb927b5998 --- /dev/null +++ b/var/spack/repos/builtin/packages/sst-macro/package.py @@ -0,0 +1,64 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +# Author: Samuel Knight +# Date: Feb 3, 2017 +# +from spack import * + + +class SstMacro(AutotoolsPackage): + """The SST/macro software package provides a simulator for large-scale + parallel computer architectures for the coarse-grained study of + distributed-memory applications. The simulator is driven from either a + trace file or skeleton application. SST/macro's modular architecture can + be extended with additional network models, trace file formats, + software services, and processor models. + """ + + homepage = "http://sst.sandia.gov/about_sstmacro.html" + url = "https://github.com/sstsimulator/sst-macro/releases/download/v6.1.0_Final/sstmacro-6.1.0.tar.gz" + + depends_on('boost@1.59:') + depends_on('autoconf@1.68:', type='build', when='@master') + depends_on('automake@1.11.1:', type='build', when='@master') + depends_on('libtool@1.2.4:', type='build', when='@master') + depends_on('m4', type='build', when='@master') + + version('master', + git='https://github.com/sstsimulator/sst-macro.git', + branch='master') + + version('6.1.0', '98b737be6326b8bd711de832ccd94d14', + url='https://github.com/sstsimulator/sst-macro/releases/download/v6.1.0_Final/sstmacro-6.1.0.tar.gz') + + @run_before('autoreconf') + def bootstrap(self): + if '@master' in self.spec: + Executable('./bootstrap.sh')() + + def configure_args(self): + args = ['--disable-regex'] + return args From 98d67bd060e31ccd7adf9317844c59ad9a2f4f8a Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Mar 2017 19:28:30 +0200 Subject: [PATCH 0462/2394] Add new version to glog (#3586) --- var/spack/repos/builtin/packages/glog/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/glog/package.py b/var/spack/repos/builtin/packages/glog/package.py index 11d679c7ffe..eb8edf3aad0 100644 --- a/var/spack/repos/builtin/packages/glog/package.py +++ b/var/spack/repos/builtin/packages/glog/package.py @@ -29,6 +29,7 @@ class Glog(AutotoolsPackage): """C++ implementation of the Google logging module.""" homepage = "https://github.com/google/glog" - url = "https://github.com/google/glog/archive/v0.3.3.tar.gz" + url = "https://github.com/google/glog/archive/v0.3.4.tar.gz" + version('0.3.4', 'df92e05c9d02504fb96674bc776a41cb') version('0.3.3', 'c1f86af27bd9c73186730aa957607ed0') From 41cfb811f0bb63fc6a360809afa9b8ef6d761d05 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 28 Mar 2017 19:29:05 +0200 Subject: [PATCH 0463/2394] add package double-conversion (#3585) --- .../packages/double-conversion/package.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/double-conversion/package.py diff --git a/var/spack/repos/builtin/packages/double-conversion/package.py b/var/spack/repos/builtin/packages/double-conversion/package.py new file mode 100644 index 00000000000..1400996853a --- /dev/null +++ b/var/spack/repos/builtin/packages/double-conversion/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class DoubleConversion(CMakePackage): + """This project (double-conversion) provides binary-decimal and decimal-binary + routines for IEEE doubles. + + The library consists of efficient conversion routines that have been + extracted from the V8 JavaScript engine. The code has been refactored + and improved so that it can be used more easily in other projects. + + There is extensive documentation in src/double-conversion.h. Other examples + can be found in test/cctest/test-conversions.cc. + """ + + homepage = "https://github.com/google/double-conversion" + url = "https://github.com/google/double-conversion/archive/v2.0.1.zip" + + version('2.0.1', '5be77f780841af528e92986d46620b1e') + version('2.0.0', '045f7927246c368b57dcdb844ec61211') + version('1.1.5', 'ddf782373e2630c07b2691c31cee0b24') + version('1.1.4', '5df72704406d93cd54c73d73f02e2744') + version('1.1.3', 'b312152c8c66c80449d5e0325b94502e') From 8378d659e7a157c99745f860f79c7f895dd65c3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Wed, 29 Mar 2017 01:46:47 +0800 Subject: [PATCH 0464/2394] Add a package: cub. (#3584) --- .../repos/builtin/packages/cub/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cub/package.py diff --git a/var/spack/repos/builtin/packages/cub/package.py b/var/spack/repos/builtin/packages/cub/package.py new file mode 100644 index 00000000000..9c0c7776bd1 --- /dev/null +++ b/var/spack/repos/builtin/packages/cub/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree + + +class Cub(Package): + """CUB is a C++ header library of cooperative threadblock primitives + and other utilities for CUDA kernel programming.""" + + homepage = "https://nvlabs.github.com/cub" + url = "https://github.com/NVlabs/cub/archive/1.6.4.zip" + + version('1.6.4', '924fc12c0efb17264c3ad2d611ed1c51') + + def install(self, spec, prefix): + copy_tree('cub', prefix.include) From 42f9040dfe592b265d0084d60d126be6c1e1438a Mon Sep 17 00:00:00 2001 From: sknigh Date: Tue, 28 Mar 2017 10:59:24 -0700 Subject: [PATCH 0465/2394] fix for #3588 (#3589) * fix for #3588 * set 'build_directory' variable instead --- var/spack/repos/builtin/packages/datamash/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/datamash/package.py b/var/spack/repos/builtin/packages/datamash/package.py index 4cf7d24ef18..a11b156c469 100644 --- a/var/spack/repos/builtin/packages/datamash/package.py +++ b/var/spack/repos/builtin/packages/datamash/package.py @@ -37,3 +37,5 @@ class Datamash(AutotoolsPackage): version('1.0.7', '9f317bab07454032ba9c068e7f17b04b') version('1.0.6', 'ff26fdef0f343cb695cf1853e14a1a5b') version('1.0.5', '9a29549dc7feca49fdc5fab696614e11') + + build_directory = 'spack-build' From 5f3e9a791fdf15f71ad63d1c54f4ff60bf211979 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 16:50:21 -0700 Subject: [PATCH 0466/2394] Nextflow versions 0.24.1 and 0.23.3 (#3597) Add support for nextflow versions 0.24.1 and 0.23.3. --- var/spack/repos/builtin/packages/nextflow/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index 54f3dbf9151..563ecd9b400 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -30,12 +30,19 @@ class Nextflow(Package): homepage = "http://www.nextflow.io" + version('0.24.1', '80ec8c4fe8e766e0bdd1371a50410d1d', + expand=False) + version('0.23.3', '71fb69275b6788af1c6f1165f40d362e', + expand=False) version('0.20.1', '0e4e0e3eca1c2c97f9b4bffd944b923a', - url='https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow', expand=False) depends_on('jdk') + def url_for_version(self, version): + base_url = 'https://github.com/nextflow-io/nextflow/releases/download/v{0}/nextflow' + return base_url.format(version) + def install(self, spec, prefix): mkdirp(prefix.bin) install("nextflow", join_path(prefix.bin, "nextflow")) From 212b342fd37defeb004acd36166b816e6ee53b61 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 16:51:30 -0700 Subject: [PATCH 0467/2394] Add support for v8.0.0503 (#3596) --- var/spack/repos/builtin/packages/vim/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index 1ac0ce51862..4c5035e3ae4 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -37,6 +37,7 @@ class Vim(AutotoolsPackage): homepage = "http://www.vim.org" url = "https://github.com/vim/vim/archive/v8.0.0134.tar.gz" + version('8.0.0503', '82b77bd5cb38b70514bed47cfe033b8c') version('8.0.0454', '4030bf677bdfbd14efb588e4d9a24128') version('8.0.0134', 'c74668d25c2acc85d655430dd60886cd') version('7.4.2367', 'a0a7bc394f7ab1d95571fe6ab05da3ea') From a9025e3283658bd53756d46d0d5e20ea8e066bf2 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 16:55:25 -0700 Subject: [PATCH 0468/2394] Add version info for 7.4.1 (#3600) --- var/spack/repos/builtin/packages/lmod/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 7b17d5db5fe..b2624bb3627 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -38,6 +38,7 @@ class Lmod(AutotoolsPackage): homepage = 'https://www.tacc.utexas.edu/research-development/tacc-projects/lmod' url = 'https://github.com/TACC/Lmod/archive/7.3.tar.gz' + version('7.4.1', '59b2558ee50877f2cf49ed37d7b09fea') version('7.3', '70180ec2ea1fae53aa83350523f6b2b3') version('6.4.5', '14f6c58dbc0a5a75574d795eac2c1e3c') version('6.4.1', '7978ba777c8aa41a4d8c05fec5f780f4') From 36f80bdfa4859cd8011de2394f25de61e2abdc4a Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 16:56:21 -0700 Subject: [PATCH 0469/2394] Add support for version 20170322 (#3598) --- var/spack/repos/builtin/packages/parallel/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/parallel/package.py b/var/spack/repos/builtin/packages/parallel/package.py index 32c3b3f5cdb..11e9497288a 100644 --- a/var/spack/repos/builtin/packages/parallel/package.py +++ b/var/spack/repos/builtin/packages/parallel/package.py @@ -34,6 +34,7 @@ class Parallel(AutotoolsPackage): homepage = "http://www.gnu.org/software/parallel/" url = "http://ftp.gnu.org/gnu/parallel/parallel-20170122.tar.bz2" + version('20170322', '4fe1b8d2e3974d26c77f0b514988214d') version('20170122', 'c9f0ec01463dc75dbbf292fd8be5f1eb') version('20160422', '24621f684130472694333709bd4454cb') version('20160322', '4e81e0d36902ab4c4e969ee6f35e6e57') From 1e5da65d65a99edae91ea008289aa282c533cdab Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:13:46 -0700 Subject: [PATCH 0470/2394] Add packages for miniconda[23] (#3613) --- .../builtin/packages/miniconda2/package.py | 43 +++++++++++++++++++ .../builtin/packages/miniconda3/package.py | 43 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 var/spack/repos/builtin/packages/miniconda2/package.py create mode 100644 var/spack/repos/builtin/packages/miniconda3/package.py diff --git a/var/spack/repos/builtin/packages/miniconda2/package.py b/var/spack/repos/builtin/packages/miniconda2/package.py new file mode 100644 index 00000000000..10b85cef326 --- /dev/null +++ b/var/spack/repos/builtin/packages/miniconda2/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from urlparse import urlparse +from os.path import split + + +class Miniconda2(Package): + """The minimalist bootstrap toolset for conda and Python2.""" + + homepage = "https://conda.io/miniconda.html" + url = "https://repo.continuum.io/miniconda/Miniconda2-4.3.11-Linux-x86_64.sh" + + version('4.3.11', 'd573980fe3b5cdf80485add2466463f5', expand=False) + + def install(self, spec, prefix): + # peel the name of the script out of the url + result = urlparse(self.url) + dir, script = split(result.path) + bash = which('bash') + bash(script, '-b', '-f', '-p', self.prefix) diff --git a/var/spack/repos/builtin/packages/miniconda3/package.py b/var/spack/repos/builtin/packages/miniconda3/package.py new file mode 100644 index 00000000000..cd0677b5bca --- /dev/null +++ b/var/spack/repos/builtin/packages/miniconda3/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from urlparse import urlparse +from os.path import split + + +class Miniconda3(Package): + """The minimalist bootstrap toolset for conda and Python3.""" + + homepage = "https://conda.io/miniconda.html" + url = "https://repo.continuum.io/miniconda/Miniconda3-4.3.11-Linux-x86_64.sh" + + version('4.3.11', '1924c8d9ec0abf09005aa03425e9ab1a', expand=False) + + def install(self, spec, prefix): + # peel the name of the script out of the url + result = urlparse(self.url) + dir, script = split(result.path) + bash = which('bash') + bash(script, '-b', '-f', '-p', self.prefix) From e5eb8e34c5fbd89f05377f9ddcb8e9766e1d7d5f Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:14:26 -0700 Subject: [PATCH 0471/2394] new package: blat (#3610) * Add package for blat * Whitespace cleanup * Flake8 cleanup --- .../repos/builtin/packages/blat/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/blat/package.py diff --git a/var/spack/repos/builtin/packages/blat/package.py b/var/spack/repos/builtin/packages/blat/package.py new file mode 100644 index 00000000000..8a9cce50c16 --- /dev/null +++ b/var/spack/repos/builtin/packages/blat/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Blat(Package): + """BLAT (BLAST-like alignment tool) is a pairwise sequence + alignment algorithm.""" + + homepage = "https://genome.ucsc.edu/FAQ/FAQblat.html" + url = "https://users.soe.ucsc.edu/~kent/src/blatSrc35.zip" + + version('35', '16e546b8843b85e0b0f2fa603cd78724') + + depends_on('libpng') + + def setup_environment(self, spack_env, run_env): + spack_env.set('MACHTYPE', 'x86_64') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + make("BINDIR=%s" % prefix.bin) From 81a0881a572885f0a356005c62b1b0a8ddd0cefd Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:15:30 -0700 Subject: [PATCH 0472/2394] new package: pigz (#3612) * Add package for pigz * Whitespace * Remove leftover instructions (oops...) * Flake8 cleanup * Convert to MakefilePackage --- .../repos/builtin/packages/pigz/package.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pigz/package.py diff --git a/var/spack/repos/builtin/packages/pigz/package.py b/var/spack/repos/builtin/packages/pigz/package.py new file mode 100644 index 00000000000..7ba120417a0 --- /dev/null +++ b/var/spack/repos/builtin/packages/pigz/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Pigz(MakefilePackage): + """A parallel implementation of gzip for modern multi-processor, + multi-core machines.""" + + homepage = "http://zlib.net/pigz/" + url = "http://zlib.net/pigz/pigz-2.3.4.tar.gz" + + version('2.3.4', '08e6b2e682bbf65ccf12c8966d633fc6') + + depends_on('zlib') + + def build(self, spec, prefix): + make() + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.man1) + install('pigz', "%s/pigz" % prefix.bin) + install('pigz.1', "%s/pigz.1" % prefix.man1) From bdf0baead75573deaeff425a7cd148ad9a60b4c3 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:27:20 -0700 Subject: [PATCH 0473/2394] New package: mummer (#3606) * Add package for mummer Blocked on https://github.com/LLNL/spack/pull/3555. * Make "check" step optional and flake8 cleanups --- .../repos/builtin/packages/mummer/package.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mummer/package.py diff --git a/var/spack/repos/builtin/packages/mummer/package.py b/var/spack/repos/builtin/packages/mummer/package.py new file mode 100644 index 00000000000..49533ed95e5 --- /dev/null +++ b/var/spack/repos/builtin/packages/mummer/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mummer(Package): + """MUMmer is a system for rapidly aligning entire genomes.""" + + homepage = "http://mummer.sourceforge.net/" + url = "https://sourceforge.net/projects/mummer/files/mummer/3.23/MUMmer3.23.tar.gz/download" + + version('3.23', 'f2422b3d2638dba4baedb71b1acdffa2') + + depends_on('gnuplot') + + def install(self, spec, prefix): + if self.run_tests: + make('check') + make('install') + mkdirp(prefix.bin) + + bins = ["show-tiling", "show-snps", "show-coords", "show-aligns", + "show-diff", "delta-filter", "combineMUMs", "mummer", + "repeat-match", "annotate", "mgaps", "gaps", "dnadiff", + "nucmer2xfig", "run-mummer3", "mummerplot", "promer", + "run-mummer1", "nucmer", "mapview", "exact-tandems"] + aux_bins = ["aux_bin/postnuc", "aux_bin/postpro", + "aux_bin/prenuc", "aux_bin/prepro"] + + for b in bins: + install(b, join_path(prefix.bin, b)) + for b in aux_bins: + install(b, join_path(prefix.bin, b[8:])) From d94757238a7bad3461c5e3b4e353516f2bfcc44e Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:33:34 -0700 Subject: [PATCH 0474/2394] New package: staden-io-lib (#3604) * Add package for staden-io-lib * Flake8 cleanups --- .../builtin/packages/staden-io-lib/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/staden-io-lib/package.py diff --git a/var/spack/repos/builtin/packages/staden-io-lib/package.py b/var/spack/repos/builtin/packages/staden-io-lib/package.py new file mode 100644 index 00000000000..31f9693e285 --- /dev/null +++ b/var/spack/repos/builtin/packages/staden-io-lib/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class StadenIoLib(AutotoolsPackage): + """Io_lib is a library for reading/writing various bioinformatics + file formats.""" + + homepage = "http://staden.sourceforge.net/" + url = "https://sourceforge.net/projects/staden/files/io_lib/1.14.8/io_lib-1.14.8.tar.gz/download" + + version('1.14.8', 'fe5ee6aaec8111a5bc3ac584a0c0c0c7') + + depends_on('zlib') From 70ec06949cfdafa7da33d21707614835f9720cc4 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:33:59 -0700 Subject: [PATCH 0475/2394] New package: ncftp client (#3603) * Add package for ncftp * Flake8 cleanups --- .../repos/builtin/packages/ncftp/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ncftp/package.py diff --git a/var/spack/repos/builtin/packages/ncftp/package.py b/var/spack/repos/builtin/packages/ncftp/package.py new file mode 100644 index 00000000000..8b515af242d --- /dev/null +++ b/var/spack/repos/builtin/packages/ncftp/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Ncftp(AutotoolsPackage): + """NcFTP Client is a set of application programs implementing the + File Transfer Protocol.""" + + homepage = "http://www.ncftp.com/" + url = "ftp://ftp.ncftp.com/ncftp/ncftp-3.2.6-src.tar.gz" + + version('3.2.6', 'e7cce57ef6274d4c7433ffe28ffe0a71') + + depends_on('ncurses') From d6cbae81c7c4dad025307c72141ce78d8d21b253 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:34:41 -0700 Subject: [PATCH 0476/2394] Update/samtools (#3595) * Update samtools family to 1.4 * simple cleanup * Make bzip depends_on for future versions too --- var/spack/repos/builtin/packages/bcftools/package.py | 2 ++ var/spack/repos/builtin/packages/htslib/package.py | 2 ++ var/spack/repos/builtin/packages/samtools/package.py | 1 + 3 files changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/bcftools/package.py b/var/spack/repos/builtin/packages/bcftools/package.py index a1b4a06dbb3..b9954c328a5 100644 --- a/var/spack/repos/builtin/packages/bcftools/package.py +++ b/var/spack/repos/builtin/packages/bcftools/package.py @@ -34,9 +34,11 @@ class Bcftools(Package): homepage = "http://samtools.github.io/bcftools/" url = "https://github.com/samtools/bcftools/releases/download/1.3.1/bcftools-1.3.1.tar.bz2" + version('1.4', '50ccf0a073bd70e99cdb3c8be830416e') version('1.3.1', '575001e9fca37cab0c7a7287ad4b1cdb') depends_on('zlib') + depends_on('bzip2', when="@1.4:") def install(self, spec, prefix): make("prefix=%s" % prefix, "all") diff --git a/var/spack/repos/builtin/packages/htslib/package.py b/var/spack/repos/builtin/packages/htslib/package.py index 77829e71b93..20db1c918b6 100644 --- a/var/spack/repos/builtin/packages/htslib/package.py +++ b/var/spack/repos/builtin/packages/htslib/package.py @@ -31,6 +31,8 @@ class Htslib(AutotoolsPackage): homepage = "https://github.com/samtools/htslib" url = "https://github.com/samtools/htslib/releases/download/1.3.1/htslib-1.3.1.tar.bz2" + version('1.4', '2a22ff382654c033c40e4ec3ea880050') version('1.3.1', '16d78f90b72f29971b042e8da8be6843') depends_on('zlib') + depends_on('bzip2', when="@1.4:") diff --git a/var/spack/repos/builtin/packages/samtools/package.py b/var/spack/repos/builtin/packages/samtools/package.py index b82a7e55d64..0793f8d9a1e 100644 --- a/var/spack/repos/builtin/packages/samtools/package.py +++ b/var/spack/repos/builtin/packages/samtools/package.py @@ -33,6 +33,7 @@ class Samtools(Package): homepage = "www.htslib.org" url = "https://github.com/samtools/samtools/releases/download/1.3.1/samtools-1.3.1.tar.bz2" + version('1.4', '8cbd7d2a0ec16d834babcd6c6d85d691') version('1.3.1', 'a7471aa5a1eb7fc9cc4c6491d73c2d88') version('1.2', '988ec4c3058a6ceda36503eebecd4122') From 9385659aa1d692f2fce9b38d90156e332b2bf48f Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:35:46 -0700 Subject: [PATCH 0477/2394] bowtie2: add support for version 2.3.1 (#3599) * Add support for 2.3.1 Updated digest and added a dependency on tbb. * Cleanup patch name and add description --- .../{bowtie2-2.5.patch => bowtie2-2.2.5.patch} | 0 .../builtin/packages/bowtie2/bowtie2-2.3.1.patch | 16 ++++++++++++++++ .../repos/builtin/packages/bowtie2/package.py | 16 ++++++++++++---- 3 files changed, 28 insertions(+), 4 deletions(-) rename var/spack/repos/builtin/packages/bowtie2/{bowtie2-2.5.patch => bowtie2-2.2.5.patch} (100%) create mode 100644 var/spack/repos/builtin/packages/bowtie2/bowtie2-2.3.1.patch diff --git a/var/spack/repos/builtin/packages/bowtie2/bowtie2-2.5.patch b/var/spack/repos/builtin/packages/bowtie2/bowtie2-2.2.5.patch similarity index 100% rename from var/spack/repos/builtin/packages/bowtie2/bowtie2-2.5.patch rename to var/spack/repos/builtin/packages/bowtie2/bowtie2-2.2.5.patch diff --git a/var/spack/repos/builtin/packages/bowtie2/bowtie2-2.3.1.patch b/var/spack/repos/builtin/packages/bowtie2/bowtie2-2.3.1.patch new file mode 100644 index 00000000000..0f4a15b1a15 --- /dev/null +++ b/var/spack/repos/builtin/packages/bowtie2/bowtie2-2.3.1.patch @@ -0,0 +1,16 @@ +--- Makefile.orig 2017-03-24 20:43:00.304532976 -0700 ++++ Makefile 2017-03-24 20:48:59.644532037 -0700 +@@ -26,10 +26,10 @@ + + INC = + LIBS = -lreadline -ltermcap -lz +-GCC_PREFIX = $(shell dirname `which gcc`) ++GCC_PREFIX = + GCC_SUFFIX = +-CC ?= $(GCC_PREFIX)/gcc$(GCC_SUFFIX) +-CPP ?= $(GCC_PREFIX)/g++$(GCC_SUFFIX) ++CC = cc ++CPP = c++ + CXX ?= $(CPP) + HEADERS = $(wildcard *.h) + BOWTIE_MM = 1 diff --git a/var/spack/repos/builtin/packages/bowtie2/package.py b/var/spack/repos/builtin/packages/bowtie2/package.py index a8a1a34ed42..6dbcea8dd0f 100644 --- a/var/spack/repos/builtin/packages/bowtie2/package.py +++ b/var/spack/repos/builtin/packages/bowtie2/package.py @@ -27,12 +27,20 @@ class Bowtie2(Package): - """Description""" + """Bowtie 2 is an ultrafast and memory-efficient tool for aligning + sequencing reads to long reference sequences""" homepage = "bowtie-bio.sourceforge.net/bowtie2/index.shtml" - version('2.2.5', '51fa97a862d248d7ee660efc1147c75f', - url="http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.5/bowtie2-2.2.5-source.zip") + version('2.3.1', 'b4efa22612e98e0c23de3d2c9f2f2478') + version('2.2.5', '51fa97a862d248d7ee660efc1147c75f') - patch('bowtie2-2.5.patch', when='@2.2.5', level=0) + depends_on('tbb', when='@2.3.1') + + patch('bowtie2-2.2.5.patch', when='@2.2.5', level=0) + patch('bowtie2-2.3.1.patch', when='@2.3.1', level=0) + + def url_for_version(self, version): + url="http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/{0}/bowtie2-{0}-source.zip" + return url.format(version) def install(self, spec, prefix): make() From ec3eabfc7a3634540d11d34bd06a31012974252f Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:36:12 -0700 Subject: [PATCH 0478/2394] Add package for BATS (#3611) Add package for the BASH Automated Testing System. --- .../repos/builtin/packages/bats/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/bats/package.py diff --git a/var/spack/repos/builtin/packages/bats/package.py b/var/spack/repos/builtin/packages/bats/package.py new file mode 100644 index 00000000000..e68dd7a48d9 --- /dev/null +++ b/var/spack/repos/builtin/packages/bats/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Bats(Package): + """Bats is a TAP-compliant testing framework for Bash.""" + + homepage = "https://github.com/sstephenson/bats" + url = "https://github.com/sstephenson/bats/archive/v0.4.0.tar.gz" + + version('0.4.0', 'aeeddc0b36b8321930bf96fce6ec41ee') + + def install(self, spec, prefix): + bash = which("bash") + bash('install.sh', prefix) From 83e661604df9efdabc1fc461f26a9c3f6ac4db1a Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:36:39 -0700 Subject: [PATCH 0479/2394] Add package for direnv (#3608) --- .../repos/builtin/packages/direnv/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/direnv/package.py diff --git a/var/spack/repos/builtin/packages/direnv/package.py b/var/spack/repos/builtin/packages/direnv/package.py new file mode 100644 index 00000000000..336ea9f9074 --- /dev/null +++ b/var/spack/repos/builtin/packages/direnv/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Direnv(Package): + """direnv is an environment switcher for the shell.""" + + homepage = "https://direnv.net/" + url = "https://github.com/direnv/direnv/archive/v2.11.3.tar.gz" + + version('2.11.3', '5b9728e2dabed232b4932849647fd6e5') + + depends_on('go', type='build') + + def install(self, spec, prefix): + make('install', "DESTDIR=%s" % prefix) From 18a4be3e56e565c7b3d07e4f80c28e8c69b552ad Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:37:10 -0700 Subject: [PATCH 0480/2394] Add packages for jq and ongiruma (#3607) jq is a commandline JSON processor. Oniguruma is a regexp library on which jq depends. --- .../repos/builtin/packages/jq/package.py | 36 +++++++++++++++++++ .../builtin/packages/oniguruma/package.py | 34 ++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 var/spack/repos/builtin/packages/jq/package.py create mode 100644 var/spack/repos/builtin/packages/oniguruma/package.py diff --git a/var/spack/repos/builtin/packages/jq/package.py b/var/spack/repos/builtin/packages/jq/package.py new file mode 100644 index 00000000000..b4ec09c7506 --- /dev/null +++ b/var/spack/repos/builtin/packages/jq/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Jq(AutotoolsPackage): + """jq is a lightweight and flexible command-line JSON processor.""" + + homepage = "https://stedolan.github.io/jq/" + url = "https://github.com/stedolan/jq/archive/jq-1.5.tar.gz" + + version('1.5', 'c8070bd6ec275404f77db3d2e568c9a3') + + depends_on('oniguruma') diff --git a/var/spack/repos/builtin/packages/oniguruma/package.py b/var/spack/repos/builtin/packages/oniguruma/package.py new file mode 100644 index 00000000000..8a5b8005b6e --- /dev/null +++ b/var/spack/repos/builtin/packages/oniguruma/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Oniguruma(AutotoolsPackage): + """Regular expression library.""" + + homepage = "https://github.com/kkos/oniguruma" + url = "https://github.com/kkos/oniguruma/releases/download/v6.1.3/onig-6.1.3.tar.gz" + + version('6.1.3', '2d105d352c3f852d662414f639e7e859') From 14194a137a927ce0fdbf33475e13a29e47d26eac Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:37:34 -0700 Subject: [PATCH 0481/2394] Add support for v1.9.9 (#3602) --- var/spack/repos/builtin/packages/ant/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/ant/package.py b/var/spack/repos/builtin/packages/ant/package.py index 19f03e1e536..5267b4ee0d8 100644 --- a/var/spack/repos/builtin/packages/ant/package.py +++ b/var/spack/repos/builtin/packages/ant/package.py @@ -36,6 +36,7 @@ class Ant(Package): # 1.10.0 requires newer Java, not yet tested.... # version('1.10.0', '2260301bb7734e34d8b96f1a5fd7979c') + version('1.9.9', '22c9d40dabafbec348aaada226581239') version('1.9.8', '16253d516d5c33c4af9ef8fafcf1004b') version('1.9.7', 'a2fd9458c76700b7be51ef12f07d4bb1') From 53b0d93a7a29121e9d24058bfe4b7ee3bd33f7ca Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:37:57 -0700 Subject: [PATCH 0482/2394] Add info for version 2.16 (#3601) --- var/spack/repos/builtin/packages/ack/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/ack/package.py b/var/spack/repos/builtin/packages/ack/package.py index 70249aebac4..dd6685a829e 100644 --- a/var/spack/repos/builtin/packages/ack/package.py +++ b/var/spack/repos/builtin/packages/ack/package.py @@ -35,6 +35,7 @@ class Ack(Package): homepage = "http://beyondgrep.com/" url = "http://beyondgrep.com/ack-2.14-single-file" + version('2.16', '7085b5a5c76fda43ff049410870c8535', expand=False) version('2.14', 'e74150a1609d28a70b450ef9cc2ed56b', expand=False) depends_on('perl') From f5bc42f2296ab66bed8c5ed64a98bc140b2c55af Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 28 Mar 2017 19:38:51 -0700 Subject: [PATCH 0483/2394] Add Blast+ package. (#3562) * Add Blast+ package. Adds support for NCBI's blast+@2.6.0. I'll be adding a few historical versions in the near future. It's a fairly direct transliteration of the [Homebrew Science recipe][hbs]. I skipped the mysql support. There is a problem with HDF5 support. Blast's configure script test program defines a macro 'HOST' to a string value and one of the HDF5 bits has an variable named 'HOST'. Fun things happen. I've disabled support for now. I've run very very basic tests. I'll get this out to my users and ensure that it works and fine tune the options and etc.... [hbs]: https://github.com/Homebrew/homebrew-science/blob/master/blast.rb * Flake8 fixes * Update w.t.r. mamelara's PR and cleanup Add paths to things in the --with-* config args Add add'l config flags from #3394. Update patch to no-op and add comment. Add add'l dependencies after studying `configure --help`. * Flake8 cleanup * Add support for blast+@2.2.30 Need to work around a configure bug. See https://github.com/Homebrew/homebrew-science/issues/2337#issuecomment-170011511. * Re-wrap comment, line length not a problem. I'd broken a comment across to line in a fit of flake8 induced fear. Adam pointed out that it's ok. * Remove explicit prefix config Remove explicit prefix config, the autotools package does it for us. --- .../blast-plus/blast-make-fix2.5.0.diff | 22 ++ .../builtin/packages/blast-plus/package.py | 207 ++++++++++++++++++ 2 files changed, 229 insertions(+) create mode 100644 var/spack/repos/builtin/packages/blast-plus/blast-make-fix2.5.0.diff create mode 100644 var/spack/repos/builtin/packages/blast-plus/package.py diff --git a/var/spack/repos/builtin/packages/blast-plus/blast-make-fix2.5.0.diff b/var/spack/repos/builtin/packages/blast-plus/blast-make-fix2.5.0.diff new file mode 100644 index 00000000000..5611a0e83be --- /dev/null +++ b/var/spack/repos/builtin/packages/blast-plus/blast-make-fix2.5.0.diff @@ -0,0 +1,22 @@ +--- ncbi-blast-2.5.0+-src/c++/src/build-system/Makefile.in.top 2014-11-12 17:41:55.000000000 +0100 ++++ MakeFile 2016-12-19 18:00:58.000000000 +0100 +@@ -1,4 +1,4 @@ +-# $Id: Makefile.in.top 451817 2014-11-12 16:41:55Z ucko $ ++# $Id$ + # Top-level meta-makefile that simplifies building even further. + + # include @builddir@/Makefile.mk +@@ -49,9 +49,10 @@ + for x in *.a; do \ + $(LN_S) "$$x" "`$(BASENAME) \"$$x\" .a`-static.a"; \ + done +- cd $(includedir0) && find * -name CVS -prune -o -print |\ +- cpio -pd $(pincludedir) +- $(INSTALL) -m 644 $(incdir)/* $(pincludedir) ++ #for d in $(includedir0) $(incdir); do \ ++ # cd $$d && find * -name .svn prune -o -print | \ ++ # cpio -pd $(pincludedir) ; \ ++ #done + ## set up appropriate build and status directories somewhere under $(libdir)? + + install-gbench: diff --git a/var/spack/repos/builtin/packages/blast-plus/package.py b/var/spack/repos/builtin/packages/blast-plus/package.py new file mode 100644 index 00000000000..02db14f4782 --- /dev/null +++ b/var/spack/repos/builtin/packages/blast-plus/package.py @@ -0,0 +1,207 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +# This is a based largely on the Homebrew science formula: +# https://github.com/Homebrew/homebrew-science/blob/master/blast.rb +# +# There s one tricky bit to be resolved: +# +# - HDF5 builds explode, blast's configure script tries to run a program that +# uses a variable called 'HOST' but some other bit defines a macro called +# HOST that's defined to a string. Hilarity ensues. +# +# +from spack import * + + +class BlastPlus(AutotoolsPackage): + """Basic Local Alignment Search Tool.""" + + + homepage = "http://blast.ncbi.nlm.nih.gov/" + url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.6.0/ncbi-blast-2.6.0+-src.tar.gz" + + def url_for_version(self, version): + url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/{0}/ncbi-blast-{0}+-src.tar.gz" + return url.format(version) + + version('2.6.0', 'c8ce8055b10c4d774d995f88c7cc6225') + version('2.2.30', 'f8e9a5eb368173142fe6867208b73715') + + # homebrew sez: Fixed upstream in future version > 2.6 + # But this bug sez that it will be fixed in 2.6 + # https://github.com/Homebrew/homebrew-science/pull/4740 + # The 2.6.0 src still matches the "before" bit of the patch + # so it's probably still "needed". + # On the other hand, the `find` command is broken and there + # aren't any .svn dirs in the tree, so I've updated their patch + # to just comment out the block. + patch('blast-make-fix2.5.0.diff', when="@2.5.0:2.6.0") + + # See https://github.com/Homebrew/homebrew-science/issues/2337#issuecomment-170011511 + @when('@:2.2.31') + def patch(self): + filter_file("2.95* | 2.96* | 3.* | 4.* )", + "2.95* | 2.96* | 3.* | 4.* | 5.* )", + "c++/src/build-system/configure", + string=True) + + # No... + # depends_on :mysql => :optional + + variant('static', default=False, + description='Build with static linkage') + variant('jpeg', default=True, + description='Build with jpeg support') + variant('png', default=True, + description='Build with png support') + variant('freetype', default=True, + description='Build with freetype support') + # variant('hdf5', default=True, + # description='Build with hdf5 support') + variant('gnutls', default=True, + description='Build with gnutls support') + variant('openssl', default=True, + description='Build with openssl support') + variant('zlib', default=True, + description='Build with zlib support') + variant('bzip2', default=True, + description='Build with bzip2 support') + variant('lzo', default=True, + description='Build with lzo support') + variant('pcre', default=True, + description='Build with pcre support') + + depends_on('jpeg', when='+jpeg') + depends_on('libpng', when='+png') + depends_on('freetype', when='+freetype') + # depends_on('hdf5', when='+hdf5') + depends_on('gnutls', when='+gnutls') + depends_on('openssl', when='+openssl') + depends_on('zlib', when='+zlib') + depends_on('bzip2', when='+bzip2') + depends_on('lzo', when='+lzo') + depends_on('pcre', when='+pcre') + + depends_on('python') + + configure_directory = 'c++' + + def configure_args(self): + spec = self.spec + + config_args = [ + '--with-bin-release', + '--without-debug', + '--with-mt', + '--with-64', + '--without-boost', + ] + + if '+static' in spec: + config_args.append('--with-static') + # FIXME + # args << "--with-static-exe" unless OS.linux? + # args << "--with-dll" if build.with? "dll" + else: + config_args.extend([ + '--with-dll', + '--without-static', + '--without-static-exe' + ]) + + if '+jpeg' in spec: + config_args.append( + '--with-jpeg={0}'.format(self.spec['jpeg'].prefix) + ) + else: + config_args.append('--without-jpeg') + + if '+png' in spec: + config_args.append( + '--with-png={0}'.format(self.spec['libpng'].prefix) + ) + else: + config_args.append('--without-png') + + if '+freetype' in spec: + config_args.append( + '--with-freetype={0}'.format(self.spec['freetype'].prefix) + ) + else: + config_args.append('--without-freetype') + + config_args.append('--without-hdf5') + # if '+hdf5' in spec: + # # FIXME + # config_args.append( + # '--with-hdf5={0}'.format(self.spec['hdf5'].prefix) + # ) + # else: + # config_args.append('--without-hdf5') + + if '+zlib' in spec: + config_args.append( + '--with-z={0}'.format(self.spec['zlib'].prefix) + ) + else: + config_args.append('--without-z') + + if '+bzip2' in spec: + config_args.append( + '--with-bz2={0}'.format(self.spec['bzip2'].prefix) + ) + else: + config_args.append('--without-bz2') + + if '+lzo' in spec: + config_args.append( + '--with-lzo={0}'.format(self.spec['lzo'].prefix) + ) + else: + config_args.append('--without-lzo') + + if '+gnutls' in spec: + config_args.append( + '--with-gnutls={0}'.format(self.spec['gnutls'].prefix) + ) + else: + config_args.append('--without-gnutls') + + if '+openssl' in spec: + config_args.append( + '--with-openssl={0}'.format(self.spec['openssl'].prefix) + ) + else: + config_args.append('--without-openssl') + + if '+pcre' in spec: + config_args.append( + '--with-pcre={0}'.format(self.spec['pcre'].prefix) + ) + else: + config_args.append('--without-pcre') + + return config_args From 754be1b275d3109893008832b2fe5d08f0cb76cd Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 29 Mar 2017 10:55:02 +0200 Subject: [PATCH 0484/2394] Add version 3.5.9 to package gnutls (#3616) --- .../repos/builtin/packages/gnutls/package.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index 06d784c8e08..24d50a8a564 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -37,10 +37,22 @@ class Gnutls(AutotoolsPackage): homepage = "http://www.gnutls.org" url = "http://www.ring.gr.jp/pub/net/gnupg/gnutls/v3.3/gnutls-3.3.9.tar.xz" + version('3.5.9', '0ab25eb6a1509345dd085bc21a387951') version('3.3.9', 'ff61b77e39d09f1140ab5a9cf52c58b6') - # configure sez: Note that this version of gnutls doesn't support + # configure sez: Note that version 3.3.9 of gnutls doesn't support # nettle 3.0. - depends_on("nettle@:2.9") + depends_on("nettle@:2.9", when='@3.3.9') + depends_on("nettle", when='@3.5:') + depends_on("zlib", when='@3.5:') build_directory = 'spack-build' + + def configure_args(self): + args = [] + if self.spec.satisfies('@3.5:'): + # use shipped libraries, might be turned into variants + args.append('--with-included-libtasn1') + args.append('--with-included-unistring') + args.append('--without-p11-kit') # p11-kit@0.23.1: ... + return args From 5ba4fce42892634213bede09759bbca1cd56e346 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 29 Mar 2017 11:52:59 +0200 Subject: [PATCH 0485/2394] add package py-brian2 (#3617) --- .../builtin/packages/py-brian2/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-brian2/package.py diff --git a/var/spack/repos/builtin/packages/py-brian2/package.py b/var/spack/repos/builtin/packages/py-brian2/package.py new file mode 100644 index 00000000000..28d10054323 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-brian2/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyBrian2(PythonPackage): + """A clock-driven simulator for spiking neural networks""" + + homepage = "http://www.briansimulator.org" + url = "https://pypi.io/packages/source/B/Brian2/Brian2-2.0.1.tar.gz" + + version('2.0.1', 'df5990e9a71f7344887bc02f54dfd0f0') + version('2.0rc3', '3100c5e4eb9eb83a06ff0413a7d43152') + + variant('docs', default=False) + + # depends on py-setuptools@6: for windows, if spack targets windows, + # this will need to be added here + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.8.2:', type=('build', 'run')) + depends_on('py-sympy@0.7.6:', type=('build', 'run')) + depends_on('py-pyparsing', type=('build', 'run')) + depends_on('py-jinja2@2.7:', type=('build', 'run')) + depends_on('py-cpuinfo@0.1.6:', type=('build', 'run')) + + # depends_on('py-nosetests@1.0:', type=('build', 'run')) # extra test + depends_on('py-nosetests@1.0:', type=('build', 'run'), when='+docs') + depends_on('py-sphinx@1.4.2:', type=('build', 'run'), when='+docs') From 441170f3168fda01c9e6ff4e8c2e1eed66a52b05 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 29 Mar 2017 11:54:09 +0200 Subject: [PATCH 0486/2394] add package py-mongo (#3619) --- .../builtin/packages/py-mongo/package.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-mongo/package.py diff --git a/var/spack/repos/builtin/packages/py-mongo/package.py b/var/spack/repos/builtin/packages/py-mongo/package.py new file mode 100644 index 00000000000..a0dd10720c1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-mongo/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyMongo(PythonPackage): + """Python driver for MongoDB """ + + homepage = "http://github.com/mongodb/mongo-python-driver" + url = "https://pypi.io/packages/source/p/pymongo/pymongo-3.3.0.tar.gz" + + version('3.3.0', '42cd12a5014fb7d3e1987ca04f5c651f') From 46251eb559d2eb818fbfca05fb7ca0632a6534e1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 29 Mar 2017 11:13:23 -0500 Subject: [PATCH 0487/2394] Add abipy package and dependencies (#3352) * Add abipy package and dependencies * Add first official release of py-abipy * Ignore files from dependencies during activation --- .../builtin/packages/py-abipy/package.py | 77 +++++++++++++++++++ .../packages/py-apscheduler/package.py | 41 ++++++++++ .../repos/builtin/packages/py-cdo/package.py | 2 +- .../builtin/packages/py-html2text/package.py | 36 +++++++++ .../builtin/packages/py-monty/package.py | 37 +++++++++ .../builtin/packages/py-netcdf4/package.py | 43 +++++++++++ .../builtin/packages/py-palettable/package.py | 36 +++++++++ .../packages/py-pydispatcher/package.py | 36 +++++++++ .../builtin/packages/py-pymatgen/package.py | 54 +++++++++++++ .../repos/builtin/packages/py-pytz/package.py | 12 +-- .../builtin/packages/py-seaborn/package.py | 46 +++++++++++ .../{py-netcdf => py-spglib}/package.py | 16 ++-- .../builtin/packages/py-tzlocal/package.py | 38 +++++++++ 13 files changed, 459 insertions(+), 15 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-abipy/package.py create mode 100644 var/spack/repos/builtin/packages/py-apscheduler/package.py create mode 100644 var/spack/repos/builtin/packages/py-html2text/package.py create mode 100644 var/spack/repos/builtin/packages/py-monty/package.py create mode 100644 var/spack/repos/builtin/packages/py-netcdf4/package.py create mode 100644 var/spack/repos/builtin/packages/py-palettable/package.py create mode 100644 var/spack/repos/builtin/packages/py-pydispatcher/package.py create mode 100644 var/spack/repos/builtin/packages/py-pymatgen/package.py create mode 100644 var/spack/repos/builtin/packages/py-seaborn/package.py rename var/spack/repos/builtin/packages/{py-netcdf => py-spglib}/package.py (76%) create mode 100644 var/spack/repos/builtin/packages/py-tzlocal/package.py diff --git a/var/spack/repos/builtin/packages/py-abipy/package.py b/var/spack/repos/builtin/packages/py-abipy/package.py new file mode 100644 index 00000000000..d113512f50f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-abipy/package.py @@ -0,0 +1,77 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyAbipy(PythonPackage): + """Python package to automate ABINIT calculations and analyze + the results.""" + + homepage = "https://github.com/abinit/abipy" + url = "https://pypi.io/packages/source/a/abipy/abipy-0.2.0.tar.gz" + + version('0.2.0', 'af9bc5cf7d5ca1a56ff73e2a65c5bcbd') + + variant('gui', default=False, description='Build the GUI') + variant('ipython', default=False, description='Build IPython support') + + extends('python', ignore='bin/(feff_.*|gaussian_analyzer|get_environment|html2text|nc3tonc4|nc4tonc3|ncinfo|pmg|pydii|tabulate|tqdm)') + + depends_on('python@2.7:') + + depends_on('py-setuptools', type='build') + depends_on('py-cython', type='build') + + depends_on('py-six', type=('build', 'run')) + depends_on('py-prettytable', type=('build', 'run')) + depends_on('py-tabulate', type=('build', 'run')) + depends_on('py-apscheduler@2.1.0', type=('build', 'run')) + depends_on('py-pydispatcher@2.0.5:', type=('build', 'run')) + depends_on('py-tqdm', type=('build', 'run')) + depends_on('py-html2text', type=('build', 'run')) + depends_on('py-pyyaml@3.11:', type=('build', 'run')) + depends_on('py-pandas', type=('build', 'run')) + depends_on('py-numpy@1.9:', type=('build', 'run')) + depends_on('py-scipy@0.14:', type=('build', 'run')) + depends_on('py-spglib', type=('build', 'run')) + depends_on('py-pymatgen@4.7.2:', type=('build', 'run')) + depends_on('py-netcdf4', type=('build', 'run')) + depends_on('py-matplotlib@1.5:', type=('build', 'run')) + depends_on('py-seaborn', type=('build', 'run')) + + depends_on('py-wxpython', type=('build', 'run'), when='+gui') + depends_on('py-wxmplot', type=('build', 'run'), when='+gui') + + depends_on('py-ipython', type=('build', 'run'), when='+ipython') + depends_on('py-jupyter', type=('build', 'run'), when='+ipython') + depends_on('py-nbformat', type=('build', 'run'), when='+ipython') + + def build_args(self, spec, prefix): + args = [] + + if '+ipython' in spec: + args.append('--with-ipython') + + return args diff --git a/var/spack/repos/builtin/packages/py-apscheduler/package.py b/var/spack/repos/builtin/packages/py-apscheduler/package.py new file mode 100644 index 00000000000..96b3e0d474e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-apscheduler/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyApscheduler(PythonPackage): + """In-process task scheduler with Cron-like capabilities.""" + + homepage = "https://github.com/agronholm/apscheduler" + url = "https://pypi.io/packages/source/A/APScheduler/APScheduler-3.3.1.tar.gz" + + version('3.3.1', '6342b3b78b41920a8aa54fd3cd4a299d') + version('2.1.0', 'b837d23822fc46651862dd2186ec361a') + + depends_on('py-setuptools@0.7:', type='build') + + depends_on('py-six@1.4.0:', type=('build', 'run')) + depends_on('py-pytz', type=('build', 'run')) + depends_on('py-tzlocal@1.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-cdo/package.py b/var/spack/repos/builtin/packages/py-cdo/package.py index 5eb8f414a86..3f1306a183c 100644 --- a/var/spack/repos/builtin/packages/py-cdo/package.py +++ b/var/spack/repos/builtin/packages/py-cdo/package.py @@ -39,4 +39,4 @@ class PyCdo(PythonPackage): depends_on('py-setuptools', type='build') depends_on('py-scipy', type=('build', 'run')) - depends_on('py-netcdf', type=('build', 'run')) + depends_on('py-netcdf4', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-html2text/package.py b/var/spack/repos/builtin/packages/py-html2text/package.py new file mode 100644 index 00000000000..32341f328a5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-html2text/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyHtml2text(PythonPackage): + """Turn HTML into equivalent Markdown-structured text.""" + + homepage = "https://github.com/Alir3z4/html2text/" + url = "https://pypi.io/packages/source/h/html2text/html2text-2016.9.19.tar.gz" + + version('2016.9.19', 'd6b07e32ed21f186496f012691e02dd5') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-monty/package.py b/var/spack/repos/builtin/packages/py-monty/package.py new file mode 100644 index 00000000000..19057d51d39 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-monty/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyMonty(PythonPackage): + """Monty is the missing complement to Python.""" + + homepage = "https://github.com/materialsvirtuallab/monty" + url = "https://pypi.io/packages/source/m/monty/monty-0.9.6.tar.gz" + + version('0.9.6', '406ea69fdd112feacfdf208624d56903') + + depends_on('py-setuptools', type='build') + depends_on('py-six', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-netcdf4/package.py b/var/spack/repos/builtin/packages/py-netcdf4/package.py new file mode 100644 index 00000000000..e49cc5410b8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-netcdf4/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyNetcdf4(PythonPackage): + """Python interface to the netCDF Library.""" + + homepage = "https://github.com/Unidata/netcdf4-python" + url = "https://pypi.io/packages/source/n/netCDF4/netCDF4-1.2.7.tar.gz" + + version('1.2.7', '77b357d78f9658dd973dee901f6d86f8') + version('1.2.3.1', '24fc0101c7c441709c230e76af611d53') + + depends_on('py-setuptools', type='build') + depends_on('py-cython@0.19:', type='build') + + depends_on('py-numpy@1.7:', type=('build', 'run')) + + depends_on('netcdf') + depends_on('hdf5@1.8.0:') diff --git a/var/spack/repos/builtin/packages/py-palettable/package.py b/var/spack/repos/builtin/packages/py-palettable/package.py new file mode 100644 index 00000000000..b432d4ee288 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-palettable/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPalettable(PythonPackage): + """Color palettes for Python.""" + + homepage = "https://jiffyclub.github.io/palettable/" + url = "https://pypi.io/packages/source/p/palettable/palettable-3.0.0.tar.gz" + + version('3.0.0', '6e430319fe01386c81dbbc62534e3cc4') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pydispatcher/package.py b/var/spack/repos/builtin/packages/py-pydispatcher/package.py new file mode 100644 index 00000000000..198f6319aca --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pydispatcher/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPydispatcher(PythonPackage): + """Multi-producer-multi-consumer signal dispatching mechanism.""" + + homepage = "http://pydispatcher.sourceforge.net/" + url = "https://pypi.io/packages/source/P/PyDispatcher/PyDispatcher-2.0.5.tar.gz" + + version('2.0.5', '1b9c2ca33580c2770577add7130b0b28') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pymatgen/package.py b/var/spack/repos/builtin/packages/py-pymatgen/package.py new file mode 100644 index 00000000000..0ea4907b1b1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pymatgen/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPymatgen(PythonPackage): + """Python Materials Genomics is a robust materials analysis code that + defines core object representations for structures and molecules with + support for many electronic structure codes. It is currently the core + analysis code powering the Materials Project.""" + + homepage = "http://www.pymatgen.org/" + url = "https://pypi.io/packages/source/p/pymatgen/pymatgen-4.7.2.tar.gz" + + version('4.7.2', '9c3a6e8608671c216e4ef89778646fd6') + version('4.6.2', '508f77fdc3e783587348e93e4dfed1b8') + + extends('python', ignore='bin/tabulate') + + depends_on('py-setuptools@18.0:', type='build') + + depends_on('py-numpy@1.9:', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) + depends_on('py-requests', type=('build', 'run')) + depends_on('py-pyyaml@3.11:', type=('build', 'run')) + depends_on('py-monty@0.9.6:', type=('build', 'run')) + depends_on('py-scipy@0.14:', type=('build', 'run')) + depends_on('py-pydispatcher@2.0.5:', type=('build', 'run')) + depends_on('py-tabulate', type=('build', 'run')) + depends_on('py-spglib@1.9.8.7:', type=('build', 'run')) + depends_on('py-matplotlib@1.5:', type=('build', 'run')) + depends_on('py-palettable@2.1.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pytz/package.py b/var/spack/repos/builtin/packages/py-pytz/package.py index 7a905f9f989..db97520fba9 100644 --- a/var/spack/repos/builtin/packages/py-pytz/package.py +++ b/var/spack/repos/builtin/packages/py-pytz/package.py @@ -29,12 +29,12 @@ class PyPytz(PythonPackage): """World timezone definitions, modern and historical.""" homepage = "https://pypi.python.org/pypi/pytz" - url = "https://pypi.python.org/packages/source/p/pytz/pytz-2014.10.tar.gz" + url = "https://pypi.io/packages/source/p/pytz/pytz-2016.10.tar.gz" - version('2016.6.1', 'b6c28a3b968bc1d8badfb61b93874e03', - url="https://pypi.python.org/packages/5d/8e/6635d8f3f9f48c03bb925fab543383089858271f9cfd1216b83247e8df94/pytz-2016.6.1.tar.gz") - version('2014.10', 'eb1cb941a20c5b751352c52486aa1dd7') - version('2015.4', '417a47b1c432d90333e42084a605d3d8') - version('2016.3', 'abae92c3301b27bd8a9f56b14f52cb29') + version('2016.10', 'cc9f16ba436efabdcef3c4d32ae4919c') + version('2016.6.1', 'b6c28a3b968bc1d8badfb61b93874e03') + version('2014.10', 'eb1cb941a20c5b751352c52486aa1dd7') + version('2015.4', '417a47b1c432d90333e42084a605d3d8') + version('2016.3', 'abae92c3301b27bd8a9f56b14f52cb29') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-seaborn/package.py b/var/spack/repos/builtin/packages/py-seaborn/package.py new file mode 100644 index 00000000000..3171ed2e21c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-seaborn/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySeaborn(PythonPackage): + """Seaborn: statistical data visualization. + + Seaborn is a library for making attractive and informative statistical + graphics in Python. It is built on top of matplotlib and tightly + integrated with the PyData stack, including support for numpy and pandas + data structures and statistical routines from scipy and statsmodels.""" + + homepage = "http://seaborn.pydata.org/" + url = "https://pypi.io/packages/source/s/seaborn/seaborn-0.7.1.tar.gz" + + version('0.7.1', 'ef07e29e0f8a1f2726abe506c1a36e93') + + depends_on('py-setuptools', type='build') + + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-matplotlib', type=('build', 'run')) + depends_on('py-pandas', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-netcdf/package.py b/var/spack/repos/builtin/packages/py-spglib/package.py similarity index 76% rename from var/spack/repos/builtin/packages/py-netcdf/package.py rename to var/spack/repos/builtin/packages/py-spglib/package.py index 2d35320ca06..19380b745b1 100644 --- a/var/spack/repos/builtin/packages/py-netcdf/package.py +++ b/var/spack/repos/builtin/packages/py-spglib/package.py @@ -25,14 +25,14 @@ from spack import * -class PyNetcdf(PythonPackage): - """Python interface to the netCDF Library.""" - homepage = "http://unidata.github.io/netcdf4-python" - url = "https://github.com/Unidata/netcdf4-python/tarball/v1.2.3.1rel" +class PySpglib(PythonPackage): + """Python bindings for C library for finding and handling + crystal symmetries.""" - version('1.2.3.1', '4fc4320d4f2a77b894ebf8da1c9895af') + homepage = "http://atztogo.github.io/spglib/" + url = "https://pypi.io/packages/source/s/spglib/spglib-1.9.9.18.tar.gz" + version('1.9.9.18', 'b8b46268d3aeada7b9b201b11882548f') + + depends_on('py-setuptools@18.0:', type='build') depends_on('py-numpy', type=('build', 'run')) - depends_on('py-cython', type=('build', 'run')) - depends_on('py-setuptools', type=('build', 'run')) - depends_on('netcdf') diff --git a/var/spack/repos/builtin/packages/py-tzlocal/package.py b/var/spack/repos/builtin/packages/py-tzlocal/package.py new file mode 100644 index 00000000000..d17fd62a526 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tzlocal/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyTzlocal(PythonPackage): + """tzinfo object for the local timezone.""" + + homepage = "https://github.com/regebro/tzlocal" + url = "https://pypi.io/packages/source/t/tzlocal/tzlocal-1.3.tar.gz" + + version('1.3', '3cb544b3975b59f91a793850a072d4a8') + + depends_on('py-setuptools', type='build') + + depends_on('py-pytz', type=('build', 'run')) From 259cc022609d1377b95f05718a9920e5de12d89d Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 29 Mar 2017 12:20:37 -0700 Subject: [PATCH 0488/2394] htslib depends_on version must match samtools (#3625) --- var/spack/repos/builtin/packages/samtools/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/samtools/package.py b/var/spack/repos/builtin/packages/samtools/package.py index 0793f8d9a1e..a6167250686 100644 --- a/var/spack/repos/builtin/packages/samtools/package.py +++ b/var/spack/repos/builtin/packages/samtools/package.py @@ -38,7 +38,9 @@ class Samtools(Package): version('1.2', '988ec4c3058a6ceda36503eebecd4122') depends_on("ncurses") - depends_on("htslib", when='@1.3.1:') # htslib became standalone + # htslib became standalone @1.3.1, must use corresponding version + depends_on("htslib@1.4", when='@1.4') + depends_on("htslib@1.3.1", when='@1.3.1') depends_on('zlib', when='@1.2') # needed for builtin htslib def install(self, spec, prefix): From 8d87c01f6218c90469cb28dbbb79e154a6fcfaa9 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 29 Mar 2017 21:20:58 +0200 Subject: [PATCH 0489/2394] Add py-pymongo dependencies (#3624) * add package py-mongo * add dependencies --- var/spack/repos/builtin/packages/py-mongo/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-mongo/package.py b/var/spack/repos/builtin/packages/py-mongo/package.py index a0dd10720c1..e5f1debbd0a 100644 --- a/var/spack/repos/builtin/packages/py-mongo/package.py +++ b/var/spack/repos/builtin/packages/py-mongo/package.py @@ -32,3 +32,7 @@ class PyMongo(PythonPackage): url = "https://pypi.io/packages/source/p/pymongo/pymongo-3.3.0.tar.gz" version('3.3.0', '42cd12a5014fb7d3e1987ca04f5c651f') + + depends_on('python@2.6:2.8,3.3:') + + depends_on('setuptools', type='build') From 8e99c97d21602957aa6072dc0077fd0f68b379ec Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 29 Mar 2017 21:21:13 +0200 Subject: [PATCH 0490/2394] Add package py-pynn (#3622) * add package py-pynn * fix docstring * fix dependency mess * add python dependency --- .../repos/builtin/packages/py-pynn/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pynn/package.py diff --git a/var/spack/repos/builtin/packages/py-pynn/package.py b/var/spack/repos/builtin/packages/py-pynn/package.py new file mode 100644 index 00000000000..2e7aae6ec99 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pynn/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPynn(PythonPackage): + """A Python package for simulator-independent specification of neuronal + network models + """ + + homepage = "http://neuralensemble.org/PyNN/" + url = "https://pypi.io/packages/source/P/PyNN/PyNN-0.8.3.tar.gz" + + version('0.8.3', '28c63f898093806a57198e9271ed7b82') + version('0.8beta', git='https://github.com/NeuralEnsemble/PyNN.git', + commit='ffb0cb1661f2b0f2778db8f71865978fe7a7a6a4') + version('0.8.1', '7fb165ed5af35a115cb9c60991645ae6') + version('0.7.5', 'd8280544e4c9b34b40fd372b16342841') + + depends_on('python@2.6:2.8,3.3:') + depends_on('py-lazyarray@0.2.9:', type=('build', 'run')) + depends_on('py-neo@:0.3', type=('build', 'run')) + depends_on('py-numpy@:1.5', type=('build', 'run')) + depends_on('py-jinja2@:2.6', type=('build', 'run')) + depends_on('py-quantities@:0.10', type=('build', 'run')) + depends_on('py-lazyarray@:0.2.9', type=('build', 'run')) + depends_on('py-neo@:0.3', type=('build', 'run')) + depends_on('py-numpy@1.5:', type=('build', 'run')) From b73f1e557cdc5e412d38b215575674e02b0b5d02 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 29 Mar 2017 21:21:41 +0200 Subject: [PATCH 0491/2394] add package py-pympler (#3621) * add package py-pympler * add python@2.5: dependency --- .../builtin/packages/py-pympler/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pympler/package.py diff --git a/var/spack/repos/builtin/packages/py-pympler/package.py b/var/spack/repos/builtin/packages/py-pympler/package.py new file mode 100644 index 00000000000..51c77f117db --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pympler/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPympler(PythonPackage): + """Development tool to measure, monitor and analyze the memory behavior + of Python objects in a running Python application. + """ + + homepage = "https://github.com/pympler/pympler" + url = "https://pypi.io/packages/source/P/Pympler/Pympler-0.4.3.tar.gz" + + version('0.4.3', 'bbb4239126e9c99e2effc83b02bf8755') + version('0.4.2', '6bdfd913ad4c94036e8a2b358e49abd7') + version('0.4.1', '2d54032a6da91ff438f48d5f36b719a6') + version('0.4', '68e4a8aa4a268996fa6a321b664918af') + version('0.3.1', '906ce437f46fb30991007671a59d4319') + + depends_on('python@2.5:') From 28db55b1a74f30bcd01a1841228e1f4694d9d8f1 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 29 Mar 2017 21:23:24 +0200 Subject: [PATCH 0492/2394] Allow py-py2cairo to be built with cairo~X (#3620) --- var/spack/repos/builtin/packages/py-py2cairo/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-py2cairo/package.py b/var/spack/repos/builtin/packages/py-py2cairo/package.py index bb404c61f01..5626784e341 100644 --- a/var/spack/repos/builtin/packages/py-py2cairo/package.py +++ b/var/spack/repos/builtin/packages/py-py2cairo/package.py @@ -35,7 +35,7 @@ class PyPy2cairo(Package): extends('python') - depends_on('cairo+X') + depends_on('cairo') depends_on('pixman') def install(self, spec, prefix): From 64a80ba822dc44fbf6535b614ef83aa9ed9b043f Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 29 Mar 2017 21:23:53 +0200 Subject: [PATCH 0493/2394] add package py-bokeh (#3618) * add package py-bokeh * remove setuptools dependency * add missing dependencies --- .../builtin/packages/py-bokeh/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-bokeh/package.py diff --git a/var/spack/repos/builtin/packages/py-bokeh/package.py b/var/spack/repos/builtin/packages/py-bokeh/package.py new file mode 100644 index 00000000000..2394b376d50 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-bokeh/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyBokeh(PythonPackage): + """Statistical and novel interactive HTML plots for Python""" + + homepage = "http://github.com/bokeh/bokeh" + url = "https://pypi.io/packages/source/b/bokeh/bokeh-0.12.2.tar.gz" + + version('0.12.2', '2d1621bffe6e2ab9d42efbf733861c4f') + + depends_on('python@2.6:') + depends_on('py-six@1.5.2:', type=('build', 'run')) + depends_on('py-requests@1.2.3:', type=('build', 'run')) + depends_on('py-pyyaml@3.10:', type=('build', 'run')) + depends_on('py-dateutil@2.1:', type=('build', 'run')) + depends_on('py-jinja2@2.7:', type=('build', 'run')) + depends_on('py-numpy@1.7.1:', type=('build', 'run')) + depends_on('py-tornado@4.3:', type=('build', 'run')) + depends_on('py-futures@3.0.3:', type=('build', 'run'), + when='^python@2.7:2.8') From 782882c2a99815736bfd6ade56695fac499e4d67 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 29 Mar 2017 22:24:18 +0300 Subject: [PATCH 0494/2394] petsc: a workaround for macOS Clang 8.1.0 and XCode 8.3 (#3615) --- .../packages/petsc/macos-clang-8.1.0.diff | 18 ++++++++++++++++++ .../repos/builtin/packages/petsc/package.py | 7 +++++++ 2 files changed, 25 insertions(+) create mode 100644 var/spack/repos/builtin/packages/petsc/macos-clang-8.1.0.diff diff --git a/var/spack/repos/builtin/packages/petsc/macos-clang-8.1.0.diff b/var/spack/repos/builtin/packages/petsc/macos-clang-8.1.0.diff new file mode 100644 index 00000000000..b4384d3ac38 --- /dev/null +++ b/var/spack/repos/builtin/packages/petsc/macos-clang-8.1.0.diff @@ -0,0 +1,18 @@ +diff --git a/config/BuildSystem/config/libraries.py b/config/BuildSystem/config/libraries.py +index 0af92f0..8644b55 100644 +--- a/config/BuildSystem/config/libraries.py ++++ b/config/BuildSystem/config/libraries.py +@@ -50,12 +50,7 @@ class Configure(config.base.Configure): + flagName = self.language[-1]+'SharedLinkerFlag' + flagSubst = self.language[-1].upper()+'_LINKER_SLFLAG' + dirname = os.path.dirname(library).replace('\\ ',' ').replace(' ', '\\ ').replace('\\(','(').replace('(', '\\(').replace('\\)',')').replace(')', '\\)') +- if hasattr(self.setCompilers, flagName) and not getattr(self.setCompilers, flagName) is None: +- return [getattr(self.setCompilers, flagName)+dirname,'-L'+dirname,'-l'+name] +- if flagSubst in self.argDB: +- return [self.argDB[flagSubst]+dirname,'-L'+dirname,'-l'+name] +- else: +- return ['-L'+dirname,' -l'+name] ++ return ['-L'+dirname,' -l'+name] + else: + return ['-l'+name] + if os.path.splitext(library)[1] == '.so': diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 3e670cba634..b63172135e8 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -74,6 +74,13 @@ class Petsc(Package): variant('int64', default=False, description='Compile with 64bit indices') + # temporary workaround Clang 8.1.0 with XCode 8.3 on macOS, see + # https://bitbucket.org/petsc/petsc/commits/4f290403fdd060d09d5cb07345cbfd52670e3cbc + # the patch is an adaptation of the original commit to 3.7.5 + if sys.platform == "darwin": + patch('macos-clang-8.1.0.diff', + when='@3.7.5%clang@8.1.0:') + # Virtual dependencies # Git repository needs sowing to build Fortran interface depends_on('sowing', when='@develop') From 6138350c9e26b85b267beffe05401263f023d68f Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 29 Mar 2017 12:24:52 -0700 Subject: [PATCH 0495/2394] Add package for httpie (#3609) * Add package for httpie * Remove wayward FIXME and flake8 cleanup * Update dependencies, address PR feedback Fine tune dependencies (version constraints). Add missing dependency. Make SOCKS support a variant. * Flake8 cleanup --- .../repos/builtin/packages/httpie/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/httpie/package.py diff --git a/var/spack/repos/builtin/packages/httpie/package.py b/var/spack/repos/builtin/packages/httpie/package.py new file mode 100644 index 00000000000..abd013c1bd5 --- /dev/null +++ b/var/spack/repos/builtin/packages/httpie/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Httpie(PythonPackage): + """Modern command line HTTP client.""" + + homepage = "https://httpie.org/" + url = "https://pypi.io/packages/source/h/httpie/httpie-0.9.8.tar.gz" + + version('0.9.8', 'e0d1af07d0959a2e081e7954797ce260') + + variant('socks', default=True, + description='Enable SOCKS proxy support') + + depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-pygments@2.1.3:', type=('build', 'run')) + depends_on('py-requests@2.11.0:', type=('build', 'run')) + depends_on('py-pysocks', type=('build', 'run'), when="+socks") + depends_on('py-argparse@1.2.1:', type=('build', 'run'), when='^python@:2.6,3.0:3.1') From 4cd4a2da46070605399b8278d8e5fd6624657d30 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 29 Mar 2017 12:25:09 -0700 Subject: [PATCH 0496/2394] Add package for snakemake (#3605) * Add package for snakemake * Flake8 cleanups * Add package for py-wrapt * Address PR feedback Switch to pypi URL. Tighten Python3 dependency spec. Add missing dependencies (wrapt, requests). - add package for wrapt. --- .../builtin/packages/py-wrapt/package.py | 34 ++++++++++++++++ .../builtin/packages/snakemake/package.py | 39 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-wrapt/package.py create mode 100644 var/spack/repos/builtin/packages/snakemake/package.py diff --git a/var/spack/repos/builtin/packages/py-wrapt/package.py b/var/spack/repos/builtin/packages/py-wrapt/package.py new file mode 100644 index 00000000000..65d0f3fc11b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-wrapt/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyWrapt(PythonPackage): + """Module for decorators, wrappers and monkey patching.""" + + homepage = "https://github.com/GrahamDumpleton/wrapt" + url = "https://pypi.io/packages/source/w/wrapt/wrapt-1.10.10.tar.gz" + + version('1.10.10', '97365e906afa8b431f266866ec4e2e18') diff --git a/var/spack/repos/builtin/packages/snakemake/package.py b/var/spack/repos/builtin/packages/snakemake/package.py new file mode 100644 index 00000000000..0970b88f9cd --- /dev/null +++ b/var/spack/repos/builtin/packages/snakemake/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Snakemake(PythonPackage): + """Snakemake is an MIT-licensed workflow management system.""" + + homepage = "https://snakemake.readthedocs.io/en/stable/" + url = "https://pypi.io/packages/source/s/snakemake/snakemake-3.11.2.tar.gz" + + version('3.11.2', '6bf834526078522b38d271fdf73e6b22') + + depends_on('python@3.3:') + depends_on('py-requests', type=('build', 'run')) + depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-wrapt', type=('build', 'run')) From 68415f0fe5b831f8b68aa7eec2fcf0ae8c445701 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 29 Mar 2017 16:59:54 -0700 Subject: [PATCH 0497/2394] Concretization problem breaks httpie dependency (#3629) * Concretization problem breaks httpie dependency Concretization problem breaks this. Unconditional for now... https://github.com/LLNL/spack/issues/3628 * Flake8 cleanups --- var/spack/repos/builtin/packages/httpie/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/httpie/package.py b/var/spack/repos/builtin/packages/httpie/package.py index abd013c1bd5..0981dc2d3d8 100644 --- a/var/spack/repos/builtin/packages/httpie/package.py +++ b/var/spack/repos/builtin/packages/httpie/package.py @@ -40,4 +40,8 @@ class Httpie(PythonPackage): depends_on('py-pygments@2.1.3:', type=('build', 'run')) depends_on('py-requests@2.11.0:', type=('build', 'run')) depends_on('py-pysocks', type=('build', 'run'), when="+socks") - depends_on('py-argparse@1.2.1:', type=('build', 'run'), when='^python@:2.6,3.0:3.1') + # Concretization problem breaks this. Unconditional for now... + # https://github.com/LLNL/spack/issues/3628 + # depends_on('py-argparse@1.2.1:', type=('build', 'run'), + # when='^python@:2.6,3.0:3.1') + depends_on('py-argparse@1.2.1:', type=('build', 'run')) From da6faa086a4511643652821c708858d235e6b72e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 30 Mar 2017 02:16:56 -0500 Subject: [PATCH 0498/2394] Fix url fetching for GnuTLS (#3631) --- var/spack/repos/builtin/packages/gnutls/package.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index 24d50a8a564..46fee8d2607 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -35,19 +35,23 @@ class Gnutls(AutotoolsPackage): with focus on security and interoperability.""" homepage = "http://www.gnutls.org" - url = "http://www.ring.gr.jp/pub/net/gnupg/gnutls/v3.3/gnutls-3.3.9.tar.xz" + url = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.10.tar.xz" - version('3.5.9', '0ab25eb6a1509345dd085bc21a387951') - version('3.3.9', 'ff61b77e39d09f1140ab5a9cf52c58b6') + version('3.5.10', '336c03a71ba90184ffd0388075dde504') + version('3.5.9', '0ab25eb6a1509345dd085bc21a387951') + version('3.3.9', 'ff61b77e39d09f1140ab5a9cf52c58b6') - # configure sez: Note that version 3.3.9 of gnutls doesn't support - # nettle 3.0. + # Note that version 3.3.9 of gnutls doesn't support nettle 3.0. depends_on("nettle@:2.9", when='@3.3.9') depends_on("nettle", when='@3.5:') depends_on("zlib", when='@3.5:') build_directory = 'spack-build' + def url_for_version(self, version): + url = "https://www.gnupg.org/ftp/gcrypt/gnutls/v{0}/gnutls-{1}.tar.xz" + return url.format(version.up_to(2), version) + def configure_args(self): args = [] if self.spec.satisfies('@3.5:'): From 73f78cb8c4422e740c104ff823ba850f91e6a373 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 30 Mar 2017 02:18:40 -0500 Subject: [PATCH 0499/2394] Move py-dev to the proper repo directory (#3630) --- var/spack/repos/builtin/{ => packages}/py-dev/__init__.py.patch | 0 var/spack/repos/builtin/{ => packages}/py-dev/package.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename var/spack/repos/builtin/{ => packages}/py-dev/__init__.py.patch (100%) rename var/spack/repos/builtin/{ => packages}/py-dev/package.py (100%) diff --git a/var/spack/repos/builtin/py-dev/__init__.py.patch b/var/spack/repos/builtin/packages/py-dev/__init__.py.patch similarity index 100% rename from var/spack/repos/builtin/py-dev/__init__.py.patch rename to var/spack/repos/builtin/packages/py-dev/__init__.py.patch diff --git a/var/spack/repos/builtin/py-dev/package.py b/var/spack/repos/builtin/packages/py-dev/package.py similarity index 100% rename from var/spack/repos/builtin/py-dev/package.py rename to var/spack/repos/builtin/packages/py-dev/package.py From f9c0348891c4bd5eca3621a3d3d3f1eaec75d9ae Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 30 Mar 2017 16:46:05 +0200 Subject: [PATCH 0500/2394] cp2k: update to 4.1 + update of dependencies (#3561) * libint: updated version, ported to AutotoolsPackage * elpa: updated version, ported to AutotoolsPackage * wannier90: updated version, ported to MakefilePackage * pexsi: updated version, ported to MakefilePackage * cp2k: updated version, removed wannier 90 from dependencies if cp2k@4.1 * plumed: updated version Modifications: * modules has been turned into a single variant, as different versions have different modules available * added dictionaries for patches * netlib-scalapack: ported to CMakePackage --- .../repos/builtin/packages/cp2k/package.py | 25 ++++++-- .../repos/builtin/packages/elpa/package.py | 63 ++++++++----------- .../repos/builtin/packages/libint/package.py | 34 ++++------ .../packages/netlib-scalapack/package.py | 21 ++++--- .../repos/builtin/packages/pexsi/make.inc | 2 +- .../repos/builtin/packages/pexsi/package.py | 37 ++++++++--- .../repos/builtin/packages/plumed/package.py | 54 ++++++++++------ .../builtin/packages/wannier90/package.py | 46 ++++++++------ 8 files changed, 160 insertions(+), 122 deletions(-) diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 0909d8cb81c..9bc1026ba9a 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -37,6 +37,7 @@ class Cp2k(Package): homepage = 'https://www.cp2k.org' url = 'https://sourceforge.net/projects/cp2k/files/cp2k-3.0.tar.bz2' + version('4.1', 'b0534b530592de15ac89828b1541185e') version('3.0', 'c05bc47335f68597a310b1ed75601d35') variant('mpi', default=True, description='Enable MPI support') @@ -47,14 +48,18 @@ class Cp2k(Package): depends_on('lapack') depends_on('blas') depends_on('fftw') - depends_on('libint@:1.2', when='@3.0') + depends_on('libint@:1.2', when='@3.0,4.1') depends_on('mpi', when='+mpi') depends_on('scalapack', when='+mpi') depends_on('plumed+shared+mpi', when='+plumed+mpi') depends_on('plumed+shared~mpi', when='+plumed~mpi') - depends_on('pexsi', when='+mpi') - depends_on('wannier90', when='+mpi') + depends_on('pexsi+fortran', when='+mpi') + + # Apparently cp2k@4.1 needs an "experimental" version of libwannier.a + # which is only available contacting the developer directly. See INSTALL + # in the stage of cp2k@4.1 + depends_on('wannier90', when='@3.0+mpi') depends_on('elpa', when='+mpi') # TODO : add dependency on libsmm, libxsmm @@ -94,6 +99,8 @@ def install(self, spec, prefix): fcflags.append(spec['fftw'].cppflags) fftw = find_libraries('libfftw3', root=spec['fftw'].prefix.lib) ldflags = [fftw.search_flags] + if 'superlu-dist@4.3' in spec: + ldflags = ['-Wl,--allow-multiple-definition'] + ldflags libs = [ join_path(spec['libint'].prefix.lib, 'libint.so'), join_path(spec['libint'].prefix.lib, 'libderiv.so'), @@ -147,10 +154,12 @@ def install(self, spec, prefix): cppflags.extend([ '-D__parallel', '-D__LIBPEXSI', - '-D__WANNIER90', '-D__ELPA3', '-D__SCALAPACK' ]) + if 'wannier90' in spec: + cppflags.append('-D__WANNIER90') + fcflags.extend([ # spec['elpa:fortran'].cppflags '-I' + join_path( @@ -167,7 +176,6 @@ def install(self, spec, prefix): libs.extend([ join_path(spec['elpa'].prefix.lib, 'libelpa.{0}'.format(dso_suffix)), - join_path(spec['wannier90'].prefix.lib, 'libwannier.a'), join_path(spec['pexsi'].prefix.lib, 'libpexsi.a'), join_path(spec['superlu-dist'].prefix.lib, 'libsuperlu_dist.a'), @@ -180,6 +188,13 @@ def install(self, spec, prefix): 'libmetis.{0}'.format(dso_suffix) ), ]) + + if 'wannier90' in spec: + wannier = join_path( + spec['wannier90'].prefix.lib, 'libwannier.a' + ) + libs.append(wannier) + libs.extend(scalapack) libs.extend(self.spec['mpi'].mpicxx_shared_libs) libs.extend(self.compiler.stdcxx_libs) diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py index fe249269c7d..033cb1e36c2 100644 --- a/var/spack/repos/builtin/packages/elpa/package.py +++ b/var/spack/repos/builtin/packages/elpa/package.py @@ -26,24 +26,15 @@ from spack import * -class Elpa(Package): - """ - Eigenvalue solvers for Petaflop-Applications (ELPA) - """ +class Elpa(AutotoolsPackage): + """Eigenvalue solvers for Petaflop-Applications (ELPA)""" homepage = 'http://elpa.mpcdf.mpg.de/' url = 'http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz' - version( - '2016.05.003', - '88a9f3f3bfb63e16509dd1be089dcf2c', - url='http://elpa.mpcdf.mpg.de/html/Releases/2016.05.003/elpa-2016.05.003.tar.gz' - ) - version( - '2015.11.001', - 'de0f35b7ee7c971fd0dca35c900b87e6', - url='http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz' - ) + version('2016.05.004', 'c0dd3a53055536fc3a2a221e78d8b376') + version('2016.05.003', '88a9f3f3bfb63e16509dd1be089dcf2c') + version('2015.11.001', 'de0f35b7ee7c971fd0dca35c900b87e6') variant('openmp', default=False, description='Activates OpenMP support') @@ -52,30 +43,26 @@ class Elpa(Package): depends_on('lapack') depends_on('scalapack') - def install(self, spec, prefix): + def url_for_version(self, version): + t = 'http://elpa.mpcdf.mpg.de/html/Releases/{0}/elpa-{0}.tar.gz' + if version < Version('2016.05.003'): + t = 'http://elpa.mpcdf.mpg.de/elpa-{0}.tar.gz' + return t.format(str(version)) - options = [ - 'CC={0}'.format(self.spec['mpi'].mpicc), - 'FC={0}'.format(self.spec['mpi'].mpifc), - 'CXX={0}'.format(self.spec['mpi'].mpicxx), - 'FCFLAGS={0}'.format( - spec['lapack'].libs.joined() - ), - 'LDFLAGS={0}'.format( - spec['lapack'].libs.joined() - ), - 'SCALAPACK_FCFLAGS={0}'.format( - spec['scalapack'].libs.joined() - ), - 'SCALAPACK_LDFLAGS={0}'.format( - spec['scalapack'].libs.joined() - ), - '--prefix={0}'.format(self.prefix) - ] + def setup_environment(self, spack_env, run_env): - if '+openmp' in spec: + spec = self.spec + + spack_env.set('CC', spec['mpi'].mpicc) + spack_env.set('FC', spec['mpi'].mpifc) + spack_env.set('CXX', spec['mpi'].mpicxx) + + spack_env.set('LDFLAGS', spec['lapack'].libs.search_flags) + spack_env.set('LIBS', spec['lapack'].libs.link_flags) + spack_env.set('SCALAPACK_LDFLAGS', spec['scalapack'].libs.joined()) + + def configure_args(self): + options = [] + if '+openmp' in self.spec: options.append("--enable-openmp") - - configure(*options) - make() - make("install") + return options diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py index 2ad5e931919..569aa68b68a 100644 --- a/var/spack/repos/builtin/packages/libint/package.py +++ b/var/spack/repos/builtin/packages/libint/package.py @@ -25,25 +25,27 @@ from spack import * -class Libint(Package): +class Libint(AutotoolsPackage): """Libint is a high-performance library for computing - Gaussian integrals in quantum mechanics.""" + Gaussian integrals in quantum mechanics. + """ homepage = "https://github.com/evaleev/libint" - url = "https://github.com/evaleev/libint/archive/v2.1.0.tar.gz" + url = "https://github.com/evaleev/libint/archive/v2.1.0.tar.gz" + version('2.2.0', 'da37dab862fb0b97a7ed7d007695ef47') version('2.1.0', 'd0dcb985fe32ddebc78fe571ce37e2d6') version('1.1.6', '990f67b55f49ecc18f32c58da9240684') version('1.1.5', '379b7d0718ff398715d6898807adf628') # Build dependencies depends_on('autoconf@2.52:', type='build') - depends_on('automake', type='build') - depends_on('libtool', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') # Libint 2 dependencies depends_on('boost', when='@2:') - depends_on('gmp', when='@2:') + depends_on('gmp', when='@2:') def url_for_version(self, version): base_url = "https://github.com/evaleev/libint/archive" @@ -54,16 +56,14 @@ def url_for_version(self, version): else: return "{0}/v{1}.tar.gz".format(base_url, version) - def install(self, spec, prefix): - # Generate configure + def autoreconf(self, spec, prefix): libtoolize() aclocal('-I', 'lib/autoconf') autoconf() - config_args = [ - '--prefix={0}'.format(prefix), - '--enable-shared' - ] + def configure_args(self): + + config_args = ['--enable-shared'] # Optimizations for the Intel compiler, suggested by CP2K optflags = '-O2' @@ -93,12 +93,4 @@ def install(self, spec, prefix): '--with-libint-max-am=5', '--with-libderiv-max-am1=4' ]) - - configure(*config_args) - make() - - # Testing suite was added in libint 2 - if self.version >= Version('2.0.0'): - make('check') - - make('install') + return config_args diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py index 6a97180328e..e860926f967 100644 --- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py @@ -26,7 +26,7 @@ import sys -class NetlibScalapack(Package): +class NetlibScalapack(CMakePackage): """ScaLAPACK is a library of high-performance linear algebra routines for parallel distributed memory machines """ @@ -60,12 +60,16 @@ class NetlibScalapack(Package): @property def scalapack_libs(self): + # Note that the default will be to search + # for 'libnetlib-scalapack.' shared = True if '+shared' in self.spec else False return find_libraries( 'libscalapack', root=self.prefix, shared=shared, recurse=True ) - def install(self, spec, prefix): + def cmake_args(self): + spec = self.spec + options = [ "-DBUILD_SHARED_LIBS:BOOL=%s" % ('ON' if '+shared' in spec else 'OFF'), @@ -89,13 +93,10 @@ def install(self, spec, prefix): "-DCMAKE_Fortran_FLAGS=-fPIC" ]) - options.extend(std_cmake_args) - - with working_dir('spack-build', create=True): - cmake('..', *options) - make() - make("install") + return options + @run_after('install') + def fix_darwin_install(self): # The shared libraries are not installed correctly on Darwin: - if (sys.platform == 'darwin') and ('+shared' in spec): - fix_darwin_install_name(prefix.lib) + if (sys.platform == 'darwin') and ('+shared' in self.spec): + fix_darwin_install_name(self.spec.prefix.lib) diff --git a/var/spack/repos/builtin/packages/pexsi/make.inc b/var/spack/repos/builtin/packages/pexsi/make.inc index c97b09b4243..ec619a7dbab 100644 --- a/var/spack/repos/builtin/packages/pexsi/make.inc +++ b/var/spack/repos/builtin/packages/pexsi/make.inc @@ -63,7 +63,7 @@ CXXFLAGS = ${COMPILE_FLAG} ${CPPFLAG} ${PROFILE_FLAG} ${INCLUDES} CCDEFS = ${COMPILE_DEF} CPPDEFS = ${COMPILE_DEF} LOADOPTS = ${PROFILE_FLAG} ${LIBS} -FLOADOPTS = ${PROFILE_FLAG} ${LIBS} ${CPP_LIB} +FLOADOPTS = @FLDFLAGS ${PROFILE_FLAG} ${LIBS} ${CPP_LIB} # Generate auto-dependencies %.d: %.c diff --git a/var/spack/repos/builtin/packages/pexsi/package.py b/var/spack/repos/builtin/packages/pexsi/package.py index 989e2ebf6ed..04d22c4da8f 100644 --- a/var/spack/repos/builtin/packages/pexsi/package.py +++ b/var/spack/repos/builtin/packages/pexsi/package.py @@ -30,7 +30,7 @@ from spack import * -class Pexsi(Package): +class Pexsi(MakefilePackage): """The PEXSI library is written in C++, and uses message passing interface (MPI) to parallelize the computation on distributed memory computing systems and achieve scalability on more than 10,000 processors. @@ -46,14 +46,20 @@ class Pexsi(Package): homepage = 'https://math.berkeley.edu/~linlin/pexsi/index.html' url = 'https://math.berkeley.edu/~linlin/pexsi/download/pexsi_v0.9.0.tar.gz' + version('0.9.2', '0ce491a3a922d271c4edf9b20aa93076') version('0.9.0', '0c1a2de891ba1445dfc184b2fa270ed8') depends_on('parmetis') depends_on('superlu-dist@3.3', when='@0.9.0') + depends_on('superlu-dist@4.3', when='@0.9.2') + + variant( + 'fortran', default=False, description='Builds the Fortran interface' + ) parallel = False - def install(self, spec, prefix): + def edit(self, spec, prefix): substitutions = { '@MPICC': self.spec['mpi'].mpicc, @@ -70,9 +76,13 @@ def install(self, spec, prefix): '@LAPACK_LIBS': self.spec['lapack'].libs.joined(), '@BLAS_LIBS': self.spec['blas'].libs.joined(), # FIXME : what to do with compiler provided libraries ? - '@STDCXX_LIB': ' '.join(self.compiler.stdcxx_libs) + '@STDCXX_LIB': ' '.join(self.compiler.stdcxx_libs), + '@FLDFLAGS': '' } + if '@0.9.2' in self.spec: + substitutions['@FLDFLAGS'] = '-Wl,--allow-multiple-definition' + template = join_path( os.path.dirname(inspect.getmodule(self).__file__), 'make.inc' @@ -85,20 +95,29 @@ def install(self, spec, prefix): for key, value in substitutions.items(): filter_file(key, value, makefile) - make() + def build(self, spec, prefix): + super(Pexsi, self).build(spec, prefix) + if '+fortran' in self.spec: + make('-C', 'fortran') + + def install(self, spec, prefix): + # 'make install' does not exist, despite what documentation says mkdirp(self.prefix.lib) + install( join_path(self.stage.source_path, 'src', 'libpexsi_linux.a'), join_path(self.prefix.lib, 'libpexsi.a') ) + install_tree( join_path(self.stage.source_path, 'include'), self.prefix.include ) + # fortran "interface" - make('-C', 'fortran') - install_tree( - join_path(self.stage.source_path, 'fortran'), - join_path(self.prefix, 'fortran') - ) + if '+fortran' in self.spec: + install_tree( + join_path(self.stage.source_path, 'fortran'), + join_path(self.prefix, 'fortran') + ) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 80cc1aa66a4..60443cbcc65 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -43,17 +43,16 @@ class Plumed(AutotoolsPackage): homepage = 'http://www.plumed.org/' url = 'https://github.com/plumed/plumed2/archive/v2.2.3.tar.gz' + version('2.3.0', 'a9b5728f115dca8f0519111f1f5a6fa5') + version('2.2.4', 'afb00da25a3fbd47acf377e53342059d') version('2.2.3', 'a6e3863e40aac07eb8cf739cbd14ecf8') # Variants. PLUMED by default builds a number of optional modules. # The ones listed here are not built by default for various reasons, # such as stability, lack of testing, or lack of demand. - variant('crystallization', default=False, - description='Build support for optional crystallization module.') - variant('imd', default=False, - description='Build support for optional imd module.') - variant('manyrestraints', default=False, - description='Build support for optional manyrestraints module.') + # FIXME: This needs to be an optional + variant('optional_modules', default='all', + description='String that is used to build optional modules') variant('shared', default=True, description='Builds shared libraries') variant('mpi', default=True, description='Activates MPI support') variant('gsl', default=True, description='Activates GSL support') @@ -73,6 +72,28 @@ class Plumed(AutotoolsPackage): # Dictionary mapping PLUMED versions to the patches it provides # interactively plumed_patches = { + '2.3.0': { + 'amber-14': '1', + 'gromacs-2016.1': '2', + 'gromacs-4.5.7': '3', + 'gromacs-5.0.7': '4', + 'gromacs-5.1.4': '5', + 'lammps-6Apr13': '6', + 'namd-2.8': '7', + 'namd-2.9': '8', + 'espresso-5.0.2': '9' + }, + '2.2.4': { + 'amber-14': '1', + 'gromacs-4.5.7': '2', + 'gromacs-4.6.7': '3', + 'gromacs-5.0.7': '4', + 'gromacs-5.1.2': '5', + 'lammps-6Apr13': '6', + 'namd-2.8': '7', + 'namd-2.9': '8', + 'espresso-5.0.2': '9' + }, '2.2.3': { 'amber-14': '1', 'gromacs-4.5.7': '2', @@ -132,7 +153,7 @@ def configure_args(self): # If the MPI dependency is provided by the intel-mpi package then # the following additional argument is required to allow it to # build. - if spec.satisfies('^intel-mpi'): + if 'intel-mpi' in spec: configure_opts.extend([ 'STATIC_LIBS=-mt_mpi' ]) @@ -144,19 +165,16 @@ def configure_args(self): ]) # Construct list of optional modules - module_opts = [] - module_opts.extend([ - '+crystallization' if ( - '+crystallization' in spec) else '-crystallization', - '+imd' if '+imd' in spec else '-imd', - '+manyrestraints' if ( - '+manyrestraints' in spec) else '-manyrestraints' - ]) # If we have specified any optional modules then add the argument to # enable or disable them. - if module_opts: - configure_opts.extend([ - '--enable-modules={0}'.format("".join(module_opts))]) + optional_modules = self.spec.variants['optional_modules'].value + if optional_modules: + # From 'configure --help' @2.3: + # all/none/reset or : separated list such as + # +crystallization:-bias default: reset + configure_opts.append( + '--enable-modules={0}'.format(optional_modules) + ) return configure_opts diff --git a/var/spack/repos/builtin/packages/wannier90/package.py b/var/spack/repos/builtin/packages/wannier90/package.py index ad61860d737..25d238dd642 100644 --- a/var/spack/repos/builtin/packages/wannier90/package.py +++ b/var/spack/repos/builtin/packages/wannier90/package.py @@ -29,7 +29,7 @@ from spack import * -class Wannier90(Package): +class Wannier90(MakefilePackage): """Wannier90 calculates maximally-localised Wannier functions (MLWFs). Wannier90 is released under the GNU General Public License. @@ -37,6 +37,7 @@ class Wannier90(Package): homepage = 'http://wannier.org' url = 'http://wannier.org/code/wannier90-2.0.1.tar.gz' + version('2.1.0', '07a81c002b41d6d0f97857e55c57d769') version('2.0.1', '4edd742506eaba93317249d33261fb22') depends_on('mpi') @@ -45,7 +46,23 @@ class Wannier90(Package): parallel = False - def install(self, spec, prefix): + build_targets = [ + 'wannier', 'post', 'lib', 'w90chk2chk', 'w90vdw', 'w90pov' + ] + + @property + def makefile_name(self): + # Older versions use 'make.sys' + filename = 'make.sys' + + # While newer search for 'make.inc' + if self.spec.satisfies('@2.1.0:'): + filename = 'make.inc' + + abspath = join_path(self.stage.source_path, filename) + return abspath + + def edit(self, spec, prefix): lapack = self.spec['lapack'].libs blas = self.spec['blas'].libs @@ -54,57 +71,46 @@ def install(self, spec, prefix): '@MPIF90': self.spec['mpi'].mpifc, '@LIBS': (lapack + blas).joined() } - ####### - # TODO : this part is replicated in PEXSI - # TODO : and may be a common pattern for Editable Makefiles - # TODO : see #1186 + template = join_path( os.path.dirname(inspect.getmodule(self).__file__), 'make.sys' ) - makefile = join_path( - self.stage.source_path, - 'make.sys' - ) - shutil.copy(template, makefile) + shutil.copy(template, self.makefile_name) for key, value in substitutions.items(): - filter_file(key, value, makefile) - ###### + filter_file(key, value, self.makefile_name) + + def install(self, spec, prefix): - make('wannier') mkdirp(self.prefix.bin) + mkdirp(self.prefix.lib) + install( join_path(self.stage.source_path, 'wannier90.x'), join_path(self.prefix.bin, 'wannier90.x') ) - make('post') install( join_path(self.stage.source_path, 'postw90.x'), join_path(self.prefix.bin, 'postw90.x') ) - make('lib') - mkdirp(self.prefix.lib) install( join_path(self.stage.source_path, 'libwannier.a'), join_path(self.prefix.lib, 'libwannier.a') ) - make('w90chk2chk') install( join_path(self.stage.source_path, 'w90chk2chk.x'), join_path(self.prefix.bin, 'w90chk2chk.x') ) - make('w90vdw') install( join_path(self.stage.source_path, 'utility', 'w90vdw', 'w90vdw.x'), join_path(self.prefix.bin, 'w90vdw.x') ) - make('w90pov') install( join_path(self.stage.source_path, 'utility', 'w90pov', 'w90pov'), join_path(self.prefix.bin, 'w90pov') From 2bd216a6a1cd38254befb9c58057a13072978cb8 Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 30 Mar 2017 17:33:09 +0200 Subject: [PATCH 0501/2394] add package py-spykeutils (#3633) * add package py-spykeutils * fixed dependency version restriction --- .../builtin/packages/py-spykeutils/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-spykeutils/package.py diff --git a/var/spack/repos/builtin/packages/py-spykeutils/package.py b/var/spack/repos/builtin/packages/py-spykeutils/package.py new file mode 100644 index 00000000000..2aa0cabe462 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-spykeutils/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySpykeutils(PythonPackage): + """Utilities for analyzing electrophysiological data""" + + homepage = "https://github.com/rproepp/spykeutils" + url = "https://pypi.io/packages/source/s/spykeutils/spykeutils-0.4.3.tar.gz" + + version('0.4.3', 'cefe4c48ebfdb9bac7a6cbfaf49dd485') + + depends_on('py-setuptools', type='build') + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-quantities', type=('build', 'run')) + depends_on('py-neo@0.2.1:0.3.99', type=('build', 'run')) From 9e1abb13dcc4fb21042c6ca3b2e5c445811d6c15 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 31 Mar 2017 01:35:57 +0200 Subject: [PATCH 0502/2394] support OpenFOAM package(s) (#3528) * ENH: add package for building OpenFOAM (1612) from www.openfoam.com - provide 'openfoam' as virtual package. - package as openfoam-com to reflect the distribution point. This initial spack packaging for OpenFOAM supports a number of possible variants and should handle 64-bit labels properly now that the scotch package has been updated accordingly. * ENH: update package for foam-extend (extend-project.de) - provide 'openfoam' as virtual package. - much of the build is now aligned with how the openfoam-com package looks, with the aim of future refactoring. - avoid installing intermediate targets. - contains its own environment sourcing script for the build, for more flexibility and robustness (doesn't touch the python build environ) * ENH: added package for building from openfoam.org - provide 'openfoam' as a virtual package. - this is largely a direct copy of the openfoam-com package. It has been supplied as a courtesy for users and to ensure maximum consistency in quality and naming between the foam-extend, openfoam-com and openfoam-org packages. * CONFIG: add openfoam into bash completion providers list * ENH: have openfoam-com use spack as USERMPI - also simplify the generation of mplib/compiler rules * ENH: have openfoam-org use spack as SYSTEMMPI - this setup requires more environment settings than USERMPI (openfoam-com), but is currently the only means of integration for openfoam-org - simplify generation of mplib/compiler rules * ENH: simplify generation of mplib/compiler rules (foam-extend) - rename mpi rules from SPACK,SPACKMPI to USER,USERMPI for consistency with openfoam-com and to generalize for any build system. * STYLE: record spack tree as a log file (openfoam) - can be useful for future diagnostics and general record keeping --- share/spack/spack-completion.bash | 2 +- .../builtin/packages/foam-extend/package.py | 642 +++++++++++----- .../openfoam-com/openfoam-bin-1612.patch | 503 ++++++++++++ .../openfoam-com/openfoam-build-1612.patch | 17 + .../openfoam-com/openfoam-etc-1612.patch | 41 + .../openfoam-com/openfoam-mpi-1612.patch | 36 + .../packages/openfoam-com/openfoam-site.patch | 42 + .../builtin/packages/openfoam-com/package.py | 722 ++++++++++++++++++ .../openfoam-com/scotch-metis-lib-1612.patch | 48 ++ .../openfoam-com/zoltan-lib-1612.patch | 84 ++ .../openfoam-org/openfoam-etc-41.patch | 25 + .../packages/openfoam-org/openfoam-site.patch | 42 + .../builtin/packages/openfoam-org/package.py | 492 ++++++++++++ 13 files changed, 2485 insertions(+), 211 deletions(-) create mode 100644 var/spack/repos/builtin/packages/openfoam-com/openfoam-bin-1612.patch create mode 100644 var/spack/repos/builtin/packages/openfoam-com/openfoam-build-1612.patch create mode 100644 var/spack/repos/builtin/packages/openfoam-com/openfoam-etc-1612.patch create mode 100644 var/spack/repos/builtin/packages/openfoam-com/openfoam-mpi-1612.patch create mode 100644 var/spack/repos/builtin/packages/openfoam-com/openfoam-site.patch create mode 100644 var/spack/repos/builtin/packages/openfoam-com/package.py create mode 100644 var/spack/repos/builtin/packages/openfoam-com/scotch-metis-lib-1612.patch create mode 100644 var/spack/repos/builtin/packages/openfoam-com/zoltan-lib-1612.patch create mode 100644 var/spack/repos/builtin/packages/openfoam-org/openfoam-etc-41.patch create mode 100644 var/spack/repos/builtin/packages/openfoam-org/openfoam-site.patch create mode 100644 var/spack/repos/builtin/packages/openfoam-org/package.py diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 61cbb272435..eb2da5b7d70 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -590,7 +590,7 @@ function _spack_providers { compgen -W "-h --help" -- "$cur" else compgen -W "blas daal elf golang ipp lapack mkl - mpe mpi pil scalapack" -- "$cur" + mpe mpi openfoam pil scalapack" -- "$cur" fi } diff --git a/var/spack/repos/builtin/packages/foam-extend/package.py b/var/spack/repos/builtin/packages/foam-extend/package.py index e009d64f512..559cc45d7ab 100644 --- a/var/spack/repos/builtin/packages/foam-extend/package.py +++ b/var/spack/repos/builtin/packages/foam-extend/package.py @@ -9,6 +9,8 @@ # For details, see https://github.com/llnl/spack # Please also see the LICENSE file for our notice and the LGPL. # +# License +# ------- # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as # published by the Free Software Foundation) version 2.1, February 1999. @@ -21,17 +23,51 @@ # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Legal Notice +# ------------ +# OPENFOAM is a trademark owned by OpenCFD Ltd +# (producer and distributor of the OpenFOAM software via www.openfoam.com). +# The trademark information must remain visible and unadulterated in this +# file and via the "spack info" and comply with the term set by +# http://openfoam.com/legal/trademark-policy.php +# +# This file is not part of OpenFOAM, nor does it constitute a component of an +# OpenFOAM distribution. +# +############################################################################## +# +# Notes +# - mpi handling: WM_MPLIB=USER and provide wmake rules for special purpose +# 'USER and 'USERMPI' mpi implementations. +# The choice of 'USER' vs 'USERMPI' may change in the future. +# +# Changes +# 2017-03-28 Mark Olesen +# - avoid installing intermediate targets. +# - reworked to mirror the openfoam-com package. +# If changes are needed here, consider if they need applying there too. +# ############################################################################## from spack import * from spack.environment import * import multiprocessing +import glob +import re +import shutil import os +from os.path import isdir, isfile +from spack.pkg.builtin.openfoam_com import * class FoamExtend(Package): - """The foam-extend project is a fork of the OpenFOAM open source library - for Computational Fluid Dynamics (CFD).""" + """The Extend Project is a fork of the OpenFOAM opensource library + for Computational Fluid Dynamics (CFD). + This offering is not approved or endorsed by OpenCFD Ltd, + producer and distributor of the OpenFOAM software via www.openfoam.com, + and owner of the OPENFOAM trademark. + """ homepage = "http://www.extend-project.de/" @@ -40,207 +76,235 @@ class FoamExtend(Package): version('3.1', git='http://git.code.sf.net/p/foam-extend/foam-extend-3.1') version('3.0', git='http://git.code.sf.net/p/foam-extend/foam-extend-3.0') - variant('paraview', default=False, description='Enable ParaFOAM') - variant( - 'scotch', default=True, - description='Activate Scotch as a possible decomposition library') - variant( - 'ptscotch', default=True, - description='Activate PT-Scotch as a possible decomposition library') - variant( - 'metis', default=True, - description='Activate Metis as a possible decomposition library') - variant( - 'parmetis', default=True, - description='Activate Parmetis as a possible decomposition library') - variant( - 'parmgridgen', default=True, - description='Activate Parmgridgen support') - variant( - 'source', default=True, - description='Installs also the source folder') + # variant('int64', default=False, + # description='Compile with 64-bit labels') + variant('float32', default=False, + description='Compile with 32-bit scalar (single-precision)') - supported_compilers = {'clang': 'Clang', 'gcc': 'Gcc', 'intel': 'Icc'} + variant('paraview', default=False, + description='Build paraview plugins (eg, paraFoam)') + variant('scotch', default=True, + description='With scotch for decomposition') + variant('ptscotch', default=True, + description='With ptscotch for decomposition') + variant('metis', default=True, + description='With metis for decomposition') + variant('parmetis', default=True, + description='With parmetis for decomposition') + variant('parmgridgen', default=True, + description='With parmgridgen support') + variant('source', default=True, + description='Install library/application sources and tutorials') + #: Map spack compiler names to OpenFOAM compiler names + # By default, simply capitalize the first letter + compiler_mapping = {'intel': 'icc'} + + provides('openfoam') depends_on('mpi') depends_on('python') - depends_on('flex') depends_on('zlib') + depends_on('flex@:2.6.1') # <- restriction due to scotch depends_on('cmake', type='build') - depends_on('scotch ~ metis', when='~ptscotch+scotch') - depends_on('scotch ~ metis + mpi', when='+ptscotch') - depends_on('metis@5:', when='+metis') - depends_on('parmetis', when='+parmetis') - depends_on('parmgridgen', when='+parmgridgen') + depends_on('scotch~metis', when='~ptscotch+scotch') + depends_on('scotch~metis+mpi', when='+ptscotch') + depends_on('metis@5:', when='+metis') + depends_on('parmetis', when='+parmetis') + depends_on('parmgridgen', when='+parmgridgen') + depends_on('paraview@:5.0.1', when='+paraview') - depends_on('paraview', when='+paraview') + # Some user settings, to be adjusted manually or via variants + foam_cfg = { + 'WM_COMPILER': 'Gcc', # <- %compiler + 'WM_ARCH_OPTION': '64', # (32/64-bit on x86_64) + # FUTURE? 'WM_LABEL_SIZE': '32', # <- +int64 + 'WM_PRECISION_OPTION': 'DP', # <- +float32 + 'WM_COMPILE_OPTION': 'SPACKOpt', # Do not change + 'WM_MPLIB': 'USER', # USER | USERMPI + } - def set_arch(self): - (sysname, nodename, release, version, machine) = os.uname() + # The system description is frequently needed + foam_sys = { + 'WM_ARCH': None, + 'WM_COMPILER': None, + 'WM_OPTIONS': None, + } - if self.compiler.name not in self.supported_compilers: - raise RuntimeError('{0} is not a supported compiler \ - to compile OpenFOAM'.format(self.compiler.name)) + # Content for etc/prefs.{csh,sh} + etc_prefs = {} - foam_compiler = self.supported_compilers[self.compiler.name] - if sysname == 'Linux': - arch = 'linux' - if foam_compiler == 'Clang': - raise RuntimeError('OS, compiler combination not\ - supported ({0} {1})'.format(sysname, foam_compiler)) - elif sysname == 'Darwin': - if machine == 'x86_64': - arch = 'darwinIntel' - if foam_compiler == 'Icc': - raise RuntimeError('OS, compiler combination not\ - supported ({0} {1})'.format(sysname, foam_compiler)) - else: - raise RuntimeError('{0} {1} is not a \ - supported architecture'.format(sysname, machine)) + # Content for etc/config.{csh,sh}/ files + etc_config = {} - return (arch, foam_compiler) + build_script = './spack-Allwmake' # <- Generated by patch() method. + # phases = ['configure', 'build', 'install'] + # build_system_class = 'OpenfoamCom' - def get_openfoam_environment(self): - return EnvironmentModifications.from_sourcing_files( - join_path(self.stage.source_path, - 'etc/bashrc')) + def setup_environment(self, spack_env, run_env): + run_env.set('FOAM_INST_DIR', self.prefix) + run_env.set('WM_PROJECT_DIR', self.projectdir) + + @property + def _canonical(self): + """Canonical name for this package and version""" + return 'foam-extend-{0}'.format(self.version.up_to(2)) + + @property + def projectdir(self): + """Absolute location of project directory: WM_PROJECT_DIR/""" + return join_path(self.prefix, self._canonical) # <- prefix/canonical + + @property + def etc(self): + """Absolute location of the OpenFOAM etc/ directory""" + return join_path(self.projectdir, 'etc') + + @property + def archbin(self): + """Relative location of architecture-specific executables""" + wm_options = self.set_openfoam() + return join_path('applications', 'bin', wm_options) + + @property + def archlib(self): + """Relative location of architecture-specific libraries""" + wm_options = self.set_openfoam() + return join_path('lib', wm_options) + + @property + def wm_options(self): + """The architecture+compiler+options for OpenFOAM""" + opts = self.set_openfoam() + return opts + + @property + def rpath_info(self): + """Define 'SPACKOpt' compiler optimization file to have wmake + use spack information with minimum modifications to OpenFOAM + """ + build_libpath = join_path(self.stage.source_path, self.archlib) + install_libpath = join_path(self.projectdir, self.archlib) + + # 'DBUG': rpaths + return '{0}{1} {2}{3}'.format( + self.compiler.cxx_rpath_arg, install_libpath, + self.compiler.cxx_rpath_arg, build_libpath) + + def openfoam_arch(self): + """Return an architecture value similar to what OpenFOAM does in + etc/config.sh/settings, but slightly more generous. + Uses and may adjust foam_cfg[WM_ARCH_OPTION] as a side-effect + """ + # spec.architecture.platform is like `uname -s`, but lower-case + platform = self.spec.architecture.platform + + # spec.architecture.target is like `uname -m` + target = self.spec.architecture.target + + if platform == 'linux': + if target == 'i686': + self.foam_cfg['WM_ARCH_OPTION'] = '32' # Force consistency + elif target == 'x86_64': + if self.foam_cfg['WM_ARCH_OPTION'] == '64': + platform += '64' + elif target == 'ia64': + platform += 'ia64' + elif target == 'armv7l': + platform += 'ARM7' + elif target == ppc64: + platform += 'PPC64' + elif target == ppc64le: + platform += 'PPC64le' + elif platform == 'darwin': + if target == 'x86_64': + platform += 'Intel' + if self.foam_cfg['WM_ARCH_OPTION'] == '64': + platform += '64' + # ... and others? + return platform + + def openfoam_compiler(self): + """Capitalized version of the compiler name, which usually corresponds + to how OpenFOAM will camel-case things. + Use compiler_mapping to handing special cases. + Also handle special compiler options (eg, KNL) + """ + comp = self.compiler.name + if comp in self.compiler_mapping: + comp = self.compiler_mapping[comp] + comp = comp.capitalize() + + if '+knl' in self.spec: + comp += 'KNL' + return comp + + # For foam-extend: does not yet support +int64 + def set_openfoam(self): + """Populate foam_cfg, foam_sys according to + variants, architecture, compiler. + Returns WM_OPTIONS. + """ + # Run once + opts = self.foam_sys['WM_OPTIONS'] + if opts: + return opts + + wm_arch = self.openfoam_arch() + wm_compiler = self.openfoam_compiler() + compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] + + # Insist on a wmake rule for this architecture/compiler combination + archCompiler = wm_arch + wm_compiler + compiler_rule = join_path( + self.stage.source_path, 'wmake', 'rules', archCompiler) + + if not isdir(compiler_rule): + raise RuntimeError( + 'No wmake rule for {0}'.format(archCompiler)) + if not re.match(r'.+Opt$', compileOpt): + raise RuntimeError( + "WM_COMPILE_OPTION={0} is not type '*Opt'".format(compileOpt)) + + # Adjust for variants + # FUTURE? self.foam_cfg['WM_LABEL_SIZE'] = ( + # FUTURE? '64' if '+int64' in self.spec else '32' + # FUTURE? ) + self.foam_cfg['WM_PRECISION_OPTION'] = ( + 'SP' if '+float32' in self.spec else 'DP' + ) + + # ---- + # WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION + # ---- + self.foam_sys['WM_ARCH'] = wm_arch + self.foam_sys['WM_COMPILER'] = wm_compiler + self.foam_cfg['WM_COMPILER'] = wm_compiler # For bashrc,cshrc too + self.foam_sys['WM_OPTIONS'] = ''.join([ + wm_arch, + wm_compiler, + self.foam_cfg['WM_PRECISION_OPTION'], + # FUTURE? 'Int', self.foam_cfg['WM_LABEL_SIZE'], # Int32/Int64 + compileOpt + ]) + return self.foam_sys['WM_OPTIONS'] def patch(self): - # change names to match the package and not the one patch in - # the Third-Party of foam-extend - if '+parmgridgen' in self.spec: - filter_file(r'-lMGridGen', - r'-lmgrid', - 'src/dbns/Make/options') + """Adjust OpenFOAM build for spack. Where needed, apply filter as an + alternative to normal patching. + """ + self.set_openfoam() # May need foam_cfg/foam_sys information - filter_file( - r'-lMGridGen', - r'-lmgrid', - 'src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options') # noqa: E501 - - # Get the wmake arch and compiler - (arch, foam_compiler) = self.set_arch() - - prefs_dict = { - 'compilerInstall': 'System', - 'WM_COMPILER': foam_compiler, - 'WM_ARCH_OPTION': '64', - 'WM_PRECISION_OPTION': 'DP', - 'WM_COMPILE_OPTION': 'SPACKOpt', - 'WM_MPLIB': 'SPACK', - - 'CMAKE_DIR': self.spec['cmake'].prefix, - 'CMAKE_BIN_DIR': self.spec['cmake'].prefix.bin, - 'PYTHON_DIR': self.spec['python'].prefix, - 'PYTHON_BIN_DIR': self.spec['python'].prefix.bin, - - 'FLEX_SYSTEM': 1, - 'FLEX_DIR': self.spec['flex'].prefix, - - 'BISON_SYSTEM': 1, - 'BISON_DIR': self.spec['flex'].prefix, - - 'ZLIB_SYSTEM': 1, - 'ZLIB_DIR': self.spec['zlib'].prefix, - } - - if '+scotch' in self.spec or '+ptscotch' in self.spec: - prefs_dict['SCOTCH_SYSTEM'] = 1 - prefs_dict['SCOTCH_DIR'] = self.spec['scotch'].prefix - prefs_dict['SCOTCH_BIN_DIR'] = self.spec['scotch'].prefix.bin - prefs_dict['SCOTCH_LIB_DIR'] = self.spec['scotch'].prefix.lib - prefs_dict['SCOTCH_INCLUDE_DIR'] = \ - self.spec['scotch'].prefix.include - - if '+metis' in self.spec: - prefs_dict['METIS_SYSTEM'] = 1 - prefs_dict['METIS_DIR'] = self.spec['metis'].prefix - prefs_dict['METIS_BIN_DIR'] = self.spec['metis'].prefix.bin - prefs_dict['METIS_LIB_DIR'] = self.spec['metis'].prefix.lib - prefs_dict['METIS_INCLUDE_DIR'] = self.spec['metis'].prefix.include - - if '+parmetis' in self.spec: - prefs_dict['PARMETIS_SYSTEM'] = 1 - prefs_dict['PARMETIS_DIR'] = self.spec['parmetis'].prefix - prefs_dict['PARMETIS_BIN_DIR'] = self.spec['parmetis'].prefix.bin - prefs_dict['PARMETIS_LIB_DIR'] = self.spec['parmetis'].prefix.lib - prefs_dict['PARMETIS_INCLUDE_DIR'] = \ - self.spec['parmetis'].prefix.include - - if '+parmgridgen' in self.spec: - prefs_dict['PARMGRIDGEN_SYSTEM'] = 1 - prefs_dict['PARMGRIDGEN_DIR'] = self.spec['parmgridgen'].prefix - prefs_dict['PARMGRIDGEN_BIN_DIR'] = \ - self.spec['parmgridgen'].prefix.bin - prefs_dict['PARMGRIDGEN_LIB_DIR'] = \ - self.spec['parmgridgen'].prefix.lib - prefs_dict['PARMGRIDGEN_INCLUDE_DIR'] = \ - self.spec['parmgridgen'].prefix.include - - if '+paraview' in self.spec: - prefs_dict['PARAVIEW_SYSTEM'] = 1 - prefs_dict['PARAVIEW_DIR'] = self.spec['paraview'].prefix - prefs_dict['PARAVIEW_BIN_DIR'] = self.spec['paraview'].prefix.bin - prefs_dict['QT_SYSTEM'] = 1 - prefs_dict['QT_DIR'] = self.spec['qt'].prefix - prefs_dict['QT_BIN_DIR'] = self.spec['qt'].prefix.bin - - # write the prefs files to define the configuration needed, - # only the prefs.sh is used by this script but both are - # installed for end users - with working_dir('.'): - with open("etc/prefs.sh", "w") as fh: - for key in sorted(prefs_dict): - fh.write('export {0}={1}\n'.format(key, prefs_dict[key])) - - with open("etc/prefs.csh", "w") as fh: - for key in sorted(prefs_dict): - fh.write('setenv {0}={1}\n'.format(key, prefs_dict[key])) - - # Defining a different mpi and optimisation file to be able to - # make wmake get spack info with minimum modifications on - # configurations scripts - mpi_info = [ - 'PFLAGS = -DOMPI_SKIP_MPICXX -DMPICH_IGNORE_CXX_SEEK', - 'PINC = -I{0}'.format(self.spec['mpi'].prefix.include), - 'PLIBS = -L{0} -lmpi'.format(self.spec['mpi'].prefix.lib) + # Adjust ParMGridGen - this is still a mess + files = [ + 'src/dbns/Make/options', + 'src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options' # noqa: E501 ] + for f in files: + filter_file(r'-lMGridGen', r'-lmgrid', f, backup=False) - arch_path = ''.join([arch, prefs_dict['WM_ARCH_OPTION'], - foam_compiler]) - option_path = ''.join([arch_path, - prefs_dict['WM_PRECISION_OPTION'], - prefs_dict['WM_COMPILE_OPTION']]) - rule_path = join_path("wmake", "rules", arch_path) - build_path = join_path(self.stage.source_path, 'lib', option_path) - install_path = \ - join_path(self.prefix, - 'foam-extend-{0}'.format(self.version.up_to(2)), - option_path) - - rpaths_foam = ' '.join([ - '{0}{1}'.format(self.compiler.cxx_rpath_arg, - install_path), - '{0}{1}'.format(self.compiler.cxx_rpath_arg, - build_path) - ]) - - compiler_flags = { - 'DBUG': rpaths_foam, - 'OPT': '-O3', - } - - with working_dir(rule_path): - with open('mplibSPACK', "w") as fh: - fh.write('\n'.join(mpi_info)) - - for comp in ['c', 'c++']: - with open('{0}SPACKOpt'.format(comp), "w") as fh: - for key, val in compiler_flags.iteritems(): - fh.write('{0}{1} = {2}\n'.format(comp, key, val)) - - _files_to_patch = [ + # Adjust for flex version check + files = [ 'src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L', # noqa: E501 'src/surfMesh/surfaceFormats/stl/STLsurfaceFormatASCII.L', # noqa: E501 'src/meshTools/triSurface/triSurface/interfaces/STL/readSTLASCII.L', # noqa: E501 @@ -251,40 +315,198 @@ def patch(self): 'applications/utilities/mesh/conversion/fluentMeshToFoam/fluentMeshToFoam.L', # noqa: E501 'applications/utilities/mesh/conversion/fluent3DMeshToElmer/fluent3DMeshToElmer.L' # noqa: E501 ] - for _file in _files_to_patch: - filter_file(r'#if YY_FLEX_SUBMINOR_VERSION < 34', - r'#if YY_FLEX_MAJOR_VERSION <= 2 && YY_FLEX_MINOR_VERSION <= 5 && YY_FLEX_SUBMINOR_VERSION < 34', # noqa: E501 - _file) + for f in files: + filter_file( + r'#if YY_FLEX_SUBMINOR_VERSION < 34', + r'#if YY_FLEX_MAJOR_VERSION <= 2 && YY_FLEX_MINOR_VERSION <= 5 && YY_FLEX_SUBMINOR_VERSION < 34', # noqa: E501 + f, backup=False + ) - def setup_environment(self, spack_env, run_env): - with working_dir(self.stage.path): - spack_env.set('FOAM_INST_DIR', os.path.abspath('.')) + # Build wrapper script + with open(self.build_script, 'w') as out: + out.write( + """#!/bin/bash +export FOAM_INST_DIR=$(cd .. && pwd -L) +. $PWD/etc/bashrc '' # No arguments +mkdir -p $FOAM_APPBIN $FOAM_LIBBIN 2>/dev/null # Allow interrupt +echo Build openfoam with SPACK +echo WM_PROJECT_DIR = $WM_PROJECT_DIR +./Allwmake # No arguments +# +""") + set_executable(self.build_script) + self.configure(self.spec, self.prefix) # Should be a separate phase - (arch, foam_compiler) = self.set_arch() + def configure(self, spec, prefix): + """Make adjustments to the OpenFOAM configuration files in their various + locations: etc/bashrc, etc/config.sh/FEATURE and customizations that + don't properly fit get placed in the etc/prefs.sh file (similiarly for + csh). + """ + self.set_openfoam() # Need foam_cfg/foam_sys information - run_env.set('FOAM_INST_DIR', self.prefix) + # Content for etc/prefs.{csh,sh} + self.etc_prefs = { + '000': { # Sort first + 'compilerInstall': 'System', + }, + '001': {}, + 'cmake': { + 'CMAKE_DIR': spec['cmake'].prefix, + 'CMAKE_BIN_DIR': spec['cmake'].prefix.bin, + }, + 'python': { + 'PYTHON_DIR': spec['python'].prefix, + 'PYTHON_BIN_DIR': spec['python'].prefix.bin, + }, + 'flex': { + 'FLEX_SYSTEM': 1, + 'FLEX_DIR': spec['flex'].prefix, + }, + 'bison': { + 'BISON_SYSTEM': 1, + 'BISON_DIR': spec['flex'].prefix, + }, + 'zlib': { + 'ZLIB_SYSTEM': 1, + 'ZLIB_DIR': spec['zlib'].prefix, + }, + } + # Adjust configuration via prefs - sort second + self.etc_prefs['001'].update(self.foam_cfg) - def install(self, spec, prefix): - env_openfoam = self.get_openfoam_environment() - env_openfoam.apply_modifications() + if '+scotch' in spec or '+ptscotch' in spec: + pkg = spec['scotch'].prefix + self.etc_prefs['scotch'] = { + 'SCOTCH_SYSTEM': 1, + 'SCOTCH_DIR': pkg, + 'SCOTCH_BIN_DIR': pkg.bin, + 'SCOTCH_LIB_DIR': pkg.lib, + 'SCOTCH_INCLUDE_DIR': pkg.include, + } - if self.parallel: + if '+metis' in spec: + pkg = spec['metis'].prefix + self.etc_prefs['metis'] = { + 'METIS_SYSTEM': 1, + 'METIS_DIR': pkg, + 'METIS_BIN_DIR': pkg.bin, + 'METIS_LIB_DIR': pkg.lib, + 'METIS_INCLUDE_DIR': pkg.include, + } + + if '+parmetis' in spec: + pkg = spec['parmetis'].prefix + self.etc_prefs['parametis'] = { + 'PARMETIS_SYSTEM': 1, + 'PARMETIS_DIR': pkg, + 'PARMETIS_BIN_DIR': pkg.bin, + 'PARMETIS_LIB_DIR': pkg.lib, + 'PARMETIS_INCLUDE_DIR': pkg.include, + } + + if '+parmgridgen' in spec: + pkg = spec['parmgridgen'].prefix + self.etc_prefs['parmgridgen'] = { + 'PARMGRIDGEN_SYSTEM': 1, + 'PARMGRIDGEN_DIR': pkg, + 'PARMGRIDGEN_BIN_DIR': pkg.bin, + 'PARMGRIDGEN_LIB_DIR': pkg.lib, + 'PARMGRIDGEN_INCLUDE_DIR': pkg.include, + } + + if '+paraview' in self.spec: + self.etc_prefs['paraview'] = { + 'PARAVIEW_SYSTEM': 1, + 'PARAVIEW_DIR': spec['paraview'].prefix, + 'PARAVIEW_BIN_DIR': spec['paraview'].prefix.bin, + } + self.etc_prefs['qt'] = { + 'QT_SYSTEM': 1, + 'QT_DIR': spec['qt'].prefix, + 'QT_BIN_DIR': spec['qt'].prefix.bin, + } + + # Write prefs files according to the configuration. + # Only need prefs.sh for building, but install both for end-users + write_environ( + self.etc_prefs, + posix=join_path('etc', 'prefs.sh'), + cshell=join_path('etc', 'prefs.csh')) + + archCompiler = self.foam_sys['WM_ARCH'] + self.foam_sys['WM_COMPILER'] + compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] + # general_rule = join_path('wmake', 'rules', 'General') + compiler_rule = join_path('wmake', 'rules', archCompiler) + generate_mplib_rules(compiler_rule, self.spec) + generate_compiler_rules(compiler_rule, compileOpt, self.rpath_info) + # Record the spack spec information + with open("log.spack-spec", 'w') as outfile: + outfile.write(spec.tree()) + + def build(self, spec, prefix): + """Build using the OpenFOAM Allwmake script, with a wrapper to source + its environment first. + """ + self.set_openfoam() # Force proper population of foam_cfg/foam_sys + args = [] + if self.parallel: # Build in parallel? - pass via the environment os.environ['WM_NCOMPPROCS'] = str(self.make_jobs) \ if self.make_jobs else str(multiprocessing.cpu_count()) + builder = Executable(self.build_script) + builder(*args) - allwmake = Executable('./Allwmake') - allwmake() + def install(self, spec, prefix): + """Install under the projectdir (== prefix/name-version)""" + self.build(spec, prefix) # Should be a separate phase + opts = self.wm_options - install_path = \ - join_path(self.prefix, - 'foam-extend-{0}'.format(self.version.up_to(2))) + # Fairly ugly since intermediate targets are scattered inside sources + appdir = 'applications' + mkdirp(self.projectdir, join_path(self.projectdir, appdir)) + + # Retain build log file + out = "spack-build.out" + if isfile(out): + install(out, join_path(self.projectdir, "log." + opts)) + + # All top-level files, except spack build info and possibly Allwmake + if '+source' in spec: + ignored = re.compile(r'^spack-.*') + else: + ignored = re.compile(r'^(Allclean|Allwmake|spack-).*') + + files = [ + f for f in glob.glob("*") if isfile(f) and not ignored.search(f) + ] + for f in files: + install(f, self.projectdir) + + # Install directories. install applications/bin directly + for d in ['bin', 'etc', 'wmake', 'lib', join_path(appdir, 'bin')]: + install_tree( + d, + join_path(self.projectdir, d)) if '+source' in spec: - install_tree('src', join_path(install_path, 'src')) - install_tree('tutorials', join_path(install_path, 'tutorials')) + subitem = join_path(appdir, 'Allwmake') + install(subitem, join_path(self.projectdir, subitem)) - install_tree('lib', join_path(install_path, 'lib')) - install_tree('bin', join_path(install_path, 'bin')) - install_tree('applications', join_path(install_path, 'applications')) - install_tree('etc', join_path(install_path, 'etc')) - install_tree('wmake', join_path(install_path, 'wmake')) + ignored = [opts] # Intermediate targets + for d in ['src', 'tutorials']: + install_tree( + d, + join_path(self.projectdir, d), + ignore=shutil.ignore_patterns(*ignored)) + + for d in ['solvers', 'utilities']: + install_tree( + join_path(appdir, d), + join_path(self.projectdir, appdir, d), + ignore=shutil.ignore_patterns(*ignored)) + + def install_links(self): + """Add symlinks into bin/, lib/ (eg, for other applications)""" + return + +# ----------------------------------------------------------------------------- diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-bin-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/openfoam-bin-1612.patch new file mode 100644 index 00000000000..b9e87a7ec86 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/openfoam-bin-1612.patch @@ -0,0 +1,503 @@ +--- OpenFOAM-v1612+.orig/bin/foamEtcFile 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/bin/foamEtcFile 2017-03-23 10:08:37.296887070 +0100 +@@ -4,7 +4,7 @@ + # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + # \\ / O peration | + # \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation +-# \\/ M anipulation | ++# \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. + #------------------------------------------------------------------------------- + # License + # This file is part of OpenFOAM. +@@ -26,7 +26,7 @@ + # foamEtcFile + # + # Description +-# Locate user/group/shipped file with semantics similar to the ++# Locate user/group/other files with semantics similar to the + # ~OpenFOAM/fileName expansion. + # + # The -mode option can be used to allow chaining from +@@ -34,40 +34,53 @@ + # + # For example, within the user ~/.OpenFOAM//prefs.sh: + # \code +-# foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile -m go prefs.sh` \ +-# && _foamSource $foamPrefs ++# eval $(foamEtcFile -sh -mode=go prefs.sh) + # \endcode + # ++# Environment ++# - WM_PROJECT: (unset defaults to OpenFOAM) ++# - WM_PROJECT_SITE: (unset defaults to PREFIX/site) ++# - WM_PROJECT_VERSION: (unset defaults to detect from path) ++# + # Note +-# This script must exist in $FOAM_INST_DIR/OpenFOAM-/bin/ +-# or $FOAM_INST_DIR/openfoam/bin/ (for the debian version) ++# This script must exist in one of these locations: ++# - $WM_PROJECT_INST_DIR/OpenFOAM-/bin ++# - $WM_PROJECT_INST_DIR/openfoam-/bin ++# - $WM_PROJECT_INST_DIR/OpenFOAM+/bin ++# - $WM_PROJECT_INST_DIR/openfoam+/bin ++# - $WM_PROJECT_INST_DIR/openfoam/bin (debian version) + # + #------------------------------------------------------------------------------- ++unset optQuiet optSilent + usage() { + [ "${optQuiet:-$optSilent}" = true ] && exit 1 +- + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat< any combination of u(user), g(group), o(other) +- -prefix specify an alternative installation prefix +- -quiet suppress all normal output +- -silent suppress all stderr output +- -version specify an alternative OpenFOAM version +- in the form Maj.Min.Rev (eg, 1.7.0) +- -help print the usage ++ -a, -all Return all files (otherwise stop after the first match) ++ -l, -list List directories or files to be checked ++ -list-test List (existing) directories or files to be checked ++ -mode=MODE Any combination of u(user), g(group), o(other) ++ -prefix=DIR Specify an alternative installation prefix ++ -version=VER Specify alternative OpenFOAM version (eg, 3.0, 1612, ...) ++ -csh | -sh Produce output suitable for a csh or sh 'eval' ++ -csh-verbose | -sh-verbose ++ As per -csh | -sh, with additional verbosity ++ -q, -quiet Suppress all normal output ++ -s, -silent Suppress stderr, except -csh-verbose, -sh-verbose output ++ -help Print the usage + +- Locate user/group/shipped file with semantics similar to the ++ Locate user/group/other file with semantics similar to the + ~OpenFOAM/fileName expansion. + +- The options can also be specified as a single character +- (eg, '-q' instead of '-quiet'), but must not be grouped. ++ Single character options must not be grouped. Equivalent options: ++ -mode=MODE, -mode MODE, -m MODE ++ -prefix=DIR, -prefix DIR, -p DIR ++ -version=VER, -version VER, -v VER + + Exit status + 0 when the file is found. Print resolved path to stdout. +@@ -78,61 +91,117 @@ + exit 1 + } + +-#------------------------------------------------------------------------------- ++# Report error and exit ++die() ++{ ++ [ "${optQuiet:-$optSilent}" = true ] && exit 1 ++ exec 1>&2 ++ echo ++ echo "Error encountered:" ++ while [ "$#" -ge 1 ]; do echo " $1"; shift; done ++ echo ++ echo "See 'foamEtcFile -help' for usage" ++ echo ++ exit 1 ++} + +-# the bin dir: +-binDir="${0%/*}" ++#------------------------------------------------------------------------------- ++binDir="${0%/*}" # The bin dir ++projectDir="${binDir%/bin}" # The project dir ++prefixDir="${projectDir%/*}" # The prefix dir (same as $WM_PROJECT_INST_DIR) + +-# the project dir: ++# Could not resolve projectDir, prefixDir? (eg, called as ./bin/foamEtcFile) ++if [ "$prefixDir" = "$projectDir" ] ++then ++ binDir="$(cd $binDir && pwd -L)" + projectDir="${binDir%/bin}" +- +-# the prefix dir (same as $FOAM_INST_DIR): + prefixDir="${projectDir%/*}" ++fi ++projectDirName="${projectDir##*/}" # The project directory name + +-# the name used for the project directory +-projectDirName="${projectDir##*/}" ++projectName="${WM_PROJECT:-OpenFOAM}" # The project name ++projectVersion="$WM_PROJECT_VERSION" # Empty? - will be treated later + +-# version number used for debian packaging +-unset versionNum + ++#------------------------------------------------------------------------------- ++ ++# Guess project version or simply get the stem part of the projectDirName. ++# Handle standard and debian naming conventions. + # +-# handle standard and debian naming convention ++# - projectVersion: update unless already set + # +-case "$projectDirName" in +-OpenFOAM-*) # standard naming convention OpenFOAM- +- version="${projectDirName##OpenFOAM-}" +- ;; ++# Helper variables: ++# - dirBase (for reassembling name) == projectDirName without the version ++# - versionNum (debian packaging) ++unset dirBase versionNum ++guessVersion() ++{ ++ local version + +-openfoam[0-9]* | openfoam-dev) # debian naming convention 'openfoam' +- versionNum="${projectDirName##openfoam}" +- case "$versionNum" in +- ??) # convert 2 digit version number to decimal delineated +- version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)@\1.\2@') +- ;; +- ???) # convert 3 digit version number to decimal delineated +- version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)@\1.\2.\3@') +- ;; +- ????) # convert 4 digit version number to decimal delineated +- version=$(echo "$versionNum" | sed -e 's@\(.\)\(.\)\(.\)\(.\)@\1.\2.\3.\4@') +- ;; +- *) # failback - use current environment setting +- version="$WM_PROJECT_VERSION" ++ case "$projectDirName" in ++ (OpenFOAM-* | openfoam-*) ++ # Standard naming: OpenFOAM- or openfoam- ++ dirBase="${projectDirName%%-*}-" ++ version="${projectDirName#*-}" ++ version="${version%%*-}" # Extra safety, eg openfoam-version-packager ++ ;; ++ ++ (OpenFOAM+* | openfoam+*) ++ # Alternative naming: OpenFOAM+ or openfoam+ ++ dirBase="${projectDirName%%+*}+" ++ version="${projectDirName#*+}" ++ version="${version%%*-}" # Extra safety, eg openfoam-version-packager ++ ;; ++ ++ (openfoam[0-9]*) ++ # Debian naming: openfoam ++ dirBase="openfoam" ++ version="${projectDirName#openfoam}" ++ versionNum="$version" ++ ++ # Convert digits version number to decimal delineated ++ case "${#versionNum}" in (2|3|4) ++ version=$(echo "$versionNum" | sed -e 's@\([0-9]\)@\1.@g') ++ version="${version%.}" + ;; + esac ++ ++ # Ignore special treatment if no decimals were inserted. ++ [ "${#version}" -gt "${#versionNum}" ] || unset versionNum + ;; + +-*) +- echo "Error : unknown/unsupported naming convention" +- exit 1 ++ (*) ++ die "unknown/unsupported naming convention for '$projectDirName'" + ;; + esac + ++ # Set projectVersion if required ++ : ${projectVersion:=$version} ++} ++ ++ ++# Set projectVersion and update versionNum, projectDirName accordingly ++setVersion() ++{ ++ projectVersion="$1" ++ ++ # Need dirBase when reassembling projectDirName ++ [ -n "$dirBase" ] || guessVersion ++ ++ # Debian: update x.y.z -> xyz version ++ if [ -n "$versionNum" ] ++ then ++ versionNum=$(echo "$projectVersion" | sed -e 's@\.@@g') ++ fi ++ ++ projectDirName="$dirBase${versionNum:-$projectVersion}" ++} ++ + +-# default mode is 'ugo' +-mode=ugo +-unset optAll optList optQuiet optSilent ++optMode=ugo # Default mode is always 'ugo' ++unset optAll optList optShell optVersion + +-# parse options ++# Parse options + while [ "$#" -gt 0 ] + do + case "$1" in +@@ -141,27 +210,45 @@ + ;; + -a | -all) + optAll=true ++ unset optShell + ;; + -l | -list) + optList=true ++ unset optShell ++ ;; ++ -list-test) ++ optList='test' ++ unset optShell ++ ;; ++ -csh | -sh | -csh-verbose | -sh-verbose) ++ optShell="${1#-}" ++ unset optAll ++ ;; ++ -mode=[ugo]*) ++ optMode="${1#*=}" ++ ;; ++ -prefix=/*) ++ prefixDir="${1#*=}" ++ prefixDir="${prefixDir%/}" ++ ;; ++ -version=*) ++ optVersion="${1#*=}" + ;; + -m | -mode) +- [ "$#" -ge 2 ] || usage "'$1' option requires an argument" +- mode="$2" +- +- # sanity check: +- case "$mode" in +- *u* | *g* | *o* ) ++ optMode="$2" ++ shift ++ # Sanity check. Handles missing argument too. ++ case "$optMode" in ++ ([ugo]*) + ;; +- *) +- usage "'$1' option with invalid mode '$mode'" ++ (*) ++ die "invalid mode '$optMode'" + ;; + esac +- shift + ;; + -p | -prefix) +- [ "$#" -ge 2 ] || usage "'$1' option requires an argument" +- prefixDir="$2" ++ [ "$#" -ge 2 ] || die "'$1' option requires an argument" ++ prefixDir="${2%/}" + shift + ;; + -q | -quiet) +@@ -171,13 +258,8 @@ + optSilent=true + ;; + -v | -version) +- [ "$#" -ge 2 ] || usage "'$1' option requires an argument" +- version="$2" +- # convert x.y.z -> xyz version (if installation looked like debian) +- if [ -n "$versionNum" ] +- then +- versionNum=$(echo "$version" | sed -e 's@\.@@g') +- fi ++ [ "$#" -ge 2 ] || die "'$1' option requires an argument" ++ optVersion="$2" + shift + ;; + --) +@@ -185,7 +267,7 @@ + break + ;; + -*) +- usage "unknown option: '$*'" ++ die "unknown option: '$1'" + ;; + *) + break +@@ -195,11 +277,28 @@ + done + + +-# debugging: +-# echo "Installed locations:" +-# for i in projectDir prefixDir projectDirName version versionNum ++#------------------------------------------------------------------------------- ++ ++if [ -n "$optVersion" ] ++then ++ setVersion $optVersion ++elif [ -z "$projectVersion" ] ++then ++ guessVersion ++fi ++ ++# Updates: ++# - projectDir for changes via -prefix or -version ++# - projectSite for changes via -prefix ++projectDir="$prefixDir/$projectDirName" ++projectSite="${WM_PROJECT_SITE:-$prefixDir/site}" ++ ++ ++# Debugging: ++# echo "Installed locations:" 1>&2 ++# for i in projectDir prefixDir projectDirName projectVersion + # do +-# eval echo "$i=\$$i" ++# eval echo "$i=\$$i" 1>&2 + # done + + +@@ -210,30 +309,18 @@ + + # Define the various places to be searched: + unset dirList +-case "$mode" in +-*u*) # user +- userDir="$HOME/.${WM_PROJECT:-OpenFOAM}" +- dirList="$dirList $userDir/$version $userDir" ++case "$optMode" in (*u*) # (U)ser ++ dirList="$dirList $HOME/.$projectName/$projectVersion $HOME/.$projectName" + ;; + esac + +-case "$mode" in +-*g*) # group (site) +- siteDir="${WM_PROJECT_SITE:-$prefixDir/site}" +- dirList="$dirList $siteDir/$version $siteDir" ++case "$optMode" in (*g*) # (G)roup == site ++ dirList="$dirList $projectSite/$projectVersion $projectSite" + ;; + esac + +-case "$mode" in +-*o*) # other (shipped) +- if [ -n "$versionNum" ] +- then +- # debian packaging +- dirList="$dirList $prefixDir/openfoam$versionNum/etc" +- else +- # standard packaging +- dirList="$dirList $prefixDir/${WM_PROJECT:-OpenFOAM}-$version/etc" +- fi ++case "$optMode" in (*o*) # (O)ther == shipped ++ dirList="$dirList $projectDir/etc" + ;; + esac + set -- $dirList +@@ -244,50 +331,87 @@ + # + + exitCode=0 +-if [ "$optList" = true ] ++if [ -n "$optList" ] + then + +- # list directories, or potential file locations +- [ "$nArgs" -le 1 ] || usage ++ # List directories, or potential file locations ++ [ "$nArgs" -le 1 ] || \ ++ die "-list expects 0 or 1 filename, but $nArgs provided" ++ ++ # A silly combination, but -quiet does have precedence ++ [ -n "$optQuiet" ] && exit 0 + +- # a silly combination, but -quiet does have precedence +- [ "$optQuiet" = true ] && exit 0 ++ # Test for directory or file too? ++ if [ "$optList" = "test" ] ++ then ++ exitCode=2 # Fallback to a general error (file not found) + ++ if [ "$nArgs" -eq 1 ] ++ then + for dir + do +- if [ "$nArgs" -eq 1 ] ++ resolved="$dir/$fileName" ++ if [ -f "$resolved" ] + then +- echo "$dir/$fileName" ++ echo "$resolved" ++ exitCode=0 # OK ++ fi ++ done + else ++ for dir ++ do ++ if [ -d "$dir" ] ++ then + echo "$dir" ++ exitCode=0 # OK + fi + done ++ fi ++ else ++ for dir ++ do ++ echo "$dir${fileName:+/}$fileName" ++ done ++ fi + + else + +- [ "$nArgs" -eq 1 ] || usage ++ [ "$nArgs" -eq 1 ] || die "One filename expected - $nArgs provided" + +- # general error, eg file not found +- exitCode=2 ++ exitCode=2 # Fallback to a general error (file not found) + + for dir + do + if [ -f "$dir/$fileName" ] + then + exitCode=0 +- if [ "$optQuiet" = true ] +- then ++ [ -n "$optQuiet" ] && break ++ ++ case "$optShell" in ++ (*verbose) ++ echo "Using: $dir/$fileName" 1>&2 ++ ;; ++ esac ++ ++ case "$optShell" in ++ csh*) ++ echo "source $dir/$fileName" + break +- else ++ ;; ++ sh*) ++ echo ". $dir/$fileName" ++ break ++ ;; ++ *) + echo "$dir/$fileName" +- [ "$optAll" = true ] || break +- fi ++ [ -n "$optAll" ] || break ++ ;; ++ esac + fi + done + + fi + +- + exit $exitCode + + #------------------------------------------------------------------------------ diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-build-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/openfoam-build-1612.patch new file mode 100644 index 00000000000..26e2d8f085a --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/openfoam-build-1612.patch @@ -0,0 +1,17 @@ +--- OpenFOAM-v1612+.orig/Allwmake 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/Allwmake 2017-03-29 09:08:15.503865203 +0200 +@@ -17,6 +17,14 @@ + exit 1 + } + ++#------------------------------------------------------------------------------ ++echo "========================================" ++date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown" ++echo "Starting ${WM_PROJECT_DIR##*/} ${0##*}" ++echo " $WM_COMPILER $WM_COMPILER_TYPE compiler" ++echo " ${WM_OPTIONS}, with ${WM_MPLIB} ${FOAM_MPI}" ++echo ++ + # Compile wmake support applications + (cd wmake/src && make) + diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-etc-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/openfoam-etc-1612.patch new file mode 100644 index 00000000000..dd8146e9535 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/openfoam-etc-1612.patch @@ -0,0 +1,41 @@ +--- OpenFOAM-v1612+.orig/etc/bashrc 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/etc/bashrc 2017-03-22 16:05:05.751237072 +0100 +@@ -42,7 +42,8 @@ + # + # Please set to the appropriate path if the default is not correct. + # +-[ $BASH_SOURCE ] && FOAM_INST_DIR=$(\cd ${BASH_SOURCE%/*/*/*} && \pwd -P) || \ ++rc="${BASH_SOURCE:-${ZSH_NAME:+$0}}" ++[ -n "$rc" ] && FOAM_INST_DIR=$(\cd $(dirname $rc)/../.. && \pwd -L) || \ + FOAM_INST_DIR=$HOME/$WM_PROJECT + # FOAM_INST_DIR=~$WM_PROJECT + # FOAM_INST_DIR=/opt/$WM_PROJECT +@@ -135,8 +136,10 @@ + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + . $WM_PROJECT_DIR/etc/config.sh/functions + +-# Add in preset user or site preferences: +-_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh` ++# Override definitions via prefs, with 'other' first so the sys-admin ++# can provide base values independent of WM_PROJECT_SITE ++_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode o prefs.sh` ++_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode ug prefs.sh` + + # Evaluate command-line parameters and record settings for later + # these can be used to set/unset values, or specify alternative pref files +diff -uw OpenFOAM-v1612+.orig/etc/cshrc OpenFOAM-v1612+/etc/cshrc +--- OpenFOAM-v1612+.orig/etc/cshrc 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/etc/cshrc 2017-03-22 16:04:51.839291067 +0100 +@@ -148,8 +148,10 @@ + # Source files, possibly with some verbosity + alias _foamSource 'if ($?FOAM_VERBOSE && $?prompt) echo "Sourcing: \!*"; if (\!* != "") source \!*' + +-# Add in preset user or site preferences: +-_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.csh` ++# Override definitions via prefs, with 'other' first so the sys-admin ++# can provide base values independent of WM_PROJECT_SITE ++_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode o prefs.csh` ++_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile -mode ug prefs.csh` + + # Evaluate command-line parameters and record settings for later + # these can be used to set/unset values, or specify alternative pref files diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-mpi-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/openfoam-mpi-1612.patch new file mode 100644 index 00000000000..b3663b0a497 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/openfoam-mpi-1612.patch @@ -0,0 +1,36 @@ +--- OpenFOAM-v1612+.orig/etc/config.sh/mpi 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/etc/config.sh/mpi 2017-03-29 13:55:57.507980699 +0200 +@@ -75,8 +75,15 @@ + _foamAddMan $MPI_ARCH_PATH/share/man + ;; + ++USERMPI) ++ # Use an arbitrary, user-specified mpi implementation ++ export FOAM_MPI=mpi-user ++ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi-user` ++ ;; ++ + SYSTEMMPI) + export FOAM_MPI=mpi-system ++ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi-system` + + if [ -z "$MPI_ROOT" ] + then +--- OpenFOAM-v1612+.orig/etc/config.csh/mpi 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/etc/config.csh/mpi 2017-03-29 13:56:36.347835938 +0200 +@@ -71,8 +71,15 @@ + _foamAddMan $MPI_ARCH_PATH/share/man + breaksw + ++case USERMPI: ++ # Use an arbitrary, user-specified mpi implementation ++ setenv FOAM_MPI mpi-user ++ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi-user` ++ breaksw ++ + case SYSTEMMPI: + setenv FOAM_MPI mpi-system ++ _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi-system` + + if ( ! ($?MPI_ROOT) ) then + echo diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-site.patch b/var/spack/repos/builtin/packages/openfoam-com/openfoam-site.patch new file mode 100644 index 00000000000..66310257885 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/openfoam-site.patch @@ -0,0 +1,42 @@ +diff -uw OpenFOAM-v1612+.orig/etc/config.sh/settings OpenFOAM-v1612+/etc/config.sh/settings +--- OpenFOAM-v1612+.orig/etc/config.sh/settings 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/etc/config.sh/settings 2017-03-23 12:22:52.002101020 +0100 +@@ -141,7 +141,7 @@ + #------------------------------------------------------------------------------ + + # Location of the jobControl directory +-export FOAM_JOB_DIR=$WM_PROJECT_INST_DIR/jobControl ++export FOAM_JOB_DIR=$HOME/$WM_PROJECT/jobControl #SPACK: non-central location + + # wmake configuration + export WM_DIR=$WM_PROJECT_DIR/wmake +@@ -157,7 +157,7 @@ + export FOAM_EXT_LIBBIN=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib + + # Site-specific directory +-siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_INST_DIR/site}" ++siteDir="${WM_PROJECT_SITE:-$WM_PROJECT/site}" #SPACK: not in parent directory + + # Shared site executables/libraries + # Similar naming convention as ~OpenFOAM expansion +diff -uw OpenFOAM-v1612+.orig/etc/config.csh/settings OpenFOAM-v1612+/etc/config.csh/settings +--- OpenFOAM-v1612+.orig/etc/config.csh/settings 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/etc/config.csh/settings 2017-03-23 12:23:52.737891912 +0100 +@@ -137,7 +137,7 @@ + #------------------------------------------------------------------------------ + + # Location of the jobControl directory +-setenv FOAM_JOB_DIR $WM_PROJECT_INST_DIR/jobControl ++setenv FOAM_JOB_DIR=$HOME/$WM_PROJECT/jobControl #SPACK: non-central location + + # wmake configuration + setenv WM_DIR $WM_PROJECT_DIR/wmake +@@ -156,7 +156,7 @@ + if ( $?WM_PROJECT_SITE ) then + set siteDir=$WM_PROJECT_SITE + else +- set siteDir=$WM_PROJECT_INST_DIR/site ++ set siteDir=$WM_PROJECT_DIR/site #SPACK: not in parent directory + endif + + # Shared site executables/libraries diff --git a/var/spack/repos/builtin/packages/openfoam-com/package.py b/var/spack/repos/builtin/packages/openfoam-com/package.py new file mode 100644 index 00000000000..fcd33eadcbf --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/package.py @@ -0,0 +1,722 @@ +############################################################################## +# Copyright (c) 2017 Mark Olesen, OpenCFD Ltd. +# +# This file was authored by Mark Olesen +# and is released as part of spack under the LGPL license. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for the LLNL notice and the LGPL. +# +# License +# ------- +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Legal Notice +# ------------ +# OPENFOAM is a trademark owned by OpenCFD Ltd +# (producer and distributor of the OpenFOAM software via www.openfoam.com). +# The trademark information must remain visible and unadulterated in this +# file and via the "spack info" and comply with the term set by +# http://openfoam.com/legal/trademark-policy.php +# +# This file is not part of OpenFOAM, nor does it constitute a component of an +# OpenFOAM distribution. +# +############################################################################## +# +# Notes +# - mpi handling: WM_MPLIB=USERMPI and use spack to populate an appropriate +# configuration and generate wmake rules for 'USER' and 'USERMPI' +# mpi implementations. +# +# - Resolution of flex, zlib needs more attention (within OpenFOAM) +# - +paraview: +# depends_on should just be 'paraview+plugins' but that resolves poorly. +# Workaround: use preferred variants "+plugins +qt" +# packages: +# paraview: +# variants: +plugins +qt +# in ~/.spack/packages.yaml +# +# - Combining +zoltan with +int64 has not been tested, but probably won't work. +# +############################################################################## +from spack import * +from spack.environment import * + +import glob +import re +import shutil +import os +from os.path import isdir, isfile + +# Not the nice way of doing things, but is a start for refactoring +__all__ = [ + 'format_export', + 'format_setenv', + 'write_environ', + 'rewrite_environ_files', + 'mplib_content', + 'generate_mplib_rules', + 'generate_compiler_rules', +] + + +def format_export(key, value): + """Format key,value pair as 'export' with newline for POSIX shell.""" + return 'export {0}={1}\n'.format(key, value) + + +def format_setenv(key, value): + """Format key,value pair as 'setenv' with newline for C-shell.""" + return 'setenv {0} {1}\n'.format(key, value) + + +def _write_environ_entries(outfile, environ, formatter): + """Write environment settings as 'export' or 'setenv'. + If environ is a dict, write in sorted order. + If environ is a list, write pair-wise. + Also descends into sub-dict and sub-list, but drops the key. + """ + if isinstance(environ, dict): + for key in sorted(environ): + entry = environ[key] + if isinstance(entry, dict): + _write_environ_entries(outfile, entry, formatter) + elif isinstance(entry, list): + _write_environ_entries(outfile, entry, formatter) + else: + outfile.write(formatter(key, entry)) + elif isinstance(environ, list): + for item in environ: + outfile.write(formatter(item[0], item[1])) + + +def _write_environ_file(output, environ, formatter): + """Write environment settings as 'export' or 'setenv'. + If environ is a dict, write in sorted order. + If environ is a list, write pair-wise. + Also descends into sub-dict and sub-list, but drops the key. + """ + with open(output, 'w') as outfile: + outfile.write('# SPACK settings\n\n') + _write_environ_entries(outfile, environ, formatter) + + +def write_environ(environ, **kwargs): + """Write environment settings as 'export' or 'setenv'. + If environ is a dict, write in sorted order. + If environ is a list, write pair-wise. + + Keyword Options: + posix[=None] If set, the name of the POSIX file to rewrite. + cshell[=None] If set, the name of the C-shell file to rewrite. + """ + posix = kwargs.get('posix', None) + if posix: + _write_environ_file(posix, environ, format_export) + cshell = kwargs.get('cshell', None) + if cshell: + _write_environ_file(cshell, environ, format_setenv) + + +def rewrite_environ_files(environ, **kwargs): + """Use filter_file to rewrite (existing) POSIX shell or C-shell files. + Keyword Options: + posix[=None] If set, the name of the POSIX file to rewrite. + cshell[=None] If set, the name of the C-shell file to rewrite. + """ + posix = kwargs.get('posix', None) + if posix and isfile(posix): + for k, v in environ.iteritems(): + filter_file( + r'^(\s*export\s+%s)=.*$' % k, + r'\1=%s' % v, + posix, + backup=False) + cshell = kwargs.get('cshell', None) + if cshell and isfile(cshell): + for k, v in environ.iteritems(): + filter_file( + r'^(\s*setenv\s+%s)\s+.*$' % k, + r'\1 %s' % v, + cshell, + backup=False) + + +def pkglib(package): + """Get lib64 or lib from package prefix""" + libdir = package.prefix.lib64 + if isdir(libdir): + return libdir + return package.prefix.lib + + +def mplib_content(spec, pre=None): + """The mpi settings to have wmake + use spack information with minimum modifications to OpenFOAM. + + Optional parameter 'pre' to provid alternative prefix + """ + mpi_spec = spec['mpi'] + bin = mpi_spec.prefix.bin + inc = mpi_spec.prefix.include + lib = pkglib(mpi_spec) + if pre: + bin = join_path(pre, os.path.basename(bin)) + inc = join_path(pre, os.path.basename(inc)) + lib = join_path(pre, os.path.basename(lib)) + else: + pre = mpi_spec.prefix + + info = { + 'name': '{0}-{1}'.format(mpi_spec.name, mpi_spec.version), + 'prefix': pre, + 'include': inc, + 'bindir': bin, + 'libdir': lib, + 'FLAGS': '-DOMPI_SKIP_MPICXX -DMPICH_IGNORE_CXX_SEEK', + 'PINC': '-I{0}'.format(inc), + 'PLIBS': '-L{0} -lmpi'.format(lib), + } + return info + + +def generate_mplib_rules(directory, spec): + """ Create mplibUSER,mplibUSERMPI rules in the specified directory""" + content = mplib_content(spec) + with working_dir(directory): + for mplib in ['mplibUSER', 'mplibUSERMPI']: + with open(mplib, 'w') as out: + out.write("""# Use mpi from spack ({name})\n +PFLAGS = {FLAGS} +PINC = {PINC} +PLIBS = {PLIBS} +""".format(**content)) + + +def generate_compiler_rules(directory, compOpt, value): + """ Create cSPACKOpt,c++SPACKOpt rules in the specified directory. + The file content is copied and filtered from the corresponding + cOpt,c++Opt rules""" + # Compiler options for SPACK - eg, wmake/rules/linux64Gcc/ + # Copy from existing cOpt, c++Opt and modify DBUG value + with working_dir(directory): + for lang in ['c', 'c++']: + src = '{0}Opt'.format(lang) + dst = '{0}{1}'.format(lang, compOpt) + shutil.copyfile(src, dst) # src -> dst + filter_file( + r'^(\S+DBUG\s*)=.*$', + r'\1= %s' % value, + dst, + backup=False) + + +class OpenfoamCom(Package): + """OpenFOAM is a GPL-opensource C++ CFD-toolbox. + This offering is supported by OpenCFD Ltd, + producer and distributor of the OpenFOAM software via www.openfoam.com, + and owner of the OPENFOAM trademark. + OpenCFD Ltd has been developing and releasing OpenFOAM since its debut + in 2004. + """ + + homepage = "http://www.openfoam.com/" + baseurl = "https://sourceforge.net/projects/openfoamplus/files" + + version('1612', 'ca02c491369150ab127cbb88ec60fbdf', + url=baseurl + '/v1612+/OpenFOAM-v1612+.tgz') + + variant('int64', default=False, + description='Compile with 64-bit labels') + variant('float32', default=False, + description='Compile with 32-bit scalar (single-precision)') + variant('knl', default=False, + description='Use KNL compiler settings') + + variant('scotch', default=True, + description='With scotch/ptscotch for decomposition') + variant('metis', default=False, + description='With metis for decomposition') + variant('zoltan', default=False, + description='With zoltan renumbering') + # TODO?# variant('parmgridgen', default=True, + # TODO?# description='With parmgridgen support') + variant('source', default=True, + description='Install library/application sources and tutorials') + + variant('paraview', default=True, + description='Build paraview plugins and runtime post-processing') + + #: Map spack compiler names to OpenFOAM compiler names + # By default, simply capitalize the first letter + compiler_mapping = {'intel': 'icc'} + + provides('openfoam') + depends_on('mpi') + depends_on('zlib') + depends_on('fftw') + depends_on('boost') + depends_on('cgal') + depends_on('flex@:2.6.1') # <- restriction due to scotch + depends_on('cmake', type='build') + + # Require scotch with ptscotch - corresponds to standard OpenFOAM setup + depends_on('scotch~int64+mpi', when='+scotch~int64') + depends_on('scotch+int64+mpi', when='+scotch+int64') + depends_on('metis@5:', when='+metis') + depends_on('metis+int64', when='+metis+int64') + depends_on('parmgridgen', when='+parmgridgen') + depends_on('zoltan', when='+zoltan') + + # For OpenFOAM plugins and run-time post-processing this should just be + # 'paraview+plugins' but that resolves poorly. + # Workaround: use preferred variants "+plugins +qt" in + # ~/.spack/packages.yaml + + # 1612 plugins need older paraview + # The native reader in paraview 5.2 is broken, so start after that + depends_on('paraview@:5.0.1', when='@:1612+paraview') + depends_on('paraview@5.3:', when='@1706:+paraview') + + # General patches + patch('openfoam-site.patch') + + # Version-specific patches + patch('openfoam-bin-1612.patch', when='@1612') + patch('openfoam-etc-1612.patch', when='@1612') + patch('openfoam-mpi-1612.patch', when='@1612') + patch('openfoam-build-1612.patch', when='@1612') + patch('scotch-metis-lib-1612.patch', when='@1612') + patch('zoltan-lib-1612.patch', when='@1612') + + # Some user settings, to be adjusted manually or via variants + foam_cfg = { + 'WM_COMPILER': 'Gcc', # <- %compiler + 'WM_ARCH_OPTION': '64', # (32/64-bit on x86_64) + 'WM_LABEL_SIZE': '32', # <- +int64 + 'WM_PRECISION_OPTION': 'DP', # <- +float32 + 'WM_COMPILE_OPTION': 'SPACKOpt', # Do not change + 'WM_MPLIB': 'USERMPI', # Use user mpi for spack + } + + # The system description is frequently needed + foam_sys = { + 'WM_ARCH': None, + 'WM_COMPILER': None, + 'WM_OPTIONS': None, + } + + # Content for etc/prefs.{csh,sh} + etc_prefs = {} + + # Content for etc/config.{csh,sh}/ files + etc_config = {} + + build_script = './spack-Allwmake' # <- Generated by patch() method. + # phases = ['configure', 'build', 'install'] + # build_system_class = 'OpenfoamCom' + + # Add symlinks into bin/, lib/ (eg, for other applications) + extra_symlinks = False + + # Quickly enable/disable testing with the current develop branch + if False: + version( + 'plus', + branch='develop', + git='file://{0}/{1}' + .format(os.path.expanduser("~"), 'openfoam/OpenFOAM-plus/.git')) + + def setup_environment(self, spack_env, run_env): + run_env.set('WM_PROJECT_DIR', self.projectdir) + + @property + def projectdir(self): + """Absolute location of project directory: WM_PROJECT_DIR/""" + return self.prefix # <- install directly under prefix + + @property + def etc(self): + """Absolute location of the OpenFOAM etc/ directory""" + return join_path(self.projectdir, 'etc') + + @property + def archbin(self): + """Relative location of architecture-specific executables""" + return join_path('platforms', self.wm_options, 'bin') + + @property + def archlib(self): + """Relative location of architecture-specific libraries""" + return join_path('platforms', self.wm_options, 'lib') + + @property + def wm_options(self): + """The architecture+compiler+options for OpenFOAM""" + opts = self.set_openfoam() + return opts + + @property + def rpath_info(self): + """Define 'SPACKOpt' compiler optimization file to have wmake + use spack information with minimum modifications to OpenFOAM + """ + build_libpath = join_path(self.stage.source_path, self.archlib) + install_libpath = join_path(self.projectdir, self.archlib) + + # 'DBUG': rpaths + return '{0}{1} {2}{3}'.format( + self.compiler.cxx_rpath_arg, install_libpath, + self.compiler.cxx_rpath_arg, build_libpath) + + def openfoam_arch(self): + """Return an architecture value similar to what OpenFOAM does in + etc/config.sh/settings, but slightly more generous. + Uses and may adjust foam_cfg[WM_ARCH_OPTION] as a side-effect + """ + # spec.architecture.platform is like `uname -s`, but lower-case + platform = self.spec.architecture.platform + + # spec.architecture.target is like `uname -m` + target = self.spec.architecture.target + + if platform == 'linux': + if target == 'i686': + self.foam_cfg['WM_ARCH_OPTION'] = '32' # Force consistency + elif target == 'x86_64': + if self.foam_cfg['WM_ARCH_OPTION'] == '64': + platform += '64' + elif target == 'ia64': + platform += 'ia64' + elif target == 'armv7l': + platform += 'ARM7' + elif target == ppc64: + platform += 'PPC64' + elif target == ppc64le: + platform += 'PPC64le' + elif platform == 'darwin': + if target == 'x86_64': + platform += 'Intel' + if self.foam_cfg['WM_ARCH_OPTION'] == '64': + platform += '64' + # ... and others? + return platform + + def openfoam_compiler(self): + """Capitalized version of the compiler name, which usually corresponds + to how OpenFOAM will camel-case things. + Use compiler_mapping to handing special cases. + Also handle special compiler options (eg, KNL) + """ + comp = self.compiler.name + if comp in self.compiler_mapping: + comp = self.compiler_mapping[comp] + comp = comp.capitalize() + + if '+knl' in self.spec: + comp += 'KNL' + return comp + + def set_openfoam(self): + """Populate foam_cfg, foam_sys according to + variants, architecture, compiler. + Returns WM_OPTIONS. + """ + # Run once + opts = self.foam_sys['WM_OPTIONS'] + if opts: + return opts + + wm_arch = self.openfoam_arch() + wm_compiler = self.openfoam_compiler() + compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] + + # Insist on a wmake rule for this architecture/compiler combination + archCompiler = wm_arch + wm_compiler + compiler_rule = join_path( + self.stage.source_path, 'wmake', 'rules', archCompiler) + + if not isdir(compiler_rule): + raise RuntimeError( + 'No wmake rule for {0}'.format(archCompiler)) + if not re.match(r'.+Opt$', compileOpt): + raise RuntimeError( + "WM_COMPILE_OPTION={0} is not type '*Opt'".format(compileOpt)) + + # Adjust for variants + self.foam_cfg['WM_LABEL_SIZE'] = ( + '64' if '+int64' in self.spec else '32' + ) + self.foam_cfg['WM_PRECISION_OPTION'] = ( + 'SP' if '+float32' in self.spec else 'DP' + ) + + # ---- + # WM_LABEL_OPTION=Int$WM_LABEL_SIZE + # WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION$WM_COMPILE_OPTION + # ---- + self.foam_sys['WM_ARCH'] = wm_arch + self.foam_sys['WM_COMPILER'] = wm_compiler + self.foam_cfg['WM_COMPILER'] = wm_compiler # For bashrc,cshrc too + self.foam_sys['WM_OPTIONS'] = ''.join([ + wm_arch, + wm_compiler, + self.foam_cfg['WM_PRECISION_OPTION'], + 'Int', self.foam_cfg['WM_LABEL_SIZE'], # Int32/Int64 + compileOpt + ]) + return self.foam_sys['WM_OPTIONS'] + + def patch(self): + """Adjust OpenFOAM build for spack. Where needed, apply filter as an + alternative to normal patching. + """ + self.set_openfoam() # May need foam_cfg/foam_sys information + + # Avoid WM_PROJECT_INST_DIR for ThirdParty, site or jobControl. + # Use openfoam-site.patch to handle jobControl, site. + # + # Filter (not patch) bashrc,cshrc for additional flexibility + wm_setting = { + 'WM_THIRD_PARTY_DIR': + r'$WM_PROJECT_DIR/ThirdParty #SPACK: No separate third-party', + } + + rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc + wm_setting, + posix=join_path('etc', 'bashrc'), + cshell=join_path('etc', 'cshrc')) + + # Adjust ParMGridGen - this is still a mess. + # We also have no assurances about sizes (int/long, float/double) etc. + # + # Need to adjust src/fvAgglomerationMethods/Allwmake + # "export ParMGridGen=%s" % spec['parmgridgen'].prefix + # + # and src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options + # "-I=%s" % spec['parmgridgen'].include + # "-L=%s -lmgrid" % spec['parmgridgen'].lib + + # Build wrapper script + with open(self.build_script, 'w') as out: + out.write( + """#!/bin/bash +. $PWD/etc/bashrc '' # No arguments +mkdir -p $FOAM_APPBIN $FOAM_LIBBIN 2>/dev/null # Allow interrupt +echo Build openfoam with SPACK +echo WM_PROJECT_DIR = $WM_PROJECT_DIR +./Allwmake $@ +# +""") + set_executable(self.build_script) + self.configure(self.spec, self.prefix) # Should be a separate phase + + def configure(self, spec, prefix): + """Make adjustments to the OpenFOAM configuration files in their various + locations: etc/bashrc, etc/config.sh/FEATURE and customizations that + don't properly fit get placed in the etc/prefs.sh file (similiarly for + csh). + """ + self.set_openfoam() # Need foam_cfg/foam_sys information + + # Some settings for filtering bashrc, cshrc + wm_setting = {} + wm_setting.update(self.foam_cfg) + + rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc + wm_setting, + posix=join_path('etc', 'bashrc'), + cshell=join_path('etc', 'cshrc')) + + # Content for etc/prefs.{csh,sh} + self.etc_prefs = { + # TODO + # 'CMAKE_ARCH_PATH': spec['cmake'].prefix, + # 'FLEX_ARCH_PATH': spec['flex'].prefix, + # 'ZLIB_ARCH_PATH': spec['zlib'].prefix, + } + + # MPI content, using MPI_ARCH_PATH + content = mplib_content(spec, '${MPI_ARCH_PATH}') + + # Content for etc/config.{csh,sh}/ files + self.etc_config = { + 'CGAL': { + 'BOOST_ARCH_PATH': spec['boost'].prefix, + 'CGAL_ARCH_PATH': spec['cgal'].prefix, + }, + 'FFTW': { + 'FFTW_ARCH_PATH': spec['fftw'].prefix, + }, + # User-defined MPI + 'mpi-user': [ + ('MPI_ARCH_PATH', spec['mpi'].prefix), # Absolute + ('LD_LIBRARY_PATH', + '"%s:${LD_LIBRARY_PATH}"' % content['libdir']), + ('PATH', '"%s:${PATH}"' % content['bindir']), + ], + 'scotch': {}, + 'metis': {}, + 'paraview': [], + } + + if '+scotch' in spec: + self.etc_config['scotch'] = { + 'SCOTCH_ARCH_PATH': spec['scotch'].prefix, + # For src/parallel/decompose/Allwmake + 'SCOTCH_VERSION': 'scotch-{0}'.format(spec['scotch'].version), + } + + if '+metis' in spec: + self.etc_config['metis'] = { + 'METIS_ARCH_PATH': spec['metis'].prefix, + } + + if '+paraview' in spec: + pvMajor = 'paraview-{0}'.format(spec['paraview'].version.up_to(2)) + self.etc_config['paraview'] = [ + ('ParaView_DIR', spec['paraview'].prefix), + ('ParaView_INCLUDE_DIR', '$ParaView_DIR/include/' + pvMajor), + ('PV_PLUGIN_PATH', '$FOAM_LIBBIN/' + pvMajor), + ('PATH', '"${ParaView_DIR}/bin:${PATH}"'), + ] + + # Not normally included as etc/config file + if '+parmgridgen' in spec: + self.etc_config['parmgridgen'] = { + 'PARMGRIDGEN_ARCH_PATH': spec['parmgridgen'].prefix + } + + # Optional + if '+zoltan' in spec: + self.etc_config['zoltan'] = { + 'ZOLTAN_ARCH_PATH': spec['zoltan'].prefix + } + + # Write prefs files according to the configuration. + # Only need prefs.sh for building, but install both for end-users + if self.etc_prefs: + write_environ( + self.etc_prefs, + posix=join_path('etc', 'prefs.sh'), + cshell=join_path('etc', 'prefs.csh')) + + # Adjust components to use SPACK variants + for component, subdict in self.etc_config.iteritems(): + write_environ( + subdict, + posix=join_path('etc', 'config.sh', component), + cshell=join_path('etc', 'config.csh', component)) + + archCompiler = self.foam_sys['WM_ARCH'] + self.foam_sys['WM_COMPILER'] + compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] + general_rule = join_path('wmake', 'rules', 'General') + compiler_rule = join_path('wmake', 'rules', archCompiler) + generate_mplib_rules(general_rule, self.spec) + generate_compiler_rules(compiler_rule, compileOpt, self.rpath_info) + # Record the spack spec information + with open("log.spack-spec", 'w') as outfile: + outfile.write(spec.tree()) + + def build(self, spec, prefix): + """Build using the OpenFOAM Allwmake script, with a wrapper to source + its environment first. + """ + self.set_openfoam() # Force proper population of foam_cfg/foam_sys + args = ['-silent'] + if self.parallel: # Build in parallel? - pass as an argument + args.append( + '-j{0}'.format(str(self.make_jobs) if self.make_jobs else '')) + builder = Executable(self.build_script) + builder(*args) + + def install(self, spec, prefix): + """Install under the projectdir (== prefix)""" + self.build(spec, prefix) # Should be a separate phase + opts = self.wm_options + + mkdirp(self.projectdir) + projdir = os.path.basename(self.projectdir) + wm_setting = { + 'WM_PROJECT_INST_DIR': os.path.dirname(self.projectdir), + 'WM_PROJECT_DIR': join_path('$WM_PROJECT_INST_DIR', projdir), + } + + # Retain build log file + out = "spack-build.out" + if isfile(out): + install(out, join_path(self.projectdir, "log." + opts)) + + # All top-level files, except spack build info and possibly Allwmake + if '+source' in spec: + ignored = re.compile(r'^spack-.*') + else: + ignored = re.compile(r'^(Allwmake|spack-).*') + + files = [ + f for f in glob.glob("*") if isfile(f) and not ignored.search(f) + ] + for f in files: + install(f, self.projectdir) + + # Having wmake without sources is actually somewhat pointless... + dirs = ['bin', 'etc', 'wmake'] + if '+source' in spec: + dirs.extend(['applications', 'src', 'tutorials']) + + for d in dirs: + install_tree( + d, + join_path(self.projectdir, d)) + + dirs = ['platforms'] + if '+source' in spec: + dirs.extend(['doc']) + + # Install platforms (and doc) skipping intermediate targets + ignored = ['src', 'applications', 'html', 'Guides'] + for d in dirs: + install_tree( + d, + join_path(self.projectdir, d), + ignore=shutil.ignore_patterns(*ignored)) + + rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc + wm_setting, + posix=join_path(self.etc, 'bashrc'), + cshell=join_path(self.etc, 'cshrc')) + self.install_links() + + def install_links(self): + """Add symlinks into bin/, lib/ (eg, for other applications)""" + if not self.extra_symlinks: + return + + # ln -s platforms/linux64GccXXX/lib lib + with working_dir(self.projectdir): + if isdir(self.archlib): + os.symlink(self.archlib, 'lib') + + # (cd bin && ln -s ../platforms/linux64GccXXX/bin/* .) + with working_dir(join_path(self.projectdir, 'bin')): + for f in [ + f for f in glob.glob(join_path('..', self.archbin, "*")) + if isfile(f) + ]: + os.symlink(f, os.path.basename(f)) + +# ----------------------------------------------------------------------------- diff --git a/var/spack/repos/builtin/packages/openfoam-com/scotch-metis-lib-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/scotch-metis-lib-1612.patch new file mode 100644 index 00000000000..b7530e6320e --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/scotch-metis-lib-1612.patch @@ -0,0 +1,48 @@ +--- OpenFOAM-v1612+.orig/src/parallel/decompose/Allwmake 2017-03-21 16:34:44.599021283 +0100 ++++ OpenFOAM-v1612+/src/parallel/decompose/Allwmake 2017-03-21 16:28:57.243969660 +0100 +@@ -36,6 +36,7 @@ + + # Library + [ -r $FOAM_EXT_LIBBIN/libmetis.so ] || \ ++ [ -r $METIS_ARCH_PATH/lib/libmetis.so ] || \ + [ -r $METIS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmetis.so ] || \ + [ "${METIS_ARCH_PATH##*-}" = system ] || { + echo "$warning (missing library)" +@@ -90,6 +91,7 @@ + + # Library + [ -r $FOAM_EXT_LIBBIN/libscotch.so ] || \ ++ [ -r $SCOTCH_ARCH_PATH/lib/libscotch.so ] || \ + [ -r $SCOTCH_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libscotch.so ] || \ + [ "${SCOTCH_ARCH_PATH##*-}" = system ] || { + echo "$warning (missing library)" +--- OpenFOAM-v1612+.orig/src/parallel/decompose/metisDecomp/Make/options 2017-03-21 16:34:25.383075328 +0100 ++++ OpenFOAM-v1612+/src/parallel/decompose/metisDecomp/Make/options 2017-03-21 16:30:15.727758338 +0100 +@@ -8,6 +8,7 @@ + * to support central, non-thirdparty installations + */ + LIB_LIBS = \ ++ -L$(METIS_ARCH_PATH)/lib \ + -L$(METIS_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ + -L$(FOAM_EXT_LIBBIN) \ + -lmetis +--- OpenFOAM-v1612+.orig/src/parallel/decompose/ptscotchDecomp/Make/options 2017-03-21 16:34:34.607049385 +0100 ++++ OpenFOAM-v1612+/src/parallel/decompose/ptscotchDecomp/Make/options 2017-03-21 16:30:00.479799399 +0100 +@@ -16,6 +16,7 @@ + * to support central, non-thirdparty installations + */ + LIB_LIBS = \ ++ -L$(SCOTCH_ARCH_PATH)/lib \ + -L$(SCOTCH_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ + -L$(FOAM_EXT_LIBBIN) \ + -L$(FOAM_EXT_LIBBIN)/$(FOAM_MPI) \ +--- OpenFOAM-v1612+.orig/src/parallel/decompose/scotchDecomp/Make/options 2017-03-21 16:34:39.159036582 +0100 ++++ OpenFOAM-v1612+/src/parallel/decompose/scotchDecomp/Make/options 2017-03-21 16:29:46.719836452 +0100 +@@ -16,6 +16,7 @@ + * to support central, non-thirdparty installations + */ + LIB_LIBS = \ ++ -L$(SCOTCH_ARCH_PATH)/lib \ + -L$(SCOTCH_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ + -L$(FOAM_EXT_LIBBIN) \ + -lscotch \ diff --git a/var/spack/repos/builtin/packages/openfoam-com/zoltan-lib-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/zoltan-lib-1612.patch new file mode 100644 index 00000000000..712e6a7dfd9 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/zoltan-lib-1612.patch @@ -0,0 +1,84 @@ +--- OpenFOAM-v1612+.orig/applications/utilities/mesh/manipulation/renumberMesh/Allwmake 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/applications/utilities/mesh/manipulation/renumberMesh/Allwmake 2017-03-28 11:13:35.222727218 +0200 +@@ -4,20 +4,35 @@ + # Parse arguments for compilation (at least for error catching) + . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments + +-export COMPILE_FLAGS='' +-export LINK_FLAGS='' ++unset COMP_FLAGS LINK_FLAGS + + if [ -f "${FOAM_LIBBIN}/libSloanRenumber.so" ] + then +- echo "Found libSloanRenumber.so -- enabling Sloan renumbering support." ++ echo " found libSloanRenumber -- enabling sloan renumbering support." + export LINK_FLAGS="${LINK_FLAGS} -lSloanRenumber" + fi + +-if [ -f "${ZOLTAN_ARCH_PATH}/lib/libzoltan.a" -a -f "${FOAM_LIBBIN}/libzoltanRenumber.so" ] ++if [ -f "${FOAM_LIBBIN}/libzoltanRenumber.so" ] + then +- echo "Found libzoltanRenumber.so -- enabling zoltan renumbering support." +- export COMPILE_FLAGS="-DFOAM_USE_ZOLTAN" +- export LINK_FLAGS="${LINK_FLAGS} -lzoltanRenumber -L${ZOLTAN_ARCH_PATH}/lib -lzoltan" ++ if [ -z "$ZOLTAN_ARCH_PATH" ] ++ then ++ # Optional: get ZOLTAN_ARCH_PATH ++ if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan) ++ then ++ . $settings ++ fi ++ fi ++ ++ for libdir in lib "lib${WM_COMPILER_LIB_ARCH}" ++ do ++ if [ -f "$ZOLTAN_ARCH_PATH/$libdir/libzoltan.a" ] ++ then ++ echo " found libzoltanRenumber -- enabling zoltan renumbering support." ++ export COMP_FLAGS="-DFOAM_USE_ZOLTAN" ++ export LINK_FLAGS="${LINK_FLAGS} -lzoltanRenumber -L$ZOLTAN_ARCH_PATH/$libdir -lzoltan" ++ break ++ fi ++ done + fi + + wmake $targetType +--- OpenFOAM-v1612+.orig/src/renumber/Allwmake 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/src/renumber/Allwmake 2017-03-28 11:10:22.195543610 +0200 +@@ -5,14 +5,11 @@ + targetType=libso + . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments + +-## Get ZOLTAN_ARCH_PATH +-#if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan) +-#then +-# . $settings +-# echo "using ZOLTAN_ARCH_PATH=$ZOLTAN_ARCH_PATH" +-#else +-# echo "Error: no config.sh/zoltan settings" +-#fi ++# Optional: get ZOLTAN_ARCH_PATH ++if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/zoltan) ++then ++ . $settings ++fi + + wmake $targetType renumberMethods + +--- OpenFOAM-v1612+.orig/src/renumber/zoltanRenumber/Make/options 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/src/renumber/zoltanRenumber/Make/options 2017-03-28 11:50:46.484343848 +0200 +@@ -4,10 +4,13 @@ + EXE_INC = \ + /* -DFULLDEBUG -g -O0 */ \ + $(PFLAGS) $(PINC) \ ++ ${c++LESSWARN} \ + -I$(FOAM_SRC)/renumber/renumberMethods/lnInclude \ + -I$(ZOLTAN_ARCH_PATH)/include/ \ + -I$(LIB_SRC)/meshTools/lnInclude + + LIB_LIBS = \ +- /* -L$(ZOLTAN_ARCH_PATH)/lib -lzoltan */ \ ++ -L$(ZOLTAN_ARCH_PATH)/lib \ ++ -L$(ZOLTAN_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ ++ -lzoltan \ + -lmeshTools diff --git a/var/spack/repos/builtin/packages/openfoam-org/openfoam-etc-41.patch b/var/spack/repos/builtin/packages/openfoam-org/openfoam-etc-41.patch new file mode 100644 index 00000000000..6fe3b7b4d31 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-org/openfoam-etc-41.patch @@ -0,0 +1,25 @@ +--- OpenFOAM-4.x.orig/etc/bashrc 2016-10-16 16:11:45.000000000 +0200 ++++ OpenFOAM-4.x/etc/bashrc 2017-03-24 12:41:25.233267894 +0100 +@@ -43,17 +43,17 @@ + # Please set to the appropriate path if the default is not correct. + # + [ $BASH_SOURCE ] && \ +-export FOAM_INST_DIR=$(cd ${BASH_SOURCE%/*/*/*} && pwd -P) || \ +-export FOAM_INST_DIR=$HOME/$WM_PROJECT +-# export FOAM_INST_DIR=~$WM_PROJECT +-# export FOAM_INST_DIR=/opt/$WM_PROJECT +-# export FOAM_INST_DIR=/usr/local/$WM_PROJECT ++FOAM_INST_DIR=$(\cd $(dirname $BASH_SOURCE)/../.. && \pwd -P) || \ ++FOAM_INST_DIR=$HOME/$WM_PROJECT ++# FOAM_INST_DIR=/opt/$WM_PROJECT ++# FOAM_INST_DIR=/usr/local/$WM_PROJECT + # + # Build foamyHexMesh + export FOAMY_HEX_MESH=yes + # + # END OF (NORMAL) USER EDITABLE PART + ################################################################################ ++export FOAM_INST_DIR + + # The default environment variables below can be overridden in a prefs.sh file + # located in ~/.OpenFOAM/$WM_PROJECT_VERSION, ~/.OpenFOAM, diff --git a/var/spack/repos/builtin/packages/openfoam-org/openfoam-site.patch b/var/spack/repos/builtin/packages/openfoam-org/openfoam-site.patch new file mode 100644 index 00000000000..66310257885 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-org/openfoam-site.patch @@ -0,0 +1,42 @@ +diff -uw OpenFOAM-v1612+.orig/etc/config.sh/settings OpenFOAM-v1612+/etc/config.sh/settings +--- OpenFOAM-v1612+.orig/etc/config.sh/settings 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/etc/config.sh/settings 2017-03-23 12:22:52.002101020 +0100 +@@ -141,7 +141,7 @@ + #------------------------------------------------------------------------------ + + # Location of the jobControl directory +-export FOAM_JOB_DIR=$WM_PROJECT_INST_DIR/jobControl ++export FOAM_JOB_DIR=$HOME/$WM_PROJECT/jobControl #SPACK: non-central location + + # wmake configuration + export WM_DIR=$WM_PROJECT_DIR/wmake +@@ -157,7 +157,7 @@ + export FOAM_EXT_LIBBIN=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib + + # Site-specific directory +-siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_INST_DIR/site}" ++siteDir="${WM_PROJECT_SITE:-$WM_PROJECT/site}" #SPACK: not in parent directory + + # Shared site executables/libraries + # Similar naming convention as ~OpenFOAM expansion +diff -uw OpenFOAM-v1612+.orig/etc/config.csh/settings OpenFOAM-v1612+/etc/config.csh/settings +--- OpenFOAM-v1612+.orig/etc/config.csh/settings 2016-12-23 15:22:59.000000000 +0100 ++++ OpenFOAM-v1612+/etc/config.csh/settings 2017-03-23 12:23:52.737891912 +0100 +@@ -137,7 +137,7 @@ + #------------------------------------------------------------------------------ + + # Location of the jobControl directory +-setenv FOAM_JOB_DIR $WM_PROJECT_INST_DIR/jobControl ++setenv FOAM_JOB_DIR=$HOME/$WM_PROJECT/jobControl #SPACK: non-central location + + # wmake configuration + setenv WM_DIR $WM_PROJECT_DIR/wmake +@@ -156,7 +156,7 @@ + if ( $?WM_PROJECT_SITE ) then + set siteDir=$WM_PROJECT_SITE + else +- set siteDir=$WM_PROJECT_INST_DIR/site ++ set siteDir=$WM_PROJECT_DIR/site #SPACK: not in parent directory + endif + + # Shared site executables/libraries diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py new file mode 100644 index 00000000000..19ffd405074 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -0,0 +1,492 @@ +############################################################################## +# Copyright (c) 2017 Mark Olesen, OpenCFD Ltd. +# +# This file was authored by Mark Olesen +# and is released as part of spack under the LGPL license. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for the LLNL notice and the LGPL. +# +# License +# ------- +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Legal Notice +# ------------ +# OPENFOAM is a trademark owned by OpenCFD Ltd +# (producer and distributor of the OpenFOAM software via www.openfoam.com). +# The trademark information must remain visible and unadulterated in this +# file and via the "spack info" and comply with the term set by +# http://openfoam.com/legal/trademark-policy.php +# +# This file is not part of OpenFOAM, nor does it constitute a component of an +# OpenFOAM distribution. +# +############################################################################## +# +# Notes +# - The openfoam-org package is a modified version of the openfoam-com package. +# If changes are needed here, consider if they should also be applied there. +# +# - Building with boost/cgal is not included, since some of the logic is not +# entirely clear and thus untested. +# - Resolution of flex, zlib needs more attention (within OpenFOAM) +# +# - mpi handling: WM_MPLIB=SYSTEMMPI and use spack to populate the prefs.sh +# for it. +# Also provide wmake rules for special purpose 'USER' and 'USERMPI' +# mpi implementations, in case these are required. +# +############################################################################## +from spack import * +from spack.environment import * +import llnl.util.tty as tty + +import multiprocessing +import glob +import re +import shutil +import os +from os.path import isdir, isfile +from spack.pkg.builtin.openfoam_com import * + + +class OpenfoamOrg(Package): + """OpenFOAM is a GPL-opensource C++ CFD-toolbox. + The openfoam.org release is managed by the OpenFOAM Foundation Ltd as + a licensee of the OPENFOAM trademark. + This offering is not approved or endorsed by OpenCFD Ltd, + producer and distributor of the OpenFOAM software via www.openfoam.com, + and owner of the OPENFOAM trademark. + """ + + homepage = "http://www.openfoam.org/" + baseurl = "https://github.com/OpenFOAM" + url = "https://github.com/OpenFOAM/OpenFOAM-4.x/archive/version-4.1.tar.gz" + + version('4.1', '318a446c4ae6366c7296b61184acd37c', + url=baseurl + '/OpenFOAM-4.x/archive/version-4.1.tar.gz') + + variant('int64', default=False, + description='Compile with 64-bit labels') + variant('float32', default=False, + description='Compile with 32-bit scalar (single-precision)') + + variant('source', default=True, + description='Install library/application sources and tutorials') + + #: Map spack compiler names to OpenFOAM compiler names + # By default, simply capitalize the first letter + compiler_mapping = {'intel': 'icc'} + + provides('openfoam') + depends_on('mpi') + depends_on('zlib') + depends_on('flex@:2.6.1') # <- restriction due to scotch + depends_on('cmake', type='build') + + # Require scotch with ptscotch - corresponds to standard OpenFOAM setup + depends_on('scotch~int64+mpi', when='~int64') + depends_on('scotch+int64+mpi', when='+int64') + + # General patches + patch('openfoam-site.patch') + + # Version-specific patches + patch('openfoam-etc-41.patch') + + # Some user settings, to be adjusted manually or via variants + foam_cfg = { + 'WM_COMPILER': 'Gcc', # <- %compiler + 'WM_ARCH_OPTION': '64', # (32/64-bit on x86_64) + 'WM_LABEL_SIZE': '32', # <- +int64 + 'WM_PRECISION_OPTION': 'DP', # <- +float32 + 'WM_COMPILE_OPTION': 'SPACKOpt', # Do not change + 'WM_MPLIB': 'SYSTEMMPI', # Use system mpi for spack + } + + # The system description is frequently needed + foam_sys = { + 'WM_ARCH': None, + 'WM_COMPILER': None, + 'WM_OPTIONS': None, + } + + # Content for etc/prefs.{csh,sh} + etc_prefs = {} + + # Content for etc/config.{csh,sh}/ files + etc_config = {} + + build_script = './spack-Allwmake' # <- Generated by patch() method. + # phases = ['configure', 'build', 'install'] + # build_system_class = 'OpenfoamCom' + + # Add symlinks into bin/, lib/ (eg, for other applications) + extra_symlinks = False + + def setup_environment(self, spack_env, run_env): + run_env.set('WM_PROJECT_DIR', self.projectdir) + + @property + def _canonical(self): + """Canonical name for this package and version""" + return 'OpenFOAM-{0}'.format(self.version) + + @property + def projectdir(self): + """Absolute location of project directory: WM_PROJECT_DIR/""" + return join_path(self.prefix, self._canonical) # <- prefix/canonical + + @property + def etc(self): + """Absolute location of the OpenFOAM etc/ directory""" + return join_path(self.projectdir, 'etc') + + @property + def archbin(self): + """Relative location of architecture-specific executables""" + return join_path('platforms', self.wm_options, 'bin') + + @property + def archlib(self): + """Relative location of architecture-specific libraries""" + return join_path('platforms', self.wm_options, 'lib') + + @property + def wm_options(self): + """The architecture+compiler+options for OpenFOAM""" + opts = self.set_openfoam() + return opts + + @property + def rpath_info(self): + """Define 'SPACKOpt' compiler optimization file to have wmake + use spack information with minimum modifications to OpenFOAM + """ + build_libpath = join_path(self.stage.source_path, self.archlib) + install_libpath = join_path(self.projectdir, self.archlib) + + # 'DBUG': rpaths + return '{0}{1} {2}{3}'.format( + self.compiler.cxx_rpath_arg, install_libpath, + self.compiler.cxx_rpath_arg, build_libpath) + + def openfoam_arch(self): + """Return an architecture value similar to what OpenFOAM does in + etc/config.sh/settings, but slightly more generous. + Uses and may adjust foam_cfg[WM_ARCH_OPTION] as a side-effect + """ + # spec.architecture.platform is like `uname -s`, but lower-case + platform = self.spec.architecture.platform + + # spec.architecture.target is like `uname -m` + target = self.spec.architecture.target + + if platform == 'linux': + if target == 'i686': + self.foam_cfg['WM_ARCH_OPTION'] = '32' # Force consistency + elif target == 'x86_64': + if self.foam_cfg['WM_ARCH_OPTION'] == '64': + platform += '64' + elif target == 'ia64': + platform += 'ia64' + elif target == 'armv7l': + platform += 'ARM7' + elif target == ppc64: + platform += 'PPC64' + elif target == ppc64le: + platform += 'PPC64le' + elif platform == 'darwin': + if target == 'x86_64': + platform += 'Intel' + if self.foam_cfg['WM_ARCH_OPTION'] == '64': + platform += '64' + # ... and others? + return platform + + def openfoam_compiler(self): + """Capitalized version of the compiler name, which usually corresponds + to how OpenFOAM will camel-case things. + Use compiler_mapping to handing special cases. + Also handle special compiler options (eg, KNL) + """ + comp = self.compiler.name + if comp in self.compiler_mapping: + comp = self.compiler_mapping[comp] + comp = comp.capitalize() + + if '+knl' in self.spec: + comp += 'KNL' + return comp + + def set_openfoam(self): + """Populate foam_cfg, foam_sys according to + variants, architecture, compiler. + Returns WM_OPTIONS. + """ + # Run once + opts = self.foam_sys['WM_OPTIONS'] + if opts: + return opts + + wm_arch = self.openfoam_arch() + wm_compiler = self.openfoam_compiler() + compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] + + # Insist on a wmake rule for this architecture/compiler combination + archCompiler = wm_arch + wm_compiler + compiler_rule = join_path( + self.stage.source_path, 'wmake', 'rules', archCompiler) + + if not isdir(compiler_rule): + raise RuntimeError( + 'No wmake rule for {0}'.format(archCompiler)) + if not re.match(r'.+Opt$', compileOpt): + raise RuntimeError( + "WM_COMPILE_OPTION={0} is not type '*Opt'".format(compileOpt)) + + # Adjust for variants + self.foam_cfg['WM_LABEL_SIZE'] = ( + '64' if '+int64' in self.spec else '32' + ) + self.foam_cfg['WM_PRECISION_OPTION'] = ( + 'SP' if '+float32' in self.spec else 'DP' + ) + + # ---- + # WM_LABEL_OPTION=Int$WM_LABEL_SIZE + # WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION$WM_COMPILE_OPTION + # ---- + self.foam_sys['WM_ARCH'] = wm_arch + self.foam_sys['WM_COMPILER'] = wm_compiler + self.foam_cfg['WM_COMPILER'] = wm_compiler # For bashrc,cshrc too + self.foam_sys['WM_OPTIONS'] = ''.join([ + wm_arch, + wm_compiler, + self.foam_cfg['WM_PRECISION_OPTION'], + 'Int', self.foam_cfg['WM_LABEL_SIZE'], # Int32/Int64 + compileOpt + ]) + return self.foam_sys['WM_OPTIONS'] + + def patch(self): + """Adjust OpenFOAM build for spack. Where needed, apply filter as an + alternative to normal patching. + """ + self.set_openfoam() # May need foam_cfg/foam_sys information + + # This is fairly horrible. + # The github tarfiles have weird names that do not correspond to the + # canonical name. We need to rename these, but leave a symlink for + # spack to work with. + # + # Note that this particular OpenFOAM release requires absolute + # directories to build correctly! + parent = os.path.dirname(self.stage.source_path) + original = os.path.basename(self.stage.source_path) + target = self._canonical + with working_dir(parent): + if original != target and not os.path.lexists(target): + os.rename(original, target) + os.symlink(target, original) + tty.info('renamed {0} -> {1}'.format(original, target)) + + # Avoid WM_PROJECT_INST_DIR for ThirdParty, site or jobControl. + # Use openfoam-site.patch to handle jobControl, site. + # + # Filter (not patch) bashrc,cshrc for additional flexibility + wm_setting = { + 'WM_THIRD_PARTY_DIR': + r'$WM_PROJECT_DIR/ThirdParty #SPACK: No separate third-party', + 'WM_VERSION': self.version, # consistency + 'FOAMY_HEX_MESH': '', # This is horrible (unset variable?) + } + + rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc + wm_setting, + posix=join_path('etc', 'bashrc'), + cshell=join_path('etc', 'cshrc')) + + # Build wrapper script + with open(self.build_script, 'w') as out: + out.write( + """#!/bin/bash +. $PWD/etc/bashrc '' # No arguments +mkdir -p $FOAM_APPBIN $FOAM_LIBBIN 2>/dev/null # Allow interrupt +echo Build openfoam with SPACK +echo WM_PROJECT_DIR = $WM_PROJECT_DIR +./Allwmake $@ +# +""") + set_executable(self.build_script) + self.configure(self.spec, self.prefix) # Should be a separate phase + + def configure(self, spec, prefix): + """Make adjustments to the OpenFOAM configuration files in their various + locations: etc/bashrc, etc/config.sh/FEATURE and customizations that + don't properly fit get placed in the etc/prefs.sh file (similiarly for + csh). + """ + self.set_openfoam() # Need foam_cfg/foam_sys information + + # Some settings for filtering bashrc, cshrc + wm_setting = {} + wm_setting.update(self.foam_cfg) + + rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc + wm_setting, + posix=join_path('etc', 'bashrc'), + cshell=join_path('etc', 'cshrc')) + + # MPI content, with absolute paths + content = mplib_content(spec) + + # Content for etc/prefs.{csh,sh} + self.etc_prefs = { + r'MPI_ROOT': spec['mpi'].prefix, # Absolute + r'MPI_ARCH_FLAGS': '"%s"' % content['FLAGS'], + r'MPI_ARCH_INC': '"%s"' % content['PINC'], + r'MPI_ARCH_LIBS': '"%s"' % content['PLIBS'], + } + + # Content for etc/config.{csh,sh}/ files + self.etc_config = { + 'CGAL': {}, + 'scotch': {}, + 'metis': {}, + 'paraview': [], + } + + if True: + self.etc_config['scotch'] = { + 'SCOTCH_ARCH_PATH': spec['scotch'].prefix, + # For src/parallel/decompose/Allwmake + 'SCOTCH_VERSION': 'scotch-{0}'.format(spec['scotch'].version), + } + + # Write prefs files according to the configuration. + # Only need prefs.sh for building, but install both for end-users + if self.etc_prefs: + write_environ( + self.etc_prefs, + posix=join_path('etc', 'prefs.sh'), + cshell=join_path('etc', 'prefs.csh')) + + # Adjust components to use SPACK variants + for component, subdict in self.etc_config.iteritems(): + write_environ( + subdict, + posix=join_path('etc', 'config.sh', component), + cshell=join_path('etc', 'config.csh', component)) + + archCompiler = self.foam_sys['WM_ARCH'] + self.foam_sys['WM_COMPILER'] + compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] + general_rule = join_path('wmake', 'rules', 'General') + compiler_rule = join_path('wmake', 'rules', archCompiler) + generate_mplib_rules(general_rule, self.spec) + generate_compiler_rules(compiler_rule, compileOpt, self.rpath_info) + # Record the spack spec information + with open("log.spack-spec", 'w') as outfile: + outfile.write(spec.tree()) + + def build(self, spec, prefix): + """Build using the OpenFOAM Allwmake script, with a wrapper to source + its environment first. + """ + self.set_openfoam() # Force proper population of foam_cfg/foam_sys + args = [] + if self.parallel: # Build in parallel? - pass via the environment + os.environ['WM_NCOMPPROCS'] = str(self.make_jobs) \ + if self.make_jobs else str(multiprocessing.cpu_count()) + builder = Executable(self.build_script) + builder(*args) + + def install(self, spec, prefix): + """Install under the projectdir (== prefix/name-version)""" + self.build(spec, prefix) # Should be a separate phase + opts = self.wm_options + + mkdirp(self.projectdir) + projdir = os.path.basename(self.projectdir) + wm_setting = { + 'WM_PROJECT_INST_DIR': os.path.dirname(self.projectdir), + 'WM_PROJECT_DIR': join_path('$WM_PROJECT_INST_DIR', projdir), + } + + # Retain build log file + out = "spack-build.out" + if isfile(out): + install(out, join_path(self.projectdir, "log." + opts)) + + # All top-level files, except spack build info and possibly Allwmake + if '+source' in spec: + ignored = re.compile(r'^spack-.*') + else: + ignored = re.compile(r'^(Allwmake|spack-).*') + + files = [ + f for f in glob.glob("*") if isfile(f) and not ignored.search(f) + ] + for f in files: + install(f, self.projectdir) + + # Having wmake without sources is actually somewhat pointless... + dirs = ['bin', 'etc', 'wmake'] + if '+source' in spec: + dirs.extend(['applications', 'src', 'tutorials']) + + for d in dirs: + install_tree( + d, + join_path(self.projectdir, d)) + + dirs = ['platforms'] + if '+source' in spec: + dirs.extend(['doc']) + + # Install platforms (and doc) skipping intermediate targets + ignored = ['src', 'applications', 'html', 'Guides'] + for d in dirs: + install_tree( + d, + join_path(self.projectdir, d), + ignore=shutil.ignore_patterns(*ignored)) + + rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc + wm_setting, + posix=join_path(self.etc, 'bashrc'), + cshell=join_path(self.etc, 'cshrc')) + self.install_links() + + def install_links(self): + """Add symlinks into bin/, lib/ (eg, for other applications)""" + if not self.extra_symlinks: + return + + # ln -s platforms/linux64GccXXX/lib lib + with working_dir(self.projectdir): + if isdir(self.archlib): + os.symlink(self.archlib, 'lib') + + # (cd bin && ln -s ../platforms/linux64GccXXX/bin/* .) + with working_dir(join_path(self.projectdir, 'bin')): + for f in [ + f for f in glob.glob(join_path('..', self.archbin, "*")) + if isfile(f) + ]: + os.symlink(f, os.path.basename(f)) + +# ----------------------------------------------------------------------------- From 9e43ff821c1549d5813eebd5a9ca81a7869786e7 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Fri, 31 Mar 2017 09:38:58 +1000 Subject: [PATCH 0503/2394] Extendable Perl (#3614) * perl: make extendable and add Module::Build package * perl: allow 'spack create' to identify perl packages from their contents * perl-module-build: fix indenting of package docstring * perl: split install() method for extensions into phases * perl: auto-detect build method (Makefile.PL vs Build.PL) and define a 'check' method * PerlPackage: use import statements similar to those in AutotoolsPackage * PerlModule: fix detection of Build.PL * PerlPackageTemplate: remove extraneous lines to avoid flake8 warnings * PerlPackageTemplate: split into separate templates for Makefile.PL and Build.PL * PerlPackage: add cross-references to docstrings * AutotoolsPackage: fix ambiguous cross-references to avoid errors in doc tests * PerlbuildPackageTemplate: depend on perl-module-build if Build.PL exists --- lib/spack/docs/packaging_guide.rst | 4 + lib/spack/spack/__init__.py | 4 +- lib/spack/spack/build_systems/autotools.py | 8 +- lib/spack/spack/build_systems/perl.py | 117 ++++++++++++++++++ lib/spack/spack/cmd/build.py | 3 +- lib/spack/spack/cmd/configure.py | 3 +- lib/spack/spack/cmd/create.py | 45 ++++++- lib/spack/spack/test/build_system_guess.py | 2 + .../packages/perl-module-build/package.py | 41 ++++++ .../repos/builtin/packages/perl/package.py | 45 ++++++- 10 files changed, 264 insertions(+), 8 deletions(-) create mode 100644 lib/spack/spack/build_systems/perl.py create mode 100644 var/spack/repos/builtin/packages/perl-module-build/package.py diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 729ea5d656d..1a64c7db4a9 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2043,6 +2043,10 @@ The classes that are currently provided by Spack are: | :py:class:`.PythonPackage` | Specialized class for | | | :py:class:`.Python` extensions | +------------------------------------+----------------------------------+ + | :py:class:`.PerlPackage` | Specialized class for | + | | :py:class:`.Perl` extensions | + +------------------------------------+----------------------------------+ + diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 6a28fbb2b03..b0f2faed766 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -162,6 +162,7 @@ from spack.build_systems.cmake import CMakePackage from spack.build_systems.python import PythonPackage from spack.build_systems.r import RPackage +from spack.build_systems.perl import PerlPackage __all__ += [ 'run_before', @@ -172,7 +173,8 @@ 'AutotoolsPackage', 'MakefilePackage', 'PythonPackage', - 'RPackage' + 'RPackage', + 'PerlPackage' ] from spack.version import Version, ver diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index a11a84acd0a..76dfd0d16fc 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -49,7 +49,8 @@ class AutotoolsPackage(PackageBase): 4. :py:meth:`~.AutotoolsPackage.install` They all have sensible defaults and for many packages the only thing - necessary will be to override the helper method :py:meth:`.configure_args`. + necessary will be to override the helper method + :py:meth:`~.AutotoolsPackage.configure_args`. For a finer tuning you may also override: +-----------------------------------------------+--------------------+ @@ -234,7 +235,7 @@ def set_configure_or_die(self): appropriately, otherwise raises an error. :raises RuntimeError: if a configure script is not found in - :py:meth:`~.configure_directory` + :py:meth:`~AutotoolsPackage.configure_directory` """ # Check if a configure script is there. If not raise a RuntimeError. if not os.path.exists(self.configure_abs_path): @@ -255,7 +256,8 @@ def configure_args(self): return [] def configure(self, spec, prefix): - """Runs configure with the arguments specified in :py:meth:`.configure_args` + """Runs configure with the arguments specified in + :py:meth:`~.AutotoolsPackage.configure_args` and an appropriately set prefix. """ options = ['--prefix={0}'.format(prefix)] + self.configure_args() diff --git a/lib/spack/spack/build_systems/perl.py b/lib/spack/spack/build_systems/perl.py new file mode 100644 index 00000000000..78184c85dc6 --- /dev/null +++ b/lib/spack/spack/build_systems/perl.py @@ -0,0 +1,117 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 inspect +import os + +from llnl.util.filesystem import join_path +from spack.directives import extends +from spack.package import PackageBase, run_after +from spack.util.executable import Executable + + +class PerlPackage(PackageBase): + """Specialized class for packages that are built using Perl. + + This class provides four phases that can be overridden if required: + + 1. :py:meth:`~.PerlPackage.configure` + 2. :py:meth:`~.PerlPackage.build` + 3. :py:meth:`~.PerlPackage.check` + 4. :py:meth:`~.PerlPackage.install` + + The default methods use, in order of preference: + (1) Makefile.PL, + (2) Build.PL. + + Some packages may need to override + :py:meth:`~.PerlPackage.configure_args`, + which produces a list of arguments for + :py:meth:`~.PerlPackage.configure`. + Arguments should not include the installation base directory. + """ + #: Phases of a Perl package + phases = ['configure', 'build', 'install'] + + #: This attribute is used in UI queries that need to know the build + #: system base class + build_system_class = 'PerlPackage' + + #: Callback names for build-time test + build_time_test_callbacks = ['check'] + + extends('perl') + + def configure_args(self): + """Produces a list containing the arguments that must be passed to + :py:meth:`~.PerlPackage.configure`. Arguments should not include + the installation base directory, which is prepended automatically. + + :return: list of arguments for Makefile.PL or Build.PL + """ + return [] + + def configure(self, spec, prefix): + """Runs Makefile.PL or Build.PL with arguments consisting of + an appropriate installation base directory followed by the + list returned by :py:meth:`~.PerlPackage.configure_args`. + + :raise RuntimeError: if neither Makefile.PL or Build.PL exist + """ + if os.path.isfile('Makefile.PL'): + self.build_method = 'Makefile.PL' + self.build_executable = inspect.getmodule(self).make + elif os.path.isfile('Build.PL'): + self.build_method = 'Build.PL' + self.build_executable = Executable( + join_path(self.stage.source_path, 'Build')) + else: + raise RuntimeError('Unknown build_method for perl package') + + if self.build_method == 'Makefile.PL': + options = ['Makefile.PL', 'INSTALL_BASE={0}'.format(prefix)] + elif self.build_method == 'Build.PL': + options = ['Build.PL', '--install_base', prefix] + options += self.configure_args() + + inspect.getmodule(self).perl(*options) + + def build(self, spec, prefix): + """Builds a Perl package.""" + self.build_executable() + + # Ensure that tests run after build (if requested): + run_after('build')(PackageBase._run_default_build_time_test_callbacks) + + def check(self): + """Runs built-in tests of a Perl package.""" + self.build_executable('test') + + def install(self, spec, prefix): + """Installs a Perl package.""" + self.build_executable('install') + + # Check that self.prefix is there after installation + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/cmd/build.py b/lib/spack/spack/cmd/build.py index 6a90af907d8..90157a85aff 100644 --- a/lib/spack/spack/cmd/build.py +++ b/lib/spack/spack/cmd/build.py @@ -31,7 +31,8 @@ build_system_to_phase = { CMakePackage: 'build', AutotoolsPackage: 'build', - PythonPackage: 'build' + PythonPackage: 'build', + PerlPackage: 'build' } diff --git a/lib/spack/spack/cmd/configure.py b/lib/spack/spack/cmd/configure.py index 7b1ef04522a..b6669f33a23 100644 --- a/lib/spack/spack/cmd/configure.py +++ b/lib/spack/spack/cmd/configure.py @@ -36,7 +36,8 @@ build_system_to_phase = { CMakePackage: 'cmake', - AutotoolsPackage: 'configure' + AutotoolsPackage: 'configure', + PerlPackage: 'configure' } diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 14b213a756b..cc906691582 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -268,6 +268,45 @@ def __init__(self, name, *args): super(RPackageTemplate, self).__init__(name, *args) +class PerlmakePackageTemplate(PackageTemplate): + """Provides appropriate overrides for Perl extensions + that come with a Makefile.PL""" + base_class_name = 'PerlPackage' + + dependencies = """\ + # FIXME: Add dependencies if required: + # depends_on('perl-foo') + # depends_on('barbaz', type=('build', 'link', 'run'))""" + + body = """\ + # FIXME: If non-standard arguments are used for configure step: + # def configure_args(self): + # return ['my', 'configure', 'args'] + + # FIXME: in unusual cases, it may be necessary to override methods for + # configure(), build(), check() or install().""" + + def __init__(self, name, *args): + # If the user provided `--name perl-cpp`, don't rename it perl-perl-cpp + if not name.startswith('perl-'): + # Make it more obvious that we are renaming the package + tty.msg("Changing package name from {0} to perl-{0}".format(name)) + name = 'perl-{0}'.format(name) + + super(PerlmakePackageTemplate, self).__init__(name, *args) + + +class PerlbuildPackageTemplate(PerlmakePackageTemplate): + """Provides appropriate overrides for Perl extensions + that come with a Build.PL instead of a Makefile.PL""" + dependencies = """\ + depends_on('perl-module-build', type='build') + + # FIXME: Add additional dependencies if required: + # depends_on('perl-foo') + # depends_on('barbaz', type=('build', 'link', 'run'))""" + + class OctavePackageTemplate(PackageTemplate): """Provides appropriate overrides for octave packages""" @@ -305,6 +344,8 @@ def __init__(self, name, *args): 'bazel': BazelPackageTemplate, 'python': PythonPackageTemplate, 'r': RPackageTemplate, + 'perlmake': PerlmakePackageTemplate, + 'perlbuild': PerlbuildPackageTemplate, 'octave': OctavePackageTemplate, 'generic': PackageTemplate } @@ -363,7 +404,9 @@ def __call__(self, stage, url): (r'/SConstruct$', 'scons'), (r'/setup.py$', 'python'), (r'/NAMESPACE$', 'r'), - (r'/WORKSPACE$', 'bazel') + (r'/WORKSPACE$', 'bazel'), + (r'/Build.PL$', 'perlbuild'), + (r'/Makefile.PL$', 'perlmake'), ] # Peek inside the compressed file. diff --git a/lib/spack/spack/test/build_system_guess.py b/lib/spack/spack/test/build_system_guess.py index 82bf1964b20..e6fb84b37d9 100644 --- a/lib/spack/spack/test/build_system_guess.py +++ b/lib/spack/spack/test/build_system_guess.py @@ -38,6 +38,8 @@ ('setup.py', 'python'), ('NAMESPACE', 'r'), ('WORKSPACE', 'bazel'), + ('Makefile.PL', 'perlmake'), + ('Build.PL', 'perlbuild'), ('foobar', 'generic') ] ) diff --git a/var/spack/repos/builtin/packages/perl-module-build/package.py b/var/spack/repos/builtin/packages/perl-module-build/package.py new file mode 100644 index 00000000000..cccc5d7b5ad --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-module-build/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PerlModuleBuild(PerlPackage): + """Module::Build is a system for building, testing, and installing Perl + modules. It is meant to be an alternative to ExtUtils::MakeMaker. + Developers may alter the behavior of the module through subclassing in a + much more straightforward way than with MakeMaker. It also does not + require a make on your system - most of the Module::Build code is + pure-perl and written in a very cross-platform way. + """ + + homepage = "http://search.cpan.org/perldoc/Module::Build" + url = "http://search.cpan.org/CPAN/authors/id/L/LE/LEONT/Module-Build-0.4220.tar.gz" + + version('0.4220', '9df204e188462a4410d496f316c2c531') diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 4bacad427bd..b8874c124e4 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -23,6 +23,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## # +# Author: Milton Woods +# Date: March 22, 2017 # Author: George Hartzell # Date: July 21, 2016 # Author: Justin Too @@ -36,7 +38,7 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package 27 years of development.""" homepage = "http://www.perl.org" # URL must remain http:// so Spack can bootstrap curl - url = "http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz" + url = "http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz" version('5.24.1', '765ef511b5b87a164e2531403ee16b3c') version('5.24.0', 'c5bf7f3285439a2d3b6a488e14503701') @@ -46,6 +48,8 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package # https://rt.perl.org/Public/Bug/Display.html?id=123784 # version('5.18.4' , '1f9334ff730adc05acd3dd7130d295db') + extendable = True + # Installing cpanm alongside the core makes it safe and simple for # people/projects to install their own sets of perl modules. Not # having it in core increases the "energy of activation" for doing @@ -80,3 +84,42 @@ def install(self, spec, prefix): perl('Makefile.PL') make() make('install') + + def setup_environment(self, spack_env, run_env): + """Set PERL5LIB to support activation of Perl packages""" + run_env.set('PERL5LIB', join_path(self.prefix, 'lib', 'perl5')) + + def setup_dependent_environment(self, spack_env, run_env, extension_spec): + """Set PATH and PERL5LIB to include the extension and + any other perl extensions it depends on, + assuming they were installed with INSTALL_BASE defined.""" + perl_lib_dirs = [] + perl_bin_dirs = [] + for d in extension_spec.traverse( + deptype=('build', 'run'), deptype_query='run'): + if d.package.extends(self.spec): + perl_lib_dirs.append(join_path(d.prefix, 'lib', 'perl5')) + perl_bin_dirs.append(join_path(d.prefix, 'bin')) + perl_bin_path = ':'.join(perl_bin_dirs) + perl_lib_path = ':'.join(perl_lib_dirs) + spack_env.prepend_path('PATH', perl_bin_path) + spack_env.prepend_path('PERL5LIB', perl_lib_path) + run_env.prepend_path('PATH', perl_bin_path) + run_env.prepend_path('PERL5LIB', perl_lib_path) + + def setup_dependent_package(self, module, ext_spec): + """Called before perl modules' install() methods. + In most cases, extensions will only need to have one line: + perl('Makefile.PL','INSTALL_BASE=%s' % self.prefix) + """ + + # perl extension builds can have a global perl executable function + module.perl = Executable(join_path(self.spec.prefix.bin, 'perl')) + + # Add variables for library directory + module.perl_lib_dir = join_path(ext_spec.prefix, 'lib', 'perl5') + + # Make the site packages directory for extensions, + # if it does not exist already. + if ext_spec.package.is_extension: + mkdirp(module.perl_lib_dir) From a81b2b4dc6f5f0649b8f5af8aea825355a3fd806 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Fri, 31 Mar 2017 14:54:56 +1000 Subject: [PATCH 0504/2394] perl-xml-parser: add perl XML::Parser package (#3643) --- .../packages/perl-xml-parser/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/perl-xml-parser/package.py diff --git a/var/spack/repos/builtin/packages/perl-xml-parser/package.py b/var/spack/repos/builtin/packages/perl-xml-parser/package.py new file mode 100644 index 00000000000..5ceb380473b --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-xml-parser/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PerlXmlParser(PerlPackage): + """XML::Parser - A perl module for parsing XML documents""" + + homepage = "http://search.cpan.org/perldoc/XML::Parser" + url = "http://search.cpan.org/CPAN/authors/id/T/TO/TODDR/XML-Parser-2.44.tar.gz" + + version('2.44', 'af4813fe3952362451201ced6fbce379') + + depends_on('expat') From 890213d5c2cb1d2701099478b5023cd3da605f39 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Fri, 31 Mar 2017 18:48:18 +1000 Subject: [PATCH 0505/2394] Subversion with perl bindings (#3644) * perl-term-readkey: add perl Term::ReadKey package * subversion: add variant with perl bindings * subversion: use `which('perl')` to find perl executable in package.py --- .../packages/perl-term-readkey/package.py | 41 +++++++++++++++++++ .../builtin/packages/subversion/package.py | 34 +++++++++++---- 2 files changed, 68 insertions(+), 7 deletions(-) create mode 100644 var/spack/repos/builtin/packages/perl-term-readkey/package.py diff --git a/var/spack/repos/builtin/packages/perl-term-readkey/package.py b/var/spack/repos/builtin/packages/perl-term-readkey/package.py new file mode 100644 index 00000000000..2b1f93cbc0a --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-term-readkey/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PerlTermReadkey(PerlPackage): + """Term::ReadKey is a compiled perl module dedicated to providing simple + control over terminal driver modes (cbreak, raw, cooked, etc.,) support + for non-blocking reads, if the architecture allows, and some generalized + handy functions for working with terminals. One of the main goals is to + have the functions as portable as possible, so you can just plug in + "use Term::ReadKey" on any architecture and have a good likelihood of it + working.""" + + homepage = "http://search.cpan.org/perldoc/Term::ReadKey" + url = "http://www.cpan.org/authors/id/J/JS/JSTOWE/TermReadKey-2.37.tar.gz" + list_url = "http://www.cpan.org/authors/id/J/JS/JSTOWE" + + version('2.37', 'e8ea15c16333ac4f8d146d702e83cc0c') diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py index 02b7d963786..7752528b438 100644 --- a/var/spack/repos/builtin/packages/subversion/package.py +++ b/var/spack/repos/builtin/packages/subversion/package.py @@ -27,18 +27,24 @@ class Subversion(Package): """Apache Subversion - an open source version control system.""" - homepage = 'https://subversion.apache.org/' - url = 'http://archive.apache.org/dist/subversion/subversion-1.8.13.tar.gz' + homepage = 'https://subversion.apache.org/' + url = 'http://archive.apache.org/dist/subversion/subversion-1.8.13.tar.gz' version('1.8.13', '8065b3698d799507fb72dd7926ed32b6') version('1.9.3', 'a92bcfaec4e5038f82c74a7b5bbd2f46') + variant('perl', default=False, description='Build with Perl bindings') + depends_on('apr') depends_on('apr-util') depends_on('zlib') depends_on('sqlite') depends_on('serf') + extends('perl', when='+perl') + depends_on('swig@1.3.24:3.0.0', when='+perl') + depends_on('perl-term-readkey', when='+perl') + # Optional: We need swig if we want the Perl, Python or Ruby # bindings. # depends_on('swig') @@ -60,12 +66,30 @@ def install(self, spec, prefix): options.append('--with-zlib=%s' % spec['zlib'].prefix) options.append('--with-sqlite=%s' % spec['sqlite'].prefix) options.append('--with-serf=%s' % spec['serf'].prefix) - # options.append('--with-swig=%s' % spec['swig'].prefix) + + if spec.satisfies('^swig'): + options.append('--with-swig=%s' % spec['swig'].prefix) + if spec.satisfies('+perl'): + options.append( + 'PERL=%s' % join_path(spec['perl'].prefix.bin, 'perl')) configure(*options) make() + if self.run_tests: + make('check') make('install') + if spec.satisfies('+perl'): + make('swig-pl') + if self.run_tests: + make('check-swig-pl') + make('install-swig-pl-lib') + with working_dir(join_path( + 'subversion', 'bindings', 'swig', 'perl', 'native')): + perl = which('perl') + perl('Makefile.PL', 'INSTALL_BASE=%s' % prefix) + make('install') + # python bindings # make('swig-py', # 'swig-pydir=/usr/lib/python2.7/site-packages/libsvn', @@ -74,10 +98,6 @@ def install(self, spec, prefix): # 'swig-pydir=/usr/lib/python2.7/site-packages/libsvn', # 'swig_pydir_extra=/usr/lib/python2.7/site-packages/svn') - # perl bindings - # make('swig-pl') - # make('install-swig-pl') - # ruby bindings # make('swig-rb') # make('isntall-swig-rb') From d59ceba9c590163529660b857d0c40d876541f6f Mon Sep 17 00:00:00 2001 From: Hans Pabst Date: Fri, 31 Mar 2017 14:53:37 +0200 Subject: [PATCH 0506/2394] Included LIBXSMM 1.8 into the list of available versions. (#3646) --- var/spack/repos/builtin/packages/libxsmm/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py index abc5dc5cde6..8552d3c2f0c 100644 --- a/var/spack/repos/builtin/packages/libxsmm/package.py +++ b/var/spack/repos/builtin/packages/libxsmm/package.py @@ -32,10 +32,11 @@ class Libxsmm(Package): and small convolutions.''' homepage = 'https://github.com/hfp/libxsmm' - url = 'https://github.com/hfp/libxsmm/archive/1.7.1.tar.gz' + url = 'https://github.com/hfp/libxsmm/archive/1.8.tar.gz' version('develop', git='https://github.com/hfp/libxsmm.git') + version('1.8', '2d513afbdad99e5d04c6c4ab4c9bb25b') version('1.7.1', 'a938335b1c2c90616dc72c2c1a5824ab') version('1.7', 'cb3aff6d123ba70bd3d4daf575767d14') version('1.6.6', '8b45ae022f36b8c212f579a0952b5034') From 832f932310adad963d7a57642d2eb64a0e973873 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 31 Mar 2017 14:54:04 +0200 Subject: [PATCH 0507/2394] CONFIG: add older bison version 2.7 (#3645) - for programs that don't yet work with bison 3.x --- var/spack/repos/builtin/packages/bison/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index e87c7da7ce3..133fcc5fc30 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -34,6 +34,7 @@ class Bison(AutotoolsPackage): url = "http://ftp.gnu.org/gnu/bison/bison-3.0.tar.gz" version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8') + version('2.7', 'ded660799e76fb1667d594de1f7a0da9') depends_on('m4', type=('build', 'run')) From d13854b5d424e8fef3cef1ab11650ad787dcecc1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 31 Mar 2017 09:18:28 -0500 Subject: [PATCH 0508/2394] Perl: add more versions, add phases (#3640) --- .../repos/builtin/packages/perl/package.py | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index b8874c124e4..94c8d91e4bd 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -36,17 +36,22 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package """Perl 5 is a highly capable, feature-rich programming language with over 27 years of development.""" + homepage = "http://www.perl.org" # URL must remain http:// so Spack can bootstrap curl url = "http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz" - version('5.24.1', '765ef511b5b87a164e2531403ee16b3c') - version('5.24.0', 'c5bf7f3285439a2d3b6a488e14503701') - version('5.22.2', '5767e2a10dd62a46d7b57f74a90d952b') + # Development releases + version('5.25.11', '37a398682c36cd85992b34b5c1c25dc1') + + # Maintenance releases (recommended) + version('5.24.1', '765ef511b5b87a164e2531403ee16b3c', preferred=True) + version('5.22.3', 'aa4f236dc2fc6f88b871436b8d0fda95') + + # End of life releases version('5.20.3', 'd647d0ea5a7a8194c34759ab9f2610cd') - # 5.18.4 fails with gcc-5 - # https://rt.perl.org/Public/Bug/Display.html?id=123784 - # version('5.18.4' , '1f9334ff730adc05acd3dd7130d295db') + version('5.18.4', '1f9334ff730adc05acd3dd7130d295db') + version('5.16.3', 'eb5c40f2575df6c155bc99e3fe0a9d82') extendable = True @@ -65,18 +70,42 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package placement="cpanm" ) - def install(self, spec, prefix): - configure = Executable('./Configure') - configure_args = ["-des", "-Dprefix=" + prefix] + phases = ['configure', 'build', 'install'] + + def configure_args(self): + spec = self.spec + prefix = self.prefix + + config_args = [ + '-des', + '-Dprefix={0}'.format(prefix) + ] + # Discussion of -fPIC for Intel at: # https://github.com/LLNL/spack/pull/3081 if spec.satisfies('%intel'): - configure_args.append("-Accflags=" + self.compiler.pic_flag) - configure(*configure_args) + config_args.append('-Accflags={0}'.format(self.compiler.pic_flag)) + + return config_args + + def configure(self, spec, prefix): + configure = Executable('./Configure') + configure(*self.configure_args()) + + def build(self, spec, prefix): make() - if self.run_tests: - make("test") - make("install") + + @on_package_attributes(run_tests=True) + def test(self): + make('test') + + def install(self, spec, prefix): + make('install') + + @run_after('install') + def install_cpanm(self): + spec = self.spec + prefix = self.prefix if '+cpanm' in spec: with working_dir(join_path('cpanm', 'cpanm')): From 343f3b2fde46f2de34f16ed1cacbd7455b4a8498 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 31 Mar 2017 11:51:13 -0500 Subject: [PATCH 0509/2394] Add QBank package (#3641) * Add QBank package * Install the documentation and add it to the MANPATH * Add Perl DBI package * Make sure setup method variables are consistent --- .../builtin/packages/perl-dbi/package.py | 36 ++++++++ .../repos/builtin/packages/perl/package.py | 10 +-- .../repos/builtin/packages/qbank/package.py | 87 +++++++++++++++++++ 3 files changed, 128 insertions(+), 5 deletions(-) create mode 100644 var/spack/repos/builtin/packages/perl-dbi/package.py create mode 100644 var/spack/repos/builtin/packages/qbank/package.py diff --git a/var/spack/repos/builtin/packages/perl-dbi/package.py b/var/spack/repos/builtin/packages/perl-dbi/package.py new file mode 100644 index 00000000000..d1c6a11fb4e --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-dbi/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PerlDbi(PerlPackage): + """The DBI is the standard database interface module for Perl. It defines + a set of methods, variables and conventions that provide a consistent + database interface independent of the actual database being used.""" + + homepage = "https://dbi.perl.org/" + url = "http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.636.tar.gz" + + version('1.636', '60f291e5f015550dde71d1858dfe93ba') diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 94c8d91e4bd..3f2f3aa1a71 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -118,13 +118,13 @@ def setup_environment(self, spack_env, run_env): """Set PERL5LIB to support activation of Perl packages""" run_env.set('PERL5LIB', join_path(self.prefix, 'lib', 'perl5')) - def setup_dependent_environment(self, spack_env, run_env, extension_spec): + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """Set PATH and PERL5LIB to include the extension and any other perl extensions it depends on, assuming they were installed with INSTALL_BASE defined.""" perl_lib_dirs = [] perl_bin_dirs = [] - for d in extension_spec.traverse( + for d in dependent_spec.traverse( deptype=('build', 'run'), deptype_query='run'): if d.package.extends(self.spec): perl_lib_dirs.append(join_path(d.prefix, 'lib', 'perl5')) @@ -136,7 +136,7 @@ def setup_dependent_environment(self, spack_env, run_env, extension_spec): run_env.prepend_path('PATH', perl_bin_path) run_env.prepend_path('PERL5LIB', perl_lib_path) - def setup_dependent_package(self, module, ext_spec): + def setup_dependent_package(self, module, dependent_spec): """Called before perl modules' install() methods. In most cases, extensions will only need to have one line: perl('Makefile.PL','INSTALL_BASE=%s' % self.prefix) @@ -146,9 +146,9 @@ def setup_dependent_package(self, module, ext_spec): module.perl = Executable(join_path(self.spec.prefix.bin, 'perl')) # Add variables for library directory - module.perl_lib_dir = join_path(ext_spec.prefix, 'lib', 'perl5') + module.perl_lib_dir = join_path(dependent_spec.prefix, 'lib', 'perl5') # Make the site packages directory for extensions, # if it does not exist already. - if ext_spec.package.is_extension: + if dependent_spec.package.is_extension: mkdirp(module.perl_lib_dir) diff --git a/var/spack/repos/builtin/packages/qbank/package.py b/var/spack/repos/builtin/packages/qbank/package.py new file mode 100644 index 00000000000..976bda8fbd6 --- /dev/null +++ b/var/spack/repos/builtin/packages/qbank/package.py @@ -0,0 +1,87 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class Qbank(Package): + """QBank is a unique dynamic reservation-based allocation management system + that manages the utilization of computational resources in a multi-project + environment. It is used in conjunction with a resource management system + allowing an organization to guarantee greater fairness and enforce mission + priorities by associating a charge with the use of computational resources + and allocating resource credits which limit how much of the resources may + be used at what time and by whom. It tracks resource utilization and allows + for insightful planning.""" + + # QBank is so old that it no longer has (never had?) a homepage + # but it was developed at Pacific Northwest National Laboratory + # by Scott Jackson + homepage = "http://www.pnnl.gov/" + url = "file://{0}/qbank-2.10.4.tar.gz".format(os.getcwd()) + + version('2.10.4', '0820587353e63d32ddb49689dd4289e7') + + variant('doc', default=False, description='Build documentation') + + depends_on('openssl') + + depends_on('perl@5.6:5.16', type=('build', 'run')) + depends_on('perl-dbi@1.00:', type=('build', 'run')) + + phases = ['configure', 'build', 'install'] + + def configure_args(self): + prefix = self.prefix + + config_args = [ + '--prefix', prefix, + '--logdir', join_path(prefix, 'var', 'log', 'qbank') + ] + + return config_args + + def configure(self, spec, prefix): + perl = which('perl') + perl('configure', *self.configure_args()) + + def build(self, spec, prefix): + make() + + if '+doc' in spec: + make('docs') + + def install(self, spec, prefix): + make('install') + + if '+doc' in spec: + install_tree('doc', join_path(prefix, 'doc')) + + def setup_environment(self, spack_env, run_env): + spec = self.spec + prefix = self.prefix + + if '+doc' in spec: + run_env.prepend_path('MANPATH', join_path(prefix, 'doc')) From 0d421137f4db203250428c36518a69dec312a2ea Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Fri, 31 Mar 2017 20:41:08 +0200 Subject: [PATCH 0510/2394] Fix mxml (#3639) mxml is now hosted on GitHub. --- lib/spack/spack/url.py | 1 + var/spack/repos/builtin/packages/mxml/package.py | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 65f8e12e58f..89f4a16dfc6 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -370,6 +370,7 @@ def parse_name_offset(path, v=None): (r'/([^/]+)/(tarball|zipball)/', path), (r'/([^/]+)[_.-](bin|dist|stable|src|sources)[_.-]%s' % v, path), (r'github.com/[^/]+/([^/]+)/archive', path), + (r'github.com/[^/]+/([^/]+)/releases', path), (r'[^/]+/([^/]+)/repository/archive', path), # gitlab (r'([^/]+)/download.php', path), diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index fcb79596788..cd53c67dff8 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -31,8 +31,8 @@ class Mxml(AutotoolsPackage): non-standard libraries. """ - homepage = "http://www.msweet.org" - url = "http://www.msweet.org/files/project3/mxml-2.9.tar.gz" + homepage = "http://michaelrsweet.github.io/mxml/" + url = "https://github.com/michaelrsweet/mxml/releases/download/release-2.10/mxml-2.10.tar.gz" version('2.10', '8804c961a24500a95690ef287d150abe') version('2.9', 'e21cad0f7aacd18f942aa0568a8dee19') @@ -41,6 +41,9 @@ class Mxml(AutotoolsPackage): version('2.6', '68977789ae64985dddbd1a1a1652642e') version('2.5', 'f706377fba630b39fa02fd63642b17e5') + def url_for_version(self, version): + return "https://github.com/michaelrsweet/mxml/releases/download/release-{0}/mxml-{0}.tar.gz".format(version) + # module swap PrgEnv-intel PrgEnv-$COMP # (Can use whatever compiler you want to use) # Case statement to change CC and CXX flags From 3ade829566a00e6bcb542c5af27f107a6e45d50e Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Fri, 31 Mar 2017 11:42:03 -0700 Subject: [PATCH 0511/2394] new and updated PRUNERS tools (#3648) --- .../repos/builtin/packages/archer/package.py | 6 +-- .../packages/llvm-openmp-ompt/package.py | 6 ++- .../builtin/packages/pruners-ninja/package.py | 39 +++++++++++++++++++ .../repos/builtin/packages/rempi/package.py | 39 +++++++++++++++++++ 4 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 var/spack/repos/builtin/packages/pruners-ninja/package.py create mode 100644 var/spack/repos/builtin/packages/rempi/package.py diff --git a/var/spack/repos/builtin/packages/archer/package.py b/var/spack/repos/builtin/packages/archer/package.py index 31a1d498daf..247743ed0db 100644 --- a/var/spack/repos/builtin/packages/archer/package.py +++ b/var/spack/repos/builtin/packages/archer/package.py @@ -30,12 +30,12 @@ class Archer(Package): """ARCHER, a data race detection tool for large OpenMP applications.""" homepage = "https://github.com/PRUNERS/ARCHER" + url = "https://github.com/PRUNERS/archer/archive/v1.0.0.tar.gz" - version('1.0.0b', git='https://github.com/PRUNERS/ARCHER.git', - commit='2cf7ead36358842871d5bd9c33d499f62bf8dd38') + version('1.0.0', '790bfaf00b9f57490eb609ecabfe954a') depends_on('cmake', type='build') - depends_on('llvm+clang~gold') + depends_on('llvm') depends_on('ninja', type='build') depends_on('llvm-openmp-ompt') diff --git a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py index 8b83f216b60..7cc42e0f282 100644 --- a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py +++ b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py @@ -33,13 +33,17 @@ class LlvmOpenmpOmpt(Package): homepage = "https://github.com/OpenMPToolsInterface/LLVM-openmp" + # tr4-stable branch + version('3.9.2b2', + git='https://github.com/OpenMPToolsInterface/LLVM-openmp.git', + commit='5cdca5dd3c0c336d42a335ca7cff622e270c9d47') # align-to-tr-rebased branch version('3.9.2b', git='https://github.com/OpenMPToolsInterface/LLVM-openmp.git', commit='982a08bcf3df9fb5afc04ac3bada47f19cc4e3d3') depends_on('cmake', type='build') - depends_on('llvm+clang~gold') + depends_on('llvm') depends_on('ninja', type='build') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/pruners-ninja/package.py b/var/spack/repos/builtin/packages/pruners-ninja/package.py new file mode 100644 index 00000000000..effbd979c37 --- /dev/null +++ b/var/spack/repos/builtin/packages/pruners-ninja/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PrunersNinja(AutotoolsPackage): + """NINJA: Noise Inject agent tool to expose subtle and unintended message + races.""" + homepage = "https://github.com/PRUNERS/NINJA" + url = "https://github.com/PRUNERS/NINJA/releases/download/v1.0.0/NINJA-1.0.0.tar.gz" + + version("1.0.0", "fee53c4712ac521ebec3cd8692e5185a") + + depends_on("mpi") + depends_on("autoconf", type='build') + depends_on("automake", type='build') + depends_on("libtool", type='build') diff --git a/var/spack/repos/builtin/packages/rempi/package.py b/var/spack/repos/builtin/packages/rempi/package.py new file mode 100644 index 00000000000..d93dbfa7227 --- /dev/null +++ b/var/spack/repos/builtin/packages/rempi/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Rempi(AutotoolsPackage): + """ReMPI is a record-and-replay tool for MPI applications.""" + homepage = "https://github.com/PRUNERS/ReMPI" + url = "https://github.com/PRUNERS/ReMPI/releases/download/v1.0.0/ReMPI-1.0.0.tar.gz" + + version("1.0.0", "32c780a6a74627b5796bea161d4c4733") + + depends_on("mpi") + depends_on("zlib") + depends_on("autoconf", type='build') + depends_on("automake", type='build') + depends_on("libtool", type='build') From bc404532ea875ecc6982d049dc7c7f041aa74443 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 31 Mar 2017 15:39:07 -0500 Subject: [PATCH 0512/2394] PythonPackage: Let There Be Tests! (#2869) * Run python setup.py test if --run-tests * Attempt to import the Python module after installation * Add testing support to numpy and scipy * Remove duplicated comments * Update to new run-tests callback methodology * Remove unrelated changes for another PR --- lib/spack/spack/build_systems/python.py | 80 +++++++++++++++++-- lib/spack/spack/util/executable.py | 2 +- .../repos/builtin/packages/py-nose/package.py | 4 + .../builtin/packages/py-numpy/package.py | 35 ++++++++ .../builtin/packages/py-scipy/package.py | 39 +++++++++ .../builtin/packages/py-setuptools/package.py | 14 ++++ 6 files changed, 167 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index d2ee72925da..2c8ccebae6a 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -24,6 +24,7 @@ ############################################################################## import inspect +import os from spack.directives import extends from spack.package import PackageBase, run_after @@ -91,10 +92,26 @@ def configure(self, spec, prefix): # Default phases phases = ['build', 'install'] + # Name of modules that the Python package provides + # This is used to test whether or not the installation succeeded + # These names generally come from running: + # + # >>> import setuptools + # >>> setuptools.find_packages() + # + # in the source tarball directory + import_modules = [] + # To be used in UI queries that require to know which # build-system class we are using build_system_class = 'PythonPackage' + #: Callback names for build-time test + build_time_test_callbacks = ['test'] + + #: Callback names for install-time test + install_time_test_callbacks = ['import_module_test'] + extends('python') def setup_file(self): @@ -106,19 +123,38 @@ def build_directory(self): """The directory containing the ``setup.py`` file.""" return self.stage.source_path - def python(self, *args): - inspect.getmodule(self).python(*args) + def python(self, *args, **kwargs): + inspect.getmodule(self).python(*args, **kwargs) - def setup_py(self, *args): + def setup_py(self, *args, **kwargs): setup = self.setup_file() with working_dir(self.build_directory): - self.python(setup, '--no-user-cfg', *args) + self.python(setup, '--no-user-cfg', *args, **kwargs) + + def _setup_command_available(self, command): + """Determines whether or not a setup.py command exists. + + :param str command: The command to look for + :return: True if the command is found, else False + :rtype: bool + """ + kwargs = { + 'output': os.devnull, + 'error': os.devnull, + 'fail_on_error': False + } + + python = inspect.getmodule(self).python + setup = self.setup_file() + + python(setup, '--no-user-cfg', command, '--help', **kwargs) + return python.returncode == 0 # The following phases and their descriptions come from: # $ python setup.py --help-commands - # Only standard commands are included here, but some packages - # define extra commands as well + + # Standard commands def build(self, spec, prefix): """Build everything needed to install.""" @@ -306,5 +342,37 @@ def check_args(self, spec, prefix): """Arguments to pass to check.""" return [] + # Testing + + def test(self): + """Run unit tests after in-place build. + + These tests are only run if the package actually has a 'test' command. + """ + if self._setup_command_available('test'): + args = self.test_args(self.spec, self.prefix) + + self.setup_py('test', *args) + + def test_args(self, spec, prefix): + """Arguments to pass to test.""" + return [] + + run_after('build')(PackageBase._run_default_build_time_test_callbacks) + + def import_module_test(self): + """Attempts to import the module that was just installed. + + This test is only run if the package overrides + :py:attr:`import_modules` with a list of module names.""" + + # Make sure we are importing the installed modules, + # not the ones in the current directory + with working_dir('..'): + for module in self.import_modules: + self.python('-c', 'import {0}'.format(module)) + + run_after('install')(PackageBase._run_default_install_time_test_callbacks) + # Check that self.prefix is there after installation run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 63bbbb7c923..7a960e88cbe 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -68,7 +68,7 @@ def __call__(self, *args, **kwargs): Raise an exception if the subprocess returns an error. Default is True. When not set, the return code is - avaiale as `exe.returncode`. + available as `exe.returncode`. ignore_errors diff --git a/var/spack/repos/builtin/packages/py-nose/package.py b/var/spack/repos/builtin/packages/py-nose/package.py index c78c52647a9..2b27ed4f1d0 100644 --- a/var/spack/repos/builtin/packages/py-nose/package.py +++ b/var/spack/repos/builtin/packages/py-nose/package.py @@ -34,6 +34,10 @@ class PyNose(PythonPackage): list_url = "https://pypi.python.org/pypi/nose/" list_depth = 2 + import_modules = [ + 'nose', 'nose.ext', 'nose.plugins', 'nose.sphinx', 'nose.tools' + ] + version('1.3.7', '4d3ad0ff07b61373d2cefc89c5d0b20b') version('1.3.6', '0ca546d81ca8309080fc80cb389e7a16') version('1.3.4', '6ed7169887580ddc9a8e16048d38274d') diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 3ed0d0bdb58..3b590fbd244 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -36,6 +36,18 @@ class PyNumpy(PythonPackage): homepage = "http://www.numpy.org/" url = "https://pypi.io/packages/source/n/numpy/numpy-1.9.1.tar.gz" + install_time_test_callbacks = ['install_test', 'import_module_test'] + + import_modules = [ + 'numpy', 'numpy.compat', 'numpy.core', 'numpy.distutils', 'numpy.doc', + 'numpy.f2py', 'numpy.fft', 'numpy.lib', 'numpy.linalg', 'numpy.ma', + 'numpy.matrixlib', 'numpy.polynomial', 'numpy.random', 'numpy.testing', + 'numpy.distutils.command', 'numpy.distutils.fcompiler' + ] + + # FIXME: numpy._build_utils and numpy.core.code_generators failed to import + # FIXME: Is this expected? + version('1.12.0', '33e5a84579f31829bbbba084fe0a4300', url="https://pypi.io/packages/source/n/numpy/numpy-1.12.0.zip") version('1.11.2', '03bd7927c314c43780271bf1ab795ebc') @@ -53,6 +65,10 @@ class PyNumpy(PythonPackage): depends_on('blas', when='+blas') depends_on('lapack', when='+lapack') + # Tests require: + # TODO: Add a 'test' deptype + # depends_on('py-nose@1.0.0:', type='test') + def setup_dependent_package(self, module, dependent_spec): python_version = self.spec['python'].version.up_to(2) arch = '{0}-{1}'.format(platform.system().lower(), platform.machine()) @@ -132,3 +148,22 @@ def build_args(self, spec, prefix): args = ['-j', str(make_jobs)] return args + + def test(self): + # `setup.py test` is not supported. Use one of the following + # instead: + # + # - `python runtests.py` (to build and test) + # - `python runtests.py --no-build` (to test installed numpy) + # - `>>> numpy.test()` (run tests for installed numpy + # from within an interpreter) + pass + + def install_test(self): + # Change directories due to the following error: + # + # ImportError: Error importing numpy: you should not try to import + # numpy from its source directory; please exit the numpy + # source tree, and relaunch your python interpreter from there. + with working_dir('..'): + python('-c', 'import numpy; numpy.test("full", verbose=2)') diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index c506d4747d7..c3ca24291f0 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -33,6 +33,22 @@ class PyScipy(PythonPackage): homepage = "http://www.scipy.org/" url = "https://pypi.io/packages/source/s/scipy/scipy-0.18.1.tar.gz" + install_time_test_callbacks = ['install_test', 'import_module_test'] + + import_modules = [ + 'scipy', 'scipy._build_utils', 'scipy._lib', 'scipy.cluster', + 'scipy.constants', 'scipy.fftpack', 'scipy.integrate', + 'scipy.interpolate', 'scipy.io', 'scipy.linalg', 'scipy.misc', + 'scipy.ndimage', 'scipy.odr', 'scipy.optimize', 'scipy.signal', + 'scipy.sparse', 'scipy.spatial', 'scipy.special', 'scipy.stats', + 'scipy.weave', 'scipy.io.arff', 'scipy.io.harwell_boeing', + 'scipy.io.matlab', 'scipy.optimize._lsq', 'scipy.sparse.csgraph', + 'scipy.sparse.linalg', 'scipy.sparse.linalg.dsolve', + 'scipy.sparse.linalg.eigen', 'scipy.sparse.linalg.isolve', + 'scipy.sparse.linalg.eigen.arpack', 'scipy.sparse.linalg.eigen.lobpcg', + 'scipy.special._precompute' + ] + version('0.19.0', '91b8396231eec780222a57703d3ec550', url="https://pypi.io/packages/source/s/scipy/scipy-0.19.0.zip") version('0.18.1', '5fb5fb7ccb113ab3a039702b6c2f3327') @@ -49,6 +65,10 @@ class PyScipy(PythonPackage): depends_on('blas') depends_on('lapack') + # Tests require: + # TODO: Add a 'test' deptype + # depends_on('py-nose', type='test') + def build_args(self, spec, prefix): args = [] @@ -59,3 +79,22 @@ def build_args(self, spec, prefix): args.extend(['-j', str(make_jobs)]) return args + + def test(self): + # `setup.py test` is not supported. Use one of the following + # instead: + # + # - `python runtests.py` (to build and test) + # - `python runtests.py --no-build` (to test installed scipy) + # - `>>> scipy.test()` (run tests for installed scipy + # from within an interpreter) + pass + + def install_test(self): + # Change directories due to the following error: + # + # ImportError: Error importing scipy: you should not try to import + # scipy from its source directory; please exit the scipy + # source tree, and relaunch your python interpreter from there. + with working_dir('..'): + python('-c', 'import scipy; scipy.test("full", verbose=2)') diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index af1ea9bf06d..94ee8a7fc46 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -32,6 +32,12 @@ class PySetuptools(PythonPackage): homepage = "https://pypi.python.org/pypi/setuptools" url = "https://pypi.io/packages/source/s/setuptools/setuptools-25.2.0.tar.gz" + import_modules = [ + 'pkg_resources', 'setuptools', 'pkg_resources.extern', + 'pkg_resources._vendor', 'pkg_resources._vendor.packaging', + 'setuptools.extern', 'setuptools.command' + ] + version('34.2.0', '41b630da4ea6cfa5894d9eb3142922be', url="https://pypi.io/packages/source/s/setuptools/setuptools-34.2.0.zip") version('25.2.0', 'a0dbb65889c46214c691f6c516cf959c') @@ -53,3 +59,11 @@ class PySetuptools(PythonPackage): depends_on('py-packaging@16.8:', when='@34.0.0:', type=('build', 'run')) depends_on('py-six@1.6.0:', when='@34.0.0:', type=('build', 'run')) depends_on('py-appdirs@1.4.0:', when='@34.0.0:', type=('build', 'run')) + + # Tests require: + # TODO: Add a 'test' deptype + # FIXME: All of these depend on setuptools, creating a dependency loop + # FIXME: Is there any way around this problem? + # depends_on('py-pytest-flake8', type='test') + # depends_on('pytest@2.8:', type='test') + # depends_on('py-mock', when='^python@:3.2', type='test') From 0331b08c64abbc3d7c185d9650007be1de238cfc Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 7 Mar 2017 09:32:43 -0800 Subject: [PATCH 0513/2394] Update externals to work with Python 3 - Update YAML version to support Python 3 - Python 3 support for ordereddict backport - Exclude Python3 YAML from version tests. - Vendor six into Spack. - Make Python version-check tests work with Python 3 - Add ability to add version check exceptions with '# nopyqver' line comments. --- .travis.yml | 1 - bin/spack | 7 + lib/spack/docs/conf.py | 8 +- lib/spack/external/_pytest/pytester.py | 2 +- lib/spack/external/ordereddict_backport.py | 8 +- lib/spack/external/pyqver2.py | 70 +- lib/spack/external/pyqver3.py | 248 +++ lib/spack/external/six.py | 886 ++++++++++ lib/spack/external/yaml/README | 2 +- .../external/yaml/{ => lib/yaml}/__init__.py | 2 +- .../external/yaml/{ => lib/yaml}/composer.py | 0 .../yaml/{ => lib/yaml}/constructor.py | 3 - lib/spack/external/yaml/lib/yaml/cyaml.py | 85 + .../external/yaml/{ => lib/yaml}/dumper.py | 0 .../external/yaml/{ => lib/yaml}/emitter.py | 0 .../external/yaml/{ => lib/yaml}/error.py | 0 .../external/yaml/{ => lib/yaml}/events.py | 0 .../external/yaml/{ => lib/yaml}/loader.py | 0 .../external/yaml/{ => lib/yaml}/nodes.py | 0 .../external/yaml/{ => lib/yaml}/parser.py | 0 .../external/yaml/{ => lib/yaml}/reader.py | 9 +- .../yaml/{ => lib/yaml}/representer.py | 4 +- .../external/yaml/{ => lib/yaml}/resolver.py | 5 +- .../external/yaml/{ => lib/yaml}/scanner.py | 8 +- .../yaml/{ => lib/yaml}/serializer.py | 0 .../external/yaml/{ => lib/yaml}/tokens.py | 0 lib/spack/external/yaml/lib3/yaml/__init__.py | 312 ++++ lib/spack/external/yaml/lib3/yaml/composer.py | 139 ++ .../external/yaml/lib3/yaml/constructor.py | 686 ++++++++ lib/spack/external/yaml/lib3/yaml/cyaml.py | 85 + lib/spack/external/yaml/lib3/yaml/dumper.py | 62 + lib/spack/external/yaml/lib3/yaml/emitter.py | 1137 +++++++++++++ lib/spack/external/yaml/lib3/yaml/error.py | 75 + lib/spack/external/yaml/lib3/yaml/events.py | 86 + lib/spack/external/yaml/lib3/yaml/loader.py | 40 + lib/spack/external/yaml/lib3/yaml/nodes.py | 49 + lib/spack/external/yaml/lib3/yaml/parser.py | 589 +++++++ lib/spack/external/yaml/lib3/yaml/reader.py | 192 +++ .../external/yaml/lib3/yaml/representer.py | 387 +++++ lib/spack/external/yaml/lib3/yaml/resolver.py | 227 +++ lib/spack/external/yaml/lib3/yaml/scanner.py | 1444 +++++++++++++++++ .../external/yaml/lib3/yaml/serializer.py | 111 ++ lib/spack/external/yaml/lib3/yaml/tokens.py | 104 ++ lib/spack/spack/test/python_version.py | 124 +- 44 files changed, 7067 insertions(+), 130 deletions(-) create mode 100755 lib/spack/external/pyqver3.py create mode 100644 lib/spack/external/six.py rename lib/spack/external/yaml/{ => lib/yaml}/__init__.py (99%) rename lib/spack/external/yaml/{ => lib/yaml}/composer.py (100%) rename lib/spack/external/yaml/{ => lib/yaml}/constructor.py (99%) create mode 100644 lib/spack/external/yaml/lib/yaml/cyaml.py rename lib/spack/external/yaml/{ => lib/yaml}/dumper.py (100%) rename lib/spack/external/yaml/{ => lib/yaml}/emitter.py (100%) rename lib/spack/external/yaml/{ => lib/yaml}/error.py (100%) rename lib/spack/external/yaml/{ => lib/yaml}/events.py (100%) rename lib/spack/external/yaml/{ => lib/yaml}/loader.py (100%) rename lib/spack/external/yaml/{ => lib/yaml}/nodes.py (100%) rename lib/spack/external/yaml/{ => lib/yaml}/parser.py (100%) rename lib/spack/external/yaml/{ => lib/yaml}/reader.py (96%) rename lib/spack/external/yaml/{ => lib/yaml}/representer.py (99%) rename lib/spack/external/yaml/{ => lib/yaml}/resolver.py (97%) rename lib/spack/external/yaml/{ => lib/yaml}/scanner.py (99%) rename lib/spack/external/yaml/{ => lib/yaml}/serializer.py (100%) rename lib/spack/external/yaml/{ => lib/yaml}/tokens.py (100%) create mode 100644 lib/spack/external/yaml/lib3/yaml/__init__.py create mode 100644 lib/spack/external/yaml/lib3/yaml/composer.py create mode 100644 lib/spack/external/yaml/lib3/yaml/constructor.py create mode 100644 lib/spack/external/yaml/lib3/yaml/cyaml.py create mode 100644 lib/spack/external/yaml/lib3/yaml/dumper.py create mode 100644 lib/spack/external/yaml/lib3/yaml/emitter.py create mode 100644 lib/spack/external/yaml/lib3/yaml/error.py create mode 100644 lib/spack/external/yaml/lib3/yaml/events.py create mode 100644 lib/spack/external/yaml/lib3/yaml/loader.py create mode 100644 lib/spack/external/yaml/lib3/yaml/nodes.py create mode 100644 lib/spack/external/yaml/lib3/yaml/parser.py create mode 100644 lib/spack/external/yaml/lib3/yaml/reader.py create mode 100644 lib/spack/external/yaml/lib3/yaml/representer.py create mode 100644 lib/spack/external/yaml/lib3/yaml/resolver.py create mode 100644 lib/spack/external/yaml/lib3/yaml/scanner.py create mode 100644 lib/spack/external/yaml/lib3/yaml/serializer.py create mode 100644 lib/spack/external/yaml/lib3/yaml/tokens.py diff --git a/.travis.yml b/.travis.yml index 11e7e5fac3a..4cd3b14b9ce 100644 --- a/.travis.yml +++ b/.travis.yml @@ -46,7 +46,6 @@ addons: packages: - gfortran - graphviz - - libyaml-dev # Work around Travis's lack of support for Python on OSX before_install: diff --git a/bin/spack b/bin/spack index f885f577c8d..550b999eb99 100755 --- a/bin/spack +++ b/bin/spack @@ -46,6 +46,13 @@ sys.path.insert(0, SPACK_LIB_PATH) SPACK_EXTERNAL_LIBS = os.path.join(SPACK_LIB_PATH, "external") sys.path.insert(0, SPACK_EXTERNAL_LIBS) +# Handle vendoring of YAML specially, as it has two versions. +if sys.version_info[0] == 2: + SPACK_YAML_LIBS = os.path.join(SPACK_EXTERNAL_LIBS, "yaml/lib") +else: + SPACK_YAML_LIBS = os.path.join(SPACK_EXTERNAL_LIBS, "yaml/lib3") +sys.path.insert(0, SPACK_YAML_LIBS) + # Quick and dirty check to clean orphaned .pyc files left over from # previous revisions. These files were present in earlier versions of # Spack, were removed, but shadow system modules that Spack still diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index db8d3d29dcc..69ec2a0b332 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -51,6 +51,10 @@ # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('exts')) sys.path.insert(0, os.path.abspath('../external')) +if sys.version_info[0] < 3: + sys.path.insert(0, os.path.abspath('../external/yaml/lib')) +else: + sys.path.insert(0, os.path.abspath('../external/yaml/lib3')) sys.path.append(os.path.abspath('..')) # Add the Spack bin directory to the path so that we can use its output in docs. @@ -110,13 +114,13 @@ for line in fileinput.input('spack.rst', inplace=1): if handling_spack: if not line.startswith(' :noindex:'): - print ' :noindex: %s' % ' '.join(spack.__all__) + print(' :noindex: %s' % ' '.join(spack.__all__)) handling_spack = False if line.startswith('.. automodule::'): handling_spack = (line == '.. automodule:: spack\n') - print line, + sys.stdout.write(line) # Enable todo items todo_include_todos = True diff --git a/lib/spack/external/_pytest/pytester.py b/lib/spack/external/_pytest/pytester.py index 17ff529a6c9..d87c0a762a3 100644 --- a/lib/spack/external/_pytest/pytester.py +++ b/lib/spack/external/_pytest/pytester.py @@ -551,7 +551,7 @@ def syspathinsert(self, path=None): def _possibly_invalidate_import_caches(self): # invalidate caches if we can (py33 and above) try: - import importlib + import importlib # nopyqver except ImportError: pass else: diff --git a/lib/spack/external/ordereddict_backport.py b/lib/spack/external/ordereddict_backport.py index 8ddad1477ea..154e5d18723 100644 --- a/lib/spack/external/ordereddict_backport.py +++ b/lib/spack/external/ordereddict_backport.py @@ -8,7 +8,13 @@ try: from thread import get_ident as _get_ident except ImportError: - from dummy_thread import get_ident as _get_ident + try: + from dummy_thread import get_ident as _get_ident + except ImportError: + try: + from _dummy_thread import get_ident as _get_ident + except ImportError: + from threading import get_ident as _get_ident # nopyqver try: from _abcoll import KeysView, ValuesView, ItemsView diff --git a/lib/spack/external/pyqver2.py b/lib/spack/external/pyqver2.py index 571e005524d..07b191425b2 100755 --- a/lib/spack/external/pyqver2.py +++ b/lib/spack/external/pyqver2.py @@ -57,11 +57,7 @@ "hmac": (2, 2), "hotshot": (2, 2), "HTMLParser": (2, 2), -# skip importlib until we can conditionally skip for pytest. -# pytest tries to import this and catches the exception, but -# the test will still fail. -# TODO: can we excelude with a comment like '# flake: noqa?' -# "importlib": (2, 7), + "importlib": (2, 7), "inspect": (2, 1), "io": (2, 6), "itertools": (2, 3), @@ -262,7 +258,7 @@ def visitYield(self, node): self.add(node, (2,2), "yield expression") self.default(node) -def get_versions(source): +def get_versions(source, filename=None): """Return information about the Python versions required for specific features. The return value is a dictionary with keys as a version number as a tuple @@ -346,65 +342,3 @@ def qver(source): #(2, 6) """ return max(get_versions(source).keys()) - - -if __name__ == '__main__': - - Verbose = False - MinVersion = (2, 3) - Lint = False - - files = [] - i = 1 - while i < len(sys.argv): - a = sys.argv[i] - if a == "--test": - import doctest - doctest.testmod() - sys.exit(0) - if a == "-v" or a == "--verbose": - Verbose = True - elif a == "-l" or a == "--lint": - Lint = True - elif a == "-m" or a == "--min-version": - i += 1 - MinVersion = tuple(map(int, sys.argv[i].split("."))) - else: - files.append(a) - i += 1 - - if not files: - print >>sys.stderr, """Usage: %s [options] source ... - - Report minimum Python version required to run given source files. - - -m x.y or --min-version x.y (default 2.3) - report version triggers at or above version x.y in verbose mode - -v or --verbose - print more detailed report of version triggers for each version - """ % sys.argv[0] - sys.exit(1) - - for fn in files: - try: - f = open(fn) - source = f.read() - f.close() - ver = get_versions(source) - if Verbose: - print fn - for v in sorted([k for k in ver.keys() if k >= MinVersion], reverse=True): - reasons = [x for x in uniq(ver[v]) if x] - if reasons: - # each reason is (lineno, message) - print "\t%s\t%s" % (".".join(map(str, v)), ", ".join([x[1] for x in reasons])) - elif Lint: - for v in sorted([k for k in ver.keys() if k >= MinVersion], reverse=True): - reasons = [x for x in uniq(ver[v]) if x] - for r in reasons: - # each reason is (lineno, message) - print "%s:%s: %s %s" % (fn, r[0], ".".join(map(str, v)), r[1]) - else: - print "%s\t%s" % (".".join(map(str, max(ver.keys()))), fn) - except SyntaxError, x: - print "%s: syntax error compiling with Python %s: %s" % (fn, platform.python_version(), x) diff --git a/lib/spack/external/pyqver3.py b/lib/spack/external/pyqver3.py new file mode 100755 index 00000000000..b63576a0647 --- /dev/null +++ b/lib/spack/external/pyqver3.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python3 +# +# pyqver3.py +# by Greg Hewgill +# https://github.com/ghewgill/pyqver +# +# This software is provided 'as-is', without any express or implied +# warranty. In no event will the author be held liable for any damages +# arising from the use of this software. +# +# Permission is granted to anyone to use this software for any purpose, +# including commercial applications, and to alter it and redistribute it +# freely, subject to the following restrictions: +# +# 1. The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. If you use this software +# in a product, an acknowledgment in the product documentation would be +# appreciated but is not required. +# 2. Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# 3. This notice may not be removed or altered from any source distribution. +# +# Copyright (c) 2009-2013 Greg Hewgill http://hewgill.com +# +import ast +import platform +import sys + +StandardModules = { +# skip argparse now that it's in lib/spack/external +# "argparse": (3, 2), + "faulthandler": (3, 3), + "importlib": (3, 1), + "ipaddress": (3, 3), + "lzma": (3, 3), + "tkinter.ttk": (3, 1), + "unittest.mock": (3, 3), + "venv": (3, 3), +} + +Functions = { + "bytearray.maketrans": (3, 1), + "bytes.maketrans": (3, 1), + "bz2.open": (3, 3), + "collections.Counter": (3, 1), + "collections.OrderedDict": (3, 1), + "crypt.mksalt": (3, 3), + "email.generator.BytesGenerator": (3, 2), + "email.message_from_binary_file": (3, 2), + "email.message_from_bytes": (3, 2), + "functools.lru_cache": (3, 2), + "gzip.compress": (3, 2), + "gzip.decompress": (3, 2), + "inspect.getclosurevars": (3, 3), + "inspect.getgeneratorlocals": (3, 3), + "inspect.getgeneratorstate": (3, 2), + "itertools.combinations_with_replacement": (3, 1), + "itertools.compress": (3, 1), + "logging.config.dictConfig": (3, 2), + "logging.NullHandler": (3, 1), + "math.erf": (3, 2), + "math.erfc": (3, 2), + "math.expm1": (3, 2), + "math.gamma": (3, 2), + "math.isfinite": (3, 2), + "math.lgamma": (3, 2), + "math.log2": (3, 3), + "os.environb": (3, 2), + "os.fsdecode": (3, 2), + "os.fsencode": (3, 2), + "os.fwalk": (3, 3), + "os.getenvb": (3, 2), + "os.get_exec_path": (3, 2), + "os.getgrouplist": (3, 3), + "os.getpriority": (3, 3), + "os.getresgid": (3, 2), + "os.getresuid": (3, 2), + "os.get_terminal_size": (3, 3), + "os.getxattr": (3, 3), + "os.initgroups": (3, 2), + "os.listxattr": (3, 3), + "os.lockf": (3, 3), + "os.pipe2": (3, 3), + "os.posix_fadvise": (3, 3), + "os.posix_fallocate": (3, 3), + "os.pread": (3, 3), + "os.pwrite": (3, 3), + "os.readv": (3, 3), + "os.removexattr": (3, 3), + "os.replace": (3, 3), + "os.sched_get_priority_max": (3, 3), + "os.sched_get_priority_min": (3, 3), + "os.sched_getaffinity": (3, 3), + "os.sched_getparam": (3, 3), + "os.sched_getscheduler": (3, 3), + "os.sched_rr_get_interval": (3, 3), + "os.sched_setaffinity": (3, 3), + "os.sched_setparam": (3, 3), + "os.sched_setscheduler": (3, 3), + "os.sched_yield": (3, 3), + "os.sendfile": (3, 3), + "os.setpriority": (3, 3), + "os.setresgid": (3, 2), + "os.setresuid": (3, 2), + "os.setxattr": (3, 3), + "os.sync": (3, 3), + "os.truncate": (3, 3), + "os.waitid": (3, 3), + "os.writev": (3, 3), + "shutil.chown": (3, 3), + "shutil.disk_usage": (3, 3), + "shutil.get_archive_formats": (3, 3), + "shutil.get_terminal_size": (3, 3), + "shutil.get_unpack_formats": (3, 3), + "shutil.make_archive": (3, 3), + "shutil.register_archive_format": (3, 3), + "shutil.register_unpack_format": (3, 3), + "shutil.unpack_archive": (3, 3), + "shutil.unregister_archive_format": (3, 3), + "shutil.unregister_unpack_format": (3, 3), + "shutil.which": (3, 3), + "signal.pthread_kill": (3, 3), + "signal.pthread_sigmask": (3, 3), + "signal.sigpending": (3, 3), + "signal.sigtimedwait": (3, 3), + "signal.sigwait": (3, 3), + "signal.sigwaitinfo": (3, 3), + "socket.CMSG_LEN": (3, 3), + "socket.CMSG_SPACE": (3, 3), + "socket.fromshare": (3, 3), + "socket.if_indextoname": (3, 3), + "socket.if_nameindex": (3, 3), + "socket.if_nametoindex": (3, 3), + "socket.sethostname": (3, 3), + "ssl.match_hostname": (3, 2), + "ssl.RAND_bytes": (3, 3), + "ssl.RAND_pseudo_bytes": (3, 3), + "ssl.SSLContext": (3, 2), + "ssl.SSLEOFError": (3, 3), + "ssl.SSLSyscallError": (3, 3), + "ssl.SSLWantReadError": (3, 3), + "ssl.SSLWantWriteError": (3, 3), + "ssl.SSLZeroReturnError": (3, 3), + "stat.filemode": (3, 3), + "textwrap.indent": (3, 3), + "threading.get_ident": (3, 3), + "time.clock_getres": (3, 3), + "time.clock_gettime": (3, 3), + "time.clock_settime": (3, 3), + "time.get_clock_info": (3, 3), + "time.monotonic": (3, 3), + "time.perf_counter": (3, 3), + "time.process_time": (3, 3), + "types.new_class": (3, 3), + "types.prepare_class": (3, 3), +} + +def uniq(a): + if len(a) == 0: + return [] + else: + return [a[0]] + uniq([x for x in a if x != a[0]]) + +class NodeChecker(ast.NodeVisitor): + def __init__(self): + self.vers = dict() + self.vers[(3,0)] = [] + def add(self, node, ver, msg): + if ver not in self.vers: + self.vers[ver] = [] + self.vers[ver].append((node.lineno, msg)) + def visit_Call(self, node): + def rollup(n): + if isinstance(n, ast.Name): + return n.id + elif isinstance(n, ast.Attribute): + r = rollup(n.value) + if r: + return r + "." + n.attr + name = rollup(node.func) + if name: + v = Functions.get(name) + if v is not None: + self.add(node, v, name) + self.generic_visit(node) + def visit_Import(self, node): + for n in node.names: + v = StandardModules.get(n.name) + if v is not None: + self.add(node, v, n.name) + self.generic_visit(node) + def visit_ImportFrom(self, node): + v = StandardModules.get(node.module) + if v is not None: + self.add(node, v, node.module) + for n in node.names: + name = node.module + "." + n.name + v = Functions.get(name) + if v is not None: + self.add(node, v, name) + def visit_Raise(self, node): + if isinstance(node.cause, ast.Name) and node.cause.id == "None": + self.add(node, (3,3), "raise ... from None") + def visit_YieldFrom(self, node): + self.add(node, (3,3), "yield from") + +def get_versions(source, filename=None): + """Return information about the Python versions required for specific features. + + The return value is a dictionary with keys as a version number as a tuple + (for example Python 3.1 is (3,1)) and the value are a list of features that + require the indicated Python version. + """ + tree = ast.parse(source, filename=filename) + checker = NodeChecker() + checker.visit(tree) + return checker.vers + +def v33(source): + if sys.version_info >= (3, 3): + return qver(source) + else: + print("Not all features tested, run --test with Python 3.3", file=sys.stderr) + return (3, 3) + +def qver(source): + """Return the minimum Python version required to run a particular bit of code. + + >>> qver('print("hello world")') + (3, 0) + >>> qver("import importlib") + (3, 1) + >>> qver("from importlib import x") + (3, 1) + >>> qver("import tkinter.ttk") + (3, 1) + >>> qver("from collections import Counter") + (3, 1) + >>> qver("collections.OrderedDict()") + (3, 1) + >>> qver("import functools\\n@functools.lru_cache()\\ndef f(x): x*x") + (3, 2) + >>> v33("yield from x") + (3, 3) + >>> v33("raise x from None") + (3, 3) + """ + return max(get_versions(source).keys()) diff --git a/lib/spack/external/six.py b/lib/spack/external/six.py new file mode 100644 index 00000000000..5293325821c --- /dev/null +++ b/lib/spack/external/six.py @@ -0,0 +1,886 @@ +# Copyright (c) 2010-2017 Benjamin Peterson +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +"""Utilities for writing code that runs on Python 2 and 3""" + +from __future__ import absolute_import + +import functools +import itertools +import operator +import sys +import types + +__author__ = "Benjamin Peterson " +__version__ = "1.10.0" + + +# Useful for very coarse version differentiation. +PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 +PY34 = sys.version_info[0:2] >= (3, 4) + +if PY3: + string_types = str, + integer_types = int, + class_types = type, + text_type = str + binary_type = bytes + + MAXSIZE = sys.maxsize +else: + string_types = basestring, + integer_types = (int, long) + class_types = (type, types.ClassType) + text_type = unicode + binary_type = str + + if sys.platform.startswith("java"): + # Jython always uses 32 bits. + MAXSIZE = int((1 << 31) - 1) + else: + # It's possible to have sizeof(long) != sizeof(Py_ssize_t). + class X(object): + + def __len__(self): + return 1 << 31 + try: + len(X()) + except OverflowError: + # 32-bit + MAXSIZE = int((1 << 31) - 1) + else: + # 64-bit + MAXSIZE = int((1 << 63) - 1) + del X + + +def _add_doc(func, doc): + """Add documentation to a function.""" + func.__doc__ = doc + + +def _import_module(name): + """Import module, returning the module after the last dot.""" + __import__(name) + return sys.modules[name] + + +class _LazyDescr(object): + + def __init__(self, name): + self.name = name + + def __get__(self, obj, tp): + result = self._resolve() + setattr(obj, self.name, result) # Invokes __set__. + try: + # This is a bit ugly, but it avoids running this again by + # removing this descriptor. + delattr(obj.__class__, self.name) + except AttributeError: + pass + return result + + +class MovedModule(_LazyDescr): + + def __init__(self, name, old, new=None): + super(MovedModule, self).__init__(name) + if PY3: + if new is None: + new = name + self.mod = new + else: + self.mod = old + + def _resolve(self): + return _import_module(self.mod) + + def __getattr__(self, attr): + _module = self._resolve() + value = getattr(_module, attr) + setattr(self, attr, value) + return value + + +class _LazyModule(types.ModuleType): + + def __init__(self, name): + super(_LazyModule, self).__init__(name) + self.__doc__ = self.__class__.__doc__ + + def __dir__(self): + attrs = ["__doc__", "__name__"] + attrs += [attr.name for attr in self._moved_attributes] + return attrs + + # Subclasses should override this + _moved_attributes = [] + + +class MovedAttribute(_LazyDescr): + + def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): + super(MovedAttribute, self).__init__(name) + if PY3: + if new_mod is None: + new_mod = name + self.mod = new_mod + if new_attr is None: + if old_attr is None: + new_attr = name + else: + new_attr = old_attr + self.attr = new_attr + else: + self.mod = old_mod + if old_attr is None: + old_attr = name + self.attr = old_attr + + def _resolve(self): + module = _import_module(self.mod) + return getattr(module, self.attr) + + +class _SixMetaPathImporter(object): + + """ + A meta path importer to import six.moves and its submodules. + + This class implements a PEP302 finder and loader. It should be compatible + with Python 2.5 and all existing versions of Python3 + """ + + def __init__(self, six_module_name): + self.name = six_module_name + self.known_modules = {} + + def _add_module(self, mod, *fullnames): + for fullname in fullnames: + self.known_modules[self.name + "." + fullname] = mod + + def _get_module(self, fullname): + return self.known_modules[self.name + "." + fullname] + + def find_module(self, fullname, path=None): + if fullname in self.known_modules: + return self + return None + + def __get_module(self, fullname): + try: + return self.known_modules[fullname] + except KeyError: + raise ImportError("This loader does not know module " + fullname) + + def load_module(self, fullname): + try: + # in case of a reload + return sys.modules[fullname] + except KeyError: + pass + mod = self.__get_module(fullname) + if isinstance(mod, MovedModule): + mod = mod._resolve() + else: + mod.__loader__ = self + sys.modules[fullname] = mod + return mod + + def is_package(self, fullname): + """ + Return true, if the named module is a package. + + We need this method to get correct spec objects with + Python 3.4 (see PEP451) + """ + return hasattr(self.__get_module(fullname), "__path__") + + def get_code(self, fullname): + """Return None + + Required, if is_package is implemented""" + self.__get_module(fullname) # eventually raises ImportError + return None + get_source = get_code # same as get_code + +_importer = _SixMetaPathImporter(__name__) + + +class _MovedItems(_LazyModule): + + """Lazy loading of moved objects""" + __path__ = [] # mark as package + + +_moved_attributes = [ + MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), + MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), + MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"), + MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), + MovedAttribute("intern", "__builtin__", "sys"), + MovedAttribute("map", "itertools", "builtins", "imap", "map"), + MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), + MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), + MovedAttribute("getstatusoutput", "commands", "subprocess"), + MovedAttribute("getoutput", "commands", "subprocess"), + MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), + MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), + MovedAttribute("reduce", "__builtin__", "functools"), + MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), + MovedAttribute("StringIO", "StringIO", "io"), + MovedAttribute("UserDict", "UserDict", "collections"), + MovedAttribute("UserList", "UserList", "collections"), + MovedAttribute("UserString", "UserString", "collections"), + MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), + MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), + MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), + MovedModule("builtins", "__builtin__"), + MovedModule("configparser", "ConfigParser"), + MovedModule("copyreg", "copy_reg"), + MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), + MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"), + MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), + MovedModule("http_cookies", "Cookie", "http.cookies"), + MovedModule("html_entities", "htmlentitydefs", "html.entities"), + MovedModule("html_parser", "HTMLParser", "html.parser"), + MovedModule("http_client", "httplib", "http.client"), + MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), + MovedModule("email_mime_image", "email.MIMEImage", "email.mime.image"), + MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), + MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"), + MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), + MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), + MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), + MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), + MovedModule("cPickle", "cPickle", "pickle"), + MovedModule("queue", "Queue"), + MovedModule("reprlib", "repr"), + MovedModule("socketserver", "SocketServer"), + MovedModule("_thread", "thread", "_thread"), + MovedModule("tkinter", "Tkinter"), + MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), + MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), + MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), + MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), + MovedModule("tkinter_tix", "Tix", "tkinter.tix"), + MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"), + MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), + MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), + MovedModule("tkinter_colorchooser", "tkColorChooser", + "tkinter.colorchooser"), + MovedModule("tkinter_commondialog", "tkCommonDialog", + "tkinter.commondialog"), + MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), + MovedModule("tkinter_font", "tkFont", "tkinter.font"), + MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), + MovedModule("tkinter_tksimpledialog", "tkSimpleDialog", + "tkinter.simpledialog"), + MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"), + MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"), + MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), + MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), + MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), + MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), +] +# Add windows specific modules. +if sys.platform == "win32": + _moved_attributes += [ + MovedModule("winreg", "_winreg"), + ] + +for attr in _moved_attributes: + setattr(_MovedItems, attr.name, attr) + if isinstance(attr, MovedModule): + _importer._add_module(attr, "moves." + attr.name) +del attr + +_MovedItems._moved_attributes = _moved_attributes + +moves = _MovedItems(__name__ + ".moves") +_importer._add_module(moves, "moves") + + +class Module_six_moves_urllib_parse(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_parse""" + + +_urllib_parse_moved_attributes = [ + MovedAttribute("ParseResult", "urlparse", "urllib.parse"), + MovedAttribute("SplitResult", "urlparse", "urllib.parse"), + MovedAttribute("parse_qs", "urlparse", "urllib.parse"), + MovedAttribute("parse_qsl", "urlparse", "urllib.parse"), + MovedAttribute("urldefrag", "urlparse", "urllib.parse"), + MovedAttribute("urljoin", "urlparse", "urllib.parse"), + MovedAttribute("urlparse", "urlparse", "urllib.parse"), + MovedAttribute("urlsplit", "urlparse", "urllib.parse"), + MovedAttribute("urlunparse", "urlparse", "urllib.parse"), + MovedAttribute("urlunsplit", "urlparse", "urllib.parse"), + MovedAttribute("quote", "urllib", "urllib.parse"), + MovedAttribute("quote_plus", "urllib", "urllib.parse"), + MovedAttribute("unquote", "urllib", "urllib.parse"), + MovedAttribute("unquote_plus", "urllib", "urllib.parse"), + MovedAttribute("unquote_to_bytes", "urllib", "urllib.parse", "unquote", "unquote_to_bytes"), + MovedAttribute("urlencode", "urllib", "urllib.parse"), + MovedAttribute("splitquery", "urllib", "urllib.parse"), + MovedAttribute("splittag", "urllib", "urllib.parse"), + MovedAttribute("splituser", "urllib", "urllib.parse"), + MovedAttribute("splitvalue", "urllib", "urllib.parse"), + MovedAttribute("uses_fragment", "urlparse", "urllib.parse"), + MovedAttribute("uses_netloc", "urlparse", "urllib.parse"), + MovedAttribute("uses_params", "urlparse", "urllib.parse"), + MovedAttribute("uses_query", "urlparse", "urllib.parse"), + MovedAttribute("uses_relative", "urlparse", "urllib.parse"), +] +for attr in _urllib_parse_moved_attributes: + setattr(Module_six_moves_urllib_parse, attr.name, attr) +del attr + +Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes + +_importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"), + "moves.urllib_parse", "moves.urllib.parse") + + +class Module_six_moves_urllib_error(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_error""" + + +_urllib_error_moved_attributes = [ + MovedAttribute("URLError", "urllib2", "urllib.error"), + MovedAttribute("HTTPError", "urllib2", "urllib.error"), + MovedAttribute("ContentTooShortError", "urllib", "urllib.error"), +] +for attr in _urllib_error_moved_attributes: + setattr(Module_six_moves_urllib_error, attr.name, attr) +del attr + +Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes + +_importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"), + "moves.urllib_error", "moves.urllib.error") + + +class Module_six_moves_urllib_request(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_request""" + + +_urllib_request_moved_attributes = [ + MovedAttribute("urlopen", "urllib2", "urllib.request"), + MovedAttribute("install_opener", "urllib2", "urllib.request"), + MovedAttribute("build_opener", "urllib2", "urllib.request"), + MovedAttribute("pathname2url", "urllib", "urllib.request"), + MovedAttribute("url2pathname", "urllib", "urllib.request"), + MovedAttribute("getproxies", "urllib", "urllib.request"), + MovedAttribute("Request", "urllib2", "urllib.request"), + MovedAttribute("OpenerDirector", "urllib2", "urllib.request"), + MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"), + MovedAttribute("ProxyHandler", "urllib2", "urllib.request"), + MovedAttribute("BaseHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"), + MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"), + MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"), + MovedAttribute("FileHandler", "urllib2", "urllib.request"), + MovedAttribute("FTPHandler", "urllib2", "urllib.request"), + MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"), + MovedAttribute("UnknownHandler", "urllib2", "urllib.request"), + MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), + MovedAttribute("urlretrieve", "urllib", "urllib.request"), + MovedAttribute("urlcleanup", "urllib", "urllib.request"), + MovedAttribute("URLopener", "urllib", "urllib.request"), + MovedAttribute("FancyURLopener", "urllib", "urllib.request"), + MovedAttribute("proxy_bypass", "urllib", "urllib.request"), +] +for attr in _urllib_request_moved_attributes: + setattr(Module_six_moves_urllib_request, attr.name, attr) +del attr + +Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes + +_importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"), + "moves.urllib_request", "moves.urllib.request") + + +class Module_six_moves_urllib_response(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_response""" + + +_urllib_response_moved_attributes = [ + MovedAttribute("addbase", "urllib", "urllib.response"), + MovedAttribute("addclosehook", "urllib", "urllib.response"), + MovedAttribute("addinfo", "urllib", "urllib.response"), + MovedAttribute("addinfourl", "urllib", "urllib.response"), +] +for attr in _urllib_response_moved_attributes: + setattr(Module_six_moves_urllib_response, attr.name, attr) +del attr + +Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes + +_importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"), + "moves.urllib_response", "moves.urllib.response") + + +class Module_six_moves_urllib_robotparser(_LazyModule): + + """Lazy loading of moved objects in six.moves.urllib_robotparser""" + + +_urllib_robotparser_moved_attributes = [ + MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"), +] +for attr in _urllib_robotparser_moved_attributes: + setattr(Module_six_moves_urllib_robotparser, attr.name, attr) +del attr + +Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes + +_importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"), + "moves.urllib_robotparser", "moves.urllib.robotparser") + + +class Module_six_moves_urllib(types.ModuleType): + + """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" + __path__ = [] # mark as package + parse = _importer._get_module("moves.urllib_parse") + error = _importer._get_module("moves.urllib_error") + request = _importer._get_module("moves.urllib_request") + response = _importer._get_module("moves.urllib_response") + robotparser = _importer._get_module("moves.urllib_robotparser") + + def __dir__(self): + return ['parse', 'error', 'request', 'response', 'robotparser'] + +_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"), + "moves.urllib") + + +def add_move(move): + """Add an item to six.moves.""" + setattr(_MovedItems, move.name, move) + + +def remove_move(name): + """Remove item from six.moves.""" + try: + delattr(_MovedItems, name) + except AttributeError: + try: + del moves.__dict__[name] + except KeyError: + raise AttributeError("no such move, %r" % (name,)) + + +if PY3: + _meth_func = "__func__" + _meth_self = "__self__" + + _func_closure = "__closure__" + _func_code = "__code__" + _func_defaults = "__defaults__" + _func_globals = "__globals__" +else: + _meth_func = "im_func" + _meth_self = "im_self" + + _func_closure = "func_closure" + _func_code = "func_code" + _func_defaults = "func_defaults" + _func_globals = "func_globals" + + +try: + advance_iterator = next +except NameError: + def advance_iterator(it): + return it.next() +next = advance_iterator + + +try: + callable = callable +except NameError: + def callable(obj): + return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) + + +if PY3: + def get_unbound_function(unbound): + return unbound + + create_bound_method = types.MethodType + + def create_unbound_method(func, cls): + return func + + Iterator = object +else: + def get_unbound_function(unbound): + return unbound.im_func + + def create_bound_method(func, obj): + return types.MethodType(func, obj, obj.__class__) + + def create_unbound_method(func, cls): + return types.MethodType(func, None, cls) + + class Iterator(object): + + def next(self): + return type(self).__next__(self) + + callable = callable +_add_doc(get_unbound_function, + """Get the function out of a possibly unbound function""") + + +get_method_function = operator.attrgetter(_meth_func) +get_method_self = operator.attrgetter(_meth_self) +get_function_closure = operator.attrgetter(_func_closure) +get_function_code = operator.attrgetter(_func_code) +get_function_defaults = operator.attrgetter(_func_defaults) +get_function_globals = operator.attrgetter(_func_globals) + + +if PY3: + def iterkeys(d, **kw): + return iter(d.keys(**kw)) + + def itervalues(d, **kw): + return iter(d.values(**kw)) + + def iteritems(d, **kw): + return iter(d.items(**kw)) + + def iterlists(d, **kw): + return iter(d.lists(**kw)) + + viewkeys = operator.methodcaller("keys") + + viewvalues = operator.methodcaller("values") + + viewitems = operator.methodcaller("items") +else: + def iterkeys(d, **kw): + return d.iterkeys(**kw) + + def itervalues(d, **kw): + return d.itervalues(**kw) + + def iteritems(d, **kw): + return d.iteritems(**kw) + + def iterlists(d, **kw): + return d.iterlists(**kw) + + viewkeys = operator.methodcaller("viewkeys") + + viewvalues = operator.methodcaller("viewvalues") + + viewitems = operator.methodcaller("viewitems") + +_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") +_add_doc(itervalues, "Return an iterator over the values of a dictionary.") +_add_doc(iteritems, + "Return an iterator over the (key, value) pairs of a dictionary.") +_add_doc(iterlists, + "Return an iterator over the (key, [values]) pairs of a dictionary.") + + +if PY3: + def b(s): + return s.encode("latin-1") + + def u(s): + return s + unichr = chr + import struct + int2byte = struct.Struct(">B").pack + del struct + byte2int = operator.itemgetter(0) + indexbytes = operator.getitem + iterbytes = iter + import io + StringIO = io.StringIO + BytesIO = io.BytesIO + _assertCountEqual = "assertCountEqual" + if sys.version_info[1] <= 1: + _assertRaisesRegex = "assertRaisesRegexp" + _assertRegex = "assertRegexpMatches" + else: + _assertRaisesRegex = "assertRaisesRegex" + _assertRegex = "assertRegex" +else: + def b(s): + return s + # Workaround for standalone backslash + + def u(s): + return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") + unichr = unichr + int2byte = chr + + def byte2int(bs): + return ord(bs[0]) + + def indexbytes(buf, i): + return ord(buf[i]) + iterbytes = functools.partial(itertools.imap, ord) + import StringIO + StringIO = BytesIO = StringIO.StringIO + _assertCountEqual = "assertItemsEqual" + _assertRaisesRegex = "assertRaisesRegexp" + _assertRegex = "assertRegexpMatches" +_add_doc(b, """Byte literal""") +_add_doc(u, """Text literal""") + + +def assertCountEqual(self, *args, **kwargs): + return getattr(self, _assertCountEqual)(*args, **kwargs) + + +def assertRaisesRegex(self, *args, **kwargs): + return getattr(self, _assertRaisesRegex)(*args, **kwargs) + + +def assertRegex(self, *args, **kwargs): + return getattr(self, _assertRegex)(*args, **kwargs) + + +if PY3: + exec_ = getattr(moves.builtins, "exec") + + def reraise(tp, value, tb=None): + try: + if value is None: + value = tp() + if value.__traceback__ is not tb: + raise value.with_traceback(tb) + raise value + finally: + value = None + tb = None + +else: + def exec_(_code_, _globs_=None, _locs_=None): + """Execute code in a namespace.""" + if _globs_ is None: + frame = sys._getframe(1) + _globs_ = frame.f_globals + if _locs_ is None: + _locs_ = frame.f_locals + del frame + elif _locs_ is None: + _locs_ = _globs_ + exec("""exec _code_ in _globs_, _locs_""") + + exec_("""def reraise(tp, value, tb=None): + try: + raise tp, value, tb + finally: + tb = None +""") + + +if sys.version_info[:2] == (3, 2): + exec_("""def raise_from(value, from_value): + try: + if from_value is None: + raise value + raise value from from_value + finally: + value = None +""") +elif sys.version_info[:2] > (3, 2): + exec_("""def raise_from(value, from_value): + try: + raise value from from_value + finally: + value = None +""") +else: + def raise_from(value, from_value): + raise value + + +print_ = getattr(moves.builtins, "print", None) +if print_ is None: + def print_(*args, **kwargs): + """The new-style print function for Python 2.4 and 2.5.""" + fp = kwargs.pop("file", sys.stdout) + if fp is None: + return + + def write(data): + if not isinstance(data, basestring): + data = str(data) + # If the file has an encoding, encode unicode with it. + if (isinstance(fp, file) and + isinstance(data, unicode) and + fp.encoding is not None): + errors = getattr(fp, "errors", None) + if errors is None: + errors = "strict" + data = data.encode(fp.encoding, errors) + fp.write(data) + want_unicode = False + sep = kwargs.pop("sep", None) + if sep is not None: + if isinstance(sep, unicode): + want_unicode = True + elif not isinstance(sep, str): + raise TypeError("sep must be None or a string") + end = kwargs.pop("end", None) + if end is not None: + if isinstance(end, unicode): + want_unicode = True + elif not isinstance(end, str): + raise TypeError("end must be None or a string") + if kwargs: + raise TypeError("invalid keyword arguments to print()") + if not want_unicode: + for arg in args: + if isinstance(arg, unicode): + want_unicode = True + break + if want_unicode: + newline = unicode("\n") + space = unicode(" ") + else: + newline = "\n" + space = " " + if sep is None: + sep = space + if end is None: + end = newline + for i, arg in enumerate(args): + if i: + write(sep) + write(arg) + write(end) +if sys.version_info[:2] < (3, 3): + _print = print_ + + def print_(*args, **kwargs): + fp = kwargs.get("file", sys.stdout) + flush = kwargs.pop("flush", False) + _print(*args, **kwargs) + if flush and fp is not None: + fp.flush() + +_add_doc(reraise, """Reraise an exception.""") + +if sys.version_info[0:2] < (3, 4): + def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, + updated=functools.WRAPPER_UPDATES): + def wrapper(f): + f = functools.wraps(wrapped, assigned, updated)(f) + f.__wrapped__ = wrapped + return f + return wrapper +else: + wraps = functools.wraps + + +def with_metaclass(meta, *bases): + """Create a base class with a metaclass.""" + # This requires a bit of explanation: the basic idea is to make a dummy + # metaclass for one level of class instantiation that replaces itself with + # the actual metaclass. + class metaclass(meta): + + def __new__(cls, name, this_bases, d): + return meta(name, bases, d) + return type.__new__(metaclass, 'temporary_class', (), {}) + + +def add_metaclass(metaclass): + """Class decorator for creating a class with a metaclass.""" + def wrapper(cls): + orig_vars = cls.__dict__.copy() + slots = orig_vars.get('__slots__') + if slots is not None: + if isinstance(slots, str): + slots = [slots] + for slots_var in slots: + orig_vars.pop(slots_var) + orig_vars.pop('__dict__', None) + orig_vars.pop('__weakref__', None) + return metaclass(cls.__name__, cls.__bases__, orig_vars) + return wrapper + + +def python_2_unicode_compatible(klass): + """ + A decorator that defines __unicode__ and __str__ methods under Python 2. + Under Python 3 it does nothing. + + To support Python 2 and 3 with a single code base, define a __str__ method + returning text and apply this decorator to the class. + """ + if PY2: + if '__str__' not in klass.__dict__: + raise ValueError("@python_2_unicode_compatible cannot be applied " + "to %s because it doesn't define __str__()." % + klass.__name__) + klass.__unicode__ = klass.__str__ + klass.__str__ = lambda self: self.__unicode__().encode('utf-8') + return klass + + +# Complete the moves implementation. +# This code is at the end of this module to speed up module loading. +# Turn this module into a package. +__path__ = [] # required for PEP 302 and PEP 451 +__package__ = __name__ # see PEP 366 @ReservedAssignment +if globals().get("__spec__") is not None: + __spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable +# Remove other six meta path importers, since they cause problems. This can +# happen if six is removed from sys.modules and then reloaded. (Setuptools does +# this for some reason.) +if sys.meta_path: + for i, importer in enumerate(sys.meta_path): + # Here's some real nastiness: Another "instance" of the six module might + # be floating around. Therefore, we can't use isinstance() to check for + # the six meta path importer, since the other six instance will have + # inserted an importer with different class. + if (type(importer).__name__ == "_SixMetaPathImporter" and + importer.name == __name__): + del sys.meta_path[i] + break + del i, importer +# Finally, add the importer to the meta path import hook. +sys.meta_path.append(_importer) diff --git a/lib/spack/external/yaml/README b/lib/spack/external/yaml/README index c1edf13870a..d186328eeb6 100644 --- a/lib/spack/external/yaml/README +++ b/lib/spack/external/yaml/README @@ -28,7 +28,7 @@ Post your questions and opinions to the YAML-Core mailing list: 'http://lists.sourceforge.net/lists/listinfo/yaml-core'. Submit bug reports and feature requests to the PyYAML bug tracker: -'http://pyyaml.org/newticket?component=pyyaml'. +'https://bitbucket.org/xi/pyyaml/issues/new'. PyYAML is written by Kirill Simonov . It is released under the MIT license. See the file LICENSE for more details. diff --git a/lib/spack/external/yaml/__init__.py b/lib/spack/external/yaml/lib/yaml/__init__.py similarity index 99% rename from lib/spack/external/yaml/__init__.py rename to lib/spack/external/yaml/lib/yaml/__init__.py index f977f46ba76..87c15d38aad 100644 --- a/lib/spack/external/yaml/__init__.py +++ b/lib/spack/external/yaml/lib/yaml/__init__.py @@ -8,7 +8,7 @@ from loader import * from dumper import * -__version__ = '3.10' +__version__ = '3.12' try: from cyaml import * diff --git a/lib/spack/external/yaml/composer.py b/lib/spack/external/yaml/lib/yaml/composer.py similarity index 100% rename from lib/spack/external/yaml/composer.py rename to lib/spack/external/yaml/lib/yaml/composer.py diff --git a/lib/spack/external/yaml/constructor.py b/lib/spack/external/yaml/lib/yaml/constructor.py similarity index 99% rename from lib/spack/external/yaml/constructor.py rename to lib/spack/external/yaml/lib/yaml/constructor.py index 8c0ec181b22..635faac3e6f 100644 --- a/lib/spack/external/yaml/constructor.py +++ b/lib/spack/external/yaml/lib/yaml/constructor.py @@ -131,9 +131,6 @@ def construct_mapping(self, node, deep=False): raise ConstructorError("while constructing a mapping", node.start_mark, "found unacceptable key (%s)" % exc, key_node.start_mark) value = self.construct_object(value_node, deep=deep) - if key in mapping: - raise ConstructorError("while constructing a mapping", node.start_mark, - "found already in-use key (%s)" % key, key_node.start_mark) mapping[key] = value return mapping diff --git a/lib/spack/external/yaml/lib/yaml/cyaml.py b/lib/spack/external/yaml/lib/yaml/cyaml.py new file mode 100644 index 00000000000..68dcd751928 --- /dev/null +++ b/lib/spack/external/yaml/lib/yaml/cyaml.py @@ -0,0 +1,85 @@ + +__all__ = ['CBaseLoader', 'CSafeLoader', 'CLoader', + 'CBaseDumper', 'CSafeDumper', 'CDumper'] + +from _yaml import CParser, CEmitter + +from constructor import * + +from serializer import * +from representer import * + +from resolver import * + +class CBaseLoader(CParser, BaseConstructor, BaseResolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + BaseConstructor.__init__(self) + BaseResolver.__init__(self) + +class CSafeLoader(CParser, SafeConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + SafeConstructor.__init__(self) + Resolver.__init__(self) + +class CLoader(CParser, Constructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + Constructor.__init__(self) + Resolver.__init__(self) + +class CBaseDumper(CEmitter, BaseRepresenter, BaseResolver): + + def __init__(self, stream, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + Resolver.__init__(self) + +class CSafeDumper(CEmitter, SafeRepresenter, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + SafeRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + Resolver.__init__(self) + +class CDumper(CEmitter, Serializer, Representer, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + Resolver.__init__(self) + diff --git a/lib/spack/external/yaml/dumper.py b/lib/spack/external/yaml/lib/yaml/dumper.py similarity index 100% rename from lib/spack/external/yaml/dumper.py rename to lib/spack/external/yaml/lib/yaml/dumper.py diff --git a/lib/spack/external/yaml/emitter.py b/lib/spack/external/yaml/lib/yaml/emitter.py similarity index 100% rename from lib/spack/external/yaml/emitter.py rename to lib/spack/external/yaml/lib/yaml/emitter.py diff --git a/lib/spack/external/yaml/error.py b/lib/spack/external/yaml/lib/yaml/error.py similarity index 100% rename from lib/spack/external/yaml/error.py rename to lib/spack/external/yaml/lib/yaml/error.py diff --git a/lib/spack/external/yaml/events.py b/lib/spack/external/yaml/lib/yaml/events.py similarity index 100% rename from lib/spack/external/yaml/events.py rename to lib/spack/external/yaml/lib/yaml/events.py diff --git a/lib/spack/external/yaml/loader.py b/lib/spack/external/yaml/lib/yaml/loader.py similarity index 100% rename from lib/spack/external/yaml/loader.py rename to lib/spack/external/yaml/lib/yaml/loader.py diff --git a/lib/spack/external/yaml/nodes.py b/lib/spack/external/yaml/lib/yaml/nodes.py similarity index 100% rename from lib/spack/external/yaml/nodes.py rename to lib/spack/external/yaml/lib/yaml/nodes.py diff --git a/lib/spack/external/yaml/parser.py b/lib/spack/external/yaml/lib/yaml/parser.py similarity index 100% rename from lib/spack/external/yaml/parser.py rename to lib/spack/external/yaml/lib/yaml/parser.py diff --git a/lib/spack/external/yaml/reader.py b/lib/spack/external/yaml/lib/yaml/reader.py similarity index 96% rename from lib/spack/external/yaml/reader.py rename to lib/spack/external/yaml/lib/yaml/reader.py index a67af7c5da9..3249e6b9f51 100644 --- a/lib/spack/external/yaml/reader.py +++ b/lib/spack/external/yaml/lib/yaml/reader.py @@ -56,7 +56,8 @@ class Reader(object): # Yeah, it's ugly and slow. - def __init__(self, stream, name=None): + def __init__(self, stream): + self.name = None self.stream = None self.stream_pointer = 0 self.eof = True @@ -69,16 +70,16 @@ def __init__(self, stream, name=None): self.line = 0 self.column = 0 if isinstance(stream, unicode): - self.name = "" if name is None else name + self.name = "" self.check_printable(stream) self.buffer = stream+u'\0' elif isinstance(stream, str): - self.name = "" if name is None else name + self.name = "" self.raw_buffer = stream self.determine_encoding() else: self.stream = stream - self.name = getattr(stream, 'name', "") if name is None else name + self.name = getattr(stream, 'name', "") self.eof = False self.raw_buffer = '' self.determine_encoding() diff --git a/lib/spack/external/yaml/representer.py b/lib/spack/external/yaml/lib/yaml/representer.py similarity index 99% rename from lib/spack/external/yaml/representer.py rename to lib/spack/external/yaml/lib/yaml/representer.py index 5f4fc70dbc0..4ea8cb1fe17 100644 --- a/lib/spack/external/yaml/representer.py +++ b/lib/spack/external/yaml/lib/yaml/representer.py @@ -139,7 +139,9 @@ def ignore_aliases(self, data): class SafeRepresenter(BaseRepresenter): def ignore_aliases(self, data): - if data in [None, ()]: + if data is None: + return True + if isinstance(data, tuple) and data == (): return True if isinstance(data, (str, unicode, bool, int, float)): return True diff --git a/lib/spack/external/yaml/resolver.py b/lib/spack/external/yaml/lib/yaml/resolver.py similarity index 97% rename from lib/spack/external/yaml/resolver.py rename to lib/spack/external/yaml/lib/yaml/resolver.py index 6b5ab87596e..528fbc0ead6 100644 --- a/lib/spack/external/yaml/resolver.py +++ b/lib/spack/external/yaml/lib/yaml/resolver.py @@ -24,7 +24,10 @@ def __init__(self): def add_implicit_resolver(cls, tag, regexp, first): if not 'yaml_implicit_resolvers' in cls.__dict__: - cls.yaml_implicit_resolvers = cls.yaml_implicit_resolvers.copy() + implicit_resolvers = {} + for key in cls.yaml_implicit_resolvers: + implicit_resolvers[key] = cls.yaml_implicit_resolvers[key][:] + cls.yaml_implicit_resolvers = implicit_resolvers if first is None: first = [None] for ch in first: diff --git a/lib/spack/external/yaml/scanner.py b/lib/spack/external/yaml/lib/yaml/scanner.py similarity index 99% rename from lib/spack/external/yaml/scanner.py rename to lib/spack/external/yaml/lib/yaml/scanner.py index 5228fad65ce..834f662a4c7 100644 --- a/lib/spack/external/yaml/scanner.py +++ b/lib/spack/external/yaml/lib/yaml/scanner.py @@ -286,7 +286,7 @@ def stale_possible_simple_keys(self): or self.index-key.index > 1024: if key.required: raise ScannerError("while scanning a simple key", key.mark, - "could not found expected ':'", self.get_mark()) + "could not find expected ':'", self.get_mark()) del self.possible_simple_keys[level] def save_possible_simple_key(self): @@ -297,10 +297,6 @@ def save_possible_simple_key(self): # Check if a simple key is required at the current position. required = not self.flow_level and self.indent == self.column - # A simple key is required only if it is the first token in the current - # line. Therefore it is always allowed. - assert self.allow_simple_key or not required - # The next token might be a simple key. Let's save it's number and # position. if self.allow_simple_key: @@ -317,7 +313,7 @@ def remove_possible_simple_key(self): if key.required: raise ScannerError("while scanning a simple key", key.mark, - "could not found expected ':'", self.get_mark()) + "could not find expected ':'", self.get_mark()) del self.possible_simple_keys[self.flow_level] diff --git a/lib/spack/external/yaml/serializer.py b/lib/spack/external/yaml/lib/yaml/serializer.py similarity index 100% rename from lib/spack/external/yaml/serializer.py rename to lib/spack/external/yaml/lib/yaml/serializer.py diff --git a/lib/spack/external/yaml/tokens.py b/lib/spack/external/yaml/lib/yaml/tokens.py similarity index 100% rename from lib/spack/external/yaml/tokens.py rename to lib/spack/external/yaml/lib/yaml/tokens.py diff --git a/lib/spack/external/yaml/lib3/yaml/__init__.py b/lib/spack/external/yaml/lib3/yaml/__init__.py new file mode 100644 index 00000000000..d7d27fe63b9 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/__init__.py @@ -0,0 +1,312 @@ + +from .error import * + +from .tokens import * +from .events import * +from .nodes import * + +from .loader import * +from .dumper import * + +__version__ = '3.12' +try: + from .cyaml import * + __with_libyaml__ = True +except ImportError: + __with_libyaml__ = False + +import io + +def scan(stream, Loader=Loader): + """ + Scan a YAML stream and produce scanning tokens. + """ + loader = Loader(stream) + try: + while loader.check_token(): + yield loader.get_token() + finally: + loader.dispose() + +def parse(stream, Loader=Loader): + """ + Parse a YAML stream and produce parsing events. + """ + loader = Loader(stream) + try: + while loader.check_event(): + yield loader.get_event() + finally: + loader.dispose() + +def compose(stream, Loader=Loader): + """ + Parse the first YAML document in a stream + and produce the corresponding representation tree. + """ + loader = Loader(stream) + try: + return loader.get_single_node() + finally: + loader.dispose() + +def compose_all(stream, Loader=Loader): + """ + Parse all YAML documents in a stream + and produce corresponding representation trees. + """ + loader = Loader(stream) + try: + while loader.check_node(): + yield loader.get_node() + finally: + loader.dispose() + +def load(stream, Loader=Loader): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + """ + loader = Loader(stream) + try: + return loader.get_single_data() + finally: + loader.dispose() + +def load_all(stream, Loader=Loader): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + """ + loader = Loader(stream) + try: + while loader.check_data(): + yield loader.get_data() + finally: + loader.dispose() + +def safe_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + Resolve only basic YAML tags. + """ + return load(stream, SafeLoader) + +def safe_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + Resolve only basic YAML tags. + """ + return load_all(stream, SafeLoader) + +def emit(events, stream=None, Dumper=Dumper, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None): + """ + Emit YAML parsing events into a stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + stream = io.StringIO() + getvalue = stream.getvalue + dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + try: + for event in events: + dumper.emit(event) + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def serialize_all(nodes, stream=None, Dumper=Dumper, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + """ + Serialize a sequence of representation trees into a YAML stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + if encoding is None: + stream = io.StringIO() + else: + stream = io.BytesIO() + getvalue = stream.getvalue + dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break, + encoding=encoding, version=version, tags=tags, + explicit_start=explicit_start, explicit_end=explicit_end) + try: + dumper.open() + for node in nodes: + dumper.serialize(node) + dumper.close() + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def serialize(node, stream=None, Dumper=Dumper, **kwds): + """ + Serialize a representation tree into a YAML stream. + If stream is None, return the produced string instead. + """ + return serialize_all([node], stream, Dumper=Dumper, **kwds) + +def dump_all(documents, stream=None, Dumper=Dumper, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + """ + Serialize a sequence of Python objects into a YAML stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + if encoding is None: + stream = io.StringIO() + else: + stream = io.BytesIO() + getvalue = stream.getvalue + dumper = Dumper(stream, default_style=default_style, + default_flow_style=default_flow_style, + canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break, + encoding=encoding, version=version, tags=tags, + explicit_start=explicit_start, explicit_end=explicit_end) + try: + dumper.open() + for data in documents: + dumper.represent(data) + dumper.close() + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def dump(data, stream=None, Dumper=Dumper, **kwds): + """ + Serialize a Python object into a YAML stream. + If stream is None, return the produced string instead. + """ + return dump_all([data], stream, Dumper=Dumper, **kwds) + +def safe_dump_all(documents, stream=None, **kwds): + """ + Serialize a sequence of Python objects into a YAML stream. + Produce only basic YAML tags. + If stream is None, return the produced string instead. + """ + return dump_all(documents, stream, Dumper=SafeDumper, **kwds) + +def safe_dump(data, stream=None, **kwds): + """ + Serialize a Python object into a YAML stream. + Produce only basic YAML tags. + If stream is None, return the produced string instead. + """ + return dump_all([data], stream, Dumper=SafeDumper, **kwds) + +def add_implicit_resolver(tag, regexp, first=None, + Loader=Loader, Dumper=Dumper): + """ + Add an implicit scalar detector. + If an implicit scalar value matches the given regexp, + the corresponding tag is assigned to the scalar. + first is a sequence of possible initial characters or None. + """ + Loader.add_implicit_resolver(tag, regexp, first) + Dumper.add_implicit_resolver(tag, regexp, first) + +def add_path_resolver(tag, path, kind=None, Loader=Loader, Dumper=Dumper): + """ + Add a path based resolver for the given tag. + A path is a list of keys that forms a path + to a node in the representation tree. + Keys can be string values, integers, or None. + """ + Loader.add_path_resolver(tag, path, kind) + Dumper.add_path_resolver(tag, path, kind) + +def add_constructor(tag, constructor, Loader=Loader): + """ + Add a constructor for the given tag. + Constructor is a function that accepts a Loader instance + and a node object and produces the corresponding Python object. + """ + Loader.add_constructor(tag, constructor) + +def add_multi_constructor(tag_prefix, multi_constructor, Loader=Loader): + """ + Add a multi-constructor for the given tag prefix. + Multi-constructor is called for a node if its tag starts with tag_prefix. + Multi-constructor accepts a Loader instance, a tag suffix, + and a node object and produces the corresponding Python object. + """ + Loader.add_multi_constructor(tag_prefix, multi_constructor) + +def add_representer(data_type, representer, Dumper=Dumper): + """ + Add a representer for the given type. + Representer is a function accepting a Dumper instance + and an instance of the given data type + and producing the corresponding representation node. + """ + Dumper.add_representer(data_type, representer) + +def add_multi_representer(data_type, multi_representer, Dumper=Dumper): + """ + Add a representer for the given type. + Multi-representer is a function accepting a Dumper instance + and an instance of the given data type or subtype + and producing the corresponding representation node. + """ + Dumper.add_multi_representer(data_type, multi_representer) + +class YAMLObjectMetaclass(type): + """ + The metaclass for YAMLObject. + """ + def __init__(cls, name, bases, kwds): + super(YAMLObjectMetaclass, cls).__init__(name, bases, kwds) + if 'yaml_tag' in kwds and kwds['yaml_tag'] is not None: + cls.yaml_loader.add_constructor(cls.yaml_tag, cls.from_yaml) + cls.yaml_dumper.add_representer(cls, cls.to_yaml) + +class YAMLObject(metaclass=YAMLObjectMetaclass): + """ + An object that can dump itself to a YAML stream + and load itself from a YAML stream. + """ + + __slots__ = () # no direct instantiation, so allow immutable subclasses + + yaml_loader = Loader + yaml_dumper = Dumper + + yaml_tag = None + yaml_flow_style = None + + @classmethod + def from_yaml(cls, loader, node): + """ + Convert a representation node to a Python object. + """ + return loader.construct_yaml_object(node, cls) + + @classmethod + def to_yaml(cls, dumper, data): + """ + Convert a Python object to a representation node. + """ + return dumper.represent_yaml_object(cls.yaml_tag, data, cls, + flow_style=cls.yaml_flow_style) + diff --git a/lib/spack/external/yaml/lib3/yaml/composer.py b/lib/spack/external/yaml/lib3/yaml/composer.py new file mode 100644 index 00000000000..d5c6a7acd92 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/composer.py @@ -0,0 +1,139 @@ + +__all__ = ['Composer', 'ComposerError'] + +from .error import MarkedYAMLError +from .events import * +from .nodes import * + +class ComposerError(MarkedYAMLError): + pass + +class Composer: + + def __init__(self): + self.anchors = {} + + def check_node(self): + # Drop the STREAM-START event. + if self.check_event(StreamStartEvent): + self.get_event() + + # If there are more documents available? + return not self.check_event(StreamEndEvent) + + def get_node(self): + # Get the root node of the next document. + if not self.check_event(StreamEndEvent): + return self.compose_document() + + def get_single_node(self): + # Drop the STREAM-START event. + self.get_event() + + # Compose a document if the stream is not empty. + document = None + if not self.check_event(StreamEndEvent): + document = self.compose_document() + + # Ensure that the stream contains no more documents. + if not self.check_event(StreamEndEvent): + event = self.get_event() + raise ComposerError("expected a single document in the stream", + document.start_mark, "but found another document", + event.start_mark) + + # Drop the STREAM-END event. + self.get_event() + + return document + + def compose_document(self): + # Drop the DOCUMENT-START event. + self.get_event() + + # Compose the root node. + node = self.compose_node(None, None) + + # Drop the DOCUMENT-END event. + self.get_event() + + self.anchors = {} + return node + + def compose_node(self, parent, index): + if self.check_event(AliasEvent): + event = self.get_event() + anchor = event.anchor + if anchor not in self.anchors: + raise ComposerError(None, None, "found undefined alias %r" + % anchor, event.start_mark) + return self.anchors[anchor] + event = self.peek_event() + anchor = event.anchor + if anchor is not None: + if anchor in self.anchors: + raise ComposerError("found duplicate anchor %r; first occurence" + % anchor, self.anchors[anchor].start_mark, + "second occurence", event.start_mark) + self.descend_resolver(parent, index) + if self.check_event(ScalarEvent): + node = self.compose_scalar_node(anchor) + elif self.check_event(SequenceStartEvent): + node = self.compose_sequence_node(anchor) + elif self.check_event(MappingStartEvent): + node = self.compose_mapping_node(anchor) + self.ascend_resolver() + return node + + def compose_scalar_node(self, anchor): + event = self.get_event() + tag = event.tag + if tag is None or tag == '!': + tag = self.resolve(ScalarNode, event.value, event.implicit) + node = ScalarNode(tag, event.value, + event.start_mark, event.end_mark, style=event.style) + if anchor is not None: + self.anchors[anchor] = node + return node + + def compose_sequence_node(self, anchor): + start_event = self.get_event() + tag = start_event.tag + if tag is None or tag == '!': + tag = self.resolve(SequenceNode, None, start_event.implicit) + node = SequenceNode(tag, [], + start_event.start_mark, None, + flow_style=start_event.flow_style) + if anchor is not None: + self.anchors[anchor] = node + index = 0 + while not self.check_event(SequenceEndEvent): + node.value.append(self.compose_node(node, index)) + index += 1 + end_event = self.get_event() + node.end_mark = end_event.end_mark + return node + + def compose_mapping_node(self, anchor): + start_event = self.get_event() + tag = start_event.tag + if tag is None or tag == '!': + tag = self.resolve(MappingNode, None, start_event.implicit) + node = MappingNode(tag, [], + start_event.start_mark, None, + flow_style=start_event.flow_style) + if anchor is not None: + self.anchors[anchor] = node + while not self.check_event(MappingEndEvent): + #key_event = self.peek_event() + item_key = self.compose_node(node, None) + #if item_key in node.value: + # raise ComposerError("while composing a mapping", start_event.start_mark, + # "found duplicate key", key_event.start_mark) + item_value = self.compose_node(node, item_key) + #node.value[item_key] = item_value + node.value.append((item_key, item_value)) + end_event = self.get_event() + node.end_mark = end_event.end_mark + return node + diff --git a/lib/spack/external/yaml/lib3/yaml/constructor.py b/lib/spack/external/yaml/lib3/yaml/constructor.py new file mode 100644 index 00000000000..981543aebb1 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/constructor.py @@ -0,0 +1,686 @@ + +__all__ = ['BaseConstructor', 'SafeConstructor', 'Constructor', + 'ConstructorError'] + +from .error import * +from .nodes import * + +import collections, datetime, base64, binascii, re, sys, types + +class ConstructorError(MarkedYAMLError): + pass + +class BaseConstructor: + + yaml_constructors = {} + yaml_multi_constructors = {} + + def __init__(self): + self.constructed_objects = {} + self.recursive_objects = {} + self.state_generators = [] + self.deep_construct = False + + def check_data(self): + # If there are more documents available? + return self.check_node() + + def get_data(self): + # Construct and return the next document. + if self.check_node(): + return self.construct_document(self.get_node()) + + def get_single_data(self): + # Ensure that the stream contains a single document and construct it. + node = self.get_single_node() + if node is not None: + return self.construct_document(node) + return None + + def construct_document(self, node): + data = self.construct_object(node) + while self.state_generators: + state_generators = self.state_generators + self.state_generators = [] + for generator in state_generators: + for dummy in generator: + pass + self.constructed_objects = {} + self.recursive_objects = {} + self.deep_construct = False + return data + + def construct_object(self, node, deep=False): + if node in self.constructed_objects: + return self.constructed_objects[node] + if deep: + old_deep = self.deep_construct + self.deep_construct = True + if node in self.recursive_objects: + raise ConstructorError(None, None, + "found unconstructable recursive node", node.start_mark) + self.recursive_objects[node] = None + constructor = None + tag_suffix = None + if node.tag in self.yaml_constructors: + constructor = self.yaml_constructors[node.tag] + else: + for tag_prefix in self.yaml_multi_constructors: + if node.tag.startswith(tag_prefix): + tag_suffix = node.tag[len(tag_prefix):] + constructor = self.yaml_multi_constructors[tag_prefix] + break + else: + if None in self.yaml_multi_constructors: + tag_suffix = node.tag + constructor = self.yaml_multi_constructors[None] + elif None in self.yaml_constructors: + constructor = self.yaml_constructors[None] + elif isinstance(node, ScalarNode): + constructor = self.__class__.construct_scalar + elif isinstance(node, SequenceNode): + constructor = self.__class__.construct_sequence + elif isinstance(node, MappingNode): + constructor = self.__class__.construct_mapping + if tag_suffix is None: + data = constructor(self, node) + else: + data = constructor(self, tag_suffix, node) + if isinstance(data, types.GeneratorType): + generator = data + data = next(generator) + if self.deep_construct: + for dummy in generator: + pass + else: + self.state_generators.append(generator) + self.constructed_objects[node] = data + del self.recursive_objects[node] + if deep: + self.deep_construct = old_deep + return data + + def construct_scalar(self, node): + if not isinstance(node, ScalarNode): + raise ConstructorError(None, None, + "expected a scalar node, but found %s" % node.id, + node.start_mark) + return node.value + + def construct_sequence(self, node, deep=False): + if not isinstance(node, SequenceNode): + raise ConstructorError(None, None, + "expected a sequence node, but found %s" % node.id, + node.start_mark) + return [self.construct_object(child, deep=deep) + for child in node.value] + + def construct_mapping(self, node, deep=False): + if not isinstance(node, MappingNode): + raise ConstructorError(None, None, + "expected a mapping node, but found %s" % node.id, + node.start_mark) + mapping = {} + for key_node, value_node in node.value: + key = self.construct_object(key_node, deep=deep) + if not isinstance(key, collections.Hashable): + raise ConstructorError("while constructing a mapping", node.start_mark, + "found unhashable key", key_node.start_mark) + value = self.construct_object(value_node, deep=deep) + mapping[key] = value + return mapping + + def construct_pairs(self, node, deep=False): + if not isinstance(node, MappingNode): + raise ConstructorError(None, None, + "expected a mapping node, but found %s" % node.id, + node.start_mark) + pairs = [] + for key_node, value_node in node.value: + key = self.construct_object(key_node, deep=deep) + value = self.construct_object(value_node, deep=deep) + pairs.append((key, value)) + return pairs + + @classmethod + def add_constructor(cls, tag, constructor): + if not 'yaml_constructors' in cls.__dict__: + cls.yaml_constructors = cls.yaml_constructors.copy() + cls.yaml_constructors[tag] = constructor + + @classmethod + def add_multi_constructor(cls, tag_prefix, multi_constructor): + if not 'yaml_multi_constructors' in cls.__dict__: + cls.yaml_multi_constructors = cls.yaml_multi_constructors.copy() + cls.yaml_multi_constructors[tag_prefix] = multi_constructor + +class SafeConstructor(BaseConstructor): + + def construct_scalar(self, node): + if isinstance(node, MappingNode): + for key_node, value_node in node.value: + if key_node.tag == 'tag:yaml.org,2002:value': + return self.construct_scalar(value_node) + return super().construct_scalar(node) + + def flatten_mapping(self, node): + merge = [] + index = 0 + while index < len(node.value): + key_node, value_node = node.value[index] + if key_node.tag == 'tag:yaml.org,2002:merge': + del node.value[index] + if isinstance(value_node, MappingNode): + self.flatten_mapping(value_node) + merge.extend(value_node.value) + elif isinstance(value_node, SequenceNode): + submerge = [] + for subnode in value_node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing a mapping", + node.start_mark, + "expected a mapping for merging, but found %s" + % subnode.id, subnode.start_mark) + self.flatten_mapping(subnode) + submerge.append(subnode.value) + submerge.reverse() + for value in submerge: + merge.extend(value) + else: + raise ConstructorError("while constructing a mapping", node.start_mark, + "expected a mapping or list of mappings for merging, but found %s" + % value_node.id, value_node.start_mark) + elif key_node.tag == 'tag:yaml.org,2002:value': + key_node.tag = 'tag:yaml.org,2002:str' + index += 1 + else: + index += 1 + if merge: + node.value = merge + node.value + + def construct_mapping(self, node, deep=False): + if isinstance(node, MappingNode): + self.flatten_mapping(node) + return super().construct_mapping(node, deep=deep) + + def construct_yaml_null(self, node): + self.construct_scalar(node) + return None + + bool_values = { + 'yes': True, + 'no': False, + 'true': True, + 'false': False, + 'on': True, + 'off': False, + } + + def construct_yaml_bool(self, node): + value = self.construct_scalar(node) + return self.bool_values[value.lower()] + + def construct_yaml_int(self, node): + value = self.construct_scalar(node) + value = value.replace('_', '') + sign = +1 + if value[0] == '-': + sign = -1 + if value[0] in '+-': + value = value[1:] + if value == '0': + return 0 + elif value.startswith('0b'): + return sign*int(value[2:], 2) + elif value.startswith('0x'): + return sign*int(value[2:], 16) + elif value[0] == '0': + return sign*int(value, 8) + elif ':' in value: + digits = [int(part) for part in value.split(':')] + digits.reverse() + base = 1 + value = 0 + for digit in digits: + value += digit*base + base *= 60 + return sign*value + else: + return sign*int(value) + + inf_value = 1e300 + while inf_value != inf_value*inf_value: + inf_value *= inf_value + nan_value = -inf_value/inf_value # Trying to make a quiet NaN (like C99). + + def construct_yaml_float(self, node): + value = self.construct_scalar(node) + value = value.replace('_', '').lower() + sign = +1 + if value[0] == '-': + sign = -1 + if value[0] in '+-': + value = value[1:] + if value == '.inf': + return sign*self.inf_value + elif value == '.nan': + return self.nan_value + elif ':' in value: + digits = [float(part) for part in value.split(':')] + digits.reverse() + base = 1 + value = 0.0 + for digit in digits: + value += digit*base + base *= 60 + return sign*value + else: + return sign*float(value) + + def construct_yaml_binary(self, node): + try: + value = self.construct_scalar(node).encode('ascii') + except UnicodeEncodeError as exc: + raise ConstructorError(None, None, + "failed to convert base64 data into ascii: %s" % exc, + node.start_mark) + try: + if hasattr(base64, 'decodebytes'): + return base64.decodebytes(value) + else: + return base64.decodestring(value) + except binascii.Error as exc: + raise ConstructorError(None, None, + "failed to decode base64 data: %s" % exc, node.start_mark) + + timestamp_regexp = re.compile( + r'''^(?P[0-9][0-9][0-9][0-9]) + -(?P[0-9][0-9]?) + -(?P[0-9][0-9]?) + (?:(?:[Tt]|[ \t]+) + (?P[0-9][0-9]?) + :(?P[0-9][0-9]) + :(?P[0-9][0-9]) + (?:\.(?P[0-9]*))? + (?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?) + (?::(?P[0-9][0-9]))?))?)?$''', re.X) + + def construct_yaml_timestamp(self, node): + value = self.construct_scalar(node) + match = self.timestamp_regexp.match(node.value) + values = match.groupdict() + year = int(values['year']) + month = int(values['month']) + day = int(values['day']) + if not values['hour']: + return datetime.date(year, month, day) + hour = int(values['hour']) + minute = int(values['minute']) + second = int(values['second']) + fraction = 0 + if values['fraction']: + fraction = values['fraction'][:6] + while len(fraction) < 6: + fraction += '0' + fraction = int(fraction) + delta = None + if values['tz_sign']: + tz_hour = int(values['tz_hour']) + tz_minute = int(values['tz_minute'] or 0) + delta = datetime.timedelta(hours=tz_hour, minutes=tz_minute) + if values['tz_sign'] == '-': + delta = -delta + data = datetime.datetime(year, month, day, hour, minute, second, fraction) + if delta: + data -= delta + return data + + def construct_yaml_omap(self, node): + # Note: we do not check for duplicate keys, because it's too + # CPU-expensive. + omap = [] + yield omap + if not isinstance(node, SequenceNode): + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a sequence, but found %s" % node.id, node.start_mark) + for subnode in node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a mapping of length 1, but found %s" % subnode.id, + subnode.start_mark) + if len(subnode.value) != 1: + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a single mapping item, but found %d items" % len(subnode.value), + subnode.start_mark) + key_node, value_node = subnode.value[0] + key = self.construct_object(key_node) + value = self.construct_object(value_node) + omap.append((key, value)) + + def construct_yaml_pairs(self, node): + # Note: the same code as `construct_yaml_omap`. + pairs = [] + yield pairs + if not isinstance(node, SequenceNode): + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a sequence, but found %s" % node.id, node.start_mark) + for subnode in node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a mapping of length 1, but found %s" % subnode.id, + subnode.start_mark) + if len(subnode.value) != 1: + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a single mapping item, but found %d items" % len(subnode.value), + subnode.start_mark) + key_node, value_node = subnode.value[0] + key = self.construct_object(key_node) + value = self.construct_object(value_node) + pairs.append((key, value)) + + def construct_yaml_set(self, node): + data = set() + yield data + value = self.construct_mapping(node) + data.update(value) + + def construct_yaml_str(self, node): + return self.construct_scalar(node) + + def construct_yaml_seq(self, node): + data = [] + yield data + data.extend(self.construct_sequence(node)) + + def construct_yaml_map(self, node): + data = {} + yield data + value = self.construct_mapping(node) + data.update(value) + + def construct_yaml_object(self, node, cls): + data = cls.__new__(cls) + yield data + if hasattr(data, '__setstate__'): + state = self.construct_mapping(node, deep=True) + data.__setstate__(state) + else: + state = self.construct_mapping(node) + data.__dict__.update(state) + + def construct_undefined(self, node): + raise ConstructorError(None, None, + "could not determine a constructor for the tag %r" % node.tag, + node.start_mark) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:null', + SafeConstructor.construct_yaml_null) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:bool', + SafeConstructor.construct_yaml_bool) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:int', + SafeConstructor.construct_yaml_int) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:float', + SafeConstructor.construct_yaml_float) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:binary', + SafeConstructor.construct_yaml_binary) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:timestamp', + SafeConstructor.construct_yaml_timestamp) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:omap', + SafeConstructor.construct_yaml_omap) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:pairs', + SafeConstructor.construct_yaml_pairs) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:set', + SafeConstructor.construct_yaml_set) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:str', + SafeConstructor.construct_yaml_str) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:seq', + SafeConstructor.construct_yaml_seq) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:map', + SafeConstructor.construct_yaml_map) + +SafeConstructor.add_constructor(None, + SafeConstructor.construct_undefined) + +class Constructor(SafeConstructor): + + def construct_python_str(self, node): + return self.construct_scalar(node) + + def construct_python_unicode(self, node): + return self.construct_scalar(node) + + def construct_python_bytes(self, node): + try: + value = self.construct_scalar(node).encode('ascii') + except UnicodeEncodeError as exc: + raise ConstructorError(None, None, + "failed to convert base64 data into ascii: %s" % exc, + node.start_mark) + try: + if hasattr(base64, 'decodebytes'): + return base64.decodebytes(value) + else: + return base64.decodestring(value) + except binascii.Error as exc: + raise ConstructorError(None, None, + "failed to decode base64 data: %s" % exc, node.start_mark) + + def construct_python_long(self, node): + return self.construct_yaml_int(node) + + def construct_python_complex(self, node): + return complex(self.construct_scalar(node)) + + def construct_python_tuple(self, node): + return tuple(self.construct_sequence(node)) + + def find_python_module(self, name, mark): + if not name: + raise ConstructorError("while constructing a Python module", mark, + "expected non-empty name appended to the tag", mark) + try: + __import__(name) + except ImportError as exc: + raise ConstructorError("while constructing a Python module", mark, + "cannot find module %r (%s)" % (name, exc), mark) + return sys.modules[name] + + def find_python_name(self, name, mark): + if not name: + raise ConstructorError("while constructing a Python object", mark, + "expected non-empty name appended to the tag", mark) + if '.' in name: + module_name, object_name = name.rsplit('.', 1) + else: + module_name = 'builtins' + object_name = name + try: + __import__(module_name) + except ImportError as exc: + raise ConstructorError("while constructing a Python object", mark, + "cannot find module %r (%s)" % (module_name, exc), mark) + module = sys.modules[module_name] + if not hasattr(module, object_name): + raise ConstructorError("while constructing a Python object", mark, + "cannot find %r in the module %r" + % (object_name, module.__name__), mark) + return getattr(module, object_name) + + def construct_python_name(self, suffix, node): + value = self.construct_scalar(node) + if value: + raise ConstructorError("while constructing a Python name", node.start_mark, + "expected the empty value, but found %r" % value, node.start_mark) + return self.find_python_name(suffix, node.start_mark) + + def construct_python_module(self, suffix, node): + value = self.construct_scalar(node) + if value: + raise ConstructorError("while constructing a Python module", node.start_mark, + "expected the empty value, but found %r" % value, node.start_mark) + return self.find_python_module(suffix, node.start_mark) + + def make_python_instance(self, suffix, node, + args=None, kwds=None, newobj=False): + if not args: + args = [] + if not kwds: + kwds = {} + cls = self.find_python_name(suffix, node.start_mark) + if newobj and isinstance(cls, type): + return cls.__new__(cls, *args, **kwds) + else: + return cls(*args, **kwds) + + def set_python_instance_state(self, instance, state): + if hasattr(instance, '__setstate__'): + instance.__setstate__(state) + else: + slotstate = {} + if isinstance(state, tuple) and len(state) == 2: + state, slotstate = state + if hasattr(instance, '__dict__'): + instance.__dict__.update(state) + elif state: + slotstate.update(state) + for key, value in slotstate.items(): + setattr(object, key, value) + + def construct_python_object(self, suffix, node): + # Format: + # !!python/object:module.name { ... state ... } + instance = self.make_python_instance(suffix, node, newobj=True) + yield instance + deep = hasattr(instance, '__setstate__') + state = self.construct_mapping(node, deep=deep) + self.set_python_instance_state(instance, state) + + def construct_python_object_apply(self, suffix, node, newobj=False): + # Format: + # !!python/object/apply # (or !!python/object/new) + # args: [ ... arguments ... ] + # kwds: { ... keywords ... } + # state: ... state ... + # listitems: [ ... listitems ... ] + # dictitems: { ... dictitems ... } + # or short format: + # !!python/object/apply [ ... arguments ... ] + # The difference between !!python/object/apply and !!python/object/new + # is how an object is created, check make_python_instance for details. + if isinstance(node, SequenceNode): + args = self.construct_sequence(node, deep=True) + kwds = {} + state = {} + listitems = [] + dictitems = {} + else: + value = self.construct_mapping(node, deep=True) + args = value.get('args', []) + kwds = value.get('kwds', {}) + state = value.get('state', {}) + listitems = value.get('listitems', []) + dictitems = value.get('dictitems', {}) + instance = self.make_python_instance(suffix, node, args, kwds, newobj) + if state: + self.set_python_instance_state(instance, state) + if listitems: + instance.extend(listitems) + if dictitems: + for key in dictitems: + instance[key] = dictitems[key] + return instance + + def construct_python_object_new(self, suffix, node): + return self.construct_python_object_apply(suffix, node, newobj=True) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/none', + Constructor.construct_yaml_null) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/bool', + Constructor.construct_yaml_bool) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/str', + Constructor.construct_python_str) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/unicode', + Constructor.construct_python_unicode) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/bytes', + Constructor.construct_python_bytes) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/int', + Constructor.construct_yaml_int) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/long', + Constructor.construct_python_long) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/float', + Constructor.construct_yaml_float) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/complex', + Constructor.construct_python_complex) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/list', + Constructor.construct_yaml_seq) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/tuple', + Constructor.construct_python_tuple) + +Constructor.add_constructor( + 'tag:yaml.org,2002:python/dict', + Constructor.construct_yaml_map) + +Constructor.add_multi_constructor( + 'tag:yaml.org,2002:python/name:', + Constructor.construct_python_name) + +Constructor.add_multi_constructor( + 'tag:yaml.org,2002:python/module:', + Constructor.construct_python_module) + +Constructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object:', + Constructor.construct_python_object) + +Constructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object/apply:', + Constructor.construct_python_object_apply) + +Constructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object/new:', + Constructor.construct_python_object_new) + diff --git a/lib/spack/external/yaml/lib3/yaml/cyaml.py b/lib/spack/external/yaml/lib3/yaml/cyaml.py new file mode 100644 index 00000000000..d5cb87e994f --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/cyaml.py @@ -0,0 +1,85 @@ + +__all__ = ['CBaseLoader', 'CSafeLoader', 'CLoader', + 'CBaseDumper', 'CSafeDumper', 'CDumper'] + +from _yaml import CParser, CEmitter + +from .constructor import * + +from .serializer import * +from .representer import * + +from .resolver import * + +class CBaseLoader(CParser, BaseConstructor, BaseResolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + BaseConstructor.__init__(self) + BaseResolver.__init__(self) + +class CSafeLoader(CParser, SafeConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + SafeConstructor.__init__(self) + Resolver.__init__(self) + +class CLoader(CParser, Constructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + Constructor.__init__(self) + Resolver.__init__(self) + +class CBaseDumper(CEmitter, BaseRepresenter, BaseResolver): + + def __init__(self, stream, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + Resolver.__init__(self) + +class CSafeDumper(CEmitter, SafeRepresenter, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + SafeRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + Resolver.__init__(self) + +class CDumper(CEmitter, Serializer, Representer, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + Resolver.__init__(self) + diff --git a/lib/spack/external/yaml/lib3/yaml/dumper.py b/lib/spack/external/yaml/lib3/yaml/dumper.py new file mode 100644 index 00000000000..0b691287712 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/dumper.py @@ -0,0 +1,62 @@ + +__all__ = ['BaseDumper', 'SafeDumper', 'Dumper'] + +from .emitter import * +from .serializer import * +from .representer import * +from .resolver import * + +class BaseDumper(Emitter, Serializer, BaseRepresenter, BaseResolver): + + def __init__(self, stream, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + Resolver.__init__(self) + +class SafeDumper(Emitter, Serializer, SafeRepresenter, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + SafeRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + Resolver.__init__(self) + +class Dumper(Emitter, Serializer, Representer, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=None, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style) + Resolver.__init__(self) + diff --git a/lib/spack/external/yaml/lib3/yaml/emitter.py b/lib/spack/external/yaml/lib3/yaml/emitter.py new file mode 100644 index 00000000000..34cb145a5fa --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/emitter.py @@ -0,0 +1,1137 @@ + +# Emitter expects events obeying the following grammar: +# stream ::= STREAM-START document* STREAM-END +# document ::= DOCUMENT-START node DOCUMENT-END +# node ::= SCALAR | sequence | mapping +# sequence ::= SEQUENCE-START node* SEQUENCE-END +# mapping ::= MAPPING-START (node node)* MAPPING-END + +__all__ = ['Emitter', 'EmitterError'] + +from .error import YAMLError +from .events import * + +class EmitterError(YAMLError): + pass + +class ScalarAnalysis: + def __init__(self, scalar, empty, multiline, + allow_flow_plain, allow_block_plain, + allow_single_quoted, allow_double_quoted, + allow_block): + self.scalar = scalar + self.empty = empty + self.multiline = multiline + self.allow_flow_plain = allow_flow_plain + self.allow_block_plain = allow_block_plain + self.allow_single_quoted = allow_single_quoted + self.allow_double_quoted = allow_double_quoted + self.allow_block = allow_block + +class Emitter: + + DEFAULT_TAG_PREFIXES = { + '!' : '!', + 'tag:yaml.org,2002:' : '!!', + } + + def __init__(self, stream, canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None): + + # The stream should have the methods `write` and possibly `flush`. + self.stream = stream + + # Encoding can be overriden by STREAM-START. + self.encoding = None + + # Emitter is a state machine with a stack of states to handle nested + # structures. + self.states = [] + self.state = self.expect_stream_start + + # Current event and the event queue. + self.events = [] + self.event = None + + # The current indentation level and the stack of previous indents. + self.indents = [] + self.indent = None + + # Flow level. + self.flow_level = 0 + + # Contexts. + self.root_context = False + self.sequence_context = False + self.mapping_context = False + self.simple_key_context = False + + # Characteristics of the last emitted character: + # - current position. + # - is it a whitespace? + # - is it an indention character + # (indentation space, '-', '?', or ':')? + self.line = 0 + self.column = 0 + self.whitespace = True + self.indention = True + + # Whether the document requires an explicit document indicator + self.open_ended = False + + # Formatting details. + self.canonical = canonical + self.allow_unicode = allow_unicode + self.best_indent = 2 + if indent and 1 < indent < 10: + self.best_indent = indent + self.best_width = 80 + if width and width > self.best_indent*2: + self.best_width = width + self.best_line_break = '\n' + if line_break in ['\r', '\n', '\r\n']: + self.best_line_break = line_break + + # Tag prefixes. + self.tag_prefixes = None + + # Prepared anchor and tag. + self.prepared_anchor = None + self.prepared_tag = None + + # Scalar analysis and style. + self.analysis = None + self.style = None + + def dispose(self): + # Reset the state attributes (to clear self-references) + self.states = [] + self.state = None + + def emit(self, event): + self.events.append(event) + while not self.need_more_events(): + self.event = self.events.pop(0) + self.state() + self.event = None + + # In some cases, we wait for a few next events before emitting. + + def need_more_events(self): + if not self.events: + return True + event = self.events[0] + if isinstance(event, DocumentStartEvent): + return self.need_events(1) + elif isinstance(event, SequenceStartEvent): + return self.need_events(2) + elif isinstance(event, MappingStartEvent): + return self.need_events(3) + else: + return False + + def need_events(self, count): + level = 0 + for event in self.events[1:]: + if isinstance(event, (DocumentStartEvent, CollectionStartEvent)): + level += 1 + elif isinstance(event, (DocumentEndEvent, CollectionEndEvent)): + level -= 1 + elif isinstance(event, StreamEndEvent): + level = -1 + if level < 0: + return False + return (len(self.events) < count+1) + + def increase_indent(self, flow=False, indentless=False): + self.indents.append(self.indent) + if self.indent is None: + if flow: + self.indent = self.best_indent + else: + self.indent = 0 + elif not indentless: + self.indent += self.best_indent + + # States. + + # Stream handlers. + + def expect_stream_start(self): + if isinstance(self.event, StreamStartEvent): + if self.event.encoding and not hasattr(self.stream, 'encoding'): + self.encoding = self.event.encoding + self.write_stream_start() + self.state = self.expect_first_document_start + else: + raise EmitterError("expected StreamStartEvent, but got %s" + % self.event) + + def expect_nothing(self): + raise EmitterError("expected nothing, but got %s" % self.event) + + # Document handlers. + + def expect_first_document_start(self): + return self.expect_document_start(first=True) + + def expect_document_start(self, first=False): + if isinstance(self.event, DocumentStartEvent): + if (self.event.version or self.event.tags) and self.open_ended: + self.write_indicator('...', True) + self.write_indent() + if self.event.version: + version_text = self.prepare_version(self.event.version) + self.write_version_directive(version_text) + self.tag_prefixes = self.DEFAULT_TAG_PREFIXES.copy() + if self.event.tags: + handles = sorted(self.event.tags.keys()) + for handle in handles: + prefix = self.event.tags[handle] + self.tag_prefixes[prefix] = handle + handle_text = self.prepare_tag_handle(handle) + prefix_text = self.prepare_tag_prefix(prefix) + self.write_tag_directive(handle_text, prefix_text) + implicit = (first and not self.event.explicit and not self.canonical + and not self.event.version and not self.event.tags + and not self.check_empty_document()) + if not implicit: + self.write_indent() + self.write_indicator('---', True) + if self.canonical: + self.write_indent() + self.state = self.expect_document_root + elif isinstance(self.event, StreamEndEvent): + if self.open_ended: + self.write_indicator('...', True) + self.write_indent() + self.write_stream_end() + self.state = self.expect_nothing + else: + raise EmitterError("expected DocumentStartEvent, but got %s" + % self.event) + + def expect_document_end(self): + if isinstance(self.event, DocumentEndEvent): + self.write_indent() + if self.event.explicit: + self.write_indicator('...', True) + self.write_indent() + self.flush_stream() + self.state = self.expect_document_start + else: + raise EmitterError("expected DocumentEndEvent, but got %s" + % self.event) + + def expect_document_root(self): + self.states.append(self.expect_document_end) + self.expect_node(root=True) + + # Node handlers. + + def expect_node(self, root=False, sequence=False, mapping=False, + simple_key=False): + self.root_context = root + self.sequence_context = sequence + self.mapping_context = mapping + self.simple_key_context = simple_key + if isinstance(self.event, AliasEvent): + self.expect_alias() + elif isinstance(self.event, (ScalarEvent, CollectionStartEvent)): + self.process_anchor('&') + self.process_tag() + if isinstance(self.event, ScalarEvent): + self.expect_scalar() + elif isinstance(self.event, SequenceStartEvent): + if self.flow_level or self.canonical or self.event.flow_style \ + or self.check_empty_sequence(): + self.expect_flow_sequence() + else: + self.expect_block_sequence() + elif isinstance(self.event, MappingStartEvent): + if self.flow_level or self.canonical or self.event.flow_style \ + or self.check_empty_mapping(): + self.expect_flow_mapping() + else: + self.expect_block_mapping() + else: + raise EmitterError("expected NodeEvent, but got %s" % self.event) + + def expect_alias(self): + if self.event.anchor is None: + raise EmitterError("anchor is not specified for alias") + self.process_anchor('*') + self.state = self.states.pop() + + def expect_scalar(self): + self.increase_indent(flow=True) + self.process_scalar() + self.indent = self.indents.pop() + self.state = self.states.pop() + + # Flow sequence handlers. + + def expect_flow_sequence(self): + self.write_indicator('[', True, whitespace=True) + self.flow_level += 1 + self.increase_indent(flow=True) + self.state = self.expect_first_flow_sequence_item + + def expect_first_flow_sequence_item(self): + if isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + self.write_indicator(']', False) + self.state = self.states.pop() + else: + if self.canonical or self.column > self.best_width: + self.write_indent() + self.states.append(self.expect_flow_sequence_item) + self.expect_node(sequence=True) + + def expect_flow_sequence_item(self): + if isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + if self.canonical: + self.write_indicator(',', False) + self.write_indent() + self.write_indicator(']', False) + self.state = self.states.pop() + else: + self.write_indicator(',', False) + if self.canonical or self.column > self.best_width: + self.write_indent() + self.states.append(self.expect_flow_sequence_item) + self.expect_node(sequence=True) + + # Flow mapping handlers. + + def expect_flow_mapping(self): + self.write_indicator('{', True, whitespace=True) + self.flow_level += 1 + self.increase_indent(flow=True) + self.state = self.expect_first_flow_mapping_key + + def expect_first_flow_mapping_key(self): + if isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + self.write_indicator('}', False) + self.state = self.states.pop() + else: + if self.canonical or self.column > self.best_width: + self.write_indent() + if not self.canonical and self.check_simple_key(): + self.states.append(self.expect_flow_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True) + self.states.append(self.expect_flow_mapping_value) + self.expect_node(mapping=True) + + def expect_flow_mapping_key(self): + if isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + if self.canonical: + self.write_indicator(',', False) + self.write_indent() + self.write_indicator('}', False) + self.state = self.states.pop() + else: + self.write_indicator(',', False) + if self.canonical or self.column > self.best_width: + self.write_indent() + if not self.canonical and self.check_simple_key(): + self.states.append(self.expect_flow_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True) + self.states.append(self.expect_flow_mapping_value) + self.expect_node(mapping=True) + + def expect_flow_mapping_simple_value(self): + self.write_indicator(':', False) + self.states.append(self.expect_flow_mapping_key) + self.expect_node(mapping=True) + + def expect_flow_mapping_value(self): + if self.canonical or self.column > self.best_width: + self.write_indent() + self.write_indicator(':', True) + self.states.append(self.expect_flow_mapping_key) + self.expect_node(mapping=True) + + # Block sequence handlers. + + def expect_block_sequence(self): + indentless = (self.mapping_context and not self.indention) + self.increase_indent(flow=False, indentless=indentless) + self.state = self.expect_first_block_sequence_item + + def expect_first_block_sequence_item(self): + return self.expect_block_sequence_item(first=True) + + def expect_block_sequence_item(self, first=False): + if not first and isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.state = self.states.pop() + else: + self.write_indent() + self.write_indicator('-', True, indention=True) + self.states.append(self.expect_block_sequence_item) + self.expect_node(sequence=True) + + # Block mapping handlers. + + def expect_block_mapping(self): + self.increase_indent(flow=False) + self.state = self.expect_first_block_mapping_key + + def expect_first_block_mapping_key(self): + return self.expect_block_mapping_key(first=True) + + def expect_block_mapping_key(self, first=False): + if not first and isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.state = self.states.pop() + else: + self.write_indent() + if self.check_simple_key(): + self.states.append(self.expect_block_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True, indention=True) + self.states.append(self.expect_block_mapping_value) + self.expect_node(mapping=True) + + def expect_block_mapping_simple_value(self): + self.write_indicator(':', False) + self.states.append(self.expect_block_mapping_key) + self.expect_node(mapping=True) + + def expect_block_mapping_value(self): + self.write_indent() + self.write_indicator(':', True, indention=True) + self.states.append(self.expect_block_mapping_key) + self.expect_node(mapping=True) + + # Checkers. + + def check_empty_sequence(self): + return (isinstance(self.event, SequenceStartEvent) and self.events + and isinstance(self.events[0], SequenceEndEvent)) + + def check_empty_mapping(self): + return (isinstance(self.event, MappingStartEvent) and self.events + and isinstance(self.events[0], MappingEndEvent)) + + def check_empty_document(self): + if not isinstance(self.event, DocumentStartEvent) or not self.events: + return False + event = self.events[0] + return (isinstance(event, ScalarEvent) and event.anchor is None + and event.tag is None and event.implicit and event.value == '') + + def check_simple_key(self): + length = 0 + if isinstance(self.event, NodeEvent) and self.event.anchor is not None: + if self.prepared_anchor is None: + self.prepared_anchor = self.prepare_anchor(self.event.anchor) + length += len(self.prepared_anchor) + if isinstance(self.event, (ScalarEvent, CollectionStartEvent)) \ + and self.event.tag is not None: + if self.prepared_tag is None: + self.prepared_tag = self.prepare_tag(self.event.tag) + length += len(self.prepared_tag) + if isinstance(self.event, ScalarEvent): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + length += len(self.analysis.scalar) + return (length < 128 and (isinstance(self.event, AliasEvent) + or (isinstance(self.event, ScalarEvent) + and not self.analysis.empty and not self.analysis.multiline) + or self.check_empty_sequence() or self.check_empty_mapping())) + + # Anchor, Tag, and Scalar processors. + + def process_anchor(self, indicator): + if self.event.anchor is None: + self.prepared_anchor = None + return + if self.prepared_anchor is None: + self.prepared_anchor = self.prepare_anchor(self.event.anchor) + if self.prepared_anchor: + self.write_indicator(indicator+self.prepared_anchor, True) + self.prepared_anchor = None + + def process_tag(self): + tag = self.event.tag + if isinstance(self.event, ScalarEvent): + if self.style is None: + self.style = self.choose_scalar_style() + if ((not self.canonical or tag is None) and + ((self.style == '' and self.event.implicit[0]) + or (self.style != '' and self.event.implicit[1]))): + self.prepared_tag = None + return + if self.event.implicit[0] and tag is None: + tag = '!' + self.prepared_tag = None + else: + if (not self.canonical or tag is None) and self.event.implicit: + self.prepared_tag = None + return + if tag is None: + raise EmitterError("tag is not specified") + if self.prepared_tag is None: + self.prepared_tag = self.prepare_tag(tag) + if self.prepared_tag: + self.write_indicator(self.prepared_tag, True) + self.prepared_tag = None + + def choose_scalar_style(self): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + if self.event.style == '"' or self.canonical: + return '"' + if not self.event.style and self.event.implicit[0]: + if (not (self.simple_key_context and + (self.analysis.empty or self.analysis.multiline)) + and (self.flow_level and self.analysis.allow_flow_plain + or (not self.flow_level and self.analysis.allow_block_plain))): + return '' + if self.event.style and self.event.style in '|>': + if (not self.flow_level and not self.simple_key_context + and self.analysis.allow_block): + return self.event.style + if not self.event.style or self.event.style == '\'': + if (self.analysis.allow_single_quoted and + not (self.simple_key_context and self.analysis.multiline)): + return '\'' + return '"' + + def process_scalar(self): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + if self.style is None: + self.style = self.choose_scalar_style() + split = (not self.simple_key_context) + #if self.analysis.multiline and split \ + # and (not self.style or self.style in '\'\"'): + # self.write_indent() + if self.style == '"': + self.write_double_quoted(self.analysis.scalar, split) + elif self.style == '\'': + self.write_single_quoted(self.analysis.scalar, split) + elif self.style == '>': + self.write_folded(self.analysis.scalar) + elif self.style == '|': + self.write_literal(self.analysis.scalar) + else: + self.write_plain(self.analysis.scalar, split) + self.analysis = None + self.style = None + + # Analyzers. + + def prepare_version(self, version): + major, minor = version + if major != 1: + raise EmitterError("unsupported YAML version: %d.%d" % (major, minor)) + return '%d.%d' % (major, minor) + + def prepare_tag_handle(self, handle): + if not handle: + raise EmitterError("tag handle must not be empty") + if handle[0] != '!' or handle[-1] != '!': + raise EmitterError("tag handle must start and end with '!': %r" % handle) + for ch in handle[1:-1]: + if not ('0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_'): + raise EmitterError("invalid character %r in the tag handle: %r" + % (ch, handle)) + return handle + + def prepare_tag_prefix(self, prefix): + if not prefix: + raise EmitterError("tag prefix must not be empty") + chunks = [] + start = end = 0 + if prefix[0] == '!': + end = 1 + while end < len(prefix): + ch = prefix[end] + if '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?!:@&=+$,_.~*\'()[]': + end += 1 + else: + if start < end: + chunks.append(prefix[start:end]) + start = end = end+1 + data = ch.encode('utf-8') + for ch in data: + chunks.append('%%%02X' % ord(ch)) + if start < end: + chunks.append(prefix[start:end]) + return ''.join(chunks) + + def prepare_tag(self, tag): + if not tag: + raise EmitterError("tag must not be empty") + if tag == '!': + return tag + handle = None + suffix = tag + prefixes = sorted(self.tag_prefixes.keys()) + for prefix in prefixes: + if tag.startswith(prefix) \ + and (prefix == '!' or len(prefix) < len(tag)): + handle = self.tag_prefixes[prefix] + suffix = tag[len(prefix):] + chunks = [] + start = end = 0 + while end < len(suffix): + ch = suffix[end] + if '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?:@&=+$,_.~*\'()[]' \ + or (ch == '!' and handle != '!'): + end += 1 + else: + if start < end: + chunks.append(suffix[start:end]) + start = end = end+1 + data = ch.encode('utf-8') + for ch in data: + chunks.append('%%%02X' % ord(ch)) + if start < end: + chunks.append(suffix[start:end]) + suffix_text = ''.join(chunks) + if handle: + return '%s%s' % (handle, suffix_text) + else: + return '!<%s>' % suffix_text + + def prepare_anchor(self, anchor): + if not anchor: + raise EmitterError("anchor must not be empty") + for ch in anchor: + if not ('0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_'): + raise EmitterError("invalid character %r in the anchor: %r" + % (ch, anchor)) + return anchor + + def analyze_scalar(self, scalar): + + # Empty scalar is a special case. + if not scalar: + return ScalarAnalysis(scalar=scalar, empty=True, multiline=False, + allow_flow_plain=False, allow_block_plain=True, + allow_single_quoted=True, allow_double_quoted=True, + allow_block=False) + + # Indicators and special characters. + block_indicators = False + flow_indicators = False + line_breaks = False + special_characters = False + + # Important whitespace combinations. + leading_space = False + leading_break = False + trailing_space = False + trailing_break = False + break_space = False + space_break = False + + # Check document indicators. + if scalar.startswith('---') or scalar.startswith('...'): + block_indicators = True + flow_indicators = True + + # First character or preceded by a whitespace. + preceeded_by_whitespace = True + + # Last character or followed by a whitespace. + followed_by_whitespace = (len(scalar) == 1 or + scalar[1] in '\0 \t\r\n\x85\u2028\u2029') + + # The previous character is a space. + previous_space = False + + # The previous character is a break. + previous_break = False + + index = 0 + while index < len(scalar): + ch = scalar[index] + + # Check for indicators. + if index == 0: + # Leading indicators are special characters. + if ch in '#,[]{}&*!|>\'\"%@`': + flow_indicators = True + block_indicators = True + if ch in '?:': + flow_indicators = True + if followed_by_whitespace: + block_indicators = True + if ch == '-' and followed_by_whitespace: + flow_indicators = True + block_indicators = True + else: + # Some indicators cannot appear within a scalar as well. + if ch in ',?[]{}': + flow_indicators = True + if ch == ':': + flow_indicators = True + if followed_by_whitespace: + block_indicators = True + if ch == '#' and preceeded_by_whitespace: + flow_indicators = True + block_indicators = True + + # Check for line breaks, special, and unicode characters. + if ch in '\n\x85\u2028\u2029': + line_breaks = True + if not (ch == '\n' or '\x20' <= ch <= '\x7E'): + if (ch == '\x85' or '\xA0' <= ch <= '\uD7FF' + or '\uE000' <= ch <= '\uFFFD') and ch != '\uFEFF': + unicode_characters = True + if not self.allow_unicode: + special_characters = True + else: + special_characters = True + + # Detect important whitespace combinations. + if ch == ' ': + if index == 0: + leading_space = True + if index == len(scalar)-1: + trailing_space = True + if previous_break: + break_space = True + previous_space = True + previous_break = False + elif ch in '\n\x85\u2028\u2029': + if index == 0: + leading_break = True + if index == len(scalar)-1: + trailing_break = True + if previous_space: + space_break = True + previous_space = False + previous_break = True + else: + previous_space = False + previous_break = False + + # Prepare for the next character. + index += 1 + preceeded_by_whitespace = (ch in '\0 \t\r\n\x85\u2028\u2029') + followed_by_whitespace = (index+1 >= len(scalar) or + scalar[index+1] in '\0 \t\r\n\x85\u2028\u2029') + + # Let's decide what styles are allowed. + allow_flow_plain = True + allow_block_plain = True + allow_single_quoted = True + allow_double_quoted = True + allow_block = True + + # Leading and trailing whitespaces are bad for plain scalars. + if (leading_space or leading_break + or trailing_space or trailing_break): + allow_flow_plain = allow_block_plain = False + + # We do not permit trailing spaces for block scalars. + if trailing_space: + allow_block = False + + # Spaces at the beginning of a new line are only acceptable for block + # scalars. + if break_space: + allow_flow_plain = allow_block_plain = allow_single_quoted = False + + # Spaces followed by breaks, as well as special character are only + # allowed for double quoted scalars. + if space_break or special_characters: + allow_flow_plain = allow_block_plain = \ + allow_single_quoted = allow_block = False + + # Although the plain scalar writer supports breaks, we never emit + # multiline plain scalars. + if line_breaks: + allow_flow_plain = allow_block_plain = False + + # Flow indicators are forbidden for flow plain scalars. + if flow_indicators: + allow_flow_plain = False + + # Block indicators are forbidden for block plain scalars. + if block_indicators: + allow_block_plain = False + + return ScalarAnalysis(scalar=scalar, + empty=False, multiline=line_breaks, + allow_flow_plain=allow_flow_plain, + allow_block_plain=allow_block_plain, + allow_single_quoted=allow_single_quoted, + allow_double_quoted=allow_double_quoted, + allow_block=allow_block) + + # Writers. + + def flush_stream(self): + if hasattr(self.stream, 'flush'): + self.stream.flush() + + def write_stream_start(self): + # Write BOM if needed. + if self.encoding and self.encoding.startswith('utf-16'): + self.stream.write('\uFEFF'.encode(self.encoding)) + + def write_stream_end(self): + self.flush_stream() + + def write_indicator(self, indicator, need_whitespace, + whitespace=False, indention=False): + if self.whitespace or not need_whitespace: + data = indicator + else: + data = ' '+indicator + self.whitespace = whitespace + self.indention = self.indention and indention + self.column += len(data) + self.open_ended = False + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_indent(self): + indent = self.indent or 0 + if not self.indention or self.column > indent \ + or (self.column == indent and not self.whitespace): + self.write_line_break() + if self.column < indent: + self.whitespace = True + data = ' '*(indent-self.column) + self.column = indent + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_line_break(self, data=None): + if data is None: + data = self.best_line_break + self.whitespace = True + self.indention = True + self.line += 1 + self.column = 0 + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_version_directive(self, version_text): + data = '%%YAML %s' % version_text + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_line_break() + + def write_tag_directive(self, handle_text, prefix_text): + data = '%%TAG %s %s' % (handle_text, prefix_text) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_line_break() + + # Scalar streams. + + def write_single_quoted(self, text, split=True): + self.write_indicator('\'', True) + spaces = False + breaks = False + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if spaces: + if ch is None or ch != ' ': + if start+1 == end and self.column > self.best_width and split \ + and start != 0 and end != len(text): + self.write_indent() + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + elif breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + if text[start] == '\n': + self.write_line_break() + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + self.write_indent() + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029' or ch == '\'': + if start < end: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch == '\'': + data = '\'\'' + self.column += 2 + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + 1 + if ch is not None: + spaces = (ch == ' ') + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 + self.write_indicator('\'', False) + + ESCAPE_REPLACEMENTS = { + '\0': '0', + '\x07': 'a', + '\x08': 'b', + '\x09': 't', + '\x0A': 'n', + '\x0B': 'v', + '\x0C': 'f', + '\x0D': 'r', + '\x1B': 'e', + '\"': '\"', + '\\': '\\', + '\x85': 'N', + '\xA0': '_', + '\u2028': 'L', + '\u2029': 'P', + } + + def write_double_quoted(self, text, split=True): + self.write_indicator('"', True) + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if ch is None or ch in '"\\\x85\u2028\u2029\uFEFF' \ + or not ('\x20' <= ch <= '\x7E' + or (self.allow_unicode + and ('\xA0' <= ch <= '\uD7FF' + or '\uE000' <= ch <= '\uFFFD'))): + if start < end: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch is not None: + if ch in self.ESCAPE_REPLACEMENTS: + data = '\\'+self.ESCAPE_REPLACEMENTS[ch] + elif ch <= '\xFF': + data = '\\x%02X' % ord(ch) + elif ch <= '\uFFFF': + data = '\\u%04X' % ord(ch) + else: + data = '\\U%08X' % ord(ch) + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end+1 + if 0 < end < len(text)-1 and (ch == ' ' or start >= end) \ + and self.column+(end-start) > self.best_width and split: + data = text[start:end]+'\\' + if start < end: + start = end + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_indent() + self.whitespace = False + self.indention = False + if text[start] == ' ': + data = '\\' + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + end += 1 + self.write_indicator('"', False) + + def determine_block_hints(self, text): + hints = '' + if text: + if text[0] in ' \n\x85\u2028\u2029': + hints += str(self.best_indent) + if text[-1] not in '\n\x85\u2028\u2029': + hints += '-' + elif len(text) == 1 or text[-2] in '\n\x85\u2028\u2029': + hints += '+' + return hints + + def write_folded(self, text): + hints = self.determine_block_hints(text) + self.write_indicator('>'+hints, True) + if hints[-1:] == '+': + self.open_ended = True + self.write_line_break() + leading_space = True + spaces = False + breaks = True + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + if not leading_space and ch is not None and ch != ' ' \ + and text[start] == '\n': + self.write_line_break() + leading_space = (ch == ' ') + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + if ch is not None: + self.write_indent() + start = end + elif spaces: + if ch != ' ': + if start+1 == end and self.column > self.best_width: + self.write_indent() + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029': + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + if ch is None: + self.write_line_break() + start = end + if ch is not None: + breaks = (ch in '\n\x85\u2028\u2029') + spaces = (ch == ' ') + end += 1 + + def write_literal(self, text): + hints = self.determine_block_hints(text) + self.write_indicator('|'+hints, True) + if hints[-1:] == '+': + self.open_ended = True + self.write_line_break() + breaks = True + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + if ch is not None: + self.write_indent() + start = end + else: + if ch is None or ch in '\n\x85\u2028\u2029': + data = text[start:end] + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + if ch is None: + self.write_line_break() + start = end + if ch is not None: + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 + + def write_plain(self, text, split=True): + if self.root_context: + self.open_ended = True + if not text: + return + if not self.whitespace: + data = ' ' + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.whitespace = False + self.indention = False + spaces = False + breaks = False + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if spaces: + if ch != ' ': + if start+1 == end and self.column > self.best_width and split: + self.write_indent() + self.whitespace = False + self.indention = False + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + elif breaks: + if ch not in '\n\x85\u2028\u2029': + if text[start] == '\n': + self.write_line_break() + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + self.write_indent() + self.whitespace = False + self.indention = False + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029': + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch is not None: + spaces = (ch == ' ') + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 + diff --git a/lib/spack/external/yaml/lib3/yaml/error.py b/lib/spack/external/yaml/lib3/yaml/error.py new file mode 100644 index 00000000000..b796b4dc519 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/error.py @@ -0,0 +1,75 @@ + +__all__ = ['Mark', 'YAMLError', 'MarkedYAMLError'] + +class Mark: + + def __init__(self, name, index, line, column, buffer, pointer): + self.name = name + self.index = index + self.line = line + self.column = column + self.buffer = buffer + self.pointer = pointer + + def get_snippet(self, indent=4, max_length=75): + if self.buffer is None: + return None + head = '' + start = self.pointer + while start > 0 and self.buffer[start-1] not in '\0\r\n\x85\u2028\u2029': + start -= 1 + if self.pointer-start > max_length/2-1: + head = ' ... ' + start += 5 + break + tail = '' + end = self.pointer + while end < len(self.buffer) and self.buffer[end] not in '\0\r\n\x85\u2028\u2029': + end += 1 + if end-self.pointer > max_length/2-1: + tail = ' ... ' + end -= 5 + break + snippet = self.buffer[start:end] + return ' '*indent + head + snippet + tail + '\n' \ + + ' '*(indent+self.pointer-start+len(head)) + '^' + + def __str__(self): + snippet = self.get_snippet() + where = " in \"%s\", line %d, column %d" \ + % (self.name, self.line+1, self.column+1) + if snippet is not None: + where += ":\n"+snippet + return where + +class YAMLError(Exception): + pass + +class MarkedYAMLError(YAMLError): + + def __init__(self, context=None, context_mark=None, + problem=None, problem_mark=None, note=None): + self.context = context + self.context_mark = context_mark + self.problem = problem + self.problem_mark = problem_mark + self.note = note + + def __str__(self): + lines = [] + if self.context is not None: + lines.append(self.context) + if self.context_mark is not None \ + and (self.problem is None or self.problem_mark is None + or self.context_mark.name != self.problem_mark.name + or self.context_mark.line != self.problem_mark.line + or self.context_mark.column != self.problem_mark.column): + lines.append(str(self.context_mark)) + if self.problem is not None: + lines.append(self.problem) + if self.problem_mark is not None: + lines.append(str(self.problem_mark)) + if self.note is not None: + lines.append(self.note) + return '\n'.join(lines) + diff --git a/lib/spack/external/yaml/lib3/yaml/events.py b/lib/spack/external/yaml/lib3/yaml/events.py new file mode 100644 index 00000000000..f79ad389cb6 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/events.py @@ -0,0 +1,86 @@ + +# Abstract classes. + +class Event(object): + def __init__(self, start_mark=None, end_mark=None): + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + attributes = [key for key in ['anchor', 'tag', 'implicit', 'value'] + if hasattr(self, key)] + arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) + for key in attributes]) + return '%s(%s)' % (self.__class__.__name__, arguments) + +class NodeEvent(Event): + def __init__(self, anchor, start_mark=None, end_mark=None): + self.anchor = anchor + self.start_mark = start_mark + self.end_mark = end_mark + +class CollectionStartEvent(NodeEvent): + def __init__(self, anchor, tag, implicit, start_mark=None, end_mark=None, + flow_style=None): + self.anchor = anchor + self.tag = tag + self.implicit = implicit + self.start_mark = start_mark + self.end_mark = end_mark + self.flow_style = flow_style + +class CollectionEndEvent(Event): + pass + +# Implementations. + +class StreamStartEvent(Event): + def __init__(self, start_mark=None, end_mark=None, encoding=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.encoding = encoding + +class StreamEndEvent(Event): + pass + +class DocumentStartEvent(Event): + def __init__(self, start_mark=None, end_mark=None, + explicit=None, version=None, tags=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.explicit = explicit + self.version = version + self.tags = tags + +class DocumentEndEvent(Event): + def __init__(self, start_mark=None, end_mark=None, + explicit=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.explicit = explicit + +class AliasEvent(NodeEvent): + pass + +class ScalarEvent(NodeEvent): + def __init__(self, anchor, tag, implicit, value, + start_mark=None, end_mark=None, style=None): + self.anchor = anchor + self.tag = tag + self.implicit = implicit + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + +class SequenceStartEvent(CollectionStartEvent): + pass + +class SequenceEndEvent(CollectionEndEvent): + pass + +class MappingStartEvent(CollectionStartEvent): + pass + +class MappingEndEvent(CollectionEndEvent): + pass + diff --git a/lib/spack/external/yaml/lib3/yaml/loader.py b/lib/spack/external/yaml/lib3/yaml/loader.py new file mode 100644 index 00000000000..08c8f01b346 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/loader.py @@ -0,0 +1,40 @@ + +__all__ = ['BaseLoader', 'SafeLoader', 'Loader'] + +from .reader import * +from .scanner import * +from .parser import * +from .composer import * +from .constructor import * +from .resolver import * + +class BaseLoader(Reader, Scanner, Parser, Composer, BaseConstructor, BaseResolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + BaseConstructor.__init__(self) + BaseResolver.__init__(self) + +class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + SafeConstructor.__init__(self) + Resolver.__init__(self) + +class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + Constructor.__init__(self) + Resolver.__init__(self) + diff --git a/lib/spack/external/yaml/lib3/yaml/nodes.py b/lib/spack/external/yaml/lib3/yaml/nodes.py new file mode 100644 index 00000000000..c4f070c41e1 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/nodes.py @@ -0,0 +1,49 @@ + +class Node(object): + def __init__(self, tag, value, start_mark, end_mark): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + value = self.value + #if isinstance(value, list): + # if len(value) == 0: + # value = '' + # elif len(value) == 1: + # value = '<1 item>' + # else: + # value = '<%d items>' % len(value) + #else: + # if len(value) > 75: + # value = repr(value[:70]+u' ... ') + # else: + # value = repr(value) + value = repr(value) + return '%s(tag=%r, value=%s)' % (self.__class__.__name__, self.tag, value) + +class ScalarNode(Node): + id = 'scalar' + def __init__(self, tag, value, + start_mark=None, end_mark=None, style=None): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + +class CollectionNode(Node): + def __init__(self, tag, value, + start_mark=None, end_mark=None, flow_style=None): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.flow_style = flow_style + +class SequenceNode(CollectionNode): + id = 'sequence' + +class MappingNode(CollectionNode): + id = 'mapping' + diff --git a/lib/spack/external/yaml/lib3/yaml/parser.py b/lib/spack/external/yaml/lib3/yaml/parser.py new file mode 100644 index 00000000000..13a5995d292 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/parser.py @@ -0,0 +1,589 @@ + +# The following YAML grammar is LL(1) and is parsed by a recursive descent +# parser. +# +# stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +# implicit_document ::= block_node DOCUMENT-END* +# explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +# block_node_or_indentless_sequence ::= +# ALIAS +# | properties (block_content | indentless_block_sequence)? +# | block_content +# | indentless_block_sequence +# block_node ::= ALIAS +# | properties block_content? +# | block_content +# flow_node ::= ALIAS +# | properties flow_content? +# | flow_content +# properties ::= TAG ANCHOR? | ANCHOR TAG? +# block_content ::= block_collection | flow_collection | SCALAR +# flow_content ::= flow_collection | SCALAR +# block_collection ::= block_sequence | block_mapping +# flow_collection ::= flow_sequence | flow_mapping +# block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +# indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +# block_mapping ::= BLOCK-MAPPING_START +# ((KEY block_node_or_indentless_sequence?)? +# (VALUE block_node_or_indentless_sequence?)?)* +# BLOCK-END +# flow_sequence ::= FLOW-SEQUENCE-START +# (flow_sequence_entry FLOW-ENTRY)* +# flow_sequence_entry? +# FLOW-SEQUENCE-END +# flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +# flow_mapping ::= FLOW-MAPPING-START +# (flow_mapping_entry FLOW-ENTRY)* +# flow_mapping_entry? +# FLOW-MAPPING-END +# flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +# +# FIRST sets: +# +# stream: { STREAM-START } +# explicit_document: { DIRECTIVE DOCUMENT-START } +# implicit_document: FIRST(block_node) +# block_node: { ALIAS TAG ANCHOR SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START } +# flow_node: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START } +# block_content: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR } +# flow_content: { FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR } +# block_collection: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START } +# flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START } +# block_sequence: { BLOCK-SEQUENCE-START } +# block_mapping: { BLOCK-MAPPING-START } +# block_node_or_indentless_sequence: { ALIAS ANCHOR TAG SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START BLOCK-ENTRY } +# indentless_sequence: { ENTRY } +# flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START } +# flow_sequence: { FLOW-SEQUENCE-START } +# flow_mapping: { FLOW-MAPPING-START } +# flow_sequence_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY } +# flow_mapping_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY } + +__all__ = ['Parser', 'ParserError'] + +from .error import MarkedYAMLError +from .tokens import * +from .events import * +from .scanner import * + +class ParserError(MarkedYAMLError): + pass + +class Parser: + # Since writing a recursive-descendant parser is a straightforward task, we + # do not give many comments here. + + DEFAULT_TAGS = { + '!': '!', + '!!': 'tag:yaml.org,2002:', + } + + def __init__(self): + self.current_event = None + self.yaml_version = None + self.tag_handles = {} + self.states = [] + self.marks = [] + self.state = self.parse_stream_start + + def dispose(self): + # Reset the state attributes (to clear self-references) + self.states = [] + self.state = None + + def check_event(self, *choices): + # Check the type of the next event. + if self.current_event is None: + if self.state: + self.current_event = self.state() + if self.current_event is not None: + if not choices: + return True + for choice in choices: + if isinstance(self.current_event, choice): + return True + return False + + def peek_event(self): + # Get the next event. + if self.current_event is None: + if self.state: + self.current_event = self.state() + return self.current_event + + def get_event(self): + # Get the next event and proceed further. + if self.current_event is None: + if self.state: + self.current_event = self.state() + value = self.current_event + self.current_event = None + return value + + # stream ::= STREAM-START implicit_document? explicit_document* STREAM-END + # implicit_document ::= block_node DOCUMENT-END* + # explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* + + def parse_stream_start(self): + + # Parse the stream start. + token = self.get_token() + event = StreamStartEvent(token.start_mark, token.end_mark, + encoding=token.encoding) + + # Prepare the next state. + self.state = self.parse_implicit_document_start + + return event + + def parse_implicit_document_start(self): + + # Parse an implicit document. + if not self.check_token(DirectiveToken, DocumentStartToken, + StreamEndToken): + self.tag_handles = self.DEFAULT_TAGS + token = self.peek_token() + start_mark = end_mark = token.start_mark + event = DocumentStartEvent(start_mark, end_mark, + explicit=False) + + # Prepare the next state. + self.states.append(self.parse_document_end) + self.state = self.parse_block_node + + return event + + else: + return self.parse_document_start() + + def parse_document_start(self): + + # Parse any extra document end indicators. + while self.check_token(DocumentEndToken): + self.get_token() + + # Parse an explicit document. + if not self.check_token(StreamEndToken): + token = self.peek_token() + start_mark = token.start_mark + version, tags = self.process_directives() + if not self.check_token(DocumentStartToken): + raise ParserError(None, None, + "expected '', but found %r" + % self.peek_token().id, + self.peek_token().start_mark) + token = self.get_token() + end_mark = token.end_mark + event = DocumentStartEvent(start_mark, end_mark, + explicit=True, version=version, tags=tags) + self.states.append(self.parse_document_end) + self.state = self.parse_document_content + else: + # Parse the end of the stream. + token = self.get_token() + event = StreamEndEvent(token.start_mark, token.end_mark) + assert not self.states + assert not self.marks + self.state = None + return event + + def parse_document_end(self): + + # Parse the document end. + token = self.peek_token() + start_mark = end_mark = token.start_mark + explicit = False + if self.check_token(DocumentEndToken): + token = self.get_token() + end_mark = token.end_mark + explicit = True + event = DocumentEndEvent(start_mark, end_mark, + explicit=explicit) + + # Prepare the next state. + self.state = self.parse_document_start + + return event + + def parse_document_content(self): + if self.check_token(DirectiveToken, + DocumentStartToken, DocumentEndToken, StreamEndToken): + event = self.process_empty_scalar(self.peek_token().start_mark) + self.state = self.states.pop() + return event + else: + return self.parse_block_node() + + def process_directives(self): + self.yaml_version = None + self.tag_handles = {} + while self.check_token(DirectiveToken): + token = self.get_token() + if token.name == 'YAML': + if self.yaml_version is not None: + raise ParserError(None, None, + "found duplicate YAML directive", token.start_mark) + major, minor = token.value + if major != 1: + raise ParserError(None, None, + "found incompatible YAML document (version 1.* is required)", + token.start_mark) + self.yaml_version = token.value + elif token.name == 'TAG': + handle, prefix = token.value + if handle in self.tag_handles: + raise ParserError(None, None, + "duplicate tag handle %r" % handle, + token.start_mark) + self.tag_handles[handle] = prefix + if self.tag_handles: + value = self.yaml_version, self.tag_handles.copy() + else: + value = self.yaml_version, None + for key in self.DEFAULT_TAGS: + if key not in self.tag_handles: + self.tag_handles[key] = self.DEFAULT_TAGS[key] + return value + + # block_node_or_indentless_sequence ::= ALIAS + # | properties (block_content | indentless_block_sequence)? + # | block_content + # | indentless_block_sequence + # block_node ::= ALIAS + # | properties block_content? + # | block_content + # flow_node ::= ALIAS + # | properties flow_content? + # | flow_content + # properties ::= TAG ANCHOR? | ANCHOR TAG? + # block_content ::= block_collection | flow_collection | SCALAR + # flow_content ::= flow_collection | SCALAR + # block_collection ::= block_sequence | block_mapping + # flow_collection ::= flow_sequence | flow_mapping + + def parse_block_node(self): + return self.parse_node(block=True) + + def parse_flow_node(self): + return self.parse_node() + + def parse_block_node_or_indentless_sequence(self): + return self.parse_node(block=True, indentless_sequence=True) + + def parse_node(self, block=False, indentless_sequence=False): + if self.check_token(AliasToken): + token = self.get_token() + event = AliasEvent(token.value, token.start_mark, token.end_mark) + self.state = self.states.pop() + else: + anchor = None + tag = None + start_mark = end_mark = tag_mark = None + if self.check_token(AnchorToken): + token = self.get_token() + start_mark = token.start_mark + end_mark = token.end_mark + anchor = token.value + if self.check_token(TagToken): + token = self.get_token() + tag_mark = token.start_mark + end_mark = token.end_mark + tag = token.value + elif self.check_token(TagToken): + token = self.get_token() + start_mark = tag_mark = token.start_mark + end_mark = token.end_mark + tag = token.value + if self.check_token(AnchorToken): + token = self.get_token() + end_mark = token.end_mark + anchor = token.value + if tag is not None: + handle, suffix = tag + if handle is not None: + if handle not in self.tag_handles: + raise ParserError("while parsing a node", start_mark, + "found undefined tag handle %r" % handle, + tag_mark) + tag = self.tag_handles[handle]+suffix + else: + tag = suffix + #if tag == '!': + # raise ParserError("while parsing a node", start_mark, + # "found non-specific tag '!'", tag_mark, + # "Please check 'http://pyyaml.org/wiki/YAMLNonSpecificTag' and share your opinion.") + if start_mark is None: + start_mark = end_mark = self.peek_token().start_mark + event = None + implicit = (tag is None or tag == '!') + if indentless_sequence and self.check_token(BlockEntryToken): + end_mark = self.peek_token().end_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark) + self.state = self.parse_indentless_sequence_entry + else: + if self.check_token(ScalarToken): + token = self.get_token() + end_mark = token.end_mark + if (token.plain and tag is None) or tag == '!': + implicit = (True, False) + elif tag is None: + implicit = (False, True) + else: + implicit = (False, False) + event = ScalarEvent(anchor, tag, implicit, token.value, + start_mark, end_mark, style=token.style) + self.state = self.states.pop() + elif self.check_token(FlowSequenceStartToken): + end_mark = self.peek_token().end_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=True) + self.state = self.parse_flow_sequence_first_entry + elif self.check_token(FlowMappingStartToken): + end_mark = self.peek_token().end_mark + event = MappingStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=True) + self.state = self.parse_flow_mapping_first_key + elif block and self.check_token(BlockSequenceStartToken): + end_mark = self.peek_token().start_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=False) + self.state = self.parse_block_sequence_first_entry + elif block and self.check_token(BlockMappingStartToken): + end_mark = self.peek_token().start_mark + event = MappingStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=False) + self.state = self.parse_block_mapping_first_key + elif anchor is not None or tag is not None: + # Empty scalars are allowed even if a tag or an anchor is + # specified. + event = ScalarEvent(anchor, tag, (implicit, False), '', + start_mark, end_mark) + self.state = self.states.pop() + else: + if block: + node = 'block' + else: + node = 'flow' + token = self.peek_token() + raise ParserError("while parsing a %s node" % node, start_mark, + "expected the node content, but found %r" % token.id, + token.start_mark) + return event + + # block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END + + def parse_block_sequence_first_entry(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_block_sequence_entry() + + def parse_block_sequence_entry(self): + if self.check_token(BlockEntryToken): + token = self.get_token() + if not self.check_token(BlockEntryToken, BlockEndToken): + self.states.append(self.parse_block_sequence_entry) + return self.parse_block_node() + else: + self.state = self.parse_block_sequence_entry + return self.process_empty_scalar(token.end_mark) + if not self.check_token(BlockEndToken): + token = self.peek_token() + raise ParserError("while parsing a block collection", self.marks[-1], + "expected , but found %r" % token.id, token.start_mark) + token = self.get_token() + event = SequenceEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + # indentless_sequence ::= (BLOCK-ENTRY block_node?)+ + + def parse_indentless_sequence_entry(self): + if self.check_token(BlockEntryToken): + token = self.get_token() + if not self.check_token(BlockEntryToken, + KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_indentless_sequence_entry) + return self.parse_block_node() + else: + self.state = self.parse_indentless_sequence_entry + return self.process_empty_scalar(token.end_mark) + token = self.peek_token() + event = SequenceEndEvent(token.start_mark, token.start_mark) + self.state = self.states.pop() + return event + + # block_mapping ::= BLOCK-MAPPING_START + # ((KEY block_node_or_indentless_sequence?)? + # (VALUE block_node_or_indentless_sequence?)?)* + # BLOCK-END + + def parse_block_mapping_first_key(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_block_mapping_key() + + def parse_block_mapping_key(self): + if self.check_token(KeyToken): + token = self.get_token() + if not self.check_token(KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_block_mapping_value) + return self.parse_block_node_or_indentless_sequence() + else: + self.state = self.parse_block_mapping_value + return self.process_empty_scalar(token.end_mark) + if not self.check_token(BlockEndToken): + token = self.peek_token() + raise ParserError("while parsing a block mapping", self.marks[-1], + "expected , but found %r" % token.id, token.start_mark) + token = self.get_token() + event = MappingEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_block_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_block_mapping_key) + return self.parse_block_node_or_indentless_sequence() + else: + self.state = self.parse_block_mapping_key + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_block_mapping_key + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + # flow_sequence ::= FLOW-SEQUENCE-START + # (flow_sequence_entry FLOW-ENTRY)* + # flow_sequence_entry? + # FLOW-SEQUENCE-END + # flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + # + # Note that while production rules for both flow_sequence_entry and + # flow_mapping_entry are equal, their interpretations are different. + # For `flow_sequence_entry`, the part `KEY flow_node? (VALUE flow_node?)?` + # generate an inline mapping (set syntax). + + def parse_flow_sequence_first_entry(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_flow_sequence_entry(first=True) + + def parse_flow_sequence_entry(self, first=False): + if not self.check_token(FlowSequenceEndToken): + if not first: + if self.check_token(FlowEntryToken): + self.get_token() + else: + token = self.peek_token() + raise ParserError("while parsing a flow sequence", self.marks[-1], + "expected ',' or ']', but got %r" % token.id, token.start_mark) + + if self.check_token(KeyToken): + token = self.peek_token() + event = MappingStartEvent(None, None, True, + token.start_mark, token.end_mark, + flow_style=True) + self.state = self.parse_flow_sequence_entry_mapping_key + return event + elif not self.check_token(FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry) + return self.parse_flow_node() + token = self.get_token() + event = SequenceEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_flow_sequence_entry_mapping_key(self): + token = self.get_token() + if not self.check_token(ValueToken, + FlowEntryToken, FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry_mapping_value) + return self.parse_flow_node() + else: + self.state = self.parse_flow_sequence_entry_mapping_value + return self.process_empty_scalar(token.end_mark) + + def parse_flow_sequence_entry_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(FlowEntryToken, FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry_mapping_end) + return self.parse_flow_node() + else: + self.state = self.parse_flow_sequence_entry_mapping_end + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_flow_sequence_entry_mapping_end + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + def parse_flow_sequence_entry_mapping_end(self): + self.state = self.parse_flow_sequence_entry + token = self.peek_token() + return MappingEndEvent(token.start_mark, token.start_mark) + + # flow_mapping ::= FLOW-MAPPING-START + # (flow_mapping_entry FLOW-ENTRY)* + # flow_mapping_entry? + # FLOW-MAPPING-END + # flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + + def parse_flow_mapping_first_key(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_flow_mapping_key(first=True) + + def parse_flow_mapping_key(self, first=False): + if not self.check_token(FlowMappingEndToken): + if not first: + if self.check_token(FlowEntryToken): + self.get_token() + else: + token = self.peek_token() + raise ParserError("while parsing a flow mapping", self.marks[-1], + "expected ',' or '}', but got %r" % token.id, token.start_mark) + if self.check_token(KeyToken): + token = self.get_token() + if not self.check_token(ValueToken, + FlowEntryToken, FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_value) + return self.parse_flow_node() + else: + self.state = self.parse_flow_mapping_value + return self.process_empty_scalar(token.end_mark) + elif not self.check_token(FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_empty_value) + return self.parse_flow_node() + token = self.get_token() + event = MappingEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_flow_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(FlowEntryToken, FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_key) + return self.parse_flow_node() + else: + self.state = self.parse_flow_mapping_key + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_flow_mapping_key + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + def parse_flow_mapping_empty_value(self): + self.state = self.parse_flow_mapping_key + return self.process_empty_scalar(self.peek_token().start_mark) + + def process_empty_scalar(self, mark): + return ScalarEvent(None, None, (True, False), '', mark, mark) + diff --git a/lib/spack/external/yaml/lib3/yaml/reader.py b/lib/spack/external/yaml/lib3/yaml/reader.py new file mode 100644 index 00000000000..f70e920f441 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/reader.py @@ -0,0 +1,192 @@ +# This module contains abstractions for the input stream. You don't have to +# looks further, there are no pretty code. +# +# We define two classes here. +# +# Mark(source, line, column) +# It's just a record and its only use is producing nice error messages. +# Parser does not use it for any other purposes. +# +# Reader(source, data) +# Reader determines the encoding of `data` and converts it to unicode. +# Reader provides the following methods and attributes: +# reader.peek(length=1) - return the next `length` characters +# reader.forward(length=1) - move the current position to `length` characters. +# reader.index - the number of the current character. +# reader.line, stream.column - the line and the column of the current character. + +__all__ = ['Reader', 'ReaderError'] + +from .error import YAMLError, Mark + +import codecs, re + +class ReaderError(YAMLError): + + def __init__(self, name, position, character, encoding, reason): + self.name = name + self.character = character + self.position = position + self.encoding = encoding + self.reason = reason + + def __str__(self): + if isinstance(self.character, bytes): + return "'%s' codec can't decode byte #x%02x: %s\n" \ + " in \"%s\", position %d" \ + % (self.encoding, ord(self.character), self.reason, + self.name, self.position) + else: + return "unacceptable character #x%04x: %s\n" \ + " in \"%s\", position %d" \ + % (self.character, self.reason, + self.name, self.position) + +class Reader(object): + # Reader: + # - determines the data encoding and converts it to a unicode string, + # - checks if characters are in allowed range, + # - adds '\0' to the end. + + # Reader accepts + # - a `bytes` object, + # - a `str` object, + # - a file-like object with its `read` method returning `str`, + # - a file-like object with its `read` method returning `unicode`. + + # Yeah, it's ugly and slow. + + def __init__(self, stream): + self.name = None + self.stream = None + self.stream_pointer = 0 + self.eof = True + self.buffer = '' + self.pointer = 0 + self.raw_buffer = None + self.raw_decode = None + self.encoding = None + self.index = 0 + self.line = 0 + self.column = 0 + if isinstance(stream, str): + self.name = "" + self.check_printable(stream) + self.buffer = stream+'\0' + elif isinstance(stream, bytes): + self.name = "" + self.raw_buffer = stream + self.determine_encoding() + else: + self.stream = stream + self.name = getattr(stream, 'name', "") + self.eof = False + self.raw_buffer = None + self.determine_encoding() + + def peek(self, index=0): + try: + return self.buffer[self.pointer+index] + except IndexError: + self.update(index+1) + return self.buffer[self.pointer+index] + + def prefix(self, length=1): + if self.pointer+length >= len(self.buffer): + self.update(length) + return self.buffer[self.pointer:self.pointer+length] + + def forward(self, length=1): + if self.pointer+length+1 >= len(self.buffer): + self.update(length+1) + while length: + ch = self.buffer[self.pointer] + self.pointer += 1 + self.index += 1 + if ch in '\n\x85\u2028\u2029' \ + or (ch == '\r' and self.buffer[self.pointer] != '\n'): + self.line += 1 + self.column = 0 + elif ch != '\uFEFF': + self.column += 1 + length -= 1 + + def get_mark(self): + if self.stream is None: + return Mark(self.name, self.index, self.line, self.column, + self.buffer, self.pointer) + else: + return Mark(self.name, self.index, self.line, self.column, + None, None) + + def determine_encoding(self): + while not self.eof and (self.raw_buffer is None or len(self.raw_buffer) < 2): + self.update_raw() + if isinstance(self.raw_buffer, bytes): + if self.raw_buffer.startswith(codecs.BOM_UTF16_LE): + self.raw_decode = codecs.utf_16_le_decode + self.encoding = 'utf-16-le' + elif self.raw_buffer.startswith(codecs.BOM_UTF16_BE): + self.raw_decode = codecs.utf_16_be_decode + self.encoding = 'utf-16-be' + else: + self.raw_decode = codecs.utf_8_decode + self.encoding = 'utf-8' + self.update(1) + + NON_PRINTABLE = re.compile('[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD]') + def check_printable(self, data): + match = self.NON_PRINTABLE.search(data) + if match: + character = match.group() + position = self.index+(len(self.buffer)-self.pointer)+match.start() + raise ReaderError(self.name, position, ord(character), + 'unicode', "special characters are not allowed") + + def update(self, length): + if self.raw_buffer is None: + return + self.buffer = self.buffer[self.pointer:] + self.pointer = 0 + while len(self.buffer) < length: + if not self.eof: + self.update_raw() + if self.raw_decode is not None: + try: + data, converted = self.raw_decode(self.raw_buffer, + 'strict', self.eof) + except UnicodeDecodeError as exc: + character = self.raw_buffer[exc.start] + if self.stream is not None: + position = self.stream_pointer-len(self.raw_buffer)+exc.start + else: + position = exc.start + raise ReaderError(self.name, position, character, + exc.encoding, exc.reason) + else: + data = self.raw_buffer + converted = len(data) + self.check_printable(data) + self.buffer += data + self.raw_buffer = self.raw_buffer[converted:] + if self.eof: + self.buffer += '\0' + self.raw_buffer = None + break + + def update_raw(self, size=4096): + data = self.stream.read(size) + if self.raw_buffer is None: + self.raw_buffer = data + else: + self.raw_buffer += data + self.stream_pointer += len(data) + if not data: + self.eof = True + +#try: +# import psyco +# psyco.bind(Reader) +#except ImportError: +# pass + diff --git a/lib/spack/external/yaml/lib3/yaml/representer.py b/lib/spack/external/yaml/lib3/yaml/representer.py new file mode 100644 index 00000000000..b9e65c5109d --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/representer.py @@ -0,0 +1,387 @@ + +__all__ = ['BaseRepresenter', 'SafeRepresenter', 'Representer', + 'RepresenterError'] + +from .error import * +from .nodes import * + +import datetime, sys, copyreg, types, base64, collections + +class RepresenterError(YAMLError): + pass + +class BaseRepresenter: + + yaml_representers = {} + yaml_multi_representers = {} + + def __init__(self, default_style=None, default_flow_style=None): + self.default_style = default_style + self.default_flow_style = default_flow_style + self.represented_objects = {} + self.object_keeper = [] + self.alias_key = None + + def represent(self, data): + node = self.represent_data(data) + self.serialize(node) + self.represented_objects = {} + self.object_keeper = [] + self.alias_key = None + + def represent_data(self, data): + if self.ignore_aliases(data): + self.alias_key = None + else: + self.alias_key = id(data) + if self.alias_key is not None: + if self.alias_key in self.represented_objects: + node = self.represented_objects[self.alias_key] + #if node is None: + # raise RepresenterError("recursive objects are not allowed: %r" % data) + return node + #self.represented_objects[alias_key] = None + self.object_keeper.append(data) + data_types = type(data).__mro__ + if data_types[0] in self.yaml_representers: + node = self.yaml_representers[data_types[0]](self, data) + else: + for data_type in data_types: + if data_type in self.yaml_multi_representers: + node = self.yaml_multi_representers[data_type](self, data) + break + else: + if None in self.yaml_multi_representers: + node = self.yaml_multi_representers[None](self, data) + elif None in self.yaml_representers: + node = self.yaml_representers[None](self, data) + else: + node = ScalarNode(None, str(data)) + #if alias_key is not None: + # self.represented_objects[alias_key] = node + return node + + @classmethod + def add_representer(cls, data_type, representer): + if not 'yaml_representers' in cls.__dict__: + cls.yaml_representers = cls.yaml_representers.copy() + cls.yaml_representers[data_type] = representer + + @classmethod + def add_multi_representer(cls, data_type, representer): + if not 'yaml_multi_representers' in cls.__dict__: + cls.yaml_multi_representers = cls.yaml_multi_representers.copy() + cls.yaml_multi_representers[data_type] = representer + + def represent_scalar(self, tag, value, style=None): + if style is None: + style = self.default_style + node = ScalarNode(tag, value, style=style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + return node + + def represent_sequence(self, tag, sequence, flow_style=None): + value = [] + node = SequenceNode(tag, value, flow_style=flow_style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + best_style = True + for item in sequence: + node_item = self.represent_data(item) + if not (isinstance(node_item, ScalarNode) and not node_item.style): + best_style = False + value.append(node_item) + if flow_style is None: + if self.default_flow_style is not None: + node.flow_style = self.default_flow_style + else: + node.flow_style = best_style + return node + + def represent_mapping(self, tag, mapping, flow_style=None): + value = [] + node = MappingNode(tag, value, flow_style=flow_style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + best_style = True + if hasattr(mapping, 'items'): + mapping = list(mapping.items()) + try: + mapping = sorted(mapping) + except TypeError: + pass + for item_key, item_value in mapping: + node_key = self.represent_data(item_key) + node_value = self.represent_data(item_value) + if not (isinstance(node_key, ScalarNode) and not node_key.style): + best_style = False + if not (isinstance(node_value, ScalarNode) and not node_value.style): + best_style = False + value.append((node_key, node_value)) + if flow_style is None: + if self.default_flow_style is not None: + node.flow_style = self.default_flow_style + else: + node.flow_style = best_style + return node + + def ignore_aliases(self, data): + return False + +class SafeRepresenter(BaseRepresenter): + + def ignore_aliases(self, data): + if data is None: + return True + if isinstance(data, tuple) and data == (): + return True + if isinstance(data, (str, bytes, bool, int, float)): + return True + + def represent_none(self, data): + return self.represent_scalar('tag:yaml.org,2002:null', 'null') + + def represent_str(self, data): + return self.represent_scalar('tag:yaml.org,2002:str', data) + + def represent_binary(self, data): + if hasattr(base64, 'encodebytes'): + data = base64.encodebytes(data).decode('ascii') + else: + data = base64.encodestring(data).decode('ascii') + return self.represent_scalar('tag:yaml.org,2002:binary', data, style='|') + + def represent_bool(self, data): + if data: + value = 'true' + else: + value = 'false' + return self.represent_scalar('tag:yaml.org,2002:bool', value) + + def represent_int(self, data): + return self.represent_scalar('tag:yaml.org,2002:int', str(data)) + + inf_value = 1e300 + while repr(inf_value) != repr(inf_value*inf_value): + inf_value *= inf_value + + def represent_float(self, data): + if data != data or (data == 0.0 and data == 1.0): + value = '.nan' + elif data == self.inf_value: + value = '.inf' + elif data == -self.inf_value: + value = '-.inf' + else: + value = repr(data).lower() + # Note that in some cases `repr(data)` represents a float number + # without the decimal parts. For instance: + # >>> repr(1e17) + # '1e17' + # Unfortunately, this is not a valid float representation according + # to the definition of the `!!float` tag. We fix this by adding + # '.0' before the 'e' symbol. + if '.' not in value and 'e' in value: + value = value.replace('e', '.0e', 1) + return self.represent_scalar('tag:yaml.org,2002:float', value) + + def represent_list(self, data): + #pairs = (len(data) > 0 and isinstance(data, list)) + #if pairs: + # for item in data: + # if not isinstance(item, tuple) or len(item) != 2: + # pairs = False + # break + #if not pairs: + return self.represent_sequence('tag:yaml.org,2002:seq', data) + #value = [] + #for item_key, item_value in data: + # value.append(self.represent_mapping(u'tag:yaml.org,2002:map', + # [(item_key, item_value)])) + #return SequenceNode(u'tag:yaml.org,2002:pairs', value) + + def represent_dict(self, data): + return self.represent_mapping('tag:yaml.org,2002:map', data) + + def represent_set(self, data): + value = {} + for key in data: + value[key] = None + return self.represent_mapping('tag:yaml.org,2002:set', value) + + def represent_date(self, data): + value = data.isoformat() + return self.represent_scalar('tag:yaml.org,2002:timestamp', value) + + def represent_datetime(self, data): + value = data.isoformat(' ') + return self.represent_scalar('tag:yaml.org,2002:timestamp', value) + + def represent_yaml_object(self, tag, data, cls, flow_style=None): + if hasattr(data, '__getstate__'): + state = data.__getstate__() + else: + state = data.__dict__.copy() + return self.represent_mapping(tag, state, flow_style=flow_style) + + def represent_undefined(self, data): + raise RepresenterError("cannot represent an object: %s" % data) + +SafeRepresenter.add_representer(type(None), + SafeRepresenter.represent_none) + +SafeRepresenter.add_representer(str, + SafeRepresenter.represent_str) + +SafeRepresenter.add_representer(bytes, + SafeRepresenter.represent_binary) + +SafeRepresenter.add_representer(bool, + SafeRepresenter.represent_bool) + +SafeRepresenter.add_representer(int, + SafeRepresenter.represent_int) + +SafeRepresenter.add_representer(float, + SafeRepresenter.represent_float) + +SafeRepresenter.add_representer(list, + SafeRepresenter.represent_list) + +SafeRepresenter.add_representer(tuple, + SafeRepresenter.represent_list) + +SafeRepresenter.add_representer(dict, + SafeRepresenter.represent_dict) + +SafeRepresenter.add_representer(set, + SafeRepresenter.represent_set) + +SafeRepresenter.add_representer(datetime.date, + SafeRepresenter.represent_date) + +SafeRepresenter.add_representer(datetime.datetime, + SafeRepresenter.represent_datetime) + +SafeRepresenter.add_representer(None, + SafeRepresenter.represent_undefined) + +class Representer(SafeRepresenter): + + def represent_complex(self, data): + if data.imag == 0.0: + data = '%r' % data.real + elif data.real == 0.0: + data = '%rj' % data.imag + elif data.imag > 0: + data = '%r+%rj' % (data.real, data.imag) + else: + data = '%r%rj' % (data.real, data.imag) + return self.represent_scalar('tag:yaml.org,2002:python/complex', data) + + def represent_tuple(self, data): + return self.represent_sequence('tag:yaml.org,2002:python/tuple', data) + + def represent_name(self, data): + name = '%s.%s' % (data.__module__, data.__name__) + return self.represent_scalar('tag:yaml.org,2002:python/name:'+name, '') + + def represent_module(self, data): + return self.represent_scalar( + 'tag:yaml.org,2002:python/module:'+data.__name__, '') + + def represent_object(self, data): + # We use __reduce__ API to save the data. data.__reduce__ returns + # a tuple of length 2-5: + # (function, args, state, listitems, dictitems) + + # For reconstructing, we calls function(*args), then set its state, + # listitems, and dictitems if they are not None. + + # A special case is when function.__name__ == '__newobj__'. In this + # case we create the object with args[0].__new__(*args). + + # Another special case is when __reduce__ returns a string - we don't + # support it. + + # We produce a !!python/object, !!python/object/new or + # !!python/object/apply node. + + cls = type(data) + if cls in copyreg.dispatch_table: + reduce = copyreg.dispatch_table[cls](data) + elif hasattr(data, '__reduce_ex__'): + reduce = data.__reduce_ex__(2) + elif hasattr(data, '__reduce__'): + reduce = data.__reduce__() + else: + raise RepresenterError("cannot represent object: %r" % data) + reduce = (list(reduce)+[None]*5)[:5] + function, args, state, listitems, dictitems = reduce + args = list(args) + if state is None: + state = {} + if listitems is not None: + listitems = list(listitems) + if dictitems is not None: + dictitems = dict(dictitems) + if function.__name__ == '__newobj__': + function = args[0] + args = args[1:] + tag = 'tag:yaml.org,2002:python/object/new:' + newobj = True + else: + tag = 'tag:yaml.org,2002:python/object/apply:' + newobj = False + function_name = '%s.%s' % (function.__module__, function.__name__) + if not args and not listitems and not dictitems \ + and isinstance(state, dict) and newobj: + return self.represent_mapping( + 'tag:yaml.org,2002:python/object:'+function_name, state) + if not listitems and not dictitems \ + and isinstance(state, dict) and not state: + return self.represent_sequence(tag+function_name, args) + value = {} + if args: + value['args'] = args + if state or not isinstance(state, dict): + value['state'] = state + if listitems: + value['listitems'] = listitems + if dictitems: + value['dictitems'] = dictitems + return self.represent_mapping(tag+function_name, value) + + def represent_ordered_dict(self, data): + # Provide uniform representation across different Python versions. + data_type = type(data) + tag = 'tag:yaml.org,2002:python/object/apply:%s.%s' \ + % (data_type.__module__, data_type.__name__) + items = [[key, value] for key, value in data.items()] + return self.represent_sequence(tag, [items]) + +Representer.add_representer(complex, + Representer.represent_complex) + +Representer.add_representer(tuple, + Representer.represent_tuple) + +Representer.add_representer(type, + Representer.represent_name) + +Representer.add_representer(collections.OrderedDict, + Representer.represent_ordered_dict) + +Representer.add_representer(types.FunctionType, + Representer.represent_name) + +Representer.add_representer(types.BuiltinFunctionType, + Representer.represent_name) + +Representer.add_representer(types.ModuleType, + Representer.represent_module) + +Representer.add_multi_representer(object, + Representer.represent_object) + diff --git a/lib/spack/external/yaml/lib3/yaml/resolver.py b/lib/spack/external/yaml/lib3/yaml/resolver.py new file mode 100644 index 00000000000..02b82e73eec --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/resolver.py @@ -0,0 +1,227 @@ + +__all__ = ['BaseResolver', 'Resolver'] + +from .error import * +from .nodes import * + +import re + +class ResolverError(YAMLError): + pass + +class BaseResolver: + + DEFAULT_SCALAR_TAG = 'tag:yaml.org,2002:str' + DEFAULT_SEQUENCE_TAG = 'tag:yaml.org,2002:seq' + DEFAULT_MAPPING_TAG = 'tag:yaml.org,2002:map' + + yaml_implicit_resolvers = {} + yaml_path_resolvers = {} + + def __init__(self): + self.resolver_exact_paths = [] + self.resolver_prefix_paths = [] + + @classmethod + def add_implicit_resolver(cls, tag, regexp, first): + if not 'yaml_implicit_resolvers' in cls.__dict__: + implicit_resolvers = {} + for key in cls.yaml_implicit_resolvers: + implicit_resolvers[key] = cls.yaml_implicit_resolvers[key][:] + cls.yaml_implicit_resolvers = implicit_resolvers + if first is None: + first = [None] + for ch in first: + cls.yaml_implicit_resolvers.setdefault(ch, []).append((tag, regexp)) + + @classmethod + def add_path_resolver(cls, tag, path, kind=None): + # Note: `add_path_resolver` is experimental. The API could be changed. + # `new_path` is a pattern that is matched against the path from the + # root to the node that is being considered. `node_path` elements are + # tuples `(node_check, index_check)`. `node_check` is a node class: + # `ScalarNode`, `SequenceNode`, `MappingNode` or `None`. `None` + # matches any kind of a node. `index_check` could be `None`, a boolean + # value, a string value, or a number. `None` and `False` match against + # any _value_ of sequence and mapping nodes. `True` matches against + # any _key_ of a mapping node. A string `index_check` matches against + # a mapping value that corresponds to a scalar key which content is + # equal to the `index_check` value. An integer `index_check` matches + # against a sequence value with the index equal to `index_check`. + if not 'yaml_path_resolvers' in cls.__dict__: + cls.yaml_path_resolvers = cls.yaml_path_resolvers.copy() + new_path = [] + for element in path: + if isinstance(element, (list, tuple)): + if len(element) == 2: + node_check, index_check = element + elif len(element) == 1: + node_check = element[0] + index_check = True + else: + raise ResolverError("Invalid path element: %s" % element) + else: + node_check = None + index_check = element + if node_check is str: + node_check = ScalarNode + elif node_check is list: + node_check = SequenceNode + elif node_check is dict: + node_check = MappingNode + elif node_check not in [ScalarNode, SequenceNode, MappingNode] \ + and not isinstance(node_check, str) \ + and node_check is not None: + raise ResolverError("Invalid node checker: %s" % node_check) + if not isinstance(index_check, (str, int)) \ + and index_check is not None: + raise ResolverError("Invalid index checker: %s" % index_check) + new_path.append((node_check, index_check)) + if kind is str: + kind = ScalarNode + elif kind is list: + kind = SequenceNode + elif kind is dict: + kind = MappingNode + elif kind not in [ScalarNode, SequenceNode, MappingNode] \ + and kind is not None: + raise ResolverError("Invalid node kind: %s" % kind) + cls.yaml_path_resolvers[tuple(new_path), kind] = tag + + def descend_resolver(self, current_node, current_index): + if not self.yaml_path_resolvers: + return + exact_paths = {} + prefix_paths = [] + if current_node: + depth = len(self.resolver_prefix_paths) + for path, kind in self.resolver_prefix_paths[-1]: + if self.check_resolver_prefix(depth, path, kind, + current_node, current_index): + if len(path) > depth: + prefix_paths.append((path, kind)) + else: + exact_paths[kind] = self.yaml_path_resolvers[path, kind] + else: + for path, kind in self.yaml_path_resolvers: + if not path: + exact_paths[kind] = self.yaml_path_resolvers[path, kind] + else: + prefix_paths.append((path, kind)) + self.resolver_exact_paths.append(exact_paths) + self.resolver_prefix_paths.append(prefix_paths) + + def ascend_resolver(self): + if not self.yaml_path_resolvers: + return + self.resolver_exact_paths.pop() + self.resolver_prefix_paths.pop() + + def check_resolver_prefix(self, depth, path, kind, + current_node, current_index): + node_check, index_check = path[depth-1] + if isinstance(node_check, str): + if current_node.tag != node_check: + return + elif node_check is not None: + if not isinstance(current_node, node_check): + return + if index_check is True and current_index is not None: + return + if (index_check is False or index_check is None) \ + and current_index is None: + return + if isinstance(index_check, str): + if not (isinstance(current_index, ScalarNode) + and index_check == current_index.value): + return + elif isinstance(index_check, int) and not isinstance(index_check, bool): + if index_check != current_index: + return + return True + + def resolve(self, kind, value, implicit): + if kind is ScalarNode and implicit[0]: + if value == '': + resolvers = self.yaml_implicit_resolvers.get('', []) + else: + resolvers = self.yaml_implicit_resolvers.get(value[0], []) + resolvers += self.yaml_implicit_resolvers.get(None, []) + for tag, regexp in resolvers: + if regexp.match(value): + return tag + implicit = implicit[1] + if self.yaml_path_resolvers: + exact_paths = self.resolver_exact_paths[-1] + if kind in exact_paths: + return exact_paths[kind] + if None in exact_paths: + return exact_paths[None] + if kind is ScalarNode: + return self.DEFAULT_SCALAR_TAG + elif kind is SequenceNode: + return self.DEFAULT_SEQUENCE_TAG + elif kind is MappingNode: + return self.DEFAULT_MAPPING_TAG + +class Resolver(BaseResolver): + pass + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:bool', + re.compile(r'''^(?:yes|Yes|YES|no|No|NO + |true|True|TRUE|false|False|FALSE + |on|On|ON|off|Off|OFF)$''', re.X), + list('yYnNtTfFoO')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:float', + re.compile(r'''^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+][0-9]+)? + |\.[0-9_]+(?:[eE][-+][0-9]+)? + |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]* + |[-+]?\.(?:inf|Inf|INF) + |\.(?:nan|NaN|NAN))$''', re.X), + list('-+0123456789.')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:int', + re.compile(r'''^(?:[-+]?0b[0-1_]+ + |[-+]?0[0-7_]+ + |[-+]?(?:0|[1-9][0-9_]*) + |[-+]?0x[0-9a-fA-F_]+ + |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X), + list('-+0123456789')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:merge', + re.compile(r'^(?:<<)$'), + ['<']) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:null', + re.compile(r'''^(?: ~ + |null|Null|NULL + | )$''', re.X), + ['~', 'n', 'N', '']) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:timestamp', + re.compile(r'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] + |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]? + (?:[Tt]|[ \t]+)[0-9][0-9]? + :[0-9][0-9] :[0-9][0-9] (?:\.[0-9]*)? + (?:[ \t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$''', re.X), + list('0123456789')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:value', + re.compile(r'^(?:=)$'), + ['=']) + +# The following resolver is only for documentation purposes. It cannot work +# because plain scalars cannot start with '!', '&', or '*'. +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:yaml', + re.compile(r'^(?:!|&|\*)$'), + list('!&*')) + diff --git a/lib/spack/external/yaml/lib3/yaml/scanner.py b/lib/spack/external/yaml/lib3/yaml/scanner.py new file mode 100644 index 00000000000..c8d127b8eca --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/scanner.py @@ -0,0 +1,1444 @@ + +# Scanner produces tokens of the following types: +# STREAM-START +# STREAM-END +# DIRECTIVE(name, value) +# DOCUMENT-START +# DOCUMENT-END +# BLOCK-SEQUENCE-START +# BLOCK-MAPPING-START +# BLOCK-END +# FLOW-SEQUENCE-START +# FLOW-MAPPING-START +# FLOW-SEQUENCE-END +# FLOW-MAPPING-END +# BLOCK-ENTRY +# FLOW-ENTRY +# KEY +# VALUE +# ALIAS(value) +# ANCHOR(value) +# TAG(value) +# SCALAR(value, plain, style) +# +# Read comments in the Scanner code for more details. +# + +__all__ = ['Scanner', 'ScannerError'] + +from .error import MarkedYAMLError +from .tokens import * + +class ScannerError(MarkedYAMLError): + pass + +class SimpleKey: + # See below simple keys treatment. + + def __init__(self, token_number, required, index, line, column, mark): + self.token_number = token_number + self.required = required + self.index = index + self.line = line + self.column = column + self.mark = mark + +class Scanner: + + def __init__(self): + """Initialize the scanner.""" + # It is assumed that Scanner and Reader will have a common descendant. + # Reader do the dirty work of checking for BOM and converting the + # input data to Unicode. It also adds NUL to the end. + # + # Reader supports the following methods + # self.peek(i=0) # peek the next i-th character + # self.prefix(l=1) # peek the next l characters + # self.forward(l=1) # read the next l characters and move the pointer. + + # Had we reached the end of the stream? + self.done = False + + # The number of unclosed '{' and '['. `flow_level == 0` means block + # context. + self.flow_level = 0 + + # List of processed tokens that are not yet emitted. + self.tokens = [] + + # Add the STREAM-START token. + self.fetch_stream_start() + + # Number of tokens that were emitted through the `get_token` method. + self.tokens_taken = 0 + + # The current indentation level. + self.indent = -1 + + # Past indentation levels. + self.indents = [] + + # Variables related to simple keys treatment. + + # A simple key is a key that is not denoted by the '?' indicator. + # Example of simple keys: + # --- + # block simple key: value + # ? not a simple key: + # : { flow simple key: value } + # We emit the KEY token before all keys, so when we find a potential + # simple key, we try to locate the corresponding ':' indicator. + # Simple keys should be limited to a single line and 1024 characters. + + # Can a simple key start at the current position? A simple key may + # start: + # - at the beginning of the line, not counting indentation spaces + # (in block context), + # - after '{', '[', ',' (in the flow context), + # - after '?', ':', '-' (in the block context). + # In the block context, this flag also signifies if a block collection + # may start at the current position. + self.allow_simple_key = True + + # Keep track of possible simple keys. This is a dictionary. The key + # is `flow_level`; there can be no more that one possible simple key + # for each level. The value is a SimpleKey record: + # (token_number, required, index, line, column, mark) + # A simple key may start with ALIAS, ANCHOR, TAG, SCALAR(flow), + # '[', or '{' tokens. + self.possible_simple_keys = {} + + # Public methods. + + def check_token(self, *choices): + # Check if the next token is one of the given types. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + if not choices: + return True + for choice in choices: + if isinstance(self.tokens[0], choice): + return True + return False + + def peek_token(self): + # Return the next token, but do not delete if from the queue. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + return self.tokens[0] + + def get_token(self): + # Return the next token. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + self.tokens_taken += 1 + return self.tokens.pop(0) + + # Private methods. + + def need_more_tokens(self): + if self.done: + return False + if not self.tokens: + return True + # The current token may be a potential simple key, so we + # need to look further. + self.stale_possible_simple_keys() + if self.next_possible_simple_key() == self.tokens_taken: + return True + + def fetch_more_tokens(self): + + # Eat whitespaces and comments until we reach the next token. + self.scan_to_next_token() + + # Remove obsolete possible simple keys. + self.stale_possible_simple_keys() + + # Compare the current indentation and column. It may add some tokens + # and decrease the current indentation level. + self.unwind_indent(self.column) + + # Peek the next character. + ch = self.peek() + + # Is it the end of stream? + if ch == '\0': + return self.fetch_stream_end() + + # Is it a directive? + if ch == '%' and self.check_directive(): + return self.fetch_directive() + + # Is it the document start? + if ch == '-' and self.check_document_start(): + return self.fetch_document_start() + + # Is it the document end? + if ch == '.' and self.check_document_end(): + return self.fetch_document_end() + + # TODO: support for BOM within a stream. + #if ch == '\uFEFF': + # return self.fetch_bom() <-- issue BOMToken + + # Note: the order of the following checks is NOT significant. + + # Is it the flow sequence start indicator? + if ch == '[': + return self.fetch_flow_sequence_start() + + # Is it the flow mapping start indicator? + if ch == '{': + return self.fetch_flow_mapping_start() + + # Is it the flow sequence end indicator? + if ch == ']': + return self.fetch_flow_sequence_end() + + # Is it the flow mapping end indicator? + if ch == '}': + return self.fetch_flow_mapping_end() + + # Is it the flow entry indicator? + if ch == ',': + return self.fetch_flow_entry() + + # Is it the block entry indicator? + if ch == '-' and self.check_block_entry(): + return self.fetch_block_entry() + + # Is it the key indicator? + if ch == '?' and self.check_key(): + return self.fetch_key() + + # Is it the value indicator? + if ch == ':' and self.check_value(): + return self.fetch_value() + + # Is it an alias? + if ch == '*': + return self.fetch_alias() + + # Is it an anchor? + if ch == '&': + return self.fetch_anchor() + + # Is it a tag? + if ch == '!': + return self.fetch_tag() + + # Is it a literal scalar? + if ch == '|' and not self.flow_level: + return self.fetch_literal() + + # Is it a folded scalar? + if ch == '>' and not self.flow_level: + return self.fetch_folded() + + # Is it a single quoted scalar? + if ch == '\'': + return self.fetch_single() + + # Is it a double quoted scalar? + if ch == '\"': + return self.fetch_double() + + # It must be a plain scalar then. + if self.check_plain(): + return self.fetch_plain() + + # No? It's an error. Let's produce a nice error message. + raise ScannerError("while scanning for the next token", None, + "found character %r that cannot start any token" % ch, + self.get_mark()) + + # Simple keys treatment. + + def next_possible_simple_key(self): + # Return the number of the nearest possible simple key. Actually we + # don't need to loop through the whole dictionary. We may replace it + # with the following code: + # if not self.possible_simple_keys: + # return None + # return self.possible_simple_keys[ + # min(self.possible_simple_keys.keys())].token_number + min_token_number = None + for level in self.possible_simple_keys: + key = self.possible_simple_keys[level] + if min_token_number is None or key.token_number < min_token_number: + min_token_number = key.token_number + return min_token_number + + def stale_possible_simple_keys(self): + # Remove entries that are no longer possible simple keys. According to + # the YAML specification, simple keys + # - should be limited to a single line, + # - should be no longer than 1024 characters. + # Disabling this procedure will allow simple keys of any length and + # height (may cause problems if indentation is broken though). + for level in list(self.possible_simple_keys): + key = self.possible_simple_keys[level] + if key.line != self.line \ + or self.index-key.index > 1024: + if key.required: + raise ScannerError("while scanning a simple key", key.mark, + "could not find expected ':'", self.get_mark()) + del self.possible_simple_keys[level] + + def save_possible_simple_key(self): + # The next token may start a simple key. We check if it's possible + # and save its position. This function is called for + # ALIAS, ANCHOR, TAG, SCALAR(flow), '[', and '{'. + + # Check if a simple key is required at the current position. + required = not self.flow_level and self.indent == self.column + + # The next token might be a simple key. Let's save it's number and + # position. + if self.allow_simple_key: + self.remove_possible_simple_key() + token_number = self.tokens_taken+len(self.tokens) + key = SimpleKey(token_number, required, + self.index, self.line, self.column, self.get_mark()) + self.possible_simple_keys[self.flow_level] = key + + def remove_possible_simple_key(self): + # Remove the saved possible key position at the current flow level. + if self.flow_level in self.possible_simple_keys: + key = self.possible_simple_keys[self.flow_level] + + if key.required: + raise ScannerError("while scanning a simple key", key.mark, + "could not find expected ':'", self.get_mark()) + + del self.possible_simple_keys[self.flow_level] + + # Indentation functions. + + def unwind_indent(self, column): + + ## In flow context, tokens should respect indentation. + ## Actually the condition should be `self.indent >= column` according to + ## the spec. But this condition will prohibit intuitively correct + ## constructions such as + ## key : { + ## } + #if self.flow_level and self.indent > column: + # raise ScannerError(None, None, + # "invalid intendation or unclosed '[' or '{'", + # self.get_mark()) + + # In the flow context, indentation is ignored. We make the scanner less + # restrictive then specification requires. + if self.flow_level: + return + + # In block context, we may need to issue the BLOCK-END tokens. + while self.indent > column: + mark = self.get_mark() + self.indent = self.indents.pop() + self.tokens.append(BlockEndToken(mark, mark)) + + def add_indent(self, column): + # Check if we need to increase indentation. + if self.indent < column: + self.indents.append(self.indent) + self.indent = column + return True + return False + + # Fetchers. + + def fetch_stream_start(self): + # We always add STREAM-START as the first token and STREAM-END as the + # last token. + + # Read the token. + mark = self.get_mark() + + # Add STREAM-START. + self.tokens.append(StreamStartToken(mark, mark, + encoding=self.encoding)) + + + def fetch_stream_end(self): + + # Set the current intendation to -1. + self.unwind_indent(-1) + + # Reset simple keys. + self.remove_possible_simple_key() + self.allow_simple_key = False + self.possible_simple_keys = {} + + # Read the token. + mark = self.get_mark() + + # Add STREAM-END. + self.tokens.append(StreamEndToken(mark, mark)) + + # The steam is finished. + self.done = True + + def fetch_directive(self): + + # Set the current intendation to -1. + self.unwind_indent(-1) + + # Reset simple keys. + self.remove_possible_simple_key() + self.allow_simple_key = False + + # Scan and add DIRECTIVE. + self.tokens.append(self.scan_directive()) + + def fetch_document_start(self): + self.fetch_document_indicator(DocumentStartToken) + + def fetch_document_end(self): + self.fetch_document_indicator(DocumentEndToken) + + def fetch_document_indicator(self, TokenClass): + + # Set the current intendation to -1. + self.unwind_indent(-1) + + # Reset simple keys. Note that there could not be a block collection + # after '---'. + self.remove_possible_simple_key() + self.allow_simple_key = False + + # Add DOCUMENT-START or DOCUMENT-END. + start_mark = self.get_mark() + self.forward(3) + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_sequence_start(self): + self.fetch_flow_collection_start(FlowSequenceStartToken) + + def fetch_flow_mapping_start(self): + self.fetch_flow_collection_start(FlowMappingStartToken) + + def fetch_flow_collection_start(self, TokenClass): + + # '[' and '{' may start a simple key. + self.save_possible_simple_key() + + # Increase the flow level. + self.flow_level += 1 + + # Simple keys are allowed after '[' and '{'. + self.allow_simple_key = True + + # Add FLOW-SEQUENCE-START or FLOW-MAPPING-START. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_sequence_end(self): + self.fetch_flow_collection_end(FlowSequenceEndToken) + + def fetch_flow_mapping_end(self): + self.fetch_flow_collection_end(FlowMappingEndToken) + + def fetch_flow_collection_end(self, TokenClass): + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Decrease the flow level. + self.flow_level -= 1 + + # No simple keys after ']' or '}'. + self.allow_simple_key = False + + # Add FLOW-SEQUENCE-END or FLOW-MAPPING-END. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_entry(self): + + # Simple keys are allowed after ','. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add FLOW-ENTRY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(FlowEntryToken(start_mark, end_mark)) + + def fetch_block_entry(self): + + # Block context needs additional checks. + if not self.flow_level: + + # Are we allowed to start a new entry? + if not self.allow_simple_key: + raise ScannerError(None, None, + "sequence entries are not allowed here", + self.get_mark()) + + # We may need to add BLOCK-SEQUENCE-START. + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockSequenceStartToken(mark, mark)) + + # It's an error for the block entry to occur in the flow context, + # but we let the parser detect this. + else: + pass + + # Simple keys are allowed after '-'. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add BLOCK-ENTRY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(BlockEntryToken(start_mark, end_mark)) + + def fetch_key(self): + + # Block context needs additional checks. + if not self.flow_level: + + # Are we allowed to start a key (not nessesary a simple)? + if not self.allow_simple_key: + raise ScannerError(None, None, + "mapping keys are not allowed here", + self.get_mark()) + + # We may need to add BLOCK-MAPPING-START. + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockMappingStartToken(mark, mark)) + + # Simple keys are allowed after '?' in the block context. + self.allow_simple_key = not self.flow_level + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add KEY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(KeyToken(start_mark, end_mark)) + + def fetch_value(self): + + # Do we determine a simple key? + if self.flow_level in self.possible_simple_keys: + + # Add KEY. + key = self.possible_simple_keys[self.flow_level] + del self.possible_simple_keys[self.flow_level] + self.tokens.insert(key.token_number-self.tokens_taken, + KeyToken(key.mark, key.mark)) + + # If this key starts a new block mapping, we need to add + # BLOCK-MAPPING-START. + if not self.flow_level: + if self.add_indent(key.column): + self.tokens.insert(key.token_number-self.tokens_taken, + BlockMappingStartToken(key.mark, key.mark)) + + # There cannot be two simple keys one after another. + self.allow_simple_key = False + + # It must be a part of a complex key. + else: + + # Block context needs additional checks. + # (Do we really need them? They will be catched by the parser + # anyway.) + if not self.flow_level: + + # We are allowed to start a complex value if and only if + # we can start a simple key. + if not self.allow_simple_key: + raise ScannerError(None, None, + "mapping values are not allowed here", + self.get_mark()) + + # If this value starts a new block mapping, we need to add + # BLOCK-MAPPING-START. It will be detected as an error later by + # the parser. + if not self.flow_level: + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockMappingStartToken(mark, mark)) + + # Simple keys are allowed after ':' in the block context. + self.allow_simple_key = not self.flow_level + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add VALUE. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(ValueToken(start_mark, end_mark)) + + def fetch_alias(self): + + # ALIAS could be a simple key. + self.save_possible_simple_key() + + # No simple keys after ALIAS. + self.allow_simple_key = False + + # Scan and add ALIAS. + self.tokens.append(self.scan_anchor(AliasToken)) + + def fetch_anchor(self): + + # ANCHOR could start a simple key. + self.save_possible_simple_key() + + # No simple keys after ANCHOR. + self.allow_simple_key = False + + # Scan and add ANCHOR. + self.tokens.append(self.scan_anchor(AnchorToken)) + + def fetch_tag(self): + + # TAG could start a simple key. + self.save_possible_simple_key() + + # No simple keys after TAG. + self.allow_simple_key = False + + # Scan and add TAG. + self.tokens.append(self.scan_tag()) + + def fetch_literal(self): + self.fetch_block_scalar(style='|') + + def fetch_folded(self): + self.fetch_block_scalar(style='>') + + def fetch_block_scalar(self, style): + + # A simple key may follow a block scalar. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Scan and add SCALAR. + self.tokens.append(self.scan_block_scalar(style)) + + def fetch_single(self): + self.fetch_flow_scalar(style='\'') + + def fetch_double(self): + self.fetch_flow_scalar(style='"') + + def fetch_flow_scalar(self, style): + + # A flow scalar could be a simple key. + self.save_possible_simple_key() + + # No simple keys after flow scalars. + self.allow_simple_key = False + + # Scan and add SCALAR. + self.tokens.append(self.scan_flow_scalar(style)) + + def fetch_plain(self): + + # A plain scalar could be a simple key. + self.save_possible_simple_key() + + # No simple keys after plain scalars. But note that `scan_plain` will + # change this flag if the scan is finished at the beginning of the + # line. + self.allow_simple_key = False + + # Scan and add SCALAR. May change `allow_simple_key`. + self.tokens.append(self.scan_plain()) + + # Checkers. + + def check_directive(self): + + # DIRECTIVE: ^ '%' ... + # The '%' indicator is already checked. + if self.column == 0: + return True + + def check_document_start(self): + + # DOCUMENT-START: ^ '---' (' '|'\n') + if self.column == 0: + if self.prefix(3) == '---' \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return True + + def check_document_end(self): + + # DOCUMENT-END: ^ '...' (' '|'\n') + if self.column == 0: + if self.prefix(3) == '...' \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return True + + def check_block_entry(self): + + # BLOCK-ENTRY: '-' (' '|'\n') + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_key(self): + + # KEY(flow context): '?' + if self.flow_level: + return True + + # KEY(block context): '?' (' '|'\n') + else: + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_value(self): + + # VALUE(flow context): ':' + if self.flow_level: + return True + + # VALUE(block context): ':' (' '|'\n') + else: + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_plain(self): + + # A plain scalar may start with any non-space character except: + # '-', '?', ':', ',', '[', ']', '{', '}', + # '#', '&', '*', '!', '|', '>', '\'', '\"', + # '%', '@', '`'. + # + # It may also start with + # '-', '?', ':' + # if it is followed by a non-space character. + # + # Note that we limit the last rule to the block context (except the + # '-' character) because we want the flow context to be space + # independent. + ch = self.peek() + return ch not in '\0 \t\r\n\x85\u2028\u2029-?:,[]{}#&*!|>\'\"%@`' \ + or (self.peek(1) not in '\0 \t\r\n\x85\u2028\u2029' + and (ch == '-' or (not self.flow_level and ch in '?:'))) + + # Scanners. + + def scan_to_next_token(self): + # We ignore spaces, line breaks and comments. + # If we find a line break in the block context, we set the flag + # `allow_simple_key` on. + # The byte order mark is stripped if it's the first character in the + # stream. We do not yet support BOM inside the stream as the + # specification requires. Any such mark will be considered as a part + # of the document. + # + # TODO: We need to make tab handling rules more sane. A good rule is + # Tabs cannot precede tokens + # BLOCK-SEQUENCE-START, BLOCK-MAPPING-START, BLOCK-END, + # KEY(block), VALUE(block), BLOCK-ENTRY + # So the checking code is + # if : + # self.allow_simple_keys = False + # We also need to add the check for `allow_simple_keys == True` to + # `unwind_indent` before issuing BLOCK-END. + # Scanners for block, flow, and plain scalars need to be modified. + + if self.index == 0 and self.peek() == '\uFEFF': + self.forward() + found = False + while not found: + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + if self.scan_line_break(): + if not self.flow_level: + self.allow_simple_key = True + else: + found = True + + def scan_directive(self): + # See the specification for details. + start_mark = self.get_mark() + self.forward() + name = self.scan_directive_name(start_mark) + value = None + if name == 'YAML': + value = self.scan_yaml_directive_value(start_mark) + end_mark = self.get_mark() + elif name == 'TAG': + value = self.scan_tag_directive_value(start_mark) + end_mark = self.get_mark() + else: + end_mark = self.get_mark() + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + self.scan_directive_ignored_line(start_mark) + return DirectiveToken(name, value, start_mark, end_mark) + + def scan_directive_name(self, start_mark): + # See the specification for details. + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if not length: + raise ScannerError("while scanning a directive", start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + value = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + return value + + def scan_yaml_directive_value(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + major = self.scan_yaml_directive_number(start_mark) + if self.peek() != '.': + raise ScannerError("while scanning a directive", start_mark, + "expected a digit or '.', but found %r" % self.peek(), + self.get_mark()) + self.forward() + minor = self.scan_yaml_directive_number(start_mark) + if self.peek() not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected a digit or ' ', but found %r" % self.peek(), + self.get_mark()) + return (major, minor) + + def scan_yaml_directive_number(self, start_mark): + # See the specification for details. + ch = self.peek() + if not ('0' <= ch <= '9'): + raise ScannerError("while scanning a directive", start_mark, + "expected a digit, but found %r" % ch, self.get_mark()) + length = 0 + while '0' <= self.peek(length) <= '9': + length += 1 + value = int(self.prefix(length)) + self.forward(length) + return value + + def scan_tag_directive_value(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + handle = self.scan_tag_directive_handle(start_mark) + while self.peek() == ' ': + self.forward() + prefix = self.scan_tag_directive_prefix(start_mark) + return (handle, prefix) + + def scan_tag_directive_handle(self, start_mark): + # See the specification for details. + value = self.scan_tag_handle('directive', start_mark) + ch = self.peek() + if ch != ' ': + raise ScannerError("while scanning a directive", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + return value + + def scan_tag_directive_prefix(self, start_mark): + # See the specification for details. + value = self.scan_tag_uri('directive', start_mark) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + return value + + def scan_directive_ignored_line(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + ch = self.peek() + if ch not in '\0\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected a comment or a line break, but found %r" + % ch, self.get_mark()) + self.scan_line_break() + + def scan_anchor(self, TokenClass): + # The specification does not restrict characters for anchors and + # aliases. This may lead to problems, for instance, the document: + # [ *alias, value ] + # can be interpteted in two ways, as + # [ "value" ] + # and + # [ *alias , "value" ] + # Therefore we restrict aliases to numbers and ASCII letters. + start_mark = self.get_mark() + indicator = self.peek() + if indicator == '*': + name = 'alias' + else: + name = 'anchor' + self.forward() + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if not length: + raise ScannerError("while scanning an %s" % name, start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + value = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch not in '\0 \t\r\n\x85\u2028\u2029?:,]}%@`': + raise ScannerError("while scanning an %s" % name, start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + end_mark = self.get_mark() + return TokenClass(value, start_mark, end_mark) + + def scan_tag(self): + # See the specification for details. + start_mark = self.get_mark() + ch = self.peek(1) + if ch == '<': + handle = None + self.forward(2) + suffix = self.scan_tag_uri('tag', start_mark) + if self.peek() != '>': + raise ScannerError("while parsing a tag", start_mark, + "expected '>', but found %r" % self.peek(), + self.get_mark()) + self.forward() + elif ch in '\0 \t\r\n\x85\u2028\u2029': + handle = None + suffix = '!' + self.forward() + else: + length = 1 + use_handle = False + while ch not in '\0 \r\n\x85\u2028\u2029': + if ch == '!': + use_handle = True + break + length += 1 + ch = self.peek(length) + handle = '!' + if use_handle: + handle = self.scan_tag_handle('tag', start_mark) + else: + handle = '!' + self.forward() + suffix = self.scan_tag_uri('tag', start_mark) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a tag", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + value = (handle, suffix) + end_mark = self.get_mark() + return TagToken(value, start_mark, end_mark) + + def scan_block_scalar(self, style): + # See the specification for details. + + if style == '>': + folded = True + else: + folded = False + + chunks = [] + start_mark = self.get_mark() + + # Scan the header. + self.forward() + chomping, increment = self.scan_block_scalar_indicators(start_mark) + self.scan_block_scalar_ignored_line(start_mark) + + # Determine the indentation level and go to the first non-empty line. + min_indent = self.indent+1 + if min_indent < 1: + min_indent = 1 + if increment is None: + breaks, max_indent, end_mark = self.scan_block_scalar_indentation() + indent = max(min_indent, max_indent) + else: + indent = min_indent+increment-1 + breaks, end_mark = self.scan_block_scalar_breaks(indent) + line_break = '' + + # Scan the inner part of the block scalar. + while self.column == indent and self.peek() != '\0': + chunks.extend(breaks) + leading_non_space = self.peek() not in ' \t' + length = 0 + while self.peek(length) not in '\0\r\n\x85\u2028\u2029': + length += 1 + chunks.append(self.prefix(length)) + self.forward(length) + line_break = self.scan_line_break() + breaks, end_mark = self.scan_block_scalar_breaks(indent) + if self.column == indent and self.peek() != '\0': + + # Unfortunately, folding rules are ambiguous. + # + # This is the folding according to the specification: + + if folded and line_break == '\n' \ + and leading_non_space and self.peek() not in ' \t': + if not breaks: + chunks.append(' ') + else: + chunks.append(line_break) + + # This is Clark Evans's interpretation (also in the spec + # examples): + # + #if folded and line_break == '\n': + # if not breaks: + # if self.peek() not in ' \t': + # chunks.append(' ') + # else: + # chunks.append(line_break) + #else: + # chunks.append(line_break) + else: + break + + # Chomp the tail. + if chomping is not False: + chunks.append(line_break) + if chomping is True: + chunks.extend(breaks) + + # We are done. + return ScalarToken(''.join(chunks), False, start_mark, end_mark, + style) + + def scan_block_scalar_indicators(self, start_mark): + # See the specification for details. + chomping = None + increment = None + ch = self.peek() + if ch in '+-': + if ch == '+': + chomping = True + else: + chomping = False + self.forward() + ch = self.peek() + if ch in '0123456789': + increment = int(ch) + if increment == 0: + raise ScannerError("while scanning a block scalar", start_mark, + "expected indentation indicator in the range 1-9, but found 0", + self.get_mark()) + self.forward() + elif ch in '0123456789': + increment = int(ch) + if increment == 0: + raise ScannerError("while scanning a block scalar", start_mark, + "expected indentation indicator in the range 1-9, but found 0", + self.get_mark()) + self.forward() + ch = self.peek() + if ch in '+-': + if ch == '+': + chomping = True + else: + chomping = False + self.forward() + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a block scalar", start_mark, + "expected chomping or indentation indicators, but found %r" + % ch, self.get_mark()) + return chomping, increment + + def scan_block_scalar_ignored_line(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + ch = self.peek() + if ch not in '\0\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a block scalar", start_mark, + "expected a comment or a line break, but found %r" % ch, + self.get_mark()) + self.scan_line_break() + + def scan_block_scalar_indentation(self): + # See the specification for details. + chunks = [] + max_indent = 0 + end_mark = self.get_mark() + while self.peek() in ' \r\n\x85\u2028\u2029': + if self.peek() != ' ': + chunks.append(self.scan_line_break()) + end_mark = self.get_mark() + else: + self.forward() + if self.column > max_indent: + max_indent = self.column + return chunks, max_indent, end_mark + + def scan_block_scalar_breaks(self, indent): + # See the specification for details. + chunks = [] + end_mark = self.get_mark() + while self.column < indent and self.peek() == ' ': + self.forward() + while self.peek() in '\r\n\x85\u2028\u2029': + chunks.append(self.scan_line_break()) + end_mark = self.get_mark() + while self.column < indent and self.peek() == ' ': + self.forward() + return chunks, end_mark + + def scan_flow_scalar(self, style): + # See the specification for details. + # Note that we loose indentation rules for quoted scalars. Quoted + # scalars don't need to adhere indentation because " and ' clearly + # mark the beginning and the end of them. Therefore we are less + # restrictive then the specification requires. We only need to check + # that document separators are not included in scalars. + if style == '"': + double = True + else: + double = False + chunks = [] + start_mark = self.get_mark() + quote = self.peek() + self.forward() + chunks.extend(self.scan_flow_scalar_non_spaces(double, start_mark)) + while self.peek() != quote: + chunks.extend(self.scan_flow_scalar_spaces(double, start_mark)) + chunks.extend(self.scan_flow_scalar_non_spaces(double, start_mark)) + self.forward() + end_mark = self.get_mark() + return ScalarToken(''.join(chunks), False, start_mark, end_mark, + style) + + ESCAPE_REPLACEMENTS = { + '0': '\0', + 'a': '\x07', + 'b': '\x08', + 't': '\x09', + '\t': '\x09', + 'n': '\x0A', + 'v': '\x0B', + 'f': '\x0C', + 'r': '\x0D', + 'e': '\x1B', + ' ': '\x20', + '\"': '\"', + '\\': '\\', + 'N': '\x85', + '_': '\xA0', + 'L': '\u2028', + 'P': '\u2029', + } + + ESCAPE_CODES = { + 'x': 2, + 'u': 4, + 'U': 8, + } + + def scan_flow_scalar_non_spaces(self, double, start_mark): + # See the specification for details. + chunks = [] + while True: + length = 0 + while self.peek(length) not in '\'\"\\\0 \t\r\n\x85\u2028\u2029': + length += 1 + if length: + chunks.append(self.prefix(length)) + self.forward(length) + ch = self.peek() + if not double and ch == '\'' and self.peek(1) == '\'': + chunks.append('\'') + self.forward(2) + elif (double and ch == '\'') or (not double and ch in '\"\\'): + chunks.append(ch) + self.forward() + elif double and ch == '\\': + self.forward() + ch = self.peek() + if ch in self.ESCAPE_REPLACEMENTS: + chunks.append(self.ESCAPE_REPLACEMENTS[ch]) + self.forward() + elif ch in self.ESCAPE_CODES: + length = self.ESCAPE_CODES[ch] + self.forward() + for k in range(length): + if self.peek(k) not in '0123456789ABCDEFabcdef': + raise ScannerError("while scanning a double-quoted scalar", start_mark, + "expected escape sequence of %d hexdecimal numbers, but found %r" % + (length, self.peek(k)), self.get_mark()) + code = int(self.prefix(length), 16) + chunks.append(chr(code)) + self.forward(length) + elif ch in '\r\n\x85\u2028\u2029': + self.scan_line_break() + chunks.extend(self.scan_flow_scalar_breaks(double, start_mark)) + else: + raise ScannerError("while scanning a double-quoted scalar", start_mark, + "found unknown escape character %r" % ch, self.get_mark()) + else: + return chunks + + def scan_flow_scalar_spaces(self, double, start_mark): + # See the specification for details. + chunks = [] + length = 0 + while self.peek(length) in ' \t': + length += 1 + whitespaces = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch == '\0': + raise ScannerError("while scanning a quoted scalar", start_mark, + "found unexpected end of stream", self.get_mark()) + elif ch in '\r\n\x85\u2028\u2029': + line_break = self.scan_line_break() + breaks = self.scan_flow_scalar_breaks(double, start_mark) + if line_break != '\n': + chunks.append(line_break) + elif not breaks: + chunks.append(' ') + chunks.extend(breaks) + else: + chunks.append(whitespaces) + return chunks + + def scan_flow_scalar_breaks(self, double, start_mark): + # See the specification for details. + chunks = [] + while True: + # Instead of checking indentation, we check for document + # separators. + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a quoted scalar", start_mark, + "found unexpected document separator", self.get_mark()) + while self.peek() in ' \t': + self.forward() + if self.peek() in '\r\n\x85\u2028\u2029': + chunks.append(self.scan_line_break()) + else: + return chunks + + def scan_plain(self): + # See the specification for details. + # We add an additional restriction for the flow context: + # plain scalars in the flow context cannot contain ',', ':' and '?'. + # We also keep track of the `allow_simple_key` flag here. + # Indentation rules are loosed for the flow context. + chunks = [] + start_mark = self.get_mark() + end_mark = start_mark + indent = self.indent+1 + # We allow zero indentation for scalars, but then we need to check for + # document separators at the beginning of the line. + #if indent == 0: + # indent = 1 + spaces = [] + while True: + length = 0 + if self.peek() == '#': + break + while True: + ch = self.peek(length) + if ch in '\0 \t\r\n\x85\u2028\u2029' \ + or (not self.flow_level and ch == ':' and + self.peek(length+1) in '\0 \t\r\n\x85\u2028\u2029') \ + or (self.flow_level and ch in ',:?[]{}'): + break + length += 1 + # It's not clear what we should do with ':' in the flow context. + if (self.flow_level and ch == ':' + and self.peek(length+1) not in '\0 \t\r\n\x85\u2028\u2029,[]{}'): + self.forward(length) + raise ScannerError("while scanning a plain scalar", start_mark, + "found unexpected ':'", self.get_mark(), + "Please check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.") + if length == 0: + break + self.allow_simple_key = False + chunks.extend(spaces) + chunks.append(self.prefix(length)) + self.forward(length) + end_mark = self.get_mark() + spaces = self.scan_plain_spaces(indent, start_mark) + if not spaces or self.peek() == '#' \ + or (not self.flow_level and self.column < indent): + break + return ScalarToken(''.join(chunks), True, start_mark, end_mark) + + def scan_plain_spaces(self, indent, start_mark): + # See the specification for details. + # The specification is really confusing about tabs in plain scalars. + # We just forbid them completely. Do not use tabs in YAML! + chunks = [] + length = 0 + while self.peek(length) in ' ': + length += 1 + whitespaces = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch in '\r\n\x85\u2028\u2029': + line_break = self.scan_line_break() + self.allow_simple_key = True + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return + breaks = [] + while self.peek() in ' \r\n\x85\u2028\u2029': + if self.peek() == ' ': + self.forward() + else: + breaks.append(self.scan_line_break()) + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return + if line_break != '\n': + chunks.append(line_break) + elif not breaks: + chunks.append(' ') + chunks.extend(breaks) + elif whitespaces: + chunks.append(whitespaces) + return chunks + + def scan_tag_handle(self, name, start_mark): + # See the specification for details. + # For some strange reasons, the specification does not allow '_' in + # tag handles. I have allowed it anyway. + ch = self.peek() + if ch != '!': + raise ScannerError("while scanning a %s" % name, start_mark, + "expected '!', but found %r" % ch, self.get_mark()) + length = 1 + ch = self.peek(length) + if ch != ' ': + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if ch != '!': + self.forward(length) + raise ScannerError("while scanning a %s" % name, start_mark, + "expected '!', but found %r" % ch, self.get_mark()) + length += 1 + value = self.prefix(length) + self.forward(length) + return value + + def scan_tag_uri(self, name, start_mark): + # See the specification for details. + # Note: we do not check if URI is well-formed. + chunks = [] + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?:@&=+$,_.!~*\'()[]%': + if ch == '%': + chunks.append(self.prefix(length)) + self.forward(length) + length = 0 + chunks.append(self.scan_uri_escapes(name, start_mark)) + else: + length += 1 + ch = self.peek(length) + if length: + chunks.append(self.prefix(length)) + self.forward(length) + length = 0 + if not chunks: + raise ScannerError("while parsing a %s" % name, start_mark, + "expected URI, but found %r" % ch, self.get_mark()) + return ''.join(chunks) + + def scan_uri_escapes(self, name, start_mark): + # See the specification for details. + codes = [] + mark = self.get_mark() + while self.peek() == '%': + self.forward() + for k in range(2): + if self.peek(k) not in '0123456789ABCDEFabcdef': + raise ScannerError("while scanning a %s" % name, start_mark, + "expected URI escape sequence of 2 hexdecimal numbers, but found %r" + % self.peek(k), self.get_mark()) + codes.append(int(self.prefix(2), 16)) + self.forward(2) + try: + value = bytes(codes).decode('utf-8') + except UnicodeDecodeError as exc: + raise ScannerError("while scanning a %s" % name, start_mark, str(exc), mark) + return value + + def scan_line_break(self): + # Transforms: + # '\r\n' : '\n' + # '\r' : '\n' + # '\n' : '\n' + # '\x85' : '\n' + # '\u2028' : '\u2028' + # '\u2029 : '\u2029' + # default : '' + ch = self.peek() + if ch in '\r\n\x85': + if self.prefix(2) == '\r\n': + self.forward(2) + else: + self.forward() + return '\n' + elif ch in '\u2028\u2029': + self.forward() + return ch + return '' + +#try: +# import psyco +# psyco.bind(Scanner) +#except ImportError: +# pass + diff --git a/lib/spack/external/yaml/lib3/yaml/serializer.py b/lib/spack/external/yaml/lib3/yaml/serializer.py new file mode 100644 index 00000000000..fe911e67ae7 --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/serializer.py @@ -0,0 +1,111 @@ + +__all__ = ['Serializer', 'SerializerError'] + +from .error import YAMLError +from .events import * +from .nodes import * + +class SerializerError(YAMLError): + pass + +class Serializer: + + ANCHOR_TEMPLATE = 'id%03d' + + def __init__(self, encoding=None, + explicit_start=None, explicit_end=None, version=None, tags=None): + self.use_encoding = encoding + self.use_explicit_start = explicit_start + self.use_explicit_end = explicit_end + self.use_version = version + self.use_tags = tags + self.serialized_nodes = {} + self.anchors = {} + self.last_anchor_id = 0 + self.closed = None + + def open(self): + if self.closed is None: + self.emit(StreamStartEvent(encoding=self.use_encoding)) + self.closed = False + elif self.closed: + raise SerializerError("serializer is closed") + else: + raise SerializerError("serializer is already opened") + + def close(self): + if self.closed is None: + raise SerializerError("serializer is not opened") + elif not self.closed: + self.emit(StreamEndEvent()) + self.closed = True + + #def __del__(self): + # self.close() + + def serialize(self, node): + if self.closed is None: + raise SerializerError("serializer is not opened") + elif self.closed: + raise SerializerError("serializer is closed") + self.emit(DocumentStartEvent(explicit=self.use_explicit_start, + version=self.use_version, tags=self.use_tags)) + self.anchor_node(node) + self.serialize_node(node, None, None) + self.emit(DocumentEndEvent(explicit=self.use_explicit_end)) + self.serialized_nodes = {} + self.anchors = {} + self.last_anchor_id = 0 + + def anchor_node(self, node): + if node in self.anchors: + if self.anchors[node] is None: + self.anchors[node] = self.generate_anchor(node) + else: + self.anchors[node] = None + if isinstance(node, SequenceNode): + for item in node.value: + self.anchor_node(item) + elif isinstance(node, MappingNode): + for key, value in node.value: + self.anchor_node(key) + self.anchor_node(value) + + def generate_anchor(self, node): + self.last_anchor_id += 1 + return self.ANCHOR_TEMPLATE % self.last_anchor_id + + def serialize_node(self, node, parent, index): + alias = self.anchors[node] + if node in self.serialized_nodes: + self.emit(AliasEvent(alias)) + else: + self.serialized_nodes[node] = True + self.descend_resolver(parent, index) + if isinstance(node, ScalarNode): + detected_tag = self.resolve(ScalarNode, node.value, (True, False)) + default_tag = self.resolve(ScalarNode, node.value, (False, True)) + implicit = (node.tag == detected_tag), (node.tag == default_tag) + self.emit(ScalarEvent(alias, node.tag, implicit, node.value, + style=node.style)) + elif isinstance(node, SequenceNode): + implicit = (node.tag + == self.resolve(SequenceNode, node.value, True)) + self.emit(SequenceStartEvent(alias, node.tag, implicit, + flow_style=node.flow_style)) + index = 0 + for item in node.value: + self.serialize_node(item, node, index) + index += 1 + self.emit(SequenceEndEvent()) + elif isinstance(node, MappingNode): + implicit = (node.tag + == self.resolve(MappingNode, node.value, True)) + self.emit(MappingStartEvent(alias, node.tag, implicit, + flow_style=node.flow_style)) + for key, value in node.value: + self.serialize_node(key, node, None) + self.serialize_node(value, node, key) + self.emit(MappingEndEvent()) + self.ascend_resolver() + diff --git a/lib/spack/external/yaml/lib3/yaml/tokens.py b/lib/spack/external/yaml/lib3/yaml/tokens.py new file mode 100644 index 00000000000..4d0b48a394a --- /dev/null +++ b/lib/spack/external/yaml/lib3/yaml/tokens.py @@ -0,0 +1,104 @@ + +class Token(object): + def __init__(self, start_mark, end_mark): + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + attributes = [key for key in self.__dict__ + if not key.endswith('_mark')] + attributes.sort() + arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) + for key in attributes]) + return '%s(%s)' % (self.__class__.__name__, arguments) + +#class BOMToken(Token): +# id = '' + +class DirectiveToken(Token): + id = '' + def __init__(self, name, value, start_mark, end_mark): + self.name = name + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class DocumentStartToken(Token): + id = '' + +class DocumentEndToken(Token): + id = '' + +class StreamStartToken(Token): + id = '' + def __init__(self, start_mark=None, end_mark=None, + encoding=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.encoding = encoding + +class StreamEndToken(Token): + id = '' + +class BlockSequenceStartToken(Token): + id = '' + +class BlockMappingStartToken(Token): + id = '' + +class BlockEndToken(Token): + id = '' + +class FlowSequenceStartToken(Token): + id = '[' + +class FlowMappingStartToken(Token): + id = '{' + +class FlowSequenceEndToken(Token): + id = ']' + +class FlowMappingEndToken(Token): + id = '}' + +class KeyToken(Token): + id = '?' + +class ValueToken(Token): + id = ':' + +class BlockEntryToken(Token): + id = '-' + +class FlowEntryToken(Token): + id = ',' + +class AliasToken(Token): + id = '' + def __init__(self, value, start_mark, end_mark): + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class AnchorToken(Token): + id = '' + def __init__(self, value, start_mark, end_mark): + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class TagToken(Token): + id = '' + def __init__(self, value, start_mark, end_mark): + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + +class ScalarToken(Token): + id = '' + def __init__(self, value, plain, start_mark, end_mark, style=None): + self.value = value + self.plain = plain + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + diff --git a/lib/spack/spack/test/python_version.py b/lib/spack/spack/test/python_version.py index 5af55bdc5fd..084eed7e337 100644 --- a/lib/spack/spack/test/python_version.py +++ b/lib/spack/spack/test/python_version.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -22,26 +22,52 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -""" -This test ensures that all Spack files are Python version 2.6 or less. +"""Check that Spack complies with minimum supported python versions. -Spack was originally 2.7, but enough systems in 2014 are still using -2.6 on their frontend nodes that we need 2.6 to get adopted. +We ensure that all Spack files work with Python2 >= 2.6 and Python3 >= 3.0. + +We'd like to drop 2.6 support at some point, but there are still many HPC +systems that ship with RHEL6/CentOS 6, which have Python 2.6 as the +default version. Once those go away, we can likely drop 2.6 and increase +the minimum supported Python 3 version, as well. """ import os +import sys import re import unittest import llnl.util.tty as tty -import pyqver2 import spack -spack_max_version = (2, 6) +# +# This test uses pyqver, by Greg Hewgill, which is a dual-source module. +# That means we need to do different checks depending on whether we're +# running Python 2 or Python 3. +# +if sys.version_info[0] < 3: + import pyqver2 as pyqver + spack_min_supported = (2, 6) + + # Exclude Python 3 versions of dual-source modules when using Python 2 + exclude_paths = [ + os.path.join(spack.lib_path, 'external', 'yaml', 'lib3'), + os.path.join(spack.lib_path, 'external', 'pyqver3.py')] + +else: + import pyqver3 as pyqver + spack_min_supported = (3, 0) + + # Exclude Python 2 versions of dual-source modules when using Python 3 + exclude_paths = [ + os.path.join(spack.lib_path, 'external', 'yaml', 'lib'), + os.path.join(spack.lib_path, 'external', 'pyqver2.py')] class PythonVersionTest(unittest.TestCase): - def pyfiles(self, *search_paths): + def pyfiles(self, search_paths, exclude=()): + """List python search files in a set of search paths, excluding + any paths in the exclude list""" # first file is the spack script. yield spack.spack_file @@ -49,53 +75,71 @@ def pyfiles(self, *search_paths): for path in search_paths: for root, dirnames, filenames in os.walk(path): for filename in filenames: + realpath = os.path.realpath(os.path.join(root, filename)) + if any(realpath.startswith(p) for p in exclude): + continue + if re.match(r'^[^.#].*\.py$', filename): yield os.path.join(root, filename) - def package_py_files(self): - for name in spack.repo.all_package_names(): - yield spack.repo.filename_for_package_name(name) - - def check_python_versions(self, *files): - # dict version -> filename -> reasons + def check_python_versions(self, files): + # This is a dict dict mapping: + # version -> filename -> reasons + # + # Reasons are tuples of (lineno, string), where the string is the + # cause for a version incompatibility. all_issues = {} - for fn in files: - with open(fn) as pyfile: - versions = pyqver2.get_versions(pyfile.read()) - for ver, reasons in versions.items(): - if ver > spack_max_version: - if ver not in all_issues: - all_issues[ver] = {} - all_issues[ver][fn] = reasons + # Parse files and run pyqver on each file. + for path in files: + with open(path) as pyfile: + full_text = pyfile.read() + versions = pyqver.get_versions(full_text, path) + for ver, reasons in versions.items(): + if ver <= spack_min_supported: + continue + + # Record issues. Mark exceptions with '# nopyqver' comment + for lineno, cause in reasons: + lines = full_text.split('\n') + if not re.search(r'#\s*nopyqver\s*$', lines[lineno - 1]): + all_issues.setdefault(ver, {})[path] = reasons + + # Print a message if there are are issues if all_issues: - tty.error("Spack must run on Python version %d.%d" - % spack_max_version) + tty.msg("Spack must remain compatible with Python version %d.%d" + % spack_min_supported) + # Print out a table showing which files/linenos require which + # python version, and a string describing why. for v in sorted(all_issues.keys(), reverse=True): - msgs = [] - for fn in sorted(all_issues[v].keys()): - short_fn = fn - if fn.startswith(spack.prefix): - short_fn = fn[len(spack.prefix):] + messages = [] + for path in sorted(all_issues[v].keys()): + short_path = path + if path.startswith(spack.prefix): + short_path = path[len(spack.prefix):] - reasons = [r for r in set(all_issues[v][fn]) if r] - for r in reasons: - msgs.append(("%s:%s" % ('spack' + short_fn, r[0]), r[1])) + reasons = [r for r in set(all_issues[v][path]) if r] + for lineno, cause in reasons: + file_line = "%s:%s" % (short_path.lstrip('/'), lineno) + messages.append((file_line, cause)) - tty.error("These files require version %d.%d:" % v) - maxlen = max(len(f) for f, prob in msgs) + print() + tty.msg("These files require version %d.%d:" % v) + maxlen = max(len(f) for f, prob in messages) fmt = "%%-%ds%%s" % (maxlen + 3) - print fmt % ('File', 'Reason') - print fmt % ('-' * (maxlen), '-' * 20) - for msg in msgs: - print fmt % msg + print(fmt % ('File', 'Reason')) + print(fmt % ('-' * (maxlen), '-' * 20)) + for msg in messages: + print(fmt % msg) + # Fail this test if there were issues. self.assertTrue(len(all_issues) == 0) def test_core_module_compatibility(self): - self.check_python_versions(*self.pyfiles(spack.lib_path)) + self.check_python_versions( + self.pyfiles([spack.lib_path], exclude=exclude_paths)) def test_package_module_compatibility(self): - self.check_python_versions(*self.pyfiles(spack.packages_path)) + self.check_python_versions(self.pyfiles([spack.packages_path])) From 1d1a14dbe9cfc512cedff7430b694df87b2cd5ee Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 7 Mar 2017 14:25:48 -0800 Subject: [PATCH 0514/2394] Convert Python 2 idioms to Python 2/3-compatible ones. - convert print, StringIO, except as, octals, izip - convert print statement to print function - convert StringIO to six.StringIO - remove usage of csv reader in Spec, in favor of simple regex - csv reader only does byte strings - convert 0755 octal literals to 0o755 - convert `except Foo, e` to `except Foo as e` - fix a few places `str` is used. - may need to switch everything to str later. - convert iteritems usages to use six.iteritems - fix urllib and HTMLParser - port metaclasses to use six.with_metaclass - More octal literal conversions for Python 2/3 - Fix a new octal literal. - Convert `basestring` to `six.string_types` - Convert xrange -> range - Fix various issues with encoding, iteritems, and Python3 semantics. - Convert contextlib.nested to explicitly nexted context managers. - Convert use of filter() to list comprehensions. - Replace reduce() with list comprehensions. - Clean up composite: replace inspect.ismethod() with callable() - Python 3 doesn't have "method" objects; inspect.ismethod returns False. - Need to use callable in Composite to make it work. - Update colify to use future division. - Fix zip() usages that need to be lists. - Python3: Use line-buffered logging instead of unbuffered. - Python3 raises an error with unbuffered I/O - See https://bugs.python.org/issue17404 --- bin/spack | 6 +- lib/spack/llnl/util/filesystem.py | 4 +- lib/spack/llnl/util/lang.py | 5 +- lib/spack/llnl/util/tty/__init__.py | 8 +-- lib/spack/llnl/util/tty/colify.py | 20 ++++--- lib/spack/llnl/util/tty/log.py | 8 ++- lib/spack/spack/__init__.py | 2 +- lib/spack/spack/architecture.py | 2 +- lib/spack/spack/build_environment.py | 8 ++- lib/spack/spack/build_systems/autotools.py | 2 +- lib/spack/spack/cmd/__init__.py | 6 +- lib/spack/spack/cmd/arch.py | 6 +- lib/spack/spack/cmd/common/arguments.py | 2 +- lib/spack/spack/cmd/compiler.py | 35 ++++++------ lib/spack/spack/cmd/configure.py | 1 - lib/spack/spack/cmd/dependents.py | 2 +- lib/spack/spack/cmd/env.py | 5 +- lib/spack/spack/cmd/flake8.py | 22 ++++---- lib/spack/spack/cmd/graph.py | 5 +- lib/spack/spack/cmd/info.py | 55 ++++++++++--------- lib/spack/spack/cmd/list.py | 30 +++++----- lib/spack/spack/cmd/location.py | 19 ++++--- lib/spack/spack/cmd/md5.py | 2 +- lib/spack/spack/cmd/mirror.py | 4 +- lib/spack/spack/cmd/pkg.py | 8 ++- lib/spack/spack/cmd/repo.py | 4 +- lib/spack/spack/cmd/spec.py | 23 ++++---- lib/spack/spack/cmd/test.py | 6 +- lib/spack/spack/cmd/versions.py | 6 +- lib/spack/spack/compiler.py | 4 +- lib/spack/spack/compilers/__init__.py | 4 +- lib/spack/spack/concretize.py | 6 +- lib/spack/spack/config.py | 14 +++-- lib/spack/spack/database.py | 6 +- lib/spack/spack/directives.py | 3 +- lib/spack/spack/directory_layout.py | 3 +- lib/spack/spack/environment.py | 2 +- lib/spack/spack/error.py | 3 + lib/spack/spack/fetch_strategy.py | 24 ++++---- lib/spack/spack/graph.py | 3 +- lib/spack/spack/hooks/case_consistency.py | 1 + .../spack/hooks/module_file_generation.py | 5 +- lib/spack/spack/modules.py | 22 ++++---- lib/spack/spack/operating_systems/cnl.py | 2 +- lib/spack/spack/package.py | 24 +++++--- lib/spack/spack/package_prefs.py | 8 ++- lib/spack/spack/package_test.py | 18 +++--- lib/spack/spack/parse.py | 6 +- lib/spack/spack/provider_index.py | 7 ++- lib/spack/spack/repository.py | 3 +- lib/spack/spack/spec.py | 40 +++++++------- lib/spack/spack/stage.py | 17 +++--- lib/spack/spack/test/cmd/install.py | 6 +- lib/spack/spack/test/compilers.py | 9 +-- lib/spack/spack/test/conftest.py | 13 ++--- lib/spack/spack/test/graph.py | 2 +- lib/spack/spack/test/lock.py | 2 +- lib/spack/spack/test/make_executable.py | 2 +- lib/spack/spack/test/modules.py | 6 +- lib/spack/spack/test/multimethod.py | 2 +- lib/spack/spack/test/pattern.py | 1 + lib/spack/spack/test/provider_index.py | 7 ++- lib/spack/spack/test/python_version.py | 2 + lib/spack/spack/test/spec_dag.py | 12 ++-- lib/spack/spack/url.py | 6 +- lib/spack/spack/util/executable.py | 4 +- lib/spack/spack/util/multiproc.py | 3 +- lib/spack/spack/util/naming.py | 2 +- lib/spack/spack/util/pattern.py | 45 +++++---------- lib/spack/spack/util/prefix.py | 12 ++-- lib/spack/spack/util/spack_json.py | 7 ++- lib/spack/spack/util/spack_yaml.py | 2 +- lib/spack/spack/util/web.py | 24 +++++--- lib/spack/spack/version.py | 19 +++++-- 74 files changed, 396 insertions(+), 323 deletions(-) diff --git a/bin/spack b/bin/spack index 550b999eb99..f33d219b8bb 100755 --- a/bin/spack +++ b/bin/spack @@ -24,6 +24,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 ############################################################################## +from __future__ import print_function + import sys if (sys.version_info[0] > 2) or (sys.version_info[:2] < (2, 6)): v_info = sys.version_info[:3] @@ -74,8 +76,8 @@ for pyc_file in orphaned_pyc_files: try: os.remove(pyc_file) except OSError as e: - print ("WARNING: Spack may fail mysteriously. " - "Couldn't remove orphaned .pyc file: %s" % pyc_file) + print("WARNING: Spack may fail mysteriously. " + "Couldn't remove orphaned .pyc file: %s" % pyc_file) # If there is no working directory, use the spack prefix. try: diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index f456a5edf14..8922010e703 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -175,9 +175,9 @@ def change_sed_delimiter(old_delim, new_delim, *filenames): def set_install_permissions(path): """Set appropriate permissions on the installed file.""" if os.path.isdir(path): - os.chmod(path, 0755) + os.chmod(path, 0o755) else: - os.chmod(path, 0644) + os.chmod(path, 0o644) def copy_mode(src, dest): diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index d9fef42e53a..ad620630616 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -27,6 +27,7 @@ import functools import collections import inspect +from six import string_types # Ignore emacs backups when listing modules ignore_modules = [r'^\.#', '~$'] @@ -80,7 +81,7 @@ def index_by(objects, *funcs): return objects f = funcs[0] - if isinstance(f, basestring): + if isinstance(f, str): f = lambda x: getattr(x, funcs[0]) elif isinstance(f, tuple): f = lambda x: tuple(getattr(x, p) for p in funcs[0]) @@ -326,7 +327,7 @@ def match_predicate(*args): """ def match(string): for arg in args: - if isinstance(arg, basestring): + if isinstance(arg, string_types): if re.search(arg, string): return True elif isinstance(arg, list) or isinstance(arg, tuple): diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index f73d96a4e4e..f78d8890371 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -29,7 +29,7 @@ import termios import struct import traceback -from StringIO import StringIO +from six import StringIO from llnl.util.tty.color import * @@ -93,7 +93,7 @@ def msg(message, *args, **kwargs): else: cwrite("@*b{%s==>} %s" % (st_text, cescape(message))) for arg in args: - print indent + str(arg) + print(indent + str(arg)) def info(message, *args, **kwargs): @@ -201,7 +201,7 @@ def get_yes_or_no(prompt, **kwargs): if not ans: result = default_value if result is None: - print "Please enter yes or no." + print("Please enter yes or no.") else: if ans == 'y' or ans == 'yes': result = True @@ -239,7 +239,7 @@ def hline(label=None, **kwargs): out.write(label) out.write(suffix) - print out.getvalue() + print(out.getvalue()) def terminal_size(): diff --git a/lib/spack/llnl/util/tty/colify.py b/lib/spack/llnl/util/tty/colify.py index 67acdfa5179..83de530ef1f 100644 --- a/lib/spack/llnl/util/tty/colify.py +++ b/lib/spack/llnl/util/tty/colify.py @@ -25,9 +25,11 @@ """ Routines for printing columnar output. See colify() for more information. """ +from __future__ import division + import os import sys -from StringIO import StringIO +from six import StringIO from llnl.util.tty import terminal_size from llnl.util.tty.color import clen, cextra @@ -64,18 +66,18 @@ def config_variable_cols(elts, console_width, padding, cols=0): # Get a bound on the most columns we could possibly have. # 'clen' ignores length of ansi color sequences. lengths = [clen(e) for e in elts] - max_cols = max(1, console_width / (min(lengths) + padding)) + max_cols = max(1, console_width // (min(lengths) + padding)) max_cols = min(len(elts), max_cols) # Range of column counts to try. If forced, use the supplied value. - col_range = [cols] if cols else xrange(1, max_cols + 1) + col_range = [cols] if cols else range(1, max_cols + 1) # Determine the most columns possible for the console width. configs = [ColumnConfig(c) for c in col_range] for i, length in enumerate(lengths): for conf in configs: if conf.valid: - col = i / ((len(elts) + conf.cols - 1) / conf.cols) + col = i // ((len(elts) + conf.cols - 1) // conf.cols) p = padding if col < (conf.cols - 1) else 0 if conf.widths[col] < (length + p): @@ -107,7 +109,7 @@ def config_uniform_cols(elts, console_width, padding, cols=0): # 'clen' ignores length of ansi color sequences. max_len = max(clen(e) for e in elts) + padding if cols == 0: - cols = max(1, console_width / max_len) + cols = max(1, console_width // max_len) cols = min(len(elts), cols) config = ColumnConfig(cols) @@ -193,12 +195,12 @@ def colify(elts, **options): raise ValueError("method must be one of: " + allowed_methods) cols = config.cols - rows = (len(elts) + cols - 1) / cols + rows = (len(elts) + cols - 1) // cols rows_last_col = len(elts) % rows - for row in xrange(rows): + for row in range(rows): output.write(" " * indent) - for col in xrange(cols): + for col in range(cols): elt = col * rows + row width = config.widths[col] + cextra(elts[elt]) if col < cols - 1: @@ -233,7 +235,7 @@ def colify_table(table, **options): columns = len(table[0]) def transpose(): - for i in xrange(columns): + for i in range(columns): for row in table: yield row[i] diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index b1d45214ab2..50e07c0b97c 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -165,8 +165,12 @@ def __exit__(self, exc_type, exc_val, exc_tb): self.p.join(60.0) # 1 minute to join the child def _spawn_writing_daemon(self, read, input_stream): - # Parent: read from child, skip the with block. - read_file = os.fdopen(read, 'r', 0) + # This is the Parent: read from child, skip the with block. + + # Use line buffering (3rd param = 1) since Python 3 has a bug + # that prevents unbuffered text I/O. + read_file = os.fdopen(read, 'r', 1) + with open(self.filename, 'w') as log_file: with keyboard_input(input_stream): while True: diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index b0f2faed766..b522804d8db 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -96,7 +96,7 @@ try: repo = spack.repository.RepoPath() sys.meta_path.append(repo) -except spack.error.SpackError, e: +except spack.error.SpackError as e: tty.die('while initializing Spack RepoPath:', e.message) diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py index e44e0dc109f..bace3c49f69 100644 --- a/lib/spack/spack/architecture.py +++ b/lib/spack/spack/architecture.py @@ -287,7 +287,7 @@ def find_compilers(self, *paths): # ensure all the version calls we made are cached in the parent # process, as well. This speeds up Spack a lot. - clist = reduce(lambda x, y: x + y, compiler_lists) + clist = [comp for cl in compiler_lists for comp in cl] return clist def find_compiler(self, cmp_cls, *path): diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 3e6dc12b35a..a20a7b4db8b 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -57,6 +57,7 @@ import shutil import sys import traceback +from six import iteritems import llnl.util.lang as lang import llnl.util.tty as tty @@ -310,7 +311,7 @@ def set_build_environment_variables(pkg, env, dirty=False): environment = compiler.environment if 'set' in environment: env_to_set = environment['set'] - for key, value in env_to_set.iteritems(): + for key, value in iteritems(env_to_set): env.set('SPACK_ENV_SET_%s' % key, value) env.set('%s' % key, value) # Let shell know which variables to set @@ -322,8 +323,9 @@ def set_build_environment_variables(pkg, env, dirty=False): env.set('SPACK_COMPILER_EXTRA_RPATHS', extra_rpaths) # Add bin directories from dependencies to the PATH for the build. - bin_dirs = reversed(filter(os.path.isdir, [ - '%s/bin' % d.prefix for d in pkg.spec.dependencies(deptype='build')])) + bin_dirs = reversed( + [d.prefix.bin for d in pkg.spec.dependencies(deptype='build') + if os.path.isdir(d.prefix.bin)]) bin_dirs = filter_system_bin_paths(bin_dirs) for item in bin_dirs: env.prepend_path('PATH', item) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index 76dfd0d16fc..ffd00e7f697 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -146,7 +146,7 @@ def _do_patch_config_guess(self): if config_guess is not None: try: check_call([config_guess], stdout=PIPE, stderr=PIPE) - mod = stat(my_config_guess).st_mode & 0777 | S_IWUSR + mod = stat(my_config_guess).st_mode & 0o777 | S_IWUSR os.chmod(my_config_guess, mod) shutil.copyfile(config_guess, my_config_guess) return True diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 3a425102450..622ef4d96c6 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -22,6 +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 ############################################################################## +from __future__ import print_function + import os import re import sys @@ -186,7 +188,7 @@ def display_specs(specs, **kwargs): # Traverse the index and print out each package for i, (architecture, compiler) in enumerate(sorted(index)): if i > 0: - print + print() header = "%s{%s} / %s{%s}" % (spack.spec.architecture_color, architecture, spack.spec.compiler_color, @@ -205,7 +207,7 @@ def display_specs(specs, **kwargs): for abbrv, spec in zip(abbreviated, specs): prefix = gray_hash(spec, hlen) if hashes else '' - print prefix + (format % (abbrv, spec.prefix)) + print(prefix + (format % (abbrv, spec.prefix))) elif mode == 'deps': for spec in specs: diff --git a/lib/spack/spack/cmd/arch.py b/lib/spack/spack/cmd/arch.py index 5b9daf9dea0..1079e7f215f 100644 --- a/lib/spack/spack/cmd/arch.py +++ b/lib/spack/spack/cmd/arch.py @@ -22,6 +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 ############################################################################## +from __future__ import print_function + import spack.architecture as architecture description = "print architecture information about this machine" @@ -36,6 +38,6 @@ def setup_parser(subparser): def arch(parser, args): if args.platform: - print architecture.platform() + print(architecture.platform()) else: - print architecture.sys_type() + print(architecture.sys_type()) diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index a8bdcf692f9..3115501439f 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -81,7 +81,7 @@ def _specs(self, **kwargs): _arguments['module_type'] = Args( '-m', '--module-type', choices=spack.modules.module_types.keys(), - default=spack.modules.module_types.keys()[0], + default=list(spack.modules.module_types.keys())[0], help='type of module files [default: %(default)s]') _arguments['yes_to_all'] = Args( diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index 22f3b3f26a6..6067d44c5ef 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -22,8 +22,11 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## +from __future__ import print_function + import argparse import sys +from six import iteritems import llnl.util.tty as tty import spack.compilers @@ -142,36 +145,36 @@ def compiler_info(args): tty.error("No compilers match spec %s" % cspec) else: for c in compilers: - print str(c.spec) + ":" - print "\tpaths:" + print(str(c.spec) + ":") + print("\tpaths:") for cpath in ['cc', 'cxx', 'f77', 'fc']: - print "\t\t%s = %s" % (cpath, getattr(c, cpath, None)) + print("\t\t%s = %s" % (cpath, getattr(c, cpath, None))) if c.flags: - print "\tflags:" - for flag, flag_value in c.flags.iteritems(): - print "\t\t%s = %s" % (flag, flag_value) + print("\tflags:") + for flag, flag_value in iteritems(c.flags): + print("\t\t%s = %s" % (flag, flag_value)) if len(c.environment) != 0: if len(c.environment['set']) != 0: - print "\tenvironment:" - print "\t set:" - for key, value in c.environment['set'].iteritems(): - print "\t %s = %s" % (key, value) + print("\tenvironment:") + print("\t set:") + for key, value in iteritems(c.environment['set']): + print("\t %s = %s" % (key, value)) if c.extra_rpaths: - print "\tExtra rpaths:" + print("\tExtra rpaths:") for extra_rpath in c.extra_rpaths: - print "\t\t%s" % extra_rpath - print "\tmodules = %s" % c.modules - print "\toperating system = %s" % c.operating_system + print("\t\t%s" % extra_rpath) + print("\tmodules = %s" % c.modules) + print("\toperating system = %s" % c.operating_system) def compiler_list(args): tty.msg("Available compilers") index = index_by(spack.compilers.all_compilers(scope=args.scope), lambda c: (c.spec.name, c.operating_system, c.target)) - ordered_sections = sorted(index.items(), key=lambda (k, v): k) + ordered_sections = sorted(index.items(), key=lambda item: item[0]) for i, (key, compilers) in enumerate(ordered_sections): if i >= 1: - print + print() name, os, target = key os_str = os if target: diff --git a/lib/spack/spack/cmd/configure.py b/lib/spack/spack/cmd/configure.py index b6669f33a23..037705f4800 100644 --- a/lib/spack/spack/cmd/configure.py +++ b/lib/spack/spack/cmd/configure.py @@ -22,7 +22,6 @@ # 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 argparse import llnl.util.tty as tty diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index 42181b55024..c752ffb9432 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -50,4 +50,4 @@ def dependents(parser, args): if deps: spack.cmd.display_specs(deps) else: - print "No dependents" + print("No dependents") diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index 49fc48700c8..ed18940ac09 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -22,8 +22,11 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## +from __future__ import print_function + import os import argparse + import llnl.util.tty as tty import spack.cmd import spack.build_environment as build_env @@ -64,7 +67,7 @@ def env(parser, args): if not cmd: # If no command act like the "env" command and print out env vars. for key, val in os.environ.items(): - print "%s=%s" % (key, val) + print("%s=%s" % (key, val)) else: # Otherwise execute the command with the new environment diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index d5ed9adf18b..47f531fe843 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -22,6 +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 ############################################################################## +from __future__ import print_function + import re import os import sys @@ -175,12 +177,12 @@ def prefix_relative(path): file_list = changed_files() shutil.copy('.flake8', os.path.join(temp, '.flake8')) - print '=======================================================' - print 'flake8: running flake8 code checks on spack.' - print - print 'Modified files:' + print('=======================================================') + print('flake8: running flake8 code checks on spack.') + print() + print('Modified files:') for filename in file_list: - print " %s" % filename.strip() + print(" %s" % filename.strip()) print('=======================================================') # filter files into a temporary directory with exemptions added. @@ -196,7 +198,7 @@ def prefix_relative(path): if args.root_relative: # print results relative to repo root. - print output + print(output) else: # print results relative to current working directory def cwd_relative(path): @@ -204,16 +206,16 @@ def cwd_relative(path): os.path.join(spack.prefix, path.group(1)), os.getcwd()) for line in output.split('\n'): - print re.sub(r'^(.*): \[', cwd_relative, line) + print(re.sub(r'^(.*): \[', cwd_relative, line)) if flake8.returncode != 0: - print "Flake8 found errors." + print("Flake8 found errors.") sys.exit(1) else: - print "Flake8 checks were clean." + print("Flake8 checks were clean.") finally: if args.keep_temp: - print "temporary files are in ", temp + print("temporary files are in ", temp) else: shutil.rmtree(temp, ignore_errors=True) diff --git a/lib/spack/spack/cmd/graph.py b/lib/spack/spack/cmd/graph.py index 414b6d78ec4..ee401d8fb7a 100644 --- a/lib/spack/spack/cmd/graph.py +++ b/lib/spack/spack/cmd/graph.py @@ -22,8 +22,9 @@ # 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 argparse +from __future__ import print_function +import argparse import llnl.util.tty as tty import spack @@ -96,5 +97,5 @@ def graph(parser, args): elif specs: # ascii is default: user doesn't need to provide it explicitly graph_ascii(specs[0], debug=spack.debug, deptype=deptype) for spec in specs[1:]: - print # extra line bt/w independent graphs + print() # extra line bt/w independent graphs graph_ascii(spec, debug=spack.debug) diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 1dd0ee4e789..799471ffcce 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -22,7 +22,10 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## +from __future__ import print_function + import textwrap + from llnl.util.tty.colify import * import spack import spack.fetch_strategy as fs @@ -50,12 +53,12 @@ def print_text_info(pkg): """Print out a plain text description of a package.""" header = "{0}: ".format(pkg.build_system_class) - print header, pkg.name + print(header, pkg.name) whitespaces = ''.join([' '] * (len(header) - len("Homepage: "))) - print "Homepage:", whitespaces, pkg.homepage + print("Homepage:", whitespaces, pkg.homepage) - print - print "Safe versions: " + print() + print("Safe versions: ") if not pkg.versions: print(" None") @@ -63,20 +66,20 @@ def print_text_info(pkg): pad = padder(pkg.versions, 4) for v in reversed(sorted(pkg.versions)): f = fs.for_package_version(pkg, v) - print " %s%s" % (pad(v), str(f)) + print(" %s%s" % (pad(v), str(f))) - print - print "Variants:" + print() + print("Variants:") if not pkg.variants: - print " None" + print(" None") else: pad = padder(pkg.variants, 4) maxv = max(len(v) for v in sorted(pkg.variants)) fmt = "%%-%ss%%-10s%%s" % (maxv + 4) - print " " + fmt % ('Name', 'Default', 'Description') - print + print(" " + fmt % ('Name', 'Default', 'Description')) + print() for name in sorted(pkg.variants): v = pkg.variants[name] default = 'on' if v.default else 'off' @@ -85,26 +88,26 @@ def print_text_info(pkg): lines[1:] = [" " + (" " * maxv) + l for l in lines[1:]] desc = "\n".join(lines) - print " " + fmt % (name, default, desc) + print(" " + fmt % (name, default, desc)) - print - print "Installation Phases:" + print() + print("Installation Phases:") phase_str = '' for phase in pkg.phases: phase_str += " {0}".format(phase) - print phase_str + print(phase_str) for deptype in ('build', 'link', 'run'): - print - print "%s Dependencies:" % deptype.capitalize() + print() + print("%s Dependencies:" % deptype.capitalize()) deps = sorted(pkg.dependencies_of_type(deptype)) if deps: colify(deps, indent=4) else: - print " None" + print(" None") - print - print "Virtual Packages: " + print() + print("Virtual Packages: ") if pkg.provided: inverse_map = {} for spec, whens in pkg.provided.items(): @@ -113,17 +116,17 @@ def print_text_info(pkg): inverse_map[when] = set() inverse_map[when].add(spec) for when, specs in reversed(sorted(inverse_map.items())): - print " %s provides %s" % ( - when, ', '.join(str(s) for s in specs)) + print(" %s provides %s" % ( + when, ', '.join(str(s) for s in specs))) else: - print " None" + print(" None") - print - print "Description:" + print() + print("Description:") if pkg.__doc__: - print pkg.format_doc(indent=4) + print(pkg.format_doc(indent=4)) else: - print " None" + print(" None") def info(parser, args): diff --git a/lib/spack/spack/cmd/list.py b/lib/spack/spack/cmd/list.py index b5b699dccdb..bcfb0929452 100644 --- a/lib/spack/spack/cmd/list.py +++ b/lib/spack/spack/cmd/list.py @@ -22,12 +22,14 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## +from __future__ import print_function + import argparse import cgi import fnmatch import re import sys -from StringIO import StringIO +from six import StringIO import llnl.util.tty as tty import spack @@ -123,42 +125,42 @@ def rst_table(elts): pkgs = [spack.repo.get(name) for name in pkg_names] print('.. _package-list:') - print('') + print() print('============') print('Package List') print('============') - print('') + print() print('This is a list of things you can install using Spack. It is') print('automatically generated based on the packages in the latest Spack') print('release.') - print('') + print() print('Spack currently has %d mainline packages:' % len(pkgs)) - print('') + print() print(rst_table('`%s`_' % p for p in pkg_names)) - print('') + print() # Output some text for each package. for pkg in pkgs: print('-----') - print('') + print() print('.. _%s:' % pkg.name) - print('') + print() # Must be at least 2 long, breaks for single letter packages like R. print('-' * max(len(pkg.name), 2)) print(pkg.name) print('-' * max(len(pkg.name), 2)) - print('') + print() print('Homepage:') print(' * `%s <%s>`__' % (cgi.escape(pkg.homepage), pkg.homepage)) - print('') + print() print('Spack package:') print(' * `%s/package.py <%s>`__' % (pkg.name, github_url(pkg))) - print('') + print() if pkg.versions: print('Versions:') print(' ' + ', '.join(str(v) for v in reversed(sorted(pkg.versions)))) - print('') + print() for deptype in spack.alldeps: deps = pkg.dependencies_of_type(deptype) @@ -166,11 +168,11 @@ def rst_table(elts): print('%s Dependencies' % deptype.capitalize()) print(' ' + ', '.join('%s_' % d if d in pkg_names else d for d in deps)) - print('') + print() print('Description:') print(pkg.format_doc(indent=2)) - print('') + print() def list(parser, args): diff --git a/lib/spack/spack/cmd/location.py b/lib/spack/spack/cmd/location.py index c82b7072f98..d1a78256302 100644 --- a/lib/spack/spack/cmd/location.py +++ b/lib/spack/spack/cmd/location.py @@ -22,8 +22,9 @@ # 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 argparse +from __future__ import print_function +import argparse import llnl.util.tty as tty import spack @@ -70,16 +71,16 @@ def setup_parser(subparser): def location(parser, args): if args.module_dir: - print spack.module_path + print(spack.module_path) elif args.spack_root: - print spack.prefix + print(spack.prefix) elif args.packages: - print spack.repo.first_repo().root + print(spack.repo.first_repo().root) elif args.stages: - print spack.stage_path + print(spack.stage_path) else: specs = spack.cmd.parse_specs(args.spec) @@ -91,14 +92,14 @@ def location(parser, args): if args.install_dir: # install_dir command matches against installed specs. spec = spack.cmd.disambiguate_spec(specs[0]) - print spec.prefix + print(spec.prefix) else: spec = specs[0] if args.package_dir: # This one just needs the spec name. - print spack.repo.dirname_for_package_name(spec.name) + print(spack.repo.dirname_for_package_name(spec.name)) else: # These versions need concretized specs. @@ -106,11 +107,11 @@ def location(parser, args): pkg = spack.repo.get(spec) if args.stage_dir: - print pkg.stage.path + print(pkg.stage.path) else: # args.build_dir is the default. if not pkg.stage.source_path: tty.die("Build directory does not exist yet. " "Run this to create it:", "spack stage " + " ".join(args.spec)) - print pkg.stage.source_path + print(pkg.stage.source_path) diff --git a/lib/spack/spack/cmd/md5.py b/lib/spack/spack/cmd/md5.py index 7940d1327bb..fc205cc6933 100644 --- a/lib/spack/spack/cmd/md5.py +++ b/lib/spack/spack/cmd/md5.py @@ -25,7 +25,7 @@ import argparse import hashlib import os -from urlparse import urlparse +from six.moves.urllib.parse import urlparse import llnl.util.tty as tty import spack.util.crypto diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py index 2db75a0b1f1..528fcbfc3fd 100644 --- a/lib/spack/spack/cmd/mirror.py +++ b/lib/spack/spack/cmd/mirror.py @@ -141,7 +141,7 @@ def mirror_list(args): fmt = "%%-%ds%%s" % (max_len + 4) for name in mirrors: - print fmt % (name, mirrors[name]) + print(fmt % (name, mirrors[name])) def _read_specs_from_file(filename): @@ -152,7 +152,7 @@ def _read_specs_from_file(filename): s = Spec(string) s.package specs.append(s) - except SpackError, e: + except SpackError as e: tty.die("Parse error in %s, line %d:" % (args.file, i + 1), ">>> " + string, str(e)) return specs diff --git a/lib/spack/spack/cmd/pkg.py b/lib/spack/spack/cmd/pkg.py index 45104a9ff2a..7b668586b51 100644 --- a/lib/spack/spack/cmd/pkg.py +++ b/lib/spack/spack/cmd/pkg.py @@ -22,6 +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 ############################################################################## +from __future__ import print_function + import os import argparse @@ -118,13 +120,13 @@ def pkg_diff(args): u1, u2 = diff_packages(args.rev1, args.rev2) if u1: - print "%s:" % args.rev1 + print("%s:" % args.rev1) colify(sorted(u1), indent=4) if u1: - print + print() if u2: - print "%s:" % args.rev2 + print("%s:" % args.rev2) colify(sorted(u2), indent=4) diff --git a/lib/spack/spack/cmd/repo.py b/lib/spack/spack/cmd/repo.py index 1881654cac4..dd75f148c20 100644 --- a/lib/spack/spack/cmd/repo.py +++ b/lib/spack/spack/cmd/repo.py @@ -22,6 +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 ############################################################################## +from __future__ import print_function + import os import llnl.util.tty as tty @@ -161,7 +163,7 @@ def repo_list(args): max_ns_len = max(len(r.namespace) for r in repos) for repo in repos: fmt = "%%-%ds%%s" % (max_ns_len + 4) - print fmt % (repo.namespace, repo.root) + print(fmt % (repo.namespace, repo.root)) def repo(parser, args): diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index 9eea404bc7a..d89707f2300 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -22,8 +22,9 @@ # 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 argparse +from __future__ import print_function +import argparse import spack import spack.cmd import spack.cmd.common.arguments as arguments @@ -69,20 +70,20 @@ def spec(parser, args): # With -y, just print YAML to output. if args.yaml: spec.concretize() - print spec.to_yaml() + print(spec.to_yaml()) continue # Print some diagnostic info by default. - print "Input spec" - print "--------------------------------" - print spec.tree(**kwargs) + print("Input spec") + print("--------------------------------") + print(spec.tree(**kwargs)) - print "Normalized" - print "--------------------------------" + print("Normalized") + print("--------------------------------") spec.normalize() - print spec.tree(**kwargs) + print(spec.tree(**kwargs)) - print "Concretized" - print "--------------------------------" + print("Concretized") + print("--------------------------------") spec.concretize() - print spec.tree(**kwargs) + print(spec.tree(**kwargs)) diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index c569a1bc880..9384e3a9e62 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -22,12 +22,14 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## +from __future__ import print_function + import sys import os import re import argparse import pytest -from StringIO import StringIO +from six import StringIO from llnl.util.filesystem import * from llnl.util.tty.colify import colify @@ -79,7 +81,7 @@ def do_list(args, unknown_args): output_lines.append( os.path.basename(name).replace('.py', '')) else: - print indent + name + print(indent + name) if args.list: colify(output_lines) diff --git a/lib/spack/spack/cmd/versions.py b/lib/spack/spack/cmd/versions.py index dacca2489b5..f65ef144062 100644 --- a/lib/spack/spack/cmd/versions.py +++ b/lib/spack/spack/cmd/versions.py @@ -22,6 +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 ############################################################################## +from __future__ import print_function + from llnl.util.tty.colify import colify import llnl.util.tty as tty import spack @@ -47,10 +49,10 @@ def versions(parser, args): tty.msg("Remote versions (not yet checksummed):") if not remote_versions: if not fetched_versions: - print " Found no versions for %s" % pkg.name + print(" Found no versions for %s" % pkg.name) tty.debug("Check the list_url and list_depth attribute on the " "package to help Spack find versions.") else: - print " Found no unckecksummed versions for %s" % pkg.name + print(" Found no unckecksummed versions for %s" % pkg.name) else: colify(sorted(remote_versions, reverse=True), indent=2) diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index 9e9c7cbcb4b..90af900d0da 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -265,11 +265,11 @@ def check(key): full_path, prefix, suffix = key version = detect_version(full_path) return (version, prefix, suffix, full_path) - except ProcessError, e: + except ProcessError as e: tty.debug( "Couldn't get version for compiler %s" % full_path, e) return None - except Exception, e: + except Exception as e: # Catching "Exception" here is fine because it just # means something went wrong running a candidate executable. tty.debug("Error while executing candidate compiler %s" diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index a16caa3a6ce..585df233203 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -335,7 +335,7 @@ def get_compiler_duplicates(compiler_spec, arch_spec): scope_to_compilers[scope] = compilers cfg_file_to_duplicates = dict() - for scope, compilers in scope_to_compilers.iteritems(): + for scope, compilers in scope_to_compilers.items(): config_file = config_scopes[scope].get_section_filename('compilers') cfg_file_to_duplicates[config_file] = compilers @@ -401,7 +401,7 @@ def __init__(self, compiler_spec, arch_spec): config_file_to_duplicates = get_compiler_duplicates( compiler_spec, arch_spec) duplicate_table = list( - (x, len(y)) for x, y in config_file_to_duplicates.iteritems()) + (x, len(y)) for x, y in config_file_to_duplicates.items()) descriptor = lambda num: 'time' if num == 1 else 'times' duplicate_msg = ( lambda cfgfile, count: "{0}: {1} {2}".format( diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 126db8b7806..6ab796810be 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -34,6 +34,8 @@ concretization policies. """ from __future__ import print_function +from six import iteritems + import spack import spack.spec import spack.compilers @@ -241,7 +243,7 @@ def concretize_version(self, spec): def concretize_architecture(self, spec): """If the spec is empty provide the defaults of the platform. If the - architecture is not a basestring, then check if either the platform, + architecture is not a string type, then check if either the platform, target or operating system are concretized. If any of the fields are changed then return True. If everything is concretized (i.e the architecture attribute is a namedtuple of classes) then return False. @@ -262,7 +264,7 @@ def concretize_architecture(self, spec): while not spec.architecture.concrete and default_archs: arch = default_archs.pop(0) - replacement_fields = [k for k, v in arch.to_cmp_dict().iteritems() + replacement_fields = [k for k, v in iteritems(arch.to_cmp_dict()) if v and not getattr(spec.architecture, k)] for field in replacement_fields: setattr(spec.architecture, field, getattr(arch, field)) diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index 56c6421457f..7c3d614aee0 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -52,6 +52,8 @@ import os import re import sys +from six import string_types +from six import iteritems import yaml import jsonschema @@ -108,7 +110,7 @@ def extend_with_default(validator_class): "patternProperties"] def set_defaults(validator, properties, instance, schema): - for property, subschema in properties.iteritems(): + for property, subschema in iteritems(properties): if "default" in subschema: instance.setdefault(property, subschema["default"]) for err in validate_properties( @@ -116,10 +118,10 @@ def set_defaults(validator, properties, instance, schema): yield err def set_pp_defaults(validator, properties, instance, schema): - for property, subschema in properties.iteritems(): + for property, subschema in iteritems(properties): if "default" in subschema: if isinstance(instance, dict): - for key, val in instance.iteritems(): + for key, val in iteritems(instance): if re.match(property, key) and val is None: instance[key] = subschema["default"] @@ -306,8 +308,8 @@ def _mark_overrides(data): elif isinstance(data, dict): marked = {} - for key, val in data.iteritems(): - if isinstance(key, basestring) and key.endswith(':'): + for key, val in iteritems(data): + if isinstance(key, string_types) and key.endswith(':'): key = syaml.syaml_str(key[:-1]) key.override = True marked[key] = _mark_overrides(val) @@ -348,7 +350,7 @@ def they_are(t): # Source dict is merged into dest. elif they_are(dict): - for sk, sv in source.iteritems(): + for sk, sv in iteritems(source): if override(sk) or sk not in dest: # if sk ended with ::, or if it's new, completely override dest[sk] = copy.copy(sv) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index c81512d6821..c63da4cf2e6 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -41,6 +41,8 @@ """ import os import socket +from six import string_types +from six import iteritems from yaml.error import MarkedYAMLError, YAMLError @@ -260,7 +262,7 @@ def _read_from_file(self, stream, format='json'): raise ValueError("Invalid database format: %s" % format) try: - if isinstance(stream, basestring): + if isinstance(stream, string_types): with open(stream, 'r') as f: fdata = load(f) else: @@ -511,7 +513,7 @@ def _add(self, spec, directory_layout=None, explicit=False): new_spec, path, installed, ref_count=0, explicit=explicit) # Connect dependencies from the DB to the new copy. - for name, dep in spec.dependencies_dict(_tracked_deps).iteritems(): + for name, dep in iteritems(spec.dependencies_dict(_tracked_deps)): dkey = dep.spec.dag_hash() new_spec._add_dependency(self._data[dkey].spec, dep.deptypes) self._data[dkey].ref_count += 1 diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 58eabb9e3bb..db280cb5fd9 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -51,6 +51,7 @@ class OpenMpi(Package): import inspect import os.path import re +from six import string_types import llnl.util.lang import spack @@ -174,7 +175,7 @@ class Foo(Package): """ global __all__ - if isinstance(dicts, basestring): + if isinstance(dicts, string_types): dicts = (dicts, ) if not isinstance(dicts, collections.Sequence): message = "dicts arg must be list, tuple, or string. Found {0}" diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index 28e6584fb21..ff23ced6eb9 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import os -import exceptions import shutil import glob import tempfile @@ -137,7 +136,7 @@ def remove_install_directory(self, spec): if os.path.exists(path): try: shutil.rmtree(path) - except exceptions.OSError as e: + except OSError as e: raise RemoveFailedError(spec, path, e) path = os.path.dirname(path) diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index 13330545183..76b8e132d46 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -291,7 +291,7 @@ def from_sourcing_files(*args, **kwargs): shell_options = '{shell_options}'.format(**info) source_file = '{source_command} {file} {concatenate_on_success}' - dump_cmd = "import os, json; print json.dumps(dict(os.environ))" + dump_cmd = "import os, json; print(json.dumps(dict(os.environ)))" dump_environment = 'python -c "%s"' % dump_cmd # Construct the command that will be executed diff --git a/lib/spack/spack/error.py b/lib/spack/spack/error.py index b6261a05f43..cd1ae5b25c4 100644 --- a/lib/spack/spack/error.py +++ b/lib/spack/spack/error.py @@ -22,8 +22,11 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## +from __future__ import print_function + import os import sys + import llnl.util.tty as tty import spack import inspect diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index d510db568f1..0f97dda8b82 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -46,6 +46,9 @@ import shutil import copy from functools import wraps +from six import string_types +from six import with_metaclass + import llnl.util.tty as tty from llnl.util.filesystem import * import spack @@ -74,20 +77,19 @@ def wrapper(self, *args, **kwargs): return wrapper -class FetchStrategy(object): +class FSMeta(type): + """This metaclass registers all fetch strategies in a list.""" + def __init__(cls, name, bases, dict): + type.__init__(cls, name, bases, dict) + if cls.enabled: + all_strategies.append(cls) + +class FetchStrategy(with_metaclass(FSMeta, object)): """Superclass of all fetch strategies.""" enabled = False # Non-abstract subclasses should be enabled. required_attributes = None # Attributes required in version() args. - class __metaclass__(type): - - """This metaclass registers all fetch strategies in a list.""" - - def __init__(cls, name, bases, dict): - type.__init__(cls, name, bases, dict) - if cls.enabled: - all_strategies.append(cls) def __init__(self): # The stage is initialized late, so that fetch strategies can be @@ -319,7 +321,7 @@ def expand(self): # top-level directory. We ignore hidden files to accomodate # these "semi-exploding" tarballs. files = os.listdir(tarball_container) - non_hidden = filter(lambda f: not f.startswith('.'), files) + non_hidden = [f for f in files if not f.startswith('.')] if len(non_hidden) == 1: expanded_dir = os.path.join(tarball_container, non_hidden[0]) if os.path.isdir(expanded_dir): @@ -461,7 +463,7 @@ def archive(self, destination, **kwargs): patterns = kwargs.get('exclude', None) if patterns is not None: - if isinstance(patterns, basestring): + if isinstance(patterns, string_types): patterns = [patterns] for p in patterns: tar.add_default_arg('--exclude=%s' % p) diff --git a/lib/spack/spack/graph.py b/lib/spack/spack/graph.py index 91230263f15..04e6cc7fca8 100644 --- a/lib/spack/spack/graph.py +++ b/lib/spack/spack/graph.py @@ -63,6 +63,7 @@ """ from heapq import * +from six import iteritems from llnl.util.lang import * from llnl.util.tty.color import * @@ -562,7 +563,7 @@ def label(key, label): continue # Add edges for each depends_on in the package. - for dep_name, dep in spec.package.dependencies.iteritems(): + for dep_name, dep in iteritems(spec.package.dependencies): deps.add((spec.name, dep_name)) # If the package provides something, add an edge for that. diff --git a/lib/spack/spack/hooks/case_consistency.py b/lib/spack/spack/hooks/case_consistency.py index faf38f7ae3f..e9208ee9fff 100644 --- a/lib/spack/spack/hooks/case_consistency.py +++ b/lib/spack/spack/hooks/case_consistency.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from __future__ import absolute_import + import os import re import platform diff --git a/lib/spack/spack/hooks/module_file_generation.py b/lib/spack/spack/hooks/module_file_generation.py index 445cea4e911..ff9617ff1ca 100644 --- a/lib/spack/spack/hooks/module_file_generation.py +++ b/lib/spack/spack/hooks/module_file_generation.py @@ -23,15 +23,16 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import spack.modules +from six import iteritems def post_install(pkg): - for item, cls in spack.modules.module_types.iteritems(): + for item, cls in iteritems(spack.modules.module_types): generator = cls(pkg.spec) generator.write() def post_uninstall(pkg): - for item, cls in spack.modules.module_types.iteritems(): + for item, cls in iteritems(spack.modules.module_types): generator = cls(pkg.spec) generator.remove() diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index a6ffded9353..8c702f11115 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -46,6 +46,8 @@ import re import string import textwrap +from six import iteritems +from six import with_metaclass import llnl.util.tty as tty from llnl.util.filesystem import join_path, mkdirp @@ -213,7 +215,7 @@ def process_arglist(arglist): for x in arglist: yield (x, ) else: - for x in arglist.iteritems(): + for x in iteritems(arglist): yield x for method, arglist in environment_actions.items(): @@ -246,18 +248,18 @@ def format_env_var_name(name): return name.replace('-', '_').upper() -class EnvModule(object): +class ModuleMeta(type): + """Metaclass registers modules in themodule_types dict.""" + def __init__(cls, name, bases, dict): + type.__init__(cls, name, bases, dict) + if cls.name != 'env_module' and cls.name in _module_config['enable']: + module_types[cls.name] = cls + + +class EnvModule(with_metaclass(ModuleMeta, object)): name = 'env_module' formats = {} - class __metaclass__(type): - - def __init__(cls, name, bases, dict): - type.__init__(cls, name, bases, dict) - if cls.name != 'env_module' and cls.name in _module_config[ - 'enable']: - module_types[cls.name] = cls - def __init__(self, spec=None): self.spec = spec self.pkg = spec.package # Just stored for convenience diff --git a/lib/spack/spack/operating_systems/cnl.py b/lib/spack/spack/operating_systems/cnl.py index 7acab1cbcbf..b5c759bbcbb 100644 --- a/lib/spack/spack/operating_systems/cnl.py +++ b/lib/spack/spack/operating_systems/cnl.py @@ -54,7 +54,7 @@ def find_compilers(self, *paths): # ensure all the version calls we made are cached in the parent # process, as well. This speeds up Spack a lot. - clist = reduce(lambda x, y: x + y, compiler_lists) + clist = [comp for cl in compiler_lists for comp in cl] return clist def find_compiler(self, cmp_cls, *paths): diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 80d65bd739e..6b71c0f1a90 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -42,6 +42,9 @@ import sys import textwrap import time +from six import StringIO +from six import string_types +from six import with_metaclass import llnl.util.lock import llnl.util.tty as tty @@ -56,7 +59,7 @@ import spack.repository import spack.url import spack.util.web -from StringIO import StringIO + from llnl.util.filesystem import * from llnl.util.lang import * from llnl.util.link_tree import LinkTree @@ -238,7 +241,7 @@ def _wrapper(instance, *args, **kwargs): return _execute_under_condition -class PackageBase(object): +class PackageBase(with_metaclass(PackageMeta, object)): """This is the superclass for all spack packages. ***The Package class*** @@ -475,7 +478,6 @@ class SomePackage(Package): Package creators override functions like install() (all of them do this), clean() (some of them do this), and others to provide custom behavior. """ - __metaclass__ = PackageMeta # # These are default values for instance variables. # @@ -1115,6 +1117,13 @@ def _prefix_write_lock(self): finally: self.prefix_lock.release_write() + @contextlib.contextmanager + def _stage_and_write_lock(self): + """Prefix lock nested in a stage.""" + with self.stage: + with self._prefix_write_lock(): + yield + def do_install(self, keep_prefix=False, keep_stage=False, @@ -1233,7 +1242,7 @@ def build_process(input_stream): self.stage.keep = keep_stage - with contextlib.nested(self.stage, self._prefix_write_lock()): + with self._stage_and_write_lock(): # Run the pre-install hook in the child process after # the directory is created. spack.hooks.pre_install(self) @@ -1265,9 +1274,10 @@ def build_process(input_stream): input_stream=input_stream ) with redirection_context as log_redirection: - for phase_name, phase in zip(self.phases, self._InstallPhase_phases): # NOQA: ignore=E501 + for phase_name, phase in zip( + self.phases, self._InstallPhase_phases): tty.msg( - 'Executing phase : \'{0}\''.format(phase_name) # NOQA: ignore=E501 + 'Executing phase : \'{0}\''.format(phase_name) ) # Redirect stdout and stderr to daemon pipe with log_redirection: @@ -1355,7 +1365,7 @@ def sanity_check_prefix(self): """This function checks whether install succeeded.""" def check_paths(path_list, filetype, predicate): - if isinstance(path_list, basestring): + if isinstance(path_list, string_types): path_list = [path_list] for path in path_list: diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py index 63f90d9b501..3dc90a8eb90 100644 --- a/lib/spack/spack/package_prefs.py +++ b/lib/spack/spack/package_prefs.py @@ -22,6 +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 ############################################################################## +from six import string_types +from six import iteritems import spack import spack.error @@ -180,7 +182,7 @@ def spec_preferred_variants(self, pkgname): variants = self.preferred.get(pkg, {}).get('variants', '') if variants: break - if not isinstance(variants, basestring): + if not isinstance(variants, string_types): variants = " ".join(variants) pkg = spack.repo.get(pkgname) spec = spack.spec.Spec("%s %s" % (pkgname, variants)) @@ -233,7 +235,7 @@ def spec_externals(spec): if (not pkg_paths) and (not pkg_modules): return [] - for external_spec, path in pkg_paths.iteritems(): + for external_spec, path in iteritems(pkg_paths): if not path: # skip entries without paths (avoid creating extra Specs) continue @@ -242,7 +244,7 @@ def spec_externals(spec): if external_spec.satisfies(spec): external_specs.append(external_spec) - for external_spec, module in pkg_modules.iteritems(): + for external_spec, module in iteritems(pkg_modules): if not module: continue diff --git a/lib/spack/spack/package_test.py b/lib/spack/spack/package_test.py index e366b5f0e5c..54f424d45ef 100644 --- a/lib/spack/spack/package_test.py +++ b/lib/spack/spack/package_test.py @@ -45,15 +45,15 @@ def compile_c_and_execute(source_file, include_flags, link_flags): def compare_output(current_output, blessed_output): """Compare blessed and current output of executables.""" if not (current_output == blessed_output): - print "Produced output does not match expected output." - print "Expected output:" - print '-' * 80 - print blessed_output - print '-' * 80 - print "Produced output:" - print '-' * 80 - print current_output - print '-' * 80 + print("Produced output does not match expected output.") + print("Expected output:") + print('-' * 80) + print(blessed_output) + print('-' * 80) + print("Produced output:") + print('-' * 80) + print(current_output) + print('-' * 80) raise RuntimeError("Ouput check failed.", "See spack_output.log for details") diff --git a/lib/spack/spack/parse.py b/lib/spack/spack/parse.py index e116175823b..da11268bb20 100644 --- a/lib/spack/spack/parse.py +++ b/lib/spack/spack/parse.py @@ -25,6 +25,8 @@ import re import shlex import itertools +from six import string_types + import spack.error @@ -118,7 +120,7 @@ def __init__(self, lexer): def gettok(self): """Puts the next token in the input stream into self.next.""" try: - self.next = self.tokens.next() + self.next = next(self.tokens) except StopIteration: self.next = None @@ -159,7 +161,7 @@ def expect(self, id): sys.exit(1) def setup(self, text): - if isinstance(text, basestring): + if isinstance(text, string_types): text = shlex.split(text) self.text = text self.push_tokens(self.lexer.lex(text)) diff --git a/lib/spack/spack/provider_index.py b/lib/spack/spack/provider_index.py index 0e771c6255e..7dee8386198 100644 --- a/lib/spack/spack/provider_index.py +++ b/lib/spack/spack/provider_index.py @@ -26,6 +26,7 @@ The ``virtual`` module contains utility classes for virtual dependencies. """ from itertools import product as iproduct +from six import iteritems from pprint import pformat import spack.util.spack_yaml as syaml @@ -97,7 +98,7 @@ def update(self, spec): assert(not spec.virtual) pkg = spec.package - for provided_spec, provider_specs in pkg.provided.iteritems(): + for provided_spec, provider_specs in iteritems(pkg.provided): for provider_spec in provider_specs: # TODO: fix this comment. # We want satisfaction other than flags @@ -201,7 +202,7 @@ def to_yaml(self, stream=None): def from_yaml(stream): try: yfile = syaml.load(stream) - except MarkedYAMLError, e: + except MarkedYAMLError as e: raise spack.spec.SpackYAMLError( "error parsing YAML ProviderIndex cache:", str(e)) @@ -288,7 +289,7 @@ def _transform(providers, transform_fun, out_mapping_type=dict): """ def mapiter(mappings): if isinstance(mappings, dict): - return mappings.iteritems() + return iteritems(mappings) else: return iter(mappings) diff --git a/lib/spack/spack/repository.py b/lib/spack/spack/repository.py index 1536ecb0e63..5486f7a9a42 100644 --- a/lib/spack/spack/repository.py +++ b/lib/spack/spack/repository.py @@ -26,7 +26,6 @@ import stat import shutil import errno -import exceptions import sys import inspect import imp @@ -558,7 +557,7 @@ def _read_config(self): return yaml_data['repo'] - except exceptions.IOError: + except IOError: tty.die("Error reading %s when opening %s" % (self.config_file, self.root)) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 08b92cf7057..8b0e560c8a6 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -97,13 +97,14 @@ """ import base64 import collections -import csv import ctypes import hashlib import itertools from operator import attrgetter +from six import StringIO +from six import string_types +from six import iteritems -import cStringIO import llnl.util.tty as tty import spack import spack.architecture @@ -113,7 +114,7 @@ import spack.store import spack.util.spack_json as sjson import spack.util.spack_yaml as syaml -from cStringIO import StringIO + from llnl.util.filesystem import find_libraries from llnl.util.lang import * from llnl.util.tty.color import * @@ -222,7 +223,7 @@ def canonical_deptype(deptype): if deptype is None: return alldeps - elif isinstance(deptype, str): + elif isinstance(deptype, string_types): return special_types.get(deptype, (deptype,)) elif isinstance(deptype, (tuple, list)): @@ -270,7 +271,7 @@ def __init__(self, *args): spec_like = args[0] if isinstance(spec_like, ArchSpec): self._dup(spec_like) - elif isinstance(spec_like, basestring): + elif isinstance(spec_like, string_types): spec_fields = spec_like.split("-") if len(spec_fields) == 3: @@ -391,7 +392,7 @@ def constrain(self, other): raise UnsatisfiableArchitectureSpecError(self, other) constrained = False - for attr, svalue in self.to_cmp_dict().iteritems(): + for attr, svalue in iteritems(self.to_cmp_dict()): ovalue = getattr(other, attr) if svalue is None and ovalue is not None: setattr(self, attr, ovalue) @@ -406,7 +407,7 @@ def copy(self): @property def concrete(self): - return all(v for k, v in self.to_cmp_dict().iteritems()) + return all(v for k, v in iteritems(self.to_cmp_dict())) def to_cmp_dict(self): """Returns a dictionary that can be used for field comparison.""" @@ -464,7 +465,7 @@ def __init__(self, *args): arg = args[0] # If there is one argument, it's either another CompilerSpec # to copy or a string to parse - if isinstance(arg, basestring): + if isinstance(arg, string_types): c = SpecParser().parse_compiler(arg) self.name = c.name self.versions = c.versions @@ -728,7 +729,7 @@ def copy(self): return clone def _cmp_key(self): - return tuple((k, tuple(v)) for k, v in sorted(self.iteritems())) + return tuple((k, tuple(v)) for k, v in sorted(iteritems(self))) def __str__(self): sorted_keys = filter( @@ -918,7 +919,7 @@ def __init__(self, spec_like, *dep_like, **kwargs): return # Parse if the spec_like is a string. - if not isinstance(spec_like, basestring): + if not isinstance(spec_like, string_types): raise TypeError("Can't make spec out of %s" % type(spec_like)) spec_list = SpecParser().parse(spec_like) @@ -1018,9 +1019,9 @@ def _add_variant(self, name, value): if name in self.variants: raise DuplicateVariantError( "Cannot specify variant '%s' twice" % name) - if isinstance(value, basestring) and value.upper() == 'TRUE': + if isinstance(value, string_types) and value.upper() == 'TRUE': value = True - elif isinstance(value, basestring) and value.upper() == 'FALSE': + elif isinstance(value, string_types) and value.upper() == 'FALSE': value = False self.variants[name] = VariantSpec(name, value) @@ -1056,7 +1057,7 @@ def _set_architecture(self, **kwargs): new_vals = tuple(kwargs.get(arg, None) for arg in arch_attrs) self.architecture = ArchSpec(*new_vals) else: - new_attrvals = [(a, v) for a, v in kwargs.iteritems() + new_attrvals = [(a, v) for a, v in iteritems(kwargs) if a in arch_attrs] for new_attr, new_value in new_attrvals: if getattr(self.architecture, new_attr): @@ -1219,7 +1220,7 @@ def traverse_edges(self, visited=None, d=0, deptype=None, # get initial values for kwargs depth = kwargs.get('depth', False) key_fun = kwargs.get('key', id) - if isinstance(key_fun, basestring): + if isinstance(key_fun, string_types): key_fun = attrgetter(key_fun) yield_root = kwargs.get('root', True) cover = kwargs.get('cover', 'nodes') @@ -1314,7 +1315,7 @@ def dag_hash(self, length=None): else: yaml_text = syaml.dump( self.to_node_dict(), default_flow_style=True, width=maxint) - sha = hashlib.sha1(yaml_text) + sha = hashlib.sha1(yaml_text.encode('utf-8')) b32_hash = base64.b32encode(sha.digest()).lower() if self.concrete: self._hash = b32_hash @@ -1421,7 +1422,7 @@ def read_yaml_dep_specs(dependency_dict): formats so that reindex will work on old specs/databases. """ for dep_name, elt in dependency_dict.items(): - if isinstance(elt, basestring): + if isinstance(elt, string_types): # original format, elt is just the dependency hash. dag_hash, deptypes = elt, ['build', 'link'] elif isinstance(elt, tuple): @@ -2413,11 +2414,8 @@ def __getitem__(self, name): if query_parameters: # We have extra query parameters, which are comma separated # values - f = cStringIO.StringIO(query_parameters.pop()) - try: - query_parameters = next(csv.reader(f, skipinitialspace=True)) - except StopIteration: - query_parameters = [''] + csv = query_parameters.pop().strip() + query_parameters = re.split(r'\s*,\s*', csv) try: value = next( diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 91f77839d8c..03b7f5ef330 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -29,18 +29,19 @@ import shutil import tempfile import getpass -from urlparse import urljoin +from six import string_types +from six import iteritems +from six.moves.urllib.parse import urljoin import llnl.util.tty as tty import llnl.util.lock from llnl.util.filesystem import * -import spack.util.pattern as pattern - import spack import spack.config -import spack.fetch_strategy as fs import spack.error +import spack.fetch_strategy as fs +import spack.util.pattern as pattern from spack.version import * from spack.util.path import canonicalize_path from spack.util.crypto import prefix_bits, bit_length @@ -84,7 +85,7 @@ def get_tmp_root(): if _tmp_root is None: config = spack.config.get_config('config') candidates = config['build_stage'] - if isinstance(candidates, basestring): + if isinstance(candidates, string_types): candidates = [candidates] path = _first_accessible_path(candidates) @@ -188,7 +189,7 @@ def __init__( """ # TODO: fetch/stage coupling needs to be reworked -- the logic # TODO: here is convoluted and not modular enough. - if isinstance(url_or_fetch_strategy, basestring): + if isinstance(url_or_fetch_strategy, string_types): self.fetcher = fs.from_url(url_or_fetch_strategy) elif isinstance(url_or_fetch_strategy, fs.FetchStrategy): self.fetcher = url_or_fetch_strategy @@ -548,7 +549,7 @@ def expand_archive(self): if not isinstance(placement, dict): placement = {'': placement} # Make the paths in the dictionary absolute and link - for key, value in placement.iteritems(): + for key, value in iteritems(placement): target_path = join_path( root_stage.source_path, resource.destination) destination_path = join_path(target_path, value) @@ -661,7 +662,7 @@ def cache_local(self): def _get_mirrors(): """Get mirrors from spack configuration.""" config = spack.config.get_config('mirrors') - return [val for name, val in config.iteritems()] + return [val for name, val in iteritems(config)] def ensure_access(file=spack.stage_path): diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 304eb04a551..b57d39b4414 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -22,19 +22,19 @@ # 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 StringIO import argparse import codecs import collections import contextlib import unittest +from six import StringIO import llnl.util.filesystem import spack import spack.cmd import spack.cmd.install as install -FILE_REGISTRY = collections.defaultdict(StringIO.StringIO) +FILE_REGISTRY = collections.defaultdict(StringIO) # Monkey-patch open to write module files to a StringIO instance @@ -44,7 +44,7 @@ def mock_open(filename, mode, *args): message = 'test.test_install : unexpected opening mode for mock_open' raise RuntimeError(message) - FILE_REGISTRY[filename] = StringIO.StringIO() + FILE_REGISTRY[filename] = StringIO() try: yield FILE_REGISTRY[filename] diff --git a/lib/spack/spack/test/compilers.py b/lib/spack/spack/test/compilers.py index d0fc506f400..bc21ec886ee 100644 --- a/lib/spack/spack/test/compilers.py +++ b/lib/spack/spack/test/compilers.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import pytest +from six import iteritems import spack.spec import spack.compilers as compilers @@ -30,7 +31,7 @@ @pytest.mark.usefixtures('config') class TestCompilers(object): - + def test_get_compiler_duplicates(self): # In this case there is only one instance of the specified compiler in # the test configuration (so it is not actually a duplicate), but the @@ -38,11 +39,11 @@ def test_get_compiler_duplicates(self): cfg_file_to_duplicates = compilers.get_compiler_duplicates( 'gcc@4.5.0', spack.spec.ArchSpec('cray-CNL-xeon')) assert len(cfg_file_to_duplicates) == 1 - cfg_file, duplicates = cfg_file_to_duplicates.iteritems().next() + cfg_file, duplicates = next(iteritems(cfg_file_to_duplicates)) assert len(duplicates) == 1 def test_all_compilers(self): all_compilers = compilers.all_compilers() - filtered = list(x for x in all_compilers if str(x.spec) == 'clang@3.3') - filtered = list(x for x in filtered if x.operating_system == 'SuSE11') + filtered = [x for x in all_compilers if str(x.spec) == 'clang@3.3'] + filtered = [x for x in filtered if x.operating_system == 'SuSE11'] assert len(filtered) == 1 diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index f3447276745..2b7dc594ac8 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -27,11 +27,12 @@ import os import re import shutil +from six import StringIO -import cStringIO import llnl.util.filesystem import llnl.util.lang import ordereddict_backport + import py import pytest import spack @@ -56,11 +57,8 @@ def no_stdin_duplication(monkeypatch): """Duplicating stdin (or any other stream) returns an empty cStringIO object. """ - monkeypatch.setattr( - llnl.util.lang, - 'duplicate_stream', - lambda x: cStringIO.StringIO() - ) + monkeypatch.setattr(llnl.util.lang, 'duplicate_stream', + lambda x: StringIO()) @pytest.fixture(autouse=True) @@ -181,6 +179,7 @@ def config(configuration_dir): spack.config.clear_config_caches() + @pytest.fixture(scope='module') def database(tmpdir_factory, builtin_mock, config): """Creates a mock database with some packages installed note that @@ -312,7 +311,7 @@ def mock_archive(): "\ttouch $prefix/dummy_file\n" "EOF\n" ) - os.chmod(configure_path, 0755) + os.chmod(configure_path, 0o755) # Archive it current = tmpdir.chdir() archive_name = '{0}.tar.gz'.format(repo_name) diff --git a/lib/spack/spack/test/graph.py b/lib/spack/spack/test/graph.py index ce7b07ed866..46dd4f1bc6c 100644 --- a/lib/spack/spack/test/graph.py +++ b/lib/spack/spack/test/graph.py @@ -22,7 +22,7 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from StringIO import StringIO +from six import StringIO from spack.spec import Spec from spack.graph import AsciiGraph, topological_sort, graph_dot diff --git a/lib/spack/spack/test/lock.py b/lib/spack/spack/test/lock.py index 4f62cd85e9d..214797c1f6c 100644 --- a/lib/spack/spack/test/lock.py +++ b/lib/spack/spack/test/lock.py @@ -283,7 +283,7 @@ def test_upgrade_read_to_write_fails_with_readonly_file(self): # ensure lock file exists the first time, so we open it read-only # to begin wtih. touch(self.lock_path) - os.chmod(self.lock_path, 0444) + os.chmod(self.lock_path, 0o444) lock = Lock(self.lock_path) self.assertTrue(lock._reads == 0) diff --git a/lib/spack/spack/test/make_executable.py b/lib/spack/spack/test/make_executable.py index 87a43a529a9..1b3f384a8b8 100644 --- a/lib/spack/spack/test/make_executable.py +++ b/lib/spack/spack/test/make_executable.py @@ -46,7 +46,7 @@ def setUp(self): with open(make_exe, 'w') as f: f.write('#!/bin/sh\n') f.write('echo "$@"') - os.chmod(make_exe, 0700) + os.chmod(make_exe, 0o700) path_put_first('PATH', [self.tmpdir]) diff --git a/lib/spack/spack/test/modules.py b/lib/spack/spack/test/modules.py index bb1b0006f80..0eb54cba2cd 100644 --- a/lib/spack/spack/test/modules.py +++ b/lib/spack/spack/test/modules.py @@ -24,14 +24,14 @@ ############################################################################## import collections import contextlib +from six import StringIO -import cStringIO import pytest import spack.modules import spack.spec # Our "filesystem" for the tests below -FILE_REGISTRY = collections.defaultdict(cStringIO.StringIO) +FILE_REGISTRY = collections.defaultdict(StringIO) # Spec strings that will be used throughout the tests mpich_spec_string = 'mpich@3.0.4' mpileaks_spec_string = 'mpileaks' @@ -48,7 +48,7 @@ def _mock(filename, mode): if not mode == 'w': raise RuntimeError('unexpected opening mode for stringio_open') - FILE_REGISTRY[filename] = cStringIO.StringIO() + FILE_REGISTRY[filename] = StringIO() try: yield FILE_REGISTRY[filename] diff --git a/lib/spack/spack/test/multimethod.py b/lib/spack/spack/test/multimethod.py index fbcc70afe84..003936a77a9 100644 --- a/lib/spack/spack/test/multimethod.py +++ b/lib/spack/spack/test/multimethod.py @@ -86,7 +86,7 @@ def test_default_works(builtin_mock): def test_target_match(builtin_mock): platform = spack.architecture.platform() - targets = platform.targets.values() + targets = list(platform.targets.values()) for target in targets[:-1]: pkg = spack.repo.get('multimethod target=' + target.name) assert pkg.different_by_target() == target.name diff --git a/lib/spack/spack/test/pattern.py b/lib/spack/spack/test/pattern.py index 0c772a0d2d1..b76f88e6701 100644 --- a/lib/spack/spack/test/pattern.py +++ b/lib/spack/spack/test/pattern.py @@ -86,6 +86,7 @@ class CompositeFromInterface: composite.append(self.Two()) composite.add() self.assertEqual(self.Base.counter, 3) + composite.pop() composite.subtract() self.assertEqual(self.Base.counter, 2) diff --git a/lib/spack/spack/test/provider_index.py b/lib/spack/spack/test/provider_index.py index a176d0c315b..69a5c3cd404 100644 --- a/lib/spack/spack/test/provider_index.py +++ b/lib/spack/spack/test/provider_index.py @@ -37,7 +37,8 @@ mpi@:10.0: set([zmpi])}, 'stuff': {stuff: set([externalvirtual])}} """ -import StringIO +from six import StringIO + import spack from spack.provider_index import ProviderIndex from spack.spec import Spec @@ -46,10 +47,10 @@ def test_yaml_round_trip(builtin_mock): p = ProviderIndex(spack.repo.all_package_names()) - ostream = StringIO.StringIO() + ostream = StringIO() p.to_yaml(ostream) - istream = StringIO.StringIO(ostream.getvalue()) + istream = StringIO(ostream.getvalue()) q = ProviderIndex.from_yaml(istream) assert p == q diff --git a/lib/spack/spack/test/python_version.py b/lib/spack/spack/test/python_version.py index 084eed7e337..ee0ff9d2c92 100644 --- a/lib/spack/spack/test/python_version.py +++ b/lib/spack/spack/test/python_version.py @@ -31,6 +31,8 @@ default version. Once those go away, we can likely drop 2.6 and increase the minimum supported Python 3 version, as well. """ +from __future__ import print_function + import os import sys import re diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index 2c414bd0c0b..31d6203f7f4 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -90,7 +90,7 @@ def test_preorder_node_traversal(self): names = ['mpileaks', 'callpath', 'dyninst', 'libdwarf', 'libelf', 'zmpi', 'fake'] - pairs = zip([0, 1, 2, 3, 4, 2, 3], names) + pairs = list(zip([0, 1, 2, 3, 4, 2, 3], names)) traversal = dag.traverse() assert [x.name for x in traversal] == names @@ -104,7 +104,7 @@ def test_preorder_edge_traversal(self): names = ['mpileaks', 'callpath', 'dyninst', 'libdwarf', 'libelf', 'libelf', 'zmpi', 'fake', 'zmpi'] - pairs = zip([0, 1, 2, 3, 4, 3, 2, 3, 1], names) + pairs = list(zip([0, 1, 2, 3, 4, 3, 2, 3, 1], names)) traversal = dag.traverse(cover='edges') assert [x.name for x in traversal] == names @@ -118,7 +118,7 @@ def test_preorder_path_traversal(self): names = ['mpileaks', 'callpath', 'dyninst', 'libdwarf', 'libelf', 'libelf', 'zmpi', 'fake', 'zmpi', 'fake'] - pairs = zip([0, 1, 2, 3, 4, 3, 2, 3, 1, 2], names) + pairs = list(zip([0, 1, 2, 3, 4, 3, 2, 3, 1, 2], names)) traversal = dag.traverse(cover='paths') assert [x.name for x in traversal] == names @@ -132,7 +132,7 @@ def test_postorder_node_traversal(self): names = ['libelf', 'libdwarf', 'dyninst', 'fake', 'zmpi', 'callpath', 'mpileaks'] - pairs = zip([4, 3, 2, 3, 2, 1, 0], names) + pairs = list(zip([4, 3, 2, 3, 2, 1, 0], names)) traversal = dag.traverse(order='post') assert [x.name for x in traversal] == names @@ -146,7 +146,7 @@ def test_postorder_edge_traversal(self): names = ['libelf', 'libdwarf', 'libelf', 'dyninst', 'fake', 'zmpi', 'callpath', 'zmpi', 'mpileaks'] - pairs = zip([4, 3, 3, 2, 3, 2, 1, 1, 0], names) + pairs = list(zip([4, 3, 3, 2, 3, 2, 1, 1, 0], names)) traversal = dag.traverse(cover='edges', order='post') assert [x.name for x in traversal] == names @@ -160,7 +160,7 @@ def test_postorder_path_traversal(self): names = ['libelf', 'libdwarf', 'libelf', 'dyninst', 'fake', 'zmpi', 'callpath', 'fake', 'zmpi', 'mpileaks'] - pairs = zip([4, 3, 3, 2, 3, 2, 1, 2, 1, 0], names) + pairs = list(zip([4, 3, 3, 2, 3, 2, 1, 2, 1, 0], names)) traversal = dag.traverse(cover='paths', order='post') assert [x.name for x in traversal] == names diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 89f4a16dfc6..7502f239948 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -46,8 +46,8 @@ """ import os import re -from StringIO import StringIO -from urlparse import urlsplit, urlunsplit +from six import StringIO +from six.moves.urllib.parse import urlsplit, urlunsplit import llnl.util.tty as tty from llnl.util.tty.color import * @@ -486,7 +486,7 @@ def substitution_offsets(path): name_offsets = offsets[1::2] ver_offsets = [] - for i in xrange(0, len(name_parts), 2): + for i in range(0, len(name_parts), 2): vparts = re.split(ver, name_parts[i]) voffsets = cumsum(vparts, offsets[i], len) ver_offsets.extend(voffsets[1::2]) diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 7a960e88cbe..372d0019e7c 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -22,10 +22,10 @@ # 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 os import re import subprocess +from six import string_types import llnl.util.tty as tty import spack @@ -129,7 +129,7 @@ def __call__(self, *args, **kwargs): raise ValueError("Cannot use `str` as input stream.") def streamify(arg, mode): - if isinstance(arg, basestring): + if isinstance(arg, string_types): return open(arg, mode), True elif arg is str: return subprocess.PIPE, False diff --git a/lib/spack/spack/util/multiproc.py b/lib/spack/spack/util/multiproc.py index 6a25c45713e..91bac57c269 100644 --- a/lib/spack/spack/util/multiproc.py +++ b/lib/spack/spack/util/multiproc.py @@ -28,7 +28,6 @@ to pickle functions if they're passed indirectly as parameters. """ from multiprocessing import Process, Pipe, Semaphore, Value -from itertools import izip __all__ = ['spawn', 'parmap', 'Barrier'] @@ -43,7 +42,7 @@ def fun(pipe, x): def parmap(f, X): pipe = [Pipe() for x in X] proc = [Process(target=spawn(f), args=(c, x)) - for x, (p, c) in izip(X, pipe)] + for x, (p, c) in zip(X, pipe)] [p.start() for p in proc] [p.join() for p in proc] return [p.recv() for (p, c) in pipe] diff --git a/lib/spack/spack/util/naming.py b/lib/spack/spack/util/naming.py index 9a5cdee4112..1f2bfa88cf0 100644 --- a/lib/spack/spack/util/naming.py +++ b/lib/spack/spack/util/naming.py @@ -27,7 +27,7 @@ import string import itertools import re -from StringIO import StringIO +from six import StringIO import spack diff --git a/lib/spack/spack/util/pattern.py b/lib/spack/spack/util/pattern.py index b5731ccf084..7a1109f2d2e 100644 --- a/lib/spack/spack/util/pattern.py +++ b/lib/spack/spack/util/pattern.py @@ -61,7 +61,7 @@ def cls_decorator(cls): # Retrieve the base class of the composite. Inspect its methods and # decide which ones will be overridden def no_special_no_private(x): - return inspect.ismethod(x) and not x.__name__.startswith('_') + return callable(x) and not x.__name__.startswith('_') # Patch the behavior of each of the methods in the previous list. # This is done associating an instance of the descriptor below to @@ -90,42 +90,25 @@ def getter(*args, **kwargs): return getter dictionary_for_type_call = {} + # Construct a dictionary with the methods explicitly passed as name if method_list is not None: - # python@2.7: method_list_dict = {name: IterateOver(name) for name - # in method_list} - method_list_dict = {} - for name in method_list: - method_list_dict[name] = IterateOver(name) - dictionary_for_type_call.update(method_list_dict) + dictionary_for_type_call.update( + (name, IterateOver(name)) for name in method_list) + # Construct a dictionary with the methods inspected from the interface if interface is not None: - ########## - # python@2.7: interface_methods = {name: method for name, method in - # inspect.getmembers(interface, predicate=no_special_no_private)} - interface_methods = {} - for name, method in inspect.getmembers( - interface, predicate=no_special_no_private): - interface_methods[name] = method - ########## - # python@2.7: interface_methods_dict = {name: IterateOver(name, - # method) for name, method in interface_methods.iteritems()} - interface_methods_dict = {} - for name, method in interface_methods.iteritems(): - interface_methods_dict[name] = IterateOver(name, method) - ########## - dictionary_for_type_call.update(interface_methods_dict) + dictionary_for_type_call.update( + (name, IterateOver(name, method)) + for name, method in inspect.getmembers( + interface, predicate=no_special_no_private)) + # Get the methods that are defined in the scope of the composite # class and override any previous definition - ########## - # python@2.7: cls_method = {name: method for name, method in - # inspect.getmembers(cls, predicate=inspect.ismethod)} - cls_method = {} - for name, method in inspect.getmembers( - cls, predicate=inspect.ismethod): - cls_method[name] = method - ########## - dictionary_for_type_call.update(cls_method) + dictionary_for_type_call.update( + (name, method) for name, method in inspect.getmembers( + cls, predicate=inspect.ismethod)) + # Generate the new class on the fly and return it # FIXME : inherit from interface if we start to use ABC classes? wrapper_class = type(cls.__name__, (cls, container), diff --git a/lib/spack/spack/util/prefix.py b/lib/spack/spack/util/prefix.py index 985d8622693..bc6808f3508 100644 --- a/lib/spack/spack/util/prefix.py +++ b/lib/spack/spack/util/prefix.py @@ -35,11 +35,11 @@ class Prefix(str): For example, you can do something like this:: prefix = Prefix('/usr') - print prefix.lib - print prefix.lib64 - print prefix.bin - print prefix.share - print prefix.man4 + print(prefix.lib) + print(prefix.lib64) + print(prefix.bin) + print(prefix.share) + print(prefix.man4) This program would print: @@ -52,7 +52,7 @@ class Prefix(str): Prefix objects behave identically to strings. In fact, they subclass str. So operators like + are legal: - print "foobar " + prefix + print("foobar " + prefix) This prints 'foobar /usr". All of this is meant to make custom installs easy. diff --git a/lib/spack/spack/util/spack_json.py b/lib/spack/spack/util/spack_json.py index 236eef89835..0090cf89ca7 100644 --- a/lib/spack/spack/util/spack_json.py +++ b/lib/spack/spack/util/spack_json.py @@ -24,6 +24,9 @@ ############################################################################## """Simple wrapper around JSON to guarantee consistent use of load/dump. """ import json +from six import string_types +from six import iteritems + import spack.error __all__ = ['load', 'dump', 'SpackJSONError'] @@ -36,7 +39,7 @@ def load(stream): """Spack JSON needs to be ordered to support specs.""" - if isinstance(stream, basestring): + if isinstance(stream, string_types): return _byteify(json.loads(stream, object_hook=_byteify), ignore_dicts=True) else: @@ -64,7 +67,7 @@ def _byteify(data, ignore_dicts=False): if isinstance(data, dict) and not ignore_dicts: return dict((_byteify(key, ignore_dicts=True), _byteify(value, ignore_dicts=True)) for key, value in - data.iteritems()) + iteritems(data)) # if it's anything else, return it in its original form return data diff --git a/lib/spack/spack/util/spack_yaml.py b/lib/spack/spack/util/spack_yaml.py index 9d4c607908b..c49393af9c2 100644 --- a/lib/spack/spack/util/spack_yaml.py +++ b/lib/spack/spack/util/spack_yaml.py @@ -137,7 +137,7 @@ def construct_mapping(self, node, deep=False): key = self.construct_object(key_node, deep=deep) try: hash(key) - except TypeError, exc: + except TypeError as exc: raise ConstructorError( "while constructing a mapping", node.start_mark, "found unacceptable key (%s)" % exc, key_node.start_mark) diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index 935532266fa..8791f727535 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -25,10 +25,20 @@ import re import os import sys -import urllib2 -import urlparse + +from six.moves.urllib.request import urlopen, Request +from six.moves.urllib.error import URLError from multiprocessing import Pool -from HTMLParser import HTMLParser, HTMLParseError + +try: + # Python 2 had these in the HTMLParser package. + from HTMLParser import HTMLParser, HTMLParseError +except ImportError: + # In Python 3, things moved to html.parser + from html.parser import HTMLParser + # Also, HTMLParseError is deprecated and never raised. + class HTMLParseError: + pass import llnl.util.tty as tty @@ -80,9 +90,9 @@ def _spider(args): # It would be nice to do this with the HTTP Accept header to avoid # one round-trip. However, most servers seem to ignore the header # if you ask for a tarball with Accept: text/html. - req = urllib2.Request(url) + req = Request(url) req.get_method = lambda: "HEAD" - resp = urllib2.urlopen(req, timeout=TIMEOUT) + resp = urlopen(req, timeout=TIMEOUT) if "Content-type" not in resp.headers: tty.debug("ignoring page " + url) @@ -95,7 +105,7 @@ def _spider(args): # Do the real GET request when we know it's just HTML. req.get_method = lambda: "GET" - response = urllib2.urlopen(req, timeout=TIMEOUT) + response = urlopen(req, timeout=TIMEOUT) response_url = response.geturl() # Read the page and and stick it in the map we'll return @@ -142,7 +152,7 @@ def _spider(args): pool.terminate() pool.join() - except urllib2.URLError as e: + except URLError as e: tty.debug(e) if raise_on_error: raise spack.error.NoNetworkConnectionError(str(e), url) diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 0d68a709e86..739a8c49246 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -47,6 +47,7 @@ import numbers from bisect import bisect_left from functools import wraps +from six import string_types from functools_backport import total_ordering from spack.util.spack_yaml import syaml_dict @@ -216,7 +217,7 @@ def a_or_n(seg): segments = [a_or_n(seg) for seg in version] wc = segments[0] - for i in xrange(1, len(separators)): + for i in range(1, len(separators)): wc += '(?:' + separators[i] + segments[i] # Add possible alpha or beta indicator at the end of each segemnt @@ -229,18 +230,24 @@ def __iter__(self): def __getitem__(self, idx): cls = type(self) + if isinstance(idx, numbers.Integral): return self.version[idx] + elif isinstance(idx, slice): # Currently len(self.separators) == len(self.version) - 1 extendend_separators = self.separators + ('',) string_arg = [] - for token, sep in zip(self.version, extendend_separators)[idx]: + + pairs = zip(self.version[idx], extendend_separators[idx]) + for token, sep in pairs: string_arg.append(str(token)) string_arg.append(str(sep)) + string_arg.pop() # We don't need the last separator string_arg = ''.join(string_arg) return cls(string_arg) + message = '{cls.__name__} indices must be integers' raise TypeError(message.format(cls=cls)) @@ -375,9 +382,9 @@ def intersection(self, other): class VersionRange(object): def __init__(self, start, end): - if isinstance(start, basestring): + if isinstance(start, string_types): start = Version(start) - if isinstance(end, basestring): + if isinstance(end, string_types): end = Version(end) self.start = start @@ -568,7 +575,7 @@ class VersionList(object): def __init__(self, vlist=None): self.versions = [] if vlist is not None: - if isinstance(vlist, basestring): + if isinstance(vlist, string_types): vlist = _string_to_version(vlist) if type(vlist) == VersionList: self.versions = vlist.versions @@ -796,7 +803,7 @@ def ver(obj): """ if isinstance(obj, (list, tuple)): return VersionList(obj) - elif isinstance(obj, basestring): + elif isinstance(obj, string_types): return _string_to_version(obj) elif isinstance(obj, (int, float)): return _string_to_version(str(obj)) From 0cd6555388ad6fafc110bc2aa60f256acf920bcd Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 7 Mar 2017 15:18:48 -0800 Subject: [PATCH 0515/2394] Resolve Python2/Python3 unicode issues by using str() - Remove ascii encoding assumption from spack_yaml - proc.communicate() returns bytes; convert to str before adding. - Fix various byte string/unicode issues for Python 2/3 support - Need to decode subprocess output as utf-8 in from_sourcing_files. - Fix comments in strify() --- lib/spack/spack/environment.py | 2 +- lib/spack/spack/stage.py | 2 +- lib/spack/spack/test/architecture.py | 4 ++-- lib/spack/spack/util/crypto.py | 8 +++++++- lib/spack/spack/util/executable.py | 4 ++-- lib/spack/spack/util/spack_json.py | 1 + lib/spack/spack/util/spack_yaml.py | 7 +------ 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index 76b8e132d46..eadfa45efb6 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -310,7 +310,7 @@ def from_sourcing_files(*args, **kwargs): proc.wait() if proc.returncode != 0: raise RuntimeError('sourcing files returned a non-zero exit code') - output = ''.join([line for line in proc.stdout]) + output = ''.join([line.decode('utf-8') for line in proc.stdout]) # Construct a dictionaries of the environment before and after # sourcing the files, so that we can diff them. diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 03b7f5ef330..cf294be93be 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -226,7 +226,7 @@ def __init__( self._lock = None if lock: if self.name not in Stage.stage_locks: - sha1 = hashlib.sha1(self.name).digest() + sha1 = hashlib.sha1(self.name.encode('utf-8')).digest() lock_id = prefix_bits(sha1, bit_length(sys.maxsize)) stage_lock_path = join_path(spack.stage_path, '.lock') diff --git a/lib/spack/spack/test/architecture.py b/lib/spack/spack/test/architecture.py index fb4113361c4..8f257cf0dc9 100644 --- a/lib/spack/spack/test/architecture.py +++ b/lib/spack/spack/test/architecture.py @@ -138,8 +138,8 @@ def test_user_defaults(config): def test_user_input_combination(config): platform = spack.architecture.platform() - os_list = platform.operating_sys.keys() - target_list = platform.targets.keys() + os_list = list(platform.operating_sys.keys()) + target_list = list(platform.targets.keys()) additional = ["fe", "be", "frontend", "backend"] os_list.extend(additional) diff --git a/lib/spack/spack/util/crypto.py b/lib/spack/spack/util/crypto.py index d0747160223..29651680566 100644 --- a/lib/spack/spack/util/crypto.py +++ b/lib/spack/spack/util/crypto.py @@ -22,6 +22,7 @@ # 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 sys import hashlib """Set of acceptable hashes that Spack will use.""" @@ -104,11 +105,16 @@ def check(self, filename): def prefix_bits(byte_array, bits): """Return the first bits of a byte array as an integer.""" + if sys.version_info < (3,): + b2i = ord # In Python 2, indexing byte_array gives str + else: + b2i = lambda b: b # In Python 3, indexing byte_array gives int + result = 0 n = 0 for i, b in enumerate(byte_array): n += 8 - result = (result << 8) | ord(b) + result = (result << 8) | b2i(b) if n >= bits: break diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 372d0019e7c..1d7f019fdf2 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -178,9 +178,9 @@ def streamify(arg, mode): if output is str or error is str: result = '' if output is str: - result += out + result += out.decode('utf-8') if error is str: - result += err + result += err.decode('utf-8') return result except OSError as e: diff --git a/lib/spack/spack/util/spack_json.py b/lib/spack/spack/util/spack_json.py index 0090cf89ca7..6b26ad5a98d 100644 --- a/lib/spack/spack/util/spack_json.py +++ b/lib/spack/spack/util/spack_json.py @@ -68,6 +68,7 @@ def _byteify(data, ignore_dicts=False): return dict((_byteify(key, ignore_dicts=True), _byteify(value, ignore_dicts=True)) for key, value in iteritems(data)) + # if it's anything else, return it in its original form return data diff --git a/lib/spack/spack/util/spack_yaml.py b/lib/spack/spack/util/spack_yaml.py index c49393af9c2..a8b773ac0c1 100644 --- a/lib/spack/spack/util/spack_yaml.py +++ b/lib/spack/spack/util/spack_yaml.py @@ -85,11 +85,6 @@ class OrderedLineLoader(Loader): def construct_yaml_str(self, node): value = self.construct_scalar(node) - try: - value = value.encode('ascii') - except UnicodeEncodeError: - pass - value = syaml_str(value) mark(value, node) @@ -181,7 +176,7 @@ def represent_mapping(self, tag, mapping, flow_style=None): # if it's a syaml_dict, preserve OrderedDict order. # Otherwise do the default thing. sort = not isinstance(mapping, syaml_dict) - mapping = mapping.items() + mapping = list(mapping.items()) if sort: mapping.sort() From fe6f39b66287a4b3ecade2d776348d44920ec651 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 10 Mar 2017 22:28:01 -0800 Subject: [PATCH 0516/2394] Use key sorting instead of cmp() - Get rid of pkgsort() usage for preferred variants. - Concretization is now entirely based on key-based sorting. - Remove PreferredPackages class and various spec cmp() methods. - Replace with PackagePrefs class that implements a key function for sorting according to packages.yaml. - Clear package pref caches on config test. - Explicit compare methods instead of total_ordering in Version. - Our total_ordering backport wasn't making Python 3 happy for some reason. - Python 3's functools.total_ordering and spelling the operators out fixes the problem. - Fix unicode issues with spec hashes, json, & YAML - Try to use str everywhere and avoid unicode objects in python 2. --- lib/spack/external/functools_backport.py | 17 + lib/spack/llnl/util/lang.py | 6 + lib/spack/spack/__init__.py | 1 - lib/spack/spack/concretize.py | 178 ++++------ lib/spack/spack/fetch_strategy.py | 1 - lib/spack/spack/package_prefs.py | 319 +++++++----------- lib/spack/spack/parse.py | 5 +- lib/spack/spack/provider_index.py | 4 +- lib/spack/spack/spec.py | 51 +-- lib/spack/spack/stage.py | 1 + .../spack/test/concretize_preferences.py | 8 +- lib/spack/spack/test/conftest.py | 5 +- lib/spack/spack/test/directory_layout.py | 18 +- lib/spack/spack/test/spec_semantics.py | 2 +- lib/spack/spack/test/spec_yaml.py | 9 +- lib/spack/spack/util/spack_json.py | 30 +- lib/spack/spack/util/spack_yaml.py | 7 +- lib/spack/spack/util/web.py | 1 + lib/spack/spack/version.py | 43 ++- 19 files changed, 314 insertions(+), 392 deletions(-) diff --git a/lib/spack/external/functools_backport.py b/lib/spack/external/functools_backport.py index 19f0903c822..b3c913ffd72 100644 --- a/lib/spack/external/functools_backport.py +++ b/lib/spack/external/functools_backport.py @@ -28,3 +28,20 @@ def total_ordering(cls): opfunc.__doc__ = getattr(int, opname).__doc__ setattr(cls, opname, opfunc) return cls + + +@total_ordering +class reverse_order(object): + """Helper for creating key functions. + + This is a wrapper that inverts the sense of the natural + comparisons on the object. + """ + def __init__(self, value): + self.value = value + + def __eq__(self, other): + return other.value == self.value + + def __lt__(self, other): + return other.value < self.value diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index ad620630616..ec4c25feadc 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -33,6 +33,12 @@ ignore_modules = [r'^\.#', '~$'] +class classproperty(property): + """classproperty decorator: like property but for classmethods.""" + def __get__(self, cls, owner): + return self.fget.__get__(None, owner)() + + def index_by(objects, *funcs): """Create a hierarchy of dictionaries by splitting the supplied set of objects on unique values of the supplied functions. diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index b522804d8db..345a804dfea 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -78,7 +78,6 @@ import spack.config import spack.fetch_strategy from spack.file_cache import FileCache -from spack.package_prefs import PreferredPackages from spack.abi import ABI from spack.concretize import DefaultConcretizer from spack.version import Version diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 6ab796810be..6c230a151b7 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -35,87 +35,77 @@ """ from __future__ import print_function from six import iteritems +from spack.version import * +from itertools import chain +from ordereddict_backport import OrderedDict +from functools_backport import reverse_order import spack import spack.spec import spack.compilers import spack.architecture import spack.error -from spack.version import * -from functools import partial -from itertools import chain from spack.package_prefs import * class DefaultConcretizer(object): - """This class doesn't have any state, it just provides some methods for concretization. You can subclass it to override just some of the default concretization strategies, or you can override all of them. """ - def _valid_virtuals_and_externals(self, spec): """Returns a list of candidate virtual dep providers and external - packages that coiuld be used to concretize a spec.""" + packages that coiuld be used to concretize a spec. + + Preferred specs come first in the list. + """ # First construct a list of concrete candidates to replace spec with. candidates = [spec] + pref_key = lambda spec: 0 # no-op pref key + if spec.virtual: - providers = spack.repo.providers_for(spec) - if not providers: - raise UnsatisfiableProviderSpecError(providers[0], spec) - spec_w_preferred_providers = find_spec( - spec, - lambda x: pkgsort().spec_has_preferred_provider( - x.name, spec.name)) - if not spec_w_preferred_providers: - spec_w_preferred_providers = spec - provider_cmp = partial(pkgsort().provider_compare, - spec_w_preferred_providers.name, - spec.name) - candidates = sorted(providers, cmp=provider_cmp) + candidates = spack.repo.providers_for(spec) + if not candidates: + raise UnsatisfiableProviderSpecError(candidates[0], spec) + + # Find nearest spec in the DAG (up then down) that has prefs. + spec_w_prefs = find_spec( + spec, lambda p: PackagePrefs.has_preferred_providers( + p.name, spec.name), + spec) # default to spec itself. + + # Create a key to sort candidates by the prefs we found + pref_key = PackagePrefs(spec_w_prefs.name, 'providers', spec.name) # For each candidate package, if it has externals, add those # to the usable list. if it's not buildable, then *only* add # the externals. - usable = [] + # + # Use an OrderedDict to avoid duplicates (use it like a set) + usable = OrderedDict() for cspec in candidates: if is_spec_buildable(cspec): - usable.append(cspec) + usable[cspec] = True + externals = spec_externals(cspec) for ext in externals: if ext.satisfies(spec): - usable.append(ext) + usable[ext] = True # If nothing is in the usable list now, it's because we aren't # allowed to build anything. if not usable: raise NoBuildError(spec) - def cmp_externals(a, b): - if a.name != b.name and (not a.external or a.external_module and - not b.external and b.external_module): - # We're choosing between different providers, so - # maintain order from provider sort - index_of_a = next(i for i in range(0, len(candidates)) - if a.satisfies(candidates[i])) - index_of_b = next(i for i in range(0, len(candidates)) - if b.satisfies(candidates[i])) - return index_of_a - index_of_b + # Use a sort key to order the results + return sorted(usable, key=lambda spec: ( + not (spec.external or spec.external_module), # prefer externals + pref_key(spec), # respect prefs + spec.name, # group by name + reverse_order(spec.versions), # latest version + spec # natural order + )) - result = cmp_specs(a, b) - if result != 0: - return result - - # prefer external packages to internal packages. - if a.external is None or b.external is None: - return -cmp(a.external, b.external) - else: - return cmp(a.external, b.external) - - usable.sort(cmp=cmp_externals) - return usable - - # XXX(deptypes): Look here. def choose_virtual_or_external(self, spec): """Given a list of candidate virtual and external packages, try to find one that is most ABI compatible. @@ -126,25 +116,16 @@ def choose_virtual_or_external(self, spec): # Find the nearest spec in the dag that has a compiler. We'll # use that spec to calibrate compiler compatibility. - abi_exemplar = find_spec(spec, lambda x: x.compiler) - if not abi_exemplar: - abi_exemplar = spec.root - - # Make a list including ABI compatibility of specs with the exemplar. - strict = [spack.abi.compatible(c, abi_exemplar) for c in candidates] - loose = [spack.abi.compatible(c, abi_exemplar, loose=True) - for c in candidates] - keys = zip(strict, loose, candidates) + abi_exemplar = find_spec(spec, lambda x: x.compiler, spec.root) # Sort candidates from most to least compatibility. - # Note: - # 1. We reverse because True > False. - # 2. Sort is stable, so c's keep their order. - keys.sort(key=lambda k: k[:2], reverse=True) - - # Pull the candidates back out and return them in order - candidates = [c for s, l, c in keys] - return candidates + # We reverse because True > False. + # Sort is stable, so candidates keep their order. + return sorted(candidates, + reverse=True, + key=lambda spec: ( + spack.abi.compatible(spec, abi_exemplar, loose=True), + spack.abi.compatible(spec, abi_exemplar))) def concretize_version(self, spec): """If the spec is already concrete, return. Otherwise take @@ -164,26 +145,12 @@ def concretize_version(self, spec): if spec.versions.concrete: return False - # If there are known available versions, return the most recent - # version that satisfies the spec - pkg = spec.package - - # ---------- Produce prioritized list of versions - # Get list of preferences from packages.yaml - preferred = pkgsort() - # NOTE: pkgsort() == spack.package_prefs.PreferredPackages() - - yaml_specs = [ - x[0] for x in - preferred._spec_for_pkgname(spec.name, 'version', None)] - n = len(yaml_specs) - yaml_index = dict( - [(spc, n - index) for index, spc in enumerate(yaml_specs)]) - # List of versions we could consider, in sorted order - unsorted_versions = [ - v for v in pkg.versions - if any(v.satisfies(sv) for sv in spec.versions)] + pkg = spec.package + usable = [v for v in pkg.versions + if any(v.satisfies(sv) for sv in spec.versions)] + + yaml_prefs = PackagePrefs(spec.name, 'version') # The keys below show the order of precedence of factors used # to select a version when concretizing. The item with @@ -191,12 +158,11 @@ def concretize_version(self, spec): # # NOTE: When COMPARING VERSIONS, the '@develop' version is always # larger than other versions. BUT when CONCRETIZING, - # the largest NON-develop version is selected by - # default. - keys = [( + # the largest NON-develop version is selected by default. + keyfn = lambda v: ( # ------- Special direction from the user # Respect order listed in packages.yaml - yaml_index.get(v, -1), + -yaml_prefs(v), # The preferred=True flag (packages or packages.yaml or both?) pkg.versions.get(Version(v)).get('preferred', False), @@ -211,15 +177,11 @@ def concretize_version(self, spec): # a) develop > everything (disabled by "not v.isdevelop() above) # b) numeric > non-numeric # c) Numeric or string comparison - v) for v in unsorted_versions] - keys.sort(reverse=True) + v) + usable.sort(key=keyfn, reverse=True) - # List of versions in complete sorted order - valid_versions = [x[-1] for x in keys] - # -------------------------- - - if valid_versions: - spec.versions = ver([valid_versions[0]]) + if usable: + spec.versions = ver([usable[0]]) else: # We don't know of any SAFE versions that match the given # spec. Grab the spec's versions and grab the highest @@ -278,16 +240,15 @@ def concretize_variants(self, spec): the package specification. """ changed = False - preferred_variants = pkgsort().spec_preferred_variants( - spec.package_class.name) + preferred_variants = PackagePrefs.preferred_variants(spec.name) for name, variant in spec.package_class.variants.items(): if name not in spec.variants: changed = True if name in preferred_variants: spec.variants[name] = preferred_variants.get(name) else: - spec.variants[name] = \ - spack.spec.VariantSpec(name, variant.default) + spec.variants[name] = spack.spec.VariantSpec( + name, variant.default) return changed def concretize_compiler(self, spec): @@ -329,12 +290,9 @@ def _proper_compiler_style(cspec, aspec): spec.compiler, spec.architecture) return False - # Find the another spec that has a compiler, or the root if none do + # Find another spec that has a compiler, or the root if none do other_spec = spec if spec.compiler else find_spec( - spec, lambda x: x.compiler) - - if not other_spec: - other_spec = spec.root + spec, lambda x: x.compiler, spec.root) other_compiler = other_spec.compiler assert(other_spec) @@ -353,9 +311,9 @@ def _proper_compiler_style(cspec, aspec): if not compiler_list: # No compiler with a satisfactory spec was found raise UnavailableCompilerVersionError(other_compiler) - cmp_compilers = partial( - pkgsort().compiler_compare, other_spec.name) - matches = sorted(compiler_list, cmp=cmp_compilers) + + ppk = PackagePrefs(other_spec.name, 'compiler') + matches = sorted(compiler_list, key=ppk) # copy concrete version into other_compiler try: @@ -420,7 +378,7 @@ def concretize_compiler_flags(self, spec): return ret -def find_spec(spec, condition): +def find_spec(spec, condition, default=None): """Searches the dag from spec in an intelligent order and looks for a spec that matches a condition""" # First search parents, then search children @@ -447,7 +405,7 @@ def find_spec(spec, condition): if condition(spec): return spec - return None # Nothing matched the condition. + return default # Nothing matched the condition; return default. def _compiler_concretization_failure(compiler_spec, arch): @@ -466,7 +424,7 @@ def _compiler_concretization_failure(compiler_spec, arch): class NoCompilersForArchError(spack.error.SpackError): def __init__(self, arch, available_os_targets): err_msg = ("No compilers found" - " for operating system %s and target %s." + " for operating system %s and target %s." "\nIf previous installations have succeeded, the" " operating system may have been updated." % (arch.platform_os, arch.target)) @@ -485,7 +443,6 @@ def __init__(self, arch, available_os_targets): class UnavailableCompilerVersionError(spack.error.SpackError): - """Raised when there is no available compiler that satisfies a compiler spec.""" @@ -500,7 +457,6 @@ def __init__(self, compiler_spec, arch=None): class NoValidVersionError(spack.error.SpackError): - """Raised when there is no way to have a concrete version for a particular spec.""" diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index 0f97dda8b82..38752b3fc16 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -90,7 +90,6 @@ class FetchStrategy(with_metaclass(FSMeta, object)): enabled = False # Non-abstract subclasses should be enabled. required_attributes = None # Attributes required in version() args. - def __init__(self): # The stage is initialized late, so that fetch strategies can be # constructed at package construction time. This is where things diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py index 3dc90a8eb90..f9dac2bef05 100644 --- a/lib/spack/spack/package_prefs.py +++ b/lib/spack/spack/package_prefs.py @@ -25,11 +25,22 @@ from six import string_types from six import iteritems +from llnl.util.lang import classproperty + import spack import spack.error from spack.version import * +_lesser_spec_types = {'compiler': spack.spec.CompilerSpec, + 'version': VersionList} + + +def _spec_type(component): + """Map from component name to spec type for package prefs.""" + return _lesser_spec_types.get(component, spack.spec.Spec) + + def get_packages_config(): """Wrapper around get_packages_config() to validate semantics.""" config = spack.config.get_config('packages') @@ -51,177 +62,141 @@ def get_packages_config(): return config -class PreferredPackages(object): - def __init__(self): - self.preferred = get_packages_config() - self._spec_for_pkgname_cache = {} +class PackagePrefs(object): + """Defines the sort order for a set of specs. - # Given a package name, sort component (e.g, version, compiler, ...), and - # a second_key (used by providers), return the list - def _order_for_package(self, pkgname, component, second_key, - test_all=True): + Spack's package preference implementation uses PackagePrefss to + define sort order. The PackagePrefs class looks at Spack's + packages.yaml configuration and, when called on a spec, returns a key + that can be used to sort that spec in order of the user's + preferences. + + You can use it like this: + + # key function sorts CompilerSpecs for `mpich` in order of preference + kf = PackagePrefs('mpich', 'compiler') + compiler_list.sort(key=kf) + + Or like this: + + # key function to sort VersionLists for OpenMPI in order of preference. + kf = PackagePrefs('openmpi', 'version') + version_list.sort(key=kf) + + Optionally, you can sort in order of preferred virtual dependency + providers. To do that, provide 'providers' and a third argument + denoting the virtual package (e.g., ``mpi``): + + kf = PackagePrefs('trilinos', 'providers', 'mpi') + provider_spec_list.sort(key=kf) + + """ + _packages_config_cache = None + _spec_cache = {} + + def __init__(self, pkgname, component, vpkg=None): + self.pkgname = pkgname + self.component = component + self.vpkg = vpkg + + def __call__(self, spec): + """Return a key object (an index) that can be used to sort spec. + + Sort is done in package order. We don't cache the result of + this function as Python's sort functions already ensure that the + key function is called at most once per sorted element. + """ + spec_order = self._specs_for_pkg( + self.pkgname, self.component, self.vpkg) + + # integer is the index of the first spec in order that satisfies + # spec, or it's a number larger than any position in the order. + return next( + (i for i, s in enumerate(spec_order) if spec.satisfies(s)), + len(spec_order)) + + @classproperty + @classmethod + def _packages_config(cls): + if cls._packages_config_cache is None: + cls._packages_config_cache = get_packages_config() + return cls._packages_config_cache + + @classmethod + def _order_for_package(cls, pkgname, component, vpkg=None, all=True): + """Given a package name, sort component (e.g, version, compiler, ...), + and an optional vpkg, return the list from the packages config. + """ pkglist = [pkgname] - if test_all: + if all: pkglist.append('all') + for pkg in pkglist: - order = self.preferred.get(pkg, {}).get(component, {}) - if isinstance(order, dict) and second_key: - order = order.get(second_key, {}) + pkg_entry = cls._packages_config.get(pkg) + if not pkg_entry: + continue + + order = pkg_entry.get(component) if not order: continue - return [str(s).strip() for s in order] + + # vpkg is one more level + if vpkg is not None: + order = order.get(vpkg) + + if order: + return [str(s).strip() for s in order] + return [] - # A generic sorting function. Given a package name and sort - # component, return less-than-0, 0, or greater-than-0 if - # a is respectively less-than, equal to, or greater than b. - def _component_compare(self, pkgname, component, a, b, - reverse_natural_compare, second_key): - if a is None: - return -1 - if b is None: - return 1 - orderlist = self._order_for_package(pkgname, component, second_key) - a_in_list = str(a) in orderlist - b_in_list = str(b) in orderlist - if a_in_list and not b_in_list: - return -1 - elif b_in_list and not a_in_list: - return 1 + @classmethod + def _specs_for_pkg(cls, pkgname, component, vpkg=None): + """Given a sort order specified by the pkgname/component/second_key, + return a list of CompilerSpecs, VersionLists, or Specs for + that sorting list. + """ + key = (pkgname, component, vpkg) - cmp_a = None - cmp_b = None - reverse = None - if not a_in_list and not b_in_list: - cmp_a = a - cmp_b = b - reverse = -1 if reverse_natural_compare else 1 - else: - cmp_a = orderlist.index(str(a)) - cmp_b = orderlist.index(str(b)) - reverse = 1 + specs = cls._spec_cache.get(key) + if specs is None: + pkglist = cls._order_for_package(pkgname, component, vpkg) + spec_type = _spec_type(component) + specs = [spec_type(s) for s in pkglist] + cls._spec_cache[key] = specs - if cmp_a < cmp_b: - return -1 * reverse - elif cmp_a > cmp_b: - return 1 * reverse - else: - return 0 + return specs - # A sorting function for specs. Similar to component_compare, but - # a and b are considered to match entries in the sorting list if they - # satisfy the list component. - def _spec_compare(self, pkgname, component, a, b, - reverse_natural_compare, second_key): - if not a or (not a.concrete and not second_key): - return -1 - if not b or (not b.concrete and not second_key): - return 1 - specs = self._spec_for_pkgname(pkgname, component, second_key) - a_index = None - b_index = None - reverse = -1 if reverse_natural_compare else 1 - for i, cspec in enumerate(specs): - if a_index is None and (cspec.satisfies(a) or a.satisfies(cspec)): - a_index = i - if b_index: - break - if b_index is None and (cspec.satisfies(b) or b.satisfies(cspec)): - b_index = i - if a_index: - break + @classmethod + def clear_caches(cls): + cls._packages_config_cache = None + cls._spec_cache = {} - if a_index is not None and b_index is None: - return -1 - elif a_index is None and b_index is not None: - return 1 - elif a_index is not None and b_index == a_index: - return -1 * cmp(a, b) - elif (a_index is not None and b_index is not None and - a_index != b_index): - return cmp(a_index, b_index) - else: - return cmp(a, b) * reverse + @classmethod + def has_preferred_providers(cls, pkgname, vpkg): + """Whether specific package has a preferred vpkg providers.""" + return bool(cls._order_for_package(pkgname, 'providers', vpkg, False)) - # Given a sort order specified by the pkgname/component/second_key, return - # a list of CompilerSpecs, VersionLists, or Specs for that sorting list. - def _spec_for_pkgname(self, pkgname, component, second_key): - key = (pkgname, component, second_key) - if key not in self._spec_for_pkgname_cache: - pkglist = self._order_for_package(pkgname, component, second_key) - if component == 'compiler': - self._spec_for_pkgname_cache[key] = \ - [spack.spec.CompilerSpec(s) for s in pkglist] - elif component == 'version': - self._spec_for_pkgname_cache[key] = \ - [VersionList(s) for s in pkglist] - else: - self._spec_for_pkgname_cache[key] = \ - [spack.spec.Spec(s) for s in pkglist] - return self._spec_for_pkgname_cache[key] - - def provider_compare(self, pkgname, provider_str, a, b): - """Return less-than-0, 0, or greater than 0 if a is respecively - less-than, equal-to, or greater-than b. A and b are possible - implementations of provider_str. One provider is less-than another - if it is preferred over the other. For example, - provider_compare('scorep', 'mpi', 'mvapich', 'openmpi') would - return -1 if mvapich should be preferred over openmpi for scorep.""" - return self._spec_compare(pkgname, 'providers', a, b, False, - provider_str) - - def spec_has_preferred_provider(self, pkgname, provider_str): - """Return True iff the named package has a list of preferred - providers""" - return bool(self._order_for_package(pkgname, 'providers', - provider_str, False)) - - def spec_preferred_variants(self, pkgname): - """Return a VariantMap of preferred variants and their values""" - for pkg in (pkgname, 'all'): - variants = self.preferred.get(pkg, {}).get('variants', '') + @classmethod + def preferred_variants(cls, pkg_name): + """Return a VariantMap of preferred variants/values for a spec.""" + for pkg in (pkg_name, 'all'): + variants = cls._packages_config.get(pkg, {}).get('variants', '') if variants: break + + # allow variants to be list or string if not isinstance(variants, string_types): variants = " ".join(variants) - pkg = spack.repo.get(pkgname) - spec = spack.spec.Spec("%s %s" % (pkgname, variants)) + # Only return variants that are actually supported by the package + pkg = spack.repo.get(pkg_name) + spec = spack.spec.Spec("%s %s" % (pkg_name, variants)) return dict((name, variant) for name, variant in spec.variants.items() if name in pkg.variants) - def version_compare(self, pkgname, a, b): - """Return less-than-0, 0, or greater than 0 if version a of pkgname is - respectively less-than, equal-to, or greater-than version b of - pkgname. One version is less-than another if it is preferred over - the other.""" - return self._spec_compare(pkgname, 'version', a, b, True, None) - - def variant_compare(self, pkgname, a, b): - """Return less-than-0, 0, or greater than 0 if variant a of pkgname is - respectively less-than, equal-to, or greater-than variant b of - pkgname. One variant is less-than another if it is preferred over - the other.""" - return self._component_compare(pkgname, 'variant', a, b, False, None) - - def architecture_compare(self, pkgname, a, b): - """Return less-than-0, 0, or greater than 0 if architecture a of pkgname - is respectively less-than, equal-to, or greater-than architecture b - of pkgname. One architecture is less-than another if it is preferred - over the other.""" - return self._component_compare(pkgname, 'architecture', a, b, - False, None) - - def compiler_compare(self, pkgname, a, b): - """Return less-than-0, 0, or greater than 0 if compiler a of pkgname is - respecively less-than, equal-to, or greater-than compiler b of - pkgname. One compiler is less-than another if it is preferred over - the other.""" - return self._spec_compare(pkgname, 'compiler', a, b, False, None) - def spec_externals(spec): - """Return a list of external specs (with external directory path filled in), + """Return a list of external specs (w/external directory path filled in), one for each known external installation.""" # break circular import. from spack.build_environment import get_path_from_module @@ -255,7 +230,8 @@ def spec_externals(spec): if external_spec.satisfies(spec): external_specs.append(external_spec) - return external_specs + # defensively copy returned specs + return [s.copy() for s in external_specs] def is_spec_buildable(spec): @@ -268,50 +244,5 @@ def is_spec_buildable(spec): return allpkgs[spec.name]['buildable'] -def cmp_specs(lhs, rhs): - # Package name sort order is not configurable, always goes alphabetical - if lhs.name != rhs.name: - return cmp(lhs.name, rhs.name) - - # Package version is second in compare order - pkgname = lhs.name - if lhs.versions != rhs.versions: - return pkgsort().version_compare( - pkgname, lhs.versions, rhs.versions) - - # Compiler is third - if lhs.compiler != rhs.compiler: - return pkgsort().compiler_compare( - pkgname, lhs.compiler, rhs.compiler) - - # Variants - if lhs.variants != rhs.variants: - return pkgsort().variant_compare( - pkgname, lhs.variants, rhs.variants) - - # Architecture - if lhs.architecture != rhs.architecture: - return pkgsort().architecture_compare( - pkgname, lhs.architecture, rhs.architecture) - - # Dependency is not configurable - lhash, rhash = hash(lhs), hash(rhs) - if lhash != rhash: - return -1 if lhash < rhash else 1 - - # Equal specs - return 0 - - -_pkgsort = None - - -def pkgsort(): - global _pkgsort - if _pkgsort is None: - _pkgsort = PreferredPackages() - return _pkgsort - - class VirtualInPackagesYAMLError(spack.error.SpackError): """Raised when a disallowed virtual is found in packages.yaml""" diff --git a/lib/spack/spack/parse.py b/lib/spack/spack/parse.py index da11268bb20..880bb09b4eb 100644 --- a/lib/spack/spack/parse.py +++ b/lib/spack/spack/parse.py @@ -48,9 +48,8 @@ def __str__(self): def is_a(self, type): return self.type == type - def __cmp__(self, other): - return cmp((self.type, self.value), - (other.type, other.value)) + def __eq__(self, other): + return (self.type == other.type) and (self.value == other.value) class Lexer(object): diff --git a/lib/spack/spack/provider_index.py b/lib/spack/spack/provider_index.py index 7dee8386198..8d64d100b13 100644 --- a/lib/spack/spack/provider_index.py +++ b/lib/spack/spack/provider_index.py @@ -146,8 +146,8 @@ def providers_for(self, *vpkg_specs): if p_spec.satisfies(vspec, deps=False): providers.update(spec_set) - # Return providers in order - return sorted(providers) + # Return providers in order. Defensively copy. + return sorted(s.copy() for s in providers) # TODO: this is pretty darned nasty, and inefficient, but there # are not that many vdeps in most specs. diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 8b0e560c8a6..b7a819cc466 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -96,6 +96,7 @@ expansion when it is the first character in an id typed on the command line. """ import base64 +import sys import collections import ctypes import hashlib @@ -732,8 +733,7 @@ def _cmp_key(self): return tuple((k, tuple(v)) for k, v in sorted(iteritems(self))) def __str__(self): - sorted_keys = filter( - lambda flag: self[flag] != [], sorted(self.keys())) + sorted_keys = [k for k in sorted(self.keys()) if self[k] != []] cond_symbol = ' ' if len(sorted_keys) > 0 else '' return cond_symbol + ' '.join( str(key) + '=\"' + ' '.join( @@ -1316,7 +1316,11 @@ def dag_hash(self, length=None): yaml_text = syaml.dump( self.to_node_dict(), default_flow_style=True, width=maxint) sha = hashlib.sha1(yaml_text.encode('utf-8')) + b32_hash = base64.b32encode(sha.digest()).lower() + if sys.version_info[0] >= 3: + b32_hash = b32_hash.decode('utf-8') + if self.concrete: self._hash = b32_hash return b32_hash[:length] @@ -1567,14 +1571,12 @@ def _expand_virtual_packages(self): a problem. """ # Make an index of stuff this spec already provides - # XXX(deptype): 'link' and 'run'? self_index = ProviderIndex(self.traverse(), restrict=True) changed = False done = False while not done: done = True - # XXX(deptype): 'link' and 'run'? for spec in list(self.traverse()): replacement = None if spec.virtual: @@ -1600,7 +1602,7 @@ def _expand_virtual_packages(self): # Replace spec with the candidate and normalize copy = self.copy() - copy[spec.name]._dup(replacement.copy(deps=False)) + copy[spec.name]._dup(replacement, deps=False) try: # If there are duplicate providers or duplicate @@ -2327,9 +2329,6 @@ def _dup(self, other, deps=True, cleardeps=True): self.external_module = other.external_module self.namespace = other.namespace - self.external = other.external - self.external_module = other.external_module - # If we copy dependencies, preserve DAG structure in the new spec if deps: deptypes = alldeps # by default copy all deptypes @@ -2343,6 +2342,7 @@ def _dup(self, other, deps=True, cleardeps=True): # These fields are all cached results of expensive operations. # If we preserved the original structure, we can copy them # safely. If not, they need to be recomputed. + # TODO: dependency hashes can be copied more aggressively. if deps is True or deps == alldeps: self._hash = other._hash self._cmp_key_cache = other._cmp_key_cache @@ -2725,41 +2725,6 @@ def write(s, c): def dep_string(self): return ''.join("^" + dep.format() for dep in self.sorted_deps()) - def __cmp__(self, other): - from package_prefs import pkgsort - - # Package name sort order is not configurable, always goes alphabetical - if self.name != other.name: - return cmp(self.name, other.name) - - # Package version is second in compare order - pkgname = self.name - if self.versions != other.versions: - return pkgsort().version_compare( - pkgname, self.versions, other.versions) - - # Compiler is third - if self.compiler != other.compiler: - return pkgsort().compiler_compare( - pkgname, self.compiler, other.compiler) - - # Variants - if self.variants != other.variants: - return pkgsort().variant_compare( - pkgname, self.variants, other.variants) - - # Target - if self.architecture != other.architecture: - return pkgsort().architecture_compare( - pkgname, self.architecture, other.architecture) - - # Dependency is not configurable - if self._dependencies != other._dependencies: - return -1 if self._dependencies < other._dependencies else 1 - - # Equal specs - return 0 - def __str__(self): ret = self.format() + self.dep_string() return ret.strip() diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index cf294be93be..21db3d75c20 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -690,5 +690,6 @@ class RestageError(StageError): class ChdirError(StageError): """Raised when Spack can't change directories.""" + # Keep this in namespace for convenience FailedDownloadError = fs.FailedDownloadError diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py index 54df4e15631..bf915064b27 100644 --- a/lib/spack/spack/test/concretize_preferences.py +++ b/lib/spack/spack/test/concretize_preferences.py @@ -27,7 +27,7 @@ import spack import spack.util.spack_yaml as syaml from spack.spec import Spec -from spack.package_prefs import PreferredPackages +import spack.package_prefs @pytest.fixture() @@ -41,7 +41,7 @@ def concretize_scope(config, tmpdir): # This is kind of weird, but that's how config scopes are # set in ConfigScope.__init__ spack.config.config_scopes.pop('concretize') - spack.package_prefs._pkgsort = PreferredPackages() + spack.package_prefs.PackagePrefs.clear_caches() # reset provider index each time, too spack.repo._provider_index = None @@ -55,7 +55,7 @@ def update_packages(pkgname, section, value): """Update config and reread package list""" conf = {pkgname: {section: value}} spack.config.update_config('packages', conf, 'concretize') - spack.package_prefs._pkgsort = PreferredPackages() + spack.package_prefs.PackagePrefs.clear_caches() def assert_variant_values(spec, **variants): @@ -146,7 +146,7 @@ def test_all_is_not_a_virtual(self): spack.config.update_config('packages', conf, 'concretize') # should be no error for 'all': - spack.package_prefs._pkgsort = PreferredPackages() + spack.package_prefs.PackagePrefs.clear_caches() spack.package_prefs.get_packages_config() def test_external_mpi(self): diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index 2b7dc594ac8..fc1d6ecec28 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -168,16 +168,19 @@ def configuration_dir(tmpdir_factory, linux_os): def config(configuration_dir): """Hooks the mock configuration files into spack.config""" # Set up a mock config scope + spack.package_prefs.PackagePrefs.clear_caches() spack.config.clear_config_caches() real_scope = spack.config.config_scopes spack.config.config_scopes = ordereddict_backport.OrderedDict() spack.config.ConfigScope('site', str(configuration_dir.join('site'))) spack.config.ConfigScope('user', str(configuration_dir.join('user'))) Config = collections.namedtuple('Config', ['real', 'mock']) + yield Config(real=real_scope, mock=spack.config.config_scopes) + spack.config.config_scopes = real_scope spack.config.clear_config_caches() - + spack.package_prefs.PackagePrefs.clear_caches() @pytest.fixture(scope='module') diff --git a/lib/spack/spack/test/directory_layout.py b/lib/spack/spack/test/directory_layout.py index 2caadad0fe7..3645947b17b 100644 --- a/lib/spack/spack/test/directory_layout.py +++ b/lib/spack/spack/test/directory_layout.py @@ -92,23 +92,25 @@ def test_read_and_write_spec( # TODO: increase reuse of build dependencies. stored_deptypes = ('link', 'run') expected = spec.copy(deps=stored_deptypes) + assert expected.concrete assert expected == spec_from_file - assert expected.eq_dag # msg , spec_from_file + assert expected.eq_dag(spec_from_file) assert spec_from_file.concrete # Ensure that specs that come out "normal" are really normal. with open(spec_path) as spec_file: read_separately = Spec.from_yaml(spec_file.read()) - # TODO: revise this when build deps are in dag_hash - norm = read_separately.normalized().copy(deps=stored_deptypes) - assert norm == spec_from_file + # TODO: revise this when build deps are in dag_hash + norm = read_separately.normalized().copy(deps=stored_deptypes) + assert norm == spec_from_file + assert norm.eq_dag(spec_from_file) - # TODO: revise this when build deps are in dag_hash - conc = read_separately.concretized().copy(deps=stored_deptypes) - assert conc == spec_from_file + # TODO: revise this when build deps are in dag_hash + conc = read_separately.concretized().copy(deps=stored_deptypes) + assert conc == spec_from_file + assert conc.eq_dag(spec_from_file) - # Make sure the hash of the read-in spec is the same assert expected.dag_hash() == spec_from_file.dag_hash() # Ensure directories are properly removed diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 2f3b2b1b8de..f071bcc8330 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -293,7 +293,7 @@ def test_copy_satisfies_transitive(self): copy = spec.copy() for s in spec.traverse(): assert s.satisfies(copy[s.name]) - assert copy[s.name].satisfies(s) + assert copy[s.name].satisfies(s) def test_unsatisfiable_compiler_flag_mismatch(self): # No matchi in specs diff --git a/lib/spack/spack/test/spec_yaml.py b/lib/spack/spack/test/spec_yaml.py index e913dc84127..0bcd2de3cf2 100644 --- a/lib/spack/spack/test/spec_yaml.py +++ b/lib/spack/spack/test/spec_yaml.py @@ -27,6 +27,8 @@ YAML format preserves DAG informatoin in the spec. """ +from collections import Iterable, Mapping + import spack.util.spack_json as sjson import spack.util.spack_yaml as syaml from spack.spec import Spec @@ -78,8 +80,6 @@ def test_using_ordered_dict(builtin_mock): versions and processes. """ def descend_and_check(iterable, level=0): - from spack.util.spack_yaml import syaml_dict - from collections import Iterable, Mapping if isinstance(iterable, Mapping): assert isinstance(iterable, syaml_dict) return descend_and_check(iterable.values(), level=level + 1) @@ -95,7 +95,12 @@ def descend_and_check(iterable, level=0): for spec in specs: dag = Spec(spec) dag.normalize() + from pprint import pprint + pprint(dag.to_node_dict()) + break + level = descend_and_check(dag.to_node_dict()) + # level just makes sure we are doing something here assert level >= 5 diff --git a/lib/spack/spack/util/spack_json.py b/lib/spack/spack/util/spack_json.py index 6b26ad5a98d..82fa7008211 100644 --- a/lib/spack/spack/util/spack_json.py +++ b/lib/spack/spack/util/spack_json.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## """Simple wrapper around JSON to guarantee consistent use of load/dump. """ +import sys import json from six import string_types from six import iteritems @@ -40,11 +41,11 @@ def load(stream): """Spack JSON needs to be ordered to support specs.""" if isinstance(stream, string_types): - return _byteify(json.loads(stream, object_hook=_byteify), - ignore_dicts=True) + load = json.loads else: - return _byteify(json.load(stream, object_hook=_byteify), - ignore_dicts=True) + load = json.load + + return _strify(load(stream, object_hook=_strify), ignore_dicts=True) def dump(data, stream=None): @@ -55,18 +56,21 @@ def dump(data, stream=None): return json.dump(data, stream, **_json_dump_args) -def _byteify(data, ignore_dicts=False): - # if this is a unicode string, return its string representation - if isinstance(data, unicode): - return data.encode('utf-8') +def _strify(data, ignore_dicts=False): + # if this is a unicode string in python 2, return its string representation + if sys.version_info[0] < 3: + if isinstance(data, unicode): + return data.encode('utf-8') + # if this is a list of values, return list of byteified values if isinstance(data, list): - return [_byteify(item, ignore_dicts=True) for item in data] + return [_strify(item, ignore_dicts=True) for item in data] + # if this is a dictionary, return dictionary of byteified keys and values # but only if we haven't already byteified it if isinstance(data, dict) and not ignore_dicts: - return dict((_byteify(key, ignore_dicts=True), - _byteify(value, ignore_dicts=True)) for key, value in + return dict((_strify(key, ignore_dicts=True), + _strify(value, ignore_dicts=True)) for key, value in iteritems(data)) # if it's anything else, return it in its original form @@ -76,5 +80,5 @@ def _byteify(data, ignore_dicts=False): class SpackJSONError(spack.error.SpackError): """Raised when there are issues with JSON parsing.""" - def __init__(self, msg, yaml_error): - super(SpackJSONError, self).__init__(msg, str(yaml_error)) + def __init__(self, msg, json_error): + super(SpackJSONError, self).__init__(msg, str(json_error)) diff --git a/lib/spack/spack/util/spack_yaml.py b/lib/spack/spack/util/spack_yaml.py index a8b773ac0c1..65330043927 100644 --- a/lib/spack/spack/util/spack_yaml.py +++ b/lib/spack/spack/util/spack_yaml.py @@ -86,7 +86,6 @@ class OrderedLineLoader(Loader): def construct_yaml_str(self, node): value = self.construct_scalar(node) value = syaml_str(value) - mark(value, node) return value @@ -149,11 +148,11 @@ def construct_mapping(self, node, deep=False): # register above new constructors OrderedLineLoader.add_constructor( - u'tag:yaml.org,2002:map', OrderedLineLoader.construct_yaml_map) + 'tag:yaml.org,2002:map', OrderedLineLoader.construct_yaml_map) OrderedLineLoader.add_constructor( - u'tag:yaml.org,2002:seq', OrderedLineLoader.construct_yaml_seq) + 'tag:yaml.org,2002:seq', OrderedLineLoader.construct_yaml_seq) OrderedLineLoader.add_constructor( - u'tag:yaml.org,2002:str', OrderedLineLoader.construct_yaml_str) + 'tag:yaml.org,2002:str', OrderedLineLoader.construct_yaml_str) class OrderedLineDumper(Dumper): diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index 8791f727535..0d7d0d37925 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -36,6 +36,7 @@ except ImportError: # In Python 3, things moved to html.parser from html.parser import HTMLParser + # Also, HTMLParseError is deprecated and never raised. class HTMLParseError: pass diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 739a8c49246..c8395aeb29c 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -49,7 +49,6 @@ from functools import wraps from six import string_types -from functools_backport import total_ordering from spack.util.spack_yaml import syaml_dict __all__ = ['Version', 'VersionRange', 'VersionList', 'ver'] @@ -112,7 +111,6 @@ def _numeric_lt(self0, other): """Compares two versions, knowing they're both numeric""" -@total_ordering class Version(object): """Class to represent versions""" @@ -330,9 +328,22 @@ def __eq__(self, other): return (other is not None and type(other) == Version and self.version == other.version) + @coerced def __ne__(self, other): return not (self == other) + @coerced + def __le__(self, other): + return self == other or self < other + + @coerced + def __ge__(self, other): + return not (self < other) + + @coerced + def __gt__(self, other): + return not (self == other) and not (self < other) + def __hash__(self): return hash(self.version) @@ -378,7 +389,6 @@ def intersection(self, other): return VersionList() -@total_ordering class VersionRange(object): def __init__(self, start, end): @@ -421,9 +431,22 @@ def __eq__(self, other): type(other) == VersionRange and self.start == other.start and self.end == other.end) + @coerced def __ne__(self, other): return not (self == other) + @coerced + def __le__(self, other): + return self == other or self < other + + @coerced + def __ge__(self, other): + return not (self < other) + + @coerced + def __gt__(self, other): + return not (self == other) and not (self < other) + @property def concrete(self): return self.start if self.start == self.end else None @@ -568,7 +591,6 @@ def __str__(self): return out -@total_ordering class VersionList(object): """Sorted, non-redundant list of Versions and VersionRanges.""" @@ -761,6 +783,7 @@ def __len__(self): def __eq__(self, other): return other is not None and self.versions == other.versions + @coerced def __ne__(self, other): return not (self == other) @@ -768,6 +791,18 @@ def __ne__(self, other): def __lt__(self, other): return other is not None and self.versions < other.versions + @coerced + def __le__(self, other): + return self == other or self < other + + @coerced + def __ge__(self, other): + return not (self < other) + + @coerced + def __gt__(self, other): + return not (self == other) and not (self < other) + def __hash__(self): return hash(tuple(self.versions)) From 7f3f4930249b580bd27891299d330f8dd272ecd3 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 25 Mar 2017 22:49:46 -0700 Subject: [PATCH 0517/2394] Fix concretization bugs with virtuals and deptypes. 1. Fix #2807: Can't depend on virtual and non-virtual package - This is tested by test_my_dep_depends_on_provider_of_my_virtual_dep in the concretize.py test. - This was actually working in the test suite, but it depended on the order the dependencies were resolved in. Resolving non-virtual then virtual worked, but virtual, then non-virtual did not. - Problem was that an unnecessary copy was made of a spec that already had some dependencies set up, and the copy lost half of some of the dependency relationships. This caused the "can'd depend on X twice error". - Fix by eliminating unnecessary copy and ensuring that dep parameter of _merge_dependency is always safe to own -- i.e. it's a defensive copy from somewhere else. 2. Fix bug and simplify concretization of deptypes. - deptypes weren't being accumulated; they were being set on each DependencySpec. This could cause concretization to get into an infinite loop. - Fixed by accumulating deptypes in DependencySpec.update_deptypes() - Also simplified deptype normalization logic: deptypes are now merged in constrain() like everything else -- there is no need to merge them specially or to look at dpeendents in _merge_dependency(). - Add some docstrings to deptype tests. --- lib/spack/spack/spec.py | 52 ++++++++++++++++++-------------- lib/spack/spack/test/spec_dag.py | 12 ++++++-- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index b7a819cc466..fa88698ea94 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -581,8 +581,11 @@ def __init__(self, parent, spec, deptypes): self.deptypes = tuple(sorted(set(deptypes))) def update_deptypes(self, deptypes): - deptypes = tuple(sorted(set(deptypes))) + deptypes = set(deptypes) + deptypes.update(self.deptypes) + deptypes = tuple(sorted(deptypes)) changed = self.deptypes != deptypes + self.deptypes = deptypes return changed @@ -1801,6 +1804,8 @@ def _find_provider(self, vdep, provider_index): dependency already in this spec. """ assert(vdep.virtual) + + # note that this defensively copies. providers = provider_index.providers_for(vdep) # If there is a provider for the vpkg, then use that instead of @@ -1830,6 +1835,10 @@ def _merge_dependency(self, dep, deptypes, visited, spec_deps, provider_index): """Merge the dependency into this spec. + Caller should assume that this routine can owns the dep parameter + (i.e. it needs to be a copy of any internal structures like + dependencies on Package class objects). + This is the core of normalize(). There are some basic steps: * If dep is virtual, evaluate whether it corresponds to an @@ -1842,6 +1851,7 @@ def _merge_dependency(self, dep, deptypes, visited, spec_deps, constraints into this spec. This method returns True if the spec was changed, False otherwise. + """ changed = False @@ -1854,7 +1864,8 @@ def _merge_dependency(self, dep, deptypes, visited, spec_deps, dep = provider else: index = ProviderIndex([dep], restrict=True) - for vspec in (v for v in spec_deps.values() if v.virtual): + items = list(spec_deps.items()) + for name, vspec in items: if index.providers_for(vspec): vspec._replace_with(dep) del spec_deps[vspec.name] @@ -1865,29 +1876,23 @@ def _merge_dependency(self, dep, deptypes, visited, spec_deps, raise UnsatisfiableProviderSpecError(required[0], dep) provider_index.update(dep) - # If the spec isn't already in the set of dependencies, clone - # it from the package description. + # If the spec isn't already in the set of dependencies, add it. + # Note: dep is always owned by this method. If it's from the + # caller, it's a copy from _evaluate_dependency_conditions. If it + # comes from a vdep, it's a defensive copy from _find_provider. if dep.name not in spec_deps: - spec_deps[dep.name] = dep.copy() + spec_deps[dep.name] = dep changed = True else: - dspec = spec_deps[dep.name] - if self.name not in dspec._dependents: - self._add_dependency(dspec, deptypes) - else: - dependent = dspec._dependents[self.name] - changed = dependent.update_deptypes(deptypes) - - # Constrain package information with spec info - try: - changed |= spec_deps[dep.name].constrain(dep) - - except UnsatisfiableSpecError as e: - e.message = "Invalid spec: '%s'. " - e.message += "Package %s requires %s %s, but spec asked for %s" - e.message %= (spec_deps[dep.name], dep.name, - e.constraint_type, e.required, e.provided) - raise e + # merge package/vdep information into spec + try: + changed |= spec_deps[dep.name].constrain(dep) + except UnsatisfiableSpecError as e: + e.message = "Invalid spec: '%s'. " + e.message += "Package %s requires %s %s, but spec asked for %s" + e.message %= (spec_deps[dep.name], dep.name, + e.constraint_type, e.required, e.provided) + raise e # Add merged spec to my deps and recurse dependency = spec_deps[dep.name] @@ -2097,6 +2102,9 @@ def _constrain_dependencies(self, other): changed = False for name in self.common_dependencies(other): changed |= self[name].constrain(other[name], deps=False) + if name in self._dependencies: + changed |= self._dependencies[name].update_deptypes( + other._dependencies[name].deptypes) # Update with additional constraints from other spec for name in other.dep_difference(self): diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index 31d6203f7f4..af6a4efd953 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -63,8 +63,7 @@ def _mock(pkg_name, spec, deptypes=spack.alldeps): pkg = spack.repo.get(pkg_name) if pkg_name not in saved_deps: saved_deps[pkg_name] = (pkg, pkg.dependencies.copy()) - # Change dep spec - # XXX(deptype): handle deptypes. + pkg.dependencies[spec.name] = {Spec(pkg_name): spec} pkg.dependency_types[spec.name] = set(deptypes) return _mock @@ -609,6 +608,8 @@ def test_copy_dependencies(self): assert '^mpich2' in s2 def test_construct_spec_with_deptypes(self): + """Ensure that it is possible to construct a spec with explicit + dependency types.""" s = Spec('a', Spec('b', ['build'], Spec('c')), @@ -633,7 +634,12 @@ def test_construct_spec_with_deptypes(self): assert s['f']._dependents['e'].deptypes == ('run',) def check_diamond_deptypes(self, spec): - """Validate deptypes in dt-diamond spec.""" + """Validate deptypes in dt-diamond spec. + + This ensures that concretization works properly when two packages + depend on the same dependency in different ways. + + """ assert spec['dt-diamond']._dependencies[ 'dt-diamond-left'].deptypes == ('build', 'link') From b9ee86cac9275076b8e46a7c7c369df8e84e1955 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 25 Mar 2017 23:23:47 -0700 Subject: [PATCH 0518/2394] Make packages Python3 compatible. --- .../packages/multimethod/package.py | 6 +++-- .../builtin/packages/hdf5-blosc/package.py | 24 +++++++++---------- .../builtin/packages/miniconda2/package.py | 2 +- .../builtin/packages/miniconda3/package.py | 2 +- .../repos/builtin/packages/ncl/package.py | 2 +- .../repos/builtin/packages/nwchem/package.py | 2 +- 6 files changed, 20 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin.mock/packages/multimethod/package.py b/var/spack/repos/builtin.mock/packages/multimethod/package.py index 9e18d65cbb9..c0e347bc932 100644 --- a/var/spack/repos/builtin.mock/packages/multimethod/package.py +++ b/var/spack/repos/builtin.mock/packages/multimethod/package.py @@ -22,6 +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 ############################################################################## +from six import string_types + from spack import * import spack.architecture @@ -102,14 +104,14 @@ def has_a_default(self): # Make sure we can switch methods on different target # platform = spack.architecture.platform() - targets = platform.targets.values() + targets = list(platform.targets.values()) if len(targets) > 1: targets = targets[:-1] for target in targets: @when('target=' + target.name) def different_by_target(self): - if isinstance(self.spec.architecture.target, basestring): + if isinstance(self.spec.architecture.target, string_types): return self.spec.architecture.target else: return self.spec.architecture.target.name diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index 4afce02f70d..eb63d08dfdc 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -22,7 +22,7 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## - +from __future__ import print_function import os import shutil import sys @@ -115,7 +115,7 @@ def install(self, spec, prefix): def check_install(self, spec): "Build and run a small program to test the installed HDF5 Blosc plugin" - print "Checking HDF5-Blosc plugin..." + print("Checking HDF5-Blosc plugin...") checkdir = "spack-check" with working_dir(checkdir, create=True): source = r"""\ @@ -188,16 +188,16 @@ def check_install(self, spec): output = "" success = output == expected if not success: - print "Produced output does not match expected output." - print "Expected output:" - print "-" * 80 - print expected - print "-" * 80 - print "Produced output:" - print "-" * 80 - print output - print "-" * 80 - print "Environment:" + print("Produced output does not match expected output.") + print("Expected output:") + print("-" * 80) + print(expected) + print("-" * 80) + print("Produced output:") + print("-" * 80) + print(output) + print("-" * 80) + print("Environment:") env = which("env") env() raise RuntimeError("HDF5 Blosc plugin check failed") diff --git a/var/spack/repos/builtin/packages/miniconda2/package.py b/var/spack/repos/builtin/packages/miniconda2/package.py index 10b85cef326..d23ab080b05 100644 --- a/var/spack/repos/builtin/packages/miniconda2/package.py +++ b/var/spack/repos/builtin/packages/miniconda2/package.py @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -from urlparse import urlparse +from six.moves.urllib.parse import urlparse from os.path import split diff --git a/var/spack/repos/builtin/packages/miniconda3/package.py b/var/spack/repos/builtin/packages/miniconda3/package.py index cd0677b5bca..8184c10d88a 100644 --- a/var/spack/repos/builtin/packages/miniconda3/package.py +++ b/var/spack/repos/builtin/packages/miniconda3/package.py @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -from urlparse import urlparse +from six.moves.urllib.parse import urlparse from os.path import split diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index 9f834eee3b7..b7394cff320 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -229,6 +229,6 @@ def delete_files(*filenames): if os.path.exists(filename): try: os.remove(filename) - except OSError, e: + except OSError as e: raise InstallError('Failed to delete file %s: %s' % ( e.filename, e.strerror)) diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index f39d8ad0c79..3a8be3f56ea 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -68,7 +68,7 @@ class Nwchem(Package): ] } # Iterate over patches - for condition, urls in urls_for_patches.iteritems(): + for condition, urls in urls_for_patches.items(): for url, md5 in urls: patch(url, when=condition, level=0, md5=md5) From 3f21f2b08810b39a17db85cca095b67efc4a249d Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 26 Mar 2017 18:02:56 -0700 Subject: [PATCH 0519/2394] Clean up tests and add Python3 to Travis. - Clean up spec_syntax tests: don't dependend on DB order. - spec_syntax hash parsing tests were strongly dependent on the order the DB was traversed. - Tests now specifically grab the specs they want from the mock DB. - Tests are more readable as a result. - Add Python3 versions to Travis tests. --- .travis.yml | 18 ++- lib/spack/spack/spec.py | 11 +- lib/spack/spack/test/spec_syntax.py | 221 ++++++++++++++++++---------- 3 files changed, 166 insertions(+), 84 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4cd3b14b9ce..d7bdf9b2cac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,6 +22,22 @@ matrix: os: linux language: python env: TEST_SUITE=unit + - python: '3.3' + os: linux + language: python + env: TEST_SUITE=unit + - python: '3.4' + os: linux + language: python + env: TEST_SUITE=unit + - python: '3.5' + os: linux + language: python + env: TEST_SUITE=unit + - python: '3.6' + os: linux + language: python + env: TEST_SUITE=unit - python: '2.7' os: linux language: python @@ -45,6 +61,7 @@ addons: apt: packages: - gfortran + - mercurial - graphviz # Work around Travis's lack of support for Python on OSX @@ -60,7 +77,6 @@ install: - pip install --upgrade codecov - pip install --upgrade flake8 - pip install --upgrade sphinx - - pip install --upgrade mercurial before_script: # Need this for the git tests to succeed. diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index fa88698ea94..095b04f8379 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -106,7 +106,6 @@ from six import string_types from six import iteritems -import llnl.util.tty as tty import spack import spack.architecture import spack.compilers as compilers @@ -159,6 +158,7 @@ 'UnsatisfiableDependencySpecError', 'AmbiguousHashError', 'InvalidHashError', + 'NoSuchHashError', 'RedundantSpecError'] # Valid pattern for an identifier in Spack @@ -2952,8 +2952,7 @@ def spec_by_hash(self): spec.dag_hash()[:len(self.token.value)] == self.token.value] if not matches: - tty.die("%s does not match any installed packages." % - self.token.value) + raise NoSuchHashError(self.token.value) if len(matches) != 1: raise AmbiguousHashError( @@ -3325,6 +3324,12 @@ def __init__(self, spec, hash): % (hash, spec)) +class NoSuchHashError(SpecError): + def __init__(self, hash): + super(NoSuchHashError, self).__init__( + "No installed spec matches the hash: '%s'") + + class RedundantSpecError(SpecError): def __init__(self, spec, addition): super(RedundantSpecError, self).__init__( diff --git a/lib/spack/spack/test/spec_syntax.py b/lib/spack/spack/test/spec_syntax.py index fcb6cfa907b..dfad4a019ff 100644 --- a/lib/spack/spack/test/spec_syntax.py +++ b/lib/spack/spack/test/spec_syntax.py @@ -122,7 +122,7 @@ def check_lex(self, tokens, spec): def _check_raises(self, exc_type, items): for item in items: with pytest.raises(exc_type): - self.check_parse(item) + Spec(item) # ======================================================================== # Parse checks @@ -225,113 +225,174 @@ def test_parse_errors(self): errors = ['x@@1.2', 'x ^y@@1.2', 'x@1.2::', 'x::'] self._check_raises(SpecParseError, errors) + def _check_hash_parse(self, spec): + """Check several ways to specify a spec by hash.""" + # full hash + self.check_parse(str(spec), '/' + spec.dag_hash()) + + # partial hash + self.check_parse(str(spec), '/ ' + spec.dag_hash()[:5]) + + # name + hash + self.check_parse(str(spec), spec.name + '/' + spec.dag_hash()) + + # name + version + space + partial hash + self.check_parse( + str(spec), spec.name + '@' + str(spec.version) + + ' /' + spec.dag_hash()[:6]) + def test_spec_by_hash(self, database): specs = database.mock.db.query() - hashes = [s._hash for s in specs] # Preserves order of elements + assert len(specs) # make sure something's in the DB - # Make sure the database is still the shape we expect - assert len(specs) > 3 - - self.check_parse(str(specs[0]), '/' + hashes[0]) - self.check_parse(str(specs[1]), '/ ' + hashes[1][:5]) - self.check_parse(str(specs[2]), specs[2].name + '/' + hashes[2]) - self.check_parse(str(specs[3]), - specs[3].name + '@' + str(specs[3].version) + - ' /' + hashes[3][:6]) + for spec in specs: + self._check_hash_parse(spec) def test_dep_spec_by_hash(self, database): - specs = database.mock.db.query() - hashes = [s._hash for s in specs] # Preserves order of elements + mpileaks_zmpi = database.mock.db.query_one('mpileaks ^zmpi') + zmpi = database.mock.db.query_one('zmpi') + fake = database.mock.db.query_one('fake') - # Make sure the database is still the shape we expect - assert len(specs) > 10 - assert specs[4].name in specs[10] - assert specs[-1].name in specs[10] + assert 'fake' in mpileaks_zmpi + assert 'zmpi' in mpileaks_zmpi - spec1 = sp.Spec(specs[10].name + '^/' + hashes[4]) - assert specs[4].name in spec1 and spec1[specs[4].name] == specs[4] - spec2 = sp.Spec(specs[10].name + '%' + str(specs[10].compiler) + - ' ^ / ' + hashes[-1]) - assert (specs[-1].name in spec2 and - spec2[specs[-1].name] == specs[-1] and - spec2.compiler == specs[10].compiler) - spec3 = sp.Spec(specs[10].name + '^/' + hashes[4][:4] + - '^ / ' + hashes[-1][:5]) - assert (specs[-1].name in spec3 and - spec3[specs[-1].name] == specs[-1] and - specs[4].name in spec3 and spec3[specs[4].name] == specs[4]) + mpileaks_hash_fake = sp.Spec('mpileaks ^/' + fake.dag_hash()) + assert 'fake' in mpileaks_hash_fake + assert mpileaks_hash_fake['fake'] == fake + + mpileaks_hash_zmpi = sp.Spec( + 'mpileaks %' + str(mpileaks_zmpi.compiler) + + ' ^ / ' + zmpi.dag_hash()) + assert 'zmpi' in mpileaks_hash_zmpi + assert mpileaks_hash_zmpi['zmpi'] == zmpi + assert mpileaks_hash_zmpi.compiler == mpileaks_zmpi.compiler + + mpileaks_hash_fake_and_zmpi = sp.Spec( + 'mpileaks ^/' + fake.dag_hash()[:4] + '^ / ' + zmpi.dag_hash()[:5]) + assert 'zmpi' in mpileaks_hash_fake_and_zmpi + assert mpileaks_hash_fake_and_zmpi['zmpi'] == zmpi + + assert 'fake' in mpileaks_hash_fake_and_zmpi + assert mpileaks_hash_fake_and_zmpi['fake'] == fake def test_multiple_specs_with_hash(self, database): - specs = database.mock.db.query() - hashes = [s._hash for s in specs] # Preserves order of elements + mpileaks_zmpi = database.mock.db.query_one('mpileaks ^zmpi') + callpath_mpich2 = database.mock.db.query_one('callpath ^mpich2') - assert len(specs) > 3 + # name + hash + separate hash + specs = sp.parse('mpileaks /' + mpileaks_zmpi.dag_hash() + + '/' + callpath_mpich2.dag_hash()) + assert len(specs) == 2 - output = sp.parse(specs[0].name + '/' + hashes[0] + '/' + hashes[1]) - assert len(output) == 2 - output = sp.parse('/' + hashes[0] + '/' + hashes[1]) - assert len(output) == 2 - output = sp.parse('/' + hashes[0] + '/' + hashes[1] + - ' ' + specs[2].name) - assert len(output) == 3 - output = sp.parse('/' + hashes[0] + - ' ' + specs[1].name + ' ' + specs[2].name) - assert len(output) == 3 - output = sp.parse('/' + hashes[0] + ' ' + - specs[1].name + ' / ' + hashes[1]) - assert len(output) == 2 + # 2 separate hashes + specs = sp.parse('/' + mpileaks_zmpi.dag_hash() + + '/' + callpath_mpich2.dag_hash()) + assert len(specs) == 2 + + # 2 separate hashes + name + specs = sp.parse('/' + mpileaks_zmpi.dag_hash() + + '/' + callpath_mpich2.dag_hash() + + ' callpath') + assert len(specs) == 3 + + # hash + 2 names + specs = sp.parse('/' + mpileaks_zmpi.dag_hash() + + ' callpath' + + ' callpath') + assert len(specs) == 3 + + # hash + name + hash + specs = sp.parse('/' + mpileaks_zmpi.dag_hash() + + ' callpath' + + ' / ' + callpath_mpich2.dag_hash()) + assert len(specs) == 2 def test_ambiguous_hash(self, database): - specs = database.mock.db.query() - hashes = [s._hash for s in specs] # Preserves order of elements + dbspecs = database.mock.db.query() - # Make sure the database is as expected - assert hashes[1][:1] == hashes[2][:1] == 'b' + def find_ambiguous(specs, keyfun): + """Return the first set of specs that's ambiguous under a + particular key function.""" + key_to_spec = {} + for spec in specs: + key = keyfun(spec) + speclist = key_to_spec.setdefault(key, []) + speclist.append(spec) + if len(speclist) > 1: + return (key, speclist) - ambiguous_hashes = ['/b', - specs[1].name + '/b', - specs[0].name + '^/b', - specs[0].name + '^' + specs[1].name + '/b'] - self._check_raises(AmbiguousHashError, ambiguous_hashes) + # If we fail here, we may need to guarantee that there are + # some ambiguos specs by adding more specs to the test DB + # until this succeeds. + raise RuntimeError("no ambiguous specs found for keyfun!") + + # ambiguity in first hash character + char, specs = find_ambiguous(dbspecs, lambda s: s.dag_hash()[0]) + self._check_raises(AmbiguousHashError, ['/' + char]) + + # ambiguity in first hash character AND spec name + t, specs = find_ambiguous(dbspecs, + lambda s: (s.name, s.dag_hash()[0])) + name, char = t + self._check_raises(AmbiguousHashError, [name + '/' + char]) def test_invalid_hash(self, database): - specs = database.mock.db.query() - hashes = [s._hash for s in specs] # Preserves order of elements + mpileaks_zmpi = database.mock.db.query_one('mpileaks ^zmpi') + zmpi = database.mock.db.query_one('zmpi') - # Make sure the database is as expected - assert (hashes[0] != hashes[3] and - hashes[1] != hashes[4] and len(specs) > 4) + mpileaks_mpich = database.mock.db.query_one('mpileaks ^mpich') + mpich = database.mock.db.query_one('mpich') - inputs = [specs[0].name + '/' + hashes[3], - specs[1].name + '^' + specs[4].name + '/' + hashes[0], - specs[1].name + '^' + specs[4].name + '/' + hashes[1]] - self._check_raises(InvalidHashError, inputs) + # name + incompatible hash + self._check_raises(InvalidHashError, [ + 'zmpi /' + mpich.dag_hash(), + 'mpich /' + zmpi.dag_hash()]) + + # name + dep + incompatible hash + self._check_raises(InvalidHashError, [ + 'mpileaks ^mpich /' + mpileaks_zmpi.dag_hash(), + 'mpileaks ^zmpi /' + mpileaks_mpich.dag_hash()]) def test_nonexistent_hash(self, database): - # This test uses database to make sure we don't accidentally access - # real installs, however unlikely + """Ensure we get errors for nonexistant hashes.""" specs = database.mock.db.query() - hashes = [s._hash for s in specs] # Preserves order of elements - # Make sure the database is as expected - assert 'abc123' not in [h[:6] for h in hashes] + # This hash shouldn't be in the test DB. What are the odds :) + no_such_hash = 'aaaaaaaaaaaaaaa' + hashes = [s._hash for s in specs] + assert no_such_hash not in [h[:len(no_such_hash)] for h in hashes] - nonexistant_hashes = ['/abc123', - specs[0].name + '/abc123'] - self._check_raises(SystemExit, nonexistant_hashes) + self._check_raises(NoSuchHashError, [ + '/' + no_such_hash, + 'mpileaks /' + no_such_hash]) def test_redundant_spec(self, database): - specs = database.mock.db.query() - hashes = [s._hash for s in specs] # Preserves order of elements + """Check that redundant spec constraints raise errors. - # Make sure the database is as expected - assert len(specs) > 3 + TODO (TG): does this need to be an error? Or should concrete + specs only raise errors if constraints cause a contradiction? + + """ + mpileaks_zmpi = database.mock.db.query_one('mpileaks ^zmpi') + callpath_zmpi = database.mock.db.query_one('callpath ^zmpi') + dyninst = database.mock.db.query_one('dyninst') + + mpileaks_mpich2 = database.mock.db.query_one('mpileaks ^mpich2') + + redundant_specs = [ + # redudant compiler + '/' + mpileaks_zmpi.dag_hash() + '%' + str(mpileaks_zmpi.compiler), + + # redudant version + 'mpileaks/' + mpileaks_mpich2.dag_hash() + + '@' + str(mpileaks_mpich2.version), + + # redundant dependency + 'callpath /' + callpath_zmpi.dag_hash() + '^ libelf', + + # redundant flags + '/' + dyninst.dag_hash() + ' cflags="-O3 -fPIC"'] - redundant_specs = ['/' + hashes[0] + '%' + str(specs[0].compiler), - specs[1].name + '/' + hashes[1] + - '@' + str(specs[1].version), - specs[2].name + '/' + hashes[2] + '^ libelf', - '/' + hashes[3] + ' cflags="-O3 -fPIC"'] self._check_raises(RedundantSpecError, redundant_specs) def test_duplicate_variant(self): From a8bcc23fe7138a35c902e41f983408de6dbc874d Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 7 Mar 2017 09:31:15 -0800 Subject: [PATCH 0520/2394] Spack works with Python 3 - Update version guard in spack script to allow python 3 - Update min required version in the docs --- README.md | 3 ++- bin/spack | 4 ++-- lib/spack/docs/contribution_guide.rst | 2 +- lib/spack/docs/getting_started.rst | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 375aad4dd7a..68c2939ec63 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ See the [Feature Overview](http://spack.readthedocs.io/en/latest/features.html) for examples and highlights. -To install spack and install your first package: +To install spack and install your first package, make sure you have +Python (2 or 3). Then: $ git clone https://github.com/llnl/spack.git $ cd spack/bin diff --git a/bin/spack b/bin/spack index f33d219b8bb..c737a0f178c 100755 --- a/bin/spack +++ b/bin/spack @@ -27,9 +27,9 @@ from __future__ import print_function import sys -if (sys.version_info[0] > 2) or (sys.version_info[:2] < (2, 6)): +if sys.version_info[:2] < (2, 6): v_info = sys.version_info[:3] - sys.exit("Spack requires Python 2.6 or 2.7. " + sys.exit("Spack requires Python 2.6 or higher." "This is Python %d.%d.%d." % v_info) import os diff --git a/lib/spack/docs/contribution_guide.rst b/lib/spack/docs/contribution_guide.rst index e9cfe1fa540..a3b31971816 100644 --- a/lib/spack/docs/contribution_guide.rst +++ b/lib/spack/docs/contribution_guide.rst @@ -40,7 +40,7 @@ for the results of these tests after submitting a PR, we recommend that you run locally to speed up the review process. If you take a look in ``$SPACK_ROOT/.travis.yml``, you'll notice that we test -against Python 2.6 and 2.7. We currently perform 3 types of tests: +against Python 2.6, 2.7, and 3.3-3.6. We currently perform 3 types of tests: ^^^^^^^^^^ Unit Tests diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 3c2610beb0c..2460f7e54d0 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -11,7 +11,7 @@ Prerequisites Spack has the following minimum requirements, which must be installed before Spack is run: -1. Python 2.6 or 2.7 +1. Python 2 (2.6 or 2.7) or 3 (3.3 - 3.6) 2. A C/C++ compiler 3. The ``git`` and ``curl`` commands. From ee7753a597f7c180338330b4c269901f97e343bc Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 31 Mar 2017 22:41:48 +0200 Subject: [PATCH 0521/2394] test/versions.py: ported to pytest (#3635) --- lib/spack/spack/test/versions.py | 846 ++++++++++++++++--------------- 1 file changed, 443 insertions(+), 403 deletions(-) diff --git a/lib/spack/spack/test/versions.py b/lib/spack/spack/test/versions.py index c1d427783c7..71ea3af9e91 100644 --- a/lib/spack/spack/test/versions.py +++ b/lib/spack/spack/test/versions.py @@ -22,413 +22,453 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -""" -These version tests were taken from the RPM source code. +"""These version tests were taken from the RPM source code. We try to maintain compatibility with RPM's version semantics where it makes sense. """ -import unittest +import pytest from spack.version import * -class VersionsTest(unittest.TestCase): - - def assert_ver_lt(self, a, b): - a, b = ver(a), ver(b) - self.assertTrue(a < b) - self.assertTrue(a <= b) - self.assertTrue(a != b) - self.assertFalse(a == b) - self.assertFalse(a > b) - self.assertFalse(a >= b) - - def assert_ver_gt(self, a, b): - a, b = ver(a), ver(b) - self.assertTrue(a > b) - self.assertTrue(a >= b) - self.assertTrue(a != b) - self.assertFalse(a == b) - self.assertFalse(a < b) - self.assertFalse(a <= b) - - def assert_ver_eq(self, a, b): - a, b = ver(a), ver(b) - self.assertFalse(a > b) - self.assertTrue(a >= b) - self.assertFalse(a != b) - self.assertTrue(a == b) - self.assertFalse(a < b) - self.assertTrue(a <= b) - - def assert_in(self, needle, haystack): - self.assertTrue(ver(needle) in ver(haystack)) - - def assert_not_in(self, needle, haystack): - self.assertFalse(ver(needle) in ver(haystack)) - - def assert_canonical(self, canonical_list, version_list): - self.assertEqual(ver(canonical_list), ver(version_list)) - - def assert_overlaps(self, v1, v2): - self.assertTrue(ver(v1).overlaps(ver(v2))) - - def assert_no_overlap(self, v1, v2): - self.assertFalse(ver(v1).overlaps(ver(v2))) - - def assert_satisfies(self, v1, v2): - self.assertTrue(ver(v1).satisfies(ver(v2))) - - def assert_does_not_satisfy(self, v1, v2): - self.assertFalse(ver(v1).satisfies(ver(v2))) - - def check_intersection(self, expected, a, b): - self.assertEqual(ver(expected), ver(a).intersection(ver(b))) - - def check_union(self, expected, a, b): - self.assertEqual(ver(expected), ver(a).union(ver(b))) - - def test_two_segments(self): - self.assert_ver_eq('1.0', '1.0') - self.assert_ver_lt('1.0', '2.0') - self.assert_ver_gt('2.0', '1.0') - self.assert_ver_eq('develop', 'develop') - self.assert_ver_lt('1.0', 'develop') - self.assert_ver_gt('develop', '1.0') - - def test_three_segments(self): - self.assert_ver_eq('2.0.1', '2.0.1') - self.assert_ver_lt('2.0', '2.0.1') - self.assert_ver_gt('2.0.1', '2.0') - - def test_alpha(self): - # TODO: not sure whether I like this. 2.0.1a is *usually* - # TODO: less than 2.0.1, but special-casing it makes version - # TODO: comparison complicated. See version.py - self.assert_ver_eq('2.0.1a', '2.0.1a') - self.assert_ver_gt('2.0.1a', '2.0.1') - self.assert_ver_lt('2.0.1', '2.0.1a') - - def test_patch(self): - self.assert_ver_eq('5.5p1', '5.5p1') - self.assert_ver_lt('5.5p1', '5.5p2') - self.assert_ver_gt('5.5p2', '5.5p1') - self.assert_ver_eq('5.5p10', '5.5p10') - self.assert_ver_lt('5.5p1', '5.5p10') - self.assert_ver_gt('5.5p10', '5.5p1') - - def test_num_alpha_with_no_separator(self): - self.assert_ver_lt('10xyz', '10.1xyz') - self.assert_ver_gt('10.1xyz', '10xyz') - self.assert_ver_eq('xyz10', 'xyz10') - self.assert_ver_lt('xyz10', 'xyz10.1') - self.assert_ver_gt('xyz10.1', 'xyz10') - - def test_alpha_with_dots(self): - self.assert_ver_eq('xyz.4', 'xyz.4') - self.assert_ver_lt('xyz.4', '8') - self.assert_ver_gt('8', 'xyz.4') - self.assert_ver_lt('xyz.4', '2') - self.assert_ver_gt('2', 'xyz.4') - - def test_nums_and_patch(self): - self.assert_ver_lt('5.5p2', '5.6p1') - self.assert_ver_gt('5.6p1', '5.5p2') - self.assert_ver_lt('5.6p1', '6.5p1') - self.assert_ver_gt('6.5p1', '5.6p1') - - def test_rc_versions(self): - self.assert_ver_gt('6.0.rc1', '6.0') - self.assert_ver_lt('6.0', '6.0.rc1') - - def test_alpha_beta(self): - self.assert_ver_gt('10b2', '10a1') - self.assert_ver_lt('10a2', '10b2') - - def test_double_alpha(self): - self.assert_ver_eq('1.0aa', '1.0aa') - self.assert_ver_lt('1.0a', '1.0aa') - self.assert_ver_gt('1.0aa', '1.0a') - - def test_padded_numbers(self): - self.assert_ver_eq('10.0001', '10.0001') - self.assert_ver_eq('10.0001', '10.1') - self.assert_ver_eq('10.1', '10.0001') - self.assert_ver_lt('10.0001', '10.0039') - self.assert_ver_gt('10.0039', '10.0001') - - def test_close_numbers(self): - self.assert_ver_lt('4.999.9', '5.0') - self.assert_ver_gt('5.0', '4.999.9') - - def test_date_stamps(self): - self.assert_ver_eq('20101121', '20101121') - self.assert_ver_lt('20101121', '20101122') - self.assert_ver_gt('20101122', '20101121') - - def test_underscores(self): - self.assert_ver_eq('2_0', '2_0') - self.assert_ver_eq('2.0', '2_0') - self.assert_ver_eq('2_0', '2.0') - - def test_rpm_oddities(self): - self.assert_ver_eq('1b.fc17', '1b.fc17') - self.assert_ver_lt('1b.fc17', '1.fc17') - self.assert_ver_gt('1.fc17', '1b.fc17') - self.assert_ver_eq('1g.fc17', '1g.fc17') - self.assert_ver_gt('1g.fc17', '1.fc17') - self.assert_ver_lt('1.fc17', '1g.fc17') - - # Stuff below here is not taken from RPM's tests and is - # unique to spack - def test_version_ranges(self): - self.assert_ver_lt('1.2:1.4', '1.6') - self.assert_ver_gt('1.6', '1.2:1.4') - self.assert_ver_eq('1.2:1.4', '1.2:1.4') - self.assertNotEqual(ver('1.2:1.4'), ver('1.2:1.6')) - - self.assert_ver_lt('1.2:1.4', '1.5:1.6') - self.assert_ver_gt('1.5:1.6', '1.2:1.4') - - def test_contains(self): - self.assert_in('1.3', '1.2:1.4') - self.assert_in('1.2.5', '1.2:1.4') - self.assert_in('1.3.5', '1.2:1.4') - self.assert_in('1.3.5-7', '1.2:1.4') - self.assert_not_in('1.1', '1.2:1.4') - self.assert_not_in('1.5', '1.2:1.4') - - self.assert_in('1.4.2', '1.2:1.4') - self.assert_not_in('1.4.2', '1.2:1.4.0') - - self.assert_in('1.2.8', '1.2.7:1.4') - self.assert_in('1.2.7:1.4', ':') - self.assert_not_in('1.2.5', '1.2.7:1.4') - - self.assert_in('1.4.1', '1.2.7:1.4') - self.assert_not_in('1.4.1', '1.2.7:1.4.0') - - def test_in_list(self): - self.assert_in('1.2', ['1.5', '1.2', '1.3']) - self.assert_in('1.2.5', ['1.5', '1.2:1.3']) - self.assert_in('1.5', ['1.5', '1.2:1.3']) - self.assert_not_in('1.4', ['1.5', '1.2:1.3']) - - self.assert_in('1.2.5:1.2.7', [':']) - self.assert_in('1.2.5:1.2.7', ['1.5', '1.2:1.3']) - self.assert_not_in('1.2.5:1.5', ['1.5', '1.2:1.3']) - self.assert_not_in('1.1:1.2.5', ['1.5', '1.2:1.3']) - - def test_ranges_overlap(self): - self.assert_overlaps('1.2', '1.2') - self.assert_overlaps('1.2.1', '1.2.1') - self.assert_overlaps('1.2.1b', '1.2.1b') - - self.assert_overlaps('1.2:1.7', '1.6:1.9') - self.assert_overlaps(':1.7', '1.6:1.9') - self.assert_overlaps(':1.7', ':1.9') - self.assert_overlaps(':1.7', '1.6:') - self.assert_overlaps('1.2:', '1.6:1.9') - self.assert_overlaps('1.2:', ':1.9') - self.assert_overlaps('1.2:', '1.6:') - self.assert_overlaps(':', ':') - self.assert_overlaps(':', '1.6:1.9') - self.assert_overlaps('1.6:1.9', ':') - - def test_overlap_with_containment(self): - self.assert_in('1.6.5', '1.6') - self.assert_in('1.6.5', ':1.6') - - self.assert_overlaps('1.6.5', ':1.6') - self.assert_overlaps(':1.6', '1.6.5') - - self.assert_not_in(':1.6', '1.6.5') - self.assert_in('1.6.5', ':1.6') - - def test_lists_overlap(self): - self.assert_overlaps('1.2b:1.7,5', '1.6:1.9,1') - self.assert_overlaps('1,2,3,4,5', '3,4,5,6,7') - self.assert_overlaps('1,2,3,4,5', '5,6,7') - self.assert_overlaps('1,2,3,4,5', '5:7') - self.assert_overlaps('1,2,3,4,5', '3, 6:7') - self.assert_overlaps('1, 2, 4, 6.5', '3, 6:7') - self.assert_overlaps('1, 2, 4, 6.5', ':, 5, 8') - self.assert_overlaps('1, 2, 4, 6.5', ':') - self.assert_no_overlap('1, 2, 4', '3, 6:7') - self.assert_no_overlap('1,2,3,4,5', '6,7') - self.assert_no_overlap('1,2,3,4,5', '6:7') - - def test_canonicalize_list(self): - self.assert_canonical(['1.2', '1.3', '1.4'], - ['1.2', '1.3', '1.3', '1.4']) - - self.assert_canonical(['1.2', '1.3:1.4'], - ['1.2', '1.3', '1.3:1.4']) - - self.assert_canonical(['1.2', '1.3:1.4'], - ['1.2', '1.3:1.4', '1.4']) - - self.assert_canonical(['1.3:1.4'], - ['1.3:1.4', '1.3', '1.3.1', '1.3.9', '1.4']) - - self.assert_canonical(['1.3:1.4'], - ['1.3', '1.3.1', '1.3.9', '1.4', '1.3:1.4']) - - self.assert_canonical(['1.3:1.5'], - ['1.3', '1.3.1', '1.3.9', '1.4:1.5', '1.3:1.4']) - - self.assert_canonical(['1.3:1.5'], - ['1.3, 1.3.1,1.3.9,1.4:1.5,1.3:1.4']) - - self.assert_canonical(['1.3:1.5'], - ['1.3, 1.3.1,1.3.9,1.4 : 1.5 , 1.3 : 1.4']) - - self.assert_canonical([':'], - [':,1.3, 1.3.1,1.3.9,1.4 : 1.5 , 1.3 : 1.4']) - - def test_intersection(self): - self.check_intersection('2.5', - '1.0:2.5', '2.5:3.0') - self.check_intersection('2.5:2.7', - '1.0:2.7', '2.5:3.0') - self.check_intersection('0:1', ':', '0:1') - - self.check_intersection(['1.0', '2.5:2.7'], - ['1.0:2.7'], ['2.5:3.0', '1.0']) - self.check_intersection(['2.5:2.7'], - ['1.1:2.7'], ['2.5:3.0', '1.0']) - self.check_intersection(['0:1'], [':'], ['0:1']) - - def test_intersect_with_containment(self): - self.check_intersection('1.6.5', '1.6.5', ':1.6') - self.check_intersection('1.6.5', ':1.6', '1.6.5') - - self.check_intersection('1.6:1.6.5', ':1.6.5', '1.6') - self.check_intersection('1.6:1.6.5', '1.6', ':1.6.5') - - def test_union_with_containment(self): - self.check_union(':1.6', '1.6.5', ':1.6') - self.check_union(':1.6', ':1.6', '1.6.5') - - self.check_union(':1.6', ':1.6.5', '1.6') - self.check_union(':1.6', '1.6', ':1.6.5') - - self.check_union(':', '1.0:', ':2.0') - - self.check_union('1:4', '1:3', '2:4') - self.check_union('1:4', '2:4', '1:3') - - # Tests successor/predecessor case. - self.check_union('1:4', '1:2', '3:4') - - def test_basic_version_satisfaction(self): - self.assert_satisfies('4.7.3', '4.7.3') - - self.assert_satisfies('4.7.3', '4.7') - self.assert_satisfies('4.7.3b2', '4.7') - self.assert_satisfies('4.7b6', '4.7') - - self.assert_satisfies('4.7.3', '4') - self.assert_satisfies('4.7.3b2', '4') - self.assert_satisfies('4.7b6', '4') - - self.assert_does_not_satisfy('4.8.0', '4.9') - self.assert_does_not_satisfy('4.8', '4.9') - self.assert_does_not_satisfy('4', '4.9') - - def test_basic_version_satisfaction_in_lists(self): - self.assert_satisfies(['4.7.3'], ['4.7.3']) - - self.assert_satisfies(['4.7.3'], ['4.7']) - self.assert_satisfies(['4.7.3b2'], ['4.7']) - self.assert_satisfies(['4.7b6'], ['4.7']) - - self.assert_satisfies(['4.7.3'], ['4']) - self.assert_satisfies(['4.7.3b2'], ['4']) - self.assert_satisfies(['4.7b6'], ['4']) - - self.assert_does_not_satisfy(['4.8.0'], ['4.9']) - self.assert_does_not_satisfy(['4.8'], ['4.9']) - self.assert_does_not_satisfy(['4'], ['4.9']) - - def test_version_range_satisfaction(self): - self.assert_satisfies('4.7b6', '4.3:4.7') - self.assert_satisfies('4.3.0', '4.3:4.7') - self.assert_satisfies('4.3.2', '4.3:4.7') - - self.assert_does_not_satisfy('4.8.0', '4.3:4.7') - self.assert_does_not_satisfy('4.3', '4.4:4.7') - - self.assert_satisfies('4.7b6', '4.3:4.7') - self.assert_does_not_satisfy('4.8.0', '4.3:4.7') - - def test_version_range_satisfaction_in_lists(self): - self.assert_satisfies(['4.7b6'], ['4.3:4.7']) - self.assert_satisfies(['4.3.0'], ['4.3:4.7']) - self.assert_satisfies(['4.3.2'], ['4.3:4.7']) - - self.assert_does_not_satisfy(['4.8.0'], ['4.3:4.7']) - self.assert_does_not_satisfy(['4.3'], ['4.4:4.7']) - - self.assert_satisfies(['4.7b6'], ['4.3:4.7']) - self.assert_does_not_satisfy(['4.8.0'], ['4.3:4.7']) - - def test_satisfaction_with_lists(self): - self.assert_satisfies('4.7', '4.3, 4.6, 4.7') - self.assert_satisfies('4.7.3', '4.3, 4.6, 4.7') - self.assert_satisfies('4.6.5', '4.3, 4.6, 4.7') - self.assert_satisfies('4.6.5.2', '4.3, 4.6, 4.7') - - self.assert_does_not_satisfy('4', '4.3, 4.6, 4.7') - self.assert_does_not_satisfy('4.8.0', '4.2, 4.3:4.7') - - self.assert_satisfies('4.8.0', '4.2, 4.3:4.8') - self.assert_satisfies('4.8.2', '4.2, 4.3:4.8') - - def test_formatted_strings(self): - versions = '1.2.3', '1_2_3', '1-2-3' - for item in versions: - v = Version(item) - self.assertEqual(v.dotted, '1.2.3') - self.assertEqual(v.dashed, '1-2-3') - self.assertEqual(v.underscored, '1_2_3') - self.assertEqual(v.joined, '123') - - def test_repr_and_str(self): - - def check_repr_and_str(vrs): - a = Version(vrs) - self.assertEqual(repr(a), 'Version(\'' + vrs + '\')') - b = eval(repr(a)) - self.assertEqual(a, b) - self.assertEqual(str(a), vrs) - self.assertEqual(str(a), str(b)) - - check_repr_and_str('1.2.3') - check_repr_and_str('R2016a') - check_repr_and_str('R2016a.2-3_4') - - def test_get_item(self): - a = Version('0.1_2-3') - self.assertTrue(isinstance(a[1], int)) - # Test slicing - b = a[0:2] - self.assertTrue(isinstance(b, Version)) - self.assertEqual(b, Version('0.1')) - self.assertEqual(repr(b), 'Version(\'0.1\')') - self.assertEqual(str(b), '0.1') - b = a[0:3] - self.assertTrue(isinstance(b, Version)) - self.assertEqual(b, Version('0.1_2')) - self.assertEqual(repr(b), 'Version(\'0.1_2\')') - self.assertEqual(str(b), '0.1_2') - b = a[1:] - self.assertTrue(isinstance(b, Version)) - self.assertEqual(b, Version('1_2-3')) - self.assertEqual(repr(b), 'Version(\'1_2-3\')') - self.assertEqual(str(b), '1_2-3') - # Raise TypeError on tuples - self.assertRaises(TypeError, b.__getitem__, 1, 2) - -if __name__ == '__main__': - unittest.main() +def assert_ver_lt(a, b): + """Asserts the results of comparisons when 'a' is less than 'b'.""" + a, b = ver(a), ver(b) + assert a < b + assert a <= b + assert a != b + assert not a == b + assert not a > b + assert not a >= b + + +def assert_ver_gt(a, b): + """Asserts the results of comparisons when 'a' is greater than 'b'.""" + a, b = ver(a), ver(b) + assert a > b + assert a >= b + assert a != b + assert not a == b + assert not a < b + assert not a <= b + + +def assert_ver_eq(a, b): + """Asserts the results of comparisons when 'a' is equal to 'b'.""" + a, b = ver(a), ver(b) + assert not a > b + assert a >= b + assert not a != b + assert a == b + assert not a < b + assert a <= b + + +def assert_in(needle, haystack): + """Asserts that 'needle' is in 'haystack'.""" + assert ver(needle) in ver(haystack) + + +def assert_not_in(needle, haystack): + """Asserts that 'needle' is not in 'haystack'.""" + assert ver(needle) not in ver(haystack) + + +def assert_canonical(canonical_list, version_list): + """Asserts that a redundant list is reduced to canonical form.""" + assert ver(canonical_list) == ver(version_list) + + +def assert_overlaps(v1, v2): + """Asserts that two version ranges overlaps.""" + assert ver(v1).overlaps(ver(v2)) + + +def assert_no_overlap(v1, v2): + """Asserts that two version ranges do not overlap.""" + assert not ver(v1).overlaps(ver(v2)) + + +def assert_satisfies(v1, v2): + """Asserts that 'v1' satisfies 'v2'.""" + assert ver(v1).satisfies(ver(v2)) + + +def assert_does_not_satisfy(v1, v2): + """Asserts that 'v1' does not satisfy 'v2'.""" + assert not ver(v1).satisfies(ver(v2)) + + +def check_intersection(expected, a, b): + """Asserts that 'a' intersect 'b' == 'expected'.""" + assert ver(expected) == ver(a).intersection(ver(b)) + + +def check_union(expected, a, b): + """Asserts that 'a' union 'b' == 'expected'.""" + assert ver(expected) == ver(a).union(ver(b)) + + +def test_two_segments(): + assert_ver_eq('1.0', '1.0') + assert_ver_lt('1.0', '2.0') + assert_ver_gt('2.0', '1.0') + assert_ver_eq('develop', 'develop') + assert_ver_lt('1.0', 'develop') + assert_ver_gt('develop', '1.0') + + +def test_three_segments(): + assert_ver_eq('2.0.1', '2.0.1') + assert_ver_lt('2.0', '2.0.1') + assert_ver_gt('2.0.1', '2.0') + + +def test_alpha(): + # TODO: not sure whether I like this. 2.0.1a is *usually* + # TODO: less than 2.0.1, but special-casing it makes version + # TODO: comparison complicated. See version.py + assert_ver_eq('2.0.1a', '2.0.1a') + assert_ver_gt('2.0.1a', '2.0.1') + assert_ver_lt('2.0.1', '2.0.1a') + + +def test_patch(): + assert_ver_eq('5.5p1', '5.5p1') + assert_ver_lt('5.5p1', '5.5p2') + assert_ver_gt('5.5p2', '5.5p1') + assert_ver_eq('5.5p10', '5.5p10') + assert_ver_lt('5.5p1', '5.5p10') + assert_ver_gt('5.5p10', '5.5p1') + + +def test_num_alpha_with_no_separator(): + assert_ver_lt('10xyz', '10.1xyz') + assert_ver_gt('10.1xyz', '10xyz') + assert_ver_eq('xyz10', 'xyz10') + assert_ver_lt('xyz10', 'xyz10.1') + assert_ver_gt('xyz10.1', 'xyz10') + + +def test_alpha_with_dots(): + assert_ver_eq('xyz.4', 'xyz.4') + assert_ver_lt('xyz.4', '8') + assert_ver_gt('8', 'xyz.4') + assert_ver_lt('xyz.4', '2') + assert_ver_gt('2', 'xyz.4') + + +def test_nums_and_patch(): + assert_ver_lt('5.5p2', '5.6p1') + assert_ver_gt('5.6p1', '5.5p2') + assert_ver_lt('5.6p1', '6.5p1') + assert_ver_gt('6.5p1', '5.6p1') + + +def test_rc_versions(): + assert_ver_gt('6.0.rc1', '6.0') + assert_ver_lt('6.0', '6.0.rc1') + + +def test_alpha_beta(): + assert_ver_gt('10b2', '10a1') + assert_ver_lt('10a2', '10b2') + + +def test_double_alpha(): + assert_ver_eq('1.0aa', '1.0aa') + assert_ver_lt('1.0a', '1.0aa') + assert_ver_gt('1.0aa', '1.0a') + + +def test_padded_numbers(): + assert_ver_eq('10.0001', '10.0001') + assert_ver_eq('10.0001', '10.1') + assert_ver_eq('10.1', '10.0001') + assert_ver_lt('10.0001', '10.0039') + assert_ver_gt('10.0039', '10.0001') + + +def test_close_numbers(): + assert_ver_lt('4.999.9', '5.0') + assert_ver_gt('5.0', '4.999.9') + + +def test_date_stamps(): + assert_ver_eq('20101121', '20101121') + assert_ver_lt('20101121', '20101122') + assert_ver_gt('20101122', '20101121') + + +def test_underscores(): + assert_ver_eq('2_0', '2_0') + assert_ver_eq('2.0', '2_0') + assert_ver_eq('2_0', '2.0') + + +def test_rpm_oddities(): + assert_ver_eq('1b.fc17', '1b.fc17') + assert_ver_lt('1b.fc17', '1.fc17') + assert_ver_gt('1.fc17', '1b.fc17') + assert_ver_eq('1g.fc17', '1g.fc17') + assert_ver_gt('1g.fc17', '1.fc17') + assert_ver_lt('1.fc17', '1g.fc17') + + +# Stuff below here is not taken from RPM's tests and is +# unique to spack +def test_version_ranges(): + assert_ver_lt('1.2:1.4', '1.6') + assert_ver_gt('1.6', '1.2:1.4') + assert_ver_eq('1.2:1.4', '1.2:1.4') + assert ver('1.2:1.4') != ver('1.2:1.6') + + assert_ver_lt('1.2:1.4', '1.5:1.6') + assert_ver_gt('1.5:1.6', '1.2:1.4') + + +def test_contains(): + assert_in('1.3', '1.2:1.4') + assert_in('1.2.5', '1.2:1.4') + assert_in('1.3.5', '1.2:1.4') + assert_in('1.3.5-7', '1.2:1.4') + assert_not_in('1.1', '1.2:1.4') + assert_not_in('1.5', '1.2:1.4') + + assert_in('1.4.2', '1.2:1.4') + assert_not_in('1.4.2', '1.2:1.4.0') + + assert_in('1.2.8', '1.2.7:1.4') + assert_in('1.2.7:1.4', ':') + assert_not_in('1.2.5', '1.2.7:1.4') + + assert_in('1.4.1', '1.2.7:1.4') + assert_not_in('1.4.1', '1.2.7:1.4.0') + + +def test_in_list(): + assert_in('1.2', ['1.5', '1.2', '1.3']) + assert_in('1.2.5', ['1.5', '1.2:1.3']) + assert_in('1.5', ['1.5', '1.2:1.3']) + assert_not_in('1.4', ['1.5', '1.2:1.3']) + + assert_in('1.2.5:1.2.7', [':']) + assert_in('1.2.5:1.2.7', ['1.5', '1.2:1.3']) + assert_not_in('1.2.5:1.5', ['1.5', '1.2:1.3']) + assert_not_in('1.1:1.2.5', ['1.5', '1.2:1.3']) + + +def test_ranges_overlap(): + assert_overlaps('1.2', '1.2') + assert_overlaps('1.2.1', '1.2.1') + assert_overlaps('1.2.1b', '1.2.1b') + + assert_overlaps('1.2:1.7', '1.6:1.9') + assert_overlaps(':1.7', '1.6:1.9') + assert_overlaps(':1.7', ':1.9') + assert_overlaps(':1.7', '1.6:') + assert_overlaps('1.2:', '1.6:1.9') + assert_overlaps('1.2:', ':1.9') + assert_overlaps('1.2:', '1.6:') + assert_overlaps(':', ':') + assert_overlaps(':', '1.6:1.9') + assert_overlaps('1.6:1.9', ':') + + +def test_overlap_with_containment(): + assert_in('1.6.5', '1.6') + assert_in('1.6.5', ':1.6') + + assert_overlaps('1.6.5', ':1.6') + assert_overlaps(':1.6', '1.6.5') + + assert_not_in(':1.6', '1.6.5') + assert_in('1.6.5', ':1.6') + + +def test_lists_overlap(): + assert_overlaps('1.2b:1.7,5', '1.6:1.9,1') + assert_overlaps('1,2,3,4,5', '3,4,5,6,7') + assert_overlaps('1,2,3,4,5', '5,6,7') + assert_overlaps('1,2,3,4,5', '5:7') + assert_overlaps('1,2,3,4,5', '3, 6:7') + assert_overlaps('1, 2, 4, 6.5', '3, 6:7') + assert_overlaps('1, 2, 4, 6.5', ':, 5, 8') + assert_overlaps('1, 2, 4, 6.5', ':') + assert_no_overlap('1, 2, 4', '3, 6:7') + assert_no_overlap('1,2,3,4,5', '6,7') + assert_no_overlap('1,2,3,4,5', '6:7') + + +def test_canonicalize_list(): + assert_canonical(['1.2', '1.3', '1.4'], ['1.2', '1.3', '1.3', '1.4']) + + assert_canonical(['1.2', '1.3:1.4'], ['1.2', '1.3', '1.3:1.4']) + + assert_canonical(['1.2', '1.3:1.4'], ['1.2', '1.3:1.4', '1.4']) + + assert_canonical(['1.3:1.4'], ['1.3:1.4', '1.3', '1.3.1', '1.3.9', '1.4']) + + assert_canonical(['1.3:1.4'], ['1.3', '1.3.1', '1.3.9', '1.4', '1.3:1.4']) + + assert_canonical( + ['1.3:1.5'], ['1.3', '1.3.1', '1.3.9', '1.4:1.5', '1.3:1.4'] + ) + + assert_canonical(['1.3:1.5'], ['1.3, 1.3.1,1.3.9,1.4:1.5,1.3:1.4']) + + assert_canonical(['1.3:1.5'], ['1.3, 1.3.1,1.3.9,1.4 : 1.5 , 1.3 : 1.4']) + + assert_canonical([':'], [':,1.3, 1.3.1,1.3.9,1.4 : 1.5 , 1.3 : 1.4']) + + +def test_intersection(): + check_intersection('2.5', '1.0:2.5', '2.5:3.0') + check_intersection('2.5:2.7', '1.0:2.7', '2.5:3.0') + check_intersection('0:1', ':', '0:1') + + check_intersection(['1.0', '2.5:2.7'], ['1.0:2.7'], ['2.5:3.0', '1.0']) + check_intersection(['2.5:2.7'], ['1.1:2.7'], ['2.5:3.0', '1.0']) + check_intersection(['0:1'], [':'], ['0:1']) + + +def test_intersect_with_containment(): + check_intersection('1.6.5', '1.6.5', ':1.6') + check_intersection('1.6.5', ':1.6', '1.6.5') + + check_intersection('1.6:1.6.5', ':1.6.5', '1.6') + check_intersection('1.6:1.6.5', '1.6', ':1.6.5') + + +def test_union_with_containment(): + check_union(':1.6', '1.6.5', ':1.6') + check_union(':1.6', ':1.6', '1.6.5') + + check_union(':1.6', ':1.6.5', '1.6') + check_union(':1.6', '1.6', ':1.6.5') + + check_union(':', '1.0:', ':2.0') + + check_union('1:4', '1:3', '2:4') + check_union('1:4', '2:4', '1:3') + + # Tests successor/predecessor case. + check_union('1:4', '1:2', '3:4') + + +def test_basic_version_satisfaction(): + assert_satisfies('4.7.3', '4.7.3') + + assert_satisfies('4.7.3', '4.7') + assert_satisfies('4.7.3b2', '4.7') + assert_satisfies('4.7b6', '4.7') + + assert_satisfies('4.7.3', '4') + assert_satisfies('4.7.3b2', '4') + assert_satisfies('4.7b6', '4') + + assert_does_not_satisfy('4.8.0', '4.9') + assert_does_not_satisfy('4.8', '4.9') + assert_does_not_satisfy('4', '4.9') + + +def test_basic_version_satisfaction_in_lists(): + assert_satisfies(['4.7.3'], ['4.7.3']) + + assert_satisfies(['4.7.3'], ['4.7']) + assert_satisfies(['4.7.3b2'], ['4.7']) + assert_satisfies(['4.7b6'], ['4.7']) + + assert_satisfies(['4.7.3'], ['4']) + assert_satisfies(['4.7.3b2'], ['4']) + assert_satisfies(['4.7b6'], ['4']) + + assert_does_not_satisfy(['4.8.0'], ['4.9']) + assert_does_not_satisfy(['4.8'], ['4.9']) + assert_does_not_satisfy(['4'], ['4.9']) + + +def test_version_range_satisfaction(): + assert_satisfies('4.7b6', '4.3:4.7') + assert_satisfies('4.3.0', '4.3:4.7') + assert_satisfies('4.3.2', '4.3:4.7') + + assert_does_not_satisfy('4.8.0', '4.3:4.7') + assert_does_not_satisfy('4.3', '4.4:4.7') + + assert_satisfies('4.7b6', '4.3:4.7') + assert_does_not_satisfy('4.8.0', '4.3:4.7') + + +def test_version_range_satisfaction_in_lists(): + assert_satisfies(['4.7b6'], ['4.3:4.7']) + assert_satisfies(['4.3.0'], ['4.3:4.7']) + assert_satisfies(['4.3.2'], ['4.3:4.7']) + + assert_does_not_satisfy(['4.8.0'], ['4.3:4.7']) + assert_does_not_satisfy(['4.3'], ['4.4:4.7']) + + assert_satisfies(['4.7b6'], ['4.3:4.7']) + assert_does_not_satisfy(['4.8.0'], ['4.3:4.7']) + + +def test_satisfaction_with_lists(): + assert_satisfies('4.7', '4.3, 4.6, 4.7') + assert_satisfies('4.7.3', '4.3, 4.6, 4.7') + assert_satisfies('4.6.5', '4.3, 4.6, 4.7') + assert_satisfies('4.6.5.2', '4.3, 4.6, 4.7') + + assert_does_not_satisfy('4', '4.3, 4.6, 4.7') + assert_does_not_satisfy('4.8.0', '4.2, 4.3:4.7') + + assert_satisfies('4.8.0', '4.2, 4.3:4.8') + assert_satisfies('4.8.2', '4.2, 4.3:4.8') + + +def test_formatted_strings(): + versions = '1.2.3', '1_2_3', '1-2-3' + for item in versions: + v = Version(item) + assert v.dotted == '1.2.3' + assert v.dashed == '1-2-3' + assert v.underscored == '1_2_3' + assert v.joined == '123' + + +def test_repr_and_str(): + + def check_repr_and_str(vrs): + a = Version(vrs) + assert repr(a) == 'Version(\'' + vrs + '\')' + b = eval(repr(a)) + assert a == b + assert str(a) == vrs + assert str(a) == str(b) + + check_repr_and_str('1.2.3') + check_repr_and_str('R2016a') + check_repr_and_str('R2016a.2-3_4') + + +def test_get_item(): + a = Version('0.1_2-3') + assert isinstance(a[1], int) + # Test slicing + b = a[0:2] + assert isinstance(b, Version) + assert b == Version('0.1') + assert repr(b) == 'Version(\'0.1\')' + assert str(b) == '0.1' + b = a[0:3] + assert isinstance(b, Version) + assert b == Version('0.1_2') + assert repr(b) == 'Version(\'0.1_2\')' + assert str(b) == '0.1_2' + b = a[1:] + assert isinstance(b, Version) + assert b == Version('1_2-3') + assert repr(b) == 'Version(\'1_2-3\')' + assert str(b) == '1_2-3' + # Raise TypeError on tuples + with pytest.raises(TypeError): + b.__getitem__(1, 2) From 0c44dd28bb85b874ddd109974ff3585b78d85ec4 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 31 Mar 2017 22:42:04 +0200 Subject: [PATCH 0522/2394] test/package_sanity.py: ported to pytest (#3474) --- lib/spack/spack/test/package_sanity.py | 67 +++++++++++++------------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/lib/spack/spack/test/package_sanity.py b/lib/spack/spack/test/package_sanity.py index c75d7cdcc70..ac318f94dcb 100644 --- a/lib/spack/spack/test/package_sanity.py +++ b/lib/spack/spack/test/package_sanity.py @@ -22,49 +22,48 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -"""\ -This test does sanity checks on Spack's builtin package database. -""" -import unittest +"""This test does sanity checks on Spack's builtin package database.""" + import re import spack from spack.repository import RepoPath -class PackageSanityTest(unittest.TestCase): +def check_db(): + """Get all packages in a DB to make sure they work.""" + for name in spack.repo.all_package_names(): + spack.repo.get(name) - def check_db(self): - """Get all packages in a DB to make sure they work.""" - for name in spack.repo.all_package_names(): - spack.repo.get(name) - def test_get_all_packages(self): - """Get all packages once and make sure that works.""" - self.check_db() +def test_get_all_packages(): + """Get all packages once and make sure that works.""" + check_db() - def test_get_all_mock_packages(self): - """Get the mock packages once each too.""" - db = RepoPath(spack.mock_packages_path) - spack.repo.swap(db) - self.check_db() - spack.repo.swap(db) - def test_url_versions(self): - """Check URLs for regular packages, if they are explicitly defined.""" - for pkg in spack.repo.all_packages(): - for v, vattrs in pkg.versions.items(): - if 'url' in vattrs: - # If there is a url for the version check it. - v_url = pkg.url_for_version(v) - self.assertEqual(vattrs['url'], v_url) +def test_get_all_mock_packages(): + """Get the mock packages once each too.""" + db = RepoPath(spack.mock_packages_path) + spack.repo.swap(db) + check_db() + spack.repo.swap(db) - def test_all_versions_are_lowercase(self): - """Spack package names must be lowercase, and use `-` instead of `_`. - """ - errors = [] - for name in spack.repo.all_package_names(): - if re.search(r'[_A-Z]', name): - errors.append(name) - self.assertEqual([], errors) +def test_url_versions(): + """Check URLs for regular packages, if they are explicitly defined.""" + for pkg in spack.repo.all_packages(): + for v, vattrs in pkg.versions.items(): + if 'url' in vattrs: + # If there is a url for the version check it. + v_url = pkg.url_for_version(v) + assert vattrs['url'] == v_url + + +def test_all_versions_are_lowercase(): + """Spack package names must be lowercase, and use `-` instead of `_`.""" + errors = [] + for name in spack.repo.all_package_names(): + if re.search(r'[_A-Z]', name): + errors.append(name) + + assert len(errors) == 0 From 12c1216c34f70b95ee41eaa7aa4cc0942dc4d17c Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Fri, 31 Mar 2017 17:51:09 -0700 Subject: [PATCH 0523/2394] fix flake8 ignore syntax (use E instead of ignore) (#3651) --- lib/spack/spack/cmd/flake8.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index 47f531fe843..19724142bbe 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -129,7 +129,7 @@ def filter_file(source, dest, output=False): for code, patterns in errors.items(): for pattern in patterns: if pattern.search(line): - line += (" # NOQA: ignore=%d" % code) + line += (" # NOQA: E%d" % code) break oline = line + '\n' From f982cd78ae79f77c2ca59440de20de37002d6658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sat, 1 Apr 2017 13:09:09 +0800 Subject: [PATCH 0524/2394] Add a pcakge: libzip. (#3656) --- .../repos/builtin/packages/libzip/package.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libzip/package.py diff --git a/var/spack/repos/builtin/packages/libzip/package.py b/var/spack/repos/builtin/packages/libzip/package.py new file mode 100644 index 00000000000..e3dc9ab2bbe --- /dev/null +++ b/var/spack/repos/builtin/packages/libzip/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libzip(AutotoolsPackage): + """libzip is a C library for reading, creating, + and modifying zip archives.""" + + homepage = "https://nih.at/libzip/index.html" + url = "https://nih.at/libzip/libzip-1.2.0.tar.gz" + + version('1.2.0', '5c3372ab3a7897295bfefb27f745cf69') From fb98f9ee19a1ddcbde3a1447f8f847e5c1c62286 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Sat, 1 Apr 2017 12:29:06 +0200 Subject: [PATCH 0525/2394] fix annoying 'fatal: Not a git repository' error message (#3657) fix annoying 'fatal: Not a git repository' error message produced by 'spack list' when Spack is not run from a Git repository (#3657) --- lib/spack/spack/cmd/pkg.py | 7 +++++-- lib/spack/spack/hooks/case_consistency.py | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/cmd/pkg.py b/lib/spack/spack/cmd/pkg.py index 7b668586b51..12dcb817924 100644 --- a/lib/spack/spack/cmd/pkg.py +++ b/lib/spack/spack/cmd/pkg.py @@ -73,13 +73,16 @@ def setup_parser(subparser): help="revision to compare to rev1 (default is HEAD)") -def get_git(): +def get_git(fatal=True): # cd to spack prefix to do git operations os.chdir(spack.prefix) # If this is a non-git version of spack, give up. if not os.path.isdir('.git'): - tty.die("No git repo in %s. Can't use 'spack pkg'" % spack.prefix) + if fatal: + tty.die("No git repo in %s. Can't use 'spack pkg'" % spack.prefix) + else: + return None return which("git", required=True) diff --git a/lib/spack/spack/hooks/case_consistency.py b/lib/spack/spack/hooks/case_consistency.py index e9208ee9fff..2b882916665 100644 --- a/lib/spack/spack/hooks/case_consistency.py +++ b/lib/spack/spack/hooks/case_consistency.py @@ -31,6 +31,7 @@ from llnl.util.filesystem import * import spack +from spack.cmd.pkg import get_git from spack.util.executable import * @@ -61,8 +62,8 @@ def git_case_consistency_check(path): """ with working_dir(path): # Don't bother fixing case if Spack isn't in a git repository - git = which('git') - if not git: + git = get_git(fatal=False) + if git is None: return try: From 90306cf415ac1e8709efd3c3e1185c46ddb2c1f8 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Sat, 1 Apr 2017 19:27:58 +0200 Subject: [PATCH 0526/2394] EasyBuild and dependencies (#3658) * add packages for EasyBuild and dependencies * fix remarks w.r.t. docstrings & download urls, make dependency specs stricter w.r.t. required versions * fix easybuild-* dep specs, should be open-ended * correct dep specs for easybuild and easybuild-easyconfigs using @3.1.2[:] --- .../builtin/packages/easybuild/package.py | 38 ++++++++++++++++++ .../py-easybuild-easyblocks/package.py | 36 +++++++++++++++++ .../py-easybuild-easyconfigs/package.py | 37 ++++++++++++++++++ .../py-easybuild-framework/package.py | 39 +++++++++++++++++++ .../builtin/packages/py-vsc-base/package.py | 35 +++++++++++++++++ .../packages/py-vsc-install/package.py | 36 +++++++++++++++++ 6 files changed, 221 insertions(+) create mode 100644 var/spack/repos/builtin/packages/easybuild/package.py create mode 100644 var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py create mode 100644 var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py create mode 100644 var/spack/repos/builtin/packages/py-easybuild-framework/package.py create mode 100644 var/spack/repos/builtin/packages/py-vsc-base/package.py create mode 100644 var/spack/repos/builtin/packages/py-vsc-install/package.py diff --git a/var/spack/repos/builtin/packages/easybuild/package.py b/var/spack/repos/builtin/packages/easybuild/package.py new file mode 100644 index 00000000000..156601ed656 --- /dev/null +++ b/var/spack/repos/builtin/packages/easybuild/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2017, Kenneth Hoste +# +# This file is part of Spack. +# Created by Kenneth Hoste, kenneth.hoste@gmail.com +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Easybuild(PythonPackage): + """EasyBuild is a software build and installation framework + for (scientific) software on HPC systems. + """ + + homepage = 'http://hpcugent.github.io/easybuild/' + url = 'https://pypi.io/packages/source/e/easybuild/easybuild-3.1.2.tar.gz' + + version('3.1.2', 'c2d901c2a71f51b24890fa69c3a46383') + + depends_on('py-easybuild-framework@3.1.2', when='@3.1.2', type='run') + depends_on('py-easybuild-easyblocks@3.1.2', when='@3.1.2', type='run') + depends_on('py-easybuild-easyconfigs@3.1.2', when='@3.1.2', type='run') diff --git a/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py b/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py new file mode 100644 index 00000000000..4b09c436214 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2017, Kenneth Hoste +# +# This file is part of Spack. +# Created by Kenneth Hoste, kenneth.hoste@gmail.com +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyEasybuildEasyblocks(PythonPackage): + """Collection of easyblocks for EasyBuild, a software build and + installation framework for (scientific) software on HPC systems. + """ + + homepage = 'http://hpcugent.github.io/easybuild/' + url = 'https://pypi.io/packages/source/e/easybuild-easyblocks/easybuild-easyblocks-3.1.2.tar.gz' + + version('3.1.2', 'be08da30c07e67ed3e136e8d38905fbc') + + depends_on('py-easybuild-framework@3.1:', when='@3.1', type='run') diff --git a/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py b/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py new file mode 100644 index 00000000000..bec96387086 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2017, Kenneth Hoste +# +# This file is part of Spack. +# Created by Kenneth Hoste, kenneth.hoste@gmail.com +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyEasybuildEasyconfigs(PythonPackage): + """Collection of easyconfig files for EasyBuild, a software build and + installation framework for (scientific) software on HPC systems. + """ + + homepage = 'http://hpcugent.github.io/easybuild/' + url = 'https://pypi.io/packages/source/e/easybuild-easyconfigs/easybuild-easyconfigs-3.1.2.tar.gz' + + version('3.1.2', '13a4a97fe8a5b9a94f885661cf497d13') + + depends_on('py-easybuild-framework@3.1:', when='@3.1', type='run') + depends_on('py-easybuild-easyblocks@3.1.2:', when='@3.1.2', type='run') diff --git a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py new file mode 100644 index 00000000000..36605a6fd07 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2017, Kenneth Hoste +# +# This file is part of Spack. +# Created by Kenneth Hoste, kenneth.hoste@gmail.com +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyEasybuildFramework(PythonPackage): + """The core of EasyBuild, a software build and installation framework + for (scientific) software on HPC systems. + """ + + homepage = 'http://hpcugent.github.io/easybuild/' + url = 'https://pypi.io/packages/source/e/easybuild-framework/easybuild-framework-3.1.2.tar.gz' + + version('3.1.2', '283bc5f6bdcb90016b32986d52fd04a8') + + depends_on('python@2.6:3.0', type='run') + depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-vsc-base@2.5.4:', when='@2.9:', type='run') + depends_on('py-vsc-install', type='run') # only required for tests (python -O -m test.framework.suite) diff --git a/var/spack/repos/builtin/packages/py-vsc-base/package.py b/var/spack/repos/builtin/packages/py-vsc-base/package.py new file mode 100644 index 00000000000..e5e23b0015f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-vsc-base/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2017, Kenneth Hoste +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyVscBase(PythonPackage): + """Common Python libraries tools created by HPC-UGent""" + + homepage = 'https://github.com/hpcugent/vsc-base/' + url = 'https://pypi.io/packages/source/v/vsc-base/vsc-base-2.5.8.tar.gz' + + version('2.5.8', '57f3f49eab7aa15a96be76e6c89a72d8') + + depends_on('py-setuptools', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-vsc-install/package.py b/var/spack/repos/builtin/packages/py-vsc-install/package.py new file mode 100644 index 00000000000..452bf97992e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-vsc-install/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2017, Kenneth Hoste +# +# This file is part of Spack. +# Created by Kenneth Hoste, kenneth.hoste@gmail.com +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyVscInstall(PythonPackage): + """Shared setuptools functions and classes + for Python libraries developed by HPC-UGent. + """ + + homepage = 'https://github.com/hpcugent/vsc-install/' + url = 'https://pypi.io/packages/source/v/vsc-install/vsc-install-0.10.25.tar.gz' + + version('0.10.25', 'd1b9453a75cb56dba0deb7a878047b51') + + depends_on('py-setuptools', type=('build', 'run')) From b67e2db159cf6a572ea8059ad1f6e57854639b23 Mon Sep 17 00:00:00 2001 From: Kenneth Hoste Date: Sat, 1 Apr 2017 20:14:15 +0200 Subject: [PATCH 0527/2394] fix version specs for EasyBuild packages (#3659) * fix Python version requirement for easybuild-framework * make 'when' for depends_on('py-easybuild-framework') open-ended --- .../repos/builtin/packages/py-easybuild-easyblocks/package.py | 2 +- .../repos/builtin/packages/py-easybuild-easyconfigs/package.py | 2 +- .../repos/builtin/packages/py-easybuild-framework/package.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py b/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py index 4b09c436214..0f1aa923ec9 100644 --- a/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py +++ b/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py @@ -33,4 +33,4 @@ class PyEasybuildEasyblocks(PythonPackage): version('3.1.2', 'be08da30c07e67ed3e136e8d38905fbc') - depends_on('py-easybuild-framework@3.1:', when='@3.1', type='run') + depends_on('py-easybuild-framework@3.1:', when='@3.1:', type='run') diff --git a/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py b/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py index bec96387086..16315577317 100644 --- a/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py +++ b/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py @@ -33,5 +33,5 @@ class PyEasybuildEasyconfigs(PythonPackage): version('3.1.2', '13a4a97fe8a5b9a94f885661cf497d13') - depends_on('py-easybuild-framework@3.1:', when='@3.1', type='run') + depends_on('py-easybuild-framework@3.1:', when='@3.1:', type='run') depends_on('py-easybuild-easyblocks@3.1.2:', when='@3.1.2', type='run') diff --git a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py index 36605a6fd07..c8d89992c9c 100644 --- a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py +++ b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py @@ -33,7 +33,7 @@ class PyEasybuildFramework(PythonPackage): version('3.1.2', '283bc5f6bdcb90016b32986d52fd04a8') - depends_on('python@2.6:3.0', type='run') + depends_on('python@2.6:2.9', type='run') depends_on('py-setuptools', type=('build', 'run')) depends_on('py-vsc-base@2.5.4:', when='@2.9:', type='run') depends_on('py-vsc-install', type='run') # only required for tests (python -O -m test.framework.suite) From 28d6d375b46273779e377b844ddb80739f393514 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 31 Mar 2017 20:19:18 -0500 Subject: [PATCH 0528/2394] Fix Python 3 support in spack versions - Add missing import, fixes spack versions in Python 2 - Fix spack versions in Python 3 --- lib/spack/spack/url.py | 2 +- lib/spack/spack/util/web.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 7502f239948..38ff74f7bcc 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -513,7 +513,7 @@ def wildcard_version(path): name_parts = re.split(name_re, path) # Even elements in the array did *not* match the name - for i in xrange(0, len(name_parts), 2): + for i in range(0, len(name_parts), 2): # Split each part by things that look like versions. vparts = re.split(v.wildcard(), name_parts[i]) diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index 0d7d0d37925..09bf2c34e10 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -28,6 +28,7 @@ from six.moves.urllib.request import urlopen, Request from six.moves.urllib.error import URLError +from six.moves.urllib.parse import urljoin from multiprocessing import Pool try: @@ -38,7 +39,7 @@ from html.parser import HTMLParser # Also, HTMLParseError is deprecated and never raised. - class HTMLParseError: + class HTMLParseError(Exception): pass import llnl.util.tty as tty @@ -110,7 +111,7 @@ def _spider(args): response_url = response.geturl() # Read the page and and stick it in the map we'll return - page = response.read() + page = response.read().decode('utf-8') pages[response_url] = page # Parse out the links in the page @@ -120,7 +121,7 @@ def _spider(args): while link_parser.links: raw_link = link_parser.links.pop() - abs_link = urlparse.urljoin(response_url, raw_link.strip()) + abs_link = urljoin(response_url, raw_link.strip()) links.add(abs_link) From 221f17971634e43950f90333776589c4d0bf0ce3 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 1 Apr 2017 14:03:54 -0700 Subject: [PATCH 0529/2394] Add better tests for web.py; fix some bugs found with spidering. - _spider in web.py was actually failing to spider deeper than a certain point. - Fixed multiprocessing pools to not use daemons and to allow recursive spawning. - Added detailed tests for spidering and for finding archive versions. - left some xfail URL finding exercises for the reader. - Fix noqa annotations for some @when decorators --- lib/spack/spack/package.py | 10 +- lib/spack/spack/test/data/web/1.html | 10 ++ lib/spack/spack/test/data/web/2.html | 12 ++ lib/spack/spack/test/data/web/3.html | 11 ++ lib/spack/spack/test/data/web/4.html | 11 ++ lib/spack/spack/test/data/web/index.html | 10 ++ lib/spack/spack/test/web.py | 165 ++++++++++++++++++ lib/spack/spack/util/web.py | 89 ++++++---- .../repos/builtin/packages/autogen/package.py | 2 +- .../repos/builtin/packages/boost/package.py | 2 +- .../repos/builtin/packages/cmake/package.py | 2 +- .../builtin/packages/elfutils/package.py | 6 +- .../repos/builtin/packages/gcc/package.py | 2 +- .../repos/builtin/packages/gdal/package.py | 2 +- .../repos/builtin/packages/hwloc/package.py | 2 +- .../repos/builtin/packages/hydra/package.py | 2 +- .../repos/builtin/packages/mpich/package.py | 2 +- .../repos/builtin/packages/openmpi/package.py | 2 +- .../repos/builtin/packages/openssl/package.py | 2 +- .../repos/builtin/packages/pango/package.py | 2 +- .../builtin/packages/patchelf/package.py | 2 +- .../repos/builtin/packages/py-nose/package.py | 2 - .../packages/py-scikit-learn/package.py | 2 - .../repos/builtin/packages/python/package.py | 7 +- .../builtin/packages/qt-creator/package.py | 2 +- .../repos/builtin/packages/qt/package.py | 10 +- .../builtin/packages/util-linux/package.py | 2 +- 27 files changed, 306 insertions(+), 67 deletions(-) create mode 100644 lib/spack/spack/test/data/web/1.html create mode 100644 lib/spack/spack/test/data/web/2.html create mode 100644 lib/spack/spack/test/data/web/3.html create mode 100644 lib/spack/spack/test/data/web/4.html create mode 100644 lib/spack/spack/test/data/web/index.html create mode 100644 lib/spack/spack/test/web.py diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 6b71c0f1a90..177b4c908b8 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -570,7 +570,7 @@ def __init__(self, spec): self.list_url = None if not hasattr(self, 'list_depth'): - self.list_depth = 1 + self.list_depth = 0 # Set default licensing information if not hasattr(self, 'license_required'): @@ -966,6 +966,10 @@ def do_stage(self, mirror_only=False): self.stage.expand_archive() self.stage.chdir_to_source() + def patch(self): + """Default patch implementation is a no-op.""" + pass + def do_patch(self): """Calls do_stage(), then applied patches to the expanded tarball if they haven't been applied already.""" @@ -1686,9 +1690,7 @@ def fetch_remote_versions(self): try: return spack.util.web.find_versions_of_archive( - *self.all_urls, - list_url=self.list_url, - list_depth=self.list_depth) + self.all_urls, self.list_url, self.list_depth) except spack.error.NoNetworkConnectionError as e: tty.die("Package.fetch_versions couldn't connect to:", e.url, e.message) diff --git a/lib/spack/spack/test/data/web/1.html b/lib/spack/spack/test/data/web/1.html new file mode 100644 index 00000000000..ef49c38cdb2 --- /dev/null +++ b/lib/spack/spack/test/data/web/1.html @@ -0,0 +1,10 @@ + + + This is page 1. + + + list_depth=2 follows this. + + foo-1.0.0.tar.gz + + diff --git a/lib/spack/spack/test/data/web/2.html b/lib/spack/spack/test/data/web/2.html new file mode 100644 index 00000000000..64c843f25b3 --- /dev/null +++ b/lib/spack/spack/test/data/web/2.html @@ -0,0 +1,12 @@ + + + This is page 2. + + + list_depth=3 follows this. + list_depth=3 follows this too. + + foo-2.0.0.tar.gz + foo-2.0.0b2.tar.gz + + diff --git a/lib/spack/spack/test/data/web/3.html b/lib/spack/spack/test/data/web/3.html new file mode 100644 index 00000000000..e5302060351 --- /dev/null +++ b/lib/spack/spack/test/data/web/3.html @@ -0,0 +1,11 @@ + + + This is page 3. + + + This link is already visited. + + foo-3.0.tar.gz + foo-3.0a1.tar.gz + + diff --git a/lib/spack/spack/test/data/web/4.html b/lib/spack/spack/test/data/web/4.html new file mode 100644 index 00000000000..b5fe850f4d7 --- /dev/null +++ b/lib/spack/spack/test/data/web/4.html @@ -0,0 +1,11 @@ + + + This is page 4. + + + This page is terminal and has no links to other pages. + + foo-4.5.tar.gz. + foo-4.1-rc5.tar.gz. + + diff --git a/lib/spack/spack/test/data/web/index.html b/lib/spack/spack/test/data/web/index.html new file mode 100644 index 00000000000..3985deeb356 --- /dev/null +++ b/lib/spack/spack/test/data/web/index.html @@ -0,0 +1,10 @@ + + + This is the root page. + + + list_depth=1 follows this. + + foo-0.0.0.tar.gz + + diff --git a/lib/spack/spack/test/web.py b/lib/spack/spack/test/web.py new file mode 100644 index 00000000000..9a7f4d9f8b7 --- /dev/null +++ b/lib/spack/spack/test/web.py @@ -0,0 +1,165 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +"""Tests for web.py.""" +import pytest +import os + +import spack +from spack.util.web import spider, find_versions_of_archive +from spack.version import * + + +web_data_path = os.path.join(spack.test_path, 'data', 'web') + +root = 'file://' + web_data_path + '/index.html' +root_tarball = 'file://' + web_data_path + '/foo-0.0.0.tar.gz' + +page_1 = 'file://' + os.path.join(web_data_path, '1.html') +page_2 = 'file://' + os.path.join(web_data_path, '2.html') +page_3 = 'file://' + os.path.join(web_data_path, '3.html') +page_4 = 'file://' + os.path.join(web_data_path, '4.html') + + +def test_spider_0(): + pages, links = spider(root, depth=0) + + assert root in pages + assert page_1 not in pages + assert page_2 not in pages + assert page_3 not in pages + assert page_4 not in pages + + assert "This is the root page." in pages[root] + + assert root not in links + assert page_1 in links + assert page_2 not in links + assert page_3 not in links + assert page_4 not in links + + +def test_spider_1(): + pages, links = spider(root, depth=1) + + assert root in pages + assert page_1 in pages + assert page_2 not in pages + assert page_3 not in pages + assert page_4 not in pages + + assert "This is the root page." in pages[root] + assert "This is page 1." in pages[page_1] + + assert root not in links + assert page_1 in links + assert page_2 in links + assert page_3 not in links + assert page_4 not in links + + +def test_spider_2(): + pages, links = spider(root, depth=2) + + assert root in pages + assert page_1 in pages + assert page_2 in pages + assert page_3 not in pages + assert page_4 not in pages + + assert "This is the root page." in pages[root] + assert "This is page 1." in pages[page_1] + assert "This is page 2." in pages[page_2] + + assert root not in links + assert page_1 in links + assert page_1 in links + assert page_2 in links + assert page_3 in links + assert page_4 in links + + +def test_spider_3(): + pages, links = spider(root, depth=3) + + assert root in pages + assert page_1 in pages + assert page_2 in pages + assert page_3 in pages + assert page_4 in pages + + assert "This is the root page." in pages[root] + assert "This is page 1." in pages[page_1] + assert "This is page 2." in pages[page_2] + assert "This is page 3." in pages[page_3] + assert "This is page 4." in pages[page_4] + + assert root in links # circular link on page 3 + assert page_1 in links + assert page_1 in links + assert page_2 in links + assert page_3 in links + assert page_4 in links + + +def test_find_versions_of_archive_0(): + versions = find_versions_of_archive(root_tarball, root, list_depth=0) + assert ver('0.0.0') in versions + + +def test_find_versions_of_archive_1(): + versions = find_versions_of_archive(root_tarball, root, list_depth=1) + assert ver('0.0.0') in versions + assert ver('1.0.0') in versions + + +def test_find_versions_of_archive_2(): + versions = find_versions_of_archive(root_tarball, root, list_depth=2) + assert ver('0.0.0') in versions + assert ver('1.0.0') in versions + assert ver('2.0.0') in versions + + +@pytest.mark.xfail +def test_find_exotic_versions_of_archive_2(): + versions = find_versions_of_archive(root_tarball, root, list_depth=2) + # up for grabs to make this better. + assert ver('2.0.0b2') in versions + + +def test_find_versions_of_archive_3(): + versions = find_versions_of_archive(root_tarball, root, list_depth=3) + assert ver('0.0.0') in versions + assert ver('1.0.0') in versions + assert ver('2.0.0') in versions + assert ver('3.0') in versions + assert ver('4.5') in versions + + +@pytest.mark.xfail +def test_find_exotic_versions_of_archive_3(): + versions = find_versions_of_archive(root_tarball, root, list_depth=3) + assert ver('2.0.0b2') in versions + assert ver('3.0a1') in versions + assert ver('4.5-rc5') in versions diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index 09bf2c34e10..8e2dd34635a 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -25,11 +25,12 @@ import re import os import sys +import traceback from six.moves.urllib.request import urlopen, Request from six.moves.urllib.error import URLError from six.moves.urllib.parse import urljoin -from multiprocessing import Pool +import multiprocessing.pool try: # Python 2 had these in the HTMLParser package. @@ -67,25 +68,42 @@ def handle_starttag(self, tag, attrs): self.links.append(val) -def _spider(args): - """_spider(url, depth, max_depth) +class NonDaemonProcess(multiprocessing.Process): + """Process tha allows sub-processes, so pools can have sub-pools.""" + def _get_daemon(self): + return False - Fetches URL and any pages it links to up to max_depth. depth should - initially be 1, and max_depth includes the root. This function will - print out a warning only if the root can't be fetched; it ignores + def _set_daemon(self, value): + pass + + daemon = property(_get_daemon, _set_daemon) + + +class NonDaemonPool(multiprocessing.pool.Pool): + """Pool that uses non-daemon processes""" + Process = NonDaemonProcess + + +def _spider(url, visited, root, depth, max_depth, raise_on_error): + """Fetches URL and any pages it links to up to max_depth. + + depth should initially be zero, and max_depth is the max depth of + links to follow from the root. + + Prints out a warning only if the root can't be fetched; it ignores errors with pages that the root links to. - This will return a list of the pages fetched, in no particular order. - - Takes args as a tuple b/c it's intended to be used by a multiprocessing - pool. Firing off all the child links at once makes the fetch MUCH - faster for pages with lots of children. + Returns a tuple of: + - pages: dict of pages visited (URL) mapped to their full text. + - links: set of links encountered while visiting the pages. """ - url, visited, root, opener, depth, max_depth, raise_on_error = args - pages = {} # dict from page URL -> text content. links = set() # set of all links seen on visited pages. + # root may end with index.html -- chop that off. + if root.endswith('/index.html'): + root = re.sub('/index.html$', '', root) + try: # Make a HEAD request first to check the content type. This lets # us ignore tarballs and gigantic files. @@ -139,17 +157,19 @@ def _spider(args): # If we're not at max depth, follow links. if depth < max_depth: - subcalls.append((abs_link, visited, root, None, + subcalls.append((abs_link, visited, root, depth + 1, max_depth, raise_on_error)) visited.add(abs_link) if subcalls: + pool = NonDaemonPool(processes=len(subcalls)) try: - pool = Pool(processes=len(subcalls)) - results = pool.map(_spider, subcalls) + results = pool.map(_spider_wrapper, subcalls) + for sub_pages, sub_links in results: pages.update(sub_pages) links.update(sub_links) + finally: pool.terminate() pool.join() @@ -171,46 +191,53 @@ def _spider(args): except Exception as e: # Other types of errors are completely ignored, except in debug mode. - tty.debug("Error in _spider: %s" % e) + tty.debug("Error in _spider: %s:%s" % (type(e), e), + traceback.format_exc()) return pages, links -def spider(root_url, **kwargs): +def _spider_wrapper(args): + """Wrapper for using spider with multiprocessing.""" + return _spider(*args) + + +def spider(root_url, depth=0): + """Gets web pages from a root URL. - If depth is specified (e.g., depth=2), then this will also fetches pages - linked from the root and its children up to depth. + + If depth is specified (e.g., depth=2), then this will also follow + up to levels of links from the root. This will spawn processes to fetch the children, for much improved performance over a sequential fetch. + """ - max_depth = kwargs.setdefault('depth', 1) - pages, links = _spider((root_url, set(), root_url, None, - 1, max_depth, False)) + pages, links = _spider(root_url, set(), root_url, 0, depth, False) return pages, links -def find_versions_of_archive(*archive_urls, **kwargs): +def find_versions_of_archive(archive_urls, list_url=None, list_depth=0): """Scrape web pages for new versions of a tarball. Arguments: archive_urls: - URLs for different versions of a package. Typically these - are just the tarballs from the package file itself. By - default, this searches the parent directories of archives. + URL or sequence of URLs for different versions of a + package. Typically these are just the tarballs from the package + file itself. By default, this searches the parent directories + of archives. Keyword Arguments: list_url: - URL for a listing of archives. Spack wills scrape these pages for download links that look like the archive URL. list_depth: - Max depth to follow links on list_url pages. + Max depth to follow links on list_url pages. Default 0. """ - list_url = kwargs.get('list_url', None) - list_depth = kwargs.get('list_depth', 1) + if not isinstance(archive_urls, (list, tuple)): + archive_urls = [archive_urls] # Generate a list of list_urls based on archive urls and any # explicitly listed list_url in the package diff --git a/var/spack/repos/builtin/packages/autogen/package.py b/var/spack/repos/builtin/packages/autogen/package.py index 0bfe6159c93..e79af636b57 100644 --- a/var/spack/repos/builtin/packages/autogen/package.py +++ b/var/spack/repos/builtin/packages/autogen/package.py @@ -34,7 +34,7 @@ class Autogen(AutotoolsPackage): homepage = "https://www.gnu.org/software/autogen/index.html" url = "https://ftp.gnu.org/gnu/autogen/rel5.18.12/autogen-5.18.12.tar.gz" list_url = "https://ftp.gnu.org/gnu/autogen" - list_depth = 2 + list_depth = 1 version('5.18.12', '551d15ccbf5b5fc5658da375d5003389') diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 6f891de6643..7570987ad87 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -40,7 +40,7 @@ class Boost(Package): homepage = "http://www.boost.org" url = "http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2" list_url = "http://sourceforge.net/projects/boost/files/boost/" - list_depth = 2 + list_depth = 1 version('1.63.0', '1c837ecd990bb022d07e7aab32b09847') version('1.62.0', '5fb94629535c19e48703bdb2b2e9490f') diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 4ff9615016b..1dd480d6751 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -31,7 +31,7 @@ class Cmake(Package): homepage = 'https://www.cmake.org' url = 'https://cmake.org/files/v3.4/cmake-3.4.3.tar.gz' list_url = 'https://cmake.org/files/' - list_depth = 2 + list_depth = 1 version('3.7.2', '79bd7e65cd81ea3aa2619484ad6ff25a') version('3.7.1', 'd031d5a06e9f1c5367cdfc56fbd2a1c8') diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index 960b9985ad2..2594d73c37e 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -37,10 +37,10 @@ class Elfutils(AutotoolsPackage): url = "https://sourceware.org/elfutils/ftp/0.168/elfutils-0.168.tar.bz2" list_url = "https://sourceware.org/elfutils/ftp" - list_depth = 2 + list_depth = 1 - version('0.168','52adfa40758d0d39e5d5c57689bf38d6') - version('0.163','77ce87f259987d2e54e4d87b86cbee41', preferred=True) + version('0.168', '52adfa40758d0d39e5d5c57689bf38d6') + version('0.163', '77ce87f259987d2e54e4d87b86cbee41', preferred=True) provides('elf@1') diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 1fddb77299d..ffb85ec15e3 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -37,7 +37,7 @@ class Gcc(AutotoolsPackage): url = "http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2" list_url = 'http://ftp.gnu.org/gnu/gcc/' - list_depth = 2 + list_depth = 1 version('6.3.0', '677a7623c7ef6ab99881bc4e048debb6') version('6.2.0', '9768625159663b300ae4de2f4745fcc4') diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index b52b1f1038a..dc58cc89938 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -38,7 +38,7 @@ class Gdal(Package): homepage = "http://www.gdal.org/" url = "http://download.osgeo.org/gdal/2.1.2/gdal-2.1.2.tar.xz" list_url = "http://download.osgeo.org/gdal/" - list_depth = 2 + list_depth = 1 version('2.1.2', 'ae85b78888514c75e813d658cac9478e') version('2.0.2', '940208e737c87d31a90eaae43d0efd65') diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index 0030d5ffde8..6efa2dfbd93 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -42,7 +42,7 @@ class Hwloc(AutotoolsPackage): homepage = "http://www.open-mpi.org/projects/hwloc/" url = "http://www.open-mpi.org/software/hwloc/v1.9/downloads/hwloc-1.9.tar.gz" list_url = "http://www.open-mpi.org/software/hwloc/" - list_depth = 3 + list_depth = 2 version('1.11.6', 'b4e95eadd2fbdb6d40bbd96be6f03c84') version('1.11.5', '8f5fe6a9be2eb478409ad5e640b2d3ba') diff --git a/var/spack/repos/builtin/packages/hydra/package.py b/var/spack/repos/builtin/packages/hydra/package.py index 4461adae2ef..fd894b68ee1 100644 --- a/var/spack/repos/builtin/packages/hydra/package.py +++ b/var/spack/repos/builtin/packages/hydra/package.py @@ -34,6 +34,6 @@ class Hydra(AutotoolsPackage): homepage = "http://www.mpich.org" url = "http://www.mpich.org/static/downloads/3.2/hydra-3.2.tar.gz" list_url = "http://www.mpich.org/static/downloads/" - list_depth = 2 + list_depth = 1 version('3.2', '4d670916695bf7e3a869cc336a881b39') diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index 09fc683874a..819fc95d5ba 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -32,7 +32,7 @@ class Mpich(AutotoolsPackage): homepage = "http://www.mpich.org" url = "http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz" list_url = "http://www.mpich.org/static/downloads/" - list_depth = 2 + list_depth = 1 version('3.2', 'f414cfa77099cd1fa1a5ae4e22db508a') version('3.1.4', '2ab544607986486562e076b83937bba2') diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 3480311aeda..7c07c515fab 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -61,7 +61,7 @@ class Openmpi(AutotoolsPackage): homepage = "http://www.open-mpi.org" url = "https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2" list_url = "http://www.open-mpi.org/software/ompi/" - list_depth = 3 + list_depth = 2 version('2.1.0', '4838a5973115c44e14442c01d3f21d52') version('2.0.2', 'ecd99aa436a1ca69ce936a96d6a3fa48') diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 1432ac76fcc..53e94ed445b 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -37,7 +37,7 @@ class Openssl(Package): # URL must remain http:// so Spack can bootstrap curl url = "http://www.openssl.org/source/openssl-1.0.1h.tar.gz" list_url = "https://www.openssl.org/source/old/" - list_depth = 2 + list_depth = 1 version('1.1.0e', '51c42d152122e474754aea96f66928c6') version('1.1.0d', '711ce3cd5f53a99c0e12a7d5804f0f63') diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index 0f082527b96..cc6565dae37 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -33,7 +33,7 @@ class Pango(AutotoolsPackage): homepage = "http://www.pango.org" url = "http://ftp.gnome.org/pub/GNOME/sources/pango/1.40/pango-1.40.3.tar.xz" list_url = "http://ftp.gnome.org/pub/gnome/sources/pango/" - list_depth = 2 + list_depth = 1 version('1.40.3', 'abba8b5ce728520c3a0f1535eab19eac3c14aeef7faa5aded90017ceac2711d3') version('1.40.1', 'e27af54172c72b3ac6be53c9a4c67053e16c905e02addcf3a603ceb2005c1a40') diff --git a/var/spack/repos/builtin/packages/patchelf/package.py b/var/spack/repos/builtin/packages/patchelf/package.py index 1d429361b69..d36366f5575 100644 --- a/var/spack/repos/builtin/packages/patchelf/package.py +++ b/var/spack/repos/builtin/packages/patchelf/package.py @@ -33,7 +33,7 @@ class Patchelf(AutotoolsPackage): url = "http://nixos.org/releases/patchelf/patchelf-0.8/patchelf-0.8.tar.gz" list_url = "http://nixos.org/releases/patchelf/" - list_depth = 2 + list_depth = 1 version('0.9', '3c265508526760f233620f35d79c79fc') version('0.8', '407b229e6a681ffb0e2cdd5915cb2d01') diff --git a/var/spack/repos/builtin/packages/py-nose/package.py b/var/spack/repos/builtin/packages/py-nose/package.py index 2b27ed4f1d0..f3f08029a47 100644 --- a/var/spack/repos/builtin/packages/py-nose/package.py +++ b/var/spack/repos/builtin/packages/py-nose/package.py @@ -31,8 +31,6 @@ class PyNose(PythonPackage): homepage = "https://pypi.python.org/pypi/nose" url = "https://pypi.io/packages/source/n/nose/nose-1.3.4.tar.gz" - list_url = "https://pypi.python.org/pypi/nose/" - list_depth = 2 import_modules = [ 'nose', 'nose.ext', 'nose.plugins', 'nose.sphinx', 'nose.tools' diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py index e61a90f352f..844453944a4 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -30,8 +30,6 @@ class PyScikitLearn(PythonPackage): homepage = "https://pypi.python.org/pypi/scikit-learn" url = "https://pypi.io/packages/source/s/scikit-learn/scikit-learn-0.18.1.tar.gz" - list_url = "https://pypi.python.org/pypi/scikit-learn" - list_depth = 2 version('0.18.1', '6b0ff1eaa5010043895dd63d1e3c60c9') version('0.15.2', 'd9822ad0238e17b382a3c756ea94fe0d') diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index d4d6f713bac..6e0b5b8dc80 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -42,7 +42,7 @@ class Python(Package): homepage = "http://www.python.org" url = "http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz" list_url = "https://www.python.org/downloads/" - list_depth = 2 + list_depth = 1 version('3.6.0', '3f7062ccf8be76491884d0e47ac8b251') version('3.5.2', '3fe8434643a78630c61c6464fe2e7e72') @@ -99,11 +99,6 @@ def patch(self): r'\1setup.py\2 --no-user-cfg \3\6' ) - @when('@:2.6,3.0:3.3') - def patch(self): - # See https://github.com/LLNL/spack/issues/1490 - pass - def install(self, spec, prefix): # TODO: The '--no-user-cfg' option for Python installation is only in # Python v2.7 and v3.4+ (see https://bugs.python.org/issue1180) and diff --git a/var/spack/repos/builtin/packages/qt-creator/package.py b/var/spack/repos/builtin/packages/qt-creator/package.py index 347cf4d6eea..abd619530f4 100644 --- a/var/spack/repos/builtin/packages/qt-creator/package.py +++ b/var/spack/repos/builtin/packages/qt-creator/package.py @@ -32,7 +32,7 @@ class QtCreator(Package): url = 'http://download.qt.io/official_releases/qtcreator/4.1/4.1.0/qt-creator-opensource-src-4.1.0.tar.gz' list_url = 'http://download.qt.io/official_releases/qtcreator/' - list_depth = 3 + list_depth = 2 version('4.1.0', '657727e4209befa4bf5889dff62d9e0a') diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 60c5f15ece7..b27bc3fe078 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -33,7 +33,7 @@ class Qt(Package): homepage = 'http://qt.io' url = 'http://download.qt.io/archive/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz' list_url = 'http://download.qt.io/archive/qt/' - list_depth = 4 + list_depth = 3 version('5.7.1', '031fb3fd0c3cc0f1082644492683f18d') version('5.7.0', '9a46cce61fc64c20c3ac0a0e0fa41b42') @@ -251,7 +251,7 @@ def common_config_args(self): # Don't disable all the database drivers, but should # really get them into spack at some point. - @when('@3') + @when('@3') # noqa: F811 def configure(self): # A user reported that this was necessary to link Qt3 on ubuntu. # However, if LD_LIBRARY_PATH is not set the qt build fails, check @@ -268,7 +268,7 @@ def configure(self): '-release', '-fast') - @when('@4') + @when('@4') # noqa: F811 def configure(self): configure('-fast', '-{0}gtkstyle'.format('' if '+gtk' in self.spec else 'no-'), @@ -276,7 +276,7 @@ def configure(self): '-arch', str(self.spec.architecture.target), *self.common_config_args) - @when('@5.0:5.6') + @when('@5.0:5.6') # noqa: F811 def configure(self): webkit_args = [] if '+webkit' in self.spec else ['-skip', 'qtwebkit'] configure('-no-eglfs', @@ -284,7 +284,7 @@ def configure(self): '-{0}gtkstyle'.format('' if '+gtk' in self.spec else 'no-'), *(webkit_args + self.common_config_args)) - @when('@5.7:') + @when('@5.7:') # noqa: F811 def configure(self): config_args = self.common_config_args diff --git a/var/spack/repos/builtin/packages/util-linux/package.py b/var/spack/repos/builtin/packages/util-linux/package.py index 5bbaa995f8d..2fc413a98e2 100644 --- a/var/spack/repos/builtin/packages/util-linux/package.py +++ b/var/spack/repos/builtin/packages/util-linux/package.py @@ -31,7 +31,7 @@ class UtilLinux(AutotoolsPackage): homepage = "http://freecode.com/projects/util-linux" url = "https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.1.tar.gz" list_url = "https://www.kernel.org/pub/linux/utils/util-linux" - list_depth = 2 + list_depth = 1 version('2.29.1', 'c7d5c111ef6bc5df65659e0b523ac9d9') version('2.25', 'f6d7fc6952ec69c4dc62c8d7c59c1d57') From 0e785e0500e73e35a61097d0b14b6fdce10d1e86 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 1 Apr 2017 15:31:55 -0700 Subject: [PATCH 0530/2394] Add epigraph in docs. --- lib/spack/docs/index.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index 4dffe6f0911..2e99e96a3eb 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -4,9 +4,13 @@ contain the root `toctree` directive. =================== -Spack Documentation +Spack =================== +.. epigraph:: + + `These are docs for the Spack package manager. For sphere packing, see` `pyspack `_. + Spack is a package management tool designed to support multiple versions and configurations of software on a wide variety of platforms and environments. It was designed for large supercomputing centers, From ffef681377a2140040b4d65a991b9f75e56f9252 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sun, 2 Apr 2017 20:40:09 +0200 Subject: [PATCH 0531/2394] new directive: conflicts() (#3125) * Add conflicts() directive * openblas: added conflicts for intel@16 refs #3119 * added brief docs and unit tests --- lib/spack/docs/packaging_guide.rst | 22 +++++++++ lib/spack/spack/directives.py | 27 +++++++++++ lib/spack/spack/spec.py | 24 ++++++++++ lib/spack/spack/test/concretize.py | 27 ++++++++++- .../packages/conflict-parent/package.py | 46 +++++++++++++++++++ .../builtin.mock/packages/conflict/package.py | 46 +++++++++++++++++++ .../builtin/packages/openblas/package.py | 2 + 7 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin.mock/packages/conflict-parent/package.py create mode 100644 var/spack/repos/builtin.mock/packages/conflict/package.py diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 1a64c7db4a9..18541179b23 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1560,6 +1560,28 @@ Python's ``setup_dependent_environment`` method also sets up some other variables, creates a directory, and sets up the ``PYTHONPATH`` so that dependent packages can find their dependencies at build time. +.. _packaging_conflicts: + +--------- +Conflicts +--------- + +Sometimes packages have known bugs, or limitations, that would prevent them +to build e.g. against other dependencies or with certain compilers. Spack +makes it possible to express such constraints with the ``conflicts`` directive. + +Adding the following to a package: + +.. code-block:: python + + conflicts('%intel', when='@1.2') + +we express the fact that the current package *cannot be built* with the Intel +compiler when we are trying to install version "1.2". The ``when`` argument can +be omitted, in which case the conflict will always be active. +Conflicts are always evaluated after the concretization step has been performed, +and if any match is found a detailed error message is shown to the user. + .. _packaging_extensions: ---------- diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index db280cb5fd9..e2219d1f49c 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -263,6 +263,33 @@ def _depends_on(pkg, spec, when=None, type=None): conditions[when_spec] = dep_spec +@directive('conflicts') +def conflicts(conflict_spec, when=None): + """Allows a package to define a conflict, i.e. a concretized configuration + that is known to be non-valid. + + For example a package that is known not to be buildable with intel + compilers can declare: + + conflicts('%intel') + + To express the same constraint only when the 'foo' variant is activated: + + conflicts('%intel', when='+foo') + + :param conflict_spec: constraint defining the known conflict + :param when: optional constraint that triggers the conflict + """ + def _execute(pkg): + # If when is not specified the conflict always holds + condition = pkg.name if when is None else when + when_spec = parse_anonymous_spec(condition, pkg.name) + + when_spec_list = pkg.conflicts.setdefault(conflict_spec, []) + when_spec_list.append(when_spec) + return _execute + + @directive(('dependencies', 'dependency_types')) def depends_on(spec, when=None, type=None): """Creates a dict of deps with specs defining when they apply. diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 095b04f8379..b6089c7849c 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1707,6 +1707,18 @@ def concretize(self): # Mark everything in the spec as concrete, as well. self._mark_concrete() + # Now that the spec is concrete we should check if + # there are declared conflicts + matches = [] + for x in self.traverse(): + for conflict_spec, when_list in x.package.conflicts.items(): + if x.satisfies(conflict_spec): + for when_spec in when_list: + if x.satisfies(when_spec): + matches.append((x, conflict_spec, when_spec)) + if matches: + raise ConflictsInSpecError(self, matches) + def _mark_concrete(self, value=True): """Mark this spec and its dependencies as concrete. @@ -3336,3 +3348,15 @@ def __init__(self, spec, addition): "Attempting to add %s to spec %s which is already concrete." " This is likely the result of adding to a spec specified by hash." % (addition, spec)) + + +class ConflictsInSpecError(SpecError, RuntimeError): + def __init__(self, spec, matches): + message = 'Conflicts in concretized spec "{0}"\n'.format( + spec.short_spec + ) + long_message = 'List of matching conflicts:\n\n' + match_fmt = '{0}. "{1}" conflicts with "{2}" in spec "{3}"\n' + for idx, (s, c, w) in enumerate(matches): + long_message += match_fmt.format(idx + 1, c, w, s) + super(ConflictsInSpecError, self).__init__(message, long_message) diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index f4021a89ee9..3b383584ce1 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -26,7 +26,7 @@ import spack import spack.architecture from spack.concretize import find_spec -from spack.spec import Spec, CompilerSpec +from spack.spec import Spec, CompilerSpec, ConflictsInSpecError, SpecError from spack.version import ver @@ -82,6 +82,10 @@ def check_concretize(abstract_spec): 'mpileaks ^mpi', 'mpileaks ^mpi@:1.1', 'mpileaks ^mpi@2:', 'mpileaks ^mpi@2.1', 'mpileaks ^mpi@2.2', 'mpileaks ^mpi@2.2', 'mpileaks ^mpi@:1', 'mpileaks ^mpi@1.2:2' + # conflict not triggered + 'conflict', + 'conflict%clang~foo', + 'conflict-parent%gcc' ] ) def spec(request): @@ -89,6 +93,19 @@ def spec(request): return request.param +@pytest.fixture( + params=[ + 'conflict%clang', + 'conflict%clang+foo', + 'conflict-parent%clang', + 'conflict-parent@0.9^conflict~foo' + ] +) +def conflict_spec(request): + """Spec to be concretized""" + return request.param + + @pytest.mark.usefixtures('config', 'builtin_mock') class TestConcretize(object): def test_concretize(self, spec): @@ -372,3 +389,11 @@ def test_compiler_child(self): s.concretize() assert s['mpileaks'].satisfies('%clang') assert s['dyninst'].satisfies('%gcc') + + def test_conflicts_in_spec(self, conflict_spec): + # Check that an exception is raised an caught by the appropriate + # exception types. + for exc_type in (ConflictsInSpecError, RuntimeError, SpecError): + s = Spec(conflict_spec) + with pytest.raises(exc_type): + s.concretize() diff --git a/var/spack/repos/builtin.mock/packages/conflict-parent/package.py b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py new file mode 100644 index 00000000000..37805537a29 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class ConflictParent(Package): + homepage = 'https://github.com/tgamblin/callpath' + url = 'http://github.com/tgamblin/callpath-1.0.tar.gz' + + version(0.8, 'foobarbaz') + version(0.9, 'foobarbaz') + version(1.0, 'foobarbaz') + + depends_on('conflict') + + conflicts('^conflict~foo', when='@0.9') + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix) + make() + make("install") + + def setup_environment(self, senv, renv): + renv.set('FOOBAR', self.name) diff --git a/var/spack/repos/builtin.mock/packages/conflict/package.py b/var/spack/repos/builtin.mock/packages/conflict/package.py new file mode 100644 index 00000000000..a6ba4b5c58c --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/conflict/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Conflict(Package): + homepage = 'https://github.com/tgamblin/callpath' + url = 'http://github.com/tgamblin/callpath-1.0.tar.gz' + + version(0.8, 'foobarbaz') + version(0.9, 'foobarbaz') + version(1.0, 'foobarbaz') + + variant('foo', default=True, description='') + + conflicts('%clang', when='+foo') + + def install(self, spec, prefix): + configure("--prefix=%s" % prefix) + make() + make("install") + + def setup_environment(self, senv, renv): + renv.set('FOOBAR', self.name) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index bfa5a16b42a..6e161745635 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -59,6 +59,8 @@ class Openblas(MakefilePackage): parallel = False + conflicts('%intel@16', when='@0.2.15:0.2.19') + @run_before('edit') def check_compilers(self): # As of 06/2016 there is no mechanism to specify that packages which From c0cfaacbc8a8327552d3017f5d8498b22565062e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 2 Apr 2017 14:48:27 -0500 Subject: [PATCH 0532/2394] Set default providers for all virtual dependencies (#3634) * Set default providers for everything * Add default OpenFOAM provider --- etc/spack/defaults/packages.yaml | 15 ++++++++++++--- share/spack/spack-completion.bash | 4 ++-- .../packages/{daal => intel-daal}/package.py | 4 +++- .../packages/{ipp => intel-ipp}/package.py | 4 +++- 4 files changed, 20 insertions(+), 7 deletions(-) rename var/spack/repos/builtin/packages/{daal => intel-daal}/package.py (97%) rename var/spack/repos/builtin/packages/{ipp => intel-ipp}/package.py (97%) diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index 37737da7c6c..0cafab28e90 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -17,8 +17,17 @@ packages: all: compiler: [gcc, intel, pgi, clang, xl, nag] providers: - mpi: [openmpi, mpich] - blas: [openblas] - lapack: [openblas] awk: [gawk] + blas: [openblas] + daal: [intel-parallel-studio+daal] + elf: [elfutils] + golang: [gcc] + ipp: [intel-parallel-studio+ipp] + lapack: [openblas] + mkl: [intel-parallel-studio+mkl] + mpe: [mpe2] + mpi: [openmpi, mpich] + opencl: [pocl] + openfoam: [foam-extend] pil: [py-pillow] + scalapack: [netlib-scalapack] diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index eb2da5b7d70..726e1c81cb0 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -589,8 +589,8 @@ function _spack_providers { then compgen -W "-h --help" -- "$cur" else - compgen -W "blas daal elf golang ipp lapack mkl - mpe mpi openfoam pil scalapack" -- "$cur" + compgen -W "awk blas daal elf golang ipp lapack mkl + mpe mpi opencl openfoam pil scalapack" -- "$cur" fi } diff --git a/var/spack/repos/builtin/packages/daal/package.py b/var/spack/repos/builtin/packages/intel-daal/package.py similarity index 97% rename from var/spack/repos/builtin/packages/daal/package.py rename to var/spack/repos/builtin/packages/intel-daal/package.py index 18ecfed7c21..011dec158e5 100644 --- a/var/spack/repos/builtin/packages/daal/package.py +++ b/var/spack/repos/builtin/packages/intel-daal/package.py @@ -28,7 +28,7 @@ from spack.pkg.builtin.intel import IntelInstaller -class Daal(IntelInstaller): +class IntelDaal(IntelInstaller): """Intel Data Analytics Acceleration Library. Note: You will have to add the download file to a @@ -44,6 +44,8 @@ class Daal(IntelInstaller): version('2016.3.210', 'ad747c0dd97dace4cad03cf2266cad28', url="file://%s/l_daal_2016.3.210.tgz" % os.getcwd()) + provides('daal') + def install(self, spec, prefix): self.intel_prefix = os.path.join(prefix, "pkg") diff --git a/var/spack/repos/builtin/packages/ipp/package.py b/var/spack/repos/builtin/packages/intel-ipp/package.py similarity index 97% rename from var/spack/repos/builtin/packages/ipp/package.py rename to var/spack/repos/builtin/packages/intel-ipp/package.py index a9765e1a0ad..3c37b2342f7 100644 --- a/var/spack/repos/builtin/packages/ipp/package.py +++ b/var/spack/repos/builtin/packages/intel-ipp/package.py @@ -28,7 +28,7 @@ from spack.pkg.builtin.intel import IntelInstaller -class Ipp(IntelInstaller): +class IntelIpp(IntelInstaller): """Intel Integrated Performance Primitives. Note: You will have to add the download file to a @@ -42,6 +42,8 @@ class Ipp(IntelInstaller): version('9.0.3.210', '0e1520dd3de7f811a6ef6ebc7aa429a3', url="file://%s/l_ipp_9.0.3.210.tgz" % os.getcwd()) + provides('ipp') + def install(self, spec, prefix): self.intel_prefix = os.path.join(prefix, "pkg") From cddb7524b7ca7dd086b11e6130717a328f66147e Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sun, 2 Apr 2017 18:32:20 -0700 Subject: [PATCH 0533/2394] Hey, I was using that! :) (#3660) Turns out that we really want 5.22.2 for backward compatibility. --- var/spack/repos/builtin/packages/perl/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 3f2f3aa1a71..4ae140454d2 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -47,6 +47,9 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package # Maintenance releases (recommended) version('5.24.1', '765ef511b5b87a164e2531403ee16b3c', preferred=True) version('5.22.3', 'aa4f236dc2fc6f88b871436b8d0fda95') + + # Misc releases that people need + version('5.22.2', '5767e2a10dd62a46d7b57f74a90d952b') # End of life releases version('5.20.3', 'd647d0ea5a7a8194c34759ab9f2610cd') From b7eee1bd7be538077fd21b52236dc341beba14b5 Mon Sep 17 00:00:00 2001 From: Jeffrey Salmond Date: Mon, 3 Apr 2017 13:56:58 +0100 Subject: [PATCH 0534/2394] add gflags as dependency of glog (#3665) --- var/spack/repos/builtin/packages/glog/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/glog/package.py b/var/spack/repos/builtin/packages/glog/package.py index eb8edf3aad0..3ea17d2f0c2 100644 --- a/var/spack/repos/builtin/packages/glog/package.py +++ b/var/spack/repos/builtin/packages/glog/package.py @@ -33,3 +33,5 @@ class Glog(AutotoolsPackage): version('0.3.4', 'df92e05c9d02504fb96674bc776a41cb') version('0.3.3', 'c1f86af27bd9c73186730aa957607ed0') + + depends_on('gflags') From 9b19968bacccf65f7b0b104df789472e049eaf23 Mon Sep 17 00:00:00 2001 From: Jeffrey Salmond Date: Mon, 3 Apr 2017 14:08:28 +0100 Subject: [PATCH 0535/2394] add CUDA_HOME arg to nccl makefile (#3666) --- var/spack/repos/builtin/packages/nccl/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/nccl/package.py b/var/spack/repos/builtin/packages/nccl/package.py index b68d3429d18..52be43aa25e 100644 --- a/var/spack/repos/builtin/packages/nccl/package.py +++ b/var/spack/repos/builtin/packages/nccl/package.py @@ -36,6 +36,10 @@ class Nccl(MakefilePackage): depends_on('cuda') + @property + def build_targets(self): + return ['CUDA_HOME={0}'.format(self.spec['cuda'].prefix)] + @property def install_targets(self): return ['PREFIX={0}'.format(self.prefix), 'install'] From 57b396177854636257ad5884b0deeca6a79d207a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Mon, 3 Apr 2017 23:59:24 +0800 Subject: [PATCH 0536/2394] Add libpfm4 package. (#3667) --- .../repos/builtin/packages/libpfm4/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libpfm4/package.py diff --git a/var/spack/repos/builtin/packages/libpfm4/package.py b/var/spack/repos/builtin/packages/libpfm4/package.py new file mode 100644 index 00000000000..7de4649dd3f --- /dev/null +++ b/var/spack/repos/builtin/packages/libpfm4/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libpfm4(MakefilePackage): + """libpfm4 is a userspace library to help + setup performance events for use with + the perf_events Linux kernel interface.""" + + homepage = "http://perfmon2.sourceforge.net" + url = "https://downloads.sourceforge.net/project/perfmon2/libpfm4/libpfm-4.8.0.tar.gz" + + version('4.8.0', '730383896db92e12fb2cc10f2d41dd43') + + # Fails to build libpfm4 with intel compiler version 16 and 17 + conflicts('intel@16:17') + + @property + def install_targets(self): + return ['DESTDIR={0}'.format(self.prefix), + 'LIBDIR=/lib', + 'INCDIR=/include', + 'MANDIR=/man', + 'LDCONFIG=true', + 'install'] From 11fe0b9b264fabec1927747e96401f97f46abb7e Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 3 Apr 2017 08:59:44 -0700 Subject: [PATCH 0537/2394] Add depends_on() new-ish bison (#3661) * Add depends_on() new-ish bison * Refine dependency, only needed to build. --- var/spack/repos/builtin/packages/jq/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/jq/package.py b/var/spack/repos/builtin/packages/jq/package.py index b4ec09c7506..28e1c4dcfb4 100644 --- a/var/spack/repos/builtin/packages/jq/package.py +++ b/var/spack/repos/builtin/packages/jq/package.py @@ -34,3 +34,4 @@ class Jq(AutotoolsPackage): version('1.5', 'c8070bd6ec275404f77db3d2e568c9a3') depends_on('oniguruma') + depends_on('bison@3.0:', type='build') From 6cf87e36376916f8febd3b5be824cbb71441afbb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 3 Apr 2017 13:04:42 -0500 Subject: [PATCH 0538/2394] Add latest alpha release of MVAPICH2 (#3674) --- var/spack/repos/builtin/packages/mvapich2/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 55b593f6235..7c102877295 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -30,8 +30,13 @@ class Mvapich2(Package): """MVAPICH2 is an MPI implementation for Infiniband networks.""" homepage = "http://mvapich.cse.ohio-state.edu/" url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.2.tar.gz" + list_url = "http://mvapich.cse.ohio-state.edu/downloads/" - version('2.2', '939b65ebe5b89a5bc822cdab0f31f96e') + # Newer alpha release + version('2.3a', '87c3fbf8a755b53806fa9ecb21453445') + + # Prefer the latest stable release + version('2.2', '939b65ebe5b89a5bc822cdab0f31f96e', preferred=True) version('2.1', '0095ceecb19bbb7fb262131cb9c2cdd6') version('2.0', '9fbb68a4111a8b6338e476dc657388b4') version('1.9', '5dc58ed08fd3142c260b70fe297e127c') From 74bd8944272d7d943410e0bf20dce6ec2e5b65f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Tue, 4 Apr 2017 02:05:03 +0800 Subject: [PATCH 0539/2394] Fix conflict directives for libpfm4. (#3673) --- var/spack/repos/builtin/packages/libpfm4/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libpfm4/package.py b/var/spack/repos/builtin/packages/libpfm4/package.py index 7de4649dd3f..c7463afeeb8 100644 --- a/var/spack/repos/builtin/packages/libpfm4/package.py +++ b/var/spack/repos/builtin/packages/libpfm4/package.py @@ -36,7 +36,7 @@ class Libpfm4(MakefilePackage): version('4.8.0', '730383896db92e12fb2cc10f2d41dd43') # Fails to build libpfm4 with intel compiler version 16 and 17 - conflicts('intel@16:17') + conflicts('%intel@16:17') @property def install_targets(self): From 734f90d11fcca1d59a817a55b5309ad5a31392ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Tue, 4 Apr 2017 02:35:04 +0800 Subject: [PATCH 0540/2394] openfst conflicts with intel@16: and gcc@6: . (#3671) --- .../repos/builtin/packages/openfst/package.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/openfst/package.py b/var/spack/repos/builtin/packages/openfst/package.py index e96575798b6..9711605462f 100644 --- a/var/spack/repos/builtin/packages/openfst/package.py +++ b/var/spack/repos/builtin/packages/openfst/package.py @@ -26,9 +26,9 @@ class Openfst(AutotoolsPackage): - """OpenFst is a library for constructing, combining, optimizing, - and searching weighted finite-state transducers (FSTs). Weighted - finite-state transducers are automata where each transition has + """OpenFst is a library for constructing, combining, optimizing, + and searching weighted finite-state transducers (FSTs). Weighted + finite-state transducers are automata where each transition has an input label, an output label, and a weight.""" homepage = "http://www.openfst.org" @@ -45,10 +45,5 @@ class Openfst(AutotoolsPackage): version('1.4.1', 'ca8f1730b9b9b281e515611fa9ae23c0') version('1.4.0', '662367ec91084ffab48ee9b5716de39c') - @run_before('autoreconf') - def check_compilers(self): - # Fails to built openfst with %gcc@6: or %intel@16 - if self.spec.satisfies('%intel@16:') or self.spec.satisfies('gcc@6:'): - raise InstallError( - 'openfst does not support Intel compiler >= 16 and gcc >= 6 ' - ) + conflicts('%intel@16:') + conflicts('%gcc@6:') From 7e9777f294a0a672f550e2dede033e4dc3e5dfda Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 3 Apr 2017 14:09:44 -0500 Subject: [PATCH 0541/2394] Add latest version of pkg-config (#3672) --- .../builtin/packages/pkg-config/package.py | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py index 4d677172c4f..50b517f6d04 100644 --- a/var/spack/repos/builtin/packages/pkg-config/package.py +++ b/var/spack/repos/builtin/packages/pkg-config/package.py @@ -25,40 +25,40 @@ from spack import * -class PkgConfig(Package): +class PkgConfig(AutotoolsPackage): """pkg-config is a helper tool used when compiling applications and libraries""" homepage = "http://www.freedesktop.org/wiki/Software/pkg-config/" - url = "http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz" + url = "http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz" + version('0.29.2', 'f6e931e319531b736fadc017f470e68a') version('0.29.1', 'f739a28cae4e0ca291f82d1d41ef107d') version('0.28', 'aa3c86e67551adc3ac865160e34a2a0d') - parallel = False variant('internal_glib', default=True, description='Builds with internal glib') # The following patch is needed for gcc-6.1 - patch('g_date_strftime.patch') + patch('g_date_strftime.patch', when='@:0.29.1') - @when("platform=cray") - def setup_dependent_environment(self, spack_env, run_env, dep_spec): + parallel = False + + @when('platform=cray') + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """spack built pkg-config on cray's requires adding /usr/local/ and /usr/lib64/ to PKG_CONFIG_PATH in order to access cray '.pc' files.""" - spack_env.prepend_path("PKG_CONFIG_PATH", "/usr/lib64/pkgconfig") - spack_env.prepend_path("PKG_CONFIG_PATH", "/usr/local/lib64/pkgconfig") + spack_env.prepend_path('PKG_CONFIG_PATH', '/usr/lib64/pkgconfig') + spack_env.prepend_path('PKG_CONFIG_PATH', '/usr/local/lib64/pkgconfig') - def install(self, spec, prefix): - args = ["--prefix={0}".format(prefix), - "--enable-shared"] - if "+internal_glib" in spec: + def configure_args(self): + config_args = ['--enable-shared'] + + if '+internal_glib' in self.spec: # There's a bootstrapping problem here; # glib uses pkg-config as well, so break # the cycle by using the internal glib. - args.append("--with-internal-glib") - configure(*args) + config_args.append('--with-internal-glib') - make() - make("install") + return config_args From 50df071ad9a1b936ffbb4121036a36ed5ab38ffa Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 3 Apr 2017 17:34:16 -0500 Subject: [PATCH 0542/2394] Overhaul Spack's URL parsing (#2972) * Remove fake URLs from Spack * Ignore long lines for URLs that start with ftp: * Preliminary changes to version regexes * New redesign of version regexes * Allow letters in version-only * Fix detection of versions that end in Final * Rearrange a few regexes and add examples * Add tests for common download repositories * Add test cases for common tarball naming schemes * Finalize version regexes * spack url test -> spack url summary * Clean up comments * Rearrange suffix checks * Use query strings for name detection * Remove no longer necessary url_for_version functions * Strip off extraneous information after package name * Add one more test * Dot in square brackets does not need to be escaped * Move renaming outside of parse_name_offset * Fix versions for a couple more packages * Fix flake8 and doc tests * Correctly parse Python, Lua, and Bio++ package names * Use effective URLs for mfem * Add checksummed version to mitos * Remove url_for_version from STAR-CCM+ package * Revert changes to version numbers with underscores and dashes * Fix name detection for tbb * Correctly parse Ruby gems * Reverted mfem back to shortened URLs. * Updated instructions for better security * Remove preferred=True from newest version * Add tests for new `spack url list` flags * Add tests for strip_name_suffixes * Add unit tests for version separators * Fix bugs related to parseable name but in parseable version * Remove dead code, update docstring * Ignore 'binary' at end of version string * Remove platform from version * Flip libedit version numbers * Re-support weird NCO alpha/beta versions * Rebase and remove one new fake URL * Add / to beginning of regex to avoid picking up similarly named packages * Ignore weird tar versions * Fix bug in url parse --spider when no versions found * Less strict version matching for spack versions * Don't rename Python packages * Be a little more selective, version must begin with a digit * Re-add fake URLs * Fix up several other packages * Ignore more file endings * Add parsing support for Miniconda * Update tab completion * XFAILS are now PASSES for 2 web tests --- lib/spack/docs/developer_guide.rst | 8 +- lib/spack/spack/cmd/create.py | 25 +- lib/spack/spack/cmd/flake8.py | 2 +- lib/spack/spack/cmd/url.py | 92 +- lib/spack/spack/cmd/versions.py | 2 +- lib/spack/spack/test/cmd/url.py | 21 +- lib/spack/spack/test/url_extrapolate.py | 101 -- lib/spack/spack/test/url_parse.py | 866 ++++++++++++------ lib/spack/spack/test/url_substitution.py | 84 +- lib/spack/spack/test/web.py | 3 - lib/spack/spack/url.py | 505 +++++++--- lib/spack/spack/util/naming.py | 45 + lib/spack/spack/util/web.py | 12 +- lib/spack/spack/version.py | 29 - share/spack/spack-completion.bash | 9 +- .../builtin/packages/automake/package.py | 2 +- .../builtin/packages/bib2xhtml/package.py | 3 - .../repos/builtin/packages/bison/package.py | 2 +- .../builtin/packages/blast-plus/package.py | 5 - .../repos/builtin/packages/boost/package.py | 10 +- .../repos/builtin/packages/bowtie2/package.py | 7 +- .../repos/builtin/packages/cddlib/package.py | 18 +- .../repos/builtin/packages/cdo/package.py | 10 +- .../repos/builtin/packages/cfitsio/package.py | 1 + .../repos/builtin/packages/cppad/package.py | 5 +- .../builtin/packages/cryptopp/package.py | 1 + .../repos/builtin/packages/dakota/package.py | 4 - .../builtin/packages/exonerate/package.py | 2 +- .../repos/builtin/packages/ferret/package.py | 11 +- .../builtin/packages/gdk-pixbuf/package.py | 4 +- .../repos/builtin/packages/go/package.py | 7 - .../repos/builtin/packages/gource/package.py | 4 - .../repos/builtin/packages/ibmisc/package.py | 4 +- .../repos/builtin/packages/icet/package.py | 6 +- .../builtin/packages/image-magick/package.py | 3 - .../repos/builtin/packages/jdk/package.py | 4 +- .../repos/builtin/packages/libedit/package.py | 8 +- .../repos/builtin/packages/libgd/package.py | 4 - .../builtin/packages/libsodium/package.py | 1 + .../builtin/packages/libxstream/package.py | 4 +- .../repos/builtin/packages/meep/package.py | 2 + .../repos/builtin/packages/metis/package.py | 20 +- .../repos/builtin/packages/mfem/package.py | 23 +- .../repos/builtin/packages/mitos/package.py | 5 +- .../repos/builtin/packages/moab/package.py | 2 +- .../repos/builtin/packages/mxml/package.py | 3 - .../repos/builtin/packages/nettle/package.py | 2 +- .../builtin/packages/nextflow/package.py | 5 +- .../repos/builtin/packages/oce/package.py | 5 +- .../repos/builtin/packages/octopus/package.py | 8 +- .../builtin/packages/openjpeg/package.py | 4 - .../repos/builtin/packages/panda/package.py | 4 +- .../builtin/packages/parmetis/package.py | 12 +- .../repos/builtin/packages/prank/package.py | 2 +- .../builtin/packages/py-autopep8/package.py | 13 +- .../repos/builtin/packages/py-cdo/package.py | 5 +- .../builtin/packages/py-markdown/package.py | 4 - .../repos/builtin/packages/py-proj/package.py | 5 +- .../builtin/packages/py-pypar/package.py | 3 - .../builtin/packages/py-rtree/package.py | 17 +- .../repos/builtin/packages/r-lava/package.py | 2 +- .../repos/builtin/packages/root/package.py | 6 +- .../repos/builtin/packages/rose/package.py | 7 +- .../builtin/packages/rust-bindgen/package.py | 4 +- .../repos/builtin/packages/scorep/package.py | 11 +- .../repos/builtin/packages/scotch/package.py | 9 +- .../repos/builtin/packages/silo/package.py | 5 +- .../builtin/packages/star-ccm-plus/package.py | 5 +- .../builtin/packages/sublime-text/package.py | 4 +- .../repos/builtin/packages/tcl/package.py | 5 +- .../repos/builtin/packages/tetgen/package.py | 2 +- .../repos/builtin/packages/tinyxml/package.py | 4 + .../repos/builtin/packages/tk/package.py | 5 +- .../builtin/packages/trilinos/package.py | 10 +- .../repos/builtin/packages/unison/package.py | 2 +- .../repos/builtin/packages/voropp/package.py | 11 +- .../repos/builtin/packages/vtk/package.py | 1 + .../builtin/packages/xsdktrilinos/package.py | 10 +- .../repos/builtin/packages/yorick/package.py | 10 +- .../repos/builtin/packages/zoltan/package.py | 5 +- 80 files changed, 1357 insertions(+), 839 deletions(-) delete mode 100644 lib/spack/spack/test/url_extrapolate.py diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index 0ce40299508..ea8d50c6cae 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -447,16 +447,16 @@ the string that it detected to be the name and version. The ``--incorrect-name`` and ``--incorrect-version`` flags can be used to print URLs that were not being parsed correctly. -"""""""""""""""""" -``spack url test`` -"""""""""""""""""" +""""""""""""""""""""" +``spack url summary`` +""""""""""""""""""""" This command attempts to parse every URL for every package in Spack and prints a summary of how many of them are being correctly parsed. It also prints a histogram showing which regular expressions are being matched and how frequently: -.. command-output:: spack url test +.. command-output:: spack url summary This command is essential for anyone adding or changing the regular expressions that parse names and versions. By running this command diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index cc906691582..906c7e1aec2 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -31,13 +31,13 @@ import spack import spack.cmd import spack.cmd.checksum -import spack.url import spack.util.web from llnl.util.filesystem import mkdirp from spack.repository import Repo from spack.spec import Spec from spack.util.executable import which from spack.util.naming import * +from spack.url import * description = "create a new package file" @@ -382,6 +382,10 @@ class BuildSystemGuesser: can take a peek at the fetched tarball and discern the build system it uses """ + def __init__(self): + """Sets the default build system.""" + self.build_system = 'generic' + def __call__(self, stage, url): """Try to guess the type of build system used by a project based on the contents of its archive or the URL it was downloaded from.""" @@ -427,14 +431,11 @@ def __call__(self, stage, url): # Determine the build system based on the files contained # in the archive. - build_system = 'generic' for pattern, bs in clues: if any(re.search(pattern, l) for l in lines): - build_system = bs + self.build_system = bs break - self.build_system = build_system - def get_name(args): """Get the name of the package based on the supplied arguments. @@ -458,9 +459,9 @@ def get_name(args): elif args.url: # Try to guess the package name based on the URL try: - name = spack.url.parse_name(args.url) + name = parse_name(args.url) tty.msg("This looks like a URL for {0}".format(name)) - except spack.url.UndetectableNameError: + except UndetectableNameError: tty.die("Couldn't guess a name for this package.", " Please report this bug. In the meantime, try running:", " `spack create --name `") @@ -515,11 +516,16 @@ def get_versions(args, name): if args.url: # Find available versions - url_dict = spack.util.web.find_versions_of_archive(args.url) + try: + url_dict = spack.util.web.find_versions_of_archive(args.url) + except UndetectableVersionError: + # Use fake versions + tty.warn("Couldn't detect version in: {0}".format(args.url)) + return versions, guesser if not url_dict: # If no versions were found, revert to what the user provided - version = spack.url.parse_version(args.url) + version = parse_version(args.url) url_dict = {version: args.url} versions = spack.cmd.checksum.get_checksums( @@ -611,6 +617,7 @@ def create(parser, args): url = get_url(args) versions, guesser = get_versions(args, name) build_system = get_build_system(args, guesser) + name = simplify_name(name) # Create the package template object PackageClass = templates[build_system] diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index 19724142bbe..a6dc941190d 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -70,7 +70,7 @@ # exemptions applied to all files. r'.py$': { # Exempt lines with URLs from overlong line errors. - 501: [r'(https?|file)\:'] + 501: [r'(https?|ftp|file)\:'] }, } diff --git a/lib/spack/spack/cmd/url.py b/lib/spack/spack/cmd/url.py index 6823f0febd1..1128e08a43c 100644 --- a/lib/spack/spack/cmd/url.py +++ b/lib/spack/spack/cmd/url.py @@ -31,6 +31,7 @@ from llnl.util import tty from spack.url import * from spack.util.web import find_versions_of_archive +from spack.util.naming import simplify_name description = "debugging tool for url parsing" @@ -65,20 +66,27 @@ def setup_parser(subparser): excl_args.add_argument( '-n', '--incorrect-name', action='store_true', help='only list urls for which the name was incorrectly parsed') + excl_args.add_argument( + '-N', '--correct-name', action='store_true', + help='only list urls for which the name was correctly parsed') excl_args.add_argument( '-v', '--incorrect-version', action='store_true', help='only list urls for which the version was incorrectly parsed') + excl_args.add_argument( + '-V', '--correct-version', action='store_true', + help='only list urls for which the version was correctly parsed') - # Test + # Summary sp.add_parser( - 'test', help='print a summary of how well we are parsing package urls') + 'summary', + help='print a summary of how well we are parsing package urls') def url(parser, args): action = { - 'parse': url_parse, - 'list': url_list, - 'test': url_test + 'parse': url_parse, + 'list': url_list, + 'summary': url_summary } action[args.subcommand](args) @@ -116,6 +124,10 @@ def url_parse(args): tty.msg('Spidering for versions:') versions = find_versions_of_archive(url) + if not versions: + print(' Found no versions for {0}'.format(name)) + return + max_len = max(len(str(v)) for v in versions) for v in sorted(versions): @@ -145,7 +157,7 @@ def url_list(args): return len(urls) -def url_test(args): +def url_summary(args): # Collect statistics on how many URLs were correctly parsed total_urls = 0 correct_names = 0 @@ -205,19 +217,19 @@ def url_test(args): correct_versions, total_urls, correct_versions / total_urls)) print() - tty.msg('Statistics on name regular expresions:') + tty.msg('Statistics on name regular expressions:') print() - print(' Index Count Regular Expresion') + print(' Index Count Regular Expression') for ni in name_regex_dict: print(' {0:>3}: {1:>6} r{2!r}'.format( ni, name_count_dict[ni], name_regex_dict[ni])) print() - tty.msg('Statistics on version regular expresions:') + tty.msg('Statistics on version regular expressions:') print() - print(' Index Count Regular Expresion') + print(' Index Count Regular Expression') for vi in version_regex_dict: print(' {0:>3}: {1:>6} r{2!r}'.format( vi, version_count_dict[vi], version_regex_dict[vi])) @@ -257,22 +269,38 @@ def url_list_parsing(args, urls, url, pkg): :rtype: set """ if url: - if args.incorrect_name: - # Only add URLs whose name was incorrectly parsed + if args.correct_name or args.incorrect_name: + # Attempt to parse the name try: name = parse_name(url) - if not name_parsed_correctly(pkg, name): + if (args.correct_name and + name_parsed_correctly(pkg, name)): + # Add correctly parsed URLs + urls.add(url) + elif (args.incorrect_name and + not name_parsed_correctly(pkg, name)): + # Add incorrectly parsed URLs urls.add(url) except UndetectableNameError: - urls.add(url) - elif args.incorrect_version: - # Only add URLs whose version was incorrectly parsed + if args.incorrect_name: + # Add incorrectly parsed URLs + urls.add(url) + elif args.correct_version or args.incorrect_version: + # Attempt to parse the version try: version = parse_version(url) - if not version_parsed_correctly(pkg, version): + if (args.correct_version and + version_parsed_correctly(pkg, version)): + # Add correctly parsed URLs + urls.add(url) + elif (args.incorrect_version and + not version_parsed_correctly(pkg, version)): + # Add incorrectly parsed URLs urls.add(url) except UndetectableVersionError: - urls.add(url) + if args.incorrect_version: + # Add incorrectly parsed URLs + urls.add(url) else: urls.add(url) @@ -289,6 +317,8 @@ def name_parsed_correctly(pkg, name): """ pkg_name = pkg.name + name = simplify_name(name) + # After determining a name, `spack create` determines a build system. # Some build systems prepend a special string to the front of the name. # Since this can't be guessed from the URL, it would be unfair to say @@ -311,9 +341,33 @@ def version_parsed_correctly(pkg, version): :returns: True if the name was correctly parsed, else False :rtype: bool """ + version = remove_separators(version) + # If the version parsed from the URL is listed in a version() # directive, we assume it was correctly parsed for pkg_version in pkg.versions: - if str(pkg_version) == str(version): + pkg_version = remove_separators(pkg_version) + if pkg_version == version: return True return False + + +def remove_separators(version): + """Removes separator characters ('.', '_', and '-') from a version. + + A version like 1.2.3 may be displayed as 1_2_3 in the URL. + Make sure 1.2.3, 1-2-3, 1_2_3, and 123 are considered equal. + Unfortunately, this also means that 1.23 and 12.3 are equal. + + :param version: A version + :type version: str or Version + :returns: The version with all separator characters removed + :rtype: str + """ + version = str(version) + + version = version.replace('.', '') + version = version.replace('_', '') + version = version.replace('-', '') + + return version diff --git a/lib/spack/spack/cmd/versions.py b/lib/spack/spack/cmd/versions.py index f65ef144062..a6f6805fb02 100644 --- a/lib/spack/spack/cmd/versions.py +++ b/lib/spack/spack/cmd/versions.py @@ -53,6 +53,6 @@ def versions(parser, args): tty.debug("Check the list_url and list_depth attribute on the " "package to help Spack find versions.") else: - print(" Found no unckecksummed versions for %s" % pkg.name) + print(" Found no unchecksummed versions for %s" % pkg.name) else: colify(sorted(remote_versions, reverse=True), indent=2) diff --git a/lib/spack/spack/test/cmd/url.py b/lib/spack/spack/test/cmd/url.py index 4c60d814cea..3bc0bc78204 100644 --- a/lib/spack/spack/test/cmd/url.py +++ b/lib/spack/spack/test/cmd/url.py @@ -48,11 +48,12 @@ def test_name_parsed_correctly(): assert name_parsed_correctly(MyPackage('r-devtools', []), 'devtools') assert name_parsed_correctly(MyPackage('py-numpy', []), 'numpy') assert name_parsed_correctly(MyPackage('octave-splines', []), 'splines') + assert name_parsed_correctly(MyPackage('imagemagick', []), 'ImageMagick') # noqa + assert name_parsed_correctly(MyPackage('th-data', []), 'TH.data') # Expected False assert not name_parsed_correctly(MyPackage('', []), 'hdf5') assert not name_parsed_correctly(MyPackage('hdf5', []), '') - assert not name_parsed_correctly(MyPackage('imagemagick', []), 'ImageMagick') # noqa assert not name_parsed_correctly(MyPackage('yaml-cpp', []), 'yamlcpp') assert not name_parsed_correctly(MyPackage('yamlcpp', []), 'yaml-cpp') assert not name_parsed_correctly(MyPackage('r-py-parser', []), 'parser') @@ -64,6 +65,8 @@ def test_version_parsed_correctly(): assert version_parsed_correctly(MyPackage('', ['1.2.3']), '1.2.3') assert version_parsed_correctly(MyPackage('', ['5.4a', '5.4b']), '5.4a') assert version_parsed_correctly(MyPackage('', ['5.4a', '5.4b']), '5.4b') + assert version_parsed_correctly(MyPackage('', ['1.63.0']), '1_63_0') + assert version_parsed_correctly(MyPackage('', ['0.94h']), '094h') # Expected False assert not version_parsed_correctly(MyPackage('', []), '1.2.3') @@ -95,7 +98,7 @@ def test_url_list(parser): colored_urls = url_list(args) assert colored_urls == total_urls - # The following two options should print fewer URLs than the default. + # The following options should print fewer URLs than the default. # If they print the same number of URLs, something is horribly broken. # If they say we missed 0 URLs, something is probably broken too. args = parser.parse_args(['list', '--incorrect-name']) @@ -106,11 +109,19 @@ def test_url_list(parser): incorrect_version_urls = url_list(args) assert 0 < incorrect_version_urls < total_urls + args = parser.parse_args(['list', '--correct-name']) + correct_name_urls = url_list(args) + assert 0 < correct_name_urls < total_urls -def test_url_test(parser): - args = parser.parse_args(['test']) + args = parser.parse_args(['list', '--correct-version']) + correct_version_urls = url_list(args) + assert 0 < correct_version_urls < total_urls + + +def test_url_summary(parser): + args = parser.parse_args(['summary']) (total_urls, correct_names, correct_versions, - name_count_dict, version_count_dict) = url_test(args) + name_count_dict, version_count_dict) = url_summary(args) assert 0 < correct_names <= sum(name_count_dict.values()) <= total_urls # noqa assert 0 < correct_versions <= sum(version_count_dict.values()) <= total_urls # noqa diff --git a/lib/spack/spack/test/url_extrapolate.py b/lib/spack/spack/test/url_extrapolate.py deleted file mode 100644 index 5f5cf555ae7..00000000000 --- a/lib/spack/spack/test/url_extrapolate.py +++ /dev/null @@ -1,101 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, February 1999. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -# conditions of the GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -############################################################################## -"""Tests ability of spack to extrapolate URL versions from -existing versions. -""" -import unittest - -import spack.url as url - - -class UrlExtrapolateTest(unittest.TestCase): - - def check_url(self, base, version, new_url): - self.assertEqual(url.substitute_version(base, version), new_url) - - def test_libelf_version(self): - base = "http://www.mr511.de/software/libelf-0.8.13.tar.gz" - self.check_url(base, '0.8.13', base) - self.check_url( - base, '0.8.12', "http://www.mr511.de/software/libelf-0.8.12.tar.gz") - self.check_url( - base, '0.3.1', "http://www.mr511.de/software/libelf-0.3.1.tar.gz") - self.check_url( - base, '1.3.1b', "http://www.mr511.de/software/libelf-1.3.1b.tar.gz") - - def test_libdwarf_version(self): - base = "http://www.prevanders.net/libdwarf-20130729.tar.gz" - self.check_url(base, '20130729', base) - self.check_url( - base, '8.12', "http://www.prevanders.net/libdwarf-8.12.tar.gz") - - def test_dyninst_version(self): - # Dyninst has a version twice in the URL. - base = "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1.2/DyninstAPI-8.1.2.tgz" - self.check_url(base, '8.1.2', base) - self.check_url(base, '8.2', - "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.2/DyninstAPI-8.2.tgz") - self.check_url(base, '8.3.1', - "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.3.1/DyninstAPI-8.3.1.tgz") - - def test_partial_version_prefix(self): - # Test now with a partial prefix earlier in the URL -- this is - # hard to figure out so Spack only substitutes the last - # instance of the version. - base = "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1/DyninstAPI-8.1.2.tgz" - self.check_url(base, '8.1.2', base) - self.check_url(base, '8.1.4', - "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1/DyninstAPI-8.1.4.tgz") - self.check_url(base, '8.2', - "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1/DyninstAPI-8.2.tgz") - self.check_url(base, '8.3.1', - "http://www.dyninst.org/sites/default/files/downloads/dyninst/8.1/DyninstAPI-8.3.1.tgz") - - def test_scalasca_partial_version(self): - # Note that this probably doesn't actually work, but sites are - # inconsistent about their directory structure, so it's not - # clear what is right. This test is for consistency and to - # document behavior. If you figure out a good way to handle - # this case, fix the tests too. - self.check_url('http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3-TP1.tar.gz', '8.3.1', - 'http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-8.3.1.tar.gz') - self.check_url('http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3-TP1.tar.gz', '8.3.1', - 'http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-8.3.1.tar.gz') - - def test_mpileaks_version(self): - self.check_url('https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz', '2.1.3', - 'https://github.com/hpc/mpileaks/releases/download/v2.1.3/mpileaks-2.1.3.tar.gz') - - def test_gcc(self): - self.check_url('http://open-source-box.org/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2', '4.7', - 'http://open-source-box.org/gcc/gcc-4.7/gcc-4.7.tar.bz2') - self.check_url('http://open-source-box.org/gcc/gcc-4.4.7/gcc-4.4.7.tar.bz2', '4.4.7', - 'http://open-source-box.org/gcc/gcc-4.4.7/gcc-4.4.7.tar.bz2') - - def test_github_raw(self): - self.check_url('https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true', '2.0.7', - 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true') - self.check_url('https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true', '4.7', - 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v4.7.tgz?raw=true') diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index 8913de94d02..2af7c6ae0b9 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -22,92 +22,633 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -"""\ -This file has a bunch of versions tests taken from the excellent version -detection in Homebrew. -""" +"""Tests Spack's ability to parse the name and version of a package +based on its URL.""" + +import os import unittest -import spack.url as url +from spack.url import * -class UrlParseTest(unittest.TestCase): +class UrlStripVersionSuffixesTest(unittest.TestCase): + """Tests for spack.url.strip_version_suffixes""" + + def check(self, before, after): + stripped = strip_version_suffixes(before) + self.assertEqual(stripped, after) + + def test_no_suffix(self): + self.check('rgb-1.0.6', + 'rgb-1.0.6') + + def test_misleading_prefix(self): + self.check('jpegsrc.v9b', + 'jpegsrc.v9b') + self.check('turbolinux702', + 'turbolinux702') + self.check('converge_install_2.3.16', + 'converge_install_2.3.16') + + # Download type + + def test_src(self): + self.check('apache-ant-1.9.7-src', + 'apache-ant-1.9.7') + self.check('go1.7.4.src', + 'go1.7.4') + + def test_source(self): + self.check('bowtie2-2.2.5-source', + 'bowtie2-2.2.5') + self.check('grib_api-1.17.0-Source', + 'grib_api-1.17.0') + + def test_full(self): + self.check('julia-0.4.3-full', + 'julia-0.4.3') + + def test_bin(self): + self.check('apache-maven-3.3.9-bin', + 'apache-maven-3.3.9') + + def test_binary(self): + self.check('Jmol-14.8.0-binary', + 'Jmol-14.8.0') + + def test_gem(self): + self.check('rubysl-date-2.0.9.gem', + 'rubysl-date-2.0.9') + + def test_tar(self): + self.check('gromacs-4.6.1-tar', + 'gromacs-4.6.1') + + def test_sh(self): + self.check('Miniconda2-4.3.11-Linux-x86_64.sh', + 'Miniconda2-4.3.11') + + # Download version + + def test_stable(self): + self.check('libevent-2.0.21-stable', + 'libevent-2.0.21') + + def test_final(self): + self.check('2.6.7-final', + '2.6.7') + + def test_rel(self): + self.check('v1.9.5.1rel', + 'v1.9.5.1') + + def test_orig(self): + self.check('dash_0.5.5.1.orig', + 'dash_0.5.5.1') + + def test_plus(self): + self.check('ncbi-blast-2.6.0+-src', + 'ncbi-blast-2.6.0') + + # License + + def test_gpl(self): + self.check('cppad-20170114.gpl', + 'cppad-20170114') + + # OS + + def test_linux(self): + self.check('astyle_2.04_linux', + 'astyle_2.04') + + def test_unix(self): + self.check('install-tl-unx', + 'install-tl') + + def test_macos(self): + self.check('astyle_1.23_macosx', + 'astyle_1.23') + self.check('haxe-2.08-osx', + 'haxe-2.08') + + # PyPI + + def test_wheel(self): + self.check('entrypoints-0.2.2-py2.py3-none-any.whl', + 'entrypoints-0.2.2') + self.check('numpy-1.12.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl', # noqa + 'numpy-1.12.0') + + def test_exe(self): + self.check('PyYAML-3.12.win-amd64-py3.5.exe', + 'PyYAML-3.12') + + # Combinations of multiple patterns + + def test_complex_all(self): + self.check('p7zip_9.04_src_all', + 'p7zip_9.04') + + def test_complex_run(self): + self.check('cuda_8.0.44_linux.run', + 'cuda_8.0.44') + + def test_complex_file(self): + self.check('ack-2.14-single-file', + 'ack-2.14') + + def test_complex_jar(self): + self.check('antlr-3.4-complete.jar', + 'antlr-3.4') + + def test_complex_oss(self): + self.check('tbb44_20160128oss_src_0', + 'tbb44_20160128') + + def test_complex_darwin(self): + self.check('ghc-7.0.4-x86_64-apple-darwin', + 'ghc-7.0.4') + self.check('ghc-7.0.4-i386-apple-darwin', + 'ghc-7.0.4') + + def test_complex_arch(self): + self.check('VizGlow_v2.2alpha17-R21November2016-Linux-x86_64-Install', + 'VizGlow_v2.2alpha17-R21November2016') + self.check('jdk-8u92-linux-x64', + 'jdk-8u92') + self.check('cuda_6.5.14_linux_64.run', + 'cuda_6.5.14') + + def test_complex_with(self): + self.check('mafft-7.221-with-extensions-src', + 'mafft-7.221') + self.check('spark-2.0.0-bin-without-hadoop', + 'spark-2.0.0') + + def test_complex_public(self): + self.check('dakota-6.3-public.src', + 'dakota-6.3') + + def test_complex_universal(self): + self.check('synergy-1.3.6p2-MacOSX-Universal', + 'synergy-1.3.6p2') + + +class UrlStripNameSuffixesTest(unittest.TestCase): + """Tests for spack.url.strip_name_suffixes""" + + def check(self, before, version, after): + stripped = strip_name_suffixes(before, version) + self.assertEqual(stripped, after) + + def test_no_suffix(self): + self.check('rgb-1.0.6', '1.0.6', + 'rgb') + self.check('nauty26r7', '26r7', + 'nauty') + + # Download type + + def test_install(self): + self.check('converge_install_2.3.16', '2.3.16', + 'converge') + + def test_src(self): + self.check('jpegsrc.v9b', '9b', + 'jpeg') + + def test_std(self): + self.check('ghostscript-fonts-std-8.11', '8.11', + 'ghostscript-fonts') + + # Download version + + def test_snapshot(self): + self.check('gts-snapshot-121130', '121130', + 'gts') + + def test_distrib(self): + self.check('zoltan_distrib_v3.83', '3.83', + 'zoltan') + + # VCS + + def test_bazaar(self): + self.check('libvterm-0+bzr681', '681', + 'libvterm') + + # License + + def test_gpl(self): + self.check('PyQt-x11-gpl-4.11.3', '4.11.3', + 'PyQt-x11') + + +class UrlParseOffsetTest(unittest.TestCase): + + def check(self, name, noffset, ver, voffset, path): + # Make sure parse_name_offset and parse_name_version are working + v, vstart, vlen, vi, vre = parse_version_offset(path) + n, nstart, nlen, ni, nre = parse_name_offset(path, v) + + self.assertEqual(n, name) + self.assertEqual(v, ver) + self.assertEqual(nstart, noffset) + self.assertEqual(vstart, voffset) + + def test_name_in_path(self): + self.check( + 'antlr', 25, '2.7.7', 40, + 'https://github.com/antlr/antlr/tarball/v2.7.7') + + def test_name_in_stem(self): + self.check( + 'gmp', 32, '6.0.0a', 36, + 'https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2') + + def test_name_in_suffix(self): + # Don't think I've ever seen one of these before + # We don't look for it, so it would probably fail anyway + pass + + def test_version_in_path(self): + self.check( + 'nextflow', 31, '0.20.1', 59, + 'https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow') + + def test_version_in_stem(self): + self.check( + 'zlib', 24, '1.2.10', 29, + 'http://zlib.net/fossils/zlib-1.2.10.tar.gz') + self.check( + 'slepc', 51, '3.6.2', 57, + 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz') + self.check( + 'cloog', 61, '0.18.1', 67, + 'http://www.bastoul.net/cloog/pages/download/count.php3?url=./cloog-0.18.1.tar.gz') + self.check( + 'libxc', 58, '2.2.2', 64, + 'http://www.tddft.org/programs/octopus/down.php?file=libxc/libxc-2.2.2.tar.gz') + + def test_version_in_suffix(self): + self.check( + 'swiftsim', 36, '0.3.0', 76, + 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0') + self.check( + 'sionlib', 30, '1.7.1', 59, + 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1') + + def test_regex_in_name(self): + self.check( + 'voro++', 40, '0.4.6', 47, + 'http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz') + + +class UrlParseNameAndVersionTest(unittest.TestCase): def assert_not_detected(self, string): self.assertRaises( - url.UndetectableVersionError, url.parse_name_and_version, string) + UndetectableVersionError, parse_name_and_version, string) def check(self, name, v, string, **kwargs): # Make sure correct name and version are extracted. - parsed_name, parsed_v = url.parse_name_and_version(string) + parsed_name, parsed_v = parse_name_and_version(string) self.assertEqual(parsed_name, name) - self.assertEqual(parsed_v, url.Version(v)) - - # Some URLs (like boost) are special and need to override the - # built-in functionality. - if kwargs.get('no_check_url', False): - return + self.assertEqual(parsed_v, Version(v)) # Make sure Spack formulates the right URL when we try to # build one with a specific version. - self.assertEqual(string, url.substitute_version(string, v)) + self.assertEqual(string, substitute_version(string, v)) - def test_wwwoffle_version(self): - self.check( - 'wwwoffle', '2.9h', - 'http://www.gedanken.demon.co.uk/download-wwwoffle/wwwoffle-2.9h.tgz') + # Common Repositories - def test_version_sourceforge_download(self): + def test_github_downloads(self): + # name/archive/ver.ver self.check( - 'foo-bar', '1.21', - 'http://sourceforge.net/foo_bar-1.21.tar.gz/download') + 'nco', '4.6.2', + 'https://github.com/nco/nco/archive/4.6.2.tar.gz') + # name/archive/vver.ver self.check( - 'foo-bar', '1.21', - 'http://sf.net/foo_bar-1.21.tar.gz/download') + 'vim', '8.0.0134', + 'https://github.com/vim/vim/archive/v8.0.0134.tar.gz') + # name/archive/name-ver.ver + self.check( + 'oce', '0.18', + 'https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz') + # name/releases/download/vver/name-ver.ver + self.check( + 'libmesh', '1.0.0', + 'https://github.com/libMesh/libmesh/releases/download/v1.0.0/libmesh-1.0.0.tar.bz2') + # name/tarball/vver.ver + self.check( + 'git', '2.7.1', + 'https://github.com/git/git/tarball/v2.7.1') + # name/zipball/vver.ver + self.check( + 'git', '2.7.1', + 'https://github.com/git/git/zipball/v2.7.1') + + def test_gitlab_downloads(self): + # name/repository/archive.ext?ref=vver.ver + self.check( + 'swiftsim', '0.3.0', + 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0') + # name/repository/archive.ext?ref=name-ver.ver + self.check( + 'icet', '1.2.3', + 'https://gitlab.kitware.com/icet/icet/repository/archive.tar.gz?ref=IceT-1.2.3') + + def test_bitbucket_downloads(self): + # name/get/ver.ver + self.check( + 'eigen', '3.2.7', + 'https://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2') + # name/get/vver.ver + self.check( + 'hoomd-blue', '1.3.3', + 'https://bitbucket.org/glotzer/hoomd-blue/get/v1.3.3.tar.bz2') + # name/downloads/name-ver.ver + self.check( + 'dolfin', '2016.1.0', + 'https://bitbucket.org/fenics-project/dolfin/downloads/dolfin-2016.1.0.tar.gz') + + def test_sourceforge_downloads(self): + # name-ver.ver + self.check( + 'libpng', '1.6.27', + 'http://download.sourceforge.net/libpng/libpng-1.6.27.tar.gz') + self.check( + 'lcms2', '2.6', + 'http://downloads.sourceforge.net/project/lcms/lcms/2.6/lcms2-2.6.tar.gz') + self.check( + 'modules', '3.2.10', + 'http://prdownloads.sourceforge.net/modules/modules-3.2.10.tar.gz') + # name-ver.ver.ext/download + self.check( + 'glew', '2.0.0', + 'https://sourceforge.net/projects/glew/files/glew/2.0.0/glew-2.0.0.tgz/download') + + def test_cran_downloads(self): + # name.name_ver.ver-ver.ver + self.check( + 'TH.data', '1.0-8', + 'https://cran.r-project.org/src/contrib/TH.data_1.0-8.tar.gz') + self.check( + 'knitr', '1.14', + 'https://cran.rstudio.com/src/contrib/knitr_1.14.tar.gz') + self.check( + 'devtools', '1.12.0', + 'https://cloud.r-project.org/src/contrib/devtools_1.12.0.tar.gz') + + def test_pypi_downloads(self): + # name.name_name-ver.ver + self.check( + '3to2', '1.1.1', + 'https://pypi.python.org/packages/source/3/3to2/3to2-1.1.1.zip') + self.check( + 'mpmath', '0.19', + 'https://pypi.python.org/packages/source/m/mpmath/mpmath-all-0.19.tar.gz') + self.check( + 'pandas', '0.16.0', + 'https://pypi.python.org/packages/source/p/pandas/pandas-0.16.0.tar.gz#md5=bfe311f05dc0c351f8955fbd1e296e73') + self.check( + 'sphinx_rtd_theme', '0.1.10a0', + 'https://pypi.python.org/packages/da/6b/1b75f13d8aa3333f19c6cdf1f0bc9f52ea739cae464fbee050307c121857/sphinx_rtd_theme-0.1.10a0.tar.gz') + self.check( + 'backports.ssl_match_hostname', '3.5.0.1', + 'https://pypi.io/packages/source/b/backports.ssl_match_hostname/backports.ssl_match_hostname-3.5.0.1.tar.gz') + + def test_bazaar_downloads(self): + self.check( + 'libvterm', '681', + 'http://www.leonerd.org.uk/code/libvterm/libvterm-0+bzr681.tar.gz') + + # Common Tarball Formats + + def test_version_only(self): + # ver.ver + self.check( + 'eigen', '3.2.7', + 'https://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2') + # ver.ver-ver + self.check( + 'ImageMagick', '7.0.2-7', + 'https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz') + # vver.ver + self.check( + 'CGNS', '3.3.0', + 'https://github.com/CGNS/CGNS/archive/v3.3.0.tar.gz') + # vver_ver + self.check( + 'luafilesystem', '1_6_3', + 'https://github.com/keplerproject/luafilesystem/archive/v1_6_3.tar.gz') + + def test_no_separators(self): + # namever + self.check( + 'turbolinux', '702', + 'file://{0}/turbolinux702.tar.gz'.format(os.getcwd())) + self.check( + 'nauty', '26r7', + 'http://pallini.di.uniroma1.it/nauty26r7.tar.gz') + + def test_dashes_only(self): + # name-name-ver-ver + self.check( + 'Trilinos', '12-10-1', + 'https://github.com/trilinos/Trilinos/archive/trilinos-release-12-10-1.tar.gz') + self.check( + 'panda', '2016-03-07', + 'http://comopt.ifi.uni-heidelberg.de/software/PANDA/downloads/panda-2016-03-07.tar') + self.check( + 'gts', '121130', + 'http://gts.sourceforge.net/tarballs/gts-snapshot-121130.tar.gz') + self.check( + 'cdd', '061a', + 'http://www.cs.mcgill.ca/~fukuda/download/cdd/cdd-061a.tar.gz') + + def test_underscores_only(self): + # name_name_ver_ver + self.check( + 'tinyxml', '2_6_2', + 'https://sourceforge.net/projects/tinyxml/files/tinyxml/2.6.2/tinyxml_2_6_2.tar.gz') + self.check( + 'boost', '1_55_0', + 'http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2') + self.check( + 'yorick', '2_2_04', + 'https://github.com/dhmunro/yorick/archive/y_2_2_04.tar.gz') + # name_namever_ver + self.check( + 'tbb', '44_20160413', + 'https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb44_20160413oss_src.tgz') + + def test_dots_only(self): + # name.name.ver.ver + self.check( + 'prank', '150803', + 'http://wasabiapp.org/download/prank/prank.source.150803.tgz') + self.check( + 'jpeg', '9b', + 'http://www.ijg.org/files/jpegsrc.v9b.tar.gz') + self.check( + 'openjpeg', '2.1', + 'https://github.com/uclouvain/openjpeg/archive/version.2.1.tar.gz') + # name.namever.ver + self.check( + 'atlas', '3.11.34', + 'http://sourceforge.net/projects/math-atlas/files/Developer%20%28unstable%29/3.11.34/atlas3.11.34.tar.bz2') + self.check( + 'visit', '2.10.1', + 'http://portal.nersc.gov/project/visit/releases/2.10.1/visit2.10.1.tar.gz') + self.check( + 'geant', '4.10.01.p03', + 'http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz') + self.check( + 'tcl', '8.6.5', + 'http://prdownloads.sourceforge.net/tcl/tcl8.6.5-src.tar.gz') + + def test_dash_dot(self): + # name-name-ver.ver + # digit in name + self.check( + 'm4', '1.4.17', + 'https://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz') + # letter in version + self.check( + 'gmp', '6.0.0a', + 'https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2') + # version starts with 'v' + self.check( + 'LaunchMON', '1.0.2', + 'https://github.com/LLNL/LaunchMON/releases/download/v1.0.2/launchmon-v1.0.2.tar.gz') + # name-ver-ver.ver + self.check( + 'libedit', '20150325-3.1', + 'http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz') + + def test_dash_underscore(self): + # name-name-ver_ver + self.check( + 'icu4c', '57_1', + 'http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz') + + def test_underscore_dot(self): + # name_name_ver.ver + self.check( + 'superlu_dist', '4.1', + 'http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz') + self.check( + 'pexsi', '0.9.0', + 'https://math.berkeley.edu/~linlin/pexsi/download/pexsi_v0.9.0.tar.gz') + # name_name.ver.ver + self.check( + 'fer', '696', + 'ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.v696.tar.gz') + + def test_dash_dot_dash_dot(self): + # name-name-ver.ver-ver.ver + self.check( + 'sowing', '1.1.23-p1', + 'http://ftp.mcs.anl.gov/pub/petsc/externalpackages/sowing-1.1.23-p1.tar.gz') + self.check( + 'bib2xhtml', '3.0-15-gf506', + 'http://www.spinellis.gr/sw/textproc/bib2xhtml/bib2xhtml-v3.0-15-gf506.tar.gz') + # namever.ver-ver.ver + self.check( + 'go', '1.4-bootstrap-20161024', + 'https://storage.googleapis.com/golang/go1.4-bootstrap-20161024.tar.gz') + + def test_underscore_dash_dot(self): + # name_name-ver.ver + self.check( + 'the_silver_searcher', '0.32.0', + 'http://geoff.greer.fm/ag/releases/the_silver_searcher-0.32.0.tar.gz') + self.check( + 'sphinx_rtd_theme', '0.1.10a0', + 'https://pypi.python.org/packages/source/s/sphinx_rtd_theme/sphinx_rtd_theme-0.1.10a0.tar.gz') + + def test_dot_underscore_dot_dash_dot(self): + # name.name_ver.ver-ver.ver + self.check( + 'TH.data', '1.0-8', + 'https://cran.r-project.org/src/contrib/TH.data_1.0-8.tar.gz') + self.check( + 'XML', '3.98-1.4', + 'https://cran.r-project.org/src/contrib/XML_3.98-1.4.tar.gz') + + def test_dash_dot_underscore_dot(self): + # name-name-ver.ver_ver.ver + self.check( + 'pypar', '2.1.5_108', + 'https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pypar/pypar-2.1.5_108.tgz') + # name-namever.ver_ver.ver + self.check( + 'STAR-CCM+', '11.06.010_02', + 'file://{0}/STAR-CCM+11.06.010_02_linux-x86_64.tar.gz'.format(os.getcwd())) + + # Weird URLS + + def test_version_in_path(self): + # github.com/repo/name/releases/download/name-vver/name + self.check( + 'nextflow', '0.20.1', + 'https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow') + + def test_suffix_queries(self): + self.check( + 'swiftsim', '0.3.0', + 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0') + self.check( + 'sionlib', '1.7.1', + 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1') + + def test_stem_queries(self): + self.check( + 'slepc', '3.6.2', + 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz') + self.check( + 'otf', '1.12.5salmon', + 'http://wwwpub.zih.tu-dresden.de/%7Emlieber/dcount/dcount.php?package=otf&get=OTF-1.12.5salmon.tar.gz') + + def test_single_character_name(self): + self.check( + 'R', '3.3.2', + 'https://cloud.r-project.org/src/base/R-3/R-3.3.2.tar.gz') + + def test_single_digit_version(self): + pass + + def test_name_starts_with_digit(self): + self.check( + '3to2', '1.1.1', + 'https://pypi.python.org/packages/source/3/3to2/3to2-1.1.1.zip') + + def plus_in_name(self): + self.check( + 'gtk+', '2.24.31', + 'http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.31.tar.xz') + self.check( + 'voro++', '0.4.6', + 'http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz') def test_no_version(self): - self.assert_not_detected('http://example.com/blah.tar') - self.assert_not_detected('foo') + self.assert_not_detected('http://www.netlib.org/blas/blast-forum/cblas.tgz') + self.assert_not_detected('http://www.netlib.org/voronoi/triangle.zip') - def test_version_all_dots(self): + def test_download_php(self): + # Name comes before download.php self.check( - 'foo-bar-la', '1.14', 'http://example.com/foo.bar.la.1.14.zip') - - def test_version_underscore_separator(self): + 'sionlib', '1.7.1', + 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1') + # Ignore download.php self.check( - 'grc', '1.1', - 'http://example.com/grc_1.1.tar.gz') - - def test_boost_version_style(self): + 'slepc', '3.6.2', + 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz') self.check( - 'boost', '1.39.0', - 'http://example.com/boost_1_39_0.tar.bz2', - no_check_url=True) - - def test_erlang_version_style(self): - self.check( - 'otp', 'R13B', - 'http://erlang.org/download/otp_src_R13B.tar.gz') - - def test_another_erlang_version_style(self): - self.check( - 'otp', 'R15B01', - 'https://github.com/erlang/otp/tarball/OTP_R15B01') - - def test_yet_another_erlang_version_style(self): - self.check( - 'otp', 'R15B03-1', - 'https://github.com/erlang/otp/tarball/OTP_R15B03-1') - - def test_p7zip_version_style(self): - self.check( - 'p7zip', '9.04', - 'http://kent.dl.sourceforge.net/sourceforge/p7zip/p7zip_9.04_src_all.tar.bz2') - - def test_new_github_style(self): - self.check( - 'libnet', '1.1.4', - 'https://github.com/sam-github/libnet/tarball/libnet-1.1.4') + 'ScientificPython', '2.8.1', + 'https://sourcesup.renater.fr/frs/download.php/file/4411/ScientificPython-2.8.1.tar.gz') def test_gloox_beta_style(self): self.check( @@ -119,85 +660,11 @@ def test_sphinx_beta_style(self): 'sphinx', '1.10-beta', 'http://sphinxsearch.com/downloads/sphinx-1.10-beta.tar.gz') - def test_astyle_verson_style(self): - self.check( - 'astyle', '1.23', - 'http://kent.dl.sourceforge.net/sourceforge/astyle/astyle_1.23_macosx.tar.gz') - - def test_version_dos2unix(self): - self.check( - 'dos2unix', '3.1', - 'http://www.sfr-fresh.com/linux/misc/dos2unix-3.1.tar.gz') - - def test_version_internal_dash(self): - self.check( - 'foo-arse', '1.1-2', - 'http://example.com/foo-arse-1.1-2.tar.gz') - - def test_version_single_digit(self): - self.check( - 'foo-bar', '45', - 'http://example.com/foo_bar.45.tar.gz') - - def test_noseparator_single_digit(self): - self.check( - 'foo-bar', '45', - 'http://example.com/foo_bar45.tar.gz') - - def test_version_developer_that_hates_us_format(self): - self.check( - 'foo-bar-la', '1.2.3', - 'http://example.com/foo-bar-la.1.2.3.tar.gz') - - def test_version_regular(self): - self.check( - 'foo-bar', '1.21', - 'http://example.com/foo_bar-1.21.tar.gz') - - def test_version_gitlab(self): - self.check( - 'vtk', '7.0.0', - 'https://gitlab.kitware.com/vtk/vtk/repository/' - 'archive.tar.bz2?ref=v7.0.0') - self.check( - 'icet', '1.2.3', - 'https://gitlab.kitware.com/icet/icet/repository/' - 'archive.tar.gz?ref=IceT-1.2.3') - self.check( - 'foo', '42.1337', - 'http://example.com/org/foo/repository/' - 'archive.zip?ref=42.1337bar') - - def test_version_github(self): - self.check( - 'yajl', '1.0.5', - 'http://github.com/lloyd/yajl/tarball/1.0.5') - - def test_version_github_with_high_patch_number(self): - self.check( - 'yajl', '1.2.34', - 'http://github.com/lloyd/yajl/tarball/v1.2.34') - - def test_yet_another_version(self): - self.check( - 'mad', '0.15.1b', - 'http://example.com/mad-0.15.1b.tar.gz') - - def test_lame_version_style(self): - self.check( - 'lame', '398-2', - 'http://kent.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz') - def test_ruby_version_style(self): self.check( 'ruby', '1.9.1-p243', 'ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz') - def test_omega_version_style(self): - self.check( - 'omega', '0.80.2', - 'http://www.alcyone.com/binaries/omega/omega-0.80.2-src.tar.gz') - def test_rc_style(self): self.check( 'libvorbis', '1.2.2rc1', @@ -208,60 +675,14 @@ def test_dash_rc_style(self): 'js', '1.8.0-rc1', 'http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz') - def test_angband_version_style(self): - self.check( - 'angband', '3.0.9b', - 'http://rephial.org/downloads/3.0/angband-3.0.9b-src.tar.gz') - - def test_stable_suffix(self): - self.check( - 'libevent', '1.4.14b', - 'http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz') - - def test_debian_style_1(self): - self.check( - 'sl', '3.03', - 'http://ftp.de.debian.org/debian/pool/main/s/sl/sl_3.03.orig.tar.gz') - - def test_debian_style_2(self): - self.check( - 'mmv', '1.01b', - 'http://ftp.de.debian.org/debian/pool/main/m/mmv/mmv_1.01b.orig.tar.gz') - - def test_imagemagick_style(self): - self.check( - 'imagemagick', '6.7.5-7', - - 'http://downloads.sf.net/project/machomebrew/mirror/ImageMagick-6.7.5-7.tar.bz2') - - def test_dash_version_dash_style(self): - self.check( - 'antlr', '3.4', - 'http://www.antlr.org/download/antlr-3.4-complete.jar') - def test_apache_version_style(self): self.check( 'apache-cassandra', '1.2.0-rc2', 'http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz') - def test_jpeg_style(self): - self.check( - 'jpegsrc', '8d', - 'http://www.ijg.org/files/jpegsrc.v8d.tar.gz') - - def test_pypy_version(self): - self.check( - 'pypy', '1.4.1', - 'http://pypy.org/download/pypy-1.4.1-osx.tar.bz2') - - def test_openssl_version(self): - self.check( - 'openssl', '0.9.8s', - 'http://www.openssl.org/source/openssl-0.9.8s.tar.gz') - def test_xaw3d_version(self): self.check( - 'xaw3d', '1.5E', + 'Xaw3d', '1.5E', 'ftp://ftp.visi.com/users/hawkeyd/X/Xaw3d-1.5E.tar.gz') def test_fann_version(self): @@ -269,16 +690,6 @@ def test_fann_version(self): 'fann', '2.1.0beta', 'http://downloads.sourceforge.net/project/fann/fann/2.1.0beta/fann-2.1.0beta.zip') - def test_iges_version(self): - self.check( - 'grads', '2.0.1', - 'ftp://iges.org/grads/2.0/grads-2.0.1-bin-darwin9.8-intel.tar.gz') - - def test_haxe_version(self): - self.check( - 'haxe', '2.08', - 'http://haxe.org/file/haxe-2.08-osx.tar.gz') - def test_imap_version(self): self.check( 'imap', '2007f', @@ -289,26 +700,6 @@ def test_suite3270_version(self): 'suite3270', '3.3.12ga7', 'http://sourceforge.net/projects/x3270/files/x3270/3.3.12ga7/suite3270-3.3.12ga7-src.tgz') - def test_synergy_version(self): - self.check( - 'synergy', '1.3.6p2', - 'http://synergy.googlecode.com/files/synergy-1.3.6p2-MacOSX-Universal.zip') - - def test_mvapich2_19_version(self): - self.check( - 'mvapich2', '1.9', - 'http://mvapich.cse.ohio-state.edu/download/mvapich2/mv2/mvapich2-1.9.tgz') - - def test_mvapich2_20_version(self): - self.check( - 'mvapich2', '2.0', - 'http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.0.tar.gz') - - def test_hdf5_version(self): - self.check( - 'hdf5', '1.8.13', - 'http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.13.tar.bz2') - def test_scalasca_version(self): self.check( 'cube', '4.2.3', @@ -317,55 +708,20 @@ def test_scalasca_version(self): 'cube', '4.3-TP1', 'http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3-TP1.tar.gz') - def test_mpileaks_version(self): - self.check( - 'mpileaks', '1.0', - 'https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz') - self.check( - 'mpileaks', '1.0', - 'https://github.com/hpc/mpileaks/releases/download/1.0/mpileaks-1.0.tar.gz') - - def test_gcc_version(self): - self.check( - 'gcc', '4.4.7', - 'http://open-source-box.org/gcc/gcc-4.4.7/gcc-4.4.7.tar.bz2') - - def test_gcc_version_precedence(self): - # prefer the version in the tarball, not in the url prefix. - self.check( - 'gcc', '4.4.7', - 'http://open-source-box.org/gcc/gcc-4.9.2/gcc-4.4.7.tar.bz2') - def test_github_raw_url(self): self.check( - 'powerparser', '2.0.7', + 'CLAMR', '2.0.7', 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true') - def test_r_xml_version(self): - self.check( - 'xml', '3.98-1.4', - 'https://cran.r-project.org/src/contrib/XML_3.98-1.4.tar.gz') - - def test_nco_version(self): - self.check( - 'nco', '4.6.2-beta03', - 'https://github.com/nco/nco/archive/4.6.2-beta03.tar.gz') - - self.check( - 'nco', '4.6.3-alpha04', - 'https://github.com/nco/nco/archive/4.6.3-alpha04.tar.gz') - - def test_yorick_version(self): - self.check( - 'yorick', '2_2_04', - 'https://github.com/dhmunro/yorick/archive/y_2_2_04.tar.gz') - def test_luaposix_version(self): self.check( 'luaposix', '33.4.0', 'https://github.com/luaposix/luaposix/archive/release-v33.4.0.tar.gz') - def test_sionlib_version(self): + def test_nco_version(self): self.check( - 'sionlib', '1.7.1', - 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1') + 'nco', '4.6.2-beta03', + 'https://github.com/nco/nco/archive/4.6.2-beta03.tar.gz') + self.check( + 'nco', '4.6.3-alpha04', + 'https://github.com/nco/nco/archive/4.6.3-alpha04.tar.gz') diff --git a/lib/spack/spack/test/url_substitution.py b/lib/spack/spack/test/url_substitution.py index ea6374e3d28..449a3b29bfc 100644 --- a/lib/spack/spack/test/url_substitution.py +++ b/lib/spack/spack/test/url_substitution.py @@ -22,44 +22,64 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -"""\ -This test does sanity checks on substituting new versions into URLs -""" +"""Tests Spack's ability to substitute a different version into a URL.""" + +import os import unittest -import spack.url as url +from spack.url import substitute_version -base = "https://comp.llnl.gov/linear_solvers/download/hypre-2.9.0b.tar.gz" -stem = "https://comp.llnl.gov/linear_solvers/download/hypre-" +class UrlSubstitutionTest(unittest.TestCase): + def check(self, base, version, new_url): + self.assertEqual(substitute_version(base, version), new_url) -class PackageSanityTest(unittest.TestCase): + def test_same_version(self): + # Ensures that substituting the same version results in the same URL + self.check( + 'http://www.mr511.de/software/libelf-0.8.13.tar.gz', '0.8.13', + 'http://www.mr511.de/software/libelf-0.8.13.tar.gz') - def test_hypre_url_substitution(self): - self.assertEqual(url.substitute_version(base, '2.9.0b'), base) - self.assertEqual( - url.substitute_version(base, '2.8.0b'), stem + "2.8.0b.tar.gz") - self.assertEqual( - url.substitute_version(base, '2.7.0b'), stem + "2.7.0b.tar.gz") - self.assertEqual( - url.substitute_version(base, '2.6.0b'), stem + "2.6.0b.tar.gz") - self.assertEqual( - url.substitute_version(base, '1.14.0b'), stem + "1.14.0b.tar.gz") - self.assertEqual( - url.substitute_version(base, '1.13.0b'), stem + "1.13.0b.tar.gz") - self.assertEqual( - url.substitute_version(base, '2.0.0'), stem + "2.0.0.tar.gz") - self.assertEqual( - url.substitute_version(base, '1.6.0'), stem + "1.6.0.tar.gz") + def test_different_version(self): + # Test a completely different version syntax + self.check( + 'http://www.prevanders.net/libdwarf-20130729.tar.gz', '8.12', + 'http://www.prevanders.net/libdwarf-8.12.tar.gz') - def test_otf2_url_substitution(self): - base = "http://www.vi-hps.org/upload/packages/otf2/otf2-1.4.tar.gz" + def test_double_version(self): + # Test a URL where the version appears twice + # It should get substituted both times + self.check( + 'https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz', '2.1.3', + 'https://github.com/hpc/mpileaks/releases/download/v2.1.3/mpileaks-2.1.3.tar.gz') - self.assertEqual(url.substitute_version(base, '1.4'), base) + def test_partial_version_prefix(self): + # Test now with a partial prefix earlier in the URL + # This is hard to figure out so Spack only substitutes + # the last instance of the version + self.check( + 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2', '2.2.0', + 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.2.0.tar.bz2') + self.check( + 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2', '2.2', + 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.2.tar.bz2') - self.assertEqual( - url.substitute_version(base, '1.3.1'), - "http://www.vi-hps.org/upload/packages/otf2/otf2-1.3.1.tar.gz") - self.assertEqual( - url.substitute_version(base, '1.2.1'), - "http://www.vi-hps.org/upload/packages/otf2/otf2-1.2.1.tar.gz") + def test_no_separator(self): + # No separator between the name and version of the package + self.check( + 'file://{0}/turbolinux702.tar.gz'.format(os.getcwd()), '703', + 'file://{0}/turbolinux703.tar.gz'.format(os.getcwd())) + + def test_github_raw(self): + self.check( + 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true', '2.0.7', + 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true') + self.check( + 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true', '4.7', + 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v4.7.tgz?raw=true') + + def test_regex(self): + # Package name contains regex characters + self.check( + 'http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz', '1.2.3', + 'http://math.lbl.gov/voro++/download/dir/voro++-1.2.3.tar.gz') diff --git a/lib/spack/spack/test/web.py b/lib/spack/spack/test/web.py index 9a7f4d9f8b7..9fa95a8d187 100644 --- a/lib/spack/spack/test/web.py +++ b/lib/spack/spack/test/web.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## """Tests for web.py.""" -import pytest import os import spack @@ -141,7 +140,6 @@ def test_find_versions_of_archive_2(): assert ver('2.0.0') in versions -@pytest.mark.xfail def test_find_exotic_versions_of_archive_2(): versions = find_versions_of_archive(root_tarball, root, list_depth=2) # up for grabs to make this better. @@ -157,7 +155,6 @@ def test_find_versions_of_archive_3(): assert ver('4.5') in versions -@pytest.mark.xfail def test_find_exotic_versions_of_archive_3(): versions = find_versions_of_archive(root_tarball, root, list_depth=3) assert ver('2.0.0b2') in versions diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 38ff74f7bcc..174f7d0b3ce 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -71,7 +71,7 @@ def find_list_url(url): url_types = [ # e.g. https://github.com/llnl/callpath/archive/v1.0.1.tar.gz - (r'^(https://github.com/[^/]+/[^/]+)/archive/', + (r'(.*github\.com/[^/]+/[^/]+)/archive/', lambda m: m.group(1) + '/releases')] for pattern, fun in url_types: @@ -101,6 +101,177 @@ def strip_query_and_fragment(path): return (path, '') # Ignore URL parse errors here +def strip_version_suffixes(path): + """Some tarballs contain extraneous information after the version: + + * ``bowtie2-2.2.5-source`` + * ``libevent-2.0.21-stable`` + * ``cuda_8.0.44_linux.run`` + + These strings are not part of the version number and should be ignored. + This function strips those suffixes off and returns the remaining string. + The goal is that the version is always the last thing in ``path``: + + * ``bowtie2-2.2.5`` + * ``libevent-2.0.21`` + * ``cuda_8.0.44`` + + :param str path: The filename or URL for the package + :return: The ``path`` with any extraneous suffixes removed + :rtype: str + """ + # NOTE: This could be done with complicated regexes in parse_version_offset + # NOTE: The problem is that we would have to add these regexes to the end + # NOTE: of every single version regex. Easier to just strip them off + # NOTE: permanently + + suffix_regexes = [ + # Download type + '[Ii]nstall', + 'all', + 'src(_0)?', + '[Ss]ources?', + 'file', + 'full', + 'single', + 'public', + 'with[a-zA-Z_-]+', + 'bin', + 'binary', + 'run', + '[Uu]niversal', + 'jar', + 'complete', + 'oss', + 'gem', + 'tar', + 'sh', + + # Download version + 'stable', + '[Ff]inal', + 'rel', + 'orig', + 'dist', + '\+', + + # License + 'gpl', + + # Arch + # Needs to come before and after OS, appears in both orders + 'ia32', + 'intel', + 'amd64', + 'x64', + 'x86_64', + 'x86', + 'i[36]86', + 'ppc64(le)?', + 'armv?(7l|6l|64)', + + # OS + '[Ll]inux(_64)?', + '[Uu]ni?x', + '[Ss]un[Oo][Ss]', + '[Mm]ac[Oo][Ss][Xx]?', + '[Oo][Ss][Xx]', + '[Dd]arwin(64)?', + '[Aa]pple', + '[Ww]indows', + '[Ww]in(64|32)?', + '[Cc]ygwin(64|32)?', + '[Mm]ingw', + + # Arch + # Needs to come before and after OS, appears in both orders + 'ia32', + 'intel', + 'amd64', + 'x64', + 'x86_64', + 'x86', + 'i[36]86', + 'ppc64(le)?', + 'armv?(7l|6l|64)?', + + # PyPI + '[._-]py[23].*\.whl', + '[._-]cp[23].*\.whl', + '[._-]win.*\.exe', + ] + + for regex in suffix_regexes: + # Remove the suffix from the end of the path + # This may be done multiple times + path = re.sub(r'[._-]?' + regex + '$', '', path) + + return path + + +def strip_name_suffixes(path, version): + """Most tarballs contain a package name followed by a version number. + However, some also contain extraneous information in-between the name + and version: + + * ``rgb-1.0.6`` + * ``converge_install_2.3.16`` + * ``jpegsrc.v9b`` + + These strings are not part of the package name and should be ignored. + This function strips the version number and any extraneous suffixes + off and returns the remaining string. The goal is that the name is + always the last thing in ``path``: + + * ``rgb`` + * ``converge`` + * ``jpeg`` + + :param str path: The filename or URL for the package + :param str version: The version detected for this URL + :return: The ``path`` with any extraneous suffixes removed + :rtype: str + """ + # NOTE: This could be done with complicated regexes in parse_name_offset + # NOTE: The problem is that we would have to add these regexes to every + # NOTE: single name regex. Easier to just strip them off permanently + + suffix_regexes = [ + # Strip off the version and anything after it + + # name-ver + # name_ver + # name.ver + r'[._-]v?' + str(version) + '.*', + + # namever + str(version) + '.*', + + # Download type + 'install', + 'src', + '(open)?[Ss]ources?', + '[._-]std', + + # Download version + 'snapshot', + 'distrib', + + # VCS + '0\+bzr', + + # License + 'gpl', + ] + + for regex in suffix_regexes: + # Remove the suffix from the end of the path + # This may be done multiple times + path = re.sub('[._-]?' + regex + '$', '', path) + + return path + + def split_url_extension(path): """Some URLs have a query string, e.g.: @@ -125,7 +296,7 @@ def split_url_extension(path): prefix, ext, suffix = path, '', '' # Strip off sourceforge download suffix. - match = re.search(r'((?:sourceforge.net|sf.net)/.*)(/download)$', path) + match = re.search(r'((?:sourceforge\.net|sf\.net)/.*)(/download)$', path) if match: prefix, suffix = match.groups() @@ -189,8 +360,20 @@ def parse_version_offset(path): path, ext, suffix = split_url_extension(path) # stem: Everything from path after the final '/' - stem = os.path.basename(path) - offset = len(path) - len(stem) + original_stem = os.path.basename(path) + + # Try to strip off anything after the version number + stem = strip_version_suffixes(original_stem) + + # Assumptions: + # + # 1. version always comes after the name + # 2. separators include '-', '_', and '.' + # 3. names can contain A-Z, a-z, 0-9, '+', separators + # 4. versions can contain A-Z, a-z, 0-9, separators + # 5. versions always start with a digit + # 6. versions are often prefixed by a 'v' character + # 7. separators are most reliable to determine name/version boundaries # List of the following format: # @@ -202,87 +385,118 @@ def parse_version_offset(path): # The first regex that matches string will be used to determine # the version of the package. Thefore, hyperspecific regexes should # come first while generic, catch-all regexes should come last. + # With that said, regular expressions are slow, so if possible, put + # ones that only catch one or two URLs at the bottom. version_regexes = [ - # GitHub tarballs, e.g. v1.2.3 - (r'github.com/.+/(?:zip|tar)ball/v?((\d+\.)+\d+)$', path), + # 1st Pass: Simplest case + # Assume name contains no digits and version contains no letters + # e.g. libpng-1.6.27 + (r'^[a-zA-Z+._-]+[._-]v?(\d[\d._-]*)$', stem), - # e.g. https://github.com/sam-github/libnet/tarball/libnet-1.1.4 - (r'github.com/.+/(?:zip|tar)ball/.*-((\d+\.)+\d+)$', path), + # 2nd Pass: Version only + # Assume version contains no letters - # e.g. https://github.com/isaacs/npm/tarball/v0.2.5-1 - (r'github.com/.+/(?:zip|tar)ball/v?((\d+\.)+\d+-(\d+))$', path), + # ver + # e.g. 3.2.7, 7.0.2-7, v3.3.0, v1_6_3 + (r'^v?(\d[\d._-]*)$', stem), - # e.g. https://github.com/petdance/ack/tarball/1.93_02 - (r'github.com/.+/(?:zip|tar)ball/v?((\d+\.)+\d+_(\d+))$', path), + # 3rd Pass: No separator characters are used + # Assume name contains no digits - # Yorick is very special. - # e.g. https://github.com/dhmunro/yorick/archive/y_2_2_04.tar.gz - (r'github.com/[^/]+/yorick/archive/y_(\d+(?:_\d+)*)$', path), + # namever + # e.g. turbolinux702, nauty26r7 + (r'^[a-zA-Z+]*(\d[\da-zA-Z]*)$', stem), - # e.g. https://github.com/hpc/lwgrp/archive/v1.0.1.tar.gz - (r'github.com/[^/]+/[^/]+/archive/(?:release-)?v?(\w+(?:[.-]\w+)*)$', path), # noqa + # 4th Pass: A single separator character is used + # Assume name contains no digits - # e.g. https://github.com/erlang/otp/tarball/OTP_R15B01 (erlang style) - (r'[-_](R\d+[AB]\d*(-\d+)?)', path), + # name-name-ver-ver + # e.g. panda-2016-03-07, gts-snapshot-121130, cdd-061a + (r'^[a-zA-Z+-]*(\d[\da-zA-Z-]*)$', stem), - # e.g., https://github.com/hpc/libcircle/releases/download/0.2.1-rc.1/libcircle-0.2.1-rc.1.tar.gz - # e.g., - # https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz - (r'github.com/[^/]+/[^/]+/releases/download/v?([^/]+)/.*$', path), + # name_name_ver_ver + # e.g. tinyxml_2_6_2, boost_1_55_0, tbb2017_20161128, v1_6_3 + (r'^[a-zA-Z+_]*(\d[\da-zA-Z_]*)$', stem), - # GitLab syntax: - # {baseUrl}{/organization}{/projectName}/repository/archive.{fileEnding}?ref={gitTag} - # as with github releases, we hope a version can be found in the - # git tag - # Search dotted versions: - # e.g., https://gitlab.kitware.com/vtk/vtk/repository/archive.tar.bz2?ref=v7.0.0 - # e.g., https://example.com/org/repo/repository/archive.tar.bz2?ref=SomePrefix-2.1.1 - # e.g., http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1 - (r'\?ref=(?:.*-|v)*((\d+\.)+\d+).*$', suffix), - (r'\?version=((\d+\.)+\d+)', suffix), + # name.name.ver.ver + # e.g. prank.source.150803, jpegsrc.v9b, atlas3.11.34, geant4.10.01.p03 + (r'^[a-zA-Z+.]*(\d[\da-zA-Z.]*)$', stem), - # e.g. boost_1_39_0 - (r'((\d+_)+\d+)$', stem), + # 5th Pass: Two separator characters are used + # Name may contain digits, version may contain letters - # e.g. foobar-4.5.1-1 - # e.g. ruby-1.9.1-p243 - (r'-((\d+\.)*\d\.\d+-(p|rc|RC)?\d+)(?:[-._](?:bin|dist|stable|src|sources))?$', stem), # noqa + # name-name-ver.ver + # e.g. m4-1.4.17, gmp-6.0.0a, launchmon-v1.0.2 + (r'^[a-zA-Z\d+-]+-v?(\d[\da-zA-Z.]*)$', stem), - # e.g. lame-398-1 - (r'-((\d)+-\d)', stem), + # name-name-ver_ver + # e.g. icu4c-57_1 + (r'^[a-zA-Z\d+-]+-v?(\d[\da-zA-Z_]*)$', stem), - # e.g. foobar_1.2-3 or 3.98-1.4 - (r'_((\d+\.)+\d+(-(\d+(\.\d+)?))?[a-z]?)', stem), + # name_name_ver.ver + # e.g. superlu_dist_4.1, pexsi_v0.9.0 + (r'^[a-zA-Z\d+_]+_v?(\d[\da-zA-Z.]*)$', stem), - # e.g. foobar-4.5.1 - (r'-((\d+\.)*\d+)$', stem), + # name_name.ver.ver + # e.g. fer_source.v696 + (r'^[a-zA-Z\d+_]+\.v?(\d[\da-zA-Z.]*)$', stem), - # e.g. foobar-4.5.1b, foobar4.5RC, foobar.v4.5.1b - (r'[-._]?v?((\d+\.)*\d+[-._]?([a-z]|rc|RC|tp|TP?)\d*)$', stem), + # name-name-ver.ver-ver.ver + # e.g. sowing-1.1.23-p1, bib2xhtml-v3.0-15-gf506, 4.6.3-alpha04 + (r'^(?:[a-zA-Z\d+-]+-)?v?(\d[\da-zA-Z.-]*)$', stem), - # e.g. foobar-4.5.0-beta1, or foobar-4.50-beta - (r'-((\d+\.)*\d+-beta(\d+)?)$', stem), + # namever.ver-ver.ver + # e.g. go1.4-bootstrap-20161024 + (r'^[a-zA-Z+]+v?(\d[\da-zA-Z.-]*)$', stem), - # e.g. foobar4.5.1 - (r'((\d+\.)*\d+)$', stem), + # 6th Pass: All three separator characters are used + # Name may contain digits, version may contain letters - # e.g. foobar-4.5.0-bin - (r'-((\d+\.)+\d+[a-z]?)[-._](bin|dist|stable|src|sources?)$', stem), + # name_name-ver.ver + # e.g. the_silver_searcher-0.32.0, sphinx_rtd_theme-0.1.10a0 + (r'^[a-zA-Z\d+_]+-v?(\d[\da-zA-Z.]*)$', stem), - # e.g. dash_0.5.5.1.orig.tar.gz (Debian style) - (r'_((\d+\.)+\d+[a-z]?)[.]orig$', stem), + # name.name_ver.ver-ver.ver + # e.g. TH.data_1.0-8, XML_3.98-1.4 + (r'^[a-zA-Z\d+.]+_v?(\d[\da-zA-Z.-]*)$', stem), - # e.g. http://www.openssl.org/source/openssl-0.9.8s.tar.gz - (r'-v?([^-]+(-alpha|-beta)?)', stem), + # name-name-ver.ver_ver.ver + # e.g. pypar-2.1.5_108 + (r'^[a-zA-Z\d+-]+-v?(\d[\da-zA-Z._]*)$', stem), - # e.g. astyle_1.23_macosx.tar.gz - (r'_([^_]+(_alpha|_beta)?)', stem), + # name.name_name-ver.ver + # e.g. tap.py-1.6, backports.ssl_match_hostname-3.5.0.1 + (r'^[a-zA-Z\d+._]+-v?(\d[\da-zA-Z.]*)$', stem), - # e.g. http://mirrors.jenkins-ci.org/war/1.486/jenkins.war - (r'\/(\d\.\d+)\/', path), + # name-namever.ver_ver.ver + # e.g. STAR-CCM+11.06.010_02 + (r'^[a-zA-Z+-]+(\d[\da-zA-Z._]*)$', stem), - # e.g. http://www.ijg.org/files/jpegsrc.v8d.tar.gz - (r'\.v(\d+[a-z]?)', stem) + # 7th Pass: Specific VCS + + # bazaar + # e.g. libvterm-0+bzr681 + (r'bzr(\d[\da-zA-Z._-]*)$', stem), + + # 8th Pass: Version in path + + # github.com/repo/name/releases/download/vver/name + # e.g. https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow + (r'github\.com/[^/]+/[^/]+/releases/download/[a-zA-Z+._-]*v?(\d[\da-zA-Z._-]*)/', path), # noqa + + # 9th Pass: Query strings + + # e.g. http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0 + (r'\?ref=[a-zA-Z+._-]*v?(\d[\da-zA-Z._-]*)$', suffix), + + # e.g. http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1 + (r'\?version=v?(\d[\da-zA-Z._-]*)$', suffix), + + # e.g. http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz + (r'\?filename=[a-zA-Z\d+-]+-v?(\d[\da-zA-Z.]*)$', stem), + + # e.g. http://wwwpub.zih.tu-dresden.de/%7Emlieber/dcount/dcount.php?package=otf&get=OTF-1.12.5salmon.tar.gz + (r'\?package=[a-zA-Z\d+-]+&get=[a-zA-Z\d+-]+-v?(\d[\da-zA-Z.]*)$', stem), # noqa ] for i, version_regex in enumerate(version_regexes): @@ -292,9 +506,15 @@ def parse_version_offset(path): version = match.group(1) start = match.start(1) - # if we matched from the basename, then add offset in. + # If we matched from the stem or suffix, we need to add offset + offset = 0 if match_string is stem: - start += offset + offset = len(path) - len(original_stem) + elif match_string is suffix: + offset = len(path) + if ext: + offset += len(ext) + 1 # .tar.gz is converted to tar.gz + start += offset return version, start, len(version), i, regex @@ -342,7 +562,7 @@ def parse_name_offset(path, v=None): except UndetectableVersionError: # Not all URLs contain a version. We still want to be able # to determine a name if possible. - v = '' + v = 'unknown' # path: The prefix of the URL, everything before the ext and suffix # ext: The file extension @@ -350,8 +570,10 @@ def parse_name_offset(path, v=None): path, ext, suffix = split_url_extension(path) # stem: Everything from path after the final '/' - stem = os.path.basename(path) - offset = len(path) - len(stem) + original_stem = os.path.basename(path) + + # Try to strip off anything after the package name + stem = strip_name_suffixes(original_stem, v) # List of the following format: # @@ -363,26 +585,45 @@ def parse_name_offset(path, v=None): # The first regex that matches string will be used to determine # the name of the package. Thefore, hyperspecific regexes should # come first while generic, catch-all regexes should come last. + # With that said, regular expressions are slow, so if possible, put + # ones that only catch one or two URLs at the bottom. name_regexes = [ - (r'/sourceforge/([^/]+)/', path), - (r'github.com/[^/]+/[^/]+/releases/download/%s/(.*)-%s$' % - (v, v), path), - (r'/([^/]+)/(tarball|zipball)/', path), - (r'/([^/]+)[_.-](bin|dist|stable|src|sources)[_.-]%s' % v, path), - (r'github.com/[^/]+/([^/]+)/archive', path), - (r'github.com/[^/]+/([^/]+)/releases', path), - (r'[^/]+/([^/]+)/repository/archive', path), # gitlab - (r'([^/]+)/download.php', path), + # 1st Pass: Common repositories - (r'([^/]+)[_.-]v?%s' % v, stem), # prefer the stem - (r'([^/]+)%s' % v, stem), + # GitHub: github.com/repo/name/ + # e.g. https://github.com/nco/nco/archive/4.6.2.tar.gz + (r'github\.com/[^/]+/([^/]+)', path), - # accept the path if name is not in stem. - (r'/([^/]+)[_.-]v?%s' % v, path), - (r'/([^/]+)%s' % v, path), + # GitLab: gitlab.*/repo/name/ + # e.g. http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0 + (r'gitlab[^/]+/[^/]+/([^/]+)', path), - (r'^([^/]+)[_.-]v?%s' % v, path), - (r'^([^/]+)%s' % v, path) + # Bitbucket: bitbucket.org/repo/name/ + # e.g. https://bitbucket.org/glotzer/hoomd-blue/get/v1.3.3.tar.bz2 + (r'bitbucket\.org/[^/]+/([^/]+)', path), + + # PyPI: pypi.(python.org|io)/packages/source/first-letter/name/ + # e.g. https://pypi.python.org/packages/source/m/mpmath/mpmath-all-0.19.tar.gz + # e.g. https://pypi.io/packages/source/b/backports.ssl_match_hostname/backports.ssl_match_hostname-3.5.0.1.tar.gz + (r'pypi\.(?:python\.org|io)/packages/source/[A-Za-z\d]/([^/]+)', path), + + # 2nd Pass: Query strings + + # ?filename=name-ver.ver + # e.g. http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz + (r'\?filename=([A-Za-z\d+-]+)$', stem), + + # ?package=name + # e.g. http://wwwpub.zih.tu-dresden.de/%7Emlieber/dcount/dcount.php?package=otf&get=OTF-1.12.5salmon.tar.gz + (r'\?package=([A-Za-z\d+-]+)', stem), + + # download.php + # e.g. http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1 + (r'([^/]+)/download.php$', path), + + # 3rd Pass: Name followed by version in archive + + (r'^([A-Za-z\d+\._-]+)$', stem), ] for i, name_regex in enumerate(name_regexes): @@ -392,13 +633,15 @@ def parse_name_offset(path, v=None): name = match.group(1) start = match.start(1) - # if we matched from the basename, then add offset in. + # If we matched from the stem or suffix, we need to add offset + offset = 0 if match_string is stem: - start += offset - - # package names should be lowercase and separated by dashes. - name = name.lower() - name = re.sub('[_.]', '-', name) + offset = len(path) - len(original_stem) + elif match_string is suffix: + offset = len(path) + if ext: + offset += len(ext) + 1 # .tar.gz is converted to tar.gz + start += offset return name, start, len(name), i, regex @@ -431,6 +674,9 @@ def parse_name_and_version(path): The version of the package :rtype: tuple + + :raises UndetectableVersionError: If the URL does not match any regexes + :raises UndetectableNameError: If the URL does not match any regexes """ ver = parse_version(path) name = parse_name(path, ver) @@ -457,6 +703,22 @@ def cumsum(elts, init=0, fn=lambda x: x): return sums +def find_all(substring, string): + """Returns a list containing the indices of + every occurrence of substring in string.""" + + occurrences = [] + index = 0 + while index < len(string): + index = string.find(substring, index) + if index == -1: + break + occurrences.append(index) + index += len(substring) + + return occurrences + + def substitution_offsets(path): """This returns offsets for substituting versions and names in the provided path. It is a helper for :func:`substitute_version`. @@ -468,65 +730,34 @@ def substitution_offsets(path): except UndetectableNameError: return (None, -1, -1, (), ver, vs, vl, (vs,)) except UndetectableVersionError: - return (None, -1, -1, (), None, -1, -1, ()) + try: + name, ns, nl, ni, nregex = parse_name_offset(path) + return (name, ns, nl, (ns,), None, -1, -1, ()) + except UndetectableNameError: + return (None, -1, -1, (), None, -1, -1, ()) - # protect extensions like bz2 from getting inadvertently - # considered versions. - path = comp.strip_extension(path) + # Find the index of every occurrence of name and ver in path + name_offsets = find_all(name, path) + ver_offsets = find_all(ver, path) - # Construct a case-insensitive regular expression for the package name. - name_re = '(%s)' % insensitize(name) - - # Split the string apart by things that match the name so that if the - # name contains numbers or things that look like versions, we don't - # accidentally substitute them with a version. - name_parts = re.split(name_re, path) - - offsets = cumsum(name_parts, 0, len) - name_offsets = offsets[1::2] - - ver_offsets = [] - for i in range(0, len(name_parts), 2): - vparts = re.split(ver, name_parts[i]) - voffsets = cumsum(vparts, offsets[i], len) - ver_offsets.extend(voffsets[1::2]) - - return (name, ns, nl, tuple(name_offsets), - ver, vs, vl, tuple(ver_offsets)) + return (name, ns, nl, name_offsets, + ver, vs, vl, ver_offsets) def wildcard_version(path): """Find the version in the supplied path, and return a regular expression that will match this path with any version in its place. """ - # Get name and version, so we can treat them specially - name, v = parse_name_and_version(path) + # Get version so we can replace it with a wildcard + version = parse_version(path) - path, ext, suffix = split_url_extension(path) + # Split path by versions + vparts = path.split(str(version)) - # Construct a case-insensitive regular expression for the package name. - name_re = '(%s)' % insensitize(name) + # Replace each version with a generic capture group to find versions + # and escape everything else so it's not interpreted as a regex + result = '(\d.*)'.join(re.escape(vp) for vp in vparts) - # Split the string apart by things that match the name so that if the - # name contains numbers or things that look like versions, we don't - # catch them with the version wildcard. - name_parts = re.split(name_re, path) - - # Even elements in the array did *not* match the name - for i in range(0, len(name_parts), 2): - # Split each part by things that look like versions. - vparts = re.split(v.wildcard(), name_parts[i]) - - # Replace each version with a generic capture group to find versions. - # And escape everything else so it's not interpreted as a regex - vgroup = '(%s)' % v.wildcard() - name_parts[i] = vgroup.join(re.escape(vp) for vp in vparts) - - # Put it all back together with original name matches intact. - result = ''.join(name_parts) - if ext: - result += '.' + ext - result += suffix return result diff --git a/lib/spack/spack/util/naming.py b/lib/spack/spack/util/naming.py index 1f2bfa88cf0..cd35008aed3 100644 --- a/lib/spack/spack/util/naming.py +++ b/lib/spack/spack/util/naming.py @@ -39,6 +39,7 @@ 'validate_fully_qualified_module_name', 'validate_module_name', 'possible_spack_module_names', + 'simplify_name', 'NamespaceTrie'] # Valid module names can contain '-' but can't start with it. @@ -108,6 +109,50 @@ def possible_spack_module_names(python_mod_name): return results +def simplify_name(name): + """Simplifies a name which may include uppercase letters, periods, + underscores, and pluses. In general, we want our package names to + only contain lowercase letters, digits, and dashes. + + :param str name: The original name of the package + :return: The new name of the package + :rtype: str + """ + # Convert CamelCase to Dashed-Names + # e.g. ImageMagick -> Image-Magick + # e.g. SuiteSparse -> Suite-Sparse + # name = re.sub('([a-z])([A-Z])', r'\1-\2', name) + + # Rename Intel downloads + # e.g. l_daal, l_ipp, l_mkl -> daal, ipp, mkl + if name.startswith('l_'): + name = name[2:] + + # Convert UPPERCASE to lowercase + # e.g. SAMRAI -> samrai + name = name.lower() + + # Replace '_' and '.' with '-' + # e.g. backports.ssl_match_hostname -> backports-ssl-match-hostname + name = name.replace('_', '-') + name = name.replace('.', '-') + + # Replace "++" with "pp" and "+" with "-plus" + # e.g. gtk+ -> gtk-plus + # e.g. voro++ -> voropp + name = name.replace('++', 'pp') + name = name.replace('+', '-plus') + + # Simplify Lua package names + # We don't want "lua" to occur multiple times in the name + name = re.sub('^(lua)([^-])', r'\1-\2', name) + + # Simplify Bio++ package names + name = re.sub('^(bpp)([^-])', r'\1-\2', name) + + return name + + def valid_module_name(mod_name): """Return whether mod_name is valid for use in Spack.""" return bool(re.match(_valid_module_re, mod_name)) diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index 8e2dd34635a..f803c6cea34 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -268,6 +268,14 @@ def find_versions_of_archive(archive_urls, list_url=None, list_depth=0): # part, not the full path. url_regex = os.path.basename(url_regex) + # We need to add a / to the beginning of the regex to prevent + # Spack from picking up similarly named packages like: + # https://cran.r-project.org/src/contrib/pls_2.6-0.tar.gz + # https://cran.r-project.org/src/contrib/enpls_5.7.tar.gz + # https://cran.r-project.org/src/contrib/autopls_1.3.tar.gz + # https://cran.r-project.org/src/contrib/matrixpls_1.0.4.tar.gz + url_regex = '/' + url_regex + # We need to add a $ anchor to the end of the regex to prevent # Spack from picking up signature files like: # .asc @@ -275,7 +283,9 @@ def find_versions_of_archive(archive_urls, list_url=None, list_depth=0): # .sha256 # .sig # However, SourceForge downloads still need to end in '/download'. - regexes.append(url_regex + '(\/download)?$') + url_regex += '(\/download)?$' + + regexes.append(url_regex) # Build a dict version -> URL from any links that match the wildcards. versions = {} diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index c8395aeb29c..89fcc9aaa71 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -194,35 +194,6 @@ def satisfies(self, other): nother = len(other.version) return nother <= nself and self.version[:nother] == other.version - def wildcard(self): - """Create a regex that will match variants of this version string.""" - def a_or_n(seg): - if type(seg) == int: - return r'[0-9]+' - else: - return r'[a-zA-Z]+' - - version = self.version - - # Use a wildcard for separators, in case a version is written - # two different ways (e.g., boost writes 1_55_0 and 1.55.0) - sep_re = '[_.-]' - separators = ('',) + (sep_re,) * len(self.separators) - - version += (version[-1],) * 2 - separators += (sep_re,) * 2 - - segments = [a_or_n(seg) for seg in version] - - wc = segments[0] - for i in range(1, len(separators)): - wc += '(?:' + separators[i] + segments[i] - - # Add possible alpha or beta indicator at the end of each segemnt - # We treat these specially b/c they're so common. - wc += '(?:[a-z]|alpha|beta)?)?' * (len(segments) - 1) - return wc - def __iter__(self): return iter(self.version) diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 726e1c81cb0..819dcc06ab1 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -732,20 +732,21 @@ function _spack_url { then compgen -W "-h --help" -- "$cur" else - compgen -W "list parse test" -- "$cur" + compgen -W "list parse summary" -- "$cur" fi } function _spack_url_list { - compgen -W "-h --help -c --color -e --extrapolation -n --incorrect-name - -v --incorrect-version" -- "$cur" + compgen -W "-h --help -c --color -e --extrapolation + -n --incorrect-name -N --correct-name + -v --incorrect-version -V --correct-version" -- "$cur" } function _spack_url_parse { compgen -W "-h --help -s --spider" -- "$cur" } -function _spack_url_test { +function _spack_url_summary { compgen -W "-h --help" -- "$cur" } diff --git a/var/spack/repos/builtin/packages/automake/package.py b/var/spack/repos/builtin/packages/automake/package.py index 8643f5d8364..4f022e5cad0 100644 --- a/var/spack/repos/builtin/packages/automake/package.py +++ b/var/spack/repos/builtin/packages/automake/package.py @@ -29,7 +29,7 @@ class Automake(AutotoolsPackage): """Automake -- make file builder part of autotools""" homepage = 'http://www.gnu.org/software/automake/' - url = 'http://ftp.gnu.org/gnu/automake/automake-1.14.tar.gz' + url = 'http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz' version('1.15', '716946a105ca228ab545fc37a70df3a3') version('1.14.1', 'd052a3e884631b9c7892f2efce542d75') diff --git a/var/spack/repos/builtin/packages/bib2xhtml/package.py b/var/spack/repos/builtin/packages/bib2xhtml/package.py index b3560381800..56038eea18f 100644 --- a/var/spack/repos/builtin/packages/bib2xhtml/package.py +++ b/var/spack/repos/builtin/packages/bib2xhtml/package.py @@ -33,9 +33,6 @@ class Bib2xhtml(Package): version('3.0-15-gf506', 'a26ba02fe0053bbbf2277bdf0acf8645') - def url_for_version(self, v): - return ('http://www.spinellis.gr/sw/textproc/bib2xhtml/bib2xhtml-v%s.tar.gz' % v) - def install(self, spec, prefix): # Add the bst include files to the install directory bst_include = join_path(prefix.share, 'bib2xhtml') diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index 133fcc5fc30..e9bfa32b391 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -31,7 +31,7 @@ class Bison(AutotoolsPackage): generalized LR (GLR) parser employing LALR(1) parser tables.""" homepage = "http://www.gnu.org/software/bison/" - url = "http://ftp.gnu.org/gnu/bison/bison-3.0.tar.gz" + url = "http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz" version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8') version('2.7', 'ded660799e76fb1667d594de1f7a0da9') diff --git a/var/spack/repos/builtin/packages/blast-plus/package.py b/var/spack/repos/builtin/packages/blast-plus/package.py index 02db14f4782..53f09c03a34 100644 --- a/var/spack/repos/builtin/packages/blast-plus/package.py +++ b/var/spack/repos/builtin/packages/blast-plus/package.py @@ -39,14 +39,9 @@ class BlastPlus(AutotoolsPackage): """Basic Local Alignment Search Tool.""" - homepage = "http://blast.ncbi.nlm.nih.gov/" url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.6.0/ncbi-blast-2.6.0+-src.tar.gz" - def url_for_version(self, version): - url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/{0}/ncbi-blast-{0}+-src.tar.gz" - return url.format(version) - version('2.6.0', 'c8ce8055b10c4d774d995f88c7cc6225') version('2.2.30', 'f8e9a5eb368173142fe6867208b73715') diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 7570987ad87..06df688ea18 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -141,14 +141,8 @@ class Boost(Package): patch('xl_1_62_0_le.patch', when='@1.62.0%xl') def url_for_version(self, version): - """ - Handle Boost's weird URLs, - which write the version two different ways. - """ - parts = [str(p) for p in Version(version)] - dots = ".".join(parts) - underscores = "_".join(parts) - return "http://downloads.sourceforge.net/project/boost/boost/%s/boost_%s.tar.bz2" % (dots, underscores) + url = "http://downloads.sourceforge.net/project/boost/boost/{0}/boost_{1}.tar.bz2" + return url.format(version.dotted, version.underscored) def determine_toolset(self, spec): if spec.satisfies("platform=darwin"): diff --git a/var/spack/repos/builtin/packages/bowtie2/package.py b/var/spack/repos/builtin/packages/bowtie2/package.py index 6dbcea8dd0f..dc850d817f7 100644 --- a/var/spack/repos/builtin/packages/bowtie2/package.py +++ b/var/spack/repos/builtin/packages/bowtie2/package.py @@ -29,7 +29,10 @@ class Bowtie2(Package): """Bowtie 2 is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences""" + homepage = "bowtie-bio.sourceforge.net/bowtie2/index.shtml" + url = "http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.3.1/bowtie2-2.3.1-source.zip" + version('2.3.1', 'b4efa22612e98e0c23de3d2c9f2f2478') version('2.2.5', '51fa97a862d248d7ee660efc1147c75f') @@ -38,10 +41,6 @@ class Bowtie2(Package): patch('bowtie2-2.2.5.patch', when='@2.2.5', level=0) patch('bowtie2-2.3.1.patch', when='@2.3.1', level=0) - def url_for_version(self, version): - url="http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/{0}/bowtie2-{0}-source.zip" - return url.format(version) - def install(self, spec, prefix): make() mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin/packages/cddlib/package.py b/var/spack/repos/builtin/packages/cddlib/package.py index 50dc5ad4724..002c3025998 100644 --- a/var/spack/repos/builtin/packages/cddlib/package.py +++ b/var/spack/repos/builtin/packages/cddlib/package.py @@ -31,19 +31,9 @@ class Cddlib(AutotoolsPackage): Method of Motzkin et al. for generating all vertices (i.e. extreme points) and extreme rays of a general convex polyhedron in R^d given by a system of linear inequalities""" - homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/" - # This is the original download url. It is currently down [2016-08-23], - # but should be reinstated or updated once the issue is resolved. - # url = "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-094h.tar.gz" - url = "http://pkgs.fedoraproject.org/lookaside/pkgs/cddlib/cddlib-094h.tar.gz/1467d270860bbcb26d3ebae424690e7c/cddlib-094h.tar.gz" - def url_for_version(self, version): - # Since the commit id is part of the version, we can't - # auto-generate the string, and we need to explicitly list all - # known versions here. Currently, there is only one version. - if str(version) == '0.94h': - return "http://pkgs.fedoraproject.org/lookaside/pkgs/cddlib/cddlib-094h.tar.gz/1467d270860bbcb26d3ebae424690e7c/cddlib-094h.tar.gz" - raise InstallError("Unsupported version %s" % str(version)) + homepage = "https://www.inf.ethz.ch/personal/fukudak/cdd_home/" + url = "ftp://ftp.math.ethz.ch/users/fukudak/cdd/cddlib-094h.tar.gz" version('0.94h', '1467d270860bbcb26d3ebae424690e7c') @@ -51,3 +41,7 @@ def url_for_version(self, version): depends_on("gmp") depends_on("libtool", type="build") + + def url_for_version(self, version): + url = "ftp://ftp.math.ethz.ch/users/fukudak/cdd/cddlib-{0}.tar.gz" + return url.format(version.joined) diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index 775dc31cf36..90039d4479e 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -30,9 +30,13 @@ class Cdo(Package): Climate and NWP model Data. """ homepage = "https://code.zmaw.de/projects/cdo" + url = "https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz" + list_url = "https://code.zmaw.de/projects/cdo/files" - version('1.7.2', 'f08e4ce8739a4f2b63fc81a24db3ee31', url='https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz') - version('1.6.9', 'bf0997bf20e812f35e10188a930e24e2', url='https://code.zmaw.de/attachments/download/10198/cdo-1.6.9.tar.gz') + version('1.7.2', 'f08e4ce8739a4f2b63fc81a24db3ee31', + url='https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz') + version('1.6.9', 'bf0997bf20e812f35e10188a930e24e2', + url='https://code.zmaw.de/attachments/download/10198/cdo-1.6.9.tar.gz') variant('szip', default=True, description='Enable szip compression for GRIB1') variant('hdf5', default=False, description='Enable HDF5 support') @@ -54,7 +58,7 @@ class Cdo(Package): depends_on('proj', when='+proj') depends_on('curl', when='+curl') depends_on('fftw', when='+fftw') - depends_on('magics', when='+magics') + depends_on('magics', when='+magics') def install(self, spec, prefix): config_args = ["--prefix=" + prefix, diff --git a/var/spack/repos/builtin/packages/cfitsio/package.py b/var/spack/repos/builtin/packages/cfitsio/package.py index 811b3ca9bc7..b382f87f5b1 100644 --- a/var/spack/repos/builtin/packages/cfitsio/package.py +++ b/var/spack/repos/builtin/packages/cfitsio/package.py @@ -31,6 +31,7 @@ class Cfitsio(AutotoolsPackage): """ homepage = 'http://heasarc.gsfc.nasa.gov/fitsio/' + url = 'http://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/cfitsio3410.tar.gz' version('3.410', '8a4a66fcdd816aae41768baa0b025552') version('3.370', 'abebd2d02ba5b0503c633581e3bfa116') diff --git a/var/spack/repos/builtin/packages/cppad/package.py b/var/spack/repos/builtin/packages/cppad/package.py index 1ec31bbeefa..e17a0702943 100644 --- a/var/spack/repos/builtin/packages/cppad/package.py +++ b/var/spack/repos/builtin/packages/cppad/package.py @@ -29,16 +29,13 @@ class Cppad(CMakePackage): """A Package for Differentiation of C++ Algorithms.""" homepage = "https://www.coin-or.org/CppAD/" + url = "http://www.coin-or.org/download/source/CppAD/cppad-20170114.gpl.tgz" version('20170114', '565a534dc813fa1289764222cd8c11ea') version('develop', git='https://github.com/coin-or/CppAD.git') depends_on('cmake', type='build') - def url_for_version(self, version): - """Handle version-based custom URLs.""" - return "http://www.coin-or.org/download/source/CppAD/cppad-%s.gpl.tgz" % (version) - def cmake_args(self): # This package does not obey CMAKE_INSTALL_PREFIX args = [ diff --git a/var/spack/repos/builtin/packages/cryptopp/package.py b/var/spack/repos/builtin/packages/cryptopp/package.py index c92f262a9a4..142bd4f2538 100644 --- a/var/spack/repos/builtin/packages/cryptopp/package.py +++ b/var/spack/repos/builtin/packages/cryptopp/package.py @@ -36,6 +36,7 @@ class Cryptopp(Package): """ homepage = "http://www.cryptopp.com" + url = "http://www.cryptopp.com/cryptopp563.zip" version('5.6.3', '3c5b70e2ec98b7a24988734446242d07') version('5.6.2', '7ed022585698df48e65ce9218f6c6a67') diff --git a/var/spack/repos/builtin/packages/dakota/package.py b/var/spack/repos/builtin/packages/dakota/package.py index e8f7d0889b4..c40229f83be 100644 --- a/var/spack/repos/builtin/packages/dakota/package.py +++ b/var/spack/repos/builtin/packages/dakota/package.py @@ -46,7 +46,6 @@ class Dakota(Package): homepage = 'https://dakota.sandia.gov/' url = 'https://dakota.sandia.gov/sites/default/files/distributions/public/dakota-6.3-public.src.tar.gz' - _url_str = 'https://dakota.sandia.gov/sites/default/files/distributions/public/dakota-{version}-public.src.tar.gz' version('6.3', '05a58d209fae604af234c894c3f73f6d') @@ -64,9 +63,6 @@ class Dakota(Package): depends_on('boost') depends_on('cmake', type='build') - def url_for_version(self, version): - return Dakota._url_str.format(version=version) - def install(self, spec, prefix): options = [] options.extend(std_cmake_args) diff --git a/var/spack/repos/builtin/packages/exonerate/package.py b/var/spack/repos/builtin/packages/exonerate/package.py index 7921e640584..2615d859d62 100644 --- a/var/spack/repos/builtin/packages/exonerate/package.py +++ b/var/spack/repos/builtin/packages/exonerate/package.py @@ -29,7 +29,7 @@ class Exonerate(Package): """Pairwise sequence alignment of DNA and proteins""" homepage = "http://www.ebi.ac.uk/about/vertebrate-genomics/software/exonerate" - url = "http://ftp.ebi.ac.uk/pub/software/vertebrategenomics/exonerate/exonerate-2.2.0.tar.gz" + url = "http://ftp.ebi.ac.uk/pub/software/vertebrategenomics/exonerate/exonerate-2.4.0.tar.gz" version('2.4.0', '126fbade003b80b663a1d530c56f1904') diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py index 15ddfcee166..4dcff54b8f0 100644 --- a/var/spack/repos/builtin/packages/ferret/package.py +++ b/var/spack/repos/builtin/packages/ferret/package.py @@ -31,11 +31,10 @@ class Ferret(Package): """Ferret is an interactive computer visualization and analysis environment designed to meet the needs of oceanographers and meteorologists analyzing large and complex gridded data sets.""" - homepage = "http://ferret.noaa.gov/Ferret/" - url = "ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.tar.gz" + homepage = "http://ferret.pmel.noaa.gov/Ferret/home" + url = "ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.v696.tar.gz" - version('6.96', '51722027c864369f41bab5751dfff8cc', - url="ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.tar.gz") + version('6.96', '51722027c864369f41bab5751dfff8cc') depends_on("hdf5~mpi~fortran") depends_on("netcdf~mpi") @@ -43,6 +42,10 @@ class Ferret(Package): depends_on("readline") depends_on("zlib") + def url_for_version(self, version): + return "ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.v{0}.tar.gz".format( + version.joined) + def patch(self): hdf5_prefix = self.spec['hdf5'].prefix netcdff_prefix = self.spec['netcdf-fortran'].prefix diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index 11597447211..2f3a0b0bd7a 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -32,7 +32,9 @@ class GdkPixbuf(AutotoolsPackage): GTK+ 2 but it was split off into a separate package in preparation for the change to GTK+ 3.""" homepage = "https://developer.gnome.org/gdk-pixbuf/" - url = "http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.31/gdk-pixbuf-2.31.1.tar.xz" + url = "http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.31/gdk-pixbuf-2.31.2.tar.xz" + list_url = "http://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/" + list_depth = 2 version('2.31.2', '6be6bbc4f356d4b79ab4226860ab8523') diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 6559e904961..c095140c68a 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -89,13 +89,6 @@ def patch(self): r'# \1\2\3', ) - @when('@1.5.0:') - def patch(self): - pass - - def url_for_version(self, version): - return "https://storage.googleapis.com/golang/go{0}.src.tar.gz".format(version) - def install(self, spec, prefix): bash = which('bash') with working_dir('src'): diff --git a/var/spack/repos/builtin/packages/gource/package.py b/var/spack/repos/builtin/packages/gource/package.py index 21994ad42ca..7d12697d63c 100644 --- a/var/spack/repos/builtin/packages/gource/package.py +++ b/var/spack/repos/builtin/packages/gource/package.py @@ -52,10 +52,6 @@ class Gource(AutotoolsPackage): parallel = False force_autoreconf = True - def url_for_version(self, version): - tmp = 'https://github.com/acaudwell/Gource/releases/download/gource-{0}/gource-{0}.tar.gz' # NOQA: ignore=E501 - return tmp.format(version.dotted) - def configure_args(self): spec = self.spec return [ diff --git a/var/spack/repos/builtin/packages/ibmisc/package.py b/var/spack/repos/builtin/packages/ibmisc/package.py index f3252055078..181ae6d92b5 100644 --- a/var/spack/repos/builtin/packages/ibmisc/package.py +++ b/var/spack/repos/builtin/packages/ibmisc/package.py @@ -29,9 +29,9 @@ class Ibmisc(CMakePackage): """Misc. reusable utilities used by IceBin.""" homepage = "https://github.com/citibeth/ibmisc" - url = "https://github.com/citibeth/ibmisc/tarball/123" + url = "https://github.com/citibeth/ibmisc/archive/v0.1.0.tar.gz" - version('0.1.0', '12f2a32432a11db48e00217df18e59fa') + version('0.1.0', '18c63db3e466c5a6fc2db3f903d06ecb') variant('everytrace', default=False, description='Report errors through Everytrace') diff --git a/var/spack/repos/builtin/packages/icet/package.py b/var/spack/repos/builtin/packages/icet/package.py index f8260f19519..ca3251ac404 100644 --- a/var/spack/repos/builtin/packages/icet/package.py +++ b/var/spack/repos/builtin/packages/icet/package.py @@ -30,7 +30,7 @@ class Icet(CMakePackage): sort-last parallel rendering library.""" homepage = "http://icet.sandia.gov" - url = "https://example.com/icet-1.2.3.tar.gz" + url = "https://gitlab.kitware.com/icet/icet/repository/archive.tar.bz2?ref=IceT-2.1.1" version('develop', branch='master', git='https://gitlab.kitware.com/icet/icet.git') @@ -38,9 +38,5 @@ class Icet(CMakePackage): depends_on('mpi') - def url_for_version(self, version): - return ("https://gitlab.kitware.com/icet/icet/repository/" - "archive.tar.bz2?ref=IceT-{0}".format(version.dotted)) - def cmake_args(self): return ['-DICET_USE_OPENGL:BOOL=OFF'] diff --git a/var/spack/repos/builtin/packages/image-magick/package.py b/var/spack/repos/builtin/packages/image-magick/package.py index 9efb0cd3686..e32f1967e2a 100644 --- a/var/spack/repos/builtin/packages/image-magick/package.py +++ b/var/spack/repos/builtin/packages/image-magick/package.py @@ -45,9 +45,6 @@ class ImageMagick(Package): depends_on('ghostscript') depends_on('ghostscript-fonts') - def url_for_version(self, version): - return "https://github.com/ImageMagick/ImageMagick/archive/{0}.tar.gz".format(version) - def install(self, spec, prefix): gs_font_dir = join_path(spec['ghostscript-fonts'].prefix.share, "font") configure('--prefix={0}'.format(prefix), diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index 518a4694350..8df01f4b67e 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -45,10 +45,10 @@ class Jdk(Package): '-H', # specify required License Agreement cookie 'Cookie: oraclelicense=accept-securebackup-cookie'] - version('8u66-linux-x64', '88f31f3d642c3287134297b8c10e61bf', + version('8u66', '88f31f3d642c3287134297b8c10e61bf', url="http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz", curl_options=curl_options) - version('8u92-linux-x64', '65a1cc17ea362453a6e0eb4f13be76e4', + version('8u92', '65a1cc17ea362453a6e0eb4f13be76e4', url="http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.tar.gz", curl_options=curl_options) diff --git a/var/spack/repos/builtin/packages/libedit/package.py b/var/spack/repos/builtin/packages/libedit/package.py index 5dcee61caba..6887d671019 100644 --- a/var/spack/repos/builtin/packages/libedit/package.py +++ b/var/spack/repos/builtin/packages/libedit/package.py @@ -30,7 +30,11 @@ class Libedit(AutotoolsPackage): homepage = "http://thrysoee.dk/editline/" url = "http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz" - version('3.1', '43cdb5df3061d78b5e9d59109871b4f6', - url="http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz") + version('3.1-20160903', '0467d27684c453a351fbcefebbcb16a3') + version('3.1-20150325', '43cdb5df3061d78b5e9d59109871b4f6') depends_on('ncurses') + + def url_for_version(self, version): + url = "http://thrysoee.dk/editline/libedit-{0}-{1}.tar.gz" + return url.format(version[-1], version.up_to(-1)) diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py index adce0b75154..c70d8b56fd7 100644 --- a/var/spack/repos/builtin/packages/libgd/package.py +++ b/var/spack/repos/builtin/packages/libgd/package.py @@ -56,7 +56,3 @@ class Libgd(AutotoolsPackage): depends_on('libpng') depends_on('libtiff') depends_on('fontconfig') - - def url_for_version(self, version): - url = "https://github.com/libgd/libgd/releases/download/gd-{0}/libgd-{0}.tar.gz" - return url.format(version) diff --git a/var/spack/repos/builtin/packages/libsodium/package.py b/var/spack/repos/builtin/packages/libsodium/package.py index a7e3ab10aed..6d21d65345d 100644 --- a/var/spack/repos/builtin/packages/libsodium/package.py +++ b/var/spack/repos/builtin/packages/libsodium/package.py @@ -30,6 +30,7 @@ class Libsodium(AutotoolsPackage): decryption, signatures, password hashing and more.""" homepage = "https://download.libsodium.org/doc/" url = "https://download.libsodium.org/libsodium/releases/libsodium-1.0.11.tar.gz" + list_url = "https://download.libsodium.org/libsodium/releases/old" version('1.0.11', 'b58928d035064b2a46fb564937b83540') version('1.0.10', 'ea89dcbbda0b2b6ff6a1c476231870dd') diff --git a/var/spack/repos/builtin/packages/libxstream/package.py b/var/spack/repos/builtin/packages/libxstream/package.py index 3201b58620a..0996e6b9e80 100644 --- a/var/spack/repos/builtin/packages/libxstream/package.py +++ b/var/spack/repos/builtin/packages/libxstream/package.py @@ -31,9 +31,9 @@ class Libxstream(Package): conditions.''' homepage = 'https://github.com/hfp/libxstream' - url = 'https://github.com/hfp/libxstream.git' + url = 'https://github.com/hfp/libxstream/archive/0.9.0.tar.gz' - version('0.9.0', git='https://github.com/hfp/libxstream.git') + version('0.9.0', 'fd74b7cf5f145ff4925d91be2809571c') def patch(self): kwargs = {'ignore_absent': False, 'backup': True, 'string': True} diff --git a/var/spack/repos/builtin/packages/meep/package.py b/var/spack/repos/builtin/packages/meep/package.py index 2c1018e711f..00b9c4ea091 100644 --- a/var/spack/repos/builtin/packages/meep/package.py +++ b/var/spack/repos/builtin/packages/meep/package.py @@ -30,6 +30,8 @@ class Meep(Package): software package developed at MIT to model electromagnetic systems.""" homepage = "http://ab-initio.mit.edu/wiki/index.php/Meep" + url = "http://ab-initio.mit.edu/meep/meep-1.3.tar.gz" + list_url = "http://ab-initio.mit.edu/meep/old" version('1.3', '18a5b9e18008627a0411087e0bb60db5') version('1.2.1', '9be2e743c3a832ae922de9d955d016c5') diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index f15d544b7be..c927c22a1be 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -37,7 +37,8 @@ class Metis(Package): partitioning schemes.""" homepage = "http://glaros.dtc.umn.edu/gkhome/metis/metis/overview" - base_url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis" + url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz" + list_url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/OLD" version('5.1.0', '5465e67079419a69e0116de24fce58fe') version('5.0.2', 'acb521a4e8c2e6dd559a7f9abd0468c5') @@ -55,12 +56,11 @@ class Metis(Package): patch('install_gklib_defs_rename.patch', when='@5:') def url_for_version(self, version): - verdir = 'OLD/' if version < Version('4.0.3') else '' - return '%s/%smetis-%s.tar.gz' % (Metis.base_url, verdir, version) - - @when('@:4') - def patch(self): - pass + url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis" + if version < Version('4.0.3'): + url += "/OLD" + url += "/metis-{0}.tar.gz".format(version) + return url @when('@5:') def patch(self): @@ -84,7 +84,7 @@ def patch(self): filter_file('#define MAX_JBUFS 128', '#define MAX_JBUFS 24', join_path(source_path, 'GKlib', 'error.c')) - @when('@:4') + @when('@:4') # noqa: F811 def install(self, spec, prefix): # Process library spec and options if any('+{0}'.format(v) in spec for v in ['gdb', 'int64', 'real64']): @@ -175,7 +175,7 @@ def install(self, spec, prefix): Executable(test_bin('mesh2dual'))(test_graph('metis.mesh')) """ - @when('@5:') + @when('@5:') # noqa: F811 def install(self, spec, prefix): source_directory = self.stage.source_path build_directory = join_path(source_directory, 'build') @@ -187,7 +187,7 @@ def install(self, spec, prefix): if '+shared' in spec: options.append('-DSHARED:BOOL=ON') else: - # Remove all RPATH options + # Remove all RPATH options # (RPATHxxx options somehow trigger cmake to link dynamically) rpath_options = [] for o in options: diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index a25583e1641..b3fe5197a06 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -31,15 +31,32 @@ class Mfem(Package): homepage = 'http://www.mfem.org' url = 'https://github.com/mfem/mfem' + # mfem is downloaded from a URL shortener at request of upstream + # author Tzanio Kolev . See here: + # https://github.com/mfem/mfem/issues/53 + # + # The following procedure should be used to verify security when a + # new verison is added: + # + # 1. Verify that no checksums on old versions have changed. + # + # 2. Verify that the shortened URL for the new version is listed at: + # http://mfem.org/download/ + # + # 3. Use http://getlinkinfo.com or similar to verify that the + # underling download link for the latest version comes has the + # prefix: http://mfem.github.io/releases + # + # If this quick verification procedure fails, additional discussion + # will be required to verify the new version. + version('3.2', '2938c3deed4ec4f7fd5b5f5cfe656845282e86e2dcd477d292390058b7b94340', - url='http://goo.gl/Y9T75B', preferred=True, extension='.tar.gz') + url='http://goo.gl/Y9T75B', extension='.tar.gz') version('3.1', '841ea5cf58de6fae4de0f553b0e01ebaab9cd9c67fa821e8a715666ecf18fc57', url='http://goo.gl/xrScXn', extension='.tar.gz') -# version('3.1', git='https://github.com/mfem/mfem.git', -# commit='dbae60fe32e071989b52efaaf59d7d0eb2a3b574') variant('metis', default=False, description='Activate support for metis') variant('hypre', default=False, description='Activate support for hypre') diff --git a/var/spack/repos/builtin/packages/mitos/package.py b/var/spack/repos/builtin/packages/mitos/package.py index d577a1b285f..4ccddb35927 100644 --- a/var/spack/repos/builtin/packages/mitos/package.py +++ b/var/spack/repos/builtin/packages/mitos/package.py @@ -30,13 +30,12 @@ class Mitos(Package): performance data to view with MemAxes""" homepage = "https://github.com/llnl/Mitos" - url = "https://github.com/llnl/Mitos" + url = "https://github.com/LLNL/Mitos/archive/v0.9.1.tar.gz" version('0.9.2', git='https://github.com/llnl/Mitos.git', commit='8cb143a2e8c00353ff531a781a9ca0992b0aaa3d') - - version('0.9.1', git='https://github.com/llnl/Mitos.git', tag='v0.9.1') + version('0.9.1', 'c6cb57f3cae54f5157affd97ef7ef79e') depends_on('dyninst@8.2.1:') depends_on('hwloc') diff --git a/var/spack/repos/builtin/packages/moab/package.py b/var/spack/repos/builtin/packages/moab/package.py index b783d7b81b6..14925cfd3e1 100644 --- a/var/spack/repos/builtin/packages/moab/package.py +++ b/var/spack/repos/builtin/packages/moab/package.py @@ -35,7 +35,7 @@ class Moab(Package): mesh in chunks rather than through individual entities, while also versatile enough to support individual entity access.""" homepage = "https://bitbucket.org/fathomteam/moab" - url = "http://ftp.mcs.anl.gov/pub/fathom/moab-4.6.3.tar.gz" + url = "http://ftp.mcs.anl.gov/pub/fathom/moab-4.9.1.tar.gz" version('4.9.1', '19cc2189fa266181ad9109b18d0b2ab8') version('4.9.0', '40695d0a159040683cfa05586ad4a7c2') diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index cd53c67dff8..435fd748b35 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -41,9 +41,6 @@ class Mxml(AutotoolsPackage): version('2.6', '68977789ae64985dddbd1a1a1652642e') version('2.5', 'f706377fba630b39fa02fd63642b17e5') - def url_for_version(self, version): - return "https://github.com/michaelrsweet/mxml/releases/download/release-{0}/mxml-{0}.tar.gz".format(version) - # module swap PrgEnv-intel PrgEnv-$COMP # (Can use whatever compiler you want to use) # Case statement to change CC and CXX flags diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py index 2b6693a18c0..e9df8489c95 100644 --- a/var/spack/repos/builtin/packages/nettle/package.py +++ b/var/spack/repos/builtin/packages/nettle/package.py @@ -30,7 +30,7 @@ class Nettle(AutotoolsPackage): that is designed to fit easily in many contexts.""" homepage = "https://www.lysator.liu.se/~nisse/nettle/" - url = "http://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz" + url = "http://ftp.gnu.org/gnu/nettle/nettle-3.2.tar.gz" version('3.2', 'afb15b4764ebf1b4e6d06c62bd4d29e4') version('2.7.1', '003d5147911317931dd453520eb234a5') diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index 563ecd9b400..05f21f70b75 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -29,6 +29,7 @@ class Nextflow(Package): """Data-driven computational pipelines""" homepage = "http://www.nextflow.io" + url = "https://github.com/nextflow-io/nextflow/releases/download/v0.24.1/nextflow" version('0.24.1', '80ec8c4fe8e766e0bdd1371a50410d1d', expand=False) @@ -39,10 +40,6 @@ class Nextflow(Package): depends_on('jdk') - def url_for_version(self, version): - base_url = 'https://github.com/nextflow-io/nextflow/releases/download/v{0}/nextflow' - return base_url.format(version) - def install(self, spec, prefix): mkdirp(prefix.bin) install("nextflow", join_path(prefix.bin, "nextflow")) diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py index c3488c137af..950621da40a 100644 --- a/var/spack/repos/builtin/packages/oce/package.py +++ b/var/spack/repos/builtin/packages/oce/package.py @@ -32,6 +32,7 @@ class Oce(Package): Open CASCADE library. """ homepage = "https://github.com/tpaviot/oce" + url = "https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz" version('0.18', '226e45e77c16a4a6e127c71fefcd171410703960ae75c7ecc7eb68895446a993') version('0.17.2', 'bf2226be4cd192606af677cf178088e5') @@ -46,10 +47,6 @@ class Oce(Package): depends_on('cmake@2.8:', type='build') depends_on('tbb', when='+tbb') - def url_for_version(self, version): - return 'https://github.com/tpaviot/oce/archive/OCE-%s.tar.gz' % ( - version.dotted) - # There is a bug in OCE which appears with Clang (version?) or GCC 6.0 # and has to do with compiler optimization, see # https://github.com/tpaviot/oce/issues/576 diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py index 88350f50bca..8999b081e31 100644 --- a/var/spack/repos/builtin/packages/octopus/package.py +++ b/var/spack/repos/builtin/packages/octopus/package.py @@ -30,17 +30,11 @@ class Octopus(Package): theory code.""" homepage = "http://www.tddft.org/programs/octopus/" - base_url = "http://www.tddft.org/programs/octopus/down.php?file=" + url = "http://www.tddft.org/programs/octopus/down.php?file=6.0/octopus-6.0.tar.gz" version('6.0', '5d1168c2a8d7fd9cb9492eaebaa7182e') version('5.0.1', '2b6392ab67b843f9d4ca7413fc07e822') - # Sample url is: - # "http://www.tddft.org/programs/octopus/down.php?file=5.0.1/octopus-5.0.1.tar.gz" - def url_for_version(self, version): - return '{0}/{1}/octopus-{1}.tar.gz'.format(Octopus.base_url, - version.dotted) - variant('scalapack', default=False, description='Compile with Scalapack') variant('metis', default=True, diff --git a/var/spack/repos/builtin/packages/openjpeg/package.py b/var/spack/repos/builtin/packages/openjpeg/package.py index 9790c52e7d3..b22de4452aa 100644 --- a/var/spack/repos/builtin/packages/openjpeg/package.py +++ b/var/spack/repos/builtin/packages/openjpeg/package.py @@ -43,7 +43,3 @@ class Openjpeg(CMakePackage): version('2.0', 'cdf266530fee8af87454f15feb619609') version('1.5.2', '545f98923430369a6b046ef3632ef95c') version('1.5.1', 'd774e4b5a0db5f0f171c4fc0aabfa14e') - - def url_for_version(self, version): - fmt = 'https://github.com/uclouvain/openjpeg/archive/version.{0}.tar.gz' - return fmt.format(version.dotted) diff --git a/var/spack/repos/builtin/packages/panda/package.py b/var/spack/repos/builtin/packages/panda/package.py index e30c2c869d3..fb14bd56435 100644 --- a/var/spack/repos/builtin/packages/panda/package.py +++ b/var/spack/repos/builtin/packages/panda/package.py @@ -29,9 +29,9 @@ class Panda(Package): """PANDA: Parallel AdjaceNcy Decomposition Algorithm""" homepage = "http://comopt.ifi.uni-heidelberg.de/software/PANDA/index.html" - url = "http://comopt.ifi.uni-heidelberg.de/software/PANDA/downloads/current_panda.tar" + url = "http://comopt.ifi.uni-heidelberg.de/software/PANDA/downloads/panda-2016-03-07.tar" - version('current', 'b06dc312ee56e13eefea9c915b70fcef') + version('2016-03-07', 'b06dc312ee56e13eefea9c915b70fcef') # Note: Panda can also be built without MPI support diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py index 0e6cd5390a0..b07c796dd76 100644 --- a/var/spack/repos/builtin/packages/parmetis/package.py +++ b/var/spack/repos/builtin/packages/parmetis/package.py @@ -33,7 +33,8 @@ class Parmetis(Package): computing fill-reducing orderings of sparse matrices.""" homepage = 'http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview' - base_url = 'http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis' + url = 'http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/parmetis-4.0.3.tar.gz' + list_url = 'http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/OLD' version('4.0.3', 'f69c479586bf6bb7aff6a9bc0c739628') version('4.0.2', '0912a953da5bb9b5e5e10542298ffdce') @@ -54,8 +55,11 @@ class Parmetis(Package): patch('pkg-parmetis-82409d68aa1d6cbc70740d0f35024aae17f7d5cb.patch') def url_for_version(self, version): - verdir = 'OLD/' if version < Version('3.2.0') else '' - return '%s/%sparmetis-%s.tar.gz' % (Parmetis.base_url, verdir, version) + url = 'http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis' + if version < Version('3.2.0'): + url += '/OLD' + url += '/parmetis-{0}.tar.gz'.format(version) + return url def install(self, spec, prefix): source_directory = self.stage.source_path @@ -72,7 +76,7 @@ def install(self, spec, prefix): if '+shared' in spec: options.append('-DSHARED:BOOL=ON') else: - # Remove all RPATH options + # Remove all RPATH options # (RPATHxxx options somehow trigger cmake to link dynamically) rpath_options = [] for o in options: diff --git a/var/spack/repos/builtin/packages/prank/package.py b/var/spack/repos/builtin/packages/prank/package.py index d627e8a0b69..09b73e795f0 100644 --- a/var/spack/repos/builtin/packages/prank/package.py +++ b/var/spack/repos/builtin/packages/prank/package.py @@ -29,7 +29,7 @@ class Prank(Package): """A powerful multiple sequence alignment browser.""" homepage = "http://wasabiapp.org/software/prank/" - url = "http://wasabiapp.org/download/prank/prank.source.140603.tgz" + url = "http://wasabiapp.org/download/prank/prank.source.150803.tgz" version('150803', '71ac2659e91c385c96473712c0a23e8a') diff --git a/var/spack/repos/builtin/packages/py-autopep8/package.py b/var/spack/repos/builtin/packages/py-autopep8/package.py index c892e2979ca..6c92def4152 100644 --- a/var/spack/repos/builtin/packages/py-autopep8/package.py +++ b/var/spack/repos/builtin/packages/py-autopep8/package.py @@ -30,10 +30,10 @@ class PyAutopep8(PythonPackage): PEP 8 style guide.""" homepage = "https://github.com/hhatto/autopep8" - url = "https://github.com/hhatto/autopep8/archive/v1.2.4.tar.gz" + url = "https://pypi.io/packages/source/a/autopep8/autopep8-1.2.4.tar.gz" - version('1.2.4', '0458db85159a9e1b45f3e71ce6c158da') - version('1.2.2', 'def3d023fc9dfd1b7113602e965ad8e1') + version('1.2.4', 'fcea19c0c5e505b425e2a78afb771f5c') + version('1.2.2', '3d97f9c89d14a0975bffd32a2c61c36c') extends('python', ignore='bin/pep8') depends_on('python@2.6:2.7,3.2:') @@ -41,10 +41,3 @@ class PyAutopep8(PythonPackage): depends_on('py-pycodestyle@1.5.7:1.7.0', type=('build', 'run')) depends_on('py-setuptools', type='build') - - def url_for_version(self, version): - url = "https://github.com/hhatto/autopep8/archive/{0}{1}.tar.gz" - if version >= Version('1.2.3'): - return url.format('v', version) - else: - return url.format('ver', version) diff --git a/var/spack/repos/builtin/packages/py-cdo/package.py b/var/spack/repos/builtin/packages/py-cdo/package.py index 3f1306a183c..2bf4a2623cb 100644 --- a/var/spack/repos/builtin/packages/py-cdo/package.py +++ b/var/spack/repos/builtin/packages/py-cdo/package.py @@ -30,10 +30,9 @@ class PyCdo(PythonPackage): Operators from Python.""" homepage = "https://pypi.python.org/pypi/cdo" - url = "https://pypi.python.org/packages/sources/c/cdo/cdo-1.3.2.tar.gz" + url = "https://pypi.io/packages/source/c/cdo/cdo-1.3.2.tar.gz" - version('1.3.2', '4b3686ec1b9b891f166c1c466c6db745', - url="https://pypi.python.org/packages/d6/13/908e7c1451e1f5fb68405f341cdcb3196a16952ebfe1f172cb788f864aa9/cdo-1.3.2.tar.gz") + version('1.3.2', '4b3686ec1b9b891f166c1c466c6db745') depends_on('cdo') diff --git a/var/spack/repos/builtin/packages/py-markdown/package.py b/var/spack/repos/builtin/packages/py-markdown/package.py index 23c81670213..af10f1c5d3b 100644 --- a/var/spack/repos/builtin/packages/py-markdown/package.py +++ b/var/spack/repos/builtin/packages/py-markdown/package.py @@ -50,7 +50,3 @@ class PyMarkdown(PythonPackage): depends_on('py-setuptools', type='build') depends_on('python@2.7:2.8,3.2:3.4') - - def url_for_version(self, version): - base_url = "https://github.com/waylan/Python-Markdown/archive" - return "{0}/{1}-final.tar.gz".format(base_url, version) diff --git a/var/spack/repos/builtin/packages/py-proj/package.py b/var/spack/repos/builtin/packages/py-proj/package.py index 949aab88c36..cf230eb49fd 100644 --- a/var/spack/repos/builtin/packages/py-proj/package.py +++ b/var/spack/repos/builtin/packages/py-proj/package.py @@ -32,9 +32,8 @@ class PyProj(PythonPackage): # This is not a tagged release of pyproj. # The changes in this "version" fix some bugs, especially with Python3 use. - version('1.9.5.1.1', 'd035e4bc704d136db79b43ab371b27d2', - url='https://www.github.com/jswhit/pyproj/tarball/0be612cc9f972e38b50a90c946a9b353e2ab140f') - + version('1.9.5.1.1', git='https://www.github.com/jswhit/pyproj.git', + commit='0be612cc9f972e38b50a90c946a9b353e2ab140f') version('1.9.5.1', 'a4b80d7170fc82aee363d7f980279835') depends_on('py-cython', type='build') diff --git a/var/spack/repos/builtin/packages/py-pypar/package.py b/var/spack/repos/builtin/packages/py-pypar/package.py index 6ba999c063f..c95698d83d3 100644 --- a/var/spack/repos/builtin/packages/py-pypar/package.py +++ b/var/spack/repos/builtin/packages/py-pypar/package.py @@ -38,6 +38,3 @@ class PyPypar(PythonPackage): depends_on('py-numpy', type=('build', 'run')) build_directory = 'source' - - def url_for_version(self, version): - return "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pypar/pypar-%s.tgz" % version diff --git a/var/spack/repos/builtin/packages/py-rtree/package.py b/var/spack/repos/builtin/packages/py-rtree/package.py index 55f98ad19e6..a3604b467d2 100644 --- a/var/spack/repos/builtin/packages/py-rtree/package.py +++ b/var/spack/repos/builtin/packages/py-rtree/package.py @@ -28,22 +28,9 @@ class PyRtree(PythonPackage): """Python interface to the RTREE.4 Library.""" homepage = "http://toblerity.org/rtree/" - url = "https://github.com/Toblerity/rtree/tarball/0.8.2" + url = "https://pypi.io/packages/source/R/Rtree/Rtree-0.8.3.tar.gz" - # Not an official release yet. But changes in here are required - # to work with Spack. As it does with all packages, Spack - # installs libspatialindex in a non-system location. Without the - # changes in this fork, py-rtree requires an environment variables - # to be set *at runtime*, in order to find libspatialindex. That - # is not feasible within the Spack worldview. - version('0.8.2.2', 'b1fe96a73153db49ea6ce45a063d82cb', - url='https://github.com/citibeth/rtree/tarball/95a678cc7350857a1bb631bc41254efcd1fc0a0d') - - version('0.8.2.1', '394696ca849dd9f3a5ef24fb02a41ef4', - url='https://github.com/citibeth/rtree/tarball/3a87d86f66a3955676b2507d3bf424ade938a22b') - - # Does not work with Spack - # version('0.8.2', '593c7ac6babc397b8ba58f1636c1e0a0') + version('0.8.3', 'a27cb05a85eed0a3605c45ebccc432f8') depends_on('py-setuptools', type='build') depends_on('libspatialindex') diff --git a/var/spack/repos/builtin/packages/r-lava/package.py b/var/spack/repos/builtin/packages/r-lava/package.py index c38f9003ea8..263e859c489 100644 --- a/var/spack/repos/builtin/packages/r-lava/package.py +++ b/var/spack/repos/builtin/packages/r-lava/package.py @@ -29,7 +29,7 @@ class RLava(RPackage): """Estimation and simulation of latent variable models.""" homepage = "https://cran.r-project.org/package=lava" - url = "https://cran.r-project.org/src/contrib/lava_1.4.6.tar.gz" + url = "https://cran.r-project.org/src/contrib/lava_1.4.7.tar.gz" list_url = "https://cran.r-project.org/src/contrib/Archive/lava" version('1.4.7', '28039248a7039ba9281d172e4dbf9543') diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index a96d7f6bbc6..a5939ace8f0 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -30,7 +30,7 @@ class Root(Package): """ROOT is a data analysis framework.""" homepage = "https://root.cern.ch" - url = "https://root.cern.ch/download/root_v6.07.02.source.tar.gz" + url = "https://root.cern.ch/download/root_v6.06.06.source.tar.gz" version('6.06.06', '4308449892210c8d36e36924261fea26') version('6.06.04', '55a2f98dd4cea79c9c4e32407c2d6d17') @@ -83,7 +83,3 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('ROOTSYS', self.prefix) spack_env.set('ROOT_VERSION', 'v6') spack_env.prepend_path('PYTHONPATH', self.prefix.lib) - - def url_for_version(self, version): - """Handle ROOT's unusual version string.""" - return "https://root.cern.ch/download/root_v%s.source.tar.gz" % version diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py index 02b09f01265..5f0d12427c5 100644 --- a/var/spack/repos/builtin/packages/rose/package.py +++ b/var/spack/repos/builtin/packages/rose/package.py @@ -35,10 +35,11 @@ class Rose(Package): (Developed at Lawrence Livermore National Lab)""" homepage = "http://rosecompiler.org/" - url = "https://github.com/rose-compiler/edg4x-rose" + url = "https://github.com/rose-compiler/rose/archive/v0.9.7.tar.gz" + version('0.9.7', 'e14ce5250078df4b09f4f40559d46c75') version('master', branch='master', - git='https://github.com/rose-compiler/edg4x-rose.git') + git='https://github.com/rose-compiler/rose.git') patch('add_spack_compiler_recognition.patch') @@ -46,7 +47,7 @@ class Rose(Package): depends_on("automake@1.14", type='build') depends_on("libtool@2.4", type='build') depends_on("boost@1.54.0") - depends_on("jdk@8u25-linux-x64") + depends_on("jdk@8u25") def install(self, spec, prefix): # Bootstrap with autotools diff --git a/var/spack/repos/builtin/packages/rust-bindgen/package.py b/var/spack/repos/builtin/packages/rust-bindgen/package.py index c411bc15d1a..00ccbb71cf2 100644 --- a/var/spack/repos/builtin/packages/rust-bindgen/package.py +++ b/var/spack/repos/builtin/packages/rust-bindgen/package.py @@ -29,9 +29,9 @@ class RustBindgen(Package): """The rust programming language toolchain""" homepage = "http://www.rust-lang.org" - url = "https://github.com/crabtw/rust-bindgen" + url = "https://github.com/servo/rust-bindgen/archive/v0.20.5.tar.gz" - version('0.16', tag='0.16', git='https://github.com/crabtw/rust-bindgen') + version('0.20.5', '3e4d70a5bec540324fdd95bc9e82bebc') extends("rust") depends_on("llvm") diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index 6b3345d83b4..1a5a591c3ff 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -32,14 +32,11 @@ class Scorep(Package): """ homepage = "http://www.vi-hps.org/projects/score-p" - url = "http://www.vi-hps.org/upload/packages/scorep/scorep-1.2.3.tar.gz" + url = "http://www.vi-hps.org/upload/packages/scorep/scorep-2.0.2.tar.gz" - version('2.0.2', '8f00e79e1b5b96e511c5ebecd10b2888', - url='http://www.vi-hps.org/upload/packages/scorep/scorep-2.0.2.tar.gz') - version('1.4.2', '3b9a042b13bdd5836452354e6567f71e', - url='http://www.vi-hps.org/upload/packages/scorep/scorep-1.4.2.tar.gz') - version('1.3', '9db6f957b7f51fa01377a9537867a55c', - url='http://www.vi-hps.org/upload/packages/scorep/scorep-1.3.tar.gz') + version('2.0.2', '8f00e79e1b5b96e511c5ebecd10b2888') + version('1.4.2', '3b9a042b13bdd5836452354e6567f71e') + version('1.3', '9db6f957b7f51fa01377a9537867a55c') ########## # Dependencies for SCORE-P are quite tight. See the homepage for more diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index b8783494852..8efb6294871 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -31,8 +31,7 @@ class Scotch(Package): partitioning, graph clustering, and sparse matrix ordering.""" homepage = "http://www.labri.fr/perso/pelegrin/scotch/" - url = "http://gforge.inria.fr/frs/download.php/latestfile/298/scotch_6.0.3.tar.gz" # noqa: E501 - base_url = "http://gforge.inria.fr/frs/download.php/latestfile/298" + url = "http://gforge.inria.fr/frs/download.php/latestfile/298/scotch_6.0.4.tar.gz" list_url = "http://gforge.inria.fr/frs/?group_id=248" version('6.0.4', 'd58b825eb95e1db77efe8c6ff42d329f') @@ -71,12 +70,10 @@ class Scotch(Package): # from the Scotch hosting site. These alternative archives include a # superset of the behavior in their default counterparts, so we choose to # always grab these versions for older Scotch versions for simplicity. - def url_for_version(self, version): - return super(Scotch, self).url_for_version(version) - @when('@:6.0.0') def url_for_version(self, version): - return '%s/scotch_%s_esmumps.tar.gz' % (Scotch.base_url, version) + url = "http://gforge.inria.fr/frs/download.php/latestfile/298/scotch_{0}_esmumps.tar.gz" + return url.format(version) def patch(self): self.configure() diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index 6a9326517ba..eca5d1a6056 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -30,7 +30,7 @@ class Silo(Package): data to binary, disk files.""" homepage = "http://wci.llnl.gov/simulation/computer-codes/silo" - base_url = "https://wci.llnl.gov/content/assets/docs/simulation/computer-codes/silo" + url = "https://wci.llnl.gov/content/assets/docs/simulation/computer-codes/silo/silo-4.10.2/silo-4.10.2.tar.gz" version('4.10.2', '9ceac777a2f2469ac8cef40f4fab49c8') version('4.9', 'a83eda4f06761a86726e918fc55e782a') @@ -67,6 +67,3 @@ def install(self, spec, prefix): make() make('install') - - def url_for_version(self, version): - return '%s/silo-%s/silo-%s.tar.gz' % (Silo.base_url, version, version) diff --git a/var/spack/repos/builtin/packages/star-ccm-plus/package.py b/var/spack/repos/builtin/packages/star-ccm-plus/package.py index ba1516b62af..4197aec339c 100644 --- a/var/spack/repos/builtin/packages/star-ccm-plus/package.py +++ b/var/spack/repos/builtin/packages/star-ccm-plus/package.py @@ -31,6 +31,7 @@ class StarCcmPlus(Package): """STAR-CCM+ (Computational Continuum Mechanics) CFD solver.""" homepage = "http://mdx.plm.automation.siemens.com/star-ccm-plus" + url = "file://{0}/STAR-CCM+11.06.010_02_linux-x86_64.tar.gz".format(os.getcwd()) version('11.06.010_02', 'd349c6ac8293d8e6e7a53533d695588f') @@ -40,10 +41,6 @@ class StarCcmPlus(Package): license_required = True license_vars = ['CDLMD_LICENSE_FILE', 'LM_LICENSE_FILE'] - def url_for_version(self, version): - return "file://{0}/STAR-CCM+{1}_linux-x86_64.tar.gz".format( - os.getcwd(), version) - def install(self, spec, prefix): # There is a known issue with the LaunchAnywhere application. # Specifically, it cannot handle long prompts or prompts diff --git a/var/spack/repos/builtin/packages/sublime-text/package.py b/var/spack/repos/builtin/packages/sublime-text/package.py index 81d8690db85..1cfb117a051 100644 --- a/var/spack/repos/builtin/packages/sublime-text/package.py +++ b/var/spack/repos/builtin/packages/sublime-text/package.py @@ -33,8 +33,8 @@ class SublimeText(Package): homepage = "http://www.sublimetext.com/" url = "https://download.sublimetext.com/sublime_text_3_build_3126_x64.tar.bz2" - version('3126', 'acc34252b0ea7dff1f581c5db1564dcb') - version('2.0.2', '699cd26d7fe0bada29eb1b2cd7b50e4b') + version('3_build_3126', 'acc34252b0ea7dff1f581c5db1564dcb') + version('2.0.2', '699cd26d7fe0bada29eb1b2cd7b50e4b') # Sublime text comes as a pre-compiled binary. # Since we can't link to Spack packages, we'll just have to diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index 79d4bc75442..8ddfc903b3c 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -34,6 +34,7 @@ class Tcl(AutotoolsPackage): that is truly cross platform, easily deployed and highly extensible.""" homepage = "http://www.tcl.tk" + url = "http://prdownloads.sourceforge.net/tcl/tcl8.6.5-src.tar.gz" version('8.6.6', '5193aea8107839a79df8ac709552ecb7') version('8.6.5', '0e6426a4ca9401825fbc6ecf3d89a326') @@ -45,10 +46,6 @@ class Tcl(AutotoolsPackage): configure_directory = 'unix' - def url_for_version(self, version): - base_url = 'http://prdownloads.sourceforge.net/tcl' - return '{0}/tcl{1}-src.tar.gz'.format(base_url, version) - def setup_environment(self, spack_env, run_env): # When using Tkinter from within spack provided python+tk, python # will not be able to find Tcl/Tk unless TCL_LIBRARY is set. diff --git a/var/spack/repos/builtin/packages/tetgen/package.py b/var/spack/repos/builtin/packages/tetgen/package.py index 6e5ed79c36a..2ccc9504e20 100644 --- a/var/spack/repos/builtin/packages/tetgen/package.py +++ b/var/spack/repos/builtin/packages/tetgen/package.py @@ -34,7 +34,7 @@ class Tetgen(Package): boundary conforming Delaunay meshes, and Voronoi paritions. """ - homepage = "http://www.tetgen.org" + homepage = "http://wias-berlin.de/software/tetgen/" version('1.5.0', '3b9fd9cdec121e52527b0308f7aad5c1', url='http://www.tetgen.org/1.5/src/tetgen1.5.0.tar.gz') version('1.4.3', 'd6a4bcdde2ac804f7ec66c29dcb63c18', url='http://www.tetgen.org/files/tetgen1.4.3.tar.gz') diff --git a/var/spack/repos/builtin/packages/tinyxml/package.py b/var/spack/repos/builtin/packages/tinyxml/package.py index 1789d9022e5..9cb4b715df2 100644 --- a/var/spack/repos/builtin/packages/tinyxml/package.py +++ b/var/spack/repos/builtin/packages/tinyxml/package.py @@ -34,6 +34,10 @@ class Tinyxml(CMakePackage): version('2.6.2', 'cba3f50dd657cb1434674a03b21394df9913d764') + def url_for_version(self, version): + url = "https://sourceforge.net/projects/tinyxml/files/tinyxml/{0}/tinyxml_{1}.tar.gz" + return url.format(version.dotted, version.underscored) + def patch(self): copyfile(join_path(os.path.dirname(__file__), "CMakeLists.txt"), "CMakeLists.txt") diff --git a/var/spack/repos/builtin/packages/tk/package.py b/var/spack/repos/builtin/packages/tk/package.py index 4d9651315a0..fdcb29a785d 100644 --- a/var/spack/repos/builtin/packages/tk/package.py +++ b/var/spack/repos/builtin/packages/tk/package.py @@ -33,6 +33,7 @@ class Tk(AutotoolsPackage): applications that run unchanged across Windows, Mac OS X, Linux and more.""" homepage = "http://www.tcl.tk" + url = "http://prdownloads.sourceforge.net/tcl/tk8.6.5-src.tar.gz" version('8.6.6', 'dd7dbb3a6523c42d05f6ab6e86096e99') version('8.6.5', '11dbbd425c3e0201f20d6a51482ce6c4') @@ -43,10 +44,6 @@ class Tk(AutotoolsPackage): configure_directory = 'unix' - def url_for_version(self, version): - base_url = "http://prdownloads.sourceforge.net/tcl" - return "{0}/tk{1}-src.tar.gz".format(base_url, version) - def setup_environment(self, spack_env, run_env): # When using Tkinter from within spack provided python+tk, python # will not be able to find Tcl/Tk unless TK_LIBRARY is set. diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 3de72ea6c88..0e0d86fa3ce 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -44,7 +44,7 @@ class Trilinos(CMakePackage): A unique design feature of Trilinos is its focus on packages. """ homepage = "https://trilinos.org/" - base_url = "https://github.com/trilinos/Trilinos/archive" + url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-12-10-1.tar.gz" version('develop', git='https://github.com/trilinos/Trilinos.git', tag='develop') @@ -63,10 +63,6 @@ class Trilinos(CMakePackage): version('11.14.2', 'e7c3cdbbfe3279a8a68838b873ad6d51') version('11.14.1', 'b7760b142eef66c79ed13de7c9560f81') - def url_for_version(self, version): - return '%s/trilinos-release-%s.tar.gz' % \ - (Trilinos.base_url, version.dashed) - variant('xsdkflags', default=False, description='Compile using the default xSDK configuration') variant('metis', default=True, @@ -125,6 +121,10 @@ def url_for_version(self, version): patch('umfpack_from_suitesparse.patch', when='@:12.8.1') + def url_for_version(self, version): + url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz" + return url.format(version.dashed) + # check that the combination of variants makes sense def variants_check(self): if '+superlu-dist' in self.spec and self.spec.satisfies('@:11.4.3'): diff --git a/var/spack/repos/builtin/packages/unison/package.py b/var/spack/repos/builtin/packages/unison/package.py index 181e1e6410e..aa890ea8696 100644 --- a/var/spack/repos/builtin/packages/unison/package.py +++ b/var/spack/repos/builtin/packages/unison/package.py @@ -34,7 +34,7 @@ class Unison(Package): other.""" homepage = "https://www.cis.upenn.edu/~bcpierce/unison/" - url = "https://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.3.tar.gz" + url = "https://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.48.4.tar.gz" version('2.48.4', '5334b78c7e68169df7de95f4c6c4b60f') diff --git a/var/spack/repos/builtin/packages/voropp/package.py b/var/spack/repos/builtin/packages/voropp/package.py index 0e39769927b..0fc84ef252b 100644 --- a/var/spack/repos/builtin/packages/voropp/package.py +++ b/var/spack/repos/builtin/packages/voropp/package.py @@ -31,19 +31,10 @@ class Voropp(MakefilePackage): scientific fields.""" homepage = "http://math.lbl.gov/voro++/about.html" - - # This url is wrong but it passes the test the ++ make the url parser fail, - # the correct url is constructed by url_for_version that has to be used in - # any case due to the difference between the package name and the url - url = "http://math.lbl.gov/voropp/download/dir/voropp-0.4.6.tar.gz" + url = "http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz" version('0.4.6', '2338b824c3b7b25590e18e8df5d68af9') - def url_for_version(self, version): - url = "http://math.lbl.gov/voro++/download/dir/voro++-{0}.tar.gz".format( # noqa: E501 - str(version)) - return url - def edit(self, spec, prefix): filter_file(r'CC=g\+\+', 'CC={0}'.format(self.compiler.cxx), diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index c577949c3a7..dafeae6dbb4 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -33,6 +33,7 @@ class Vtk(CMakePackage): homepage = "http://www.vtk.org" url = "http://www.vtk.org/files/release/7.1/VTK-7.1.0.tar.gz" + list_url = "http://www.vtk.org/download/" version('7.1.0', 'a7e814c1db503d896af72458c2d0228f') version('7.0.0', '5fe35312db5fb2341139b8e4955c367d') diff --git a/var/spack/repos/builtin/packages/xsdktrilinos/package.py b/var/spack/repos/builtin/packages/xsdktrilinos/package.py index ea490544354..7e88b2f9eb9 100644 --- a/var/spack/repos/builtin/packages/xsdktrilinos/package.py +++ b/var/spack/repos/builtin/packages/xsdktrilinos/package.py @@ -32,16 +32,12 @@ class Xsdktrilinos(CMakePackage): Trilinos. """ homepage = "https://trilinos.org/" - base_url = "https://github.com/trilinos/xSDKTrilinos/archive" + url = "https://github.com/trilinos/xSDKTrilinos/archive/trilinos-release-12-8-1.tar.gz" version('develop', git='https://github.com/trilinos/xSDKTrilinos.git', tag='master') version('12.8.1', '9cc338ded17d1e10ea6c0dc18b22dcd4') version('12.6.4', '44c4c54ccbac73bb8939f68797b9454a') - def url_for_version(self, version): - return '%s/trilinos-release-%s.tar.gz' % \ - (Xsdktrilinos.base_url, version.dashed) - variant('hypre', default=True, description='Compile with Hypre preconditioner') variant('petsc', default=True, @@ -59,6 +55,10 @@ def url_for_version(self, version): depends_on('trilinos@12.8.1', when='@12.8.1') depends_on('trilinos@develop', when='@develop') + def url_for_version(self, version): + url = "https://github.com/trilinos/xSDKTrilinos/archive/trilinos-release-{0}.tar.gz" + return url.format(version.dashed) + def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/yorick/package.py b/var/spack/repos/builtin/packages/yorick/package.py index 52a4d8787d0..9cbd417e4ea 100644 --- a/var/spack/repos/builtin/packages/yorick/package.py +++ b/var/spack/repos/builtin/packages/yorick/package.py @@ -31,7 +31,7 @@ class Yorick(Package): """Yorick is an interpreted programming language for scientific simulations or calculations, postprocessing or steering large simulation codes, - interactive scientific graphics, and reading, writing, or translating + interactive scientific graphics, and reading, writing, or translating files of numbers. Yorick includes an interactive graphics package, and a binary file package capable of translating to and from the raw numeric formats of all modern computers. Yorick is written in ANSI C and runs on @@ -39,9 +39,9 @@ class Yorick(Package): """ homepage = "http://dhmunro.github.io/yorick-doc/" - url = "https://github.com/dhmunro/yorick/archive/y_2_2_04.tar.gz" + url = "https://github.com/dhmunro/yorick/archive/y_2_2_04.tar.gz" - version('2.2.04', md5='1b5b0da6ad81b2d9dba64d991ec17939') + version('2.2.04', '1b5b0da6ad81b2d9dba64d991ec17939') version('master', branch='master', git='https://github.com/dhmunro/yorick.git') version('f90-plugin', branch='f90-plugin', @@ -51,6 +51,10 @@ class Yorick(Package): depends_on('libx11', when='+X') + def url_for_version(self, version): + url = "https://github.com/dhmunro/yorick/archive/y_{0}.tar.gz" + return url.format(version.underscored) + def install(self, spec, prefix): os.environ['FORTRAN_LINKAGE'] = '-Df_linkage' diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py index 21c90a05e41..b6720b7b1e9 100644 --- a/var/spack/repos/builtin/packages/zoltan/package.py +++ b/var/spack/repos/builtin/packages/zoltan/package.py @@ -41,7 +41,7 @@ class Zoltan(Package): """ homepage = "http://www.cs.sandia.gov/zoltan" - base_url = "http://www.cs.sandia.gov/~kddevin/Zoltan_Distributions" + url = "http://www.cs.sandia.gov/~kddevin/Zoltan_Distributions/zoltan_distrib_v3.83.tar.gz" version('3.83', '1ff1bc93f91e12f2c533ddb01f2c095f') version('3.8', '9d8fba8a990896881b85351d4327c4a9') @@ -56,9 +56,6 @@ class Zoltan(Package): depends_on('mpi', when='+mpi') - def url_for_version(self, version): - return '%s/zoltan_distrib_v%s.tar.gz' % (Zoltan.base_url, version) - def install(self, spec, prefix): # FIXME: The older Zoltan versions fail to compile the F90 MPI wrappers # because of some complicated generic type problem. From d6a28a7401690d692ad1a24f1df2cecd6170e978 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 3 Apr 2017 18:05:45 -0500 Subject: [PATCH 0543/2394] Add IOzone package (#3679) --- .../repos/builtin/packages/iozone/package.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 var/spack/repos/builtin/packages/iozone/package.py diff --git a/var/spack/repos/builtin/packages/iozone/package.py b/var/spack/repos/builtin/packages/iozone/package.py new file mode 100644 index 00000000000..530c609f0d8 --- /dev/null +++ b/var/spack/repos/builtin/packages/iozone/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Iozone(MakefilePackage): + """IOzone is a filesystem benchmark tool. The benchmark generates and + measures a variety of file operations. Iozone has been ported to many + machines and runs under many operating systems.""" + + homepage = "http://www.iozone.org/" + url = "http://www.iozone.org/src/current/iozone3_465.tar" + + version('3_465', 'c924e5e46fb1cf8145f420e8e57eb954') + + # TODO: Add support for other architectures as necessary + build_targets = ['linux-AMD64'] + + build_directory = 'src/current' + + def edit(self, spec, prefix): + with working_dir(self.build_directory): + filter_file(r'^CC\t= cc', + r'CC\t= {0}'.format(spack_cc), + 'makefile') + + def install(self, spec, prefix): + install_tree('docs', join_path(prefix, 'docs')) + + with working_dir(self.build_directory): + install_tree('.', prefix.bin) From 508c96d04661dfc7139fd76cf9e4da61777a7c15 Mon Sep 17 00:00:00 2001 From: Justin Cook Date: Tue, 4 Apr 2017 06:50:44 -0500 Subject: [PATCH 0544/2394] Update getting_started.rst (#3685) Fixed typo referring to .bashrc file --- lib/spack/docs/getting_started.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 2460f7e54d0..971d42cea08 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -774,7 +774,7 @@ This problem is related to OpenSSL, and in some cases might be solved by installing a new version of ``git`` and ``openssl``: #. Run ``spack install git`` -#. Add the output of ``spack module loads git`` to your ``.bahsrc``. +#. Add the output of ``spack module loads git`` to your ``.bashrc``. If this doesn't work, it is also possible to disable checking of SSL certificates by using: From 8276bd75fce8b0b10a7189f345e737d2d8fe8cfa Mon Sep 17 00:00:00 2001 From: Mayeul d'Avezac Date: Tue, 4 Apr 2017 12:52:58 +0100 Subject: [PATCH 0545/2394] Update tinyxml (#3649) * Update tinyxml * url seems to have changed * spack replaces "_2_6_2" with "_2.6.2" unless the url is explicitly given * copyfile is no longuer available by default * URL version-parsing should work as of #2972 --- var/spack/repos/builtin/packages/tinyxml/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/tinyxml/package.py b/var/spack/repos/builtin/packages/tinyxml/package.py index 9cb4b715df2..45970ca4f83 100644 --- a/var/spack/repos/builtin/packages/tinyxml/package.py +++ b/var/spack/repos/builtin/packages/tinyxml/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +from shutil import copyfile import os.path @@ -30,7 +31,7 @@ class Tinyxml(CMakePackage): """Simple, small, efficient, C++ XML parser""" homepage = "http://grinninglizard.com/tinyxml/" - url = "https://sourceforge.net/projects/tinyxml/files/tinyxml/2.6.2/tinyxml_2_6_2.tar.gz" + url = "https://downloads.sourceforge.net/project/tinyxml/tinyxml/2.6.2/tinyxml_2_6_2.tar.gz" version('2.6.2', 'cba3f50dd657cb1434674a03b21394df9913d764') From 0e32369a264f1fdf5656ec24b188c77c699f51a7 Mon Sep 17 00:00:00 2001 From: Mayeul d'Avezac Date: Tue, 4 Apr 2017 12:55:02 +0100 Subject: [PATCH 0546/2394] Cppcheck (#3684) * Adds cppcheck version 1.72 * cppcheck installation requires cfg files Without these files, cppcheck does not work correctly --- var/spack/repos/builtin/packages/cppcheck/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cppcheck/package.py b/var/spack/repos/builtin/packages/cppcheck/package.py index fd48fcb7e30..254674c7bfd 100644 --- a/var/spack/repos/builtin/packages/cppcheck/package.py +++ b/var/spack/repos/builtin/packages/cppcheck/package.py @@ -23,6 +23,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import os +import shutil class Cppcheck(Package): @@ -30,11 +32,13 @@ class Cppcheck(Package): homepage = "http://cppcheck.sourceforge.net/" url = "http://downloads.sourceforge.net/project/cppcheck/cppcheck/1.68/cppcheck-1.68.tar.bz2" + version('1.72', '2bd36f91ae0191ef5273bb7f6dc0d72e') version('1.68', 'c015195f5d61a542f350269030150708') def install(self, spec, prefix): # cppcheck does not have a configure script - make() + make("CFGDIR=%s" % os.path.join(prefix, 'cfg')) # manually install the final cppcheck binary mkdirp(prefix.bin) install('cppcheck', prefix.bin) + shutil.copytree('cfg', os.path.join(prefix, 'cfg')) From 7de6a28b1573941723ebca205f6e38f5dae312f8 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Tue, 4 Apr 2017 13:56:44 +0200 Subject: [PATCH 0547/2394] Update SymEngine package to enable build against LLVM (#3682) --- var/spack/repos/builtin/packages/symengine/package.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/symengine/package.py b/var/spack/repos/builtin/packages/symengine/package.py index e3c00f849ae..136575e48c7 100644 --- a/var/spack/repos/builtin/packages/symengine/package.py +++ b/var/spack/repos/builtin/packages/symengine/package.py @@ -40,16 +40,18 @@ class Symengine(CMakePackage): description='Compile with Boost multi-precision integer library') variant('flint', default=False, description='Compile with Flint integer library') + variant('llvm', default=False, + description='Compile with LLVM JIT compiler support') variant('mpc', default=True, description='Compile with MPC library') variant('mpfr', default=True, description='Compile with MPFR library') + variant('openmp', default=False, + description='Enable OpenMP support') variant('piranha', default=False, description='Compile with Piranha integer library') variant('thread_safe', default=True, description='Enable thread safety option') - variant('openmp', default=False, - description='Enable OpenMP support') variant('shared', default=True, description='Enables the build of shared libraries') @@ -61,6 +63,7 @@ class Symengine(CMakePackage): # NOTE: [mpc,mpfr,flint,piranha] could also be built against mpir depends_on('boost', when='+boostmp') depends_on('gmp', when='~boostmp') + depends_on('llvm', when='+llvm') depends_on('mpc', when='+mpc~boostmp') depends_on('mpfr', when='+mpfr~boostmp') depends_on('flint', when='+flint~boostmp') @@ -84,6 +87,8 @@ def cmake_args(self): '-DBUILD_TESTS:BOOL=%s' % ( 'ON' if self.run_tests else 'OFF'), '-DBUILD_BENCHMARKS:BOOL=ON', + '-DWITH_LLVM:BOOL=%s' % ( + 'ON' if '+llvm' in spec else 'OFF'), '-DWITH_OPENMP:BOOL=%s' % ( 'ON' if '+openmp' in spec else 'OFF'), '-DBUILD_SHARED_LIBS:BOOL=%s' % ( From 20f388cebdc57dd246732c8295187342ec878f6b Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 4 Apr 2017 16:03:11 +0200 Subject: [PATCH 0548/2394] Fixes #3675: Abinit: invalid spec on concretization #(3686) --- lib/spack/spack/spec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index b6089c7849c..deb650a990c 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2248,7 +2248,7 @@ def satisfies(self, other, deps=True, strict=False, strict_deps=False): # If we need to descend into dependencies, do it, otherwise we're done. if deps: deps_strict = strict - if self.concrete and not other.name: + if self._concrete and not other.name: # We're dealing with existing specs deps_strict = True return self.satisfies_dependencies(other, strict=deps_strict) From 0dbeeab70e5175a5a871c43cd0f2b844fbd406fc Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 4 Apr 2017 18:39:26 +0200 Subject: [PATCH 0549/2394] intel-mkl: add 2017.2 (#3687) * intel-mkl: add 2017.2 * intel-mkl: add urls, update docstring --- .../builtin/packages/intel-mkl/package.py | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 5e108a0867a..59b66d63add 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -29,26 +29,18 @@ class IntelMkl(IntelInstaller): - """Intel Math Kernel Library. - - 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://spack.readthedocs.io/en/latest/mirrors.html. - - To set the threading layer at run time set MKL_THREADING_LAYER - variable to one of the following values: INTEL (default), SEQUENTIAL, PGI. - To set interface layer at run time, use set the MKL_INTERFACE_LAYER - variable to LP64 (default) or ILP64. - """ + """Intel Math Kernel Library.""" homepage = "https://software.intel.com/en-us/intel-mkl" + version('2017.2.174', 'ef39a12dcbffe5f4a0ef141b8759208c', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11306/l_mkl_2017.2.174.tgz") version('2017.0.098', '3cdcb739ab5ab1e047eb130b9ffdd8d0', - url="file://%s/l_mkl_2017.0.098.tgz" % os.getcwd()) - version('11.3.2.181', '536dbd82896d6facc16de8f961d17d65', - url="file://%s/l_mkl_11.3.2.181.tgz" % os.getcwd()) + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9662/l_mkl_2017.0.098.tgz") version('11.3.3.210', 'f72546df27f5ebb0941b5d21fd804e34', - url="file://%s/l_mkl_11.3.3.210.tgz" % os.getcwd()) + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9068/l_mkl_11.3.3.210.tgz") + version('11.3.2.181', '536dbd82896d6facc16de8f961d17d65', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8711/l_mkl_11.3.2.181.tgz") variant('shared', default=True, description='Builds shared library') variant('ilp64', default=False, description='64 bit integers') From 3c578620849137940b1cf3af0be99091f66d2cd1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 4 Apr 2017 13:26:08 -0500 Subject: [PATCH 0550/2394] Add fio package (#3689) --- .../repos/builtin/packages/fio/package.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 var/spack/repos/builtin/packages/fio/package.py diff --git a/var/spack/repos/builtin/packages/fio/package.py b/var/spack/repos/builtin/packages/fio/package.py new file mode 100644 index 00000000000..09554968ef4 --- /dev/null +++ b/var/spack/repos/builtin/packages/fio/package.py @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Fio(AutotoolsPackage): + """Flexible I/O Tester.""" + + homepage = "https://github.com/axboe/fio" + url = "https://github.com/axboe/fio/archive/fio-2.19.tar.gz" + + version('2.19', '67125b60210a4daa689a4626fc66c612') + + variant('gui', default=False, description='Enable building of gtk gfio') + variant('doc', default=False, description='Generate documentation') + + depends_on('gtkplus@2.18:', when='+gui') + depends_on('cairo', when='+gui') + + depends_on('py-sphinx', type='build', when='+doc') + + def configure_args(self): + config_args = [] + + if '+gui' in self.spec: + config_args.append('--enable-gfio') + + return config_args + + @run_after('build') + def build_docs(self): + if '+doc' in self.spec: + make('-C', 'doc', 'html') + make('-C', 'doc', 'man') From 3866dba2650114e0a50b66def40da02cba531758 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 4 Apr 2017 15:00:35 -0500 Subject: [PATCH 0551/2394] Convert STREAM to MakefilePackage (#3692) --- var/spack/repos/builtin/packages/stream/package.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/stream/package.py b/var/spack/repos/builtin/packages/stream/package.py index 8b3f32af8a8..7e240713566 100644 --- a/var/spack/repos/builtin/packages/stream/package.py +++ b/var/spack/repos/builtin/packages/stream/package.py @@ -25,7 +25,7 @@ from spack import * -class Stream(Package): +class Stream(MakefilePackage): """The STREAM benchmark is a simple synthetic benchmark program that measures sustainable memory bandwidth (in MB/s) and the corresponding computation rate for simple vector kernels.""" @@ -36,7 +36,7 @@ class Stream(Package): variant('openmp', default=False, description='Build with OpenMP support') - def patch(self): + def edit(self, spec, prefix): makefile = FileFilter('Makefile') # Use the Spack compiler wrappers @@ -54,8 +54,6 @@ def patch(self): makefile.filter('FFLAGS = .*', 'FFLAGS = {0}'.format(fflags)) def install(self, spec, prefix): - make() - # Manual installation mkdir(prefix.bin) install('stream_c.exe', prefix.bin) From 0038ea84a1c5e105cdc171b04c7369cdf9b5bd9f Mon Sep 17 00:00:00 2001 From: scheibelp Date: Tue, 4 Apr 2017 15:03:52 -0700 Subject: [PATCH 0552/2394] Avoid null reference in arch concretization (#2596) Fixes #2587 The concretizer falls back on using the root architecture (followed by the default system architecture) to fill in unspecified arch properties for a spec. It failed to check cases where the root could be None. --- lib/spack/spack/concretize.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 6c230a151b7..2a5ce65fa41 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -222,9 +222,10 @@ def concretize_architecture(self, spec): spec.architecture = spack.spec.ArchSpec(sys_arch) spec_changed = True - default_archs = [root_arch, sys_arch] - while not spec.architecture.concrete and default_archs: - arch = default_archs.pop(0) + default_archs = list(x for x in [root_arch, sys_arch] if x) + for arch in default_archs: + if spec.architecture.concrete: + break replacement_fields = [k for k, v in iteritems(arch.to_cmp_dict()) if v and not getattr(spec.architecture, k)] @@ -232,6 +233,9 @@ def concretize_architecture(self, spec): setattr(spec.architecture, field, getattr(arch, field)) spec_changed = True + if not spec.architecture.concrete: + raise InsufficientArchitectureInfoError(spec, default_archs) + return spec_changed def concretize_variants(self, spec): @@ -466,6 +470,17 @@ def __init__(self, spec): % (spec.name, spec.versions)) +class InsufficientArchitectureInfoError(spack.error.SpackError): + + """Raised when details on architecture cannot be collected from the + system""" + + def __init__(self, spec, archs): + super(InsufficientArchitectureInfoError, self).__init__( + "Cannot determine necessary architecture information for '%s': %s" + % (spec.name, str(archs))) + + class NoBuildError(spack.error.SpackError): """Raised when a package is configured with the buildable option False, but no satisfactory external versions can be found""" From 46f25a4e0a43ea1ea8e1aaddbcdf18f6f20badba Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 4 Apr 2017 16:05:28 -0700 Subject: [PATCH 0553/2394] Add package for open source Shiny Server (#3688) * The beginnings of a package for shiny-server Just stashing a WIP. This doesn't work. This goes for a while and/but blows up with some OpenSSL related issue. * Make it work! Yay! * shiny-server needs R with X support My environment gets this for "free" from my packages.yaml, but it should be explicity. * Address feedback - python version - gcc dependency - Flake8 comment rules * Richer caveats and warnings. * Convert to CMakePackage and fix python version typo * Fix typo: noqab -> noqa * Ensure proper build location, clean up comments --- .../builtin/packages/shiny-server/package.py | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 var/spack/repos/builtin/packages/shiny-server/package.py diff --git a/var/spack/repos/builtin/packages/shiny-server/package.py b/var/spack/repos/builtin/packages/shiny-server/package.py new file mode 100644 index 00000000000..941921c795d --- /dev/null +++ b/var/spack/repos/builtin/packages/shiny-server/package.py @@ -0,0 +1,77 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class ShinyServer(CMakePackage): + """Shiny server lets you put shiny web applications and interactive + documents online. Take your shiny apps and share them with your + organization or the world.""" + + # + # HEADS UP: + # 1. The shiny server installation step will download various node + # and npm bits from the net. They seem to have them well + # constrained ("npm shrinkwrap"?), but this package is not + # "air gappable". + # 2. Docs say that it requires 'gcc'. depends_on() won't do the + # right thing, it's Up To You. + # + homepage = "https://www.rstudio.com/products/shiny/shiny-server/" + url = "https://github.com/rstudio/shiny-server/archive/v1.5.3.838.tar.gz" + + version('1.5.3.838', '96f20fdcdd94c9e9bb851baccb82b97f') + + depends_on('python@:2.9.99') # docs say: "Really. 3.x will not work" + depends_on('cmake@2.8.10:') + depends_on('git') + depends_on('r+X') + depends_on('openssl') + + def cmake_args(self): + spec = self.spec + options = [] + + options.extend([ + "-DPYTHON=%s" % join_path(spec['python'].prefix.bin, 'python'), + ]) + + return options + + # Recompile the npm modules included in the project + @run_after('build') + def build_node(self): + bash = which('bash') + mkdirp('build') + bash('-c', 'bin/npm --python="$PYTHON" install') + bash('-c', 'bin/node ./ext/node/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js --python="$PYTHON" rebuild') # noqa: E501 + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PATH', + join_path(self.prefix, 'shiny-server', 'bin')) + # shiny comes with its own pandoc; hook it up... + run_env.prepend_path('PATH', + join_path(self.prefix, 'shiny-server', + 'ext', 'pandoc', 'static')) From 95c3cff6be794881980e5c218567f7cc5fbd5ed3 Mon Sep 17 00:00:00 2001 From: Paul Hopkins Date: Thu, 3 Nov 2016 07:49:51 +0000 Subject: [PATCH 0554/2394] Allow installation directory layout to be configured using either hash length parameter or spec formatting. --- lib/spack/docs/config_yaml.rst | 37 ++++++++++++++++++++ lib/spack/spack/directory_layout.py | 44 ++++++++++++++---------- lib/spack/spack/schema/config.py | 2 ++ lib/spack/spack/spec.py | 4 +-- lib/spack/spack/store.py | 4 ++- lib/spack/spack/test/directory_layout.py | 43 ++++++++++++++++++++++- 6 files changed, 112 insertions(+), 22 deletions(-) diff --git a/lib/spack/docs/config_yaml.rst b/lib/spack/docs/config_yaml.rst index 56aa6ed0a18..197bf5c530a 100644 --- a/lib/spack/docs/config_yaml.rst +++ b/lib/spack/docs/config_yaml.rst @@ -42,6 +42,43 @@ or with braces to distinguish the variable from surrounding characters: The location where Spack will install packages and their dependencies. Default is ``$spack/opt/spack``. +--------------------------------------------------- +``install_hash_length`` and ``install_path_scheme`` +--------------------------------------------------- + +The default Spack installation path can be very long and can create +problems for scripts with hardcoded shebangs. There are two parameters +to help with that. Firstly, the ``install_hash_length`` parameter can +set the length of the hash in the installation path from 1 to 32. The +default path uses the full 32 characters. + +Secondly, it is +also possible to modify the entire installation scheme. By default +Spack uses +``${ARCHITECTURE}/${COMPILERNAME}-${COMPILERVER}/${PACKAGE}-${VERSION}-${HASH}`` +where the tokens that are available for use in this directive are the +same as those understood by the ``Spec.format`` method. Using this parameter it +is possible to use a different package layout or reduce the depth of +the installation paths. For example + + .. code-block:: yaml + + config: + install_path_scheme: '${PACKAGE}/${VERSION}/${HASH:7}' + +would install packages into sub-directories using only the package +name, version and a hash length of 7 characters. + +When using either parameter to set the hash length it only affects the +representation of the hash in the installation directory. You +should be aware that the smaller the hash length the more likely +naming conflicts will occur. These parameters are independent of those +used to configure module names. + +.. warning:: Modifying the installation hash length or path scheme after + packages have been installed will prevent Spack from being + able to find the old installation directories. + -------------------- ``module_roots`` -------------------- diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index 28e6584fb21..b84ee3be5b9 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -28,6 +28,7 @@ import glob import tempfile import yaml +import re from llnl.util.filesystem import join_path, mkdirp @@ -150,24 +151,31 @@ def remove_install_directory(self, spec): class YamlDirectoryLayout(DirectoryLayout): - """Lays out installation directories like this:: + """By default lays out installation directories like this:: / / -/ - --- + -- The hash here is a SHA-1 hash for the full DAG plus the build spec. TODO: implement the build spec. - To avoid special characters (like ~) in the directory name, - only enabled variants are included in the install path. - Disabled variants are omitted. + The installation directory scheme can be modified with the + arguments hash_len and path_scheme. """ def __init__(self, root, **kwargs): super(YamlDirectoryLayout, self).__init__(root) self.metadata_dir = kwargs.get('metadata_dir', '.spack') - self.hash_len = kwargs.get('hash_len', None) + self.hash_len = kwargs.get('hash_len') + self.path_scheme = kwargs.get('path_scheme') or ( + "${ARCHITECTURE}/${COMPILERNAME}-${COMPILERVER}/${PACKAGE}-${VERSION}-${HASH}") # NOQA: E501 + if self.hash_len is not None: + if re.search('\${HASH:\d+}', self.path_scheme): + raise InvalidDirectoryLayoutParametersError( + "Conflicting options for installation layout hash length") + self.path_scheme = self.path_scheme.replace( + "${HASH}", "${HASH:%d}" % self.hash_len) self.spec_file_name = 'spec.yaml' self.extension_file_name = 'extensions.yaml' @@ -188,16 +196,7 @@ def relative_path_for_spec(self, spec): if spec.external: return spec.external - dir_name = "%s-%s-%s" % ( - spec.name, - spec.version, - spec.dag_hash(self.hash_len)) - - path = join_path( - spec.architecture, - "%s-%s" % (spec.compiler.name, spec.compiler.version), - dir_name) - + path = spec.format(self.path_scheme) return path def write_spec(self, spec, path): @@ -285,8 +284,9 @@ def all_specs(self): if not os.path.isdir(self.root): return [] - pattern = join_path( - self.root, '*', '*', '*', self.metadata_dir, self.spec_file_name) + path_elems = ["*"] * len(self.path_scheme.split(os.sep)) + path_elems += [self.metadata_dir, self.spec_file_name] + pattern = join_path(self.root, *path_elems) spec_files = glob.glob(pattern) return [self.read_spec(s) for s in spec_files] @@ -447,6 +447,14 @@ class SpecReadError(DirectoryLayoutError): """Raised when directory layout can't read a spec.""" +class InvalidDirectoryLayoutParametersError(DirectoryLayoutError): + """Raised when a invalid directory layout parameters are supplied""" + + def __init__(self, message, long_msg=None): + super(InvalidDirectoryLayoutParametersError, self).__init__( + message, long_msg) + + class InvalidExtensionSpecError(DirectoryLayoutError): """Raised when an extension file has a bad spec in it.""" diff --git a/lib/spack/spack/schema/config.py b/lib/spack/spack/schema/config.py index e51fa69afe4..7a41c0e14ae 100644 --- a/lib/spack/spack/schema/config.py +++ b/lib/spack/spack/schema/config.py @@ -41,6 +41,8 @@ 'additionalProperties': False, 'properties': { 'install_tree': {'type': 'string'}, + 'install_hash_length': {'type': 'integer', 'minimum': 1}, + 'install_path_scheme': {'type': 'string'}, 'build_stage': { 'oneOf': [ {'type': 'string'}, diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 9fc2c99e4ad..b2fae9fd8e4 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2687,7 +2687,7 @@ def write(s, c): write(fmt % str(self.variants), '+') elif named_str == 'ARCHITECTURE': if self.architecture and str(self.architecture): - write(fmt % str(self.architecture) + ' ', ' arch=') + write(fmt % str(self.architecture), ' arch=') elif named_str == 'SHA1': if self.dependencies: out.write(fmt % str(self.dag_hash(7))) @@ -2703,7 +2703,7 @@ def write(s, c): hashlen = int(hashlen) else: hashlen = None - out.write('/' + fmt % (self.dag_hash(hashlen))) + out.write(fmt % (self.dag_hash(hashlen))) named = False diff --git a/lib/spack/spack/store.py b/lib/spack/spack/store.py index 3f559315d2c..4a5c8d18a75 100644 --- a/lib/spack/spack/store.py +++ b/lib/spack/spack/store.py @@ -72,4 +72,6 @@ # This controls how spack lays out install prefixes and # stage directories. # -layout = YamlDirectoryLayout(root) +layout = YamlDirectoryLayout(root, + hash_len=config.get('install_hash_length'), + path_scheme=config.get('install_path_scheme')) diff --git a/lib/spack/spack/test/directory_layout.py b/lib/spack/spack/test/directory_layout.py index 2caadad0fe7..1987bb3a44b 100644 --- a/lib/spack/spack/test/directory_layout.py +++ b/lib/spack/spack/test/directory_layout.py @@ -29,7 +29,8 @@ import pytest import spack -from spack.directory_layout import YamlDirectoryLayout +from spack.directory_layout import (YamlDirectoryLayout, + InvalidDirectoryLayoutParametersError) from spack.repository import RepoPath from spack.spec import Spec @@ -43,6 +44,46 @@ def layout_and_dir(tmpdir): yield YamlDirectoryLayout(str(tmpdir)), str(tmpdir) +def test_yaml_directory_layout_parameters( + tmpdir, config +): + """This tests the various parameters that can be used to configure + the install location """ + spec = Spec('python') + spec.concretize() + + # Ensure default layout matches expected spec format + layout_default = YamlDirectoryLayout(str(tmpdir)) + path_default = layout_default.relative_path_for_spec(spec) + assert(path_default == + spec.format("${ARCHITECTURE}/${COMPILERNAME}-${COMPILERVER}/${PACKAGE}-${VERSION}-${HASH}")) # NOQA: ignore=E501 + + # Test hash_length parameter works correctly + layout_10 = YamlDirectoryLayout(str(tmpdir), hash_len=10) + path_10 = layout_10.relative_path_for_spec(spec) + layout_7 = YamlDirectoryLayout(str(tmpdir), hash_len=7) + path_7 = layout_7.relative_path_for_spec(spec) + + assert(len(path_default) - len(path_10) == 22) + assert(len(path_default) - len(path_7) == 25) + + # Test path_scheme + arch, compiler, package7 = path_7.split('/') + scheme_package7 = "${PACKAGE}-${VERSION}-${HASH:7}" + + layout_package7 = YamlDirectoryLayout(str(tmpdir), + path_scheme=scheme_package7) + path_package7 = layout_package7.relative_path_for_spec(spec) + + assert(package7 == path_package7) + + # Ensure conflicting parameters caught + with pytest.raises(InvalidDirectoryLayoutParametersError): + YamlDirectoryLayout(str(tmpdir), + hash_len=20, + path_scheme=scheme_package7) + + def test_read_and_write_spec( layout_and_dir, config, builtin_mock ): From 70372ddcd79773a88dad09e6c2678655ec37bd89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Wed, 5 Apr 2017 20:59:18 +0800 Subject: [PATCH 0555/2394] Add versions 3.2.0 3.1.0 for protobuf. (#3698) --- .../repos/builtin/packages/protobuf/package.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index 34d167b28c9..e8010a496b1 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -29,12 +29,14 @@ class Protobuf(AutotoolsPackage): """Google's data interchange format.""" homepage = "https://developers.google.com/protocol-buffers" - url = "https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.bz2" + url = "https://github.com/google/protobuf/archive/v3.2.0.tar.gz" - version('3.0.2', '845b39e4b7681a2ddfd8c7f528299fbb', url='https://github.com/google/protobuf/archive/v3.0.2.tar.gz') - version('2.5.0', 'a72001a9067a4c2c4e0e836d0f92ece4') + version('3.2.0', '61d899b8369781f6dd1e62370813392d') + version('3.1.0', '14a532a7538551d5def317bfca41dace') + version('3.0.2', '845b39e4b7681a2ddfd8c7f528299fbb') + version('2.5.0', '9c21577a03adc1879aba5b52d06e25cf') - depends_on('m4', when='@3.0.2:') - depends_on('autoconf', when='@3.0.2:') - depends_on('automake', when='@3.0.2:') - depends_on('libtool', when='@3.0.2:') + depends_on('automake', type='build') + depends_on('autoconf', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') From cd1c88c519a7079b2cef752473e5da3ddb4224e3 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 5 Apr 2017 11:48:56 -0500 Subject: [PATCH 0556/2394] Add stress package (#3695) --- .../repos/builtin/packages/stress/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/stress/package.py diff --git a/var/spack/repos/builtin/packages/stress/package.py b/var/spack/repos/builtin/packages/stress/package.py new file mode 100644 index 00000000000..81bf2bd9a47 --- /dev/null +++ b/var/spack/repos/builtin/packages/stress/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Stress(AutotoolsPackage): + """stress is a deliberately simple workload generator for POSIX systems. + It imposes a configurable amount of CPU, memory, I/O, and disk stress on + the system. It is written in C, and is free software licensed under the + GPLv2.""" + + homepage = "https://people.seas.harvard.edu/~apw/stress/" + url = "https://people.seas.harvard.edu/~apw/stress/stress-1.0.4.tar.gz" + + version('1.0.4', '890a4236dd1656792f3ef9a190cf99ef') From 9dcd6052cb004324472ccd5c21d7f337cbed9f23 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Wed, 5 Apr 2017 20:59:26 +0200 Subject: [PATCH 0557/2394] Fix ncl (#3708) - Add patch to make ncl compile with hdf5 1.10. - Add missing dependencies to make ncl compile without errors. --- var/spack/repos/builtin/packages/ncl/hdf5.patch | 11 +++++++++++ var/spack/repos/builtin/packages/ncl/package.py | 13 ++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/ncl/hdf5.patch diff --git a/var/spack/repos/builtin/packages/ncl/hdf5.patch b/var/spack/repos/builtin/packages/ncl/hdf5.patch new file mode 100644 index 00000000000..ff8b586b4f6 --- /dev/null +++ b/var/spack/repos/builtin/packages/ncl/hdf5.patch @@ -0,0 +1,11 @@ +--- a/ni/src/ncl/NclNewHDF5.c 2017-04-05 12:57:52.311104685 +0200 ++++ b/ni/src/ncl/NclNewHDF5.c 2017-04-05 12:58:17.634551443 +0200 +@@ -35,6 +35,8 @@ + #include + #include + ++#define H5_USE_18_API ++ + #include + + #ifdef NIO_LIB_ONLY diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index b7394cff320..78c5bf1ce20 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -39,7 +39,10 @@ class Ncl(Package): version('6.4.0', 'a981848ddcaf1c263279648265f24766', url='https://www.earthsystemgrid.org/download/fileDownload.html?logicalFileId=86b9bec2-fa01-11e6-a976-00c0f03d5b7c', extension='tar.gz') + patch('spack_ncl.patch') + # Make ncl compile with hdf5 1.10 + patch('hdf5.patch') # This installation script is implemented according to this manual: # http://www.ncl.ucar.edu/Download/build_from_src.shtml @@ -58,12 +61,20 @@ class Ncl(Package): # Also, the manual says that ncl requires zlib, but that comes as a # mandatory dependency of libpng, which is a mandatory dependency of cairo. + # The following dependencies are required, otherwise several components + # fail to compile: + depends_on('curl') + depends_on('libiconv') + depends_on('libx11') + depends_on('libxaw') + depends_on('libxmu') + # In Spack, we do not have an option to compile netcdf without netcdf-4 # support, so we will tell the ncl configuration script that we want # support for netcdf-4, but the script assumes that hdf5 is compiled with # szip support. We introduce this restriction with the following dependency # statement. - depends_on('hdf5@:1.8+szip') + depends_on('hdf5+szip') # In Spack, we also do not have an option to compile netcdf without DAP # support, so we will tell the ncl configuration script that we have it. From a8137648749abbd517106bb98ec6b291c6215499 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Wed, 5 Apr 2017 21:50:42 +0200 Subject: [PATCH 0558/2394] Fix libxpm (#3704) It tries to use gettext but fails because it does not explicitly link against libintl. --- var/spack/repos/builtin/packages/libxpm/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/libxpm/package.py b/var/spack/repos/builtin/packages/libxpm/package.py index cfb269db7f9..ea30a1c7414 100644 --- a/var/spack/repos/builtin/packages/libxpm/package.py +++ b/var/spack/repos/builtin/packages/libxpm/package.py @@ -37,8 +37,13 @@ class Libxpm(AutotoolsPackage): version('3.5.8', '2d81d6633e67ac5562e2fbee126b2897') version('3.5.7', '7bbc8f112f7143ed6961a58ce4e14558') + depends_on('gettext') depends_on('libx11') depends_on('xproto', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') + + def setup_environment(self, spack_env, run_env): + spack_env.set('LDFLAGS', '-L{0} -lintl'.format( + self.spec['gettext'].prefix.lib)) From aa63bc6f34eaa2f1329bb28ce6a312ee6a6313ea Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 5 Apr 2017 21:54:40 +0200 Subject: [PATCH 0559/2394] update versions for scalasca and related tools (#3697) - clean up fetch urls - inherit from AutotoolsPackage instead of Package - explicit fPIC flags look suspicious, but leave them in there. - in scalasca, use the cube version that is implicit from the scorep dependency instead of specifying it twice. --- .../repos/builtin/packages/opari2/package.py | 16 +++----- .../repos/builtin/packages/otf2/package.py | 29 ++++--------- .../builtin/packages/scalasca/package.py | 37 +++++++++-------- .../repos/builtin/packages/scorep/package.py | 41 +++++++++++-------- 4 files changed, 59 insertions(+), 64 deletions(-) diff --git a/var/spack/repos/builtin/packages/opari2/package.py b/var/spack/repos/builtin/packages/opari2/package.py index 20c67716a43..cbe515ffe9c 100644 --- a/var/spack/repos/builtin/packages/opari2/package.py +++ b/var/spack/repos/builtin/packages/opari2/package.py @@ -25,7 +25,7 @@ from spack import * -class Opari2(Package): +class Opari2(AutotoolsPackage): """OPARI2 is a source-to-source instrumentation tool for OpenMP and hybrid codes. It surrounds OpenMP directives and runtime library calls with calls to the POMP2 measurement interface. OPARI2 will provide you with a new @@ -39,14 +39,10 @@ class Opari2(Package): homepage = "http://www.vi-hps.org/projects/score-p" url = "http://www.vi-hps.org/upload/packages/opari2/opari2-1.1.2.tar.gz" - version('2.0', '72350dbdb6139f2e68a5055a4f0ba16c', - url='http://www.vi-hps.org/upload/packages/opari2/opari2-2.0.tar.gz') - version('1.1.4', '245d3d11147a06de77909b0805f530c0', - url='http://www.vi-hps.org/upload/packages/opari2/opari2-1.1.4.tar.gz') + version('2.0.1', '74af78f1f27b8caaa4271e0b97fb0fba') + version('2.0', '72350dbdb6139f2e68a5055a4f0ba16c') + version('1.1.4', '245d3d11147a06de77909b0805f530c0') version('1.1.2', '9a262c7ca05ff0ab5f7775ae96f3539e') - def install(self, spec, prefix): - configure("--prefix=%s" % prefix, - "--enable-shared") - make() - make("install") + def configure_args(self): + return ["--enable-shared"] diff --git a/var/spack/repos/builtin/packages/otf2/package.py b/var/spack/repos/builtin/packages/otf2/package.py index ee39f448eb7..3a52d16fa6a 100644 --- a/var/spack/repos/builtin/packages/otf2/package.py +++ b/var/spack/repos/builtin/packages/otf2/package.py @@ -26,30 +26,19 @@ from spack import * -class Otf2(Package): +class Otf2(AutotoolsPackage): """The Open Trace Format 2 is a highly scalable, memory efficient event trace data format plus support library. """ - homepage = "http://www.vi-hps.org/score-p" + homepage = "http://www.vi-hps.org/projects/score-p" url = "http://www.vi-hps.org/upload/packages/otf2/otf2-1.4.tar.gz" - version('2.0', '5b546188b25bc1c4e285e06dddf75dfc', - url="http://www.vi-hps.org/upload/packages/otf2/otf2-2.0.tar.gz") - version('1.5.1', '16a9df46e0da78e374f5d12c8cdc1109', - url='http://www.vi-hps.org/upload/packages/otf2/otf2-1.5.1.tar.gz') - version('1.4', 'a23c42e936eb9209c4e08b61c3cf5092', - url="http://www.vi-hps.org/upload/packages/otf2/otf2-1.4.tar.gz") - version('1.3.1', 'd0ffc4e858455ace4f596f910e68c9f2', - url="http://www.vi-hps.org/upload/packages/otf2/otf2-1.3.1.tar.gz") - version('1.2.1', '8fb3e11fb7489896596ae2c7c83d7fc8', - url="http://www.vi-hps.org/upload/packages/otf2/otf2-1.2.1.tar.gz") + version('2.0', '5b546188b25bc1c4e285e06dddf75dfc') + version('1.5.1', '16a9df46e0da78e374f5d12c8cdc1109') + version('1.4', 'a23c42e936eb9209c4e08b61c3cf5092') + version('1.3.1', 'd0ffc4e858455ace4f596f910e68c9f2') + version('1.2.1', '8fb3e11fb7489896596ae2c7c83d7fc8') - def install(self, spec, prefix): - configure_args = ["--prefix=%s" % prefix, - "--enable-shared", - "CFLAGS=-fPIC", - "CXXFLAGS=-fPIC"] - configure(*configure_args) - make() - make("install") + def configure_args(self): + return ["--enable-shared", "CFLAGS=-fPIC", "CXXFLAGS=-fPIC"] diff --git a/var/spack/repos/builtin/packages/scalasca/package.py b/var/spack/repos/builtin/packages/scalasca/package.py index 228d814aed2..a1f53973b7f 100644 --- a/var/spack/repos/builtin/packages/scalasca/package.py +++ b/var/spack/repos/builtin/packages/scalasca/package.py @@ -26,7 +26,7 @@ from spack import * -class Scalasca(Package): +class Scalasca(AutotoolsPackage): """Scalasca is a software tool that supports the performance optimization of parallel programs by measuring and analyzing their runtime behavior. The analysis identifies potential performance @@ -38,11 +38,9 @@ class Scalasca(Package): homepage = "http://www.scalasca.org" url = "http://apps.fz-juelich.de/scalasca/releases/scalasca/2.1/dist/scalasca-2.1.tar.gz" - version('2.2.2', '2bafce988b0522d18072f7771e491ab9', - url='http://apps.fz-juelich.de/scalasca/releases/scalasca/2.2/dist/scalasca-2.2.2.tar.gz') - - version('2.1', 'bab9c2b021e51e2ba187feec442b96e6', - url='http://apps.fz-juelich.de/scalasca/releases/scalasca/2.1/dist/scalasca-2.1.tar.gz') + version('2.3.1', 'a83ced912b9d2330004cb6b9cefa7585') + version('2.2.2', '2bafce988b0522d18072f7771e491ab9') + version('2.1', 'bab9c2b021e51e2ba187feec442b96e6') depends_on("mpi") ########## @@ -50,17 +48,24 @@ class Scalasca(Package): # release page # The OTF2 library path should be detected automatically from SCOREP # SCALASCA 2.2.2 - depends_on("scorep@1.4:", when='@2.2.2') - depends_on("cube@4.3:", when='@2.2.2') + depends_on("scorep@1.4:", when='@2.2.2:') + # Use same cube as scorep does + # -> depends_on("cube@4.3:", when='@2.2.2:') # SCALASCA 2.1 depends_on("scorep@1.3", when='@2.1') - depends_on("cube@4.2:", when='@2.1') + # Use same cube as scorep does + # -> depends_on("cube@4.2:", when='@2.1') ########## - def install(self, spec, prefix): - configure_args = ["--prefix=%s" % prefix, - "--with-cube=%s" % spec['cube'].prefix.bin, - "--enable-shared"] - configure(*configure_args) - make() - make("install") + def url_for_version(self, version): + return 'http://apps.fz-juelich.de/scalasca/releases/scalasca/{0}/dist/scalasca-{1}.tar.gz'.format(version.up_to(2), version) + + def configure_args(self): + spec = self.spec + + config_args = ["--enable-shared"] + + if 'cube' in spec: # From scorep dependency + config_args.append("--with-cube=%s" % spec['cube'].prefix.bin) + + return config_args diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index 1a5a591c3ff..d34ad072ee1 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -25,7 +25,7 @@ from spack import * -class Scorep(Package): +class Scorep(AutotoolsPackage): """The Score-P measurement infrastructure is a highly scalable and easy-to-use tool suite for profiling, event tracing, and online analysis of HPC applications. @@ -34,6 +34,7 @@ class Scorep(Package): homepage = "http://www.vi-hps.org/projects/score-p" url = "http://www.vi-hps.org/upload/packages/scorep/scorep-2.0.2.tar.gz" + version('3.0', '44da8beaa3f71436a5f6fe51938aab2f') version('2.0.2', '8f00e79e1b5b96e511c5ebecd10b2888') version('1.4.2', '3b9a042b13bdd5836452354e6567f71e') version('1.3', '9db6f957b7f51fa01377a9537867a55c') @@ -41,6 +42,10 @@ class Scorep(Package): ########## # Dependencies for SCORE-P are quite tight. See the homepage for more # information. + # SCOREP 3 + depends_on('otf2@2:', when='@3:') + depends_on('opari2@2:', when='@3:') + depends_on('cube@4.3:', when='@3:') # SCOREP 2.0.2 depends_on('otf2@2.0', when='@2.0.2') depends_on('opari2@2.0', when='@2.0.2') @@ -60,20 +65,20 @@ class Scorep(Package): variant('shmem', default=False, description='Enable shmem tracing') - def install(self, spec, prefix): - configure = Executable(join_path(self.stage.source_path, 'configure')) - with working_dir('spack-build', create=True): - configure_args = [ - "--prefix=%s" % prefix, - "--with-otf2=%s" % spec['otf2'].prefix.bin, - "--with-opari2=%s" % spec['opari2'].prefix.bin, - "--with-cube=%s" % spec['cube'].prefix.bin, - "--with-papi-header=%s" % spec['papi'].prefix.include, - "--with-papi-lib=%s" % spec['papi'].prefix.lib, - "--enable-shared", - "--without-shmem" if '~shmem' in spec else '', - "CFLAGS=-fPIC", - "CXXFLAGS=-fPIC"] - configure(*configure_args) - make() - make("install") + def configure_args(self): + spec = self.spec + + config_args = [ + "--with-otf2=%s" % spec['otf2'].prefix.bin, + "--with-opari2=%s" % spec['opari2'].prefix.bin, + "--with-cube=%s" % spec['cube'].prefix.bin, + "--with-papi-header=%s" % spec['papi'].prefix.include, + "--with-papi-lib=%s" % spec['papi'].prefix.lib, + "--enable-shared", + ] + + if '~shmem' in spec: + config_args.append("--without-shmem") + + config_args.extend(["CFLAGS=-fPIC", "CXXFLAGS=-fPIC"]) + return config_args From bccc73c6c9c9e64fea4ffc72bf81b69543cdf331 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 5 Apr 2017 21:55:28 +0200 Subject: [PATCH 0560/2394] petsc trilinos: fix Scalapack via MKL (#3702) * petsc trilinos: fix Scalapack via MKL * indentation --- var/spack/repos/builtin/packages/petsc/package.py | 14 +++++++++++++- .../repos/builtin/packages/trilinos/package.py | 5 +++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index b63172135e8..69a01d44e0b 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -173,9 +173,21 @@ def install(self, spec, prefix): '--with-blas-lapack-lib=%s' % lapack_blas.joined() ]) + # Help PETSc pick up Scalapack from MKL: + if 'scalapack' in spec: + scalapack = spec['scalapack'].libs + options.extend([ + '--with-scalapack-lib=%s' % scalapack.joined(), + '--with-scalapack=1' + ]) + else: + options.extend([ + '--with-scalapack=0' + ]) + # Activates library support if needed for library in ('metis', 'boost', 'hdf5', 'hypre', 'parmetis', - 'mumps', 'scalapack'): + 'mumps'): options.append( '--with-{library}={value}'.format( library=library, value=('1' if library in spec else '0')) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 0e0d86fa3ce..3c13dc68f82 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -292,14 +292,15 @@ def cmake_args(self): # mumps / scalapack if '+mumps' in spec: + scalapack = spec['scalapack'].libs options.extend([ '-DTPL_ENABLE_MUMPS:BOOL=ON', '-DMUMPS_LIBRARY_DIRS=%s' % spec['mumps'].prefix.lib, # order is important! '-DMUMPS_LIBRARY_NAMES=dmumps;mumps_common;pord', '-DTPL_ENABLE_SCALAPACK:BOOL=ON', - # FIXME: for MKL it's mkl_scalapack_lp64;mkl_blacs_mpich_lp64 - '-DSCALAPACK_LIBRARY_NAMES=scalapack' + '-DSCALAPACK_LIBRARY_NAMES=%s' % ';'.join(scalapack.names), + '-DSCALAPACK_LIBRARY_DIRS=%s' % ';'.join(scalapack.directories) ]) # see # https://github.com/trilinos/Trilinos/blob/master/packages/amesos/README-MUMPS From 87eafaa125db2407bb54a84f69e1ad67a4f27f99 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Thu, 6 Apr 2017 06:15:22 +1000 Subject: [PATCH 0561/2394] subversion: provide checksums for versions 1.8.17 and 1.9.5 (#3663) * subversion: provide checksums for versions 1.8.17 and 1.9.5 * subversion: release versions sorted from newest to oldest --- var/spack/repos/builtin/packages/subversion/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py index 7752528b438..c8fa3271f15 100644 --- a/var/spack/repos/builtin/packages/subversion/package.py +++ b/var/spack/repos/builtin/packages/subversion/package.py @@ -30,8 +30,10 @@ class Subversion(Package): homepage = 'https://subversion.apache.org/' url = 'http://archive.apache.org/dist/subversion/subversion-1.8.13.tar.gz' - version('1.8.13', '8065b3698d799507fb72dd7926ed32b6') + version('1.9.5', 'ac9f8ee235f1b667dd6506864af8035aaedfc2d9') version('1.9.3', 'a92bcfaec4e5038f82c74a7b5bbd2f46') + version('1.8.17', 'd1f8d45f97168d6271c58c5b25421cc32954c81b') + version('1.8.13', '8065b3698d799507fb72dd7926ed32b6') variant('perl', default=False, description='Build with Perl bindings') From 745e2ce52ffb33a8da9856e64c4571303f274163 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 5 Apr 2017 16:03:11 -0500 Subject: [PATCH 0562/2394] Fixes needed to build htop (#3691) * Fixes needed to build htop * Build libncursesw.so, not libncurses.so * Remove htop hack now that it is picking up newer ncurses * Tell packages to link to new ncursesw libraries --- var/spack/repos/builtin/packages/htop/package.py | 5 +++++ var/spack/repos/builtin/packages/htslib/package.py | 1 + var/spack/repos/builtin/packages/lua/package.py | 4 ++-- var/spack/repos/builtin/packages/ncurses/package.py | 1 - var/spack/repos/builtin/packages/readline/package.py | 2 +- var/spack/repos/builtin/packages/samtools/package.py | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/htop/package.py b/var/spack/repos/builtin/packages/htop/package.py index 7a7cc418ce2..45dc6f31320 100644 --- a/var/spack/repos/builtin/packages/htop/package.py +++ b/var/spack/repos/builtin/packages/htop/package.py @@ -30,7 +30,12 @@ class Htop(AutotoolsPackage): homepage = "https://github.com/hishamhm/htop" url = "https://hisham.hm/htop/releases/2.0.2/htop-2.0.2.tar.gz" + list_url = "https://hisham.hm/htop/releases" + list_depth = 1 version('2.0.2', '7d354d904bad591a931ad57e99fea84a') depends_on('ncurses') + + def configure_args(self): + return ['--enable-shared'] diff --git a/var/spack/repos/builtin/packages/htslib/package.py b/var/spack/repos/builtin/packages/htslib/package.py index 20db1c918b6..8914a5c1e9b 100644 --- a/var/spack/repos/builtin/packages/htslib/package.py +++ b/var/spack/repos/builtin/packages/htslib/package.py @@ -36,3 +36,4 @@ class Htslib(AutotoolsPackage): depends_on('zlib') depends_on('bzip2', when="@1.4:") + depends_on('xz') diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index 78938beff9b..b0d8b699433 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -67,14 +67,14 @@ def install(self, spec, prefix): 'MYLDFLAGS=-L%s -L%s' % ( spec['readline'].prefix.lib, spec['ncurses'].prefix.lib), - 'MYLIBS=-lncurses', + 'MYLIBS=-lncursesw', 'CC=%s -std=gnu99' % spack_cc, target) make('INSTALL_TOP=%s' % prefix, 'MYLDFLAGS=-L%s -L%s' % ( spec['readline'].prefix.lib, spec['ncurses'].prefix.lib), - 'MYLIBS=-lncurses', + 'MYLIBS=-lncursesw', 'CC=%s -std=gnu99' % spack_cc, 'install') diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 9a964d4d8a2..8a8091d05d3 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -57,7 +57,6 @@ def configure_args(self): '--with-cxx-shared', '--enable-widec', '--enable-overwrite', - '--disable-lib-suffixes', '--without-ada', '--enable-pc-files', '--with-pkg-config-libdir={0}/lib/pkgconfig'.format(self.prefix) diff --git a/var/spack/repos/builtin/packages/readline/package.py b/var/spack/repos/builtin/packages/readline/package.py index e0b0e0d4b2e..5beafd5829c 100644 --- a/var/spack/repos/builtin/packages/readline/package.py +++ b/var/spack/repos/builtin/packages/readline/package.py @@ -45,4 +45,4 @@ class Readline(AutotoolsPackage): patch('readline-6.3-upstream_fixes-1.patch', when='@6.3') def build(self, spec, prefix): - make('SHLIB_LIBS=-lncurses') + make('SHLIB_LIBS=-lncursesw') diff --git a/var/spack/repos/builtin/packages/samtools/package.py b/var/spack/repos/builtin/packages/samtools/package.py index a6167250686..915b25b61b8 100644 --- a/var/spack/repos/builtin/packages/samtools/package.py +++ b/var/spack/repos/builtin/packages/samtools/package.py @@ -46,7 +46,7 @@ class Samtools(Package): def install(self, spec, prefix): if self.spec.version >= Version('1.3.1'): configure('--prefix={0}'.format(prefix), '--with-ncurses', - 'CURSES_LIB=-lncurses') + 'CURSES_LIB=-lncursesw') make() make('install') else: From 048b6fc4548bc6711e51a29bfbaa42e21e56c000 Mon Sep 17 00:00:00 2001 From: Josh Asplund Date: Wed, 5 Apr 2017 14:26:22 -0700 Subject: [PATCH 0563/2394] Fixes patch paths for earlier boost versions (#3712) * Fixes patch paths for earlier boost versions The directory structure of boost changed at version 1.56.0, so the patch being used for python support did not work on earlier versions. This adds another patch that matches earlier versions. * Removes commented out code --- .../repos/builtin/packages/boost/package.py | 3 +- .../packages/boost/python_jam_pre156.patch | 42 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/boost/python_jam_pre156.patch diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 06df688ea18..09953dd90e4 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -131,7 +131,8 @@ class Boost(Package): patch('boost_11856.patch', when='@1.60.0%gcc@4.4.7') # Patch fix from https://svn.boost.org/trac/boost/ticket/11120 - patch('python_jam.patch', when='^python@3:') + patch('python_jam.patch', when='@1.56.0: ^python@3:') + patch('python_jam_pre156.patch', when='@:1.55.0 ^python@3:') # Patch fix from https://svn.boost.org/trac/boost/ticket/10125 patch('boost_10125.patch', when='@1.55.0%gcc@5.0:5.9') diff --git a/var/spack/repos/builtin/packages/boost/python_jam_pre156.patch b/var/spack/repos/builtin/packages/boost/python_jam_pre156.patch new file mode 100644 index 00000000000..b5c64049836 --- /dev/null +++ b/var/spack/repos/builtin/packages/boost/python_jam_pre156.patch @@ -0,0 +1,42 @@ +diff --git a/tools/build/v2/tools/python.jam b/tools/build/v2/tools/python.jam +index 90377ea..123f66a 100644 +--- a/tools/build/v2/tools/python.jam ++++ b/tools/build/v2/tools/python.jam +@@ -493,6 +493,10 @@ local rule probe ( python-cmd ) + sys.$(s) = [ SUBST $(output) \\<$(s)=([^$(nl)]+) $1 ] ; + } + } ++ # Try to get python abiflags ++ full-cmd = $(python-cmd)" -c \"from sys import abiflags; print(abiflags, end='')\"" ; ++ ++ sys.abiflags = [ SHELL $(full-cmd) ] ; + return $(output) ; + } + } +@@ -502,7 +506,7 @@ local rule probe ( python-cmd ) + # have a value based on the information given. + # + local rule compute-default-paths ( target-os : version ? : prefix ? : +- exec-prefix ? ) ++ exec-prefix ? : abiflags ? ) + { + exec-prefix ?= $(prefix) ; + +@@ -539,7 +543,7 @@ local rule compute-default-paths ( target-os : version ? : prefix ? : + } + else + { +- includes ?= $(prefix)/include/python$(version) ; ++ includes ?= $(prefix)/include/python$(version)$(abiflags) ; + + local lib = $(exec-prefix)/lib ; + libraries ?= $(lib)/python$(version)/config $(lib) ; +@@ -783,7 +787,7 @@ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? : + exec-prefix = $(sys.exec_prefix) ; + + compute-default-paths $(target-os) : $(sys.version) : +- $(sys.prefix) : $(sys.exec_prefix) ; ++ $(sys.prefix) : $(sys.exec_prefix) : $(sys.abiflags) ; + + version = $(sys.version) ; + interpreter-cmd ?= $(cmd) ; From df150b3e9299448e05c2598944496d2182c06c96 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 5 Apr 2017 18:00:42 -0500 Subject: [PATCH 0564/2394] spack create MakefilePackage (#3710) * spack create MakefilePackage * Change default Perl template to match other build systems --- lib/spack/spack/cmd/create.py | 61 +++++++++++++--------- lib/spack/spack/test/build_system_guess.py | 3 ++ 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 906c7e1aec2..d839cc91adb 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -141,10 +141,6 @@ class AutotoolsPackageTemplate(PackageTemplate): base_class_name = 'AutotoolsPackage' - dependencies = """\ - # FIXME: Add dependencies if required. - # depends_on('foo')""" - body = """\ def configure_args(self): # FIXME: Add arguments other than --prefix @@ -233,7 +229,7 @@ class PythonPackageTemplate(PackageTemplate): body = """\ def build_args(self, spec, prefix): # FIXME: Add arguments other than --prefix - # FIXME: If not needed delete the function + # FIXME: If not needed delete this function args = [] return args""" @@ -275,16 +271,14 @@ class PerlmakePackageTemplate(PackageTemplate): dependencies = """\ # FIXME: Add dependencies if required: - # depends_on('perl-foo') - # depends_on('barbaz', type=('build', 'link', 'run'))""" + # depends_on('perl-foo', type=('build', 'run'))""" body = """\ - # FIXME: If non-standard arguments are used for configure step: - # def configure_args(self): - # return ['my', 'configure', 'args'] - - # FIXME: in unusual cases, it may be necessary to override methods for - # configure(), build(), check() or install().""" + def configure_args(self): + # FIXME: Add non-standard arguments + # FIXME: If not needed delete this function + args = [] + return args""" def __init__(self, name, *args): # If the user provided `--name perl-cpp`, don't rename it perl-perl-cpp @@ -303,8 +297,7 @@ class PerlbuildPackageTemplate(PerlmakePackageTemplate): depends_on('perl-module-build', type='build') # FIXME: Add additional dependencies if required: - # depends_on('perl-foo') - # depends_on('barbaz', type=('build', 'link', 'run'))""" + # depends_on('perl-foo', type=('build', 'run'))""" class OctavePackageTemplate(PackageTemplate): @@ -336,6 +329,19 @@ def __init__(self, name, *args): super(OctavePackageTemplate, self).__init__(name, *args) +class MakefilePackageTemplate(PackageTemplate): + """Provides appropriate overrides for Makefile packages""" + + base_class_name = 'MakefilePackage' + + body = """\ + def edit(self, spec, prefix): + # FIXME: Edit the Makefile if necessary + # FIXME: If not needed delete this function + # makefile = FileFilter('Makefile') + # makefile.filter('CC = .*', 'CC = cc')""" + + templates = { 'autotools': AutotoolsPackageTemplate, 'autoreconf': AutoreconfPackageTemplate, @@ -347,6 +353,7 @@ def __init__(self, name, *args): 'perlmake': PerlmakePackageTemplate, 'perlbuild': PerlbuildPackageTemplate, 'octave': OctavePackageTemplate, + 'makefile': MakefilePackageTemplate, 'generic': PackageTemplate } @@ -401,16 +408,17 @@ def __call__(self, stage, url): # uses. If the regular expression matches a file contained in the # archive, the corresponding build system is assumed. clues = [ - (r'/configure$', 'autotools'), - (r'/configure.(in|ac)$', 'autoreconf'), - (r'/Makefile.am$', 'autoreconf'), - (r'/CMakeLists.txt$', 'cmake'), - (r'/SConstruct$', 'scons'), - (r'/setup.py$', 'python'), - (r'/NAMESPACE$', 'r'), - (r'/WORKSPACE$', 'bazel'), - (r'/Build.PL$', 'perlbuild'), - (r'/Makefile.PL$', 'perlmake'), + ('/configure$', 'autotools'), + ('/configure.(in|ac)$', 'autoreconf'), + ('/Makefile.am$', 'autoreconf'), + ('/CMakeLists.txt$', 'cmake'), + ('/SConstruct$', 'scons'), + ('/setup.py$', 'python'), + ('/NAMESPACE$', 'r'), + ('/WORKSPACE$', 'bazel'), + ('/Build.PL$', 'perlbuild'), + ('/Makefile.PL$', 'perlmake'), + ('/(GNU)?[Mm]akefile$', 'makefile'), ] # Peek inside the compressed file. @@ -466,6 +474,8 @@ def get_name(args): " Please report this bug. In the meantime, try running:", " `spack create --name `") + name = simplify_name(name) + if not valid_fully_qualified_module_name(name): tty.die("Package name can only contain a-z, 0-9, and '-'") @@ -617,7 +627,6 @@ def create(parser, args): url = get_url(args) versions, guesser = get_versions(args, name) build_system = get_build_system(args, guesser) - name = simplify_name(name) # Create the package template object PackageClass = templates[build_system] diff --git a/lib/spack/spack/test/build_system_guess.py b/lib/spack/spack/test/build_system_guess.py index e6fb84b37d9..9ea76e7bfc7 100644 --- a/lib/spack/spack/test/build_system_guess.py +++ b/lib/spack/spack/test/build_system_guess.py @@ -40,6 +40,9 @@ ('WORKSPACE', 'bazel'), ('Makefile.PL', 'perlmake'), ('Build.PL', 'perlbuild'), + ('GNUmakefile', 'makefile'), + ('makefile', 'makefile'), + ('Makefile', 'makefile'), ('foobar', 'generic') ] ) From 715ac8b7e67b094c094ec290729c5257cd565a0c Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 5 Apr 2017 18:34:17 -0700 Subject: [PATCH 0565/2394] Update copyright on the docs. (#3718) --- lib/spack/docs/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 69ec2a0b332..76ff0f921b6 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -1,6 +1,6 @@ # flake8: noqa ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -160,7 +160,7 @@ # General information about the project. project = u'Spack' -copyright = u'2013-2015, Lawrence Livermore National Laboratory.' +copyright = u'2013-2017, Lawrence Livermore National Laboratory.' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the From 095f57409c66d172353edd9b71f88af34b026a7d Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 6 Apr 2017 15:11:32 +0200 Subject: [PATCH 0566/2394] Fix magics (#3721) - magics requires perl and perl-xml-parser. - xml2cc_new.pl uses /usr/bin/perl by default. --- var/spack/repos/builtin/packages/magics/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index cd793ae0514..661fb022002 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -60,6 +60,8 @@ class Magics(Package): # Currently python is only necessary to run # building preprocessing scripts. depends_on('python', type='build') + depends_on('perl', type='build') + depends_on('perl-xml-parser', type='build') depends_on('grib-api') depends_on('proj') depends_on('boost') @@ -69,6 +71,10 @@ class Magics(Package): depends_on('libemos', when='+bufr') depends_on('qt', when='+metview+qt') + def patch(self): + filter_file('#!/usr/bin/perl', '#!/usr/bin/env perl', + 'tools/xml2cc_new.pl') + def install(self, spec, prefix): options = [] options.extend(std_cmake_args) From b81a50b4e336629c641fd0a158fa5a1a3ea8151b Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 6 Apr 2017 15:12:51 +0200 Subject: [PATCH 0567/2394] Add zip package (#3715) --- .../repos/builtin/packages/gcc/package.py | 1 + .../repos/builtin/packages/zip/package.py | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/zip/package.py diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index ffb85ec15e3..76ccaf975fe 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -68,6 +68,7 @@ class Gcc(AutotoolsPackage): depends_on("mpc", when='@4.5:') depends_on("isl", when='@5.0:') depends_on("binutils~libiberty", when='+binutils') + depends_on("zip", type='build') # TODO: integrate these libraries. # depends_on("ppl") diff --git a/var/spack/repos/builtin/packages/zip/package.py b/var/spack/repos/builtin/packages/zip/package.py new file mode 100644 index 00000000000..a84d4ed27c6 --- /dev/null +++ b/var/spack/repos/builtin/packages/zip/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Zip(MakefilePackage): + """Zip is a compression and file packaging/archive utility.""" + + homepage = 'http://www.info-zip.org/Zip.html' + url = 'http://downloads.sourceforge.net/infozip/zip30.tar.gz' + + version('3.0', '7b74551e63f8ee6aab6fbc86676c0d37') + + depends_on('bzip2') + + def url_for_version(self, version): + return 'http://downloads.sourceforge.net/infozip/zip{0}.tar.gz'.format(version.joined) + + make_args = ['-f', 'unix/Makefile'] + build_targets = make_args + ['generic'] + + @property + def install_targets(self): + return self.make_args + ['prefix={0}'.format(self.prefix), 'install'] From 00fb0dd6c65657b4f7f4b85f8f2335a196158914 Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Thu, 6 Apr 2017 15:12:54 +0100 Subject: [PATCH 0568/2394] Openmpi cuda support (#3725) * Update cuda to latest ga2 release * Add CUDA support to openmpi * Use spec's lib directories for cuda * flake8 compliance --- var/spack/repos/builtin/packages/cuda/package.py | 2 ++ .../repos/builtin/packages/openmpi/package.py | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index bf5a64fa595..eabb5a846c2 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -38,6 +38,8 @@ class Cuda(Package): homepage = "http://www.nvidia.com/object/cuda_home_new.html" + version('8.0.61', '33e1bd980e91af4e55f3ef835c103f9b', expand=False, + url="https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run") version('8.0.44', '6dca912f9b7e2b7569b0074a41713640', expand=False, url="https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda_8.0.44_linux-run") version('7.5.18', '4b3bcecf0dfc35928a0898793cf3e4c6', expand=False, diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 7c07c515fab..63579efe0ef 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -105,14 +105,14 @@ class Openmpi(AutotoolsPackage): variant('vt', default=True, description='Build VampirTrace support') variant('thread_multiple', default=False, description='Enable MPI_THREAD_MULTIPLE support') - - # TODO: support for CUDA is missing + variant('cuda', default=False, description='Enable CUDA support') provides('mpi@:2.2', when='@1.6.5') provides('mpi@:3.0', when='@1.7.5:') provides('mpi@:3.1', when='@2.0.0:') depends_on('hwloc') + depends_on('hwloc +cuda', when='+cuda') depends_on('jdk', when='+java') depends_on('sqlite', when='+sqlite3') @@ -255,6 +255,16 @@ def configure_args(self): else: config_args.append('--disable-mpi-thread-multiple') + # CUDA support + if spec.satisfies('@1.6:'): + if '+cuda' in spec: + config_args.append('--with-cuda={0}'.format( + spec['cuda'].prefix)) + config_args.append('--with-cuda-libdir={0}'.format( + spec['cuda'].libs.directories)) + else: + config_args.append('--without-cuda') + return config_args @run_after('install') From 85f937525db47278ecb6623806d33cdbed60ba2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Thu, 6 Apr 2017 23:54:16 +0800 Subject: [PATCH 0569/2394] A new package: xqilla. (#3731) --- .../repos/builtin/packages/xqilla/package.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 var/spack/repos/builtin/packages/xqilla/package.py diff --git a/var/spack/repos/builtin/packages/xqilla/package.py b/var/spack/repos/builtin/packages/xqilla/package.py new file mode 100644 index 00000000000..b9790e33f04 --- /dev/null +++ b/var/spack/repos/builtin/packages/xqilla/package.py @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Xqilla(AutotoolsPackage): + """XQilla is an XQuery and XPath 2 library and command line utility + written in C++, implemented on top of the Xerces-C library.""" + + homepage = "http://xqilla.sourceforge.net/HomePage" + url = "https://downloads.sourceforge.net/project/xqilla/XQilla-2.3.3.tar.gz" + + version('2.3.3', '8ece20348687b6529bb934c17067803c') + + variant('debug', default=False, description='Build a debugging version.') + variant('shared', default=True, description='Build shared libraries.') + + depends_on('xerces-c') + + def configure_args(self): + args = ['--with-xerces={0}'.format(self.spec['xerces-c'].prefix)] + + if '+shared' in self.spec: + args.extend(['--enable-shared=yes', + '--enable-static=no']) + else: + args.extend(['--enable-shared=no', + '--enable-static=yes', + '--with-pic']) + + if '+debug' in self.spec: + args.extend('--enable-debug') + + return args From eb9cb2d4a1a8ad1968859bd42318a65ba6ebb6d5 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 6 Apr 2017 09:42:46 -0700 Subject: [PATCH 0570/2394] Fix libdwarf/elfutils conflict --- var/spack/repos/builtin/packages/libdwarf/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/libdwarf/package.py b/var/spack/repos/builtin/packages/libdwarf/package.py index fe131a842c1..153b243e989 100644 --- a/var/spack/repos/builtin/packages/libdwarf/package.py +++ b/var/spack/repos/builtin/packages/libdwarf/package.py @@ -52,6 +52,11 @@ class Libdwarf(Package): parallel = False + + def patch(self): + filter_file(r'^typedef struct Elf Elf;$', '', 'libdwarf/libdwarf.h.in') + + def install(self, spec, prefix): # elfutils contains a dwarf.h that conflicts with libdwarf's From 951f4bf5145bd22f266313e0879119b8d25e10a8 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Thu, 6 Apr 2017 19:31:55 +0200 Subject: [PATCH 0571/2394] PNGwriter: 0.6.0 (#3732) Adds the latest release of PNGwriter. --- var/spack/repos/builtin/packages/pngwriter/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/pngwriter/package.py b/var/spack/repos/builtin/packages/pngwriter/package.py index 4c0370a7ef6..6a34ab5abf6 100644 --- a/var/spack/repos/builtin/packages/pngwriter/package.py +++ b/var/spack/repos/builtin/packages/pngwriter/package.py @@ -42,6 +42,7 @@ class Pngwriter(Package): git='https://github.com/pngwriter/pngwriter.git') version('master', branch='master', git='https://github.com/pngwriter/pngwriter.git') + version('0.6.0', '0a19bc55c5f6379fea7343752fd3ffae') version('0.5.6', 'c13bd1fdc0e331a246e6127b5f262136') depends_on('cmake', type='build') From 95e401fe80b009f78b3eae5b5cd268fca2fc87c4 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 6 Apr 2017 20:54:57 +0200 Subject: [PATCH 0572/2394] Fix wx (#3734) It is missing a pkg-config dependency. --- var/spack/repos/builtin/packages/wx/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/wx/package.py b/var/spack/repos/builtin/packages/wx/package.py index ae1facc1c39..3111a8c4b45 100644 --- a/var/spack/repos/builtin/packages/wx/package.py +++ b/var/spack/repos/builtin/packages/wx/package.py @@ -44,6 +44,7 @@ class Wx(AutotoolsPackage): version('develop', git='https://github.com/wxWidgets/wxWidgets.git', branch='master') + depends_on('pkg-config', type='build') depends_on('gtkplus') @when('@:3.0.2') From f31a38532f107460e788f8a14f3e7751d6887cfa Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Thu, 6 Apr 2017 21:33:19 +0200 Subject: [PATCH 0573/2394] libSplash & PNGwriter: CMakePackage (#3739) Use new CMakePackage base class --- var/spack/repos/builtin/packages/libsplash/package.py | 10 +--------- var/spack/repos/builtin/packages/pngwriter/package.py | 10 +--------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/libsplash/package.py b/var/spack/repos/builtin/packages/libsplash/package.py index c87dae19bed..eb302e596b3 100644 --- a/var/spack/repos/builtin/packages/libsplash/package.py +++ b/var/spack/repos/builtin/packages/libsplash/package.py @@ -25,7 +25,7 @@ from spack import * -class Libsplash(Package): +class Libsplash(CMakePackage): """libSplash aims at developing a HDF5-based I/O library for HPC simulations. It is created as an easy-to-use frontend for the standard HDF5 library with support for MPI processes in a cluster environment. While the @@ -54,11 +54,3 @@ class Libsplash(Package): depends_on('hdf5@1.8.6:') depends_on('hdf5+mpi', when='+mpi') depends_on('mpi', when='+mpi') - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '..', *std_cmake_args) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/pngwriter/package.py b/var/spack/repos/builtin/packages/pngwriter/package.py index 6a34ab5abf6..29501297652 100644 --- a/var/spack/repos/builtin/packages/pngwriter/package.py +++ b/var/spack/repos/builtin/packages/pngwriter/package.py @@ -25,7 +25,7 @@ from spack import * -class Pngwriter(Package): +class Pngwriter(CMakePackage): """PNGwriter is a very easy to use open source graphics library that uses PNG as its output format. The interface has been designed to be as simple and intuitive as possible. It supports plotting and reading pixels in the @@ -49,11 +49,3 @@ class Pngwriter(Package): depends_on('libpng') depends_on('zlib') depends_on('freetype') - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '..', *std_cmake_args) - - make() - make('install') From a526bcaf117c1dd83c9fdd0fd85464aba57bb064 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Thu, 6 Apr 2017 13:44:43 -0700 Subject: [PATCH 0574/2394] Correct uninstall -d to uninstall -R in tutorial (#3740) -d was changed to -R as of PR #1917 --- lib/spack/docs/tutorial_sc16_spack_basics.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/docs/tutorial_sc16_spack_basics.rst b/lib/spack/docs/tutorial_sc16_spack_basics.rst index ed58c7c5cfb..8d9a8fbaea0 100644 --- a/lib/spack/docs/tutorial_sc16_spack_basics.rst +++ b/lib/spack/docs/tutorial_sc16_spack_basics.rst @@ -1030,7 +1030,7 @@ We can uninstall packages by spec using the same syntax as install. We can uninstall packages by referring only to their hash. -We can use either ``-f`` (force) or ``-d`` (remove dependents as well) to +We can use either ``-f`` (force) or ``-R`` (remove dependents as well) to remove packages that are required by another installed package. .. code-block:: console @@ -1044,7 +1044,7 @@ remove packages that are required by another installed package. ==> Error: You can use spack uninstall --dependents to uninstall these dependencies as well - $ spack uninstall -d /4blb + $ spack uninstall -R /4blb ==> The following packages will be uninstalled : -- linux-redhat6-x86_64 / intel@16.0.3 -------------------------- From 84208523f9d4f6d35bbf732e4276d583a37ff911 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 6 Apr 2017 14:25:13 -0700 Subject: [PATCH 0575/2394] set_executable can set S_IX{GRP,OTH} (#3742) `set_executable` now checks if a user/group.other had read permission on a file and if it does then it sets the corresponding executable bit. See #1483. --- lib/spack/llnl/util/filesystem.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 8922010e703..71d50965239 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -394,8 +394,14 @@ def traverse_tree(source_root, dest_root, rel_path='', **kwargs): def set_executable(path): - st = os.stat(path) - os.chmod(path, st.st_mode | stat.S_IEXEC) + mode = os.stat(path).st_mode + if mode & stat.S_IRUSR: + mode |= stat.S_IXUSR + if mode & stat.S_IRGRP: + mode |= stat.S_IXGRP + if mode & stat.S_IROTH: + mode |= stat.S_IXOTH + os.chmod(path, mode) def remove_dead_links(root): From 5c0fe2829bb248cd9b8dc5ba3a0260f27c1c891c Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 6 Apr 2017 23:29:40 +0200 Subject: [PATCH 0576/2394] deal.ii: add 8.5.0 (#3741) --- var/spack/repos/builtin/packages/dealii/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index de62ea213cf..349de680cc1 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -36,6 +36,7 @@ class Dealii(CMakePackage): # only add for immediate deps. transitive_rpaths = False + version('8.5.0', 'ef999cc310b007559a6343bf5b1759bc') version('8.4.2', '84c6bd3f250d3e0681b645d24cb987a7') version('8.4.1', 'efbaf16f9ad59cfccad62302f36c3c1d') version('8.4.0', 'ac5dbf676096ff61e092ce98c80c2b00') From 7c41d9c6dbb88c4d778a95459a50157c3945b380 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 6 Apr 2017 17:54:07 -0500 Subject: [PATCH 0577/2394] spglib requires setuptools during runtime (#3744) --- var/spack/repos/builtin/packages/py-spglib/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-spglib/package.py b/var/spack/repos/builtin/packages/py-spglib/package.py index 19380b745b1..3d73b3e8914 100644 --- a/var/spack/repos/builtin/packages/py-spglib/package.py +++ b/var/spack/repos/builtin/packages/py-spglib/package.py @@ -34,5 +34,7 @@ class PySpglib(PythonPackage): version('1.9.9.18', 'b8b46268d3aeada7b9b201b11882548f') - depends_on('py-setuptools@18.0:', type='build') + # Most Python packages only require setuptools as a build dependency. + # However, spglib requires setuptools during runtime as well. + depends_on('py-setuptools@18.0:', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run')) From 3232c16d0c14e27433b38e6d733be9bc075d87ec Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 6 Apr 2017 15:54:36 -0700 Subject: [PATCH 0578/2394] Update version info to include v1.5.5 (#3743) * Update version info to include v1.5.5 * Clean up url specifications. --- var/spack/repos/builtin/packages/py-sphinx/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py index b71f2ed8c56..1f9696b3707 100644 --- a/var/spack/repos/builtin/packages/py-sphinx/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx/package.py @@ -28,10 +28,10 @@ class PySphinx(PythonPackage): """Sphinx Documentation Generator.""" homepage = "http://sphinx-doc.org" - url = "https://pypi.python.org/packages/source/S/Sphinx/Sphinx-1.3.1.tar.gz" + url = "https://pypi.io/packages/source/S/Sphinx/Sphinx-1.5.5.tar.gz" - version('1.4.5', '5c2cd2dac45dfa6123d067e32a89e89a', - url='https://pypi.python.org/packages/8b/78/eeea2b837f911cdc301f5f05163f9729a2381cadd03ccf35b25afe816c90/Sphinx-1.4.5.tar.gz') + version('1.5.5', 'f9581b3556df9722143c47290273bcf8') + version('1.4.5', '5c2cd2dac45dfa6123d067e32a89e89a') version('1.3.1', '8786a194acf9673464c5455b11fd4332') extends('python', ignore='bin/(pybabel|pygmentize)') From 10ceed3b66f280336b37fe6da112ca1bf47c0ada Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 6 Apr 2017 16:55:09 -0600 Subject: [PATCH 0579/2394] A new package: legion (#3738) --- .../repos/builtin/packages/legion/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/legion/package.py diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py new file mode 100644 index 00000000000..ddfa8a8b94a --- /dev/null +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Legion(CMakePackage): + """Legion is a data-centric parallel programming system for writing + portable high performance programs targeted at distributed heterogeneous + architectures. Legion presents abstractions which allow programmers to + describe properties of program data (e.g. independence, locality). By + making the Legion programming system aware of the structure of program + data, it can automate many of the tedious tasks programmers currently + face, including correctly extracting task- and data-level parallelism + and moving data around complex memory hierarchies. A novel mapping + interface provides explicit programmer controlled placement of data in + the memory hierarchy and assignment of tasks to processors in a way + that is orthogonal to correctness, thereby enabling easy porting and + tuning of Legion applications to new architectures. + """ + homepage = "http://legion.stanford.edu/" + url = "https://github.com/StanfordLegion/legion/tarball/legion-17.02.0" + + version('develop', git='https://github.com/StanfordLegion/legion', branch='master') + version('17.02.0', '31ac3004e2fb0996764362d2b6f6844a') + + variant('debug', default=False, description='Build debug version') + + depends_on("cmake@3.1:", type='build') + depends_on("gasnet") + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + return ['-DLegion_USE_GASNet=ON', '-DLegion_BUILD_EXAMPLES=ON'] From 279d4107589add3fc0e71d703be42404867aa03b Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 6 Apr 2017 19:37:49 -0700 Subject: [PATCH 0580/2394] Add package for OpenSSH (#3750) --- .../repos/builtin/packages/openssh/package.py | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 var/spack/repos/builtin/packages/openssh/package.py diff --git a/var/spack/repos/builtin/packages/openssh/package.py b/var/spack/repos/builtin/packages/openssh/package.py new file mode 100644 index 00000000000..e2416535277 --- /dev/null +++ b/var/spack/repos/builtin/packages/openssh/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Openssh(AutotoolsPackage): + """OpenSSH is the premier connectivity tool for remote login with the + SSH protocol. It encrypts all traffic to eliminate + eavesdropping, connection hijacking, and other attacks. In + addition, OpenSSH provides a large suite of secure tunneling + capabilities, several authentication methods, and sophisticated + configuration options. + """ + + homepage = "https://www.openssh.com/" + url = "https://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz" + + version('7.5p1', '652fdc7d8392f112bef11cacf7e69e23') + version('7.4p1', 'b2db2a83caf66a208bb78d6d287cdaa3') + version('7.3p1', 'dfadd9f035d38ce5d58a3bf130b86d08') + version('7.2p2', '13009a9156510d8f27e752659075cced') + version('7.1p2', '4d8547670e2a220d5ef805ad9e47acf2') + version('7.0p1', '831883f251ac34f0ab9c812acc24ee69') + version('6.9p1', '0b161c44fc31fbc6b76a6f8ae639f16f') + version('6.8p1', '08f72de6751acfbd0892b5f003922701') + version('6.7p1', '3246aa79317b1d23cae783a3bf8275d6') + version('6.6p1', '3e9800e6bca1fbac0eea4d41baa7f239') + + depends_on('openssl') + depends_on('libedit') + depends_on('ncurses') + depends_on('zlib') From e3bfb79824b0640ef179e3cbec334fb0decf941f Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 6 Apr 2017 21:04:51 -0600 Subject: [PATCH 0581/2394] Add Votca packages (#3748) * A new package: votca-tools * A new package: votca-csg --- .../builtin/packages/votca-csg/package.py | 53 ++++++++++++++++++ .../builtin/packages/votca-tools/package.py | 56 +++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 var/spack/repos/builtin/packages/votca-csg/package.py create mode 100644 var/spack/repos/builtin/packages/votca-tools/package.py diff --git a/var/spack/repos/builtin/packages/votca-csg/package.py b/var/spack/repos/builtin/packages/votca-csg/package.py new file mode 100644 index 00000000000..516ce8b1455 --- /dev/null +++ b/var/spack/repos/builtin/packages/votca-csg/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2017, The VOTCA Development Team (http://www.votca.org) +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class VotcaCsg(CMakePackage): + """Versatile Object-oriented Toolkit for Coarse-graining + Applications (VOTCA) is a package intended to reduce the amount of + routine work when doing systematic coarse-graining of various + systems. The core is written in C++. + + This package contains the VOTCA coarse-graining engine. + """ + homepage = "http://www.votca.org" + url = "https://github.com/votca/csg/tarball/v1.4" + + version('develop', git='https://github.com/csg/tools', branch='master') + version('1.4', 'd009e761e5e3afd51eed89c420610a67') + + variant('debug', default=False, description='Build debug version') + + depends_on("cmake@2.8:", type='build') + depends_on("votca-tools") + depends_on("gromacs@5.1:") + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' diff --git a/var/spack/repos/builtin/packages/votca-tools/package.py b/var/spack/repos/builtin/packages/votca-tools/package.py new file mode 100644 index 00000000000..736ab0fa4ef --- /dev/null +++ b/var/spack/repos/builtin/packages/votca-tools/package.py @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2017, The VOTCA Development Team (http://www.votca.org) +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class VotcaTools(CMakePackage): + """Versatile Object-oriented Toolkit for Coarse-graining + Applications (VOTCA) is a package intended to reduce the amount of + routine work when doing systematic coarse-graining of various + systems. The core is written in C++. + + This package contains the basic tools library of VOTCA. + """ + homepage = "http://www.votca.org" + url = "https://github.com/votca/tools/tarball/v1.4" + + version('develop', git='https://github.com/votca/tools', branch='master') + version('1.4', 'cd47868e9f28e2c7b9d01f95aa0185ca') + + variant('debug', default=False, description='Build debug version') + + depends_on("cmake@2.8:", type='build') + depends_on("expat") + depends_on("fftw") + depends_on("gsl") + depends_on("boost") + depends_on("sqlite") + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' From 030127a07173357013302d024acf60b151a95fbd Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Fri, 7 Apr 2017 05:05:13 +0200 Subject: [PATCH 0582/2394] cuda_memtest: Package of CRP (#3747) This adds a maintained version of the (since 2012) stalled original project. https://github.com/ComputationalRadiationPhysics/cuda_memtest Nvidia's NVML (via the GPU deployment kit) could also be added, providing serial number output of failing GPUs for multi-GPU nodes. --- .../builtin/packages/cuda-memtest/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cuda-memtest/package.py diff --git a/var/spack/repos/builtin/packages/cuda-memtest/package.py b/var/spack/repos/builtin/packages/cuda-memtest/package.py new file mode 100644 index 00000000000..a11e288b697 --- /dev/null +++ b/var/spack/repos/builtin/packages/cuda-memtest/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class CudaMemtest(CMakePackage): + """Maintained and updated fork of cuda_memtest. + + original homepage: http://sourceforge.net/projects/cudagpumemtest . + + This software tests GPU memory for hardware errors and soft errors + using CUDA or OpenCL. + """ + + homepage = "https://github.com/ComputationalRadiationPhysics/cuda_memtest" + url = "https://github.com/ComputationalRadiationPhysics/cuda_memtest.git" + + version('master', branch='dev', + git='https://github.com/ComputationalRadiationPhysics/cuda_memtest.git') + + depends_on('cmake@2.8.5:', type='build') + # depends_on('nvml', when='+nvml') + depends_on('cuda@5.0:') From 10c395b2f510eb9ce1036222d30ef99d9aa26212 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 7 Apr 2017 11:18:34 +0200 Subject: [PATCH 0583/2394] Abinit: a few modernizations for the package and its dependencies (#3699) * libxc: added libs interface * hdf5: added libs interface, added conflicts * abinit: modernized package to use build interface * netcdf-fortran: added libs interface * abinit: added version 8.2.2 --- lib/spack/spack/spec.py | 6 +- .../repos/builtin/packages/abinit/package.py | 134 +++++++++--------- .../repos/builtin/packages/hdf5/package.py | 87 ++++++++++-- .../repos/builtin/packages/libxc/package.py | 27 ++++ .../packages/netcdf-fortran/package.py | 13 ++ 5 files changed, 180 insertions(+), 87 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 534bc6c2d3b..adddb87428b 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -901,16 +901,12 @@ def __init__(self, spec, name, query_parameters): ) is_virtual = Spec.is_virtual(name) - self._query_to_package = QueryState( + self.last_query = QueryState( name=name, extra_parameters=query_parameters, isvirtual=is_virtual ) - @property - def last_query(self): - return self._query_to_package - @key_ordering class Spec(object): diff --git a/var/spack/repos/builtin/packages/abinit/package.py b/var/spack/repos/builtin/packages/abinit/package.py index 1798059ee72..fe1c7ec7781 100644 --- a/var/spack/repos/builtin/packages/abinit/package.py +++ b/var/spack/repos/builtin/packages/abinit/package.py @@ -28,13 +28,15 @@ from spack import * -class Abinit(Package): +class Abinit(AutotoolsPackage): """ABINIT is a package whose main program allows one to find the total energy, charge density and electronic structure of systems made of electrons and nuclei (molecules and periodic solids) within Density Functional Theory (DFT), using pseudopotentials and a planewave - or wavelet basis. ABINIT also includes options to optimize the geometry - according to the DFT forces and stresses, or to perform molecular dynamics + or wavelet basis. + + ABINIT also includes options to optimize the geometry according to the + DFT forces and stresses, or to perform molecular dynamics simulations using these forces, or to generate dynamical matrices, Born effective charges, and dielectric tensors, based on Density-Functional Perturbation Theory, and many more properties. Excited states can be @@ -44,11 +46,12 @@ class Abinit(Package): programs are provided. """ - homepage = "http://www.abinit.org" - url = "http://ftp.abinit.org/abinit-8.0.8b.tar.gz" + homepage = 'http://www.abinit.org' + url = 'http://ftp.abinit.org/abinit-8.0.8b.tar.gz' + version('8.2.2', '5f25250e06fdc0815c224ffd29858860') # Versions before 8.0.8b are not supported. - version("8.0.8b", "abc9e303bfa7f9f43f95598f87d84d5d") + version('8.0.8b', 'abc9e303bfa7f9f43f95598f87d84d5d') variant('mpi', default=True, description='Builds with MPI support. Requires MPI2+') @@ -57,7 +60,7 @@ class Abinit(Package): variant('scalapack', default=False, description='Enables scalapack support. Requires MPI') # variant('elpa', default=False, - # description='Uses elpa instead of scalapack. Requires MPI') + # description='Uses elpa instead of scalapack. Requires MPI') # TODO: To be tested. # It was working before the last `git pull` but now all tests crash. @@ -71,111 +74,108 @@ class Abinit(Package): # Add dependencies # currently one cannot forward options to virtual packages, see #1712. - # depends_on("blas", when="~openmp") - # depends_on("blas+openmp", when="+openmp") + # depends_on('blas', when='~openmp') + # depends_on('blas+openmp', when='+openmp') depends_on('blas') - depends_on("lapack") + depends_on('lapack') # Require MPI2+ - depends_on("mpi@2:", when="+mpi") + depends_on('mpi@2:', when='+mpi') - depends_on("scalapack", when="+scalapack+mpi") - # depends_on("elpa", when="+elpa+mpi~openmp") - # depends_on("elpa+openmp", when="+elpa+mpi+openmp") + depends_on('scalapack', when='+scalapack+mpi') - depends_on("fftw+float", when="~openmp") - depends_on("fftw+float+openmp", when="+openmp") + # depends_on('elpa~openmp', when='+elpa+mpi~openmp') + # depends_on('elpa+openmp', when='+elpa+mpi+openmp') - depends_on("netcdf-fortran", when="+hdf5") - depends_on("hdf5+mpi", when='+mpi+hdf5') # required for NetCDF-4 support + depends_on('fftw+float', when='~openmp') + depends_on('fftw+float+openmp', when='+openmp') + + depends_on('netcdf-fortran', when='+hdf5') + depends_on('hdf5+mpi', when='+mpi+hdf5') # required for NetCDF-4 support # pin libxc version - depends_on("libxc@2.2.1") + depends_on("libxc@2.2.2") - def validate(self, spec): - """ - Checks if incompatible variants have been activated at the same time + # Cannot ask for +scalapack if it does not depend on MPI + conflicts('+scalapack', when='~mpi') - :param spec: spec of the package - :raises RuntimeError: in case of inconsistencies - """ - error = 'you cannot ask for \'+{variant}\' when \'+mpi\' is not active' + # Elpa is a substitute for scalapack and needs mpi + # conflicts('+elpa', when='~mpi') + # conflicts('+elpa', when='+scalapack') - if '+scalapack' in spec and '~mpi' in spec: - raise RuntimeError(error.format(variant='scalapack')) + def configure_args(self): - if '+elpa' in spec and ('~mpi' in spec or '~scalapack' in spec): - raise RuntimeError(error.format(variant='elpa')) + spec = self.spec - def install(self, spec, prefix): - self.validate(spec) - - options = ['--prefix=%s' % prefix] + options = [] oapp = options.append if '+mpi' in spec: # MPI version: # let the configure script auto-detect MPI support from mpi_prefix - oapp("--with-mpi-prefix=%s" % spec["mpi"].prefix) - oapp("--enable-mpi=yes") - oapp("--enable-mpi-io=yes") + oapp('--with-mpi-prefix={0}'.format(spec['mpi'].prefix)) + oapp('--enable-mpi=yes') + oapp('--enable-mpi-io=yes') # Activate OpenMP in Abinit Fortran code. if '+openmp' in spec: oapp('--enable-openmp=yes') - # BLAS/LAPACK + # BLAS/LAPACK/SCALAPACK-ELPA + linalg = spec['lapack'].libs + spec['blas'].libs if '+scalapack' in spec: - oapp("--with-linalg-flavor=custom+scalapack") - linalg = (spec['scalapack'].libs + - spec['lapack'].libs + spec['blas'].libs) + oapp('--with-linalg-flavor=custom+scalapack') + linalg = spec['scalapack'].libs + linalg # elif '+elpa' in spec: else: - oapp("--with-linalg-flavor=custom") - linalg = spec['lapack'].libs + spec['blas'].libs + oapp('--with-linalg-flavor=custom') - oapp("--with-linalg-libs=%s" % linalg.ld_flags) + oapp('--with-linalg-libs={0}'.format(linalg.ld_flags)) # FFTW3: use sequential or threaded version if +openmp - fftflavor, fftlibs = "fftw3", "-lfftw3 -lfftw3f" + fftflavor, fftlibs = 'fftw3', '-lfftw3 -lfftw3f' if '+openmp' in spec: - fftflavor = "fftw3-threads" - fftlibs = "-lfftw3_omp -lfftw3 -lfftw3f" + fftflavor = 'fftw3-threads' + fftlibs = '-lfftw3_omp -lfftw3 -lfftw3f' options.extend([ - "--with-fft-flavor=%s" % fftflavor, - "--with-fft-incs=-I%s" % spec["fftw"].prefix.include, - "--with-fft-libs=-L%s %s" % (spec["fftw"].prefix.lib, fftlibs), + '--with-fft-flavor=%s' % fftflavor, + '--with-fft-incs=-I%s' % spec['fftw'].prefix.include, + '--with-fft-libs=-L%s %s' % (spec['fftw'].prefix.lib, fftlibs), ]) - oapp("--with-dft-flavor=atompaw+libxc") + oapp('--with-dft-flavor=atompaw+libxc') # LibXC library + libxc = spec['libxc:fortran'] options.extend([ - "with_libxc_incs=-I%s" % spec["libxc"].prefix.include, - "with_libxc_libs=-L%s -lxcf90 -lxc" % spec["libxc"].prefix.lib, + 'with_libxc_incs={0}'.format(libxc.cppflags), + 'with_libxc_libs={0}'.format(libxc.libs.ld_flags + ' -lm') ]) # Netcdf4/HDF5 - if "+hdf5" in spec: - oapp("--with-trio-flavor=netcdf") + if '+hdf5' in spec: + oapp('--with-trio-flavor=netcdf') # Since version 8, Abinit started to use netcdf4 + hdf5 and we have - # to link with -lhdf5_hl -lhdf5 - hdf_libs = "-L%s -lhdf5_hl -lhdf5" % spec["hdf5"].prefix.lib + # to link with the high level HDF5 library + hdf5 = spec['hdf5:hl'] + netcdff = spec['netcdf-fortran:shared'] options.extend([ - "--with-netcdf-incs=-I%s" % ( - spec["netcdf-fortran"].prefix.include), - "--with-netcdf-libs=-L%s -lnetcdff -lnetcdf %s" % ( - spec["netcdf-fortran"].prefix.lib, hdf_libs), + '--with-netcdf-incs={0}'.format(netcdff.cppflags), + '--with-netcdf-libs={0}'.format( + netcdff.libs.ld_flags + ' ' + hdf5.libs.ld_flags + ), ]) else: # In Spack we do our best to avoid building any internally provided # dependencies, such as netcdf3 in this case. - oapp("--with-trio-flavor=none") + oapp('--with-trio-flavor=none') - configure(*options) - make() + return options - # make("check") - # make("tests_in") - make("install") + def check(self): + """This method is called after the build phase if tests have been + explicitly activated by user. + """ + make('check') + make('tests_in') diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 15139db645c..27ec1b3bc4b 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -70,23 +70,82 @@ class Hdf5(AutotoolsPackage): depends_on('szip', when='+szip') depends_on('zlib@1.1.2:') - @run_before('configure') - def validate(self): - """ - Checks if incompatible variants have been activated at the same time + # According to ./configure --help thread-safe capabilities are: + # "Not compatible with the high-level library, Fortran, or C++ wrappers." + # (taken from hdf5@1.10.0patch1) + conflicts('+threadsafe', when='+cxx') + conflicts('+threadsafe', when='+fortran') - :param spec: spec of the package - :raises RuntimeError: in case of inconsistencies + @property + def libs(self): + """Hdf5 can be queried for the following parameters: + + - "hl": high-level interface + - "cxx": C++ APIs + - "fortran": fortran APIs + + :return: list of matching libraries """ + query_parameters = self.spec.last_query.extra_parameters + + shared = '+shared' in self.spec + + # This map contains a translation from query_parameters + # to the libraries needed + query2libraries = { + tuple(): ['libhdf5'], + ('cxx', 'fortran', 'hl'): [ + 'libhdf5hl_fortran', + 'libhdf5_hl_cpp', + 'libhdf5_hl', + 'libhdf5_fortran', + 'libhdf5', + ], + ('cxx', 'hl'): [ + 'libhdf5_hl_cpp', + 'libhdf5_hl', + 'libhdf5', + ], + ('fortran', 'hl'): [ + 'libhdf5hl_fortran', + 'libhdf5_hl', + 'libhdf5_fortran', + 'libhdf5', + ], + ('hl',): [ + 'libhdf5_hl', + 'libhdf5', + ], + ('cxx', 'fortran'): [ + 'libhdf5_fortran', + 'libhdf5_cpp', + 'libhdf5', + ], + ('cxx',): [ + 'libhdf5_cpp', + 'libhdf5', + ], + ('fortran',): [ + 'libhdf5_fortran', + 'libhdf5', + ] + } + + # Turn the query into the appropriate key + key = tuple(sorted(query_parameters)) + libraries = query2libraries[key] + + return find_libraries( + libraries, root=self.prefix, shared=shared, recurse=True + ) + + @run_before('configure') + def fortran_check(self): spec = self.spec if '+fortran' in spec and not self.compiler.fc: msg = 'cannot build a fortran variant without a fortran compiler' raise RuntimeError(msg) - if '+threadsafe' in spec and ('+cxx' in spec or '+fortran' in spec): - msg = 'cannot use variant +threadsafe with either +cxx or +fortran' - raise RuntimeError(msg) - def configure_args(self): spec = self.spec # Handle compilation after spec validation @@ -156,11 +215,9 @@ def configure_args(self): return ["--with-zlib=%s" % spec['zlib'].prefix] + extra_args - def configure(self, spec, prefix): - # Run the default autotools package configure - super(Hdf5, self).configure(spec, prefix) - - if '@:1.8.14' in spec: + @run_after('configure') + def patch_postdeps(self): + if '@:1.8.14' in self.spec: # On Ubuntu14, HDF5 1.8.12 (and maybe other versions) # mysteriously end up with "-l -l" in the postdeps in the # libtool script. Patch this by removing the spurious -l's. diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py index d773395e6c7..ab9f75eac42 100644 --- a/var/spack/repos/builtin/packages/libxc/package.py +++ b/var/spack/repos/builtin/packages/libxc/package.py @@ -36,6 +36,33 @@ class Libxc(Package): version('2.2.2', 'd9f90a0d6e36df6c1312b6422280f2ec') version('2.2.1', '38dc3a067524baf4f8521d5bb1cd0b8f') + @property + def libs(self): + """Libxc can be queried for the following parameters: + + - "static": returns the static library version of libxc + (by default the shared version is returned) + + :return: list of matching libraries + """ + query_parameters = self.spec.last_query.extra_parameters + + libraries = ['libxc'] + + # Libxc installs both shared and static libraries. + # If a client ask for static explicitly then return + # the static libraries + shared = False if 'static' in query_parameters else True + + # Libxc has a fortran90 interface: give clients the + # possibility to query for it + if 'fortran' in query_parameters: + libraries = ['libxcf90'] + libraries + + return find_libraries( + libraries, root=self.prefix, shared=shared, recurse=True + ) + def install(self, spec, prefix): # Optimizations for the Intel compiler, suggested by CP2K optflags = '-O2' diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py index a2556d8783f..3f6a5bbf042 100644 --- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py +++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py @@ -35,3 +35,16 @@ class NetcdfFortran(AutotoolsPackage): version('4.4.3', 'bfd4ae23a34635b273d3eb0d91cbde9e') depends_on('netcdf') + + @property + def libs(self): + libraries = ['libnetcdff'] + + # This package installs both shared and static libraries. Permit + # clients to query which one they want. + query_parameters = self.spec.last_query.extra_parameters + shared = 'shared' in query_parameters + + return find_libraries( + libraries, root=self.prefix, shared=shared, recurse=True + ) From 1d21a11ff4b646666ae8027e7594476f045833d1 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 7 Apr 2017 13:46:46 +0200 Subject: [PATCH 0584/2394] fix dependencies of py-pynn (#3756) --- var/spack/repos/builtin/packages/py-pynn/package.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pynn/package.py b/var/spack/repos/builtin/packages/py-pynn/package.py index 2e7aae6ec99..55f847d4fed 100644 --- a/var/spack/repos/builtin/packages/py-pynn/package.py +++ b/var/spack/repos/builtin/packages/py-pynn/package.py @@ -40,11 +40,10 @@ class PyPynn(PythonPackage): version('0.7.5', 'd8280544e4c9b34b40fd372b16342841') depends_on('python@2.6:2.8,3.3:') - depends_on('py-lazyarray@0.2.9:', type=('build', 'run')) - depends_on('py-neo@:0.3', type=('build', 'run')) - depends_on('py-numpy@:1.5', type=('build', 'run')) - depends_on('py-jinja2@:2.6', type=('build', 'run')) - depends_on('py-quantities@:0.10', type=('build', 'run')) - depends_on('py-lazyarray@:0.2.9', type=('build', 'run')) - depends_on('py-neo@:0.3', type=('build', 'run')) + depends_on('py-jinja2@2.7:', type=('build', 'run')) + depends_on('py-docutils@0.10:', type=('build', 'run')) + depends_on('py-mock@1.0:', type=('build', 'run')) depends_on('py-numpy@1.5:', type=('build', 'run')) + depends_on('py-quantities@0.10:', type=('build', 'run')) + depends_on('py-lazyarray@0.2.9:', type=('build', 'run')) + depends_on('py-neo@0.3:', type=('build', 'run')) From 16fb872f8444a29342e285f836b1bd8d2d268a18 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 7 Apr 2017 08:43:13 -0500 Subject: [PATCH 0585/2394] Fix ncurses support in bash package (#3735) --- .../repos/builtin/packages/bash/package.py | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/bash/package.py b/var/spack/repos/builtin/packages/bash/package.py index 33168c2c34c..17159989d0c 100644 --- a/var/spack/repos/builtin/packages/bash/package.py +++ b/var/spack/repos/builtin/packages/bash/package.py @@ -25,21 +25,27 @@ from spack import * -class Bash(Package): +class Bash(AutotoolsPackage): """The GNU Project's Bourne Again SHell.""" homepage = "https://www.gnu.org/software/bash/" - url = "https://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz" + url = "https://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz" + version('4.4', '148888a7c95ac23705559b6f477dfe25') version('4.3', '81348932d5da294953e15d4814c74dd1') - depends_on('readline') + depends_on('ncurses') + depends_on('readline@5.0:') - def install(self, spec, prefix): - configure('--prefix=%s' % prefix, - '--with-curses', - '--with-installed-readline=%s' % spec['readline'].prefix) + def configure_args(self): + spec = self.spec - make() - make("tests") - make("install") + return [ + 'LIBS=-lncursesw', + '--with-curses', + '--enable-readline', + '--with-installed-readline={0}'.format(spec['readline'].prefix), + ] + + def check(self): + make('tests') From f1943589b50808d56be0a3cb43af5138baaf36f8 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 7 Apr 2017 09:59:14 -0600 Subject: [PATCH 0586/2394] gromacs: added 5.1.4 and 2016.3 (#3758) --- var/spack/repos/builtin/packages/gromacs/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 40d7858816c..424c098733d 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -41,6 +41,8 @@ class Gromacs(CMakePackage): homepage = 'http://www.gromacs.org' url = 'http://ftp.gromacs.org/gromacs/gromacs-5.1.2.tar.gz' + version('2016.3', 'e9e3a41bd123b52fbcc6b32d09f8202b') + version('5.1.4', 'ba2e34d59b3982603b4935d650c08040') version('5.1.2', '614d0be372f1a6f1f36382b7a6fcab98') variant('mpi', default=True, description='Activate MPI support') From 54d0f9157dfae0f4bbb703eed78f611f3c14ffec Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 7 Apr 2017 11:03:19 -0500 Subject: [PATCH 0587/2394] Tell libedit to link to -lncursesw (#3752) --- var/spack/repos/builtin/packages/libedit/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libedit/package.py b/var/spack/repos/builtin/packages/libedit/package.py index 6887d671019..01110c09100 100644 --- a/var/spack/repos/builtin/packages/libedit/package.py +++ b/var/spack/repos/builtin/packages/libedit/package.py @@ -28,8 +28,9 @@ class Libedit(AutotoolsPackage): """An autotools compatible port of the NetBSD editline library""" homepage = "http://thrysoee.dk/editline/" - url = "http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz" + url = "http://thrysoee.dk/editline/libedit-20170329-3.1.tar.gz" + version('3.1-20170329', 'c57a0690e62ef523c083598730272cfd') version('3.1-20160903', '0467d27684c453a351fbcefebbcb16a3') version('3.1-20150325', '43cdb5df3061d78b5e9d59109871b4f6') @@ -38,3 +39,6 @@ class Libedit(AutotoolsPackage): def url_for_version(self, version): url = "http://thrysoee.dk/editline/libedit-{0}-{1}.tar.gz" return url.format(version[-1], version.up_to(-1)) + + def configure_args(self): + return ['LIBS=-lncursesw'] From 7b37620e25606b769cd6a5c5a394c07971ce7967 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Fri, 7 Apr 2017 18:03:58 +0200 Subject: [PATCH 0588/2394] mallocMC: Spack Package (#3745) Adds a package for mallocMC, a memory allocator for many core architectures. This project provides a framework for fast memory managers on many core accelerators. Currently, it supports NVIDIA GPUs of compute capability sm_20 or higher through the ScatterAlloc algorithm. mallocMC is header-only. Downstream Dependencies PIConGPU and other projects of HZDR's *Computational Radiation Physics* group References - Markus Steinberger, Michael Kenzel, Bernhard Kainz and Dieter Schmalstieg. *ScatterAlloc: Massively parallel dynamic memory allocation for the GPU*, Innovative Parallel Computing (InPar), 2012, https://doi.org/10.1109/InPar.2012.6339604 - Carlchristian Eckert. *Enhancements of the massively parallel memory allocator ScatterAlloc and its adaption to the general interface mallocMC*, Junior Thesis (grosser Beleg), 2014, http://dx.doi.org/10.5281/zenodo.34461 --- .../builtin/packages/mallocmc/package.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mallocmc/package.py diff --git a/var/spack/repos/builtin/packages/mallocmc/package.py b/var/spack/repos/builtin/packages/mallocmc/package.py new file mode 100644 index 00000000000..0e533b3e10d --- /dev/null +++ b/var/spack/repos/builtin/packages/mallocmc/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mallocmc(CMakePackage): + """mallocMC: Memory Allocator for Many Core Architectures. + + This project provides a framework for fast memory managers on + many core accelerators. Currently, it supports NVIDIA GPUs of + compute capability sm_20 or higher through the ScatterAlloc + algorithm. + + mallocMC is header-only, but requires a few other C++ libraries + to be available. + """ + + homepage = "https://github.com/ComputationalRadiationPhysics/mallocMC" + url = "https://github.com/ComputationalRadiationPhysics/mallocMC/archive/2.2.0crp.tar.gz" + + version('dev', branch='dev', + git='https://github.com/ComputationalRadiationPhysics/mallocMC.git') + version('master', branch='master', + git='https://github.com/ComputationalRadiationPhysics/mallocMC.git') + version('2.2.0crp', '3e5c5fc963d1a9abc829ff701504e54c') + version('2.1.0crp', 'd2bd2644012b64a246048575e9a9051c') + version('2.0.1crp', '1f674d5d1ae05446d9a4e4b65465dca0') + version('2.0.0crp', '2c63c3ea2a882f29962c67b095d8f7a8') + version('1.0.2crp', '8f5edf07daa527261e52bc61be340ae6') + + depends_on('cmake@2.8.12.2:', type='build') + depends_on('boost@1.48.0:', type='link') + depends_on('cuda@5.0:', type='link') From a8bd69f01ce74f1c07bda451a4b1ad86fdfa8a94 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Fri, 7 Apr 2017 18:04:45 +0200 Subject: [PATCH 0589/2394] Package: ISAAC (#3733) Adds the [ISAAC](https://github.com/ComputationalRadiationPhysics/isaac) in situ volume rendering library. The ISAAC library can be build with render/filter kernels for Nvidia GPUs via CUDA or with a more general backend via [Alpaka](https://github.com/ComputationalRadiationPhysics/alpaka) with support for Nvidia GPUs (via CUDA) and multicore CPUs. Since alpaka is not yet part of spack, the second variant is still commented out. Packages - `isaac`: header-only library with dependencies to other C++ libraries that is then used in simulations - `isaac-server`: stand-alone executable that connects N simulations with M clients in a `N simulations:1 server` and `1 server:M clients` fashion (ISAAC clients simply speak websockets/JSON and are usually [HTML/JS pages](https://github.com/ComputationalRadiationPhysics/isaac/tree/v1.2.0/client)) Downstream Usage PIConGPU uses ISAAC for in situ visualization. References - [Repo](https://github.com/ComputationalRadiationPhysics/isaac) (LGPLv3+) - [Documentation](http://computationalradiationphysics.github.io/isaac/) - [Talk at GTC2016](http://on-demand.gputechconf.com/gtc/2016/video/S6294.html) --- .../builtin/packages/isaac-server/package.py | 48 +++++++++++++++++ .../repos/builtin/packages/isaac/package.py | 54 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 var/spack/repos/builtin/packages/isaac-server/package.py create mode 100644 var/spack/repos/builtin/packages/isaac/package.py diff --git a/var/spack/repos/builtin/packages/isaac-server/package.py b/var/spack/repos/builtin/packages/isaac-server/package.py new file mode 100644 index 00000000000..b9954b0a172 --- /dev/null +++ b/var/spack/repos/builtin/packages/isaac-server/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class IsaacServer(CMakePackage): + """In Situ Animation of Accelerated Computations: Server""" + + homepage = "http://computationalradiationphysics.github.io/isaac/" + url = "https://github.com/ComputationalRadiationPhysics/isaac/archive/v1.3.0.tar.gz" + + root_cmakelists_dir = 'server' + + version('develop', branch='dev', + git='https://github.com/ComputationalRadiationPhysics/isaac.git') + version('master', branch='master', + git='https://github.com/ComputationalRadiationPhysics/isaac.git') + version('1.3.0', 'c8a794da9bb998ef0e75449bfece1a12') + + # variant('gstreamer', default=False, description= \ + # 'Support for RTP streams, e.g. to Twitch or Youtube') + + depends_on('cmake@3.3:', type='build') + depends_on('isaac') + depends_on('libwebsockets') + # depends_on('gstreamer@1.0', when='+gstreamer') diff --git a/var/spack/repos/builtin/packages/isaac/package.py b/var/spack/repos/builtin/packages/isaac/package.py new file mode 100644 index 00000000000..fd3b9799850 --- /dev/null +++ b/var/spack/repos/builtin/packages/isaac/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Isaac(CMakePackage): + """In Situ Animation of Accelerated Computations: Header-Only Library""" + + homepage = "http://computationalradiationphysics.github.io/isaac/" + url = "https://github.com/ComputationalRadiationPhysics/isaac/archive/v1.3.0.tar.gz" + + root_cmakelists_dir = 'lib' + + version('develop', branch='dev', + git='https://github.com/ComputationalRadiationPhysics/isaac.git') + version('master', branch='master', + git='https://github.com/ComputationalRadiationPhysics/isaac.git') + version('1.3.0', 'c8a794da9bb998ef0e75449bfece1a12') + + variant('cuda', default=True, + description='Generate CUDA kernels for Nvidia GPUs') + # variant('alpaka', default=False, + # description='Generate kernels via Alpaka, for CPUs or GPUs') + + depends_on('cmake@3.3:', type='build') + depends_on('libjpeg-turbo', type='link') + depends_on('jansson', type='link') + depends_on('boost@1.56:', type='link') + depends_on('cuda@7.0:', type='link', when='+cuda') + # depends_on('alpaka', when='+alpaka') + depends_on('icet', type='link') + depends_on('mpi', type='link') From 04f20320f48283af57549d5e7703871fac54d06d Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Sat, 8 Apr 2017 04:03:57 +1000 Subject: [PATCH 0590/2394] subversion: spec.satisfies('^swig') does not work; replace spec.satisfies by "in spec" (#3662) --- var/spack/repos/builtin/packages/subversion/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py index c8fa3271f15..c7057a51df0 100644 --- a/var/spack/repos/builtin/packages/subversion/package.py +++ b/var/spack/repos/builtin/packages/subversion/package.py @@ -69,9 +69,9 @@ def install(self, spec, prefix): options.append('--with-sqlite=%s' % spec['sqlite'].prefix) options.append('--with-serf=%s' % spec['serf'].prefix) - if spec.satisfies('^swig'): + if 'swig' in spec: options.append('--with-swig=%s' % spec['swig'].prefix) - if spec.satisfies('+perl'): + if 'perl' in spec: options.append( 'PERL=%s' % join_path(spec['perl'].prefix.bin, 'perl')) From f166f57f0958db6dad07d261a3517279795db813 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 7 Apr 2017 20:06:09 +0200 Subject: [PATCH 0591/2394] remove mxml CFLAGS option that was breaking configure (fixes #3700) (#3706) - provide urls for versions 2.7, 2.6, 2.5 (archive copies) --- var/spack/repos/builtin/packages/mxml/package.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index 435fd748b35..ef05b85da07 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -41,9 +41,12 @@ class Mxml(AutotoolsPackage): version('2.6', '68977789ae64985dddbd1a1a1652642e') version('2.5', 'f706377fba630b39fa02fd63642b17e5') - # module swap PrgEnv-intel PrgEnv-$COMP - # (Can use whatever compiler you want to use) - # Case statement to change CC and CXX flags + def url_for_version(self, version): + if version <= Version('2.7'): + return 'https://github.com/michaelrsweet/mxml/archive/release-{0}.tar.gz'.format(version) + else: + return 'https://github.com/michaelrsweet/mxml/releases/download/release-{0}/mxml-{0}.tar.gz'.format(version) def configure_args(self): - return ['--disable-shared', 'CFLAGS=-static'] + # Default is non-shared, but avoid any future surprises + return ['--disable-shared'] From 3ad6754c1a92b8205e4d5b9ba71303307988c8ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sat, 8 Apr 2017 02:11:22 +0800 Subject: [PATCH 0592/2394] Add the 'shared' variant for protobuf. (#3703) --- var/spack/repos/builtin/packages/protobuf/package.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index e8010a496b1..14eaf3739e6 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -40,3 +40,14 @@ class Protobuf(AutotoolsPackage): depends_on('autoconf', type='build') depends_on('libtool', type='build') depends_on('m4', type='build') + + variant('shared', default=True, description='Build shared libraries.') + + def configure_args(self): + if '+shared' in self.spec: + return ['--enable-shared=yes', + '--enable-static=no'] + else: + return ['--enable-shared=no', + '--enable-static=yes', + '--with-pic=yes'] From c6777ddf743e1bfa215c3448cb6744f4274f71e4 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Fri, 7 Apr 2017 20:15:14 +0200 Subject: [PATCH 0593/2394] Update LLVM to version 4.0.0 (#3683) * Update LLVM to version 4.0.0 * Add arguments to prevent lldb, polly building when using ~ --- .../repos/builtin/packages/llvm/package.py | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 9879c4ee0bf..398daefc8fe 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -166,6 +166,21 @@ class Llvm(Package): 'libunwind': 'http://llvm.org/svn/llvm-project/libunwind/trunk', } }, + { + 'version': '4.0.0', + 'md5': 'ea9139a604be702454f6acf160b4f3a2', + 'resources': { + 'compiler-rt': '2ec11fb7df827b086341131c5d7f1814', + 'openmp': '3d06d2801dd4808f551a1a70068e01f5', + 'polly': 'f36e4e7cf872f8b3bbb9cdcddc5fd964', + 'libcxx': '4cf7df466e6f803ec4611ee410ff6781', + 'libcxxabi': '8b5d7b9bfcf7dec2dc901c8a6746f97c', + 'cfe': '756e17349fdc708c62974b883bf72d37', + 'clang-tools-extra': '99e711337ec3e9a8bb36e8dd62b2cd6e', + 'lldb': 'bd41ba7fcca55d2a554409bbccd34d2d', + 'libunwind': '0c3534eaa11c0cae33a1dcf5f36ce287', + } + }, { 'version': '3.9.1', 'md5': '3259018a7437e157f3642df80f1983ea', @@ -325,12 +340,16 @@ def install(self, spec, prefix): if '+polly' in spec: cmake_args.append('-DLINK_POLLY_INTO_TOOLS:Bool=ON') else: - cmake_args.append('-DLLVM_EXTERNAL_POLLY_BUILD:Bool=OFF') + cmake_args.extend(['-DLLVM_EXTERNAL_POLLY_BUILD:Bool=OFF', + '-DLLVM_TOOL_POLLY_BUILD:Bool=OFF', + '-DLLVM_POLLY_BUILD:Bool=OFF', + '-DLLVM_POLLY_LINK_INTO_TOOLS:Bool=OFF']) if '+clang' not in spec: cmake_args.append('-DLLVM_EXTERNAL_CLANG_BUILD:Bool=OFF') if '+lldb' not in spec: - cmake_args.append('-DLLVM_EXTERNAL_LLDB_BUILD:Bool=OFF') + cmake_args.extend(['-DLLVM_EXTERNAL_LLDB_BUILD:Bool=OFF', + '-DLLVM_TOOL_LLDB_BUILD:Bool=OFF']) if '+internal_unwind' not in spec: cmake_args.append('-DLLVM_EXTERNAL_LIBUNWIND_BUILD:Bool=OFF') if '+libcxx' not in spec: From 7c4ed0a70acb2c860d93b6606e41bf3eaae6a774 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Fri, 7 Apr 2017 13:17:19 -0500 Subject: [PATCH 0594/2394] Add the rockstar package (#3680) * Add the rockstar package * Add rockstar to yt. * Correct signature of prep_yt. * Correct rockstar package installation process Needed to change the way the necessary prefixes are found as well as how the completed package is copied. There should probably be a way to do the copying in a more 'spack' way. * Add license * Add description. * Set no hdf5 variant as default. * Use copy_tree for copying files * Use MakefilePackage * Address concerns from @adamjstewart * Fix flake8 errors. --- .../repos/builtin/packages/py-yt/package.py | 8 +++ .../rockstar/adjust_buildscript.patch | 13 ++++ .../builtin/packages/rockstar/package.py | 69 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 var/spack/repos/builtin/packages/rockstar/adjust_buildscript.patch create mode 100644 var/spack/repos/builtin/packages/rockstar/package.py diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index 30ce507a9f8..ff50c269a2a 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -57,6 +57,7 @@ class PyYt(PythonPackage): variant("astropy", default=True, description="enable astropy support") variant("h5py", default=True, description="enable h5py support") variant("scipy", default=True, description="enable scipy support") + variant("rockstar", default=False, description="enable rockstar support") depends_on("py-astropy", type=('build', 'run'), when="+astropy") depends_on("py-cython", type=('build', 'run')) @@ -67,8 +68,15 @@ class PyYt(PythonPackage): depends_on("py-scipy", type=('build', 'run'), when="+scipy") depends_on("py-setuptools", type="build") depends_on("py-sympy", type=('build', 'run')) + depends_on("rockstar@yt", type=('build', 'run'), when="+rockstar") depends_on("python @2.7:2.999,3.4:") + @run_before('install') + def prep_yt(self): + if '+rockstar' in self.spec: + with open('rockstar.cfg', 'w') as rockstar_cfg: + rockstar_cfg.write(self.spec['rockstar'].prefix) + @run_after('install') def check_install(self): # The Python interpreter path can be too long for this diff --git a/var/spack/repos/builtin/packages/rockstar/adjust_buildscript.patch b/var/spack/repos/builtin/packages/rockstar/adjust_buildscript.patch new file mode 100644 index 00000000000..e9a18e4ee42 --- /dev/null +++ b/var/spack/repos/builtin/packages/rockstar/adjust_buildscript.patch @@ -0,0 +1,13 @@ +diff --git a/Makefile b/Makefile +index fafba4b..a21ef9e 100644 +--- a/Makefile ++++ b/Makefile +@@ -6,7 +6,7 @@ PROFFLAGS = -lm -g -pg -O2 -std=c99 + CC = gcc + CFILES = rockstar.c check_syscalls.c fof.c groupies.c subhalo_metric.c potential.c nfw.c jacobi.c fun_times.c interleaving.c universe_time.c hubble.c integrate.c distance.c config_vars.c config.c bounds.c inthash.c io/read_config.c client.c server.c merger.c inet/socket.c inet/rsocket.c inet/address.c io/meta_io.c io/io_internal.c io/io_ascii.c io/stringparse.c io/io_gadget.c io/io_generic.c io/io_art.c io/io_tipsy.c io/io_bgc2.c io/io_util.c io/io_arepo.c io/io_hdf5.c + DIST_FLAGS = +-HDF5_FLAGS = -DH5_USE_16_API -lhdf5 -DENABLE_HDF5 -I/opt/local/include -L/opt/local/lib ++HDF5_FLAGS = -DH5_USE_16_API -lhdf5 -DENABLE_HDF5 -I$(HDF5_INC_DIR) -L$(HDF5_LIB_DIR) + + all: + @make reg EXTRA_FLAGS="$(OFLAGS)" diff --git a/var/spack/repos/builtin/packages/rockstar/package.py b/var/spack/repos/builtin/packages/rockstar/package.py new file mode 100644 index 00000000000..5903b2c18bb --- /dev/null +++ b/var/spack/repos/builtin/packages/rockstar/package.py @@ -0,0 +1,69 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os +from spack import * +from distutils.dir_util import copy_tree + + +class Rockstar(MakefilePackage): + """The Rockstar Halo Finder""" + + homepage = "https://bitbucket.org/gfcstanford/rockstar" + url = "https://bitbucket.org/gfcstanford/rockstar" + + version('develop', git='https://bitbucket.org/gfcstanford/rockstar.git') + version('yt', hg='https://bitbucket.org/MatthewTurk/rockstar') + + variant('hdf5', description='Build rockstar with HDF5 support', default=False) + + patch('adjust_buildscript.patch') + + depends_on('hdf5', when='+hdf5') + + def build(self, spec, prefix): + # Set environment appropriately for HDF5 + if '+hdf5' in spec: + os.environ['HDF5_INC_DIR'] = spec['hdf5'].prefix.include + os.environ['HDF5_LIB_DIR'] = spec['hdf5'].prefix.lib + + # Build depending on whether hdf5 is to be used + if '+hdf5' in spec: + make('with_hdf5') + else: + make() + + # Build rockstar library + make('lib') + + def install(self, spec, prefix): + # Install all files and directories + copy_tree(".", prefix) + + mkdir(prefix.bin) + mkdir(prefix.lib) + + install('rockstar', join_path(prefix.bin, 'rockstar')) + install('librockstar.so', join_path(prefix.lib, 'librockstar.so')) From ed4f276b68eea6d790d10acb68aab4865a9ab8cc Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 7 Apr 2017 14:10:29 -0500 Subject: [PATCH 0595/2394] Add a package for the NAS Parallel Benchmarks (NPB) (#3762) --- .../repos/builtin/packages/npb/package.py | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 var/spack/repos/builtin/packages/npb/package.py diff --git a/var/spack/repos/builtin/packages/npb/package.py b/var/spack/repos/builtin/packages/npb/package.py new file mode 100644 index 00000000000..abf14ef115a --- /dev/null +++ b/var/spack/repos/builtin/packages/npb/package.py @@ -0,0 +1,202 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Npb(MakefilePackage): + """The NAS Parallel Benchmarks (NPB) are a small set of programs + designed to help evaluate the performance of parallel supercomputers. + The benchmarks are derived from computational fluid dynamics (CFD) + applications and consist of five kernels and three pseudo-applications + in the original "pencil-and-paper" specification (NPB 1). The benchmark + suite has been extended to include new benchmarks for unstructured + adaptive mesh, parallel I/O, multi-zone applications, and computational + grids. Problem sizes in NPB are predefined and indicated as different + classes. Reference implementations of NPB are available in commonly-used + programming models like MPI and OpenMP (NPB 2 and NPB 3).""" + + homepage = "https://www.nas.nasa.gov/publications/npb.html" + url = "https://www.nas.nasa.gov/assets/npb/NPB3.3.1.tar.gz" + + version('3.3.1', '8e5ec2c819480759725df67833619911') + + # Valid Benchmark Names + valid_names = ( + 'is', # Integer Sort, random memory access + 'ep', # Embarrassingly Parallel + 'cg', # Conjugate Gradient, irregular memory access and communication + 'mg', # Multi-Grid on a sequence of meshes, long- and short-distance + # communication, memory intensive + 'ft', # discrete 3D fast Fourier Transform, all-to-all communication + 'bt', # Block Tri-diagonal solver + 'sp', # Scalar Penta-diagonal solver + 'lu', # Lower-Upper Gauss-Seidel solver + ) + + # Valid Benchmark Classes + valid_classes = ( + 'S', # Small for quick test purposes + 'W', # Workstation size + 'A', 'B', 'C', # standard test problems + # ~4X size increase going from one class to the next + 'D', 'E', # large test problems + # ~16X size increase from each of the previous classes + ) + + # TODO: Combine these into a single mutually exclusive variant + variant('mpi', default=True, description='Build the MPI implementation') + variant('openmp', default=False, description='Build the OpenMP implementation') + variant('serial', default=False, description='Build the serial version') + + # TODO: Convert these to non-exclusive multi-valued variants + variant('names', default=','.join(valid_names), + description='Benchmark names (comma separated list)') + variant('classes', default=','.join(valid_classes), + description='Benchmark classes (comma separated list)') + # This variant only applies to the MPI implementation + variant('nprocs', default='1,2,4,8,16,32,64,128', + description='Number of processes (comma separated list)') + + depends_on('mpi@2:', when='+mpi') + + phases = ['edit', 'install'] + + # Cannot be built in parallel + parallel = False + + @property + def build_directory(self): + if '+mpi' in self.spec: + implementation = 'MPI' + elif '+openmp' in self.spec: + implementation = 'OMP' + elif '+serial' in self.spec: + implementation = 'SER' + else: + raise RuntimeError('You must choose an implementation to build') + + return 'NPB{0}-{1}'.format(self.version.up_to(2), implementation) + + def edit(self, spec, prefix): + names = spec.variants['names'].value.split(',') + classes = spec.variants['classes'].value.split(',') + nprocs = spec.variants['nprocs'].value.split(',') + + if '+mpi' in spec: + definitions = { + # Parallel Fortran + 'MPIF77': spec['mpi'].mpif77, + 'FLINK': spec['mpi'].mpif77, + 'FMPI_LIB': spec['mpi'].libs.ld_flags, + 'FMPI_INC': '-I' + spec['mpi'].prefix.include, + 'FFLAGS': '-O3', + 'FLINKFLAGS': '-O3', + # Parallel C + 'MPICC': spec['mpi'].mpicc, + 'CLINK': spec['mpi'].mpicc, + 'CMPI_LIB': spec['mpi'].libs.ld_flags, + 'CMPI_INC': '-I' + spec['mpi'].prefix.include, + 'CFLAGS': '-O3', + 'CLINKFLAGS': '-O3', + # Utilities C + 'CC': spack_cc + ' -g', + 'BINDIR': prefix.bin, + 'RAND': 'randi8', + } + elif '+openmp' in spec: + definitions = { + # Parallel Fortran + 'F77': spack_f77, + 'FLINK': spack_f77, + 'F_LIB': '', + 'F_INC': '', + 'FFLAGS': '-O3 ' + self.compiler.openmp_flag, + 'FLINKFLAGS': '-O3 ' + self.compiler.openmp_flag, + # Parallel C + 'CC': spack_cc, + 'CLINK': spack_cc, + 'C_LIB': '-lm', + 'C_INC': '', + 'CFLAGS': '-O3 ' + self.compiler.openmp_flag, + 'CLINKFLAGS': '-O3 ' + self.compiler.openmp_flag, + # Utilities C + 'UCC': spack_cc, + 'BINDIR': prefix.bin, + 'RAND': 'randi8', + 'WTIME': 'wtime.c', + } + elif '+serial' in spec: + definitions = { + # Parallel Fortran + 'F77': spack_f77, + 'FLINK': spack_f77, + 'F_LIB': '', + 'F_INC': '', + 'FFLAGS': '-O3', + 'FLINKFLAGS': '-O3', + # Parallel C + 'CC': spack_cc, + 'CLINK': spack_cc, + 'C_LIB': '-lm', + 'C_INC': '', + 'CFLAGS': '-O3', + 'CLINKFLAGS': '-O3', + # Utilities C + 'UCC': spack_cc, + 'BINDIR': prefix.bin, + 'RAND': 'randi8', + 'WTIME': 'wtime.c', + } + + with working_dir(self.build_directory): + with open('config/make.def', 'w') as make_def: + for key in definitions: + make_def.write('{0} = {1}\n'.format( + key, definitions[key])) + + with open('config/suite.def', 'w') as suite_def: + for name in names: + for classname in classes: + # Classes C, D and E are not available for DT + if name == 'dt' and classname in ('C', 'D', 'E'): + continue + + # Class E is not available for IS + if name == 'is' and classname == 'E': + continue + + if '+mpi' in spec: + for nproc in nprocs: + suite_def.write('{0}\t{1}\t{2}\n'.format( + name, classname, nproc)) + else: + suite_def.write('{0}\t{1}\n'.format( + name, classname)) + + def install(self, spec, prefix): + mkdir(prefix.bin) + + with working_dir(self.build_directory): + make('suite') From d995f9a314a154fa5e00ee04bed4b8778c436643 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 7 Apr 2017 12:14:02 -0700 Subject: [PATCH 0596/2394] Disable OpenSSL test dependency until we have proper support. (#3760) --- var/spack/repos/builtin/packages/openssl/package.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 53e94ed445b..204debbc5f5 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -59,8 +59,10 @@ class Openssl(Package): depends_on('zlib') - # 'make test' requires Test::More version 0.96 - depends_on('perl@5.14.0:', type='build') + # TODO: 'make test' requires Perl module Test::More version 0.96 + # TODO: uncomment when test dependency types are supported. + # TODO: This is commented in the meantime to avoid dependnecy bloat. + # depends_on('perl@5.14.0:', type='build', when='+tests') parallel = False @@ -95,6 +97,7 @@ def install(self, spec, prefix): filter_file(r'-arch x86_64', '', 'Makefile') make() - if self.run_tests: - make('test') # 'VERBOSE=1' + # TODO: add this back when we have a 'test' dependency type. See above. + # if self.run_tests: + # make('test') # 'VERBOSE=1' make('install') From 28e20313ac5a2a50cdbc4747cd4acbf252ae6ec0 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 7 Apr 2017 21:32:32 +0200 Subject: [PATCH 0597/2394] lmod: added new version (#3763) --- var/spack/repos/builtin/packages/lmod/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index b2624bb3627..38529aa52c3 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -38,6 +38,7 @@ class Lmod(AutotoolsPackage): homepage = 'https://www.tacc.utexas.edu/research-development/tacc-projects/lmod' url = 'https://github.com/TACC/Lmod/archive/7.3.tar.gz' + version('7.4.5', 'fc34029c60dd9782c3d011c2b93fd266') version('7.4.1', '59b2558ee50877f2cf49ed37d7b09fea') version('7.3', '70180ec2ea1fae53aa83350523f6b2b3') version('6.4.5', '14f6c58dbc0a5a75574d795eac2c1e3c') From a2afe984c054f6ecbb21ad0303a8a882544901fb Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Fri, 7 Apr 2017 13:00:32 -0700 Subject: [PATCH 0598/2394] Adding ZFP version 0.5.1 and variant for uint8 bit stream word type (#3753) * adding 0.5.1 and variant for uint8 bit stream word type * Revisions as per davydden * fixing style (flake8) issues * - switched to derive from MakefilePackage - fixed typo in variant check - Confirmed installs correctly with bswtuint8 variant * added build method; changed zfp_incdir to incdir --- .../repos/builtin/packages/zfp/package.py | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/zfp/package.py b/var/spack/repos/builtin/packages/zfp/package.py index a898ab03d3e..b2c5fc4e196 100644 --- a/var/spack/repos/builtin/packages/zfp/package.py +++ b/var/spack/repos/builtin/packages/zfp/package.py @@ -25,29 +25,48 @@ from spack import * -class Zfp(Package): +class Zfp(MakefilePackage): """zfp is an open source C library for compressed floating-point arrays that supports very high throughput read and write random acces, target error bounds or bit rates. Although bit-for-bit lossless compression is not always possible, zfp is usually accurate to within machine epsilon in near-lossless mode, and is often orders - of magnitude more accurate than other lossy compressors. - + of magnitude more accurate than other lossy compressors. Versions + of zfp 0.5.1 or newer also support compression of integer data. """ homepage = "http://computation.llnl.gov/projects/floating-point-compression" - url = "http://computation.llnl.gov/projects/floating-point-compression/download/zfp-0.5.0.tar.gz" + url = "http://computation.llnl.gov/projects/floating-point-compression/download/zfp-0.5.1.tar.gz" + version('0.5.1', '0ed7059a9b480635e0dd33745e213d17') version('0.5.0', '2ab29a852e65ad85aae38925c5003654') - def install(self, spec, prefix): + variant('bswtuint8', default=False, + description='Build with bit stream word type of uint8') + + def edit(self, spec, prefix): + if '+bswtuint8' in self.spec: + config_file = FileFilter('Config') + config_file.filter( + '^\s*#\s*DEFS\s*\+=\s*-DBIT_STREAM_WORD_TYPE\s*=\s*uint8', + 'DEFS += -DBIT_STREAM_WORD_TYPE=uint8') + + def build(self, spec, prefix): make("shared") + def install(self, spec, prefix): + incdir = 'include' if spec.satisfies('@0.5.1:') else 'inc' + # No install provided mkdirp(prefix.lib) mkdirp(prefix.include) install('lib/libzfp.so', prefix.lib) - install('inc/zfp.h', prefix.include) - install('inc/types.h', prefix.include) - install('inc/bitstream.h', prefix.include) - install('inc/system.h', prefix.include) + install('%s/zfp.h' % incdir, prefix.include) + install('%s/bitstream.h' % incdir, prefix.include) + if spec.satisfies('@0.5.1:'): + mkdirp('%s/zfp' % prefix.include) + install('%s/zfp/system.h' % incdir, '%s/zfp' % prefix.include) + install('%s/zfp/types.h' % incdir, '%s/zfp' % prefix.include) + else: + install('%s/types.h' % incdir, prefix.include) + install('%s/system.h' % incdir, prefix.include) From bf9dcc4a10a1c9f1cc4efaa896243fe9fa979166 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 7 Apr 2017 14:50:08 -0700 Subject: [PATCH 0599/2394] Add info for go@1.8.1 (#3765) --- var/spack/repos/builtin/packages/go/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index c095140c68a..53abd07c43f 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -56,6 +56,7 @@ class Go(Package): extendable = True + version('1.8.1', '409dd21e7347dd1ea9efe64a700073cc') version('1.8', '7743960c968760437b6e39093cfe6f67') version('1.7.5', '506de2d870409e9003e1440bcfeb3a65') version('1.7.4', '49c1076428a5d3b5ad7ac65233fcca2f') From b91bf0e067c61bbaa443af1356fbaf9907ad9f7c Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 8 Apr 2017 13:40:55 +0200 Subject: [PATCH 0600/2394] Update libbson and libmongoc to 1.6.2 (#3767) --- .../repos/builtin/packages/libbson/package.py | 17 ++++++++++------- .../repos/builtin/packages/libmongoc/package.py | 3 ++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/libbson/package.py b/var/spack/repos/builtin/packages/libbson/package.py index 7bde0ea96c9..4f5b9011e9f 100644 --- a/var/spack/repos/builtin/packages/libbson/package.py +++ b/var/spack/repos/builtin/packages/libbson/package.py @@ -30,14 +30,17 @@ class Libbson(AutotoolsPackage): parsing, and iterating BSON documents.""" homepage = "https://github.com/mongodb/libbson" - url = "https://github.com/mongodb/libbson/releases/download/1.6.1/libbson-1.6.1.tar.gz" + url = "https://github.com/mongodb/libbson/releases/download/1.6.2/libbson-1.6.2.tar.gz" + version('1.6.2', 'c128a2ae3e35295e1176465be60f19db') version('1.6.1', '4d6779451bc5764a7d4982c01e7bd8c2') - depends_on('autoconf', type='build') - depends_on('automake', type='build') - depends_on('libtool', type='build') - depends_on('m4', type='build') + depends_on('autoconf', type='build', when='@1.6.1') + depends_on('automake', type='build', when='@1.6.1') + depends_on('libtool', type='build', when='@1.6.1') + depends_on('m4', type='build', when='@1.6.1') - # 1.6.1 tarball is broken - force_autoreconf = True + @property + def force_autoreconf(self): + # 1.6.1 tarball is broken + return self.spec.satisfies('@1.6.1') diff --git a/var/spack/repos/builtin/packages/libmongoc/package.py b/var/spack/repos/builtin/packages/libmongoc/package.py index 1465e4d8e1a..c7a53a4a42c 100644 --- a/var/spack/repos/builtin/packages/libmongoc/package.py +++ b/var/spack/repos/builtin/packages/libmongoc/package.py @@ -29,8 +29,9 @@ class Libmongoc(AutotoolsPackage): """libmongoc is a client library written in C for MongoDB.""" homepage = "https://github.com/mongodb/mongo-c-driver" - url = "https://github.com/mongodb/mongo-c-driver/releases/download/1.6.1/mongo-c-driver-1.6.1.tar.gz" + url = "https://github.com/mongodb/mongo-c-driver/releases/download/1.6.2/mongo-c-driver-1.6.2.tar.gz" + version('1.6.2', 'aac86df153282cda1e4905cca181631a') version('1.6.1', '826946de9a15f7f453aefecdc76b1c0d') depends_on('libbson') From bd9213a55fecfefd2b67de0383bfb568a58438f0 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 8 Apr 2017 20:50:16 -0500 Subject: [PATCH 0601/2394] Append system PKG_CONFIG_PATH on Cray instead of prepend (#3766) --- var/spack/repos/builtin/packages/pkg-config/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py index 50b517f6d04..0aa4bb99692 100644 --- a/var/spack/repos/builtin/packages/pkg-config/package.py +++ b/var/spack/repos/builtin/packages/pkg-config/package.py @@ -49,8 +49,8 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """spack built pkg-config on cray's requires adding /usr/local/ and /usr/lib64/ to PKG_CONFIG_PATH in order to access cray '.pc' files.""" - spack_env.prepend_path('PKG_CONFIG_PATH', '/usr/lib64/pkgconfig') - spack_env.prepend_path('PKG_CONFIG_PATH', '/usr/local/lib64/pkgconfig') + spack_env.append_path('PKG_CONFIG_PATH', '/usr/lib64/pkgconfig') + spack_env.append_path('PKG_CONFIG_PATH', '/usr/local/lib64/pkgconfig') def configure_args(self): config_args = ['--enable-shared'] From 87818abf217c9b08b1c4e823f76ad5e87b2f85b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Mon, 10 Apr 2017 00:56:49 +0800 Subject: [PATCH 0602/2394] A new pacakge: hstr(hh). (#3769) --- .../repos/builtin/packages/hstr/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hstr/package.py diff --git a/var/spack/repos/builtin/packages/hstr/package.py b/var/spack/repos/builtin/packages/hstr/package.py new file mode 100644 index 00000000000..3a556b9b6cd --- /dev/null +++ b/var/spack/repos/builtin/packages/hstr/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Hstr(AutotoolsPackage): + """hstr(hh) is a shell history suggest box for Bash and Zsh, + which enables easy viewing, searching and using + your command history.""" + + homepage = "https://github.com/dvorka/hstr" + url = "https://github.com/dvorka/hstr/archive/1.22.tar.gz" + + version('1.22', '620dab922fadf2858938fbe36d9f99fd') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + depends_on('ncurses@5.9') From 8e4ada5e99a7e00324fcfd3f70d5a7d80909e85e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 10 Apr 2017 07:25:48 -0500 Subject: [PATCH 0603/2394] Make it more clear that version ranges are inclusive (#3759) --- lib/spack/docs/packaging_guide.rst | 127 +++++++++++++++++++---------- 1 file changed, 84 insertions(+), 43 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 18541179b23..0e8ddfa68f9 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1438,75 +1438,116 @@ so you can rely on it for your libdwarf build. Dependency specs ^^^^^^^^^^^^^^^^ -``depends_on`` doesn't just take the name of another package. It -takes a full spec. This means that you can restrict the versions or +``depends_on`` doesn't just take the name of another package. It can +take a full spec as well. This means that you can restrict the versions or other configuration options of ``libelf`` that ``libdwarf`` will build -with. Here's an example. Suppose that in the ``libdwarf`` package -you write: +with. For example, suppose that in the ``libdwarf`` package you write: .. code-block:: python - depends_on("libelf@0.8:") + depends_on('libelf@0.8') -Now ``libdwarf`` will require a version of ``libelf`` version ``0.8`` -or higher in order to build. If some versions of ``libelf`` are -installed but they are all older than this, then Spack will build a -new version of ``libelf`` that satisfies the spec's version -constraint, and it will build ``libdwarf`` with that one. You could -just as easily provide a version range: +Now ``libdwarf`` will require ``libelf`` at *exactly* version ``0.8``. +You can also specify a requirement for a particular variant or for +specific compiler flags: .. code-block:: python - depends_on("libelf@0.8.2:0.8.4:") - -Or a requirement for a particular variant or compiler flags: - -.. code-block:: python - - depends_on("libelf@0.8+debug") + depends_on('libelf@0.8+debug') depends_on('libelf debug=True') depends_on('libelf cppflags="-fPIC"') Both users *and* package authors can use the same spec syntax to refer -to different package configurations. Users use the spec syntax on the +to different package configurations. Users use the spec syntax on the command line to find installed packages or to install packages with particular constraints, and package authors can use specs to describe relationships between packages. -Additionally, dependencies may be specified for specific use cases: +^^^^^^^^^^^^^^ +Version Ranges +^^^^^^^^^^^^^^ + +Although some packages require a specific version for their dependencies, +most can be built with a range of version. For example, if you are +writing a package for a legacy Python module that only works with Python +2.4 through 2.6, this would look like: .. code-block:: python - depends_on("cmake", type="build") - depends_on("libelf", type=("build", "link")) - depends_on("python", type="run") + depends_on('python@2.4:2.6') -The dependency types are: +Version ranges in Spack are *inclusive*, so ``2.4:2.6`` means any version +greater than or equal to ``2.4`` and up to and including ``2.6``. If you +want to specify that a package works with any version of Python 3, this +would look like: - * **"build"**: made available during the project's build. The package will - be added to ``PATH``, the compiler include paths, and ``PYTHONPATH``. - Other projects which depend on this one will not have these modified - (building project X doesn't need project Y's build dependencies). - * **"link"**: the project is linked to by the project. The package will be - added to the current package's ``rpath``. - * **"run"**: the project is used by the project at runtime. The package will - be added to ``PATH`` and ``PYTHONPATH``. +.. code-block:: python -Additional hybrid dependency types are (note the lack of quotes): + depends_on('python@3:') - * ****: ``type`` assumed to be ``("build", - "link")``. This is the common case for compiled language usage. +Here we leave out the upper bound. If you want to say that a package +requires Python 2, you can similarly leave out the lower bound: -""""""""""""""""""" -Dependency Formulas -""""""""""""""""""" +.. code-block:: python -This section shows how to write appropriate ``depends_on()`` -declarations for some common cases. + depends_on('python@:2.9') + +Notice that we didn't use ``@:3``. Version ranges are *inclusive*, so +``@:3`` means "up to and including 3". + +What if a package can only be built with Python 2.6? You might be +inclined to use: + +.. code-block:: python + + depends_on('python@2.6') + +However, this would be wrong. Spack assumes that all version constraints +are absolute, so it would try to install Python at exactly ``2.6``. The +correct way to specify this would be: + +.. code-block:: python + + depends_on('python@2.6.0:2.6.999') + + +^^^^^^^^^^^^^^^^ +Dependency Types +^^^^^^^^^^^^^^^^ + +Not all dependencies are created equal, and Spack allows you to specify +exactly what kind of a dependency you need. For example: + +.. code-block:: python + + depends_on('cmake', type='build') + depends_on('py-numpy', type=('build', 'run')) + depends_on('libelf', type=('build', 'link')) + +The following dependency types are available: + +* **"build"**: made available during the project's build. The package will + be added to ``PATH``, the compiler include paths, and ``PYTHONPATH``. + Other projects which depend on this one will not have these modified + (building project X doesn't need project Y's build dependencies). +* **"link"**: the project is linked to by the project. The package will be + added to the current package's ``rpath``. +* **"run"**: the project is used by the project at runtime. The package will + be added to ``PATH`` and ``PYTHONPATH``. + +One of the advantages of the ``build`` dependency type is that although the +dependency needs to be installed in order for the package to be built, it +can be uninstalled without concern afterwards. ``link`` and ``run`` disallow +this because uninstalling the dependency would break the package. + +If the dependency type is not specified, Spack uses a default of +``('build', 'link')``. This is the common case for compiler languages. +Non-compiled packages like Python modules commonly use +``('build', 'run')``. This means that the compiler wrappers don't need to +inject the dependency's ``prefix/lib`` directory, but the package needs to +be in ``PATH`` and ``PYTHONPATH`` during the build process and later when +a user wants to run the package. -* Python 2 only: ``depends_on('python@:2.8')`` -* Python 2.7 only: ``depends_on('python@2.7:2.8')`` -* Python 3 only: ``depends_on('python@3:')`` .. _setup-dependent-environment: From 77673f4c420a374e313a94d41e53bc23f311f139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Mon, 10 Apr 2017 20:27:15 +0800 Subject: [PATCH 0604/2394] A new package: cudnn. (#3770) --- .../repos/builtin/packages/cudnn/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cudnn/package.py diff --git a/var/spack/repos/builtin/packages/cudnn/package.py b/var/spack/repos/builtin/packages/cudnn/package.py new file mode 100644 index 00000000000..b780bc0d30e --- /dev/null +++ b/var/spack/repos/builtin/packages/cudnn/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree + + +class Cudnn(Package): + """NVIDIA cuDNN is a GPU-accelerated library of primitives for deep + neural networks""" + + homepage = "https://developer.nvidia.com/cudnn" + + version('6.0', '4aacb7acb93c5e4dfa9db814df496219', + url='http://developer.download.nvidia.com/compute/redist/cudnn/v6.0/cudnn-8.0-linux-x64-v6.0.tgz') + version('5.1', '406f4ac7f7ee8aa9e41304c143461a69', + url='http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz') + + depends_on('cuda@8:') + + def install(self, spec, prefix): + copy_tree('.', prefix) From 5008973d99b6c3197601427044f9180fa8bccbc1 Mon Sep 17 00:00:00 2001 From: healther Date: Mon, 10 Apr 2017 15:12:57 +0200 Subject: [PATCH 0605/2394] Fix namespaced python packages (#3757) * Fix namespaced python packages * Update package.py * Update package.py * fix typo --- .../packages/py-backports-shutil-get-terminal-size/package.py | 4 +++- .../packages/py-backports-ssl-match-hostname/package.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py b/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py index 5950faa765a..3447666a2ef 100644 --- a/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py +++ b/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py @@ -34,5 +34,7 @@ class PyBackportsShutilGetTerminalSize(PythonPackage): version('1.0.0', '03267762480bd86b50580dc19dff3c66') - depends_on('py-setuptools', type='build') + # newer setuptools version mess with "namespace" packages in an + # incompatible way cf. https://github.com/pypa/setuptools/issues/900 + depends_on('py-setuptools@:30.999.999', type='build') depends_on('python@:3.2.999') diff --git a/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py b/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py index bf4679556b2..12af938be68 100644 --- a/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py +++ b/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py @@ -33,4 +33,6 @@ class PyBackportsSslMatchHostname(PythonPackage): version('3.5.0.1', 'c03fc5e2c7b3da46b81acf5cbacfe1e6') - depends_on('py-setuptools', type='build') + # newer setuptools version mess with "namespace" packages in an + # incompatible way cf. https://github.com/pypa/setuptools/issues/900 + depends_on('py-setuptools@:30.999.999', type='build') From c9da92dc9736375a44eba42033b00dc485be8e7a Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 10 Apr 2017 15:20:57 +0200 Subject: [PATCH 0606/2394] doc: start with known issues section (#3722) --- lib/spack/docs/index.rst | 1 + lib/spack/docs/known_issues.rst | 37 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 lib/spack/docs/known_issues.rst diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index 2e99e96a3eb..579d222346c 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -51,6 +51,7 @@ or refer to the full manual below. basic_usage workflows tutorial_sc16 + known_issues .. toctree:: :maxdepth: 2 diff --git a/lib/spack/docs/known_issues.rst b/lib/spack/docs/known_issues.rst new file mode 100644 index 00000000000..aad0358cb18 --- /dev/null +++ b/lib/spack/docs/known_issues.rst @@ -0,0 +1,37 @@ +============ +Known Issues +============ + +This is a list of known bugs in Spack. It provides ways of getting around these +problems if you encounter them. + +----------------------------------------------------------------- +Default variants are not taken into account during concretization +----------------------------------------------------------------- + +**Status:** Expected to be fixed in the next release + +Current conretization algorithm does not take into account default values +of variants when adding extra constraints to the spec via CLI. For example +you may enounter the following error when trying to specify which MPI provider +to use + +.. code-block:: console + + $ spack install hdf5 ^openmpi + ==> Error: hdf5 does not depend on openmpi + +although the hdf5 package contains + +.. code-block:: python + + variant('mpi', default=True, description='Enable MPI support') + depends_on('mpi', when='+mpi') + +A workaround is to explicitly activate the variant related to the dependency: + +.. code-block:: console + + $ spack install hdf5+mpi ^openmpi + +See https://github.com/LLNL/spack/issues/397 for further details. From 4acc36d188b3de16e0200953e352f7952d09abd6 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 10 Apr 2017 09:12:49 -0700 Subject: [PATCH 0607/2394] Fix build, add version info for 1.3.0 (#3773) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update the package recipe w.r.t. AutotoolsPackage changes, now builds "out of source". Update the package with version info for 1.3.0. > Mosh 1.3.0 released, with John Hood as release lead. The release includes broader platform compatibility, robustness improvements, better testing, and fixes for excess CPU consumption in some cases. We have switched to semver.org-style versioning and will increment the minor version number whenever we add new functionality. (In our previous practice, this release would probably have been called “1.2.7.”) Tested on CentOS 7. --- var/spack/repos/builtin/packages/mosh/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/mosh/package.py b/var/spack/repos/builtin/packages/mosh/package.py index 91318915850..dd0b914cb6f 100644 --- a/var/spack/repos/builtin/packages/mosh/package.py +++ b/var/spack/repos/builtin/packages/mosh/package.py @@ -35,6 +35,7 @@ class Mosh(AutotoolsPackage): homepage = "https://mosh.org/" url = "https://mosh.org/mosh-1.2.6.tar.gz" + version('1.3.0', 'd961276995936953bf2d5a794068b076') version('1.2.6', 'bb4e24795bb135a754558176a981ee9e') depends_on('protobuf') @@ -43,3 +44,5 @@ class Mosh(AutotoolsPackage): depends_on('openssl') depends_on('perl', type='run') + + build_directory = 'spack-build' From 462765570450e4306b366b304cac7e1139b65522 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 10 Apr 2017 15:09:59 -0500 Subject: [PATCH 0608/2394] Rename libson-c to json-c, add new version (#3776) --- var/spack/repos/builtin/packages/flux/package.py | 2 +- .../builtin/packages/{libjson-c => json-c}/package.py | 11 ++++++----- var/spack/repos/builtin/packages/libhio/package.py | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) rename var/spack/repos/builtin/packages/{libjson-c => json-c}/package.py (86%) diff --git a/var/spack/repos/builtin/packages/flux/package.py b/var/spack/repos/builtin/packages/flux/package.py index c5d61bbc2ae..6f368fbef46 100644 --- a/var/spack/repos/builtin/packages/flux/package.py +++ b/var/spack/repos/builtin/packages/flux/package.py @@ -44,7 +44,7 @@ class Flux(AutotoolsPackage): depends_on("hwloc") depends_on("lua@5.1:5.1.99") depends_on("munge") - depends_on("libjson-c") + depends_on("json-c") depends_on("libxslt") depends_on("python") depends_on("py-cffi", type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/libjson-c/package.py b/var/spack/repos/builtin/packages/json-c/package.py similarity index 86% rename from var/spack/repos/builtin/packages/libjson-c/package.py rename to var/spack/repos/builtin/packages/json-c/package.py index 561c8ab71fd..d5ec92f2bd3 100644 --- a/var/spack/repos/builtin/packages/libjson-c/package.py +++ b/var/spack/repos/builtin/packages/json-c/package.py @@ -25,11 +25,12 @@ from spack import * -class LibjsonC(AutotoolsPackage): - """ A JSON implementation in C """ +class JsonC(AutotoolsPackage): + """A JSON implementation in C.""" homepage = "https://github.com/json-c/json-c/wiki" - url = "https://s3.amazonaws.com/json-c_releases/releases/json-c-0.11.tar.gz" + url = "https://s3.amazonaws.com/json-c_releases/releases/json-c-0.12.1.tar.gz" + + version('0.12.1', '55f7853f7d8cf664554ce3fa71bf1c7d') + version('0.11', 'aa02367d2f7a830bf1e3376f77881e98') parallel = False - - version('0.11', 'aa02367d2f7a830bf1e3376f77881e98') diff --git a/var/spack/repos/builtin/packages/libhio/package.py b/var/spack/repos/builtin/packages/libhio/package.py index 181aca979f7..d26811daf77 100644 --- a/var/spack/repos/builtin/packages/libhio/package.py +++ b/var/spack/repos/builtin/packages/libhio/package.py @@ -35,6 +35,6 @@ class Libhio(AutotoolsPackage): version('1.3.0.1', 'c073541de8dd70aeb8878bd00d6d877f') - depends_on("libjson-c") + depends_on("json-c") depends_on("bzip2") depends_on("pkg-config", type="build") From 808e9b46493495dff64d9964631faa929bbe4ebd Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Mon, 10 Apr 2017 19:02:32 -0700 Subject: [PATCH 0609/2394] Added a package for the MDAnalysis toolkit. (#3576) * Added a package for the MDAnalysis toolkit. * Added the dependency on setuptools. * Added the rest of the dependencies to the py-mdanalysis package. Also added the griddataformats and seaborn packages to satisfy requirements. * Removed seaborn package since it has been recently added. * Fixed flake8 error * Removed inadvertent commits. * Cleaned up reviewers feedback. --- .../builtin/packages/elemental/package.py | 1 + .../repos/builtin/packages/lbann/package.py | 2 +- .../packages/py-griddataformats/package.py | 42 +++++++++++++ .../builtin/packages/py-mdanalysis/package.py | 59 +++++++++++++++++++ 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/py-griddataformats/package.py create mode 100644 var/spack/repos/builtin/packages/py-mdanalysis/package.py diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index f1cc77c33c6..24b5bf8d152 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -68,6 +68,7 @@ class Elemental(CMakePackage): # Hack to forward variant to openblas package # Allow Elemental to build internally when using 8-byte ints depends_on('openblas +openmp', when='+openmp_blas ~int64_blas') + # Note that this forces us to use OpenBLAS until #1712 is fixed depends_on('lapack', when='~openmp_blas') depends_on('metis') diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index f0355fb96dd..38839c9bf0f 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -46,7 +46,7 @@ class Lbann(CMakePackage): depends_on('cuda', when='+gpu') depends_on('mpi') depends_on('opencv@3.2.0', when='+opencv') - depends_on('protobuf@3.0.2') + depends_on('protobuf@3.0.2:') def build_type(self): if '+debug' in self.spec: diff --git a/var/spack/repos/builtin/packages/py-griddataformats/package.py b/var/spack/repos/builtin/packages/py-griddataformats/package.py new file mode 100644 index 00000000000..ee77959e964 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-griddataformats/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyGriddataformats(PythonPackage): + """The gridDataFormats package provides classes to unify reading + and writing n-dimensional datasets. One can read grid data from + files, make them available as a Grid object, and write out the + data again.""" + + homepage = "http://www.mdanalysis.org/GridDataFormats" + url = "https://pypi.io/packages/source/G/GridDataFormats/GridDataFormats-0.3.3.tar.gz" + + version('0.3.3', '5c83d3bdd421eebcee10111942c5a21f') + + depends_on('python@2.7:') + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.0.3:', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-mdanalysis/package.py b/var/spack/repos/builtin/packages/py-mdanalysis/package.py new file mode 100644 index 00000000000..9f96b048365 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-mdanalysis/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyMdanalysis(PythonPackage): + """MDAnalysis is a Python toolkit to analyze molecular dynamics + trajectories generated by a wide range of popular simulation + packages including DL_Poly, CHARMM, Amber, NAMD, LAMMPS, and + Gromacs. (See the lists of supported trajectory formats and + topology formats.)""" + + homepage = "http://www.mdanalysis.org" + url = "https://pypi.io/packages/source/M/MDAnalysis/MDAnalysis-0.15.0.tar.gz" + + version('0.15.0', '19e5a8e6c2bfe85f6209d1d7a36e4f20') + + variant('analysis', default=True, + description='Enable analysis packages: matplotlib, scipy, seaborn') + variant('amber', default=False, + description='Support AMBER netcdf format.') + + depends_on('python@2.7:') + depends_on('py-setuptools', type='build') + depends_on('py-cython@0.16:', type='build') + depends_on('py-numpy@1.5.0:', type=('build', 'run')) + depends_on('py-six@1.4.0:', type=('build', 'run')) + depends_on('py-biopython@1.59:', type=('build', 'run')) + depends_on('py-networkx@1.0:', type=('build', 'run')) + depends_on('py-griddataformats@0.3.2:', type=('build', 'run')) + + depends_on('py-matplotlib', when='+analysis', type=('build', 'run')) + depends_on('py-scipy', when='+analysis', type=('build', 'run')) + depends_on('py-seaborn', when='+analysis', type=('build', 'run')) + + depends_on('py-netcdf4@1.0:', when='+amber', type=('build', 'run')) + depends_on('hdf5', when='+amber', type=('run')) From 74b1f2b8601d719aabd8f512a57bf36f78d0a4fb Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 11 Apr 2017 14:37:44 +0200 Subject: [PATCH 0610/2394] Fixup gcc@4.9{0,1,2} build on darwin (#3789) --- var/spack/repos/builtin/packages/gcc/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 76ccaf975fe..00518c8cf48 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -83,8 +83,8 @@ class Gcc(AutotoolsPackage): # depends_on('guile@1.4.1:', type='test') if sys.platform == 'darwin': - patch('darwin/gcc-4.9.patch1', when='@4.9.3') - patch('darwin/gcc-4.9.patch2', when='@4.9.3') + patch('darwin/gcc-4.9.patch1', when='@4.9.0:4.9.3') + patch('darwin/gcc-4.9.patch2', when='@4.9.0:4.9.3') else: provides('golang', when='@4.7.1:') From 47aa8053e913be5954506bf96816cb0583536ccc Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 11 Apr 2017 05:39:03 -0700 Subject: [PATCH 0611/2394] Install the shell completion scripts (#3784) * Install the shell completion scripts Install the `git-completion.{bash,tcsh,zsh}` and `git-prompt.sh` into `$(spack location -i git)/share/` (aka `prefix.share/`). * Use copy_tree to copy all the files The dest dir already exists, so install_tree()'s not an option. --- var/spack/repos/builtin/packages/git/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index f0f3bfc6bac..24657e54dcf 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -24,6 +24,7 @@ ############################################################################## import sys from spack import * +from distutils.dir_util import copy_tree class Git(AutotoolsPackage): @@ -166,6 +167,10 @@ def filter_rt(self): # Don't link with -lrt; the system has no (and needs no) librt filter_file(r' -lrt$', '', 'Makefile') + @run_after('install') + def install_completions(self): + copy_tree('contrib/completion', self.prefix.share) + @run_after('install') def install_manpages(self): prefix = self.prefix From e55c9a0eb8827c82f75d21cc4e0b65bf38cdaeef Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 11 Apr 2017 16:32:31 +0200 Subject: [PATCH 0612/2394] Update ccache version to 3.3.4 (#3794) * Update ccache version to 3.3.4 * Flake8 fix --- var/spack/repos/builtin/packages/ccache/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/ccache/package.py b/var/spack/repos/builtin/packages/ccache/package.py index 69b590629e7..1b4019dc870 100644 --- a/var/spack/repos/builtin/packages/ccache/package.py +++ b/var/spack/repos/builtin/packages/ccache/package.py @@ -31,12 +31,13 @@ class Ccache(AutotoolsPackage): again.""" homepage = "https://ccache.samba.org/" - url = "https://www.samba.org/ftp/ccache/ccache-3.3.3.tar.gz" + url = "https://www.samba.org/ftp/ccache/ccache-3.3.4.tar.gz" + version('3.3.4', '61326f1edac7cd211a7018458dfe2d86') version('3.3.3', 'ea1f95303749b9ac136c617d1b333eef') version('3.3.2', 'b966d56603e1fad2bac22930e5f01830') version('3.3.1', '7102ef024cff09d353b3f4c48379b40b') - version('3.3' , 'b7ac8fdd556f93831618483325fbb1ef') + version('3.3', 'b7ac8fdd556f93831618483325fbb1ef') version('3.2.9', '8f3f6e15e75a0e6020166927d41bd0b3') depends_on('gperf') From 4d18f9f233b23495941acba20c815fdbb4422a28 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 11 Apr 2017 14:15:19 -0400 Subject: [PATCH 0613/2394] pocl: New version 0.14 (#3799) --- var/spack/repos/builtin/packages/pocl/package.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py index 243b4cbf668..b64ae228379 100644 --- a/var/spack/repos/builtin/packages/pocl/package.py +++ b/var/spack/repos/builtin/packages/pocl/package.py @@ -38,8 +38,9 @@ class Pocl(CMakePackage): url = "http://portablecl.org/downloads/pocl-0.13.tar.gz" version("master", git="https://github.com/pocl/pocl.git") - version("0.14-rc", - git="https://github.com/pocl/pocl.git", branch="release_0_14") + version('0.14', '1d35f09299e76b9e3918c42826555194') + # version("0.14-rc", + # git="https://github.com/pocl/pocl.git", branch="release_0_14") version("0.13", "344480864d4269f2f63f1509395898bd") version("0.12", "e197ba3aa01a35f40581c48e053330dd") version("0.11", "9be0640cde2983062c47393d9e8e8fe7") @@ -50,7 +51,8 @@ class Pocl(CMakePackage): patch("vecmathlib.patch", when="@:0.13") # Note: We should describe correctly which pocl versions provide - # what OpenCL version + # which version of the OpenCL standard + # OpenCL standard versions are: 1.0, 1.1, 1.2, 2.0, 2.1, 2.2 provides('opencl@:2.0') depends_on("cmake @2.8.12:", type="build") @@ -64,7 +66,7 @@ class Pocl(CMakePackage): # These are the supported LLVM versions depends_on("llvm @3.7:3.9", when="@master") - depends_on("llvm @3.7:3.9", when="@0.14") + depends_on("llvm @3.7:4.0", when="@0.14") depends_on("llvm @3.7:3.8", when="@0.13") depends_on("llvm @3.2:3.7", when="@0.12") depends_on("llvm @3.2:3.6", when="@0.11") From cea43525554832de4ad25a130f3c4eb8df10ecab Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 11 Apr 2017 14:15:41 -0400 Subject: [PATCH 0614/2394] spherepack: New package (#3797) --- .../builtin/packages/spherepack/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/spherepack/package.py diff --git a/var/spack/repos/builtin/packages/spherepack/package.py b/var/spack/repos/builtin/packages/spherepack/package.py new file mode 100644 index 00000000000..d85b8dc6127 --- /dev/null +++ b/var/spack/repos/builtin/packages/spherepack/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Spherepack(Package): + """SPHEREPACK - A Package for Modeling Geophysical Processes""" + + homepage = "https://www2.cisl.ucar.edu/resources/legacy/spherepack" + url = "https://www2.cisl.ucar.edu/sites/default/files/spherepack3.2.tar" + + version('3.2', '283627744f36253b4260efd7dfb7c762') + + def install(self, spec, prefix): + if self.compiler.fc is None: + raise InstallError("SPHEREPACK requires a Fortran 90 compiler") + make("MAKE=make", "F90=f90 -O2", "AR=ar", "libspherepack") + make("MAKE=make", "F90=f90 -O2", "AR=ar", "testspherepack") + install_tree("lib", prefix.lib) From ed86dc2db66c5a967c2c4de743f8aa10a60f4570 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 11 Apr 2017 14:09:29 -0500 Subject: [PATCH 0615/2394] Help cscope find ncursesw library (#3785) * Help cscope find ncursesw library * Overwrite CURSES_LIBS at build time --- var/spack/repos/builtin/packages/cscope/package.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/cscope/package.py b/var/spack/repos/builtin/packages/cscope/package.py index 1e392163675..8f7ebd5cd7d 100644 --- a/var/spack/repos/builtin/packages/cscope/package.py +++ b/var/spack/repos/builtin/packages/cscope/package.py @@ -33,12 +33,10 @@ class Cscope(AutotoolsPackage): version('15.8b', '8f9409a238ee313a96f9f87fe0f3b176') - variant('flex', default=False, description="Builds with flex") + depends_on('ncurses') - depends_on('flex', when='+flex') + depends_on('flex', type='build') + depends_on('bison', type='build') + depends_on('pkg-config', type='build') - def configure_args(self): - args = [] - if '+flex' in self.spec: - args.append('--with-flex') - return args + build_targets = ['CURSES_LIBS=-lncursesw'] From 9a4077c2725cdfb14ab66a3ecff4d6ff8e443470 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Tue, 11 Apr 2017 12:10:09 -0700 Subject: [PATCH 0616/2394] added stat version 3.0.1 (#3800) --- .../repos/builtin/packages/stat/package.py | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index 9d655b37580..6fe82baa2f3 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -25,12 +25,14 @@ from spack import * -class Stat(Package): +class Stat(AutotoolsPackage): """Library to create, manipulate, and export graphs Graphlib.""" homepage = "http://paradyn.org/STAT/STAT.html" url = "https://github.com/lee218llnl/stat/archive/v2.0.0.tar.gz" + version('3.0.1', 'dac6f23c3639a0b21f923dc6219ba385', + url='https://github.com/LLNL/STAT/files/911503/stat-3.0.1.zip') version('3.0.0', 'a97cb235c266371c4a26329112de48a2', url='https://github.com/LLNL/STAT/releases/download/v3.0.0/STAT-3.0.0.tar.gz') version('2.2.0', '26bd69dd57a15afdd5d0ebdb0b7fb6fc') @@ -52,27 +54,25 @@ class Stat(Package): depends_on('graphviz', type=('build', 'link', 'run')) depends_on('launchmon') depends_on('mrnet') - depends_on('python') + depends_on('python@:2.8') depends_on('py-pygtk', type=('build', 'run')) depends_on('swig') depends_on('mpi', when='+examples') patch('configure_mpicxx.patch', when='@2.1.0') - def install(self, spec, prefix): - configure_args = [ - "--enable-gui", - "--prefix=%s" % prefix, + def configure_args(self): + spec = self.spec + args = [ "--with-launchmon=%s" % spec['launchmon'].prefix, "--with-mrnet=%s" % spec['mrnet'].prefix, "--with-graphlib=%s" % spec['graphlib'].prefix, "--with-stackwalker=%s" % spec['dyninst'].prefix, - "--with-libdwarf=%s" % spec['libdwarf'].prefix + "--with-libdwarf=%s" % spec['libdwarf'].prefix, + "--with-python=%s/bin/python" % spec['python'].prefix ] if '+dysect' in spec: - configure_args.append('--enable-dysectapi') + args.append('--enable-dysectapi') if '~examples' in spec: - configure_args.append('--disable-examples') - configure(*configure_args) - - make("install") + args.append('--disable-examples') + return args From d7b5726fdc555007c997d952f1b8e12480132c4c Mon Sep 17 00:00:00 2001 From: Nils Deppe Date: Tue, 11 Apr 2017 18:08:26 -0400 Subject: [PATCH 0617/2394] blaze: New Package (#3803) --- .../repos/builtin/packages/blaze/package.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 var/spack/repos/builtin/packages/blaze/package.py diff --git a/var/spack/repos/builtin/packages/blaze/package.py b/var/spack/repos/builtin/packages/blaze/package.py new file mode 100644 index 00000000000..ccc62f60895 --- /dev/null +++ b/var/spack/repos/builtin/packages/blaze/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Blaze(Package): + """Blaze is an open-source, high-performance C++ math library for dense and + sparse arithmetic. With its state-of-the-art Smart Expression Template + implementation Blaze combines the elegance and ease of use of a + domain-specific language with HPC-grade performance, making it one of the + most intuitive and fastest C++ math libraries available. + """ + + homepage = "https://bitbucket.org/blaze-lib/blaze/overview" + url = "https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.1.tar.gz" + + version('3.1', '2938e015f0d274e8d62ee5c4c0c1e9f3') + version('3.0', '0c4cefb0be7b5a27ed8a377941be1ab1') + version('2.6', 'f7b515eeffd5cce92eb02dc6f8905f4d') + version('2.5', '53a862763c275046ff0a8f07dfd3985b') + version('2.4', '7cf2e963a73d3c95ced0f7eaa0ae3677') + version('2.3', '2f8ca52d23447ac75a03bb43b12ef774') + version('2.2', '686a514108d7f3c6c7325ed57c171a59') + version('2.1', 'e5e419a2b35f0a36cd9d7527a250c56a') + version('2.0', 'aeb6a865e9e3810ee55456f961458a8e') + version('1.5', '5b77b605ee5ad35631bb3039737142c9') + version('1.4', '3f06d710161954ccae0975d87f1069ca') + version('1.3', 'ebd7f91fc5fca4108bfd16a86f9abd82') + version('1.2', 'b1511324456c3f70fce198a2b63e71ef') + version('1.1', '5e52ebe68217f2e50d66dfdb9803d51e') + version('1.0', 'a46508a2965ace9d89ded30a386d9548') + + def install(self, spec, prefix): + install_tree('blaze', join_path(prefix.include, 'blaze')) From 56ae607a39430693eabb27d3b940d894819848b1 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 11 Apr 2017 19:13:41 -0600 Subject: [PATCH 0618/2394] New package: f90cache (#3804) --- .../builtin/packages/f90cache/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/f90cache/package.py diff --git a/var/spack/repos/builtin/packages/f90cache/package.py b/var/spack/repos/builtin/packages/f90cache/package.py new file mode 100644 index 00000000000..1aae152b3e1 --- /dev/null +++ b/var/spack/repos/builtin/packages/f90cache/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class F90cache(AutotoolsPackage): + """f90cache is a compiler cache. It acts as a caching pre-processor to + Fortran compilers, using the -E compiler switch and a hash to detect + when a compilation can be satisfied from cache. This often results in a + great speedup in common compilations. + """ + homepage = "https://perso.univ-rennes1.fr/edouard.canot/f90cache/" + url = "https://perso.univ-rennes1.fr/edouard.canot/f90cache/f90cache-0.99.tar.bz2" + + version('0.99', 'e4767ae876203ed4f3e118e22204cdec') From 701965fb2a5abb48f33dc639b428d2bf3d20b129 Mon Sep 17 00:00:00 2001 From: Nils Deppe Date: Tue, 11 Apr 2017 23:14:54 -0400 Subject: [PATCH 0619/2394] brigand: New Package (#3801) --- .../repos/builtin/packages/brigand/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/brigand/package.py diff --git a/var/spack/repos/builtin/packages/brigand/package.py b/var/spack/repos/builtin/packages/brigand/package.py new file mode 100644 index 00000000000..d9f01283e04 --- /dev/null +++ b/var/spack/repos/builtin/packages/brigand/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Brigand(Package): + """ + Brigand Meta-programming library + """ + + homepage = "https://github.com/edouarda/brigand" + url = "https://github.com/edouarda/brigand/archive/1.0.0.tar.gz" + + version('master', git='https://github.com/edouarda/brigand.git', + branch='master') + version('1.3.0', '0bea9713b3b712229aed289e218d577b') + version('1.2.0', '32c0f73e7e666d33ff123334f5c9c92f') + version('1.1.0', '073b7c8e2cbda3a81bbeb1ea5b9ca0eb') + version('1.0.0', 'eeab3d437090f0bb7bc4eb69a5cd9c49') + + def install(self, spec, prefix): + install_tree('include', prefix.include) From 7203a3c0556d408623df8fc6aef114d1f1d9ce91 Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 12 Apr 2017 13:50:31 +0200 Subject: [PATCH 0620/2394] Update xrootd versions (#3807) * Update xrootd versions * Removing unnecessary url_for_version method --- var/spack/repos/builtin/packages/xrootd/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/xrootd/package.py b/var/spack/repos/builtin/packages/xrootd/package.py index db076dbc569..47e5afba26f 100644 --- a/var/spack/repos/builtin/packages/xrootd/package.py +++ b/var/spack/repos/builtin/packages/xrootd/package.py @@ -30,8 +30,12 @@ class Xrootd(Package): """The XROOTD project aims at giving high performance, scalable fault tolerant access to data repositories of many kinds.""" homepage = "http://xrootd.org" - url = "http://xrootd.org/download/v4.3.0/xrootd-4.3.0.tar.gz" + url = "http://xrootd.org/download/v4.6.0/xrootd-4.6.0.tar.gz" + version('4.6.0', '5d60aade2d995b68fe0c46896bc4a5d1') + version('4.5.0', 'd485df3d4a991e1c35efa4bf9ef663d7') + version('4.4.1', '72b0842f802ccc94dede4ac5ab2a589e') + version('4.4.0', '58f55e56801d3661d753ff5fd33dbcc9') version('4.3.0', '39c2fab9f632f35e12ff607ccaf9e16c') depends_on('cmake', type='build') From 0af57ce345f6688badb85d6bd210ddffdac2c200 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Wed, 12 Apr 2017 14:43:14 +0200 Subject: [PATCH 0621/2394] Apply a patch to allow valgrind 3.12 to build on MacOS >= 10.11 (#3808) --- .../repos/builtin/packages/valgrind/package.py | 4 ++++ .../packages/valgrind/valgrind_3_12_0_osx.patch | 13 +++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 var/spack/repos/builtin/packages/valgrind/valgrind_3_12_0_osx.patch diff --git a/var/spack/repos/builtin/packages/valgrind/package.py b/var/spack/repos/builtin/packages/valgrind/package.py index b84c95fb8a4..ccc5c74a590 100644 --- a/var/spack/repos/builtin/packages/valgrind/package.py +++ b/var/spack/repos/builtin/packages/valgrind/package.py @@ -58,6 +58,10 @@ class Valgrind(AutotoolsPackage): depends_on("automake", type='build', when='@develop') depends_on("libtool", type='build', when='@develop') + # Apply the patch suggested here: + # http://valgrind.10908.n7.nabble.com/Unable-to-compile-on-Mac-OS-X-10-11-td57237.html + patch('valgrind_3_12_0_osx.patch', when='@3.12.0 platform=darwin') + def configure_args(self): spec = self.spec options = [] diff --git a/var/spack/repos/builtin/packages/valgrind/valgrind_3_12_0_osx.patch b/var/spack/repos/builtin/packages/valgrind/valgrind_3_12_0_osx.patch new file mode 100644 index 00000000000..109cbc31f78 --- /dev/null +++ b/var/spack/repos/builtin/packages/valgrind/valgrind_3_12_0_osx.patch @@ -0,0 +1,13 @@ +diff --git a/coregrind/m_main.c b/coregrind/m_main.c +index d008ab3..42d8f30 100644 +--- a/coregrind/m_main.c ++++ b/coregrind/m_main.c +@@ -4058,7 +4058,7 @@ UWord voucher_mach_msg_set ( UWord arg1 ) + + #endif + +-#if defined(VGO_darwin) && DARWIN_VERS == DARWIN_10_10 ++#if defined(VGO_darwin) + + /* This might also be needed for > DARWIN_10_10, but I have no way + to test for that. Hence '==' rather than '>=' in the version From e12e9996e40670c467fc62e5fbc38760c7ec869e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 12 Apr 2017 10:46:00 -0500 Subject: [PATCH 0622/2394] Document commands that no longer work (#3781) --- lib/spack/docs/known_issues.rst | 41 +++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/lib/spack/docs/known_issues.rst b/lib/spack/docs/known_issues.rst index aad0358cb18..a68033dba69 100644 --- a/lib/spack/docs/known_issues.rst +++ b/lib/spack/docs/known_issues.rst @@ -11,17 +11,17 @@ Default variants are not taken into account during concretization **Status:** Expected to be fixed in the next release -Current conretization algorithm does not take into account default values +Current concretization algorithm does not take into account default values of variants when adding extra constraints to the spec via CLI. For example -you may enounter the following error when trying to specify which MPI provider -to use +you may encounter the following error when trying to specify which MPI provider +to use: .. code-block:: console $ spack install hdf5 ^openmpi ==> Error: hdf5 does not depend on openmpi -although the hdf5 package contains +although the hdf5 package contains: .. code-block:: python @@ -35,3 +35,36 @@ A workaround is to explicitly activate the variant related to the dependency: $ spack install hdf5+mpi ^openmpi See https://github.com/LLNL/spack/issues/397 for further details. + + +--------------------------------- +``spack extensions`` doesn't work +--------------------------------- + +**Status:** Up for grabs if you want to try to fix it + +Spack provides an ``extensions`` command that lists all available extensions +of a package, the ones that are installed, and the ones that are already +activated. This is very useful in conjunction with ``spack activate``. +Unfortunately, this command no longer works: + +.. code-block:: console + + $ spack extensions python + ==> python@2.7.13%clang@8.0.0-apple~tk~ucs4 arch=darwin-sierra-x86_64 -ckrr4mg has no extensions. + + +See https://github.com/LLNL/spack/issues/2895 for further details. + + +---------------------------- +``spack setup`` doesn't work +---------------------------- + +**Status:** Work in progress + +Spack provides a ``setup`` command that is useful for the development of +software outside of Spack. Unfortunately, this command no longer works. +See https://github.com/LLNL/spack/issues/2597 and +https://github.com/LLNL/spack/issues/2662 for details. This is expected +to be fixed by https://github.com/LLNL/spack/pull/2664. From 5b65380f98c1b80e356b199070794b962f5d7505 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 12 Apr 2017 13:27:46 -0700 Subject: [PATCH 0623/2394] Add package for nginx@1.12.0 (#3810) * Add package for nginx@1.12.0 Includes support for: - zlib - pcre (and pcre-jit) - openssl (https support) Built and basics tested on CentOS 7. I haven't tested the `https` support [yet]. * Include final bit of doc string sentence. I trimmed the docstring that I lifed from https://nginx.org/en a bit too aggressively and left a '...' to remind me to fix it. Apparently I need more obvious reminders. Thanks @davydden! --- .../repos/builtin/packages/nginx/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nginx/package.py diff --git a/var/spack/repos/builtin/packages/nginx/package.py b/var/spack/repos/builtin/packages/nginx/package.py new file mode 100644 index 00000000000..4be107ca814 --- /dev/null +++ b/var/spack/repos/builtin/packages/nginx/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Nginx(AutotoolsPackage): + """nginx [engine x] is an HTTP and reverse proxy server, a mail proxy + server, and a generic TCP/UDP proxy server, originally written by Igor + Sysoev.""" + + homepage = "https://nginx.org/en/" + url = "https://nginx.org/download/nginx-1.12.0.tar.gz" + + version('1.12.0', '995eb0a140455cf0cfc497e5bd7f94b3') + + depends_on('openssl') + depends_on('pcre') + depends_on('zlib') + + def configure_args(self): + args = ['--with-http_ssl_module'] + return args From afdc2f41820aeb4acd1b756f2fb5ae9223afd610 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Wed, 12 Apr 2017 23:58:18 +0200 Subject: [PATCH 0624/2394] Fix adios (#3814) adios currently only supports zfp <= 0.5.0 due to an API change. --- var/spack/repos/builtin/packages/adios/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 870e049fc91..840f1be5183 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -73,7 +73,7 @@ class Adios(AutotoolsPackage): # optional transformations depends_on('zlib', when='+zlib') depends_on('szip', when='+szip') - depends_on('zfp', when='+zfp') + depends_on('zfp@:0.5.0', when='+zfp') # optional transports & file converters depends_on('hdf5@1.8:+mpi', when='+hdf5') From 90f46186f902a551ee84845788b88d115aa0a39c Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 13 Apr 2017 13:59:32 -0600 Subject: [PATCH 0625/2394] New package: pugixml (#3830) --- .../repos/builtin/packages/pugixml/package.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pugixml/package.py diff --git a/var/spack/repos/builtin/packages/pugixml/package.py b/var/spack/repos/builtin/packages/pugixml/package.py new file mode 100644 index 00000000000..f7872bf68fa --- /dev/null +++ b/var/spack/repos/builtin/packages/pugixml/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Pugixml(CMakePackage): + """Light-weight, simple, and fast XML parser for C++ with XPath support""" + + homepage = "http://pugixml.org/" + url = "http://github.com/zeux/pugixml/tarball/v1.8.1" + + version('1.8.1', 'bff935f82fa45bee4d31257d948bcba2') From c08965701fcb084ec3bbc380772126ad7b6137ee Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 13 Apr 2017 14:00:17 -0600 Subject: [PATCH 0626/2394] New package: h5part (#3821) --- .../repos/builtin/packages/h5part/mpiio.patch | 26 +++++++++++ .../repos/builtin/packages/h5part/package.py | 46 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 var/spack/repos/builtin/packages/h5part/mpiio.patch create mode 100644 var/spack/repos/builtin/packages/h5part/package.py diff --git a/var/spack/repos/builtin/packages/h5part/mpiio.patch b/var/spack/repos/builtin/packages/h5part/mpiio.patch new file mode 100644 index 00000000000..152cfec3498 --- /dev/null +++ b/var/spack/repos/builtin/packages/h5part/mpiio.patch @@ -0,0 +1,26 @@ +https://github.com/quinoacomputing/H5Part/commit/b8b106c368c3400b4df3d38e97ae2943d37d3c7d.patch + +From b8b106c368c3400b4df3d38e97ae2943d37d3c7d Mon Sep 17 00:00:00 2001 +From: Jozsef Bakosi +Date: Thu, 28 Jul 2016 08:37:24 -0600 +Subject: [PATCH] Replace H5Pset_fapl_mpiposix with H5Pset_fapl_mpio + +Based on the advice at +http://www.unidata.ucar.edu/mailing_lists/archives/netcdfgroup/2014/msg00188.html. +--- + src/H5Part.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/H5Part.c b/src/H5Part.c +index 433a574..8a1b893 100644 +--- a/src/H5Part.c ++++ b/src/H5Part.c +@@ -246,7 +246,7 @@ _H5Part_open_file ( + /* select the HDF5 VFD */ + if (flags & H5PART_VFD_MPIPOSIX) { + _H5Part_print_info ( "Selecting MPI-POSIX VFD" ); +- if (H5Pset_fapl_mpiposix ( f->access_prop, comm, 0 ) < 0) { ++ if (H5Pset_fapl_mpio ( f->access_prop, comm, 0 ) < 0) { + HANDLE_H5P_SET_FAPL_ERR; + goto error_cleanup; + } diff --git a/var/spack/repos/builtin/packages/h5part/package.py b/var/spack/repos/builtin/packages/h5part/package.py new file mode 100644 index 00000000000..3ff407accd8 --- /dev/null +++ b/var/spack/repos/builtin/packages/h5part/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class H5part(AutotoolsPackage): + """Portable High Performance Parallel Data Interface to HDF5""" + + homepage = "http://vis.lbl.gov/Research/H5Part/" + url = "https://codeforge.lbl.gov/frs/download.php/latestfile/18/H5Part-1.6.6.tar.gz" + + version('1.6.6', '327c63d198e38a12565b74cffdf1f9d7') + patch('mpiio.patch') + + depends_on('mpi') + depends_on('hdf5+mpi') + + def configure_args(self): + args = ['--enable-parallel', + '--with-hdf5=%s' % self.spec['hdf5'].prefix, + 'CC=mpicc', + 'CXX=mpicxx'] + return args From e636bf05fcde75438032d9d3207a275d43c259ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Fri, 14 Apr 2017 21:16:51 +0800 Subject: [PATCH 0627/2394] A new package: bowtie. (#3837) --- .../repos/builtin/packages/bowtie/package.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 var/spack/repos/builtin/packages/bowtie/package.py diff --git a/var/spack/repos/builtin/packages/bowtie/package.py b/var/spack/repos/builtin/packages/bowtie/package.py new file mode 100644 index 00000000000..57c867a06d7 --- /dev/null +++ b/var/spack/repos/builtin/packages/bowtie/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Bowtie(MakefilePackage): + """Bowtie is an ultrafast, memory-efficient short read aligner + for short DNA sequences (reads) from next-gen sequencers.""" + + homepage = "https://sourceforge.net/projects/bowtie-bio/" + url = "https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.0/bowtie-1.2-source.zip" + + version('1.2', '6d97f0ea1a65af11d17cc270cfac4af9') + + variant('tbb', default=False, description='Use Intel thread building block') + + depends_on('tbb', when='+tbb') + + def edit(self, spec, prefix): + makefile = FileFilter('Makefile') + makefile.filter('CC = .*', 'CC = ' + env['CC']) + makefile.filter('CXX = .*', 'CPP = ' + env['CXX']) + + def build(self, spec, prefix): + if '+tbb' in spec: + make() + else: + make('NO_TBB=1') + + def install(self, spec, prefix): + make('prefix={0}'.format(self.prefix), 'install') From 102dcbcbd424edd79550afe22aec36e2407c6bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Fri, 14 Apr 2017 21:29:18 +0800 Subject: [PATCH 0628/2394] Add cub-1.4.1 required by cntk. (#3819) --- var/spack/repos/builtin/packages/cub/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/cub/package.py b/var/spack/repos/builtin/packages/cub/package.py index 9c0c7776bd1..1c9da5c1885 100644 --- a/var/spack/repos/builtin/packages/cub/package.py +++ b/var/spack/repos/builtin/packages/cub/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -from distutils.dir_util import copy_tree class Cub(Package): @@ -34,6 +33,8 @@ class Cub(Package): url = "https://github.com/NVlabs/cub/archive/1.6.4.zip" version('1.6.4', '924fc12c0efb17264c3ad2d611ed1c51') + version('1.4.1', '74a36eb84e5b5f0bf54aa3df39f660b2') def install(self, spec, prefix): - copy_tree('cub', prefix.include) + mkdirp(prefix.include) + install_tree('cub', join_path(prefix.include, 'cub')) From 91d82c44e623737a4f23838c7e390169ba0768d1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 14 Apr 2017 09:38:13 -0500 Subject: [PATCH 0629/2394] Remove mawk dependency from ncurses (#3782) --- var/spack/repos/builtin/packages/ncurses/package.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 8a8091d05d3..a19cdd08ddf 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -41,8 +41,6 @@ class Ncurses(AutotoolsPackage): variant('symlinks', default=False, description='Enables symlinks. Needed on AFS filesystem.') - # Use mawk instead of gawk to prevent a circular dependency - depends_on('mawk', type='build') depends_on('pkg-config', type='build') patch('patch_gcc_5.txt', when='@6.0%gcc@5.0:') @@ -50,7 +48,6 @@ class Ncurses(AutotoolsPackage): def configure_args(self): opts = [ - 'AWK=mawk', 'CFLAGS={0}'.format(self.compiler.pic_flag), 'CXXFLAGS={0}'.format(self.compiler.pic_flag), '--with-shared', From 0405505e21115bb0d4c3cbf24f834418c2fb7c46 Mon Sep 17 00:00:00 2001 From: Mario Melara Date: Fri, 14 Apr 2017 07:56:51 -0700 Subject: [PATCH 0630/2394] Quick fix for #3153 (#3822) --- lib/spack/spack/build_environment.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index a20a7b4db8b..705e845440c 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -225,6 +225,9 @@ def set_compiler_environment_variables(pkg, env): env.set('SPACK_COMPILER_SPEC', str(pkg.spec.compiler)) for mod in compiler.modules: + # Fixes issue https://github.com/LLNL/spack/issues/3153 + if os.environ.get("CRAY_CPU_TARGET") == "mic-knl": + load_module("cce") load_module(mod) compiler.setup_custom_environment(pkg, env) From bec6d99b15750a8dcf01bbae7ea79d66e17b91ac Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 14 Apr 2017 10:13:14 -0500 Subject: [PATCH 0631/2394] Add documentation on explicit param for do_install (#3823) --- lib/spack/spack/package.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 177b4c908b8..d2494939d7f 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1145,22 +1145,24 @@ def do_install(self, Package implementations should override install() to describe their build process. - :param keep_prefix: Keep install prefix on failure. By default, \ + :param bool keep_prefix: Keep install prefix on failure. By default, destroys it. - :param keep_stage: By default, stage is destroyed only if there are \ - no exceptions during build. Set to True to keep the stage + :param bool keep_stage: By default, stage is destroyed only if there + are no exceptions during build. Set to True to keep the stage even with exceptions. - :param install_deps: Install dependencies before installing this \ + :param bool install_deps: Install dependencies before installing this package - :param fake: Don't really build; install fake stub files instead. - :param skip_patch: Skip patch stage of build if True. - :param verbose: Display verbose build output (by default, suppresses \ - it) - :param dirty: Don't clean the build environment before installing. - :param make_jobs: Number of make jobs to use for install. Default is \ - ncpus - :param force: Install again, even if already installed. - :param run_tests: Run tests within the package's install() + :param bool skip_patch: Skip patch stage of build if True. + :param bool verbose: Display verbose build output (by default, + suppresses it) + :param int make_jobs: Number of make jobs to use for install. Default + is ncpus + :param bool run_tests: Run tests within the package's install() + :param bool fake: Don't really build; install fake stub files instead. + :param bool explicit: True if package was explicitly installed, False + if package was implicitly installed (as a dependency). + :param bool dirty: Don't clean the build environment before installing. + :param bool force: Install again, even if already installed. """ if not self.spec.concrete: raise ValueError("Can only install concrete packages: %s." From 331f42b9911b0348cf287a5239d7d50cbdcd0ee5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 14 Apr 2017 10:13:47 -0500 Subject: [PATCH 0632/2394] Convert Image-Magick to AutotoolsPackage (#3828) --- .../repos/builtin/packages/image-magick/package.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/image-magick/package.py b/var/spack/repos/builtin/packages/image-magick/package.py index e32f1967e2a..4683e422eaf 100644 --- a/var/spack/repos/builtin/packages/image-magick/package.py +++ b/var/spack/repos/builtin/packages/image-magick/package.py @@ -25,7 +25,7 @@ from spack import * -class ImageMagick(Package): +class ImageMagick(AutotoolsPackage): """ImageMagick is a software suite to create, edit, compose, or convert bitmap images.""" @@ -45,10 +45,9 @@ class ImageMagick(Package): depends_on('ghostscript') depends_on('ghostscript-fonts') - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec gs_font_dir = join_path(spec['ghostscript-fonts'].prefix.share, "font") - configure('--prefix={0}'.format(prefix), - '--with-gs-font-dir={0}'.format(gs_font_dir)) - make() - make('check') - make('install') + return [ + '--with-gs-font-dir={0}'.format(gs_font_dir) + ] From 3f21b82815fc37edd56c24b89db0efbf8aaa52af Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 14 Apr 2017 10:14:19 -0500 Subject: [PATCH 0633/2394] Add variant to mvapich2 to control thread level (#3832) --- var/spack/repos/builtin/packages/mvapich2/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 7c102877295..e3f6e5f6a6d 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -49,6 +49,15 @@ class Mvapich2(Package): variant('debug', default=False, description='Enable debug info and error messages at run-time') + # Accepted values are: + # single - No threads (MPI_THREAD_SINGLE) + # funneled - Only the main thread calls MPI (MPI_THREAD_FUNNELED) + # serialized - User serializes calls to MPI (MPI_THREAD_SERIALIZED) + # multiple - Fully multi-threaded (MPI_THREAD_MULTIPLE) + # runtime - Alias to "multiple" + variant('threads', default='multiple', + description='Control the level of thread support') + ########## # TODO : Process managers should be grouped into the same variant, # as soon as variant capabilities will be extended See @@ -252,6 +261,7 @@ def install(self, spec, prefix): "--enable-shared", "--enable-romio", "--disable-silent-rules", + "--enable-threads={0}".format(spec.variants['threads'].value), ] if self.compiler.f77 and self.compiler.fc: From 5ce0126c914d5511b8f81b14d229543158dc7724 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 14 Apr 2017 10:38:34 -0500 Subject: [PATCH 0634/2394] Prevent users from building Score-P on macOS (#3825) * Prevent users from building Score-P on macOS * Add link to original reporting issue --- var/spack/repos/builtin/packages/scorep/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index d34ad072ee1..75c88e7be21 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -65,6 +65,11 @@ class Scorep(AutotoolsPackage): variant('shmem', default=False, description='Enable shmem tracing') + # Score-P requires a case-sensitive file system, and therefore + # does not work on macOS + # https://github.com/LLNL/spack/issues/1609 + conflicts('platform=darwin') + def configure_args(self): spec = self.spec From 9922c374aa30a90580c6e462a6b5d721ac850593 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 14 Apr 2017 10:18:32 -0600 Subject: [PATCH 0635/2394] New package: MAD's numdiff (#3811) --- .../builtin/packages/mad-numdiff/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mad-numdiff/package.py diff --git a/var/spack/repos/builtin/packages/mad-numdiff/package.py b/var/spack/repos/builtin/packages/mad-numdiff/package.py new file mode 100644 index 00000000000..45252b2a965 --- /dev/null +++ b/var/spack/repos/builtin/packages/mad-numdiff/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class MadNumdiff(CMakePackage): + """compare unformatted text files with numerical content""" + + homepage = "https://github.com/quinoacomputing/ndiff" + url = "https://github.com/quinoacomputing/ndiff/tarball/20150724" + + version('develop', git='https://github.com/quinoacomputing/ndiff', branch='master') + version('20150724', '7723c0f2499aea8fd960377c5bed28d8') + + variant('debug', default=False, description='Build debug version') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' From a0217747d0f1edda29902a4b37f32c3603d47d8a Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Fri, 14 Apr 2017 19:17:45 +0200 Subject: [PATCH 0636/2394] Readline package: Add ncurses library directory to link line. (#3802) Resolves a issue with finding the ncurses library on MacOS. --- var/spack/repos/builtin/packages/readline/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/readline/package.py b/var/spack/repos/builtin/packages/readline/package.py index 5beafd5829c..e6476d39c36 100644 --- a/var/spack/repos/builtin/packages/readline/package.py +++ b/var/spack/repos/builtin/packages/readline/package.py @@ -45,4 +45,8 @@ class Readline(AutotoolsPackage): patch('readline-6.3-upstream_fixes-1.patch', when='@6.3') def build(self, spec, prefix): - make('SHLIB_LIBS=-lncursesw') + options = [ + 'SHLIB_LIBS=-L{0} -lncursesw'.format(spec['ncurses'].prefix.lib) + ] + + make(*options) From ef647341925f964f996cefbeca669226d60f7a9d Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 14 Apr 2017 11:18:49 -0600 Subject: [PATCH 0637/2394] New package: pstreams (#3840) --- .../builtin/packages/pstreams/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pstreams/package.py diff --git a/var/spack/repos/builtin/packages/pstreams/package.py b/var/spack/repos/builtin/packages/pstreams/package.py new file mode 100644 index 00000000000..30e9fccb107 --- /dev/null +++ b/var/spack/repos/builtin/packages/pstreams/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Pstreams(Package): + """C++ wrapper for the POSIX.2 functions popen(3) and pclose(3)""" + + homepage = "http://pstreams.sourceforge.net/" + url = "https://superb-sea2.dl.sourceforge.net/project/pstreams/pstreams/Release%201.0/pstreams-1.0.1.tar.gz" + + version('1.0.1', '23199e3d12a644a2a0c66ec889d4c064') + + def install(self, spec, prefix): + mkdirp(prefix.include) + install('pstream.h', prefix.include) From 9626a042f8f3f819b3a0a4066a157e2e43045527 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 14 Apr 2017 12:13:15 -0600 Subject: [PATCH 0638/2394] New package: PEGTL (#3839) --- .../repos/builtin/packages/pegtl/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pegtl/package.py diff --git a/var/spack/repos/builtin/packages/pegtl/package.py b/var/spack/repos/builtin/packages/pegtl/package.py new file mode 100644 index 00000000000..7bbea542ad1 --- /dev/null +++ b/var/spack/repos/builtin/packages/pegtl/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +# package has a Makefile, but only to build examples +class Pegtl(Package): + """The Parsing Expression Grammar Template Library (PEGTL) is a + zero-dependency C++11 header-only library for creating parsers + according to a Parsing Expression Grammar (PEG). + """ + + homepage = "https://github.com/taocpp/PEGTL" + url = "https://github.com/taocpp/PEGTL/tarball/1.3.1" + + version('1.3.1', '11efc4beac8f4f5153466d56074e9f0c') + + def install(self, spec, prefix): + mkdirp(prefix.include) + install_tree('pegtl', join_path(prefix.include, 'pegtl')) + install('pegtl.hh', prefix.include) From a4311f242a114b97177a65151b4f195dcbf02239 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 14 Apr 2017 11:13:36 -0700 Subject: [PATCH 0639/2394] vim wasn't linking against ncurses (#3838) See #3829. Vim's configure was searching for ncurses instead of ncursesw. --- var/spack/repos/builtin/packages/vim/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index 4c5035e3ae4..05d9d14639a 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -90,6 +90,8 @@ def configure_args(self): configure_args = ["--enable-fail-if-missing"] + configure_args.append("--with-tlib=ncursesw") + configure_args.append("--with-features=" + feature_set) if '+python' in spec: From acad217cba0360318818d784b96d21aad710f86f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 14 Apr 2017 13:14:45 -0500 Subject: [PATCH 0640/2394] Add a py-pkgconfig package (#3815) --- .../repos/builtin/packages/py-h5py/package.py | 2 +- .../builtin/packages/py-pkgconfig/package.py | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/py-pkgconfig/package.py diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index edca2f45b0e..34ef7b121ce 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -40,7 +40,7 @@ class PyH5py(PythonPackage): # Build dependencies depends_on('py-cython@0.19:', type='build') - depends_on('pkg-config', type='build') + depends_on('py-pkgconfig', type='build') depends_on('py-setuptools', type='build') depends_on('hdf5@1.8.4:') depends_on('hdf5+mpi', when='+mpi') diff --git a/var/spack/repos/builtin/packages/py-pkgconfig/package.py b/var/spack/repos/builtin/packages/py-pkgconfig/package.py new file mode 100644 index 00000000000..87c5b1dac26 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pkgconfig/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPkgconfig(PythonPackage): + """Interface Python with pkg-config.""" + + homepage = "http://github.com/matze/pkgconfig" + url = "https://pypi.io/packages/source/p/pkgconfig/pkgconfig-1.2.2.tar.gz" + + version('1.2.2', '81a8f6ef3371831d081e03db39e09683') + + depends_on('python@2.6:') + depends_on('py-setuptools', type='build') + + depends_on('pkg-config', type=('build', 'run')) + + # TODO: Add a 'test' deptype + # depends_on('py-nose@1.0:', type='test') From 2ed2469b116caad18bab445c22feaddc5c0d4bd8 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 14 Apr 2017 15:51:36 -0700 Subject: [PATCH 0641/2394] Add a package for FLASh (bioinformatics) (#3848) Add a package for FLASh. --- .../repos/builtin/packages/flash/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/flash/package.py diff --git a/var/spack/repos/builtin/packages/flash/package.py b/var/spack/repos/builtin/packages/flash/package.py new file mode 100644 index 00000000000..3c1b82eb586 --- /dev/null +++ b/var/spack/repos/builtin/packages/flash/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Flash(MakefilePackage): + """FLASH (Fast Length Adjustment of SHort reads) is a very + fast and accurate software tool to merge paired-end reads + from next-generation sequencing experiments.""" + + homepage = "https://ccb.jhu.edu/software/FLASH/" + url = "https://sourceforge.net/projects/flashpage/files/FLASH-1.2.11.tar.gz" + + version('1.2.11', 'e4d355023a766afaaab2d62f912b605c') + + depends_on('zlib') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('flash', prefix.bin) From 6574ec31430b5c00563f1942b72e2d830a022d6b Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 14 Apr 2017 18:51:54 -0400 Subject: [PATCH 0642/2394] stage: remove a rogue period (#3846) --- lib/spack/spack/stage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 21db3d75c20..29b68829278 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -455,7 +455,7 @@ def check(self): "control system, but it has been archived on a spack " "mirror. This means we cannot know a checksum for the " "tarball in advance. Be sure that your connection to " - "this mirror is secure!.") + "this mirror is secure!") else: self.fetcher.check() From 9e693336ad2488805393591a418fdf56166e0230 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 14 Apr 2017 16:52:57 -0600 Subject: [PATCH 0643/2394] New package: tut (#3844) --- .../repos/builtin/packages/tut/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/tut/package.py diff --git a/var/spack/repos/builtin/packages/tut/package.py b/var/spack/repos/builtin/packages/tut/package.py new file mode 100644 index 00000000000..9b135e0964d --- /dev/null +++ b/var/spack/repos/builtin/packages/tut/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Tut(Package): + """TUT is a small and portable unit test framework for C++.""" + + homepage = "http://mrzechonek.github.io/tut-framework/" + url = "https://github.com/mrzechonek/tut-framework/tarball/2016-12-19" + + version('2016-12-19', '8b1967fa295ae1ce4d4431c2f811e521') + + extends('python') + + def install(self, spec, prefix): + python('waf', 'configure', '--prefix={0}'.format(prefix)) + python('waf', 'build') + python('waf', 'install') From 7d655f77ee6b2b4ff2ef86bc975bd50e55197013 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 14 Apr 2017 16:53:35 -0600 Subject: [PATCH 0644/2394] New package: boost-mpl-cartesian_product (#3841) --- .../boostmplcartesianproduct/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/boostmplcartesianproduct/package.py diff --git a/var/spack/repos/builtin/packages/boostmplcartesianproduct/package.py b/var/spack/repos/builtin/packages/boostmplcartesianproduct/package.py new file mode 100644 index 00000000000..2744183fed0 --- /dev/null +++ b/var/spack/repos/builtin/packages/boostmplcartesianproduct/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Boostmplcartesianproduct(Package): + """Cartesian_product is an extension to the Boost.MPL library and as such + requires a version of the Boost libraries on your system. + """ + + homepage = "http://www.organicvectory.com/index.php?option=com_content&view=article&id=75:boostmplcartesianproduct&catid=42:boost&Itemid=78" + url = "https://github.com/quinoacomputing/BoostMPLCartesianProduct/tarball/20161205" + + version('20161205', 'b0c8534ee807484ffd161723cbc8fc04') + + def install(self, spec, prefix): + install_tree('boost/mpl', join_path(prefix.include, 'boost', 'mpl')) From bd6a90742c904549de39a2f1a824a582e538ed6a Mon Sep 17 00:00:00 2001 From: healther Date: Sat, 15 Apr 2017 00:54:19 +0200 Subject: [PATCH 0645/2394] Add package gccxml (#3836) * Add package gccxml * Fix spec undefinedwq * fix versions * fix patch when statement * fix flake8... --- .../builtin/packages/gccxml/darwin-gcc.patch | 11 ++++++ .../repos/builtin/packages/gccxml/package.py | 36 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gccxml/darwin-gcc.patch create mode 100644 var/spack/repos/builtin/packages/gccxml/package.py diff --git a/var/spack/repos/builtin/packages/gccxml/darwin-gcc.patch b/var/spack/repos/builtin/packages/gccxml/darwin-gcc.patch new file mode 100644 index 00000000000..55910cea1a9 --- /dev/null +++ b/var/spack/repos/builtin/packages/gccxml/darwin-gcc.patch @@ -0,0 +1,11 @@ +--- gccxml/GCC/CMakeLists.txt 2017-04-05 11:25:32.000000000 +0200 ++++ gccxml/GCC/CMakeLists.txt 2017-04-05 11:25:47.000000000 +0200 +@@ -19,7 +19,7 @@ SET(LIBRARY_OUTPUT_PATH "${GCC_BINARY_DI + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_ANSI_CFLAGS}") + + IF(APPLE AND CMAKE_C_COMPILER_ID MATCHES "^(GNU|Clang)$") +- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -no-cpp-precomp") ++ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + ENDIF() + + IF(CMAKE_C_COMPILER_ID MATCHES "^(Clang)$") diff --git a/var/spack/repos/builtin/packages/gccxml/package.py b/var/spack/repos/builtin/packages/gccxml/package.py new file mode 100644 index 00000000000..ec8363a7ca5 --- /dev/null +++ b/var/spack/repos/builtin/packages/gccxml/package.py @@ -0,0 +1,36 @@ +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Gccxml(CMakePackage): + """gccxml dumps an XML description of C++ source code using an extension of + the GCC C++ compiler.""" + + homepage = "http://gccxml.github.io" + url = "https://github.com/gccxml/gccxml/archive/v0.6.x.tar.gz" + + version('develop', git='https://github.com/gccxml/gccxml.git', branch='master') + version('latest', git='https://github.com/gccxml/gccxml.git', + commit='3afa8ba5be6866e603dcabe80aff79856b558e24', preferred=True) + + patch('darwin-gcc.patch', when='%gcc platform=darwin') From caad110757aa2d4dd3f103d488fd1695f1aa3840 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 14 Apr 2017 16:56:36 -0600 Subject: [PATCH 0646/2394] New package: flecsi (#3780) * New package: flecsi * make fetch independent of #3779 --- .../repos/builtin/packages/flecsi/package.py | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 var/spack/repos/builtin/packages/flecsi/package.py diff --git a/var/spack/repos/builtin/packages/flecsi/package.py b/var/spack/repos/builtin/packages/flecsi/package.py new file mode 100644 index 00000000000..8dea473d033 --- /dev/null +++ b/var/spack/repos/builtin/packages/flecsi/package.py @@ -0,0 +1,64 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Flecsi(CMakePackage): + """FleCSI is a compile-time configurable framework designed to support + multi-physics application development. As such, FleCSI attempts to + provide a very general set of infrastructure design patterns that can + be specialized and extended to suit the needs of a broad variety of + solver and data requirements. Current support includes multi-dimensional + mesh topology, mesh geometry, and mesh adjacency information, + n-dimensional hashed-tree data structures, graph partitioning + interfaces,and dependency closures. + """ + homepage = "http://flecsi.lanl.gov/" + url = "https://github.com/laristra/flecsi/tarball/v1.0" + + version('develop', git='https://github.com/laristra/flecsi', branch='master', submodules=True) + + variant('debug', default=False, description='Build debug version') + + depends_on("cmake@3.1:", type='build') + depends_on("legion") + + # drop when #3779 has been fixed + def do_fetch(self, mirror_only=True): + super(Flecsi, self).do_fetch(mirror_only) + git = which("git") + git('-C', 'flecsi', 'submodule', 'update', '--init', '--recursive', + '--depth=1') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + return ['-DENABLE_UNIT_TESTS=ON'] From 62fb1ad990485ea7abe8d3e6f0d724746f4af770 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 14 Apr 2017 23:38:22 -0400 Subject: [PATCH 0647/2394] hpx5: Add patch to select Spack compiler on Cray (#3798) --- .../builtin/packages/hpx5/configure.patch | 36 +++++++++++++++++++ .../repos/builtin/packages/hpx5/package.py | 3 ++ 2 files changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hpx5/configure.patch diff --git a/var/spack/repos/builtin/packages/hpx5/configure.patch b/var/spack/repos/builtin/packages/hpx5/configure.patch new file mode 100644 index 00000000000..9ac8e24849e --- /dev/null +++ b/var/spack/repos/builtin/packages/hpx5/configure.patch @@ -0,0 +1,36 @@ +--- a/hpx/configure ++++ b/hpx/configure +@@ -18002,33 +18002,21 @@ + case $PE_ENV in #( + CRAY*) : + +- LIBHPX_CPPFLAGS="$LIBHPX_CPPFLAGS ‐h noomp" +- LIBHPX_CFLAGS="$LIBHPX_CFLAGS -h nomessage=1254" +- LIBHPX_CCASFLAGS="$LIBHPX_CCASFLAGS -h gnu -h nomessage=1254" + ;; #( + PGI*) : + + ;; #( + GNU*) : + +- hpx_pe_env_cflags_pedantic="-pedantic" +- hpx_pe_env_cflags_wall="-Wall" + ;; #( + INTEL*) : + + # icc complains about our use of gcc memory model macros, but the complaint + # isn't a problem or helpful, so suppress that one warning. The sync headers + # aren't included by HPX so external users don't care. +- LIBHPX_CFLAGS="$LIBHPX_CFLAGS -wd32013" +- HPX_APPS_CFLAGS="$HPX_APPS_CFLAGS -wd32013" +- hpx_pe_env_cflags_pedantic="-pedantic" +- hpx_pe_env_cflags_wall="-Wall" + ;; #( + CLANG*) : + +- LIBHPX_CPPFLAGS="$LIBHPX_CPPFLAGS -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-private-field" +- hpx_pe_env_cflags_pedantic="-pedantic" +- hpx_pe_env_cflags_wall="-Wall" + + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown programming environment" >&5 + $as_echo "$as_me: WARNING: Unknown programming environment" >&2;} ;; #( diff --git a/var/spack/repos/builtin/packages/hpx5/package.py b/var/spack/repos/builtin/packages/hpx5/package.py index a32fb6dd4f4..a1b1b0fc6b6 100644 --- a/var/spack/repos/builtin/packages/hpx5/package.py +++ b/var/spack/repos/builtin/packages/hpx5/package.py @@ -47,6 +47,9 @@ class Hpx5(AutotoolsPackage): version('1.1.0', '646afb460ecb7e0eea713a634933ce4f') version('1.0.0', '8020822adf6090bd59ed7fe465f6c6cb') + # Don't second-guess what compiler we are using on Cray + patch("configure.patch", when='@4.0.0') + variant('cuda', default=False, description='Enable CUDA support') variant('cxx11', default=False, description='Enable C++11 hpx++ interface') variant('debug', default=False, description='Build debug version of HPX-5') From bd1beedaf52617df6a6baac8ebfbb06de3cdc03d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 15 Apr 2017 10:31:00 -0500 Subject: [PATCH 0648/2394] Allow users to set parallel jobs in config.yaml (#3812) * Allow users to set parallel jobs in config.yaml * Undo change from endash to emdash * Remove parallel config, rename jobs to build_jobs --- etc/spack/defaults/config.yaml | 6 ++++++ lib/spack/docs/config_yaml.rst | 25 +++++++++++++++++++++---- lib/spack/spack/__init__.py | 6 ++++++ lib/spack/spack/build_environment.py | 2 +- lib/spack/spack/package.py | 2 +- lib/spack/spack/schema/config.py | 1 + 6 files changed, 36 insertions(+), 6 deletions(-) diff --git a/etc/spack/defaults/config.yaml b/etc/spack/defaults/config.yaml index 4e02d0973dd..f29acfe0184 100644 --- a/etc/spack/defaults/config.yaml +++ b/etc/spack/defaults/config.yaml @@ -66,3 +66,9 @@ config: # If set to true, `spack install` and friends will NOT clean # potentially harmful variables from the build environment. Use wisely. dirty: false + + + # The default number of jobs to use when running `make` in parallel. + # If set to 4, for example, `spack install` will run `make -j4`. + # If not set, all available cores are used by default. + # build_jobs: 4 diff --git a/lib/spack/docs/config_yaml.rst b/lib/spack/docs/config_yaml.rst index 197bf5c530a..28b258c2e59 100644 --- a/lib/spack/docs/config_yaml.rst +++ b/lib/spack/docs/config_yaml.rst @@ -99,8 +99,8 @@ See :ref:`modules` for details. ``build_stage`` -------------------- -Spack is designed to run out of a user home directories, and on many -systems the home directory a (slow) network filesystem. On most systems, +Spack is designed to run out of a user home directory, and on many +systems the home directory is a (slow) network filesystem. On most systems, building in a temporary filesystem results in faster builds than building in the home directory. Usually, there is also more space available in the temporary location than in the home directory. So, Spack tries to @@ -122,7 +122,7 @@ See :ref:`config-file-variables` for more on ``$tempdir`` and ``$spack``. When Spack builds a package, it creates a temporary directory within the ``build_stage``, and it creates a symbolic link to that directory in -``$spack/var/spack/stage``. This is used totrack the stage. +``$spack/var/spack/stage``. This is used to track the stage. After a package is successfully installed, Spack deletes the temporary directory it used to build. Unsuccessful builds are not deleted, but you @@ -180,7 +180,24 @@ the way packages build. This includes ``LD_LIBRARY_PATH``, ``CPATH``, ``LIBRARY_PATH``, ``DYLD_LIBRARY_PATH``, and others. By default, builds are ``clean``, but on some machines, compilers and -other tools may need custom ``LD_LIBRARY_PATH`` setings to run. You can +other tools may need custom ``LD_LIBRARY_PATH`` settings to run. You can set ``dirty`` to ``true`` to skip the cleaning step and make all builds "dirty" by default. Be aware that this will reduce the reproducibility of builds. + +-------------- +``build_jobs`` +-------------- + +Unless overridden in a package or on the command line, Spack builds all +packages in parallel. For a build system that uses Makefiles, this means +running ``make -j``, where ``build_jobs`` is the number of +threads to use. + +The default parallelism is equal to the number of cores on your machine. +If you work on a shared login node or have a strict ulimit, it may be +necessary to set the default to a lower value. By setting ``build_jobs`` +to 4, for example, commands like ``spack install`` will run ``make -j4`` +instead of hogging every core. + +To build all software in serial, set ``build_jobs`` to 1. diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 345a804dfea..85d881a7690 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -23,6 +23,7 @@ # 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 multiprocessing import os import sys import tempfile @@ -141,6 +142,11 @@ dirty = _config.get('dirty', False) +# The number of jobs to use when building in parallel. +# By default, use all cores on the machine. +build_jobs = _config.get('build_jobs', multiprocessing.cpu_count()) + + #----------------------------------------------------------------------------- # When packages call 'from spack import *', this extra stuff is brought in. # diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 705e845440c..4a8487daabd 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -357,7 +357,7 @@ def set_module_variables_for_package(pkg, module): This makes things easier for package writers. """ # number of jobs spack will build with. - jobs = multiprocessing.cpu_count() + jobs = spack.build_jobs if not pkg.parallel: jobs = 1 elif pkg.make_jobs: diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index d2494939d7f..108ddeff07f 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -485,7 +485,7 @@ class SomePackage(Package): parallel = True """# jobs to use for parallel make. If set, overrides default of ncpus.""" - make_jobs = None + make_jobs = spack.build_jobs """By default do not run tests within package's install()""" run_tests = False diff --git a/lib/spack/spack/schema/config.py b/lib/spack/spack/schema/config.py index 7a41c0e14ae..6c655db9154 100644 --- a/lib/spack/spack/schema/config.py +++ b/lib/spack/spack/schema/config.py @@ -63,6 +63,7 @@ 'verify_ssl': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'dirty': {'type': 'boolean'}, + 'build_jobs': {'type': 'integer', 'minimum': 1}, } }, }, From 5aa273b3198850301a7a2927e07c5ccabab6b08a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 15 Apr 2017 11:46:28 -0500 Subject: [PATCH 0649/2394] Fix flake8 changed files detection (#3855) --- lib/spack/spack/cmd/flake8.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index a6dc941190d..546a27c7658 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -88,7 +88,7 @@ def changed_files(): git_args = [ # Add changed files committed since branching off of develop - ['diff', '--name-only', '--diff-filter=ACMR', 'develop'], + ['diff', '--name-only', '--diff-filter=ACMR', 'develop...'], # Add changed files that have been staged but not yet committed ['diff', '--name-only', '--diff-filter=ACMR', '--cached'], # Add changed files that are unstaged From 1d514f48bc25952daa60dac8373f53e59ce04746 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 15 Apr 2017 20:57:19 -0600 Subject: [PATCH 0650/2394] random123: install uniform.hpp as well (#3856) --- var/spack/repos/builtin/packages/random123/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/random123/package.py b/var/spack/repos/builtin/packages/random123/package.py index b5096f67673..d61f2ca74ec 100644 --- a/var/spack/repos/builtin/packages/random123/package.py +++ b/var/spack/repos/builtin/packages/random123/package.py @@ -41,3 +41,5 @@ def install(self, spec, prefix): # We have to do our own install here. install_tree('include', prefix.include) install('./LICENSE', "%s" % prefix) + # used by some packages, e.g. quinoa + install('examples/uniform.hpp', prefix.include) From fdc8f71a5c28f04387872761a94d01ce8a02e19e Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 15 Apr 2017 20:57:44 -0600 Subject: [PATCH 0651/2394] trilinos: allow to compile exodus (#3857) --- var/spack/repos/builtin/packages/trilinos/package.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 3c13dc68f82..94220348932 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -86,6 +86,7 @@ class Trilinos(CMakePackage): variant('debug', default=False, description='Builds a debug version of the libraries') variant('boost', default=True, description='Compile with Boost') + variant('exodus', default=False, description='Compile with Exodus from SEACAS') # Everything should be compiled with -fpic depends_on('blas') @@ -371,11 +372,20 @@ def cmake_args(self): # disable due to compiler / config errors: options.extend([ - '-DTrilinos_ENABLE_SEACAS=OFF', '-DTrilinos_ENABLE_Pike=OFF', '-DTrilinos_ENABLE_STK=OFF' ]) + # exodus + if '+exodus' in spec: + options.extend([ + '-DTrilinos_ENABLE_SEACAS:BOOL=ON' + ]) + else: + options.extend([ + '-DTrilinos_ENABLE_SEACAS:BOOL=OFF' + ]) + # disable due to compiler / config errors: if spec.satisfies('%xl') or spec.satisfies('%xl_r'): options.extend([ From a3378ccd3de5bf1e2a5c1ac3acfc4855def3440d Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 16 Apr 2017 07:47:00 -0600 Subject: [PATCH 0652/2394] charm: add support for shared linking (#3859) --- var/spack/repos/builtin/packages/charm/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/charm/package.py b/var/spack/repos/builtin/packages/charm/package.py index 7072e37cd3c..a12eb004453 100644 --- a/var/spack/repos/builtin/packages/charm/package.py +++ b/var/spack/repos/builtin/packages/charm/package.py @@ -73,9 +73,9 @@ class Charm(Package): "Enable SMP parallelism (does not work with +multicore)")) variant("tcp", default=False, description="Use TCP as transport mechanism (requires +net)") + variant("shared", default=False, description="Enable shared link support") # Note: We could add variants for AMPI, LIBS, bigemulator, msa, Tau - # Note: We could support shared libraries depends_on("mpi", when="+mpi") depends_on("papi", when="+papi") @@ -163,6 +163,8 @@ def install(self, spec, prefix): "The +tcp variant requires " "the +net communication mechanism") options.append("tcp") + if "+shared" in spec: + options.append("--build-shared") # Call "make" via the build script # Note: This builds Charm++ in the "tmp" subdirectory of the From 675a67e2cafee39d52d5a54ece8272d11ff66837 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 16 Apr 2017 07:47:46 -0600 Subject: [PATCH 0653/2394] random123: put uniform.hpp in right subfolder (#3858) --- var/spack/repos/builtin/packages/random123/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/random123/package.py b/var/spack/repos/builtin/packages/random123/package.py index d61f2ca74ec..1ee51bb107a 100644 --- a/var/spack/repos/builtin/packages/random123/package.py +++ b/var/spack/repos/builtin/packages/random123/package.py @@ -42,4 +42,4 @@ def install(self, spec, prefix): install_tree('include', prefix.include) install('./LICENSE', "%s" % prefix) # used by some packages, e.g. quinoa - install('examples/uniform.hpp', prefix.include) + install('examples/uniform.hpp', join_path(prefix.include, 'Random123')) From cc747d6b6f30238ed6f4ecec291ca0d223710057 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 16 Apr 2017 12:23:26 -0500 Subject: [PATCH 0654/2394] Remove redundant cmake dependencies (#3860) --- var/spack/repos/builtin/packages/cppad/package.py | 2 -- var/spack/repos/builtin/packages/elemental/package.py | 1 - var/spack/repos/builtin/packages/libsplash/package.py | 1 - var/spack/repos/builtin/packages/pngwriter/package.py | 1 - var/spack/repos/builtin/packages/symengine/package.py | 4 ---- 5 files changed, 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/cppad/package.py b/var/spack/repos/builtin/packages/cppad/package.py index e17a0702943..c13c2c5be98 100644 --- a/var/spack/repos/builtin/packages/cppad/package.py +++ b/var/spack/repos/builtin/packages/cppad/package.py @@ -34,8 +34,6 @@ class Cppad(CMakePackage): version('20170114', '565a534dc813fa1289764222cd8c11ea') version('develop', git='https://github.com/coin-or/CppAD.git') - depends_on('cmake', type='build') - def cmake_args(self): # This package does not obey CMAKE_INSTALL_PREFIX args = [ diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index 24b5bf8d152..0021c7832bb 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -62,7 +62,6 @@ class Elemental(CMakePackage): variant('scalapack', default=False, description='Build with ScaLAPACK library') - depends_on('cmake', type='build') # Note that this forces us to use OpenBLAS until #1712 is fixed depends_on('blas', when='~openmp_blas ~int64_blas') # Hack to forward variant to openblas package diff --git a/var/spack/repos/builtin/packages/libsplash/package.py b/var/spack/repos/builtin/packages/libsplash/package.py index eb302e596b3..61ead25177b 100644 --- a/var/spack/repos/builtin/packages/libsplash/package.py +++ b/var/spack/repos/builtin/packages/libsplash/package.py @@ -50,7 +50,6 @@ class Libsplash(CMakePackage): variant('mpi', default=True, description='Enable parallel I/O (one-file aggregation) support') - depends_on('cmake', type='build') depends_on('hdf5@1.8.6:') depends_on('hdf5+mpi', when='+mpi') depends_on('mpi', when='+mpi') diff --git a/var/spack/repos/builtin/packages/pngwriter/package.py b/var/spack/repos/builtin/packages/pngwriter/package.py index 29501297652..ef3e28aded0 100644 --- a/var/spack/repos/builtin/packages/pngwriter/package.py +++ b/var/spack/repos/builtin/packages/pngwriter/package.py @@ -45,7 +45,6 @@ class Pngwriter(CMakePackage): version('0.6.0', '0a19bc55c5f6379fea7343752fd3ffae') version('0.5.6', 'c13bd1fdc0e331a246e6127b5f262136') - depends_on('cmake', type='build') depends_on('libpng') depends_on('zlib') depends_on('freetype') diff --git a/var/spack/repos/builtin/packages/symengine/package.py b/var/spack/repos/builtin/packages/symengine/package.py index 136575e48c7..575509cd5e2 100644 --- a/var/spack/repos/builtin/packages/symengine/package.py +++ b/var/spack/repos/builtin/packages/symengine/package.py @@ -55,10 +55,6 @@ class Symengine(CMakePackage): variant('shared', default=True, description='Enables the build of shared libraries') - # Build dependencies - depends_on('cmake', type='build') - - # Other dependencies # NOTE: mpir is a drop-in replacement for gmp # NOTE: [mpc,mpfr,flint,piranha] could also be built against mpir depends_on('boost', when='+boostmp') From 3331c042af503c8e8c9a43510d5e3bd9823b819c Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Mon, 17 Apr 2017 16:15:02 +0200 Subject: [PATCH 0655/2394] Fix udunits2 (#3809) --- var/spack/repos/builtin/packages/udunits2/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/udunits2/package.py b/var/spack/repos/builtin/packages/udunits2/package.py index 1f2243907e9..a6128b09298 100644 --- a/var/spack/repos/builtin/packages/udunits2/package.py +++ b/var/spack/repos/builtin/packages/udunits2/package.py @@ -31,7 +31,9 @@ class Udunits2(AutotoolsPackage): homepage = "http://www.unidata.ucar.edu/software/udunits" url = "https://github.com/Unidata/UDUNITS-2/archive/v2.2.23.tar.gz" - version('2.2.25', '373106a0fcd20c40fc53a975c9fa4fca') + # When adding new versions, check whether they are listed at + # ftp://ftp.unidata.ucar.edu/pub/udunits first. Git tags may change + # for unreleased versions. version('2.2.24', '316911493e3b5c28ff7019223b4e27ea') version('2.2.23', '0c0d9b1ebd7ad066233bedf40e66f1ba') version('2.2.21', '167738b3ec886da1b92239de9cbbbc39') From 0ed18de8365f6e951938dc686392aaf7be3e621c Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 17 Apr 2017 16:16:18 +0200 Subject: [PATCH 0656/2394] opneblas: fix compilation with clang (#3862) * opneblas: fix compilation with clang * indentation --- .../packages/openblas/openblas0.2.19.diff | 847 ++++++++++++++++++ .../builtin/packages/openblas/package.py | 10 +- 2 files changed, 851 insertions(+), 6 deletions(-) create mode 100644 var/spack/repos/builtin/packages/openblas/openblas0.2.19.diff diff --git a/var/spack/repos/builtin/packages/openblas/openblas0.2.19.diff b/var/spack/repos/builtin/packages/openblas/openblas0.2.19.diff new file mode 100644 index 00000000000..442612d5cfc --- /dev/null +++ b/var/spack/repos/builtin/packages/openblas/openblas0.2.19.diff @@ -0,0 +1,847 @@ +diff --git a/cpuid_x86.c b/cpuid_x86.c +index bbd377f..dff1507 100644 +--- a/cpuid_x86.c ++++ b/cpuid_x86.c +@@ -1110,6 +1110,9 @@ int get_cpuname(void){ + break; + case 3: + switch (model) { ++ case 7: ++ // Bay Trail ++ return CPUTYPE_ATOM; + case 10: + case 14: + // Ivy Bridge +diff --git a/driver/others/dynamic.c b/driver/others/dynamic.c +index 18f85c3..a09660f 100644 +--- a/driver/others/dynamic.c ++++ b/driver/others/dynamic.c +@@ -232,6 +232,7 @@ static gotoblas_t *get_coretype(void){ + return &gotoblas_NEHALEM; //OS doesn't support AVX. Use old kernels. + } + } ++ if (model == 7) return &gotoblas_ATOM; //Bay Trail + return NULL; + case 4: + //Intel Haswell +diff --git a/kernel/x86_64/dgemm_kernel_4x8_sandy.S b/kernel/x86_64/dgemm_kernel_4x8_sandy.S +index a52bb07..926395c 100644 +--- a/kernel/x86_64/dgemm_kernel_4x8_sandy.S ++++ b/kernel/x86_64/dgemm_kernel_4x8_sandy.S +@@ -277,7 +277,7 @@ LEAQ (, %rax, SIZE), %rax; + LEAQ (ptrba, %rax, 8), ptrba; + LEAQ (ptrbb, %rax, 4), ptrbb; + #endif +-#### Initial Results Register #### ++//#### Initial Results Register #### + PREFETCH2 0*SIZE(prebb); + XOR_DY yvec15, yvec15, yvec15; + PREFETCH2 8*SIZE(prebb); +@@ -317,7 +317,7 @@ ALIGN_5; + .L2_bodyB:; + # Computing kernel + +-#### Unroll times 1 #### ++//#### Unroll times 1 #### + LD_DY 4*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; + SHUF_DY $0x03, yvec2, yvec2, yvec4; +@@ -345,7 +345,7 @@ MUL_DY yvec1, yvec5, yvec7; + ADD_DY yvec10, yvec6, yvec10; + ADD_DY yvec8, yvec7, yvec8; + +-#### Unroll times 2 #### ++//#### Unroll times 2 #### + LD_DY 12*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; + SHUF_DY $0x03, yvec2, yvec2, yvec4; +@@ -373,7 +373,7 @@ MUL_DY yvec1, yvec5, yvec7; + ADD_DY yvec10, yvec6, yvec10; + ADD_DY yvec8, yvec7, yvec8; + +-#### Unroll times 3 #### ++//#### Unroll times 3 #### + LD_DY 20*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; + SHUF_DY $0x03, yvec2, yvec2, yvec4; +@@ -402,7 +402,7 @@ MUL_DY yvec1, yvec5, yvec7; + ADD_DY yvec10, yvec6, yvec10; + ADD_DY yvec8, yvec7, yvec8; + +-#### Unroll times 4 #### ++//#### Unroll times 4 #### + LD_DY 28*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; + SHUF_DY $0x03, yvec2, yvec2, yvec4; +@@ -446,7 +446,7 @@ TEST $2, %rax; + JLE .L3_loopE; + ALIGN_5 + .L3_bodyB: +-#### Unroll times 1 #### ++//#### Unroll times 1 #### + PREFETCH0 64*SIZE(ptrba) + LD_DY 4*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; +@@ -475,7 +475,7 @@ MUL_DY yvec1, yvec5, yvec7; + ADD_DY yvec10, yvec6, yvec10; + ADD_DY yvec8, yvec7, yvec8; + +-#### Unroll times 2 #### ++//#### Unroll times 2 #### + PREFETCH0 72*SIZE(ptrba) + LD_DY 12*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; +@@ -516,7 +516,7 @@ TEST $1, %rax; + JLE .L4_loopE; + ALIGN_5 + .L4_bodyB:; +-#### Unroll times 1 #### ++//#### Unroll times 1 #### + PREFETCH0 64*SIZE(ptrba) + LD_DY 4*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; +@@ -544,9 +544,9 @@ ADD_DY yvec10, yvec6, yvec10; + ADD_DY yvec8, yvec7, yvec8; + + .L4_loopE:; +-#### Load Alpha #### ++//#### Load Alpha #### + BROAD_DY MEMALPHA,yvec7; +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + MUL_DY yvec7,yvec15,yvec15; + MUL_DY yvec7,yvec14,yvec14; + MUL_DY yvec7,yvec13,yvec13; +@@ -555,7 +555,7 @@ MUL_DY yvec7,yvec11,yvec11; + MUL_DY yvec7,yvec10,yvec10; + MUL_DY yvec7,yvec9,yvec9; + MUL_DY yvec7,yvec8,yvec8; +-#### Reverse the Results #### ++//#### Reverse the Results #### + MOV_DY yvec15,yvec7; + REVS_DY $0x0a,yvec13,yvec15,yvec15; + REVS_DY $0x0a,yvec7,yvec13,yvec13; +@@ -568,13 +568,13 @@ REVS_DY $0x0a,yvec7,yvec9,yvec9; + MOV_DY yvec10,yvec7; + REVS_DY $0x0a,yvec8,yvec10,yvec10; + REVS_DY $0x0a,yvec7,yvec8,yvec8; +-#### Testing alignment #### ++//#### Testing alignment #### + MOVQ C0, %rax; + OR ldc, %rax; + TEST $15, %rax; + JNE .L4_loopEx; # Unalign part write back + ALIGN_5 +-#### Writing Back #### ++//#### Writing Back #### + EXTRA_DY $1,yvec15,xvec7; + EXTRA_DY $1,yvec14,xvec6; + EXTRA_DY $1,yvec13,xvec5; +@@ -776,7 +776,7 @@ LEAQ (, %rax, SIZE), %rax; + LEAQ (ptrba, %rax, 4), ptrba; + LEAQ (ptrbb, %rax, 4), ptrbb; + #endif +-#### Initial Results Register #### ++//#### Initial Results Register #### + XOR_DY yvec15, yvec15, yvec15; + XOR_DY yvec13, yvec13, yvec13; + LD_DY 0*SIZE(ptrbb), yvec2; +@@ -805,7 +805,7 @@ ALIGN_5; + .L6_bodyB:; + # Computing kernel + +-#### Untoll time 1 #### ++//#### Untoll time 1 #### + LD_DY 4*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; + ADD_DY yvec15, yvec6, yvec15; +@@ -821,7 +821,7 @@ VPERMILP_DY $0x05, yvec2, yvec3; + MUL_DY yvec0, yvec5, yvec7; + ADD_DY yvec9, yvec7, yvec9; + +-#### Untoll time 2 #### ++//#### Untoll time 2 #### + LD_DY 8*SIZE(ptrba), yvec0; + MUL_DY yvec1, yvec2, yvec6; + ADD_DY yvec15, yvec6, yvec15; +@@ -837,7 +837,7 @@ VPERMILP_DY $0x05, yvec2, yvec3; + MUL_DY yvec1, yvec5, yvec7; + ADD_DY yvec9, yvec7, yvec9; + +-#### Untoll time 3 #### ++//#### Untoll time 3 #### + LD_DY 12*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; + ADD_DY yvec15, yvec6, yvec15; +@@ -855,7 +855,7 @@ ADDQ $16*SIZE, ptrbb; + MUL_DY yvec0, yvec5, yvec7; + ADD_DY yvec9, yvec7, yvec9; + +-#### Untoll time 4 #### ++//#### Untoll time 4 #### + LD_DY 0*SIZE(ptrba), yvec0; + MUL_DY yvec1, yvec2, yvec6; + ADD_DY yvec15, yvec6, yvec15; +@@ -883,7 +883,7 @@ TEST $2, %rax; + JLE .L7_loopE; + ALIGN_5 + .L7_bodyB:; +-#### Untoll time 1 #### ++//#### Untoll time 1 #### + LD_DY 4*SIZE(ptrba), yvec1; + MUL_DY yvec0, yvec2, yvec6; + ADD_DY yvec15, yvec6, yvec15; +@@ -901,7 +901,7 @@ ADDQ $8*SIZE, ptrbb; + MUL_DY yvec0, yvec5, yvec7; + ADD_DY yvec9, yvec7, yvec9; + +-#### Untoll time 2 #### ++//#### Untoll time 2 #### + LD_DY 0*SIZE(ptrba), yvec0; + MUL_DY yvec1, yvec2, yvec6; + ADD_DY yvec15, yvec6, yvec15; +@@ -927,7 +927,7 @@ TEST $1, %rax; + JLE .L8_loopE; + ALIGN_5 + .L8_bodyB:; +-#### Untoll time 1 #### ++//#### Untoll time 1 #### + MUL_DY yvec0, yvec2, yvec6; + ADD_DY yvec15, yvec6, yvec15; + SHUF_DY $0x03, yvec2, yvec2, yvec4; +@@ -943,27 +943,27 @@ MUL_DY yvec0, yvec5, yvec7; + ADD_DY yvec9, yvec7, yvec9; + + .L8_loopE:; +-#### Load Alpha #### ++//#### Load Alpha #### + BROAD_DY MEMALPHA, yvec7; +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + MUL_DY yvec7,yvec15,yvec15; + MUL_DY yvec7,yvec13,yvec13; + MUL_DY yvec7,yvec11,yvec11; + MUL_DY yvec7,yvec9,yvec9; +-#### Reverse the Results #### ++//#### Reverse the Results #### + MOV_DY yvec15, yvec7; + REVS_DY $0x0a,yvec13,yvec15,yvec15; + REVS_DY $0x0a,yvec7,yvec13,yvec13; + MOV_DY yvec11,yvec7; + REVS_DY $0x0a,yvec9,yvec11,yvec11; + REVS_DY $0x0a,yvec7,yvec9,yvec9; +-#### Testing alignment #### ++//#### Testing alignment #### + MOVQ C0, %rax; + OR ldc, %rax; + TEST $15, %rax; + JNE .L8_loopEx; # Unalign part write back + ALIGN_5 +-#### Writing Back #### ++//#### Writing Back #### + EXTRA_DY $1,yvec15,xvec7; + EXTRA_DY $1,yvec13,xvec5; + EXTRA_DY $1,yvec11,xvec3; +@@ -1076,7 +1076,7 @@ LEAQ (, %rax, SIZE), %rax; + LEAQ (ptrba, %rax, 2), ptrba; + LEAQ (ptrbb, %rax, 4), ptrbb + #endif +-#### Initial Results Register #### ++//#### Initial Results Register #### + LD_DX 0*SIZE(ptrbb), xvec2; + XOR_DY yvec15, yvec15, yvec15; + LD_DX 2*SIZE(ptrbb), xvec3; +@@ -1106,7 +1106,7 @@ ALIGN_5; + .L10_bodyB:; + # Computing kernel + +-##### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 4*SIZE(ptrbb), xvec6; + SHUF_DX $0x4e, xvec3, xvec5; + MUL_DX xvec0, xvec2, xvec2; +@@ -1123,7 +1123,7 @@ SHUF_DX $0x4e, xvec6, xvec4; + MUL_DX xvec0, xvec5, xvec5; + ADD_DX xvec5, xvec9, xvec9; + +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DX 8*SIZE(ptrbb), xvec2; + SHUF_DX $0x4e, xvec7, xvec5; + MUL_DX xvec1, xvec6, xvec6; +@@ -1140,7 +1140,7 @@ SHUF_DX $0x4e, xvec2, xvec4; + MUL_DX xvec1, xvec5, xvec5; + ADD_DX xvec5, xvec9, xvec9; + +-##### Unroll time 3 #### ++//#### Unroll time 3 #### + LD_DX 12*SIZE(ptrbb), xvec6; + SHUF_DX $0x4e, xvec3, xvec5; + MUL_DX xvec0, xvec2, xvec2; +@@ -1159,7 +1159,7 @@ ADDQ $8*SIZE, ptrba; + MUL_DX xvec0, xvec5, xvec5; + ADD_DX xvec5, xvec9, xvec9; + +-#### Unroll time 4 #### ++//#### Unroll time 4 #### + LD_DX 0*SIZE(ptrbb), xvec2; + SHUF_DX $0x4e, xvec7, xvec5; + MUL_DX xvec1, xvec6, xvec6; +@@ -1188,7 +1188,7 @@ TEST $2, %rax; + JLE .L11_loopE; + ALIGN_5 + .L11_bodyB:; +-##### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 4*SIZE(ptrbb), xvec6; + SHUF_DX $0x4e, xvec3, xvec5; + MUL_DX xvec0, xvec2, xvec2; +@@ -1208,7 +1208,7 @@ ADDQ $4*SIZE, ptrba; + MUL_DX xvec0, xvec5, xvec5; + ADD_DX xvec5, xvec9, xvec9; + +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DX 0*SIZE(ptrbb), xvec2; + SHUF_DX $0x4e, xvec7, xvec5; + MUL_DX xvec1, xvec6, xvec6; +@@ -1251,27 +1251,27 @@ MUL_DX xvec0, xvec5, xvec5; + ADD_DX xvec5, xvec9, xvec9; + + .L12_loopE:; +-#### Load Alpha #### ++//#### Load Alpha #### + BROAD_DX MEMALPHA, xvec7; +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + MUL_DX xvec7, xvec15, xvec15; + MUL_DX xvec7, xvec13, xvec13; + MUL_DX xvec7, xvec11, xvec11; + MUL_DX xvec7, xvec9, xvec9; +-#### Reverse the Results #### ++//#### Reverse the Results #### + MOV_DX xvec15, xvec6; + REVS_DX xvec13, xvec15, xvec15; + REVS_DX xvec6, xvec13, xvec13; + MOV_DX xvec11, xvec6; + REVS_DX xvec9, xvec11, xvec11; + REVS_DX xvec6, xvec9, xvec9; +-#### Testing Alignment #### ++//#### Testing Alignment #### + MOVQ C0, %rax; + OR ldc, %rax; + TEST $15, %rax; + JNE .L12_loopEx; + ALIGN_5 +-#### Writing Back #### ++//#### Writing Back #### + #ifndef TRMMKERNEL + ADD_DX 0*SIZE(C0), xvec13, xvec13; + ADD_DX 0*SIZE(C0, ldc, 1), xvec15, xvec15; +@@ -1345,7 +1345,7 @@ LEAQ (,%rax, SIZE), %rax; + ADDQ %rax, ptrba; + LEAQ (ptrbb, %rax, 4), ptrbb; + #endif +-#### Initial Results Register #### ++//#### Initial Results Register #### + XOR_DY yvec15, yvec15, yvec15; + #ifndef TRMMKERNEL + MOVQ bk, k; +@@ -1429,11 +1429,11 @@ ADDQ $1*SIZE, ptrba; + ADDQ $4*SIZE, ptrbb; + + .L16_loopE: +-#### Load Alpha #### ++//#### Load Alpha #### + BROAD_DY MEMALPHA, yvec7; +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + MUL_DY yvec15, yvec7, yvec15; +-#### Writing Back #### ++//#### Writing Back #### + EXTRA_DY $1, yvec15, xvec7; + #ifndef TRMMKERNEL + LDL_DX 0*SIZE(C0), xvec0, xvec0; +@@ -1497,7 +1497,7 @@ LEAQ (, %rax, SIZE), %rax; + LEAQ (ptrba, %rax, 8), ptrba; + LEAQ (ptrbb, %rax, 2), ptrbb; + #endif +-#### Initial Results Register #### ++//#### Initial Results Register #### + XOR_DY yvec15, yvec15, yvec15; + XOR_DY yvec14, yvec14, yvec14; + XOR_DY yvec13, yvec13, yvec13; +@@ -1526,7 +1526,7 @@ JLE .L211_loopE; + ALIGN_5; + .L211_bodyB: + # Computing kernel +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 0*SIZE(ptrba), xvec0; + LD_DX 0*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -1563,7 +1563,7 @@ ADD_DX xvec6, xvec9, xvec9; + MUL_DX xvec3, xvec7, xvec7; + ADD_DX xvec7, xvec8, xvec8; + +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DX 8*SIZE(ptrba), xvec0; + LD_DX 2*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -1600,7 +1600,7 @@ ADD_DX xvec6, xvec9, xvec9; + MUL_DX xvec3, xvec7, xvec7; + ADD_DX xvec7, xvec8, xvec8; + +-#### Unroll time 3 #### ++//#### Unroll time 3 #### + LD_DX 16*SIZE(ptrba), xvec0; + LD_DX 4*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -1637,7 +1637,7 @@ ADD_DX xvec6, xvec9, xvec9; + MUL_DX xvec3, xvec7, xvec7; + ADD_DX xvec7, xvec8, xvec8; + +-#### Unroll time 4 #### ++//#### Unroll time 4 #### + LD_DX 24*SIZE(ptrba), xvec0; + LD_DX 6*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -1689,7 +1689,7 @@ JLE .L212_loopE; + ALIGN_5; + .L212_bodyB: + # Computing kernel +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 0*SIZE(ptrba), xvec0; + LD_DX 0*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -1726,7 +1726,7 @@ ADD_DX xvec6, xvec9, xvec9; + MUL_DX xvec3, xvec7, xvec7; + ADD_DX xvec7, xvec8, xvec8; + +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DX 8*SIZE(ptrba), xvec0; + LD_DX 2*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -1775,7 +1775,7 @@ TEST $1, %rax; + JLE .L213_loopE; + ALIGN_5 + .L213_bodyB: +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 0*SIZE(ptrba), xvec0; + LD_DX 0*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -1815,7 +1815,7 @@ MUL_DX xvec3, xvec7, xvec7; + ADD_DX xvec7, xvec8, xvec8; + + .L213_loopE: +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + BROAD_DX MEMALPHA, xvec7; + MUL_DX xvec7, xvec15, xvec15; + MUL_DX xvec7, xvec14, xvec14; +@@ -1825,7 +1825,7 @@ MUL_DX xvec7, xvec11, xvec11; + MUL_DX xvec7, xvec10, xvec10; + MUL_DX xvec7, xvec9, xvec9; + MUL_DX xvec7, xvec8, xvec8; +-#### Reverse ##### ++//#### Reverse #### + MOV_DX xvec15, xvec6; + REVS_DX xvec11, xvec15, xvec15; + REVS_DX xvec6, xvec11, xvec11; +@@ -1838,13 +1838,13 @@ REVS_DX xvec6, xvec9, xvec9; + MOV_DX xvec12, xvec6; + REVS_DX xvec8, xvec12, xvec12; + REVS_DX xvec6, xvec8, xvec8; +-#### Testing Alignment #### ++//#### Testing Alignment #### + MOVQ C0, %rax; + OR ldc, %rax; + TEST $15, %rax; + JNE .L213_loopEx; + ALIGN_5 +-#### Writing Back #### ++//#### Writing Back #### + #ifndef TRMMKERNEL + ADD_DX 0*SIZE(C0), xvec11, xvec11; + ADD_DX 2*SIZE(C0), xvec10, xvec10; +@@ -1952,7 +1952,7 @@ LEAQ (,%rax, SIZE), %rax; + LEAQ (ptrba, %rax, 4), ptrba; + LEAQ (ptrbb, %rax, 2), ptrbb; + #endif +-#### Initial Results Register #### ++//#### Initial Results Register #### + XOR_DY yvec15, yvec15, yvec15; + XOR_DY yvec14, yvec14, yvec14; + XOR_DY yvec11, yvec11, yvec11; +@@ -1977,7 +1977,7 @@ JLE .L221_loopE; + ALIGN_5 + .L221_bodyB:; + # Computing kernel +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 0*SIZE(ptrba), xvec0; + LD_DX 0*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -1996,7 +1996,7 @@ ADD_DX xvec4, xvec11, xvec11; + MUL_DX xvec1, xvec5, xvec5; + ADD_DX xvec5, xvec10, xvec10; + +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DX 4*SIZE(ptrba), xvec0; + LD_DX 2*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -2015,7 +2015,7 @@ ADD_DX xvec4, xvec11, xvec11; + MUL_DX xvec1, xvec5, xvec5; + ADD_DX xvec5, xvec10, xvec10; + +-#### Unroll time 3 #### ++//#### Unroll time 3 #### + LD_DX 8*SIZE(ptrba), xvec0; + LD_DX 4*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -2034,7 +2034,7 @@ ADD_DX xvec4, xvec11, xvec11; + MUL_DX xvec1, xvec5, xvec5; + ADD_DX xvec5, xvec10, xvec10; + +-#### Unroll time 4 #### ++//#### Unroll time 4 #### + LD_DX 12*SIZE(ptrba), xvec0; + LD_DX 6*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -2067,7 +2067,7 @@ TEST $2, %rax; + JLE .L222_loopE; + ALIGN_5 + .L222_bodyB: +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 0*SIZE(ptrba), xvec0; + LD_DX 0*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -2086,7 +2086,7 @@ ADD_DX xvec4, xvec11, xvec11; + MUL_DX xvec1, xvec5, xvec5; + ADD_DX xvec5, xvec10, xvec10; + +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DX 4*SIZE(ptrba), xvec0; + LD_DX 2*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -2116,7 +2116,7 @@ TEST $1, %rax; + JLE .L223_loopE; + ALIGN_5 + .L223_bodyB: +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 0*SIZE(ptrba), xvec0; + LD_DX 0*SIZE(ptrbb), xvec4; + MOV_DX xvec4, xvec5; +@@ -2138,26 +2138,26 @@ MUL_DX xvec1, xvec5, xvec5; + ADD_DX xvec5, xvec10, xvec10; + + .L223_loopE: +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + BROAD_DX MEMALPHA, xvec7; + MUL_DX xvec7, xvec15, xvec15; + MUL_DX xvec7, xvec14, xvec14; + MUL_DX xvec7, xvec11, xvec11; + MUL_DX xvec7, xvec10, xvec10; +-#### Reverse ##### ++//#### Reverse #### + MOV_DX xvec15, xvec6; + REVS_DX xvec11, xvec15, xvec15; + REVS_DX xvec6, xvec11, xvec11; + MOV_DX xvec14, xvec6; + REVS_DX xvec10, xvec14, xvec14; + REVS_DX xvec6, xvec10, xvec10; +-#### Testing Alignment #### ++//#### Testing Alignment #### + MOVQ C0, %rax; + OR ldc, %rax; + TEST $15, %rax; + JNE .L223_loopEx; + ALIGN_5 +-#### Writing Back #### ++//#### Writing Back #### + #ifndef TRMMKERNEL + ADD_DX 0*SIZE(C0), xvec11, xvec11; + ADD_DX 2*SIZE(C0), xvec10, xvec10; +@@ -2220,7 +2220,7 @@ ADDQ $4, kk + ADDQ $4*SIZE, C0; + ADDQ $4*SIZE, C1; + .L22_loopE:; +-TEST $2, bm; # Rm = 2 ++TEST $2, bm; // Rm = 2 + JLE .L23_loopE; + ALIGN_5; + .L23_bodyB: +@@ -2255,7 +2255,7 @@ JLE .L231_loopE; + ALIGN_5 + .L231_bodyB: + # Computing kernel +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 0*SIZE(ptrba), xvec0; + LD_DX 0*SIZE(ptrbb), xvec4; + SHUF_DX $0x4e, xvec4, xvec5; +@@ -2264,7 +2264,7 @@ ADD_DX xvec4, xvec15, xvec15; + + MUL_DX xvec0, xvec5, xvec5; + ADD_DX xvec5, xvec11, xvec11; +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DX 2*SIZE(ptrba), xvec0; + LD_DX 2*SIZE(ptrbb), xvec4; + SHUF_DX $0x4e, xvec4, xvec5; +@@ -2273,7 +2273,7 @@ ADD_DX xvec4, xvec15, xvec15; + + MUL_DX xvec0, xvec5, xvec5; + ADD_DX xvec5, xvec11, xvec11; +-#### Unroll time 3 #### ++//#### Unroll time 3 #### + LD_DX 4*SIZE(ptrba), xvec0; + LD_DX 4*SIZE(ptrbb), xvec4; + SHUF_DX $0x4e, xvec4, xvec5; +@@ -2282,7 +2282,7 @@ ADD_DX xvec4, xvec15, xvec15; + + MUL_DX xvec0, xvec5, xvec5; + ADD_DX xvec5, xvec11, xvec11; +-#### Unroll time 4 #### ++//#### Unroll time 4 #### + LD_DX 6*SIZE(ptrba), xvec0; + LD_DX 6*SIZE(ptrbb), xvec4; + SHUF_DX $0x4e, xvec4, xvec5; +@@ -2305,7 +2305,7 @@ TEST $2, %rax; + JLE .L232_loopE; + ALIGN_5 + .L232_bodyB: +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 0*SIZE(ptrba), xvec0; + LD_DX 0*SIZE(ptrbb), xvec4; + SHUF_DX $0x4e, xvec4, xvec5; +@@ -2314,7 +2314,7 @@ ADD_DX xvec4, xvec15, xvec15; + + MUL_DX xvec0, xvec5, xvec5; + ADD_DX xvec5, xvec11, xvec11; +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DX 2*SIZE(ptrba), xvec0; + LD_DX 2*SIZE(ptrbb), xvec4; + SHUF_DX $0x4e, xvec4, xvec5; +@@ -2334,7 +2334,7 @@ TEST $1, %rax; + JLE .L233_loopE; + ALIGN_5 + .L233_bodyB: +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DX 0*SIZE(ptrba), xvec0; + LD_DX 0*SIZE(ptrbb), xvec4; + SHUF_DX $0x4e, xvec4, xvec5; +@@ -2345,21 +2345,21 @@ MUL_DX xvec0, xvec5, xvec5; + ADD_DX xvec5, xvec11, xvec11; + ADDQ $2*SIZE, ptrbb; + .L233_loopE: +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + BROAD_DX MEMALPHA, xvec7; + MUL_DX xvec7, xvec15, xvec15; + MUL_DX xvec7, xvec11, xvec11; +-#### Reverse ##### ++//#### Reverse #### + MOV_DX xvec15, xvec6; + REVS_DX xvec11, xvec15, xvec15; + REVS_DX xvec6, xvec11, xvec11; +-#### Testing Alignment #### ++//#### Testing Alignment #### + MOVQ C0, %rax; + OR ldc, %rax; + TEST $15, %rax; + JNE .L233_loopEx; + ALIGN_5 +-#### Writing Back #### ++//#### Writing Back #### + #ifndef TRMMKERNEL + ADD_DX 0*SIZE(C0), xvec11, xvec11; + ADD_DX 0*SIZE(C1), xvec15, xvec15; +@@ -2408,7 +2408,7 @@ ADDQ $2, kk; + ADDQ $2*SIZE, C0; + ADDQ $2*SIZE, C1; + .L23_loopE: +-TEST $1, bm; # Rm = 1 ++TEST $1, bm; // Rm = 1 + JLE .L24_loopE; + ALIGN_5; + .L24_bodyB: +@@ -2534,7 +2534,7 @@ SALQ $4, k; + ADDQ k, bb; + LEAQ (C, ldc, 2), C; + .L20_loopE:; +-TEST $1, bn; # Rn = 1 ++TEST $1, bn; // Rn = 1 + JLE .L30_loopE; + ALIGN_5 + .L30_bodyB: +@@ -2558,7 +2558,7 @@ LEAQ (, %rax, SIZE), %rax; + LEAQ (ptrba, %rax, 8), ptrba; + ADDQ %rax, ptrbb; + #endif +-#### Initial Results Register #### ++//#### Initial Results Register #### + XOR_DY yvec15, yvec15, yvec15; + XOR_DY yvec14, yvec14, yvec14; + #ifndef TRMMKERNEL +@@ -2580,7 +2580,7 @@ SARQ $2, k; + JLE .L311_loopE; + ALIGN_5 + .L311_bodyB: +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DY 0*SIZE(ptrba), yvec0; + LD_DY 4*SIZE(ptrba), yvec1; + BROAD_DY 0*SIZE(ptrbb), yvec2; +@@ -2589,7 +2589,7 @@ ADD_DY yvec0, yvec15, yvec15; + MUL_DY yvec2, yvec1, yvec1; + ADD_DY yvec1, yvec14, yvec14; + +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DY 8*SIZE(ptrba), yvec3; + LD_DY 12*SIZE(ptrba), yvec4; + BROAD_DY 1*SIZE(ptrbb), yvec5; +@@ -2598,7 +2598,7 @@ ADD_DY yvec3, yvec15, yvec15; + MUL_DY yvec5, yvec4, yvec4 + ADD_DY yvec4, yvec14, yvec14; + +-#### Unroll time 3 #### ++//#### Unroll time 3 #### + LD_DY 16*SIZE(ptrba), yvec0; + LD_DY 20*SIZE(ptrba), yvec1; + BROAD_DY 2*SIZE(ptrbb), yvec2; +@@ -2607,7 +2607,7 @@ ADD_DY yvec0, yvec15, yvec15; + MUL_DY yvec2, yvec1, yvec1; + ADD_DY yvec1, yvec14, yvec14; + +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DY 24*SIZE(ptrba), yvec3; + LD_DY 28*SIZE(ptrba), yvec4; + BROAD_DY 3*SIZE(ptrbb), yvec5; +@@ -2630,7 +2630,7 @@ TEST $2, %rax; + JLE .L312_loopE; + ALIGN_5 + .L312_bodyB: +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DY 0*SIZE(ptrba), yvec0; + LD_DY 4*SIZE(ptrba), yvec1; + BROAD_DY 0*SIZE(ptrbb), yvec2; +@@ -2639,7 +2639,7 @@ ADD_DY yvec0, yvec15, yvec15; + MUL_DY yvec2, yvec1, yvec1; + ADD_DY yvec1, yvec14, yvec14; + +-#### Unroll time 2 #### ++//#### Unroll time 2 #### + LD_DY 8*SIZE(ptrba), yvec3; + LD_DY 12*SIZE(ptrba), yvec4; + BROAD_DY 1*SIZE(ptrbb), yvec5; +@@ -2660,7 +2660,7 @@ TEST $1, %rax; + JLE .L313_loopE; + ALIGN_5 + .L313_bodyB: +-#### Unroll time 1 #### ++//#### Unroll time 1 #### + LD_DY 0*SIZE(ptrba), yvec0; + LD_DY 4*SIZE(ptrba), yvec1; + BROAD_DY 0*SIZE(ptrbb), yvec2; +@@ -2672,17 +2672,17 @@ ADD_DY yvec1, yvec14, yvec14; + ADDQ $1*SIZE, ptrbb; + + .L313_loopE: +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + BROAD_DY MEMALPHA, yvec7; + MUL_DY yvec7, yvec15, yvec15; + MUL_DY yvec7, yvec14, yvec14; +-#### Testing Alignment #### ++//#### Testing Alignment #### + MOVQ C0, %rax; + OR ldc, %rax; + TEST $15, %rax; + JNE .L313_loopEx; + ALIGN_5 +-#### Writing Back #### ++//#### Writing Back #### + EXTRA_DY $1, yvec15, xvec13; + EXTRA_DY $1, yvec14, xvec12; + #ifndef TRMMKERNEL +@@ -2762,7 +2762,7 @@ LEAQ (,%rax, SIZE), %rax; + LEAQ (ptrba, %rax, 4), ptrba; + ADDQ %rax, ptrbb; + #endif +-#### Initial Results Register #### ++//#### Initial Results Register #### + XOR_DY yvec15, yvec15, yvec15; + #ifndef TRMMKERNEL + MOVQ bk, k; +@@ -2847,16 +2847,16 @@ ADDQ $4*SIZE, ptrba; + ADDQ $1*SIZE, ptrbb; + + .L323_loopE: +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + BROAD_DY MEMALPHA, yvec7; + MUL_DY yvec7, yvec15, yvec15; +-#### Testing Alignment #### ++//#### Testing Alignment #### + MOVQ C0, %rax; + OR ldc, %rax; + TEST $15, %rax; + JNE .L323_loopEx; + ALIGN_5 +-#### Writing Back #### ++//#### Writing Back #### + EXTRA_DY $1, yvec15, xvec14; + #ifndef TRMMKERNEL + ADD_DX 0*SIZE(C0), xvec15, xvec15; +@@ -2878,7 +2878,7 @@ ADDQ $4*SIZE, C0; + JMP .L32_loopE; + ALIGN_5 + .L323_loopEx: +-#### Writing Back #### ++//#### Writing Back #### + EXTRA_DY $1, yvec15, xvec14; + #ifndef TRMMKERNEL + LDL_DX 0*SIZE(C0), xvec13, xvec13; +@@ -2917,7 +2917,7 @@ LEAQ (, %rax, SIZE), %rax + LEAQ (ptrba, %rax, 2), ptrba + ADDQ %rax, ptrbb; + #endif +-#### Initial Result #### ++//#### Initial Result #### + XOR_DY yvec15, yvec15, yvec15; + #ifndef TRMMKERNEL + MOVQ bk, k; +@@ -3000,7 +3000,7 @@ ADD_DX xvec2, xvec15, xvec15; + ADDQ $2*SIZE, ptrba; + ADDQ $1*SIZE, ptrbb; + .L333_loopE: +-#### Multiply Alpha #### ++//#### Multiply Alpha #### + BROAD_DX MEMALPHA, xvec7; + MUL_DX xvec7, xvec15, xvec15; + #ifndef TRMMKERNEL +@@ -3119,7 +3119,7 @@ addq $1*SIZE, ptrba; + addq $1*SIZE, ptrbb; + + .L343_loopE: +-#### Writing Back #### ++//#### Writing Back #### + vmovsd MEMALPHA, xvec7; + vmulsd xvec7, xvec15, xvec15; + #ifndef TRMMKERNEL diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 6e161745635..f3b1d4d23fc 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -57,6 +57,10 @@ class Openblas(MakefilePackage): # https://github.com/xianyi/OpenBLAS/pull/915 patch('openblas_icc.patch', when='%intel') + # Change file comments to work around clang 3.9 assembler bug + # https://github.com/xianyi/OpenBLAS/pull/982 + patch('openblas0.2.19.diff', when='@0.2.19') + parallel = False conflicts('%intel@16', when='@0.2.15:0.2.19') @@ -78,12 +82,6 @@ def check_compilers(self): 'OpenBLAS does not support OpenMP with clang!' ) - spec = self.spec - if spec.satisfies('%clang@8.1.0:') and spec.satisfies('@:0.2.19'): - raise InstallError( - 'OpenBLAS @:0.2.19 does not build with Apple clang@8.1.0:' - ) - @property def make_defs(self): # Configure fails to pick up fortran from FC=/abs/path/to/f77, but From ebf30d95cd3982c3652f27283552d434be1a7321 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 17 Apr 2017 15:45:52 -0500 Subject: [PATCH 0657/2394] Add latest numpy release (#3869) --- var/spack/repos/builtin/packages/py-numpy/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 3b590fbd244..c713162e9c5 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -48,6 +48,8 @@ class PyNumpy(PythonPackage): # FIXME: numpy._build_utils and numpy.core.code_generators failed to import # FIXME: Is this expected? + version('1.12.1', 'c75b072a984028ac746a6a332c209a91', + url="https://pypi.io/packages/source/n/numpy/numpy-1.12.1.zip") version('1.12.0', '33e5a84579f31829bbbba084fe0a4300', url="https://pypi.io/packages/source/n/numpy/numpy-1.12.0.zip") version('1.11.2', '03bd7927c314c43780271bf1ab795ebc') From 6d7b38619923babd3ce1892ba706d40386723afb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 17 Apr 2017 16:46:52 -0500 Subject: [PATCH 0658/2394] Add a py-fiscalyear package (#3864) * Add a py-fiscalyear package * Declare supported Python versions --- .../builtin/packages/py-fiscalyear/package.py | 48 +++++++++++++++++++ .../builtin/packages/py-hypothesis/package.py | 45 +++++++++++++++++ .../repos/builtin/packages/py-py/package.py | 7 ++- .../packages/py-pytest-runner/package.py | 38 +++++++++++++++ .../builtin/packages/py-pytest/package.py | 23 +++++++-- 5 files changed, 155 insertions(+), 6 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-fiscalyear/package.py create mode 100644 var/spack/repos/builtin/packages/py-hypothesis/package.py create mode 100644 var/spack/repos/builtin/packages/py-pytest-runner/package.py diff --git a/var/spack/repos/builtin/packages/py-fiscalyear/package.py b/var/spack/repos/builtin/packages/py-fiscalyear/package.py new file mode 100644 index 00000000000..2c9cc771c2f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fiscalyear/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyFiscalyear(PythonPackage): + """fiscalyear is a small, lightweight Python module providing helpful + utilities for managing the fiscal calendar. It is designed as an extension + of the built-in datetime and calendar modules, adding the ability to query + the fiscal year and fiscal quarter of a date or datetime object.""" + + homepage = "https://github.com/adamjstewart/fiscalyear" + url = "https://pypi.io/packages/source/f/fiscalyear/fiscalyear-0.1.0.tar.gz" + + import_modules = ['fiscalyear'] + + version('master', branch='master', + git='https://github.com/adamjstewart/fiscalyear.git') + version('0.1.0', '30e36b259f3e72e4929abbf259335742') + + depends_on('python@2.5:') + depends_on('py-setuptools', type='build') + + # TODO: Add a 'test' deptype + # depends_on('py-pytest', type='test') + # depends_on('py-pytest-runner', type='test') diff --git a/var/spack/repos/builtin/packages/py-hypothesis/package.py b/var/spack/repos/builtin/packages/py-hypothesis/package.py new file mode 100644 index 00000000000..866d151f3e7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-hypothesis/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyHypothesis(PythonPackage): + """A library for property based testing.""" + + homepage = "https://github.com/HypothesisWorks/hypothesis-python" + url = "https://pypi.io/packages/source/h/hypothesis/hypothesis-3.7.0.tar.gz" + + import_modules = [ + 'hypothesis', 'hypothesis.searchstrategy', 'hypothesis.extra', + 'hypothesis.tools', 'hypothesis.utils', 'hypothesis.vendor', + 'hypothesis.internal', 'hypothesis.internal.conjecture' + ] + + # TODO: Add missing dependency required to import hypothesis.extra.django + + version('3.7.0', '4afb25fa6785fceac034b63eaa2dfe28') + + depends_on('py-setuptools', type='build') + depends_on('py-enum34', type=('build', 'run'), when='^python@:2') diff --git a/var/spack/repos/builtin/packages/py-py/package.py b/var/spack/repos/builtin/packages/py-py/package.py index 5a963105bd2..1bba4b7252a 100644 --- a/var/spack/repos/builtin/packages/py-py/package.py +++ b/var/spack/repos/builtin/packages/py-py/package.py @@ -29,8 +29,13 @@ class PyPy(PythonPackage): """library with cross-python path, ini-parsing, io, code, log facilities""" homepage = "http://pylib.readthedocs.io/en/latest/" - url = "https://pypi.python.org/packages/source/p/py/py-1.4.31.tar.gz" + url = "https://pypi.io/packages/source/p/py/py-1.4.33.tar.gz" + import_modules = [ + 'py', 'py._code', 'py._io', 'py._log', 'py._path', 'py._process', + ] + + version('1.4.33', '15d7107cbb8b86593bf9afa16e56da65') version('1.4.31', '5d2c63c56dc3f2115ec35c066ecd582b') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pytest-runner/package.py b/var/spack/repos/builtin/packages/py-pytest-runner/package.py new file mode 100644 index 00000000000..02ef5dc09db --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pytest-runner/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPytestRunner(PythonPackage): + """Invoke py.test as distutils command with dependency resolution.""" + + homepage = "https://github.com/pytest-dev/pytest-runner" + url = "https://pypi.io/packages/source/p/pytest-runner/pytest-runner-2.11.1.tar.gz" + + import_modules = ['ptr'] + + version('2.11.1', 'bdb73eb18eca2727944a2dcf963c5a81') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pytest/package.py b/var/spack/repos/builtin/packages/py-pytest/package.py index 4af49306c2c..c1c4ee534c6 100644 --- a/var/spack/repos/builtin/packages/py-pytest/package.py +++ b/var/spack/repos/builtin/packages/py-pytest/package.py @@ -28,11 +28,24 @@ class PyPytest(PythonPackage): """pytest: simple powerful testing with Python.""" - homepage = "http://doc.pytest.org/en/latest/" - url = "https://pypi.python.org/packages/source/p/pytest/pytest-3.0.2.tar.gz" + homepage = "http://pytest.org/" + url = "https://pypi.io/packages/source/p/pytest/pytest-3.0.7.tar.gz" - version('3.0.2', '61dc36e65a6f6c11c53b1388e043a9f5', - url="https://pypi.python.org/packages/2b/05/e20806c99afaff43331f5fd8770bb346145303882f98ef3275fa1dd66f6d/pytest-3.0.2.tar.gz") + import_modules = [ + '_pytest', '_pytest.assertion', '_pytest._code', + '_pytest.vendored_packages', 'pytest' + ] - depends_on('py-setuptools', type='build') + version('3.0.7', '89c60546507dc7eb6e9e40a6e9f720bd') + version('3.0.2', '61dc36e65a6f6c11c53b1388e043a9f5') + + # Most Python packages only require setuptools as a build dependency. + # However, pytest requires setuptools during runtime as well. + depends_on('py-setuptools', type=('build', 'run')) depends_on('py-py@1.4.29:', type=('build', 'run')) + depends_on('py-hypothesis@3.5.2:', type=('build', 'run')) + + # TODO: Add a 'test' deptype + # depends_on('py-nose', type='test') + # depends_on('py-mock', type='test') + # depends_on('py-requests', type='test') From 89f531c18ac4c45deb8fe57674ba7a5a5623006a Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 18 Apr 2017 11:30:17 +0200 Subject: [PATCH 0659/2394] gmsh: add 3.0.1 (#3873) --- var/spack/repos/builtin/packages/gmsh/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py index 54ff17e3875..80598bff837 100644 --- a/var/spack/repos/builtin/packages/gmsh/package.py +++ b/var/spack/repos/builtin/packages/gmsh/package.py @@ -38,6 +38,7 @@ class Gmsh(CMakePackage): homepage = 'http://gmsh.info' url = 'http://gmsh.info/src/gmsh-2.11.0-source.tgz' + version('3.0.1', '830b5400d9f1aeca79c3745c5c9fdaa2900cdb2fa319b664a5d26f7e615c749f') version('2.16.0', 'e829eaf32ea02350a385202cc749341f2a3217c464719384b18f653edd028eea') version('2.15.0', '992a4b580454105f719f5bc05441d3d392ab0b4b80d4ea07b61ca3bdc974070a') version('2.12.0', '7fbd2ec8071e79725266e72744d21e902d4fe6fa9e7c52340ad5f4be5c159d09') From fc938962fadd99d4831b33679257143d493ab027 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 18 Apr 2017 13:55:11 +0200 Subject: [PATCH 0660/2394] octave: add 4.2.1 (#3872) Also switch to arpack-ng, which is maintained and has bugfixes, whereas the original arpack code is abandoned. --- var/spack/repos/builtin/packages/octave/package.py | 12 +++++++++--- .../builtin/packages/octave/patch_4.2.1_inline.diff | 12 ++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin/packages/octave/patch_4.2.1_inline.diff diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index 33ed5c8bc38..b02ed336133 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -38,10 +38,15 @@ class Octave(AutotoolsPackage): extendable = True + version('4.2.1', '80c28f6398576b50faca0e602defb9598d6f7308b0903724442c2a35a605333b') version('4.2.0', '443ba73782f3531c94bcf016f2f0362a58e186ddb8269af7dcce973562795567') version('4.0.2', 'c2a5cacc6e4c52f924739cdf22c2c687') version('4.0.0', 'a69f8320a4f20a8480c1b278b1adb799') + # patches + # see https://savannah.gnu.org/bugs/?50234 + patch('patch_4.2.1_inline.diff', when='@4.2.1') + # Variants variant('readline', default=True) variant('arpack', default=False) @@ -77,7 +82,7 @@ class Octave(AutotoolsPackage): depends_on('readline', when='+readline') # Optional dependencies - depends_on('arpack', when='+arpack') + depends_on('arpack-ng', when='+arpack') depends_on('curl', when='+curl') depends_on('fftw', when='+fftw') depends_on('fltk', when='+fltk') @@ -120,9 +125,10 @@ def configure_args(self): # Optional dependencies if '+arpack' in spec: + sa = spec['arpack-ng'] config_args.extend([ - "--with-arpack-includedir=%s" % spec['arpack'].prefix.include, - "--with-arpack-libdir=%s" % spec['arpack'].prefix.lib + "--with-arpack-includedir=%s" % sa.prefix.include, + "--with-arpack-libdir=%s" % sa.prefix.lib ]) else: config_args.append("--without-arpack") diff --git a/var/spack/repos/builtin/packages/octave/patch_4.2.1_inline.diff b/var/spack/repos/builtin/packages/octave/patch_4.2.1_inline.diff new file mode 100644 index 00000000000..880818fbcee --- /dev/null +++ b/var/spack/repos/builtin/packages/octave/patch_4.2.1_inline.diff @@ -0,0 +1,12 @@ +diff -r 73f7ef7169ac liboctave/system/file-stat.cc +--- a/liboctave/system/file-stat.cc Thu Feb 23 16:08:44 2017 -0800 ++++ b/liboctave/system/file-stat.cc Fri Feb 24 11:02:36 2017 -0800 +@@ -174,7 +174,7 @@ namespace octave + update_internal (); + } + +- inline file_stat::~file_stat () { } ++ file_stat::~file_stat () { } + + void + file_stat::update_internal (bool force) From 4e95525280c28317dba9d8e5fa91b1c3980d74aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Tue, 18 Apr 2017 19:56:18 +0800 Subject: [PATCH 0661/2394] Add patched openfst-1.4.1 and kaldi@c024e8 required by CNTK. (#3806) --- .../packages/kaldi/openfst-1.4.1.patch | 45 ++++ .../repos/builtin/packages/kaldi/package.py | 23 +- .../packages/openfst/openfst-1.4.1.patch | 227 ++++++++++++++++++ .../packages/openfst/openfst_gcc41up.patch | 28 +++ .../repos/builtin/packages/openfst/package.py | 7 + 5 files changed, 321 insertions(+), 9 deletions(-) create mode 100644 var/spack/repos/builtin/packages/kaldi/openfst-1.4.1.patch create mode 100644 var/spack/repos/builtin/packages/openfst/openfst-1.4.1.patch create mode 100644 var/spack/repos/builtin/packages/openfst/openfst_gcc41up.patch diff --git a/var/spack/repos/builtin/packages/kaldi/openfst-1.4.1.patch b/var/spack/repos/builtin/packages/kaldi/openfst-1.4.1.patch new file mode 100644 index 00000000000..62e0c7544bd --- /dev/null +++ b/var/spack/repos/builtin/packages/kaldi/openfst-1.4.1.patch @@ -0,0 +1,45 @@ +From ef1c38844fd4c40304176f4e672189010805a3d9 Mon Sep 17 00:00:00 2001 +From: Jianwen WEI +Date: Thu, 13 Apr 2017 15:17:12 +0800 +Subject: [PATCH 1/1] Add a patched openfst@1.4.1-patch for Kaldi. + +--- + src/configure | 4 ++-- + tools/Makefile | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/configure b/src/configure +index c90e9ba4e..ff328772c 100755 +--- a/src/configure ++++ b/src/configure +@@ -793,9 +793,9 @@ echo "CONFIGURE_VERSION := $CONFIGURE_VERSION" >> kaldi.mk + echo "FSTROOT = $FSTROOT" >> kaldi.mk + + # Check installed OpenFst version and add C++11 flags if OpenFst >= 1.4 +-OPENFST_VER=`grep 'PACKAGE_VERSION' $FSTROOT/Makefile | sed -e 's:.*= ::'` ++OPENFST_VER=1.4.1 + echo "OPENFST_VER = $OPENFST_VER" >> kaldi.mk +-OPENFST_VER_NUM=`echo $OPENFST_VER | sed 's/\./ /g' | xargs printf "%d%02d%02d"` ++OPENFST_VER_NUM=104001 + if [ $OPENFST_VER_NUM -ge 10400 ]; then + echo "OPENFST_GE_10400 = 1" >> kaldi.mk + echo "EXTRA_CXXFLAGS += -DHAVE_OPENFST_GE_10400 -std=c++0x" >> kaldi.mk +diff --git a/tools/Makefile b/tools/Makefile +index cb3a35b2a..b868e600a 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -3,9 +3,9 @@ + CXX = g++ + # CXX = clang++ # Uncomment this line to build with Clang. + +-OPENFST_VERSION = 1.3.4 ++# OPENFST_VERSION = 1.3.4 + # Uncomment the next line to build with OpenFst-1.4.1. +-# OPENFST_VERSION = 1.4.1 ++OPENFST_VERSION = 1.4.1 + # Note: OpenFst >= 1.4 requires C++11 support, hence you will need to use a + # relatively recent C++ compiler, e.g. gcc >= 4.6, clang >= 3.0. + +-- +2.11.1 + diff --git a/var/spack/repos/builtin/packages/kaldi/package.py b/var/spack/repos/builtin/packages/kaldi/package.py index 3cf25df46b7..d2344d28388 100644 --- a/var/spack/repos/builtin/packages/kaldi/package.py +++ b/var/spack/repos/builtin/packages/kaldi/package.py @@ -38,6 +38,8 @@ class Kaldi(Package): # Does not use Autotools url = "https://github.com/kaldi-asr/kaldi/archive/master.zip" version('master', git='https://github.com/kaldi-asr/kaldi.git') + version('c024e8', git='https://github.com/kaldi-asr/kaldi.git', + commit='c024e8aa0a727bf76c91a318f76a1f8b0b59249e') variant('shared', default=True, description='build shared libraries') @@ -47,19 +49,22 @@ class Kaldi(Package): # Does not use Autotools description='build with CUDA') depends_on('blas') - depends_on('speex') - depends_on('openfst@1.6:') depends_on('cuda', when='+cuda') depends_on('sph2pipe', type='run') depends_on('sctk', type='run') + depends_on('speex', type='run') + depends_on('openfst@1.4.1-patch', when='@c024e8') + depends_on('openfst') + + patch('openfst-1.4.1.patch', when='@c024e8') def install(self, spec, prefix): - configure_args = [ - '--threaded-math', - '--speex-root=' + spec['speex'].prefix, - '--fst-root=' + spec['openfst'].prefix, - '--fst-version=' + str(spec['openfst'].version) - ] + configure_args = ['--fst-root=' + spec['openfst'].prefix] + + if spec.satisfies('c024e8'): + configure_args.append('--speex-root=' + spec['speex'].prefix) + configure_args.append('--fst-version=' + + str(spec['openfst'].version)) if '~shared' in spec: configure_args.append('--static') @@ -70,7 +75,7 @@ def install(self, spec, prefix): configure_args.append('--mathlib=OPENBLAS') configure_args.append('--openblas-root=' + spec['blas'].prefix) if '+openmp' in spec['blas'].variants: - configure_args.append('--threaded-math') + configure_args.append('--threaded-math=yes') elif '^atlas' in spec: configure_args.append('--mathlib=ATLAS') configure_args.append('--atlas-root=' + spec['blas'].prefix) diff --git a/var/spack/repos/builtin/packages/openfst/openfst-1.4.1.patch b/var/spack/repos/builtin/packages/openfst/openfst-1.4.1.patch new file mode 100644 index 00000000000..1037b242319 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfst/openfst-1.4.1.patch @@ -0,0 +1,227 @@ +*** openfst-1.4.1/src/include/fst/minimize.h +*************** +*** 134,140 **** + typedef typename A::Weight Weight; + typedef ReverseArc RevA; + +! CyclicMinimizer(const ExpandedFst& fst) { + Initialize(fst); + Compute(fst); + } +--- 134,147 ---- + typedef typename A::Weight Weight; + typedef ReverseArc RevA; + +! CyclicMinimizer(const ExpandedFst& fst): +! // tell the Partition data-member to expect multiple repeated +! // calls to SplitOn with the same element if we are non-deterministic. +! P_(fst.Properties(kIDeterministic, true) == 0) { +! if(fst.Properties(kIDeterministic, true) == 0) +! CHECK(Weight::Properties() & kIdempotent); // this minimization +! // algorithm for non-deterministic FSTs can only work with idempotent +! // semirings. + Initialize(fst); + Compute(fst); + } +*************** +*** 315,321 **** + typedef typename A::StateId ClassId; + typedef typename A::Weight Weight; + +! AcyclicMinimizer(const ExpandedFst& fst) { + Initialize(fst); + Refine(fst); + } +--- 322,334 ---- + typedef typename A::StateId ClassId; + typedef typename A::Weight Weight; + +! AcyclicMinimizer(const ExpandedFst& fst): +! // tell the Partition data-member to expect multiple repeated +! // calls to SplitOn with the same element if we are non-deterministic. +! partition_(fst.Properties(kIDeterministic, true) == 0) { +! if(fst.Properties(kIDeterministic, true) == 0) +! CHECK(Weight::Properties() & kIdempotent); // minimization for +! // non-deterministic FSTs can only work with idempotent semirings. + Initialize(fst); + Refine(fst); + } +*************** +*** 531,543 **** + void Minimize(MutableFst* fst, + MutableFst* sfst = 0, + float delta = kDelta) { +! uint64 props = fst->Properties(kAcceptor | kIDeterministic| +! kWeighted | kUnweighted, true); +! if (!(props & kIDeterministic)) { +! FSTERROR() << "FST is not deterministic"; +! fst->SetProperties(kError, kError); +! return; +! } + + if (!(props & kAcceptor)) { // weighted transducer + VectorFst< GallicArc > gfst; +--- 544,550 ---- + void Minimize(MutableFst* fst, + MutableFst* sfst = 0, + float delta = kDelta) { +! uint64 props = fst->Properties(kAcceptor | kWeighted | kUnweighted, true); + + if (!(props & kAcceptor)) { // weighted transducer + VectorFst< GallicArc > gfst; +*** openfst-1.4.1/src/include/fst/partition.h +*************** +*** 43,50 **** + friend class PartitionIterator; + + struct Element { +! Element() : value(0), next(0), prev(0) {} +! Element(T v) : value(v), next(0), prev(0) {} + + T value; + Element* next; +--- 43,50 ---- + friend class PartitionIterator; + + struct Element { +! Element() : value(0), next(0), prev(0) {} +! Element(T v) : value(v), next(0), prev(0) {} + + T value; + Element* next; +*************** +*** 52,60 **** + }; + + public: +! Partition() {} + +! Partition(T num_states) { + Initialize(num_states); + } + +--- 52,62 ---- + }; + + public: +! Partition(bool allow_repeated_split): +! allow_repeated_split_(allow_repeated_split) {} + +! Partition(bool allow_repeated_split, T num_states): +! allow_repeated_split_(allow_repeated_split) { + Initialize(num_states); + } + +*************** +*** 137,152 **** + if (class_size_[class_id] == 1) return; + + // first time class is split +! if (split_size_[class_id] == 0) + visited_classes_.push_back(class_id); +! + // increment size of split (set of element at head of chain) + split_size_[class_id]++; +! + // update split point +! if (class_split_[class_id] == 0) +! class_split_[class_id] = classes_[class_id]; +! if (class_split_[class_id] == elements_[element_id]) + class_split_[class_id] = elements_[element_id]->next; + + // move to head of chain in same class +--- 139,154 ---- + if (class_size_[class_id] == 1) return; + + // first time class is split +! if (split_size_[class_id] == 0) { + visited_classes_.push_back(class_id); +! class_split_[class_id] = classes_[class_id]; +! } + // increment size of split (set of element at head of chain) + split_size_[class_id]++; +! + // update split point +! if (class_split_[class_id] != 0 +! && class_split_[class_id] == elements_[element_id]) + class_split_[class_id] = elements_[element_id]->next; + + // move to head of chain in same class +*************** +*** 157,180 **** + // class indices of the newly created class. Returns the new_class id + // or -1 if no new class was created. + T SplitRefine(T class_id) { + // only split if necessary +! if (class_size_[class_id] == split_size_[class_id]) { +! class_split_[class_id] = 0; + split_size_[class_id] = 0; + return -1; + } else { +- + T new_class = AddClass(); + size_t remainder = class_size_[class_id] - split_size_[class_id]; + if (remainder < split_size_[class_id]) { // add smaller +- Element* split_el = class_split_[class_id]; + classes_[new_class] = split_el; +- class_size_[class_id] = split_size_[class_id]; +- class_size_[new_class] = remainder; + split_el->prev->next = 0; + split_el->prev = 0; + } else { +- Element* split_el = class_split_[class_id]; + classes_[new_class] = classes_[class_id]; + class_size_[class_id] = remainder; + class_size_[new_class] = split_size_[class_id]; +--- 159,189 ---- + // class indices of the newly created class. Returns the new_class id + // or -1 if no new class was created. + T SplitRefine(T class_id) { ++ ++ Element* split_el = class_split_[class_id]; + // only split if necessary +! //if (class_size_[class_id] == split_size_[class_id]) { +! if(split_el == NULL) { // we split on everything... + split_size_[class_id] = 0; + return -1; + } else { + T new_class = AddClass(); ++ ++ if(allow_repeated_split_) { // split_size_ is possibly ++ // inaccurate, so work it out exactly. ++ size_t split_count; Element *e; ++ for(split_count=0,e=classes_[class_id]; ++ e != split_el; split_count++, e=e->next); ++ split_size_[class_id] = split_count; ++ } + size_t remainder = class_size_[class_id] - split_size_[class_id]; + if (remainder < split_size_[class_id]) { // add smaller + classes_[new_class] = split_el; + split_el->prev->next = 0; + split_el->prev = 0; ++ class_size_[class_id] = split_size_[class_id]; ++ class_size_[new_class] = remainder; + } else { + classes_[new_class] = classes_[class_id]; + class_size_[class_id] = remainder; + class_size_[new_class] = split_size_[class_id]; +*************** +*** 245,254 **** +--- 254,269 ---- + vector class_size_; + + // size of split for each class ++ // in the nondeterministic case, split_size_ is actually an upper ++ // bound on the size of split for each class. + vector split_size_; + + // set of visited classes to be used in split refine + vector visited_classes_; ++ ++ // true if input fst was deterministic: we can make ++ // certain assumptions in this case that speed up the algorithm. ++ bool allow_repeated_split_; + }; + + + diff --git a/var/spack/repos/builtin/packages/openfst/openfst_gcc41up.patch b/var/spack/repos/builtin/packages/openfst/openfst_gcc41up.patch new file mode 100644 index 00000000000..0e3eb87e8b9 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfst/openfst_gcc41up.patch @@ -0,0 +1,28 @@ +*** openfst-1.4.1/src/include/fst/lock.h +*************** +*** 78,85 **** + RefCounter() : count_(1) {} + + int count() const { return count_; } +! int Incr() const { return ++count_; } +! int Decr() const { return --count_; } + + private: + mutable int count_; +--- 78,93 ---- + RefCounter() : count_(1) {} + + int count() const { return count_; } +! +! // below lines are modifications of openfst for multi-thrads support, +! // from tools/extras/openfst_gcc41up.patch, applied by tools/Makefile, +! // applicable to gcc 4.1 or above +! // int Incr() const { return ++count_; } +! // int Decr() const { return --count_; } +! +! int Incr() const { return __sync_add_and_fetch(&count_, 1); } +! int Decr() const { return __sync_sub_and_fetch(&count_, 1); } +! // end modifications + + private: + mutable int count_; diff --git a/var/spack/repos/builtin/packages/openfst/package.py b/var/spack/repos/builtin/packages/openfst/package.py index 9711605462f..7a555f5b4c6 100644 --- a/var/spack/repos/builtin/packages/openfst/package.py +++ b/var/spack/repos/builtin/packages/openfst/package.py @@ -42,8 +42,15 @@ class Openfst(AutotoolsPackage): version('1.5.2', 'e9d43874f7cadf791394caab3925eee4') version('1.5.1', '8869e44c5a4af65409ae78b9f482b40e') version('1.5.0', 'a24fee5ffe28744c6fb7b1a49e0006c4') + version('1.4.1-patch', 'ca8f1730b9b9b281e515611fa9ae23c0', + url='http://www.openfst.org/twiki/pub/FST/FstDownload/openfst-1.4.1.tar.gz') version('1.4.1', 'ca8f1730b9b9b281e515611fa9ae23c0') version('1.4.0', '662367ec91084ffab48ee9b5716de39c') conflicts('%intel@16:') conflicts('%gcc@6:') + + # Patch openfst-1.4.1 for kaldi@c024e8 + # See https://github.com/kaldi-asr/kaldi/blob/c024e8aa0a727bf76c91a318f76a1f8b0b59249e/tools/Makefile#L82-L88 + patch('openfst-1.4.1.patch', when='@1.4.1-patch') + patch('openfst_gcc41up.patch', when='@1.4.1-patch') From d17b5eb2b9f7e2b481171a624a0c05803d05a685 Mon Sep 17 00:00:00 2001 From: sknigh Date: Tue, 18 Apr 2017 04:57:49 -0700 Subject: [PATCH 0662/2394] Added expat dependency to apr-util (#3871) --- var/spack/repos/builtin/packages/apr-util/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/apr-util/package.py b/var/spack/repos/builtin/packages/apr-util/package.py index 8e01d3bbdd3..88d86ddd657 100644 --- a/var/spack/repos/builtin/packages/apr-util/package.py +++ b/var/spack/repos/builtin/packages/apr-util/package.py @@ -33,12 +33,14 @@ class AprUtil(Package): version('1.5.4', '866825c04da827c6e5f53daff5569f42') depends_on('apr') + depends_on('expat') def install(self, spec, prefix): # configure, build, install: options = ['--prefix=%s' % prefix] options.append('--with-apr=%s' % spec['apr'].prefix) + options.append('--with-expat=%s' % spec['expat'].prefix) configure(*options) make() From c65d0775cfb8e035b60f9f762b51c22220526c19 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 18 Apr 2017 14:00:39 +0200 Subject: [PATCH 0663/2394] ADIOS - add bzip2 transport, python patch not applicable to adios 1.9.0 (#3874) --- var/spack/repos/builtin/packages/adios/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 840f1be5183..e55274277d0 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -53,6 +53,7 @@ class Adios(AutotoolsPackage): # transforms variant('zlib', default=True, description='Enable zlib transform support') + variant('bzip2', default=False, description='Enable bzip2 transform support') variant('szip', default=False, description='Enable szip transform support') variant('zfp', default=False, description='Enable ZFP transform support') # transports and serial file converters @@ -72,6 +73,7 @@ class Adios(AutotoolsPackage): depends_on('mxml@2.9:') # optional transformations depends_on('zlib', when='+zlib') + depends_on('bzip2', when='+bzip2') depends_on('szip', when='+szip') depends_on('zfp@:0.5.0', when='+zfp') # optional transports & file converters @@ -80,8 +82,8 @@ class Adios(AutotoolsPackage): build_directory = 'spack-build' # ADIOS uses the absolute Python path, which is too long and results in - # "bad interpreter" errors - patch('python.patch') + # "bad interpreter" errors - but not applicable for 1.9.0 + patch('python.patch', when='@1.10.0:') # Fix ADIOS <=1.10.0 compile error on HDF5 1.10+ # https://github.com/ornladios/ADIOS/commit/3b21a8a41509 # https://github.com/LLNL/spack/issues/1683 From 5558bec14e1561890dcdc9597357a0603653ea56 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 18 Apr 2017 14:03:48 +0200 Subject: [PATCH 0664/2394] ape: constrain libxc version (#3876) --- var/spack/repos/builtin/packages/ape/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ape/package.py b/var/spack/repos/builtin/packages/ape/package.py index 48e436804f3..7e283290800 100644 --- a/var/spack/repos/builtin/packages/ape/package.py +++ b/var/spack/repos/builtin/packages/ape/package.py @@ -35,7 +35,7 @@ class Ape(Package): version('2.2.1', 'ab81da85bd749c0c136af088c7f9ad58') depends_on('gsl') - depends_on('libxc') + depends_on('libxc@:2.2.2') def install(self, spec, prefix): args = [] From 7ed99a4c86801399384aa1795d1b45be5a975ff6 Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 18 Apr 2017 14:07:07 +0200 Subject: [PATCH 0665/2394] Adding new package: sas (#3877) --- .../repos/builtin/packages/sas/package.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sas/package.py diff --git a/var/spack/repos/builtin/packages/sas/package.py b/var/spack/repos/builtin/packages/sas/package.py new file mode 100644 index 00000000000..685e4202bfb --- /dev/null +++ b/var/spack/repos/builtin/packages/sas/package.py @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Sas(CMakePackage): + """SAS (Static Analysis Suite) is a powerful tool for running static + analysis on C++ code.""" + + homepage = "https://github.com/dpiparo/SAS" + url = "https://github.com/dpiparo/SAS/archive/0.1.3.tar.gz" + + version('0.2.0', 'e6fecfb71d9cdce342c8593f4728c9f0') + version('0.1.4', '20d7311258f2a59c9367ae1576c392b6') + version('0.1.3', '1e6572afcc03318d16d7321d40eec0fd') + + variant('debug', default=False, description='Build debug version') + + depends_on('python@2.7:') + depends_on('llvm@3.5:') + depends_on('cmake@2.8:', type='build') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + args = [ + '-DLLVM_DEV_DIR=%s' % self.spec['llvm'].prefix + ] + return args From fad4ce21cc0f1400d5591307b01d22d2ab2153ad Mon Sep 17 00:00:00 2001 From: "Kelly (KT) Thompson" Date: Tue, 18 Apr 2017 09:59:59 -0600 Subject: [PATCH 0666/2394] Provide version 3.8.0 of CMake. (#3882) --- var/spack/repos/builtin/packages/cmake/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 1dd480d6751..7642df9f198 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -33,6 +33,7 @@ class Cmake(Package): list_url = 'https://cmake.org/files/' list_depth = 1 + version('3.8.0', 'f28cba717ba38ad82a488daed8f45b5b') version('3.7.2', '79bd7e65cd81ea3aa2619484ad6ff25a') version('3.7.1', 'd031d5a06e9f1c5367cdfc56fbd2a1c8') version('3.6.1', 'd6dd661380adacdb12f41b926ec99545') From afbe81b4559b5bd690785a22918937d3b0b7f4b7 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 18 Apr 2017 09:48:53 -0700 Subject: [PATCH 0667/2394] Add version info for git-lfs v2.0.2 (#3885) --- var/spack/repos/builtin/packages/git-lfs/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/git-lfs/package.py b/var/spack/repos/builtin/packages/git-lfs/package.py index 25e440ff6dd..f195fef8868 100644 --- a/var/spack/repos/builtin/packages/git-lfs/package.py +++ b/var/spack/repos/builtin/packages/git-lfs/package.py @@ -35,6 +35,7 @@ class GitLfs(Package): homepage = "https://git-lfs.github.com" git_url = "https://github.com/github/git-lfs.git" + version('2.0.2', git=git_url, tag='v2.0.2') version('1.4.1', git=git_url, tag='v1.4.1') version('1.3.1', git=git_url, tag='v1.3.1') From ce714b564166d58eed73e93cc356a39d3a6913ee Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 18 Apr 2017 18:50:10 +0200 Subject: [PATCH 0668/2394] ocotpus and arpack-ng: fix arpack bug and add libs to arpack-ng (#3875) * ocotpus and arpack-ng: fix arpack bug and add libs to arpack-ng also rename the variant to be consistent with other packages * fix a bug * flake8 --- .../builtin/packages/arpack-ng/package.py | 15 +++++++++++- .../repos/builtin/packages/octopus/package.py | 23 +++++++++++-------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py index 1168d4623cd..ebaeb1da1da 100644 --- a/var/spack/repos/builtin/packages/arpack-ng/package.py +++ b/var/spack/repos/builtin/packages/arpack-ng/package.py @@ -80,6 +80,19 @@ class ArpackNg(Package): depends_on('mpi', when='+mpi') + @property + def libs(self): + # TODO: do we need spec['arpack-ng:parallel'].libs ? + # query_parameters = self.spec.last_query.extra_parameters + libraries = ['libarpack'] + + if '+mpi' in self.spec: + libraries = ['libparpack'] + libraries + + return find_libraries( + libraries, root=self.prefix, shared=True, recurse=True + ) + @when('@3.4.0:') def install(self, spec, prefix): @@ -114,7 +127,7 @@ def install(self, spec, prefix): make('test') make('install') - @when('@3.3.0') + @when('@3.3.0') # noqa def install(self, spec, prefix): # Apparently autotools are not bootstrapped which('libtoolize')() diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py index 8999b081e31..14255a0b19f 100644 --- a/var/spack/repos/builtin/packages/octopus/package.py +++ b/var/spack/repos/builtin/packages/octopus/package.py @@ -43,8 +43,8 @@ class Octopus(Package): description='Compile with ParMETIS') variant('netcdf', default=False, description='Compile with Netcdf') - variant('arpack-ng', default=False, - description='Compile with ARPACK-ng') + variant('arpack', default=False, + description='Compile with ARPACK') depends_on('blas') depends_on('gsl') @@ -56,15 +56,13 @@ class Octopus(Package): depends_on('parmetis', when='+parmetis') depends_on('scalapack', when='+scalapack') depends_on('netcdf-fortran', when='+netcdf') - depends_on('arpack-ng', when='+arpack-ng') + depends_on('arpack-ng', when='+arpack') # optional dependencies: # TODO: parmetis, etsf-io, sparskit, # feast, libfm, pfft, isf, pnfft def install(self, spec, prefix): - arpack = find_libraries('libarpack', root=spec[ - 'arpack-ng'].prefix.lib, shared=True) lapack = spec['lapack'].libs blas = spec['blas'].libs args = [] @@ -93,20 +91,25 @@ def install(self, spec, prefix): '--with-netcdf-include=%s' % spec['netcdf-fortran'].prefix.include, ]) - if '+arpack-ng' in spec: + if '+arpack' in spec: + arpack_libs = spec['arpack-ng'].libs.joined() args.extend([ - '--with-arpack={0}'.format(arpack.joined()), + '--with-arpack={0}'.format(arpack_libs), ]) + if '+mpi' in spec['arpack-ng']: + args.extend([ + '--with-parpack={0}'.format(arpack_libs), + ]) + if '+scalapack' in spec: args.extend([ '--with-blacs=%s' % spec['scalapack'].libs, - '--with-scalapack=%s' % spec['scalapack'].libs, + '--with-scalapack=%s' % spec['scalapack'].libs ]) + # --with-etsf-io-prefix= # --with-sparskit=${prefix}/lib/libskit.a # --with-pfft-prefix=${prefix} --with-mpifftw-prefix=${prefix} - # --with-parpack=${prefix}/lib/libparpack.dylib - # --with-parmetis-prefix=${prefix} # --with-berkeleygw-prefix=${prefix} # When preprocessor expands macros (i.e. CFLAGS) defined as quoted From 2a3fc6c40429cb5171002830c06a800903ba6be4 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 18 Apr 2017 12:02:41 -0500 Subject: [PATCH 0669/2394] charm: set sane default (#3865) see https://github.com/LLNL/spack/pull/3852#pullrequestreview-32996651 for details --- .../repos/builtin/packages/charm/package.py | 38 +++---------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/var/spack/repos/builtin/packages/charm/package.py b/var/spack/repos/builtin/packages/charm/package.py index a12eb004453..85451eb5ae8 100644 --- a/var/spack/repos/builtin/packages/charm/package.py +++ b/var/spack/repos/builtin/packages/charm/package.py @@ -53,16 +53,8 @@ class Charm(Package): # Communication mechanisms (choose exactly one) # TODO: Support Blue Gene/Q PAMI, Cray GNI, Cray shmem, CUDA - variant("mpi", default=True, - description="Use MPI as communication mechanism") - variant("multicore", default=False, - description="Disable inter-node communication") - variant("net", default=False, - description="Use net communication mechanism") - variant("netlrts", default=True, - description="Use netlrts communication mechanism") - variant("verbs", default=False, - description="Use Infiniband as communication mechanism") + variant('backend', default='mpi', description=( + 'Set the backend to use (mpi, multicore, net, netlrts, verbs)')) # Other options # Something is off with PAPI -- there are build errors. Maybe @@ -73,37 +65,17 @@ class Charm(Package): "Enable SMP parallelism (does not work with +multicore)")) variant("tcp", default=False, description="Use TCP as transport mechanism (requires +net)") - variant("shared", default=False, description="Enable shared link support") + variant("shared", default=True, description="Enable shared link support") # Note: We could add variants for AMPI, LIBS, bigemulator, msa, Tau - depends_on("mpi", when="+mpi") + depends_on('mpi', when='backend=mpi') depends_on("papi", when="+papi") def install(self, spec, prefix): target = "charm++" - # Note: Turn this into a multi-valued variant, once these - # exist in Spack - if sum(["+mpi" in spec, - "+multicore" in spec, - "+net" in spec, - "+netlrts" in spec, - "+verbs" in spec]) != 1: - raise InstallError( - "Exactly one communication mechanism " - "(+mpi, +multicore, +net, +netlrts, or +verbs) " - "must be enabled") - if "+mpi" in spec: - comm = "mpi" - if "+multicore" in spec: - comm = "multicore" - if "+net" in spec: - comm = "net" - if "+netlrts" in spec: - comm = "netlrts" - if "+verbs" in spec: - comm = "verbs" + comm = spec.variants['backend'].value plat = sys.platform if plat.startswith("linux"): From 687f5e78aed18dce868f8017dfa9529477a0ceeb Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 18 Apr 2017 19:02:55 +0200 Subject: [PATCH 0670/2394] Adding new python package: py-simplejson (#3883) * Adding new python package: py-simplejson * Adding setuptools dependency * Fixing typo --- .../builtin/packages/py-simplejson/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-simplejson/package.py diff --git a/var/spack/repos/builtin/packages/py-simplejson/package.py b/var/spack/repos/builtin/packages/py-simplejson/package.py new file mode 100644 index 00000000000..29c792b8a44 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-simplejson/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySimplejson(PythonPackage): + """Simplejson is a simple, fast, extensible JSON encoder/decoder for + Python""" + + homepage = "https://github.com/simplejson/simplejson" + url = "https://pypi.io/packages/source/s/simplejson/simplejson-3.10.0.tar.gz" + + version('3.10.0', '426a9631d22851a7a970b1a677368b15') + version('3.9.0', '01db2db1b96bd8e59bcab45bca12639b') + version('3.8.2', '53b1371bbf883b129a12d594a97e9a18') + version('3.8.1', 'b8441f1053edd9dc335ded8c7f98a974') + version('3.8.0', '72f3b93a6f9808df81535f79e79565a2') + + depends_on('py-setuptools', type='build') From a0b19d50c50a5be307f1947ae7ad64bb7729767b Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 18 Apr 2017 18:46:09 -0700 Subject: [PATCH 0671/2394] Disable parallel builds for vim (#3893) * Disable parallel builds The install step creates a bunch of links to the vim binary, e.g. `view`. When run with -j greater than 1 there are silent failures. Running w/out parallelism seems to fix it. * Only constrain the install phase to be -j 1 Thanks @adamjstewart! --- var/spack/repos/builtin/packages/vim/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index 05d9d14639a..5a854c144c6 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -129,3 +129,9 @@ def configure_args(self): configure_args.append("--enable-cscope") return configure_args + + # Run the install phase with -j 1. There seems to be a problem with + # parallel builds that results in the creation of the links (e.g. view) + # to the vim binary silently failing. + def install(self, spec, prefix): + make('install', parallel=False) From 13911f1b464939c50fb45f6eb3786ab1a8db3035 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Wed, 19 Apr 2017 17:32:00 +1000 Subject: [PATCH 0672/2394] gdbm: GNU dbm package for manipulating hashed databases (#3895) --- .../repos/builtin/packages/gdbm/package.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gdbm/package.py diff --git a/var/spack/repos/builtin/packages/gdbm/package.py b/var/spack/repos/builtin/packages/gdbm/package.py new file mode 100644 index 00000000000..b661c39b954 --- /dev/null +++ b/var/spack/repos/builtin/packages/gdbm/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class Gdbm(AutotoolsPackage): + """GNU dbm (or GDBM, for short) is a library of database functions + that use extensible hashing and work similar to the standard UNIX dbm. + These routines are provided to a programmer needing to create and + manipulate a hashed database.""" + + homepage = "http://www.gnu.org.ua/software/gdbm/gdbm.html" + url = "ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.13.tar.gz" + + version('1.13', '8929dcda2a8de3fd2367bdbf66769376') + version('1.12', '9ce96ff4c99e74295ea19040931c8fb9') + version('1.11', '72c832680cf0999caedbe5b265c8c1bd') + version('1.10', '88770493c2559dc80b561293e39d3570') + version('1.9.1', '59f6e4c4193cb875964ffbe8aa384b58') + version('1.9', '1f0e8e6691edd61bdd6b697b8c02528d') + + def configure_args(self): + return ['--enable-libgdbm-compat'] From eaefaaba5bf7cc8475179604e2c1f9e583f0c16d Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 19 Apr 2017 12:34:42 +0200 Subject: [PATCH 0673/2394] espresso: add 6.1.0 (#3881) * espresso: fix missing dependency on elpa, add 6.1.0 * override default libs of elpa to get shared always --- .../repos/builtin/packages/elpa/package.py | 15 ++++++++-- .../builtin/packages/espresso/package.py | 29 ++++++++++++++++--- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py index 033cb1e36c2..5f9a86956be 100644 --- a/var/spack/repos/builtin/packages/elpa/package.py +++ b/var/spack/repos/builtin/packages/elpa/package.py @@ -32,7 +32,8 @@ class Elpa(AutotoolsPackage): homepage = 'http://elpa.mpcdf.mpg.de/' url = 'http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz' - version('2016.05.004', 'c0dd3a53055536fc3a2a221e78d8b376') + version('2016.11.001.pre', '5656fd066cf0dcd071dbcaf20a639b37') + version('2016.05.004', 'c0dd3a53055536fc3a2a221e78d8b376', preferred=True) version('2016.05.003', '88a9f3f3bfb63e16509dd1be089dcf2c') version('2015.11.001', 'de0f35b7ee7c971fd0dca35c900b87e6') @@ -49,8 +50,18 @@ def url_for_version(self, version): t = 'http://elpa.mpcdf.mpg.de/elpa-{0}.tar.gz' return t.format(str(version)) - def setup_environment(self, spack_env, run_env): + # override default implementation which returns static lib + @property + def libs(self): + return find_libraries( + ['libelpa'], root=self.prefix, shared=True, recurse=True + ) + build_directory = 'spack-build' + + def setup_environment(self, spack_env, run_env): + # TODO: set optimum flags for platform+compiler combo, see + # https://github.com/hfp/xconfigure/tree/master/elpa spec = self.spec spack_env.set('CC', spec['mpi'].mpicc) diff --git a/var/spack/repos/builtin/packages/espresso/package.py b/var/spack/repos/builtin/packages/espresso/package.py index d2c825513c2..097049370a1 100644 --- a/var/spack/repos/builtin/packages/espresso/package.py +++ b/var/spack/repos/builtin/packages/espresso/package.py @@ -24,6 +24,7 @@ ############################################################################## from spack import * import os +from glob import glob class Espresso(Package): @@ -36,6 +37,12 @@ class Espresso(Package): homepage = 'http://quantum-espresso.org' url = 'http://www.qe-forge.org/gf/download/frsrelease/204/912/espresso-5.3.0.tar.gz' + version( + '6.1.0', + 'db398edcad76e085f8c8a3f6ecb7aaab', + url='http://www.qe-forge.org/gf/download/frsrelease/240/1075/qe-6.1.tar.gz' + ) + version( '5.4.0', '8bb78181b39bd084ae5cb7a512c1cfe7', @@ -56,9 +63,10 @@ class Espresso(Package): depends_on('fftw+mpi', when='+mpi') # TODO : + mpi needed to avoid false dependencies installation depends_on('scalapack', when='+scalapack+mpi') + depends_on('elpa@2016.11.001.pre', when='@6.1.0+elpa') # Spurious problems running in parallel the Makefile - # generated by qe configure + # generated by the configure parallel = False def check_variants(self, spec): @@ -69,10 +77,12 @@ def check_variants(self, spec): raise RuntimeError(error.format(variant='elpa')) def install(self, spec, prefix): - from glob import glob self.check_variants(spec) - options = ['-prefix=%s' % prefix.bin] + options = [ + '-prefix=%s' % (prefix.bin if spec.satisfies('@:5.4.0') else + prefix) + ] if '+mpi' in spec: options.append('--enable-parallel') @@ -84,7 +94,18 @@ def install(self, spec, prefix): options.append('--with-scalapack=yes') if '+elpa' in spec: - options.append('--with-elpa=yes') + if spec.satisfies('@:5.4.0'): + options.append('--with-elpa=yes') + else: + options.extend([ + '--with-elpa-include={0}'.format( + join_path(spec['elpa'].prefix, + 'include', + 'elpa-{0}'.format(str(spec['elpa'].version)), + 'modules') + ), + '--with-elpa-lib={0}'.format(spec['elpa'].libs.joined()) + ]) # Add a list of directories to search search_list = [] From 13fef18244d4e09c9ffe98321ed7eb8808fdb8fc Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 19 Apr 2017 04:51:04 -0700 Subject: [PATCH 0674/2394] Ensure sbin is prepended to PATH in modulefiles (#3843) --- var/spack/repos/builtin/packages/nginx/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/nginx/package.py b/var/spack/repos/builtin/packages/nginx/package.py index 4be107ca814..1ab2f276957 100644 --- a/var/spack/repos/builtin/packages/nginx/package.py +++ b/var/spack/repos/builtin/packages/nginx/package.py @@ -42,3 +42,7 @@ class Nginx(AutotoolsPackage): def configure_args(self): args = ['--with-http_ssl_module'] return args + + def setup_environment(self, spack_env, run_env): + """Prepend the sbin directory to PATH.""" + run_env.prepend_path('PATH', join_path(self.prefix, 'sbin')) From b00a12565c8aaa4dc54172cd5861020d6e09ff22 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Wed, 19 Apr 2017 21:54:06 +1000 Subject: [PATCH 0675/2394] pango: depends on libxft when +X, disable libxft support when ~X (#3899) --- var/spack/repos/builtin/packages/pango/package.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index cc6565dae37..e5a8e8c57df 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -46,7 +46,16 @@ class Pango(AutotoolsPackage): depends_on("cairo") depends_on("cairo~X", when='~X') depends_on("cairo+X", when='+X') + depends_on("libxft", when='+X') depends_on("glib") + def configure_args(self): + args = [] + if self.spec.satisfies('+X'): + args.append('--with-xft') + else: + args.append('--without-xft') + return args + def install(self, spec, prefix): make("install", parallel=False) From 9b6b91b0b90e8c1af2b903ccfb5492bae506a184 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Wed, 19 Apr 2017 21:55:22 +1000 Subject: [PATCH 0676/2394] ncl: capture more dependencies (#3902) * ncl: add depends_on statements for bison, flex and libiconv * ncl: depends on flex for building and linking * ncl: links with -ll, so requires flex with variant '+lex' * ncl: depends on szip; external hdf5 may not provide it --- var/spack/repos/builtin/packages/ncl/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index 78c5bf1ce20..051eaab4716 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -58,6 +58,11 @@ class Ncl(Package): depends_on('netcdf') depends_on('cairo') + # Extra dependencies that may be missing from build system: + depends_on('bison', type='build') + depends_on('flex+lex') + depends_on('libiconv') + # Also, the manual says that ncl requires zlib, but that comes as a # mandatory dependency of libpng, which is a mandatory dependency of cairo. @@ -75,6 +80,7 @@ class Ncl(Package): # szip support. We introduce this restriction with the following dependency # statement. depends_on('hdf5+szip') + depends_on('szip') # In Spack, we also do not have an option to compile netcdf without DAP # support, so we will tell the ncl configuration script that we have it. From 22a966d010acb2823226e3cc9d399336d5238c2c Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 19 Apr 2017 16:36:46 +0200 Subject: [PATCH 0677/2394] add lines missed in rebase (adios +bzip2) (#3907) --- var/spack/repos/builtin/packages/adios/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index e55274277d0..7d660390acd 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -128,6 +128,8 @@ def configure_args(self): if '+zlib' in spec: extra_args.append('--with-zlib=%s' % spec['zlib'].prefix) + if '+bzip2' in spec: + extra_args.append('--with-bzip2=%s' % spec['bzip2'].prefix) if '+szip' in spec: extra_args.append('--with-szip=%s' % spec['szip'].prefix) if '+zfp' in spec: From a3dff31b07bbb948a7648d95ba6c27b30e1892ca Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 19 Apr 2017 14:15:21 -0700 Subject: [PATCH 0678/2394] Add info for sqlite@3.18.0 (#3913) --- var/spack/repos/builtin/packages/sqlite/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py index c57ee723233..4d53462a4b0 100644 --- a/var/spack/repos/builtin/packages/sqlite/package.py +++ b/var/spack/repos/builtin/packages/sqlite/package.py @@ -33,6 +33,8 @@ class Sqlite(Package): """ homepage = "www.sqlite.org" + version('3.18.0', 'a6687a8ae1f66abc8df739aeadecfd0c', + url='https://www.sqlite.org/2017/sqlite-autoconf-3180000.tar.gz') version('3.8.5', '0544ef6d7afd8ca797935ccc2685a9ed', url='https://www.sqlite.org/2014/sqlite-autoconf-3080500.tar.gz') From 53763f76985cd1ba0812376d536600e560d3a070 Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Wed, 19 Apr 2017 22:21:13 +0100 Subject: [PATCH 0679/2394] Sox (#3908) * Initial add of flac * Initial add of id3lib * Initial add of the opus codec * Initial add of sox audio processing tools * Cleanup spec files to be inline with current standard * Fix pep8 compliance * Remove un-needed configuration --- .../repos/builtin/packages/flac/package.py | 39 +++++++ .../packages/id3lib/id3lib-3.8.3_gcc4.diff | 102 ++++++++++++++++++ .../repos/builtin/packages/id3lib/package.py | 40 +++++++ .../repos/builtin/packages/opus/package.py | 55 ++++++++++ .../repos/builtin/packages/sox/package.py | 40 +++++++ 5 files changed, 276 insertions(+) create mode 100644 var/spack/repos/builtin/packages/flac/package.py create mode 100644 var/spack/repos/builtin/packages/id3lib/id3lib-3.8.3_gcc4.diff create mode 100644 var/spack/repos/builtin/packages/id3lib/package.py create mode 100644 var/spack/repos/builtin/packages/opus/package.py create mode 100644 var/spack/repos/builtin/packages/sox/package.py diff --git a/var/spack/repos/builtin/packages/flac/package.py b/var/spack/repos/builtin/packages/flac/package.py new file mode 100644 index 00000000000..022273ed16a --- /dev/null +++ b/var/spack/repos/builtin/packages/flac/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Flac(AutotoolsPackage): + """Encoder/decoder for the Free Lossless Audio Codec""" + + homepage = "https://xiph.org/flac/index.html" + url = "http://downloads.xiph.org/releases/flac/flac-1.3.2.tar.xz" + + version('1.3.2', '454f1bfa3f93cc708098d7890d0499bd') + version('1.3.1', 'b9922c9a0378c88d3e901b234f852698') + version('1.3.0', '13b5c214cee8373464d3d65dee362cdd') + + depends_on('libvorbis') + depends_on('id3lib') diff --git a/var/spack/repos/builtin/packages/id3lib/id3lib-3.8.3_gcc4.diff b/var/spack/repos/builtin/packages/id3lib/id3lib-3.8.3_gcc4.diff new file mode 100644 index 00000000000..fc14fa10ded --- /dev/null +++ b/var/spack/repos/builtin/packages/id3lib/id3lib-3.8.3_gcc4.diff @@ -0,0 +1,102 @@ +Submitted By: Ken Moffat +Date: 2008-11-21 +Initial Package Version: 3.8.3 +Upstream Status: unknown +Origin: fedora +Description: Allows it to compile with gcc-4.3. + +diff -up id3lib-3.8.3/include/id3/id3lib_strings.h~ id3lib-3.8.3/include/id3/id3lib_strings.h +--- id3lib-3.8.3/include/id3/id3lib_strings.h~ 2003-03-02 02:23:00.000000000 +0200 ++++ id3lib-3.8.3/include/id3/id3lib_strings.h 2008-01-04 01:30:52.000000000 +0200 +@@ -29,6 +29,7 @@ + #ifndef _ID3LIB_STRINGS_H_ + #define _ID3LIB_STRINGS_H_ + ++#include + #include + + #if (defined(__GNUC__) && (__GNUC__ >= 3) || (defined(_MSC_VER) && _MSC_VER > 1000)) +diff -up id3lib-3.8.3/configure.in~ id3lib-3.8.3/configure.in +--- id3lib-3.8.3/configure.in~ 2008-01-04 11:39:01.000000000 +0100 ++++ id3lib-3.8.3/configure.in 2008-01-04 11:39:01.000000000 +0100 +@@ -227,7 +227,6 @@ AC_CHECK_HEADERS(fstream iostream iomani + ) + AC_CHECK_HEADERS( \ + string \ +- iomanip.h \ + ,,AC_MSG_ERROR([Missing a vital header file for id3lib]) + ) + +diff -up id3lib-3.8.3/configure~ id3lib-3.8.3/configure +--- id3lib-3.8.3/configure~ 2008-01-04 11:39:10.000000000 +0100 ++++ id3lib-3.8.3/configure 2008-01-04 11:39:10.000000000 +0100 +@@ -22976,7 +22976,6 @@ done + + for ac_header in \ + string \ +- iomanip.h \ + + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +diff -up id3lib-3.8.3/include/id3/writers.h~ id3lib-3.8.3/include/id3/writers.h +--- id3lib-3.8.3/include/id3/writers.h~ 2008-01-04 11:59:39.000000000 +0100 ++++ id3lib-3.8.3/include/id3/writers.h 2008-01-04 11:59:39.000000000 +0100 +@@ -28,9 +28,9 @@ + #ifndef _ID3LIB_WRITERS_H_ + #define _ID3LIB_WRITERS_H_ + ++#include + #include "id3/writer.h" + #include "id3/id3lib_streams.h" +-//#include + + class ID3_CPP_EXPORT ID3_OStreamWriter : public ID3_Writer + { +diff -up id3lib-3.8.3/examples/demo_info.cpp~ id3lib-3.8.3/examples/demo_info.cpp +--- id3lib-3.8.3/examples/demo_info.cpp~ 2008-01-04 12:00:56.000000000 +0100 ++++ id3lib-3.8.3/examples/demo_info.cpp 2008-01-04 12:00:56.000000000 +0100 +@@ -309,7 +309,7 @@ void PrintInformation(const ID3_Tag &myT + + #define DEBUG + +-int main( unsigned int argc, char * const argv[]) ++int main(int argc, char * const argv[]) + { + ID3D_INIT_DOUT(); + +diff -up id3lib-3.8.3/examples/demo_copy.cpp~ id3lib-3.8.3/examples/demo_copy.cpp +--- id3lib-3.8.3/examples/demo_copy.cpp~ 2008-01-04 12:01:26.000000000 +0100 ++++ id3lib-3.8.3/examples/demo_copy.cpp 2008-01-04 12:01:26.000000000 +0100 +@@ -81,7 +81,7 @@ void DisplayTags(ostream &os, luint nTag + } + } + +-int main( unsigned int argc, char * const argv[]) ++int main(int argc, char * const argv[]) + { + int ulFlag = ID3TT_ID3; + ID3D_INIT_DOUT(); +diff -up id3lib-3.8.3/examples/demo_convert.cpp~ id3lib-3.8.3/examples/demo_convert.cpp +--- id3lib-3.8.3/examples/demo_convert.cpp~ 2008-01-04 12:01:20.000000000 +0100 ++++ id3lib-3.8.3/examples/demo_convert.cpp 2008-01-04 12:01:20.000000000 +0100 +@@ -84,7 +84,7 @@ void DisplayTags(ostream &os, luint nTag + } + } + +-int main( unsigned int argc, char * const argv[]) ++int main(int argc, char * const argv[]) + { + flags_t ulFlag = ID3TT_ALL; + gengetopt_args_info args; +diff -up id3lib-3.8.3/examples/demo_tag.cpp~ id3lib-3.8.3/examples/demo_tag.cpp +--- id3lib-3.8.3/examples/demo_tag.cpp~ 2008-01-04 12:01:41.000000000 +0100 ++++ id3lib-3.8.3/examples/demo_tag.cpp 2008-01-04 12:01:41.000000000 +0100 +@@ -46,7 +46,7 @@ void DisplayTags(ostream &os, luint nTag + os << "v2"; + } + +-int main( unsigned int argc, char * const argv[]) ++int main(int argc, char * const argv[]) + { + int ulFlag = ID3TT_ID3; + ID3D_INIT_DOUT(); diff --git a/var/spack/repos/builtin/packages/id3lib/package.py b/var/spack/repos/builtin/packages/id3lib/package.py new file mode 100644 index 00000000000..0e8a40394f5 --- /dev/null +++ b/var/spack/repos/builtin/packages/id3lib/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Id3lib(AutotoolsPackage): + """Library for manipulating ID3v1 and ID3v2 tags""" + + homepage = "http://id3lib.sourceforge.net/" + url = "https://downloads.sourceforge.net/project/id3lib/id3lib/3.8.3/id3lib-3.8.3.tar.gz" + + version('3.8.3', '19f27ddd2dda4b2d26a559a4f0f402a7') + + depends_on('zlib') + + # http://connie.slackware.com/~alien/slackbuilds/id3lib/build/id3lib-3.8.3_gcc4.diff + # this is due to some changes in the c++ standard library headers + patch("id3lib-3.8.3_gcc4.diff") diff --git a/var/spack/repos/builtin/packages/opus/package.py b/var/spack/repos/builtin/packages/opus/package.py new file mode 100644 index 00000000000..e1061dfdcfb --- /dev/null +++ b/var/spack/repos/builtin/packages/opus/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Opus(AutotoolsPackage): + """Opus is a totally open, royalty-free, highly versatile audio codec.""" + + homepage = "http://opus-codec.org/" + url = "http://downloads.xiph.org/releases/opus/opus-1.1.4.tar.gz" + + version('1.1.4', 'a2c09d995d0885665ff83b5df2505a5f') + version('1.1.3', '32bbb6b557fe1b6066adc0ae1f08b629') + version('1.1.2', '1f08a661bc72930187893a07f3741a91') + version('1.1.1', 'cfb354d4c65217ca32a762f8ab15f2ac') + version('1.1', 'c5a8cf7c0b066759542bc4ca46817ac6') + version('1.0.3', '86eedbd3c5a0171d2437850435e6edff') + version('1.0.2', 'c503ad05a59ddb44deab96204401be03') + version('1.0.1', 'bbac19996957b404a1139816e2f357f5') + version('1.0.0', 'ec3ff0a16d9ad8c31a8856d13d97b155') + version('0.9.14', 'c7161b247a8437ae6b0f11dd872e69e8') + version('0.9.10', 'afbda2fd20dc08e6075db0f60297a137') + version('0.9.9', '0c18f0aac37f1ed955f5d694ddd88000') + version('0.9.8', '76c1876eae9169dee808ff4710d847cf') + version('0.9.7', '49834324ab618105cf112e161770b422') + version('0.9.6', '030556bcaebb241505f8577e92abe6d4') + version('0.9.5', '6bec090fd28996da0336e165b153ebd8') + version('0.9.3', '934226d4f572d01c5848bd70538248f5') + version('0.9.2', '8b9047956c4a781e05d3ac8565cd28f5') + version('0.9.1', 'f58214e530928aa3db1dec217d5dfcd4') + version('0.9.0', '8a729db587430392e64280a499e9d061') + + depends_on('libvorbis') diff --git a/var/spack/repos/builtin/packages/sox/package.py b/var/spack/repos/builtin/packages/sox/package.py new file mode 100644 index 00000000000..fc36a767aea --- /dev/null +++ b/var/spack/repos/builtin/packages/sox/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Sox(AutotoolsPackage): + """SoX, the Swiss Army knife of sound processing programs.""" + + homepage = "http://sox.sourceforge.net/Main/HomePage" + url = "https://downloads.sourceforge.net/project/sox/sox/14.4.2/sox-14.4.2.tar.bz2" + + version('14.4.2', 'ba804bb1ce5c71dd484a102a5b27d0dd') + + depends_on('bzip2') + depends_on('flac') + depends_on('id3lib') + depends_on('libvorbis') + depends_on('opus') From f4858cb7a7dfbc111a95580495a5c2ce3ab69ea8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 19 Apr 2017 20:59:04 -0500 Subject: [PATCH 0680/2394] Rework Spack's Mercurial support (#3834) * Add tests to mercurial package * Add support for --insecure with mercurial fetching * Install man pages and tab-completion scripts * Add tests and latest version for all deps * Flake8 fix * Use certifi module to find CA certificate * Flake8 fix * Unset PYTHONPATH when running hg * svn_fetch should use to svn-test, not hg-test * Drop Python 3 support in Mercurial Python 3 support is a work in progress and isn't currently recommended: https://www.mercurial-scm.org/wiki/SupportedPythonVersions * Test both secure and insecure hg fetching * Test both secure and insecure git and svn fetching --- lib/spack/spack/fetch_strategy.py | 19 +++- lib/spack/spack/test/git_fetch.py | 14 ++- lib/spack/spack/test/hg_fetch.py | 14 ++- lib/spack/spack/test/svn_fetch.py | 20 ++++- .../builtin/packages/mercurial/package.py | 89 +++++++++++++------ .../builtin/packages/py-appdirs/package.py | 5 +- .../builtin/packages/py-certifi/package.py | 7 +- .../repos/builtin/packages/py-cffi/package.py | 12 ++- .../builtin/packages/py-docutils/package.py | 16 +++- .../builtin/packages/py-packaging/package.py | 2 + .../builtin/packages/py-pycparser/package.py | 5 +- .../builtin/packages/py-pygments/package.py | 8 +- .../builtin/packages/py-pyparsing/package.py | 5 +- .../builtin/packages/py-setuptools/package.py | 8 +- .../repos/builtin/packages/py-six/package.py | 4 +- 15 files changed, 176 insertions(+), 52 deletions(-) diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index 38752b3fc16..855b2f9379a 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -808,8 +808,17 @@ def __init__(self, **kwargs): @property def hg(self): + """:returns: The hg executable + :rtype: Executable + """ if not self._hg: self._hg = which('hg', required=True) + + # When building PythonPackages, Spack automatically sets + # PYTHONPATH. This can interfere with hg, which is a Python + # script. Unset PYTHONPATH while running hg. + self._hg.add_default_env('PYTHONPATH', '') + return self._hg @property @@ -829,9 +838,15 @@ def fetch(self): args.append('at revision %s' % self.revision) tty.msg("Trying to clone Mercurial repository:", self.url, *args) - args = ['clone', self.url] + args = ['clone'] + + if spack.insecure: + args.append('--insecure') + + args.append(self.url) + if self.revision: - args += ['-r', self.revision] + args.extend(['-r', self.revision]) self.hg(*args) diff --git a/lib/spack/spack/test/git_fetch.py b/lib/spack/spack/test/git_fetch.py index 3bd998c5c20..ef531ef65fe 100644 --- a/lib/spack/spack/test/git_fetch.py +++ b/lib/spack/spack/test/git_fetch.py @@ -37,8 +37,15 @@ def type_of_test(request): return request.param +@pytest.fixture(params=[True, False]) +def secure(request): + """Attempt both secure and insecure fetching""" + return request.param + + def test_fetch( type_of_test, + secure, mock_git_repository, config, refresh_builtin_mock @@ -62,7 +69,12 @@ def test_fetch( pkg.versions[ver('git')] = t.args # Enter the stage directory and check some properties with pkg.stage: - pkg.do_stage() + try: + spack.insecure = secure + pkg.do_stage() + finally: + spack.insecure = False + assert h('HEAD') == h(t.revision) file_path = join_path(pkg.stage.source_path, t.file) diff --git a/lib/spack/spack/test/hg_fetch.py b/lib/spack/spack/test/hg_fetch.py index 71e4693c560..29a6eef5617 100644 --- a/lib/spack/spack/test/hg_fetch.py +++ b/lib/spack/spack/test/hg_fetch.py @@ -37,8 +37,15 @@ def type_of_test(request): return request.param +@pytest.fixture(params=[True, False]) +def secure(request): + """Attempt both secure and insecure fetching""" + return request.param + + def test_fetch( type_of_test, + secure, mock_hg_repository, config, refresh_builtin_mock @@ -62,7 +69,12 @@ def test_fetch( pkg.versions[ver('hg')] = t.args # Enter the stage directory and check some properties with pkg.stage: - pkg.do_stage() + try: + spack.insecure = secure + pkg.do_stage() + finally: + spack.insecure = False + assert h() == t.revision file_path = join_path(pkg.stage.source_path, t.file) diff --git a/lib/spack/spack/test/svn_fetch.py b/lib/spack/spack/test/svn_fetch.py index 962a150909f..69d675fe3cd 100644 --- a/lib/spack/spack/test/svn_fetch.py +++ b/lib/spack/spack/test/svn_fetch.py @@ -33,12 +33,19 @@ @pytest.fixture(params=['default', 'rev0']) def type_of_test(request): - """Returns one of the test type available for the mock_hg_repository""" + """Returns one of the test type available for the mock_svn_repository""" + return request.param + + +@pytest.fixture(params=[True, False]) +def secure(request): + """Attempt both secure and insecure fetching""" return request.param def test_fetch( type_of_test, + secure, mock_svn_repository, config, refresh_builtin_mock @@ -56,13 +63,18 @@ def test_fetch( t = mock_svn_repository.checks[type_of_test] h = mock_svn_repository.hash # Construct the package under test - spec = Spec('hg-test') + spec = Spec('svn-test') spec.concretize() pkg = spack.repo.get(spec, new=True) - pkg.versions[ver('hg')] = t.args + pkg.versions[ver('svn')] = t.args # Enter the stage directory and check some properties with pkg.stage: - pkg.do_stage() + try: + spack.insecure = secure + pkg.do_stage() + finally: + spack.insecure = False + assert h() == t.revision file_path = join_path(pkg.stage.source_path, t.file) diff --git a/var/spack/repos/builtin/packages/mercurial/package.py b/var/spack/repos/builtin/packages/mercurial/package.py index ea77953f15d..b383560cfe8 100644 --- a/var/spack/repos/builtin/packages/mercurial/package.py +++ b/var/spack/repos/builtin/packages/mercurial/package.py @@ -23,16 +23,23 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import llnl.util.tty as tty -import os +from llnl.util import tty -class Mercurial(Package): +class Mercurial(PythonPackage): """Mercurial is a free, distributed source control management tool.""" homepage = "https://www.mercurial-scm.org" - url = "https://www.mercurial-scm.org/release/mercurial-3.9.tar.gz" + url = "https://www.mercurial-scm.org/release/mercurial-4.1.2.tar.gz" + import_modules = [ + 'hgext', 'hgext3rd', 'mercurial', 'hgext.convert', 'hgext.fsmonitor', + 'hgext.highlight', 'hgext.largefiles', 'hgext.zeroconf', + 'hgext.fsmonitor.pywatchman', 'mercurial.hgweb', + 'mercurial.httpclient', 'mercurial.pure' + ] + + version('4.1.2', '934c99808bdc8385e074b902d59b0d93') version('3.9.1', '3759dd10edb8c1a6dfb8ff0ce82658ce') version('3.9', 'e2b355da744e94747daae3a5339d28a0') version('3.8.4', 'cec2c3db688cb87142809089c6ae13e9') @@ -40,30 +47,62 @@ class Mercurial(Package): version('3.8.2', 'c38daa0cbe264fc621dc3bb05933b0b3') version('3.8.1', '172a8c588adca12308c2aca16608d7f4') - extends('python') depends_on('python@2.6:2.8') depends_on('py-docutils', type='build') + depends_on('py-pygments', type=('build', 'run')) + depends_on('py-certifi', type=('build', 'run')) - def install(self, spec, prefix): - make('install', 'PREFIX={0}'.format(prefix)) + @run_after('install') + def post_install(self): + prefix = self.prefix - # Configuration of HTTPS certificate authorities - # https://www.mercurial-scm.org/wiki/CACertificates - hgrc_filename = join_path(prefix.etc, 'mercurial', 'hgrc') - mkdirp(os.path.dirname(hgrc_filename)) + # Install man pages + mkdirp(prefix.man1) + mkdirp(prefix.man5) + mkdirp(prefix.man8) + with working_dir('doc'): + install('hg.1', prefix.man1) + install('hgignore.5', prefix.man5) + install('hgrc.5', prefix.man5) + install('hg-ssh.8', prefix.man8) + # Install completion scripts + contrib = join_path(prefix, 'contrib') + mkdir(contrib) + with working_dir('contrib'): + install('bash_completion', join_path(contrib, 'bash_completion')) + install('zsh_completion', join_path(contrib, 'zsh_completion')) + + @run_after('install') + def configure_certificates(self): + """Configuration of HTTPS certificate authorities + https://www.mercurial-scm.org/wiki/CACertificates""" + + etc_dir = join_path(self.prefix.etc, 'mercurial') + mkdirp(etc_dir) + + hgrc_filename = join_path(etc_dir, 'hgrc') + + # Use certifi to find the location of the CA certificate + certificate = python('-c', 'import certifi; print certifi.where()', + output=str) + + if not certificate: + tty.warn('CA certificate not found. You may not be able to ' + 'connect to an HTTPS server. If your CA certificate ' + 'is in a non-standard location, you should add it to ' + '{0}.'.format(hgrc_filename)) + + # Write the global mercurial configuration file with open(hgrc_filename, 'w') as hgrc: - if os.path.exists('/etc/ssl/certs/ca-certificates.crt'): - # Debian/Ubuntu/Gentoo/Arch Linux - hgrc.write('[web]\ncacerts = /etc/ssl/certs/ca-certificates.crt') # noqa - elif os.path.exists('/etc/pki/tls/certs/ca-bundle.crt'): - # Fedora/RHEL/CentOS - hgrc.write('[web]\ncacerts = /etc/pki/tls/certs/ca-bundle.crt') - elif os.path.exists('/etc/ssl/ca-bundle.pem'): - # openSUSE/SLE - hgrc.write('[web]\ncacerts = /etc/ssl/ca-bundle.pem') - else: - tty.warn('CA certificate not found. You may not be able to ' - 'connect to an HTTPS server. If your CA certificate ' - 'is in a non-standard location, you should add it to ' - '{0}'.format(hgrc_filename)) + hgrc.write('[web]\ncacerts = {0}'.format(certificate)) + + @run_after('install') + @on_package_attributes(run_tests=True) + def check_install(self): + """Sanity-check setup.""" + + hg = Executable(join_path(self.prefix.bin, 'hg')) + + hg('debuginstall') + hg('version') diff --git a/var/spack/repos/builtin/packages/py-appdirs/package.py b/var/spack/repos/builtin/packages/py-appdirs/package.py index 360f56d9873..802d59b99b7 100644 --- a/var/spack/repos/builtin/packages/py-appdirs/package.py +++ b/var/spack/repos/builtin/packages/py-appdirs/package.py @@ -30,8 +30,11 @@ class PyAppdirs(PythonPackage): dirs, e.g. a "user data dir".""" homepage = "https://github.com/ActiveState/appdirs" - url = "https://pypi.io/packages/source/a/appdirs/appdirs-1.4.0.tar.gz" + url = "https://pypi.io/packages/source/a/appdirs/appdirs-1.4.3.tar.gz" + import_modules = ['appdirs'] + + version('1.4.3', '44c679904082a2133f5566c8a0d3ab42') version('1.4.0', '1d17b4c9694ab84794e228f28dc3275b') patch('setuptools-import.patch', when='@:1.4.0') diff --git a/var/spack/repos/builtin/packages/py-certifi/package.py b/var/spack/repos/builtin/packages/py-certifi/package.py index 959c0221edf..7d8095f3f9f 100644 --- a/var/spack/repos/builtin/packages/py-certifi/package.py +++ b/var/spack/repos/builtin/packages/py-certifi/package.py @@ -29,9 +29,12 @@ class PyCertifi(PythonPackage): """Certifi: A carefully curated collection of Root Certificates for validating the trustworthiness of SSL certificates while verifying the identity of TLS hosts.""" - homepage = "https://github.com/certifi/python-certifi" - url = "https://github.com/certifi/python-certifi/archive/2016.02.28.tar.gz" + homepage = "http://certifi.io/" + url = "https://pypi.io/packages/source/c/certifi/certifi-2017.1.23.tar.gz" + import_modules = ['certifi'] + + version('2017.1.23', 'b72521a8badff5e89a8eabea586d79ab') version('2016.02.28', '5ccfc23bd5e931863f0b01ef3e9d2dbd3bef0e1b') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-cffi/package.py b/var/spack/repos/builtin/packages/py-cffi/package.py index c0fbae639be..4d1f6ee5adb 100644 --- a/var/spack/repos/builtin/packages/py-cffi/package.py +++ b/var/spack/repos/builtin/packages/py-cffi/package.py @@ -23,15 +23,18 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys class PyCffi(PythonPackage): """Foreign Function Interface for Python calling C code""" homepage = "http://cffi.readthedocs.org/en/latest/" - # base https://pypi.python.org/pypi/cffi - url = "https://pypi.python.org/packages/source/c/cffi/cffi-1.1.2.tar.gz" + url = "https://pypi.io/packages/source/c/cffi/cffi-1.10.0.tar.gz" - version('1.1.2', 'ca6e6c45b45caa87aee9adc7c796eaea') + import_modules = ['cffi'] + + version('1.10.0', '2b5fa41182ed0edaf929a789e602a070') + version('1.1.2', 'ca6e6c45b45caa87aee9adc7c796eaea') depends_on('py-setuptools', type='build') depends_on('py-pycparser', type=('build', 'run')) @@ -44,4 +47,5 @@ def setup_environment(self, spack_env, run_env): # other compilation. We are setting the 'LDSHARED" to the # spack compiler wrapper plus a few extra flags necessary for # building the shared library. - spack_env.set('LDSHARED', "{0} -shared -pthread".format(spack_cc)) + if not sys.platform == 'darwin': + spack_env.set('LDSHARED', "{0} -shared -pthread".format(spack_cc)) diff --git a/var/spack/repos/builtin/packages/py-docutils/package.py b/var/spack/repos/builtin/packages/py-docutils/package.py index 00741284df0..76a723e34dc 100644 --- a/var/spack/repos/builtin/packages/py-docutils/package.py +++ b/var/spack/repos/builtin/packages/py-docutils/package.py @@ -33,8 +33,18 @@ class PyDocutils(PythonPackage): markup language.""" homepage = "http://docutils.sourceforge.net/" - url = "https://pypi.python.org/packages/source/d/docutils/docutils-0.12.tar.gz" + url = "https://pypi.io/packages/source/d/docutils/docutils-0.13.1.tar.gz" - version('0.13.1', 'ea4a893c633c788be9b8078b6b305d53', - url="https://pypi.python.org/packages/05/25/7b5484aca5d46915493f1fd4ecb63c38c333bd32aa9ad6e19da8d08895ae/docutils-0.13.1.tar.gz") + import_modules = [ + 'docutils', 'docutils.languages', 'docutils.parsers', + 'docutils.readers', 'docutils.transforms', 'docutils.utils', + 'docutils.writers', 'docutils.parsers.rst', + 'docutils.parsers.rst.directives', 'docutils.parsers.rst.languages', + 'docutils.utils.math', 'docutils.writers.html4css1', + 'docutils.writers.html5_polyglot', 'docutils.writers.latex2e', + 'docutils.writers.odf_odt', 'docutils.writers.pep_html', + 'docutils.writers.s5_html', 'docutils.writers.xetex' + ] + + version('0.13.1', 'ea4a893c633c788be9b8078b6b305d53') version('0.12', '4622263b62c5c771c03502afa3157768') diff --git a/var/spack/repos/builtin/packages/py-packaging/package.py b/var/spack/repos/builtin/packages/py-packaging/package.py index 506bb6f976e..4ee97a507ac 100644 --- a/var/spack/repos/builtin/packages/py-packaging/package.py +++ b/var/spack/repos/builtin/packages/py-packaging/package.py @@ -31,6 +31,8 @@ class PyPackaging(PythonPackage): homepage = "https://github.com/pypa/packaging" url = "https://pypi.io/packages/source/p/packaging/packaging-16.8.tar.gz" + import_modules = ['packaging'] + version('16.8', '53895cdca04ecff80b54128e475b5d3b') # Not needed for the installation, but used at runtime diff --git a/var/spack/repos/builtin/packages/py-pycparser/package.py b/var/spack/repos/builtin/packages/py-pycparser/package.py index 8de5c39d32e..a2c00fe33a4 100644 --- a/var/spack/repos/builtin/packages/py-pycparser/package.py +++ b/var/spack/repos/builtin/packages/py-pycparser/package.py @@ -28,8 +28,11 @@ class PyPycparser(PythonPackage): """A complete parser of the C language, written in pure python.""" homepage = "https://github.com/eliben/pycparser" - url = "https://pypi.python.org/packages/source/p/pycparser/pycparser-2.13.tar.gz" + url = "https://pypi.io/packages/source/p/pycparser/pycparser-2.17.tar.gz" + import_modules = ['pycparser', 'pycparser.ply'] + + version('2.17', 'ca98dcb50bc1276f230118f6af5a40c7') version('2.13', 'e4fe1a2d341b22e25da0d22f034ef32f') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pygments/package.py b/var/spack/repos/builtin/packages/py-pygments/package.py index 42e3366cdff..0312a4f9aab 100644 --- a/var/spack/repos/builtin/packages/py-pygments/package.py +++ b/var/spack/repos/builtin/packages/py-pygments/package.py @@ -29,8 +29,14 @@ class PyPygments(PythonPackage): """Pygments is a syntax highlighting package written in Python.""" homepage = "https://pypi.python.org/pypi/pygments" - url = "https://pypi.python.org/packages/source/P/Pygments/Pygments-2.0.1.tar.gz" + url = "https://pypi.io/packages/source/P/Pygments/Pygments-2.2.0.tar.gz" + import_modules = [ + 'pygments', 'pygments.filters', 'pygments.formatters', + 'pygments.lexers', 'pygments.styles' + ] + + version('2.2.0', '13037baca42f16917cbd5ad2fab50844') version('2.1.3', 'ed3fba2467c8afcda4d317e4ef2c6150') version('2.0.1', 'e0daf4c14a4fe5b630da765904de4d6c') version('2.0.2', '238587a1370d62405edabd0794b3ec4a') diff --git a/var/spack/repos/builtin/packages/py-pyparsing/package.py b/var/spack/repos/builtin/packages/py-pyparsing/package.py index 936295a132c..1d0c5a3bf09 100644 --- a/var/spack/repos/builtin/packages/py-pyparsing/package.py +++ b/var/spack/repos/builtin/packages/py-pyparsing/package.py @@ -28,8 +28,11 @@ class PyPyparsing(PythonPackage): """A Python Parsing Module.""" homepage = "https://pypi.python.org/pypi/pyparsing" - url = "https://pypi.io/packages/source/p/pyparsing/pyparsing-2.0.3.tar.gz" + url = "https://pypi.io/packages/source/p/pyparsing/pyparsing-2.2.0.tar.gz" + import_modules = ['pyparsing'] + + version('2.2.0', '0214e42d63af850256962b6744c948d9') version('2.1.10', '065908b92904e0d3634eb156f44cc80e') version('2.0.3', '0fe479be09fc2cf005f753d3acc35939') diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 94ee8a7fc46..6caccd63a45 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -32,12 +32,10 @@ class PySetuptools(PythonPackage): homepage = "https://pypi.python.org/pypi/setuptools" url = "https://pypi.io/packages/source/s/setuptools/setuptools-25.2.0.tar.gz" - import_modules = [ - 'pkg_resources', 'setuptools', 'pkg_resources.extern', - 'pkg_resources._vendor', 'pkg_resources._vendor.packaging', - 'setuptools.extern', 'setuptools.command' - ] + import_modules = ['pkg_resources', 'setuptools', 'setuptools.command'] + version('34.4.1', '5f9b07aeaafd29eac2548fc0b89a4934', + url="https://pypi.io/packages/source/s/setuptools/setuptools-34.4.1.zip") version('34.2.0', '41b630da4ea6cfa5894d9eb3142922be', url="https://pypi.io/packages/source/s/setuptools/setuptools-34.2.0.zip") version('25.2.0', 'a0dbb65889c46214c691f6c516cf959c') diff --git a/var/spack/repos/builtin/packages/py-six/package.py b/var/spack/repos/builtin/packages/py-six/package.py index b2faad3819c..47a53438b58 100644 --- a/var/spack/repos/builtin/packages/py-six/package.py +++ b/var/spack/repos/builtin/packages/py-six/package.py @@ -29,7 +29,9 @@ class PySix(PythonPackage): """Python 2 and 3 compatibility utilities.""" homepage = "https://pypi.python.org/pypi/six" - url = "https://pypi.io/packages/source/s/six/six-1.9.0.tar.gz" + url = "https://pypi.io/packages/source/s/six/six-1.10.0.tar.gz" + + import_modules = ['six'] version('1.10.0', '34eed507548117b2ab523ab14b2f8b55') version('1.9.0', '476881ef4012262dfc8adc645ee786c4') From f51af42bc61295d41fe74b2d5beecedafa1d2379 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 19 Apr 2017 23:24:32 -0500 Subject: [PATCH 0681/2394] Add latest version of HOOMD-blue (#3889) --- .../builtin/packages/hoomd-blue/package.py | 61 ++++++++++++------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/var/spack/repos/builtin/packages/hoomd-blue/package.py b/var/spack/repos/builtin/packages/hoomd-blue/package.py index 5e27f6aead1..3d56f08dc0a 100644 --- a/var/spack/repos/builtin/packages/hoomd-blue/package.py +++ b/var/spack/repos/builtin/packages/hoomd-blue/package.py @@ -26,7 +26,7 @@ import os -class HoomdBlue(Package): +class HoomdBlue(CMakePackage): """HOOMD-blue is a general-purpose particle simulation toolkit. It scales from a single CPU core to thousands of GPUs. @@ -36,28 +36,52 @@ class HoomdBlue(Package): to create custom initialization routines, control simulation parameters, and perform in situ analysis.""" - homepage = "https://codeblue.umich.edu/hoomd-blue/index.html" - url = "https://bitbucket.org/glotzer/hoomd-blue/get/v1.3.3.tar.bz2" + homepage = "http://glotzerlab.engin.umich.edu/hoomd-blue/" + git = "https://bitbucket.org/glotzer/hoomd-blue" - version('1.3.3', '1469ef4531dc14b579c0acddbfe6a273') + # TODO: There is a bug in Spack that requires a url to be defined + # even if it isn't used. These URLs can hopefully be removed someday. + url = "https://bitbucket.org/glotzer/hoomd-blue/get/v2.1.6.tar.bz2" + list_url = "https://bitbucket.org/glotzer/hoomd-blue/downloads/?tab=tags" - variant('mpi', default=True, description='Compile with MPI enabled') - variant('cuda', default=True, description='Compile with CUDA Toolkit') - variant('doc', default=True, description='Generate documentation') + version('develop', git=git, submodules=True) + + # Bitbucket has tarballs for each release, but they cannot be built. + # The tarball doesn't come with the git submodules, nor does it come + # with a .git directory, causing the build to fail. As a workaround, + # clone a specific tag from Bitbucket instead of using the tarballs. + # https://bitbucket.org/glotzer/hoomd-blue/issues/238 + version('2.1.6', git=git, tag='v2.1.6', submodules=True) + + variant('mpi', default=True, description='Compile with MPI enabled') + variant('cuda', default=True, description='Compile with CUDA Toolkit') + variant('doc', default=False, description='Generate documentation') + + # HOOMD-blue requires C++11 support, which is only available in GCC 4.7+ + # https://bitbucket.org/glotzer/hoomd-blue/issues/238 + # https://gcc.gnu.org/projects/cxx-status.html + conflicts('%gcc@:4.6') + + # HOOMD-blue uses hexadecimal floats, which are not technically part of + # the C++11 standard. GCC 6.0+ produces an error when this happens. + # https://bitbucket.org/glotzer/hoomd-blue/issues/239 + # https://bugzilla.redhat.com/show_bug.cgi?id=1321986 + conflicts('%gcc@6.0:') extends('python') - depends_on('py-numpy', type=('build', 'run')) - depends_on('boost+python') - depends_on('cmake', type='build') + depends_on('python@2.7:') + depends_on('py-numpy@1.7:', type=('build', 'run')) + depends_on('cmake@2.8.0:', type='build') + depends_on('pkg-config', type='build') depends_on('mpi', when='+mpi') - depends_on('cuda', when='+cuda') - depends_on('doxygen', when='+doc', type='build') + depends_on('cuda@7.0:', when='+cuda') + depends_on('doxygen@1.8.5:', when='+doc', type='build') - def install(self, spec, prefix): + def cmake_args(self): + spec = self.spec cmake_args = [ - '-DPYTHON_EXECUTABLE=%s/python' % spec['python'].prefix.bin, - '-DBOOST_ROOT=%s' % spec['boost'].prefix + '-DPYTHON_EXECUTABLE={0}/python'.format(spec['python'].prefix.bin), ] # MPI support @@ -90,9 +114,4 @@ def install(self, spec, prefix): else: cmake_args.append('-DENABLE_DOXYGEN=OFF') - cmake_args.extend(std_cmake_args) - cmake('.', *cmake_args) - - make() - make("test") - make("install") + return cmake_args From 3c0c0f3457fff8bb26cf34e101789b45c4d8bec8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 19 Apr 2017 23:29:27 -0500 Subject: [PATCH 0682/2394] binutils should link to Spack zlib installation (#3914) --- .../repos/builtin/packages/binutils/package.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index be4675d1b0a..41a83125197 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -39,11 +39,6 @@ class Binutils(AutotoolsPackage): version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e') version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764') - depends_on('m4', type='build') - depends_on('flex', type='build') - depends_on('bison', type='build') - depends_on('gettext') - # Add a patch that creates binutils libiberty_pic.a which is preferred by # OpenSpeedShop and cbtf-krell variant('krellpatch', default=False, @@ -51,17 +46,24 @@ class Binutils(AutotoolsPackage): variant('plugins', default=False, description="enable plugins, needed for gold linker") variant('gold', default=True, description="build the gold linker") + variant('libiberty', default=False, description='Also install libiberty.') patch('binutilskrell-2.24.patch', when='@2.24+krellpatch') patch('cr16.patch') patch('update_symbol-2.26.patch', when='@2.26') - variant('libiberty', default=False, description='Also install libiberty.') + depends_on('zlib') + + depends_on('m4', type='build') + depends_on('flex', type='build') + depends_on('bison', type='build') + depends_on('gettext') def configure_args(self): spec = self.spec configure_args = [ + '--with-system-zlib', '--disable-dependency-tracking', '--disable-werror', '--enable-interwork', @@ -69,7 +71,8 @@ def configure_args(self): '--enable-shared', '--enable-64-bit-bfd', '--enable-targets=all', - '--with-sysroot=/'] + '--with-sysroot=/', + ] if '+gold' in spec: configure_args.append('--enable-gold') From 186d1f4511c8aa3bc5ce661b1e883db10e20958a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 19 Apr 2017 23:30:08 -0500 Subject: [PATCH 0683/2394] Add lmod files to MODULEPATH (#3912) --- share/spack/setup-env.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index a67ae04b245..1b40b1d7bbf 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -196,8 +196,10 @@ _spack_pathadd PATH "${_sp_prefix%/}/bin" _sp_sys_type=$(spack-python -c 'print(spack.architecture.sys_type())') _sp_dotkit_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots', {}).get('dotkit')))") _sp_tcl_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots', {}).get('tcl')))") +_sp_lmod_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots', {}).get('lmod')))") _spack_pathadd DK_NODE "${_sp_dotkit_root%/}/$_sp_sys_type" _spack_pathadd MODULEPATH "${_sp_tcl_root%/}/$_sp_sys_type" +_spack_pathadd MODULEPATH "${_sp_lmod_root%/}/$_sp_sys_type" # # Add programmable tab completion for Bash From 9bd6d2132242555816e49479f8010dccf7dca8bd Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 19 Apr 2017 23:31:21 -0500 Subject: [PATCH 0684/2394] Add variant to mvapich2 to set size of rank bits (#3886) --- var/spack/repos/builtin/packages/mvapich2/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index e3f6e5f6a6d..d952165ac1d 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -58,6 +58,11 @@ class Mvapich2(Package): variant('threads', default='multiple', description='Control the level of thread support') + # 32 is needed when job size exceeds 32768 cores + variant('ch3_rank_bits', default=32, + description='Number of bits allocated to the rank field (16 or 32)' + ) + ########## # TODO : Process managers should be grouped into the same variant, # as soon as variant capabilities will be extended See @@ -262,6 +267,8 @@ def install(self, spec, prefix): "--enable-romio", "--disable-silent-rules", "--enable-threads={0}".format(spec.variants['threads'].value), + "--with-ch3-rank-bits={0}".format( + spec.variants['ch3_rank_bits'].value), ] if self.compiler.f77 and self.compiler.fc: From e12f2c18557e67d927d351c36b0760e9b7826956 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 19 Apr 2017 23:33:14 -0500 Subject: [PATCH 0685/2394] Set proper deptypes for certain build systems (#3866) * Set proper deptypes for certain build systems * Add depends_on to namespace --- lib/spack/spack/build_systems/perl.py | 6 ++++-- lib/spack/spack/build_systems/python.py | 4 +++- lib/spack/spack/build_systems/r.py | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/build_systems/perl.py b/lib/spack/spack/build_systems/perl.py index 78184c85dc6..2f272373d2f 100644 --- a/lib/spack/spack/build_systems/perl.py +++ b/lib/spack/spack/build_systems/perl.py @@ -27,7 +27,7 @@ import os from llnl.util.filesystem import join_path -from spack.directives import extends +from spack.directives import depends_on, extends from spack.package import PackageBase, run_after from spack.util.executable import Executable @@ -64,6 +64,8 @@ class PerlPackage(PackageBase): extends('perl') + depends_on('perl', type=('build', 'run')) + def configure_args(self): """Produces a list containing the arguments that must be passed to :py:meth:`~.PerlPackage.configure`. Arguments should not include @@ -85,7 +87,7 @@ def configure(self, spec, prefix): self.build_executable = inspect.getmodule(self).make elif os.path.isfile('Build.PL'): self.build_method = 'Build.PL' - self.build_executable = Executable( + self.build_executable = Executable( join_path(self.stage.source_path, 'Build')) else: raise RuntimeError('Unknown build_method for perl package') diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index 2c8ccebae6a..904f0dbaa0a 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -26,7 +26,7 @@ import inspect import os -from spack.directives import extends +from spack.directives import depends_on, extends from spack.package import PackageBase, run_after from llnl.util.filesystem import working_dir @@ -114,6 +114,8 @@ def configure(self, spec, prefix): extends('python') + depends_on('python', type=('build', 'run')) + def setup_file(self): """Returns the name of the setup file to use.""" return 'setup.py' diff --git a/lib/spack/spack/build_systems/r.py b/lib/spack/spack/build_systems/r.py index cde3dc9fdd6..618ba398e17 100644 --- a/lib/spack/spack/build_systems/r.py +++ b/lib/spack/spack/build_systems/r.py @@ -25,7 +25,7 @@ import inspect -from spack.directives import extends +from spack.directives import depends_on, extends from spack.package import PackageBase, run_after @@ -47,6 +47,8 @@ class RPackage(PackageBase): extends('r') + depends_on('r', type=('build', 'run')) + def install(self, spec, prefix): """Installs an R package.""" inspect.getmodule(self).R( From a65c37f15dff4b4d60784fd4fcc55874ce9d6d11 Mon Sep 17 00:00:00 2001 From: scheibelp Date: Wed, 19 Apr 2017 21:59:18 -0700 Subject: [PATCH 0686/2394] Override partial installs by default (#3530) * Package install remove prior unfinished installs Depending on how spack is terminated in the middle of building a package it may leave a partially installed package in the install prefix. Originally Spack treated the package as being installed if the prefix was present, in which case the user would have to manually remove the installation prefix before restarting an install. This commit adds a more thorough check to ensure that a package is actually installed. If the installation prefix is present but Spack determines that the install did not complete, it removes the installation prefix and starts a new install; if the user has enabled --keep-prefix, then Spack reverts to its old behavior. * Added test for partial install handling * Added test for restoring DB * Style fixes * Restoring 2.6 compatibility * Relocated repair logic to separate function * If --keep-prefix is set, package installs will continue an install from an existing prefix if one is present * check metadata consistency when continuing partial install * Added --force option to make spack reinstall a package (and all dependencies) from scratch * Updated bash completion; removed '-f' shorthand for '--force' for install command * dont use multiple write modes for completion file --- lib/spack/spack/cmd/install.py | 9 ++ lib/spack/spack/directory_layout.py | 27 +++- lib/spack/spack/package.py | 51 +++++++- lib/spack/spack/test/install.py | 123 ++++++++++++++++++ share/spack/spack-completion.bash | 2 +- .../builtin.mock/packages/canfail/package.py | 41 ++++++ 6 files changed, 245 insertions(+), 8 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/canfail/package.py diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index fb01fc2d5e1..08dc080e8ed 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -72,6 +72,9 @@ def setup_parser(subparser): subparser.add_argument( '--fake', action='store_true', dest='fake', help="fake install. just remove prefix and create a fake file") + subparser.add_argument( + '--force', action='store_true', dest='force', + help='Install again even if package is already installed.') cd_group = subparser.add_mutually_exclusive_group() arguments.add_common_arguments(cd_group, ['clean', 'dirty']) @@ -319,6 +322,12 @@ def install(parser, args, **kwargs): tty.error('The `spack install` command requires a spec to install.') for spec in specs: + if args.force: + for s in spec.traverse(): + if s.package.installed: + tty.msg("Clearing %s for new installation" % s.name) + s.package.do_uninstall(force=True) + # Check if we were asked to produce some log for dashboards if args.log_format is not None: # Compute the filename for logging diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index 9d098754848..e220a2d430c 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -239,6 +239,17 @@ def build_packages_path(self, spec): return join_path(self.path_for_spec(spec), self.metadata_dir, self.packages_dir) + def _completion_marker_file(self, spec): + return join_path(self.path_for_spec(spec), self.metadata_dir, + 'complete') + + def mark_complete(self, spec): + with open(self._completion_marker_file(spec), 'w'): + pass + + def completed_install(self, spec): + return os.path.exists(self._completion_marker_file(spec)) + def create_install_directory(self, spec): _check_concrete(spec) @@ -252,26 +263,34 @@ def create_install_directory(self, spec): def check_installed(self, spec): _check_concrete(spec) path = self.path_for_spec(spec) - spec_file_path = self.spec_file_path(spec) if not os.path.isdir(path): return None + elif not self.completed_install(spec): + raise InconsistentInstallDirectoryError( + 'The prefix %s contains a partial install' % path) + + self.check_metadata_consistency(spec) + return path + + def check_metadata_consistency(self, spec): + spec_file_path = self.spec_file_path(spec) if not os.path.isfile(spec_file_path): raise InconsistentInstallDirectoryError( 'Install prefix exists but contains no spec.yaml:', - " " + path) + " " + spec.prefix) installed_spec = self.read_spec(spec_file_path) if installed_spec == spec: - return path + return # DAG hashes currently do not include build dependencies. # # TODO: remove this when we do better concretization and don't # ignore build-only deps in hashes. elif installed_spec == spec.copy(deps=('link', 'run')): - return path + return if spec.dag_hash() == installed_spec.dag_hash(): raise SpecHashCollisionError(spec, installed_spec) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 108ddeff07f..e6eea35a80b 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -856,7 +856,7 @@ def provides(self, vpkg_name): @property def installed(self): - return os.path.isdir(self.prefix) + return spack.store.layout.completed_install(self.spec) @property def prefix_lock(self): @@ -1174,10 +1174,16 @@ def do_install(self, (self.name, self.spec.external)) return + self.repair_partial(keep_prefix) + # Ensure package is not already installed layout = spack.store.layout with self._prefix_read_lock(): - if layout.check_installed(self.spec): + if (keep_prefix and os.path.isdir(self.prefix) and + (not self.installed)): + tty.msg( + "Continuing from partial install of %s" % self.name) + elif layout.check_installed(self.spec): tty.msg( "%s is already installed in %s" % (self.name, self.prefix)) rec = spack.store.db.get_record(self.spec) @@ -1305,9 +1311,11 @@ def build_process(input_stream): try: # Create the install prefix and fork the build process. - spack.store.layout.create_install_directory(self.spec) + if (not keep_prefix) or (not os.path.isdir(self.prefix)): + spack.store.layout.create_install_directory(self.spec) # Fork a child to do the actual installation spack.build_environment.fork(self, build_process, dirty=dirty) + spack.store.layout.mark_complete(self.spec) # If we installed then we should keep the prefix keep_prefix = True if self.last_phase is None else keep_prefix # note: PARENT of the build process adds the new package to @@ -1332,6 +1340,43 @@ def build_process(input_stream): if not keep_prefix: self.remove_prefix() + def repair_partial(self, continue_with_partial=False): + """If continue_with_partial is not set, this ensures that the package + is either fully-installed or that the prefix is removed. If the + package is installed but there is no DB entry then this adds a + record. If continue_with_partial is not set this also clears the + stage directory to start an installation from scratch. + """ + layout = spack.store.layout + with self._prefix_read_lock(): + if (os.path.isdir(self.prefix) and not self.installed and + not continue_with_partial): + spack.hooks.pre_uninstall(self) + self.remove_prefix() + try: + spack.store.db.remove(self.spec) + except KeyError: + pass + spack.hooks.post_uninstall(self) + tty.msg("Removed partial install for %s" % + self.spec.short_spec) + elif self.installed and layout.check_installed(self.spec): + try: + spack.store.db.get_record(self.spec) + except KeyError: + tty.msg("Repairing db for %s" % self.name) + spack.store.db.add(self.spec) + + if continue_with_partial and not self.installed: + try: + layout.check_metadata_consistency(self.spec) + except directory_layout.DirectoryLayoutError: + self.remove_prefix() + + if not continue_with_partial: + self.stage.destroy() + self.stage.create() + def _do_install_pop_kwargs(self, kwargs): """Pops kwargs from do_install before starting the installation diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py index f10c3a37e99..08694f7ee8a 100644 --- a/lib/spack/spack/test/install.py +++ b/lib/spack/spack/test/install.py @@ -30,6 +30,8 @@ from spack.fetch_strategy import URLFetchStrategy, FetchStrategyComposite from spack.spec import Spec +import os + @pytest.fixture() def install_mockery(tmpdir, config, builtin_mock): @@ -77,6 +79,123 @@ def test_install_and_uninstall(mock_archive): raise +def mock_remove_prefix(*args): + raise MockInstallError( + "Intentional error", + "Mock remove_prefix method intentionally fails") + + +@pytest.mark.usefixtures('install_mockery') +def test_partial_install(mock_archive): + spec = Spec('canfail') + spec.concretize() + pkg = spack.repo.get(spec) + fake_fetchify(mock_archive.url, pkg) + remove_prefix = spack.package.Package.remove_prefix + try: + spack.package.Package.remove_prefix = mock_remove_prefix + try: + pkg.do_install() + except MockInstallError: + pass + spack.package.Package.remove_prefix = remove_prefix + setattr(pkg, 'succeed', True) + pkg.do_install() + assert pkg.installed + finally: + spack.package.Package.remove_prefix = remove_prefix + try: + delattr(pkg, 'succeed') + except AttributeError: + pass + + +@pytest.mark.usefixtures('install_mockery') +def test_partial_install_keep_prefix(mock_archive): + spec = Spec('canfail') + spec.concretize() + pkg = spack.repo.get(spec) + fake_fetchify(mock_archive.url, pkg) + remove_prefix = spack.package.Package.remove_prefix + try: + spack.package.Package.remove_prefix = mock_remove_prefix + try: + pkg.do_install() + except MockInstallError: + pass + # Don't repair remove_prefix at this point, set keep_prefix so that + # Spack continues with a partial install + setattr(pkg, 'succeed', True) + pkg.do_install(keep_prefix=True) + assert pkg.installed + finally: + spack.package.Package.remove_prefix = remove_prefix + try: + delattr(pkg, 'succeed') + except AttributeError: + pass + + +@pytest.mark.usefixtures('install_mockery') +def test_partial_install_keep_prefix_check_metadata(mock_archive): + spec = Spec('canfail') + spec.concretize() + pkg = spack.repo.get(spec) + fake_fetchify(mock_archive.url, pkg) + remove_prefix = spack.package.Package.remove_prefix + try: + spack.package.Package.remove_prefix = mock_remove_prefix + try: + pkg.do_install() + except MockInstallError: + pass + os.remove(spack.store.layout.spec_file_path(spec)) + spack.package.Package.remove_prefix = remove_prefix + setattr(pkg, 'succeed', True) + pkg.do_install(keep_prefix=True) + assert pkg.installed + spack.store.layout.check_metadata_consistency(spec) + finally: + spack.package.Package.remove_prefix = remove_prefix + try: + delattr(pkg, 'succeed') + except AttributeError: + pass + + +@pytest.mark.usefixtures('install_mockery') +def test_install_succeeds_but_db_add_fails(mock_archive): + """If an installation succeeds but the database is not updated, make sure + that the database is updated for a future install.""" + spec = Spec('cmake') + spec.concretize() + pkg = spack.repo.get(spec) + fake_fetchify(mock_archive.url, pkg) + remove_prefix = spack.package.Package.remove_prefix + db_add = spack.store.db.add + + def mock_db_add(*args, **kwargs): + raise MockInstallError( + "Intentional error", "Mock db add method intentionally fails") + + try: + spack.package.Package.remove_prefix = mock_remove_prefix + spack.store.db.add = mock_db_add + try: + pkg.do_install() + except MockInstallError: + pass + assert pkg.installed + + spack.package.Package.remove_prefix = remove_prefix + spack.store.db.add = db_add + pkg.do_install() + assert spack.store.db.get_record(spec) + except: + spack.package.Package.remove_prefix = remove_prefix + raise + + @pytest.mark.usefixtures('install_mockery') def test_store(mock_archive): spec = Spec('cmake-client').concretized() @@ -102,3 +221,7 @@ def test_failing_build(mock_archive): pkg = spec.package with pytest.raises(spack.build_environment.ChildError): pkg.do_install() + + +class MockInstallError(spack.error.SpackError): + pass diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 819dcc06ab1..1167690fa27 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -407,7 +407,7 @@ function _spack_install { then compgen -W "-h --help --only -j --jobs --keep-prefix --keep-stage -n --no-checksum -v --verbose --fake --clean --dirty - --run-tests --log-format --log-file" -- "$cur" + --run-tests --log-format --log-file --force" -- "$cur" else compgen -W "$(_all_packages)" -- "$cur" fi diff --git a/var/spack/repos/builtin.mock/packages/canfail/package.py b/var/spack/repos/builtin.mock/packages/canfail/package.py new file mode 100644 index 00000000000..bef4f6e8385 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/canfail/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Canfail(Package): + """Package which fails install unless a special attribute is set""" + + homepage = "http://www.example.com" + url = "http://www.example.com/a-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + def install(self, spec, prefix): + try: + getattr(self, 'succeed') + touch(join_path(prefix, 'an_installation_file')) + except AttributeError: + raise InstallError() From 50d7b335634d4cece65c819551e5370ec7cc126d Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 20 Apr 2017 10:18:52 +0200 Subject: [PATCH 0687/2394] test/python_version.py: ported to pytest (#3438) --- lib/spack/spack/test/python_version.py | 146 +++++++++++++------------ 1 file changed, 76 insertions(+), 70 deletions(-) diff --git a/lib/spack/spack/test/python_version.py b/lib/spack/spack/test/python_version.py index ee0ff9d2c92..d58df1a0aae 100644 --- a/lib/spack/spack/test/python_version.py +++ b/lib/spack/spack/test/python_version.py @@ -36,7 +36,6 @@ import os import sys import re -import unittest import llnl.util.tty as tty import spack @@ -65,83 +64,90 @@ os.path.join(spack.lib_path, 'external', 'pyqver2.py')] -class PythonVersionTest(unittest.TestCase): +def pyfiles(search_paths, exclude=()): + """Generator that yields all the python files in the search paths. - def pyfiles(self, search_paths, exclude=()): - """List python search files in a set of search paths, excluding - any paths in the exclude list""" - # first file is the spack script. - yield spack.spack_file + :param search_paths: list of paths to search for python files + :param exclude: file paths to exclude from search + :return: python files + """ + # first file is the spack script. + yield spack.spack_file - # Iterate through the whole spack source tree. - for path in search_paths: - for root, dirnames, filenames in os.walk(path): - for filename in filenames: - realpath = os.path.realpath(os.path.join(root, filename)) - if any(realpath.startswith(p) for p in exclude): - continue - - if re.match(r'^[^.#].*\.py$', filename): - yield os.path.join(root, filename) - - def check_python_versions(self, files): - # This is a dict dict mapping: - # version -> filename -> reasons - # - # Reasons are tuples of (lineno, string), where the string is the - # cause for a version incompatibility. - all_issues = {} - - # Parse files and run pyqver on each file. - for path in files: - with open(path) as pyfile: - full_text = pyfile.read() - versions = pyqver.get_versions(full_text, path) - - for ver, reasons in versions.items(): - if ver <= spack_min_supported: + # Iterate through the whole spack source tree. + for path in search_paths: + for root, dirnames, filenames in os.walk(path): + for filename in filenames: + realpath = os.path.realpath(os.path.join(root, filename)) + if any(realpath.startswith(p) for p in exclude): continue - # Record issues. Mark exceptions with '# nopyqver' comment - for lineno, cause in reasons: - lines = full_text.split('\n') - if not re.search(r'#\s*nopyqver\s*$', lines[lineno - 1]): - all_issues.setdefault(ver, {})[path] = reasons + if re.match(r'^[^.#].*\.py$', filename): + yield os.path.join(root, filename) - # Print a message if there are are issues - if all_issues: - tty.msg("Spack must remain compatible with Python version %d.%d" - % spack_min_supported) - # Print out a table showing which files/linenos require which - # python version, and a string describing why. - for v in sorted(all_issues.keys(), reverse=True): - messages = [] - for path in sorted(all_issues[v].keys()): - short_path = path - if path.startswith(spack.prefix): - short_path = path[len(spack.prefix):] +def check_python_versions(files): + """Check that a set of Python files works with supported Ptyhon versions""" + # This is a dict dict mapping: + # version -> filename -> reasons + # + # Reasons are tuples of (lineno, string), where the string is the + # cause for a version incompatibility. + all_issues = {} - reasons = [r for r in set(all_issues[v][path]) if r] - for lineno, cause in reasons: - file_line = "%s:%s" % (short_path.lstrip('/'), lineno) - messages.append((file_line, cause)) + # Parse files and run pyqver on each file. + for path in files: + with open(path) as pyfile: + full_text = pyfile.read() + versions = pyqver.get_versions(full_text, path) - print() - tty.msg("These files require version %d.%d:" % v) - maxlen = max(len(f) for f, prob in messages) - fmt = "%%-%ds%%s" % (maxlen + 3) - print(fmt % ('File', 'Reason')) - print(fmt % ('-' * (maxlen), '-' * 20)) - for msg in messages: - print(fmt % msg) + for ver, reasons in versions.items(): + if ver <= spack_min_supported: + continue - # Fail this test if there were issues. - self.assertTrue(len(all_issues) == 0) + # Record issues. Mark exceptions with '# nopyqver' comment + for lineno, cause in reasons: + lines = full_text.split('\n') + if not re.search(r'#\s*nopyqver\s*$', lines[lineno - 1]): + all_issues.setdefault(ver, {})[path] = reasons - def test_core_module_compatibility(self): - self.check_python_versions( - self.pyfiles([spack.lib_path], exclude=exclude_paths)) + # Print a message if there are are issues + if all_issues: + tty.msg("Spack must remain compatible with Python version %d.%d" + % spack_min_supported) - def test_package_module_compatibility(self): - self.check_python_versions(self.pyfiles([spack.packages_path])) + # Print out a table showing which files/linenos require which + # python version, and a string describing why. + for v in sorted(all_issues.keys(), reverse=True): + messages = [] + for path in sorted(all_issues[v].keys()): + short_path = path + if path.startswith(spack.prefix): + short_path = path[len(spack.prefix):] + + reasons = [r for r in set(all_issues[v][path]) if r] + for lineno, cause in reasons: + file_line = "%s:%s" % (short_path.lstrip('/'), lineno) + messages.append((file_line, cause)) + + print() + tty.msg("These files require version %d.%d:" % v) + maxlen = max(len(f) for f, prob in messages) + fmt = "%%-%ds%%s" % (maxlen + 3) + print(fmt % ('File', 'Reason')) + print(fmt % ('-' * (maxlen), '-' * 20)) + for msg in messages: + print(fmt % msg) + + # Fail this test if there were issues. + assert not all_issues + + +def test_core_module_compatibility(): + """Test that all core spack modules work with supported Python versions.""" + check_python_versions(pyfiles([spack.lib_path], exclude=exclude_paths)) + + +def test_package_module_compatibility(): + """Test that all spack packages work with supported Python versions.""" + check_python_versions(pyfiles([spack.packages_path])) From fa3e91bf2a9db82568793f11c90f531c93d75ecb Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 20 Apr 2017 03:05:44 -0700 Subject: [PATCH 0688/2394] Revert "Add lmod files to MODULEPATH" (#3917) * Revert "Add lmod files to MODULEPATH (#3912)" This reverts commit 186d1f4511c8aa3bc5ce661b1e883db10e20958a. --- share/spack/setup-env.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 1b40b1d7bbf..a67ae04b245 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -196,10 +196,8 @@ _spack_pathadd PATH "${_sp_prefix%/}/bin" _sp_sys_type=$(spack-python -c 'print(spack.architecture.sys_type())') _sp_dotkit_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots', {}).get('dotkit')))") _sp_tcl_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots', {}).get('tcl')))") -_sp_lmod_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots', {}).get('lmod')))") _spack_pathadd DK_NODE "${_sp_dotkit_root%/}/$_sp_sys_type" _spack_pathadd MODULEPATH "${_sp_tcl_root%/}/$_sp_sys_type" -_spack_pathadd MODULEPATH "${_sp_lmod_root%/}/$_sp_sys_type" # # Add programmable tab completion for Bash From beeca6bb541787dab06a91272c0e18136076463e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 20 Apr 2017 03:53:41 -0700 Subject: [PATCH 0689/2394] Revert "Override partial installs by default" (#3918) * Revert "Override partial installs by default (#3530)" This reverts commit a65c37f15dff4b4d60784fd4fcc55874ce9d6d11. --- lib/spack/spack/cmd/install.py | 9 -- lib/spack/spack/directory_layout.py | 27 +--- lib/spack/spack/package.py | 51 +------- lib/spack/spack/test/install.py | 123 ------------------ share/spack/spack-completion.bash | 2 +- .../builtin.mock/packages/canfail/package.py | 41 ------ 6 files changed, 8 insertions(+), 245 deletions(-) delete mode 100644 var/spack/repos/builtin.mock/packages/canfail/package.py diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index 08dc080e8ed..fb01fc2d5e1 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -72,9 +72,6 @@ def setup_parser(subparser): subparser.add_argument( '--fake', action='store_true', dest='fake', help="fake install. just remove prefix and create a fake file") - subparser.add_argument( - '--force', action='store_true', dest='force', - help='Install again even if package is already installed.') cd_group = subparser.add_mutually_exclusive_group() arguments.add_common_arguments(cd_group, ['clean', 'dirty']) @@ -322,12 +319,6 @@ def install(parser, args, **kwargs): tty.error('The `spack install` command requires a spec to install.') for spec in specs: - if args.force: - for s in spec.traverse(): - if s.package.installed: - tty.msg("Clearing %s for new installation" % s.name) - s.package.do_uninstall(force=True) - # Check if we were asked to produce some log for dashboards if args.log_format is not None: # Compute the filename for logging diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index e220a2d430c..9d098754848 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -239,17 +239,6 @@ def build_packages_path(self, spec): return join_path(self.path_for_spec(spec), self.metadata_dir, self.packages_dir) - def _completion_marker_file(self, spec): - return join_path(self.path_for_spec(spec), self.metadata_dir, - 'complete') - - def mark_complete(self, spec): - with open(self._completion_marker_file(spec), 'w'): - pass - - def completed_install(self, spec): - return os.path.exists(self._completion_marker_file(spec)) - def create_install_directory(self, spec): _check_concrete(spec) @@ -263,34 +252,26 @@ def create_install_directory(self, spec): def check_installed(self, spec): _check_concrete(spec) path = self.path_for_spec(spec) + spec_file_path = self.spec_file_path(spec) if not os.path.isdir(path): return None - elif not self.completed_install(spec): - raise InconsistentInstallDirectoryError( - 'The prefix %s contains a partial install' % path) - - self.check_metadata_consistency(spec) - return path - - def check_metadata_consistency(self, spec): - spec_file_path = self.spec_file_path(spec) if not os.path.isfile(spec_file_path): raise InconsistentInstallDirectoryError( 'Install prefix exists but contains no spec.yaml:', - " " + spec.prefix) + " " + path) installed_spec = self.read_spec(spec_file_path) if installed_spec == spec: - return + return path # DAG hashes currently do not include build dependencies. # # TODO: remove this when we do better concretization and don't # ignore build-only deps in hashes. elif installed_spec == spec.copy(deps=('link', 'run')): - return + return path if spec.dag_hash() == installed_spec.dag_hash(): raise SpecHashCollisionError(spec, installed_spec) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index e6eea35a80b..108ddeff07f 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -856,7 +856,7 @@ def provides(self, vpkg_name): @property def installed(self): - return spack.store.layout.completed_install(self.spec) + return os.path.isdir(self.prefix) @property def prefix_lock(self): @@ -1174,16 +1174,10 @@ def do_install(self, (self.name, self.spec.external)) return - self.repair_partial(keep_prefix) - # Ensure package is not already installed layout = spack.store.layout with self._prefix_read_lock(): - if (keep_prefix and os.path.isdir(self.prefix) and - (not self.installed)): - tty.msg( - "Continuing from partial install of %s" % self.name) - elif layout.check_installed(self.spec): + if layout.check_installed(self.spec): tty.msg( "%s is already installed in %s" % (self.name, self.prefix)) rec = spack.store.db.get_record(self.spec) @@ -1311,11 +1305,9 @@ def build_process(input_stream): try: # Create the install prefix and fork the build process. - if (not keep_prefix) or (not os.path.isdir(self.prefix)): - spack.store.layout.create_install_directory(self.spec) + spack.store.layout.create_install_directory(self.spec) # Fork a child to do the actual installation spack.build_environment.fork(self, build_process, dirty=dirty) - spack.store.layout.mark_complete(self.spec) # If we installed then we should keep the prefix keep_prefix = True if self.last_phase is None else keep_prefix # note: PARENT of the build process adds the new package to @@ -1340,43 +1332,6 @@ def build_process(input_stream): if not keep_prefix: self.remove_prefix() - def repair_partial(self, continue_with_partial=False): - """If continue_with_partial is not set, this ensures that the package - is either fully-installed or that the prefix is removed. If the - package is installed but there is no DB entry then this adds a - record. If continue_with_partial is not set this also clears the - stage directory to start an installation from scratch. - """ - layout = spack.store.layout - with self._prefix_read_lock(): - if (os.path.isdir(self.prefix) and not self.installed and - not continue_with_partial): - spack.hooks.pre_uninstall(self) - self.remove_prefix() - try: - spack.store.db.remove(self.spec) - except KeyError: - pass - spack.hooks.post_uninstall(self) - tty.msg("Removed partial install for %s" % - self.spec.short_spec) - elif self.installed and layout.check_installed(self.spec): - try: - spack.store.db.get_record(self.spec) - except KeyError: - tty.msg("Repairing db for %s" % self.name) - spack.store.db.add(self.spec) - - if continue_with_partial and not self.installed: - try: - layout.check_metadata_consistency(self.spec) - except directory_layout.DirectoryLayoutError: - self.remove_prefix() - - if not continue_with_partial: - self.stage.destroy() - self.stage.create() - def _do_install_pop_kwargs(self, kwargs): """Pops kwargs from do_install before starting the installation diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py index 08694f7ee8a..f10c3a37e99 100644 --- a/lib/spack/spack/test/install.py +++ b/lib/spack/spack/test/install.py @@ -30,8 +30,6 @@ from spack.fetch_strategy import URLFetchStrategy, FetchStrategyComposite from spack.spec import Spec -import os - @pytest.fixture() def install_mockery(tmpdir, config, builtin_mock): @@ -79,123 +77,6 @@ def test_install_and_uninstall(mock_archive): raise -def mock_remove_prefix(*args): - raise MockInstallError( - "Intentional error", - "Mock remove_prefix method intentionally fails") - - -@pytest.mark.usefixtures('install_mockery') -def test_partial_install(mock_archive): - spec = Spec('canfail') - spec.concretize() - pkg = spack.repo.get(spec) - fake_fetchify(mock_archive.url, pkg) - remove_prefix = spack.package.Package.remove_prefix - try: - spack.package.Package.remove_prefix = mock_remove_prefix - try: - pkg.do_install() - except MockInstallError: - pass - spack.package.Package.remove_prefix = remove_prefix - setattr(pkg, 'succeed', True) - pkg.do_install() - assert pkg.installed - finally: - spack.package.Package.remove_prefix = remove_prefix - try: - delattr(pkg, 'succeed') - except AttributeError: - pass - - -@pytest.mark.usefixtures('install_mockery') -def test_partial_install_keep_prefix(mock_archive): - spec = Spec('canfail') - spec.concretize() - pkg = spack.repo.get(spec) - fake_fetchify(mock_archive.url, pkg) - remove_prefix = spack.package.Package.remove_prefix - try: - spack.package.Package.remove_prefix = mock_remove_prefix - try: - pkg.do_install() - except MockInstallError: - pass - # Don't repair remove_prefix at this point, set keep_prefix so that - # Spack continues with a partial install - setattr(pkg, 'succeed', True) - pkg.do_install(keep_prefix=True) - assert pkg.installed - finally: - spack.package.Package.remove_prefix = remove_prefix - try: - delattr(pkg, 'succeed') - except AttributeError: - pass - - -@pytest.mark.usefixtures('install_mockery') -def test_partial_install_keep_prefix_check_metadata(mock_archive): - spec = Spec('canfail') - spec.concretize() - pkg = spack.repo.get(spec) - fake_fetchify(mock_archive.url, pkg) - remove_prefix = spack.package.Package.remove_prefix - try: - spack.package.Package.remove_prefix = mock_remove_prefix - try: - pkg.do_install() - except MockInstallError: - pass - os.remove(spack.store.layout.spec_file_path(spec)) - spack.package.Package.remove_prefix = remove_prefix - setattr(pkg, 'succeed', True) - pkg.do_install(keep_prefix=True) - assert pkg.installed - spack.store.layout.check_metadata_consistency(spec) - finally: - spack.package.Package.remove_prefix = remove_prefix - try: - delattr(pkg, 'succeed') - except AttributeError: - pass - - -@pytest.mark.usefixtures('install_mockery') -def test_install_succeeds_but_db_add_fails(mock_archive): - """If an installation succeeds but the database is not updated, make sure - that the database is updated for a future install.""" - spec = Spec('cmake') - spec.concretize() - pkg = spack.repo.get(spec) - fake_fetchify(mock_archive.url, pkg) - remove_prefix = spack.package.Package.remove_prefix - db_add = spack.store.db.add - - def mock_db_add(*args, **kwargs): - raise MockInstallError( - "Intentional error", "Mock db add method intentionally fails") - - try: - spack.package.Package.remove_prefix = mock_remove_prefix - spack.store.db.add = mock_db_add - try: - pkg.do_install() - except MockInstallError: - pass - assert pkg.installed - - spack.package.Package.remove_prefix = remove_prefix - spack.store.db.add = db_add - pkg.do_install() - assert spack.store.db.get_record(spec) - except: - spack.package.Package.remove_prefix = remove_prefix - raise - - @pytest.mark.usefixtures('install_mockery') def test_store(mock_archive): spec = Spec('cmake-client').concretized() @@ -221,7 +102,3 @@ def test_failing_build(mock_archive): pkg = spec.package with pytest.raises(spack.build_environment.ChildError): pkg.do_install() - - -class MockInstallError(spack.error.SpackError): - pass diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 1167690fa27..819dcc06ab1 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -407,7 +407,7 @@ function _spack_install { then compgen -W "-h --help --only -j --jobs --keep-prefix --keep-stage -n --no-checksum -v --verbose --fake --clean --dirty - --run-tests --log-format --log-file --force" -- "$cur" + --run-tests --log-format --log-file" -- "$cur" else compgen -W "$(_all_packages)" -- "$cur" fi diff --git a/var/spack/repos/builtin.mock/packages/canfail/package.py b/var/spack/repos/builtin.mock/packages/canfail/package.py deleted file mode 100644 index bef4f6e8385..00000000000 --- a/var/spack/repos/builtin.mock/packages/canfail/package.py +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, February 1999. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -# conditions of the GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -############################################################################## -from spack import * - - -class Canfail(Package): - """Package which fails install unless a special attribute is set""" - - homepage = "http://www.example.com" - url = "http://www.example.com/a-1.0.tar.gz" - - version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - try: - getattr(self, 'succeed') - touch(join_path(prefix, 'an_installation_file')) - except AttributeError: - raise InstallError() From 21e4a81de0a2d450760bb1afb943cdf54018f6d1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 20 Apr 2017 10:32:21 -0500 Subject: [PATCH 0690/2394] Add Napoleon extension to support Google docstrings (#3920) --- lib/spack/docs/conf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 76ff0f921b6..35637093da9 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -134,6 +134,7 @@ # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.graphviz', + 'sphinx.ext.napoleon', 'sphinx.ext.todo', 'sphinxcontrib.programoutput'] From 9ca0d1f5f04885993f1b7fdfea7d2c9c8a6c3796 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 20 Apr 2017 12:13:11 -0500 Subject: [PATCH 0691/2394] Remove all test variants --- var/spack/repos/builtin/packages/adol-c/package.py | 7 +++---- var/spack/repos/builtin/packages/git-lfs/package.py | 3 +-- var/spack/repos/builtin/packages/go-bootstrap/package.py | 4 +--- var/spack/repos/builtin/packages/go/package.py | 4 +--- var/spack/repos/builtin/packages/pagmo/package.py | 5 ++--- var/spack/repos/builtin/packages/paradiseo/package.py | 5 ++--- var/spack/repos/builtin/packages/py-patsy/package.py | 5 +++-- var/spack/repos/builtin/packages/py-statsmodels/package.py | 5 +++-- 8 files changed, 16 insertions(+), 22 deletions(-) diff --git a/var/spack/repos/builtin/packages/adol-c/package.py b/var/spack/repos/builtin/packages/adol-c/package.py index 8ba19542186..954de6fb4a1 100644 --- a/var/spack/repos/builtin/packages/adol-c/package.py +++ b/var/spack/repos/builtin/packages/adol-c/package.py @@ -44,8 +44,7 @@ class AdolC(AutotoolsPackage): variant('doc', default=True, description='Install documentation') variant('openmp', default=False, description='Enable OpenMP support') variant('sparse', default=False, description='Enable sparse drivers') - variant('tests', default=True, - description='Build all included examples as a test case') + variant('examples', default=True, description='Install examples') # Build dependencies depends_on('automake', type='build', when='@develop') @@ -82,7 +81,7 @@ def configure_args(self): # We can simply use the bundled examples to check # whether Adol-C works as expected - if '+tests' in spec: + if '+examples' in spec: configure_args.extend([ '--enable-docexa', # Documented examples '--enable-addexa' # Additional examples @@ -110,7 +109,7 @@ def install_additional_files(self): join_path(prefix.share, 'doc')) # Install examples to {prefix}/share - if '+tests' in spec: + if '+examples' in spec: install_tree(join_path('ADOL-C', 'examples'), join_path(prefix.share, 'examples')) diff --git a/var/spack/repos/builtin/packages/git-lfs/package.py b/var/spack/repos/builtin/packages/git-lfs/package.py index f195fef8868..14f8cbe0d35 100644 --- a/var/spack/repos/builtin/packages/git-lfs/package.py +++ b/var/spack/repos/builtin/packages/git-lfs/package.py @@ -39,9 +39,8 @@ class GitLfs(Package): version('1.4.1', git=git_url, tag='v1.4.1') version('1.3.1', git=git_url, tag='v1.3.1') - # TODO: Implement this by following the instructions at this location: + # TODO: Add tests by following the instructions at this location: # https://github.com/github/git-lfs/blob/master/CONTRIBUTING.md#building - # variant('test', default=True, description='Build and run tests as part of the build.') # NOQA: E501 depends_on('go@1.5:', type='build') depends_on('git@1.8.2:', type='run') diff --git a/var/spack/repos/builtin/packages/go-bootstrap/package.py b/var/spack/repos/builtin/packages/go-bootstrap/package.py index 8d54486bf59..1c73563f825 100644 --- a/var/spack/repos/builtin/packages/go-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/go-bootstrap/package.py @@ -49,8 +49,6 @@ class GoBootstrap(Package): version('1.4-bootstrap-20161024', '76e42c8152e8560ded880a6d1d1f53cb', url='https://storage.googleapis.com/golang/go1.4-bootstrap-20161024.tar.gz') - variant('test', default=True, description='Build and run tests as part of the build.') - provides('golang@:1.4-bootstrap-20161024') depends_on('git', type=('build', 'link', 'run')) @@ -75,7 +73,7 @@ def install(self, spec, prefix): env['CGO_ENABLED'] = '0' bash = which('bash') with working_dir('src'): - bash('{0}.bash'.format('all' if '+test' in spec else 'make')) + bash('{0}.bash'.format('all' if self.run_tests else 'make')) try: os.makedirs(prefix) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 53abd07c43f..7f1523ca6d1 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -62,8 +62,6 @@ class Go(Package): version('1.7.4', '49c1076428a5d3b5ad7ac65233fcca2f') version('1.6.4', 'b023240be707b34059d2c114d3465c92') - variant('test', default=True, description='Build and run tests as part of the build.') - provides('golang') depends_on('git', type=('build', 'link', 'run')) @@ -93,7 +91,7 @@ def patch(self): def install(self, spec, prefix): bash = which('bash') with working_dir('src'): - bash('{0}.bash'.format('all' if '+test' in spec else 'make')) + bash('{0}.bash'.format('all' if self.run_tests else 'make')) try: os.makedirs(prefix) diff --git a/var/spack/repos/builtin/packages/pagmo/package.py b/var/spack/repos/builtin/packages/pagmo/package.py index f4cd532bdbc..5a06b70e387 100644 --- a/var/spack/repos/builtin/packages/pagmo/package.py +++ b/var/spack/repos/builtin/packages/pagmo/package.py @@ -49,7 +49,6 @@ class Pagmo(CMakePackage): variant('mpi', default=True, description='Enable support for MPI') variant('nlopt', default=False, description='Enable support for NLopt minimisers') variant('snopt', default=False, description='Enable support for SNOPT minimiser') - variant('tests', default=False, description='Build test set') variant('worhp', default=False, description='Enable support for WORHP minimiser') variant('headers', default=True, description='Installs the header files') variant('blas', default=True, description='Enable support for BLAS') @@ -60,7 +59,7 @@ class Pagmo(CMakePackage): extends('python', when='+python') - # Concretization in Python is currently broken + # Concretization in Spack is currently broken # depends_on('boost+system+serialization+thread') # depends_on('boost+python', when='+python') # depends_on('boost+date_time', when='+gtop') @@ -103,9 +102,9 @@ def cmake_args(self): '-DENABLE_MPI={0}'.format(self.variant_to_bool('+mpi')), '-DENABLE_NLOPT={0}'.format(self.variant_to_bool('+nlopt')), '-DENABLE_SNOPT={0}'.format(self.variant_to_bool('+snopt')), - '-DENABLE_TESTS={0}'.format(self.variant_to_bool('+tests')), '-DENABLE_WORHP={0}'.format(self.variant_to_bool('+worhp')), '-DINSTALL_HEADERS={0}'.format(self.variant_to_bool('+headers')), + '-DENABLE_TESTS={0}'.format('ON' if self.run_tests else 'OFF'), ] if '+python' in spec: diff --git a/var/spack/repos/builtin/packages/paradiseo/package.py b/var/spack/repos/builtin/packages/paradiseo/package.py index c91b01c9643..97ea19bc877 100644 --- a/var/spack/repos/builtin/packages/paradiseo/package.py +++ b/var/spack/repos/builtin/packages/paradiseo/package.py @@ -50,7 +50,6 @@ class Paradiseo(Package): variant('edo', default=True, description='Compile with (Experimental) EDO module') - # variant('tests', default=False, description='Compile with build tests') # variant('doc', default=False, description='Compile with documentation') variant('debug', default=False, description='Builds a debug version of the libraries') @@ -87,7 +86,7 @@ def install(self, spec, prefix): '-DSMP:BOOL=%s' % ('TRUE' if '+smp' in spec else 'FALSE'), '-DEDO:BOOL=%s' % ('TRUE' if '+edo' in spec else 'FALSE'), '-DENABLE_CMAKE_TESTING:BOOL=%s' % ( - 'TRUE' if '+tests' in spec else 'FALSE'), + 'TRUE' if self.run_tests else 'FALSE'), '-DENABLE_OPENMP:BOOL=%s' % ( 'TRUE' if '+openmp' in spec else 'FALSE'), '-DENABLE_GNUPLOT:BOOL=%s' % ( @@ -100,6 +99,6 @@ def install(self, spec, prefix): # Build, test and install make("VERBOSE=1") - if '+tests' in spec: + if self.run_tests: make("test") make("install") diff --git a/var/spack/repos/builtin/packages/py-patsy/package.py b/var/spack/repos/builtin/packages/py-patsy/package.py index fc92c62ccdd..27be8bb41f4 100644 --- a/var/spack/repos/builtin/packages/py-patsy/package.py +++ b/var/spack/repos/builtin/packages/py-patsy/package.py @@ -35,10 +35,11 @@ class PyPatsy(PythonPackage): version('0.4.1', '9445f29e3426d1ed30d683a1e1453f84') variant('splines', description="Offers spline related functions") - variant('tests', description="allows nose tests") depends_on('py-setuptools', type='build') depends_on('py-numpy', type=('build', 'run')) depends_on('py-scipy', type=('build', 'run'), when="+splines") - depends_on('py-nose', type=('build', 'run'), when="+tests") depends_on('py-six', type=('build', 'run')) + + # TODO: Add a 'test' deptype + # depends_on('py-nose', type='test') diff --git a/var/spack/repos/builtin/packages/py-statsmodels/package.py b/var/spack/repos/builtin/packages/py-statsmodels/package.py index d9a1115dbe5..794f0691bbf 100644 --- a/var/spack/repos/builtin/packages/py-statsmodels/package.py +++ b/var/spack/repos/builtin/packages/py-statsmodels/package.py @@ -33,7 +33,6 @@ class PyStatsmodels(PythonPackage): version('0.8.0', 'b3e5911cc9b00b71228d5d39a880bba0') - variant('tests', default=False, description='With nose tests') variant('plotting', default=False, description='With matplotlib') # according to http://www.statsmodels.org/dev/install.html earlier versions @@ -44,5 +43,7 @@ class PyStatsmodels(PythonPackage): depends_on('py-pandas@0.12:', type=('build', 'run')) depends_on('py-patsy@0.2.1:', type=('build', 'run')) depends_on('py-cython@0.24:', type=('build', 'run')) - depends_on('py-nose', type='run', when='+tests') depends_on('py-matplotlib@1.3:', type='run', when='+plotting') + + # TODO: Add a 'test' deptype + # depends_on('py-nose', type='test') From f0a6ead19c854f214bd29f13f73bd0e7a665f7dd Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 20 Apr 2017 12:48:02 -0500 Subject: [PATCH 0692/2394] Flake8 --- var/spack/repos/builtin/packages/go-bootstrap/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/go-bootstrap/package.py b/var/spack/repos/builtin/packages/go-bootstrap/package.py index 1c73563f825..43409610e8f 100644 --- a/var/spack/repos/builtin/packages/go-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/go-bootstrap/package.py @@ -65,7 +65,7 @@ def patch(self): r'# \1\2\3', ) - @when('@1.5.0:') + @when('@1.5.0:') # noqa: F811 def patch(self): pass From e2e6dea9b37bf83f8e96f3efc7086d1adbe82fcb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 20 Apr 2017 13:06:11 -0500 Subject: [PATCH 0693/2394] Gettext test suite fails when run in parallel (#3921) --- var/spack/repos/builtin/packages/gettext/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/gettext/package.py b/var/spack/repos/builtin/packages/gettext/package.py index f5d9c7c45cc..b3397419bdc 100644 --- a/var/spack/repos/builtin/packages/gettext/package.py +++ b/var/spack/repos/builtin/packages/gettext/package.py @@ -100,3 +100,13 @@ def configure_args(self): config_args.append('--with-included-libunistring') return config_args + + def check(self): + # Test suite fails when run in parallel: + # + # FAIL: test-verify + # ================= + # + # icc: error #10236: File not found: 'test-verify.o' + # FAIL test-verify (exit status: 1) + make('check', parallel=False) From f520c0dd8d6d75da6e800695acf80b5c2f01da2c Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 20 Apr 2017 22:01:06 +0200 Subject: [PATCH 0694/2394] Add vampirtrace (#3911) Since scorep does not support all use cases yet, vampirtrace is still useful in some circumstances. --- .../builtin/packages/vampirtrace/package.py | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vampirtrace/package.py diff --git a/var/spack/repos/builtin/packages/vampirtrace/package.py b/var/spack/repos/builtin/packages/vampirtrace/package.py new file mode 100644 index 00000000000..b4e86a82ccb --- /dev/null +++ b/var/spack/repos/builtin/packages/vampirtrace/package.py @@ -0,0 +1,73 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Vampirtrace(AutotoolsPackage): + """VampirTrace is an open source library that allows detailed logging of + program execution for parallel applications using message passing (MPI) + and threads (OpenMP, Pthreads).""" + + homepage = "https://tu-dresden.de/zih/forschung/projekte/vampirtrace" + url = "http://wwwpub.zih.tu-dresden.de/~mlieber/dcount/dcount.php?package=vampirtrace&get=VampirTrace-5.14.4.tar.gz" + + version('5.14.4', '1c92b23169df9bcc860e5fc737dbc9c9') + + variant('mpi', default=True, description='Enable MPI support') + + depends_on('mpi', when='+mpi') + depends_on('otf') + depends_on('papi') + depends_on('zlib') + + def patch(self): + path = 'tools/vtwrapper/vt{0}-wrapper-data.txt.in' + + for wrapper in ('cc', 'c++', 'fort'): + filter_file('@VT_WRAPPER_OPARI_TAB_COMPILER@', + '@VT_WRAPPER_CC_COMPILER@', + path.format(wrapper)) + + def configure_args(self): + spec = self.spec + compiler = self.compiler + + args = [ + '--with-extern-otf', + '--with-extern-otf-dir={0}'.format(spec['otf'].prefix), + '--with-papi-dir={0}'.format(spec['papi'].prefix), + '--with-zlib-dir={0}'.format(spec['zlib'].prefix), + '--with-wrapper-cc-compiler={0}'.format(compiler.cc), + '--with-wrapper-cc-cpp={0} -E'.format(compiler.cc), + '--with-wrapper-cxx-compiler={0}'.format(compiler.cxx), + '--with-wrapper-cxx-cpp={0} -E'.format(compiler.cxx), + '--with-wrapper-fc-compiler={0}'.format(compiler.fc), + '--with-wrapper-fc-cpp={0} -E'.format(compiler.fc) + ] + + if '+mpi' in spec: + args.append('--with-mpi-dir={0}'.format(spec['mpi'].prefix)) + + return args From 011442fd37af06ca9db8b1ed4e15ccdf185753d3 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Thu, 20 Apr 2017 15:48:30 -0700 Subject: [PATCH 0695/2394] Keras 2.0.3 (#3927) * Added a package for the MDAnalysis toolkit. * Added has for Keras version 2.0.3 --- var/spack/repos/builtin/packages/py-keras/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py index 541072f9875..1ca706b20eb 100644 --- a/var/spack/repos/builtin/packages/py-keras/package.py +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -32,6 +32,7 @@ class PyKeras(PythonPackage): homepage = "http://keras.io" url = "https://pypi.io/packages/source/K/Keras/Keras-1.2.2.tar.gz" + version('2.0.3', '39ce72a65623cd233a8fa4e867dd0c6b') version('1.2.2', '8e26b25bf16494f6eca726887d232319') version('1.2.1', '95525b9faa890267d80d119b13ce2984') version('1.2.0', 'd24d8b72747f8cc38e659ce8fc92ad3c') From a017c5e2efd479c27debba28c4cdbba52a0bba81 Mon Sep 17 00:00:00 2001 From: Bruno Turcksin Date: Fri, 21 Apr 2017 11:06:31 -0400 Subject: [PATCH 0696/2394] Add boost 1.64.0 (#3934) --- var/spack/repos/builtin/packages/boost/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 09953dd90e4..2f108dcac8c 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -42,6 +42,7 @@ class Boost(Package): list_url = "http://sourceforge.net/projects/boost/files/boost/" list_depth = 1 + version('1.64.0', '93eecce2abed9d2442c9676914709349') version('1.63.0', '1c837ecd990bb022d07e7aab32b09847') version('1.62.0', '5fb94629535c19e48703bdb2b2e9490f') version('1.61.0', '6095876341956f65f9d35939ccea1a9f') From f86ed1e34dc90bade8127b490a4b8823d2af6514 Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Fri, 21 Apr 2017 17:29:42 +0100 Subject: [PATCH 0697/2394] Fix for llvm 4.0.0 on centos (#3904) * Fix for llvm 4.0.0 on centos This addresses https://github.com/LLNL/spack/issues/3791 * Only enable this option if on linux * Change condition to satisfy standard --- var/spack/repos/builtin/packages/llvm/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 398daefc8fe..04b4efd4916 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -389,6 +389,9 @@ def install(self, spec, prefix): raise SpackException( 'The lldb variant requires the `+clang` variant') + if spec.satisfies('@4.0.0:') and spec.satisfies('platform=linux'): + cmake_args.append('-DCMAKE_BUILD_WITH_INSTALL_RPATH=1') + with working_dir('spack-build', create=True): cmake(*cmake_args) make() From 41efada340ec7a57544ce8299427676c53d88025 Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 21 Apr 2017 18:47:52 +0200 Subject: [PATCH 0698/2394] Adding new python package: py-python-gitlab (#3936) --- .../packages/py-python-gitlab/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-python-gitlab/package.py diff --git a/var/spack/repos/builtin/packages/py-python-gitlab/package.py b/var/spack/repos/builtin/packages/py-python-gitlab/package.py new file mode 100644 index 00000000000..24feb1c5fa2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-python-gitlab/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPythonGitlab(PythonPackage): + """Python wrapper for the GitLab API""" + + homepage = "https://github.com/gpocentek/python-gitlab" + url = "https://pypi.io/packages/source/p/python-gitlab/python-gitlab-0.19.tar.gz" + + version('0.19', '6564d7204c2b7e65c54b3fa89ec91df6') + version('0.18', 'c31dae1d0bab3966cb830f2308a96308') + version('0.17', '8a69c602e07dd4731856531d79bb58eb') + version('0.16', 'e0421d930718021e7d796d74d2ad7194') + + depends_on('py-setuptools', type='build') + depends_on('py-six', type=('build', 'run')) + depends_on('py-requests@1.0:', type=('build', 'run')) From 5250e8ee8966b1e7c8be2f13277bc785d5af8e73 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 21 Apr 2017 12:11:29 -0500 Subject: [PATCH 0699/2394] Fix HPL build, convert to MakefilePackage (#3777) * Fix HPL build, convert to MakefilePackage * Flake8 fix * Fix: spec -> self.spec * Properly query for system libraries * Update Intel-MKL as well * Recurse in system libs, fix MKL path, fixes lapack_libs --- lib/spack/llnl/util/filesystem.py | 49 +++++++++++++++++++ .../repos/builtin/packages/hpl/package.py | 28 +++++------ .../builtin/packages/intel-mkl/package.py | 40 ++++++++++----- .../packages/intel-parallel-studio/package.py | 42 +++++++++++----- 4 files changed, 118 insertions(+), 41 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 71d50965239..86122f42c8b 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -47,6 +47,7 @@ 'copy_mode', 'filter_file', 'find_libraries', + 'find_system_libraries', 'fix_darwin_install_name', 'force_remove', 'force_symlink', @@ -583,6 +584,54 @@ def __str__(self): return self.joined() +def find_system_libraries(args, shared=True): + """Searches the usual system library locations for the libraries + specified in args. + + Search order is as follows: + + 1. /lib64 + 2. /lib + 3. /usr/lib64 + 4. /usr/lib + 5. /usr/local/lib64 + 6. /usr/local/lib + + :param args: Library name(s) to search for + :type args: str or collections.Sequence + :param bool shared: if True searches for shared libraries, + + :returns: The libraries that have been found + :rtype: LibraryList + """ + if isinstance(args, str): + args = [args] + elif not isinstance(args, collections.Sequence): + message = '{0} expects a string or sequence of strings as the ' + message += 'first argument [got {1} instead]' + message = message.format(find_system_libraries.__name__, type(args)) + raise TypeError(message) + + libraries_found = [] + search_locations = [ + '/lib64', + '/lib', + '/usr/lib64', + '/usr/lib', + '/usr/local/lib64', + '/usr/local/lib', + ] + + for library in args: + for root in search_locations: + result = find_libraries(library, root, shared, recurse=True) + if result: + libraries_found += result + break + + return libraries_found + + def find_libraries(args, root, shared=True, recurse=False): """Returns an iterable object containing a list of full paths to libraries if found. diff --git a/var/spack/repos/builtin/packages/hpl/package.py b/var/spack/repos/builtin/packages/hpl/package.py index a171408a265..166e3d8d589 100644 --- a/var/spack/repos/builtin/packages/hpl/package.py +++ b/var/spack/repos/builtin/packages/hpl/package.py @@ -27,7 +27,7 @@ import platform -class Hpl(Package): +class Hpl(MakefilePackage): """HPL is a software package that solves a (random) dense linear system in double precision (64 bits) arithmetic on distributed-memory computers. It can thus be regarded as a portable as well as freely available @@ -45,7 +45,11 @@ class Hpl(Package): parallel = False - def configure(self, spec, arch): + arch = '{0}-{1}'.format(platform.system(), platform.processor()) + + build_targets = ['arch={0}'.format(arch)] + + def edit(self, spec, prefix): # List of configuration options # Order is important config = [] @@ -66,7 +70,7 @@ def configure(self, spec, arch): 'RM = /bin/rm -f', 'TOUCH = touch', # Platform identifier - 'ARCH = {0}'.format(arch), + 'ARCH = {0}'.format(self.arch), # HPL Directory Structure / HPL library 'TOPdir = {0}'.format(os.getcwd()), 'INCdir = $(TOPdir)/include', @@ -74,7 +78,7 @@ def configure(self, spec, arch): 'LIBdir = $(TOPdir)/lib/$(ARCH)', 'HPLlib = $(LIBdir)/libhpl.a', # Message Passing library (MPI) - 'MPinc = -I{0}'.format(spec['mpi'].prefix.include), + 'MPinc = {0}'.format(spec['mpi'].prefix.include), 'MPlib = -L{0}'.format(spec['mpi'].prefix.lib), # Linear Algebra library (BLAS or VSIPL) 'LAinc = {0}'.format(spec['blas'].prefix.include), @@ -99,21 +103,13 @@ def configure(self, spec, arch): ]) # Write configuration options to include file - with open('Make.{0}'.format(arch), 'w') as makefile: + with open('Make.{0}'.format(self.arch), 'w') as makefile: for var in config: makefile.write('{0}\n'.format(var)) def install(self, spec, prefix): - # Arch used for file naming purposes only - arch = '{0}-{1}'.format(platform.system(), platform.processor()) - - # Generate Makefile include - self.configure(spec, arch) - - make('arch={0}'.format(arch)) - # Manual installation - install_tree(join_path('bin', arch), prefix.bin) - install_tree(join_path('lib', arch), prefix.lib) - install_tree(join_path('include', arch), prefix.include) + install_tree(join_path('bin', self.arch), prefix.bin) + install_tree(join_path('lib', self.arch), prefix.lib) + install_tree(join_path('include', self.arch), prefix.include) install_tree('man', prefix.man) diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 59b66d63add..7f0f8e0eb55 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -54,28 +54,44 @@ class IntelMkl(IntelInstaller): @property def blas_libs(self): - shared = True if '+shared' in self.spec else False - suffix = dso_suffix if '+shared' in self.spec else 'a' - mkl_integer = ['libmkl_intel_ilp64'] if '+ilp64' in self.spec else ['libmkl_intel_lp64'] # NOQA: ignore=E501 + spec = self.spec + prefix = self.prefix + shared = '+shared' in spec + + if '+ilp64' in spec: + mkl_integer = ['libmkl_intel_ilp64'] + else: + mkl_integer = ['libmkl_intel_lp64'] + mkl_threading = ['libmkl_sequential'] - if '+openmp' in self.spec: - mkl_threading = ['libmkl_intel_thread', 'libiomp5'] if '%intel' in self.spec else ['libmkl_gnu_thread'] # NOQA: ignore=E501 + + if '+openmp' in spec: + if '%intel' in spec: + mkl_threading = ['libmkl_intel_thread', 'libiomp5'] + else: + mkl_threading = ['libmkl_gnu_thread'] + # TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++'] + + mkl_root = join_path(prefix.lib, 'intel64') + mkl_libs = find_libraries( mkl_integer + ['libmkl_core'] + mkl_threading, - root=join_path(self.prefix.lib, 'intel64'), + root=mkl_root, shared=shared ) - system_libs = [ - 'libpthread.{0}'.format(suffix), - 'libm.{0}'.format(suffix), - 'libdl.{0}'.format(suffix) - ] + + # Intel MKL link line advisor recommends these system libraries + system_libs = find_system_libraries( + ['libpthread', 'libm', 'libdl'], + shared=shared + ) + return mkl_libs + system_libs @property def lapack_libs(self): - return self.libs + return self.blas_libs @property def scalapack_libs(self): 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 98043db4006..d4ae5fe20f0 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -96,7 +96,7 @@ class IntelParallelStudio(IntelInstaller): variant('ilp64', default=False, description='64 bit integers') variant('openmp', default=False, description='OpenMP multithreading layer') - provides('mpi', when='@cluster:+mpi') + provides('mpi', when='@cluster.0:cluster.9999+mpi') provides('mkl', when='+mkl') provides('daal', when='+daal') provides('ipp', when='+ipp') @@ -108,28 +108,44 @@ class IntelParallelStudio(IntelInstaller): @property def blas_libs(self): - shared = True if '+shared' in self.spec else False - suffix = dso_suffix if '+shared' in self.spec else 'a' - mkl_integer = ['libmkl_intel_ilp64'] if '+ilp64' in self.spec else ['libmkl_intel_lp64'] # NOQA: ignore=E501 + spec = self.spec + prefix = self.prefix + shared = '+shared' in spec + + if '+ilp64' in spec: + mkl_integer = ['libmkl_intel_ilp64'] + else: + mkl_integer = ['libmkl_intel_lp64'] + mkl_threading = ['libmkl_sequential'] - if '+openmp' in self.spec: - mkl_threading = ['libmkl_intel_thread', 'libiomp5'] if '%intel' in self.spec else ['libmkl_gnu_thread'] # NOQA: ignore=E501 + + if '+openmp' in spec: + if '%intel' in spec: + mkl_threading = ['libmkl_intel_thread', 'libiomp5'] + else: + mkl_threading = ['libmkl_gnu_thread'] + # TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++'] + + mkl_root = join_path(prefix, 'mkl', 'lib', 'intel64') + mkl_libs = find_libraries( mkl_integer + ['libmkl_core'] + mkl_threading, - root=join_path(self.prefix, 'mkl', 'lib', 'intel64'), + root=mkl_root, shared=shared ) - system_libs = [ - 'libpthread.{0}'.format(suffix), - 'libm.{0}'.format(suffix), - 'libdl.{0}'.format(suffix) - ] + + # Intel MKL link line advisor recommends these system libraries + system_libs = find_system_libraries( + ['libpthread', 'libm', 'libdl'], + shared=shared + ) + return mkl_libs + system_libs @property def lapack_libs(self): - return self.libs + return self.blas_libs @property def scalapack_libs(self): From 46d0ca9d01c6d6e2a67dacf528b7cc306d5bb815 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 21 Apr 2017 12:15:39 -0500 Subject: [PATCH 0700/2394] Ensure that tests are optional (#3922) --- var/spack/repos/builtin/packages/atlas/package.py | 3 ++- var/spack/repos/builtin/packages/cosmomc/package.py | 4 ++-- var/spack/repos/builtin/packages/fftw/package.py | 3 ++- var/spack/repos/builtin/packages/hdf5-blosc/package.py | 3 ++- var/spack/repos/builtin/packages/hdf5/package.py | 5 +++-- var/spack/repos/builtin/packages/nfft/package.py | 3 ++- var/spack/repos/builtin/packages/openblas/package.py | 4 ++-- var/spack/repos/builtin/packages/perl/package.py | 3 ++- var/spack/repos/builtin/packages/pfft/package.py | 3 ++- .../repos/builtin/packages/planck-likelihood/package.py | 2 +- var/spack/repos/builtin/packages/pnfft/package.py | 3 ++- var/spack/repos/builtin/packages/pocl/package.py | 1 + var/spack/repos/builtin/packages/py-yt/package.py | 1 + 13 files changed, 24 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/atlas/package.py b/var/spack/repos/builtin/packages/atlas/package.py index 68a91c964b7..525701c57bb 100644 --- a/var/spack/repos/builtin/packages/atlas/package.py +++ b/var/spack/repos/builtin/packages/atlas/package.py @@ -110,7 +110,8 @@ def install(self, spec, prefix): make('shared_all') make("install") - self.install_test() + if self.run_tests: + self.install_test() @property def libs(self): diff --git a/var/spack/repos/builtin/packages/cosmomc/package.py b/var/spack/repos/builtin/packages/cosmomc/package.py index a6a4409b254..261115d5752 100644 --- a/var/spack/repos/builtin/packages/cosmomc/package.py +++ b/var/spack/repos/builtin/packages/cosmomc/package.py @@ -108,7 +108,7 @@ def install(self, spec, prefix): else: wantmpi = 'BUILD=NOMPI' mpif90 = 'MPIF90C=' - + # Choose BLAS and LAPACK lapack = ("LAPACKL=%s" % (spec['lapack'].libs + spec['blas'].libs).ld_flags) @@ -158,8 +158,8 @@ def install(self, spec, prefix): for filename in fnmatch.filter(filenames, '*~'): os.remove(os.path.join(dirpath, filename)) - @on_package_attributes(run_tests=True) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): prefix = self.prefix spec = self.spec diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 555fbb91f79..3a283e7eb0c 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -138,7 +138,8 @@ def build(self, spec, prefix): with working_dir('quad'): make() - def check(self, spec, prefix): + def check(self): + spec = self.spec if '+double' in spec: with working_dir('double'): make("check") diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index eb63d08dfdc..79f23d7d92f 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -111,7 +111,8 @@ def install(self, spec, prefix): "-L%s" % spec["hdf5"].prefix.lib, "-lhdf5") _install_shlib("libblosc_plugin", ".libs", prefix.lib) - self.check_install(spec) + if self.run_tests: + self.check_install(spec) def check_install(self, spec): "Build and run a small program to test the installed HDF5 Blosc plugin" diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 27ec1b3bc4b..4da24dd7f12 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -79,11 +79,11 @@ class Hdf5(AutotoolsPackage): @property def libs(self): """Hdf5 can be queried for the following parameters: - + - "hl": high-level interface - "cxx": C++ APIs - "fortran": fortran APIs - + :return: list of matching libraries """ query_parameters = self.spec.last_query.extra_parameters @@ -228,6 +228,7 @@ def patch_postdeps(self): 'libtool') @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): # Build and run a small program to test the installed HDF5 library spec = self.spec diff --git a/var/spack/repos/builtin/packages/nfft/package.py b/var/spack/repos/builtin/packages/nfft/package.py index a137dcf0199..daedcff22f7 100644 --- a/var/spack/repos/builtin/packages/nfft/package.py +++ b/var/spack/repos/builtin/packages/nfft/package.py @@ -63,7 +63,8 @@ def build(self, spec, prefix): with working_dir('long-double'): make() - def check(self, spec, prefix): + def check(self): + spec = self.spec if '+double' in spec['fftw']: with working_dir('double'): make("check") diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index f3b1d4d23fc..647cbb121a7 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -123,8 +123,8 @@ def build_targets(self): return self.make_defs + targets - @on_package_attributes(run_tests=True) @run_after('build') + @on_package_attributes(run_tests=True) def check_build(self): make('tests', *self.make_defs) @@ -136,8 +136,8 @@ def install_targets(self): ] return make_args + self.make_defs - @on_package_attributes(run_tests=True) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): spec = self.spec # Openblas may pass its own test but still fail to compile Lapack diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 4ae140454d2..5ca5f42492d 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -47,7 +47,7 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package # Maintenance releases (recommended) version('5.24.1', '765ef511b5b87a164e2531403ee16b3c', preferred=True) version('5.22.3', 'aa4f236dc2fc6f88b871436b8d0fda95') - + # Misc releases that people need version('5.22.2', '5767e2a10dd62a46d7b57f74a90d952b') @@ -98,6 +98,7 @@ def configure(self, spec, prefix): def build(self, spec, prefix): make() + @run_after('build') @on_package_attributes(run_tests=True) def test(self): make('test') diff --git a/var/spack/repos/builtin/packages/pfft/package.py b/var/spack/repos/builtin/packages/pfft/package.py index f46526be378..3d05a834e93 100644 --- a/var/spack/repos/builtin/packages/pfft/package.py +++ b/var/spack/repos/builtin/packages/pfft/package.py @@ -67,7 +67,8 @@ def build(self, spec, prefix): with working_dir('long-double'): make() - def check(self, spec, prefix): + def check(self): + spec = self.spec if '+double' in spec['fftw']: with working_dir('double'): make("check") diff --git a/var/spack/repos/builtin/packages/planck-likelihood/package.py b/var/spack/repos/builtin/packages/planck-likelihood/package.py index c5c5cac6cf8..8d7b9c5e34d 100644 --- a/var/spack/repos/builtin/packages/planck-likelihood/package.py +++ b/var/spack/repos/builtin/packages/planck-likelihood/package.py @@ -137,8 +137,8 @@ def setup_environment(self, spack_env, run_env): run_env.set('CLIK_DATA', join_path(prefix, 'share', 'clik')) run_env.set('CLIK_PLUGIN', 'rel2015') - @on_package_attributes(run_tests=True) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): prefix = self.prefix clik_example_C = Executable(join_path(prefix.bin, 'clik_example_C')) diff --git a/var/spack/repos/builtin/packages/pnfft/package.py b/var/spack/repos/builtin/packages/pnfft/package.py index 772bd8f195d..3e56b9be4ef 100644 --- a/var/spack/repos/builtin/packages/pnfft/package.py +++ b/var/spack/repos/builtin/packages/pnfft/package.py @@ -64,7 +64,8 @@ def build(self, spec, prefix): with working_dir('long-double'): make() - def check(self, spec, prefix): + def check(self): + spec = self.spec if '+double' in spec['fftw']: with working_dir('double'): make("check") diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py index b64ae228379..b6baee7e072 100644 --- a/var/spack/repos/builtin/packages/pocl/package.py +++ b/var/spack/repos/builtin/packages/pocl/package.py @@ -95,6 +95,7 @@ def symlink_opencl(self): os.symlink("OpenCL", join_path(self.prefix.include, "CL")) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): # Build and run a small program to test the installed OpenCL library spec = self.spec diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index ff50c269a2a..cefef2e1d38 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -78,6 +78,7 @@ def prep_yt(self): rockstar_cfg.write(self.spec['rockstar'].prefix) @run_after('install') + @on_package_attributes(run_tests=True) def check_install(self): # The Python interpreter path can be too long for this # yt = Executable(join_path(prefix.bin, "yt")) From a2135dff49290ed4aeb21e3b9d5192063bc3b0ed Mon Sep 17 00:00:00 2001 From: Jeffrey Salmond Date: Fri, 21 Apr 2017 18:54:27 +0100 Subject: [PATCH 0701/2394] add cppcheck new version (#3935) --- var/spack/repos/builtin/packages/cppcheck/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cppcheck/package.py b/var/spack/repos/builtin/packages/cppcheck/package.py index 254674c7bfd..3bf6a46feca 100644 --- a/var/spack/repos/builtin/packages/cppcheck/package.py +++ b/var/spack/repos/builtin/packages/cppcheck/package.py @@ -30,8 +30,9 @@ class Cppcheck(Package): """A tool for static C/C++ code analysis.""" homepage = "http://cppcheck.sourceforge.net/" - url = "http://downloads.sourceforge.net/project/cppcheck/cppcheck/1.68/cppcheck-1.68.tar.bz2" + url = "https://downloads.sourceforge.net/project/cppcheck/cppcheck/1.78/cppcheck-1.78.tar.bz2" + version('1.78', 'f02d0ee0a4e71023703c6c5efff6cf9d') version('1.72', '2bd36f91ae0191ef5273bb7f6dc0d72e') version('1.68', 'c015195f5d61a542f350269030150708') From 6017a6a6fe13f5fcc59b26e698d8caa0fa181e98 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 21 Apr 2017 23:43:27 +0200 Subject: [PATCH 0702/2394] netcdf: fix missing CC = mpicc ; this makes it work with Intel MPI (#3942) --- var/spack/repos/builtin/packages/netcdf/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py index f512ecf2ea2..ca6a30e9a4d 100644 --- a/var/spack/repos/builtin/packages/netcdf/package.py +++ b/var/spack/repos/builtin/packages/netcdf/package.py @@ -34,7 +34,7 @@ class Netcdf(AutotoolsPackage): url = "http://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-4.3.3.tar.gz" # Version 4.4.1.1 is having problems in tests - # https://github.com/Unidata/netcdf-c/issues/343 + # https://github.com/Unidata/netcdf-c/issues/343 version('4.4.1.1', '503a2d6b6035d116ed53b1d80c811bda') # netcdf@4.4.1 can crash on you (in real life and in tests). See: # https://github.com/Unidata/netcdf-c/issues/282 @@ -137,6 +137,7 @@ def configure_args(self): if '+mpi' in spec: config_args.append('--enable-parallel4') + config_args.append('CC=%s' % spec['mpi'].mpicc) CPPFLAGS.append("-I%s/include" % spec['hdf5'].prefix) LDFLAGS.append("-L%s/lib" % spec['hdf5'].prefix) From 63c341037033f683221a7ede9d6b24e86ddf0951 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 21 Apr 2017 15:36:15 -0700 Subject: [PATCH 0703/2394] Fix checksumming in Python3; add more fetch tests (#3941) * Checksum code wasn't opening binary files as binary. - Fixes Python 3 issue where files are opened as unicode text by default, and decoding fails for binary blobs. * Simplify fetch test parametrization. * - add tests for URL fetching and checksumming. - fix coverage on interface functions in FetchStrategy superclass - add some extra crypto tests. --- lib/spack/spack/fetch_strategy.py | 38 +++++--- lib/spack/spack/test/conftest.py | 13 ++- lib/spack/spack/test/git_fetch.py | 16 +--- lib/spack/spack/test/hg_fetch.py | 16 +--- lib/spack/spack/test/svn_fetch.py | 16 +--- lib/spack/spack/test/url_fetch.py | 93 +++++++++++++++++++ lib/spack/spack/util/crypto.py | 18 ++-- .../builtin.mock/packages/url-test/package.py | 35 +++++++ 8 files changed, 186 insertions(+), 59 deletions(-) create mode 100644 lib/spack/spack/test/url_fetch.py create mode 100644 var/spack/repos/builtin.mock/packages/url-test/package.py diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index 855b2f9379a..7cafeb296d1 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -103,27 +103,42 @@ def set_stage(self, stage): # Subclasses need to implement these methods def fetch(self): - pass # Return True on success, False on fail. + """Fetch source code archive or repo. + + Returns: + bool: True on success, False on failure. + """ def check(self): - pass # Do checksum. + """Checksum the archive fetched by this FetchStrategy.""" def expand(self): - pass # Expand archive. + """Expand the downloaded archive.""" def reset(self): - pass # Revert to freshly downloaded state. + """Revert to freshly downloaded state. + + For archive files, this may just re-expand the archive. + """ def archive(self, destination): - pass # Used to create tarball for mirror. + """Create an archive of the downloaded data for a mirror. + + For downloaded files, this should preserve the checksum of the + original file. For repositories, it should just create an + expandable tarball out of the downloaded repository. + """ @property def cachable(self): - """Return whether the fetcher is capable of caching the - resource it retrieves. This generally is determined by - whether the resource is identifiably associated with a - specific package version.""" - pass + """Whether fetcher is capable of caching the resource it retrieves. + + This generally is determined by whether the resource is + identifiably associated with a specific package version. + + Returns: + bool: True if can cache, False otherwise. + """ def __str__(self): # Should be human readable URL. return "FetchStrategy.__str___" @@ -162,7 +177,8 @@ def __init__(self, url=None, digest=None, **kwargs): if not self.url: self.url = url - self.digest = kwargs.get('md5', None) + self.digest = next((kwargs[h] for h in crypto.hashes if h in kwargs), + None) if not self.digest: self.digest = digest diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index fc1d6ecec28..796d95a0cfe 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -300,6 +300,7 @@ def mock_archive(): repo_name = 'mock-archive-repo' tmpdir.ensure(repo_name, dir=True) repodir = tmpdir.join(repo_name) + # Create the configure script configure_path = str(tmpdir.join(repo_name, 'configure')) with open(configure_path, 'w') as f: @@ -315,15 +316,21 @@ def mock_archive(): "EOF\n" ) os.chmod(configure_path, 0o755) + # Archive it current = tmpdir.chdir() archive_name = '{0}.tar.gz'.format(repo_name) tar('-czf', archive_name, repo_name) current.chdir() - Archive = collections.namedtuple('Archive', ['url', 'path']) - url = 'file://' + str(tmpdir.join(archive_name)) + Archive = collections.namedtuple('Archive', + ['url', 'path', 'archive_file']) + archive_file = str(tmpdir.join(archive_name)) + # Return the url - yield Archive(url=url, path=str(repodir)) + yield Archive( + url=('file://' + archive_file), + archive_file=archive_file, + path=str(repodir)) stage.destroy() diff --git a/lib/spack/spack/test/git_fetch.py b/lib/spack/spack/test/git_fetch.py index ef531ef65fe..34f74df84f7 100644 --- a/lib/spack/spack/test/git_fetch.py +++ b/lib/spack/spack/test/git_fetch.py @@ -31,18 +31,8 @@ from spack.version import ver -@pytest.fixture(params=['master', 'branch', 'tag', 'commit']) -def type_of_test(request): - """Returns one of the test type available for the mock_git_repository""" - return request.param - - -@pytest.fixture(params=[True, False]) -def secure(request): - """Attempt both secure and insecure fetching""" - return request.param - - +@pytest.mark.parametrize("type_of_test", ['master', 'branch', 'tag', 'commit']) +@pytest.mark.parametrize("secure", [True, False]) def test_fetch( type_of_test, secure, @@ -62,11 +52,13 @@ def test_fetch( # Retrieve the right test parameters t = mock_git_repository.checks[type_of_test] h = mock_git_repository.hash + # Construct the package under test spec = Spec('git-test') spec.concretize() pkg = spack.repo.get(spec, new=True) pkg.versions[ver('git')] = t.args + # Enter the stage directory and check some properties with pkg.stage: try: diff --git a/lib/spack/spack/test/hg_fetch.py b/lib/spack/spack/test/hg_fetch.py index 29a6eef5617..96a23a1c53a 100644 --- a/lib/spack/spack/test/hg_fetch.py +++ b/lib/spack/spack/test/hg_fetch.py @@ -31,18 +31,8 @@ from spack.version import ver -@pytest.fixture(params=['default', 'rev0']) -def type_of_test(request): - """Returns one of the test type available for the mock_hg_repository""" - return request.param - - -@pytest.fixture(params=[True, False]) -def secure(request): - """Attempt both secure and insecure fetching""" - return request.param - - +@pytest.mark.parametrize("type_of_test", ['default', 'rev0']) +@pytest.mark.parametrize("secure", [True, False]) def test_fetch( type_of_test, secure, @@ -62,11 +52,13 @@ def test_fetch( # Retrieve the right test parameters t = mock_hg_repository.checks[type_of_test] h = mock_hg_repository.hash + # Construct the package under test spec = Spec('hg-test') spec.concretize() pkg = spack.repo.get(spec, new=True) pkg.versions[ver('hg')] = t.args + # Enter the stage directory and check some properties with pkg.stage: try: diff --git a/lib/spack/spack/test/svn_fetch.py b/lib/spack/spack/test/svn_fetch.py index 69d675fe3cd..2ffedee7db2 100644 --- a/lib/spack/spack/test/svn_fetch.py +++ b/lib/spack/spack/test/svn_fetch.py @@ -31,18 +31,8 @@ from spack.version import ver -@pytest.fixture(params=['default', 'rev0']) -def type_of_test(request): - """Returns one of the test type available for the mock_svn_repository""" - return request.param - - -@pytest.fixture(params=[True, False]) -def secure(request): - """Attempt both secure and insecure fetching""" - return request.param - - +@pytest.mark.parametrize("type_of_test", ['default', 'rev0']) +@pytest.mark.parametrize("secure", [True, False]) def test_fetch( type_of_test, secure, @@ -62,11 +52,13 @@ def test_fetch( # Retrieve the right test parameters t = mock_svn_repository.checks[type_of_test] h = mock_svn_repository.hash + # Construct the package under test spec = Spec('svn-test') spec.concretize() pkg = spack.repo.get(spec, new=True) pkg.versions[ver('svn')] = t.args + # Enter the stage directory and check some properties with pkg.stage: try: diff --git a/lib/spack/spack/test/url_fetch.py b/lib/spack/spack/test/url_fetch.py new file mode 100644 index 00000000000..c9299f45a1b --- /dev/null +++ b/lib/spack/spack/test/url_fetch.py @@ -0,0 +1,93 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os +import pytest + +from llnl.util.filesystem import * + +import spack +from spack.spec import Spec +from spack.version import ver +import spack.util.crypto as crypto + + +@pytest.fixture(params=list(crypto.hashes.keys())) +def checksum_type(request): + return request.param + + +@pytest.mark.parametrize('secure', [True, False]) +def test_fetch( + mock_archive, + secure, + checksum_type, + config, + refresh_builtin_mock +): + """Fetch an archive and make sure we can checksum it.""" + mock_archive.url + mock_archive.path + + algo = crypto.hashes[checksum_type]() + with open(mock_archive.archive_file, 'rb') as f: + algo.update(f.read()) + checksum = algo.hexdigest() + + # Get a spec and tweak the test package with new chcecksum params + spec = Spec('url-test') + spec.concretize() + + pkg = spack.repo.get('url-test', new=True) + pkg.url = mock_archive.url + pkg.versions[ver('test')] = {checksum_type: checksum, 'url': pkg.url} + pkg.spec = spec + + # Enter the stage directory and check some properties + with pkg.stage: + try: + spack.insecure = secure + pkg.do_stage() + finally: + spack.insecure = False + + assert os.path.exists('configure') + assert is_exe('configure') + + with open('configure') as f: + contents = f.read() + assert contents.startswith('#!/bin/sh') + assert 'echo Building...' in contents + + +def test_hash_detection(checksum_type): + algo = crypto.hashes[checksum_type]() + h = 'f' * (algo.digest_size * 2) # hex -> bytes + checker = crypto.Checker(h) + assert checker.hash_name == checksum_type + + +def test_unknown_hash(checksum_type): + with pytest.raises(ValueError): + crypto.Checker('a') diff --git a/lib/spack/spack/util/crypto.py b/lib/spack/spack/util/crypto.py index 29651680566..f0d48702a10 100644 --- a/lib/spack/spack/util/crypto.py +++ b/lib/spack/spack/util/crypto.py @@ -26,16 +26,16 @@ import hashlib """Set of acceptable hashes that Spack will use.""" -_acceptable_hashes = [ - hashlib.md5, - hashlib.sha1, - hashlib.sha224, - hashlib.sha256, - hashlib.sha384, - hashlib.sha512] +hashes = dict((h, getattr(hashlib, h)) for h in [ + 'md5', + 'sha1', + 'sha224', + 'sha256', + 'sha384', + 'sha512']) """Index for looking up hasher for a digest.""" -_size_to_hash = dict((h().digest_size, h) for h in _acceptable_hashes) +_size_to_hash = dict((h().digest_size, h) for h in hashes.values()) def checksum(hashlib_algo, filename, **kwargs): @@ -44,7 +44,7 @@ def checksum(hashlib_algo, filename, **kwargs): """ block_size = kwargs.get('block_size', 2**20) hasher = hashlib_algo() - with open(filename) as file: + with open(filename, 'rb') as file: while True: data = file.read(block_size) if not data: diff --git a/var/spack/repos/builtin.mock/packages/url-test/package.py b/var/spack/repos/builtin.mock/packages/url-test/package.py new file mode 100644 index 00000000000..a1f9af7d7d4 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/url-test/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class UrlTest(Package): + """Mock package that fetches from a URL.""" + homepage = "http://www.url-fetch-example.com" + + version('test', url='to-be-filled-in-by-test') + + def install(self, spec, prefix): + pass From c67f8e4aa1d0d19c4c83d366d153d99428fcfb16 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 21 Apr 2017 15:45:12 -0700 Subject: [PATCH 0704/2394] Fix ABI detection issues with macOS gcc. (#3854) - gcc on macOS says it's version 4.2.1, but it's really clang, and it's actually the *same* clang as the system clang. - It also doesn't respond with a full path when called with --print-file-name=libstdc++.dylib, which is expected from gcc in abi.py. Instead, it gives a relative path and _gcc_compiler_compare doesn't understand what to do with it. This results in errors like: ``` lib/spack/spack/abi.py, line 71, in _gcc_get_libstdcxx_version libpath = os.readlink(output.strip()) OSError: [Errno 2] No such file or directory: 'libstdc++.dylib' ``` - This commit does two things: 1. Ignore any gcc that's actually clang in abi.py. We can probably do better than this, but it's not clear there is a need to, since we should handle the compiler as clang, not gcc. 2. Don't auto-detect any "gcc" that is actually clang anymore. Ignore it and expect people to use clang (which is the default macOS compiler anyway). Users can still add fake gccs to their compilers.yaml if they want, but it's discouraged. --- lib/spack/spack/abi.py | 9 ++++++++- lib/spack/spack/compiler.py | 7 ++++--- lib/spack/spack/compilers/gcc.py | 10 ++++++++++ lib/spack/spack/test/cmd/test_compiler_cmd.py | 4 +--- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/abi.py b/lib/spack/spack/abi.py index b3b1dd6d278..ad3cae6ee2b 100644 --- a/lib/spack/spack/abi.py +++ b/lib/spack/spack/abi.py @@ -29,6 +29,7 @@ from spack.build_environment import dso_suffix from spack.spec import CompilerSpec from spack.util.executable import Executable, ProcessError +from spack.compilers.clang import Clang from llnl.util.lang import memoized @@ -44,7 +45,7 @@ def architecture_compatible(self, parent, child): @memoized def _gcc_get_libstdcxx_version(self, version): """Returns gcc ABI compatibility info by getting the library version of - a compiler's libstdc++.so or libgcc_s.so""" + a compiler's libstdc++ or libgcc_s""" spec = CompilerSpec("gcc", version) compilers = spack.compilers.compilers_for_spec(spec) if not compilers: @@ -62,6 +63,12 @@ def _gcc_get_libstdcxx_version(self, version): else: return None try: + # Some gcc's are actually clang and don't respond properly to + # --print-file-name (they just print the filename, not the + # full path). Ignore these and expect them to be handled as clang. + if Clang.default_version(rungcc.exe[0]) != 'unknown': + return None + output = rungcc("--print-file-name=%s" % libname, return_output=True) except ProcessError: diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index 90af900d0da..bfce31a9a38 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -49,14 +49,15 @@ def _verify_executables(*paths): def get_compiler_version(compiler_path, version_arg, regex='(.*)'): - if compiler_path not in _version_cache: + key = (compiler_path, version_arg, regex) + if key not in _version_cache: compiler = Executable(compiler_path) output = compiler(version_arg, output=str, error=str) match = re.search(regex, output) - _version_cache[compiler_path] = match.group(1) if match else 'unknown' + _version_cache[key] = match.group(1) if match else 'unknown' - return _version_cache[compiler_path] + return _version_cache[key] def dumpversion(compiler_path): diff --git a/lib/spack/spack/compilers/gcc.py b/lib/spack/spack/compilers/gcc.py index 304f82a492e..826ddbf432f 100644 --- a/lib/spack/spack/compilers/gcc.py +++ b/lib/spack/spack/compilers/gcc.py @@ -87,6 +87,16 @@ def cxx17_flag(self): def pic_flag(self): return "-fPIC" + @classmethod + def default_version(cls, cc): + # Skip any gcc versions that are actually clang, like Apple's gcc. + # Returning "unknown" makes them not detected by default. + # Users can add these manually to compilers.yaml at their own risk. + if spack.compilers.clang.Clang.default_version(cc) != 'unknown': + return 'unknown' + + return super(Gcc, cls).default_version(cc) + @classmethod def fc_version(cls, fc): return get_compiler_version( diff --git a/lib/spack/spack/test/cmd/test_compiler_cmd.py b/lib/spack/spack/test/cmd/test_compiler_cmd.py index 842b64039e4..b046cdb9228 100644 --- a/lib/spack/spack/test/cmd/test_compiler_cmd.py +++ b/lib/spack/spack/test/cmd/test_compiler_cmd.py @@ -89,6 +89,4 @@ def test_compiler_add(self, mock_compiler_dir): # Ensure new compiler is in there new_compilers = set(spack.compilers.all_compiler_specs()) new_compiler = new_compilers - old_compilers - assert new_compiler - assert sum(1 for c in new_compiler if - c.version == Version(test_version)) > 0 + assert any(c.version == Version(test_version) for c in new_compiler) From a90e34f4cadd30d34db3d182bdceb9aaf085168e Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 21 Apr 2017 16:28:13 -0700 Subject: [PATCH 0705/2394] Add info for nextflow@0.17.3 (#3947) --- var/spack/repos/builtin/packages/nextflow/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index 05f21f70b75..850775ceee5 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -37,6 +37,8 @@ class Nextflow(Package): expand=False) version('0.20.1', '0e4e0e3eca1c2c97f9b4bffd944b923a', expand=False) + version('0.17.3', '5df00105fb1ce6fd0ba019ae735d9617', + expand=False) depends_on('jdk') From 2a04fdca520ac3226375cd62fc61e201929234de Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 21 Apr 2017 18:38:07 -0500 Subject: [PATCH 0706/2394] Convert LLVM to CMakePackage, update cmake dependency version (#3940) * Convert LLVM to CMakePackage, update cmake dependency version * Remove unused import --- .../repos/builtin/packages/llvm/package.py | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 04b4efd4916..d2bf06e358a 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -22,12 +22,10 @@ # 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 os - from spack import * -class Llvm(Package): +class Llvm(CMakePackage): """The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful @@ -37,6 +35,7 @@ class Llvm(Package): homepage = 'http://llvm.org/' url = 'http://llvm.org/releases/3.7.1/llvm-3.7.1.src.tar.xz' + list_url = 'http://releases.llvm.org/download.html' family = 'compiler' # Used by lmod @@ -73,7 +72,7 @@ class Llvm(Package): ",NVPTX,AMDGPU,CppBackend") # Build dependency - depends_on('cmake@2.8.12.2:', type='build') + depends_on('cmake@3.4.3:', type='build') # Universal dependency depends_on('python@2.7:2.8') # Seems not to support python 3.X.Y @@ -322,21 +321,30 @@ class Llvm(Package): resources[name].get('variant', "")), placement=resources[name].get('placement', None)) - def install(self, spec, prefix): - env['CXXFLAGS'] = self.compiler.cxx11_flag - cmake_args = [arg for arg in std_cmake_args if 'BUILD_TYPE' not in arg] + conflicts('+clang_extra', when='~clang') + conflicts('+lldb', when='~clang') - build_type = 'RelWithDebInfo' if '+debug' in spec else 'Release' - cmake_args.extend([ - '..', - '-DCMAKE_BUILD_TYPE=' + build_type, + def setup_environment(self, spack_env, run_env): + spack_env.set('CXXFLAGS', self.compiler.cxx11_flag) + + def build_type(self): + if '+debug' in self.spec: + return 'RelWithDebInfo' + else: + return 'Release' + + def cmake_args(self): + spec = self.spec + + cmake_args = [ '-DLLVM_REQUIRES_RTTI:BOOL=ON', '-DCLANG_DEFAULT_OPENMP_RUNTIME:STRING=libomp', - '-DPYTHON_EXECUTABLE:PATH=%s/bin/python' % spec['python'].prefix]) + '-DPYTHON_EXECUTABLE:PATH=%s/bin/python' % spec['python'].prefix + ] if '+gold' in spec: cmake_args.append('-DLLVM_BINUTILS_INCDIR=' + - os.path.join(spec['binutils'].prefix, 'include')) + spec['binutils'].prefix.include) if '+polly' in spec: cmake_args.append('-DLINK_POLLY_INTO_TOOLS:Bool=ON') else: @@ -381,19 +389,12 @@ def install(self, spec, prefix): cmake_args.append( '-DLLVM_TARGETS_TO_BUILD:Bool=' + ';'.join(targets)) - if '+clang' not in spec: - if '+clang_extra' in spec: - raise SpackException( - 'The clang_extra variant requires the `+clang` variant.') - if '+lldb' in spec: - raise SpackException( - 'The lldb variant requires the `+clang` variant') - if spec.satisfies('@4.0.0:') and spec.satisfies('platform=linux'): cmake_args.append('-DCMAKE_BUILD_WITH_INSTALL_RPATH=1') - with working_dir('spack-build', create=True): - cmake(*cmake_args) - make() - make("install") - install_tree("bin", join_path(prefix, "libexec", "llvm")) + return cmake_args + + @run_after('install') + def post_install(self): + with working_dir(self.build_directory): + install_tree('bin', join_path(self.prefix, 'libexec', 'llvm')) From ead58cbb9062fab01363e35746e65478acc2dcf5 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 21 Apr 2017 16:52:44 -0700 Subject: [PATCH 0707/2394] spack uninstall no longer requires a known package. (#3915) - Spack install would previously fail if it could not load a package for the thing being uninstalled. - This reworks uninstall to handle cases where the package is no longer known, e.g.: a) the package has been renamed or is no longer in Spack b) the repository the package came from is no longer registered in repos.yaml --- lib/spack/spack/cmd/uninstall.py | 12 ++-- lib/spack/spack/database.py | 53 +++++++++++++++- lib/spack/spack/package.py | 106 ++++++++++++------------------- lib/spack/spack/repository.py | 10 +-- lib/spack/spack/spec.py | 2 +- lib/spack/spack/stage.py | 3 +- 6 files changed, 103 insertions(+), 83 deletions(-) diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index e0b40e0627a..f3eaddf88ab 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -76,9 +76,9 @@ def setup_parser(subparser): help="specs of packages to uninstall") -def concretize_specs(specs, allow_multiple_matches=False, force=False): - """Returns a list of specs matching the non necessarily - concretized specs given from cli +def find_matching_specs(specs, allow_multiple_matches=False, force=False): + """Returns a list of specs matching the not necessarily + concretized specs given from cli Args: specs: list of specs to be matched against installed packages @@ -147,10 +147,10 @@ def do_uninstall(specs, force): try: # should work if package is known to spack packages.append(item.package) - except spack.repository.UnknownPackageError: + except spack.repository.UnknownEntityError: # The package.py file has gone away -- but still # want to uninstall. - spack.Package(item).do_uninstall(force=True) + spack.Package.uninstall_by_spec(item, force=True) # Sort packages to be uninstalled by the number of installed dependents # This ensures we do things in the right order @@ -169,7 +169,7 @@ def get_uninstall_list(args): # Gets the list of installed specs that match the ones give via cli # takes care of '-a' is given in the cli - uninstall_list = concretize_specs(specs, args.all, args.force) + uninstall_list = find_matching_specs(specs, args.all, args.force) # Takes care of '-d' dependent_list = installed_dependents(uninstall_list) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index c63da4cf2e6..3cb8ced3421 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -40,7 +40,9 @@ """ import os +import sys import socket +import contextlib from six import string_types from six import iteritems @@ -52,12 +54,13 @@ import spack.store import spack.repository -from spack.directory_layout import DirectoryLayoutError -from spack.version import Version import spack.spec -from spack.error import SpackError import spack.util.spack_yaml as syaml import spack.util.spack_json as sjson +from spack.util.crypto import bit_length +from spack.directory_layout import DirectoryLayoutError +from spack.error import SpackError +from spack.version import Version # DB goes in this directory underneath the root @@ -127,6 +130,9 @@ def from_dict(cls, spec, dictionary): class Database(object): + """Per-process lock objects for each install prefix.""" + _prefix_locks = {} + def __init__(self, root, db_dir=None): """Create a Database for Spack installations under ``root``. @@ -185,6 +191,47 @@ def read_transaction(self, timeout=_db_lock_timeout): """Get a read lock context manager for use in a `with` block.""" return ReadTransaction(self.lock, self._read, timeout=timeout) + def prefix_lock(self, spec): + """Get a lock on a particular spec's installation directory. + + NOTE: The installation directory **does not** need to exist. + + Prefix lock is a byte range lock on the nth byte of a file. + + The lock file is ``spack.store.db.prefix_lock`` -- the DB + tells us what to call it and it lives alongside the install DB. + + n is the sys.maxsize-bit prefix of the DAG hash. This makes + likelihood of collision is very low AND it gives us + readers-writer lock semantics with just a single lockfile, so no + cleanup required. + """ + prefix = spec.prefix + if prefix not in self._prefix_locks: + self._prefix_locks[prefix] = Lock( + self.prefix_lock_path, + spec.dag_hash_bit_prefix(bit_length(sys.maxsize)), 1) + + return self._prefix_locks[prefix] + + @contextlib.contextmanager + def prefix_read_lock(self, spec): + prefix_lock = self.prefix_lock(spec) + try: + prefix_lock.acquire_read(60) + yield self + finally: + prefix_lock.release_read() + + @contextlib.contextmanager + def prefix_write_lock(self, spec): + prefix_lock = self.prefix_lock(spec) + try: + prefix_lock.acquire_write(60) + yield self + finally: + prefix_lock.release_write() + def _write_to_file(self, stream): """Write out the databsae to a JSON file. diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 108ddeff07f..04029265908 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -46,7 +46,6 @@ from six import string_types from six import with_metaclass -import llnl.util.lock import llnl.util.tty as tty import spack import spack.store @@ -66,7 +65,6 @@ from llnl.util.tty.log import log_output from spack import directory_layout from spack.stage import Stage, ResourceStage, StageComposite -from spack.util.crypto import bit_length from spack.util.environment import dump_environment from spack.version import * @@ -513,16 +511,10 @@ class SomePackage(Package): """ sanity_check_is_dir = [] - """Per-process lock objects for each install prefix.""" - prefix_locks = {} - def __init__(self, spec): # this determines how the package should be built. self.spec = spec - # Lock on the prefix shared resource. Will be set in prefix property - self._prefix_lock = None - # Name of package is the name of its module, without the # containing module names. self.name = self.module.__name__ @@ -858,29 +850,6 @@ def provides(self, vpkg_name): def installed(self): return os.path.isdir(self.prefix) - @property - def prefix_lock(self): - """Prefix lock is a byte range lock on the nth byte of a file. - - The lock file is ``spack.store.db.prefix_lock`` -- the DB - tells us what to call it and it lives alongside the install DB. - - n is the sys.maxsize-bit prefix of the DAG hash. This makes - likelihood of collision is very low AND it gives us - readers-writer lock semantics with just a single lockfile, so no - cleanup required. - """ - if self._prefix_lock is None: - prefix = self.spec.prefix - if prefix not in Package.prefix_locks: - Package.prefix_locks[prefix] = llnl.util.lock.Lock( - spack.store.db.prefix_lock_path, - self.spec.dag_hash_bit_prefix(bit_length(sys.maxsize)), 1) - - self._prefix_lock = Package.prefix_locks[prefix] - - return self._prefix_lock - @property def prefix(self): """Get the prefix into which this package should be installed.""" @@ -1105,27 +1074,11 @@ def _resource_stage(self, resource): resource_stage_folder = '-'.join(pieces) return resource_stage_folder - @contextlib.contextmanager - def _prefix_read_lock(self): - try: - self.prefix_lock.acquire_read(60) - yield self - finally: - self.prefix_lock.release_read() - - @contextlib.contextmanager - def _prefix_write_lock(self): - try: - self.prefix_lock.acquire_write(60) - yield self - finally: - self.prefix_lock.release_write() - @contextlib.contextmanager def _stage_and_write_lock(self): """Prefix lock nested in a stage.""" with self.stage: - with self._prefix_write_lock(): + with spack.store.db.prefix_write_lock(self.spec): yield def do_install(self, @@ -1176,8 +1129,12 @@ def do_install(self, # Ensure package is not already installed layout = spack.store.layout - with self._prefix_read_lock(): - if layout.check_installed(self.spec): + with spack.store.db.prefix_read_lock(self.spec): + if (keep_prefix and os.path.isdir(self.prefix) and + (not self.installed)): + tty.msg( + "Continuing from partial install of %s" % self.name) + elif layout.check_installed(self.spec): tty.msg( "%s is already installed in %s" % (self.name, self.prefix)) rec = spack.store.db.get_record(self.spec) @@ -1247,7 +1204,6 @@ def build_process(input_stream): ) self.stage.keep = keep_stage - with self._stage_and_write_lock(): # Run the pre-install hook in the child process after # the directory is created. @@ -1503,34 +1459,50 @@ def setup_dependent_package(self, module, dependent_spec): """ pass - def do_uninstall(self, force=False): - if not self.installed: + @staticmethod + def uninstall_by_spec(spec, force=False): + if not os.path.isdir(spec.prefix): # prefix may not exist, but DB may be inconsistent. Try to fix by # removing, but omit hooks. - specs = spack.store.db.query(self.spec, installed=True) + specs = spack.store.db.query(spec, installed=True) if specs: spack.store.db.remove(specs[0]) - tty.msg("Removed stale DB entry for %s" % self.spec.short_spec) + tty.msg("Removed stale DB entry for %s" % spec.short_spec) return else: - raise InstallError(str(self.spec) + " is not installed.") + raise InstallError(str(spec) + " is not installed.") if not force: - dependents = spack.store.db.installed_dependents(self.spec) + dependents = spack.store.db.installed_dependents(spec) if dependents: - raise PackageStillNeededError(self.spec, dependents) + raise PackageStillNeededError(spec, dependents) + + # Try to get the pcakage for the spec + try: + pkg = spec.package + except spack.repository.UnknownEntityError: + pkg = None # Pre-uninstall hook runs first. - with self._prefix_write_lock(): - spack.hooks.pre_uninstall(self) - # Uninstalling in Spack only requires removing the prefix. - self.remove_prefix() - # - spack.store.db.remove(self.spec) - tty.msg("Successfully uninstalled %s" % self.spec.short_spec) + with spack.store.db.prefix_write_lock(spec): + # TODO: hooks should take specs, not packages. + if pkg is not None: + spack.hooks.pre_uninstall(pkg) - # Once everything else is done, run post install hooks - spack.hooks.post_uninstall(self) + # Uninstalling in Spack only requires removing the prefix. + spack.store.layout.remove_install_directory(spec) + spack.store.db.remove(spec) + + # TODO: refactor hooks to use specs, not packages. + if pkg is not None: + spack.hooks.post_uninstall(pkg) + + tty.msg("Successfully uninstalled %s" % spec.short_spec) + + def do_uninstall(self, force=False): + """Uninstall this package by spec.""" + # delegate to instance-less method. + Package.uninstall_by_spec(self.spec, force) def _check_extendable(self): if not self.extendable: diff --git a/lib/spack/spack/repository.py b/lib/spack/spack/repository.py index 5486f7a9a42..3e43cce781d 100644 --- a/lib/spack/spack/repository.py +++ b/lib/spack/spack/repository.py @@ -924,11 +924,11 @@ class DuplicateRepoError(RepoError): """Raised when duplicate repos are added to a RepoPath.""" -class PackageLoadError(spack.error.SpackError): - """Superclass for errors related to loading packages.""" +class UnknownEntityError(RepoError): + """Raised when we encounter a package spack doesn't have.""" -class UnknownPackageError(PackageLoadError): +class UnknownPackageError(UnknownEntityError): """Raised when we encounter a package spack doesn't have.""" def __init__(self, name, repo=None): @@ -941,7 +941,7 @@ def __init__(self, name, repo=None): self.name = name -class UnknownNamespaceError(PackageLoadError): +class UnknownNamespaceError(UnknownEntityError): """Raised when we encounter an unknown namespace""" def __init__(self, namespace): @@ -949,7 +949,7 @@ def __init__(self, namespace): "Unknown namespace: %s" % namespace) -class FailedConstructorError(PackageLoadError): +class FailedConstructorError(RepoError): """Raised when a package's class constructor fails.""" def __init__(self, name, exc_type, exc_obj, exc_tb): diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index adddb87428b..b4170a0f7a7 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2187,7 +2187,7 @@ def satisfies(self, other, deps=True, strict=False, strict_deps=False): if not self.virtual and other.virtual: try: pkg = spack.repo.get(self.fullname) - except spack.repository.PackageLoadError: + except spack.repository.UnknownEntityError: # If we can't get package info on this spec, don't treat # it as a provider of this vdep. return False diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 29b68829278..086c4c90f55 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -222,7 +222,8 @@ def __init__( self.keep = keep # File lock for the stage directory. We use one file for all - # stage locks. See Spec.prefix_lock for details on this approach. + # stage locks. See spack.database.Database.prefix_lock for + # details on this approach. self._lock = None if lock: if self.name not in Stage.stage_locks: From 457268571086f921ea1034ec214511047a287ed3 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 21 Apr 2017 17:41:30 -0700 Subject: [PATCH 0708/2394] Coverage for multiple Python versions. (#3951) Update tests to use codecov for multiple python versions. --- .travis.yml | 2 +- share/spack/qa/run-unit-tests | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d7bdf9b2cac..60b3b1cc31a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -92,7 +92,7 @@ before_script: script: share/spack/qa/run-$TEST_SUITE-tests after_success: - - if [[ $TEST_SUITE == unit && $TRAVIS_PYTHON_VERSION == 2.7 && $TRAVIS_OS_NAME == "linux" ]]; then codecov --env PY_VERSION; fi + - codecov --env PY_VERSION #============================================================================= # Notifications diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index d2ce9647aff..c266665ccb2 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -42,7 +42,9 @@ spack compilers spack config get compilers # Run unit tests with code coverage -if [[ "$TRAVIS_PYTHON_VERSION" == 2.7 ]]; then +py_ver=$(python -c 'import platform; print(platform.python_version())') +if [[ "$py_ver" == 2.7* || "$py_ver" == 3.6* ]]; +then coverage run bin/spack install -v libdwarf coverage run bin/spack test "$@" && coverage combine else From 0b002c2911845005c9c5f181f1cd5d77b8db1ec0 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 21 Apr 2017 22:59:30 -0600 Subject: [PATCH 0709/2394] fetch git submodules recursively (#3779) * fetch git submodules recursively This is useful if the submodules have submodules themselves. On the other hand doing a recursive update doesn't hurt if there is only one level. * fetch submodules with depth=1 as well (fix #2190) * use git submodule with depth only for git>=1.8.4 --- lib/spack/docs/packaging_guide.rst | 5 +++-- lib/spack/spack/fetch_strategy.py | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 0e8ddfa68f9..6f4a3ecf1ad 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -854,7 +854,7 @@ Git fetching is enabled with the following parameters to ``version``: * ``tag``: name of a tag to fetch. * ``branch``: name of a branch to fetch. * ``commit``: SHA hash (or prefix) of a commit to fetch. -* ``submodules``: Also fetch submodules when checking out this repository. +* ``submodules``: Also fetch submodules recursively when checking out this repository. Only one of ``tag``, ``branch``, or ``commit`` can be used at a time. @@ -917,7 +917,8 @@ Commits Submodules You can supply ``submodules=True`` to cause Spack to fetch submodules - along with the repository at fetch time. + recursively along with the repository at fetch time. For more information + about git submodules see the manpage of git: ``man git-submodule``. .. code-block:: python diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index 7cafeb296d1..c6946108560 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -686,10 +686,20 @@ def fetch(self): # Init submodules if the user asked for them. if self.submodules: - if spack.debug: - self.git('submodule', 'update', '--init') + # only git 1.8.4 and later have --depth option + if self.git_version < ver('1.8.4'): + if spack.debug: + self.git('submodule', 'update', '--init', '--recursive') + else: + self.git('submodule', '--quiet', 'update', '--init', + '--recursive') else: - self.git('submodule', '--quiet', 'update', '--init') + if spack.debug: + self.git('submodule', 'update', '--init', '--recursive', + '--depth=1') + else: + self.git('submodule', '--quiet', 'update', '--init', + '--recursive', '--depth=1') def archive(self, destination): super(GitFetchStrategy, self).archive(destination, exclude='.git') From 9f0b94b4e190365b00df3d7ccfcc77d6b4ee4273 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 27 Mar 2017 14:02:00 -0700 Subject: [PATCH 0710/2394] PythonPackage builds flat installs instead of egg directories. - Spack doesn't need eggs -- it manages its own directories - Simplify install layout and reduce sys.path searches by installing all packages flat (eggs are deprecated for wheels, and this is also what wheels do). - We now supply the --single-version-externally-managed argument to `setup.py install` for setuptools packages and setuptools. - modify packages to only use setuptools args if setuptools is an immediate dependency - Remove setuptools from packages that do not need it. - Some packages use setuptools *only* when certain args (likeb 'develop' or 'bdist') are supplied to setup.py, and they specifically do not use setuptools for installation. - Spack never calls setup.py this way, so just removing the setuptools dependency works for these packages. --- lib/spack/spack/build_systems/python.py | 19 +++++++++- .../repos/builtin/packages/npm/package.py | 2 +- .../package.py | 4 -- .../builtin/packages/py-basemap/package.py | 1 - .../builtin/packages/py-ipykernel/package.py | 1 - .../packages/py-ipython-genutils/package.py | 1 - .../builtin/packages/py-ipython/package.py | 1 - .../builtin/packages/py-ipywidgets/package.py | 1 - .../packages/py-jupyter-client/package.py | 1 - .../packages/py-jupyter-console/package.py | 1 - .../packages/py-jupyter-core/package.py | 1 - .../packages/py-jupyter-notebook/package.py | 2 +- .../builtin/packages/py-nbconvert/package.py | 12 +++--- .../packages/py-nbconvert/style.min.css | 37 +++++++++++++++++++ .../builtin/packages/py-nbformat/package.py | 1 - .../builtin/packages/py-ptyprocess/package.py | 2 - .../builtin/packages/py-pycurl/package.py | 1 - .../builtin/packages/py-traitlets/package.py | 1 - .../repos/builtin/packages/py-zmq/package.py | 1 - 19 files changed, 63 insertions(+), 27 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-nbconvert/style.min.css diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index 904f0dbaa0a..7a8650bfce4 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -222,7 +222,24 @@ def install(self, spec, prefix): def install_args(self, spec, prefix): """Arguments to pass to install.""" - return ['--prefix={0}'.format(prefix)] + args = ['--prefix={0}'.format(prefix)] + + # This option causes python packages (including setuptools) NOT + # to create eggs or easy-install.pth files. Instead, they + # install naturally into $prefix/pythonX.Y/site-packages. + # + # Eggs add an extra level of indirection to sys.path, slowing + # down large HPC runs. They are also deprecated in favor of + # wheels, which use a normal layout when installed. + # + # Spack manages the package directory on its own by symlinking + # extensions into the site-packages directory, so we don't really + # need the .pth files or egg directories, anyway. + if ('py-setuptools' == spec.name or # this is setuptools, or + 'py-setuptools' in spec._dependencies): # it's an immediate dep + args += ['--single-version-externally-managed', '--root=/'] + + return args def install_lib(self, spec, prefix): """Install all Python modules (extensions and pure Python).""" diff --git a/var/spack/repos/builtin/packages/npm/package.py b/var/spack/repos/builtin/packages/npm/package.py index 500674d1d8f..6196da42e32 100644 --- a/var/spack/repos/builtin/packages/npm/package.py +++ b/var/spack/repos/builtin/packages/npm/package.py @@ -36,7 +36,7 @@ class Npm(AutotoolsPackage): version('3.10.9', 'ec1eb22b466ce87cdd0b90182acce07f') version('3.10.5', '46002413f4a71de9b0da5b506bf1d992') - depends_on('node-js') + depends_on('node-js', type=('build', 'run')) def setup_dependent_environment(self, spack_env, run_env, dependent_spec): npm_config_cache_dir = "%s/npm-cache" % dependent_spec.prefix diff --git a/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py b/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py index 12af938be68..2c2caaed613 100644 --- a/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py +++ b/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py @@ -32,7 +32,3 @@ class PyBackportsSslMatchHostname(PythonPackage): url = "https://pypi.io/packages/source/b/backports.ssl_match_hostname/backports.ssl_match_hostname-3.5.0.1.tar.gz" version('3.5.0.1', 'c03fc5e2c7b3da46b81acf5cbacfe1e6') - - # newer setuptools version mess with "namespace" packages in an - # incompatible way cf. https://github.com/pypa/setuptools/issues/900 - depends_on('py-setuptools@:30.999.999', type='build') diff --git a/var/spack/repos/builtin/packages/py-basemap/package.py b/var/spack/repos/builtin/packages/py-basemap/package.py index d2934eb3c77..e0687f1d529 100644 --- a/var/spack/repos/builtin/packages/py-basemap/package.py +++ b/var/spack/repos/builtin/packages/py-basemap/package.py @@ -35,7 +35,6 @@ class PyBasemap(PythonPackage): version('1.0.7', '48c0557ced9e2c6e440b28b3caff2de8') - depends_on('py-setuptools', type='build') depends_on('py-numpy', type=('build', 'run')) depends_on('py-matplotlib', type=('build', 'run')) depends_on('pil', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ipykernel/package.py b/var/spack/repos/builtin/packages/py-ipykernel/package.py index 0303a8e43c1..9c55abed7e8 100644 --- a/var/spack/repos/builtin/packages/py-ipykernel/package.py +++ b/var/spack/repos/builtin/packages/py-ipykernel/package.py @@ -43,7 +43,6 @@ class PyIpykernel(PythonPackage): version('4.1.0', '638a43e4f8a15872f749090c3f0827b6') depends_on('python@2.7:2.7.999,3.3:') - depends_on('py-setuptools', type='build') depends_on('py-traitlets@4.1.0:', type=('build', 'run')) depends_on('py-tornado@4.0:', type=('build', 'run')) depends_on('py-ipython@4.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ipython-genutils/package.py b/var/spack/repos/builtin/packages/py-ipython-genutils/package.py index 66e8a02130d..121d85acfa4 100644 --- a/var/spack/repos/builtin/packages/py-ipython-genutils/package.py +++ b/var/spack/repos/builtin/packages/py-ipython-genutils/package.py @@ -33,5 +33,4 @@ class PyIpythonGenutils(PythonPackage): version('0.1.0', '9a8afbe0978adbcbfcb3b35b2d015a56') - depends_on('py-setuptools', type='build') depends_on('python@2.7:2.7.999,3.3:') diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py index 8806e1cf8e6..57095649b45 100644 --- a/var/spack/repos/builtin/packages/py-ipython/package.py +++ b/var/spack/repos/builtin/packages/py-ipython/package.py @@ -38,7 +38,6 @@ class PyIpython(PythonPackage): version('2.3.1', '2b7085525dac11190bfb45bb8ec8dcbf') depends_on('python@2.7:2.8,3.3:') - depends_on('py-setuptools@18.5:', type=('build', 'run')) # These dependencies breaks concretization # See https://github.com/LLNL/spack/issues/2793 diff --git a/var/spack/repos/builtin/packages/py-ipywidgets/package.py b/var/spack/repos/builtin/packages/py-ipywidgets/package.py index eafee8e0848..bf31a48df86 100644 --- a/var/spack/repos/builtin/packages/py-ipywidgets/package.py +++ b/var/spack/repos/builtin/packages/py-ipywidgets/package.py @@ -33,7 +33,6 @@ class PyIpywidgets(PythonPackage): version('5.2.2', '112f3daa4aa0f42f8dda831cea3649c8') - depends_on('py-setuptools', type='build') depends_on('python@2.7:2.7.999,3.3:') depends_on('py-ipython@4.0.0:', type=('build', 'run')) depends_on('py-ipykernel@4.2.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyter-client/package.py b/var/spack/repos/builtin/packages/py-jupyter-client/package.py index b0c7b06362c..4d36ffb6eff 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-client/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-client/package.py @@ -40,7 +40,6 @@ class PyJupyterClient(PythonPackage): version('4.1.0', 'cf42048b889c8434fbb5813a9eec1d34') version('4.0.0', '00fa63c67cb3adf359d09dc4d803aff5') - depends_on('py-setuptools', type='build') depends_on('python@2.7:2.7.999,3.3:') depends_on('py-traitlets', type=('build', 'run')) depends_on('py-jupyter-core', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyter-console/package.py b/var/spack/repos/builtin/packages/py-jupyter-console/package.py index a5f3e53298b..2932af70187 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-console/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-console/package.py @@ -37,7 +37,6 @@ class PyJupyterConsole(PythonPackage): version('4.0.3', '0e928ea261e7f8154698cf69ed4f2459') version('4.0.2', 'f2e174938c91136549b908bd39fa5d59') - depends_on('py-setuptools', type='build') depends_on('python@2.7:2.7.999,3.3:') depends_on('py-jupyter-client', type=('build', 'run')) depends_on('py-ipython', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyter-core/package.py b/var/spack/repos/builtin/packages/py-jupyter-core/package.py index f650a91bb97..4fb4ec31ea9 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-core/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-core/package.py @@ -42,6 +42,5 @@ class PyJupyterCore(PythonPackage): version('4.0.1', 'f849136b2badaaba2a8a3b397bf04639') version('4.0', 'b6b37cb4f40bd0fcd20433cb2cc7a4c1') - depends_on('py-setuptools', type='build') depends_on('python@2.7:2.7.999,3.3:') depends_on('py-traitlets', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py b/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py index 4c0d12b2458..f375bc2b2cf 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py @@ -44,9 +44,9 @@ class PyJupyterNotebook(PythonPackage): variant('terminal', default=False, description="Enable terminal functionality") - depends_on('py-setuptools', type='build') depends_on('python@2.7:2.7.999,3.3:') depends_on('npm', type='build') + depends_on('node-js', type=('build', 'run')) depends_on('py-jinja2', type=('build', 'run')) depends_on('py-tornado@4:', type=('build', 'run')) depends_on('py-ipython-genutils', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-nbconvert/package.py b/var/spack/repos/builtin/packages/py-nbconvert/package.py index 0e221d355c3..7114b676a74 100644 --- a/var/spack/repos/builtin/packages/py-nbconvert/package.py +++ b/var/spack/repos/builtin/packages/py-nbconvert/package.py @@ -22,6 +22,7 @@ # 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 os from spack import * @@ -35,7 +36,6 @@ class PyNbconvert(PythonPackage): version('4.1.0', '06655576713ba1ff7cece2b92760c187') version('4.0.0', '9661620b1e10a7b46f314588d2d0932f') - depends_on('py-setuptools', type='build') depends_on('py-pycurl', type='build') depends_on('python@2.7:2.7.999,3.3:') depends_on('py-mistune', type=('build', 'run')) @@ -48,8 +48,8 @@ class PyNbconvert(PythonPackage): depends_on('py-tornado', type=('build', 'run')) depends_on('py-jupyter-client', type=('build', 'run')) - # FIXME: - # Failed, try again after installing PycURL with `pip install pycurl` to avoid outdated SSL. # noqa - # Failed to download css from https://cdn.jupyter.org/notebook/4.1.0/style/style.min.css: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661) # noqa - # Downloading CSS: https://cdn.jupyter.org/notebook/4.1.0/style/style.min.css # noqa - # error: Need Notebook CSS to proceed: nbconvert/resources/style.min.css + def patch(self): + # We bundle this with the spack package so that the installer + # doesn't try to download it. + install(os.path.join(self.package_dir, 'style.min.css'), + os.path.join('nbconvert', 'resources', 'style.min.css')) diff --git a/var/spack/repos/builtin/packages/py-nbconvert/style.min.css b/var/spack/repos/builtin/packages/py-nbconvert/style.min.css new file mode 100644 index 00000000000..6a9626dd8e3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-nbconvert/style.min.css @@ -0,0 +1,37 @@ +/*! +* +* Twitter Bootstrap +* +*//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:10px;-webkit-tap-highlight-color:transparent}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0;vertical-align:middle}svg:not(:root){overflow:hidden}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../components/bootstrap/fonts/glyphicons-halflings-regular.eot);src:url(../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix)format('embedded-opentype'),url(../components/bootstrap/fonts/glyphicons-halflings-regular.woff2)format('woff2'),url(../components/bootstrap/fonts/glyphicons-halflings-regular.woff)format('woff'),url(../components/bootstrap/fonts/glyphicons-halflings-regular.ttf)format('truetype'),url(../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular)format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:1.42857143;color:#000;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:3px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:2px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:18px;margin-bottom:18px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:18px;margin-bottom:9px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:9px;margin-bottom:9px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:33px}.h2,h2{font-size:27px}.h3,h3{font-size:23px}.h4,h4{font-size:17px}.h5,h5{font-size:13px}.h6,h6{font-size:12px}p{margin:0 0 9px}.lead{margin-bottom:18px;font-size:14px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}.small,small{font-size:92%}.mark,mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:8px;margin:36px 0 18px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:9px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:18px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:541px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:9px 18px;margin:0 0 18px;font-size:inherit;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:18px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:monospace}code{padding:2px 4px;font-size:90%;background-color:#f9f2f4;border-radius:2px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:1px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:8.5px;margin:0 0 9px;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:2px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:0;padding-right:0}@media (min-width:768px){.container{width:768px}}@media (min-width:992px){.container{width:940px}}@media (min-width:1200px){.container{width:1140px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:0;padding-right:0}.row{margin-left:0;margin-right:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:0;padding-right:0}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:18px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:13.5px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:18px;font-size:19.5px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{display:block;padding-top:7px;font-size:13px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:32px;padding:6px 12px;font-size:13px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:32px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:45px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:18px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px \9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:31px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:1px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:1px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;min-height:30px}.input-lg{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}select.input-lg{height:45px;line-height:45px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}select.form-group-lg .form-control{height:45px;line-height:45px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;min-height:35px}.has-feedback{position:relative}.has-feedback .form-control{padding-right:40px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:32px;height:32px;line-height:32px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:45px;height:45px;line-height:45px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:23px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#404040}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:25px}.form-horizontal .form-group{margin-left:0;margin-right:0}.form-horizontal .has-feedback .form-control-feedback{right:0}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}.form-horizontal .form-group-lg .control-label{padding-top:14.33px}.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:13px;line-height:1.42857143;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:1px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:1px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:13px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:2px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:541px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:2px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:2px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:1px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:13px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:2px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:1px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:3px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:8px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:2px 2px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:2px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:2px 2px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:2px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:2px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:2px 2px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:30px;margin-bottom:18px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:0;padding-left:0;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:540px)and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:541px){.navbar{border-radius:2px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:6px 0;font-size:17px;line-height:18px;height:30px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}.navbar-toggle{position:relative;float:right;margin-right:0;padding:9px 10px;margin-top:-2px;margin-bottom:-2px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:2px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:541px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:0}.navbar-toggle{display:none}}.navbar-nav{margin:3px 0}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:18px}@media (max-width:540px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:18px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:541px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:6px;padding-bottom:6px}}.navbar-form{padding:10px 0;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:-1px 0}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:540px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:2px 2px 0 0}.navbar-btn{margin-top:-1px;margin-bottom:-1px}.navbar-btn.btn-sm{margin-top:0;margin-bottom:0}.navbar-btn.btn-xs{margin-top:4px;margin-bottom:4px}.navbar-text{margin-top:6px;margin-bottom:6px}@media (min-width:541px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-text{float:left;margin-left:0;margin-right:0}.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:0}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:540px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:540px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:18px;list-style:none;background-color:#f5f5f5;border-radius:2px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#5e5e5e}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:18px 0;border-radius:2px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:2px;border-top-left-radius:2px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:2px;border-top-right-radius:2px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:17px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pager{padding-left:0;margin:18px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:20px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:3px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:58.5px}}.thumbnail{display:block;padding:4px;margin-bottom:18px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:2px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#000}.alert{padding:15px;margin-bottom:18px;border:1px solid transparent;border-radius:2px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f5f5f5;border-radius:2px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:18px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:18px;background-color:#fff;border:1px solid transparent;border-radius:2px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:1px;border-top-left-radius:1px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:1px;border-bottom-left-radius:1px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:1px;border-top-left-radius:1px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:1px;border-bottom-left-radius:1px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-right-radius:1px;border-top-left-radius:1px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:1px;border-top-right-radius:1px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:1px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:1px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:1px;border-bottom-left-radius:1px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:1px;border-bottom-right-radius:1px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:1px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:1px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:18px}.panel-group .panel{margin-bottom:0;border-radius:2px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:3px}.well-sm{padding:9px;border-radius:1px}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:3px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.43px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:2px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:400;line-height:1.42857143;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:3px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:13px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:2px 2px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.item_buttons:after,.item_buttons:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.item_buttons:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px)and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px)and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! +* +* Font Awesome +* +*//*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url(../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0);src:url(../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0)format('embedded-opentype'),url(../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0)format('woff'),url(../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0)format('truetype'),url(../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular)format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}/*! +* +* IPython base +* +*/.modal.fade .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}code{color:#000}pre{font-size:inherit;line-height:inherit}label{font-weight:400}.border-box-sizing{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.corner-all{border-radius:2px}.no-padding{padding:0}.hbox{display:-webkit-box;-webkit-box-orient:horizontal;display:-moz-box;-moz-box-orient:horizontal;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.hbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none}.vbox{display:-webkit-box;-webkit-box-orient:vertical;display:-moz-box;-moz-box-orient:vertical;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none}.hbox.reverse,.reverse,.vbox.reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;flex-direction:row-reverse}.box-flex0,.hbox.box-flex0,.vbox.box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none;width:auto}.box-flex1,.hbox.box-flex1,.vbox.box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.box-flex,.hbox.box-flex,.vbox.box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.box-flex2,.hbox.box-flex2,.vbox.box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;flex:2}.box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1}.box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2}.hbox.start,.start,.vbox.start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start}.end,.hbox.end,.vbox.end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;justify-content:flex-end}.center,.hbox.center,.vbox.center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;justify-content:center}.baseline,.hbox.baseline,.vbox.baseline{-webkit-box-pack:baseline;-moz-box-pack:baseline;box-pack:baseline;justify-content:baseline}.hbox.stretch,.stretch,.vbox.stretch{-webkit-box-pack:stretch;-moz-box-pack:stretch;box-pack:stretch;justify-content:stretch}.align-start,.hbox.align-start,.vbox.align-start{-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start}.align-end,.hbox.align-end,.vbox.align-end{-webkit-box-align:end;-moz-box-align:end;box-align:end;align-items:flex-end}.align-center,.hbox.align-center,.vbox.align-center{-webkit-box-align:center;-moz-box-align:center;box-align:center;align-items:center}.align-baseline,.hbox.align-baseline,.vbox.align-baseline{-webkit-box-align:baseline;-moz-box-align:baseline;box-align:baseline;align-items:baseline}.align-stretch,.hbox.align-stretch,.vbox.align-stretch{-webkit-box-align:stretch;-moz-box-align:stretch;box-align:stretch;align-items:stretch}div.error{margin:2em;text-align:center}div.error>h1{font-size:500%;line-height:normal}div.error>p{font-size:200%;line-height:normal}div.traceback-wrapper{text-align:left;max-width:800px;margin:auto}body{position:absolute;left:0;right:0;top:0;bottom:0;overflow:visible}#header{display:none;background-color:#fff;position:relative;z-index:100}#header #header-container{padding-bottom:5px;padding-top:5px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}#header .header-bar{width:100%;height:1px;background:#e7e7e7;margin-bottom:-1px}#header-spacer{width:100%;visibility:hidden}@media print{#header{display:none!important}#header-spacer{display:none}}#ipython_notebook{padding-left:0;padding-top:1px;padding-bottom:1px}@media (max-width:991px){#ipython_notebook{margin-left:10px}}#noscript{width:auto;padding-top:16px;padding-bottom:16px;text-align:center;font-size:22px;color:red;font-weight:700}#ipython_notebook img{height:28px}#site{width:100%;display:none;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;overflow:auto}@media print{#site{height:auto!important}}.ui-button .ui-button-text{padding:.2em .8em;font-size:77%}input.ui-button{padding:.3em .9em}span#login_widget{float:right}#logout,span#login_widget>.button{color:#333;background-color:#fff;border-color:#ccc}#logout.active,#logout.focus,#logout:active,#logout:focus,#logout:hover,.open>.dropdown-toggle#logout,.open>.dropdown-togglespan#login_widget>.button,span#login_widget>.button.active,span#login_widget>.button.focus,span#login_widget>.button:active,span#login_widget>.button:focus,span#login_widget>.button:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}#logout.active,#logout:active,.open>.dropdown-toggle#logout,.open>.dropdown-togglespan#login_widget>.button,span#login_widget>.button.active,span#login_widget>.button:active{background-image:none}#logout.disabled,#logout.disabled.active,#logout.disabled.focus,#logout.disabled:active,#logout.disabled:focus,#logout.disabled:hover,#logout[disabled],#logout[disabled].active,#logout[disabled].focus,#logout[disabled]:active,#logout[disabled]:focus,#logout[disabled]:hover,fieldset[disabled] #logout,fieldset[disabled] #logout.active,fieldset[disabled] #logout.focus,fieldset[disabled] #logout:active,fieldset[disabled] #logout:focus,fieldset[disabled] #logout:hover,fieldset[disabled] span#login_widget>.button,fieldset[disabled] span#login_widget>.button.active,fieldset[disabled] span#login_widget>.button.focus,fieldset[disabled] span#login_widget>.button:active,fieldset[disabled] span#login_widget>.button:focus,fieldset[disabled] span#login_widget>.button:hover,span#login_widget>.button.disabled,span#login_widget>.button.disabled.active,span#login_widget>.button.disabled.focus,span#login_widget>.button.disabled:active,span#login_widget>.button.disabled:focus,span#login_widget>.button.disabled:hover,span#login_widget>.button[disabled],span#login_widget>.button[disabled].active,span#login_widget>.button[disabled].focus,span#login_widget>.button[disabled]:active,span#login_widget>.button[disabled]:focus,span#login_widget>.button[disabled]:hover{background-color:#fff;border-color:#ccc}#logout .badge,span#login_widget>.button .badge{color:#fff;background-color:#333}.nav-header{text-transform:none}#header>span{margin-top:10px}.modal_stretch .modal-dialog{display:-webkit-box;-webkit-box-orient:vertical;display:-moz-box;-moz-box-orient:vertical;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;min-height:80vh}.modal_stretch .modal-dialog .modal-body{max-height:calc(100vh - 200px);overflow:auto;flex:1}@media (min-width:768px){.modal .modal-dialog{width:700px}select.form-control{margin-left:12px;margin-right:12px}}/*! +* +* IPython auth +* +*/.center-nav{display:inline-block;margin-bottom:-4px}/*! +* +* IPython tree view +* +*/.alternate_upload{background-color:none;display:inline}.alternate_upload.form{padding:0;margin:0}.alternate_upload input.fileinput{text-align:center;vertical-align:middle;display:inline;opacity:0;z-index:2;width:12ex;margin-right:-12ex}.alternate_upload .btn-upload{height:22px}ul#tabs{margin-bottom:4px}ul#tabs a{padding-top:6px;padding-bottom:4px}ul.breadcrumb a:focus,ul.breadcrumb a:hover{text-decoration:none}ul.breadcrumb i.icon-home{font-size:16px;margin-right:4px}ul.breadcrumb span{color:#5e5e5e}.list_toolbar{padding:4px 0;vertical-align:middle}.list_toolbar .tree-buttons{padding-top:1px}.dynamic-buttons{padding-top:3px;display:inline-block}.list_toolbar [class*=span]{min-height:24px}.list_header{font-weight:700;background-color:#eee}.list_placeholder{font-weight:700;padding:4px 7px}.list_container{margin-top:4px;margin-bottom:20px;border:1px solid #ddd;border-radius:2px}.list_container>div{border-bottom:1px solid #ddd}.list_container>div:hover .list-item{background-color:red}.list_container>div:last-child{border:none}.list_item:hover .list_item{background-color:#ddd}.list_item a{text-decoration:none}.list_item:hover{background-color:#fafafa}.action_col{text-align:right}.list_header>div,.list_item>div{line-height:22px;padding:4px 7px}.list_header>div input,.list_item>div input{margin-right:7px;margin-left:14px;vertical-align:baseline;line-height:22px;position:relative;top:-1px}.list_header>div .item_link,.list_item>div .item_link{margin-left:-1px;vertical-align:baseline;line-height:22px}.new-file input[type=checkbox]{visibility:hidden}.item_name{line-height:22px;height:24px}.item_icon{font-size:14px;color:#5e5e5e;margin-right:7px;margin-left:7px;line-height:22px;vertical-align:baseline}.item_buttons{line-height:1em;margin-left:-5px}.item_buttons .btn-group,.item_buttons .input-group{float:left}.item_buttons>.btn,.item_buttons>.btn-group,.item_buttons>.input-group{margin-left:5px}.item_buttons .btn{min-width:13ex}.item_buttons .running-indicator{padding-top:4px;color:#5cb85c}.toolbar_info{height:24px;line-height:24px}input.engine_num_input,input.nbname_input{padding-top:3px;padding-bottom:3px;height:22px;line-height:14px;margin:0}input.engine_num_input{width:60px}.highlight_text{color:#00f}#project_name{display:inline-block;padding-left:7px;margin-left:-2px}#project_name>.breadcrumb{padding:0;margin-bottom:0;background-color:transparent;font-weight:700}#tree-selector{padding-right:0}#button-select-all{min-width:50px}#select-all{margin-left:7px;margin-right:2px}.menu_icon{margin-right:2px}.tab-content .row{margin-left:0;margin-right:0}.folder_icon:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f114"}.folder_icon:before.pull-left{margin-right:.3em}.folder_icon:before.pull-right{margin-left:.3em}.notebook_icon:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f02d";position:relative;top:-1px}.notebook_icon:before.pull-left{margin-right:.3em}.notebook_icon:before.pull-right{margin-left:.3em}.running_notebook_icon:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f02d";position:relative;top:-1px;color:#5cb85c}.running_notebook_icon:before.pull-left{margin-right:.3em}.running_notebook_icon:before.pull-right{margin-left:.3em}.file_icon:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f016";position:relative;top:-2px}.file_icon:before.pull-left{margin-right:.3em}.file_icon:before.pull-right{margin-left:.3em}#notebook_toolbar .pull-right{padding-top:0;margin-right:-1px}ul#new-menu{left:auto;right:0}.kernel-menu-icon{padding-right:12px;width:24px;content:"\f096"}.kernel-menu-icon:before{content:"\f096"}.kernel-menu-icon-current:before{content:"\f00c"}#tab_content{padding-top:20px}#running .panel-group .panel{margin-top:3px;margin-bottom:1em}#running .panel-group .panel .panel-heading{background-color:#eee;line-height:22px;padding:4px 7px}#running .panel-group .panel .panel-heading a:focus,#running .panel-group .panel .panel-heading a:hover{text-decoration:none}#running .panel-group .panel .panel-body{padding:0}#running .panel-group .panel .panel-body .list_container{margin-top:0;margin-bottom:0;border:0;border-radius:0}#running .panel-group .panel .panel-body .list_container .list_item{border-bottom:1px solid #ddd}#running .panel-group .panel .panel-body .list_container .list_item:last-child{border-bottom:0}.delete-button,.duplicate-button,.rename-button,.shutdown-button{display:none}.dynamic-instructions{display:inline-block;padding-top:4px}/*! +* +* IPython text editor webapp +* +*/.selected-keymap i.fa{padding:0 5px}.selected-keymap i.fa:before{content:"\f00c"}#mode-menu{overflow:auto;max-height:20em}.edit_app #header{-webkit-box-shadow:0 0 12px 1px rgba(87,87,87,.2);box-shadow:0 0 12px 1px rgba(87,87,87,.2)}.edit_app #menubar .navbar{margin-bottom:-1px}.dirty-indicator{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:20px}.dirty-indicator.pull-left{margin-right:.3em}.dirty-indicator.pull-right{margin-left:.3em}.dirty-indicator-dirty{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:20px}.dirty-indicator-dirty.pull-left{margin-right:.3em}.dirty-indicator-dirty.pull-right{margin-left:.3em}.dirty-indicator-clean{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:20px}.dirty-indicator-clean.pull-left{margin-right:.3em}.dirty-indicator-clean.pull-right{margin-left:.3em}.dirty-indicator-clean:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f00c"}.dirty-indicator-clean:before.pull-left{margin-right:.3em}.dirty-indicator-clean:before.pull-right{margin-left:.3em}#filename{font-size:16pt;display:table;padding:0 5px}#current-mode{padding-left:5px;padding-right:5px}#texteditor-backdrop{padding-top:20px;padding-bottom:20px}@media not print{#texteditor-backdrop{background-color:#eee}}@media print{#texteditor-backdrop #texteditor-container .CodeMirror-gutter,#texteditor-backdrop #texteditor-container .CodeMirror-gutters{background-color:#fff}}@media not print{#texteditor-backdrop #texteditor-container .CodeMirror-gutter,#texteditor-backdrop #texteditor-container .CodeMirror-gutters{background-color:#fff}#texteditor-backdrop #texteditor-container{padding:0;background-color:#fff;-webkit-box-shadow:0 0 12px 1px rgba(87,87,87,.2);box-shadow:0 0 12px 1px rgba(87,87,87,.2)}}/*! +* +* IPython notebook +* +*/.ansibold{font-weight:700}.ansiblack{color:#000}.ansired{color:#8b0000}.ansigreen{color:#006400}.ansiyellow{color:#c4a000}.ansiblue{color:#00008b}.ansipurple{color:#9400d3}.ansicyan{color:#4682b4}.ansigray{color:gray}.ansibgblack{background-color:#000}.ansibgred{background-color:red}.ansibggreen{background-color:green}.ansibgyellow{background-color:#ff0}.ansibgblue{background-color:#00f}.ansibgpurple{background-color:#ff00ff}.ansibgcyan{background-color:#0ff}.ansibggray{background-color:gray}div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;display:-moz-box;-moz-box-orient:vertical;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;border-radius:2px;box-sizing:border-box;-moz-box-sizing:border-box;border-width:thin;border-style:solid;width:100%;padding:5px;margin:0;outline:0}div.cell.selected{border-color:#ababab}@media print{div.cell.selected{border-color:transparent}}.edit_mode div.cell.selected{border-color:green}.prompt{min-width:14ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.21429em}div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;display:-moz-box;-moz-box-orient:vertical;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}@-moz-document url-prefix(){div.inner_cell{overflow-x:hidden}}div.input_area{border:1px solid #cfcfcf;border-radius:2px;background:#f7f7f7;line-height:1.21429em}div.prompt:empty{padding-top:0;padding-bottom:0}div.unrecognized_cell{padding:5px 5px 5px 0;display:-webkit-box;-webkit-box-orient:horizontal;display:-moz-box;-moz-box-orient:horizontal;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}div.unrecognized_cell .inner_cell{border-radius:2px;padding:5px;font-weight:700;color:red;border:1px solid #cfcfcf;background:#eaeaea}div.unrecognized_cell .inner_cell a,div.unrecognized_cell .inner_cell a:hover{color:inherit;text-decoration:none}@media (max-width:540px){.prompt{text-align:left}div.unrecognized_cell>div.prompt{display:none}}div.code_cell{}div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;display:-moz-box;-moz-box-orient:horizontal;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}@media (max-width:540px){div.input{-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}}div.input_prompt{color:navy;border-top:1px solid transparent}div.input_area>div.highlight{margin:.4em;border:none;padding:0;background-color:transparent}div.input_area>div.highlight>pre{margin:0;border:none;padding:0;background-color:transparent}.CodeMirror{line-height:1.21429em;font-size:14px;height:auto;background:0 0}.CodeMirror-scroll{overflow-y:hidden;overflow-x:auto}.CodeMirror-lines{padding:.4em}.CodeMirror-linenumber{padding:0 8px 0 4px}.CodeMirror-gutters{border-bottom-left-radius:2px;border-top-left-radius:2px}.CodeMirror pre{padding:0;border:0;border-radius:0}.highlight-base,.highlight-variable{color:#000}.highlight-variable-2{color:#1a1a1a}.highlight-variable-3{color:#333}.highlight-string{color:#BA2121}.highlight-comment{color:#408080;font-style:italic}.highlight-number{color:#080}.highlight-atom{color:#88F}.highlight-keyword{color:green;font-weight:700}.highlight-builtin{color:green}.highlight-error{color:red}.highlight-operator{color:#A2F;font-weight:700}.highlight-meta{color:#A2F}.highlight-def{color:#00f}.highlight-string-2{color:#f50}.highlight-qualifier{color:#555}.highlight-bracket{color:#997}.highlight-tag{color:#170}.highlight-attribute{color:#00c}.highlight-header{color:#00f}.highlight-quote{color:#090}.highlight-link{color:#00c}.cm-s-ipython span.cm-keyword{color:green;font-weight:700}.cm-s-ipython span.cm-atom{color:#88F}.cm-s-ipython span.cm-number{color:#080}.cm-s-ipython span.cm-def{color:#00f}.cm-s-ipython span.cm-variable{color:#000}.cm-s-ipython span.cm-operator{color:#A2F;font-weight:700}.cm-s-ipython span.cm-variable-2{color:#1a1a1a}.cm-s-ipython span.cm-variable-3{color:#333}.cm-s-ipython span.cm-comment{color:#408080;font-style:italic}.cm-s-ipython span.cm-string{color:#BA2121}.cm-s-ipython span.cm-string-2{color:#f50}.cm-s-ipython span.cm-meta{color:#A2F}.cm-s-ipython span.cm-qualifier{color:#555}.cm-s-ipython span.cm-builtin{color:green}.cm-s-ipython span.cm-bracket{color:#997}.cm-s-ipython span.cm-tag{color:#170}.cm-s-ipython span.cm-attribute{color:#00c}.cm-s-ipython span.cm-header{color:#00f}.cm-s-ipython span.cm-quote{color:#090}.cm-s-ipython span.cm-link{color:#00c}.cm-s-ipython span.cm-error{color:red}.cm-s-ipython span.cm-tab{background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=')right no-repeat}div.output_wrapper{display:-webkit-box;-webkit-box-align:stretch;display:-moz-box;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;z-index:1}div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:2px;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,.8);box-shadow:inset 0 2px 8px rgba(0,0,0,.8);display:block}div.output_collapsed{margin:0;padding:0;display:-webkit-box;-webkit-box-orient:vertical;display:-moz-box;-moz-box-orient:vertical;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}div.out_prompt_overlay{height:100%;padding:0 .4em;position:absolute;border-radius:2px}div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000;box-shadow:inset 0 0 1px #000;background:rgba(240,240,240,.5)}div.output_prompt{color:#8b0000}div.output_area{padding:0;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;display:-moz-box;-moz-box-orient:horizontal;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}div.output_area .MathJax_Display{text-align:left!important}div.output_area .rendered_html img,div.output_area .rendered_html table{margin-left:0;margin-right:0}div.output_area img,div.output_area svg{max-width:100%;height:auto}div.output_area img.unconfined,div.output_area svg.unconfined{max-width:none}.output{display:-webkit-box;-webkit-box-orient:vertical;display:-moz-box;-moz-box-orient:vertical;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}@media (max-width:540px){div.output_area{-webkit-box-orient:vertical;-moz-box-orient:vertical;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}}div.output_area pre{margin:0;padding:0;border:0;vertical-align:baseline;color:#000;background-color:transparent;border-radius:0}div.output_subarea{overflow-x:auto;padding:.4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1;max-width:calc(100% - 14ex)}div.output_text{text-align:left;color:#000;line-height:1.21429em}div.output_stderr{background:#fdd}div.output_latex{text-align:left}div.output_javascript:empty{padding:0}.js-error{color:#8b0000}div.raw_input_container{font-family:monospace;padding-top:5px}span.raw_input_prompt{}input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;vertical-align:baseline;padding:0 .25em;margin:0 .25em}input.raw_input:focus{box-shadow:none}p.p-space{margin-bottom:10px}div.output_unrecognized{padding:5px;font-weight:700;color:red}div.output_unrecognized a,div.output_unrecognized a:hover{color:inherit;text-decoration:none}.rendered_html{color:#000}.rendered_html em{font-style:italic}.rendered_html strong{font-weight:700}.rendered_html :link,.rendered_html :visited,.rendered_html u{text-decoration:underline}.rendered_html h1{font-size:185.7%;margin:1.08em 0 0;font-weight:700;line-height:1}.rendered_html h2{font-size:157.1%;margin:1.27em 0 0;font-weight:700;line-height:1}.rendered_html h3{font-size:128.6%;margin:1.55em 0 0;font-weight:700;line-height:1}.rendered_html h4{font-size:100%;margin:2em 0 0;font-weight:700;line-height:1}.rendered_html h5,.rendered_html h6{font-size:100%;margin:2em 0 0;font-weight:700;line-height:1;font-style:italic}.rendered_html h1:first-child{margin-top:.538em}.rendered_html h2:first-child{margin-top:.636em}.rendered_html h3:first-child{margin-top:.777em}.rendered_html h4:first-child,.rendered_html h5:first-child,.rendered_html h6:first-child{margin-top:1em}.rendered_html ul{list-style:disc;margin:0 2em;padding-left:0}.rendered_html ul ul{list-style:square;margin:0 2em}.rendered_html ul ul ul{list-style:circle;margin:0 2em}.rendered_html ol{list-style:decimal;margin:0 2em;padding-left:0}.rendered_html ol ol{list-style:upper-alpha;margin:0 2em}.rendered_html ol ol ol{list-style:lower-alpha;margin:0 2em}.rendered_html ol ol ol ol{list-style:lower-roman;margin:0 2em}.rendered_html ol ol ol ol ol{list-style:decimal;margin:0 2em}.rendered_html *+ol,.rendered_html *+ul{margin-top:1em}.rendered_html hr{color:#000;background-color:#000}.rendered_html pre{margin:1em 2em}.rendered_html code,.rendered_html pre{border:0;background-color:#fff;color:#000;font-size:100%;padding:0}.rendered_html blockquote{margin:1em 2em}.rendered_html table{margin-left:auto;margin-right:auto;border:1px solid #000;border-collapse:collapse}.rendered_html td,.rendered_html th,.rendered_html tr{border:1px solid #000;border-collapse:collapse;margin:1em 2em}.rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px}.rendered_html th{font-weight:700}.rendered_html *+table{margin-top:1em}.rendered_html p{text-align:left}.rendered_html *+p{margin-top:1em}.rendered_html img{display:block;margin-left:auto;margin-right:auto}.rendered_html *+img{margin-top:1em}.rendered_html img,.rendered_html svg{max-width:100%;height:auto}.rendered_html img.unconfined,.rendered_html svg.unconfined{max-width:none}div.text_cell{display:-webkit-box;-webkit-box-orient:horizontal;display:-moz-box;-moz-box-orient:horizontal;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}@media (max-width:540px){div.text_cell>div.prompt{display:none}}div.text_cell_render{outline:0;resize:none;width:inherit;border-style:none;padding:.5em .5em .5em .4em;color:#000;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}a.anchor-link:link{text-decoration:none;padding:0 20px;visibility:hidden}h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible}.text_cell.rendered .input_area{display:none}.text_cell.rendered .rendered_html{overflow-x:auto}.text_cell.unrendered .text_cell_render{display:none}.cm-header-1,.cm-header-2,.cm-header-3,.cm-header-4,.cm-header-5,.cm-header-6{font-weight:700;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.cm-header-1{font-size:185.7%}.cm-header-2{font-size:157.1%}.cm-header-3{font-size:128.6%}.cm-header-4{font-size:110%}.cm-header-5,.cm-header-6{font-size:100%;font-style:italic}/*! +* +* IPython notebook webapp +* +*/@media (max-width:767px){.notebook_app{padding-left:0;padding-right:0}}#ipython-main-app{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;height:100%}div#notebook_panel{margin:0;padding:0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;height:100%}#notebook{font-size:14px;line-height:20px;overflow-y:hidden;overflow-x:auto;width:100%;padding-top:20px;margin:0;outline:0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;min-height:100%}@media not print{#notebook-container{padding:15px;background-color:#fff;min-height:0;-webkit-box-shadow:0 0 12px 1px rgba(87,87,87,.2);box-shadow:0 0 12px 1px rgba(87,87,87,.2)}}div.ui-widget-content{border:1px solid #ababab;outline:0}pre.dialog{background-color:#f7f7f7;border:1px solid #ddd;border-radius:2px;padding:.4em .4em .4em 2em}p.dialog{padding:.2em}code,kbd,pre,samp{white-space:pre-wrap}#fonttest{font-family:monospace}p{margin-bottom:0}.end_space{min-height:100px;transition:height .2s ease}.notebook_app #header{-webkit-box-shadow:0 0 12px 1px rgba(87,87,87,.2);box-shadow:0 0 12px 1px rgba(87,87,87,.2)}@media not print{.notebook_app{background-color:#eee}}.celltoolbar{border:thin solid #CFCFCF;border-bottom:none;background:#EEE;border-radius:2px 2px 0 0;width:100%;height:29px;padding-right:4px;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch;-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;justify-content:flex-end;font-size:87%;padding-top:3px}@media print{.edit_mode div.cell.selected{border-color:transparent}div.code_cell{page-break-inside:avoid}#notebook-container{width:100%}.celltoolbar{display:none}}.ctb_hideshow{display:none;vertical-align:bottom}.ctb_global_show .ctb_show.ctb_hideshow{display:block}.ctb_global_show .ctb_show+.input_area,.ctb_global_show .ctb_show+div.text_cell_input,.ctb_global_show .ctb_show~div.text_cell_render{border-top-right-radius:0;border-top-left-radius:0}.ctb_global_show .ctb_show~div.text_cell_render{border:1px solid #cfcfcf}.celltoolbar select{color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;line-height:1.5;border-radius:1px;width:inherit;font-size:inherit;height:22px;padding:0;display:inline-block}.celltoolbar select:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.celltoolbar select::-moz-placeholder{color:#999;opacity:1}.celltoolbar select:-ms-input-placeholder{color:#999}.celltoolbar select::-webkit-input-placeholder{color:#999}.celltoolbar select[disabled],.celltoolbar select[readonly],fieldset[disabled] .celltoolbar select{background-color:#eee;opacity:1}.celltoolbar select[disabled],fieldset[disabled] .celltoolbar select{cursor:not-allowed}textarea.celltoolbar select{height:auto}select.celltoolbar select{height:30px;line-height:30px}select[multiple].celltoolbar select,textarea.celltoolbar select{height:auto}.celltoolbar label{margin-left:5px;margin-right:5px}.completions{position:absolute;z-index:10;overflow:hidden;border:1px solid #ababab;border-radius:2px;-webkit-box-shadow:0 6px 10px -1px #adadad;box-shadow:0 6px 10px -1px #adadad;line-height:1}.completions select{background:#fff;outline:0;border:none;padding:0;margin:0;overflow:auto;font-family:monospace;font-size:110%;color:#000;width:auto}.completions select option.context{color:#286090}#kernel_logo_widget{float:right!important;float:right}#kernel_logo_widget .current_kernel_logo{display:none;margin-top:-1px;margin-bottom:-1px;width:32px;height:32px}#menubar{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;margin-top:1px}#menubar .navbar{border-top:1px;border-radius:0 0 2px 2px;margin-bottom:0}#menubar .navbar-toggle{float:left;padding-top:7px;padding-bottom:7px;border:none}#menubar .navbar-collapse{clear:left}.nav-wrapper{border-bottom:1px solid #e7e7e7}i.menu-icon{padding-top:4px}ul#help_menu li a{overflow:hidden;padding-right:2.2em}ul#help_menu li a i{margin-right:-1.2em}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu>a:after{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:block;content:"\f0da";float:right;color:#333;margin-top:2px;margin-right:-10px}.dropdown-submenu>a:after.pull-left{margin-right:.3em}.dropdown-submenu>a:after.pull-right{margin-left:.3em}.dropdown-submenu:hover>a:after{color:#262626}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px}#notification_area{float:right!important;float:right;z-index:10}.indicator_area{float:right!important;float:right;color:#777;margin-left:5px;margin-right:5px;z-index:10;text-align:center;width:auto}#kernel_indicator{float:right!important;float:right;color:#777;margin-left:5px;margin-right:5px;z-index:10;text-align:center;width:auto;border-left:1px solid}#kernel_indicator .kernel_indicator_name{padding-left:5px;padding-right:5px}#modal_indicator{float:right!important;float:right;color:#777;margin-left:5px;margin-right:5px;z-index:10;text-align:center;width:auto}#readonly-indicator{float:right!important;float:right;color:#777;z-index:10;text-align:center;width:auto;display:none;margin:2px 0 0}.modal_indicator:before{width:1.28571429em;text-align:center}.edit_mode .modal_indicator:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f040"}.edit_mode .modal_indicator:before.pull-left{margin-right:.3em}.edit_mode .modal_indicator:before.pull-right{margin-left:.3em}.command_mode .modal_indicator:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:' '}.command_mode .modal_indicator:before.pull-left{margin-right:.3em}.command_mode .modal_indicator:before.pull-right{margin-left:.3em}.kernel_idle_icon:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f10c"}.kernel_idle_icon:before.pull-left{margin-right:.3em}.kernel_idle_icon:before.pull-right{margin-left:.3em}.kernel_busy_icon:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f111"}.kernel_busy_icon:before.pull-left{margin-right:.3em}.kernel_busy_icon:before.pull-right{margin-left:.3em}.kernel_dead_icon:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f1e2"}.kernel_dead_icon:before.pull-left{margin-right:.3em}.kernel_dead_icon:before.pull-right{margin-left:.3em}.kernel_disconnected_icon:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f127"}.kernel_disconnected_icon:before.pull-left{margin-right:.3em}.kernel_disconnected_icon:before.pull-right{margin-left:.3em}.notification_widget{z-index:10;background:rgba(240,240,240,.5);margin-right:4px;color:#333;background-color:#fff;border-color:#ccc}.notification_widget.active,.notification_widget.focus,.notification_widget:active,.notification_widget:focus,.notification_widget:hover,.open>.dropdown-toggle.notification_widget{color:#333;background-color:#e6e6e6;border-color:#adadad}.notification_widget.active,.notification_widget:active,.open>.dropdown-toggle.notification_widget{background-image:none}.notification_widget.disabled,.notification_widget.disabled.active,.notification_widget.disabled.focus,.notification_widget.disabled:active,.notification_widget.disabled:focus,.notification_widget.disabled:hover,.notification_widget[disabled],.notification_widget[disabled].active,.notification_widget[disabled].focus,.notification_widget[disabled]:active,.notification_widget[disabled]:focus,.notification_widget[disabled]:hover,fieldset[disabled] .notification_widget,fieldset[disabled] .notification_widget.active,fieldset[disabled] .notification_widget.focus,fieldset[disabled] .notification_widget:active,fieldset[disabled] .notification_widget:focus,fieldset[disabled] .notification_widget:hover{background-color:#fff;border-color:#ccc}.notification_widget .badge{color:#fff;background-color:#333}.notification_widget.warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.notification_widget.warning.active,.notification_widget.warning.focus,.notification_widget.warning:active,.notification_widget.warning:focus,.notification_widget.warning:hover,.open>.dropdown-toggle.notification_widget.warning{color:#fff;background-color:#ec971f;border-color:#d58512}.notification_widget.warning.active,.notification_widget.warning:active,.open>.dropdown-toggle.notification_widget.warning{background-image:none}.notification_widget.warning.disabled,.notification_widget.warning.disabled.active,.notification_widget.warning.disabled.focus,.notification_widget.warning.disabled:active,.notification_widget.warning.disabled:focus,.notification_widget.warning.disabled:hover,.notification_widget.warning[disabled],.notification_widget.warning[disabled].active,.notification_widget.warning[disabled].focus,.notification_widget.warning[disabled]:active,.notification_widget.warning[disabled]:focus,.notification_widget.warning[disabled]:hover,fieldset[disabled] .notification_widget.warning,fieldset[disabled] .notification_widget.warning.active,fieldset[disabled] .notification_widget.warning.focus,fieldset[disabled] .notification_widget.warning:active,fieldset[disabled] .notification_widget.warning:focus,fieldset[disabled] .notification_widget.warning:hover{background-color:#f0ad4e;border-color:#eea236}.notification_widget.warning .badge{color:#f0ad4e;background-color:#fff}.notification_widget.success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.notification_widget.success.active,.notification_widget.success.focus,.notification_widget.success:active,.notification_widget.success:focus,.notification_widget.success:hover,.open>.dropdown-toggle.notification_widget.success{color:#fff;background-color:#449d44;border-color:#398439}.notification_widget.success.active,.notification_widget.success:active,.open>.dropdown-toggle.notification_widget.success{background-image:none}.notification_widget.success.disabled,.notification_widget.success.disabled.active,.notification_widget.success.disabled.focus,.notification_widget.success.disabled:active,.notification_widget.success.disabled:focus,.notification_widget.success.disabled:hover,.notification_widget.success[disabled],.notification_widget.success[disabled].active,.notification_widget.success[disabled].focus,.notification_widget.success[disabled]:active,.notification_widget.success[disabled]:focus,.notification_widget.success[disabled]:hover,fieldset[disabled] .notification_widget.success,fieldset[disabled] .notification_widget.success.active,fieldset[disabled] .notification_widget.success.focus,fieldset[disabled] .notification_widget.success:active,fieldset[disabled] .notification_widget.success:focus,fieldset[disabled] .notification_widget.success:hover{background-color:#5cb85c;border-color:#4cae4c}.notification_widget.success .badge{color:#5cb85c;background-color:#fff}.notification_widget.info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.notification_widget.info.active,.notification_widget.info.focus,.notification_widget.info:active,.notification_widget.info:focus,.notification_widget.info:hover,.open>.dropdown-toggle.notification_widget.info{color:#fff;background-color:#31b0d5;border-color:#269abc}.notification_widget.info.active,.notification_widget.info:active,.open>.dropdown-toggle.notification_widget.info{background-image:none}.notification_widget.info.disabled,.notification_widget.info.disabled.active,.notification_widget.info.disabled.focus,.notification_widget.info.disabled:active,.notification_widget.info.disabled:focus,.notification_widget.info.disabled:hover,.notification_widget.info[disabled],.notification_widget.info[disabled].active,.notification_widget.info[disabled].focus,.notification_widget.info[disabled]:active,.notification_widget.info[disabled]:focus,.notification_widget.info[disabled]:hover,fieldset[disabled] .notification_widget.info,fieldset[disabled] .notification_widget.info.active,fieldset[disabled] .notification_widget.info.focus,fieldset[disabled] .notification_widget.info:active,fieldset[disabled] .notification_widget.info:focus,fieldset[disabled] .notification_widget.info:hover{background-color:#5bc0de;border-color:#46b8da}.notification_widget.info .badge{color:#5bc0de;background-color:#fff}.notification_widget.danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.notification_widget.danger.active,.notification_widget.danger.focus,.notification_widget.danger:active,.notification_widget.danger:focus,.notification_widget.danger:hover,.open>.dropdown-toggle.notification_widget.danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.notification_widget.danger.active,.notification_widget.danger:active,.open>.dropdown-toggle.notification_widget.danger{background-image:none}.notification_widget.danger.disabled,.notification_widget.danger.disabled.active,.notification_widget.danger.disabled.focus,.notification_widget.danger.disabled:active,.notification_widget.danger.disabled:focus,.notification_widget.danger.disabled:hover,.notification_widget.danger[disabled],.notification_widget.danger[disabled].active,.notification_widget.danger[disabled].focus,.notification_widget.danger[disabled]:active,.notification_widget.danger[disabled]:focus,.notification_widget.danger[disabled]:hover,fieldset[disabled] .notification_widget.danger,fieldset[disabled] .notification_widget.danger.active,fieldset[disabled] .notification_widget.danger.focus,fieldset[disabled] .notification_widget.danger:active,fieldset[disabled] .notification_widget.danger:focus,fieldset[disabled] .notification_widget.danger:hover{background-color:#d9534f;border-color:#d43f3a}.notification_widget.danger .badge{color:#d9534f;background-color:#fff}div#pager{background-color:#fff;font-size:14px;line-height:20px;overflow:hidden;display:none;position:fixed;bottom:0;width:100%;max-height:50%;padding-top:8px;-webkit-box-shadow:0 0 12px 1px rgba(87,87,87,.2);box-shadow:0 0 12px 1px rgba(87,87,87,.2);z-index:100;top:auto!important}div#pager pre{line-height:1.21429em;color:#000;background-color:#f7f7f7;padding:.4em}div#pager #pager-button-area{position:absolute;top:8px;right:20px}div#pager #pager-contents{position:relative;overflow:auto;width:100%;height:100%}div#pager #pager-contents #pager-container{position:relative;padding:15px 0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}div#pager .ui-resizable-handle{top:0;height:8px;background:#f7f7f7;border-top:1px solid #cfcfcf;border-bottom:1px solid #cfcfcf}div#pager .ui-resizable-handle::after{content:'';top:2px;left:50%;height:3px;width:30px;margin-left:-15px;position:absolute;border-top:1px solid #cfcfcf}.quickhelp{display:-webkit-box;-webkit-box-orient:horizontal;display:-moz-box;-moz-box-orient:horizontal;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.shortcut_key{display:inline-block;width:20ex;text-align:right;font-family:monospace}.shortcut_descr{display:inline-block;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}span.save_widget{margin-top:6px}span.save_widget span.filename{height:1em;line-height:1em;padding:3px;margin-left:16px;border:none;font-size:146.5%;border-radius:2px}span.save_widget span.filename:hover{background-color:#e6e6e6}span.autosave_status,span.checkpoint_status{font-size:small}@media (max-width:767px){span.save_widget{font-size:small}span.autosave_status,span.checkpoint_status{display:none}}@media (min-width:768px)and (max-width:991px){span.checkpoint_status{display:none}span.autosave_status{font-size:x-small}}.toolbar{padding:0;margin-left:-5px;margin-top:2px;margin-bottom:5px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.toolbar label,.toolbar select{width:auto;vertical-align:middle;margin-bottom:0;display:inline;font-size:92%;margin-left:.3em;margin-right:.3em;padding:3px 0 0}.toolbar .btn{padding:2px 8px}.toolbar .btn-group{margin-top:0;margin-left:5px}#maintoolbar{margin-bottom:-3px;margin-top:-8px;border:0;min-height:27px;margin-left:0;padding-top:11px;padding-bottom:3px}#maintoolbar .navbar-text{float:none;vertical-align:middle;text-align:right;margin-left:5px;margin-right:0;margin-top:0}.select-xs{height:24px}@-moz-keyframes fadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}.bigtooltip{overflow:auto;height:200px;-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms}.smalltooltip{-webkit-transition-property:height;-webkit-transition-duration:500ms;-moz-transition-property:height;-moz-transition-duration:500ms;transition-property:height;transition-duration:500ms;text-overflow:ellipsis;overflow:hidden;height:80px}.tooltipbuttons{position:absolute;padding-right:15px;top:0;right:0}.tooltiptext{padding-right:30px}.ipython_tooltip{max-width:700px;animation:fadeOut 400ms;-webkit-animation:fadeIn 400ms;-moz-animation:fadeIn 400ms;animation:fadeIn 400ms;vertical-align:middle;background-color:#f7f7f7;overflow:visible;border:1px solid #ababab;outline:0;padding:3px 3px 3px 7px;padding-left:7px;font-family:monospace;min-height:50px;-moz-box-shadow:0 6px 10px -1px #adadad;-webkit-box-shadow:0 6px 10px -1px #adadad;box-shadow:0 6px 10px -1px #adadad;border-radius:2px;position:absolute;z-index:1000}.ipython_tooltip a{float:right}.ipython_tooltip .tooltiptext pre{border:0;border-radius:0;font-size:100%;background-color:#f7f7f7}.pretooltiparrow{left:0;margin:0;top:-16px;width:40px;height:16px;overflow:hidden;position:absolute}.pretooltiparrow:before{background-color:#f7f7f7;border:1px solid #ababab;z-index:11;content:"";position:absolute;left:15px;top:10px;width:25px;height:25px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.terminal-app{background:#eee}.terminal-app #header{background:#fff;-webkit-box-shadow:0 0 12px 1px rgba(87,87,87,.2);box-shadow:0 0 12px 1px rgba(87,87,87,.2)}.terminal-app .terminal{float:left;font-family:monospace;color:#fff;background:#000;padding:.4em;border-radius:2px;-webkit-box-shadow:0 0 12px 1px rgba(87,87,87,.4);box-shadow:0 0 12px 1px rgba(87,87,87,.4)}.terminal-app .terminal,.terminal-app .terminal dummy-screen{line-height:1em;font-size:14px}.terminal-app .terminal-cursor{color:#000;background:#fff}.terminal-app #terminado-container{margin-top:20px} +/*# sourceMappingURL=style.min.css.map */ \ No newline at end of file diff --git a/var/spack/repos/builtin/packages/py-nbformat/package.py b/var/spack/repos/builtin/packages/py-nbformat/package.py index 4ecf7f8fcf0..e3180965354 100644 --- a/var/spack/repos/builtin/packages/py-nbformat/package.py +++ b/var/spack/repos/builtin/packages/py-nbformat/package.py @@ -35,7 +35,6 @@ class PyNbformat(PythonPackage): version('4.0.1', 'ab7172e517c9d561c0c01eef5631b4c8') version('4.0.0', '7cf61359fa4e9cf3ef5e969e2fcb909e') - depends_on('py-setuptools', type='build') depends_on('py-ipython-genutils', type=('build', 'run')) depends_on('py-traitlets', type=('build', 'run')) depends_on('py-jsonschema', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ptyprocess/package.py b/var/spack/repos/builtin/packages/py-ptyprocess/package.py index 24197932273..346b3fd26bb 100644 --- a/var/spack/repos/builtin/packages/py-ptyprocess/package.py +++ b/var/spack/repos/builtin/packages/py-ptyprocess/package.py @@ -32,5 +32,3 @@ class PyPtyprocess(PythonPackage): url = "https://pypi.io/packages/source/p/ptyprocess/ptyprocess-0.5.1.tar.gz" version('0.5.1', '94e537122914cc9ec9c1eadcd36e73a1') - - depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pycurl/package.py b/var/spack/repos/builtin/packages/py-pycurl/package.py index 81a2a35064f..f08509b3329 100644 --- a/var/spack/repos/builtin/packages/py-pycurl/package.py +++ b/var/spack/repos/builtin/packages/py-pycurl/package.py @@ -35,5 +35,4 @@ class PyPycurl(PythonPackage): version('7.43.0', 'c94bdba01da6004fa38325e9bd6b9760') depends_on('python@2.6:') - depends_on('py-setuptools', type='build') depends_on('curl@7.19.0:') diff --git a/var/spack/repos/builtin/packages/py-traitlets/package.py b/var/spack/repos/builtin/packages/py-traitlets/package.py index debd1dca43a..78d19e3cbf8 100644 --- a/var/spack/repos/builtin/packages/py-traitlets/package.py +++ b/var/spack/repos/builtin/packages/py-traitlets/package.py @@ -40,7 +40,6 @@ class PyTraitlets(PythonPackage): version('4.0.0', 'b5b95ea5941fd9619b4704dfd8201568') version('4.0', '14544e25ccf8e920ed1cbf833852481f') - depends_on('py-setuptools', type='build') depends_on('py-decorator', type=('build', 'run')) depends_on('py-ipython-genutils', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-zmq/package.py b/var/spack/repos/builtin/packages/py-zmq/package.py index cbc0e02e6e1..7779029fcd6 100644 --- a/var/spack/repos/builtin/packages/py-zmq/package.py +++ b/var/spack/repos/builtin/packages/py-zmq/package.py @@ -33,7 +33,6 @@ class PyZmq(PythonPackage): version('16.0.2', '4cf14a2995742253b2b009541f4436f4') version('14.7.0', 'bf304fb73d72aee314ff82d3554328c179938ecf') - depends_on('py-setuptools', type='build') depends_on('py-cython@0.16:', type=('build', 'run')) depends_on('py-py', type=('build', 'run')) depends_on('py-cffi', type=('build', 'run')) From 8b92908ab4012888cdd1a802cc8db6a547a87a12 Mon Sep 17 00:00:00 2001 From: Paul Hopkins Date: Mon, 3 Apr 2017 10:23:10 +0100 Subject: [PATCH 0711/2394] Fix setuptools handling in Python packages. - add setuptools dependencies to packages that need it. - remove setuptools from packages that do not need it. --- var/spack/repos/builtin/packages/py-astropy/package.py | 1 + var/spack/repos/builtin/packages/py-bottleneck/package.py | 1 + var/spack/repos/builtin/packages/py-csvkit/package.py | 1 + var/spack/repos/builtin/packages/py-emcee/package.py | 1 + var/spack/repos/builtin/packages/py-joblib/package.py | 1 - var/spack/repos/builtin/packages/py-markdown/package.py | 1 - var/spack/repos/builtin/packages/py-periodictable/package.py | 1 + var/spack/repos/builtin/packages/py-pysocks/package.py | 2 -- var/spack/repos/builtin/packages/py-restview/package.py | 1 + var/spack/repos/builtin/packages/py-sncosmo/package.py | 1 + var/spack/repos/builtin/packages/py-terminado/package.py | 1 - var/spack/repos/builtin/packages/py-wcsaxes/package.py | 1 + 12 files changed, 8 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-astropy/package.py b/var/spack/repos/builtin/packages/py-astropy/package.py index 8688e0ee7ea..d8c262cfdd5 100644 --- a/var/spack/repos/builtin/packages/py-astropy/package.py +++ b/var/spack/repos/builtin/packages/py-astropy/package.py @@ -37,6 +37,7 @@ class PyAstropy(PythonPackage): version('1.1.post1', 'b52919f657a37d45cc45f5cb0f58c44d') # Required dependencies + depends_on('py-setuptools', type='build') depends_on('py-numpy', type=('build', 'run')) # Optional dependencies diff --git a/var/spack/repos/builtin/packages/py-bottleneck/package.py b/var/spack/repos/builtin/packages/py-bottleneck/package.py index a1215ce39e0..c8040761252 100644 --- a/var/spack/repos/builtin/packages/py-bottleneck/package.py +++ b/var/spack/repos/builtin/packages/py-bottleneck/package.py @@ -32,4 +32,5 @@ class PyBottleneck(PythonPackage): version('1.0.0', '380fa6f275bd24f27e7cf0e0d752f5d2') + depends_on('py-setuptools', type='build') depends_on('py-numpy', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-csvkit/package.py b/var/spack/repos/builtin/packages/py-csvkit/package.py index 5bcda9f4491..5e18f5f8b27 100644 --- a/var/spack/repos/builtin/packages/py-csvkit/package.py +++ b/var/spack/repos/builtin/packages/py-csvkit/package.py @@ -34,6 +34,7 @@ class PyCsvkit(PythonPackage): version('0.9.1', '48d78920019d18846933ee969502fff6') + depends_on('py-setuptools', type='build') depends_on('py-dateutil', type=('build', 'run')) depends_on('py-dbf', type=('build', 'run')) depends_on('py-xlrd', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-emcee/package.py b/var/spack/repos/builtin/packages/py-emcee/package.py index 6419a9c40e6..65fa67eb34c 100644 --- a/var/spack/repos/builtin/packages/py-emcee/package.py +++ b/var/spack/repos/builtin/packages/py-emcee/package.py @@ -34,4 +34,5 @@ class PyEmcee(PythonPackage): version('2.1.0', 'c6b6fad05c824d40671d4a4fc58dfff7') + depends_on('py-setuptools', type='build') depends_on('py-numpy', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-joblib/package.py b/var/spack/repos/builtin/packages/py-joblib/package.py index 07306333f54..75ebae68048 100644 --- a/var/spack/repos/builtin/packages/py-joblib/package.py +++ b/var/spack/repos/builtin/packages/py-joblib/package.py @@ -35,6 +35,5 @@ class PyJoblib(PythonPackage): version('0.10.2', 'ebb42af4342c2445b175f86bd478d869') version('0.10.0', '61e40322c4fed5c22905f67d7d1aa557') - depends_on('py-setuptools', type='build') # for testing # depends_on('py-nose', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-markdown/package.py b/var/spack/repos/builtin/packages/py-markdown/package.py index af10f1c5d3b..1c9be594ae8 100644 --- a/var/spack/repos/builtin/packages/py-markdown/package.py +++ b/var/spack/repos/builtin/packages/py-markdown/package.py @@ -48,5 +48,4 @@ class PyMarkdown(PythonPackage): version('2.5.1', 'be6f6ba65a8fb843d2aaf1fcdd68c755') version('2.5', '8393ceab9c6e33357fb8a7be063a4849') - depends_on('py-setuptools', type='build') depends_on('python@2.7:2.8,3.2:3.4') diff --git a/var/spack/repos/builtin/packages/py-periodictable/package.py b/var/spack/repos/builtin/packages/py-periodictable/package.py index 9ff15430183..ed1b97f1fee 100644 --- a/var/spack/repos/builtin/packages/py-periodictable/package.py +++ b/var/spack/repos/builtin/packages/py-periodictable/package.py @@ -34,5 +34,6 @@ class PyPeriodictable(PythonPackage): version('1.4.1', '7246b63cc0b6b1be6e86b6616f9e866e') + depends_on('py-setuptools', type='build') depends_on('py-numpy', type=('build', 'run')) depends_on('py-pyparsing', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pysocks/package.py b/var/spack/repos/builtin/packages/py-pysocks/package.py index 27f219c64c0..603799c4468 100644 --- a/var/spack/repos/builtin/packages/py-pysocks/package.py +++ b/var/spack/repos/builtin/packages/py-pysocks/package.py @@ -33,5 +33,3 @@ class PyPysocks(PythonPackage): version('1.6.6', '571f4c23982fa86bf0e7a441f1b6c881') version('1.5.7', '68f4ad7a8d4fa725656ae3e9dd142d29') - - depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-restview/package.py b/var/spack/repos/builtin/packages/py-restview/package.py index 871016fdb19..87f65b842ae 100644 --- a/var/spack/repos/builtin/packages/py-restview/package.py +++ b/var/spack/repos/builtin/packages/py-restview/package.py @@ -33,6 +33,7 @@ class PyRestview(PythonPackage): version('2.6.1', 'ac8b70e15b8f1732d1733d674813666b') + depends_on('py-setuptools', type='build') depends_on('python@2.7.0:2.7.999,3.3:3.5') depends_on('py-docutils@0.13.1:', type=('build', 'run')) depends_on('py-readme-renderer', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-sncosmo/package.py b/var/spack/repos/builtin/packages/py-sncosmo/package.py index f9d2546da3f..998fb2ce1e1 100644 --- a/var/spack/repos/builtin/packages/py-sncosmo/package.py +++ b/var/spack/repos/builtin/packages/py-sncosmo/package.py @@ -37,6 +37,7 @@ class PySncosmo(PythonPackage): # Required dependencies # py-sncosmo binaries are duplicates of those from py-astropy extends('python', ignore=r'bin/.*') + depends_on('py-setuptools', type='build') depends_on('py-numpy', type=('build', 'run')) depends_on('py-scipy', type=('build', 'run')) depends_on('py-astropy', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-terminado/package.py b/var/spack/repos/builtin/packages/py-terminado/package.py index 4cebe14fcab..5dfd9b9068c 100644 --- a/var/spack/repos/builtin/packages/py-terminado/package.py +++ b/var/spack/repos/builtin/packages/py-terminado/package.py @@ -33,6 +33,5 @@ class PyTerminado(PythonPackage): version('0.6', '5b6c65da27fe1ed07a9f80f0588cdaba') - depends_on('py-setuptools', type='build') depends_on('py-tornado@4:', type=('build', 'run')) depends_on('py-ptyprocess', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-wcsaxes/package.py b/var/spack/repos/builtin/packages/py-wcsaxes/package.py index be1d151ee9c..1973fda8ec9 100644 --- a/var/spack/repos/builtin/packages/py-wcsaxes/package.py +++ b/var/spack/repos/builtin/packages/py-wcsaxes/package.py @@ -35,6 +35,7 @@ class PyWcsaxes(PythonPackage): version('0.8', 'de1c60fdae4c330bf5ddb9f1ab5ab920') extends('python', ignore=r'bin/') + depends_on('py-setuptools', type='build') depends_on('py-numpy', type=('build', 'run')) depends_on('py-matplotlib', type=('build', 'run')) depends_on('py-astropy', type=('build', 'run')) From 16a7b27a9eac19384db919e3d2567d3ee8e14ea4 Mon Sep 17 00:00:00 2001 From: Matthew Krafczyk Date: Fri, 21 Apr 2017 15:56:21 -0700 Subject: [PATCH 0712/2394] more fixes for use of setuptools in python packages - py-setuptools is required by py-yt for importing yt in jupyter notebooks. - add two dependencies needed for python 2.7 - add the py-subprocess32 package --- .../builtin/packages/py-matplotlib/package.py | 2 ++ .../packages/py-subprocess32/package.py | 34 +++++++++++++++++++ .../repos/builtin/packages/py-yt/package.py | 2 +- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/py-subprocess32/package.py diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 53a7d9af975..7177ea5a790 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -69,6 +69,8 @@ class PyMatplotlib(PythonPackage): depends_on('py-pyparsing', type=('build', 'run')) depends_on('py-pytz', type=('build', 'run')) depends_on('py-cycler@0.9:', type=('build', 'run')) + depends_on('py-subprocess32', type=('build', 'run'), when='^python@:2.7') + depends_on('py-functools32', type=('build', 'run'), when='^python@2.7') # ------ Optional GUI frameworks depends_on('tk@8.3:', when='+tk') # not 8.6.0 or 8.6.1 diff --git a/var/spack/repos/builtin/packages/py-subprocess32/package.py b/var/spack/repos/builtin/packages/py-subprocess32/package.py new file mode 100644 index 00000000000..35d11e1bee5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-subprocess32/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySubprocess32(PythonPackage): + """A backport of the subprocess module from Python 3.2/3.3 for 2.x.""" + + homepage = "https://pypi.python.org/pypi/subprocess32" + url = "https://pypi.io/packages/source/s/subprocess32/subprocess32-3.2.7.tar.gz" + + version('3.2.7', '824c801e479d3e916879aae3e9c15e16') diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index cefef2e1d38..d76c9bebb12 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -66,7 +66,7 @@ class PyYt(PythonPackage): depends_on("py-matplotlib", type=('build', 'run')) depends_on("py-numpy", type=('build', 'run')) depends_on("py-scipy", type=('build', 'run'), when="+scipy") - depends_on("py-setuptools", type="build") + depends_on("py-setuptools", type=('build', 'run')) depends_on("py-sympy", type=('build', 'run')) depends_on("rockstar@yt", type=('build', 'run'), when="+rockstar") depends_on("python @2.7:2.999,3.4:") From 94a0cca080f1cd27ca5eaa6dc3c470bb541f4b34 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 22 Apr 2017 14:30:51 +0200 Subject: [PATCH 0713/2394] add Intel mpi package and add MPI wrappers to Intel parallel studio (#3905) * intel-mpi: add new package * fix hashes * fix typo * flake8 * add install * blank line * error * add bin64 * fix MPI wrappers in intel-parallel-studio * add missing I_MPI_FC * use shorter hashes --- lib/spack/spack/util/prefix.py | 1 + .../builtin/packages/intel-mpi/package.py | 68 +++++++++++++++++++ .../packages/intel-parallel-studio/package.py | 21 ++++++ 3 files changed, 90 insertions(+) create mode 100644 var/spack/repos/builtin/packages/intel-mpi/package.py diff --git a/lib/spack/spack/util/prefix.py b/lib/spack/spack/util/prefix.py index bc6808f3508..e39b81a4c6f 100644 --- a/lib/spack/spack/util/prefix.py +++ b/lib/spack/spack/util/prefix.py @@ -61,6 +61,7 @@ class Prefix(str): def __new__(cls, path): s = super(Prefix, cls).__new__(cls, path) s.bin = join_path(s, 'bin') + s.bin64 = join_path(s, 'bin64') s.sbin = join_path(s, 'sbin') s.etc = join_path(s, 'etc') s.include = join_path(s, 'include') diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py new file mode 100644 index 00000000000..c4d3df8f742 --- /dev/null +++ b/var/spack/repos/builtin/packages/intel-mpi/package.py @@ -0,0 +1,68 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + +from spack.pkg.builtin.intel import IntelInstaller + + +class IntelMpi(IntelInstaller): + """Intel MPI""" + + homepage = "https://software.intel.com/en-us/intel-mpi-library" + + version('2017.2', 'b6c2e62c3fb9b1558ede72ccf72cf1d6', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11334/l_mpi_2017.2.174.tgz') + version('2017.1', 'd5e941ac2bcf7c5576f85f6bcfee4c18', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11014/l_mpi_2017.1.132.tgz') + version('5.1.3', '4316e78533a932081b1a86368e890800', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9278/l_mpi_p_5.1.3.223.tgz') + + provides('mpi') + + def install(self, spec, prefix): + self.intel_prefix = prefix + IntelInstaller.install(self, spec, prefix) + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.set('I_MPI_CC', spack_cc) + spack_env.set('I_MPI_CXX', spack_cxx) + spack_env.set('I_MPI_F77', spack_fc) + spack_env.set('I_MPI_F90', spack_f77) + spack_env.set('I_MPI_FC', spack_fc) + + def setup_dependent_package(self, module, dep_spec): + # Check for presence of bin64 or bin directory + if os.path.isdir(self.prefix.bin): + bindir = self.prefix.bin + elif os.path.isdir(self.prefix.bin64): + bindir = self.prefix.bin64 + else: + raise RuntimeError('No suitable bindir found') + + self.spec.mpicc = join_path(bindir, 'mpicc') + self.spec.mpicxx = join_path(bindir, 'mpicxx') + self.spec.mpifc = join_path(bindir, 'mpif90') + self.spec.mpif77 = join_path(bindir, 'mpif77') 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 d4ae5fe20f0..8bc489f1cb3 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -403,3 +403,24 @@ def setup_environment(self, spack_env, run_env): run_env.prepend_path('VTUNE_AMPLIFIER_XE_{0}_DIR'.format( major_ver), join_path(self.prefix, 'vtune_amplifier_xe')) + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.set('I_MPI_CC', spack_cc) + spack_env.set('I_MPI_CXX', spack_cxx) + spack_env.set('I_MPI_F77', spack_fc) + spack_env.set('I_MPI_F90', spack_f77) + spack_env.set('I_MPI_FC', spack_fc) + + def setup_dependent_package(self, module, dep_spec): + # Check for presence of bin64 or bin directory + if os.path.isdir(self.prefix.bin): + bindir = self.prefix.bin + elif os.path.isdir(self.prefix.bin64): + bindir = self.prefix.bin64 + else: + raise RuntimeError('No suitable bindir found') + + self.spec.mpicc = join_path(bindir, 'mpicc') + self.spec.mpicxx = join_path(bindir, 'mpic++') + self.spec.mpifc = join_path(bindir, 'mpif90') + self.spec.mpif77 = join_path(bindir, 'mpif77') From 281ba9946094ff46db6a70573171573b890fe5e7 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sat, 22 Apr 2017 14:01:17 -0700 Subject: [PATCH 0714/2394] Add version info for emacs@25.2 (#3957) --- var/spack/repos/builtin/packages/emacs/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py index 990ffd03cd7..dac57682ea3 100644 --- a/var/spack/repos/builtin/packages/emacs/package.py +++ b/var/spack/repos/builtin/packages/emacs/package.py @@ -31,6 +31,7 @@ class Emacs(AutotoolsPackage): homepage = "https://www.gnu.org/software/emacs" url = "http://ftp.gnu.org/gnu/emacs/emacs-24.5.tar.gz" + version('25.2', '0a36d1cdbba6024d4dbbac027f87995f') version('25.1', '95c12e6a9afdf0dcbdd7d2efa26ca42c') version('24.5', 'd74b597503a68105e61b5b9f6d065b44') From fc8106afe3d8f46ba2f3171b0e02cf36aa3c3316 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 22 Apr 2017 17:31:22 -0500 Subject: [PATCH 0715/2394] Find more versions from GitHub (#3952) --- lib/spack/spack/url.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 174f7d0b3ce..7a597073d60 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -71,7 +71,7 @@ def find_list_url(url): url_types = [ # e.g. https://github.com/llnl/callpath/archive/v1.0.1.tar.gz - (r'(.*github\.com/[^/]+/[^/]+)/archive/', + (r'(.*github\.com/[^/]+/[^/]+)', lambda m: m.group(1) + '/releases')] for pattern, fun in url_types: From 4e17ae911b2263cea8629168a59cb7c1a4b41644 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 22 Apr 2017 17:31:50 -0500 Subject: [PATCH 0716/2394] Hack to fix python dependency ranges (#3938) * Hack to fix python dependency ranges * Flake8 --- var/spack/repos/builtin/packages/cmor/package.py | 2 +- var/spack/repos/builtin/packages/cosmomc/package.py | 2 +- var/spack/repos/builtin/packages/espressopp/package.py | 2 +- var/spack/repos/builtin/packages/julia/package.py | 2 +- var/spack/repos/builtin/packages/node-js/package.py | 6 +++--- var/spack/repos/builtin/packages/paraview/package.py | 2 +- var/spack/repos/builtin/packages/petsc/package.py | 2 +- var/spack/repos/builtin/packages/py-autopep8/package.py | 2 +- .../py-backports-shutil-get-terminal-size/package.py | 2 +- var/spack/repos/builtin/packages/py-bleach/package.py | 2 +- var/spack/repos/builtin/packages/py-configparser/package.py | 2 +- var/spack/repos/builtin/packages/py-dill/package.py | 2 +- .../builtin/packages/py-easybuild-framework/package.py | 2 +- var/spack/repos/builtin/packages/py-enum34/package.py | 2 +- var/spack/repos/builtin/packages/py-flake8/package.py | 4 ++-- var/spack/repos/builtin/packages/py-html5lib/package.py | 2 +- var/spack/repos/builtin/packages/py-ipdb/package.py | 2 +- var/spack/repos/builtin/packages/py-ipykernel/package.py | 2 +- .../repos/builtin/packages/py-ipython-genutils/package.py | 2 +- var/spack/repos/builtin/packages/py-ipython/package.py | 4 ++-- var/spack/repos/builtin/packages/py-ipywidgets/package.py | 2 +- .../repos/builtin/packages/py-jupyter-client/package.py | 2 +- .../repos/builtin/packages/py-jupyter-console/package.py | 2 +- var/spack/repos/builtin/packages/py-jupyter-core/package.py | 2 +- .../repos/builtin/packages/py-jupyter-notebook/package.py | 2 +- var/spack/repos/builtin/packages/py-nbconvert/package.py | 2 +- var/spack/repos/builtin/packages/py-pathlib2/package.py | 2 +- var/spack/repos/builtin/packages/py-pip/package.py | 2 +- .../repos/builtin/packages/py-readme-renderer/package.py | 2 +- var/spack/repos/builtin/packages/py-restview/package.py | 2 +- var/spack/repos/builtin/packages/py-scikit-learn/package.py | 2 +- var/spack/repos/builtin/packages/py-setuptools/package.py | 4 +--- .../repos/builtin/packages/py-singledispatch/package.py | 2 +- var/spack/repos/builtin/packages/py-symfit/package.py | 2 +- var/spack/repos/builtin/packages/py-tappy/package.py | 2 +- .../repos/builtin/packages/py-widgetsnbextension/package.py | 2 +- var/spack/repos/builtin/packages/py-xmlrunner/package.py | 2 +- var/spack/repos/builtin/packages/py-yt/package.py | 2 +- var/spack/repos/builtin/packages/shiny-server/package.py | 2 +- var/spack/repos/builtin/packages/simulationio/package.py | 4 ++-- var/spack/repos/builtin/packages/slepc/package.py | 2 +- 41 files changed, 46 insertions(+), 48 deletions(-) diff --git a/var/spack/repos/builtin/packages/cmor/package.py b/var/spack/repos/builtin/packages/cmor/package.py index bb4f3b4df22..2dcd1c5ba17 100644 --- a/var/spack/repos/builtin/packages/cmor/package.py +++ b/var/spack/repos/builtin/packages/cmor/package.py @@ -46,7 +46,7 @@ class Cmor(AutotoolsPackage): depends_on('hdf5@:1.8') extends('python', when='+python') - depends_on('python@:2.7', when='+python') + depends_on('python@:2.8', when='+python') depends_on('py-numpy', type=('build', 'run'), when='+python') @run_before('configure') diff --git a/var/spack/repos/builtin/packages/cosmomc/package.py b/var/spack/repos/builtin/packages/cosmomc/package.py index 261115d5752..1e83e02d656 100644 --- a/var/spack/repos/builtin/packages/cosmomc/package.py +++ b/var/spack/repos/builtin/packages/cosmomc/package.py @@ -56,7 +56,7 @@ def url_for_version(self, version): depends_on('mpi', when='+mpi') depends_on('planck-likelihood', when='+planck') - depends_on('python @2.7:2.999,3.4:') + depends_on('python@2.7:2.8,3.4:') parallel = False diff --git a/var/spack/repos/builtin/packages/espressopp/package.py b/var/spack/repos/builtin/packages/espressopp/package.py index 06974a38d84..7878ed3fc65 100644 --- a/var/spack/repos/builtin/packages/espressopp/package.py +++ b/var/spack/repos/builtin/packages/espressopp/package.py @@ -48,7 +48,7 @@ class Espressopp(CMakePackage): depends_on("mpi") depends_on("boost+serialization+filesystem+system+python+mpi", when='@1.9.4:') extends("python") - depends_on("python@2:2.7.13") + depends_on("python@2:2.8") depends_on("py-mpi4py@2.0.0:", when='@1.9.4', type=('build', 'run')) depends_on("py-mpi4py@1.3.1:", when='@1.9.4.1:', type=('build', 'run')) depends_on("fftw") diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index 97a4a6774e7..4e7c65f53a4 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -75,7 +75,7 @@ class Julia(Package): depends_on("git", when='@:0.4') depends_on("git", when='@release-0.4') depends_on("openssl") - depends_on("python @2.7:2.999") + depends_on("python@2.7:2.8") # Run-time dependencies: # depends_on("arpack") diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index 8f129bd3e09..208ba5e15df 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -47,7 +47,7 @@ class NodeJs(Package): depends_on('libtool', type='build', when=sys.platform != 'darwin') depends_on('pkg-config', type='build') - depends_on('python@2.7:2.7.999', type='build') + depends_on('python@2.7:2.8', type='build') # depends_on('bash-completion', when="+bash-completion") depends_on('icu4c', when='+icu4c') depends_on('openssl', when='+openssl') @@ -63,10 +63,10 @@ def install(self, spec, prefix): # On OSX, the system libtool must be used # So, we ensure that this is the case by... if sys.platform == 'darwin': - process_pipe = subprocess.Popen(["which", "libtool"], + process_pipe = subprocess.Popen(["which", "libtool"], stdout=subprocess.PIPE) result_which = process_pipe.communicate()[0] - process_pipe = subprocess.Popen(["whereis", "libtool"], + process_pipe = subprocess.Popen(["whereis", "libtool"], stdout=subprocess.PIPE) result_whereis = process_pipe.communicate()[0] assert result_which == result_whereis, ( diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index d21b700e09a..9b2b33625a0 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -47,7 +47,7 @@ class Paraview(CMakePackage): variant('qt', default=False, description='Enable Qt (gui) support') variant('opengl2', default=True, description='Enable OpenGL2 backend') - depends_on('python@2:2.7', when='+python') + depends_on('python@2:2.8', when='+python') depends_on('py-numpy', when='+python', type='run') depends_on('py-matplotlib', when='+python', type='run') depends_on('mpi', when='+mpi') diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 69a01d44e0b..d3c18955087 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -92,7 +92,7 @@ class Petsc(Package): depends_on('mpi', when='+mpi') # Build dependencies - depends_on('python @2.6:2.7', type='build') + depends_on('python@2.6:2.8', type='build') # Other dependencies depends_on('boost', when='@:3.5+boost') diff --git a/var/spack/repos/builtin/packages/py-autopep8/package.py b/var/spack/repos/builtin/packages/py-autopep8/package.py index 6c92def4152..25698bc880f 100644 --- a/var/spack/repos/builtin/packages/py-autopep8/package.py +++ b/var/spack/repos/builtin/packages/py-autopep8/package.py @@ -36,7 +36,7 @@ class PyAutopep8(PythonPackage): version('1.2.2', '3d97f9c89d14a0975bffd32a2c61c36c') extends('python', ignore='bin/pep8') - depends_on('python@2.6:2.7,3.2:') + depends_on('python@2.6:2.8,3.2:') depends_on('py-pycodestyle@1.5.7:1.7.0', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py b/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py index 3447666a2ef..adadad76bd3 100644 --- a/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py +++ b/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py @@ -37,4 +37,4 @@ class PyBackportsShutilGetTerminalSize(PythonPackage): # newer setuptools version mess with "namespace" packages in an # incompatible way cf. https://github.com/pypa/setuptools/issues/900 depends_on('py-setuptools@:30.999.999', type='build') - depends_on('python@:3.2.999') + depends_on('python@:3.2') diff --git a/var/spack/repos/builtin/packages/py-bleach/package.py b/var/spack/repos/builtin/packages/py-bleach/package.py index 4a6d7ed9d2f..bb9c4e9398d 100644 --- a/var/spack/repos/builtin/packages/py-bleach/package.py +++ b/var/spack/repos/builtin/packages/py-bleach/package.py @@ -33,7 +33,7 @@ class PyBleach(PythonPackage): version('1.5.0', 'b663300efdf421b3b727b19d7be9c7e7') - depends_on('python@2.6:2.7,3.2:3.5') + depends_on('python@2.6:2.8,3.2:3.5') depends_on('py-setuptools', type='build') depends_on('py-six', type=('build', 'run')) depends_on('py-html5lib@0.999,0.999999:0.9999999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-configparser/package.py b/var/spack/repos/builtin/packages/py-configparser/package.py index c9ba7ac15cc..0a8660aa719 100644 --- a/var/spack/repos/builtin/packages/py-configparser/package.py +++ b/var/spack/repos/builtin/packages/py-configparser/package.py @@ -35,7 +35,7 @@ class PyConfigparser(PythonPackage): version('3.5.0', 'cfdd915a5b7a6c09917a64a573140538', url="https://pypi.python.org/packages/7c/69/c2ce7e91c89dc073eb1aa74c0621c3eefbffe8216b3f9af9d3885265c01c/configparser-3.5.0.tar.gz") - depends_on('python@2.6:2.7,3.4:') + depends_on('python@2.6:2.8,3.4:') # This dependency breaks concretization # See https://github.com/LLNL/spack/issues/2793 diff --git a/var/spack/repos/builtin/packages/py-dill/package.py b/var/spack/repos/builtin/packages/py-dill/package.py index 5064a2fc477..7ef166feeb9 100644 --- a/var/spack/repos/builtin/packages/py-dill/package.py +++ b/var/spack/repos/builtin/packages/py-dill/package.py @@ -39,6 +39,6 @@ class PyDill(PythonPackage): version('0.2.1', 'b2354a5717da6228acae33cb13bc407b') version('0.2', '759002d9b71605cde2a7a052dad96b5d') - depends_on('python@2.5:2.999,3.1:') + depends_on('python@2.5:2.8,3.1:') depends_on('py-setuptools@0.6:', type='build') diff --git a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py index c8d89992c9c..7b3bfa5e49b 100644 --- a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py +++ b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py @@ -33,7 +33,7 @@ class PyEasybuildFramework(PythonPackage): version('3.1.2', '283bc5f6bdcb90016b32986d52fd04a8') - depends_on('python@2.6:2.9', type='run') + depends_on('python@2.6:2.8', type='run') depends_on('py-setuptools', type=('build', 'run')) depends_on('py-vsc-base@2.5.4:', when='@2.9:', type='run') depends_on('py-vsc-install', type='run') # only required for tests (python -O -m test.framework.suite) diff --git a/var/spack/repos/builtin/packages/py-enum34/package.py b/var/spack/repos/builtin/packages/py-enum34/package.py index 9c0bd646852..572734a895d 100644 --- a/var/spack/repos/builtin/packages/py-enum34/package.py +++ b/var/spack/repos/builtin/packages/py-enum34/package.py @@ -37,5 +37,5 @@ class PyEnum34(PythonPackage): # This dependency breaks concretization # See https://github.com/LLNL/spack/issues/2793 - # depends_on('py-ordereddict', when='^python@:2.6.999', type=('build', 'run')) # noqa + # depends_on('py-ordereddict', when='^python@:2.6', type=('build', 'run')) depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-flake8/package.py b/var/spack/repos/builtin/packages/py-flake8/package.py index 17d7cea3430..fdaed8c3945 100644 --- a/var/spack/repos/builtin/packages/py-flake8/package.py +++ b/var/spack/repos/builtin/packages/py-flake8/package.py @@ -59,8 +59,8 @@ class PyFlake8(PythonPackage): # These dependencies breaks concretization # See https://github.com/LLNL/spack/issues/2793 - # depends_on('py-configparser', when='^python@:3.3.999', type=('build', 'run')) # noqa - # depends_on('py-enum34', when='^python@:3.1.999', type=('build', 'run')) + # depends_on('py-configparser', when='^python@:3.3', type=('build', 'run')) + # depends_on('py-enum34', when='^python@:3.1', type=('build', 'run')) depends_on('py-configparser', type=('build', 'run')) depends_on('py-enum34', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-html5lib/package.py b/var/spack/repos/builtin/packages/py-html5lib/package.py index 1757b442979..9a8664fe43c 100644 --- a/var/spack/repos/builtin/packages/py-html5lib/package.py +++ b/var/spack/repos/builtin/packages/py-html5lib/package.py @@ -33,5 +33,5 @@ class PyHtml5lib(PythonPackage): version('0.9999999', 'ef43cb05e9e799f25d65d1135838a96f') - depends_on('python@2.6:2.7,3.2:3.4') + depends_on('python@2.6:2.8,3.2:3.4') depends_on('py-six', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ipdb/package.py b/var/spack/repos/builtin/packages/py-ipdb/package.py index a79ade5d004..67a9231ca53 100644 --- a/var/spack/repos/builtin/packages/py-ipdb/package.py +++ b/var/spack/repos/builtin/packages/py-ipdb/package.py @@ -39,7 +39,7 @@ class PyIpdb(PythonPackage): # this the original packager does not know what they are. See the 3rd party # section on ipdb's GitHub: # https://github.com/gotcha/ipdb#third-party-support - depends_on('python@2.6:2.7,3.2:') + depends_on('python@2.6:2.8,3.2:') # Dependencies gathered from: # https://github.com/gotcha/ipdb/blob/master/setup.py diff --git a/var/spack/repos/builtin/packages/py-ipykernel/package.py b/var/spack/repos/builtin/packages/py-ipykernel/package.py index 9c55abed7e8..ff68f09fff2 100644 --- a/var/spack/repos/builtin/packages/py-ipykernel/package.py +++ b/var/spack/repos/builtin/packages/py-ipykernel/package.py @@ -42,7 +42,7 @@ class PyIpykernel(PythonPackage): version('4.1.1', '51376850c46fb006e1f8d1cd353507c5') version('4.1.0', '638a43e4f8a15872f749090c3f0827b6') - depends_on('python@2.7:2.7.999,3.3:') + depends_on('python@2.7:2.8,3.3:') depends_on('py-traitlets@4.1.0:', type=('build', 'run')) depends_on('py-tornado@4.0:', type=('build', 'run')) depends_on('py-ipython@4.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ipython-genutils/package.py b/var/spack/repos/builtin/packages/py-ipython-genutils/package.py index 121d85acfa4..55496e1eb9f 100644 --- a/var/spack/repos/builtin/packages/py-ipython-genutils/package.py +++ b/var/spack/repos/builtin/packages/py-ipython-genutils/package.py @@ -33,4 +33,4 @@ class PyIpythonGenutils(PythonPackage): version('0.1.0', '9a8afbe0978adbcbfcb3b35b2d015a56') - depends_on('python@2.7:2.7.999,3.3:') + depends_on('python@2.7:2.8,3.3:') diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py index 57095649b45..f559c163aba 100644 --- a/var/spack/repos/builtin/packages/py-ipython/package.py +++ b/var/spack/repos/builtin/packages/py-ipython/package.py @@ -41,8 +41,8 @@ class PyIpython(PythonPackage): # These dependencies breaks concretization # See https://github.com/LLNL/spack/issues/2793 - # depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run'), when="^python@:3.2.999") # noqa - # depends_on('py-pathlib2', type=('build', 'run'), when="^python@:3.3.999") + # depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run'), when="^python@:3.2") # noqa + # depends_on('py-pathlib2', type=('build', 'run'), when="^python@:3.3") depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run')) depends_on('py-pathlib2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ipywidgets/package.py b/var/spack/repos/builtin/packages/py-ipywidgets/package.py index bf31a48df86..03b0c8bfcff 100644 --- a/var/spack/repos/builtin/packages/py-ipywidgets/package.py +++ b/var/spack/repos/builtin/packages/py-ipywidgets/package.py @@ -33,7 +33,7 @@ class PyIpywidgets(PythonPackage): version('5.2.2', '112f3daa4aa0f42f8dda831cea3649c8') - depends_on('python@2.7:2.7.999,3.3:') + depends_on('python@2.7:2.8,3.3:') depends_on('py-ipython@4.0.0:', type=('build', 'run')) depends_on('py-ipykernel@4.2.2:', type=('build', 'run')) depends_on('py-traitlets@4.2.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyter-client/package.py b/var/spack/repos/builtin/packages/py-jupyter-client/package.py index 4d36ffb6eff..2d89616afde 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-client/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-client/package.py @@ -40,7 +40,7 @@ class PyJupyterClient(PythonPackage): version('4.1.0', 'cf42048b889c8434fbb5813a9eec1d34') version('4.0.0', '00fa63c67cb3adf359d09dc4d803aff5') - depends_on('python@2.7:2.7.999,3.3:') + depends_on('python@2.7:2.8,3.3:') depends_on('py-traitlets', type=('build', 'run')) depends_on('py-jupyter-core', type=('build', 'run')) depends_on('py-zmq@13:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyter-console/package.py b/var/spack/repos/builtin/packages/py-jupyter-console/package.py index 2932af70187..6ed49b72c9e 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-console/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-console/package.py @@ -37,7 +37,7 @@ class PyJupyterConsole(PythonPackage): version('4.0.3', '0e928ea261e7f8154698cf69ed4f2459') version('4.0.2', 'f2e174938c91136549b908bd39fa5d59') - depends_on('python@2.7:2.7.999,3.3:') + depends_on('python@2.7:2.8,3.3:') depends_on('py-jupyter-client', type=('build', 'run')) depends_on('py-ipython', type=('build', 'run')) depends_on('py-ipykernel', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyter-core/package.py b/var/spack/repos/builtin/packages/py-jupyter-core/package.py index 4fb4ec31ea9..a3d2bee1a90 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-core/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-core/package.py @@ -42,5 +42,5 @@ class PyJupyterCore(PythonPackage): version('4.0.1', 'f849136b2badaaba2a8a3b397bf04639') version('4.0', 'b6b37cb4f40bd0fcd20433cb2cc7a4c1') - depends_on('python@2.7:2.7.999,3.3:') + depends_on('python@2.7:2.8,3.3:') depends_on('py-traitlets', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py b/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py index f375bc2b2cf..b82f8b2787f 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py @@ -44,7 +44,7 @@ class PyJupyterNotebook(PythonPackage): variant('terminal', default=False, description="Enable terminal functionality") - depends_on('python@2.7:2.7.999,3.3:') + depends_on('python@2.7:2.8,3.3:') depends_on('npm', type='build') depends_on('node-js', type=('build', 'run')) depends_on('py-jinja2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-nbconvert/package.py b/var/spack/repos/builtin/packages/py-nbconvert/package.py index 7114b676a74..27a8259c298 100644 --- a/var/spack/repos/builtin/packages/py-nbconvert/package.py +++ b/var/spack/repos/builtin/packages/py-nbconvert/package.py @@ -37,7 +37,7 @@ class PyNbconvert(PythonPackage): version('4.0.0', '9661620b1e10a7b46f314588d2d0932f') depends_on('py-pycurl', type='build') - depends_on('python@2.7:2.7.999,3.3:') + depends_on('python@2.7:2.8,3.3:') depends_on('py-mistune', type=('build', 'run')) depends_on('py-jinja2', type=('build', 'run')) depends_on('py-pygments', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pathlib2/package.py b/var/spack/repos/builtin/packages/py-pathlib2/package.py index 8951feff4c1..5cfc66e8712 100644 --- a/var/spack/repos/builtin/packages/py-pathlib2/package.py +++ b/var/spack/repos/builtin/packages/py-pathlib2/package.py @@ -34,4 +34,4 @@ class PyPathlib2(PythonPackage): version('2.1.0', '38e4f58b4d69dfcb9edb49a54a8b28d2') depends_on('py-setuptools', type='build') - depends_on('python@:3.3.999') + depends_on('python@:3.3') diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index 234601a8ee8..616884ea0d0 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -33,7 +33,7 @@ class PyPip(PythonPackage): version('9.0.1', '35f01da33009719497f01a4ba69d63c9') - depends_on('python@2.6:2.7,3.3:') + depends_on('python@2.6:2.8,3.3:') # Most Python packages only require setuptools as a build dependency. # However, pip requires setuptools during runtime as well. diff --git a/var/spack/repos/builtin/packages/py-readme-renderer/package.py b/var/spack/repos/builtin/packages/py-readme-renderer/package.py index 2abe4bac74e..19fd0c3810e 100644 --- a/var/spack/repos/builtin/packages/py-readme-renderer/package.py +++ b/var/spack/repos/builtin/packages/py-readme-renderer/package.py @@ -34,7 +34,7 @@ class PyReadmeRenderer(PythonPackage): version('16.0', '70321cea986956bcf2deef9981569f39') - depends_on('python@2.6:2.7,3.2:3.3') + depends_on('python@2.6:2.8,3.2:3.3') depends_on('py-setuptools', type='build') depends_on('py-bleach', type=('build', 'run')) depends_on('py-docutils@0.13.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-restview/package.py b/var/spack/repos/builtin/packages/py-restview/package.py index 87f65b842ae..2105224aea8 100644 --- a/var/spack/repos/builtin/packages/py-restview/package.py +++ b/var/spack/repos/builtin/packages/py-restview/package.py @@ -33,8 +33,8 @@ class PyRestview(PythonPackage): version('2.6.1', 'ac8b70e15b8f1732d1733d674813666b') + depends_on('python@2.7:2.8,3.3:3.5') depends_on('py-setuptools', type='build') - depends_on('python@2.7.0:2.7.999,3.3:3.5') depends_on('py-docutils@0.13.1:', type=('build', 'run')) depends_on('py-readme-renderer', type=('build', 'run')) depends_on('py-pygments', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py index 844453944a4..d3221a9eecf 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -36,7 +36,7 @@ class PyScikitLearn(PythonPackage): version('0.16.1', '363ddda501e3b6b61726aa40b8dbdb7e') version('0.17.1', 'a2f8b877e6d99b1ed737144f5a478dfc') - depends_on('python@2.6:2.7,3.3:') + depends_on('python@2.6:2.8,3.3:') depends_on('py-setuptools', type='build') depends_on('py-numpy@1.6.1:', type=('build', 'run')) depends_on('py-scipy@0.9:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 6caccd63a45..c6bbfda35c5 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -47,9 +47,7 @@ class PySetuptools(PythonPackage): version('16.0', '0ace0b96233516fc5f7c857d086aa3ad') version('11.3.1', '01f69212e019a2420c1693fb43593930') - # FIXME: when we use 2.6:2.7, spack spec llvm tries to install non-existing - # python@2.7 instead of python@2.7.13 - depends_on('python@2.6:2.7.99,3.3:') + depends_on('python@2.6:2.8,3.3:') # Previously, setuptools vendored all of its dependencies to allow # easy bootstrapping. As of version 34.0.0, this is no longer done diff --git a/var/spack/repos/builtin/packages/py-singledispatch/package.py b/var/spack/repos/builtin/packages/py-singledispatch/package.py index 6fa4d9b1bd2..999cfde8252 100644 --- a/var/spack/repos/builtin/packages/py-singledispatch/package.py +++ b/var/spack/repos/builtin/packages/py-singledispatch/package.py @@ -38,4 +38,4 @@ class PySingledispatch(PythonPackage): # This dependency breaks concretization # See https://github.com/LLNL/spack/issues/2793 - # depends_on('py-ordereddict', when="^python@:2.6.999", type=('build', 'run')) # noqa + # depends_on('py-ordereddict', when="^python@:2.6", type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-symfit/package.py b/var/spack/repos/builtin/packages/py-symfit/package.py index 9355288bcb8..98c2e93c664 100644 --- a/var/spack/repos/builtin/packages/py-symfit/package.py +++ b/var/spack/repos/builtin/packages/py-symfit/package.py @@ -38,4 +38,4 @@ class PySymfit(PythonPackage): depends_on('py-numpy', type='run') depends_on('py-scipy', type='run') depends_on('py-sympy', type='run') - depends_on('py-funcsigs', type='run', when='^python@:2.7.999') + depends_on('py-funcsigs', type='run', when='^python@:2.8') diff --git a/var/spack/repos/builtin/packages/py-tappy/package.py b/var/spack/repos/builtin/packages/py-tappy/package.py index 22bc15392fc..840d88e869d 100644 --- a/var/spack/repos/builtin/packages/py-tappy/package.py +++ b/var/spack/repos/builtin/packages/py-tappy/package.py @@ -35,7 +35,7 @@ class PyTappy(PythonPackage): extends('python', ignore='bin/nosetests|bin/pygmentize') - depends_on('python@2.6:2.7,3.2:3.4') + depends_on('python@2.6:2.8,3.2:3.4') depends_on('py-nose', type=('build', 'run')) depends_on('py-pygments', type=('build', 'run')) depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py index 916263bda6d..57864e307ae 100644 --- a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py +++ b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py @@ -34,5 +34,5 @@ class PyWidgetsnbextension(PythonPackage): version('1.2.6', '0aa4e152c9ba2d704389dc2453f448c7') depends_on('py-setuptools', type='build') - depends_on('python@2.7:2.7.999,3.3:') + depends_on('python@2.7:2.8,3.3:') depends_on('py-jupyter-notebook@4.2.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-xmlrunner/package.py b/var/spack/repos/builtin/packages/py-xmlrunner/package.py index 93af57fe201..90978830be7 100644 --- a/var/spack/repos/builtin/packages/py-xmlrunner/package.py +++ b/var/spack/repos/builtin/packages/py-xmlrunner/package.py @@ -34,4 +34,4 @@ class PyXmlrunner(PythonPackage): version('1.7.7', '7b0b152ed2d278516aedbc0cac22dfb3') depends_on('py-setuptools', type='build') - depends_on('py-unittest2', type=('build', 'run'), when='^python@:2.7') + depends_on('py-unittest2', type=('build', 'run'), when='^python@:2.8') diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index d76c9bebb12..bc21aa90cc5 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -69,7 +69,7 @@ class PyYt(PythonPackage): depends_on("py-setuptools", type=('build', 'run')) depends_on("py-sympy", type=('build', 'run')) depends_on("rockstar@yt", type=('build', 'run'), when="+rockstar") - depends_on("python @2.7:2.999,3.4:") + depends_on("python@2.7:2.8,3.4:") @run_before('install') def prep_yt(self): diff --git a/var/spack/repos/builtin/packages/shiny-server/package.py b/var/spack/repos/builtin/packages/shiny-server/package.py index 941921c795d..e8a899115f3 100644 --- a/var/spack/repos/builtin/packages/shiny-server/package.py +++ b/var/spack/repos/builtin/packages/shiny-server/package.py @@ -44,7 +44,7 @@ class ShinyServer(CMakePackage): version('1.5.3.838', '96f20fdcdd94c9e9bb851baccb82b97f') - depends_on('python@:2.9.99') # docs say: "Really. 3.x will not work" + depends_on('python@:2.8') # docs say: "Really. 3.x will not work" depends_on('cmake@2.8.10:') depends_on('git') depends_on('r+X') diff --git a/var/spack/repos/builtin/packages/simulationio/package.py b/var/spack/repos/builtin/packages/simulationio/package.py index a42ad92528a..5ac31f58587 100644 --- a/var/spack/repos/builtin/packages/simulationio/package.py +++ b/var/spack/repos/builtin/packages/simulationio/package.py @@ -29,7 +29,7 @@ class Simulationio(CMakePackage): """SimulationIO: Efficient and convenient I/O for large PDE simulations""" homepage = "https://github.com/eschnett/SimulationIO" - url= "https://github.com/eschnett/SimulationIO/archive/version/0.1.0.tar.gz" + url = "https://github.com/eschnett/SimulationIO/archive/version/0.1.0.tar.gz" version('1.0.0', '5cbf1d0084eb436d861ffcdd297eaa08') version('0.1.0', '00f7dabc08ed1ab77858785ce0809f50') @@ -45,7 +45,7 @@ class Simulationio(CMakePackage): depends_on('julia', when='+julia', type=('build', 'run')) depends_on('py-h5py', when='+python', type=('build', 'run')) depends_on('py-numpy', when='+python', type=('build', 'run')) - depends_on('python@2.7.0:2.999.999', when='+python', type=('build', 'run')) + depends_on('python@2.7:2.8', when='+python', type=('build', 'run')) depends_on('swig', type='build') extends('python') diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 9400023327d..70db52ba2b7 100644 --- a/var/spack/repos/builtin/packages/slepc/package.py +++ b/var/spack/repos/builtin/packages/slepc/package.py @@ -42,7 +42,7 @@ class Slepc(Package): variant('arpack', default=True, description='Enables Arpack wrappers') # NOTE: make sure PETSc and SLEPc use the same python. - depends_on('python@2.6:2.7', type='build') + depends_on('python@2.6:2.8', type='build') depends_on('petsc@3.7:', when='@3.7.1:') depends_on('petsc@3.6.3:3.6.4', when='@3.6.2:3.6.3') depends_on('arpack-ng~mpi', when='+arpack^petsc~mpi~int64') From 3b52d0a8833bd577e63bbf3a9b97559f5a39b7f4 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sun, 23 Apr 2017 03:06:27 +0200 Subject: [PATCH 0717/2394] External packages are now registered in the DB (#1167) * treats correctly a change from `explicit=False` to `explicit=True` in an external package DB entry. * added unit tests * fixed issues raised by @tgamblin . In particular the PR is no more hash-changing for packages that are not external. * added a test to check correctness of a spec/yaml round-trip for things that involve an external * Don't find external module path at each step of concretization * it's not necessary.. The paths are retrieved at the end of concretizaion * Don't find replacements for external packages. * Test root of the DAG if external * No reason not to test if the root of the DAG is external when external packages are now first class citizens! * Create `external` property for Spec (for external_path and external_module) * Allow users to specify external package paths relative to spack * Canonicalize external package paths so that users may specify their locations relative to spack's directory. * Update tests to use new external_path and external properly. * skip license hooks on external --- lib/spack/spack/build_environment.py | 5 +- lib/spack/spack/concretize.py | 2 +- lib/spack/spack/database.py | 68 +++++++++++++-- lib/spack/spack/directory_layout.py | 2 +- lib/spack/spack/hooks/licensing.py | 4 +- lib/spack/spack/hooks/sbang.py | 8 +- lib/spack/spack/package.py | 84 +++++++++++++++---- lib/spack/spack/package_prefs.py | 10 +-- lib/spack/spack/spec.py | 47 +++++++++-- lib/spack/spack/test/cmd/uninstall.py | 2 +- lib/spack/spack/test/concretize.py | 6 +- .../spack/test/concretize_preferences.py | 2 +- lib/spack/spack/test/conftest.py | 2 + lib/spack/spack/test/database.py | 35 ++++++-- lib/spack/spack/test/spec_yaml.py | 10 +++ 15 files changed, 230 insertions(+), 57 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 4a8487daabd..06ac65f552e 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -465,7 +465,10 @@ def parent_class_modules(cls): def load_external_modules(pkg): - """ traverse the spec list and find any specs that have external modules. + """Traverse the spec list associated with a package + and find any specs that have external modules. + + :param pkg: package under consideration """ for dep in list(pkg.spec.traverse()): if dep.external_module: diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 2a5ce65fa41..0b29d2874e8 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -99,7 +99,7 @@ def _valid_virtuals_and_externals(self, spec): # Use a sort key to order the results return sorted(usable, key=lambda spec: ( - not (spec.external or spec.external_module), # prefer externals + not spec.external, # prefer externals pref_key(spec), # respect prefs spec.name, # group by name reverse_order(spec.versions), # latest version diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 3cb8ced3421..33eb7bea4c5 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -67,9 +67,9 @@ _db_dirname = '.spack-db' # DB version. This is stuck in the DB file to track changes in format. -_db_version = Version('0.9.2') +_db_version = Version('0.9.3') -# Default timeout for spack database locks is 5 min. +# Timeout for spack database locks in seconds _db_lock_timeout = 60 # Types of dependencies tracked by the database @@ -409,24 +409,40 @@ def _read_suppress_error(): self._data = {} transaction = WriteTransaction( - self.lock, _read_suppress_error, self._write, _db_lock_timeout) + self.lock, _read_suppress_error, self._write, _db_lock_timeout + ) with transaction: if self._error: tty.warn( "Spack database was corrupt. Will rebuild. Error was:", - str(self._error)) + str(self._error) + ) self._error = None + # Read first the `spec.yaml` files in the prefixes. They should be + # considered authoritative with respect to DB reindexing, as + # entries in the DB may be corrupted in a way that still makes + # them readable. If we considered DB entries authoritative + # instead, we would perpetuate errors over a reindex. + old_data = self._data try: + # Initialize data in the reconstructed DB self._data = {} - # Ask the directory layout to traverse the filesystem. + # Start inspecting the installed prefixes + processed_specs = set() + for spec in directory_layout.all_specs(): # Try to recover explicit value from old DB, but - # default it to False if DB was corrupt. - explicit = False + # default it to True if DB was corrupt. This is + # just to be conservative in case a command like + # "autoremove" is run by the user after a reindex. + tty.debug( + 'RECONSTRUCTING FROM SPEC.YAML: {0}'.format(spec) + ) + explicit = True if old_data is not None: old_info = old_data.get(spec.dag_hash()) if old_info is not None: @@ -434,6 +450,42 @@ def _read_suppress_error(): self._add(spec, directory_layout, explicit=explicit) + processed_specs.add(spec) + + for key, entry in old_data.items(): + # We already took care of this spec using + # `spec.yaml` from its prefix. + if entry.spec in processed_specs: + msg = 'SKIPPING RECONSTRUCTION FROM OLD DB: {0}' + msg += ' [already reconstructed from spec.yaml]' + tty.debug(msg.format(entry.spec)) + continue + + # If we arrived here it very likely means that + # we have external specs that are not dependencies + # of other specs. This may be the case for externally + # installed compilers or externally installed + # applications. + tty.debug( + 'RECONSTRUCTING FROM OLD DB: {0}'.format(entry.spec) + ) + try: + layout = spack.store.layout + if entry.spec.external: + layout = None + kwargs = { + 'spec': entry.spec, + 'directory_layout': layout, + 'explicit': entry.explicit + } + self._add(**kwargs) + processed_specs.add(entry.spec) + except Exception as e: + # Something went wrong, so the spec was not restored + # from old data + tty.debug(e.message) + pass + self._check_ref_counts() except: @@ -542,7 +594,7 @@ def _add(self, spec, directory_layout=None, explicit=False): key = spec.dag_hash() if key not in self._data: - installed = False + installed = bool(spec.external) path = None if not spec.external and directory_layout: path = directory_layout.path_for_spec(spec) diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index 9d098754848..e7c9d6c5907 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -193,7 +193,7 @@ def relative_path_for_spec(self, spec): _check_concrete(spec) if spec.external: - return spec.external + return spec.external_path path = spec.format(self.path_scheme) return path diff --git a/lib/spack/spack/hooks/licensing.py b/lib/spack/spack/hooks/licensing.py index a99099749c9..9a244dbdef7 100644 --- a/lib/spack/spack/hooks/licensing.py +++ b/lib/spack/spack/hooks/licensing.py @@ -31,7 +31,7 @@ def pre_install(pkg): """This hook handles global license setup for licensed software.""" - if pkg.license_required: + if pkg.license_required and not pkg.spec.external: set_up_license(pkg) @@ -145,7 +145,7 @@ def write_license_file(pkg, license_path): def post_install(pkg): """This hook symlinks local licenses to the global license for licensed software.""" - if pkg.license_required: + if pkg.license_required and not pkg.spec.external: symlink_license(pkg) diff --git a/lib/spack/spack/hooks/sbang.py b/lib/spack/spack/hooks/sbang.py index 6f9736a018f..fb824470e2d 100644 --- a/lib/spack/spack/hooks/sbang.py +++ b/lib/spack/spack/hooks/sbang.py @@ -104,8 +104,12 @@ def filter_shebangs_in_directory(directory, filenames=None): def post_install(pkg): """This hook edits scripts so that they call /bin/bash - $spack_prefix/bin/sbang instead of something longer than the - shebang limit.""" + $spack_prefix/bin/sbang instead of something longer than the + shebang limit. + """ + if pkg.spec.external: + tty.debug('SKIP: shebang filtering [external package]') + return for directory, _, filenames in os.walk(pkg.prefix): filter_shebangs_in_directory(directory, filenames) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 04029265908..bc479c9cf59 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1081,6 +1081,51 @@ def _stage_and_write_lock(self): with spack.store.db.prefix_write_lock(self.spec): yield + def _process_external_package(self, explicit): + """Helper function to process external packages. It runs post install + hooks and registers the package in the DB. + + :param bool explicit: True if the package was requested explicitly by + the user, False if it was pulled in as a dependency of an explicit + package. + """ + if self.spec.external_module: + message = '{s.name}@{s.version} : has external module in {module}' + tty.msg(message.format(s=self, module=self.spec.external_module)) + message = '{s.name}@{s.version} : is actually installed in {path}' + tty.msg(message.format(s=self, path=self.spec.external_path)) + else: + message = '{s.name}@{s.version} : externally installed in {path}' + tty.msg(message.format(s=self, path=self.spec.external_path)) + try: + # Check if the package was already registered in the DB + # If this is the case, then just exit + rec = spack.store.db.get_record(self.spec) + message = '{s.name}@{s.version} : already registered in DB' + tty.msg(message.format(s=self)) + # Update the value of rec.explicit if it is necessary + self._update_explicit_entry_in_db(rec, explicit) + + except KeyError: + # If not register it and generate the module file + # For external packages we just need to run + # post-install hooks to generate module files + message = '{s.name}@{s.version} : generating module file' + tty.msg(message.format(s=self)) + spack.hooks.post_install(self) + # Add to the DB + message = '{s.name}@{s.version} : registering into DB' + tty.msg(message.format(s=self)) + spack.store.db.add(self.spec, None, explicit=explicit) + + def _update_explicit_entry_in_db(self, rec, explicit): + if explicit and not rec.explicit: + with spack.store.db.write_transaction(): + rec = spack.store.db.get_record(self.spec) + rec.explicit = True + message = '{s.name}@{s.version} : marking the package explicit' + tty.msg(message.format(s=self)) + def do_install(self, keep_prefix=False, keep_stage=False, @@ -1121,11 +1166,10 @@ def do_install(self, raise ValueError("Can only install concrete packages: %s." % self.spec.name) - # No installation needed if package is external + # For external packages the workflow is simplified, and basically + # consists in module file generation and registration in the DB if self.spec.external: - tty.msg("%s is externally installed in %s" % - (self.name, self.spec.external)) - return + return self._process_external_package(explicit) # Ensure package is not already installed layout = spack.store.layout @@ -1135,14 +1179,10 @@ def do_install(self, tty.msg( "Continuing from partial install of %s" % self.name) elif layout.check_installed(self.spec): - tty.msg( - "%s is already installed in %s" % (self.name, self.prefix)) + msg = '{0.name} is already installed in {0.prefix}' + tty.msg(msg.format(self)) rec = spack.store.db.get_record(self.spec) - if (not rec.explicit) and explicit: - with spack.store.db.write_transaction(): - rec = spack.store.db.get_record(self.spec) - rec.explicit = True - return + return self._update_explicit_entry_in_db(rec, explicit) # Dirty argument takes precedence over dirty config setting. if dirty is None: @@ -1150,10 +1190,9 @@ def do_install(self, self._do_install_pop_kwargs(kwargs) - tty.msg("Installing %s" % self.name) - # First, install dependencies recursively. if install_deps: + tty.debug('Installing {0} dependencies'.format(self.name)) for dep in self.spec.dependencies(): dep.package.do_install( keep_prefix=keep_prefix, @@ -1168,6 +1207,8 @@ def do_install(self, **kwargs ) + tty.msg('Installing %s' % self.name) + # Set run_tests flag before starting build. self.run_tests = run_tests @@ -1265,7 +1306,7 @@ def build_process(input_stream): # Fork a child to do the actual installation spack.build_environment.fork(self, build_process, dirty=dirty) # If we installed then we should keep the prefix - keep_prefix = True if self.last_phase is None else keep_prefix + keep_prefix = self.last_phase is None or keep_prefix # note: PARENT of the build process adds the new package to # the database, so that we don't need to re-read from file. spack.store.db.add( @@ -1490,12 +1531,19 @@ def uninstall_by_spec(spec, force=False): spack.hooks.pre_uninstall(pkg) # Uninstalling in Spack only requires removing the prefix. - spack.store.layout.remove_install_directory(spec) + if not spec.external: + msg = 'Deleting package prefix [{0}]' + tty.debug(msg.format(spec.short_spec)) + spack.store.layout.remove_install_directory(spec) + # Delete DB entry + msg = 'Deleting DB entry [{0}]' + tty.debug(msg.format(spec.short_spec)) spack.store.db.remove(spec) + tty.msg("Successfully uninstalled %s" % spec.short_spec) - # TODO: refactor hooks to use specs, not packages. - if pkg is not None: - spack.hooks.post_uninstall(pkg) + # TODO: refactor hooks to use specs, not packages. + if pkg is not None: + spack.hooks.post_uninstall(pkg) tty.msg("Successfully uninstalled %s" % spec.short_spec) diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py index f9dac2bef05..8b1fe08154c 100644 --- a/lib/spack/spack/package_prefs.py +++ b/lib/spack/spack/package_prefs.py @@ -29,6 +29,7 @@ import spack import spack.error +from spack.util.path import canonicalize_path from spack.version import * @@ -199,7 +200,7 @@ def spec_externals(spec): """Return a list of external specs (w/external directory path filled in), one for each known external installation.""" # break circular import. - from spack.build_environment import get_path_from_module + from spack.build_environment import get_path_from_module # noqa: F401 allpkgs = get_packages_config() name = spec.name @@ -215,7 +216,8 @@ def spec_externals(spec): # skip entries without paths (avoid creating extra Specs) continue - external_spec = spack.spec.Spec(external_spec, external=path) + external_spec = spack.spec.Spec(external_spec, + external_path=canonicalize_path(path)) if external_spec.satisfies(spec): external_specs.append(external_spec) @@ -223,10 +225,8 @@ def spec_externals(spec): if not module: continue - path = get_path_from_module(module) - external_spec = spack.spec.Spec( - external_spec, external=path, external_module=module) + external_spec, external_module=module) if external_spec.satisfies(spec): external_specs.append(external_spec) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index b4170a0f7a7..3d067e083fe 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -954,7 +954,7 @@ def __init__(self, spec_like, *dep_like, **kwargs): self._concrete = kwargs.get('concrete', False) # Allow a spec to be constructed with an external path. - self.external = kwargs.get('external', None) + self.external_path = kwargs.get('external_path', None) self.external_module = kwargs.get('external_module', None) # This allows users to construct a spec DAG with literals. @@ -976,6 +976,10 @@ def __init__(self, spec_like, *dep_like, **kwargs): self._add_dependency(spec, deptypes) deptypes = () + @property + def external(self): + return bool(self.external_path) or bool(self.external_module) + def get_dependency(self, name): dep = self._dependencies.get(name) if dep is not None: @@ -1349,6 +1353,12 @@ def to_node_dict(self): if params: d['parameters'] = params + if self.external: + d['external'] = { + 'path': self.external_path, + 'module': bool(self.external_module) + } + # TODO: restore build dependencies here once we have less picky # TODO: concretization. deps = self.dependencies_dict(deptype=('link', 'run')) @@ -1412,6 +1422,22 @@ def from_node_dict(node): for name in FlagMap.valid_compiler_flags(): spec.compiler_flags[name] = [] + if 'external' in node: + spec.external_path = None + spec.external_module = None + # This conditional is needed because sometimes this function is + # called with a node already constructed that contains a 'versions' + # and 'external' field. Related to virtual packages provider + # indexes. + if node['external']: + spec.external_path = node['external']['path'] + spec.external_module = node['external']['module'] + if spec.external_module is False: + spec.external_module = None + else: + spec.external_path = None + spec.external_module = None + # Don't read dependencies here; from_node_dict() is used by # from_yaml() to read the root *and* each dependency spec. @@ -1578,6 +1604,8 @@ def _expand_virtual_packages(self): done = True for spec in list(self.traverse()): replacement = None + if spec.external: + continue if spec.virtual: replacement = self._find_provider(spec, self_index) if replacement: @@ -1614,7 +1642,7 @@ def _expand_virtual_packages(self): continue # If replacement is external then trim the dependencies - if replacement.external or replacement.external_module: + if replacement.external: if (spec._dependencies): changed = True spec._dependencies = DependencyMap() @@ -1632,7 +1660,8 @@ def feq(cfield, sfield): feq(replacement.architecture, spec.architecture) and feq(replacement._dependencies, spec._dependencies) and feq(replacement.variants, spec.variants) and - feq(replacement.external, spec.external) and + feq(replacement.external_path, + spec.external_path) and feq(replacement.external_module, spec.external_module)): continue @@ -1691,14 +1720,14 @@ def concretize(self): if s.namespace is None: s.namespace = spack.repo.repo_for_pkg(s.name).namespace - for s in self.traverse(root=False): + for s in self.traverse(): if s.external_module: compiler = spack.compilers.compiler_for_spec( s.compiler, s.architecture) for mod in compiler.modules: load_module(mod) - s.external = get_path_from_module(s.external_module) + s.external_path = get_path_from_module(s.external_module) # Mark everything in the spec as concrete, as well. self._mark_concrete() @@ -1919,7 +1948,7 @@ def _normalize_helper(self, visited, spec_deps, provider_index): # if we descend into a virtual spec, there's nothing more # to normalize. Concretize will finish resolving it later. - if self.virtual or self.external or self.external_module: + if self.virtual or self.external: return False # Combine constraints from package deps with constraints from @@ -2325,7 +2354,7 @@ def _dup(self, other, deps=True, cleardeps=True): self.variants != other.variants and self._normal != other._normal and self.concrete != other.concrete and - self.external != other.external and + self.external_path != other.external_path and self.external_module != other.external_module and self.compiler_flags != other.compiler_flags) @@ -2341,7 +2370,7 @@ def _dup(self, other, deps=True, cleardeps=True): self.compiler_flags = other.compiler_flags.copy() self.variants = other.variants.copy() self.variants.spec = self - self.external = other.external + self.external_path = other.external_path self.external_module = other.external_module self.namespace = other.namespace @@ -2988,7 +3017,7 @@ def spec(self, name): spec.variants = VariantMap(spec) spec.architecture = None spec.compiler = None - spec.external = None + spec.external_path = None spec.external_module = None spec.compiler_flags = FlagMap(spec) spec._dependents = DependencyMap() diff --git a/lib/spack/spack/test/cmd/uninstall.py b/lib/spack/spack/test/cmd/uninstall.py index bfbb9b81487..5765f4613d9 100644 --- a/lib/spack/spack/test/cmd/uninstall.py +++ b/lib/spack/spack/test/cmd/uninstall.py @@ -53,7 +53,7 @@ def test_uninstall(database): uninstall(parser, args) all_specs = spack.store.layout.all_specs() - assert len(all_specs) == 7 + assert len(all_specs) == 8 # query specs with multiple configurations mpileaks_specs = [s for s in all_specs if s.satisfies('mpileaks')] callpath_specs = [s for s in all_specs if s.satisfies('callpath')] diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 3b383584ce1..20630881845 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -293,7 +293,7 @@ def test_compiler_inheritance(self): def test_external_package(self): spec = Spec('externaltool%gcc') spec.concretize() - assert spec['externaltool'].external == '/path/to/external_tool' + assert spec['externaltool'].external_path == '/path/to/external_tool' assert 'externalprereq' not in spec assert spec['externaltool'].compiler.satisfies('gcc') @@ -322,8 +322,8 @@ def test_nobuild_package(self): def test_external_and_virtual(self): spec = Spec('externaltest') spec.concretize() - assert spec['externaltool'].external == '/path/to/external_tool' - assert spec['stuff'].external == '/path/to/external_virtual_gcc' + assert spec['externaltool'].external_path == '/path/to/external_tool' + assert spec['stuff'].external_path == '/path/to/external_virtual_gcc' assert spec['externaltool'].compiler.satisfies('gcc') assert spec['stuff'].compiler.satisfies('gcc') diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py index bf915064b27..0b9f7a0046d 100644 --- a/lib/spack/spack/test/concretize_preferences.py +++ b/lib/spack/spack/test/concretize_preferences.py @@ -170,4 +170,4 @@ def test_external_mpi(self): # ensure that once config is in place, external is used spec = Spec('mpi') spec.concretize() - assert spec['mpich'].external == '/dummy/path' + assert spec['mpich'].external_path == '/dummy/path' diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index 796d95a0cfe..120425794f3 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -252,6 +252,7 @@ def _refresh(): _install('mpileaks ^mpich') _install('mpileaks ^mpich2') _install('mpileaks ^zmpi') + _install('externaltest') t = Database( real=real, @@ -265,6 +266,7 @@ def _refresh(): t.install('mpileaks ^mpich') t.install('mpileaks ^mpich2') t.install('mpileaks ^zmpi') + t.install('externaltest') yield t diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index 0d7999cd367..a4b35e1df70 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -86,11 +86,17 @@ def _check_merkleiness(): def _check_db_sanity(install_db): """Utiilty function to check db against install layout.""" - expected = sorted(spack.store.layout.all_specs()) + pkg_in_layout = sorted(spack.store.layout.all_specs()) actual = sorted(install_db.query()) - assert len(expected) == len(actual) - for e, a in zip(expected, actual): + externals = sorted([x for x in actual if x.external]) + nexpected = len(pkg_in_layout) + len(externals) + + assert nexpected == len(actual) + + non_external_in_db = sorted([x for x in actual if not x.external]) + + for e, a in zip(pkg_in_layout, non_external_in_db): assert e == a _check_merkleiness() @@ -127,7 +133,7 @@ def test_005_db_exists(database): def test_010_all_install_sanity(database): """Ensure that the install layout reflects what we think it does.""" all_specs = spack.store.layout.all_specs() - assert len(all_specs) == 13 + assert len(all_specs) == 14 # Query specs with multiple configurations mpileaks_specs = [s for s in all_specs if s.satisfies('mpileaks')] @@ -207,7 +213,7 @@ def test_050_basic_query(database): """Ensure querying database is consistent with what is installed.""" install_db = database.mock.db # query everything - assert len(spack.store.db.query()) == 13 + assert len(spack.store.db.query()) == 16 # query specs with multiple configurations mpileaks_specs = install_db.query('mpileaks') @@ -365,3 +371,22 @@ def fail_while_writing(): # reload DB and make sure cmake was not written. with install_db.read_transaction(): assert install_db.query('cmake', installed=any) == [] + + +def test_external_entries_in_db(database): + install_db = database.mock.db + + rec = install_db.get_record('mpileaks ^zmpi') + assert rec.spec.external_path is None + assert rec.spec.external_module is None + + rec = install_db.get_record('externaltool') + assert rec.spec.external_path == '/path/to/external_tool' + assert rec.spec.external_module is None + assert rec.explicit is False + + rec.spec.package.do_install(fake=True, explicit=True) + rec = install_db.get_record('externaltool') + assert rec.spec.external_path == '/path/to/external_tool' + assert rec.spec.external_module is None + assert rec.explicit is True diff --git a/lib/spack/spack/test/spec_yaml.py b/lib/spack/spack/test/spec_yaml.py index 0bcd2de3cf2..adf262a60e9 100644 --- a/lib/spack/spack/test/spec_yaml.py +++ b/lib/spack/spack/test/spec_yaml.py @@ -52,6 +52,16 @@ def test_normal_spec(builtin_mock): check_yaml_round_trip(spec) +def test_external_spec(config, builtin_mock): + spec = Spec('externaltool') + spec.concretize() + check_yaml_round_trip(spec) + + spec = Spec('externaltest') + spec.concretize() + check_yaml_round_trip(spec) + + def test_ambiguous_version_spec(builtin_mock): spec = Spec('mpileaks@1.0:5.0,6.1,7.3+debug~opt') spec.normalize() From 980ffcdcec3c8e8b5d3ec546aae2fcac4b5cff9f Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Sun, 23 Apr 2017 22:55:51 +1000 Subject: [PATCH 0718/2394] eccodes: new package for encoding and decoding meteorological data (#3900) * eccodes: new package for encoding and decoding meteorological data * eccodes: remove line breaks from package docstring * eccodes: simplify names of variants * eccodes: give a description for each variant * eccodes: use succinct code for cmake_args * eccodes: found extra dependency for python variant * eccodes: add URL for a list of available releases --- .../repos/builtin/packages/eccodes/package.py | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 var/spack/repos/builtin/packages/eccodes/package.py diff --git a/var/spack/repos/builtin/packages/eccodes/package.py b/var/spack/repos/builtin/packages/eccodes/package.py new file mode 100644 index 00000000000..709315e4b4c --- /dev/null +++ b/var/spack/repos/builtin/packages/eccodes/package.py @@ -0,0 +1,67 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class Eccodes(CMakePackage): + """ecCodes is a package developed by ECMWF for processing meteorological + data in GRIB (1/2), BUFR (3/4) and GTS header formats.""" + + homepage = "https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home" + url = "https://software.ecmwf.int/wiki/download/attachments/45757960/eccodes-2.2.0-Source.tar.gz?api=v2" + list_url = "https://software.ecmwf.int/wiki/display/ECC/Releases" + + version('2.2.0', 'b27e6f0a3eea5b92dac37372e4c45a62') + + variant('netcdf', default=True, + description="Support GRIB to NetCDF conversion") + variant('jpeg', default=True, + description="Support JPEG2000 encoding/decoding") + variant('png', default=True, + description="Support PNG encoding/decoding") + variant('python', default=False, + description="Build the eccodes Python interface") + variant('pthreads', default=False, + description="Enable POSIX threads") + variant('openmp', default=False, + description="Enable OpenMP threads") + variant('memfs', default=False, + description="Memory based access to definitions/samples") + + depends_on('netcdf', when='+netcdf') + depends_on('openjpeg', when='+jpeg') + depends_on('libpng', when='+png') + depends_on('py-numpy', when='+python') + extends('python', when='+python') + + def cmake_args(self): + variants = ['+netcdf', '+jpeg', '+png', '+python', + '+pthreads', '+openmp', '+memfs'] + options = ['NETCDF', 'JPG', 'PNG', 'PYTHON', + 'ECCODES_THREADS', 'ECCODES_OMP_THREADS', 'MEMFS'] + return map(lambda variant, option: "-DENABLE_%s=%s" % + (option, 'YES' if variant in self.spec else 'NO'), + variants, options) From b2155a568277a34534a7c91eca20c0fced24d338 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Sun, 23 Apr 2017 22:56:47 +1000 Subject: [PATCH 0719/2394] Update ECWMF packages: grib-api, libemos and magics (#3901) * grib-api: add version 1.21.0 * libemos: add version 4.4.7 and allow choice of eccodes or grib-api * magics: add version 2.32.0 * libemos: add description for eccodes variant --- .../repos/builtin/packages/grib-api/package.py | 1 + .../repos/builtin/packages/libemos/package.py | 15 +++++++++++++-- .../repos/builtin/packages/magics/package.py | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/grib-api/package.py b/var/spack/repos/builtin/packages/grib-api/package.py index 8b81e14a277..704ac7bd589 100644 --- a/var/spack/repos/builtin/packages/grib-api/package.py +++ b/var/spack/repos/builtin/packages/grib-api/package.py @@ -33,6 +33,7 @@ class GribApi(Package): homepage = "https://software.ecmwf.int/wiki/display/GRIB/Home" url = "https://software.ecmwf.int/wiki/download/attachments/3473437/grib_api-1.17.0-Source.tar.gz" + version('1.21.0', 'eb64c5eb72e6e90841237cba9d644016') version('1.17.0', 'bca7114d2c3100501a08190a146818d2') version('1.16.0', '8c7fdee03344e4379d400ae20976a460') diff --git a/var/spack/repos/builtin/packages/libemos/package.py b/var/spack/repos/builtin/packages/libemos/package.py index 0275c7ede9e..9670e7529e8 100644 --- a/var/spack/repos/builtin/packages/libemos/package.py +++ b/var/spack/repos/builtin/packages/libemos/package.py @@ -32,16 +32,27 @@ class Libemos(Package): homepage = "https://software.ecmwf.int/wiki/display/EMOS/Emoslib" url = "https://software.ecmwf.int/wiki/download/attachments/3473472/libemos-4.4.2-Source.tar.gz" + version('4.4.7', '395dcf21cf06872f772fb6b73d8e67b9') version('4.4.2', 'f15a9aff0f40861f3f046c9088197376') + variant('eccodes', default=False, + description="Use eccodes instead of grib-api for GRIB decoding") + depends_on('cmake', type='build') - depends_on('grib-api') + depends_on('eccodes', when='+eccodes') + depends_on('grib-api', when='~eccodes') + depends_on('fftw+float+double') def install(self, spec, prefix): options = [] options.extend(std_cmake_args) - options.append('-DGRIB_API_PATH=%s' % spec['grib_api'].prefix) + if spec.satisfies('+eccodes'): + options.append('-DENABLE_ECCODES=ON') + options.append('-DECCODES_PATH=%s' % spec['eccodes'].prefix) + else: + options.append('-DENABLE_ECCODES=OFF') + options.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix) # To support long pathnames that spack generates options.append('-DCMAKE_Fortran_FLAGS=-ffree-line-length-none') diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index 661fb022002..f7df6ce2feb 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -36,6 +36,7 @@ class Magics(Package): # Maintainers of Magics do not keep tarballs of minor releases. Once the # next minor released is published the previous one becomes unavailable. # That is why the preferred version is the latest stable one. + version('2.32.0', 'e17956fffce9ea826cf994f8d275e0f5') version('2.29.4', '91c561f413316fb665b3bb563f3878d1') version('2.29.0', 'db20a4d3c51a2da5657c31ae3de59709', preferred=True) From 67bf71630b55e4ba31373e4ae8ffbd7b8ae67ae4 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Sun, 23 Apr 2017 06:58:47 -0700 Subject: [PATCH 0720/2394] Do not require license for new Intel libraries (#3931) * new Intel libs do not require license to install * updated Intel library package URLs * disable license_required for new Intel libraries --- .../builtin/packages/intel-daal/package.py | 10 ++++--- .../builtin/packages/intel-ipp/package.py | 6 ++-- .../repos/builtin/packages/intel/package.py | 29 +++++++++++++++---- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel-daal/package.py b/var/spack/repos/builtin/packages/intel-daal/package.py index 011dec158e5..fb76509eaed 100644 --- a/var/spack/repos/builtin/packages/intel-daal/package.py +++ b/var/spack/repos/builtin/packages/intel-daal/package.py @@ -37,12 +37,14 @@ class IntelDaal(IntelInstaller): homepage = "https://software.intel.com/en-us/daal" + version('2017.2.174', 'f067d5d7b0f70914fba1f78da0361065', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11308/l_daal_2017.2.174.tgz") version('2017.0.098', 'b4eb234de12beff4a5cba4b81ea60673', - url="file://%s/l_daal_2017.0.098.tgz" % os.getcwd()) - version('2016.2.181', 'aad2aa70e5599ebfe6f85b29d8719d46', - url="file://%s/l_daal_2016.2.181.tgz" % os.getcwd()) + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9664/l_daal_2017.0.098.tgz") version('2016.3.210', 'ad747c0dd97dace4cad03cf2266cad28', - url="file://%s/l_daal_2016.3.210.tgz" % os.getcwd()) + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9099/l_daal_2016.3.210.tgz") + version('2016.2.181', 'aad2aa70e5599ebfe6f85b29d8719d46', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8687/l_daal_2016.2.181.tgz") provides('daal') diff --git a/var/spack/repos/builtin/packages/intel-ipp/package.py b/var/spack/repos/builtin/packages/intel-ipp/package.py index 3c37b2342f7..ed5c235ecfb 100644 --- a/var/spack/repos/builtin/packages/intel-ipp/package.py +++ b/var/spack/repos/builtin/packages/intel-ipp/package.py @@ -37,10 +37,12 @@ class IntelIpp(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-ipp" + version('2017.2.174', '8ad7753ee30c5176c4931070334144bc', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11307/l_ipp_2017.2.174.tgz") version('2017.0.098', 'e7be757ebe351d9f9beed7efdc7b7118', - url="file://%s/l_ipp_2017.0.098.tgz" % os.getcwd()) + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9663/l_ipp_2017.0.098.tgz") version('9.0.3.210', '0e1520dd3de7f811a6ef6ebc7aa429a3', - url="file://%s/l_ipp_9.0.3.210.tgz" % os.getcwd()) + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9067/l_ipp_9.0.3.210.tgz") provides('ipp') diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index 0866360d1b0..eec294df882 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -56,13 +56,23 @@ class IntelInstaller(Package): homepage = "https://software.intel.com/en-us" intel_components = "ALL" - license_required = True license_comment = '#' license_files = ['Licenses/license.lic'] license_vars = ['INTEL_LICENSE_FILE'] license_url = \ 'https://software.intel.com/en-us/articles/intel-license-manager-faq' + @property + def license_required(self): + # The Intel libraries are provided without requiring a license as of + # version 2017.2. Trying to specify the license will fail. See + # https://software.intel.com/en-us/articles/free-mkl + if (self.spec.satisfies("intel-mkl@2017.2:") or + self.spec.satisfies("intel-daal@2017.2:") or + self.spec.satisfies("intel-ipp@2017.2:")): + return False + return True + @property def global_license_file(self): """Returns the path where a global license file should be stored.""" @@ -84,13 +94,22 @@ def install(self, spec, prefix): CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes PSET_INSTALL_DIR=%s NONRPM_DB_DIR=%s +CONTINUE_WITH_OPTIONAL_ERROR=yes +COMPONENTS=%s +""" % (self.intel_prefix, self.intel_prefix, self.intel_components)) + + # The Intel libraries are provided without requiring a license as of + # version 2017.2. Trying to specify the license will fail. See + # https://software.intel.com/en-us/articles/free-mkl + if not (spec.satisfies("intel-mkl@2017.2:") or + spec.satisfies("intel-daal@2017.2:") or + spec.satisfies("intel-ipp@2017.2:")): + with open(silent_config_filename, 'a') as f: + f.write(""" ACTIVATION_LICENSE_FILE=%s ACTIVATION_TYPE=license_file PHONEHOME_SEND_USAGE_DATA=no -CONTINUE_WITH_OPTIONAL_ERROR=yes -COMPONENTS=%s -""" % (self.intel_prefix, self.intel_prefix, self.global_license_file, - self.intel_components)) +""" % (self.global_license_file)) install_script = Executable("./install.sh") install_script('--silent', silent_config_filename) From c144c883024128ac9f82139d7ee37ab0122b9684 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 23 Apr 2017 10:32:08 -0500 Subject: [PATCH 0721/2394] Use six.moves.input instead of raw_input (#3961) * Use six.moves.input instead of raw_input * Remove comment mentioning raw_input --- lib/spack/llnl/util/tty/__init__.py | 5 +++-- lib/spack/spack/package.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index f78d8890371..5acd61bc373 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -30,6 +30,7 @@ import struct import traceback from six import StringIO +from six.moves import input from llnl.util.tty.color import * @@ -164,7 +165,7 @@ def get_number(prompt, **kwargs): number = None while number is None: msg(prompt, newline=False) - ans = raw_input() + ans = input() if ans == str(abort): return None @@ -197,7 +198,7 @@ def get_yes_or_no(prompt, **kwargs): result = None while result is None: msg(prompt, newline=False) - ans = raw_input().lower() + ans = input().lower() if not ans: result = default_value if result is None: diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index bc479c9cf59..4a42fef3379 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1228,7 +1228,7 @@ def build_process(input_stream): # otherwise it should not have passed us the copy of the stream. # Thus, we are free to work with the the copy (input_stream) # however we want. For example, we might want to call functions - # (e.g. raw_input()) that implicitly read from whatever stream is + # (e.g. input()) that implicitly read from whatever stream is # assigned to sys.stdin. Since we want them to work with the # original input stream, we are making the following assignment: sys.stdin = input_stream From 00fdbe81bcf322f93e90537bbe0b6bcf31863bf1 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Mon, 24 Apr 2017 11:32:27 -0700 Subject: [PATCH 0722/2394] Caffe (#3948) * Added a package for the MDAnalysis toolkit. * Added the hash for the 1.0 release of caffe and put in a conflict statemet indicating that protobuf requires a c++11 compiler. * Changed minimum version number. * Tweaked the minimum version number. * Fixed flake8 error. --- var/spack/repos/builtin/packages/caffe/package.py | 6 +++++- var/spack/repos/builtin/packages/protobuf/package.py | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index 24bbe1ec6a1..5d83b8e1a70 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -31,9 +31,13 @@ class Caffe(CMakePackage): Center (BVLC) and by community contributors.""" homepage = "http://caffe.berkeleyvision.org" - url = "https://github.com/BVLC/caffe/archive/rc5.tar.gz" + url = "https://github.com/BVLC/caffe/archive/1.0.tar.gz" + version('1.0', '5fbb0e32e7cd8de3de46e6fe6e4cd2b5') version('rc5', '692bd3580b7576485cde6b1e03eb5a6d') + version('rc4', 'd86eeb38b1400097d32ffcabdec75b55') + version('rc3', '84e39223115753b48312a8bf48c31f59') + version('rc2', 'c331932e34b5e2f5022fcc34c419080f') variant('gpu', default=False, description='Builds with support for GPUs via CUDA and cuDNN') diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index 14eaf3739e6..0a073b837a9 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -41,6 +41,8 @@ class Protobuf(AutotoolsPackage): depends_on('libtool', type='build') depends_on('m4', type='build') + conflicts('%gcc@:4.6') # Requires c++11 + variant('shared', default=True, description='Build shared libraries.') def configure_args(self): From 99a8297add053bba9d10df509c9f702bea22074c Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 24 Apr 2017 15:25:41 -0700 Subject: [PATCH 0723/2394] Rename tutorial_sc16.rst to tutorial.rst (#3974) - make the name more generic for posterity. --- lib/spack/docs/index.rst | 2 +- lib/spack/docs/{tutorial_sc16.rst => tutorial.rst} | 6 +++--- .../{tutorial_sc16_spack_basics.rst => tutorial_basics.rst} | 0 .../{tutorial_sc16_modules.rst => tutorial_modules.rst} | 0 .../{tutorial_sc16_packaging.rst => tutorial_packaging.rst} | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename lib/spack/docs/{tutorial_sc16.rst => tutorial.rst} (94%) rename lib/spack/docs/{tutorial_sc16_spack_basics.rst => tutorial_basics.rst} (100%) rename lib/spack/docs/{tutorial_sc16_modules.rst => tutorial_modules.rst} (100%) rename lib/spack/docs/{tutorial_sc16_packaging.rst => tutorial_packaging.rst} (100%) diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index 579d222346c..5dd6fe23be8 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -50,7 +50,7 @@ or refer to the full manual below. getting_started basic_usage workflows - tutorial_sc16 + tutorial known_issues .. toctree:: diff --git a/lib/spack/docs/tutorial_sc16.rst b/lib/spack/docs/tutorial.rst similarity index 94% rename from lib/spack/docs/tutorial_sc16.rst rename to lib/spack/docs/tutorial.rst index a95eee989c0..e6f48fa10eb 100644 --- a/lib/spack/docs/tutorial_sc16.rst +++ b/lib/spack/docs/tutorial.rst @@ -43,6 +43,6 @@ correspond to sections in the slides above. Full contents: .. toctree:: - tutorial_sc16_spack_basics - tutorial_sc16_packaging - tutorial_sc16_modules + tutorial_basics + tutorial_packaging + tutorial_modules diff --git a/lib/spack/docs/tutorial_sc16_spack_basics.rst b/lib/spack/docs/tutorial_basics.rst similarity index 100% rename from lib/spack/docs/tutorial_sc16_spack_basics.rst rename to lib/spack/docs/tutorial_basics.rst diff --git a/lib/spack/docs/tutorial_sc16_modules.rst b/lib/spack/docs/tutorial_modules.rst similarity index 100% rename from lib/spack/docs/tutorial_sc16_modules.rst rename to lib/spack/docs/tutorial_modules.rst diff --git a/lib/spack/docs/tutorial_sc16_packaging.rst b/lib/spack/docs/tutorial_packaging.rst similarity index 100% rename from lib/spack/docs/tutorial_sc16_packaging.rst rename to lib/spack/docs/tutorial_packaging.rst From eef7d179462675ce2abb207e90babcd2e6ecd1c8 Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Mon, 24 Apr 2017 19:04:40 -0400 Subject: [PATCH 0724/2394] Add global arrays package (#3970) * Added magma package * Incorporated Serban's change * globalarrays: add global arrays package to Spack. * globalarray: remove extreaneous comment from package file --- .../packages/globalarrays/ibm-xl.patch | 250 ++++++++++++++++++ .../builtin/packages/globalarrays/package.py | 60 +++++ 2 files changed, 310 insertions(+) create mode 100644 var/spack/repos/builtin/packages/globalarrays/ibm-xl.patch create mode 100644 var/spack/repos/builtin/packages/globalarrays/package.py diff --git a/var/spack/repos/builtin/packages/globalarrays/ibm-xl.patch b/var/spack/repos/builtin/packages/globalarrays/ibm-xl.patch new file mode 100644 index 00000000000..644e3a559a9 --- /dev/null +++ b/var/spack/repos/builtin/packages/globalarrays/ibm-xl.patch @@ -0,0 +1,250 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2022280..dac3b7f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -174,6 +174,15 @@ option (F2C_HIDDEN_STRING_LENGTH_AFTER_ARGS "Set F77 macros" ON) + if (ENABLE_FORTRAN) + include( FortranCInterface ) + FortranCInterface_HEADER(${CMAKE_SOURCE_DIR}/f2c_cmake.h MACRO_NAMESPACE F77_FUNC_) ++ add_custom_command( ++ OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/f2c_cmake.fh ++ COMMAND ${CMAKE_COMMAND} -D INPUT:PATH="${CMAKE_CURRENT_SOURCE_DIR}/f2c_cmake.h" -D OUTPUT:PATH="${CMAKE_CURRENT_SOURCE_DIR}/f2c_cmake.fh" -P ${PROJECT_SOURCE_DIR}/tools/f2c_cmake_fh_from_h.cmake DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/f2c_cmake.h ++ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/f2c_cmake.h ++ ) ++ add_custom_target( ++ GenerateF2c_cmakeFH ALL ++ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/f2c_cmake.fh ++ ) + else() + CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/cmake/f2c_dummy.h.in + ${CMAKE_SOURCE_DIR}/f2c_cmake.h ) +@@ -336,6 +345,15 @@ if (ENABLE_FORTRAN) + set (F77_IARGC IARGC) + set (F77_FLUSH flush) + set (HAVE_F77_FLUSH 1) ++ elseif (CMAKE_Fortran_COMPILER MATCHES "xlf.*") ++ message(STATUS "Using IBM XL Fortran compiler settings") ++ set (F90_MODULE ) ++ set (F77_GETARG GETARG) ++ set (F77_GETARG_ARGS "i,s") ++ set (F77_GETARG_DECLS "intrinsic GETARG") ++ set (F77_IARGC IARGC) ++ set (F77_FLUSH flush_) ++ set (HAVE_F77_FLUSH 1) + endif() + else() + # need to set these variable even if only compiling C/C++ +diff --git a/cmake/config.h.in b/cmake/config.h.in +index 3ce6a32..9ad868f 100644 +--- a/cmake/config.h.in ++++ b/cmake/config.h.in +@@ -58,11 +58,11 @@ + + #cmakedefine01 F2C_HIDDEN_STRING_LENGTH_AFTER_ARGS + +-/*#define F77_FUNC(name,NAME) F77_FUNC_GLOBAL(name,NAME)*/ +-/*#define F77_FUNC_(name,NAME) F77_FUNC_GLOBAL_(name,NAME)*/ ++#define F77_FUNC(name,NAME) F77_FUNC_GLOBAL(name,NAME) ++#define F77_FUNC_(name,NAME) F77_FUNC_GLOBAL_(name,NAME) + +-#define F77_FUNC(name,NAME) name ## _ +-#define F77_FUNC_(name,NAME) name ## _ ++/* #define F77_FUNC(name,NAME) name ## _ */ ++/* #define F77_FUNC_(name,NAME) name ## _ */ + + #define FXX_MODULE ${F90_MODULE} + #define F77_GETARG ${F77_GETARG} +diff --git a/tools/config_fh_from_h.cmake b/tools/config_fh_from_h.cmake +index acdf776..fb10422 100644 +--- a/tools/config_fh_from_h.cmake ++++ b/tools/config_fh_from_h.cmake +@@ -7,6 +7,13 @@ if (INPUT) + foreach (l in ${in0}) + # Only retain lines that start with "#" + set(found "") ++ string(REGEX MATCH "^#include" found "${l}") ++ if (found) ++ # don't include f2c_cmake.h ++ set(out "#include \"f2c_cmake.fh\"\n") ++ continue () ++ endif () ++ set(found "") + string(REGEX MATCH "^#" found "${l}") + if (found) + set(out "${out}${l}\n") +diff --git a/tools/f2c_cmake_fh_from_h.cmake b/tools/f2c_cmake_fh_from_h.cmake +new file mode 100644 +index 0000000..acdf776 +--- /dev/null ++++ b/tools/f2c_cmake_fh_from_h.cmake +@@ -0,0 +1,21 @@ ++if (INPUT) ++ if (OUTPUT) ++ file(READ "${INPUT}" in0) ++# replace carriage returns with a semi-colon ++ string (REGEX REPLACE "\n" ";" in0 "${in0}") ++ set(out "") ++ foreach (l in ${in0}) ++ # Only retain lines that start with "#" ++ set(found "") ++ string(REGEX MATCH "^#" found "${l}") ++ if (found) ++ set(out "${out}${l}\n") ++ endif () ++ endforeach () ++ file(WRITE "${OUTPUT}" "${out}") ++ else (OUTPUT) ++ message(ERROR "OUTPUT variable must be set") ++ endif (OUTPUT) ++else (INPUT) ++ message(ERROR "INPUT variable must be set") ++endif (INPUT) +diff --git a/global/src/cnames.h b/global/src/cnames.h +index efdec60..cadfd0a 100644 +--- a/global/src/cnames.h ++++ b/global/src/cnames.h +@@ -2268,6 +2268,7 @@ + #define nga_iupdate_ghosts_ F77_FUNC_(nga_iupdate_ghosts,NGA_IUPDATE_GHOSTS) + #define nga_supdate_ghosts_ F77_FUNC_(nga_supdate_ghosts,NGA_SUPDATE_GHOSTS) + #define nga_zupdate_ghosts_ F77_FUNC_(nga_zupdate_ghosts,NGA_ZUPDATE_GHOSTS) ++#define nga_update_ghosts_nb_ F77_FUNC_(nga_update_ghosts_nb, NGA_UPDATE_GHOSTS_NB) + #define ga_update6_ghosts_ F77_FUNC_(ga_update6_ghosts, GA_UPDATE6_GHOSTS) + #define ga_cupdate6_ghosts_ F77_FUNC_(ga_cupdate6_ghosts,GA_CUPDATE6_GHOSTS) + #define ga_dupdate6_ghosts_ F77_FUNC_(ga_dupdate6_ghosts,GA_DUPDATE6_GHOSTS) +diff --git a/global/testing/perform.F b/global/testing/perform.F +index b18146d..e1b9641 100644 +--- a/global/testing/perform.F ++++ b/global/testing/perform.F +@@ -110,7 +110,7 @@ c + & ilo,ihi,jlo,jhi + write(6,*)'bytes loop get put', + & ' accumulate' +- call flush(6) ++ call F77_FLUSH(6) + endif + call ga_sync() + c +@@ -145,7 +145,7 @@ c + if (me .eq. 0) then + write(6,77)bytes, count, tg, 1d-6*bytes/tg, + & tp, 1d-6*bytes/tp, ta, 1d-6*bytes/ta +- call flush(6) ++ call F77_FLUSH(6) + endif + enddo + c +diff --git a/global/testing/mir_perf1.F b/global/testing/mir_perf1.F +index 074e838..3548552 100644 +--- a/global/testing/mir_perf1.F ++++ b/global/testing/mir_perf1.F +@@ -133,7 +133,7 @@ c + & ' accumulate' + write(6,*)' bytes dim sec MB/s sec MB/s', + & ' sec MB/s' +- call flush(6) ++ call F77_FLUSH(6) + endif + call ga_sync() + c +@@ -174,7 +174,7 @@ c + if (me .eq. 0) then + write(6,77)bytes, chunk(loop), tg, + & 1d-6*bytes/tg,tp, 1d-6*bytes/tp, ta, 1d-6*bytes/ta +- call flush(6) ++ call F77_FLUSH(6) + endif + enddo + c +@@ -388,7 +388,7 @@ c + & ' accumulate' + write(6,*)' bytes dim sec MB/s sec MB/s', + & ' sec MB/s' +- call flush(6) ++ call F77_FLUSH(6) + endif + call ga_sync() + c +@@ -427,7 +427,7 @@ c + if (me .eq. 0) then + write(6,77)bytes, chunk(loop), tg, + & 1d-6*bytes/tg,tp, 1d-6*bytes/tp, ta, 1d-6*bytes/ta +- call flush(6) ++ call F77_FLUSH(6) + endif + enddo + c +diff --git a/global/testing/mir_perf2.F b/global/testing/mir_perf2.F +index fb50398..3b3bed6 100644 +--- a/global/testing/mir_perf2.F ++++ b/global/testing/mir_perf2.F +@@ -124,7 +124,7 @@ c + & ' accumulate' + write(6,*)' bytes dim sec MB/s sec MB/s', + & ' sec MB/s' +- call flush(6) ++ call F77_FLUSH(6) + endif + call ga_sync() + c +@@ -163,7 +163,7 @@ c + if (me .eq. 0) then + write(6,77)bytes, chunk(loop), tg, + & 1d-6*bytes/tg,tp, 1d-6*bytes/tp, ta, 1d-6*bytes/ta +- call flush(6) ++ call F77_FLUSH(6) + endif + enddo + c +@@ -377,7 +377,7 @@ c + & ' accumulate' + write(6,*)' bytes dim sec MB/s sec MB/s', + & ' sec MB/s' +- call flush(6) ++ call F77_FLUSH(6) + endif + call ga_sync() + c +@@ -416,7 +416,7 @@ c + if (me .eq. 0) then + write(6,77)bytes, chunk(loop), tg, + & 1d-6*bytes/tg,tp, 1d-6*bytes/tp, ta, 1d-6*bytes/ta +- call flush(6) ++ call F77_FLUSH(6) + endif + enddo + c +diff --git a/global/testing/perfmod.F b/global/testing/perfmod.F +index ec3fe37..7770be7 100644 +--- a/global/testing/perfmod.F ++++ b/global/testing/perfmod.F +@@ -119,7 +119,7 @@ c + + write(6,*)'bytes loop get put', + & ' accumulate' +- call flush(6) ++ call F77_FLUSH(6) + endif + call ga_sync() + c +@@ -157,7 +157,7 @@ c + if (me .eq. 0) then + write(6,77)bytes, count, tg, 1d-6*bytes/tg, + & tp, 1d-6*bytes/tp, ta, 1d-6*bytes/ta +- call flush(6) ++ call F77_FLUSH(6) + endif + enddo + c +diff --git a/global/testing/sprsmatmult.F b/global/testing/sprsmatmult.F +index 3fdeb3f..3682c3b 100644 +--- a/global/testing/sprsmatmult.F ++++ b/global/testing/sprsmatmult.F +@@ -108,7 +108,7 @@ c + print *,'Comparing distributed multiply with serial multiply' + print * + #endif +- call flush(6) ++ call F77_FLUSH(6) + endif + c + c*** Initialize the MA package diff --git a/var/spack/repos/builtin/packages/globalarrays/package.py b/var/spack/repos/builtin/packages/globalarrays/package.py new file mode 100644 index 00000000000..bce1a8f37ab --- /dev/null +++ b/var/spack/repos/builtin/packages/globalarrays/package.py @@ -0,0 +1,60 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at IBM. +# +# This file is part of Spack. +# Created by Serban Maerean, serban@ibm.com, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Globalarrays(CMakePackage): + """The Global Arrays (GA) toolkit provides a shared memory style programming + environment in the context of distributed array data structures. + """ + + homepage = "http://hpc.pnl.gov/globalarrays/" + url = "https://github.com/GlobalArrays/ga" + + version('master', git='https://github.com/GlobalArrays/ga', branch='master') + + depends_on('blas') + depends_on('lapack') + depends_on('mpi') + + patch('ibm-xl.patch', when='%xl') + patch('ibm-xl.patch', when='%xl_r') + + def cmake_args(self): + options = [] + + options.extend([ + '-DENABLE_FORTRAN=ON', + '-DENABLE_BLAS=ON', + ]) + + if self.compiler.name == 'xl' or self.compiler.name == 'xl_r': + # use F77 compiler if IBM XL + options.extend([ + '-DCMAKE_Fortran_COMPILER=%s' % self.compiler.f77, + '-DCMAKE_Fortran_FLAGS=-qzerosize' + ]) + + return options From dd5f4cb251f77a4d4122a4eb26f44beb68bebc92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Tue, 25 Apr 2017 19:40:23 +0800 Subject: [PATCH 0725/2394] A new package: CNTK. (#3578) --- .../repos/builtin/packages/cntk/build.patch | 401 ++++++++++++++++++ .../packages/cntk/kaldireader-openblas.patch | 32 ++ .../repos/builtin/packages/cntk/package.py | 117 +++++ .../builtin/packages/cntk1bitsgd/package.py | 44 ++ .../packages/multiverso/cmake-143187.patch | 28 ++ .../builtin/packages/multiverso/package.py | 48 +++ 6 files changed, 670 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cntk/build.patch create mode 100644 var/spack/repos/builtin/packages/cntk/kaldireader-openblas.patch create mode 100644 var/spack/repos/builtin/packages/cntk/package.py create mode 100644 var/spack/repos/builtin/packages/cntk1bitsgd/package.py create mode 100644 var/spack/repos/builtin/packages/multiverso/cmake-143187.patch create mode 100644 var/spack/repos/builtin/packages/multiverso/package.py diff --git a/var/spack/repos/builtin/packages/cntk/build.patch b/var/spack/repos/builtin/packages/cntk/build.patch new file mode 100644 index 00000000000..0b1e46e9116 --- /dev/null +++ b/var/spack/repos/builtin/packages/cntk/build.patch @@ -0,0 +1,401 @@ +From 6ee89684a8e7b509f977bab00573c73563df4bc6 Mon Sep 17 00:00:00 2001 +From: Jianwen WEI +Date: Wed, 5 Apr 2017 16:52:54 +0800 +Subject: [PATCH 1/1] Refine the build process to allow reuse pre-installed + packages: multiverso 1bit-sgd kaldi openfst. + +--- + Makefile | 69 +++++++++++++++--------------- + configure | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 178 insertions(+), 35 deletions(-) + +diff --git a/Makefile b/Makefile +index 0586fd94b..bbd75e08c 100644 +--- a/Makefile ++++ b/Makefile +@@ -25,14 +25,18 @@ + # If not specified, GPU will not be enabled + # CUB_PATH= path to NVIDIA CUB installation, so $(CUB_PATH)/cub/cub.cuh exists + # defaults to /usr/local/cub-1.4.1 +-# CUDNN_PATH= path to NVIDIA cuDNN installation so $(CUDNN_PATH)/cuda/include/cudnn.h exists ++# CUDNN_PATH= path to NVIDIA cuDNN installation so $(CUDNN_PATH)/include/cudnn.h exists + # CuDNN version needs to be 5.0 or higher. + # KALDI_PATH= Path to Kaldi + # If not specified, Kaldi plugins will not be built ++# OPENFST_PATH= Path to OpenFST ++# OpenFST is required by Kaldi Reader. + # OPENCV_PATH= path to OpenCV 3.1.0 installation, so $(OPENCV_PATH) exists + # defaults to /usr/local/opencv-3.1.0 + # PROTOBUF_PATH= path to Protocol Buffers 3.1.0 installation, so $(PROTOBUF_PATH) exists + # defaults to /usr/local/protobuf-3.1.0 ++# MULTIVERSO_PATH= path to Multiverso installation or source code, so $(MULTIVERSO_PATH) exists ++# defaults to Source/Multiverso + # LIBZIP_PATH= path to libzip installation, so $(LIBZIP_PATH) exists + # defaults to /usr/local/ + # BOOST_PATH= path to Boost installation, so $(BOOST_PATH)/include/boost/test/unit_test.hpp +@@ -149,8 +153,8 @@ ifdef CUDA_PATH + + # Set up cuDNN if needed + ifdef CUDNN_PATH +- INCLUDEPATH += $(CUDNN_PATH)/cuda/include +- LIBPATH += $(CUDNN_PATH)/cuda/lib64 ++ INCLUDEPATH += $(CUDNN_PATH)/include ++ LIBPATH += $(CUDNN_PATH)/lib64 + LIBS_LIST += cudnn + COMMON_FLAGS +=-DUSE_CUDNN + endif +@@ -188,16 +192,11 @@ ifeq ("$(MATHLIB)","openblas") + CPPFLAGS += -DUSE_OPENBLAS + endif + +- ++# Set up kaldi and openfst for Kaldi2Reader if needed + ifdef KALDI_PATH +- ########## Copy includes and defines from $(KALDI_PATH)/src/kaldi.mk ########## +- FSTROOT = $(KALDI_PATH)/tools/openfst +- ATLASINC = $(KALDI_PATH)/tools/ATLAS/include +- +- INCLUDEPATH += $(KALDI_PATH)/src $(ATLASINC) $(FSTROOT)/include ++ INCLUDEPATH += $(KALDI_PATH)/include $(OPENFST_PATH)/incldue + CPPFLAGS += -DKALDI_DOUBLEPRECISION=0 -DHAVE_POSIX_MEMALIGN -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_ATLAS -DHAVE_OPENFST_GE_10400 +- +- KALDI_LIBPATH += $(KALDI_PATH)/src/lib ++ KALDI_LIBPATH += $(KALDI_PATH)/lib $(OPENFST_PATH)/lib + KALDI_LIBS_LIST := kaldi-util kaldi-matrix kaldi-base kaldi-hmm kaldi-cudamatrix kaldi-nnet kaldi-lat + KALDI_LIBS := $(addprefix -l,$(KALDI_LIBS_LIST)) + endif +@@ -316,7 +315,7 @@ SRC += $(PP_SRC) + $(PERF_PROFILER_LIB): $(PP_OBJ) + @echo $(SEPARATOR) + @echo creating $@ for $(ARCH) with build type $(BUILDTYPE) +- @mkdir -p $(dir $@) ++ -@mkdir -p $(dir $@) + $(CXX) $(LDFLAGS) -shared $(patsubst %,$(RPATH)%, $(ORIGINDIR)) -o $@ $^ + + +@@ -920,17 +919,13 @@ endif + + ifeq ("$(CNTK_ENABLE_1BitSGD)","true") + +-ifeq (,$(wildcard Source/1BitSGD/*.h)) +- $(error Build with 1bit-SGD was requested but cannot find the code. Please check https://github.com/Microsoft/CNTK/wiki/Enabling-1bit-SGD for instructions) +-endif +- +- INCLUDEPATH += $(SOURCEDIR)/1BitSGD ++ INCLUDEPATH += $(ONEBITSGD_PATH) + + COMMON_FLAGS += -DCNTK_PARALLEL_TRAINING_SUPPORT + # temporarily adding to 1bit, need to work with others to fix it + endif + +- ++ + ######################################## + # ASGD(multiverso) setup + ######################################## +@@ -938,13 +933,9 @@ endif + + ifeq ("$(CNTK_ENABLE_ASGD)","true") + +-ifeq (,$(wildcard Source/Multiverso/include/multiverso/*.h)) +- $(error Build with Multiverso was requested but cannot find the code. Please check https://github.com/Microsoft/CNTK/wiki/Multiple-GPUs-and-machines#24-data-parallel-asgd to learn more.) +-endif +- + lMULTIVERSO:=-lmultiverso + +-INCLUDEPATH += $(SOURCEDIR)/Multiverso/include ++INCLUDEPATH += $(MULTIVERSO_PATH)/include + COMMON_FLAGS += -DASGD_PARALLEL_SUPPORT + + MULTIVERSO_LIB:=$(LIBDIR)/libmultiverso.so +@@ -958,11 +949,16 @@ MULTIVERSO_CMAKE_BUILDTYPE=Debug + endif + + # TODO need to align Multiverso OpenMP with the one we use (libiomp). For now, disabled. +-$(MULTIVERSO_LIB): ++$(MULTIVERSO_LIB): ++ifneq ("$(wildcard $(MULTIVERSO_PATH)/lib/libmultiverso.so)","") ++ # reuse pre-installed multiverso library to $(LIBDIR) then skip building $(MULTIVERSO_LIB) when possible ++ @mkdir -p $(LIBDIR) ++ cp $(MULTIVERSO_PATH)/lib/libmultiverso.so $(LIBDIR) ++else + @echo "Build Multiverso lib" + @mkdir -p $(LIBDIR) + @mkdir -p $(BINDIR) +- @mkdir -p $(SOURCEDIR)/Multiverso/build/$(BUILDTYPE) ++ @mkdir -p $(MULTIVERSO_PATH)/build/$(BUILDTYPE) + @cmake -DCMAKE_VERBOSE_MAKEFILE=TRUE \ + -DCMAKE_CXX_COMPILER=$(CXX) \ + -DOpenMP_CXX_FLAGS="" \ +@@ -976,17 +972,22 @@ $(MULTIVERSO_LIB): + -DCMAKE_BUILD_TYPE=$(MULTIVERSO_CMAKE_BUILDTYPE) \ + -B./Source/Multiverso/build/$(BUILDTYPE) -H./Source/Multiverso + @make VERBOSE=1 -C ./Source/Multiverso/build/$(BUILDTYPE) -j multiverso ++endif + + UNITTEST_MULTIVERSO_SRC = \ +- $(SOURCEDIR)/Multiverso/Test/unittests/test_array.cpp \ +- $(SOURCEDIR)/Multiverso/Test/unittests/test_blob.cpp \ +- $(SOURCEDIR)/Multiverso/Test/unittests/test_kv.cpp \ +- $(SOURCEDIR)/Multiverso/Test/unittests/test_message.cpp \ +- $(SOURCEDIR)/Multiverso/Test/unittests/test_multiverso.cpp \ +- $(SOURCEDIR)/Multiverso/Test/unittests/test_node.cpp \ +- $(SOURCEDIR)/Multiverso/Test/unittests/test_sync.cpp \ +- +-UNITTEST_MULTIVERSO_OBJ := $(patsubst %.cpp, $(OBJDIR)/%.o, $(UNITTEST_MULTIVERSO_SRC)) ++ $(MULTIVERSO_PATH)/Test/unittests/test_array.cpp \ ++ $(MULTIVERSO_PATH)/Test/unittests/test_blob.cpp \ ++ $(MULTIVERSO_PATH)/Test/unittests/test_kv.cpp \ ++ $(MULTIVERSO_PATH)/Test/unittests/test_message.cpp \ ++ $(MULTIVERSO_PATH)/Test/unittests/test_multiverso.cpp \ ++ $(MULTIVERSO_PATH)/Test/unittests/test_node.cpp \ ++ $(MULTIVERSO_PATH)/Test/unittests/test_sync.cpp \ ++ ++UNITTEST_MULTIVERSO_OBJ := $(patsubst $(MULTIVERSO_PATH)/Test/unittests/%.cpp, $(OBJDIR)/Source/Multiverso/Test/unittests/%.o, $(UNITTEST_MULTIVERSO_SRC)) ++ ++$(OBJDIR)/Source/Multiverso/Test/unittests/%.o: $(MULTIVERSO_PATH)/Test/unittests/%.cpp ++ -@ mkdir -p $(OBJDIR)/Source/Multiverso/Test/unittests ++ $(CXX) -c $< -o $@ $(COMMON_FLAGS) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDEPATH:%=-I%) + + UNITTEST_MULTIVERSO := $(BINDIR)/multiversotests + +diff --git a/configure b/configure +index 2c2e5cee7..c9c0072c9 100755 +--- a/configure ++++ b/configure +@@ -41,6 +41,14 @@ boost_check=include/boost/test/unit_test.hpp + protobuf_path= + protobuf_check=lib/libprotobuf.a + ++# Multiverso library ++multiverso_path= ++multiverso_check=include/multiverso/multiverso.h ++ ++# 1bitsgd library ++onebitsgd_path= ++onebitsgd_check=BlockMomentumSGD.h ++ + # MPI library + mpi_path= + mpi_check=include/mpi.h +@@ -49,6 +57,10 @@ have_kaldi=no + kaldi_path= + kaldi_check=src/kaldi.mk + ++have_openfst=no ++openfst_path= ++openfst_check=include/fst/fst.h ++ + have_buildtype=no + buildtype= + default_buildtype=release +@@ -67,7 +79,7 @@ cub_check=cub/cub.cuh + + have_cudnn=no + cudnn_path= +-cudnn_check=cuda/include/cudnn.h ++cudnn_check=include/cudnn.h + + have_opencv=no + opencv_path= +@@ -112,6 +124,7 @@ default_boost="boost-1.60.0" + default_cudas="cuda-8.0 cuda-7.5" + default_nccls="nccl" + default_kaldis="kaldi-trunk kaldi-c024e8aa" ++default_openfst="openfst-1.6" + default_gdk_includes="include/nvidia/gdk" + default_gdk_nvml_libs="src/gdk/nvml/lib" + default_cubs="cub-1.4.1" +@@ -121,6 +134,8 @@ default_protobuf="protobuf-3.1.0" + default_libzips="libzip-1.1.2" + default_swig="swig-3.0.10" + default_mpi="mpi" ++default_multiverso=Source/Multiverso ++default_onebitsgd=Source/1BitSGD + + function default_paths () + { +@@ -178,6 +193,16 @@ function find_protobuf () + find_dir "$default_protobuf" "$protobuf_check" + } + ++function find_multiverso () ++{ ++ find_dir "$default_multiverso" "$multiverso_check" ++} ++ ++function find_onebitsgd () ++{ ++ find_dir "$default_onebitsgd" "$onebitsgd_check" ++} ++ + function find_nccl () + { + find_dir "$default_nccls" "$nccl_check" +@@ -193,6 +218,11 @@ function find_kaldi () + find_dir "$default_kaldis" "$kaldi_check" + } + ++function find_openfst () ++{ ++ find_dir "$default_openfst" "$openfst_check" ++} ++ + function find_gdk_include () + { + find_dir "$default_gdk_includes" "$gdk_include_check" +@@ -352,11 +382,14 @@ function show_help () + echo " --with-openblas[=directory] (experimental) $(show_default $(find_openblas))" + echo " --with-buildtype=(debug|release) $(show_default $default_buildtype)" + echo " --with-kaldi[=directory] $(show_default $(find_kaldi))" ++ echo " --with-openfst[=directory] $(show_default $(find_openfst))" + echo " --with-opencv[=directory] $(show_default $(find_opencv))" + echo " --with-libzip[=directory] $(show_default $(find_libzip))" + echo " --with-code-coverage[=(yes|no)] $(show_default ${default_use_code_coverage})" + echo " --with-boost[=directory] $(show_default $(find_boost))" + echo " --with-protobuf[=directory] $(show_default $(find_protobuf))" ++ echo " --with-multiverso[=directory] $(show_default $(find_multiverso))" ++ echo " --with-1bitsgd[=directory] $(show_default $(find_onebitsgd))" + echo " --with-py-versions=(space-separated list of 27, 34, 35)" + echo " --with-py27-path[=directory] $(show_default $(find_python 27))" + echo " --with-py34-path[=directory] $(show_default $(find_python 34))" +@@ -751,6 +784,46 @@ do + fi + fi + ;; ++ --with-multiverso*) ++ if test x$optarg = x ++ then ++ multiverso_path=$(find_multiverso) ++ if test x$multiverso_path = x ++ then ++ echo "Cannot find Multiverso directory" ++ echo "Please specify a value for --with-multiverso" ++ exit 1 ++ fi ++ else ++ if test $(check_dir $optarg $multiverso_check) = yes ++ then ++ multiverso_path=$optarg ++ else ++ echo "Invalid Multiverso directory $optarg" ++ exit 1 ++ fi ++ fi ++ ;; ++ --with-1bitsgd*) ++ if test x$optarg = x ++ then ++ onebitsgd_path=$(find_onebitsgd) ++ if test x$onebitsgd_path = x ++ then ++ echo "Cannot find 1BitSGD directory" ++ echo "Please specify a value for --with-1bitsgd" ++ exit 1 ++ fi ++ else ++ if test $(check_dir $optarg $onebitsgd_check) = yes ++ then ++ onebitsgd_path=$optarg ++ else ++ echo "Invalid 1BitSGD directory $optarg" ++ exit 1 ++ fi ++ fi ++ ;; + --with-buildtype*) + have_buildtype=yes + case $optarg in +@@ -784,6 +857,27 @@ do + fi + fi + ;; ++ --with-openfst*) ++ have_openfst=yes ++ if test x$optarg = x ++ then ++ openfst_path=$(find_openfst) ++ if test x$openfst_path = x ++ then ++ echo "Cannot find openfst directory" ++ echo "Please specify a value for --with-openfst" ++ exit 1 ++ fi ++ else ++ if test $(check_dir $optarg $openfst_check) ++ then ++ openfst_path=$optarg ++ else ++ echo "Invalid openfst directory $optarg" ++ exit 1 ++ fi ++ fi ++ ;; + --with-opencv*) + have_opencv=yes + if test x$optarg = x +@@ -1049,6 +1143,48 @@ then + fi + fi + ++if test x$kaldi_path != x && test x$openfst_path = x ++then ++ openfst_path=$(find_openfst) ++ if test x$openfst_path = x ++ then ++ echo CNTK KaldiReader requires OpenFST library. Please check ++ echo https://github.com/Microsoft/CNTK/blob/master/Source/Readers/KaldiReaderReadme ++ echo to learn more. ++ exit 1 ++ else ++ echo Found OpenFST library at $openfst_path ++ fi ++fi ++ ++if test $enable_1bitsgd = yes && test x$onebitsgd_path = x ++then ++ onebitsgd_path=$(find_onebitsgd) ++ if test x$onebitsgd_path = x ++ then ++ echo Cannot locate 1BitSGD library. See ++ echo https://github.com/Microsoft/CNTK/wiki/Enabling-1bit-SGD ++ echo for installation instructions. ++ exit 1 ++ else ++ echo Found 1BitSGD library at $onebitsgd_path ++ fi ++fi ++ ++if test $enable_asgd = yes && test x$multiverso_path = x ++then ++ multiverso_path=$(find_multiverso) ++ if test x$multiverso_path = x ++ then ++ echo Build with Multiverso was requested but cannot find the code. Please check ++ echo https://github.com/Microsoft/CNTK/wiki/Multiple-GPUs-and-machines#24-data-parallel-asgd ++ echo to learn more. ++ exit 1 ++ else ++ echo Found Multiverso library at $multiverso_path ++ fi ++fi ++ + if test x$mpi_path = x + then + mpi_path=$(find_mpi) +@@ -1123,6 +1259,12 @@ fi + if test x$protobuf_path != x; then + echo PROTOBUF_PATH=$protobuf_path >> $config + fi ++if test x$multiverso_path != x; then ++ echo MULTIVERSO_PATH=$multiverso_path >> $config ++fi ++if test x$onebitsgd_path != x; then ++ echo ONEBITSGD_PATH=$onebitsgd_path >> $config ++fi + if test x$mpi_path != x; then + echo MPI_PATH=$mpi_path >> $config + fi +-- +2.11.1 + diff --git a/var/spack/repos/builtin/packages/cntk/kaldireader-openblas.patch b/var/spack/repos/builtin/packages/cntk/kaldireader-openblas.patch new file mode 100644 index 00000000000..75bd4146e76 --- /dev/null +++ b/var/spack/repos/builtin/packages/cntk/kaldireader-openblas.patch @@ -0,0 +1,32 @@ +From a5cdb4fdce55813b79e3ee6300f282ba6d7b6b85 Mon Sep 17 00:00:00 2001 +From: Jianwen WEI +Date: Fri, 14 Apr 2017 12:40:44 +0800 +Subject: [PATCH 1/1] Replace ATLAS with OpenBLAS in KaldiReader. + +--- + Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index bbd75e08c..909457963 100644 +--- a/Makefile ++++ b/Makefile +@@ -189,13 +189,13 @@ ifeq ("$(MATHLIB)","openblas") + INCLUDEPATH += $(OPENBLAS_PATH)/include + LIBPATH += $(OPENBLAS_PATH)/lib + LIBS_LIST += openblas m pthread +- CPPFLAGS += -DUSE_OPENBLAS ++ CPPFLAGS += -DUSE_OPENBLAS -DHAVE_OPENBLAS + endif + + # Set up kaldi and openfst for Kaldi2Reader if needed + ifdef KALDI_PATH + INCLUDEPATH += $(KALDI_PATH)/include $(OPENFST_PATH)/incldue +- CPPFLAGS += -DKALDI_DOUBLEPRECISION=0 -DHAVE_POSIX_MEMALIGN -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_ATLAS -DHAVE_OPENFST_GE_10400 ++ CPPFLAGS += -DKALDI_DOUBLEPRECISION=0 -DHAVE_POSIX_MEMALIGN -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_OPENFST_GE_10400 + KALDI_LIBPATH += $(KALDI_PATH)/lib $(OPENFST_PATH)/lib + KALDI_LIBS_LIST := kaldi-util kaldi-matrix kaldi-base kaldi-hmm kaldi-cudamatrix kaldi-nnet kaldi-lat + KALDI_LIBS := $(addprefix -l,$(KALDI_LIBS_LIST)) +-- +2.11.1 + diff --git a/var/spack/repos/builtin/packages/cntk/package.py b/var/spack/repos/builtin/packages/cntk/package.py new file mode 100644 index 00000000000..801c69dae49 --- /dev/null +++ b/var/spack/repos/builtin/packages/cntk/package.py @@ -0,0 +1,117 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cntk(Package): + """The Microsoft Cognitive Toolkit is a unified deep-learning toolkit + that describes neural networks as a series of computational steps + via a directed graph.""" + + homepage = "https://www.microsoft.com/en-us/research/product/cognitive-toolkit" + url = "https://github.com/Microsoft/CNTK/archive/v2.0.beta15.0.tar.gz" + + version('master', git='https://github.com/Microsoft/CNTK.git', branch='master') + version('2.0.rc1', url='https://github.com/Microsoft/CNTK/archive/v2.0.rc1.tar.gz') + + variant('opencv', default=False, description="Enable OpenCV support.") + variant('kaldi', default=False, description="Enable Kaldi support.") + variant('asgd', default=True, description="Enable DataParallelASGD powered by Multiverso.") + variant('1bitsgd', default=False, description="Enable 1bitsgd support.") + variant('cuda', default=False, description="Enable CUDA support.") + variant('debug', default=False, description="Debug build.") + + depends_on('libzip') + depends_on('openblas') + depends_on('mpi') + depends_on('boost') + depends_on('protobuf~shared') + # CNTK depends on kaldi@c02e8. + # See https://github.com/Microsoft/CNTK/blob/master/Tools/docker/CNTK-CPUOnly-Image/Dockerfile#L105-L125 + depends_on('kaldi@c024e8', when='+kaldi') + depends_on('opencv', when='+opencv') + depends_on('cuda', when='+cuda') + depends_on('cub@1.4.1', when='+cuda') + depends_on('cudnn@5.1', when='+cuda') + depends_on('nccl', when='+cuda') + depends_on('cntk1bitsgd@c8b77d', when='+1bitsgd') + depends_on('multiverso@143187', when='+asgd') + + # Patch CNTN's build process to use libs installed outside CNTK source tree + # multiverso, kaldi, openfst + patch('build.patch') + # Patch to fix BLAS inconsistency between CNTK and KaldiReader + patch('kaldireader-openblas.patch') + + def install(self, spec, prefix): + args = [] + + args.append('--with-mpi=' + spec['mpi'].prefix) + args.append('--with-openblas=' + spec['openblas'].prefix) + args.append('--with-libzip=' + spec['libzip'].prefix) + args.append('--with-boost=' + spec['boost'].prefix) + args.append('--with-protobuf=' + spec['protobuf'].prefix) + + if '+debug' in spec: + args.append('--with-buildtype=debug') + else: + args.append('--with-buildtype=release') + + if '+1bitsgd' in spec: + args.append('--1bitsgd=yes') + args.append('--with-1bitsgd={0}/include' + .format(spec['cntk1bitsgd'].prefix)) + + if '+asgd' in spec: + args.append('--asgd=yes') + args.append('--with-multiverso={0}' + .format(spec['multiverso'].prefix)) + else: + args.append('--asgd=no') + + if '+opencv' in spec: + args.append('--with-opencv=' + spec['opencv'].prefix) + + if '+kaldi' in spec: + args.append('--with-kaldi=' + spec['kaldi'].prefix) + args.append('--with-openfst=' + spec['openfst'].prefix) + + if '+cuda' in spec: + args.append('--cuda=yes') + args.append('--with-cuda={0}'.format(spec['cuda'].prefix)) + args.append('--with-cub={0}' + .format(spec['cub'].prefix.include)) + args.append('--with-cudnn={0}' + .format(spec['cudnn'].prefix)) + args.append('--with-nccl={0}'.format(spec['nccl'].prefix)) + + configure(*args) + + make() + + install_tree('bin', prefix.bin) + install_tree('lib', prefix.lib) + install_tree('Examples', join_path(prefix, 'Examples')) + install_tree('Tutorials', join_path(prefix, 'Tutorials')) diff --git a/var/spack/repos/builtin/packages/cntk1bitsgd/package.py b/var/spack/repos/builtin/packages/cntk1bitsgd/package.py new file mode 100644 index 00000000000..7cc3c7030a4 --- /dev/null +++ b/var/spack/repos/builtin/packages/cntk1bitsgd/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from os import listdir + + +class Cntk1bitsgd(Package): + """CNTK1bitSGD is the header-only + 1-bit stochastic gradient descent (1bit-SGD) library for + the Computational Network Toolkit (CNTK).""" + + homepage = "https://github.com/CNTK-components/CNTK1bitSGD" + + version('master', git='https://github.com/CNTK-components/CNTK1bitSGD.git') + version('c8b77d', git='https://github.com/CNTK-components/CNTK1bitSGD.git', + commit='c8b77d6e325a4786547b27624890276c1483aed1') + + def install(self, spec, prefix): + mkdirp(prefix.include) + for file in listdir('.'): + if file.endswith('.h'): + install(file, prefix.include) diff --git a/var/spack/repos/builtin/packages/multiverso/cmake-143187.patch b/var/spack/repos/builtin/packages/multiverso/cmake-143187.patch new file mode 100644 index 00000000000..5f2847f0199 --- /dev/null +++ b/var/spack/repos/builtin/packages/multiverso/cmake-143187.patch @@ -0,0 +1,28 @@ +From 478bcfecadafb09aa73bacab35d932851b323142 Mon Sep 17 00:00:00 2001 +From: Jianwen WEI +Date: Mon, 10 Apr 2017 15:29:50 +0800 +Subject: [PATCH 1/1] Patch 1431875. + +--- + CMakeLists.txt | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6a824f1..100b21c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -30,9 +30,10 @@ ADD_SUBDIRECTORY(Test/unittests) + ADD_SUBDIRECTORY(Applications/WordEmbedding) + ADD_SUBDIRECTORY(Applications/LogisticRegression) + +-if(USE_INSTALL_MULTIVERSO) ++if(INSTALL_MULTIVERSO) + install (DIRECTORY ${PROJECT_SOURCE_DIR}/include/multiverso DESTINATION include) +-endif(USE_INSTALL_MULTIVERSO) ++ install (DIRECTORY ${PROJECT_SOURCE_DIR}/Test DESTINATION .) ++endif(INSTALL_MULTIVERSO) + + + # uninstall target +-- +2.11.1 diff --git a/var/spack/repos/builtin/packages/multiverso/package.py b/var/spack/repos/builtin/packages/multiverso/package.py new file mode 100644 index 00000000000..15372029051 --- /dev/null +++ b/var/spack/repos/builtin/packages/multiverso/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Multiverso(CMakePackage): + """Multiverso is a parameter server based framework for + training machine learning models on big data with numbers of machines.""" + + homepage = "https://github.com/Microsoft/Multiverso" + url = "https://github.com/Microsoft/Multiverso/archive/v0.2.tar.gz" + + version('master', git='https://github.com/Microsoft/Multiverso.git', + branch='master') + version('143187', git='https://github.com/Microsoft/Multiverso.git', + commit='143187575d1cfa410100037b8aea2e767e0af637') + version('0.2', '483ca7524fea14a311389e421f2bc098') + + depends_on('mpi') + depends_on('boost') + + patch('cmake-143187.patch', when='@143187') + + def cmake_args(self): + spec = self.spec + return ['-DBOOST_ROOT:PATH=%s' % spec['boost'].prefix] From 54bfa888b96cb40c7be64c4b0f2e2459a543949a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 25 Apr 2017 10:06:05 -0700 Subject: [PATCH 0726/2394] legion: add mpi interoperability and shared libs (#3959) * legion: add mpi inoperability * legion: make +mpi the default * legion: add shared variant --- .../repos/builtin/packages/legion/package.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py index ddfa8a8b94a..2d93ee0e3aa 100644 --- a/var/spack/repos/builtin/packages/legion/package.py +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -47,9 +47,13 @@ class Legion(CMakePackage): version('17.02.0', '31ac3004e2fb0996764362d2b6f6844a') variant('debug', default=False, description='Build debug version') + variant('mpi', default=True, + description='Build on top of mpi conduit for mpi inoperability') + variant('shared', default=True, description='Build shared libraries') depends_on("cmake@3.1:", type='build') - depends_on("gasnet") + depends_on("gasnet", when='~mpi') + depends_on("gasnet+mpi", when='+mpi') def build_type(self): spec = self.spec @@ -59,4 +63,12 @@ def build_type(self): return 'Release' def cmake_args(self): - return ['-DLegion_USE_GASNet=ON', '-DLegion_BUILD_EXAMPLES=ON'] + options = [ + '-DLegion_USE_GASNet=ON', + '-DLegion_BUILD_EXAMPLES=ON', + '-DBUILD_SHARED_LIBS=%s' % ('+shared' in spec)] + + if '+mpi' in self.spec: + options.append('-DGASNet_CONDUIT=mpi') + + return options From 18dd9c086031be8338ec832a6b888b5a0352175b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 25 Apr 2017 12:10:35 -0500 Subject: [PATCH 0727/2394] Add patch to gettext to fix parallel make check (#3981) --- .../repos/builtin/packages/gettext/package.py | 12 +--- .../test-verify-parallel-make-check.patch | 61 +++++++++++++++++++ 2 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 var/spack/repos/builtin/packages/gettext/test-verify-parallel-make-check.patch diff --git a/var/spack/repos/builtin/packages/gettext/package.py b/var/spack/repos/builtin/packages/gettext/package.py index b3397419bdc..efb9c3c0886 100644 --- a/var/spack/repos/builtin/packages/gettext/package.py +++ b/var/spack/repos/builtin/packages/gettext/package.py @@ -61,6 +61,8 @@ class Gettext(AutotoolsPackage): depends_on('libunistring', when='+libunistring') # depends_on('cvs') + patch('test-verify-parallel-make-check.patch', when='@:0.19.8.1') + def configure_args(self): spec = self.spec @@ -100,13 +102,3 @@ def configure_args(self): config_args.append('--with-included-libunistring') return config_args - - def check(self): - # Test suite fails when run in parallel: - # - # FAIL: test-verify - # ================= - # - # icc: error #10236: File not found: 'test-verify.o' - # FAIL test-verify (exit status: 1) - make('check', parallel=False) diff --git a/var/spack/repos/builtin/packages/gettext/test-verify-parallel-make-check.patch b/var/spack/repos/builtin/packages/gettext/test-verify-parallel-make-check.patch new file mode 100644 index 00000000000..5f5aebcbfd7 --- /dev/null +++ b/var/spack/repos/builtin/packages/gettext/test-verify-parallel-make-check.patch @@ -0,0 +1,61 @@ +2017-04-20 Bruno Haible + + verify tests: Fix spurious failure with parallel make. + * tests/test-verify.sh: Build test-verify-try.o, not test-verify.o. + * tests/test-verify-try.c: New file. + Reported by Adam James Stewart . + +diff --git a/gettext-tools/gnulib-tests/test-verify.sh b/gettext-tools/gnulib-tests/test-verify.sh +index 3e76761..1e75d55 100755 +--- a/gettext-tools/gnulib-tests/test-verify.sh ++++ b/gettext-tools/gnulib-tests/test-verify.sh +@@ -7,8 +7,9 @@ unset MALLOC_PERTURB_ + + # Rather than figure out how to invoke the compiler with the right + # include path ourselves, we let make do it: +-(cd "$initial_cwd_" && rm -f test-verify.o \ +- && $MAKE test-verify.o >/dev/null 2>&1) \ ++(cd "$initial_cwd_" \ ++ && rm -f test-verify-try.o \ ++ && $MAKE test-verify-try.o >/dev/null 2>&1) \ + || skip_ "cannot compile error-free" + + # Now, prove that we encounter all expected compilation failures: +@@ -16,8 +17,8 @@ unset MALLOC_PERTURB_ + : >err + for i in 1 2 3 4 5; do + (cd "$initial_cwd_" +- rm -f test-verify.o +- $MAKE CFLAGS=-DEXP_FAIL=$i test-verify.o) >>out 2>>err \ ++ rm -f test-verify-try.o ++ $MAKE CFLAGS=-DEXP_FAIL=$i test-verify-try.o) >>out 2>>err \ + && { warn_ "compiler didn't detect verification failure $i"; fail=1; } + done + +diff --git a/gettext-tools/gnulib-tests/test-verify-try.c b/gettext-tools/gnulib-tests/test-verify-try.c +new file mode 100644 +index 0000000..362fb01 +--- /dev/null ++++ b/tests/test-verify-try.c +@@ -0,0 +1,21 @@ ++/* Test the "verify" module. ++ ++ Copyright (C) 2017 Free Software Foundation, Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* This is a separate source file, so that the execution of test-verify.sh ++ does not interfere with the building of the 'test-verify' program. */ ++ ++#include "test-verify.c" From 827ebe280db235ce5d11ee19b822c04ea239621c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 25 Apr 2017 12:10:55 -0500 Subject: [PATCH 0728/2394] Add latest version of NCO (#3978) --- var/spack/repos/builtin/packages/nco/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 3edca017ccd..7e52380f626 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -30,8 +30,9 @@ class Nco(AutotoolsPackage): netCDF-accessible formats""" homepage = "http://nco.sourceforge.net/" - url = "https://github.com/nco/nco/archive/4.6.5.tar.gz" + url = "https://github.com/nco/nco/archive/4.6.6.tar.gz" + version('4.6.6', 'df6fa47aaf6e41adfc0631912a7a341f') version('4.6.5', '2afd34a6bb5ff6c7ed39cf40c917b6e4') version('4.6.4', '22f4e779d0011a9c0db90fda416c8e45') version('4.6.3', '0e1d6616c65ed3a30c54cc776da4f987') From 58f2a947db98bdecb061133a7b6780fa405fbd33 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 25 Apr 2017 13:01:25 -0500 Subject: [PATCH 0729/2394] Properly ignore flake8 F811 redefinition errors (#3932) * Properly ignore flake8 F811 redefinition errors * Add unit tests for flake8 command * Allow spack flake8 to work on systems with older git * Skip flake8 unit tests for Python 2.6 and 3.3 --- .flake8 | 4 +- lib/spack/spack/cmd/flake8.py | 91 +++++++++++------- lib/spack/spack/test/cmd/flake8.py | 95 +++++++++++++++++++ .../builtin.mock/packages/boost/package.py | 83 ++++++++++++++++ ...-that-probably-only-affects-one-user.patch | 1 + .../builtin.mock/packages/flake8/package.py | 79 +++++++++++++++ .../repos/builtin/packages/metis/package.py | 4 +- .../repos/builtin/packages/qt/package.py | 8 +- 8 files changed, 324 insertions(+), 41 deletions(-) create mode 100644 lib/spack/spack/test/cmd/flake8.py create mode 100644 var/spack/repos/builtin.mock/packages/boost/package.py create mode 100644 var/spack/repos/builtin.mock/packages/flake8/hyper-specific-patch-that-fixes-some-random-bug-that-probably-only-affects-one-user.patch create mode 100644 var/spack/repos/builtin.mock/packages/flake8/package.py diff --git a/.flake8 b/.flake8 index 023f3929525..e697d5ea04d 100644 --- a/.flake8 +++ b/.flake8 @@ -11,12 +11,12 @@ # - E272: multiple spaces before keyword # # Let people use terse Python features: -# - E731 : lambda expressions +# - E731: lambda expressions # # Spack allows wildcard imports: # - F403: disable wildcard import # -# These are required to get the package.py files to test clean. +# These are required to get the package.py files to test clean: # - F405: `name` may be undefined, or undefined from star imports: `module` # - F821: undefined name `name` (needed for cmake, configure, etc.) # - F999: syntax error in doctest diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index 546a27c7658..33c06155aec 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -37,8 +37,6 @@ from spack.util.executable import * description = "runs source code style checks on Spack. requires flake8" -flake8 = None -include_untracked = True """List of directories to exclude from checks.""" exclude_directories = [spack.external_path] @@ -53,24 +51,34 @@ # exemptions applied only to package.py files. r'package.py$': { # Exempt lines with urls and descriptions from overlong line errors. - 501: [r'^\s*homepage\s*=', - r'^\s*url\s*=', - r'^\s*git\s*=', - r'^\s*svn\s*=', - r'^\s*hg\s*=', - r'^\s*version\(.*\)', - r'^\s*variant\(.*\)', - r'^\s*depends_on\(.*\)', - r'^\s*extends\(.*\)', - r'^\s*patch\(.*\)'], + 'E501': [ + r'^\s*homepage\s*=', + r'^\s*url\s*=', + r'^\s*git\s*=', + r'^\s*svn\s*=', + r'^\s*hg\s*=', + r'^\s*list_url\s*=', + r'^\s*version\(.*\)', + r'^\s*variant\(.*\)', + r'^\s*provides\(.*\)', + r'^\s*extends\(.*\)', + r'^\s*depends_on\(.*\)', + r'^\s*conflicts\(.*\)', + r'^\s*resource\(.*\)', + r'^\s*patch\(.*\)', + ], # Exempt '@when' decorated functions from redefinition errors. - 811: [r'^\s*\@when\(.*\)'], + 'F811': [ + r'^\s*@when\(.*\)', + ], }, # exemptions applied to all files. r'.py$': { # Exempt lines with URLs from overlong line errors. - 501: [r'(https?|ftp|file)\:'] + 'E501': [ + r'(https?|ftp|file)\:', + ] }, } @@ -81,7 +89,7 @@ for file_pattern, error_dict in exemptions.items()) -def changed_files(): +def changed_files(args): """Get list of changed files in the Spack repository.""" git = which('git', required=True) @@ -92,23 +100,30 @@ def changed_files(): # Add changed files that have been staged but not yet committed ['diff', '--name-only', '--diff-filter=ACMR', '--cached'], # Add changed files that are unstaged - ['diff', '--name-only', '--diff-filter=ACMR']] + ['diff', '--name-only', '--diff-filter=ACMR'], + ] # Add new files that are untracked - if include_untracked: + if args.untracked: git_args.append(['ls-files', '--exclude-standard', '--other']) excludes = [os.path.realpath(f) for f in exclude_directories] changed = set() - for git_arg_list in git_args: - arg_list = git_arg_list + ['--', '*.py'] - files = [f for f in git(*arg_list, output=str).split('\n') if f] + for arg_list in git_args: + files = git(*arg_list, output=str).split('\n') + for f in files: - # don't look at files that are in the exclude locations + # Ignore non-Python files + if not f.endswith('.py'): + continue + + # Ignore files in the exclude locations if any(os.path.realpath(f).startswith(e) for e in excludes): continue + changed.add(f) + return sorted(changed) @@ -120,7 +135,17 @@ def filter_file(source, dest, output=False): with open(dest, 'w') as outfile: for line in infile: - line = line.rstrip() + # Only strip newline characters + # We still want to catch trailing whitespace warnings + line = line.rstrip('\n') + + if line == '# flake8: noqa': + # Entire file is ignored + break + + if line.endswith('# noqa'): + # Line is already ignored + continue for file_pattern, errors in exemptions.items(): if not file_pattern.search(source): @@ -129,7 +154,10 @@ def filter_file(source, dest, output=False): for code, patterns in errors.items(): for pattern in patterns: if pattern.search(line): - line += (" # NOQA: E%d" % code) + if '# noqa: ' in line: + line += ',{0}'.format(code) + else: + line += ' # noqa: {0}'.format(code) break oline = line + '\n' @@ -157,10 +185,7 @@ def setup_parser(subparser): def flake8(parser, args): - # Just use this to check for flake8 -- we actually execute it with Popen. - global flake8, include_untracked flake8 = which('flake8', required=True) - include_untracked = args.untracked temp = tempfile.mkdtemp() try: @@ -174,7 +199,7 @@ def prefix_relative(path): with working_dir(spack.prefix): if not file_list: - file_list = changed_files() + file_list = changed_files(args) shutil.copy('.flake8', os.path.join(temp, '.flake8')) print('=======================================================') @@ -182,7 +207,7 @@ def prefix_relative(path): print() print('Modified files:') for filename in file_list: - print(" %s" % filename.strip()) + print(' {0}'.format(filename.strip())) print('=======================================================') # filter files into a temporary directory with exemptions added. @@ -202,20 +227,20 @@ def prefix_relative(path): else: # print results relative to current working directory def cwd_relative(path): - return '%s: [' % os.path.relpath( - os.path.join(spack.prefix, path.group(1)), os.getcwd()) + return '{0}: ['.format(os.path.relpath( + os.path.join(spack.prefix, path.group(1)), os.getcwd())) for line in output.split('\n'): print(re.sub(r'^(.*): \[', cwd_relative, line)) if flake8.returncode != 0: - print("Flake8 found errors.") + print('Flake8 found errors.') sys.exit(1) else: - print("Flake8 checks were clean.") + print('Flake8 checks were clean.') finally: if args.keep_temp: - print("temporary files are in ", temp) + print('Temporary files are in: ', temp) else: shutil.rmtree(temp, ignore_errors=True) diff --git a/lib/spack/spack/test/cmd/flake8.py b/lib/spack/spack/test/cmd/flake8.py new file mode 100644 index 00000000000..bde8d199a7a --- /dev/null +++ b/lib/spack/spack/test/cmd/flake8.py @@ -0,0 +1,95 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 argparse +import os +import pytest +import sys + +from llnl.util.filesystem import FileFilter + +import spack +from spack.cmd.flake8 import * +from spack.repository import Repo + + +@pytest.fixture(scope='module') +def parser(): + """Returns the parser for the ``flake8`` command""" + parser = argparse.ArgumentParser() + setup_parser(parser) + return parser + + +@pytest.fixture(scope='module') +def flake8_package(): + """Flake8 only checks files that have been modified. + This fixture makes a small change to the ``flake8`` + mock package, yields the filename, then undoes the + change on cleanup. + """ + repo = Repo(spack.mock_packages_path) + filename = repo.filename_for_package_name('flake8') + package = FileFilter(filename) + + # Make the change + package.filter('unmodified', 'modified') + + yield filename + + # Undo the change + package.filter('modified', 'unmodified') + + +def test_changed_files(parser, flake8_package): + args = parser.parse_args() + + # changed_files returns file paths relative to the root + # directory of Spack. Convert to absolute file paths. + files = changed_files(args) + files = [os.path.join(spack.spack_root, path) for path in files] + + # There will likely be other files that have changed + # when these tests are run + assert flake8_package in files + + +# As of flake8 3.0.0, Python 2.6 and 3.3 are no longer supported +# http://flake8.pycqa.org/en/latest/release-notes/3.0.0.html +@pytest.mark.skipif( + sys.version_info[:2] <= (2, 6) or + (3, 0) <= sys.version_info[:2] <= (3, 3), + reason='flake8 no longer supports Python 2.6 or 3.3 and older') +def test_flake8(parser, flake8_package): + # Only test the flake8_package that we modified + # Otherwise, the unit tests would fail every time + # the flake8 tests fail + args = parser.parse_args([flake8_package]) + + flake8(parser, args) + + # Get even more coverage + args = parser.parse_args(['--output', '--root-relative', flake8_package]) + + flake8(parser, args) diff --git a/var/spack/repos/builtin.mock/packages/boost/package.py b/var/spack/repos/builtin.mock/packages/boost/package.py new file mode 100644 index 00000000000..5d86c4559f8 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/boost/package.py @@ -0,0 +1,83 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Boost(Package): + """Fake boost package.""" + + homepage = "http://www.boost.org" + url = "http://downloads.sourceforge.net/project/boost/boost/1.63.0/boost_1_63_0.tar.bz2" + + version('1.63.0', '1c837ecd990bb022d07e7aab32b09847') + + default_install_libs = set(['atomic', + 'chrono', + 'date_time', + 'filesystem', + 'graph', + 'iostreams', + 'locale', + 'log', + 'math', + 'program_options', + 'random', + 'regex', + 'serialization', + 'signals', + 'system', + 'test', + 'thread', + 'timer', + 'wave']) + + # mpi/python are not installed by default because they pull in many + # dependencies and/or because there is a great deal of customization + # possible (and it would be difficult to choose sensible defaults) + default_noinstall_libs = set(['mpi', 'python']) + + all_libs = default_install_libs | default_noinstall_libs + + for lib in all_libs: + variant(lib, default=(lib not in default_noinstall_libs), + description="Compile with {0} library".format(lib)) + + variant('debug', default=False, + description='Switch to the debug version of Boost') + variant('shared', default=True, + description="Additionally build shared libraries") + variant('multithreaded', default=True, + description="Build multi-threaded versions of libraries") + variant('singlethreaded', default=False, + description="Build single-threaded versions of libraries") + variant('icu', default=False, + description="Build with Unicode and ICU suport") + variant('graph', default=False, + description="Build the Boost Graph library") + variant('taggedlayout', default=False, + description="Augment library names with build options") + + def install(self, spec, prefix): + pass diff --git a/var/spack/repos/builtin.mock/packages/flake8/hyper-specific-patch-that-fixes-some-random-bug-that-probably-only-affects-one-user.patch b/var/spack/repos/builtin.mock/packages/flake8/hyper-specific-patch-that-fixes-some-random-bug-that-probably-only-affects-one-user.patch new file mode 100644 index 00000000000..b8c9065e4b6 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/flake8/hyper-specific-patch-that-fixes-some-random-bug-that-probably-only-affects-one-user.patch @@ -0,0 +1 @@ +Fake patch diff --git a/var/spack/repos/builtin.mock/packages/flake8/package.py b/var/spack/repos/builtin.mock/packages/flake8/package.py new file mode 100644 index 00000000000..bd062d71bca --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/flake8/package.py @@ -0,0 +1,79 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Flake8(Package): + """Package containing as many PEP 8 violations as possible. + All of these violations are exceptions that we allow in + package.py files.""" + + # Used to tell whether or not the package has been modified + state = 'unmodified' + + # Make sure pre-existing noqa is not interfered with + blatant_violation = 'line-that-has-absolutely-no-execuse-for-being-over-79-characters' # noqa + blatant_violation = 'line-that-has-absolutely-no-execuse-for-being-over-79-characters' # noqa: E501 + + # Keywords exempt from line-length checks + homepage = '#####################################################################' + url = '#####################################################################' + git = '#####################################################################' + svn = '#####################################################################' + hg = '#####################################################################' + list_url = '#####################################################################' + + # URL strings exempt from line-length checks + # http://######################################################################## + # https://####################################################################### + # ftp://######################################################################### + # file://######################################################################## + + # Directives exempt from line-length checks + version('2.0', '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef') + version('1.0', '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef') + + variant('super-awesome-feature', default=True, description='Enable super awesome feature') + variant('somewhat-awesome-feature', default=False, description='Enable somewhat awesome feature') + + provides('lapack', when='@2.0+super-awesome-feature+somewhat-awesome-feature') + + extends('python', ignore='bin/(why|does|every|package|that|depends|on|numpy|need|to|copy|f2py3?)') + + depends_on('boost+atomic+chrono+date_time~debug+filesystem~graph~icu+iostreams+locale+log+math~mpi+multithreaded+program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer+wave') + + conflicts('+super-awesome-feature', when='%intel@16:17+somewhat-awesome-feature') + + resource(name='Deez-Nuts', destination='White-House', placement='President', when='@2020', url='www.elect-deez-nuts.com') + + patch('hyper-specific-patch-that-fixes-some-random-bug-that-probably-only-affects-one-user.patch', when='%gcc@3.2.2:3.2.3') + + def install(self, spec, prefix): + pass + + # '@when' decorated functions are exempt from redefinition errors + @when('@2.0') + def install(self, spec, prefix): + pass diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index c927c22a1be..454bb970377 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -84,7 +84,7 @@ def patch(self): filter_file('#define MAX_JBUFS 128', '#define MAX_JBUFS 24', join_path(source_path, 'GKlib', 'error.c')) - @when('@:4') # noqa: F811 + @when('@:4') def install(self, spec, prefix): # Process library spec and options if any('+{0}'.format(v) in spec for v in ['gdb', 'int64', 'real64']): @@ -175,7 +175,7 @@ def install(self, spec, prefix): Executable(test_bin('mesh2dual'))(test_graph('metis.mesh')) """ - @when('@5:') # noqa: F811 + @when('@5:') def install(self, spec, prefix): source_directory = self.stage.source_path build_directory = join_path(source_directory, 'build') diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index b27bc3fe078..b9c7e1f5c3e 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -251,7 +251,7 @@ def common_config_args(self): # Don't disable all the database drivers, but should # really get them into spack at some point. - @when('@3') # noqa: F811 + @when('@3') def configure(self): # A user reported that this was necessary to link Qt3 on ubuntu. # However, if LD_LIBRARY_PATH is not set the qt build fails, check @@ -268,7 +268,7 @@ def configure(self): '-release', '-fast') - @when('@4') # noqa: F811 + @when('@4') def configure(self): configure('-fast', '-{0}gtkstyle'.format('' if '+gtk' in self.spec else 'no-'), @@ -276,7 +276,7 @@ def configure(self): '-arch', str(self.spec.architecture.target), *self.common_config_args) - @when('@5.0:5.6') # noqa: F811 + @when('@5.0:5.6') def configure(self): webkit_args = [] if '+webkit' in self.spec else ['-skip', 'qtwebkit'] configure('-no-eglfs', @@ -284,7 +284,7 @@ def configure(self): '-{0}gtkstyle'.format('' if '+gtk' in self.spec else 'no-'), *(webkit_args + self.common_config_args)) - @when('@5.7:') # noqa: F811 + @when('@5.7:') def configure(self): config_args = self.common_config_args From fc9896ed45afe1b5ec228ed3ceb2b27ea2a1854c Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 25 Apr 2017 21:54:53 +0200 Subject: [PATCH 0730/2394] hooks take spec as an argument (instead of pkg) (#3967) --- lib/spack/spack/hooks/__init__.py | 9 +++++---- lib/spack/spack/hooks/extensions.py | 5 +++-- lib/spack/spack/hooks/licensing.py | 9 ++++++--- lib/spack/spack/hooks/module_file_generation.py | 8 ++++---- lib/spack/spack/hooks/sbang.py | 6 +++--- lib/spack/spack/package.py | 13 ++++++------- 6 files changed, 27 insertions(+), 23 deletions(-) diff --git a/lib/spack/spack/hooks/__init__.py b/lib/spack/spack/hooks/__init__.py index 6454a865b6f..9ed04a4768e 100644 --- a/lib/spack/spack/hooks/__init__.py +++ b/lib/spack/spack/hooks/__init__.py @@ -31,10 +31,11 @@ Currently the following hooks are supported: - * pre_install() - * post_install() - * pre_uninstall() - * post_uninstall() + * pre_run() + * pre_install(spec) + * post_install(spec) + * pre_uninstall(spec) + * post_uninstall(spec) This can be used to implement support for things like module systems (e.g. modules, dotkit, etc.) or to add other custom diff --git a/lib/spack/spack/hooks/extensions.py b/lib/spack/spack/hooks/extensions.py index 070b309a431..7d2a39e24f0 100644 --- a/lib/spack/spack/hooks/extensions.py +++ b/lib/spack/spack/hooks/extensions.py @@ -24,8 +24,9 @@ ############################################################################## -def pre_uninstall(pkg): - assert(pkg.spec.concrete) +def pre_uninstall(spec): + pkg = spec.package + assert spec.concrete if pkg.is_extension: if pkg.activated: diff --git a/lib/spack/spack/hooks/licensing.py b/lib/spack/spack/hooks/licensing.py index 9a244dbdef7..85f7a96c317 100644 --- a/lib/spack/spack/hooks/licensing.py +++ b/lib/spack/spack/hooks/licensing.py @@ -29,8 +29,9 @@ from llnl.util.filesystem import join_path, mkdirp -def pre_install(pkg): +def pre_install(spec): """This hook handles global license setup for licensed software.""" + pkg = spec.package if pkg.license_required and not pkg.spec.external: set_up_license(pkg) @@ -142,9 +143,11 @@ def write_license_file(pkg, license_path): license.close() -def post_install(pkg): +def post_install(spec): """This hook symlinks local licenses to the global license for - licensed software.""" + licensed software. + """ + pkg = spec.package if pkg.license_required and not pkg.spec.external: symlink_license(pkg) diff --git a/lib/spack/spack/hooks/module_file_generation.py b/lib/spack/spack/hooks/module_file_generation.py index ff9617ff1ca..b02c2e871db 100644 --- a/lib/spack/spack/hooks/module_file_generation.py +++ b/lib/spack/spack/hooks/module_file_generation.py @@ -26,13 +26,13 @@ from six import iteritems -def post_install(pkg): +def post_install(spec): for item, cls in iteritems(spack.modules.module_types): - generator = cls(pkg.spec) + generator = cls(spec) generator.write() -def post_uninstall(pkg): +def post_uninstall(spec): for item, cls in iteritems(spack.modules.module_types): - generator = cls(pkg.spec) + generator = cls(spec) generator.remove() diff --git a/lib/spack/spack/hooks/sbang.py b/lib/spack/spack/hooks/sbang.py index fb824470e2d..17f6ac25282 100644 --- a/lib/spack/spack/hooks/sbang.py +++ b/lib/spack/spack/hooks/sbang.py @@ -102,14 +102,14 @@ def filter_shebangs_in_directory(directory, filenames=None): filter_shebang(path) -def post_install(pkg): +def post_install(spec): """This hook edits scripts so that they call /bin/bash $spack_prefix/bin/sbang instead of something longer than the shebang limit. """ - if pkg.spec.external: + if spec.external: tty.debug('SKIP: shebang filtering [external package]') return - for directory, _, filenames in os.walk(pkg.prefix): + for directory, _, filenames in os.walk(spec.prefix): filter_shebangs_in_directory(directory, filenames) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 4a42fef3379..506e44ec452 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1112,7 +1112,7 @@ def _process_external_package(self, explicit): # post-install hooks to generate module files message = '{s.name}@{s.version} : generating module file' tty.msg(message.format(s=self)) - spack.hooks.post_install(self) + spack.hooks.post_install(self.spec) # Add to the DB message = '{s.name}@{s.version} : registering into DB' tty.msg(message.format(s=self)) @@ -1248,7 +1248,7 @@ def build_process(input_stream): with self._stage_and_write_lock(): # Run the pre-install hook in the child process after # the directory is created. - spack.hooks.pre_install(self) + spack.hooks.pre_install(self.spec) if fake: self.do_fake_install() else: @@ -1288,7 +1288,7 @@ def build_process(input_stream): self.spec, self.prefix) self.log() # Run post install hooks before build stage is removed. - spack.hooks.post_install(self) + spack.hooks.post_install(self.spec) # Stop timer. self._total_time = time.time() - start_time @@ -1526,9 +1526,9 @@ def uninstall_by_spec(spec, force=False): # Pre-uninstall hook runs first. with spack.store.db.prefix_write_lock(spec): - # TODO: hooks should take specs, not packages. + if pkg is not None: - spack.hooks.pre_uninstall(pkg) + spack.hooks.pre_uninstall(spec) # Uninstalling in Spack only requires removing the prefix. if not spec.external: @@ -1541,9 +1541,8 @@ def uninstall_by_spec(spec, force=False): spack.store.db.remove(spec) tty.msg("Successfully uninstalled %s" % spec.short_spec) - # TODO: refactor hooks to use specs, not packages. if pkg is not None: - spack.hooks.post_uninstall(pkg) + spack.hooks.post_uninstall(spec) tty.msg("Successfully uninstalled %s" % spec.short_spec) From 3e508884fac8a52ea0d2a1887fd6bdb0fc5a0abe Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 25 Apr 2017 12:58:24 -0700 Subject: [PATCH 0731/2394] spack flake8 should exempt line-wrapped directives (#3990) - Omit final paren from regular expressions in cmd/flake8.py - Allows long directives to be exempted even if they are wrapped. --- lib/spack/spack/cmd/flake8.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index 33c06155aec..6cfd98dbb42 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -58,14 +58,14 @@ r'^\s*svn\s*=', r'^\s*hg\s*=', r'^\s*list_url\s*=', - r'^\s*version\(.*\)', - r'^\s*variant\(.*\)', - r'^\s*provides\(.*\)', - r'^\s*extends\(.*\)', - r'^\s*depends_on\(.*\)', - r'^\s*conflicts\(.*\)', - r'^\s*resource\(.*\)', - r'^\s*patch\(.*\)', + r'^\s*version\(', + r'^\s*variant\(', + r'^\s*provides\(', + r'^\s*extends\(', + r'^\s*depends_on\(', + r'^\s*conflicts\(', + r'^\s*resource\(', + r'^\s*patch\(', ], # Exempt '@when' decorated functions from redefinition errors. 'F811': [ From ef09049f24e6410750f51638ba3a7866959fb9d1 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 25 Apr 2017 13:06:07 -0700 Subject: [PATCH 0732/2394] New package: pax-utils (#3980) --- .../builtin/packages/pax-utils/package.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pax-utils/package.py diff --git a/var/spack/repos/builtin/packages/pax-utils/package.py b/var/spack/repos/builtin/packages/pax-utils/package.py new file mode 100644 index 00000000000..3c0b81034ea --- /dev/null +++ b/var/spack/repos/builtin/packages/pax-utils/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PaxUtils(AutotoolsPackage): + """ELF utils that can check files for security relevant properties""" + + homepage = "https://wiki.gentoo.org/index.php?title=Project:Hardened/PaX_Utilities" + url = "https://dev.gentoo.org/~vapier/dist/pax-utils-1.2.2.tar.xz" + + version('1.2.2', 'a580468318f0ff42edf4a8cd314cc942') From 95a0e6a5fd66a6b0b54acc226aa5e07bbfca19ed Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 25 Apr 2017 15:45:25 -0500 Subject: [PATCH 0733/2394] Add list_url for fftw (#3985) --- var/spack/repos/builtin/packages/fftw/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 3a283e7eb0c..062b0a0eb0c 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -35,6 +35,7 @@ class Fftw(AutotoolsPackage): homepage = "http://www.fftw.org" url = "http://www.fftw.org/fftw-3.3.4.tar.gz" + list_url = "http://www.fftw.org/download.html" version('3.3.6-pl2', '927e481edbb32575397eb3d62535a856') version('3.3.5', '6cc08a3b9c7ee06fdd5b9eb02e06f569') From 1617b887590e74414787fe4c480d554c9a9112d5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 25 Apr 2017 15:45:52 -0500 Subject: [PATCH 0734/2394] Mark 1.64.0 unstable until +mpi+python fixed. (#3984) --- var/spack/repos/builtin/packages/boost/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 2f108dcac8c..487445ab102 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -42,8 +42,15 @@ class Boost(Package): list_url = "http://sourceforge.net/projects/boost/files/boost/" list_depth = 1 + # NOTE: 1.64.0 seems fine for *most* applications, but if you need + # +python and +mpi, there seem to be errors with out-of-date + # API calls from mpi/python. + # See: https://github.com/LLNL/spack/issues/3963 version('1.64.0', '93eecce2abed9d2442c9676914709349') - version('1.63.0', '1c837ecd990bb022d07e7aab32b09847') + + # Set previous release to preferred for now, can be removed + # once boost+python+mpi is fixed. + version('1.63.0', '1c837ecd990bb022d07e7aab32b09847', preferred=True) version('1.62.0', '5fb94629535c19e48703bdb2b2e9490f') version('1.61.0', '6095876341956f65f9d35939ccea1a9f') version('1.60.0', '65a840e1a0b13a558ff19eeb2c4f0cbe') From af4893f854fccdbc8554bda411c209512cf418bf Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 25 Apr 2017 16:12:40 -0500 Subject: [PATCH 0735/2394] Add latest version of libpng (#3987) --- var/spack/repos/builtin/packages/libpng/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libpng/package.py b/var/spack/repos/builtin/packages/libpng/package.py index 46bbcebb89a..04940dde147 100644 --- a/var/spack/repos/builtin/packages/libpng/package.py +++ b/var/spack/repos/builtin/packages/libpng/package.py @@ -29,8 +29,9 @@ class Libpng(AutotoolsPackage): """libpng is the official PNG reference library.""" homepage = "http://www.libpng.org/pub/png/libpng.html" - url = "http://download.sourceforge.net/libpng/libpng-1.6.27.tar.gz" + url = "http://download.sourceforge.net/libpng/libpng-1.6.29.tar.gz" + version('1.6.29', '68553080685f812d1dd7a6b8215c37d8') version('1.6.27', '58698519e9f6126c1caeefc28dbcbd5f') # From http://www.libpng.org/pub/png/libpng.html (2017-01-04) # Virtually all libpng versions through 1.6.26, 1.5.27, From 4a7a4f5cd346df6691cb2a673a908024b4c57776 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 25 Apr 2017 16:56:42 -0500 Subject: [PATCH 0736/2394] Add latest version of freetype (#3989) --- var/spack/repos/builtin/packages/freetype/package.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/freetype/package.py b/var/spack/repos/builtin/packages/freetype/package.py index 4446ba5666b..f574677af97 100644 --- a/var/spack/repos/builtin/packages/freetype/package.py +++ b/var/spack/repos/builtin/packages/freetype/package.py @@ -32,14 +32,15 @@ class Freetype(AutotoolsPackage): of most vector and bitmap font formats.""" homepage = "https://www.freetype.org/index.html" - url = "http://download.savannah.gnu.org/releases/freetype/freetype-2.7.tar.gz" + url = "http://download.savannah.gnu.org/releases/freetype/freetype-2.7.1.tar.gz" + version('2.7.1', '78701bee8d249578d83bb9a2f3aa3616') version('2.7', '337139e5c7c5bd645fe130608e0fa8b5') version('2.5.3', 'cafe9f210e45360279c730d27bf071e9') depends_on('libpng') depends_on('bzip2') - depends_on('pkg-config@0.9.0:', type='build') - + depends_on('pkg-config@0.24:', type='build') + def configure_args(self): return ['--with-harfbuzz=no'] From d04ae9a2b4c19e45c99f3af3c6d6a2599486ee05 Mon Sep 17 00:00:00 2001 From: Barry Smith Date: Tue, 25 Apr 2017 18:09:30 -0500 Subject: [PATCH 0737/2394] xsdk version 0.2.0 (#3928) * xSDK: a bundle/meta package that simple installs a series of packages with suitable specs This is based on struggles with previous attempts at such a bundler Funded-by: IDEAS Project: IDEAS/xSDK Time: 12 hours * PETSc needs c++11 when built with Trilinos * Added alquimia package * remove direct setting of cpp in petsc/package.py since it doesn't work on some systems. Funded-by: IDEAS Project: IDEAS/xSDK Time: .3 hours Reported-by: Mark A. Berrill * provide the MPI compilers to PETSc configure with --with-cc etc instead of --with-mpi-dir Funded-by: IDEAS Project: IDEAS/xSDK * Spack bug fix issue #3144 String could contain /n which resulting in spack generating warning message to stderr on each use of compiler which configure interpreted as failing compiler Thanks-to: Mark A. Berrill * Fixed alquimia package Alquimia expects PETSC_DIR and PETSC_ARCH to be defined, and refuses to install if they are not. Spack does not define PETSC_ ARCH, so Alquimia will not install. This patch does two things to fix the alquimia build: 1. A patch has been added to remove the dependency on PETSC_ARCH. 2. Alquimia currently depends on old versions of PETSc and pflotran. @ghammond86 updated the alquimia interfaces to use more recent versions, but his patch is still sitting in an alquimia pull request. As a result, the spack installer now uses his fork of alquimia. This is a temporary fix until his pull request is accepted. * Need to pass to Alquimia the MPI compilers, not the raw compilers Otherwise the PETSc tests do not produce executables that can run because they are not linked against MPI libraries Funded-by: IDEAS Project: IDEAS/xSDK Time: .5 hours * Add alquimia to xSDK build Funded-by: IDEAS Project: IDEAS/xSDK * Fix flake8 errors for xsdk packages * Add xsdk support for xsdk version xsdk-0.2.0 Note that currently it is just dummy code, but will eventually use a xsdk-0.2.0 tag for each package it installs. Funded-by: IDEAS Project: IDEAS/xSDK Time: .7 hours * Do not build Mumps by default for PETSc since it is not portable, for example to Cray Allow alquimia to accept PETSc even if the PETSc test executable cannot run since this is a problem on Cray. Reported-by: Alicia Marie Klinvex * Add xsdk-0.2.0-rc1 tag for xsdk-0.2.0 installs * Switch alquimia download site back to standard location since they have incorporated Glenn Hammond's fixes Also it no longer needs the patch to the Alquimia cmake Funded-by: IDEAS Project: IDEAS/xSDK Reported-by: Sergi Molins Rafa * update hypre to use the latest release candidate for xsdk 0.2.0 Funded-by: IDEAS Project: IDEAS/xSDK Reported-by: Ulrike Meier Yang * Re-added patch to alquimia The patch was out of date and has been updated accordingly. * Added Tpetra-free option to Trilinos The Tpetra stack takes forever to build and is not used by any of the IDEAS teams, so there should be an option to disable it. I have added this option and updated the xSDK accordingly. I also disabled xSDKTrilinos in the xSDK, since none of the apps teams currently use it, and it's largely Tpetra-based. * Removed alquimia patch from develop version The patch has been incorporated into alquimia and is no longer necessary for the develop version. The tagged version has not been updated accordingly and still needs the patch for now. (When the tagged version gets updated, the patch does need to be removed from spack altogether, or it will break the build.) * Removed patch from alquimia It has been incorporated into alquimia, both the develop and rc2 tagged versions. The 0.2.0 version of alquimia has been updated to tag rc2 rather than rc1. * update xsdk-0.2.0 to depend on PETSc xsdk-0.2.0-rc2 which fixes for Apple xcode 8.3 Commit-type: bug-fix Funded-by: IDEAS Project: IDEAS/xSDK * import sys got lost in merge with develop * Update xsdk packages to use xsdk-0.2.0 tag Commit-type: feature Funded-by: IDEAS Project: ECP * Fixes for Flake8 note, had to ignore some long lines due to a single string * simple improvements to XDK packages as suggested by Spack pull request reviewers Commit-type: style-fix Funded-by: IDEAS Project: xSDK * Removed unneeded : after develop as requested by Denis Davydov in pull request review Commit-type: style-fix Funded-by: IDEAS Project: xSDK Thanks-to: Denis Davydov * Removed change that may not be needed due to updates in PETSc spack file such as using mpicc etc directly Commit-type: bug-fix Funded-by: IDEAS Project: xSDK Thanks-to: Adam J. Stewart * Do not turn on xSDKTrilinos for xSDK builds since it requires tpetra Commit-type: bug-fix Funded-by: IDEAS Project: xSDK * comment why MUMPS is disabled by default for PETSc so that others won't try to enable it when modifying petsc package next time Commit-type: documentation Funded-by: IDEAS Project: xSDK Thanks-to: Denis Davydov --- .../builtin/packages/alquimia/package.py | 74 ++++++++++++++++ .../repos/builtin/packages/hypre/package.py | 1 + .../repos/builtin/packages/petsc/package.py | 39 +++++---- .../builtin/packages/pflotran/package.py | 9 +- .../builtin/packages/superlu-dist/package.py | 1 + .../builtin/packages/trilinos/package.py | 18 +++- .../repos/builtin/packages/xsdk/package.py | 84 +++++++++++++++++++ .../builtin/packages/xsdktrilinos/package.py | 9 +- 8 files changed, 210 insertions(+), 25 deletions(-) create mode 100644 var/spack/repos/builtin/packages/alquimia/package.py create mode 100644 var/spack/repos/builtin/packages/xsdk/package.py diff --git a/var/spack/repos/builtin/packages/alquimia/package.py b/var/spack/repos/builtin/packages/alquimia/package.py new file mode 100644 index 00000000000..9e35aa9e15b --- /dev/null +++ b/var/spack/repos/builtin/packages/alquimia/package.py @@ -0,0 +1,74 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Alquimia(CMakePackage): + """Alquimia is an interface that exposes the capabilities + of mature geochemistry codes such as CrunchFlow and PFLOTRAN""" + + homepage = "https://github.com/LBL-EESA/alquimia-dev" + + version('xsdk-0.2.0', git='https://github.com/LBL-EESA/alquimia-dev.git', tag='xsdk-0.2.0') + version('develop', git='https://github.com/LBL-EESA/alquimia-dev.git') + + variant('shared', default=True, + description='Enables the build of shared libraries') + variant('debug', default=False, + description='Builds a debug version of the libraries') + + depends_on('mpi') + depends_on('hdf5') + depends_on('pflotran@xsdk-0.2.0', when='@xsdk-0.2.0') + depends_on('pflotran@develop', when='@develop') + depends_on('petsc@xsdk-0.2.0', when='@xsdk-0.2.0') + depends_on('petsc@develop', when='@develop') + + def cmake_args(self): + spec = self.spec + + options = ['-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, + '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc, + '-DUSE_XSDK_DEFAULTS=YES', + '-DCMAKE_BUILD_TYPE:STRING=%s' % ( + 'DEBUG' if '+debug' in spec else 'RELEASE'), + '-DXSDK_ENABLE_DEBUG:STRING=%s' % ( + 'YES' if '+debug' in spec else 'NO'), + '-DBUILD_SHARED_LIBS:BOOL=%s' % ( + 'ON' if '+shared' in spec else 'OFF'), + '-DTPL_ENABLE_MPI:BOOL=ON', + '-DMPI_BASE_DIR:PATH=%s' % spec['mpi'].prefix, + '-DTPL_ENABLE_HDF5:BOOL=ON', + '-DXSDK_WITH_PFLOTRAN:BOOL=ON', + # This is not good. + # It assumes that the .a file exists and is not a .so + '-DTPL_PFLOTRAN_LIBRARIES=%s' % ( + spec['pflotran'].prefix.lib + "/libpflotranchem.a"), + '-DTPL_PFLOTRAN_INCLUDE_DIRS=%s' % ( + spec['pflotran'].prefix.include), + '-DTPL_ENABLE_PETSC:BOOL=ON', + '-DPETSC_EXECUTABLE_RUNS=ON', + '-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % self.prefix] + return options diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index 55886d86fa5..67a636de447 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -36,6 +36,7 @@ class Hypre(Package): url = "http://computation.llnl.gov/project/linear_solvers/download/hypre-2.10.0b.tar.gz" version('develop', git='https://github.com/LLNL/hypre', tag='master') + version('xsdk-0.2.0', git='https://github.com/LLNL/hypre', tag='xsdk-0.2.0') version('2.11.2', 'd507943a1a3ce5681c3308e2f3a6dd34') version('2.11.1', '3f02ef8fd679239a6723f60b7f796519') version('2.10.1', 'dc048c4cabb3cd549af72591474ad674') diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index d3c18955087..4e2effd9ad2 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -23,8 +23,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -import os import sys +import os from spack import * @@ -38,8 +38,7 @@ class Petsc(Package): url = "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.5.3.tar.gz" version('develop', git='https://bitbucket.org/petsc/petsc.git', tag='master') - version('for-pflotran-0.1.0', git='https://bitbucket.org/petsc/petsc.git', - commit='7943f4e1472fff9cf1fc630a1100136616e4970f') + version('xsdk-0.2.0', git='https://bitbucket.org/petsc/petsc.git', tag='xsdk-0.2.0') version('3.7.5', 'f00f6e6a3bac39052350dd47194b58a3') version('3.7.4', 'aaf94fa54ef83022c14091f10866eedf') @@ -66,11 +65,15 @@ class Petsc(Package): variant('boost', default=True, description='Activates support for Boost') variant('hypre', default=True, description='Activates support for Hypre (only parallel)') - variant('mumps', default=True, + # Mumps is disabled by default, because it depends on Scalapack + # which is not portable to all HPC systems + variant('mumps', default=False, description='Activates support for MUMPS (only parallel' ' and 32bit indices)') variant('superlu-dist', default=True, description='Activates support for SuperluDist (only parallel)') + variant('trilinos', default=False, + description='Activates support for Trilinos (only parallel)') variant('int64', default=False, description='Compile with 64bit indices') @@ -106,15 +109,24 @@ class Petsc(Package): # conflict in headers see # https://bitbucket.org/petsc/petsc/src/90564b43f6b05485163c147b464b5d6d28cde3ef/config/BuildSystem/config/packages/hypre.py depends_on('hypre~internal-superlu~int64', when='+hypre+mpi~complex~int64') + depends_on('hypre@xsdk-0.2.0~internal-superlu+int64', when='@xsdk-0.2.0+hypre+mpi~complex+int64') + depends_on('hypre@xsdk-0.2.0~internal-superlu~int64', when='@xsdk-0.2.0+hypre+mpi~complex~int64') + depends_on('hypre@develop~internal-superlu+int64', when='@develop+hypre+mpi~complex+int64') + depends_on('hypre@develop~internal-superlu~int64', when='@develop+hypre+mpi~complex~int64') depends_on('hypre~internal-superlu+int64', when='+hypre+mpi~complex+int64') depends_on('superlu-dist@:4.3~int64', when='@3.4.4:3.6.4+superlu-dist+mpi~int64') depends_on('superlu-dist@:4.3+int64', when='@3.4.4:3.6.4+superlu-dist+mpi+int64') depends_on('superlu-dist@5.0.0:~int64', when='@3.7:+superlu-dist+mpi~int64') depends_on('superlu-dist@5.0.0:+int64', when='@3.7:+superlu-dist+mpi+int64') - depends_on('superlu-dist@5.0.0:~int64', when='@for-pflotran-0.1.0+superlu-dist+mpi~int64') - depends_on('superlu-dist@5.0.0:+int64', when='@for-pflotran-0.1.0+superlu-dist+mpi+int64') + depends_on('superlu-dist@xsdk-0.2.0~int64', when='@xsdk-0.2.0+superlu-dist+mpi~int64') + depends_on('superlu-dist@xsdk-0.2.0+int64', when='@xsdk-0.2.0+superlu-dist+mpi+int64') + depends_on('superlu-dist@develop~int64', when='@develop+superlu-dist+mpi~int64') + depends_on('superlu-dist@develop+int64', when='@develop+superlu-dist+mpi+int64') depends_on('mumps+mpi', when='+mumps+mpi~int64') depends_on('scalapack', when='+mumps+mpi~int64') + depends_on('trilinos@12.6.2:', when='@3.7.0:+trilinos+mpi') + depends_on('trilinos@xsdk-0.2.0', when='@xsdk-0.2.0+trilinos+mpi') + depends_on('trilinos@develop', when='@xdevelop+trilinos+mpi') def mpi_dependent_options(self): if '~mpi' in self.spec: @@ -140,14 +152,10 @@ def mpi_dependent_options(self): raise RuntimeError('\n'.join(errors)) else: compiler_opts = [ - '--with-mpi=1', - '--with-mpi-dir=%s' % self.spec['mpi'].prefix, + '--with-cc=%s' % self.spec['mpi'].mpicc, + '--with-cxx=%s' % self.spec['mpi'].mpicxx, + '--with-fc=%s' % self.spec['mpi'].mpifc ] - if sys.platform != "darwin": - compiler_opts.extend([ - '--with-cpp=cpp', - '--with-cxxcpp=cpp', - ]) return compiler_opts def install(self, spec, prefix): @@ -173,6 +181,9 @@ def install(self, spec, prefix): '--with-blas-lapack-lib=%s' % lapack_blas.joined() ]) + if 'trilinos' in spec: + options.append('--with-cxx-dialect=C++11') + # Help PETSc pick up Scalapack from MKL: if 'scalapack' in spec: scalapack = spec['scalapack'].libs @@ -187,7 +198,7 @@ def install(self, spec, prefix): # Activates library support if needed for library in ('metis', 'boost', 'hdf5', 'hypre', 'parmetis', - 'mumps'): + 'mumps', 'scalapack', 'trilinos'): options.append( '--with-{library}={value}'.format( library=library, value=('1' if library in spec else '0')) diff --git a/var/spack/repos/builtin/packages/pflotran/package.py b/var/spack/repos/builtin/packages/pflotran/package.py index fc706930410..b7e623cb053 100644 --- a/var/spack/repos/builtin/packages/pflotran/package.py +++ b/var/spack/repos/builtin/packages/pflotran/package.py @@ -33,13 +33,12 @@ class Pflotran(AutotoolsPackage): homepage = "http://www.pflotran.org" - version('develop', hg='https://bitbucket.org/pflotran/pflotran-xsdk') - version('0.1.0', hg='https://bitbucket.org/pflotran/pflotran-xsdk', - commmit='4734cf5e606b') + version('develop', git='https://bitbucket.org/pflotran/pflotran') + version('xsdk-0.2.0', git='https://bitbucket.org/pflotran/pflotran', tag='master') depends_on('mpi') depends_on('hdf5@1.8.12:+mpi+fortran') - depends_on('petsc@develop+hdf5+metis',when='@develop') - depends_on('petsc@for-pflotran-0.1.0+hdf5+metis',when='@0.1.0') + depends_on('petsc@develop+hdf5+metis', when='@develop') + depends_on('petsc@xsdk-0.2.0+hdf5+metis', when='@xsdk-0.2.0') parallel = False diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index 9c31694295a..e19a33a9000 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -34,6 +34,7 @@ class SuperluDist(Package): url = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz" version('develop', git='https://github.com/xiaoyeli/superlu_dist', tag='master') + version('xsdk-0.2.0', git='https://github.com/xiaoyeli/superlu_dist', tag='xsdk-0.2.0') version('5.1.3', 'fec21a9207ef94f57501c9406da78285') version('5.1.1', '12638c631733a27dcbd87110e9f9cb1e') version('5.1.0', '6bb86e630bd4bd8650243aed8fd92eb9') diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 94220348932..0d90ae4e1e6 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -46,6 +46,8 @@ class Trilinos(CMakePackage): homepage = "https://trilinos.org/" url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-12-10-1.tar.gz" + version('xsdk-0.2.0', + git='https://github.com/trilinos/Trilinos.git', tag='xsdk-0.2.0') version('develop', git='https://github.com/trilinos/Trilinos.git', tag='develop') version('master', @@ -86,6 +88,7 @@ class Trilinos(CMakePackage): variant('debug', default=False, description='Builds a debug version of the libraries') variant('boost', default=True, description='Compile with Boost') + variant('tpetra', default=True, description='Compile with Tpetra') variant('exodus', default=False, description='Compile with Exodus from SEACAS') # Everything should be compiled with -fpic @@ -112,15 +115,19 @@ class Trilinos(CMakePackage): depends_on('scalapack', when='+mumps') depends_on('superlu-dist@:4.3', when='@:12.6.1+superlu-dist') depends_on('superlu-dist', when='@12.6.2:+superlu-dist') + depends_on('superlu-dist@develop', when='@develop+superlu-dist') + depends_on('superlu-dist@xsdk-0.2.0', when='@xsdk-0.2.0+superlu-dist') depends_on('superlu+fpic@4.3', when='+superlu') # Trilinos can not be built against 64bit int hypre depends_on('hypre~internal-superlu~int64', when='+hypre') + depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0+hypre') + depends_on('hypre@develop~internal-superlu', when='@develop+hypre') depends_on('hdf5+mpi', when='+hdf5') depends_on('python', when='+python') depends_on('py-numpy', when='+python', type=('build', 'run')) depends_on('swig', when='+python') - patch('umfpack_from_suitesparse.patch', when='@:12.8.1') + patch('umfpack_from_suitesparse.patch', when='@11.14.1:12.8.1') def url_for_version(self, version): url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz" @@ -128,7 +135,8 @@ def url_for_version(self, version): # check that the combination of variants makes sense def variants_check(self): - if '+superlu-dist' in self.spec and self.spec.satisfies('@:11.4.3'): + if ('+superlu-dist' in self.spec and + self.spec.satisfies('@11.14.1:11.14.3')): # For Trilinos v11 we need to force SuperLUDist=OFF, since only the # deprecated SuperLUDist v3.3 together with an Amesos patch is # working. @@ -174,7 +182,9 @@ def cmake_args(self): '-DLAPACK_LIBRARY_DIRS=%s' % ';'.join(lapack.directories), '-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON', '-DTrilinos_ENABLE_CXX11:BOOL=ON', - '-DTPL_ENABLE_Netcdf:BOOL=ON' + '-DTPL_ENABLE_Netcdf:BOOL=ON', + '-DTrilinos_ENABLE_Tpetra:BOOL=%s' % ( + 'ON' if '+tpetra' in spec else 'OFF') ]) if '.'.join(platform.mac_ver()[0].split('.')[:2]) == '10.12': @@ -385,7 +395,7 @@ def cmake_args(self): options.extend([ '-DTrilinos_ENABLE_SEACAS:BOOL=OFF' ]) - + # disable due to compiler / config errors: if spec.satisfies('%xl') or spec.satisfies('%xl_r'): options.extend([ diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py new file mode 100644 index 00000000000..3ceadcda7e6 --- /dev/null +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -0,0 +1,84 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os +from spack import * + + +class Xsdk(Package): + """Xsdk is a suite of Department of Energy (DOE) packages for numerical + simulation. This is a Spack bundle package that installs the xSDK + packages + """ + + homepage = "http://xsdk.info" + + # Dummy url since Spack complains if I don't list something, will be + # removed when metapackage is available + url = 'https://bitbucket.org/saws/saws/get/master.tar.gz' + + version('develop', '941a541bdf625856be18c9752249146d') + version('xsdk-0.2.0', '941a541bdf625856be18c9752249146d') + + depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0') + depends_on('hypre@develop~internal-superlu', when='@develop') + + depends_on('superlu-dist@xsdk-0.2.0', when='@xsdk-0.2.0') + depends_on('superlu-dist@develop', when='@develop') + + depends_on('trilinos@xsdk-0.2.0+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra', + when='@xsdk-0.2.0') + depends_on('trilinos@develop+xsdkflags+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra', + when='@develop') + + depends_on('petsc@xsdk-0.2.0+trilinos+mpi+hypre+superlu-dist+metis+hdf5~mumps~boost', + when='@xsdk-0.2.0') + depends_on('petsc@develop+trilinos+mpi+hypre+superlu-dist+metis+hdf5~mumps~boost', + when='@develop') + + depends_on('pflotran@xsdk-0.2.0', when='@xsdk-0.2.0') + depends_on('pflotran@develop', when='@develop') + + depends_on('alquimia@xsdk-0.2.0', when='@xsdk-0.2.0') + depends_on('alquimia@develop', when='@develop') + + # xSDKTrilinos depends on the version of Trilinos built with + # +tpetra which is turned off for faster xSDK + # depends_on('xsdktrilinos@xsdk-0.2.0', when='@xsdk-0.2.0') + # depends_on('xsdktrilinos@develop', when='@develop') + + variant('debug', default=False, description='Compile in debug mode') + + # How do we propagate debug flag to all depends on packages ? + # If I just do spack install xsdk+debug will that propogate it down? + + # Dummy install for now, will be removed when metapackage is available + def install(self, spec, prefix): + # Prevent the error message + # ==> Error: Install failed for xsdk. Nothing was installed! + # ==> Error: Installation process had nonzero exit code : 256 + with open(os.path.join(spec.prefix, 'bundle-package.txt'), 'w') as out: + out.write('This is a bundle\n') + out.close() diff --git a/var/spack/repos/builtin/packages/xsdktrilinos/package.py b/var/spack/repos/builtin/packages/xsdktrilinos/package.py index 7e88b2f9eb9..7af6cd73a76 100644 --- a/var/spack/repos/builtin/packages/xsdktrilinos/package.py +++ b/var/spack/repos/builtin/packages/xsdktrilinos/package.py @@ -35,6 +35,7 @@ class Xsdktrilinos(CMakePackage): url = "https://github.com/trilinos/xSDKTrilinos/archive/trilinos-release-12-8-1.tar.gz" version('develop', git='https://github.com/trilinos/xSDKTrilinos.git', tag='master') + version('xsdk-0.2.0', git='https://github.com/trilinos/xSDKTrilinos.git', tag='xsdk-0.2.0') version('12.8.1', '9cc338ded17d1e10ea6c0dc18b22dcd4') version('12.6.4', '44c4c54ccbac73bb8939f68797b9454a') @@ -50,10 +51,14 @@ class Xsdktrilinos(CMakePackage): # MPI related dependencies depends_on('mpi') depends_on('hypre~internal-superlu', when='+hypre') - depends_on('petsc+mpi~complex', when='+petsc') + depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0+hypre') + depends_on('hypre@develop~internal-superlu', when='@develop+hypre') + depends_on('petsc@xsdk-0.2.0+mpi~complex', when='@xsdk-0.2.0+petsc') + depends_on('petsc@develop+mpi~complex', when='@develop+petsc') depends_on('trilinos@12.6.4', when='@12.6.4') depends_on('trilinos@12.8.1', when='@12.8.1') - depends_on('trilinos@develop', when='@develop') + depends_on('trilinos@xsdk-0.2.0', when='@xsdk-0.2.0') + depends_on('trilinos@develop', when='@develop') def url_for_version(self, version): url = "https://github.com/trilinos/xSDKTrilinos/archive/trilinos-release-{0}.tar.gz" From 33c9a91d853da82dccf3d244e06c0c3db0061c9a Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 25 Apr 2017 21:04:20 -0700 Subject: [PATCH 0738/2394] Make perl and python variants (#3992) The blast+ configure script supports building --with-{python,perl}=path and --without-{python,perl}. This commit makes the use of those two languages configurable via variants and adds dependencies and explicit --with-... or --without-... flags to configure. Python was a non-optional dependency, now it is a variant that defaults to `True`. Perl was not previously an explicit dependency but the configure script was likely to discover one on your system (`/usr/bin/perl`). It is now a variant that defaults to `True`. I am unable to accurately determine what these flags to the configure script enable. My users are frustrated by the dependency on Python in particular because it constrains the other modules that they can have loaded for new discernible benefit. --- .../builtin/packages/blast-plus/package.py | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/blast-plus/package.py b/var/spack/repos/builtin/packages/blast-plus/package.py index 53f09c03a34..7cab51b0be9 100644 --- a/var/spack/repos/builtin/packages/blast-plus/package.py +++ b/var/spack/repos/builtin/packages/blast-plus/package.py @@ -88,6 +88,10 @@ def patch(self): description='Build with lzo support') variant('pcre', default=True, description='Build with pcre support') + variant('perl', default=True, + description='Build with perl support') + variant('python', default=True, + description='Build with python support') depends_on('jpeg', when='+jpeg') depends_on('libpng', when='+png') @@ -100,7 +104,8 @@ def patch(self): depends_on('lzo', when='+lzo') depends_on('pcre', when='+pcre') - depends_on('python') + depends_on('python', when='+python') + depends_on('perl', when='+perl') configure_directory = 'c++' @@ -199,4 +204,18 @@ def configure_args(self): else: config_args.append('--without-pcre') + if '+python' in spec: + config_args.append( + '--with-python={0}'.format(self.spec['python'].prefix) + ) + else: + config_args.append('--without-python') + + if '+perl' in spec: + config_args.append( + '--with-perl={0}'.format(self.spec['perl'].prefix) + ) + else: + config_args.append('--without-python') + return config_args From 11dae722c25e4b494615c10f899c6601e06694d4 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 00:23:01 -0500 Subject: [PATCH 0739/2394] Fix bug with '# noqa' filtering (#3993) --- lib/spack/spack/cmd/flake8.py | 13 ++++--------- .../repos/builtin.mock/packages/flake8/package.py | 6 +++++- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index 6cfd98dbb42..42d36a3beb2 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -139,14 +139,6 @@ def filter_file(source, dest, output=False): # We still want to catch trailing whitespace warnings line = line.rstrip('\n') - if line == '# flake8: noqa': - # Entire file is ignored - break - - if line.endswith('# noqa'): - # Line is already ignored - continue - for file_pattern, errors in exemptions.items(): if not file_pattern.search(source): continue @@ -154,7 +146,10 @@ def filter_file(source, dest, output=False): for code, patterns in errors.items(): for pattern in patterns: if pattern.search(line): - if '# noqa: ' in line: + if line.endswith('# noqa'): + # Line is already ignored + pass + elif '# noqa: ' in line: line += ',{0}'.format(code) else: line += ' # noqa: {0}'.format(code) diff --git a/var/spack/repos/builtin.mock/packages/flake8/package.py b/var/spack/repos/builtin.mock/packages/flake8/package.py index bd062d71bca..22598bead14 100644 --- a/var/spack/repos/builtin.mock/packages/flake8/package.py +++ b/var/spack/repos/builtin.mock/packages/flake8/package.py @@ -71,7 +71,11 @@ class Flake8(Package): patch('hyper-specific-patch-that-fixes-some-random-bug-that-probably-only-affects-one-user.patch', when='%gcc@3.2.2:3.2.3') def install(self, spec, prefix): - pass + # Make sure lines with '# noqa' work as expected. Don't just + # remove them entirely. This will mess up the indentation of + # the following lines. + if 'really-long-if-statement' != 'that-goes-over-the-line-length-limit-and-requires-noqa': # noqa + pass # '@when' decorated functions are exempt from redefinition errors @when('@2.0') From eaa50d3b7ca88b912e06b5d2aaffa75759d1b2d3 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 00:24:02 -0500 Subject: [PATCH 0740/2394] Add API Docs for lib/spack/llnl (#3982) * Add API Docs for lib/spack/llnl * Clean up after previous builds * Better fix for purging API docs --- lib/spack/docs/.gitignore | 2 +- lib/spack/docs/Makefile | 7 +-- lib/spack/docs/conf.py | 17 ++++++-- lib/spack/docs/index.rst | 3 +- lib/spack/llnl/util/lang.py | 55 ++++++++++++----------- lib/spack/llnl/util/lock.py | 20 ++++----- lib/spack/llnl/util/tty/__init__.py | 7 +-- lib/spack/llnl/util/tty/colify.py | 40 ++++++++--------- lib/spack/llnl/util/tty/color.py | 68 +++++++++++++++++------------ lib/spack/llnl/util/tty/log.py | 8 ++-- 10 files changed, 128 insertions(+), 99 deletions(-) diff --git a/lib/spack/docs/.gitignore b/lib/spack/docs/.gitignore index 0bbf78cce02..9afb6587062 100644 --- a/lib/spack/docs/.gitignore +++ b/lib/spack/docs/.gitignore @@ -1,5 +1,5 @@ package_list.rst command_index.rst spack*.rst -modules.rst +llnl*.rst _build diff --git a/lib/spack/docs/Makefile b/lib/spack/docs/Makefile index bcba423d942..1054d91a50e 100644 --- a/lib/spack/docs/Makefile +++ b/lib/spack/docs/Makefile @@ -9,7 +9,7 @@ PAPER = BUILDDIR = _build export PYTHONPATH := ../../spack:$(PYTHONPATH) -APIDOC_FILES = spack*.rst +APIDOC_FILES = spack*.rst llnl*.rst # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 @@ -58,7 +58,8 @@ upload: git push -f github gh-pages apidoc: - sphinx-apidoc -T -o . $(PYTHONPATH)/spack + sphinx-apidoc -f -T -o . ../spack + sphinx-apidoc -f -T -o . ../llnl help: @echo "Please use \`make ' where is one of" @@ -83,7 +84,7 @@ help: @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: - -rm -f package_list.rst command_index.rst modules.rst + -rm -f package_list.rst command_index.rst -rm -rf $(BUILDDIR)/* $(APIDOC_FILES) html: diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 35637093da9..48f1fda47e5 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -95,10 +95,21 @@ for cmd in sorted(command_names): index.write(' * :ref:`%s`\n' % cmd) - +# # Run sphinx-apidoc -sphinx_apidoc(['-T', '-o', '.', '../spack']) -os.remove('modules.rst') +# +# Remove any previous API docs +# Read the Docs doesn't clean up after previous builds +# Without this, the API Docs will never actually update +# +apidoc_args = [ + 'sphinx_apidoc', # The first arugment is ignored + '--force', # Overwrite existing files + '--no-toc', # Don't create a table of contents file + '--output-dir=.', # Directory to place all output +] +sphinx_apidoc(apidoc_args + ['../spack']) +sphinx_apidoc(apidoc_args + ['../llnl']) # # Exclude everything in spack.__all__ from indexing. All of these diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index 5dd6fe23be8..f4918b58db7 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -73,7 +73,8 @@ or refer to the full manual below. contribution_guide packaging_guide developer_guide - API Docs + Spack API Docs + LLNL API Docs ================== Indices and tables diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index ec4c25feadc..4943c9df676 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -43,7 +43,7 @@ def index_by(objects, *funcs): """Create a hierarchy of dictionaries by splitting the supplied set of objects on unique values of the supplied functions. Values are used as keys. For example, suppose you have four - objects with attributes that look like this: + objects with attributes that look like this:: a = Spec(name="boost", compiler="gcc", arch="bgqos_0") b = Spec(name="mrnet", compiler="intel", arch="chaos_5_x86_64_ib") @@ -55,15 +55,15 @@ def index_by(objects, *funcs): lambda s: s.compiler) index2 = index_by(list_of_specs, lambda s: s.compiler) - ``index1'' now has two levels of dicts, with lists at the - leaves, like this: + ``index1`` now has two levels of dicts, with lists at the + leaves, like this:: { 'bgqos_0' : { 'gcc' : [a], 'xlc' : [c] }, 'chaos_5_x86_64_ib' : { 'intel' : [b, d] } } - And ``index2'' is a single level dictionary of lists that looks - like this: + And ``index2`` is a single level dictionary of lists that looks + like this:: { 'gcc' : [a], 'intel' : [b,d], @@ -72,12 +72,12 @@ def index_by(objects, *funcs): If any elemnts in funcs is a string, it is treated as the name of an attribute, and acts like getattr(object, name). So - shorthand for the above two indexes would be: + shorthand for the above two indexes would be:: index1 = index_by(list_of_specs, 'arch', 'compiler') index2 = index_by(list_of_specs, 'compiler') - You can also index by tuples by passing tuples: + You can also index by tuples by passing tuples:: index1 = index_by(list_of_specs, ('arch', 'compiler')) @@ -204,7 +204,7 @@ def clear(self): def list_modules(directory, **kwargs): - """Lists all of the modules, excluding __init__.py, in a + """Lists all of the modules, excluding ``__init__.py``, in a particular directory. Listed packages have no particular order.""" list_directories = kwargs.setdefault('directories', True) @@ -226,14 +226,16 @@ def list_modules(directory, **kwargs): def key_ordering(cls): """Decorates a class with extra methods that implement rich comparison - operations and __hash__. The decorator assumes that the class - implements a function called _cmp_key(). The rich comparison operations - will compare objects using this key, and the __hash__ function will - return the hash of this key. + operations and ``__hash__``. The decorator assumes that the class + implements a function called ``_cmp_key()``. The rich comparison + operations will compare objects using this key, and the ``__hash__`` + function will return the hash of this key. - If a class already has __eq__, __ne__, __lt__, __le__, __gt__, or __ge__ - defined, this decorator will overwrite them. If the class does not - have a _cmp_key method, then this will raise a TypeError. + If a class already has ``__eq__``, ``__ne__``, ``__lt__``, ``__le__``, + ``__gt__``, or ``__ge__`` defined, this decorator will overwrite them. + + Raises: + TypeError: If the class does not have a ``_cmp_key`` method """ def setter(name, value): value.__name__ = name @@ -322,14 +324,14 @@ def match_predicate(*args): """Utility function for making string matching predicates. Each arg can be a: - - regex - - list or tuple of regexes - - predicate that takes a string. + * regex + * list or tuple of regexes + * predicate that takes a string. This returns a predicate that is true if: - - any arg regex matches - - any regex in a list or tuple of regexes matches. - - any predicate in args matches. + * any arg regex matches + * any regex in a list or tuple of regexes matches. + * any predicate in args matches. """ def match(string): for arg in args: @@ -374,11 +376,12 @@ def __init__(self, message): def duplicate_stream(original): """Duplicates a stream at the os level. - :param stream original: original stream to be duplicated. Must have a - `fileno` callable attribute. + Args: + original (stream): original stream to be duplicated. Must have a + ``fileno`` callable attribute. - :return: duplicate of the original stream - :rtype: file like object + Returns: + file like object: duplicate of the original stream """ return os.fdopen(os.dup(original.fileno())) @@ -388,7 +391,7 @@ class ObjectWrapper(object): while staying undercover. This class is modeled after the stackoverflow answer: - - http://stackoverflow.com/a/1445289/771663 + * http://stackoverflow.com/a/1445289/771663 """ def __init__(self, wrapped_object): wrapped_cls = type(wrapped_object) diff --git a/lib/spack/llnl/util/lock.py b/lib/spack/llnl/util/lock.py index 2e44a947985..a45ddec6912 100644 --- a/lib/spack/llnl/util/lock.py +++ b/lib/spack/llnl/util/lock.py @@ -45,7 +45,7 @@ class Lock(object): """This is an implementation of a filesystem lock using Python's lockf. - In Python, `lockf` actually calls `fcntl`, so this should work with + In Python, ``lockf`` actually calls ``fcntl``, so this should work with any filesystem implementation that supports locking through the fcntl calls. This includes distributed filesystems like Lustre (when flock is enabled) and recent NFS versions. @@ -60,7 +60,7 @@ def __init__(self, path, start=0, length=0): This exposes a subset of fcntl locking functionality. It does not currently expose the ``whence`` parameter -- ``whence`` is - always os.SEEK_SET and ``start`` is always evaluated from the + always ``os.SEEK_SET`` and ``start`` is always evaluated from the beginning of the file. """ self.path = path @@ -80,7 +80,7 @@ def _lock(self, op, timeout=_default_timeout): """This takes a lock using POSIX locks (``fnctl.lockf``). The lock is implemented as a spin lock using a nonblocking call - to lockf(). + to ``lockf()``. On acquiring an exclusive lock, the lock writes this process's pid and host to the lock file, in case the holding process needs @@ -276,14 +276,14 @@ class LockTransaction(object): This class can trigger actions when the lock is acquired for the first time and released for the last. - If the acquire_fn returns a value, it is used as the return value for - __enter__, allowing it to be passed as the `as` argument of a `with` - statement. + If the ``acquire_fn`` returns a value, it is used as the return value for + ``__enter__``, allowing it to be passed as the ``as`` argument of a + ``with`` statement. - If acquire_fn returns a context manager, *its* `__enter__` function will be - called in `__enter__` after acquire_fn, and its `__exit__` funciton will be - called before `release_fn` in `__exit__`, allowing you to nest a context - manager to be used along with the lock. + If ``acquire_fn`` returns a context manager, *its* ``__enter__`` function + will be called in ``__enter__`` after ``acquire_fn``, and its ``__exit__`` + funciton will be called before ``release_fn`` in ``__exit__``, allowing you + to nest a context manager to be used along with the lock. Timeout for lock is customizable. diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index 5acd61bc373..e5c3ba8110a 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -213,9 +213,10 @@ def get_yes_or_no(prompt, **kwargs): def hline(label=None, **kwargs): """Draw a labeled horizontal line. - Options: - char Char to draw the line with. Default '-' - max_width Maximum width of the line. Default is 64 chars. + + Keyword Arguments: + char (str): Char to draw the line with. Default '-' + max_width (int): Maximum width of the line. Default is 64 chars. """ char = kwargs.pop('char', '-') max_width = kwargs.pop('max_width', 64) diff --git a/lib/spack/llnl/util/tty/colify.py b/lib/spack/llnl/util/tty/colify.py index 83de530ef1f..774f4035fde 100644 --- a/lib/spack/llnl/util/tty/colify.py +++ b/lib/spack/llnl/util/tty/colify.py @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## """ -Routines for printing columnar output. See colify() for more information. +Routines for printing columnar output. See ``colify()`` for more information. """ from __future__ import division @@ -124,26 +124,22 @@ def colify(elts, **options): uniform-width and variable-width (tighter) columns. If elts is not a list of strings, each element is first conveted - using str(). + using ``str()``. - Keyword arguments: - - output= A file object to write to. Default is sys.stdout. - indent= Optionally indent all columns by some number of spaces. - padding= Spaces between columns. Default is 2. - width= Width of the output. Default is 80 if tty not detected. - - cols= Force number of columns. Default is to size to terminal, - or single-column if no tty - - tty= Whether to attempt to write to a tty. Default is to - autodetect a tty. Set to False to force - single-column output. - - method= Method to use to fit columns. Options are variable or - uniform. Variable-width columns are tighter, uniform - columns are all the same width and fit less data on - the screen. + Keyword Arguments: + output (stream): A file object to write to. Default is ``sys.stdout`` + indent (int): Optionally indent all columns by some number of spaces + padding (int): Spaces between columns. Default is 2 + width (int): Width of the output. Default is 80 if tty not detected + cols (int): Force number of columns. Default is to size to + terminal, or single-column if no tty + tty (bool): Whether to attempt to write to a tty. Default is to + autodetect a tty. Set to False to force single-column + output + method (str): Method to use to fit columns. Options are variable or + uniform. Variable-width columns are tighter, uniform + columns are all the same width and fit less data on + the screen """ # Get keyword arguments or set defaults cols = options.pop("cols", 0) @@ -220,7 +216,7 @@ def colify(elts, **options): def colify_table(table, **options): - """Version of colify() for data expressed in rows, (list of lists). + """Version of ``colify()`` for data expressed in rows, (list of lists). Same as regular colify but takes a list of lists, where each sub-list must be the same length, and each is interpreted as a @@ -247,7 +243,7 @@ def transpose(): def colified(elts, **options): - """Invokes the colify() function but returns the result as a string + """Invokes the ``colify()`` function but returns the result as a string instead of writing it to an output string.""" sio = StringIO() options['output'] = sio diff --git a/lib/spack/llnl/util/tty/color.py b/lib/spack/llnl/util/tty/color.py index b0c00f15022..bb1563f82bc 100644 --- a/lib/spack/llnl/util/tty/color.py +++ b/lib/spack/llnl/util/tty/color.py @@ -23,39 +23,45 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## """ -This file implements an expression syntax, similar to printf, for adding +This file implements an expression syntax, similar to ``printf``, for adding ANSI colors to text. -See colorize(), cwrite(), and cprint() for routines that can generate -colored output. +See ``colorize()``, ``cwrite()``, and ``cprint()`` for routines that can +generate colored output. -colorize will take a string and replace all color expressions with -ANSI control codes. If the isatty keyword arg is set to False, then +``colorize`` will take a string and replace all color expressions with +ANSI control codes. If the ``isatty`` keyword arg is set to False, then the color expressions will be converted to null strings, and the returned string will have no color. -cwrite and cprint are equivalent to write() and print() calls in -python, but they colorize their output. If the stream argument is -not supplied, they write to sys.stdout. +``cwrite`` and ``cprint`` are equivalent to ``write()`` and ``print()`` +calls in python, but they colorize their output. If the ``stream`` argument is +not supplied, they write to ``sys.stdout``. Here are some example color expressions: - @r Turn on red coloring - @R Turn on bright red coloring - @*{foo} Bold foo, but don't change text color - @_{bar} Underline bar, but don't change text color - @*b Turn on bold, blue text - @_B Turn on bright blue text with an underline - @. Revert to plain formatting - @*g{green} Print out 'green' in bold, green text, then reset to plain. - @*ggreen@. Print out 'green' in bold, green text, then reset to plain. +========== ============================================================ +Expression Meaning +========== ============================================================ +@r Turn on red coloring +@R Turn on bright red coloring +@*{foo} Bold foo, but don't change text color +@_{bar} Underline bar, but don't change text color +@*b Turn on bold, blue text +@_B Turn on bright blue text with an underline +@. Revert to plain formatting +@*g{green} Print out 'green' in bold, green text, then reset to plain. +@*ggreen@. Print out 'green' in bold, green text, then reset to plain. +========== ============================================================ The syntax consists of: - color-expr = '@' [style] color-code '{' text '}' | '@.' | '@@' - style = '*' | '_' - color-code = [krgybmcwKRGYBMCW] - text = .* +========== ================================================= +color-expr '@' [style] color-code '{' text '}' | '@.' | '@@' +style '*' | '_' +color-code [krgybmcwKRGYBMCW] +text .* +========== ================================================= '@' indicates the start of a color expression. It can be followed by an optional * or _ that indicates whether the font should be bold or @@ -82,6 +88,7 @@ class ColorParseError(Exception): def __init__(self, message): super(ColorParseError, self).__init__(message) + # Text styles for ansi codes styles = {'*': '1', # bold '_': '4', # underline @@ -118,8 +125,8 @@ def escape(self, s): return '' def __call__(self, match): - """Convert a match object generated by color_re into an ansi color code - This can be used as a handler in re.sub. + """Convert a match object generated by ``color_re`` into an ansi + color code. This can be used as a handler in ``re.sub``. """ style, color, text = match.groups() m = match.group(0) @@ -147,10 +154,17 @@ def __call__(self, match): def colorize(string, **kwargs): - """Take a string and replace all color expressions with ANSI control - codes. Return the resulting string. - If color=False is supplied, output will be plain text without - control codes, for output to non-console devices. + """Replace all color expressions in a string with ANSI control codes. + + Args: + string (str): The string to replace + + Returns: + str: The filtered string + + Keyword Arguments: + color (bool): If False, output will be plain text without control + codes, for output to non-console devices. """ color = kwargs.get('color', True) return re.sub(color_re, match_to_ansi(color), string) diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 50e07c0b97c..34916ef7e7f 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -51,7 +51,7 @@ class _SkipWithBlock(): class keyboard_input(object): """Disable canonical input and echo on a stream within a with block. - Use this with sys.stdin for keyboard input, e.g.: + Use this with ``sys.stdin`` for keyboard input, e.g.:: with keyboard_input(sys.stdin): r, w, x = select.select([sys.stdin], [], []) @@ -103,14 +103,16 @@ def __exit__(self, exc_type, exception, traceback): class log_output(object): """Spawns a daemon that reads from a pipe and writes to a file - Usage: + Usage:: + # Spawns the daemon with log_output('logfile.txt', 'w') as log_redirection: # do things ... output is not redirected with log_redirection: # do things ... output will be logged - or: + or:: + with log_output('logfile.txt', echo=True) as log_redirection: # do things ... output is not redirected with log_redirection: From 3b32e008ec26e927fdf4fc712f100bfb1d614b98 Mon Sep 17 00:00:00 2001 From: futuretristan Date: Wed, 26 Apr 2017 10:42:48 +0200 Subject: [PATCH 0741/2394] ipopt: fix build with Linux clang (#3995) --- var/spack/repos/builtin/packages/ipopt/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/ipopt/package.py b/var/spack/repos/builtin/packages/ipopt/package.py index 1aa8e807c41..f35fa45dade 100644 --- a/var/spack/repos/builtin/packages/ipopt/package.py +++ b/var/spack/repos/builtin/packages/ipopt/package.py @@ -61,6 +61,7 @@ def install(self, spec, prefix): "--with-mumps-incdir=%s" % mumps_dir.include, "--with-mumps-lib=%s" % mumps_libcmd, "--enable-shared", + "coin_skip_warn_cxxflags=yes", "--with-blas-incdir=%s" % blas_dir.include, "--with-blas-lib=%s" % blas_lib, "--with-lapack-incdir=%s" % lapack_dir.include, From e6efb1aa21ffa89d695cdfe69bf0f6c3238f7e1f Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Wed, 26 Apr 2017 22:42:43 +1000 Subject: [PATCH 0742/2394] perl: identify dependency on gdbm (#3896) * perl: provide +gdbm variant for use when system dbm is missing or buggy * perl: remove gdbm variant; always depends on gdbm * perl: pass gdbm paths as Configure arguments --- var/spack/repos/builtin/packages/perl/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 5ca5f42492d..ad67cae48c0 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -58,6 +58,8 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package extendable = True + depends_on('gdbm') + # Installing cpanm alongside the core makes it safe and simple for # people/projects to install their own sets of perl modules. Not # having it in core increases the "energy of activation" for doing @@ -81,7 +83,9 @@ def configure_args(self): config_args = [ '-des', - '-Dprefix={0}'.format(prefix) + '-Dprefix={0}'.format(prefix), + '-Dlocincpth=' + self.spec['gdbm'].prefix.include, + '-Dloclibpth=' + self.spec['gdbm'].prefix.lib ] # Discussion of -fPIC for Intel at: From eba21b86bdcd97fc19c37a8250c497cbd78a538c Mon Sep 17 00:00:00 2001 From: jadoro Date: Wed, 26 Apr 2017 14:53:58 +0200 Subject: [PATCH 0743/2394] Add ncurses as zsh dependency (#3991) zsh build will fail with configure: error: "No terminal handling library was found on your system." if ncurses is not found. --- var/spack/repos/builtin/packages/zsh/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py index 7b9c485966d..5c73b224c72 100644 --- a/var/spack/repos/builtin/packages/zsh/package.py +++ b/var/spack/repos/builtin/packages/zsh/package.py @@ -37,3 +37,4 @@ class Zsh(AutotoolsPackage): version('5.1.1', checksum='8ba28a9ef82e40c3a271602f18343b2f') depends_on("pcre") + depends_on("ncurses") From 97af407ae4e650b00f9f164fa0fd004f58182911 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 26 Apr 2017 07:31:23 -0700 Subject: [PATCH 0744/2394] gasnet: build with fPIC for shared lib consumers (#3962) --- var/spack/repos/builtin/packages/gasnet/package.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/gasnet/package.py b/var/spack/repos/builtin/packages/gasnet/package.py index 9d7f8ddc085..452704075ef 100644 --- a/var/spack/repos/builtin/packages/gasnet/package.py +++ b/var/spack/repos/builtin/packages/gasnet/package.py @@ -40,7 +40,7 @@ class Gasnet(AutotoolsPackage): version('1.24.0', 'c8afdf48381e8b5a7340bdb32ca0f41a') variant('ibv', default=False, description="Support InfiniBand") - variant('mpi', default=False, description="Support MPI") + variant('mpi', default=True, description="Support MPI") depends_on('mpi', when='+mpi') @@ -48,11 +48,9 @@ def configure_args(self): args = [ # TODO: factor IB suport out into architecture description. "--enable-ibv" if '+ibv' in self.spec else '--disable-ibv', - "--enable-mpi" if '+mpi' in self.spec else '--disable-mpi', "--enable-par", "--enable-smp", "--enable-udp", - "--enable-mpi-compat", "--enable-smp-safe", "--enable-segment-fast", "--disable-aligned-segments", @@ -60,5 +58,13 @@ def configure_args(self): # See the Legion webpage for details on when to/not to use. "--disable-pshm", "--with-segment-mmap-max=64MB", + # for consumers with shared libs + "CC=%s %s" % (spack_cc, self.compiler.pic_flag), + "CXX=%s %s" % (spack_cxx, self.compiler.pic_flag), ] + if '+mpi' in self.spec: + args.extend(['--enable-mpi', '--enable-mpi-compat', "MPI_CC=%s %s" + % (self.spec['mpi'].mpicc, self.compiler.pic_flag)]) + else: + args.extend(['--disable-mpi', '--disable-mpi-compat']) return args From e3378a0d3bc84056bdc2f39738583fb679850665 Mon Sep 17 00:00:00 2001 From: Jeffrey Salmond Date: Wed, 26 Apr 2017 15:33:00 +0100 Subject: [PATCH 0745/2394] add kokkos package (#3997) * add kokkos package * fix flake8 * add descriptions to kokkos variants --- .../repos/builtin/packages/kokkos/package.py | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 var/spack/repos/builtin/packages/kokkos/package.py diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py new file mode 100644 index 00000000000..00eadfa5482 --- /dev/null +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -0,0 +1,61 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Kokkos(Package): + """Kokkos implements a programming model in C++ for writing performance + portable applications targeting all major HPC platforms.""" + + homepage = "https://github.com/kokkos/kokkos" + url = "https://github.com/kokkos/kokkos/archive/2.03.00.tar.gz" + + version('2.03.00', 'f205d659d4304747759fabfba32d43c3') + + variant('qthreads', default=False, description="enable Qthreads backend") + variant('cuda', default=False, description="enable Cuda backend") + + depends_on('hwloc') + depends_on('qthreads', when='+qthreads') + depends_on('cuda', when='+cuda') + + def install(self, spec, prefix): + generate = which(join_path(self.stage.source_path, + 'generate_makefile.bash')) + with working_dir('build', create=True): + g_args = [ + '--prefix=%s' % prefix, + '--with-hwloc=%s' % spec['hwloc'].prefix, + '--with-serial', + '--with-openmp', + ] + if 'qthreads' in spec: + g_args.append('--with-qthreads=%s' % spec['qthreads'].prefix) + if 'cuda' in spec: + g_args.append('--with-cuda=%s' % spec['cuda'].prefix) + + generate(*g_args) + make() + make('install') From c616e4a61904119a5a396a822634ffb1b8326f33 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 10:49:27 -0500 Subject: [PATCH 0746/2394] Add list_url for bzip2 (#3988) --- var/spack/repos/builtin/packages/bzip2/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/bzip2/package.py b/var/spack/repos/builtin/packages/bzip2/package.py index e4b24637841..741c6302cb6 100644 --- a/var/spack/repos/builtin/packages/bzip2/package.py +++ b/var/spack/repos/builtin/packages/bzip2/package.py @@ -34,6 +34,7 @@ class Bzip2(Package): homepage = "http://www.bzip.org" url = "http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz" + list_url = "http://www.bzip.org/downloads.html" version('1.0.6', '00b516f4704d4a7cb50a1d97e6e8e15b') From b3ba9bdb377728bb4886dbc4ae11ac3a57a59bae Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 26 Apr 2017 11:06:34 -0700 Subject: [PATCH 0747/2394] Add __format__ support to version for fancy formatting. (#3996) - add Version.__format__ to support new-style formatting. - Python3 doesn't handle this well -- it delegates to object.__format__(), which raises an error for fancy format strings. - not sure why it doesn't call str(self).__format__ instead, but that's hwo things are. --- lib/spack/spack/version.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 89fcc9aaa71..1c931ae90ac 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -226,6 +226,9 @@ def __repr__(self): def __str__(self): return self.string + def __format__(self, format_spec): + return self.string.format(format_spec) + @property def concrete(self): return self From 1e18ace6472c94893cc567ca757032269e02460f Mon Sep 17 00:00:00 2001 From: Barry Smith Date: Wed, 26 Apr 2017 13:39:09 -0500 Subject: [PATCH 0748/2394] Update checksum for dummy xsdk package (#4002) Commit-type: bug-fix Funded-by: IDEAS Project: xSDK Reported-by: "Klinvex, Alicia Marie" --- var/spack/repos/builtin/packages/xsdk/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py index 3ceadcda7e6..22a873bca82 100644 --- a/var/spack/repos/builtin/packages/xsdk/package.py +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -39,8 +39,8 @@ class Xsdk(Package): # removed when metapackage is available url = 'https://bitbucket.org/saws/saws/get/master.tar.gz' - version('develop', '941a541bdf625856be18c9752249146d') - version('xsdk-0.2.0', '941a541bdf625856be18c9752249146d') + version('develop', 'a52dc710c744afa0b71429b8ec9425bc') + version('xsdk-0.2.0', 'a52dc710c744afa0b71429b8ec9425bc') depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0') depends_on('hypre@develop~internal-superlu', when='@develop') From 378935916a2d49c9afabc5424028894a1b7e3e76 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Wed, 26 Apr 2017 11:53:27 -0700 Subject: [PATCH 0749/2394] matplotlib and basemap require setuptools to run properly together (#3835) * matplotlib and basemap require setuptools to run properly together * flake 8 fix --- .../builtin/packages/py-basemap/package.py | 81 +------------------ .../builtin/packages/py-matplotlib/package.py | 5 +- 2 files changed, 8 insertions(+), 78 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-basemap/package.py b/var/spack/repos/builtin/packages/py-basemap/package.py index e0687f1d529..723adacff8e 100644 --- a/var/spack/repos/builtin/packages/py-basemap/package.py +++ b/var/spack/repos/builtin/packages/py-basemap/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os class PyBasemap(PythonPackage): @@ -35,6 +34,10 @@ class PyBasemap(PythonPackage): version('1.0.7', '48c0557ced9e2c6e440b28b3caff2de8') + # Per Github issue #3813, setuptools is required at runtime in order + # to make mpl_toolkits a namespace package that can span multiple + # directories (i.e., matplotlib and basemap) + depends_on('py-setuptools', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run')) depends_on('py-matplotlib', type=('build', 'run')) depends_on('pil', type=('build', 'run')) @@ -42,79 +45,3 @@ class PyBasemap(PythonPackage): def setup_environment(self, spack_env, run_env): spack_env.set('GEOS_DIR', self.spec['geos'].prefix) - - @run_after('install') - def post_install_patch(self): - spec = self.spec - # We are not sure if this fix is needed before Python 3.5.2. - # If it is needed, this test should be changed. - # See: https://github.com/LLNL/spack/pull/1964 - if spec['python'].version >= Version('3.5.2'): - # Use symlinks to join the two mpl_toolkits/ directories into - # one, inside of basemap. This is because Basemap tries to - # "add to" an existing package in Matplotlib, which is only - # legal Python for "Implicit Namespace Packages": - # https://www.python.org/dev/peps/pep-0420/ - # https://github.com/Homebrew/homebrew-python/issues/112 - # In practice, Python will see only the basemap version of - # mpl_toolkits - path_m = find_package_dir( - spec['py-matplotlib'].prefix, 'mpl_toolkits') - path_b = find_package_dir(spec.prefix, 'mpl_toolkits') - link_dir(path_m, path_b) - - -def find_package_dir(spack_package_root, name): - - """Finds directory with a specific name, somewhere inside a Spack - package. - - spack_package_root: - Root directory to start searching - oldname: - Original name of package (not fully qualified, just the leaf) - newname: - What to rename it to - - """ - for root, dirs, files in os.walk(spack_package_root): - path = os.path.join(root, name) - - # Make sure it's a directory - if not os.path.isdir(path): - continue - - # Make sure it's really a package - if not os.path.exists(os.path.join(path, '__init__.py')): - continue - - return path - - return None - - -def link_dir(src_root, dest_root, link=os.symlink): - """Link all files in src_root into directory dest_root""" - - for src_path, dirnames, filenames in os.walk(src_root): - if not filenames: - continue # avoid explicitly making empty dirs - - # Avoid internal Python stuff - src_leaf = os.path.split(src_path)[1] - if src_leaf.startswith('__'): - continue - - # Make sure the destination directory exists - dest_path = os.path.join(dest_root, src_path[len(src_root) + 1:]) - try: - os.makedirs(dest_path) - except: - pass - - # Link all files from src to dest directory - for fname in filenames: - src = os.path.join(src_path, fname) - dst = os.path.join(dest_path, fname) - if not os.path.exists(dst): - link(src, dst) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 7177ea5a790..34ebeaf5ff5 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -59,7 +59,10 @@ class PyMatplotlib(PythonPackage): extends('python', ignore=r'bin/nosetests.*$|bin/pbr$') # ------ Required dependencies - depends_on('py-setuptools', type='build') + # Per Github issue #3813, setuptools is required at runtime in order + # to make mpl_toolkits a namespace package that can span multiple + # directories (i.e., matplotlib and basemap) + depends_on('py-setuptools', type=('build', 'run')) depends_on('libpng@1.2:') depends_on('freetype@2.3:') From 348e715da7dfab1964d18b5b999a99febe8d5414 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 14:59:03 -0500 Subject: [PATCH 0750/2394] Add missing readline dependency to sqlite (#4001) * Add missing readline dependency to sqlite * Fix typo --- .../repos/builtin/packages/sqlite/package.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py index 4d53462a4b0..c2f2268f1f9 100644 --- a/var/spack/repos/builtin/packages/sqlite/package.py +++ b/var/spack/repos/builtin/packages/sqlite/package.py @@ -26,7 +26,7 @@ from spack import architecture -class Sqlite(Package): +class Sqlite(AutotoolsPackage): """SQLite3 is an SQL database engine in a C library. Programs that link the SQLite3 library can have SQL database access without running a separate RDBMS process. @@ -38,15 +38,17 @@ class Sqlite(Package): version('3.8.5', '0544ef6d7afd8ca797935ccc2685a9ed', url='https://www.sqlite.org/2014/sqlite-autoconf-3080500.tar.gz') + depends_on('readline') + def get_arch(self): arch = architecture.Arch() arch.platform = architecture.platform() return str(arch.platform.target('default_target')) - def install(self, spec, prefix): - config = ["--prefix=" + prefix] + def configure_args(self): + args = [] + if self.get_arch() == 'ppc64le': - config.append("--build=powerpc64le-redhat-linux-gnu") - configure(*config) - make() - make("install") + args.append('--build=powerpc64le-redhat-linux-gnu') + + return args From 2c1e5f9ee15f577028951f6fdd61381bf28e0356 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 15:49:48 -0500 Subject: [PATCH 0751/2394] Add latest version of fontconfig (#4007) --- .../repos/builtin/packages/fontconfig/package.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py index ec486bac61e..32d72deae39 100644 --- a/var/spack/repos/builtin/packages/fontconfig/package.py +++ b/var/spack/repos/builtin/packages/fontconfig/package.py @@ -28,8 +28,9 @@ class Fontconfig(AutotoolsPackage): """Fontconfig is a library for configuring/customizing font access""" homepage = "http://www.freedesktop.org/wiki/Software/fontconfig/" - url = "http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.1.tar.gz" + url = "http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.12.1.tar.gz" + version('2.12.1', 'ce55e525c37147eee14cc2de6cc09f6c') version('2.11.1', 'e75e303b4f7756c2b16203a57ac87eba') depends_on('freetype') @@ -40,10 +41,11 @@ class Fontconfig(AutotoolsPackage): def configure_args(self): font_path = join_path(self.spec['font-util'].prefix, 'share', 'fonts') - return ["--prefix={0}".format(self.prefix), - "--enable-libxml2", - "--disable-docs", - "--with-default-fonts={0}".format(font_path)] + return [ + '--enable-libxml2', + '--disable-docs', + '--with-default-fonts={0}'.format(font_path) + ] @run_after('install') def system_fonts(self): From 581635c5ab0adbb349ffa8e1fd60306d9a984bb4 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 16:27:46 -0500 Subject: [PATCH 0752/2394] Add latest version of libpthread-stubs (#4009) --- var/spack/repos/builtin/packages/libpthread-stubs/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libpthread-stubs/package.py b/var/spack/repos/builtin/packages/libpthread-stubs/package.py index 911bf6814c7..d1dab82e705 100644 --- a/var/spack/repos/builtin/packages/libpthread-stubs/package.py +++ b/var/spack/repos/builtin/packages/libpthread-stubs/package.py @@ -30,6 +30,7 @@ class LibpthreadStubs(AutotoolsPackage): functions not provided in libc or otherwise available by default.""" homepage = "https://xcb.freedesktop.org/" - url = "https://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.gz" + url = "https://xcb.freedesktop.org/dist/libpthread-stubs-0.4.tar.gz" + version('0.4', '7d2734e604a3e2f6f665c420b835ab62') version('0.3', 'a09d928c4af54fe5436002345ef71138') From 463d91cd9f0f23fe2cd3e01f69a125aac95b07ab Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 16:35:07 -0500 Subject: [PATCH 0753/2394] Add latest version of xproto (#4010) --- var/spack/repos/builtin/packages/xproto/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/xproto/package.py b/var/spack/repos/builtin/packages/xproto/package.py index 9e1b6d44742..31e2baffaca 100644 --- a/var/spack/repos/builtin/packages/xproto/package.py +++ b/var/spack/repos/builtin/packages/xproto/package.py @@ -36,8 +36,9 @@ class Xproto(AutotoolsPackage): common definitions and porting layer.""" homepage = "http://cgit.freedesktop.org/xorg/proto/x11proto" - url = "https://www.x.org/archive/individual/proto/xproto-7.0.29.tar.gz" + url = "https://www.x.org/archive/individual/proto/xproto-7.0.31.tar.gz" + version('7.0.31', '04b925bf9e472c80f9212615cd684f1e') version('7.0.29', '16a78dd2c5ad73011105c96235f6a0af') depends_on('pkg-config@0.9.0:', type='build') From 369d370d0c5fd5eb9099b717d557858c781b5bba Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 17:34:27 -0500 Subject: [PATCH 0754/2394] Add latest version of libxrender (#4013) --- var/spack/repos/builtin/packages/libxrender/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libxrender/package.py b/var/spack/repos/builtin/packages/libxrender/package.py index 9c7e657f1dc..1775dd83b3b 100644 --- a/var/spack/repos/builtin/packages/libxrender/package.py +++ b/var/spack/repos/builtin/packages/libxrender/package.py @@ -29,9 +29,10 @@ class Libxrender(AutotoolsPackage): """libXrender - library for the Render Extension to the X11 protocol.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXrender" - url = "https://www.x.org/archive/individual/lib/libXrender-0.9.9.tar.gz" + url = "https://www.x.org/archive/individual/lib/libXrender-0.9.10.tar.gz" - version('0.9.9', '0c797c4f2a7b782896bc223e6dac4333') + version('0.9.10', '98a14fc11aee08b4a1769426ab4b23a3') + version('0.9.9', '0c797c4f2a7b782896bc223e6dac4333') depends_on('libx11@1.6:') From 2553afac259f969a73aecda90cc88fe00a4d6c9f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 17:34:47 -0500 Subject: [PATCH 0755/2394] Add latest version of libxpm (#4012) --- var/spack/repos/builtin/packages/libxpm/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libxpm/package.py b/var/spack/repos/builtin/packages/libxpm/package.py index ea30a1c7414..b0a00cdb7ed 100644 --- a/var/spack/repos/builtin/packages/libxpm/package.py +++ b/var/spack/repos/builtin/packages/libxpm/package.py @@ -29,8 +29,9 @@ class Libxpm(AutotoolsPackage): """libXpm - X Pixmap (XPM) image file format library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libXpm" - url = "https://www.x.org/archive//individual/lib/libXpm-3.5.11.tar.gz" + url = "https://www.x.org/archive//individual/lib/libXpm-3.5.12.tar.gz" + version('3.5.12', 'b286c884b11b5a0b4371175c5327141f') version('3.5.11', '7c67c878ee048206b070bc0b24154f04') version('3.5.10', 'a70507638d74541bf30a771f1e5938bb') version('3.5.9', 'd6d4b0f76248a6b346eb42dfcdaa72a6') From 5422ac1558d20e57f411f94111ed29c27cc44503 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 17:35:29 -0500 Subject: [PATCH 0756/2394] Add latest version of libx11 (#4011) --- var/spack/repos/builtin/packages/libx11/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libx11/package.py b/var/spack/repos/builtin/packages/libx11/package.py index d9c28836b8e..4df1ef07ce3 100644 --- a/var/spack/repos/builtin/packages/libx11/package.py +++ b/var/spack/repos/builtin/packages/libx11/package.py @@ -29,8 +29,9 @@ class Libx11(AutotoolsPackage): """libX11 - Core X11 protocol client library.""" homepage = "https://www.x.org/" - url = "https://www.x.org/archive/individual/lib/libX11-1.6.3.tar.gz" + url = "https://www.x.org/archive/individual/lib/libX11-1.6.5.tar.gz" + version('1.6.5', '300b5831916ffcc375468431d856917e') version('1.6.3', '7d16653fe7c36209799175bb3dc1ae46') depends_on('libxcb@1.1.92:') From 0403a0850946fda51738a3be88b884ffdfddf10f Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 27 Apr 2017 00:36:35 +0200 Subject: [PATCH 0757/2394] link_tree: ported to pytest (#4008) --- lib/spack/spack/test/link_tree.py | 181 ++++++++++++++++-------------- 1 file changed, 95 insertions(+), 86 deletions(-) diff --git a/lib/spack/spack/test/link_tree.py b/lib/spack/spack/test/link_tree.py index 5d0a7430b6e..9fb4e8216e2 100644 --- a/lib/spack/spack/test/link_tree.py +++ b/lib/spack/spack/test/link_tree.py @@ -23,121 +23,130 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import os -import unittest +import pytest from llnl.util.filesystem import * from llnl.util.link_tree import LinkTree - from spack.stage import Stage -class LinkTreeTest(unittest.TestCase): - """Tests Spack's LinkTree class.""" +@pytest.fixture() +def stage(): + """Creates a stage with the directory structure for the tests.""" + s = Stage('link-tree-test') + s.create() - def setUp(self): - self.stage = Stage('link-tree-test') - self.stage.create() + with working_dir(s.path): + touchp('source/1') + touchp('source/a/b/2') + touchp('source/a/b/3') + touchp('source/c/4') + touchp('source/c/d/5') + touchp('source/c/d/6') + touchp('source/c/d/e/7') - with working_dir(self.stage.path): - touchp('source/1') - touchp('source/a/b/2') - touchp('source/a/b/3') - touchp('source/c/4') - touchp('source/c/d/5') - touchp('source/c/d/6') - touchp('source/c/d/e/7') + yield s - source_path = os.path.join(self.stage.path, 'source') - self.link_tree = LinkTree(source_path) + s.destroy() - def tearDown(self): - self.stage.destroy() - def check_file_link(self, filename): - self.assertTrue(os.path.isfile(filename)) - self.assertTrue(os.path.islink(filename)) +@pytest.fixture() +def link_tree(stage): + """Return a properly initialized LinkTree instance.""" + source_path = os.path.join(stage.path, 'source') + return LinkTree(source_path) - def check_dir(self, filename): - self.assertTrue(os.path.isdir(filename)) - def test_merge_to_new_directory(self): - with working_dir(self.stage.path): - self.link_tree.merge('dest') +def check_file_link(filename): + assert os.path.isfile(filename) + assert os.path.islink(filename) - self.check_file_link('dest/1') - self.check_file_link('dest/a/b/2') - self.check_file_link('dest/a/b/3') - self.check_file_link('dest/c/4') - self.check_file_link('dest/c/d/5') - self.check_file_link('dest/c/d/6') - self.check_file_link('dest/c/d/e/7') - self.link_tree.unmerge('dest') +def check_dir(filename): + assert os.path.isdir(filename) - self.assertFalse(os.path.exists('dest')) - def test_merge_to_existing_directory(self): - with working_dir(self.stage.path): +def test_merge_to_new_directory(stage, link_tree): + with working_dir(stage.path): + link_tree.merge('dest') - touchp('dest/x') - touchp('dest/a/b/y') + check_file_link('dest/1') + check_file_link('dest/a/b/2') + check_file_link('dest/a/b/3') + check_file_link('dest/c/4') + check_file_link('dest/c/d/5') + check_file_link('dest/c/d/6') + check_file_link('dest/c/d/e/7') - self.link_tree.merge('dest') + link_tree.unmerge('dest') - self.check_file_link('dest/1') - self.check_file_link('dest/a/b/2') - self.check_file_link('dest/a/b/3') - self.check_file_link('dest/c/4') - self.check_file_link('dest/c/d/5') - self.check_file_link('dest/c/d/6') - self.check_file_link('dest/c/d/e/7') + assert not os.path.exists('dest') - self.assertTrue(os.path.isfile('dest/x')) - self.assertTrue(os.path.isfile('dest/a/b/y')) - self.link_tree.unmerge('dest') +def test_merge_to_existing_directory(stage, link_tree): + with working_dir(stage.path): - self.assertTrue(os.path.isfile('dest/x')) - self.assertTrue(os.path.isfile('dest/a/b/y')) + touchp('dest/x') + touchp('dest/a/b/y') - self.assertFalse(os.path.isfile('dest/1')) - self.assertFalse(os.path.isfile('dest/a/b/2')) - self.assertFalse(os.path.isfile('dest/a/b/3')) - self.assertFalse(os.path.isfile('dest/c/4')) - self.assertFalse(os.path.isfile('dest/c/d/5')) - self.assertFalse(os.path.isfile('dest/c/d/6')) - self.assertFalse(os.path.isfile('dest/c/d/e/7')) + link_tree.merge('dest') - def test_merge_with_empty_directories(self): - with working_dir(self.stage.path): - mkdirp('dest/f/g') - mkdirp('dest/a/b/h') + check_file_link('dest/1') + check_file_link('dest/a/b/2') + check_file_link('dest/a/b/3') + check_file_link('dest/c/4') + check_file_link('dest/c/d/5') + check_file_link('dest/c/d/6') + check_file_link('dest/c/d/e/7') - self.link_tree.merge('dest') - self.link_tree.unmerge('dest') + assert os.path.isfile('dest/x') + assert os.path.isfile('dest/a/b/y') - self.assertFalse(os.path.exists('dest/1')) - self.assertFalse(os.path.exists('dest/a/b/2')) - self.assertFalse(os.path.exists('dest/a/b/3')) - self.assertFalse(os.path.exists('dest/c/4')) - self.assertFalse(os.path.exists('dest/c/d/5')) - self.assertFalse(os.path.exists('dest/c/d/6')) - self.assertFalse(os.path.exists('dest/c/d/e/7')) + link_tree.unmerge('dest') - self.assertTrue(os.path.isdir('dest/a/b/h')) - self.assertTrue(os.path.isdir('dest/f/g')) + assert os.path.isfile('dest/x') + assert os.path.isfile('dest/a/b/y') - def test_ignore(self): - with working_dir(self.stage.path): - touchp('source/.spec') - touchp('dest/.spec') + assert not os.path.isfile('dest/1') + assert not os.path.isfile('dest/a/b/2') + assert not os.path.isfile('dest/a/b/3') + assert not os.path.isfile('dest/c/4') + assert not os.path.isfile('dest/c/d/5') + assert not os.path.isfile('dest/c/d/6') + assert not os.path.isfile('dest/c/d/e/7') - self.link_tree.merge('dest', ignore=lambda x: x == '.spec') - self.link_tree.unmerge('dest', ignore=lambda x: x == '.spec') - self.assertFalse(os.path.exists('dest/1')) - self.assertFalse(os.path.exists('dest/a')) - self.assertFalse(os.path.exists('dest/c')) +def test_merge_with_empty_directories(stage, link_tree): + with working_dir(stage.path): + mkdirp('dest/f/g') + mkdirp('dest/a/b/h') - self.assertTrue(os.path.isfile('source/.spec')) - self.assertTrue(os.path.isfile('dest/.spec')) + link_tree.merge('dest') + link_tree.unmerge('dest') + + assert not os.path.exists('dest/1') + assert not os.path.exists('dest/a/b/2') + assert not os.path.exists('dest/a/b/3') + assert not os.path.exists('dest/c/4') + assert not os.path.exists('dest/c/d/5') + assert not os.path.exists('dest/c/d/6') + assert not os.path.exists('dest/c/d/e/7') + + assert os.path.isdir('dest/a/b/h') + assert os.path.isdir('dest/f/g') + + +def test_ignore(stage, link_tree): + with working_dir(stage.path): + touchp('source/.spec') + touchp('dest/.spec') + + link_tree.merge('dest', ignore=lambda x: x == '.spec') + link_tree.unmerge('dest', ignore=lambda x: x == '.spec') + + assert not os.path.exists('dest/1') + assert not os.path.exists('dest/a') + assert not os.path.exists('dest/c') + + assert os.path.isfile('source/.spec') + assert os.path.isfile('dest/.spec') From 91b32f67ccbb2217804461a0a64d2e09289b486b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Apr 2017 17:55:35 -0500 Subject: [PATCH 0758/2394] Fix alignment of versions and urls in spack checksum (#4003) --- lib/spack/spack/cmd/checksum.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/checksum.py b/lib/spack/spack/cmd/checksum.py index 4ea31efe08b..e0b7fd897d4 100644 --- a/lib/spack/spack/cmd/checksum.py +++ b/lib/spack/spack/cmd/checksum.py @@ -78,7 +78,7 @@ def get_checksums(url_dict, name, **kwargs): num_ver, '' if num_ver == 1 else 's', name), "", *spack.cmd.elide_list( - ["{0:{1}} {2}".format(v, max_len, url_dict[v]) + ["{0:{1}} {2}".format(str(v), max_len, url_dict[v]) for v in sorted_versions])) print() From a6986312ba1a1bc3c77c7582c991f3848ca8f008 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 27 Apr 2017 16:45:04 +0200 Subject: [PATCH 0759/2394] pattern: ported to pytest (#4015) --- lib/spack/spack/test/pattern.py | 127 ++++++++++++++++---------------- 1 file changed, 65 insertions(+), 62 deletions(-) diff --git a/lib/spack/spack/test/pattern.py b/lib/spack/spack/test/pattern.py index b76f88e6701..bd752065636 100644 --- a/lib/spack/spack/test/pattern.py +++ b/lib/spack/spack/test/pattern.py @@ -23,85 +23,88 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -import unittest - +import pytest import spack.util.pattern as pattern -class CompositeTest(unittest.TestCase): +@pytest.fixture() +def interface(): + """Returns the interface class for the composite.""" + class Base: + counter = 0 - def setUp(self): - class Base: - counter = 0 + def add(self): + raise NotImplemented('add not implemented') + + def subtract(self): + raise NotImplemented('subtract not implemented') + + return Base + + +@pytest.fixture() +def implementation(interface): + """Returns an implementation of the interface""" + class Implementation(interface): + + def __init__(self, value): + self.value = value def add(self): - raise NotImplemented('add not implemented') + interface.counter += self.value def subtract(self): - raise NotImplemented('subtract not implemented') + interface.counter -= self.value - class One(Base): + return Implementation - def add(self): - Base.counter += 1 - def subtract(self): - Base.counter -= 1 - - class Two(Base): - - def add(self): - Base.counter += 2 - - def subtract(self): - Base.counter -= 2 - - self.Base = Base - self.One = One - self.Two = Two - - def test_composite_from_method_list(self): - - @pattern.composite(method_list=['add', 'subtract']) - class CompositeFromMethodList: +@pytest.fixture(params=[ + 'interface', + 'method_list' +]) +def composite(interface, implementation, request): + """Returns a composite that contains an instance of `implementation(1)` + and one of `implementation(2)`. + """ + if request.param == 'interface': + @pattern.composite(interface=interface) + class Composite: pass - composite = CompositeFromMethodList() - composite.append(self.One()) - composite.append(self.Two()) - composite.add() - self.assertEqual(self.Base.counter, 3) - composite.pop() - composite.subtract() - self.assertEqual(self.Base.counter, 2) + else: + @pattern.composite(method_list=['add', 'subtract']) + class Composite: + pass - def test_composite_from_interface(self): + c = Composite() + c.append(implementation(1)) + c.append(implementation(2)) - @pattern.composite(interface=self.Base) + return c + + +def test_composite_interface_calls(interface, composite): + + composite.add() + assert interface.counter == 3 + + composite.pop() + composite.subtract() + assert interface.counter == 2 + + +def test_composite_wrong_container(interface): + + with pytest.raises(TypeError): + @pattern.composite(interface=interface, container=2) class CompositeFromInterface: pass - composite = CompositeFromInterface() - composite.append(self.One()) - composite.append(self.Two()) - composite.add() - self.assertEqual(self.Base.counter, 3) - composite.pop() - composite.subtract() - self.assertEqual(self.Base.counter, 2) +def test_composite_no_methods(): - def test_error_conditions(self): - - def wrong_container(): - @pattern.composite(interface=self.Base, container=2) - class CompositeFromInterface: - pass - - def no_methods(): - @pattern.composite() - class CompositeFromInterface: - pass - - self.assertRaises(TypeError, wrong_container) - self.assertRaises(TypeError, no_methods) + with pytest.raises(TypeError): + @pattern.composite() + class CompositeFromInterface: + pass From 455cae01c29d6da491507b277bf9ec33b0fdcb16 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 27 Apr 2017 07:45:34 -0700 Subject: [PATCH 0760/2394] Convert rest docstrings to Google docstrings. (#3994) - Sometimes you need something mindless to do. - Sometimes it can be helpful, as well. --- lib/spack/llnl/util/filesystem.py | 71 ++++++++------- lib/spack/spack/build_environment.py | 52 ++++++----- lib/spack/spack/build_systems/python.py | 8 +- lib/spack/spack/cmd/checksum.py | 13 +-- lib/spack/spack/cmd/create.py | 45 ++++++---- lib/spack/spack/cmd/edit.py | 7 +- lib/spack/spack/cmd/url.py | 48 +++++----- lib/spack/spack/directives.py | 20 +++-- lib/spack/spack/environment.py | 13 +-- lib/spack/spack/fetch_strategy.py | 15 +++- lib/spack/spack/mirror.py | 9 +- lib/spack/spack/package.py | 113 +++++++++++++----------- lib/spack/spack/spec.py | 50 ++++++----- lib/spack/spack/test/modules.py | 10 ++- lib/spack/spack/test/python_version.py | 9 +- lib/spack/spack/url.py | 108 ++++++++++++---------- lib/spack/spack/util/naming.py | 12 ++- lib/spack/spack/util/pattern.py | 25 +++--- 18 files changed, 352 insertions(+), 276 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 86122f42c8b..035f9a13ff4 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -584,32 +584,32 @@ def __str__(self): return self.joined() -def find_system_libraries(args, shared=True): - """Searches the usual system library locations for the libraries - specified in args. +def find_system_libraries(library_names, shared=True): + """Searches the usual system library locations for ``library_names``. Search order is as follows: - 1. /lib64 - 2. /lib - 3. /usr/lib64 - 4. /usr/lib - 5. /usr/local/lib64 - 6. /usr/local/lib + 1. ``/lib64`` + 2. ``/lib`` + 3. ``/usr/lib64`` + 4. ``/usr/lib`` + 5. ``/usr/local/lib64`` + 6. ``/usr/local/lib`` - :param args: Library name(s) to search for - :type args: str or collections.Sequence - :param bool shared: if True searches for shared libraries, + Args: + library_names (str or list of str): Library name(s) to search for + shared (bool): searches for shared libraries if True - :returns: The libraries that have been found - :rtype: LibraryList + Returns: + LibraryList: The libraries that have been found """ - if isinstance(args, str): - args = [args] - elif not isinstance(args, collections.Sequence): + if isinstance(library_names, str): + library_names = [library_names] + elif not isinstance(library_names, collections.Sequence): message = '{0} expects a string or sequence of strings as the ' message += 'first argument [got {1} instead]' - message = message.format(find_system_libraries.__name__, type(args)) + message = message.format( + find_system_libraries.__name__, type(library_names)) raise TypeError(message) libraries_found = [] @@ -622,7 +622,7 @@ def find_system_libraries(args, shared=True): '/usr/local/lib', ] - for library in args: + for library in library_names: for root in search_locations: result = find_libraries(library, root, shared, recurse=True) if result: @@ -632,27 +632,26 @@ def find_system_libraries(args, shared=True): return libraries_found -def find_libraries(args, root, shared=True, recurse=False): - """Returns an iterable object containing a list of full paths to - libraries if found. +def find_libraries(library_names, root, shared=True, recurse=False): + """Returns an iterable of full paths to libraries found in a root dir. - :param args: Library name(s) to search for - :type args: str or collections.Sequence - :param str root: The root directory to start searching from - :param bool shared: if True searches for shared libraries, - otherwise for static - :param bool recurse: if False search only root folder, - if True descends top-down from the root + Args: + library_names (str or list of str): Library names to search for + root (str): The root directory to start searching from + shared (bool): if True searches for shared libraries, otherwise static. + recurse (bool): if False search only root folder, + if True descends top-down from the root - :returns: The libraries that have been found - :rtype: LibraryList + Returns: + LibraryList: The libraries that have been found """ - if isinstance(args, str): - args = [args] - elif not isinstance(args, collections.Sequence): + if isinstance(library_names, str): + library_names = [library_names] + elif not isinstance(library_names, collections.Sequence): message = '{0} expects a string or sequence of strings as the ' message += 'first argument [got {1} instead]' - raise TypeError(message.format(find_libraries.__name__, type(args))) + raise TypeError(message.format( + find_libraries.__name__, type(library_names))) # Construct the right suffix for the library if shared is True: @@ -660,7 +659,7 @@ def find_libraries(args, root, shared=True, recurse=False): else: suffix = 'a' # List of libraries we are searching with suffixes - libraries = ['{0}.{1}'.format(lib, suffix) for lib in args] + libraries = ['{0}.{1}'.format(lib, suffix) for lib in library_names] # Search method if recurse is False: search_method = _find_libraries_non_recursive diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 06ac65f552e..9c3768b65b3 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -438,12 +438,17 @@ def get_rpaths(pkg): def get_std_cmake_args(pkg): - """Returns the list of standard arguments that would be used if this - package was a CMakePackage instance. + """List of standard arguments used if a package is a CMakePackage. - :param pkg: pkg under consideration + Returns: + list of str: standard arguments that would be used if this + package were a CMakePackage instance. - :return: list of arguments for cmake + Args: + pkg (PackageBase): package under consideration + + Returns: + list of str: arguments for cmake """ return spack.CMakePackage._std_args(pkg) @@ -465,10 +470,13 @@ def parent_class_modules(cls): def load_external_modules(pkg): - """Traverse the spec list associated with a package - and find any specs that have external modules. + """Traverse a package's spec DAG and load any external modules. - :param pkg: package under consideration + Traverse a package's dependencies and load any external modules + associated with them. + + Args: + pkg (PackageBase): package to load deps for """ for dep in list(pkg.spec.traverse()): if dep.external_module: @@ -531,25 +539,29 @@ def setup_package(pkg, dirty=False): def fork(pkg, function, dirty=False): """Fork a child process to do part of a spack build. - :param pkg: pkg whose environemnt we should set up the forked process for. - :param function: arg-less function to run in the child process. - :param dirty: If True, do NOT clean the environment before building. + Args: + + pkg (PackageBase): package whose environemnt we should set up the + forked process for. + function (callable): argless function to run in the child + process. + dirty (bool): If True, do NOT clean the environment before + building. Usage:: - def child_fun(): - # do stuff - build_env.fork(pkg, child_fun) + def child_fun(): + # do stuff + build_env.fork(pkg, child_fun) Forked processes are run with the build environment set up by - spack.build_environment. This allows package authors to have - full control over the environment, etc. without affecting - other builds that might be executed in the same spack call. + spack.build_environment. This allows package authors to have full + control over the environment, etc. without affecting other builds + that might be executed in the same spack call. - If something goes wrong, the child process is expected to print - the error and the parent process will exit with error as - well. If things go well, the child exits and the parent - carries on. + If something goes wrong, the child process is expected to print the + error and the parent process will exit with error as well. If things + go well, the child exits and the parent carries on. """ def child_execution(child_connection, input_stream): diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index 7a8650bfce4..3fae6671f0b 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -137,9 +137,11 @@ def setup_py(self, *args, **kwargs): def _setup_command_available(self, command): """Determines whether or not a setup.py command exists. - :param str command: The command to look for - :return: True if the command is found, else False - :rtype: bool + Args: + command (str): The command to look for + + Returns: + bool: True if the command is found, else False """ kwargs = { 'output': os.devnull, diff --git a/lib/spack/spack/cmd/checksum.py b/lib/spack/spack/cmd/checksum.py index e0b7fd897d4..fda9beed27c 100644 --- a/lib/spack/spack/cmd/checksum.py +++ b/lib/spack/spack/cmd/checksum.py @@ -57,13 +57,14 @@ def get_checksums(url_dict, name, **kwargs): The ``first_stage_function`` kwarg allows ``spack create`` to determine things like the build system of the archive. - :param dict url_dict: A dictionary of the form: version -> URL - :param str name: The name of the package - :param callable first_stage_function: Function to run on first staging area - :param bool keep_stage: Don't clean up staging area when command completes + Args: + url_dict (dict): A dictionary of the form: version -> URL + name (str): The name of the package + first_stage_function (callable): Function to run on first staging area + keep_stage (bool): Don't clean up staging area when command completes - :returns: A multi-line string containing versions and corresponding hashes - :rtype: str + Returns: + str: A multi-line string containing versions and corresponding hashes """ first_stage_function = kwargs.get('first_stage_function', None) keep_stage = kwargs.get('keep_stage', False) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index d839cc91adb..504ac9d8447 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -451,10 +451,12 @@ def get_name(args): If a name was provided, always use that. Otherwise, if a URL was provided, extract the name from that. Otherwise, use a default. - :param argparse.Namespace args: The arguments given to ``spack create`` + Args: + args (param argparse.Namespace): The arguments given to + ``spack create`` - :returns: The name of the package - :rtype: str + Returns: + str: The name of the package """ # Default package name @@ -487,10 +489,11 @@ def get_url(args): Use a default URL if none is provided. - :param argparse.Namespace args: The arguments given to ``spack create`` + Args: + args (argparse.Namespace): The arguments given to ``spack create`` - :returns: The URL of the package - :rtype: str + Returns: + str: The URL of the package """ # Default URL @@ -510,11 +513,13 @@ def get_versions(args, name): Returns default values if no URL is provided. - :param argparse.Namespace args: The arguments given to ``spack create`` - :param str name: The name of the package + Args: + args (argparse.Namespace): The arguments given to ``spack create`` + name (str): The name of the package - :returns: Versions and hashes, and a BuildSystemGuesser object - :rtype: str and BuildSystemGuesser + Returns: + str and BuildSystemGuesser: Versions and hashes, and a + BuildSystemGuesser object """ # Default version, hash, and guesser @@ -552,12 +557,13 @@ def get_build_system(args, guesser): is provided, download the tarball and peek inside to guess what build system it uses. Otherwise, use a generic template by default. - :param argparse.Namespace args: The arguments given to ``spack create`` - :param BuildSystemGuesser guesser: The first_stage_function given to \ - ``spack checksum`` which records the build system it detects + Args: + args (argparse.Namespace): The arguments given to ``spack create`` + guesser (BuildSystemGuesser): The first_stage_function given to + ``spack checksum`` which records the build system it detects - :returns: The name of the build system template to use - :rtype: str + Returns: + str: The name of the build system template to use """ # Default template @@ -584,11 +590,12 @@ def get_repository(args, name): """Returns a Repo object that will allow us to determine the path where the new package file should be created. - :param argparse.Namespace args: The arguments given to ``spack create`` - :param str name: The name of the package to create + Args: + args (argparse.Namespace): The arguments given to ``spack create`` + name (str): The name of the package to create - :returns: A Repo object capable of determining the path to the package file - :rtype: Repo + Returns: + Repo: A Repo object capable of determining the path to the package file """ spec = Spec(name) # Figure out namespace for spec diff --git a/lib/spack/spack/cmd/edit.py b/lib/spack/spack/cmd/edit.py index f4397361921..01f2b618876 100644 --- a/lib/spack/spack/cmd/edit.py +++ b/lib/spack/spack/cmd/edit.py @@ -38,9 +38,10 @@ def edit_package(name, repo_path, namespace): """Opens the requested package file in your favorite $EDITOR. - :param str name: The name of the package - :param str repo_path: The path to the repository containing this package - :param str namespace: A valid namespace registered with Spack + Args: + name (str): The name of the package + repo_path (str): The path to the repository containing this package + namespace (str): A valid namespace registered with Spack """ # Find the location of the package if repo_path: diff --git a/lib/spack/spack/cmd/url.py b/lib/spack/spack/cmd/url.py index 1128e08a43c..e5cfce0de36 100644 --- a/lib/spack/spack/cmd/url.py +++ b/lib/spack/spack/cmd/url.py @@ -244,7 +244,8 @@ def print_name_and_version(url): """Prints a URL. Underlines the detected name with dashes and the detected version with tildes. - :param str url: The url to parse + Args: + url (str): The url to parse """ name, ns, nl, ntup, ver, vs, vl, vtup = substitution_offsets(url) underlines = [' '] * max(ns + nl, vs + vl) @@ -260,13 +261,15 @@ def print_name_and_version(url): def url_list_parsing(args, urls, url, pkg): """Helper function for :func:`url_list`. - :param argparse.Namespace args: The arguments given to ``spack url list`` - :param set urls: List of URLs that have already been added - :param url: A URL to potentially add to ``urls`` depending on ``args`` - :type url: str or None - :param spack.package.PackageBase pkg: The Spack package - :returns: The updated ``urls`` list - :rtype: set + Args: + args (argparse.Namespace): The arguments given to ``spack url list`` + urls (set): List of URLs that have already been added + url (str or None): A URL to potentially add to ``urls`` depending on + ``args`` + pkg (spack.package.PackageBase): The Spack package + + Returns: + set: The updated set of ``urls`` """ if url: if args.correct_name or args.incorrect_name: @@ -310,10 +313,12 @@ def url_list_parsing(args, urls, url, pkg): def name_parsed_correctly(pkg, name): """Determine if the name of a package was correctly parsed. - :param spack.package.PackageBase pkg: The Spack package - :param str name: The name that was extracted from the URL - :returns: True if the name was correctly parsed, else False - :rtype: bool + Args: + pkg (spack.package.PackageBase): The Spack package + name (str): The name that was extracted from the URL + + Returns: + bool: True if the name was correctly parsed, else False """ pkg_name = pkg.name @@ -336,10 +341,12 @@ def name_parsed_correctly(pkg, name): def version_parsed_correctly(pkg, version): """Determine if the version of a package was correctly parsed. - :param spack.package.PackageBase pkg: The Spack package - :param str version: The version that was extracted from the URL - :returns: True if the name was correctly parsed, else False - :rtype: bool + Args: + pkg (spack.package.PackageBase): The Spack package + version (str): The version that was extracted from the URL + + Returns: + bool: True if the name was correctly parsed, else False """ version = remove_separators(version) @@ -359,10 +366,11 @@ def remove_separators(version): Make sure 1.2.3, 1-2-3, 1_2_3, and 123 are considered equal. Unfortunately, this also means that 1.23 and 12.3 are equal. - :param version: A version - :type version: str or Version - :returns: The version with all separator characters removed - :rtype: str + Args: + version (str or Version): A version + + Returns: + str: The version with all separator characters removed """ version = str(version) diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index e2219d1f49c..7a245f606c5 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -265,20 +265,22 @@ def _depends_on(pkg, spec, when=None, type=None): @directive('conflicts') def conflicts(conflict_spec, when=None): - """Allows a package to define a conflict, i.e. a concretized configuration - that is known to be non-valid. + """Allows a package to define a conflict. - For example a package that is known not to be buildable with intel - compilers can declare: + Currently, a "conflict" is a concretized configuration that is known + to be non-valid. For example, a package that is known not to be + buildable with intel compilers can declare:: - conflicts('%intel') + conflicts('%intel') - To express the same constraint only when the 'foo' variant is activated: + To express the same constraint only when the 'foo' variant is + activated:: - conflicts('%intel', when='+foo') + conflicts('%intel', when='+foo') - :param conflict_spec: constraint defining the known conflict - :param when: optional constraint that triggers the conflict + Args: + conflict_spec (Spec): constraint defining the known conflict + when (Spec): optional constraint that triggers the conflict """ def _execute(pkg): # If when is not specified the conflict always holds diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index eadfa45efb6..83a51394109 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -262,12 +262,15 @@ def apply_modifications(self): @staticmethod def from_sourcing_files(*args, **kwargs): - """Creates an instance of EnvironmentModifications that, if executed, - has the same effect on the environment as sourcing the files passed as - parameters + """Returns modifications that would be made by sourcing files. - :param \*args: list of files to be sourced - :rtype: instance of EnvironmentModifications + Args: + *args (list of str): list of files to be sourced + + Returns: + EnvironmentModifications: an object that, if executed, has + the same effect on the environment as sourcing the files + passed as parameters """ env = EnvironmentModifications() diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index c6946108560..5c872ae1b68 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -911,11 +911,18 @@ def from_url(url): def from_kwargs(**kwargs): - """ - Construct the appropriate FetchStrategy from the given keyword arguments. + """Construct an appropriate FetchStrategy from the given keyword arguments. - :param kwargs: dictionary of keyword arguments - :return: fetcher or raise a FetchError exception + Args: + **kwargs: dictionary of keyword arguments, e.g. from a + ``version()`` directive in a package. + + Returns: + fetch_strategy: The fetch strategy that matches the args, based + on attribute names (e.g., ``git``, ``hg``, etc.) + + Raises: + FetchError: If no ``fetch_strategy`` matches the args. """ for fetcher in all_strategies: if fetcher.matches(kwargs): diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index aef5e2e8ee3..c9ed617dc8b 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -117,13 +117,10 @@ def get_matching_versions(specs, **kwargs): def suggest_archive_basename(resource): - """ - Return a tentative basename for an archive. + """Return a tentative basename for an archive. - Raises an exception if the name is not an allowed archive type. - - :param fetcher: - :return: + Raises: + RuntimeError: if the name is not an allowed archive type. """ basename = os.path.basename(resource.fetcher.url) if not allowed_archive(basename): diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 506e44ec452..4d93b6304cb 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -73,7 +73,7 @@ class InstallPhase(object): - """Manages a single phase of the installation + """Manages a single phase of the installation. This descriptor stores at creation time the name of the method it should search for execution. The method is retrieved at __get__ time, so that @@ -214,11 +214,14 @@ def run_after(*phases): def on_package_attributes(**attr_dict): - """Executes the decorated method only if at the moment of calling - the instance has attributes that are equal to certain values. + """Decorator: executes instance function only if object has attr valuses. - :param dict attr_dict: dictionary mapping attribute names to their - required values + Executes the decorated method only if at the moment of calling the + instance has attributes that are equal to certain values. + + Args: + attr_dict (dict): dictionary mapping attribute names to their + required values """ def _execute_under_condition(func): @@ -1082,12 +1085,14 @@ def _stage_and_write_lock(self): yield def _process_external_package(self, explicit): - """Helper function to process external packages. It runs post install - hooks and registers the package in the DB. + """Helper function to process external packages. - :param bool explicit: True if the package was requested explicitly by - the user, False if it was pulled in as a dependency of an explicit - package. + Runs post install hooks and registers the package in the DB. + + Args: + explicit (bool): if the package was requested explicitly by + the user, False if it was pulled in as a dependency of an + explicit package. """ if self.spec.external_module: message = '{s.name}@{s.version} : has external module in {module}' @@ -1143,24 +1148,25 @@ def do_install(self, Package implementations should override install() to describe their build process. - :param bool keep_prefix: Keep install prefix on failure. By default, - destroys it. - :param bool keep_stage: By default, stage is destroyed only if there - are no exceptions during build. Set to True to keep the stage - even with exceptions. - :param bool install_deps: Install dependencies before installing this - package - :param bool skip_patch: Skip patch stage of build if True. - :param bool verbose: Display verbose build output (by default, - suppresses it) - :param int make_jobs: Number of make jobs to use for install. Default - is ncpus - :param bool run_tests: Run tests within the package's install() - :param bool fake: Don't really build; install fake stub files instead. - :param bool explicit: True if package was explicitly installed, False - if package was implicitly installed (as a dependency). - :param bool dirty: Don't clean the build environment before installing. - :param bool force: Install again, even if already installed. + Args: + keep_prefix (bool): Keep install prefix on failure. By default, + destroys it. + keep_stage (bool): By default, stage is destroyed only if there + are no exceptions during build. Set to True to keep the stage + even with exceptions. + install_deps (bool): Install dependencies before installing this + package + skip_patch (bool): Skip patch stage of build if True. + verbose (bool): Display verbose build output (by default, + suppresses it) + make_jobs (int): Number of make jobs to use for install. Default + is ncpus + run_tests (bool): Run tests within the package's install() + fake (bool): Don't really build; install fake stub files instead. + explicit (bool): True if package was explicitly installed, False + if package was implicitly installed (as a dependency). + dirty (bool): Don't clean the build environment before installing. + force (bool): Install again, even if already installed. """ if not self.spec.concrete: raise ValueError("Can only install concrete packages: %s." @@ -1423,12 +1429,13 @@ def setup_environment(self, spack_env, run_env): 1. Qt extensions need ``QTDIR`` set. - :param EnvironmentModifications spack_env: List of environment - modifications to be applied when this package is built - within Spack. - :param EnvironmentModifications run_env: List of environment - modifications to be applied when this package is run outside - of Spack. These are added to the resulting module file. + Args: + spack_env (EnvironmentModifications): List of environment + modifications to be applied when this package is built + within Spack. + run_env (EnvironmentModifications): List of environment + modifications to be applied when this package is run outside + of Spack. These are added to the resulting module file. """ pass @@ -1450,17 +1457,18 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): to the ``lib/pythonX.Y/site-packages`` directory in the module's install prefix. This method could be used to set that variable. - :param EnvironmentModifications spack_env: List of environment - modifications to be applied when the dependent package is - built within Spack. - :param EnvironmentModifications run_env: List of environment - modifications to be applied when the dependent package is - run outside of Spack. These are added to the resulting - module file. - :param Spec dependent_spec: The spec of the dependent package - about to be built. This allows the extendee (self) to query - the dependent's state. Note that *this* package's spec is - available as ``self.spec``. + Args: + spack_env (EnvironmentModifications): List of environment + modifications to be applied when the dependent package is + built within Spack. + run_env (EnvironmentModifications): List of environment + modifications to be applied when the dependent package is + run outside of Spack. These are added to the resulting + module file. + dependent_spec (Spec): The spec of the dependent package + about to be built. This allows the extendee (self) to query + the dependent's state. Note that *this* package's spec is + available as ``self.spec``. """ pass @@ -1489,14 +1497,15 @@ def setup_dependent_package(self, module, dependent_spec): indicating the path to their libraries, since these paths differ by BLAS/LAPACK implementation. - :param spack.package.PackageBase.module module: The Python ``module`` - object of the dependent package. Packages can use this to set - module-scope variables for the dependent to use. + Args: + module (spack.package.PackageBase.module): The Python ``module`` + object of the dependent package. Packages can use this to set + module-scope variables for the dependent to use. - :param Spec dependent_spec: The spec of the dependent package - about to be built. This allows the extendee (self) to - query the dependent's state. Note that *this* - package's spec is available as ``self.spec``. + dependent_spec (Spec): The spec of the dependent package + about to be built. This allows the extendee (self) to + query the dependent's state. Note that *this* + package's spec is available as ``self.spec``. """ pass diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 3d067e083fe..4cd89f59bfc 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -758,32 +758,35 @@ def __str__(self): def _libs_default_handler(descriptor, spec, cls): - """Default handler when looking for 'libs' attribute. The default - tries to search for 'lib{spec.name}' recursively starting from + """Default handler when for ``libs`` attribute in Spec interface. + + Tries to search for ``lib{spec.name}`` recursively starting from `spec.prefix`. - :param ForwardQueryToPackage descriptor: descriptor that triggered - the call - :param Spec spec: spec that is being queried - :param type(spec) cls: type of spec, to match the signature of the - descriptor `__get__` method + Args: + descriptor (ForwardQueryToPackage): descriptor that triggered + the call + spec (Spec): spec that is being queried + cls (type(spec)): type of spec, to match the signature of the + descriptor `__get__` method """ name = 'lib' + spec.name shared = '+shared' in spec - return find_libraries( - name, root=spec.prefix, shared=shared, recurse=True - ) + return find_libraries(name, root=spec.prefix, shared=shared, recurse=True) def _cppflags_default_handler(descriptor, spec, cls): - """Default handler when looking for cppflags attribute. The default - just returns '-I{spec.prefix.include}'. + """Default handler for the ``cppflags`` attribute in the Spec interface. - :param ForwardQueryToPackage descriptor: descriptor that triggered - the call - :param Spec spec: spec that is being queried - :param type(spec) cls: type of spec, to match the signature of the - descriptor `__get__` method + The default just returns ``-I{spec.prefix.include}``. + + Args: + descriptor (ForwardQueryToPackage): descriptor that triggered + the call + spec (Spec): spec that is being queried + + cls (type(spec)): type of spec, to match the signature of the + descriptor ``__get__`` method """ return '-I' + spec.prefix.include @@ -792,13 +795,14 @@ class ForwardQueryToPackage(object): """Descriptor used to forward queries from Spec to Package""" def __init__(self, attribute_name, default_handler=None): - """Initializes the instance of the descriptor + """Create a new descriptor. - :param str attribute_name: name of the attribute to be - searched for in the Package instance - :param callable default_handler: [optional] default function - to be called if the attribute was not found in the Package - instance + Args: + attribute_name (str): name of the attribute to be + searched for in the Package instance + default_handler (callable, optional): default function to be + called if the attribute was not found in the Package + instance """ self.attribute_name = attribute_name # Turn the default handler into a function with the right diff --git a/lib/spack/spack/test/modules.py b/lib/spack/spack/test/modules.py index 0eb54cba2cd..e8ebebf7368 100644 --- a/lib/spack/spack/test/modules.py +++ b/lib/spack/spack/test/modules.py @@ -63,10 +63,12 @@ def _mock(filename, mode): def get_modulefile_content(factory, spec): """Writes the module file and returns the content as a string. - :param factory: module file factory - :param spec: spec of the module file to be written - :return: content of the module file - :rtype: str + Args: + factory: module file factory + spec: spec of the module file to be written + + Returns: + str: content of the module file """ spec.concretize() generator = factory(spec) diff --git a/lib/spack/spack/test/python_version.py b/lib/spack/spack/test/python_version.py index d58df1a0aae..35b6ad7da7d 100644 --- a/lib/spack/spack/test/python_version.py +++ b/lib/spack/spack/test/python_version.py @@ -67,9 +67,12 @@ def pyfiles(search_paths, exclude=()): """Generator that yields all the python files in the search paths. - :param search_paths: list of paths to search for python files - :param exclude: file paths to exclude from search - :return: python files + Args: + search_paths (list of str): list of paths to search for python files + exclude (list of str): file paths to exclude from search + + Yields: + python files in the search path. """ # first file is the spack script. yield spack.spack_file diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 7a597073d60..736c0f2efda 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -116,9 +116,11 @@ def strip_version_suffixes(path): * ``libevent-2.0.21`` * ``cuda_8.0.44`` - :param str path: The filename or URL for the package - :return: The ``path`` with any extraneous suffixes removed - :rtype: str + Args: + path (str): The filename or URL for the package + + Returns: + str: The ``path`` with any extraneous suffixes removed """ # NOTE: This could be done with complicated regexes in parse_version_offset # NOTE: The problem is that we would have to add these regexes to the end @@ -227,10 +229,12 @@ def strip_name_suffixes(path, version): * ``converge`` * ``jpeg`` - :param str path: The filename or URL for the package - :param str version: The version detected for this URL - :return: The ``path`` with any extraneous suffixes removed - :rtype: str + Args: + path (str): The filename or URL for the package + version (str): The version detected for this URL + + Returns: + str: The ``path`` with any extraneous suffixes removed """ # NOTE: This could be done with complicated regexes in parse_name_offset # NOTE: The problem is that we would have to add these regexes to every @@ -339,18 +343,19 @@ def determine_url_file_extension(path): def parse_version_offset(path): """Try to extract a version string from a filename or URL. - :param str path: The filename or URL for the package + Args: + path (str): The filename or URL for the package - :return: A tuple containing: - version of the package, - first index of version, - length of version string, - the index of the matching regex - the matching regex + Returns: + tuple of (Version, int, int, int, str): A tuple containing: + version of the package, + first index of version, + length of version string, + the index of the matching regex + the matching regex - :rtype: tuple - - :raises UndetectableVersionError: If the URL does not match any regexes + Raises: + UndetectableVersionError: If the URL does not match any regexes """ original_path = path @@ -524,12 +529,14 @@ def parse_version_offset(path): def parse_version(path): """Try to extract a version string from a filename or URL. - :param str path: The filename or URL for the package + Args: + path (str): The filename or URL for the package - :return: The version of the package - :rtype: spack.version.Version + Returns: + spack.version.Version: The version of the package - :raises UndetectableVersionError: If the URL does not match any regexes + Raises: + UndetectableVersionError: If the URL does not match any regexes """ version, start, length, i, regex = parse_version_offset(path) return Version(version) @@ -538,19 +545,20 @@ def parse_version(path): def parse_name_offset(path, v=None): """Try to determine the name of a package from its filename or URL. - :param str path: The filename or URL for the package - :param str v: The version of the package + Args: + path (str): The filename or URL for the package + v (str): The version of the package - :return: A tuple containing: - name of the package, - first index of name, - length of name, - the index of the matching regex - the matching regex + Returns: + tuple of (str, int, int, int, str): A tuple containing: + name of the package, + first index of name, + length of name, + the index of the matching regex + the matching regex - :rtype: tuple - - :raises UndetectableNameError: If the URL does not match any regexes + Raises: + UndetectableNameError: If the URL does not match any regexes """ original_path = path @@ -651,13 +659,15 @@ def parse_name_offset(path, v=None): def parse_name(path, ver=None): """Try to determine the name of a package from its filename or URL. - :param str path: The filename or URL for the package - :param str ver: The version of the package + Args: + path (str): The filename or URL for the package + ver (str): The version of the package - :return: The name of the package - :rtype: str + Returns: + str: The name of the package - :raises UndetectableNameError: If the URL does not match any regexes + Raises: + UndetectableNameError: If the URL does not match any regexes """ name, start, length, i, regex = parse_name_offset(path, ver) return name @@ -667,16 +677,17 @@ def parse_name_and_version(path): """Try to determine the name of a package and extract its version from its filename or URL. - :param str path: The filename or URL for the package + Args: + path (str): The filename or URL for the package - :return: A tuple containing: - The name of the package - The version of the package + Returns: + tuple of (str, Version)A tuple containing: + The name of the package + The version of the package - :rtype: tuple - - :raises UndetectableVersionError: If the URL does not match any regexes - :raises UndetectableNameError: If the URL does not match any regexes + Raises: + UndetectableVersionError: If the URL does not match any regexes + UndetectableNameError: If the URL does not match any regexes """ ver = parse_version(path) name = parse_name(path, ver) @@ -804,9 +815,10 @@ def color_url(path, **kwargs): | Green: Instances of version string from :func:`substitute_version`. | Magenta: Instances of the name (protected from substitution). - :param str path: The filename or URL for the package - :keyword bool errors: Append parse errors at end of string. - :keyword bool subs: Color substitutions as well as parsed name/version. + Args: + path (str): The filename or URL for the package + errors (bool): Append parse errors at end of string. + subs (bool): Color substitutions as well as parsed name/version. """ errors = kwargs.get('errors', False) subs = kwargs.get('subs', False) diff --git a/lib/spack/spack/util/naming.py b/lib/spack/spack/util/naming.py index cd35008aed3..18142bd83f1 100644 --- a/lib/spack/spack/util/naming.py +++ b/lib/spack/spack/util/naming.py @@ -110,13 +110,17 @@ def possible_spack_module_names(python_mod_name): def simplify_name(name): - """Simplifies a name which may include uppercase letters, periods, + """Simplify package name to only lowercase, digits, and dashes. + + Simplifies a name which may include uppercase letters, periods, underscores, and pluses. In general, we want our package names to only contain lowercase letters, digits, and dashes. - :param str name: The original name of the package - :return: The new name of the package - :rtype: str + Args: + name (str): The original name of the package + + Returns: + str: The new name of the package """ # Convert CamelCase to Dashed-Names # e.g. ImageMagick -> Image-Magick diff --git a/lib/spack/spack/util/pattern.py b/lib/spack/spack/util/pattern.py index 7a1109f2d2e..bebca1f4197 100644 --- a/lib/spack/spack/util/pattern.py +++ b/lib/spack/spack/util/pattern.py @@ -28,20 +28,23 @@ def composite(interface=None, method_list=None, container=list): - """Returns a class decorator that patches a class adding all the methods - it needs to be a composite for a given interface. + """Decorator implementing the GoF composite pattern. - :param interface: class exposing the interface to which the composite \ - object must conform. Only non-private and non-special methods will \ - be taken into account + Args: + interface (type): class exposing the interface to which the + composite object must conform. Only non-private and + non-special methods will be taken into account + method_list (list of str): names of methods that should be part + of the composite + container (MutableSequence): container for the composite object + (default = list). Must fulfill the MutableSequence + contract. The composite class will expose the container API + to manage object composition - :param method_list: names of methods that should be part of the composite + Returns: + a class decorator that patches a class adding all the methods + it needs to be a composite for a given interface. - :param container: container for the composite object (default = list). \ - Must fulfill the MutableSequence contract. The composite class will \ - expose the container API to manage object composition - - :return: class decorator """ # Check if container fulfills the MutableSequence contract and raise an # exception if it doesn't. The patched class returned by the decorator will From 41e3e7dbffa5537b684d151e4fe3b96a898a45a6 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Fri, 28 Apr 2017 01:42:56 +1000 Subject: [PATCH 0761/2394] ghostscript: add version 9.21 and handle new URL format (#3898) * ghostscript: add version 9.21 and handle new URL format * ghostscript: add url of latest version to fix `spack versions` * ghostscript: use github for all versions our package provides (>= 9.18) --- var/spack/repos/builtin/packages/ghostscript/package.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ghostscript/package.py b/var/spack/repos/builtin/packages/ghostscript/package.py index f63ebac0c14..2e884b42788 100644 --- a/var/spack/repos/builtin/packages/ghostscript/package.py +++ b/var/spack/repos/builtin/packages/ghostscript/package.py @@ -29,14 +29,19 @@ class Ghostscript(Package): """An interpreter for the PostScript language and for PDF.""" homepage = "http://ghostscript.com/" - url = "http://downloads.ghostscript.com/public/old-gs-releases/ghostscript-9.18.tar.gz" + url = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs921/ghostscript-9.21.tar.gz" + version('9.21', '6f60d7fcb5eef6a8bec5abedf21c6a7008a8c0c7') version('9.18', '33a47567d7a591c00a253caddd12a88a') parallel = False depends_on('libtiff') + def url_for_version(self, version): + baseurl = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs{0}/ghostscript-{1}.tar.gz" + return baseurl.format(version.joined, version.dotted) + def install(self, spec, prefix): configure('--prefix={0}'.format(prefix), '--with-system-libtiff') From 58567a218273885577a373e6aa8284847203e7d4 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 27 Apr 2017 09:04:26 -0700 Subject: [PATCH 0762/2394] Adjustments to get gtkplus to build (#3208) * Hackery to get gtkplus to build PR #3077 broke gtkplus by introducing gobject-introspection. This big hack makes things work. It has problems. 1. Rather than deal with the nasty sbang fooey in the g-ir-tool-template.in derived scripts, it just adds a python dependency to each package that runs one of the scripts. This lets the `/usr/bin/env python` sbang do the right thing. 2. It stuffs a several directories on to the XDG_DATA_DIRS environment variable, which is used for (among other things) locating the .gir files. 3. It avoids building the gtkplus demos because I can't make the bit that calls `gdk-pixbuf-csource` work. It doesn't think that it can load `.png` files and all of the google hits I found suggest a bad `loader.cache` file. The file's fine and I can strace the command and watch it read it in... Many, many hours wasted here. In spite of the demo failing, the tests pass and an emacs built with this lib seems to work. * Fix sbang so everyone needn't depend_on python Rather than have every package that `depends_on('gobject-introspection')` also need to `depend_on('python')`, this commit fixes the scripts (e.g. `g-ir-scanner`). The interesting bit is in the gobject-introspection package. There is a beefy comment there that is included below. The commit also removes the now un-necessary dependencies from various packages. I have two reservations about this commit: 1. How portable is the "insertion" sed command? I'm particularly worried that some sed's might need the line to insert to be on a different line, which I can't imagine how to cram into the Makefile.in. The solution I see to this is rather than extending the existing sed command in the Makefile I could shim in another line in the rule and e.g. call a bit of Perl (or Python, I suppose) which would end up being much neater. 2. As written it always uses Spack's `.../bin/sbang`, which might or might not be a good idea. If I use "the solution" from number 1 above, then I can check the line length before I munge it. Otherwise??? --- This package creates several scripts from | toosl/g-ir-tool-template.in. In their original form these | scripts end up with a sbang line like | | `#!/usr/bin/env /path/to/spack/python`. | | These scripts are generated and then used as part of the build | (other packages also use the scripts after they've been | installed). | | The path to the spack python can become too long. Because these | tools are used as part of the build, the normal hook that fixes | this problem can't help us. | This package fixes the problem in two steps: | - it rewrites the g-ir-tool-template so that its sbang line | refers directly to spack's python (filter_file step below); and | - it patches the Makefile.in so that the generated Makefile has an | extra sed expression in its TOOL_SUBSTITUTION that results in | an `#!/bin/bash /path/to/spack/bin/sbang` unconditionally being | inserted into the scripts as they're generated. | * Cairo needs python when it's +X Cairo needs to depend_on python when it's +X. I think it's an indirect requirement that's coming in via libxcb). * Flake8 cleanup * Make cairo's dep on python be type=build This seems to be the right thing and seems to produce a result that works (I can build gtk+ and then emacs+X on top of it). --- .../repos/builtin/packages/atk/package.py | 5 ++++ .../repos/builtin/packages/cairo/package.py | 1 + .../builtin/packages/gdk-pixbuf/package.py | 5 ++++ .../packages/gobject-introspection/package.py | 28 ++++++++++++++++++- .../gobject-introspection/sbang.patch | 11 ++++++++ .../builtin/packages/gtkplus/no-demos.patch | 11 ++++++++ .../repos/builtin/packages/gtkplus/package.py | 2 ++ .../repos/builtin/packages/pango/package.py | 5 ++++ 8 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/gobject-introspection/sbang.patch create mode 100644 var/spack/repos/builtin/packages/gtkplus/no-demos.patch diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py index 1375f2d0f92..7605059850b 100644 --- a/var/spack/repos/builtin/packages/atk/package.py +++ b/var/spack/repos/builtin/packages/atk/package.py @@ -38,8 +38,13 @@ class Atk(AutotoolsPackage): depends_on('glib') depends_on('pkg-config', type='build') + depends_on('gobject-introspection') def url_for_version(self, version): """Handle atk's version-based custom URLs.""" url = 'http://ftp.gnome.org/pub/gnome/sources/atk' return url + '/%s/atk-%s.tar.xz' % (version.up_to(2), version) + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) diff --git a/var/spack/repos/builtin/packages/cairo/package.py b/var/spack/repos/builtin/packages/cairo/package.py index 9df93ccddb3..5d04bf29fa7 100644 --- a/var/spack/repos/builtin/packages/cairo/package.py +++ b/var/spack/repos/builtin/packages/cairo/package.py @@ -40,6 +40,7 @@ class Cairo(AutotoolsPackage): depends_on('libxext', when='+X') depends_on('libxrender', when='+X') depends_on('libxcb', when='+X') + depends_on('python', when='+X', type='build') depends_on("libpng") depends_on("glib") depends_on("pixman") diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index 2f3a0b0bd7a..deb8b778195 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -44,3 +44,8 @@ class GdkPixbuf(AutotoolsPackage): depends_on("jpeg") depends_on("libpng") depends_on("libtiff") + depends_on("gobject-introspection") + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index e20688c9e98..5f147cccfca 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +from spack import spack_root class GobjectIntrospection(Package): @@ -44,10 +45,35 @@ class GobjectIntrospection(Package): depends_on("bison", type="build") depends_on("flex", type="build") + # This package creates several scripts from + # toosl/g-ir-tool-template.in. In their original form these + # scripts end up with a sbang line like + # + # `#!/usr/bin/env /path/to/spack/python`. + # + # These scripts are generated and then used as part of the build + # (other packages also use the scripts after they've been + # installed). + # + # The path to the spack python can become too long. Because these + # tools are used as part of the build, the normal hook that fixes + # this problem can't help us. + # This package fixes the problem in two steps: + # - it rewrites the g-ir-tool-template so that its sbang line + # refers directly to spack's python (filter_file step below); and + # - it patches the Makefile.in so that the generated Makefile has an + # extra sed expression in its TOOL_SUBSTITUTION that results in + # an `#!/bin/bash /path/to/spack/bin/sbang` unconditionally being + # inserted into the scripts as they're generated. + patch("sbang.patch") + def install(self, spec, prefix): configure("--prefix=%s" % prefix) # we need to filter this file to avoid an overly long hashbang line - filter_file('@PYTHON@', 'python', + filter_file('#!/usr/bin/env @PYTHON@', '#!@PYTHON@', 'tools/g-ir-tool-template.in') make() make("install") + + def setup_environment(self, spack_env, run_env): + spack_env.set('SPACK_SBANG', "%s/bin/sbang" % spack_root) diff --git a/var/spack/repos/builtin/packages/gobject-introspection/sbang.patch b/var/spack/repos/builtin/packages/gobject-introspection/sbang.patch new file mode 100644 index 00000000000..7d4b78a930f --- /dev/null +++ b/var/spack/repos/builtin/packages/gobject-introspection/sbang.patch @@ -0,0 +1,11 @@ +--- a/Makefile.in 2016-09-13 01:23:59.000000000 -0700 ++++ b/Makefile.in 2017-02-22 10:26:31.824509512 -0800 +@@ -1475,7 +1475,7 @@ + gir_DATA = $(STATIC_GIRSOURCES) $(SUBSTITUTED_GIRSOURCES) $(BUILT_GIRSOURCES) + typelibsdir = $(libdir)/girepository-1.0 + typelibs_DATA = $(gir_DATA:.gir=.typelib) +-TOOL_SUBSTITUTIONS = -e s,@libdir\@,$(libdir), -e s,@datarootdir\@,$(datarootdir), -e s,@PYTHON\@,$(PYTHON), ++TOOL_SUBSTITUTIONS = -e s,@libdir\@,$(libdir), -e s,@datarootdir\@,$(datarootdir), -e s,@PYTHON\@,$(PYTHON), -e "1i\#!/bin/bash $(SPACK_SBANG)" + g_ir_compiler_SOURCES = tools/compiler.c + g_ir_compiler_CPPFLAGS = -DGIREPO_DEFAULT_SEARCH_PATH="\"$(libdir)\"" \ + -I$(top_srcdir)/girepository diff --git a/var/spack/repos/builtin/packages/gtkplus/no-demos.patch b/var/spack/repos/builtin/packages/gtkplus/no-demos.patch new file mode 100644 index 00000000000..5acc988c386 --- /dev/null +++ b/var/spack/repos/builtin/packages/gtkplus/no-demos.patch @@ -0,0 +1,11 @@ +--- a/Makefile.in 2017-02-21 12:18:44.774922978 -0800 ++++ b/Makefile.in 2017-02-21 12:18:54.465965697 -0800 +@@ -564,7 +564,7 @@ + || { echo "Gtk+Tests:ERROR: Failed to start Xvfb environment for X11 target tests."; exit 1; } \ + && DISPLAY=:$$XID && export DISPLAY + +-SRC_SUBDIRS = gdk gtk modules demos tests perf ++SRC_SUBDIRS = gdk gtk modules tests perf + SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros build + + # require automake 1.4 diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index 4664cfcbb23..227ecc3e099 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -46,6 +46,8 @@ class Gtkplus(AutotoolsPackage): depends_on("pango+X", when='+X') depends_on('gobject-introspection', when='+X') + patch('no-demos.patch') + def patch(self): # remove disable deprecated flag. filter_file(r'CFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CFLAGS"', diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index e5a8e8c57df..3c1c46e64bf 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -48,6 +48,7 @@ class Pango(AutotoolsPackage): depends_on("cairo+X", when='+X') depends_on("libxft", when='+X') depends_on("glib") + depends_on('gobject-introspection') def configure_args(self): args = [] @@ -59,3 +60,7 @@ def configure_args(self): def install(self, spec, prefix): make("install", parallel=False) + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) From 2d9dac9af087679086e9341519a317ff4094a555 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 27 Apr 2017 09:21:35 -0700 Subject: [PATCH 0763/2394] Fix Python3 issue with sbang checking; add tests. (#4017) --- lib/spack/spack/hooks/sbang.py | 7 ++- lib/spack/spack/test/sbang.py | 104 ++++++++++++++++++++------------- 2 files changed, 69 insertions(+), 42 deletions(-) diff --git a/lib/spack/spack/hooks/sbang.py b/lib/spack/spack/hooks/sbang.py index 17f6ac25282..09691b3f0fb 100644 --- a/lib/spack/spack/hooks/sbang.py +++ b/lib/spack/spack/hooks/sbang.py @@ -38,9 +38,12 @@ def shebang_too_long(path): """Detects whether a file has a shebang line that is too long.""" - with open(path, 'r') as script: + if not os.path.isfile(path): + return False + + with open(path, 'rb') as script: bytes = script.read(2) - if bytes != '#!': + if bytes != b'#!': return False line = bytes + script.readline() diff --git a/lib/spack/spack/test/sbang.py b/lib/spack/spack/test/sbang.py index 12abce7b35a..b1e2da3c3b3 100644 --- a/lib/spack/spack/test/sbang.py +++ b/lib/spack/spack/test/sbang.py @@ -27,13 +27,16 @@ """ import os import stat -import unittest +import pytest import tempfile import shutil from llnl.util.filesystem import * -from spack.hooks.sbang import filter_shebangs_in_directory + import spack +from spack.hooks.sbang import * +from spack.util.executable import which + short_line = "#!/this/is/short/bin/bash\n" long_line = "#!/this/" + ('x' * 200) + "/is/long\n" @@ -43,14 +46,13 @@ last_line = "last!\n" -class SbangTest(unittest.TestCase): - - def setUp(self): +class ScriptDirectory(object): + """Directory full of test scripts to run sbang instrumentation on.""" + def __init__(self): self.tempdir = tempfile.mkdtemp() - # make sure we can ignore non-files - directory = os.path.join(self.tempdir, 'dir') - mkdirp(directory) + self.directory = os.path.join(self.tempdir, 'dir') + mkdirp(self.directory) # Script with short shebang self.short_shebang = os.path.join(self.tempdir, 'short') @@ -71,48 +73,70 @@ def setUp(self): f.write(last_line) # Script already using sbang. - self.has_shebang = os.path.join(self.tempdir, 'shebang') - with open(self.has_shebang, 'w') as f: + self.has_sbang = os.path.join(self.tempdir, 'shebang') + with open(self.has_sbang, 'w') as f: f.write(sbang_line) f.write(long_line) f.write(last_line) - def tearDown(self): + # Fake binary file. + self.binary = os.path.join(self.tempdir, 'binary') + tar = which('tar', required=True) + tar('czf', self.binary, self.has_sbang) + + def destroy(self): shutil.rmtree(self.tempdir, ignore_errors=True) - def test_shebang_handling(self): - filter_shebangs_in_directory(self.tempdir) - # Make sure this is untouched - with open(self.short_shebang, 'r') as f: - self.assertEqual(f.readline(), short_line) - self.assertEqual(f.readline(), last_line) +@pytest.fixture +def script_dir(): + sdir = ScriptDirectory() + yield sdir + sdir.destroy() - # Make sure this got patched. - with open(self.long_shebang, 'r') as f: - self.assertEqual(f.readline(), sbang_line) - self.assertEqual(f.readline(), long_line) - self.assertEqual(f.readline(), last_line) - # Make sure this got patched. - with open(self.lua_shebang, 'r') as f: - self.assertEqual(f.readline(), sbang_line) - self.assertEqual(f.readline(), lua_line_patched) - self.assertEqual(f.readline(), last_line) +def test_shebang_handling(script_dir): + assert shebang_too_long(script_dir.lua_shebang) + assert shebang_too_long(script_dir.long_shebang) - # Make sure this is untouched - with open(self.has_shebang, 'r') as f: - self.assertEqual(f.readline(), sbang_line) - self.assertEqual(f.readline(), long_line) - self.assertEqual(f.readline(), last_line) + assert not shebang_too_long(script_dir.short_shebang) + assert not shebang_too_long(script_dir.has_sbang) + assert not shebang_too_long(script_dir.binary) + assert not shebang_too_long(script_dir.directory) - def test_shebang_handles_non_writable_files(self): - # make a file non-writable - st = os.stat(self.long_shebang) - not_writable_mode = st.st_mode & ~stat.S_IWRITE - os.chmod(self.long_shebang, not_writable_mode) + filter_shebangs_in_directory(script_dir.tempdir) - self.test_shebang_handling() + # Make sure this is untouched + with open(script_dir.short_shebang, 'r') as f: + assert f.readline() == short_line + assert f.readline() == last_line - st = os.stat(self.long_shebang) - self.assertEqual(oct(not_writable_mode), oct(st.st_mode)) + # Make sure this got patched. + with open(script_dir.long_shebang, 'r') as f: + assert f.readline() == sbang_line + assert f.readline() == long_line + assert f.readline() == last_line + + # Make sure this got patched. + with open(script_dir.lua_shebang, 'r') as f: + assert f.readline() == sbang_line + assert f.readline() == lua_line_patched + assert f.readline() == last_line + + # Make sure this is untouched + with open(script_dir.has_sbang, 'r') as f: + assert f.readline() == sbang_line + assert f.readline() == long_line + assert f.readline() == last_line + + +def test_shebang_handles_non_writable_files(script_dir): + # make a file non-writable + st = os.stat(script_dir.long_shebang) + not_writable_mode = st.st_mode & ~stat.S_IWRITE + os.chmod(script_dir.long_shebang, not_writable_mode) + + test_shebang_handling(script_dir) + + st = os.stat(script_dir.long_shebang) + assert oct(not_writable_mode) == oct(st.st_mode) From d83ae6dcff6264ca833444bdb61ac5081fc6e2a7 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 27 Apr 2017 12:11:35 -0500 Subject: [PATCH 0764/2394] Don't print successfully uninstalled twice (#4019) --- lib/spack/spack/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 4d93b6304cb..1e2210f928a 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1548,7 +1548,6 @@ def uninstall_by_spec(spec, force=False): msg = 'Deleting DB entry [{0}]' tty.debug(msg.format(spec.short_spec)) spack.store.db.remove(spec) - tty.msg("Successfully uninstalled %s" % spec.short_spec) if pkg is not None: spack.hooks.post_uninstall(spec) From a0ebce0cb3824d154e405d8044ded1aea5e26e12 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 27 Apr 2017 12:11:59 -0500 Subject: [PATCH 0765/2394] Remove 'release' suffix from package name (#4014) --- lib/spack/spack/test/url_parse.py | 4 ++++ lib/spack/spack/url.py | 1 + 2 files changed, 5 insertions(+) diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index 2af7c6ae0b9..effbb4b2c45 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -224,6 +224,10 @@ def test_std(self): # Download version + def test_release(self): + self.check('cbench_release_1.3.0.tar.gz', '1.3.0', + 'cbench') + def test_snapshot(self): self.check('gts-snapshot-121130', '121130', 'gts') diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 736c0f2efda..8f2129b84ad 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -258,6 +258,7 @@ def strip_name_suffixes(path, version): '[._-]std', # Download version + 'release', 'snapshot', 'distrib', From bb5a433a46a8ffc69b01e8477eb6646f4c66f9d2 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 27 Apr 2017 11:47:56 -0700 Subject: [PATCH 0766/2394] Separate integration tests; simplify test scripts (#4006) * Separate build integration tests; simplify test scripts - Move build tests out of the regular Travis unit tests, add more smoke test packages to build. - Run all test scripts with bash -e, which fails on error. - Factor coverage out into a Travis environment variable, so it's more obvious from .travis.yml which tests contribute to coverage and which don't. - Factor dependency checking and much of the front-matter in tests scripts into a setup.sh script, which is sourced by all the test scripts. Extra cruft in each tests script now reduced to 2 lines at the beginning. --- .travis.yml | 14 +++- share/spack/qa/check_dependencies | 96 ------------------------ share/spack/qa/run-build-tests | 29 ++++++++ share/spack/qa/run-doc-tests | 29 +------- share/spack/qa/run-flake8-tests | 23 +----- share/spack/qa/run-unit-tests | 40 ++-------- share/spack/qa/setup.sh | 118 ++++++++++++++++++++++++++++++ 7 files changed, 172 insertions(+), 177 deletions(-) delete mode 100755 share/spack/qa/check_dependencies create mode 100755 share/spack/qa/run-build-tests create mode 100755 share/spack/qa/setup.sh diff --git a/.travis.yml b/.travis.yml index 60b3b1cc31a..4b95903d16a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,11 @@ matrix: - python: '2.7' os: linux language: python - env: TEST_SUITE=unit + env: [ TEST_SUITE=unit, COVERAGE=true ] + - python: '2.7' + os: linux + language: python + env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=hypre^mpich' ] - python: '3.3' os: linux language: python @@ -37,7 +41,11 @@ matrix: - python: '3.6' os: linux language: python - env: TEST_SUITE=unit + env: [ TEST_SUITE=unit, COVERAGE=true ] + - python: '3.6' + os: linux + language: python + env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=hypre^mpich' ] - python: '2.7' os: linux language: python @@ -48,7 +56,7 @@ matrix: env: TEST_SUITE=doc - os: osx language: generic - env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7 ] + env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7, COVERAGE=true ] #============================================================================= # Environment diff --git a/share/spack/qa/check_dependencies b/share/spack/qa/check_dependencies deleted file mode 100755 index e999463b035..00000000000 --- a/share/spack/qa/check_dependencies +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env bash -# -# Description: -# Check to see if dependencies are installed. -# If not, warn the user and tell them how to -# install these dependencies. -# -# Usage: -# check-deps ... -# -# Options: -# One or more dependencies. Must use name of binary. - -for dep in "$@"; do - if ! which $dep &> /dev/null; then - # Map binary name to package name - case $dep in - sphinx-apidoc|sphinx-build) - spack_package=py-sphinx - pip_package=sphinx - ;; - coverage) - spack_package=py-coverage - pip_package=coverage - ;; - flake8) - spack_package=py-flake8 - pip_package=flake8 - ;; - dot) - spack_package=graphviz - ;; - git) - spack_package=git - ;; - hg) - spack_package=mercurial - pip_package=mercurial - ;; - svn) - spack_package=subversion - ;; - *) - spack_package=$dep - pip_package=$dep - ;; - esac - - echo "ERROR: $dep is required to run this script." - echo - - if [[ $spack_package ]]; then - echo "To install with Spack, run:" - echo " $ spack install $spack_package" - fi - - if [[ $pip_package ]]; then - echo "To install with pip, run:" - echo " $ pip install $pip_package" - fi - - if [[ $spack_package || $pip_package ]]; then - echo "Then add the bin directory to your PATH." - fi - - exit 1 - fi - - # Flake8 and Sphinx require setuptools in order to run. - # Otherwise, they print out this error message: - # - # Traceback (most recent call last): - # File: "/usr/bin/flake8", line 5, in - # from pkg_resources import load_entry_point - # ImportError: No module named pkg_resources - # - # Print a more useful error message if setuptools not found. - if [[ $dep == flake8 || $dep == sphinx* ]]; then - # Find which Python is being run - # Spack-installed packages have a hard-coded shebang - python_cmd=$(head -n 1 $(which $dep) | cut -c 3-) - # May not have a shebang - if [[ $python_cmd != *python* ]]; then - python_cmd=python - fi - # Check if setuptools is in the PYTHONPATH - if ! $python_cmd -c "import setuptools" 2> /dev/null; then - echo "ERROR: setuptools is required to run $dep." - echo "Please add it to your PYTHONPATH." - - exit 1 - fi - fi -done - -echo "Dependencies found." diff --git a/share/spack/qa/run-build-tests b/share/spack/qa/run-build-tests new file mode 100755 index 00000000000..b5d5aed28f8 --- /dev/null +++ b/share/spack/qa/run-build-tests @@ -0,0 +1,29 @@ +#!/bin/bash -e +# +# Description: +# Runs Spack build smoke tests. This installs a few packages that +# cover different parts of the build system. It is not an exhaustive +# test of Spack's packages. +# +# Usage: +# run-build-tests +# +. "$(dirname $0)/setup.sh" +check_dependencies ${coverage} git hg svn + +# Move to root directory of Spack +# Allows script to be run from anywhere +cd "$SPACK_ROOT" + +# Make sure we have a spec to build. +if [ -z "$SPEC" ]; then + echo "Error: run-build-tests requires the $SPEC to build to be set." + exit 1 +fi + +# Print compiler information +spack config get compilers + +# Run some build smoke tests, potentially with code coverage +${coverage_run} bin/spack install -v ${SPEC} +${coverage_combine} diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests index ca892d7eb49..b9a05aa3c8a 100755 --- a/share/spack/qa/run-doc-tests +++ b/share/spack/qa/run-doc-tests @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/bash -e # # Description: # Builds Spack documentation and checks for @@ -8,33 +8,12 @@ # Usage: # run-doc-tests # -# Notes: -# Requires sphinx, graphviz, git, mercurial, and subversion. -# - -QA_DIR="$(dirname "$0")" -SPACK_ROOT="$QA_DIR/../../.." -DOC_DIR="$SPACK_ROOT/lib/spack/docs" - -# Array of dependencies -deps=( - sphinx-apidoc - sphinx-build - dot - git - hg - svn -) - -# Check for dependencies -"$QA_DIR/check_dependencies" "${deps[@]}" || exit 1 - -# Add Spack to the PATH. -export PATH="$SPACK_ROOT/bin:$PATH" +. "$(dirname $0)/setup.sh" +check_dependencies sphinx-apidoc sphinx-build dot git hg svn # Move to documentation directory # Allows script to be run from anywhere -cd "$DOC_DIR" +cd "$SPACK_ROOT/lib/spack/docs" # Treat warnings as fatal errors make clean --silent diff --git a/share/spack/qa/run-flake8-tests b/share/spack/qa/run-flake8-tests index 83469eeb9d2..29fc15f9d71 100755 --- a/share/spack/qa/run-flake8-tests +++ b/share/spack/qa/run-flake8-tests @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/bash -e # # Description: # Runs source code style checks on Spack. @@ -8,22 +8,7 @@ # Usage: # run-flake8-tests # -# Notes: -# Requires flake8. -# +. "$(dirname $0)/setup.sh" +check_dependencies flake8 -QA_DIR="$(dirname "$0")" -SPACK_ROOT="$QA_DIR/../../.." - -# Array of dependencies -deps=( - flake8 -) - -# Check for dependencies -"$QA_DIR/check_dependencies" "${deps[@]}" || exit 1 - -# Add Spack to the PATH. -export PATH="$SPACK_ROOT/bin:$PATH" - -exec spack flake8 +spack flake8 diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index c266665ccb2..7e300280ff1 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/bash -e # # Description: # Runs Spack unit tests. @@ -10,44 +10,16 @@ # Optionally add one or more unit tests # to only run these tests. # -# Notes: -# Requires coverage, git, mercurial, and subversion. -# - -QA_DIR="$(dirname "$0")" -SPACK_ROOT="$QA_DIR/../../.." - -# Array of dependencies -deps=( - coverage - git - hg - svn -) - -# Check for dependencies -"$QA_DIR/check_dependencies" "${deps[@]}" || exit 1 - -# Add Spack to the PATH. -export PATH="$SPACK_ROOT/bin:$PATH" +. "$(dirname $0)/setup.sh" +check_dependencies ${coverage} git hg svn # Move to root directory of Spack # Allows script to be run from anywhere cd "$SPACK_ROOT" -# Run integration tests -# TODO: should these be separated into a different test suite? -source "$SPACK_ROOT/share/spack/setup-env.sh" -spack compilers +# Print compiler information spack config get compilers # Run unit tests with code coverage -py_ver=$(python -c 'import platform; print(platform.python_version())') -if [[ "$py_ver" == 2.7* || "$py_ver" == 3.6* ]]; -then - coverage run bin/spack install -v libdwarf - coverage run bin/spack test "$@" && coverage combine -else - spack install -v libdwarf - spack test "$@" -fi +${coverage_run} bin/spack test "$@" +${coverage_combine} diff --git a/share/spack/qa/setup.sh b/share/spack/qa/setup.sh new file mode 100755 index 00000000000..98c79a04571 --- /dev/null +++ b/share/spack/qa/setup.sh @@ -0,0 +1,118 @@ +#!/bin/bash -e +# +# Description: +# Common setup code to be sourced by Spack's test scripts. +# + +QA_DIR="$(dirname ${BASH_SOURCE[0]})" +SPACK_ROOT="$QA_DIR/../../.." + +# Source the setup script +. "$SPACK_ROOT/share/spack/setup-env.sh" + +# Set up some variables for running coverage tests. +if [[ "$COVERAGE" == true ]]; then + coverage=coverage + coverage_run="coverage run" + coverage_combine="coverage combine" +else + coverage="" + coverage_run="" + coverage_combine="" +fi + +# +# Description: +# Check to see if dependencies are installed. +# If not, warn the user and tell them how to +# install these dependencies. +# +# Usage: +# check-deps ... +# +# Options: +# One or more dependencies. Must use name of binary. +check_dependencies() { + for dep in "$@"; do + if ! which $dep &> /dev/null; then + # Map binary name to package name + case $dep in + sphinx-apidoc|sphinx-build) + spack_package=py-sphinx + pip_package=sphinx + ;; + coverage) + spack_package=py-coverage + pip_package=coverage + ;; + flake8) + spack_package=py-flake8 + pip_package=flake8 + ;; + dot) + spack_package=graphviz + ;; + git) + spack_package=git + ;; + hg) + spack_package=mercurial + pip_package=mercurial + ;; + svn) + spack_package=subversion + ;; + *) + spack_package=$dep + pip_package=$dep + ;; + esac + + echo "ERROR: $dep is required to run this script." + echo + + if [[ $spack_package ]]; then + echo "To install with Spack, run:" + echo " $ spack install $spack_package" + fi + + if [[ $pip_package ]]; then + echo "To install with pip, run:" + echo " $ pip install $pip_package" + fi + + if [[ $spack_package || $pip_package ]]; then + echo "Then add the bin directory to your PATH." + fi + + exit 1 + fi + + # Flake8 and Sphinx require setuptools in order to run. + # Otherwise, they print out this error message: + # + # Traceback (most recent call last): + # File: "/usr/bin/flake8", line 5, in + # from pkg_resources import load_entry_point + # ImportError: No module named pkg_resources + # + # Print a more useful error message if setuptools not found. + if [[ $dep == flake8 || $dep == sphinx* ]]; then + # Find which Python is being run + # Spack-installed packages have a hard-coded shebang + python_cmd=$(head -n 1 $(which $dep) | cut -c 3-) + # May not have a shebang + if [[ $python_cmd != *python* ]]; then + python_cmd=python + fi + # Check if setuptools is in the PYTHONPATH + if ! $python_cmd -c "import setuptools" 2> /dev/null; then + echo "ERROR: setuptools is required to run $dep." + echo "Please add it to your PYTHONPATH." + + exit 1 + fi + fi + done + echo "Dependencies found." +} From 5d6a488c69b8f10fd9d180ab679d857821c36d04 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 27 Apr 2017 14:13:39 -0500 Subject: [PATCH 0767/2394] Add latest versions of root (#4022) --- .../repos/builtin/packages/root/package.py | 111 ++++++++++++------ 1 file changed, 76 insertions(+), 35 deletions(-) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index a5939ace8f0..b1e7cc6834f 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -27,11 +27,20 @@ import sys -class Root(Package): +class Root(CMakePackage): """ROOT is a data analysis framework.""" - homepage = "https://root.cern.ch" - url = "https://root.cern.ch/download/root_v6.06.06.source.tar.gz" + homepage = "https://root.cern.ch" + url = "https://root.cern.ch/download/root_v6.09.02.source.tar.gz" + + # Development versions + version('6.09.02', '4188dfeafb72df339a3d688fe92f57ec') + + # Production versions + version('6.08.06', 'bcf0be2df31a317d25694ad2736df268', preferred=True) + + # Old versions + version('6.06.08', '6ef0fe9bd9f88f3ce8890e3651142ee4') version('6.06.06', '4308449892210c8d36e36924261fea26') version('6.06.04', '55a2f98dd4cea79c9c4e32407c2d6d17') version('6.06.02', 'e9b8b86838f65b0a78d8d02c66c2ec55') @@ -42,44 +51,76 @@ class Root(Package): variant('graphviz', default=False, description='Enable graphviz support') - depends_on("cmake", type='build') - depends_on("pcre") - depends_on("fftw") - depends_on("graphviz", when="+graphviz") - depends_on("python") - depends_on("gsl") - depends_on("libxml2+python") - depends_on("jpeg") - if sys.platform != 'darwin': - depends_on("libpng") - depends_on("openssl") - depends_on("freetype") + depends_on('cmake@3.4.3:', type='build') + depends_on('pkg-config', type='build') - def install(self, spec, prefix): - build_directory = join_path(self.stage.path, 'spack-build') - source_directory = self.stage.source_path - options = [source_directory] - if '+debug' in spec: - options.append('-DCMAKE_BUILD_TYPE:STRING=Debug') + depends_on('zlib') + # depends_on('unuran') + depends_on('freetype') + depends_on('pcre') + depends_on('xz') + depends_on('libsm') + depends_on('libice') + depends_on('libx11') + depends_on('libxext') + depends_on('libxpm') + depends_on('libxft') + # depends_on('gif') + depends_on('libpng') + depends_on('jpeg') + depends_on('gsl') + depends_on('python@2.7:') + # depends_on('opengl') + depends_on('graphviz', when='+graphviz') + # depends_on('kerberos') + depends_on('libxml2+python') + depends_on('openssl') + # depends_on('castor') + # depends_on('rfio') + # depends_on('mysql') + # depends_on('oracle') + # depends_on('odbc') + # depends_on('postgresql') + depends_on('sqlite') + # depends_on('pythia') + depends_on('fftw') + depends_on('cfitsio') + # depends_on('monalisa') + # depends_on('xrootd') + # depends_on('gfal') + # depends_on('dcap') + # depends_on('ldap') + # depends_on('chirp') + # depends_on('hdfs') + # depends_on('davix') + + # I was unable to build root with any Intel compiler + # See https://sft.its.cern.ch/jira/browse/ROOT-7517 + conflicts('%intel') + + def build_type(self): + if '+debug' in self.spec: + return 'Debug' else: - options.append('-DCMAKE_BUILD_TYPE:STRING=Release') - options.append('-Dcxx14=on') - options.append('-Dcocoa=off') - options.append('-Dbonjour=off') - options.append('-Dx11=on') - options.extend(std_cmake_args) + return 'Release' + + def cmake_args(self): + args = [ + '-Dcocoa=OFF', + '-Dbonjour=OFF', + '-Dx11=ON', + ] + if sys.platform == 'darwin': - darwin_options = [ + args.extend([ '-Dcastor=OFF', '-Drfio=OFF', - '-Ddcache=OFF'] - options.extend(darwin_options) - with working_dir(build_directory, create=True): - cmake(*options) - make() - make("install") + '-Ddcache=OFF', + ]) + + return args def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('ROOTSYS', self.prefix) - spack_env.set('ROOT_VERSION', 'v6') + spack_env.set('ROOT_VERSION', 'v{0}'.format(self.version.up_to(1))) spack_env.prepend_path('PYTHONPATH', self.prefix.lib) From 6f62a4fe36f5cb24f947903a8e96760b10df0258 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 27 Apr 2017 13:10:30 -0700 Subject: [PATCH 0768/2394] flecsi: add mpi interoperability (#4000) --- .../repos/builtin/packages/flecsi/package.py | 22 ++++++++++++++----- .../repos/builtin/packages/legion/package.py | 2 +- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/flecsi/package.py b/var/spack/repos/builtin/packages/flecsi/package.py index 8dea473d033..947719508c4 100644 --- a/var/spack/repos/builtin/packages/flecsi/package.py +++ b/var/spack/repos/builtin/packages/flecsi/package.py @@ -39,19 +39,21 @@ class Flecsi(CMakePackage): homepage = "http://flecsi.lanl.gov/" url = "https://github.com/laristra/flecsi/tarball/v1.0" - version('develop', git='https://github.com/laristra/flecsi', branch='master', submodules=True) + version('develop', git='https://github.com/laristra/flecsi', branch='master', submodules=False) variant('debug', default=False, description='Build debug version') + variant('mpi', default=True, + description='Build on top of mpi conduit for mpi inoperability') depends_on("cmake@3.1:", type='build') - depends_on("legion") + depends_on("legion+shared", when='~mpi') + depends_on("legion+shared+mpi", when='+mpi') - # drop when #3779 has been fixed + # drop when #3958 has been merged def do_fetch(self, mirror_only=True): super(Flecsi, self).do_fetch(mirror_only) git = which("git") - git('-C', 'flecsi', 'submodule', 'update', '--init', '--recursive', - '--depth=1') + git('-C', 'flecsi', 'submodule', 'update', '--init', '--recursive') def build_type(self): spec = self.spec @@ -61,4 +63,12 @@ def build_type(self): return 'Release' def cmake_args(self): - return ['-DENABLE_UNIT_TESTS=ON'] + options = ['-DENABLE_UNIT_TESTS=ON'] + + if '+mpi' in self.spec: + options.extend([ + '-DENABLE_MPI=ON', + '-DFLECSI_RUNTIME_MODEL=mpilegion' + ]) + + return options diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py index 2d93ee0e3aa..783bd417a05 100644 --- a/var/spack/repos/builtin/packages/legion/package.py +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -66,7 +66,7 @@ def cmake_args(self): options = [ '-DLegion_USE_GASNet=ON', '-DLegion_BUILD_EXAMPLES=ON', - '-DBUILD_SHARED_LIBS=%s' % ('+shared' in spec)] + '-DBUILD_SHARED_LIBS=%s' % ('+shared' in self.spec)] if '+mpi' in self.spec: options.append('-DGASNet_CONDUIT=mpi') From 0488654f67b8e177dbf598484a5220d92ad91ac2 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 27 Apr 2017 15:18:38 -0500 Subject: [PATCH 0769/2394] Prevent spack test flake8 from making changes (#4023) --- lib/spack/spack/test/cmd/flake8.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/test/cmd/flake8.py b/lib/spack/spack/test/cmd/flake8.py index bde8d199a7a..438791c9883 100644 --- a/lib/spack/spack/test/cmd/flake8.py +++ b/lib/spack/spack/test/cmd/flake8.py @@ -54,12 +54,12 @@ def flake8_package(): package = FileFilter(filename) # Make the change - package.filter('unmodified', 'modified') + package.filter("state = 'unmodified'", "state = 'modified'", string=True) yield filename # Undo the change - package.filter('modified', 'unmodified') + package.filter("state = 'modified'", "state = 'unmodified'", string=True) def test_changed_files(parser, flake8_package): From 109a3ed8e9d5b5501c29bac65bd4a433d3107396 Mon Sep 17 00:00:00 2001 From: "Kelly (KT) Thompson" Date: Thu, 27 Apr 2017 15:04:45 -0600 Subject: [PATCH 0770/2394] Dia requires libxml2. (#3976) * Dia requires libxml2. * Clean up dependencies for Dia (and add X11 deps). + Remove dependencies on cairo and libpng. The will be satisfied via gtkplus. + Add dependencies on X11 libraries: libsm, libuuid, libxinerama, libxrender. + From a dependency diagram, it doesn't appear that we need libxml2 since this dependency should be come in through cairo (via gtkplus). However, Dia will not build without it. --- var/spack/repos/builtin/packages/dia/package.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/dia/package.py b/var/spack/repos/builtin/packages/dia/package.py index af9d1b23aca..014ddf084c3 100644 --- a/var/spack/repos/builtin/packages/dia/package.py +++ b/var/spack/repos/builtin/packages/dia/package.py @@ -34,15 +34,18 @@ class Dia(Package): depends_on('intltool', type='build') depends_on('gtkplus@2.6.0:') - depends_on('cairo') - depends_on('libpng') depends_on('libxslt') depends_on('python') depends_on('swig') + depends_on('libsm') + depends_on('libuuid') + depends_on('libxinerama') + depends_on('libxrender') + depends_on('libxml2') # TODO: Optional dependencies, not yet supported by Spack # depends_on('libart') - # depends_on('py-gtk', type=('build', 'run')) + # depends_on('py-pygtk', type=('build', 'run')) def url_for_version(self, version): """Handle Dia's version-based custom URLs.""" From 510d725b647707b314f57419e37cdf6ec3a56c72 Mon Sep 17 00:00:00 2001 From: Jeffrey Salmond Date: Thu, 27 Apr 2017 22:52:05 +0100 Subject: [PATCH 0771/2394] add relion package (#4020) * add relion package * fix flake8 * add licence --- .../repos/builtin/packages/relion/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/relion/package.py diff --git a/var/spack/repos/builtin/packages/relion/package.py b/var/spack/repos/builtin/packages/relion/package.py new file mode 100644 index 00000000000..cd45a148905 --- /dev/null +++ b/var/spack/repos/builtin/packages/relion/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Relion(CMakePackage): + """RELION (for REgularised LIkelihood OptimisatioN, pronounce rely-on) is a + stand-alone computer program that employs an empirical Bayesian approach to + refinement of (multiple) 3D reconstructions or 2D class averages in + electron cryo-microscopy (cryo-EM).""" + + homepage = "http://http://www2.mrc-lmb.cam.ac.uk/relion" + url = "https://github.com/3dem/relion/archive/2.0.3.tar.gz" + + version('2.0.3', 'c61be5ef00848806278b341f43893f5d') + + variant('gui', default=True, description="build the gui") + variant('cuda', default=False, description="enable compute on gpu") + variant('double', default=False, description="double precision (cpu) code") + variant('double-gpu', default=False, description="double precision (gpu) code") + + depends_on('mpi') + depends_on('fftw+float+double') + depends_on('fltk', when='+gui') + depends_on('cuda', when='+cuda') + + def cmake_args(self): + args = [ + '-DCMAKE_C_FLAGS=-g', + '-DCMAKE_CXX_FLAGS=-g', + '-DGUI=%s' % ('+gui' in self.spec), + '-DDoublePrec_CPU=%s' % ('+double' in self.spec), + '-DDoublePrec_GPU=%s' % ('+double-gpu' in self.spec), + ] + if '+cuda' in self.spec: + args += [ + '-DCUDA=on', + '-DCUFFT=on', + ] + return args From e8a814463ccdaaaa12280833de55047c47a20623 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 27 Apr 2017 14:52:26 -0700 Subject: [PATCH 0772/2394] New package: flecsale (#4025) --- .../builtin/packages/flecsale/package.py | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 var/spack/repos/builtin/packages/flecsale/package.py diff --git a/var/spack/repos/builtin/packages/flecsale/package.py b/var/spack/repos/builtin/packages/flecsale/package.py new file mode 100644 index 00000000000..3e788fa634b --- /dev/null +++ b/var/spack/repos/builtin/packages/flecsale/package.py @@ -0,0 +1,66 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Flecsale(CMakePackage): + """Flecsale is an ALE code based on FleCSI""" + homepage = "https://github.com/laristra/flecsale" + url = "https://github.com/laristra/flecsale/tarball/v1.0" + + version('develop', git='https://github.com/laristra/flecsale', branch='master', submodules=False) + + variant('debug', default=False, description='Build debug version') + variant('mpi', default=True, + description='Build on top of mpi conduit for mpi inoperability') + + depends_on("cmake@3.1:", type='build') + depends_on("flecsi~mpi", when='~mpi') + depends_on("flecsi+mpi", when='+mpi') + + # drop when #3958 has been merged + def do_fetch(self, mirror_only=True): + super(Flecsale, self).do_fetch(mirror_only) + git = which("git") + git('submodule', 'update', '--init', '--recursive') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + options = ['-DENABLE_UNIT_TESTS=ON'] + + if '+mpi' in self.spec: + options.extend([ + '-DENABLE_MPI=ON', + '-DFLECSI_RUNTIME_MODEL=mpilegion' + ]) + + return options From 9a67e95686dc3b9ccefa12bafe0ed23cf2f1e235 Mon Sep 17 00:00:00 2001 From: scheibelp Date: Thu, 27 Apr 2017 15:23:09 -0700 Subject: [PATCH 0773/2394] Reindex checks install for non-external packages (#4027) Fixes #4026 #1167 updated Database.reindex to keep old installation records to support external packages. However, when a user manually removes a prefix and reindexes this kept the records so the packages were still installed according to "spack find" etc. This adds a check for non-external packages to ensure they are properly installed according to the directory layout. --- lib/spack/spack/database.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 33eb7bea4c5..38ea8d584ca 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -473,13 +473,18 @@ def _read_suppress_error(): layout = spack.store.layout if entry.spec.external: layout = None - kwargs = { - 'spec': entry.spec, - 'directory_layout': layout, - 'explicit': entry.explicit - } - self._add(**kwargs) - processed_specs.add(entry.spec) + install_check = True + else: + install_check = layout.check_installed(entry.spec) + + if install_check: + kwargs = { + 'spec': entry.spec, + 'directory_layout': layout, + 'explicit': entry.explicit + } + self._add(**kwargs) + processed_specs.add(entry.spec) except Exception as e: # Something went wrong, so the spec was not restored # from old data From 091a689cb04f6bfc663fc7879a628c92bee58e14 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 28 Apr 2017 00:24:23 -0500 Subject: [PATCH 0774/2394] Add new package for PVM (#4028) --- .../repos/builtin/packages/pvm/package.py | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pvm/package.py diff --git a/var/spack/repos/builtin/packages/pvm/package.py b/var/spack/repos/builtin/packages/pvm/package.py new file mode 100644 index 00000000000..79aed3431dd --- /dev/null +++ b/var/spack/repos/builtin/packages/pvm/package.py @@ -0,0 +1,63 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import subprocess + + +class Pvm(MakefilePackage): + """PVM (Parallel Virtual Machine) is a software package that permits a + heterogeneous collection of Unix and/or Windows computers hooked together + by a network to be used as a single large parallel computer.""" + + homepage = "http://www.csm.ornl.gov/pvm/pvm_home.html" + url = "http://www.netlib.org/pvm3/pvm3.4.6.tgz" + + version('3.4.6', '7b5f0c80ea50b6b4b10b6128e197747b') + + parallel = False + + @property + def pvm_arch(self): + """Returns the appropriate PVM_ARCH.""" + process = subprocess.Popen(['lib/pvmgetarch'], stdout=subprocess.PIPE) + return process.communicate()[0].strip() + + def edit(self, spec, prefix): + # Before building PVM, you must set the environment + # variable "PVM_ROOT" to the path where PVM resides + env['PVM_ROOT'] = self.stage.source_path + + def install(self, spec, prefix): + pvm_arch = self.pvm_arch + + install_tree(join_path('bin', pvm_arch), prefix.bin) + install_tree('include', prefix.include) + install_tree(join_path('lib', pvm_arch), prefix.lib) + install_tree('man', prefix.man) + + def setup_environment(self, spack_env, run_env): + # Before running PVM, you must set the environment + # variable "PVM_ROOT" to the path where PVM resides + run_env.set('PVM_ROOT', self.prefix) From 8d92e267126bbe061fb4f799944109cd9b0ba42a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 27 Apr 2017 22:25:29 -0700 Subject: [PATCH 0775/2394] New package: portage (#4029) --- .../repos/builtin/packages/portage/package.py | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 var/spack/repos/builtin/packages/portage/package.py diff --git a/var/spack/repos/builtin/packages/portage/package.py b/var/spack/repos/builtin/packages/portage/package.py new file mode 100644 index 00000000000..2bbc54b6cbb --- /dev/null +++ b/var/spack/repos/builtin/packages/portage/package.py @@ -0,0 +1,69 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Portage(CMakePackage): + """Portage is a framework that computational physics applications can use + to build a highly customized, hybrid parallel (MPI+X) conservative + remapping library for transfer of field data between meshes. + """ + homepage = "http://portage.lanl.gov/" + url = "https://github.com/laristra/portage/tarball/v1.0" + + version('develop', git='https://github.com/laristra/portage', branch='master', submodules=False) + + variant('debug', default=False, description='Build debug version') + variant('mpi', default=True, description='Support MPI') + + depends_on("cmake@3.1:", type='build') + depends_on('mpi', when='+mpi') + + # drop when #3958 has been merged + def do_fetch(self, mirror_only=True): + super(Portage, self).do_fetch(mirror_only) + git = which("git") + git('submodule', 'update', '--init', '--recursive') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + options = ['-DENABLE_UNIT_TESTS=ON', '-DENABLE_APP_TESTS=ON'] + + if '+mpi' in self.spec: + options.extend([ + '-DENABLE_MPI=ON', + '-DENABLE_MPI_CXX_BINDINGS=ON' + ]) + else: + options.append('-DENABLE_MPI=OFF') + + return options From 59ac047996f0391f6e7d102930be91a5e7311d86 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 28 Apr 2017 15:37:47 +0200 Subject: [PATCH 0776/2394] No compiler found: fixed error message (#4034) When a compiler was not found a stacktrace was displayed to user because there were three arguments to be substituted in a string with only two substitutions to be done. --- lib/spack/spack/concretize.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 0b29d2874e8..5507b599ff3 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -451,10 +451,11 @@ class UnavailableCompilerVersionError(spack.error.SpackError): compiler spec.""" def __init__(self, compiler_spec, arch=None): - err_msg = "No compilers with spec %s found" % compiler_spec + err_msg = "No compilers with spec {0} found".format(compiler_spec) if arch: - err_msg += (" for operating system %s and target %s." % - (compiler_spec, arch.platform_os, arch.target)) + err_msg += " for operating system {0} and target {1}.".format( + arch.platform_os, arch.target + ) super(UnavailableCompilerVersionError, self).__init__( err_msg, "Run 'spack compiler find' to add compilers.") From e78e87fd4bb37000e767d1c026c6891f272d0829 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 28 Apr 2017 16:55:02 +0200 Subject: [PATCH 0777/2394] python: added version 3.6.1 (#4035) --- var/spack/repos/builtin/packages/python/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 6e0b5b8dc80..bc3de0479bb 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -44,6 +44,7 @@ class Python(Package): list_url = "https://www.python.org/downloads/" list_depth = 1 + version('3.6.1', '2d0fc9f3a5940707590e07f03ecb08b9') version('3.6.0', '3f7062ccf8be76491884d0e47ac8b251') version('3.5.2', '3fe8434643a78630c61c6464fe2e7e72') version('3.5.1', 'be78e48cdfc1a7ad90efff146dce6cfe') From d970ef5404bfdbb0fdd15eb00a96652708b32332 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 28 Apr 2017 10:53:14 -0500 Subject: [PATCH 0778/2394] Add a list_url for libpng (#4038) --- var/spack/repos/builtin/packages/libpng/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/libpng/package.py b/var/spack/repos/builtin/packages/libpng/package.py index 04940dde147..d4141851ae8 100644 --- a/var/spack/repos/builtin/packages/libpng/package.py +++ b/var/spack/repos/builtin/packages/libpng/package.py @@ -30,6 +30,8 @@ class Libpng(AutotoolsPackage): homepage = "http://www.libpng.org/pub/png/libpng.html" url = "http://download.sourceforge.net/libpng/libpng-1.6.29.tar.gz" + list_url = "https://sourceforge.net/projects/libpng/files/" + list_depth = 2 version('1.6.29', '68553080685f812d1dd7a6b8215c37d8') version('1.6.27', '58698519e9f6126c1caeefc28dbcbd5f') From a1059b5a6c185bcae5b15ec229ada27aa6928354 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 28 Apr 2017 19:43:06 +0200 Subject: [PATCH 0779/2394] dealii: fix missing -march=native in flags (#4036) --- .../repos/builtin/packages/dealii/package.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 349de680cc1..5f149b74fe9 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -144,6 +144,9 @@ def cmake_args(self): self.variants_check() spec = self.spec options = [] + # release flags + cxx_flags_release = [] + # debug and release flags cxx_flags = [] lapack_blas = spec['lapack'].libs + spec['blas'].libs @@ -168,11 +171,14 @@ def cmake_args(self): # Set recommended flags for maximum (matrix-free) performance, see # https://groups.google.com/forum/?fromgroups#!topic/dealii/3Yjy8CBIrgU if spec.satisfies('%gcc'): - cxx_flags.extend(['-O3', '-march=native']) + cxx_flags_release.extend(['-O3']) + cxx_flags.extend(['-march=native']) elif spec.satisfies('%intel'): - cxx_flags.extend(['-O3', '-march=native']) + cxx_flags_release.extend(['-O3']) + cxx_flags.extend(['-march=native']) elif spec.satisfies('%clang'): - cxx_flags.extend(['-O3', '-march=native', '-ffp-contract=fast']) + cxx_flags_release.extend(['-O3', '-ffp-contract=fast']) + cxx_flags.extend(['-march=native']) # Python bindings if spec.satisfies('@8.5.0:'): @@ -281,9 +287,12 @@ def cmake_args(self): ]) # collect CXX flags: - if len(cxx_flags) > 0 and '+optflags' in spec: + if len(cxx_flags_release) > 0 and '+optflags' in spec: options.extend([ - '-DCMAKE_CXX_FLAGS_RELEASE:STRING=%s' % (' '.join(cxx_flags)) + '-DCMAKE_CXX_FLAGS_RELEASE:STRING=%s' % ( + ' '.join(cxx_flags_release)), + '-DCMAKE_CXX_FLAGS:STRING=%s' % ( + ' '.join(cxx_flags)) ]) return options From 2b6206a504eb66283fef9cf619dae2fe9b993d29 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 28 Apr 2017 13:13:42 -0500 Subject: [PATCH 0780/2394] Add a new package for dos2unix (#4037) --- .../builtin/packages/dos2unix/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/dos2unix/package.py diff --git a/var/spack/repos/builtin/packages/dos2unix/package.py b/var/spack/repos/builtin/packages/dos2unix/package.py new file mode 100644 index 00000000000..4005eb48a04 --- /dev/null +++ b/var/spack/repos/builtin/packages/dos2unix/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Dos2unix(MakefilePackage): + """DOS/Mac to Unix and vice versa text file format converter.""" + + homepage = "https://waterlan.home.xs4all.nl/dos2unix.html" + url = "https://waterlan.home.xs4all.nl/dos2unix/dos2unix-7.3.4.tar.gz" + + version('7.3.4', '04428e77e2ead8a92c1492ba8977f1d1') + + def install(self, spec, prefix): + make('prefix={0}'.format(prefix), 'install') From 3f6e03d5c16c8cf0ebf3c6175cb21aaa2d3278c6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 28 Apr 2017 13:44:30 -0500 Subject: [PATCH 0781/2394] Add a new package for Cbench (#4043) --- .../repos/builtin/packages/cbench/package.py | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cbench/package.py diff --git a/var/spack/repos/builtin/packages/cbench/package.py b/var/spack/repos/builtin/packages/cbench/package.py new file mode 100644 index 00000000000..4ce2cd53948 --- /dev/null +++ b/var/spack/repos/builtin/packages/cbench/package.py @@ -0,0 +1,92 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cbench(MakefilePackage): + """Cbench is intended as a relatively straightforward toolbox of tests, + benchmarks, applications, utilities, and framework to hold them together + with the goal to facilitate scalable testing, benchmarking, and analysis + of a Linux parallel compute cluster.""" + + homepage = "https://sourceforge.net/projects/cbench/" + url = "https://sourceforge.net/projects/cbench/files/cbench/1.3.0/cbench_release_1.3.0.tar.gz/download" + list_url = "https://sourceforge.net/projects/cbench/files/cbench/" + list_depth = 1 + + version('1.3.0', '2fb112876fdc96165d14e019b4a26f2e') + + depends_on('mpi') + depends_on('blas') + depends_on('lapack') + depends_on('fftw') + + # The following compilers are not supported by Cbench: + conflicts('%cce') + conflicts('%clang') + conflicts('%nag') + conflicts('%xl') + conflicts('%xl_r') + + def edit(self, spec, prefix): + # The location of the Cbench source tree + env['CBENCHOME'] = self.stage.source_path + + # The location that will contain all of your tests and their results + env['CBENCHTEST'] = prefix + + # The location of the system MPI tree + env['MPIHOME'] = spec['mpi'].prefix + + # Pick the compiler collection/chain you want to compile with. + # Examples include: intel, gcc, pgi. + env['COMPILERCOLLECTION'] = self.compiler.name + + # Linking flags for BLAS/LAPACK and FFTW + env['BLASLIB'] = spec['blas'].libs.ld_flags + env['LAPACKLIB'] = spec['lapack'].libs.ld_flags + env['FFTWLIB'] = spec['fftw'].libs.ld_flags + + # The number of make jobs (commands) to run simultaneously + env['JOBS'] = str(make_jobs) + + @run_before('build') + @on_package_attributes(run_tests=True) + def test_blas_linkage(self): + """Quick test to ensure that BLAS linkage is working correctly.""" + + make('-C', 'opensource/maketests', 'clean') + make('-C', 'opensource/maketests', 'dummy_blas') + make('-C', 'opensource/maketests', 'linkstatus') + + def install(self, spec, prefix): + # Install binaries in $CBENCHOME/bin + make('install') + + # This creates a testing tree (if one doesn't already exist) and + # copies the binaries from `$CBENCHOME/bin` to `$CBENCHTEST/bin`. + # This allows you to use the testing tree independently of the + # source tree in the future. + make('installtests') From 529a2ae5fa19da4323ec714405be81d6fed005b0 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 28 Apr 2017 12:47:43 -0700 Subject: [PATCH 0782/2394] Depend on readline, remove hardcoded -ltermcap (#4042) * depend on readline, remove hardcoded -ltermcap Bowtie should use Spack's readline and not explicitly depend on the system termcap (which, on CentOS, leads to linking against the system's tinfo library). * Add depends_on('zlib') * Add conflict with gcc@6: Build seems to have trouble with 6's migration to -std=gnu++14. --- var/spack/repos/builtin/packages/bowtie2/bowtie2-2.3.1.patch | 3 ++- var/spack/repos/builtin/packages/bowtie2/package.py | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/bowtie2/bowtie2-2.3.1.patch b/var/spack/repos/builtin/packages/bowtie2/bowtie2-2.3.1.patch index 0f4a15b1a15..006ebccb9e6 100644 --- a/var/spack/repos/builtin/packages/bowtie2/bowtie2-2.3.1.patch +++ b/var/spack/repos/builtin/packages/bowtie2/bowtie2-2.3.1.patch @@ -3,7 +3,8 @@ @@ -26,10 +26,10 @@ INC = - LIBS = -lreadline -ltermcap -lz +-LIBS = -lreadline -ltermcap -lz ++LIBS = -lreadline -lz -GCC_PREFIX = $(shell dirname `which gcc`) +GCC_PREFIX = GCC_SUFFIX = diff --git a/var/spack/repos/builtin/packages/bowtie2/package.py b/var/spack/repos/builtin/packages/bowtie2/package.py index dc850d817f7..8d541b15c36 100644 --- a/var/spack/repos/builtin/packages/bowtie2/package.py +++ b/var/spack/repos/builtin/packages/bowtie2/package.py @@ -37,10 +37,15 @@ class Bowtie2(Package): version('2.2.5', '51fa97a862d248d7ee660efc1147c75f') depends_on('tbb', when='@2.3.1') + depends_on('readline') + depends_on('zlib') patch('bowtie2-2.2.5.patch', when='@2.2.5', level=0) patch('bowtie2-2.3.1.patch', when='@2.3.1', level=0) + # seems to have trouble with 6's -std=gnu++14 + conflicts('%gcc@6:') + def install(self, spec, prefix): make() mkdirp(prefix.bin) From 7f9acfa3b28d9a0acaada37ba61090a6b34bf879 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Fri, 28 Apr 2017 12:54:59 -0700 Subject: [PATCH 0783/2394] Various patches to Openblas for Intel (#4030) * Added a patch to the openblas package to change the openmp flag for icc to qopenmp. * Fixed a linking problem where when using Intel compilers, it was still pulling in -lgfortran --- .../openblas/openblas_icc_fortran.patch | 12 +++++++++ .../openblas/openblas_icc_openmp.patch | 27 +++++++++++++++++++ .../builtin/packages/openblas/package.py | 2 ++ 3 files changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/openblas/openblas_icc_fortran.patch create mode 100644 var/spack/repos/builtin/packages/openblas/openblas_icc_openmp.patch diff --git a/var/spack/repos/builtin/packages/openblas/openblas_icc_fortran.patch b/var/spack/repos/builtin/packages/openblas/openblas_icc_fortran.patch new file mode 100644 index 00000000000..54b38a297ee --- /dev/null +++ b/var/spack/repos/builtin/packages/openblas/openblas_icc_fortran.patch @@ -0,0 +1,12 @@ +diff -Naur a/f_check b/f_check +--- a/f_check 2017-04-27 23:16:41.496684722 -0700 ++++ b/f_check 2017-04-27 23:22:38.330563534 -0700 +@@ -322,7 +322,7 @@ + } + + if ($vendor eq "INTEL"){ +- $linker_a .= "-lgfortran" ++ $linker_a .= "-lifcore" + } + + open(MAKEFILE, ">> $makefile") || die "Can't append $makefile"; diff --git a/var/spack/repos/builtin/packages/openblas/openblas_icc_openmp.patch b/var/spack/repos/builtin/packages/openblas/openblas_icc_openmp.patch new file mode 100644 index 00000000000..f4f436c38e3 --- /dev/null +++ b/var/spack/repos/builtin/packages/openblas/openblas_icc_openmp.patch @@ -0,0 +1,27 @@ +diff -Naur a/Makefile.system b/Makefile.system +--- a/Makefile.system 2017-04-27 23:11:09.226514927 -0700 ++++ b/Makefile.system 2017-04-28 00:00:27.020649577 -0700 +@@ -415,7 +415,7 @@ + endif + + ifeq ($(C_COMPILER), INTEL) +-CCOMMON_OPT += -openmp ++CCOMMON_OPT += -qopenmp + endif + + ifeq ($(C_COMPILER), PGI) +@@ -639,13 +639,14 @@ + + ifeq ($(F_COMPILER), INTEL) + CCOMMON_OPT += -DF_INTERFACE_INTEL ++EXTRALIB += -lifcore + ifdef INTERFACE64 + ifneq ($(INTERFACE64), 0) + FCOMMON_OPT += -i8 + endif + endif + ifeq ($(USE_OPENMP), 1) +-FCOMMON_OPT += -openmp ++FCOMMON_OPT += -qopenmp + endif + endif diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 647cbb121a7..81f48419317 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -56,6 +56,8 @@ class Openblas(MakefilePackage): # This patch is in a pull request to OpenBLAS that has not been handled # https://github.com/xianyi/OpenBLAS/pull/915 patch('openblas_icc.patch', when='%intel') + patch('openblas_icc_openmp.patch', when='%intel@16.0:') + patch('openblas_icc_fortran.patch', when='%intel@16.0:') # Change file comments to work around clang 3.9 assembler bug # https://github.com/xianyi/OpenBLAS/pull/982 From 4bfba146d5d6285e66d9f26d69e2dbdbb0573d3b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 28 Apr 2017 14:55:28 -0500 Subject: [PATCH 0784/2394] Add tests to MakefilePackage (#4039) --- lib/spack/spack/build_systems/makefile.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/spack/spack/build_systems/makefile.py b/lib/spack/spack/build_systems/makefile.py index 72743844782..a014ed7c156 100644 --- a/lib/spack/spack/build_systems/makefile.py +++ b/lib/spack/spack/build_systems/makefile.py @@ -72,6 +72,9 @@ class MakefilePackage(PackageBase): #: phase install_targets = ['install'] + #: Callback names for build-time test + build_time_test_callbacks = ['check'] + @property def build_directory(self): """Returns the directory containing the main Makefile @@ -100,5 +103,15 @@ def install(self, spec, prefix): with working_dir(self.build_directory): inspect.getmodule(self).make(*self.install_targets) + run_after('build')(PackageBase._run_default_build_time_test_callbacks) + + def check(self): + """Searches the Makefile for targets ``test`` and ``check`` + and runs them if found. + """ + with working_dir(self.build_directory): + self._if_make_target_execute('test') + self._if_make_target_execute('check') + # Check that self.prefix is there after installation run_after('install')(PackageBase.sanity_check_prefix) From 15692c5475dba43b8410857079896ece5890986c Mon Sep 17 00:00:00 2001 From: sknigh Date: Fri, 28 Apr 2017 12:57:55 -0700 Subject: [PATCH 0785/2394] ncurses package builds ncurses and ncursesw (#3953) * ncurses package will build ncurses and ncursesw * Added libs property to ncurses, added fix for hstr * flake8 is a harsh mistress * make libs() more robust * atop depends on ncurses * fish depends on ncurses * libtermkey and nano depend on ncurses * Adjust url spacing --- .../repos/builtin/packages/atop/package.py | 3 + .../repos/builtin/packages/fish/package.py | 2 + .../repos/builtin/packages/hstr/package.py | 1 + .../builtin/packages/libtermkey/package.py | 3 + .../repos/builtin/packages/nano/package.py | 2 + .../repos/builtin/packages/ncurses/package.py | 55 ++++++++++++++++++- 6 files changed, 63 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/atop/package.py b/var/spack/repos/builtin/packages/atop/package.py index e3a9d464a95..7a34d129f7b 100644 --- a/var/spack/repos/builtin/packages/atop/package.py +++ b/var/spack/repos/builtin/packages/atop/package.py @@ -32,6 +32,9 @@ class Atop(Package): version('2.2-3', '034dc1544f2ec4e4d2c739d320dc326d') + depends_on('zlib') + depends_on('ncurses') + def install(self, spec, prefix): make() mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin/packages/fish/package.py b/var/spack/repos/builtin/packages/fish/package.py index f0dfac70c83..715d4797e33 100644 --- a/var/spack/repos/builtin/packages/fish/package.py +++ b/var/spack/repos/builtin/packages/fish/package.py @@ -34,4 +34,6 @@ class Fish(AutotoolsPackage): url = "http://fishshell.com/files/2.2.0/fish-2.2.0.tar.gz" list_url = "http://fishshell.com/" + depends_on('ncurses') + version('2.2.0', 'a76339fd14ce2ec229283c53e805faac48c3e99d9e3ede9d82c0554acfc7b77a') diff --git a/var/spack/repos/builtin/packages/hstr/package.py b/var/spack/repos/builtin/packages/hstr/package.py index 3a556b9b6cd..0efae70d874 100644 --- a/var/spack/repos/builtin/packages/hstr/package.py +++ b/var/spack/repos/builtin/packages/hstr/package.py @@ -40,3 +40,4 @@ class Hstr(AutotoolsPackage): depends_on('libtool', type='build') depends_on('m4', type='build') depends_on('ncurses@5.9') + depends_on('readline') diff --git a/var/spack/repos/builtin/packages/libtermkey/package.py b/var/spack/repos/builtin/packages/libtermkey/package.py index 64688505c45..359e0772843 100644 --- a/var/spack/repos/builtin/packages/libtermkey/package.py +++ b/var/spack/repos/builtin/packages/libtermkey/package.py @@ -36,6 +36,9 @@ class Libtermkey(Package): version('0.15b', '27689756e6c86c56ae454f2ac259bc3d') version('0.14', 'e08ce30f440f9715c459060e0e048978') + depends_on('libtool', type='build') + depends_on('ncurses') + def install(self, spec, prefix): make() make("install", "PREFIX=" + prefix) diff --git a/var/spack/repos/builtin/packages/nano/package.py b/var/spack/repos/builtin/packages/nano/package.py index d303b5e4243..49415bb7ef0 100644 --- a/var/spack/repos/builtin/packages/nano/package.py +++ b/var/spack/repos/builtin/packages/nano/package.py @@ -33,3 +33,5 @@ class Nano(AutotoolsPackage): version('2.6.3', '1213c7f17916e65afefc95054c1f90f9') version('2.6.2', '58568a4b8a33841d774c25f285fc11c1') + + depends_on('ncurses') diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index a19cdd08ddf..869bc4e5ae8 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -23,6 +23,10 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +from glob import glob +from os.path import exists, join +from os import makedirs +from shutil import copy class Ncurses(AutotoolsPackage): @@ -46,20 +50,65 @@ class Ncurses(AutotoolsPackage): patch('patch_gcc_5.txt', when='@6.0%gcc@5.0:') patch('sed_pgi.patch', when='@:6.0') - def configure_args(self): + def configure(self, spec, prefix): opts = [ 'CFLAGS={0}'.format(self.compiler.pic_flag), 'CXXFLAGS={0}'.format(self.compiler.pic_flag), '--with-shared', '--with-cxx-shared', - '--enable-widec', '--enable-overwrite', '--without-ada', '--enable-pc-files', '--with-pkg-config-libdir={0}/lib/pkgconfig'.format(self.prefix) ] + nwide_opts = ['--without-manpages', + '--without-progs', + '--without-tests'] + + wide_opts = ['--enable-widec'] + if '+symlinks' in self.spec: opts.append('--enable-symlinks') - return opts + prefix = '--prefix={0}'.format(prefix) + + configure = Executable('../configure') + + with working_dir('build_ncurses', create=True): + configure(prefix, *(opts + nwide_opts)) + + with working_dir('build_ncursesw', create=True): + configure(prefix, *(opts + wide_opts)) + + def build(self, spec, prefix): + with working_dir('build_ncurses'): + make() + with working_dir('build_ncursesw'): + make() + + def check(self): + with working_dir('build_ncurses'): + make('check') + with working_dir('build_ncursesw'): + make('check') + + def install(self, spec, prefix): + with working_dir('build_ncurses'): + make('install') + with working_dir('build_ncursesw'): + make('install') + + # fix for packages like hstr that use "#include " + headers = glob(join(prefix.include, '*')) + for p_dir in ['ncurses', 'ncursesw']: + path = join(prefix.include, p_dir) + if not exists(path): + makedirs(path) + for header in headers: + copy(header, path) + + @property + def libs(self): + return find_libraries( + ['libncurses', 'libncursesw'], root=self.prefix, recurse=True) From 6814842814da2e96c10be603d9a738b4a16c3f06 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 28 Apr 2017 22:02:05 +0200 Subject: [PATCH 0786/2394] Allow compilation of mgridgen (serial) as well as parmgridgen (parallel) (#3906) --- .../builtin/packages/parmgridgen/package.py | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/parmgridgen/package.py b/var/spack/repos/builtin/packages/parmgridgen/package.py index 02be777c36c..eaab9b0b87e 100644 --- a/var/spack/repos/builtin/packages/parmgridgen/package.py +++ b/var/spack/repos/builtin/packages/parmgridgen/package.py @@ -26,11 +26,12 @@ from spack import * +# Note: should probably be named 'mgridgen+mpi' (as per scotch, metis etc) class Parmgridgen(Package): """MGRIDGEN is a serial library written entirely in ANSI C that implements (serial) algorithms for obtaining a sequence of successive coarse grids that are well-suited for geometric multigrid methods. - ParMGridGen is the parallel version of MGridGen + ParMGridGen is the parallel version of MGridGen. """ homepage = "http://www-users.cs.umn.edu/~moulitsa/software.html" @@ -38,7 +39,10 @@ class Parmgridgen(Package): version('1.0', '2872fa95b7fb91d6bd525490eed62038') - depends_on('mpi') + variant('mpi', default=True, + description='Activate the compilation of parallel libraries') + + depends_on('mpi', when='+mpi') def install(self, spec, prefix): make_opts = [ @@ -46,26 +50,30 @@ def install(self, spec, prefix): 'COPTIONS=-fPIC', 'LDOPTIONS=-fPIC', 'CC={0}'.format(self.compiler.cc), - 'PARCC={0}'.format(spec['mpi'].mpicc), 'LD={0}'.format(self.compiler.cc), - 'PARLD={0}'.format(spec['mpi'].mpicc), 'LIBDIR=-L../..', - 'PARLIBS=-L../../ -lparmgrid -lmgrid -lm', - 'LIBS=-L../../ -lmgrid -lm', - 'parallel' + 'LIBS=-L../.. -lmgrid -lm', ] + if '+mpi' in spec: + make_opts.extend([ + 'PARCC={0}'.format(spec['mpi'].mpicc), + 'PARLD={0}'.format(spec['mpi'].mpicc), + 'PARLIBS=-L../.. -lparmgrid -lmgrid -lm', + 'parallel' + ]) + else: + make_opts.append('serial') + make(*make_opts, parallel=False) mkdirp(prefix.include, prefix.lib, prefix.bin) install("mgridgen.h", prefix.include) - install("parmgridgen.h", prefix.include) - - install("MGridGen/IMlib/libIMlib.a", - join_path(prefix.lib, 'libIMlib.a')) install("libmgrid.a", prefix.lib) - install("libparmgrid.a", prefix.lib) + install("mgridgen", prefix.bin) - install("mgridgen", prefix.bin) - install("parmgridgen", prefix.bin) + if '+mpi' in spec: + install("parmgridgen.h", prefix.include) + install("libparmgrid.a", prefix.lib) + install("parmgridgen", prefix.bin) From 2cfc5eebb5affe76e6ae53e835dcc089a708719d Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 28 Apr 2017 13:30:09 -0700 Subject: [PATCH 0787/2394] Bug/make dia build (#4045) * Make dia build w/ Spack's X bits (and misc) X related - need to depend on the +X variant of gtkplus - need to depend on freetype misc - fix path to tarball * Make freetype a "build" dependency * Freetype is not just a build dep --- var/spack/repos/builtin/packages/dia/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/dia/package.py b/var/spack/repos/builtin/packages/dia/package.py index 014ddf084c3..d04cce27dcd 100644 --- a/var/spack/repos/builtin/packages/dia/package.py +++ b/var/spack/repos/builtin/packages/dia/package.py @@ -33,7 +33,7 @@ class Dia(Package): version('0.97.3', '0e744a0f6a6c4cb6a089e4d955392c3c') depends_on('intltool', type='build') - depends_on('gtkplus@2.6.0:') + depends_on('gtkplus@2.6.0:+X') depends_on('libxslt') depends_on('python') depends_on('swig') @@ -42,6 +42,7 @@ class Dia(Package): depends_on('libxinerama') depends_on('libxrender') depends_on('libxml2') + depends_on('freetype') # TODO: Optional dependencies, not yet supported by Spack # depends_on('libart') @@ -49,7 +50,7 @@ class Dia(Package): def url_for_version(self, version): """Handle Dia's version-based custom URLs.""" - return 'https://ftp.gnome.org/pub/gnome/source/dia/%s/dia-%s.tar.xz' % (version.up_to(2), version) + return 'https://ftp.gnome.org/pub/gnome/sources/dia/%s/dia-%s.tar.xz' % (version.up_to(2), version) def install(self, spec, prefix): From 89ea5bdd61869dc8afc2a0f1b1d7451d35991497 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 29 Apr 2017 14:44:55 +0200 Subject: [PATCH 0788/2394] A few updates to packages (mostly version updates) (#4049) --- .../repos/builtin/packages/gdb/package.py | 1 + .../repos/builtin/packages/git/package.py | 8 +++++- .../repos/builtin/packages/glpk/package.py | 26 +++++++++---------- .../repos/builtin/packages/lmod/package.py | 1 + .../repos/builtin/packages/tmux/package.py | 10 ++++--- 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index f90e4e7ff0c..d502d2449d4 100644 --- a/var/spack/repos/builtin/packages/gdb/package.py +++ b/var/spack/repos/builtin/packages/gdb/package.py @@ -34,6 +34,7 @@ class Gdb(Package): homepage = "https://www.gnu.org/software/gdb" url = "http://ftp.gnu.org/gnu/gdb/gdb-7.10.tar.gz" + version('7.12.1', '06c8f40521ed65fe36ebc2be29b56942') version('7.11', 'f585059252836a981ea5db9a5f8ce97f') version('7.10.1', 'b93a2721393e5fa226375b42d567d90b') version('7.10', 'fa6827ad0fd2be1daa418abb11a54d86') diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index 24657e54dcf..dfa4e08643b 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -30,7 +30,8 @@ class Git(AutotoolsPackage): """Git is a free and open source distributed version control system designed to handle everything from small to very large - projects with speed and efficiency.""" + projects with speed and efficiency. + """ homepage = "http://git-scm.com" url = "https://github.com/git/git/archive/v2.12.0.tar.gz" @@ -42,6 +43,11 @@ class Git(AutotoolsPackage): # https://www.kernel.org/pub/software/scm/git/git-manpages-{version}.tar.xz releases = [ + { + 'version': '2.12.2', + 'md5': 'f1a50c09ce8b5dd197f3c6c6d5ea8e75', + 'md5_manpages': '9358777e9a67e57427b03884c82311bd', + }, { 'version': '2.12.1', 'md5': 'a05c614c80ecd41e50699f1562e1130c', diff --git a/var/spack/repos/builtin/packages/glpk/package.py b/var/spack/repos/builtin/packages/glpk/package.py index 1b52643e595..da3ccdeef1e 100644 --- a/var/spack/repos/builtin/packages/glpk/package.py +++ b/var/spack/repos/builtin/packages/glpk/package.py @@ -25,30 +25,30 @@ from spack import * -class Glpk(Package): +class Glpk(AutotoolsPackage): """The GLPK (GNU Linear Programming Kit) package is intended for solving - large-scale linear programming (LP), mixed integer programming - (MIP), and other related problems. It is a set of routines written - in ANSI C and organized in the form of a callable library - + large-scale linear programming (LP), mixed integer programming + (MIP), and other related problems. It is a set of routines written + in ANSI C and organized in the form of a callable library. """ + homepage = "https://www.gnu.org/software/glpk" url = "http://ftp.gnu.org/gnu/glpk/glpk-4.57.tar.gz" + version('4.61', '3ce3e224a8b6e75a1a0b378445830f21') version('4.57', '237531a54f73155842f8defe51aedb0f') - variant('gmp', default=False, - description='Activates support for GMP library') + variant( + 'gmp', default=False, description='Activates support for GMP library' + ) depends_on('gmp', when='+gmp') - def install(self, spec, prefix): + def configure_args(self): - options = ['--prefix=%s' % prefix] + options = [] - if '+gmp' in spec: + if '+gmp' in self.spec: options.append('--with-gmp') - configure(*options) - make() - make("install") + return options diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 38529aa52c3..625a0445722 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -38,6 +38,7 @@ class Lmod(AutotoolsPackage): homepage = 'https://www.tacc.utexas.edu/research-development/tacc-projects/lmod' url = 'https://github.com/TACC/Lmod/archive/7.3.tar.gz' + version('7.4.8', '3b22932437cc29ce546ec887885355e7') version('7.4.5', 'fc34029c60dd9782c3d011c2b93fd266') version('7.4.1', '59b2558ee50877f2cf49ed37d7b09fea') version('7.3', '70180ec2ea1fae53aa83350523f6b2b3') diff --git a/var/spack/repos/builtin/packages/tmux/package.py b/var/spack/repos/builtin/packages/tmux/package.py index 89c9751486f..76778d1f5e5 100644 --- a/var/spack/repos/builtin/packages/tmux/package.py +++ b/var/spack/repos/builtin/packages/tmux/package.py @@ -26,15 +26,17 @@ class Tmux(Package): - """tmux is a terminal multiplexer. What is a terminal multiplexer? It lets - you switch easily between several programs in one terminal, detach them - (they keep running in the background) and reattach them to a different - terminal. And do a lot more. + """Tmux is a terminal multiplexer. + + What is a terminal multiplexer? It lets you switch easily between several + programs in one terminal, detach them (they keep running in the + background) and reattach them to a different terminal. And do a lot more. """ homepage = "http://tmux.github.io" url = "https://github.com/tmux/tmux/releases/download/2.2/tmux-2.2.tar.gz" + version('2.4', '6165d3aca811a3225ef8afbd1afcf1c5') version('2.3', 'fcfd1611d705d8b31df3c26ebc93bd3e') version('2.2', 'bd95ee7205e489c62c616bb7af040099') version('2.1', '74a2855695bccb51b6e301383ad4818c') From 90a57cdf8f234dd74e26d7db2d11dd0a18ef3841 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 29 Apr 2017 13:55:00 -0500 Subject: [PATCH 0789/2394] Add latest version of PGI compilers (#4047) * Add latest version of PGI compilers * Add environment variables for PGI --- .../repos/builtin/packages/pgi/package.py | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py index fe52dc24ae4..1e11eaf526d 100644 --- a/var/spack/repos/builtin/packages/pgi/package.py +++ b/var/spack/repos/builtin/packages/pgi/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +from spack.util.prefix import Prefix import os @@ -30,16 +31,15 @@ class Pgi(Package): """PGI optimizing multi-core x64 compilers for Linux, MacOS & Windows with support for debugging and profiling of local MPI processes. - Note: The PGI compilers are licensed software. You will need to create - an account on the PGI homepage and download PGI yourself. Once the download - finishes, rename the file (which may contain information such as the - architecture) to the format: pgi-.tar.gz. Spack will search your - current directory for a file of this format. Alternatively, add this + Note: The PGI compilers are licensed software. You will need to create an + account on the PGI homepage and download PGI yourself. Spack will search + your current directory for the download tarball. Alternatively, add this file to a mirror so that Spack can find it. For instructions on how to set up a mirror, see http://spack.readthedocs.io/en/latest/mirrors.html""" homepage = "http://www.pgroup.com/" + version('17.3', '6eefc42f85e756cbaba76467ed640902') version('16.10', '9bb6bfb7b1052f9e6a45829ba7a24e47') version('16.5', 'a40e8852071b5d600cb42f31631b3de1') version('16.3', '618cb7ddbc57d4e4ed1f21a0ab25f427') @@ -100,3 +100,17 @@ def install(self, spec, prefix): # Run install script os.system("./install") + + def setup_environment(self, spack_env, run_env): + prefix = Prefix(join_path(self.prefix, 'linux86-64', self.version)) + + run_env.set('CC', join_path(prefix.bin, 'pgcc')) + run_env.set('CXX', join_path(prefix.bin, 'pgc++')) + run_env.set('F77', join_path(prefix.bin, 'pgfortran')) + run_env.set('FC', join_path(prefix.bin, 'pgfortran')) + + run_env.set('PATH', prefix.bin) + run_env.set('CPATH', prefix.include) + run_env.set('LIBRARY_PATH', prefix.lib) + run_env.set('LD_LIBRARY_PATH', prefix.lib) + run_env.set('MANPATH', prefix.man) From a32a0eacba7f9fe5287ae0e8e9ff047580d91de8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 29 Apr 2017 14:24:50 -0500 Subject: [PATCH 0790/2394] Add a new package for dash (#4050) --- .../repos/builtin/packages/dash/package.py | 48 +++++++++++++++++++ .../repos/builtin/packages/libedit/package.py | 3 -- .../repos/builtin/packages/ncurses/package.py | 6 --- 3 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 var/spack/repos/builtin/packages/dash/package.py diff --git a/var/spack/repos/builtin/packages/dash/package.py b/var/spack/repos/builtin/packages/dash/package.py new file mode 100644 index 00000000000..823c14a7475 --- /dev/null +++ b/var/spack/repos/builtin/packages/dash/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Dash(AutotoolsPackage): + """The Debian Almquist Shell.""" + + homepage = "https://git.kernel.org/pub/scm/utils/dash/dash.git" + url = "https://git.kernel.org/pub/scm/utils/dash/dash.git/snapshot/dash-0.5.9.1.tar.gz" + list_url = homepage + + version('0.5.9.1', '0d800da0b8ddbefa1468978d314b7d09') + + depends_on('libedit', type='link') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + def configure_args(self): + # Compile with libedit support + # This allows the use of arrow keys at the command line + # See https://askubuntu.com/questions/704688 + return ['--with-libedit'] diff --git a/var/spack/repos/builtin/packages/libedit/package.py b/var/spack/repos/builtin/packages/libedit/package.py index 01110c09100..8b09436921f 100644 --- a/var/spack/repos/builtin/packages/libedit/package.py +++ b/var/spack/repos/builtin/packages/libedit/package.py @@ -39,6 +39,3 @@ class Libedit(AutotoolsPackage): def url_for_version(self, version): url = "http://thrysoee.dk/editline/libedit-{0}-{1}.tar.gz" return url.format(version[-1], version.up_to(-1)) - - def configure_args(self): - return ['LIBS=-lncursesw'] diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 869bc4e5ae8..0a8d597b7fc 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -87,12 +87,6 @@ def build(self, spec, prefix): with working_dir('build_ncursesw'): make() - def check(self): - with working_dir('build_ncurses'): - make('check') - with working_dir('build_ncursesw'): - make('check') - def install(self, spec, prefix): with working_dir('build_ncurses'): make('install') From ce3ab503ded78d19aae45a938084d1f8670cc625 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 29 Apr 2017 19:24:13 -0500 Subject: [PATCH 0791/2394] Python command, libraries, and headers (#3367) ## Motivation Python installations are both important and unfortunately inconsistent. Depending on the Python version, OS, and the strength of the Earth's magnetic field when it was installed, the name of the Python executable, directory containing its libraries, library names, and the directory containing its headers can vary drastically. I originally got into this mess with #3274, where I discovered that Boost could not be built with Python 3 because the executable is called `python3` and we were telling it to use `python`. I got deeper into this mess when I started hacking on #3140, where I discovered just how difficult it is to find the location and name of the Python libraries and headers. Currently, half of the packages that depend on Python and need to know this information jump through hoops to determine the correct information. The other half are hard-coded to use `python`, `spec['python'].prefix.lib`, and `spec['python'].prefix.include`. Obviously, none of these packages would work for Python 3, and there's no reason to duplicate the effort. The Python package itself should contain all of the information necessary to use it properly. This is in line with the recent work by @alalazo and @davydden with respect to `spec['blas'].libs` and friends. ## Prefix For most packages in Spack, we assume that the installation directory is `spec['python'].prefix`. This generally works for anything installed with Spack, but gets complicated when we include external packages. Python is a commonly used external package (it needs to be installed just to run Spack). If it was installed with Homebrew, `which python` would return `/usr/local/bin/python`, and most users would erroneously assume that `/usr/local` is the installation directory. If you peruse through #2173, you'll immediately see why this is not the case. Homebrew actually installs Python in `/usr/local/Cellar/python/2.7.12_2` and symlinks the executable to `/usr/local/bin/python`. `PYTHONHOME` (and presumably most things that need to know where Python is installed) needs to be set to the actual installation directory, not `/usr/local`. Normally I would say, "sounds like user error, make sure to use the real installation directory in your `packages.yaml`". But I think we can make a special case for Python. That's what we decided in #2173 anyway. If we change our minds, I would be more than happy to simplify things. To solve this problem, I created a `spec['python'].home` attribute that works the same way as `spec['python'].prefix` but queries Python to figure out where it was actually installed. @tgamblin Is there any way to overwrite `spec['python'].prefix`? I think it's currently immutable. ## Command In general, Python 2 comes with both `python` and `python2` commands, while Python 3 only comes with a `python3` command. But this is up to the OS developers. For example, `/usr/bin/python` on Gentoo is actually Python 3. Worse yet, if someone is using an externally installed Python, all 3 commands may exist in the same directory! Here's what I'm thinking: If the spec is for Python 3, try searching for the `python3` command. If the spec is for Python 2, try searching for the `python2` command. If neither are found, try searching for the `python` command. ## Libraries Spack installs Python libraries in `spec['python'].prefix.lib`. Except on openSUSE 13, where it installs to `spec['python'].prefix.lib64` (see #2295 and #2253). On my CentOS 6 machine, the Python libraries are installed in `/usr/lib64`. Both need to work. The libraries themselves change name depending on OS and Python version. For Python 2.7 on macOS, I'm seeing: ``` lib/libpython2.7.dylib ``` For Python 3.6 on CentOS 6, I'm seeing: ``` lib/libpython3.so lib/libpython3.6m.so.1.0 lib/libpython3.6m.so -> lib/libpython3.6m.so.1.0 ``` Notice the `m` after the version number. Yeah, that's a thing. ## Headers In Python 2.7, I'm seeing: ``` include/python2.7/pyconfig.h ``` In Python 3.6, I'm seeing: ``` include/python3.6m/pyconfig.h ``` It looks like all Python 3 installations have this `m`. Tested with Python 3.2 and 3.6 on macOS and CentOS 6 Spack has really nice support for libraries (`find_libraries` and `LibraryList`), but nothing for headers. Fixed. --- lib/spack/llnl/util/filesystem.py | 497 ++++++++++++------ lib/spack/spack/package.py | 25 +- lib/spack/spack/spec.py | 143 +++-- lib/spack/spack/test/database.py | 11 +- .../test/{library_list.py => file_list.py} | 118 ++++- lib/spack/spack/util/executable.py | 23 + .../repos/builtin/packages/abinit/package.py | 12 +- .../repos/builtin/packages/ack/package.py | 2 +- .../builtin/packages/blast-plus/package.py | 2 +- .../repos/builtin/packages/boost/package.py | 23 +- .../repos/builtin/packages/cantera/package.py | 6 +- .../repos/builtin/packages/conduit/package.py | 18 +- .../repos/builtin/packages/cosmomc/package.py | 2 +- .../repos/builtin/packages/cp2k/package.py | 8 +- .../builtin/packages/foam-extend/package.py | 4 +- .../repos/builtin/packages/gcc/package.py | 2 +- .../repos/builtin/packages/gdal/package.py | 2 +- .../repos/builtin/packages/geos/package.py | 5 +- .../repos/builtin/packages/git/package.py | 3 +- .../repos/builtin/packages/go/package.py | 2 +- .../builtin/packages/hdf5-blosc/package.py | 2 +- .../repos/builtin/packages/hdf5/package.py | 2 +- .../builtin/packages/hoomd-blue/package.py | 2 +- .../repos/builtin/packages/julia/package.py | 4 +- .../repos/builtin/packages/libxml2/package.py | 2 +- .../repos/builtin/packages/llvm/package.py | 2 +- .../repos/builtin/packages/nwchem/package.py | 2 +- .../builtin/packages/openblas/package.py | 2 +- .../repos/builtin/packages/opencv/package.py | 19 +- .../builtin/packages/openspeedshop/package.py | 18 +- .../repos/builtin/packages/pagmo/package.py | 2 +- .../builtin/packages/paraview/package.py | 3 +- .../repos/builtin/packages/perl/package.py | 3 +- .../repos/builtin/packages/plumed/package.py | 2 +- .../repos/builtin/packages/pocl/package.py | 2 +- .../repos/builtin/packages/psi4/package.py | 3 +- .../repos/builtin/packages/python/package.py | 258 ++++++--- .../repos/builtin/packages/scotch/package.py | 5 +- .../builtin/packages/shiny-server/package.py | 4 +- .../repos/builtin/packages/spark/package.py | 5 +- .../repos/builtin/packages/stat/package.py | 2 +- .../builtin/packages/subversion/package.py | 3 +- .../builtin/packages/superlu-dist/package.py | 4 +- .../repos/builtin/packages/visit/package.py | 2 +- 44 files changed, 883 insertions(+), 378 deletions(-) rename lib/spack/spack/test/{library_list.py => file_list.py} (50%) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 035f9a13ff4..25dc7474998 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -25,27 +25,32 @@ import collections import errno import fileinput +import fnmatch import glob import numbers import os import re import shutil +import six import stat import subprocess import sys from contextlib import contextmanager -import llnl.util.tty as tty +from llnl.util import tty from llnl.util.lang import dedupe __all__ = [ 'FileFilter', + 'HeaderList', 'LibraryList', 'ancestor', 'can_access', 'change_sed_delimiter', 'copy_mode', 'filter_file', + 'find', + 'find_headers', 'find_libraries', 'find_system_libraries', 'fix_darwin_install_name', @@ -66,25 +71,32 @@ 'touchp', 'traverse_tree', 'unset_executable_mode', - 'working_dir'] + 'working_dir' +] def filter_file(regex, repl, *filenames, **kwargs): - """Like sed, but uses python regular expressions. + r"""Like sed, but uses python regular expressions. - Filters every line of each file through regex and replaces the file - with a filtered version. Preserves mode of filtered files. + Filters every line of each file through regex and replaces the file + with a filtered version. Preserves mode of filtered files. - As with re.sub, ``repl`` can be either a string or a callable. - If it is a callable, it is passed the match object and should - return a suitable replacement string. If it is a string, it - can contain ``\1``, ``\2``, etc. to represent back-substitution - as sed would allow. + As with re.sub, ``repl`` can be either a string or a callable. + If it is a callable, it is passed the match object and should + return a suitable replacement string. If it is a string, it + can contain ``\1``, ``\2``, etc. to represent back-substitution + as sed would allow. - Keyword Options: - string[=False] If True, treat regex as a plain string. - backup[=True] Make backup file(s) suffixed with ~ - ignore_absent[=False] Ignore any files that don't exist. + Parameters: + regex (str): The regular expression to search for + repl (str): The string to replace matches with + *filenames: One or more files to search and replace + + Keyword Arguments: + string (bool): Treat regex as a plain string. Default it False + backup (bool): Make backup file(s) suffixed with ``~``. Default is True + ignore_absent (bool): Ignore any files that don't exist. + Default is False """ string = kwargs.get('string', False) backup = kwargs.get('backup', True) @@ -128,7 +140,7 @@ def groupid_to_group(x): class FileFilter(object): - """Convenience class for calling filter_file a lot.""" + """Convenience class for calling ``filter_file`` a lot.""" def __init__(self, *filenames): self.filenames = filenames @@ -139,12 +151,18 @@ def filter(self, regex, repl, **kwargs): def change_sed_delimiter(old_delim, new_delim, *filenames): """Find all sed search/replace commands and change the delimiter. - e.g., if the file contains seds that look like 's///', you can - call change_sed_delimiter('/', '@', file) to change the - delimiter to '@'. - NOTE that this routine will fail if the delimiter is ' or ". - Handling those is left for future work. + e.g., if the file contains seds that look like ``'s///'``, you can + call ``change_sed_delimiter('/', '@', file)`` to change the + delimiter to ``'@'``. + + Note that this routine will fail if the delimiter is ``'`` or ``"``. + Handling those is left for future work. + + Parameters: + old_delim (str): The delimiter to search for + new_delim (str): The delimiter to replace with + *filenames: One or more files to search and replace """ assert(len(old_delim) == 1) assert(len(new_delim) == 1) @@ -239,7 +257,7 @@ def mkdirp(*paths): def force_remove(*paths): - """Remove files without printing errors. Like rm -f, does NOT + """Remove files without printing errors. Like ``rm -f``, does NOT remove directories.""" for path in paths: try: @@ -278,7 +296,8 @@ def touch(path): def touchp(path): - """Like touch, but creates any parent directories needed for the file.""" + """Like ``touch``, but creates any parent directories needed for the file. + """ mkdirp(os.path.dirname(path)) touch(path) @@ -335,17 +354,13 @@ def traverse_tree(source_root, dest_root, rel_path='', **kwargs): ('root/b', 'dest/b') ('root/b/file3', 'dest/b/file3') - Optional args: - - order=[pre|post] -- Whether to do pre- or post-order traversal. - - ignore= -- Predicate indicating which files to ignore. - - follow_nonexisting -- Whether to descend into directories in - src that do not exit in dest. Default True. - - follow_links -- Whether to descend into symlinks in src. - + Keyword Arguments: + order (str): Whether to do pre- or post-order traversal. Accepted + values are 'pre' and 'post' + ignore (str): Predicate indicating which files to ignore + follow_nonexisting (bool): Whether to descend into directories in + ``src`` that do not exit in ``dest``. Default is True + follow_links (bool): Whether to descend into symlinks in ``src`` """ follow_nonexisting = kwargs.get('follow_nonexisting', True) follow_links = kwargs.get('follow_link', False) @@ -406,12 +421,10 @@ def set_executable(path): def remove_dead_links(root): - """ - Removes any dead link that is present in root - - Args: - root: path where to search for dead links + """Removes any dead link that is present in root. + Parameters: + root (str): path where to search for dead links """ for file in os.listdir(root): path = join_path(root, file) @@ -419,11 +432,10 @@ def remove_dead_links(root): def remove_if_dead_link(path): - """ - Removes the argument if it is a dead link, does nothing otherwise + """Removes the argument if it is a dead link. - Args: - path: the potential dead link + Parameters: + path (str): The potential dead link """ if os.path.islink(path): real_path = os.path.realpath(path) @@ -432,14 +444,13 @@ def remove_if_dead_link(path): def remove_linked_tree(path): - """ - Removes a directory and its contents. If the directory is a - symlink, follows the link and removes the real directory before - removing the link. + """Removes a directory and its contents. - Args: - path: directory to be removed + If the directory is a symlink, follows the link and removes the real + directory before removing the link. + Parameters: + path (str): Directory to be removed """ if os.path.exists(path): if os.path.islink(path): @@ -450,17 +461,17 @@ def remove_linked_tree(path): def fix_darwin_install_name(path): - """ - Fix install name of dynamic libraries on Darwin to have full path. + """Fix install name of dynamic libraries on Darwin to have full path. + There are two parts of this task: - (i) use install_name('-id',...) to change install name of a single lib; - (ii) use install_name('-change',...) to change the cross linking between - libs. The function assumes that all libraries are in one folder and - currently won't follow subfolders. - Args: - path: directory in which .dylib files are located + 1. Use ``install_name('-id', ...)`` to change install name of a single lib + 2. Use ``install_name('-change', ...)`` to change the cross linking between + libs. The function assumes that all libraries are in one folder and + currently won't follow subfolders. + Parameters: + path (str): directory in which .dylib files are located """ libs = glob.glob(join_path(path, "*.dylib")) for lib in libs: @@ -486,29 +497,108 @@ def fix_darwin_install_name(path): stdout=subprocess.PIPE).communicate()[0] break -# Utilities for libraries + +def find(root, files, recurse=True): + """Search for ``files`` starting from the ``root`` directory. + + Like GNU/BSD find but written entirely in Python. + + Examples: + + .. code-block:: console + + $ find /usr -name python + + is equivalent to: + + >>> find('/usr', 'python') + + .. code-block:: console + + $ find /usr/local/bin -maxdepth 1 -name python + + is equivalent to: + + >>> find('/usr/local/bin', 'python', recurse=False) + + Accepts any glob characters accepted by fnmatch: + + ======= ==================================== + Pattern Meaning + ======= ==================================== + * matches everything + ? matches any single character + [seq] matches any character in ``seq`` + [!seq] matches any character not in ``seq`` + ======= ==================================== + + Parameters: + root (str): The root directory to start searching from + files (str or collections.Sequence): Library name(s) to search for + recurse (bool, optional): if False search only root folder, + if True descends top-down from the root. Defaults to True. + + Returns: + :func:`list`: The files that have been found + """ + if isinstance(files, six.string_types): + files = [files] + + if recurse: + return _find_recursive(root, files) + else: + return _find_non_recursive(root, files) -class LibraryList(collections.Sequence): - """Sequence of absolute paths to libraries +def _find_recursive(root, search_files): + found_files = [] - Provides a few convenience methods to manipulate library paths and get - commonly used compiler flags or names + for path, _, list_files in os.walk(root): + for search_file in search_files: + for list_file in list_files: + if fnmatch.fnmatch(list_file, search_file): + found_files.append(join_path(path, list_file)) + + return found_files + + +def _find_non_recursive(root, search_files): + found_files = [] + + for list_file in os.listdir(root): + for search_file in search_files: + if fnmatch.fnmatch(list_file, search_file): + found_files.append(join_path(root, list_file)) + + return found_files + + +# Utilities for libraries and headers + + +class FileList(collections.Sequence): + """Sequence of absolute paths to files. + + Provides a few convenience methods to manipulate file paths. """ - def __init__(self, libraries): - self.libraries = list(libraries) + def __init__(self, files): + if isinstance(files, six.string_types): + files = [files] + + self.files = list(dedupe(files)) @property def directories(self): - """Stable de-duplication of the directories where the libraries - reside + """Stable de-duplication of the directories where the files reside. >>> l = LibraryList(['/dir1/liba.a', '/dir2/libb.a', '/dir1/libc.a']) >>> assert l.directories == ['/dir1', '/dir2'] + >>> h = HeaderList(['/dir1/a.h', '/dir1/b.h', '/dir2/c.h']) + >>> assert h.directories == ['/dir1', '/dir2'] """ return list(dedupe( - os.path.dirname(x) for x in self.libraries if os.path.dirname(x) + os.path.dirname(x) for x in self.files if os.path.dirname(x) )) @property @@ -517,8 +607,150 @@ def basenames(self): >>> l = LibraryList(['/dir1/liba.a', '/dir2/libb.a', '/dir3/liba.a']) >>> assert l.basenames == ['liba.a', 'libb.a'] + >>> h = HeaderList(['/dir1/a.h', '/dir2/b.h', '/dir3/a.h']) + >>> assert h.basenames == ['a.h', 'b.h'] """ - return list(dedupe(os.path.basename(x) for x in self.libraries)) + return list(dedupe(os.path.basename(x) for x in self.files)) + + @property + def names(self): + """Stable de-duplication of file names in the list + + >>> h = HeaderList(['/dir1/a.h', '/dir2/b.h', '/dir3/a.h']) + >>> assert h.names == ['a', 'b'] + """ + return list(dedupe(x.split('.')[0] for x in self.basenames)) + + def __getitem__(self, item): + cls = type(self) + if isinstance(item, numbers.Integral): + return self.files[item] + return cls(self.files[item]) + + def __add__(self, other): + return self.__class__(dedupe(self.files + list(other))) + + def __radd__(self, other): + return self.__add__(other) + + def __eq__(self, other): + return self.files == other.files + + def __len__(self): + return len(self.files) + + def joined(self, separator=' '): + return separator.join(self.files) + + def __repr__(self): + return self.__class__.__name__ + '(' + repr(self.files) + ')' + + def __str__(self): + return self.joined() + + +class HeaderList(FileList): + """Sequence of absolute paths to headers. + + Provides a few convenience methods to manipulate header paths and get + commonly used compiler flags or names. + """ + + def __init__(self, files): + super(HeaderList, self).__init__(files) + + self._macro_definitions = [] + + @property + def headers(self): + return self.files + + @property + def include_flags(self): + """Include flags + + >>> h = HeaderList(['/dir1/a.h', '/dir1/b.h', '/dir2/c.h']) + >>> assert h.cpp_flags == '-I/dir1 -I/dir2' + """ + return ' '.join(['-I' + x for x in self.directories]) + + @property + def macro_definitions(self): + """Macro definitions + + >>> h = HeaderList(['/dir1/a.h', '/dir1/b.h', '/dir2/c.h']) + >>> h.add_macro('-DBOOST_LIB_NAME=boost_regex') + >>> h.add_macro('-DBOOST_DYN_LINK') + >>> assert h.macro_definitions == '-DBOOST_LIB_NAME=boost_regex -DBOOST_DYN_LINK' # noqa + """ + return ' '.join(self._macro_definitions) + + @property + def cpp_flags(self): + """Include flags + macro definitions + + >>> h = HeaderList(['/dir1/a.h', '/dir1/b.h', '/dir2/c.h']) + >>> h.add_macro('-DBOOST_DYN_LINK') + >>> assert h.macro_definitions == '-I/dir1 -I/dir2 -DBOOST_DYN_LINK' + """ + return self.include_flags + ' ' + self.macro_definitions + + def add_macro(self, macro): + """Add a macro definition""" + self._macro_definitions.append(macro) + + +def find_headers(headers, root, recurse=False): + """Returns an iterable object containing a list of full paths to + headers if found. + + Accepts any glob characters accepted by fnmatch: + + ======= ==================================== + Pattern Meaning + ======= ==================================== + * matches everything + ? matches any single character + [seq] matches any character in ``seq`` + [!seq] matches any character not in ``seq`` + ======= ==================================== + + Parameters: + headers (str or list of str): Header name(s) to search for + root (str): The root directory to start searching from + recurses (bool, optional): if False search only root folder, + if True descends top-down from the root. Defaults to False. + + Returns: + HeaderList: The headers that have been found + """ + if isinstance(headers, six.string_types): + headers = [headers] + elif not isinstance(headers, collections.Sequence): + message = '{0} expects a string or sequence of strings as the ' + message += 'first argument [got {1} instead]' + message = message.format(find_headers.__name__, type(headers)) + raise TypeError(message) + + # Construct the right suffix for the headers + suffix = 'h' + + # List of headers we are searching with suffixes + headers = ['{0}.{1}'.format(header, suffix) for header in headers] + + return HeaderList(find(root, headers, recurse)) + + +class LibraryList(FileList): + """Sequence of absolute paths to libraries + + Provides a few convenience methods to manipulate library paths and get + commonly used compiler flags or names + """ + + @property + def libraries(self): + return self.files @property def names(self): @@ -556,36 +788,9 @@ def ld_flags(self): """ return self.search_flags + ' ' + self.link_flags - def __getitem__(self, item): - cls = type(self) - if isinstance(item, numbers.Integral): - return self.libraries[item] - return cls(self.libraries[item]) - def __add__(self, other): - return LibraryList(dedupe(self.libraries + list(other))) - - def __radd__(self, other): - return self.__add__(other) - - def __eq__(self, other): - return self.libraries == other.libraries - - def __len__(self): - return len(self.libraries) - - def joined(self, separator=' '): - return separator.join(self.libraries) - - def __repr__(self): - return self.__class__.__name__ + '(' + repr(self.libraries) + ')' - - def __str__(self): - return self.joined() - - -def find_system_libraries(library_names, shared=True): - """Searches the usual system library locations for ``library_names``. +def find_system_libraries(libraries, shared=True): + """Searches the usual system library locations for ``libraries``. Search order is as follows: @@ -596,20 +801,32 @@ def find_system_libraries(library_names, shared=True): 5. ``/usr/local/lib64`` 6. ``/usr/local/lib`` - Args: - library_names (str or list of str): Library name(s) to search for - shared (bool): searches for shared libraries if True + Accepts any glob characters accepted by fnmatch: + + ======= ==================================== + Pattern Meaning + ======= ==================================== + * matches everything + ? matches any single character + [seq] matches any character in ``seq`` + [!seq] matches any character not in ``seq`` + ======= ==================================== + + Parameters: + libraries (str or list of str): Library name(s) to search for + shared (bool, optional): if True searches for shared libraries, + otherwise for static. Defaults to True. Returns: LibraryList: The libraries that have been found """ - if isinstance(library_names, str): - library_names = [library_names] - elif not isinstance(library_names, collections.Sequence): + if isinstance(libraries, six.string_types): + libraries = [libraries] + elif not isinstance(libraries, collections.Sequence): message = '{0} expects a string or sequence of strings as the ' message += 'first argument [got {1} instead]' - message = message.format( - find_system_libraries.__name__, type(library_names)) + message = message.format(find_system_libraries.__name__, + type(libraries)) raise TypeError(message) libraries_found = [] @@ -622,7 +839,7 @@ def find_system_libraries(library_names, shared=True): '/usr/local/lib', ] - for library in library_names: + for library in libraries: for root in search_locations: result = find_libraries(library, root, shared, recurse=True) if result: @@ -632,26 +849,38 @@ def find_system_libraries(library_names, shared=True): return libraries_found -def find_libraries(library_names, root, shared=True, recurse=False): +def find_libraries(libraries, root, shared=True, recurse=False): """Returns an iterable of full paths to libraries found in a root dir. - Args: - library_names (str or list of str): Library names to search for + Accepts any glob characters accepted by fnmatch: + + ======= ==================================== + Pattern Meaning + ======= ==================================== + * matches everything + ? matches any single character + [seq] matches any character in ``seq`` + [!seq] matches any character not in ``seq`` + ======= ==================================== + + Parameters: + libraries (str or list of str): Library name(s) to search for root (str): The root directory to start searching from - shared (bool): if True searches for shared libraries, otherwise static. - recurse (bool): if False search only root folder, - if True descends top-down from the root + shared (bool, optional): if True searches for shared libraries, + otherwise for static. Defaults to True. + recurse (bool, optional): if False search only root folder, + if True descends top-down from the root. Defaults to False. Returns: LibraryList: The libraries that have been found """ - if isinstance(library_names, str): - library_names = [library_names] - elif not isinstance(library_names, collections.Sequence): + if isinstance(libraries, six.string_types): + libraries = [libraries] + elif not isinstance(libraries, collections.Sequence): message = '{0} expects a string or sequence of strings as the ' message += 'first argument [got {1} instead]' - raise TypeError(message.format( - find_libraries.__name__, type(library_names))) + message = message.format(find_libraries.__name__, type(libraries)) + raise TypeError(message) # Construct the right suffix for the library if shared is True: @@ -659,38 +888,6 @@ def find_libraries(library_names, root, shared=True, recurse=False): else: suffix = 'a' # List of libraries we are searching with suffixes - libraries = ['{0}.{1}'.format(lib, suffix) for lib in library_names] - # Search method - if recurse is False: - search_method = _find_libraries_non_recursive - else: - search_method = _find_libraries_recursive + libraries = ['{0}.{1}'.format(lib, suffix) for lib in libraries] - return search_method(libraries, root) - - -def _find_libraries_recursive(libraries, root): - library_dict = collections.defaultdict(list) - for path, _, files in os.walk(root): - for lib in libraries: - if lib in files: - library_dict[lib].append( - join_path(path, lib) - ) - answer = [] - for lib in libraries: - answer.extend(library_dict[lib]) - return LibraryList(answer) - - -def _find_libraries_non_recursive(libraries, root): - - def lib_or_none(lib): - library = join_path(root, lib) - if not os.path.exists(library): - return None - return library - - return LibraryList( - [lib_or_none(lib) for lib in libraries if lib_or_none(lib) is not None] - ) + return LibraryList(find(root, libraries, recurse)) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 1e2210f928a..12b91bcdb01 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -64,6 +64,7 @@ from llnl.util.link_tree import LinkTree from llnl.util.tty.log import log_output from spack import directory_layout +from spack.util.executable import which from spack.stage import Stage, ResourceStage, StageComposite from spack.util.environment import dump_environment from spack.version import * @@ -1025,17 +1026,27 @@ def namespace(self): return namespace def do_fake_install(self): - """Make a fake install directory containing a 'fake' file in bin.""" - # FIXME : Make this part of the 'install' behavior ? - mkdirp(self.prefix.bin) - touch(join_path(self.prefix.bin, 'fake')) - mkdirp(self.prefix.include) - mkdirp(self.prefix.lib) + """Make a fake install directory containing fake executables, + headers, and libraries.""" + + name = self.name library_name = 'lib' + self.name - dso_suffix = 'dylib' if sys.platform == 'darwin' else 'so' + dso_suffix = '.dylib' if sys.platform == 'darwin' else '.so' + chmod = which('chmod') + + mkdirp(self.prefix.bin) + touch(join_path(self.prefix.bin, name)) + chmod('+x', join_path(self.prefix.bin, name)) + + mkdirp(self.prefix.include) + touch(join_path(self.prefix.include, name + '.h')) + + mkdirp(self.prefix.lib) touch(join_path(self.prefix.lib, library_name + dso_suffix)) touch(join_path(self.prefix.lib, library_name + '.a')) + mkdirp(self.prefix.man1) + packages_dir = spack.store.layout.build_packages_path(self.spec) dump_packages(self.spec, packages_dir) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 4cd89f59bfc..0d8fb2893b8 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -101,6 +101,8 @@ import ctypes import hashlib import itertools +import os + from operator import attrgetter from six import StringIO from six import string_types @@ -115,12 +117,13 @@ import spack.util.spack_json as sjson import spack.util.spack_yaml as syaml -from llnl.util.filesystem import find_libraries +from llnl.util.filesystem import find_headers, find_libraries, is_exe from llnl.util.lang import * from llnl.util.tty.color import * from spack.build_environment import get_path_from_module, load_module from spack.provider_index import ProviderIndex from spack.util.crypto import prefix_bits +from spack.util.executable import Executable from spack.util.prefix import Prefix from spack.util.spack_yaml import syaml_dict from spack.util.string import * @@ -745,9 +748,9 @@ def __str__(self): class DependencyMap(HashableMap): - """Each spec has a DependencyMap containing specs for its dependencies. The DependencyMap is keyed by name. """ + @property def concrete(self): return all((d.spec.concrete and d.deptypes) @@ -757,38 +760,104 @@ def __str__(self): return "{deps: %s}" % ', '.join(str(d) for d in sorted(self.values())) -def _libs_default_handler(descriptor, spec, cls): - """Default handler when for ``libs`` attribute in Spec interface. +def _command_default_handler(descriptor, spec, cls): + """Default handler when looking for the 'command' attribute. - Tries to search for ``lib{spec.name}`` recursively starting from - `spec.prefix`. + Tries to search for ``spec.name`` in the ``spec.prefix.bin`` directory. - Args: - descriptor (ForwardQueryToPackage): descriptor that triggered - the call + Parameters: + descriptor (ForwardQueryToPackage): descriptor that triggered the call spec (Spec): spec that is being queried - cls (type(spec)): type of spec, to match the signature of the - descriptor `__get__` method - """ - name = 'lib' + spec.name - shared = '+shared' in spec - return find_libraries(name, root=spec.prefix, shared=shared, recurse=True) - - -def _cppflags_default_handler(descriptor, spec, cls): - """Default handler for the ``cppflags`` attribute in the Spec interface. - - The default just returns ``-I{spec.prefix.include}``. - - Args: - descriptor (ForwardQueryToPackage): descriptor that triggered - the call - spec (Spec): spec that is being queried - cls (type(spec)): type of spec, to match the signature of the descriptor ``__get__`` method + + Returns: + Executable: An executable of the command + + Raises: + RuntimeError: If the command is not found """ - return '-I' + spec.prefix.include + path = os.path.join(spec.prefix.bin, spec.name) + + if is_exe(path): + return Executable(path) + else: + msg = 'Unable to locate {0} command in {1}' + raise RuntimeError(msg.format(spec.name, spec.prefix.bin)) + + +def _headers_default_handler(descriptor, spec, cls): + """Default handler when looking for the 'headers' attribute. + + Tries to search for ``*.h`` files recursively starting from + ``spec.prefix.include``. + + Parameters: + descriptor (ForwardQueryToPackage): descriptor that triggered the call + spec (Spec): spec that is being queried + cls (type(spec)): type of spec, to match the signature of the + descriptor ``__get__`` method + + Returns: + HeaderList: The headers in ``prefix.include`` + + Raises: + RuntimeError: If no headers are found + """ + headers = find_headers('*', root=spec.prefix.include, recurse=True) + + if headers: + return headers + else: + msg = 'Unable to locate {0} headers in {1}' + raise RuntimeError(msg.format(spec.name, spec.prefix.include)) + + +def _libs_default_handler(descriptor, spec, cls): + """Default handler when looking for the 'libs' attribute. + + Tries to search for ``lib{spec.name}`` recursively starting from + ``spec.prefix``. + + Parameters: + descriptor (ForwardQueryToPackage): descriptor that triggered the call + spec (Spec): spec that is being queried + cls (type(spec)): type of spec, to match the signature of the + descriptor ``__get__`` method + + Returns: + LibraryList: The libraries found + + Raises: + RuntimeError: If no libraries are found + """ + name = 'lib' + spec.name + + if '+shared' in spec: + libs = find_libraries( + name, root=spec.prefix, shared=True, recurse=True + ) + elif '~shared' in spec: + libs = find_libraries( + name, root=spec.prefix, shared=False, recurse=True + ) + else: + # Prefer shared + libs = find_libraries( + name, root=spec.prefix, shared=True, recurse=True + ) + if libs: + return libs + + libs = find_libraries( + name, root=spec.prefix, shared=False, recurse=True + ) + + if libs: + return libs + else: + msg = 'Unable to recursively locate {0} libraries in {1}' + raise RuntimeError(msg.format(spec.name, spec.prefix)) class ForwardQueryToPackage(object): @@ -797,7 +866,7 @@ class ForwardQueryToPackage(object): def __init__(self, attribute_name, default_handler=None): """Create a new descriptor. - Args: + Parameters: attribute_name (str): name of the attribute to be searched for in the Package instance default_handler (callable, optional): default function to be @@ -815,7 +884,7 @@ def __get__(self, instance, cls): """Retrieves the property from Package using a well defined chain of responsibility. - The order of call is : + The order of call is: 1. if the query was through the name of a virtual package try to search for the attribute `{virtual_name}_{attribute_name}` @@ -885,17 +954,21 @@ def __set__(self, instance, value): class SpecBuildInterface(ObjectWrapper): + command = ForwardQueryToPackage( + 'command', + default_handler=_command_default_handler + ) + + headers = ForwardQueryToPackage( + 'headers', + default_handler=_headers_default_handler + ) libs = ForwardQueryToPackage( 'libs', default_handler=_libs_default_handler ) - cppflags = ForwardQueryToPackage( - 'cppflags', - default_handler=_cppflags_default_handler - ) - def __init__(self, spec, name, query_parameters): super(SpecBuildInterface, self).__init__(spec) diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index a4b35e1df70..6f8a2ef5d28 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -32,6 +32,7 @@ import pytest import spack import spack.store +from spack.util.executable import Executable from llnl.util.tty.colify import colify @@ -114,11 +115,17 @@ def test_default_queries(database): rec = install_db.get_record('zmpi') spec = rec.spec + libraries = spec['zmpi'].libs assert len(libraries) == 1 - cppflags_expected = '-I' + spec.prefix.include - assert spec['zmpi'].cppflags == cppflags_expected + headers = spec['zmpi'].headers + assert len(headers) == 1 + + command = spec['zmpi'].command + assert isinstance(command, Executable) + assert command.name == 'zmpi' + assert os.path.exists(command.path) def test_005_db_exists(database): diff --git a/lib/spack/spack/test/library_list.py b/lib/spack/spack/test/file_list.py similarity index 50% rename from lib/spack/spack/test/library_list.py rename to lib/spack/spack/test/file_list.py index 7fc2fd222fd..09517b4dabf 100644 --- a/lib/spack/spack/test/library_list.py +++ b/lib/spack/spack/test/file_list.py @@ -25,7 +25,7 @@ import unittest -from llnl.util.filesystem import LibraryList +from llnl.util.filesystem import LibraryList, HeaderList class LibraryListTest(unittest.TestCase): @@ -63,15 +63,29 @@ def test_flags(self): self.assertTrue('-L/dir2' in search_flags) self.assertTrue('-L/dir3' in search_flags) self.assertTrue(isinstance(search_flags, str)) + self.assertEqual( + search_flags, + '-L/dir1 -L/dir2 -L/dir3' + ) link_flags = self.liblist.link_flags + self.assertTrue('-llapack' in link_flags) + self.assertTrue('-lfoo' in link_flags) + self.assertTrue('-lblas' in link_flags) + self.assertTrue('-lbar' in link_flags) + self.assertTrue('-lbaz' in link_flags) + self.assertTrue(isinstance(link_flags, str)) self.assertEqual( link_flags, '-llapack -lfoo -lblas -lbar -lbaz' ) ld_flags = self.liblist.ld_flags - self.assertEqual(ld_flags, search_flags + ' ' + link_flags) + self.assertTrue(isinstance(ld_flags, str)) + self.assertEqual( + ld_flags, + search_flags + ' ' + link_flags + ) def test_paths_manipulation(self): names = self.liblist.names @@ -109,3 +123,103 @@ def test_add(self): type(pylist + self.liblist), type(self.liblist) ) + + +class HeaderListTest(unittest.TestCase): + def setUp(self): + h = [ + '/dir1/Python.h', + '/dir2/datetime.h', + '/dir1/pyconfig.h', + '/dir3/core.h', + 'pymem.h' + ] + headlist = HeaderList(h) + headlist.add_macro('-DBOOST_LIB_NAME=boost_regex') + headlist.add_macro('-DBOOST_DYN_LINK') + self.headlist = headlist + + def test_repr(self): + x = eval(repr(self.headlist)) + self.assertEqual(self.headlist, x) + + def test_joined_and_str(self): + s1 = self.headlist.joined() + self.assertEqual( + s1, + '/dir1/Python.h /dir2/datetime.h /dir1/pyconfig.h /dir3/core.h pymem.h' # NOQA: ignore=E501 + ) + s2 = str(self.headlist) + self.assertEqual(s1, s2) + s3 = self.headlist.joined(';') + self.assertEqual( + s3, + '/dir1/Python.h;/dir2/datetime.h;/dir1/pyconfig.h;/dir3/core.h;pymem.h' # NOQA: ignore=E501 + ) + + def test_flags(self): + include_flags = self.headlist.include_flags + self.assertTrue('-I/dir1' in include_flags) + self.assertTrue('-I/dir2' in include_flags) + self.assertTrue('-I/dir3' in include_flags) + self.assertTrue(isinstance(include_flags, str)) + self.assertEqual( + include_flags, + '-I/dir1 -I/dir2 -I/dir3' + ) + + macros = self.headlist.macro_definitions + self.assertTrue('-DBOOST_LIB_NAME=boost_regex' in macros) + self.assertTrue('-DBOOST_DYN_LINK' in macros) + self.assertTrue(isinstance(macros, str)) + self.assertEqual( + macros, + '-DBOOST_LIB_NAME=boost_regex -DBOOST_DYN_LINK' + ) + + cpp_flags = self.headlist.cpp_flags + self.assertTrue(isinstance(cpp_flags, str)) + self.assertEqual( + cpp_flags, + include_flags + ' ' + macros + ) + + def test_paths_manipulation(self): + names = self.headlist.names + self.assertEqual( + names, + ['Python', 'datetime', 'pyconfig', 'core', 'pymem'] + ) + + directories = self.headlist.directories + self.assertEqual(directories, ['/dir1', '/dir2', '/dir3']) + + def test_get_item(self): + a = self.headlist[0] + self.assertEqual(a, '/dir1/Python.h') + + b = self.headlist[:] + self.assertEqual(type(b), type(self.headlist)) + self.assertEqual(self.headlist, b) + self.assertTrue(self.headlist is not b) + + def test_add(self): + pylist = [ + '/dir1/Python.h', # removed from the final list + '/dir2/pyconfig.h', + '/dir4/datetime.h' + ] + another = HeaderList(pylist) + h = self.headlist + another + self.assertEqual(len(h), 7) + # Invariant : l == l + l + self.assertEqual(h, h + h) + # Always produce an instance of HeaderList + self.assertEqual( + type(self.headlist), + type(self.headlist + pylist) + ) + self.assertEqual( + type(pylist + self.headlist), + type(self.headlist) + ) diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 1d7f019fdf2..44865e7bdb0 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -53,8 +53,31 @@ def add_default_env(self, key, value): @property def command(self): + """The command-line string. + + Returns: + str: The executable and default arguments + """ return ' '.join(self.exe) + @property + def name(self): + """The executable name. + + Returns: + str: The basename of the executable + """ + return os.path.basename(self.path) + + @property + def path(self): + """The path to the executable. + + Returns: + str: The path to the executable + """ + return self.exe[0] + def __call__(self, *args, **kwargs): """Run this executable in a subprocess. diff --git a/var/spack/repos/builtin/packages/abinit/package.py b/var/spack/repos/builtin/packages/abinit/package.py index fe1c7ec7781..d73b89ea696 100644 --- a/var/spack/repos/builtin/packages/abinit/package.py +++ b/var/spack/repos/builtin/packages/abinit/package.py @@ -33,9 +33,9 @@ class Abinit(AutotoolsPackage): energy, charge density and electronic structure of systems made of electrons and nuclei (molecules and periodic solids) within Density Functional Theory (DFT), using pseudopotentials and a planewave - or wavelet basis. - - ABINIT also includes options to optimize the geometry according to the + or wavelet basis. + + ABINIT also includes options to optimize the geometry according to the DFT forces and stresses, or to perform molecular dynamics simulations using these forces, or to generate dynamical matrices, Born effective charges, and dielectric tensors, based on Density-Functional @@ -149,7 +149,7 @@ def configure_args(self): # LibXC library libxc = spec['libxc:fortran'] options.extend([ - 'with_libxc_incs={0}'.format(libxc.cppflags), + 'with_libxc_incs={0}'.format(libxc.headers.cpp_flags), 'with_libxc_libs={0}'.format(libxc.libs.ld_flags + ' -lm') ]) @@ -161,7 +161,7 @@ def configure_args(self): hdf5 = spec['hdf5:hl'] netcdff = spec['netcdf-fortran:shared'] options.extend([ - '--with-netcdf-incs={0}'.format(netcdff.cppflags), + '--with-netcdf-incs={0}'.format(netcdff.headers.cpp_flags), '--with-netcdf-libs={0}'.format( netcdff.libs.ld_flags + ' ' + hdf5.libs.ld_flags ), @@ -175,7 +175,7 @@ def configure_args(self): def check(self): """This method is called after the build phase if tests have been - explicitly activated by user. + explicitly activated by user. """ make('check') make('tests_in') diff --git a/var/spack/repos/builtin/packages/ack/package.py b/var/spack/repos/builtin/packages/ack/package.py index dd6685a829e..b377c30fe98 100644 --- a/var/spack/repos/builtin/packages/ack/package.py +++ b/var/spack/repos/builtin/packages/ack/package.py @@ -45,7 +45,7 @@ def install(self, spec, prefix): ack = 'ack-{0}-single-file'.format(self.version) # rewrite the script's #! line to call the perl dependency - shbang = '#!' + join_path(spec['perl'].prefix.bin, 'perl') + shbang = '#!' + spec['perl'].command.path filter_file(r'^#!/usr/bin/env perl', shbang, ack) install(ack, join_path(prefix.bin, "ack")) diff --git a/var/spack/repos/builtin/packages/blast-plus/package.py b/var/spack/repos/builtin/packages/blast-plus/package.py index 7cab51b0be9..3faf852739f 100644 --- a/var/spack/repos/builtin/packages/blast-plus/package.py +++ b/var/spack/repos/builtin/packages/blast-plus/package.py @@ -206,7 +206,7 @@ def configure_args(self): if '+python' in spec: config_args.append( - '--with-python={0}'.format(self.spec['python'].prefix) + '--with-python={0}'.format(self.spec['python'].home) ) else: config_args.append('--without-python') diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 487445ab102..d4c772ed037 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -25,7 +25,6 @@ from spack import * import sys import os -from glob import glob class Boost(Package): @@ -173,23 +172,11 @@ def determine_toolset(self, spec): return 'gcc' def bjam_python_line(self, spec): - from os.path import dirname, splitext - pydir = 'python%s.%s*' % spec['python'].version.version[:2] - incs = join_path(spec['python'].prefix.include, pydir, "pyconfig.h") - incs = glob(incs) - incs = " ".join([dirname(u) for u in incs]) - - pylib = 'libpython%s.%s*' % spec['python'].version.version[:2] - all_libs = join_path(spec['python'].prefix.lib, pylib) - libs = [u for u in all_libs if splitext(u)[1] == dso_suffix] - if len(libs) == 0: - libs = [u for u in all_libs if splitext(u)[1] == '.a'] - - libs = " ".join(libs) - return 'using python : %s : %s : %s : %s ;\n' % ( + return 'using python : {0} : {1} : {2} : {3} ;\n'.format( spec['python'].version.up_to(2), - join_path(spec['python'].prefix.bin, 'python'), - incs, libs + spec['python'].command.path, + spec['python'].headers.directories[0], + spec['python'].libs[0] ) def determine_bootstrap_options(self, spec, withLibs, options): @@ -198,7 +185,7 @@ def determine_bootstrap_options(self, spec, withLibs, options): options.append("--with-libraries=%s" % ','.join(withLibs)) if '+python' in spec: - options.append('--with-python=%s' % python_exe) + options.append('--with-python=%s' % spec['python'].command.path) with open('user-config.jam', 'w') as f: # Boost may end up using gcc even though clang+gfortran is set in diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py index 0685772f82b..aa7c7dc98c7 100644 --- a/var/spack/repos/builtin/packages/cantera/package.py +++ b/var/spack/repos/builtin/packages/cantera/package.py @@ -117,15 +117,13 @@ def install(self, spec, prefix): if '+python' in spec: options.extend([ 'python_package=full', - 'python_cmd={0}'.format( - join_path(spec['python'].prefix.bin, 'python')), + 'python_cmd={0}'.format(spec['python'].command.path), 'python_array_home={0}'.format(spec['py-numpy'].prefix) ]) if spec['python'].satisfies('@3'): options.extend([ 'python3_package=y', - 'python3_cmd={0}'.format( - join_path(spec['python'].prefix.bin, 'python')), + 'python3_cmd={0}'.format(spec['python'].command.path), 'python3_array_home={0}'.format(spec['py-numpy'].prefix) ]) else: diff --git a/var/spack/repos/builtin/packages/conduit/package.py b/var/spack/repos/builtin/packages/conduit/package.py index ddefde4fb75..d97c6534e45 100644 --- a/var/spack/repos/builtin/packages/conduit/package.py +++ b/var/spack/repos/builtin/packages/conduit/package.py @@ -174,13 +174,13 @@ def create_host_config(self, spec, prefix): ############################################## if "+cmake" in spec: - cmake_exe = join_path(spec['cmake'].prefix.bin, "cmake") + cmake_exe = spec['cmake'].command.path else: cmake_exe = which("cmake") if cmake_exe is None: msg = 'failed to find CMake (and cmake variant is off)' raise RuntimeError(msg) - cmake_exe = cmake_exe.command + cmake_exe = cmake_exe.path host_cfg_fname = "%s-%s-%s.cmake" % (socket.gethostname(), sys_type, @@ -224,21 +224,15 @@ def create_host_config(self, spec, prefix): cfg.write("# Python Support\n") if "+python" in spec: - python_exe = join_path(spec['python'].prefix.bin, "python") cfg.write("# Enable python module builds\n") cfg.write(cmake_cache_entry("ENABLE_PYTHON", "ON")) cfg.write("# python from spack \n") - cfg.write(cmake_cache_entry("PYTHON_EXECUTABLE", python_exe)) + cfg.write(cmake_cache_entry("PYTHON_EXECUTABLE", + spec['python'].command.path)) # install module to standard style site packages dir # so we can support spack activate - py_ver_short = "python{0}".format(spec["python"].version.up_to(2)) - pym_prefix = join_path("${CMAKE_INSTALL_PREFIX}", - "lib", - py_ver_short, - "site-packages") - # use pym_prefix as the install path cfg.write(cmake_cache_entry("PYTHON_MODULE_INSTALL_PREFIX", - pym_prefix)) + site_packages_dir)) else: cfg.write(cmake_cache_entry("ENABLE_PYTHON", "OFF")) @@ -251,7 +245,7 @@ def create_host_config(self, spec, prefix): cfg.write(cmake_cache_entry("SPHINX_EXECUTABLE", sphinx_build_exe)) cfg.write("# doxygen from uberenv\n") - doxygen_exe = join_path(spec['doxygen'].prefix.bin, "doxygen") + doxygen_exe = spec['doxygen'].command.path cfg.write(cmake_cache_entry("DOXYGEN_EXECUTABLE", doxygen_exe)) else: cfg.write(cmake_cache_entry("ENABLE_DOCS", "OFF")) diff --git a/var/spack/repos/builtin/packages/cosmomc/package.py b/var/spack/repos/builtin/packages/cosmomc/package.py index 1e83e02d656..6c41002079e 100644 --- a/var/spack/repos/builtin/packages/cosmomc/package.py +++ b/var/spack/repos/builtin/packages/cosmomc/package.py @@ -178,7 +178,7 @@ def check_install(self): os.environ.pop('CLIKPATH', '') os.environ.pop('PLANCKLIKE', '') - exe = join_path(prefix.bin, 'cosmomc') + exe = spec['cosmomc'].command.path args = [] if '+mpi' in spec: # Add mpirun prefix diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 9bc1026ba9a..06e46979046 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -93,10 +93,10 @@ def install(self, spec, prefix): cppflags = [ '-D__FFTW3', '-D__LIBINT', - spec['fftw'].cppflags + spec['fftw'].headers.cpp_flags ] fcflags = copy.deepcopy(optflags[self.spec.compiler.name]) - fcflags.append(spec['fftw'].cppflags) + fcflags.append(spec['fftw'].headers.cpp_flags) fftw = find_libraries('libfftw3', root=spec['fftw'].prefix.lib) ldflags = [fftw.search_flags] if 'superlu-dist@4.3' in spec: @@ -161,14 +161,14 @@ def install(self, spec, prefix): cppflags.append('-D__WANNIER90') fcflags.extend([ - # spec['elpa:fortran'].cppflags + # spec['elpa:fortran'].headers.cpp_flags '-I' + join_path( spec['elpa'].prefix, 'include', 'elpa-{0}'.format(str(spec['elpa'].version)), 'modules' ), - # spec[pexsi:fortran].cppflags + # spec[pexsi:fortran].headers.cpp_flags '-I' + join_path(spec['pexsi'].prefix, 'fortran') ]) scalapack = spec['scalapack'].libs diff --git a/var/spack/repos/builtin/packages/foam-extend/package.py b/var/spack/repos/builtin/packages/foam-extend/package.py index 559cc45d7ab..c68e570c0fd 100644 --- a/var/spack/repos/builtin/packages/foam-extend/package.py +++ b/var/spack/repos/builtin/packages/foam-extend/package.py @@ -356,8 +356,8 @@ def configure(self, spec, prefix): 'CMAKE_BIN_DIR': spec['cmake'].prefix.bin, }, 'python': { - 'PYTHON_DIR': spec['python'].prefix, - 'PYTHON_BIN_DIR': spec['python'].prefix.bin, + 'PYTHON_DIR': spec['python'].home, + 'PYTHON_BIN_DIR': spec['python'].home.bin, }, 'flex': { 'FLEX_SYSTEM': 1, diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 00518c8cf48..b362060e612 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -176,7 +176,7 @@ def write_rpath_specs(self): self.spec.format('$_$@')) return - gcc = Executable(join_path(self.prefix.bin, 'gcc')) + gcc = self.spec['gcc'].command lines = gcc('-dumpspecs', output=str).strip().split("\n") specs_file = join_path(self.spec_dir, 'specs') with closing(open(specs_file, 'w')) as out: diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index dc58cc89938..1b9a4f08182 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -72,7 +72,7 @@ def install(self, spec, prefix): args.append("--prefix=%s" % prefix) args.append("--with-liblzma=yes") args.append("--with-zlib=%s" % spec['zlib'].prefix) - args.append("--with-python=%s" % spec['python'].prefix.bin + "/python") + args.append("--with-python=%s" % spec['python'].command.path) args.append("--without-libtool") if '+geos' in spec: diff --git a/var/spack/repos/builtin/packages/geos/package.py b/var/spack/repos/builtin/packages/geos/package.py index 324186cfbc7..2419eed0389 100644 --- a/var/spack/repos/builtin/packages/geos/package.py +++ b/var/spack/repos/builtin/packages/geos/package.py @@ -60,9 +60,8 @@ class Geos(Package): def install(self, spec, prefix): args = ["--prefix=%s" % prefix] # if '+python' in spec: -# os.environ['PYTHON'] = join_path(spec['python'].prefix, 'bin', -# 'python' if spec['python'].version[:1][0] <= 2 else 'python3') -# os.environ['SWIG'] = join_path(spec['swig'].prefix, 'bin', 'swig') +# os.environ['PYTHON'] = spec['python'].command.path +# os.environ['SWIG'] = spec['swig'].command.path # # args.append("--enable-python") diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index dfa4e08643b..d71f49bff6a 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -162,8 +162,7 @@ def configure_args(self): '--with-iconv={0}'.format(spec['libiconv'].prefix), '--with-libpcre={0}'.format(spec['pcre'].prefix), '--with-openssl={0}'.format(spec['openssl'].prefix), - '--with-perl={0}'.format( - join_path(spec['perl'].prefix.bin, 'perl')), + '--with-perl={0}'.format(spec['perl'].command.path), '--with-zlib={0}'.format(spec['zlib'].prefix), ] diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 7f1523ca6d1..05a903ea749 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -117,7 +117,7 @@ def setup_dependent_package(self, module, dependent_spec): shutil.copytree('bin', os.path.join(prefix, '/bin')) """ # Add a go command/compiler for extensions - module.go = Executable(join_path(self.spec.prefix.bin, 'go')) + module.go = self.spec['go'].command def setup_dependent_environment(self, spack_env, run_env, dependent_spec): if os.environ.get('GOROOT', False): diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index 79f23d7d92f..053a4d48524 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -69,7 +69,7 @@ def install(self, spec, prefix): # if sys.platform == "darwin": # fix_darwin_install_name(prefix.lib) - libtool = Executable(join_path(spec["libtool"].prefix.bin, "libtool")) + libtool = spec["libtool"].command # TODO: these vars are not used. # if "+mpi" in spec["hdf5"]: diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 4da24dd7f12..5a3f9e5657a 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -257,7 +257,7 @@ def check_install(self): cc = Executable(spec['mpi'].mpicc) else: cc = Executable(self.compiler.cc) - cc(*(['-c', "check.c"] + spec['hdf5'].cppflags.split())) + cc(*(['-c', "check.c"] + spec['hdf5'].headers.cpp_flags.split())) cc(*(['-o', "check", "check.o"] + spec['hdf5'].libs.ld_flags.split())) try: diff --git a/var/spack/repos/builtin/packages/hoomd-blue/package.py b/var/spack/repos/builtin/packages/hoomd-blue/package.py index 3d56f08dc0a..0aa9574a6d1 100644 --- a/var/spack/repos/builtin/packages/hoomd-blue/package.py +++ b/var/spack/repos/builtin/packages/hoomd-blue/package.py @@ -81,7 +81,7 @@ def cmake_args(self): spec = self.spec cmake_args = [ - '-DPYTHON_EXECUTABLE={0}/python'.format(spec['python'].prefix.bin), + '-DPYTHON_EXECUTABLE={0}'.format(spec['python'].command.path), ] # MPI support diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index 4e7c65f53a4..007a384f10e 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -185,7 +185,7 @@ def install(self, spec, prefix): juliarc.write('\n') # Install some commonly used packages - julia = Executable(join_path(prefix.bin, "julia")) + julia = spec['julia'].command julia("-e", 'Pkg.init(); Pkg.update()') # Install HDF5 @@ -216,7 +216,7 @@ def install(self, spec, prefix): with open(join_path(prefix, "etc", "julia", "juliarc.jl"), "a") as juliarc: juliarc.write('# Python\n') - juliarc.write('ENV["PYTHON"] = "%s"\n' % spec["python"].prefix) + juliarc.write('ENV["PYTHON"] = "%s"\n' % spec["python"].home) juliarc.write('\n') # Python's OpenSSL package installer complains: # Error: PREFIX too long: 166 characters, but only 128 allowed diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 470998d8826..4324b1dcd39 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -49,7 +49,7 @@ def configure_args(self): spec = self.spec if '+python' in spec: python_args = [ - '--with-python={0}'.format(spec['python'].prefix), + '--with-python={0}'.format(spec['python'].home), '--with-python-install-dir={0}'.format(site_packages_dir) ] else: diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index d2bf06e358a..868e3367787 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -339,7 +339,7 @@ def cmake_args(self): cmake_args = [ '-DLLVM_REQUIRES_RTTI:BOOL=ON', '-DCLANG_DEFAULT_OPENMP_RUNTIME:STRING=libomp', - '-DPYTHON_EXECUTABLE:PATH=%s/bin/python' % spec['python'].prefix + '-DPYTHON_EXECUTABLE:PATH={0}'.format(spec['python'].command.path), ] if '+gold' in spec: diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 3a8be3f56ea..10c5ec5701d 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -88,7 +88,7 @@ def install(self, spec, prefix): 'MPI_LOC=%s' % spec['mpi'].prefix, 'USE_PYTHONCONFIG=y', 'PYTHONVERSION=%s' % spec['python'].version.up_to(2), - 'PYTHONHOME=%s' % spec['python'].prefix, + 'PYTHONHOME=%s' % spec['python'].home, 'BLASOPT=%s' % ((lapack + blas).ld_flags), 'BLAS_LIB=%s' % blas.ld_flags, 'LAPACK_LIB=%s' % lapack.ld_flags, diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 81f48419317..4ebb38aa7aa 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -150,7 +150,7 @@ def check_install(self): blessed_file = join_path(os.path.dirname(self.module.__file__), 'test_cblas_dgemm.output') - include_flags = spec['openblas'].cppflags + include_flags = spec['openblas'].headers.cpp_flags link_flags = spec['openblas'].libs.ld_flags if self.compiler.name == 'intel': link_flags += ' -lifcore' diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index 8a721032a61..b052cfa12ad 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -from glob import glob class Opencv(Package): @@ -166,22 +165,11 @@ def install(self, spec, prefix): # Python if '+python' in spec: - python = spec['python'] - - try: - python_lib = glob(join_path( - python.prefix.lib, 'libpython*.{0}'.format(dso_suffix)))[0] - except KeyError: - raise InstallError('Cannot find libpython') - - try: - python_include_dir = glob(join_path(python.prefix.include, - 'python*'))[0] - except KeyError: - raise InstallError('Cannot find python include directory') + python_exe = spec['python'].command.path + python_lib = spec['python'].libs[0] + python_include_dir = spec['python'].headers.directories[0] if '^python@3:' in spec: - python_exe = join_path(python.prefix.bin, 'python3') cmake_options.extend([ '-DBUILD_opencv_python3=ON', '-DPYTHON3_EXECUTABLE={0}'.format(python_exe), @@ -190,7 +178,6 @@ def install(self, spec, prefix): '-DBUILD_opencv_python2=OFF', ]) elif '^python@2:3' in spec: - python_exe = join_path(python.prefix.bin, 'python2') cmake_options.extend([ '-DBUILD_opencv_python2=ON', '-DPYTHON2_EXECUTABLE={0}'.format(python_exe), diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index c4b150f56c4..6ad28ce3b76 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -167,24 +167,18 @@ def set_defaultbase_cmakeOptions(self, spec, cmakeOptions): # Appends to cmakeOptions the options that will enable # the appropriate base level options to the openspeedshop # cmake build. - python_vers = format(spec['python'].version.up_to(2)) - python_pv = '/python' + python_vers - python_pvs = '/libpython' + python_vers + '.' + format(dso_suffix) + python_exe = spec['python'].command.path + python_library = spec['python'].libs[0] + python_include = spec['python'].headers.directories[0] BaseOptions = [] BaseOptions.append('-DBINUTILS_DIR=%s' % spec['binutils'].prefix) BaseOptions.append('-DLIBELF_DIR=%s' % spec['libelf'].prefix) BaseOptions.append('-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix) - BaseOptions.append( - '-DPYTHON_EXECUTABLE=%s' - % join_path(spec['python'].prefix + '/bin/python')) - BaseOptions.append( - '-DPYTHON_INCLUDE_DIR=%s' - % join_path(spec['python'].prefix.include) + python_pv) - BaseOptions.append( - '-DPYTHON_LIBRARY=%s' - % join_path(spec['python'].prefix.lib) + python_pvs) + BaseOptions.append('-DPYTHON_EXECUTABLE=%s' % python_exe) + BaseOptions.append('-DPYTHON_INCLUDE_DIR=%s' % python_include) + BaseOptions.append('-DPYTHON_LIBRARY=%s' % python_library) BaseOptions.append('-DBoost_NO_SYSTEM_PATHS=TRUE') BaseOptions.append('-DBoost_NO_BOOST_CMAKE=TRUE') BaseOptions.append('-DBOOST_ROOT=%s' % spec['boost'].prefix) diff --git a/var/spack/repos/builtin/packages/pagmo/package.py b/var/spack/repos/builtin/packages/pagmo/package.py index 5a06b70e387..eeeb437db7f 100644 --- a/var/spack/repos/builtin/packages/pagmo/package.py +++ b/var/spack/repos/builtin/packages/pagmo/package.py @@ -110,7 +110,7 @@ def cmake_args(self): if '+python' in spec: args.extend([ # By default picks up the system python not the Spack build - '-DPYTHON_EXECUTABLE={0}'.format(python_exe), + '-DPYTHON_EXECUTABLE={0}'.format(spec['python'].command.path), # By default installs to the python prefix not the pagmo prefix '-DPYTHON_MODULES_DIR={0}'.format(site_packages_dir), ]) diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 9b2b33625a0..ea0722dab8c 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -120,8 +120,7 @@ def nvariant_bool(feature): if '+python' in spec: cmake_args.extend([ '-DPARAVIEW_ENABLE_PYTHON:BOOL=ON', - '-DPYTHON_EXECUTABLE:FILEPATH=%s/bin/python' - % spec['python'].prefix + '-DPYTHON_EXECUTABLE:FILEPATH=%s' % spec['python'].command.path ]) if '+mpi' in spec: diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index ad67cae48c0..dc1f7be93cf 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -113,11 +113,10 @@ def install(self, spec, prefix): @run_after('install') def install_cpanm(self): spec = self.spec - prefix = self.prefix if '+cpanm' in spec: with working_dir(join_path('cpanm', 'cpanm')): - perl = Executable(join_path(prefix.bin, 'perl')) + perl = spec['perl'].command perl('Makefile.PL') make() make('install') diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 60443cbcc65..3022cd7959e 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -122,7 +122,7 @@ def apply_patch(self, other): def setup_dependent_package(self, module, dependent_spec): # Make plumed visible from dependent packages - module.plumed = Executable(join_path(self.spec.prefix.bin, 'plumed')) + module.plumed = self.spec['plumed'].command @run_before('autoreconf') def filter_gslcblas(self): diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py index b6baee7e072..8becd9e9f73 100644 --- a/var/spack/repos/builtin/packages/pocl/package.py +++ b/var/spack/repos/builtin/packages/pocl/package.py @@ -104,7 +104,7 @@ def check_install(self): with working_dir(checkdir, create=True): source = join_path(os.path.dirname(self.module.__file__), "example1.c") - cflags = spec["pocl"].cppflags.split() + cflags = spec["pocl"].headers.cpp_flags.split() # ldflags = spec["pocl"].libs.ld_flags.split() ldflags = ["-L%s" % spec["pocl"].prefix.lib, "-lOpenCL", "-lpoclu"] diff --git a/var/spack/repos/builtin/packages/psi4/package.py b/var/spack/repos/builtin/packages/psi4/package.py index d14aff363be..976b5d3c4ea 100644 --- a/var/spack/repos/builtin/packages/psi4/package.py +++ b/var/spack/repos/builtin/packages/psi4/package.py @@ -115,8 +115,7 @@ def filter_compilers(self, spec, prefix): ' -I'.join([ os.path.join(spec['psi4'].prefix.include, 'psi4'), os.path.join(spec['boost'].prefix.include, 'boost'), - os.path.join(spec['python'].prefix.include, 'python{0}'.format( - spec['python'].version.up_to(2))), + os.path.join(spec['python'].headers.directories[0]), spec['lapack'].prefix.include, spec['blas'].prefix.include, '/usr/include' diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index bc3de0479bb..12b77813d1c 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -24,7 +24,9 @@ ############################################################################## import ast import os +import platform import re +import sys from contextlib import closing import spack @@ -33,10 +35,11 @@ from llnl.util.filesystem import force_remove from spack import * from spack.util.environment import * +from spack.util.prefix import Prefix import spack.util.spack_json as sjson -class Python(Package): +class Python(AutotoolsPackage): """The Python programming language.""" homepage = "http://www.python.org" @@ -62,6 +65,10 @@ class Python(Package): extendable = True + # --enable-shared is known to cause problems for some users on macOS + # See http://bugs.python.org/issue29846 + variant('shared', default=sys.platform != 'darwin', + description='Enable shared libraries') variant('tk', default=False, description='Provide support for Tkinter') variant('ucs4', default=False, description='Enable UCS4 (wide) unicode strings') @@ -82,13 +89,14 @@ class Python(Package): depends_on("tk", when="+tk") depends_on("tcl", when="+tk") - patch('ncurses.patch') + # Patch does not work for Python 3.1 + patch('ncurses.patch', when='@:2.8,3.2:') _DISTUTIL_VARS_TO_SAVE = ['LDSHARED'] _DISTUTIL_CACHE_FILENAME = 'sysconfig.json' _distutil_vars = None - @when('@2.7,3.4:') + @when('@2.7:2.8,3.4:') def patch(self): # NOTE: Python's default installation procedure makes it possible for a # user's local configurations to change the Spack installation. In @@ -100,7 +108,10 @@ def patch(self): r'\1setup.py\2 --no-user-cfg \3\6' ) - def install(self, spec, prefix): + def setup_environment(self, spack_env, run_env): + spec = self.spec + prefix = self.prefix + # TODO: The '--no-user-cfg' option for Python installation is only in # Python v2.7 and v3.4+ (see https://bugs.python.org/issue1180) and # adding support for ignoring user configuration will require @@ -110,23 +121,27 @@ def install(self, spec, prefix): 'user configurations are present.').format(self.version)) # Need this to allow python build to find the Python installation. - env['PYTHONHOME'], env['PYTHONPATH'] = prefix, prefix - env['MACOSX_DEPLOYMENT_TARGET'] = '10.6' + spack_env.set('PYTHONHOME', prefix) + spack_env.set('PYTHONPATH', prefix) + spack_env.set('MACOSX_DEPLOYMENT_TARGET', platform.mac_ver()[0]) - # Rest of install is pretty standard except setup.py needs to - # be able to read the CPPFLAGS and LDFLAGS as it scans for the - # library and headers to build + def configure_args(self): + spec = self.spec + + # setup.py needs to be able to read the CPPFLAGS and LDFLAGS + # as it scans for the library and headers to build dep_pfxs = [dspec.prefix for dspec in spec.dependencies('link')] config_args = [ - '--prefix={0}'.format(prefix), '--with-threads', - '--enable-shared', 'CPPFLAGS=-I{0}'.format(' -I'.join(dp.include for dp in dep_pfxs)), 'LDFLAGS=-L{0}'.format(' -L'.join(dp.lib for dp in dep_pfxs)), ] - if spec.satisfies("platform=darwin") and ('%gcc' in spec): + if spec.satisfies('%gcc platform=darwin'): config_args.append('--disable-toolbox-glue') + if '+shared' in spec: + config_args.append('--enable-shared') + if '+ucs4' in spec: if spec.satisfies('@:2.7'): config_args.append('--enable-unicode=ucs4') @@ -140,18 +155,18 @@ def install(self, spec, prefix): if spec.satisfies('@3:'): config_args.append('--without-ensurepip') - configure(*config_args) - make() - make('install') + return config_args + + @run_after('install') + def post_install(self): + spec = self.spec + prefix = self.prefix self.sysconfigfilename = '_sysconfigdata.py' if spec.satisfies('@3.6:'): # Python 3.6.0 renamed the sys config file - python3 = os.path.join(prefix.bin, - 'python{0}'.format(self.version.up_to(1))) - python = Executable(python3) sc = 'import sysconfig; print(sysconfig._get_sysconfigdata_name())' - cf = python('-c', sc, output=str).strip('\n') + cf = self.command('-c', sc, output=str).strip() self.sysconfigfilename = '{0}.py'.format(cf) self._save_distutil_vars(prefix) @@ -205,7 +220,7 @@ def _save_distutil_vars(self, prefix): Spack partially covers this by setting environment variables that are also accounted for by distutils. Currently there is one more known variable that must be set, which is LDSHARED, so the method saves its - autogenerated value to pass it to the dependant package's setup script. + autogenerated value to pass it to the dependent package's setup script. """ self._distutil_vars = {} @@ -234,20 +249,20 @@ def _save_distutil_vars(self, prefix): pass if not input_dict: - tty.warn('Failed to find \'build_time_vars\' dictionary in file ' - '\'%s\'. This might cause the extensions that are ' - 'installed with distutils to call compilers directly ' - 'avoiding Spack\'s wrappers.' % input_filename) + tty.warn("Failed to find 'build_time_vars' dictionary in file " + "'%s'. This might cause the extensions that are " + "installed with distutils to call compilers directly " + "avoiding Spack's wrappers." % input_filename) return for var_name in Python._DISTUTIL_VARS_TO_SAVE: if var_name in input_dict: self._distutil_vars[var_name] = input_dict[var_name] else: - tty.warn('Failed to find key \'%s\' in \'build_time_vars\' ' - 'dictionary in file \'%s\'. This might cause the ' - 'extensions that are installed with distutils to ' - 'call compilers directly avoiding Spack\'s wrappers.' + tty.warn("Failed to find key '%s' in 'build_time_vars' " + "dictionary in file '%s'. This might cause the " + "extensions that are installed with distutils to " + "call compilers directly avoiding Spack's wrappers." % (var_name, input_filename)) if len(self._distutil_vars) > 0: @@ -259,10 +274,10 @@ def _save_distutil_vars(self, prefix): with open(output_filename, 'w') as output_file: sjson.dump(self._distutil_vars, output_file) except: - tty.warn('Failed to save metadata for distutils. This might ' - 'cause the extensions that are installed with ' - 'distutils to call compilers directly avoiding ' - 'Spack\'s wrappers.') + tty.warn("Failed to save metadata for distutils. This might " + "cause the extensions that are installed with " + "distutils to call compilers directly avoiding " + "Spack's wrappers.") # We make the cache empty if we failed to save it to file # to provide the same behaviour as in the case when the cache # is initialized by the method load_distutils_data(). @@ -319,6 +334,144 @@ def filter_compilers(self, prefix): # Set up environment to make install easy for python extensions. # ======================================================================== + @property + def command(self): + """Returns the Python command, which may vary depending + on the version of Python and how it was installed. + + In general, Python 2 comes with ``python`` and ``python2`` commands, + while Python 3 only comes with a ``python3`` command. + + :returns: The Python command + :rtype: Executable + """ + # We need to be careful here. If the user is using an externally + # installed python, all 3 commands could be in the same directory. + + # Search for `python2` iff using Python 2 + if (self.spec.satisfies('@:2') and + os.path.exists(os.path.join(self.prefix.bin, 'python2'))): + command = 'python2' + # Search for `python3` iff using Python 3 + elif (self.spec.satisfies('@3:') and + os.path.exists(os.path.join(self.prefix.bin, 'python3'))): + command = 'python3' + # If neither were found, try `python` + elif os.path.exists(os.path.join(self.prefix.bin, 'python')): + command = 'python' + else: + msg = 'Unable to locate {0} command in {1}' + raise RuntimeError(msg.format(self.name, self.prefix.bin)) + + # The python command may be a symlink if it was installed + # with Homebrew. Since some packages try to determine the + # location of libraries and headers based on the path, + # return the realpath + path = os.path.realpath(os.path.join(self.prefix.bin, command)) + + return Executable(path) + + def print_string(self, string): + """Returns the appropriate print string depending on the + version of Python. + + Examples: + + * Python 2 + + .. code-block:: python + + >>> self.print_string('sys.prefix') + 'print sys.prefix' + + * Python 3 + + .. code-block:: python + + >>> self.print_string('sys.prefix') + 'print(sys.prefix)' + """ + if self.spec.satisfies('@:2'): + return 'print {0}'.format(string) + else: + return 'print({0})'.format(string) + + def get_config_var(self, key): + """Returns the value of a single variable. Wrapper around + ``distutils.sysconfig.get_config_var()``.""" + + cmd = 'from distutils.sysconfig import get_config_var; ' + cmd += self.print_string("get_config_var('{0}')".format(key)) + + return self.command('-c', cmd, output=str).strip() + + def get_config_h_filename(self): + """Returns the full path name of the configuration header. + Wrapper around ``distutils.sysconfig.get_config_h_filename()``.""" + + cmd = 'from distutils.sysconfig import get_config_h_filename; ' + cmd += self.print_string('get_config_h_filename()') + + return self.command('-c', cmd, output=str).strip() + + @property + def home(self): + """Most of the time, ``PYTHONHOME`` is simply + ``spec['python'].prefix``. However, if the user is using an + externally installed python, it may be symlinked. For example, + Homebrew installs python in ``/usr/local/Cellar/python/2.7.12_2`` + and symlinks it to ``/usr/local``. Users may not know the actual + installation directory and add ``/usr/local`` to their + ``packages.yaml`` unknowingly. Query the python executable to + determine exactly where it is installed.""" + + prefix = self.get_config_var('prefix') + return Prefix(prefix) + + @property + def libs(self): + # Spack installs libraries into lib, except on openSUSE where it + # installs them into lib64. If the user is using an externally + # installed package, it may be in either lib or lib64, so we need + # to ask Python where its LIBDIR is. + libdir = self.get_config_var('LIBDIR') + + # The system Python installation on macOS and Homebrew installations + # install libraries into a Frameworks directory + frameworkprefix = self.get_config_var('PYTHONFRAMEWORKPREFIX') + + if '+shared' in self.spec: + ldlibrary = self.get_config_var('LDLIBRARY') + + if os.path.exists(os.path.join(libdir, ldlibrary)): + return LibraryList(os.path.join(libdir, ldlibrary)) + elif os.path.exists(os.path.join(frameworkprefix, ldlibrary)): + return LibraryList(os.path.join(frameworkprefix, ldlibrary)) + else: + msg = 'Unable to locate {0} libraries in {1}' + raise RuntimeError(msg.format(self.name, libdir)) + else: + library = self.get_config_var('LIBRARY') + + if os.path.exists(os.path.join(libdir, library)): + return LibraryList(os.path.join(libdir, library)) + elif os.path.exists(os.path.join(frameworkprefix, library)): + return LibraryList(os.path.join(frameworkprefix, library)) + else: + msg = 'Unable to locate {0} libraries in {1}' + raise RuntimeError(msg.format(self.name, libdir)) + + @property + def headers(self): + config_h = self.get_config_h_filename() + + if os.path.exists(config_h): + return HeaderList(config_h) + else: + includepy = self.get_config_var('INCLUDEPY') + msg = 'Unable to locate {0} headers in {1}' + raise RuntimeError(msg.format(self.name, includepy)) + @property def python_lib_dir(self): return join_path('lib', 'python{0}'.format(self.version.up_to(2))) @@ -332,29 +485,10 @@ def site_packages_dir(self): return join_path(self.python_lib_dir, 'site-packages') def setup_dependent_environment(self, spack_env, run_env, dependent_spec): - """Set PYTHONPATH to include site-packages dir for the + """Set PYTHONPATH to include the site-packages directory for the extension and any other python extensions it depends on.""" - # The python executable for version 3 may be python3 or python - # See https://github.com/LLNL/spack/pull/2173#issuecomment-257170199 - pythonex = 'python{0}'.format('3' if self.spec.satisfies('@3') else '') - if os.path.isdir(self.prefix.bin): - base = self.prefix.bin - else: - base = self.prefix - if not os.path.isfile(os.path.join(base, pythonex)): - if self.spec.satisfies('@3'): - python = Executable(os.path.join(base, 'python')) - version = python('-c', 'import sys; print(sys.version)', - output=str) - if version.startswith('3'): - pythonex = 'python' - else: - raise RuntimeError('Cannot locate python executable') - else: - raise RuntimeError('Cannot locate python executable') - python = Executable(os.path.join(base, pythonex)) - prefix = python('-c', 'import sys; print(sys.prefix)', output=str) - spack_env.set('PYTHONHOME', prefix.strip('\n')) + + spack_env.set('PYTHONHOME', self.home) python_paths = [] for d in dependent_spec.traverse( @@ -378,19 +512,15 @@ def setup_dependent_package(self, module, dependent_spec): In most cases, extensions will only need to have one line:: setup_py('install', '--prefix={0}'.format(prefix))""" - python_path = join_path( - self.spec.prefix.bin, - 'python{0}'.format('3' if self.spec.satisfies('@3') else '') - ) - module.python_exe = python_path - module.python = Executable(python_path) - module.setup_py = Executable(python_path + ' setup.py --no-user-cfg') + module.python = self.command + module.setup_py = Executable( + self.command.path + ' setup.py --no-user-cfg') distutil_vars = self._load_distutil_vars() if distutil_vars: - for key, value in distutil_vars.iteritems(): + for key, value in distutil_vars.items(): module.setup_py.add_default_env(key, value) # Add variables for lib/pythonX.Y and lib/pythonX.Y/site-packages dirs. @@ -429,7 +559,7 @@ def python_ignore(self, ext_pkg, args): if ext_pkg.name != 'py-pygments': patterns.append(r'bin/pygmentize$') if ext_pkg.name != 'py-numpy': - patterns.append(r'bin/f2py3?$') + patterns.append(r'bin/f2py[0-9.]*$') return match_predicate(ignore_arg, patterns) @@ -457,7 +587,7 @@ def write_easy_install_pth(self, exts): paths.append(line) - site_packages = join_path(self.prefix, self.site_packages_dir) + site_packages = join_path(self.home, self.site_packages_dir) main_pth = join_path(site_packages, "easy-install.pth") if not paths: diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index 8efb6294871..89d1f8e568f 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -22,7 +22,6 @@ # 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 os from spack import * @@ -165,8 +164,8 @@ def configure(self): # General Features # - flex_path = os.path.join(self.spec['flex'].prefix.bin, 'flex') - bison_path = os.path.join(self.spec['bison'].prefix.bin, 'bison') + flex_path = self.spec['flex'].command.path + bison_path = self.spec['bison'].command.path makefile_inc.extend([ 'EXE =', 'OBJ = .o', diff --git a/var/spack/repos/builtin/packages/shiny-server/package.py b/var/spack/repos/builtin/packages/shiny-server/package.py index e8a899115f3..a3a2b2b1600 100644 --- a/var/spack/repos/builtin/packages/shiny-server/package.py +++ b/var/spack/repos/builtin/packages/shiny-server/package.py @@ -54,9 +54,7 @@ def cmake_args(self): spec = self.spec options = [] - options.extend([ - "-DPYTHON=%s" % join_path(spec['python'].prefix.bin, 'python'), - ]) + options.append("-DPYTHON=%s" % spec['python'].command.path) return options diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py index 24dca5571df..3bc6abd234c 100644 --- a/var/spack/repos/builtin/packages/spark/package.py +++ b/var/spack/repos/builtin/packages/spark/package.py @@ -69,8 +69,7 @@ def setup_environment(self, spack_env, run_env): env['JAVA_HOME'] = self.spec['jdk'].prefix # spack_env.set('JAVA_HOME', self.spec['jdk'].prefix) - hadoop_bin_path = join_path(self.spec['hadoop'].prefix.bin, 'hadoop') - hadoop_bin = Executable(hadoop_bin_path) - hadoop_classpath = hadoop_bin('classpath', return_output=True) + hadoop = self.spec['hadoop'].command + hadoop_classpath = hadoop('classpath', return_output=True) run_env.set('SPARK_DIST_CLASSPATH', hadoop_classpath) diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index 6fe82baa2f3..59d110330a9 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -69,7 +69,7 @@ def configure_args(self): "--with-graphlib=%s" % spec['graphlib'].prefix, "--with-stackwalker=%s" % spec['dyninst'].prefix, "--with-libdwarf=%s" % spec['libdwarf'].prefix, - "--with-python=%s/bin/python" % spec['python'].prefix + "--with-python=%s" % spec['python'].command.path, ] if '+dysect' in spec: args.append('--enable-dysectapi') diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py index c7057a51df0..628dd26d246 100644 --- a/var/spack/repos/builtin/packages/subversion/package.py +++ b/var/spack/repos/builtin/packages/subversion/package.py @@ -72,8 +72,7 @@ def install(self, spec, prefix): if 'swig' in spec: options.append('--with-swig=%s' % spec['swig'].prefix) if 'perl' in spec: - options.append( - 'PERL=%s' % join_path(spec['perl'].prefix.bin, 'perl')) + options.append('PERL=%s' % spec['perl'].command.path) configure(*options) make() diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index e19a33a9000..e7d7b1587d6 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -72,8 +72,8 @@ def install(self, spec, prefix): 'RANLIB = true', 'CC = {0}'.format(self.spec['mpi'].mpicc), 'CFLAGS = -fPIC -std=c99 -O2 %s %s %s' % ( - spec['parmetis'].cppflags, - spec['metis'].cppflags, + spec['parmetis'].headers.cpp_flags, + spec['metis'].headers.cpp_flags, '-D_LONGINT' if '+int64' in spec else ''), 'NOOPTS = -fPIC -std=c99', 'FORTRAN = {0}'.format(self.spec['mpi'].mpif77), diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index 48a3762a2a7..3c8505db972 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -52,7 +52,7 @@ def install(self, spec, prefix): '-DVTK_MINOR_VERSION=1', '-DVISIT_USE_GLEW=OFF', '-DVISIT_LOC_QMAKE_EXE:FILEPATH={0}/qmake-qt4'.format(qt_bin), - '-DPYTHON_DIR:PATH={0}'.format(spec['python'].prefix), + '-DPYTHON_DIR:PATH={0}'.format(spec['python'].home), '-DVISIT_SILO_DIR:PATH={0}'.format(spec['silo'].prefix), '-DVISIT_HDF5_DIR:PATH={0}'.format(spec['hdf5'].prefix), '-DVISIT_VTK_DIR:PATH={0}'.format(spec['vtk'].prefix), From ea2f6b89e9a8d0019fdc3c02ad8562caf99ffcab Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 29 Apr 2017 17:58:52 -0700 Subject: [PATCH 0792/2394] fetch: do full clone of git submodules (fix #3956) (#3958) The required hash of a submodule might point to the non-HEAD commit of the current main branch and hence would lead to a "no such remote ref" at checkout in a shallow submodule. --- lib/spack/spack/fetch_strategy.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index 5c872ae1b68..8dd3c2b36b4 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -686,20 +686,11 @@ def fetch(self): # Init submodules if the user asked for them. if self.submodules: - # only git 1.8.4 and later have --depth option - if self.git_version < ver('1.8.4'): - if spack.debug: - self.git('submodule', 'update', '--init', '--recursive') - else: - self.git('submodule', '--quiet', 'update', '--init', - '--recursive') + if spack.debug: + self.git('submodule', 'update', '--init', '--recursive') else: - if spack.debug: - self.git('submodule', 'update', '--init', '--recursive', - '--depth=1') - else: - self.git('submodule', '--quiet', 'update', '--init', - '--recursive', '--depth=1') + self.git('submodule', '--quiet', 'update', '--init', + '--recursive') def archive(self, destination): super(GitFetchStrategy, self).archive(destination, exclude='.git') From 0a9beccc4a4d7336e002d1fbcc2cf77c2d41ecbb Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 29 Apr 2017 18:39:22 -0700 Subject: [PATCH 0793/2394] flecsale: add more features (#4052) --- var/spack/repos/builtin/packages/flecsale/package.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/flecsale/package.py b/var/spack/repos/builtin/packages/flecsale/package.py index 3e788fa634b..42820cfd96d 100644 --- a/var/spack/repos/builtin/packages/flecsale/package.py +++ b/var/spack/repos/builtin/packages/flecsale/package.py @@ -40,6 +40,8 @@ class Flecsale(CMakePackage): depends_on("cmake@3.1:", type='build') depends_on("flecsi~mpi", when='~mpi') depends_on("flecsi+mpi", when='+mpi') + depends_on("python@2:2.8") + depends_on("openssl") # drop when #3958 has been merged def do_fetch(self, mirror_only=True): @@ -55,7 +57,11 @@ def build_type(self): return 'Release' def cmake_args(self): - options = ['-DENABLE_UNIT_TESTS=ON'] + options = [ + '-DENABLE_UNIT_TESTS=ON' + '-DENABLE_OPENSSL=ON' + '-DENABLE_PYTHON=ON' + ] if '+mpi' in self.spec: options.extend([ From 110f68a83f43e0cd06654bebe3a6cb197646cff6 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 29 Apr 2017 20:43:16 -0700 Subject: [PATCH 0794/2394] Clean up now that submodules are properly supported. (#4053) --- var/spack/repos/builtin/packages/flecsale/package.py | 8 +------- var/spack/repos/builtin/packages/flecsi/package.py | 8 +------- var/spack/repos/builtin/packages/portage/package.py | 8 +------- 3 files changed, 3 insertions(+), 21 deletions(-) diff --git a/var/spack/repos/builtin/packages/flecsale/package.py b/var/spack/repos/builtin/packages/flecsale/package.py index 42820cfd96d..0276da3db24 100644 --- a/var/spack/repos/builtin/packages/flecsale/package.py +++ b/var/spack/repos/builtin/packages/flecsale/package.py @@ -31,7 +31,7 @@ class Flecsale(CMakePackage): homepage = "https://github.com/laristra/flecsale" url = "https://github.com/laristra/flecsale/tarball/v1.0" - version('develop', git='https://github.com/laristra/flecsale', branch='master', submodules=False) + version('develop', git='https://github.com/laristra/flecsale', branch='master', submodules=True) variant('debug', default=False, description='Build debug version') variant('mpi', default=True, @@ -43,12 +43,6 @@ class Flecsale(CMakePackage): depends_on("python@2:2.8") depends_on("openssl") - # drop when #3958 has been merged - def do_fetch(self, mirror_only=True): - super(Flecsale, self).do_fetch(mirror_only) - git = which("git") - git('submodule', 'update', '--init', '--recursive') - def build_type(self): spec = self.spec if '+debug' in spec: diff --git a/var/spack/repos/builtin/packages/flecsi/package.py b/var/spack/repos/builtin/packages/flecsi/package.py index 947719508c4..24c3e6b4d72 100644 --- a/var/spack/repos/builtin/packages/flecsi/package.py +++ b/var/spack/repos/builtin/packages/flecsi/package.py @@ -39,7 +39,7 @@ class Flecsi(CMakePackage): homepage = "http://flecsi.lanl.gov/" url = "https://github.com/laristra/flecsi/tarball/v1.0" - version('develop', git='https://github.com/laristra/flecsi', branch='master', submodules=False) + version('develop', git='https://github.com/laristra/flecsi', branch='master', submodules=True) variant('debug', default=False, description='Build debug version') variant('mpi', default=True, @@ -49,12 +49,6 @@ class Flecsi(CMakePackage): depends_on("legion+shared", when='~mpi') depends_on("legion+shared+mpi", when='+mpi') - # drop when #3958 has been merged - def do_fetch(self, mirror_only=True): - super(Flecsi, self).do_fetch(mirror_only) - git = which("git") - git('-C', 'flecsi', 'submodule', 'update', '--init', '--recursive') - def build_type(self): spec = self.spec if '+debug' in spec: diff --git a/var/spack/repos/builtin/packages/portage/package.py b/var/spack/repos/builtin/packages/portage/package.py index 2bbc54b6cbb..51166b97a31 100644 --- a/var/spack/repos/builtin/packages/portage/package.py +++ b/var/spack/repos/builtin/packages/portage/package.py @@ -34,7 +34,7 @@ class Portage(CMakePackage): homepage = "http://portage.lanl.gov/" url = "https://github.com/laristra/portage/tarball/v1.0" - version('develop', git='https://github.com/laristra/portage', branch='master', submodules=False) + version('develop', git='https://github.com/laristra/portage', branch='master', submodules=True) variant('debug', default=False, description='Build debug version') variant('mpi', default=True, description='Support MPI') @@ -42,12 +42,6 @@ class Portage(CMakePackage): depends_on("cmake@3.1:", type='build') depends_on('mpi', when='+mpi') - # drop when #3958 has been merged - def do_fetch(self, mirror_only=True): - super(Portage, self).do_fetch(mirror_only) - git = which("git") - git('submodule', 'update', '--init', '--recursive') - def build_type(self): spec = self.spec if '+debug' in spec: From 17767bcf25c4b2bd53c506768696b2ae4533050f Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sun, 30 Apr 2017 12:01:35 +0200 Subject: [PATCH 0795/2394] suite-sparse: updated version (#4055) --- var/spack/repos/builtin/packages/suite-sparse/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index 40dc146ce89..375af78a485 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -32,6 +32,7 @@ class SuiteSparse(Package): homepage = 'http://faculty.cse.tamu.edu/davis/suitesparse.html' url = 'http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.5.1.tar.gz' + version('4.5.5', '0a5b38af0016f009409a9606d2f1b555') version('4.5.4', 'f6ab689442e64a1624a47aa220072d1b') version('4.5.3', '8ec57324585df3c6483ad7f556afccbd') version('4.5.1', 'f0ea9aad8d2d1ffec66a5b6bfeff5319') From 6a01612ad4e1f8676b4e0ae477444a2d618096ce Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sun, 30 Apr 2017 19:09:04 +0200 Subject: [PATCH 0796/2394] file_list: ported to pytest (#4054) --- lib/spack/spack/test/file_list.py | 294 ++++++++++++++---------------- 1 file changed, 136 insertions(+), 158 deletions(-) diff --git a/lib/spack/spack/test/file_list.py b/lib/spack/spack/test/file_list.py index 09517b4dabf..be4334f0554 100644 --- a/lib/spack/spack/test/file_list.py +++ b/lib/spack/spack/test/file_list.py @@ -23,203 +23,181 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -import unittest +import pytest from llnl.util.filesystem import LibraryList, HeaderList -class LibraryListTest(unittest.TestCase): - def setUp(self): - l = [ - '/dir1/liblapack.a', - '/dir2/libfoo.dylib', - '/dir1/libblas.a', - '/dir3/libbar.so', - 'libbaz.so' - ] - self.liblist = LibraryList(l) +@pytest.fixture() +def library_list(): + """Returns an instance of LibraryList.""" + l = [ + '/dir1/liblapack.a', + '/dir2/libfoo.dylib', + '/dir1/libblas.a', + '/dir3/libbar.so', + 'libbaz.so' + ] - def test_repr(self): - x = eval(repr(self.liblist)) - self.assertEqual(self.liblist, x) + return LibraryList(l) - def test_joined_and_str(self): - s1 = self.liblist.joined() - self.assertEqual( - s1, - '/dir1/liblapack.a /dir2/libfoo.dylib /dir1/libblas.a /dir3/libbar.so libbaz.so' # NOQA: ignore=E501 - ) - s2 = str(self.liblist) - self.assertEqual(s1, s2) - s3 = self.liblist.joined(';') - self.assertEqual( - s3, - '/dir1/liblapack.a;/dir2/libfoo.dylib;/dir1/libblas.a;/dir3/libbar.so;libbaz.so' # NOQA: ignore=E501 - ) - def test_flags(self): - search_flags = self.liblist.search_flags - self.assertTrue('-L/dir1' in search_flags) - self.assertTrue('-L/dir2' in search_flags) - self.assertTrue('-L/dir3' in search_flags) - self.assertTrue(isinstance(search_flags, str)) - self.assertEqual( - search_flags, - '-L/dir1 -L/dir2 -L/dir3' - ) +@pytest.fixture() +def header_list(): + """Returns an instance of header list""" + h = [ + '/dir1/Python.h', + '/dir2/datetime.h', + '/dir1/pyconfig.h', + '/dir3/core.h', + 'pymem.h' + ] + h = HeaderList(h) + h.add_macro('-DBOOST_LIB_NAME=boost_regex') + h.add_macro('-DBOOST_DYN_LINK') + return h - link_flags = self.liblist.link_flags - self.assertTrue('-llapack' in link_flags) - self.assertTrue('-lfoo' in link_flags) - self.assertTrue('-lblas' in link_flags) - self.assertTrue('-lbar' in link_flags) - self.assertTrue('-lbaz' in link_flags) - self.assertTrue(isinstance(link_flags, str)) - self.assertEqual( - link_flags, - '-llapack -lfoo -lblas -lbar -lbaz' - ) - ld_flags = self.liblist.ld_flags - self.assertTrue(isinstance(ld_flags, str)) - self.assertEqual( - ld_flags, - search_flags + ' ' + link_flags - ) +class TestLibraryList(object): - def test_paths_manipulation(self): - names = self.liblist.names - self.assertEqual(names, ['lapack', 'foo', 'blas', 'bar', 'baz']) + def test_repr(self, library_list): + x = eval(repr(library_list)) + assert library_list == x - directories = self.liblist.directories - self.assertEqual(directories, ['/dir1', '/dir2', '/dir3']) + def test_joined_and_str(self, library_list): - def test_get_item(self): - a = self.liblist[0] - self.assertEqual(a, '/dir1/liblapack.a') + s1 = library_list.joined() + expected = '/dir1/liblapack.a /dir2/libfoo.dylib /dir1/libblas.a /dir3/libbar.so libbaz.so' # noqa: E501 + assert s1 == expected - b = self.liblist[:] - self.assertEqual(type(b), type(self.liblist)) - self.assertEqual(self.liblist, b) - self.assertTrue(self.liblist is not b) + s2 = str(library_list) + assert s1 == s2 - def test_add(self): + s3 = library_list.joined(';') + expected = '/dir1/liblapack.a;/dir2/libfoo.dylib;/dir1/libblas.a;/dir3/libbar.so;libbaz.so' # noqa: E501 + assert s3 == expected + + def test_flags(self, library_list): + + search_flags = library_list.search_flags + assert '-L/dir1' in search_flags + assert '-L/dir2' in search_flags + assert '-L/dir3' in search_flags + assert isinstance(search_flags, str) + assert search_flags == '-L/dir1 -L/dir2 -L/dir3' + + link_flags = library_list.link_flags + assert '-llapack' in link_flags + assert '-lfoo' in link_flags + assert '-lblas' in link_flags + assert '-lbar' in link_flags + assert '-lbaz' in link_flags + assert isinstance(link_flags, str) + assert link_flags == '-llapack -lfoo -lblas -lbar -lbaz' + + ld_flags = library_list.ld_flags + assert isinstance(ld_flags, str) + assert ld_flags == search_flags + ' ' + link_flags + + def test_paths_manipulation(self, library_list): + names = library_list.names + assert names == ['lapack', 'foo', 'blas', 'bar', 'baz'] + + directories = library_list.directories + assert directories == ['/dir1', '/dir2', '/dir3'] + + def test_get_item(self, library_list): + a = library_list[0] + assert a == '/dir1/liblapack.a' + + b = library_list[:] + assert type(b) == type(library_list) + assert library_list == b + assert library_list is not b + + def test_add(self, library_list): pylist = [ '/dir1/liblapack.a', # removed from the final list '/dir2/libbaz.so', '/dir4/libnew.a' ] another = LibraryList(pylist) - l = self.liblist + another - self.assertEqual(len(l), 7) + l = library_list + another + assert len(l) == 7 + # Invariant : l == l + l - self.assertEqual(l, l + l) + assert l == l + l + # Always produce an instance of LibraryList - self.assertEqual( - type(self.liblist), - type(self.liblist + pylist) - ) - self.assertEqual( - type(pylist + self.liblist), - type(self.liblist) - ) + assert type(library_list + pylist) == type(library_list) + assert type(pylist + library_list) == type(library_list) -class HeaderListTest(unittest.TestCase): - def setUp(self): - h = [ - '/dir1/Python.h', - '/dir2/datetime.h', - '/dir1/pyconfig.h', - '/dir3/core.h', - 'pymem.h' - ] - headlist = HeaderList(h) - headlist.add_macro('-DBOOST_LIB_NAME=boost_regex') - headlist.add_macro('-DBOOST_DYN_LINK') - self.headlist = headlist +class TestHeaderList(object): - def test_repr(self): - x = eval(repr(self.headlist)) - self.assertEqual(self.headlist, x) + def test_repr(self, header_list): + x = eval(repr(header_list)) + assert header_list == x - def test_joined_and_str(self): - s1 = self.headlist.joined() - self.assertEqual( - s1, - '/dir1/Python.h /dir2/datetime.h /dir1/pyconfig.h /dir3/core.h pymem.h' # NOQA: ignore=E501 - ) - s2 = str(self.headlist) - self.assertEqual(s1, s2) - s3 = self.headlist.joined(';') - self.assertEqual( - s3, - '/dir1/Python.h;/dir2/datetime.h;/dir1/pyconfig.h;/dir3/core.h;pymem.h' # NOQA: ignore=E501 - ) + def test_joined_and_str(self, header_list): + s1 = header_list.joined() + expected = '/dir1/Python.h /dir2/datetime.h /dir1/pyconfig.h /dir3/core.h pymem.h' # noqa: E501 + assert s1 == expected - def test_flags(self): - include_flags = self.headlist.include_flags - self.assertTrue('-I/dir1' in include_flags) - self.assertTrue('-I/dir2' in include_flags) - self.assertTrue('-I/dir3' in include_flags) - self.assertTrue(isinstance(include_flags, str)) - self.assertEqual( - include_flags, - '-I/dir1 -I/dir2 -I/dir3' - ) + s2 = str(header_list) + assert s1 == s2 - macros = self.headlist.macro_definitions - self.assertTrue('-DBOOST_LIB_NAME=boost_regex' in macros) - self.assertTrue('-DBOOST_DYN_LINK' in macros) - self.assertTrue(isinstance(macros, str)) - self.assertEqual( - macros, - '-DBOOST_LIB_NAME=boost_regex -DBOOST_DYN_LINK' - ) + s3 = header_list.joined(';') + expected = '/dir1/Python.h;/dir2/datetime.h;/dir1/pyconfig.h;/dir3/core.h;pymem.h' # noqa: E501 + assert s3 == expected - cpp_flags = self.headlist.cpp_flags - self.assertTrue(isinstance(cpp_flags, str)) - self.assertEqual( - cpp_flags, - include_flags + ' ' + macros - ) + def test_flags(self, header_list): + include_flags = header_list.include_flags + assert '-I/dir1' in include_flags + assert '-I/dir2' in include_flags + assert '-I/dir3' in include_flags + assert isinstance(include_flags, str) + assert include_flags == '-I/dir1 -I/dir2 -I/dir3' - def test_paths_manipulation(self): - names = self.headlist.names - self.assertEqual( - names, - ['Python', 'datetime', 'pyconfig', 'core', 'pymem'] - ) + macros = header_list.macro_definitions + assert '-DBOOST_LIB_NAME=boost_regex' in macros + assert '-DBOOST_DYN_LINK' in macros + assert isinstance(macros, str) + assert macros == '-DBOOST_LIB_NAME=boost_regex -DBOOST_DYN_LINK' - directories = self.headlist.directories - self.assertEqual(directories, ['/dir1', '/dir2', '/dir3']) + cpp_flags = header_list.cpp_flags + assert isinstance(cpp_flags, str) + assert cpp_flags == include_flags + ' ' + macros - def test_get_item(self): - a = self.headlist[0] - self.assertEqual(a, '/dir1/Python.h') + def test_paths_manipulation(self, header_list): + names = header_list.names + assert names == ['Python', 'datetime', 'pyconfig', 'core', 'pymem'] - b = self.headlist[:] - self.assertEqual(type(b), type(self.headlist)) - self.assertEqual(self.headlist, b) - self.assertTrue(self.headlist is not b) + directories = header_list.directories + assert directories == ['/dir1', '/dir2', '/dir3'] - def test_add(self): + def test_get_item(self, header_list): + a = header_list[0] + assert a == '/dir1/Python.h' + + b = header_list[:] + assert type(b) == type(header_list) + assert header_list == b + assert header_list is not b + + def test_add(self, header_list): pylist = [ '/dir1/Python.h', # removed from the final list '/dir2/pyconfig.h', '/dir4/datetime.h' ] another = HeaderList(pylist) - h = self.headlist + another - self.assertEqual(len(h), 7) + h = header_list + another + assert len(h) == 7 + # Invariant : l == l + l - self.assertEqual(h, h + h) + assert h == h + h + # Always produce an instance of HeaderList - self.assertEqual( - type(self.headlist), - type(self.headlist + pylist) - ) - self.assertEqual( - type(pylist + self.headlist), - type(self.headlist) - ) + assert type(header_list + pylist) == type(header_list) + assert type(pylist + header_list) == type(header_list) From 8551ef3874e3677d8c5830c9f9f450e3e2f5cdf5 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 1 May 2017 02:27:40 +0200 Subject: [PATCH 0797/2394] spack_yaml: ported to pytest (#4033) --- lib/spack/spack/test/spack_yaml.py | 118 +++++++++++++++-------------- 1 file changed, 60 insertions(+), 58 deletions(-) diff --git a/lib/spack/spack/test/spack_yaml.py b/lib/spack/spack/test/spack_yaml.py index fbbb7b8e605..53649eb1ec9 100644 --- a/lib/spack/spack/test/spack_yaml.py +++ b/lib/spack/spack/test/spack_yaml.py @@ -22,14 +22,17 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -""" -Test Spack's custom YAML format. -""" -import unittest +"""Test Spack's custom YAML format.""" + +import pytest import spack.util.spack_yaml as syaml -test_file = """\ + +@pytest.fixture() +def data(): + """Returns the data loaded from a test file""" + test_file = """\ config_file: x86_64: foo: /path/to/foo @@ -43,66 +46,65 @@ [ 1, 2, 3 ] some_key: some_string """ - -test_data = { - 'config_file': syaml.syaml_dict([ - ('x86_64', syaml.syaml_dict([ - ('foo', '/path/to/foo'), - ('bar', '/path/to/bar'), - ('baz', '/path/to/baz')])), - ('some_list', ['item 1', 'item 2', 'item 3']), - ('another_list', [1, 2, 3]), - ('some_key', 'some_string') - ])} + return syaml.load(test_file) -class SpackYamlTest(unittest.TestCase): +def test_parse(data): - def setUp(self): - self.data = syaml.load(test_file) + expected = { + 'config_file': syaml.syaml_dict([ + ('x86_64', syaml.syaml_dict([ + ('foo', '/path/to/foo'), + ('bar', '/path/to/bar'), + ('baz', '/path/to/baz')])), + ('some_list', ['item 1', 'item 2', 'item 3']), + ('another_list', [1, 2, 3]), + ('some_key', 'some_string') + ])} - def test_parse(self): - self.assertEqual(test_data, self.data) + assert data == expected - def test_dict_order(self): - self.assertEqual( - ['x86_64', 'some_list', 'another_list', 'some_key'], - self.data['config_file'].keys()) - self.assertEqual( - ['foo', 'bar', 'baz'], - self.data['config_file']['x86_64'].keys()) +def test_dict_order(data): - def test_line_numbers(self): - def check(obj, start_line, end_line): - self.assertEqual(obj._start_mark.line, start_line) - self.assertEqual(obj._end_mark.line, end_line) + expected_order = ['x86_64', 'some_list', 'another_list', 'some_key'] + assert data['config_file'].keys() == expected_order - check(self.data, 0, 12) - check(self.data['config_file'], 1, 12) - check(self.data['config_file']['x86_64'], 2, 5) - check(self.data['config_file']['x86_64']['foo'], 2, 2) - check(self.data['config_file']['x86_64']['bar'], 3, 3) - check(self.data['config_file']['x86_64']['baz'], 4, 4) - check(self.data['config_file']['some_list'], 6, 9) - check(self.data['config_file']['some_list'][0], 6, 6) - check(self.data['config_file']['some_list'][1], 7, 7) - check(self.data['config_file']['some_list'][2], 8, 8) - check(self.data['config_file']['another_list'], 10, 10) - check(self.data['config_file']['some_key'], 11, 11) + expected_order = ['foo', 'bar', 'baz'] + assert data['config_file']['x86_64'].keys() == expected_order - def test_yaml_aliases(self): - aliased_list_1 = ['foo'] - aliased_list_2 = [] - dict_with_aliases = { - 'a': aliased_list_1, - 'b': aliased_list_1, - 'c': aliased_list_1, - 'd': aliased_list_2, - 'e': aliased_list_2, - 'f': aliased_list_2, - } - string = syaml.dump(dict_with_aliases) - # ensure no YAML aliases appear in syaml dumps. - self.assertFalse('*id' in string) +def test_line_numbers(data): + def check(obj, start_line, end_line): + assert obj._start_mark.line == start_line + assert obj._end_mark.line == end_line + + check(data, 0, 12) + check(data['config_file'], 1, 12) + check(data['config_file']['x86_64'], 2, 5) + check(data['config_file']['x86_64']['foo'], 2, 2) + check(data['config_file']['x86_64']['bar'], 3, 3) + check(data['config_file']['x86_64']['baz'], 4, 4) + check(data['config_file']['some_list'], 6, 9) + check(data['config_file']['some_list'][0], 6, 6) + check(data['config_file']['some_list'][1], 7, 7) + check(data['config_file']['some_list'][2], 8, 8) + check(data['config_file']['another_list'], 10, 10) + check(data['config_file']['some_key'], 11, 11) + + +def test_yaml_aliases(): + aliased_list_1 = ['foo'] + aliased_list_2 = [] + dict_with_aliases = { + 'a': aliased_list_1, + 'b': aliased_list_1, + 'c': aliased_list_1, + 'd': aliased_list_2, + 'e': aliased_list_2, + 'f': aliased_list_2, + } + string = syaml.dump(dict_with_aliases) + + # ensure no YAML aliases appear in syaml dumps. + assert '*id' not in string From 1f303c9ac89b3eee34ac8c07878f8ba1d00fac62 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 30 Apr 2017 20:43:44 -0500 Subject: [PATCH 0798/2394] Don't add system paths to PATH (#3910) * Filter all system paths introduced by dependencies from PATH * Make sure path filtering works *even* for trailing slashes * Revert some of the changes to `filter_system_paths` * Yes, `bin64` is a real thing (sigh) * add tests: /usr, /usr/, /usr/local/../bin, etc. * Convert from rST to Google-style docstrings --- lib/spack/spack/build_environment.py | 102 ++++++++++++++++----------- lib/spack/spack/test/environment.py | 38 +++------- lib/spack/spack/util/environment.py | 14 +--- 3 files changed, 71 insertions(+), 83 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 9c3768b65b3..2ac935291d3 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -236,50 +236,47 @@ def set_compiler_environment_variables(pkg, env): def set_build_environment_variables(pkg, env, dirty=False): + """Ensure a clean install environment when we build packages. + + This involves unsetting pesky environment variables that may + affect the build. It also involves setting environment variables + used by Spack's compiler wrappers. + + Args: + pkg: The package we are building + env: The build environment + dirty (bool): Skip unsetting the user's environment settings """ - This ensures a clean install environment when we build packages. + # Gather information about various types of dependencies + build_deps = pkg.spec.traverse(root=False, deptype=('build')) + link_deps = pkg.spec.traverse(root=False, deptype=('link')) + build_link_deps = pkg.spec.traverse(root=False, deptype=('build', 'link')) + rpath_deps = get_rpath_deps(pkg) - Arguments: - dirty -- skip unsetting the user's environment settings. - """ - # Add spack build environment path with compiler wrappers first in - # the path. We add both spack.env_path, which includes default - # wrappers (cc, c++, f77, f90), AND a subdirectory containing - # compiler-specific symlinks. The latter ensures that builds that - # are sensitive to the *name* of the compiler see the right name - # when we're building with the wrappers. - # - # Conflicts on case-insensitive systems (like "CC" and "cc") are - # handled by putting one in the /case-insensitive - # directory. Add that to the path too. - env_paths = [] - compiler_specific = join_path(spack.build_env_path, pkg.compiler.name) - for item in [spack.build_env_path, compiler_specific]: - env_paths.append(item) - ci = join_path(item, 'case-insensitive') - if os.path.isdir(ci): - env_paths.append(ci) + build_prefixes = [dep.prefix for dep in build_deps] + link_prefixes = [dep.prefix for dep in link_deps] + build_link_prefixes = [dep.prefix for dep in build_link_deps] + rpath_prefixes = [dep.prefix for dep in rpath_deps] - env_paths = filter_system_paths(env_paths) - - for item in reversed(env_paths): - env.prepend_path('PATH', item) - env.set_path(SPACK_ENV_PATH, env_paths) + # Filter out system paths: ['/', '/usr', '/usr/local'] + # These paths can be introduced into the build when an external package + # is added as a dependency. The problem with these paths is that they often + # contain hundreds of other packages installed in the same directory. + # If these paths come first, they can overshadow Spack installations. + build_prefixes = filter_system_paths(build_prefixes) + link_prefixes = filter_system_paths(link_prefixes) + build_link_prefixes = filter_system_paths(build_link_prefixes) + rpath_prefixes = filter_system_paths(rpath_prefixes) # Prefixes of all of the package's dependencies go in SPACK_DEPENDENCIES - dep_prefixes = [d.prefix for d in - pkg.spec.traverse(root=False, deptype=('build', 'link'))] - dep_prefixes = filter_system_paths(dep_prefixes) - env.set_path(SPACK_DEPENDENCIES, dep_prefixes) + env.set_path(SPACK_DEPENDENCIES, build_link_prefixes) # These variables control compiler wrapper behavior - env.set_path(SPACK_RPATH_DEPS, filter_system_paths([ - d.prefix for d in get_rpath_deps(pkg)])) - env.set_path(SPACK_LINK_DEPS, filter_system_paths([ - d.prefix for d in pkg.spec.traverse(root=False, deptype=('link'))])) + env.set_path(SPACK_RPATH_DEPS, rpath_prefixes) + env.set_path(SPACK_LINK_DEPS, link_prefixes) # Add dependencies to CMAKE_PREFIX_PATH - env.set_path('CMAKE_PREFIX_PATH', dep_prefixes) + env.set_path('CMAKE_PREFIX_PATH', build_link_prefixes) # Install prefix env.set(SPACK_PREFIX, pkg.prefix) @@ -326,12 +323,33 @@ def set_build_environment_variables(pkg, env, dirty=False): env.set('SPACK_COMPILER_EXTRA_RPATHS', extra_rpaths) # Add bin directories from dependencies to the PATH for the build. - bin_dirs = reversed( - [d.prefix.bin for d in pkg.spec.dependencies(deptype='build') - if os.path.isdir(d.prefix.bin)]) - bin_dirs = filter_system_bin_paths(bin_dirs) - for item in bin_dirs: + for prefix in build_prefixes: + for dirname in ['bin', 'bin64']: + bin_dir = os.path.join(prefix, dirname) + if os.path.isdir(bin_dir): + env.prepend_path('PATH', bin_dir) + + # Add spack build environment path with compiler wrappers first in + # the path. We add both spack.env_path, which includes default + # wrappers (cc, c++, f77, f90), AND a subdirectory containing + # compiler-specific symlinks. The latter ensures that builds that + # are sensitive to the *name* of the compiler see the right name + # when we're building with the wrappers. + # + # Conflicts on case-insensitive systems (like "CC" and "cc") are + # handled by putting one in the /case-insensitive + # directory. Add that to the path too. + env_paths = [] + compiler_specific = join_path(spack.build_env_path, pkg.compiler.name) + for item in [spack.build_env_path, compiler_specific]: + env_paths.append(item) + ci = join_path(item, 'case-insensitive') + if os.path.isdir(ci): + env_paths.append(ci) + + for item in reversed(env_paths): env.prepend_path('PATH', item) + env.set_path(SPACK_ENV_PATH, env_paths) # Working directory for the spack command itself, for debug logs. if spack.debug: @@ -340,9 +358,9 @@ def set_build_environment_variables(pkg, env, dirty=False): env.set(SPACK_DEBUG_LOG_DIR, spack.spack_working_dir) # Add any pkgconfig directories to PKG_CONFIG_PATH - for pre in dep_prefixes: + for prefix in build_link_prefixes: for directory in ('lib', 'lib64', 'share'): - pcdir = join_path(pre, directory, 'pkgconfig') + pcdir = join_path(prefix, directory, 'pkgconfig') if os.path.isdir(pcdir): env.prepend_path('PKG_CONFIG_PATH', pcdir) diff --git a/lib/spack/spack/test/environment.py b/lib/spack/spack/test/environment.py index dbad2c5e1f7..cdc2e680851 100644 --- a/lib/spack/spack/test/environment.py +++ b/lib/spack/spack/test/environment.py @@ -29,7 +29,7 @@ from spack.environment import EnvironmentModifications from spack.environment import RemovePath, PrependPath, AppendPath from spack.environment import SetEnv, UnsetEnv -from spack.util.environment import filter_system_paths, filter_system_bin_paths +from spack.util.environment import filter_system_paths @pytest.fixture() @@ -64,25 +64,18 @@ def miscellaneous_paths(): '/usr/local/lib64', '/usr/local/opt/some-package/lib', '/usr/opt/lib', + '/usr/local/../bin', '/lib', '/', '/usr', + '/usr/', + '/usr/bin', + '/bin64', '/lib64', '/include', + '/include/', '/opt/some-package/include', - ] - - -@pytest.fixture -def bin_paths(): - """Returns a list of bin paths, including system ones.""" - return [ - '/usr/local/Cellar/gcc/5.3.0/bin', - '/usr/local/bin', - '/usr/local/opt/some-package/bin', - '/usr/opt/bin', - '/bin', - '/opt/some-package/bin', + '/opt/some-package/local/..', ] @@ -137,21 +130,8 @@ def test_filter_system_paths(miscellaneous_paths): '/usr/local/Cellar/gcc/5.3.0/lib', '/usr/local/opt/some-package/lib', '/usr/opt/lib', - '/opt/some-package/include' - ] - assert filtered == expected - - -def test_filter_system_bin_paths(bin_paths): - """Tests that the filtering of system bin paths works as expected.""" - filtered = filter_system_bin_paths(bin_paths) - expected = [ - '/usr/local/bin', - '/bin', - '/usr/local/Cellar/gcc/5.3.0/bin', - '/usr/local/opt/some-package/bin', - '/usr/opt/bin', - '/opt/some-package/bin' + '/opt/some-package/include', + '/opt/some-package/local/..', ] assert filtered == expected diff --git a/lib/spack/spack/util/environment.py b/lib/spack/spack/util/environment.py index 420cce82458..934a9993273 100644 --- a/lib/spack/spack/util/environment.py +++ b/lib/spack/spack/util/environment.py @@ -25,23 +25,13 @@ import os system_paths = ['/', '/usr', '/usr/local'] -suffixes = ['lib', 'lib64', 'include'] +suffixes = ['bin', 'bin64', 'include', 'lib', 'lib64'] system_dirs = [os.path.join(p, s) for s in suffixes for p in system_paths] + \ system_paths -system_bins = [os.path.join(p, 'bin') for p in system_paths] def filter_system_paths(paths): - return [p for p in paths if p not in system_dirs] - - -def filter_system_bin_paths(paths): - # Turn the iterable into a list. Assume it's a list from here on. - _paths = list(paths) - bins = [p for p in _paths if p in system_bins] - nobins = [p for p in _paths if p not in system_bins] - # put bins infront as PATH is set by: prepend_path('PATH', item) - return bins + nobins + return [p for p in paths if os.path.normpath(p) not in system_dirs] def get_path(name): From 4421013290d0d888b328d9ccc365b15b07a815ec Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Mon, 1 May 2017 04:08:49 +0200 Subject: [PATCH 0799/2394] Updated cc wrapper: switch from ld to vcheck if version is requested. (#2501) --- lib/spack/env/cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/env/cc b/lib/spack/env/cc index d7212bf89c6..e6cca1c51fb 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -133,7 +133,7 @@ esac # If any of the arguments below are present, then the mode is vcheck. # In vcheck mode, nothing is added in terms of extra search paths or # libraries. -if [[ -z $mode ]]; then +if [[ -z $mode ]] || [[ $mode == ld ]]; then for arg in "$@"; do if [[ $arg == -v || $arg == -V || $arg == --version || $arg == -dumpversion ]]; then mode=vcheck From c7a5b2eaa9f5bf50f46567ee831425bef9caa157 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 1 May 2017 04:16:28 +0200 Subject: [PATCH 0800/2394] disable rpaths on Darwin when arg=-r mode=ccld (#3930) This fixes build of Ipopt package. --- lib/spack/env/cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/env/cc b/lib/spack/env/cc index e6cca1c51fb..aa3c2aa4b15 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -218,7 +218,7 @@ fi add_rpaths=true if [[ ($mode == ld || $mode == ccld) && "$SPACK_SHORT_SPEC" =~ "darwin" ]]; then for arg in "$@"; do - if [[ ($arg == -r && $mode == ld) || ($arg == -Wl,-r && $mode == ccld) ]]; then + if [[ ($arg == -r && $mode == ld) || ($arg == -r && $mode == ccld) || ($arg == -Wl,-r && $mode == ccld) ]]; then add_rpaths=false break fi From 9f46bc89975c3bf24439ac58b6aeace973bc838f Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 30 Apr 2017 19:25:16 -0700 Subject: [PATCH 0801/2394] flecsale: works with python3 (#4058) Ref laristra/flecsale#41 --- var/spack/repos/builtin/packages/flecsale/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/flecsale/package.py b/var/spack/repos/builtin/packages/flecsale/package.py index 0276da3db24..eafc1b7998f 100644 --- a/var/spack/repos/builtin/packages/flecsale/package.py +++ b/var/spack/repos/builtin/packages/flecsale/package.py @@ -40,7 +40,7 @@ class Flecsale(CMakePackage): depends_on("cmake@3.1:", type='build') depends_on("flecsi~mpi", when='~mpi') depends_on("flecsi+mpi", when='+mpi') - depends_on("python@2:2.8") + depends_on("python") depends_on("openssl") def build_type(self): From b3ce04cba3262865a1a2242f69c7f11d75e6c595 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 1 May 2017 10:41:48 +0200 Subject: [PATCH 0802/2394] url_substitution: ported to pytest (#4032) --- lib/spack/spack/test/url_substitution.py | 90 +++++++++--------------- 1 file changed, 35 insertions(+), 55 deletions(-) diff --git a/lib/spack/spack/test/url_substitution.py b/lib/spack/spack/test/url_substitution.py index 449a3b29bfc..61bd178db87 100644 --- a/lib/spack/spack/test/url_substitution.py +++ b/lib/spack/spack/test/url_substitution.py @@ -25,61 +25,41 @@ """Tests Spack's ability to substitute a different version into a URL.""" import os -import unittest -from spack.url import substitute_version + +import pytest +import spack.url -class UrlSubstitutionTest(unittest.TestCase): +@pytest.mark.parametrize('base_url,version,expected', [ + # Ensures that substituting the same version results in the same URL + ('http://www.mr511.de/software/libelf-0.8.13.tar.gz', '0.8.13', + 'http://www.mr511.de/software/libelf-0.8.13.tar.gz'), + # Test a completely different version syntax + ('http://www.prevanders.net/libdwarf-20130729.tar.gz', '8.12', + 'http://www.prevanders.net/libdwarf-8.12.tar.gz'), + # Test a URL where the version appears twice + # It should get substituted both times + ('https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz', '2.1.3', + 'https://github.com/hpc/mpileaks/releases/download/v2.1.3/mpileaks-2.1.3.tar.gz'), + # Test now with a partial prefix earlier in the URL + # This is hard to figure out so Spack only substitutes + # the last instance of the version + ('https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2', '2.2.0', + 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.2.0.tar.bz2'), + ('https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2', '2.2', + 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.2.tar.bz2'), + # No separator between the name and version of the package + ('file://{0}/turbolinux702.tar.gz'.format(os.getcwd()), '703', + 'file://{0}/turbolinux703.tar.gz'.format(os.getcwd())), - def check(self, base, version, new_url): - self.assertEqual(substitute_version(base, version), new_url) - - def test_same_version(self): - # Ensures that substituting the same version results in the same URL - self.check( - 'http://www.mr511.de/software/libelf-0.8.13.tar.gz', '0.8.13', - 'http://www.mr511.de/software/libelf-0.8.13.tar.gz') - - def test_different_version(self): - # Test a completely different version syntax - self.check( - 'http://www.prevanders.net/libdwarf-20130729.tar.gz', '8.12', - 'http://www.prevanders.net/libdwarf-8.12.tar.gz') - - def test_double_version(self): - # Test a URL where the version appears twice - # It should get substituted both times - self.check( - 'https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz', '2.1.3', - 'https://github.com/hpc/mpileaks/releases/download/v2.1.3/mpileaks-2.1.3.tar.gz') - - def test_partial_version_prefix(self): - # Test now with a partial prefix earlier in the URL - # This is hard to figure out so Spack only substitutes - # the last instance of the version - self.check( - 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2', '2.2.0', - 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.2.0.tar.bz2') - self.check( - 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2', '2.2', - 'https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.2.tar.bz2') - - def test_no_separator(self): - # No separator between the name and version of the package - self.check( - 'file://{0}/turbolinux702.tar.gz'.format(os.getcwd()), '703', - 'file://{0}/turbolinux703.tar.gz'.format(os.getcwd())) - - def test_github_raw(self): - self.check( - 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true', '2.0.7', - 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true') - self.check( - 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true', '4.7', - 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v4.7.tgz?raw=true') - - def test_regex(self): - # Package name contains regex characters - self.check( - 'http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz', '1.2.3', - 'http://math.lbl.gov/voro++/download/dir/voro++-1.2.3.tar.gz') + ('https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true', '2.0.7', + 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true'), + ('https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true', '4.7', + 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v4.7.tgz?raw=true'), + # Package name contains regex characters + ('http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz', '1.2.3', + 'http://math.lbl.gov/voro++/download/dir/voro++-1.2.3.tar.gz'), +]) +def test_url_substitution(base_url, version, expected): + computed = spack.url.substitute_version(base_url, version) + assert computed == expected From 2511520b32fb6559084684c24ec51f54e30f4bb4 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 1 May 2017 10:00:09 -0500 Subject: [PATCH 0803/2394] Add a WafPackage base class (#3975) * Add a WafPackage base class * Correct comment in docstring * Be more specific about the Python versions supported --- lib/spack/docs/packaging_guide.rst | 55 +++---- lib/spack/spack/__init__.py | 8 +- lib/spack/spack/build_systems/waf.py | 148 ++++++++++++++++++ lib/spack/spack/cmd/build.py | 5 +- lib/spack/spack/cmd/configure.py | 5 +- lib/spack/spack/cmd/create.py | 14 +- lib/spack/spack/test/build_system_guess.py | 1 + .../builtin/packages/py-py2cairo/package.py | 17 +- .../repos/builtin/packages/tut/package.py | 14 +- 9 files changed, 220 insertions(+), 47 deletions(-) create mode 100644 lib/spack/spack/build_systems/waf.py diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 6f4a3ecf1ad..bf6f3f3cf96 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2085,33 +2085,34 @@ The package base class, usually specialized for a given build system, determines actual set of entities available for overriding. The classes that are currently provided by Spack are: - +------------------------------------+----------------------------------+ - | | **Base class purpose** | - +====================================+==================================+ - | :py:class:`.Package` | General base class not | - | | specialized for any build system | - +------------------------------------+----------------------------------+ - | :py:class:`.MakefilePackage` | Specialized class for packages | - | | built invoking | - | | hand-written Makefiles | - +------------------------------------+----------------------------------+ - | :py:class:`.AutotoolsPackage` | Specialized class for packages | - | | built using GNU Autotools | - +------------------------------------+----------------------------------+ - | :py:class:`.CMakePackage` | Specialized class for packages | - | | built using CMake | - +------------------------------------+----------------------------------+ - | :py:class:`.RPackage` | Specialized class for | - | | :py:class:`.R` extensions | - +------------------------------------+----------------------------------+ - | :py:class:`.PythonPackage` | Specialized class for | - | | :py:class:`.Python` extensions | - +------------------------------------+----------------------------------+ - | :py:class:`.PerlPackage` | Specialized class for | - | | :py:class:`.Perl` extensions | - +------------------------------------+----------------------------------+ - - + +-------------------------------+----------------------------------+ + | **Base Class** | **Purpose** | + +===============================+==================================+ + | :py:class:`.Package` | General base class not | + | | specialized for any build system | + +-------------------------------+----------------------------------+ + | :py:class:`.MakefilePackage` | Specialized class for packages | + | | built invoking | + | | hand-written Makefiles | + +-------------------------------+----------------------------------+ + | :py:class:`.AutotoolsPackage` | Specialized class for packages | + | | built using GNU Autotools | + +-------------------------------+----------------------------------+ + | :py:class:`.CMakePackage` | Specialized class for packages | + | | built using CMake | + +-------------------------------+----------------------------------+ + | :py:class:`.WafPackage` | Specialize class for packages | + | | built using Waf | + +-------------------------------+----------------------------------+ + | :py:class:`.RPackage` | Specialized class for | + | | :py:class:`.R` extensions | + +-------------------------------+----------------------------------+ + | :py:class:`.PythonPackage` | Specialized class for | + | | :py:class:`.Python` extensions | + +-------------------------------+----------------------------------+ + | :py:class:`.PerlPackage` | Specialized class for | + | | :py:class:`.Perl` extensions | + +-------------------------------+----------------------------------+ .. note:: diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 85d881a7690..73963b848c6 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -165,6 +165,7 @@ from spack.build_systems.makefile import MakefilePackage from spack.build_systems.autotools import AutotoolsPackage from spack.build_systems.cmake import CMakePackage +from spack.build_systems.waf import WafPackage from spack.build_systems.python import PythonPackage from spack.build_systems.r import RPackage from spack.build_systems.perl import PerlPackage @@ -174,12 +175,13 @@ 'run_after', 'on_package_attributes', 'Package', - 'CMakePackage', - 'AutotoolsPackage', 'MakefilePackage', + 'AutotoolsPackage', + 'CMakePackage', + 'WafPackage', 'PythonPackage', 'RPackage', - 'PerlPackage' + 'PerlPackage', ] from spack.version import Version, ver diff --git a/lib/spack/spack/build_systems/waf.py b/lib/spack/spack/build_systems/waf.py new file mode 100644 index 00000000000..bb4fa6c3694 --- /dev/null +++ b/lib/spack/spack/build_systems/waf.py @@ -0,0 +1,148 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 inspect + +from spack.directives import depends_on +from spack.package import PackageBase, run_after + +from llnl.util.filesystem import working_dir + + +class WafPackage(PackageBase): + """Specialized class for packages that are built using the + Waf build system. See https://waf.io/book/ for more information. + + This class provides the following phases that can be overridden: + + * configure + * build + * install + + These are all standard Waf commands and can be found by running: + + .. code-block:: console + + $ python waf --help + + Each phase provides a function that runs: + + .. code-block:: console + + $ python waf -j + + where is the number of parallel jobs to build with. Each phase + also has a function that can pass arguments to this call. + All of these functions are empty except for the ``configure_args`` + function, which passes ``--prefix=/path/to/installation/prefix``. + """ + # Default phases + phases = ['configure', 'build', 'install'] + + # To be used in UI queries that require to know which + # build-system class we are using + build_system_class = 'WafPackage' + + # Callback names for build-time test + build_time_test_callbacks = ['test'] + + # Callback names for install-time test + install_time_test_callbacks = ['installtest'] + + # Much like AutotoolsPackage does not require automake and autoconf + # to build, WafPackage does not require waf to build. It only requires + # python to run the waf build script. + depends_on('python@2.5:', type='build') + + @property + def build_directory(self): + """The directory containing the ``waf`` file.""" + return self.stage.source_path + + def python(self, *args, **kwargs): + """The python ``Executable``.""" + inspect.getmodule(self).python(*args, **kwargs) + + def waf(self, *args, **kwargs): + """Runs the waf ``Executable``.""" + jobs = inspect.getmodule(self).make_jobs + + with working_dir(self.build_directory): + self.python('waf', '-j{0}'.format(jobs), *args, **kwargs) + + def configure(self, spec, prefix): + """Configures the project.""" + args = self.configure_args(spec, prefix) + + self.waf('configure', *args) + + def configure_args(self, spec, prefix): + """Arguments to pass to configure.""" + return ['--prefix={0}'.format(prefix)] + + def build(self, spec, prefix): + """Executes the build.""" + args = self.build_args(spec, prefix) + + self.waf('build', *args) + + def build_args(self, spec, prefix): + """Arguments to pass to build.""" + return [] + + def install(self, spec, prefix): + """Installs the targets on the system.""" + args = self.install_args(spec, prefix) + + self.waf('install', *args) + + def install_args(self, spec, prefix): + """Arguments to pass to install.""" + return [] + + # Testing + + def test(self): + """Run unit tests after build. + + By default, does nothing. Override this if you want to + add package-specific tests. + """ + pass + + run_after('build')(PackageBase._run_default_build_time_test_callbacks) + + def installtest(self): + """Run unit tests after install. + + By default, does nothing. Override this if you want to + add package-specific tests. + """ + pass + + run_after('install')(PackageBase._run_default_install_time_test_callbacks) + + # Check that self.prefix is there after installation + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/cmd/build.py b/lib/spack/spack/cmd/build.py index 90157a85aff..877f2ce0cfc 100644 --- a/lib/spack/spack/cmd/build.py +++ b/lib/spack/spack/cmd/build.py @@ -29,10 +29,11 @@ description = 'stops at build stage when installing a package, if possible' build_system_to_phase = { - CMakePackage: 'build', AutotoolsPackage: 'build', + CMakePackage: 'build', + WafPackage: 'build', PythonPackage: 'build', - PerlPackage: 'build' + PerlPackage: 'build', } diff --git a/lib/spack/spack/cmd/configure.py b/lib/spack/spack/cmd/configure.py index 037705f4800..7f6c07c34b7 100644 --- a/lib/spack/spack/cmd/configure.py +++ b/lib/spack/spack/cmd/configure.py @@ -34,9 +34,10 @@ build_system_to_phase = { - CMakePackage: 'cmake', AutotoolsPackage: 'configure', - PerlPackage: 'configure' + CMakePackage: 'cmake', + WafPackage: 'configure', + PerlPackage: 'configure', } diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 504ac9d8447..adaf388387b 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -204,6 +204,16 @@ def install(self, spec, prefix): scons('install')""" +class WafPackageTemplate(PackageTemplate): + """Provides appropriate override for Waf-based packages""" + + base_class_name = 'WafPackage' + + body = """\ + # FIXME: Override configure_args(), build_args(), + # or install_args() if necessary.""" + + class BazelPackageTemplate(PackageTemplate): """Provides appropriate overrides for Bazel-based packages""" @@ -347,6 +357,7 @@ def edit(self, spec, prefix): 'autoreconf': AutoreconfPackageTemplate, 'cmake': CMakePackageTemplate, 'scons': SconsPackageTemplate, + 'waf': WafPackageTemplate, 'bazel': BazelPackageTemplate, 'python': PythonPackageTemplate, 'r': RPackageTemplate, @@ -354,7 +365,7 @@ def edit(self, spec, prefix): 'perlbuild': PerlbuildPackageTemplate, 'octave': OctavePackageTemplate, 'makefile': MakefilePackageTemplate, - 'generic': PackageTemplate + 'generic': PackageTemplate, } @@ -413,6 +424,7 @@ def __call__(self, stage, url): ('/Makefile.am$', 'autoreconf'), ('/CMakeLists.txt$', 'cmake'), ('/SConstruct$', 'scons'), + ('/waf$', 'waf'), ('/setup.py$', 'python'), ('/NAMESPACE$', 'r'), ('/WORKSPACE$', 'bazel'), diff --git a/lib/spack/spack/test/build_system_guess.py b/lib/spack/spack/test/build_system_guess.py index 9ea76e7bfc7..73b619cb225 100644 --- a/lib/spack/spack/test/build_system_guess.py +++ b/lib/spack/spack/test/build_system_guess.py @@ -35,6 +35,7 @@ ('configure', 'autotools'), ('CMakeLists.txt', 'cmake'), ('SConstruct', 'scons'), + ('waf', 'waf'), ('setup.py', 'python'), ('NAMESPACE', 'r'), ('WORKSPACE', 'bazel'), diff --git a/var/spack/repos/builtin/packages/py-py2cairo/package.py b/var/spack/repos/builtin/packages/py-py2cairo/package.py index 5626784e341..2eacf540c94 100644 --- a/var/spack/repos/builtin/packages/py-py2cairo/package.py +++ b/var/spack/repos/builtin/packages/py-py2cairo/package.py @@ -25,7 +25,7 @@ from spack import * -class PyPy2cairo(Package): +class PyPy2cairo(WafPackage): """Pycairo is a set of Python bindings for the cairo graphics library.""" homepage = "https://www.cairographics.org/pycairo/" @@ -35,10 +35,15 @@ class PyPy2cairo(Package): extends('python') - depends_on('cairo') + depends_on('python', type=('build', 'run')) + depends_on('cairo@1.10.0:') depends_on('pixman') + depends_on('pkg-config', type='build') - def install(self, spec, prefix): - python('waf', 'configure', '--prefix={0}'.format(prefix)) - python('waf', 'build') - python('waf', 'install') + # TODO: Add a 'test' deptype + # depends_on('py-pytest', type='test') + + def installtest(self): + with working_dir('test'): + pytest = which('py.test') + pytest() diff --git a/var/spack/repos/builtin/packages/tut/package.py b/var/spack/repos/builtin/packages/tut/package.py index 9b135e0964d..6c6c6bdb27d 100644 --- a/var/spack/repos/builtin/packages/tut/package.py +++ b/var/spack/repos/builtin/packages/tut/package.py @@ -25,7 +25,7 @@ from spack import * -class Tut(Package): +class Tut(WafPackage): """TUT is a small and portable unit test framework for C++.""" homepage = "http://mrzechonek.github.io/tut-framework/" @@ -33,9 +33,11 @@ class Tut(Package): version('2016-12-19', '8b1967fa295ae1ce4d4431c2f811e521') - extends('python') + def build_args(self, spec, prefix): + args = [] - def install(self, spec, prefix): - python('waf', 'configure', '--prefix={0}'.format(prefix)) - python('waf', 'build') - python('waf', 'install') + if self.run_tests: + # Run unit tests + args.append('--test') + + return args From f60134cdb1c72ce247a8891eb60a56911cd6fc2e Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 1 May 2017 17:53:51 +0200 Subject: [PATCH 0804/2394] namespace_trie: ported to pytest (#4060) --- lib/spack/spack/test/namespace_trie.py | 122 +++++++++++++------------ 1 file changed, 63 insertions(+), 59 deletions(-) diff --git a/lib/spack/spack/test/namespace_trie.py b/lib/spack/spack/test/namespace_trie.py index 7927fc8e604..35ded3b7ee3 100644 --- a/lib/spack/spack/test/namespace_trie.py +++ b/lib/spack/spack/test/namespace_trie.py @@ -22,88 +22,92 @@ # 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 unittest +import pytest -from spack.util.naming import NamespaceTrie +import spack.util.naming -class NamespaceTrieTest(unittest.TestCase): +@pytest.fixture() +def trie(): + return spack.util.naming.NamespaceTrie() - def setUp(self): - self.trie = NamespaceTrie() - def test_add_single(self): - self.trie['foo'] = 'bar' +def test_add_single(trie): + trie['foo'] = 'bar' - self.assertTrue(self.trie.is_prefix('foo')) - self.assertTrue(self.trie.has_value('foo')) - self.assertEqual(self.trie['foo'], 'bar') + assert trie.is_prefix('foo') + assert trie.has_value('foo') + assert trie['foo'] == 'bar' - def test_add_multiple(self): - self.trie['foo.bar'] = 'baz' - self.assertFalse(self.trie.has_value('foo')) - self.assertTrue(self.trie.is_prefix('foo')) +def test_add_multiple(trie): + trie['foo.bar'] = 'baz' - self.assertTrue(self.trie.is_prefix('foo.bar')) - self.assertTrue(self.trie.has_value('foo.bar')) - self.assertEqual(self.trie['foo.bar'], 'baz') + assert not trie.has_value('foo') + assert trie.is_prefix('foo') - self.assertFalse(self.trie.is_prefix('foo.bar.baz')) - self.assertFalse(self.trie.has_value('foo.bar.baz')) + assert trie.is_prefix('foo.bar') + assert trie.has_value('foo.bar') + assert trie['foo.bar'] == 'baz' - def test_add_three(self): - # add a three-level namespace - self.trie['foo.bar.baz'] = 'quux' + assert not trie.is_prefix('foo.bar.baz') + assert not trie.has_value('foo.bar.baz') - self.assertTrue(self.trie.is_prefix('foo')) - self.assertFalse(self.trie.has_value('foo')) - self.assertTrue(self.trie.is_prefix('foo.bar')) - self.assertFalse(self.trie.has_value('foo.bar')) +def test_add_three(trie): + # add a three-level namespace + trie['foo.bar.baz'] = 'quux' - self.assertTrue(self.trie.is_prefix('foo.bar.baz')) - self.assertTrue(self.trie.has_value('foo.bar.baz')) - self.assertEqual(self.trie['foo.bar.baz'], 'quux') + assert trie.is_prefix('foo') + assert not trie.has_value('foo') - self.assertFalse(self.trie.is_prefix('foo.bar.baz.quux')) - self.assertFalse(self.trie.has_value('foo.bar.baz.quux')) + assert trie.is_prefix('foo.bar') + assert not trie.has_value('foo.bar') - # Try to add a second element in a prefix namespace - self.trie['foo.bar'] = 'blah' + assert trie.is_prefix('foo.bar.baz') + assert trie.has_value('foo.bar.baz') + assert trie['foo.bar.baz'] == 'quux' - self.assertTrue(self.trie.is_prefix('foo')) - self.assertFalse(self.trie.has_value('foo')) + assert not trie.is_prefix('foo.bar.baz.quux') + assert not trie.has_value('foo.bar.baz.quux') - self.assertTrue(self.trie.is_prefix('foo.bar')) - self.assertTrue(self.trie.has_value('foo.bar')) - self.assertEqual(self.trie['foo.bar'], 'blah') + # Try to add a second element in a prefix namespace + trie['foo.bar'] = 'blah' - self.assertTrue(self.trie.is_prefix('foo.bar.baz')) - self.assertTrue(self.trie.has_value('foo.bar.baz')) - self.assertEqual(self.trie['foo.bar.baz'], 'quux') + assert trie.is_prefix('foo') + assert not trie.has_value('foo') - self.assertFalse(self.trie.is_prefix('foo.bar.baz.quux')) - self.assertFalse(self.trie.has_value('foo.bar.baz.quux')) + assert trie.is_prefix('foo.bar') + assert trie.has_value('foo.bar') + assert trie['foo.bar'] == 'blah' - def test_add_none_single(self): - self.trie['foo'] = None - self.assertTrue(self.trie.is_prefix('foo')) - self.assertTrue(self.trie.has_value('foo')) - self.assertEqual(self.trie['foo'], None) + assert trie.is_prefix('foo.bar.baz') + assert trie.has_value('foo.bar.baz') + assert trie['foo.bar.baz'] == 'quux' - self.assertFalse(self.trie.is_prefix('foo.bar')) - self.assertFalse(self.trie.has_value('foo.bar')) + assert not trie.is_prefix('foo.bar.baz.quux') + assert not trie.has_value('foo.bar.baz.quux') - def test_add_none_multiple(self): - self.trie['foo.bar'] = None - self.assertTrue(self.trie.is_prefix('foo')) - self.assertFalse(self.trie.has_value('foo')) +def test_add_none_single(trie): + trie['foo'] = None + assert trie.is_prefix('foo') + assert trie.has_value('foo') + assert trie['foo'] is None - self.assertTrue(self.trie.is_prefix('foo.bar')) - self.assertTrue(self.trie.has_value('foo.bar')) - self.assertEqual(self.trie['foo.bar'], None) + assert not trie.is_prefix('foo.bar') + assert not trie.has_value('foo.bar') - self.assertFalse(self.trie.is_prefix('foo.bar.baz')) - self.assertFalse(self.trie.has_value('foo.bar.baz')) + +def test_add_none_multiple(trie): + trie['foo.bar'] = None + + assert trie.is_prefix('foo') + assert not trie.has_value('foo') + + assert trie.is_prefix('foo.bar') + assert trie.has_value('foo.bar') + assert trie['foo.bar'] is None + + assert not trie.is_prefix('foo.bar.baz') + assert not trie.has_value('foo.bar.baz') From aa9da358b53fd414a501ca8ecfaf063395ff3ad4 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 1 May 2017 17:57:49 +0200 Subject: [PATCH 0805/2394] url_parse: ported to pytest (#3430) --- lib/spack/spack/test/url_parse.py | 1018 ++++++++++------------------- 1 file changed, 358 insertions(+), 660 deletions(-) diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index effbb4b2c45..cf6f262fdf1 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -23,709 +23,407 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## """Tests Spack's ability to parse the name and version of a package -based on its URL.""" +based on its URL. +""" import os -import unittest +import pytest from spack.url import * -class UrlStripVersionSuffixesTest(unittest.TestCase): - """Tests for spack.url.strip_version_suffixes""" - - def check(self, before, after): - stripped = strip_version_suffixes(before) - self.assertEqual(stripped, after) - - def test_no_suffix(self): - self.check('rgb-1.0.6', - 'rgb-1.0.6') - - def test_misleading_prefix(self): - self.check('jpegsrc.v9b', - 'jpegsrc.v9b') - self.check('turbolinux702', - 'turbolinux702') - self.check('converge_install_2.3.16', - 'converge_install_2.3.16') - - # Download type - - def test_src(self): - self.check('apache-ant-1.9.7-src', - 'apache-ant-1.9.7') - self.check('go1.7.4.src', - 'go1.7.4') - - def test_source(self): - self.check('bowtie2-2.2.5-source', - 'bowtie2-2.2.5') - self.check('grib_api-1.17.0-Source', - 'grib_api-1.17.0') - - def test_full(self): - self.check('julia-0.4.3-full', - 'julia-0.4.3') - - def test_bin(self): - self.check('apache-maven-3.3.9-bin', - 'apache-maven-3.3.9') - - def test_binary(self): - self.check('Jmol-14.8.0-binary', - 'Jmol-14.8.0') - - def test_gem(self): - self.check('rubysl-date-2.0.9.gem', - 'rubysl-date-2.0.9') - - def test_tar(self): - self.check('gromacs-4.6.1-tar', - 'gromacs-4.6.1') - - def test_sh(self): - self.check('Miniconda2-4.3.11-Linux-x86_64.sh', - 'Miniconda2-4.3.11') - - # Download version - - def test_stable(self): - self.check('libevent-2.0.21-stable', - 'libevent-2.0.21') - - def test_final(self): - self.check('2.6.7-final', - '2.6.7') - - def test_rel(self): - self.check('v1.9.5.1rel', - 'v1.9.5.1') - - def test_orig(self): - self.check('dash_0.5.5.1.orig', - 'dash_0.5.5.1') - - def test_plus(self): - self.check('ncbi-blast-2.6.0+-src', - 'ncbi-blast-2.6.0') - +@pytest.mark.parametrize('url,expected', [ + # No suffix + ('rgb-1.0.6', 'rgb-1.0.6'), + # Misleading prefix + ('jpegsrc.v9b', 'jpegsrc.v9b'), + ('turbolinux702', 'turbolinux702'), + ('converge_install_2.3.16', 'converge_install_2.3.16'), + # Download type - src + ('apache-ant-1.9.7-src', 'apache-ant-1.9.7'), + ('go1.7.4.src', 'go1.7.4'), + # Download type - source + ('bowtie2-2.2.5-source', 'bowtie2-2.2.5'), + ('grib_api-1.17.0-Source', 'grib_api-1.17.0'), + # Download type - full + ('julia-0.4.3-full', 'julia-0.4.3'), + # Download type - bin + ('apache-maven-3.3.9-bin', 'apache-maven-3.3.9'), + # Download type - binary + ('Jmol-14.8.0-binary', 'Jmol-14.8.0'), + # Download type - gem + ('rubysl-date-2.0.9.gem', 'rubysl-date-2.0.9'), + # Download type - tar + ('gromacs-4.6.1-tar', 'gromacs-4.6.1'), + # Download type - sh + ('Miniconda2-4.3.11-Linux-x86_64.sh', 'Miniconda2-4.3.11'), + # Download version - stable + ('libevent-2.0.21-stable', 'libevent-2.0.21'), + # Download version - final + ('2.6.7-final', '2.6.7'), + # Download version - rel + ('v1.9.5.1rel', 'v1.9.5.1'), + # Download version - orig + ('dash_0.5.5.1.orig', 'dash_0.5.5.1'), + # Download version - plus + ('ncbi-blast-2.6.0+-src', 'ncbi-blast-2.6.0'), # License - - def test_gpl(self): - self.check('cppad-20170114.gpl', - 'cppad-20170114') - - # OS - - def test_linux(self): - self.check('astyle_2.04_linux', - 'astyle_2.04') - - def test_unix(self): - self.check('install-tl-unx', - 'install-tl') - - def test_macos(self): - self.check('astyle_1.23_macosx', - 'astyle_1.23') - self.check('haxe-2.08-osx', - 'haxe-2.08') - - # PyPI - - def test_wheel(self): - self.check('entrypoints-0.2.2-py2.py3-none-any.whl', - 'entrypoints-0.2.2') - self.check('numpy-1.12.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl', # noqa - 'numpy-1.12.0') - - def test_exe(self): - self.check('PyYAML-3.12.win-amd64-py3.5.exe', - 'PyYAML-3.12') - - # Combinations of multiple patterns - - def test_complex_all(self): - self.check('p7zip_9.04_src_all', - 'p7zip_9.04') - - def test_complex_run(self): - self.check('cuda_8.0.44_linux.run', - 'cuda_8.0.44') - - def test_complex_file(self): - self.check('ack-2.14-single-file', - 'ack-2.14') - - def test_complex_jar(self): - self.check('antlr-3.4-complete.jar', - 'antlr-3.4') - - def test_complex_oss(self): - self.check('tbb44_20160128oss_src_0', - 'tbb44_20160128') - - def test_complex_darwin(self): - self.check('ghc-7.0.4-x86_64-apple-darwin', - 'ghc-7.0.4') - self.check('ghc-7.0.4-i386-apple-darwin', - 'ghc-7.0.4') - - def test_complex_arch(self): - self.check('VizGlow_v2.2alpha17-R21November2016-Linux-x86_64-Install', - 'VizGlow_v2.2alpha17-R21November2016') - self.check('jdk-8u92-linux-x64', - 'jdk-8u92') - self.check('cuda_6.5.14_linux_64.run', - 'cuda_6.5.14') - - def test_complex_with(self): - self.check('mafft-7.221-with-extensions-src', - 'mafft-7.221') - self.check('spark-2.0.0-bin-without-hadoop', - 'spark-2.0.0') - - def test_complex_public(self): - self.check('dakota-6.3-public.src', - 'dakota-6.3') - - def test_complex_universal(self): - self.check('synergy-1.3.6p2-MacOSX-Universal', - 'synergy-1.3.6p2') + ('cppad-20170114.gpl', 'cppad-20170114'), + # OS - linux + ('astyle_2.04_linux', 'astyle_2.04'), + # OS - unix + ('install-tl-unx', 'install-tl'), + # OS - macos + ('astyle_1.23_macosx', 'astyle_1.23'), + ('haxe-2.08-osx', 'haxe-2.08'), + # PyPI - wheel + ('entrypoints-0.2.2-py2.py3-none-any.whl', 'entrypoints-0.2.2'), + ('numpy-1.12.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl', 'numpy-1.12.0'), # noqa + # PyPI - exe + ('PyYAML-3.12.win-amd64-py3.5.exe', 'PyYAML-3.12'), + # Combinations of multiple patterns - all + ('p7zip_9.04_src_all', 'p7zip_9.04'), + # Combinations of multiple patterns - run + ('cuda_8.0.44_linux.run', 'cuda_8.0.44'), + # Combinations of multiple patterns - file + ('ack-2.14-single-file', 'ack-2.14'), + # Combinations of multiple patterns - jar + ('antlr-3.4-complete.jar', 'antlr-3.4'), + # Combinations of multiple patterns - oss + ('tbb44_20160128oss_src_0', 'tbb44_20160128'), + # Combinations of multiple patterns - darwin + ('ghc-7.0.4-x86_64-apple-darwin', 'ghc-7.0.4'), + ('ghc-7.0.4-i386-apple-darwin', 'ghc-7.0.4'), + # Combinations of multiple patterns - arch + ('VizGlow_v2.2alpha17-R21November2016-Linux-x86_64-Install', + 'VizGlow_v2.2alpha17-R21November2016'), + ('jdk-8u92-linux-x64', 'jdk-8u92'), + ('cuda_6.5.14_linux_64.run', 'cuda_6.5.14'), + # Combinations of multiple patterns - with + ('mafft-7.221-with-extensions-src', 'mafft-7.221'), + ('spark-2.0.0-bin-without-hadoop', 'spark-2.0.0'), + # Combinations of multiple patterns - public + ('dakota-6.3-public.src', 'dakota-6.3'), + # Combinations of multiple patterns - universal + ('synergy-1.3.6p2-MacOSX-Universal', 'synergy-1.3.6p2') +]) +def test_url_strip_version_suffixes(url, expected): + stripped = strip_version_suffixes(url) + assert stripped == expected -class UrlStripNameSuffixesTest(unittest.TestCase): - """Tests for spack.url.strip_name_suffixes""" - - def check(self, before, version, after): - stripped = strip_name_suffixes(before, version) - self.assertEqual(stripped, after) - - def test_no_suffix(self): - self.check('rgb-1.0.6', '1.0.6', - 'rgb') - self.check('nauty26r7', '26r7', - 'nauty') - - # Download type - - def test_install(self): - self.check('converge_install_2.3.16', '2.3.16', - 'converge') - - def test_src(self): - self.check('jpegsrc.v9b', '9b', - 'jpeg') - - def test_std(self): - self.check('ghostscript-fonts-std-8.11', '8.11', - 'ghostscript-fonts') - - # Download version - - def test_release(self): - self.check('cbench_release_1.3.0.tar.gz', '1.3.0', - 'cbench') - - def test_snapshot(self): - self.check('gts-snapshot-121130', '121130', - 'gts') - - def test_distrib(self): - self.check('zoltan_distrib_v3.83', '3.83', - 'zoltan') - - # VCS - - def test_bazaar(self): - self.check('libvterm-0+bzr681', '681', - 'libvterm') - - # License - - def test_gpl(self): - self.check('PyQt-x11-gpl-4.11.3', '4.11.3', - 'PyQt-x11') +@pytest.mark.parametrize('url,version,expected', [ + # No suffix + ('rgb-1.0.6', '1.0.6', 'rgb'), + ('nauty26r7', '26r7', 'nauty'), + # Download type - install + ('converge_install_2.3.16', '2.3.16', 'converge'), + # Download type - src + ('jpegsrc.v9b', '9b', 'jpeg'), + # Download type - std + ('ghostscript-fonts-std-8.11', '8.11', 'ghostscript-fonts'), + # Download version - release + ('cbench_release_1.3.0.tar.gz', '1.3.0', 'cbench'), + # Download version - snapshot + ('gts-snapshot-121130', '121130', 'gts'), + # Download version - distrib + ('zoltan_distrib_v3.83', '3.83', 'zoltan'), + # VCS - bazaar + ('libvterm-0+bzr681', '681', 'libvterm'), + # License - gpl + ('PyQt-x11-gpl-4.11.3', '4.11.3', 'PyQt-x11') +]) +def test_url_strip_name_suffixes(url, version, expected): + stripped = strip_name_suffixes(url, version) + assert stripped == expected -class UrlParseOffsetTest(unittest.TestCase): +@pytest.mark.parametrize('name,noffset,ver,voffset,path', [ + # Name in path + ('antlr', 25, '2.7.7', 40, 'https://github.com/antlr/antlr/tarball/v2.7.7'), + # Name in stem + ('gmp', 32, '6.0.0a', 36, 'https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2'), + # Name in suffix - def check(self, name, noffset, ver, voffset, path): - # Make sure parse_name_offset and parse_name_version are working - v, vstart, vlen, vi, vre = parse_version_offset(path) - n, nstart, nlen, ni, nre = parse_name_offset(path, v) + # Don't think I've ever seen one of these before + # We don't look for it, so it would probably fail anyway - self.assertEqual(n, name) - self.assertEqual(v, ver) - self.assertEqual(nstart, noffset) - self.assertEqual(vstart, voffset) + # Version in path + ('nextflow', 31, '0.20.1', 59, 'https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow'), + # Version in stem + ('zlib', 24, '1.2.10', 29, 'http://zlib.net/fossils/zlib-1.2.10.tar.gz'), + ('slepc', 51, '3.6.2', 57, 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz'), + ('cloog', 61, '0.18.1', 67, 'http://www.bastoul.net/cloog/pages/download/count.php3?url=./cloog-0.18.1.tar.gz'), + ('libxc', 58, '2.2.2', 64, 'http://www.tddft.org/programs/octopus/down.php?file=libxc/libxc-2.2.2.tar.gz'), + # Version in suffix + ('swiftsim', 36, '0.3.0', 76, 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0'), + ('sionlib', 30, '1.7.1', 59, 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1'), + # Regex in name + ('voro++', 40, '0.4.6', 47, 'http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz'), +]) +def test_url_parse_offset(name, noffset, ver, voffset, path): + """Tests that the name, version and offsets are computed correctly. - def test_name_in_path(self): - self.check( - 'antlr', 25, '2.7.7', 40, - 'https://github.com/antlr/antlr/tarball/v2.7.7') + Args: + name (str): expected name + noffset (int): name offset + ver (str): expected version + voffset (int): version offset + path (str): url to be parsed + """ + # Make sure parse_name_offset and parse_name_version are working + v, vstart, vlen, vi, vre = parse_version_offset(path) + n, nstart, nlen, ni, nre = parse_name_offset(path, v) - def test_name_in_stem(self): - self.check( - 'gmp', 32, '6.0.0a', 36, - 'https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2') - - def test_name_in_suffix(self): - # Don't think I've ever seen one of these before - # We don't look for it, so it would probably fail anyway - pass - - def test_version_in_path(self): - self.check( - 'nextflow', 31, '0.20.1', 59, - 'https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow') - - def test_version_in_stem(self): - self.check( - 'zlib', 24, '1.2.10', 29, - 'http://zlib.net/fossils/zlib-1.2.10.tar.gz') - self.check( - 'slepc', 51, '3.6.2', 57, - 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz') - self.check( - 'cloog', 61, '0.18.1', 67, - 'http://www.bastoul.net/cloog/pages/download/count.php3?url=./cloog-0.18.1.tar.gz') - self.check( - 'libxc', 58, '2.2.2', 64, - 'http://www.tddft.org/programs/octopus/down.php?file=libxc/libxc-2.2.2.tar.gz') - - def test_version_in_suffix(self): - self.check( - 'swiftsim', 36, '0.3.0', 76, - 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0') - self.check( - 'sionlib', 30, '1.7.1', 59, - 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1') - - def test_regex_in_name(self): - self.check( - 'voro++', 40, '0.4.6', 47, - 'http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz') + assert n == name + assert v == ver + assert nstart == noffset + assert vstart == voffset -class UrlParseNameAndVersionTest(unittest.TestCase): +@pytest.mark.parametrize('name,version,url', [ + # Common Repositories - github downloads - def assert_not_detected(self, string): - self.assertRaises( - UndetectableVersionError, parse_name_and_version, string) + ('nco', '4.6.2', 'https://github.com/nco/nco/archive/4.6.2.tar.gz'), + # name/archive/vver.ver + ('vim', '8.0.0134', 'https://github.com/vim/vim/archive/v8.0.0134.tar.gz'), + # name/archive/name-ver.ver + ('oce', '0.18', 'https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz'), + # name/releases/download/vver/name-ver.ver + ('libmesh', '1.0.0', 'https://github.com/libMesh/libmesh/releases/download/v1.0.0/libmesh-1.0.0.tar.bz2'), + # name/tarball/vver.ver + ('git', '2.7.1', 'https://github.com/git/git/tarball/v2.7.1'), + # name/zipball/vver.ver + ('git', '2.7.1', 'https://github.com/git/git/zipball/v2.7.1'), + # Common Repositories - gitlab downloads - def check(self, name, v, string, **kwargs): - # Make sure correct name and version are extracted. - parsed_name, parsed_v = parse_name_and_version(string) - self.assertEqual(parsed_name, name) - self.assertEqual(parsed_v, Version(v)) + # name/repository/archive.ext?ref=vver.ver + ('swiftsim', '0.3.0', + 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0'), + # name/repository/archive.ext?ref=name-ver.ver + ('icet', '1.2.3', + 'https://gitlab.kitware.com/icet/icet/repository/archive.tar.gz?ref=IceT-1.2.3'), - # Make sure Spack formulates the right URL when we try to - # build one with a specific version. - self.assertEqual(string, substitute_version(string, v)) + # Common Repositories - bitbucket downloads - # Common Repositories + # name/get/ver.ver + ('eigen', '3.2.7', 'https://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2'), + # name/get/vver.ver + ('hoomd-blue', '1.3.3', + 'https://bitbucket.org/glotzer/hoomd-blue/get/v1.3.3.tar.bz2'), + # name/downloads/name-ver.ver + ('dolfin', '2016.1.0', + 'https://bitbucket.org/fenics-project/dolfin/downloads/dolfin-2016.1.0.tar.gz'), + # Common Repositories - sourceforge downloads - def test_github_downloads(self): - # name/archive/ver.ver - self.check( - 'nco', '4.6.2', - 'https://github.com/nco/nco/archive/4.6.2.tar.gz') - # name/archive/vver.ver - self.check( - 'vim', '8.0.0134', - 'https://github.com/vim/vim/archive/v8.0.0134.tar.gz') - # name/archive/name-ver.ver - self.check( - 'oce', '0.18', - 'https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz') - # name/releases/download/vver/name-ver.ver - self.check( - 'libmesh', '1.0.0', - 'https://github.com/libMesh/libmesh/releases/download/v1.0.0/libmesh-1.0.0.tar.bz2') - # name/tarball/vver.ver - self.check( - 'git', '2.7.1', - 'https://github.com/git/git/tarball/v2.7.1') - # name/zipball/vver.ver - self.check( - 'git', '2.7.1', - 'https://github.com/git/git/zipball/v2.7.1') + # name-ver.ver + ('libpng', '1.6.27', + 'http://download.sourceforge.net/libpng/libpng-1.6.27.tar.gz'), + ('lcms2', '2.6', + 'http://downloads.sourceforge.net/project/lcms/lcms/2.6/lcms2-2.6.tar.gz'), + ('modules', '3.2.10', + 'http://prdownloads.sourceforge.net/modules/modules-3.2.10.tar.gz'), + # name-ver.ver.ext/download + ('glew', '2.0.0', + 'https://sourceforge.net/projects/glew/files/glew/2.0.0/glew-2.0.0.tgz/download'), - def test_gitlab_downloads(self): - # name/repository/archive.ext?ref=vver.ver - self.check( - 'swiftsim', '0.3.0', - 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0') - # name/repository/archive.ext?ref=name-ver.ver - self.check( - 'icet', '1.2.3', - 'https://gitlab.kitware.com/icet/icet/repository/archive.tar.gz?ref=IceT-1.2.3') + # Common Repositories - cran downloads - def test_bitbucket_downloads(self): - # name/get/ver.ver - self.check( - 'eigen', '3.2.7', - 'https://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2') - # name/get/vver.ver - self.check( - 'hoomd-blue', '1.3.3', - 'https://bitbucket.org/glotzer/hoomd-blue/get/v1.3.3.tar.bz2') - # name/downloads/name-ver.ver - self.check( - 'dolfin', '2016.1.0', - 'https://bitbucket.org/fenics-project/dolfin/downloads/dolfin-2016.1.0.tar.gz') + # name.name_ver.ver-ver.ver + ('TH.data', '1.0-8', 'https://cran.r-project.org/src/contrib/TH.data_1.0-8.tar.gz'), + ('knitr', '1.14', 'https://cran.rstudio.com/src/contrib/knitr_1.14.tar.gz'), + ('devtools', '1.12.0', 'https://cloud.r-project.org/src/contrib/devtools_1.12.0.tar.gz'), - def test_sourceforge_downloads(self): - # name-ver.ver - self.check( - 'libpng', '1.6.27', - 'http://download.sourceforge.net/libpng/libpng-1.6.27.tar.gz') - self.check( - 'lcms2', '2.6', - 'http://downloads.sourceforge.net/project/lcms/lcms/2.6/lcms2-2.6.tar.gz') - self.check( - 'modules', '3.2.10', - 'http://prdownloads.sourceforge.net/modules/modules-3.2.10.tar.gz') - # name-ver.ver.ext/download - self.check( - 'glew', '2.0.0', - 'https://sourceforge.net/projects/glew/files/glew/2.0.0/glew-2.0.0.tgz/download') + # Common Repositories - pypi downloads - def test_cran_downloads(self): - # name.name_ver.ver-ver.ver - self.check( - 'TH.data', '1.0-8', - 'https://cran.r-project.org/src/contrib/TH.data_1.0-8.tar.gz') - self.check( - 'knitr', '1.14', - 'https://cran.rstudio.com/src/contrib/knitr_1.14.tar.gz') - self.check( - 'devtools', '1.12.0', - 'https://cloud.r-project.org/src/contrib/devtools_1.12.0.tar.gz') - - def test_pypi_downloads(self): - # name.name_name-ver.ver - self.check( - '3to2', '1.1.1', - 'https://pypi.python.org/packages/source/3/3to2/3to2-1.1.1.zip') - self.check( - 'mpmath', '0.19', - 'https://pypi.python.org/packages/source/m/mpmath/mpmath-all-0.19.tar.gz') - self.check( - 'pandas', '0.16.0', - 'https://pypi.python.org/packages/source/p/pandas/pandas-0.16.0.tar.gz#md5=bfe311f05dc0c351f8955fbd1e296e73') - self.check( - 'sphinx_rtd_theme', '0.1.10a0', - 'https://pypi.python.org/packages/da/6b/1b75f13d8aa3333f19c6cdf1f0bc9f52ea739cae464fbee050307c121857/sphinx_rtd_theme-0.1.10a0.tar.gz') - self.check( - 'backports.ssl_match_hostname', '3.5.0.1', - 'https://pypi.io/packages/source/b/backports.ssl_match_hostname/backports.ssl_match_hostname-3.5.0.1.tar.gz') - - def test_bazaar_downloads(self): - self.check( - 'libvterm', '681', - 'http://www.leonerd.org.uk/code/libvterm/libvterm-0+bzr681.tar.gz') + # name.name_name-ver.ver + ('3to2', '1.1.1', 'https://pypi.python.org/packages/source/3/3to2/3to2-1.1.1.zip'), + ('mpmath', '0.19', + 'https://pypi.python.org/packages/source/m/mpmath/mpmath-all-0.19.tar.gz'), + ('pandas', '0.16.0', + 'https://pypi.python.org/packages/source/p/pandas/pandas-0.16.0.tar.gz#md5=bfe311f05dc0c351f8955fbd1e296e73'), + ('sphinx_rtd_theme', '0.1.10a0', + 'https://pypi.python.org/packages/da/6b/1b75f13d8aa3333f19c6cdf1f0bc9f52ea739cae464fbee050307c121857/sphinx_rtd_theme-0.1.10a0.tar.gz'), + ('backports.ssl_match_hostname', '3.5.0.1', + 'https://pypi.io/packages/source/b/backports.ssl_match_hostname/backports.ssl_match_hostname-3.5.0.1.tar.gz'), + # Common Repositories - bazaar downloads + ('libvterm', '681', 'http://www.leonerd.org.uk/code/libvterm/libvterm-0+bzr681.tar.gz'), # Common Tarball Formats - def test_version_only(self): - # ver.ver - self.check( - 'eigen', '3.2.7', - 'https://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2') - # ver.ver-ver - self.check( - 'ImageMagick', '7.0.2-7', - 'https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz') - # vver.ver - self.check( - 'CGNS', '3.3.0', - 'https://github.com/CGNS/CGNS/archive/v3.3.0.tar.gz') - # vver_ver - self.check( - 'luafilesystem', '1_6_3', - 'https://github.com/keplerproject/luafilesystem/archive/v1_6_3.tar.gz') + # ver.ver + ('eigen', '3.2.7', 'https://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2'), + # ver.ver-ver + ('ImageMagick', '7.0.2-7', 'https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz'), + # vver.ver + ('CGNS', '3.3.0', 'https://github.com/CGNS/CGNS/archive/v3.3.0.tar.gz'), + # vver_ver + ('luafilesystem', '1_6_3', 'https://github.com/keplerproject/luafilesystem/archive/v1_6_3.tar.gz'), - def test_no_separators(self): - # namever - self.check( - 'turbolinux', '702', - 'file://{0}/turbolinux702.tar.gz'.format(os.getcwd())) - self.check( - 'nauty', '26r7', - 'http://pallini.di.uniroma1.it/nauty26r7.tar.gz') + # No separators + ('turbolinux', '702', 'file://{0}/turbolinux702.tar.gz'.format(os.getcwd())), + ('nauty', '26r7', 'http://pallini.di.uniroma1.it/nauty26r7.tar.gz'), + # Dashes only + ('Trilinos', '12-10-1', + 'https://github.com/trilinos/Trilinos/archive/trilinos-release-12-10-1.tar.gz'), + ('panda', '2016-03-07', + 'http://comopt.ifi.uni-heidelberg.de/software/PANDA/downloads/panda-2016-03-07.tar'), + ('gts', '121130', + 'http://gts.sourceforge.net/tarballs/gts-snapshot-121130.tar.gz'), + ('cdd', '061a', + 'http://www.cs.mcgill.ca/~fukuda/download/cdd/cdd-061a.tar.gz'), + # Only underscores + ('tinyxml', '2_6_2', + 'https://sourceforge.net/projects/tinyxml/files/tinyxml/2.6.2/tinyxml_2_6_2.tar.gz'), + ('boost', '1_55_0', + 'http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2'), + ('yorick', '2_2_04', + 'https://github.com/dhmunro/yorick/archive/y_2_2_04.tar.gz'), + ('tbb', '44_20160413', + 'https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb44_20160413oss_src.tgz'), - def test_dashes_only(self): - # name-name-ver-ver - self.check( - 'Trilinos', '12-10-1', - 'https://github.com/trilinos/Trilinos/archive/trilinos-release-12-10-1.tar.gz') - self.check( - 'panda', '2016-03-07', - 'http://comopt.ifi.uni-heidelberg.de/software/PANDA/downloads/panda-2016-03-07.tar') - self.check( - 'gts', '121130', - 'http://gts.sourceforge.net/tarballs/gts-snapshot-121130.tar.gz') - self.check( - 'cdd', '061a', - 'http://www.cs.mcgill.ca/~fukuda/download/cdd/cdd-061a.tar.gz') + # Only dots - def test_underscores_only(self): - # name_name_ver_ver - self.check( - 'tinyxml', '2_6_2', - 'https://sourceforge.net/projects/tinyxml/files/tinyxml/2.6.2/tinyxml_2_6_2.tar.gz') - self.check( - 'boost', '1_55_0', - 'http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2') - self.check( - 'yorick', '2_2_04', - 'https://github.com/dhmunro/yorick/archive/y_2_2_04.tar.gz') - # name_namever_ver - self.check( - 'tbb', '44_20160413', - 'https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb44_20160413oss_src.tgz') + # name.name.ver.ver + ('prank', '150803', 'http://wasabiapp.org/download/prank/prank.source.150803.tgz'), + ('jpeg', '9b', 'http://www.ijg.org/files/jpegsrc.v9b.tar.gz'), + ('openjpeg', '2.1', + 'https://github.com/uclouvain/openjpeg/archive/version.2.1.tar.gz'), + # name.namever.ver + ('atlas', '3.11.34', + 'http://sourceforge.net/projects/math-atlas/files/Developer%20%28unstable%29/3.11.34/atlas3.11.34.tar.bz2'), + ('visit', '2.10.1', 'http://portal.nersc.gov/project/visit/releases/2.10.1/visit2.10.1.tar.gz'), + ('geant', '4.10.01.p03', 'http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz'), + ('tcl', '8.6.5', 'http://prdownloads.sourceforge.net/tcl/tcl8.6.5-src.tar.gz'), - def test_dots_only(self): - # name.name.ver.ver - self.check( - 'prank', '150803', - 'http://wasabiapp.org/download/prank/prank.source.150803.tgz') - self.check( - 'jpeg', '9b', - 'http://www.ijg.org/files/jpegsrc.v9b.tar.gz') - self.check( - 'openjpeg', '2.1', - 'https://github.com/uclouvain/openjpeg/archive/version.2.1.tar.gz') - # name.namever.ver - self.check( - 'atlas', '3.11.34', - 'http://sourceforge.net/projects/math-atlas/files/Developer%20%28unstable%29/3.11.34/atlas3.11.34.tar.bz2') - self.check( - 'visit', '2.10.1', - 'http://portal.nersc.gov/project/visit/releases/2.10.1/visit2.10.1.tar.gz') - self.check( - 'geant', '4.10.01.p03', - 'http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz') - self.check( - 'tcl', '8.6.5', - 'http://prdownloads.sourceforge.net/tcl/tcl8.6.5-src.tar.gz') + # Dash and dots - def test_dash_dot(self): - # name-name-ver.ver - # digit in name - self.check( - 'm4', '1.4.17', - 'https://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz') - # letter in version - self.check( - 'gmp', '6.0.0a', - 'https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2') - # version starts with 'v' - self.check( - 'LaunchMON', '1.0.2', - 'https://github.com/LLNL/LaunchMON/releases/download/v1.0.2/launchmon-v1.0.2.tar.gz') - # name-ver-ver.ver - self.check( - 'libedit', '20150325-3.1', - 'http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz') + # name-name-ver.ver + # digit in name + ('m4', '1.4.17', 'https://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz'), + # letter in version + ('gmp', '6.0.0a', 'https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2'), + # version starts with 'v' + ('LaunchMON', '1.0.2', + 'https://github.com/LLNL/LaunchMON/releases/download/v1.0.2/launchmon-v1.0.2.tar.gz'), + # name-ver-ver.ver + ('libedit', '20150325-3.1', 'http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz'), - def test_dash_underscore(self): - # name-name-ver_ver - self.check( - 'icu4c', '57_1', - 'http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz') + # Dash and unserscores - def test_underscore_dot(self): - # name_name_ver.ver - self.check( - 'superlu_dist', '4.1', - 'http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz') - self.check( - 'pexsi', '0.9.0', - 'https://math.berkeley.edu/~linlin/pexsi/download/pexsi_v0.9.0.tar.gz') - # name_name.ver.ver - self.check( - 'fer', '696', - 'ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.v696.tar.gz') + # name-name-ver_ver + ('icu4c', '57_1', 'http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz'), - def test_dash_dot_dash_dot(self): - # name-name-ver.ver-ver.ver - self.check( - 'sowing', '1.1.23-p1', - 'http://ftp.mcs.anl.gov/pub/petsc/externalpackages/sowing-1.1.23-p1.tar.gz') - self.check( - 'bib2xhtml', '3.0-15-gf506', - 'http://www.spinellis.gr/sw/textproc/bib2xhtml/bib2xhtml-v3.0-15-gf506.tar.gz') - # namever.ver-ver.ver - self.check( - 'go', '1.4-bootstrap-20161024', - 'https://storage.googleapis.com/golang/go1.4-bootstrap-20161024.tar.gz') + # Underscores and dots - def test_underscore_dash_dot(self): - # name_name-ver.ver - self.check( - 'the_silver_searcher', '0.32.0', - 'http://geoff.greer.fm/ag/releases/the_silver_searcher-0.32.0.tar.gz') - self.check( - 'sphinx_rtd_theme', '0.1.10a0', - 'https://pypi.python.org/packages/source/s/sphinx_rtd_theme/sphinx_rtd_theme-0.1.10a0.tar.gz') + # name_name_ver.ver + ('superlu_dist', '4.1', 'http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz'), + ('pexsi', '0.9.0', 'https://math.berkeley.edu/~linlin/pexsi/download/pexsi_v0.9.0.tar.gz'), + # name_name.ver.ver + ('fer', '696', 'ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.v696.tar.gz'), - def test_dot_underscore_dot_dash_dot(self): - # name.name_ver.ver-ver.ver - self.check( - 'TH.data', '1.0-8', - 'https://cran.r-project.org/src/contrib/TH.data_1.0-8.tar.gz') - self.check( - 'XML', '3.98-1.4', - 'https://cran.r-project.org/src/contrib/XML_3.98-1.4.tar.gz') + # Dash dot dah dot - def test_dash_dot_underscore_dot(self): - # name-name-ver.ver_ver.ver - self.check( - 'pypar', '2.1.5_108', - 'https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pypar/pypar-2.1.5_108.tgz') - # name-namever.ver_ver.ver - self.check( - 'STAR-CCM+', '11.06.010_02', - 'file://{0}/STAR-CCM+11.06.010_02_linux-x86_64.tar.gz'.format(os.getcwd())) + # name-name-ver.ver-ver.ver + ('sowing', '1.1.23-p1', 'http://ftp.mcs.anl.gov/pub/petsc/externalpackages/sowing-1.1.23-p1.tar.gz'), + ('bib2xhtml', '3.0-15-gf506', 'http://www.spinellis.gr/sw/textproc/bib2xhtml/bib2xhtml-v3.0-15-gf506.tar.gz'), + # namever.ver-ver.ver + ('go', '1.4-bootstrap-20161024', 'https://storage.googleapis.com/golang/go1.4-bootstrap-20161024.tar.gz'), + + # Underscore dash dot + + # name_name-ver.ver + ('the_silver_searcher', '0.32.0', 'http://geoff.greer.fm/ag/releases/the_silver_searcher-0.32.0.tar.gz'), + ('sphinx_rtd_theme', '0.1.10a0', + 'https://pypi.python.org/packages/source/s/sphinx_rtd_theme/sphinx_rtd_theme-0.1.10a0.tar.gz'), + + # Dot underscore dot dash dot + + # name.name_ver.ver-ver.ver + ('TH.data', '1.0-8', 'https://cran.r-project.org/src/contrib/TH.data_1.0-8.tar.gz'), + ('XML', '3.98-1.4', 'https://cran.r-project.org/src/contrib/XML_3.98-1.4.tar.gz'), + + # Dash dot underscore dot + + # name-name-ver.ver_ver.ver + ('pypar', '2.1.5_108', + 'https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pypar/pypar-2.1.5_108.tgz'), + # name-namever.ver_ver.ver + ('STAR-CCM+', '11.06.010_02', + 'file://{0}/STAR-CCM+11.06.010_02_linux-x86_64.tar.gz'.format(os.getcwd())), # Weird URLS - def test_version_in_path(self): - # github.com/repo/name/releases/download/name-vver/name - self.check( - 'nextflow', '0.20.1', - 'https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow') + # github.com/repo/name/releases/download/name-vver/name + ('nextflow', '0.20.1', 'https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow'), + # suffix queries + ('swiftsim', '0.3.0', 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0'), + ('sionlib', '1.7.1', 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1'), + # stem queries + ('slepc', '3.6.2', 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz'), + ('otf', '1.12.5salmon', + 'http://wwwpub.zih.tu-dresden.de/%7Emlieber/dcount/dcount.php?package=otf&get=OTF-1.12.5salmon.tar.gz'), + # single character name + ('R', '3.3.2', 'https://cloud.r-project.org/src/base/R-3/R-3.3.2.tar.gz'), + # name starts with digit + ('3to2', '1.1.1', 'https://pypi.python.org/packages/source/3/3to2/3to2-1.1.1.zip'), + # plus in name + ('gtk+', '2.24.31', 'http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.31.tar.xz'), + ('voro++', '0.4.6', 'http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz'), + # Name comes before download.php + ('sionlib', '1.7.1', 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1'), + # Ignore download.php + ('slepc', '3.6.2', 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz'), + ('ScientificPython', '2.8.1', + 'https://sourcesup.renater.fr/frs/download.php/file/4411/ScientificPython-2.8.1.tar.gz'), + # gloox beta style + ('gloox', '1.0-beta7', 'http://camaya.net/download/gloox-1.0-beta7.tar.bz2'), + # sphinx beta style + ('sphinx', '1.10-beta', 'http://sphinxsearch.com/downloads/sphinx-1.10-beta.tar.gz'), + # ruby version style + ('ruby', '1.9.1-p243', 'ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz'), + # rc style + ('libvorbis', '1.2.2rc1', 'http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.2rc1.tar.bz2'), + # dash rc style + ('js', '1.8.0-rc1', 'http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz'), + # apache version style + ('apache-cassandra', '1.2.0-rc2', + 'http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz'), + # xaw3d version + ('Xaw3d', '1.5E', 'ftp://ftp.visi.com/users/hawkeyd/X/Xaw3d-1.5E.tar.gz'), + # fann version + ('fann', '2.1.0beta', 'http://downloads.sourceforge.net/project/fann/fann/2.1.0beta/fann-2.1.0beta.zip'), + # imap version + ('imap', '2007f', 'ftp://ftp.cac.washington.edu/imap/imap-2007f.tar.gz'), + # suite3270 version + ('suite3270', '3.3.12ga7', + 'http://sourceforge.net/projects/x3270/files/x3270/3.3.12ga7/suite3270-3.3.12ga7-src.tgz'), + # scalasca version + ('cube', '4.2.3', 'http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz'), + ('cube', '4.3-TP1', 'http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3-TP1.tar.gz'), + # github raw url + ('CLAMR', '2.0.7', 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true'), + # luaposix version + ('luaposix', '33.4.0', 'https://github.com/luaposix/luaposix/archive/release-v33.4.0.tar.gz'), + # nco version + ('nco', '4.6.2-beta03', 'https://github.com/nco/nco/archive/4.6.2-beta03.tar.gz'), + ('nco', '4.6.3-alpha04', 'https://github.com/nco/nco/archive/4.6.3-alpha04.tar.gz'), +]) +def test_url_parse_name_and_version(name, version, url): + # Make sure correct name and version are extracted. + parsed_name, parsed_version = parse_name_and_version(url) + assert parsed_name == name + assert parsed_version == Version(version) - def test_suffix_queries(self): - self.check( - 'swiftsim', '0.3.0', - 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0') - self.check( - 'sionlib', '1.7.1', - 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1') + # Make sure Spack formulates the right URL when we try to + # build one with a specific version. + assert url == substitute_version(url, version) - def test_stem_queries(self): - self.check( - 'slepc', '3.6.2', - 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz') - self.check( - 'otf', '1.12.5salmon', - 'http://wwwpub.zih.tu-dresden.de/%7Emlieber/dcount/dcount.php?package=otf&get=OTF-1.12.5salmon.tar.gz') - def test_single_character_name(self): - self.check( - 'R', '3.3.2', - 'https://cloud.r-project.org/src/base/R-3/R-3.3.2.tar.gz') - - def test_single_digit_version(self): - pass - - def test_name_starts_with_digit(self): - self.check( - '3to2', '1.1.1', - 'https://pypi.python.org/packages/source/3/3to2/3to2-1.1.1.zip') - - def plus_in_name(self): - self.check( - 'gtk+', '2.24.31', - 'http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.31.tar.xz') - self.check( - 'voro++', '0.4.6', - 'http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz') - - def test_no_version(self): - self.assert_not_detected('http://www.netlib.org/blas/blast-forum/cblas.tgz') - self.assert_not_detected('http://www.netlib.org/voronoi/triangle.zip') - - def test_download_php(self): - # Name comes before download.php - self.check( - 'sionlib', '1.7.1', - 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1') - # Ignore download.php - self.check( - 'slepc', '3.6.2', - 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz') - self.check( - 'ScientificPython', '2.8.1', - 'https://sourcesup.renater.fr/frs/download.php/file/4411/ScientificPython-2.8.1.tar.gz') - - def test_gloox_beta_style(self): - self.check( - 'gloox', '1.0-beta7', - 'http://camaya.net/download/gloox-1.0-beta7.tar.bz2') - - def test_sphinx_beta_style(self): - self.check( - 'sphinx', '1.10-beta', - 'http://sphinxsearch.com/downloads/sphinx-1.10-beta.tar.gz') - - def test_ruby_version_style(self): - self.check( - 'ruby', '1.9.1-p243', - 'ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz') - - def test_rc_style(self): - self.check( - 'libvorbis', '1.2.2rc1', - 'http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.2rc1.tar.bz2') - - def test_dash_rc_style(self): - self.check( - 'js', '1.8.0-rc1', - 'http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz') - - def test_apache_version_style(self): - self.check( - 'apache-cassandra', '1.2.0-rc2', - 'http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.0/apache-cassandra-1.2.0-rc2-bin.tar.gz') - - def test_xaw3d_version(self): - self.check( - 'Xaw3d', '1.5E', - 'ftp://ftp.visi.com/users/hawkeyd/X/Xaw3d-1.5E.tar.gz') - - def test_fann_version(self): - self.check( - 'fann', '2.1.0beta', - 'http://downloads.sourceforge.net/project/fann/fann/2.1.0beta/fann-2.1.0beta.zip') - - def test_imap_version(self): - self.check( - 'imap', '2007f', - 'ftp://ftp.cac.washington.edu/imap/imap-2007f.tar.gz') - - def test_suite3270_version(self): - self.check( - 'suite3270', '3.3.12ga7', - 'http://sourceforge.net/projects/x3270/files/x3270/3.3.12ga7/suite3270-3.3.12ga7-src.tgz') - - def test_scalasca_version(self): - self.check( - 'cube', '4.2.3', - 'http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz') - self.check( - 'cube', '4.3-TP1', - 'http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3-TP1.tar.gz') - - def test_github_raw_url(self): - self.check( - 'CLAMR', '2.0.7', - 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true') - - def test_luaposix_version(self): - self.check( - 'luaposix', '33.4.0', - 'https://github.com/luaposix/luaposix/archive/release-v33.4.0.tar.gz') - - def test_nco_version(self): - self.check( - 'nco', '4.6.2-beta03', - 'https://github.com/nco/nco/archive/4.6.2-beta03.tar.gz') - self.check( - 'nco', '4.6.3-alpha04', - 'https://github.com/nco/nco/archive/4.6.3-alpha04.tar.gz') +@pytest.mark.parametrize('not_detectable_url', [ + 'http://www.netlib.org/blas/blast-forum/cblas.tgz', + 'http://www.netlib.org/voronoi/triangle.zip', +]) +def test_no_version(not_detectable_url): + with pytest.raises(UndetectableVersionError): + parse_name_and_version(not_detectable_url) From 32dd20035fd12cad43398fef56918488ed402294 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 1 May 2017 11:53:16 -0700 Subject: [PATCH 0806/2394] Skip fetch tests for tools that are not installed. (#4059) This allows people on systems that don't have all the fetchers to still run Spack tests. Mark tests that require git, subversion, or mercurial to be skipped if they're not installed. --- lib/spack/spack/test/git_fetch.py | 5 +++ lib/spack/spack/test/hg_fetch.py | 5 +++ lib/spack/spack/test/mirror.py | 53 ++++++++++++++++++++----------- lib/spack/spack/test/svn_fetch.py | 5 +++ 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/lib/spack/spack/test/git_fetch.py b/lib/spack/spack/test/git_fetch.py index 34f74df84f7..093f0a70536 100644 --- a/lib/spack/spack/test/git_fetch.py +++ b/lib/spack/spack/test/git_fetch.py @@ -29,6 +29,11 @@ from llnl.util.filesystem import * from spack.spec import Spec from spack.version import ver +from spack.util.executable import which + + +pytestmark = pytest.mark.skipif( + not which('git'), reason='requires git to be installed') @pytest.mark.parametrize("type_of_test", ['master', 'branch', 'tag', 'commit']) diff --git a/lib/spack/spack/test/hg_fetch.py b/lib/spack/spack/test/hg_fetch.py index 96a23a1c53a..c0318c58ff1 100644 --- a/lib/spack/spack/test/hg_fetch.py +++ b/lib/spack/spack/test/hg_fetch.py @@ -29,6 +29,11 @@ from llnl.util.filesystem import * from spack.spec import Spec from spack.version import ver +from spack.util.executable import which + + +pytestmark = pytest.mark.skipif( + not which('hg'), reason='requires mercurial to be installed') @pytest.mark.parametrize("type_of_test", ['default', 'rev0']) diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py index e5e60e3045c..21dbb8f4f62 100644 --- a/lib/spack/spack/test/mirror.py +++ b/lib/spack/spack/test/mirror.py @@ -26,18 +26,20 @@ import os import pytest +from llnl.util.filesystem import join_path + import spack import spack.mirror import spack.util.executable -from llnl.util.filesystem import join_path from spack.spec import Spec from spack.stage import Stage +from spack.util.executable import which # paths in repos that shouldn't be in the mirror tarballs. exclude = ['.hg', '.git', '.svn'] + repos = {} -svn = spack.util.executable.which('svn', required=True) def set_up_package(name, repository, url_attr): @@ -95,13 +97,17 @@ def check_mirror(): # Stage the archive from the mirror and cd to it. spack.do_checksum = False pkg.do_stage(mirror_only=True) + # Compare the original repo with the expanded archive original_path = mock_repo.path if 'svn' in name: # have to check out the svn repo to compare. original_path = join_path( mock_repo.path, 'checked_out') + + svn = which('svn', required=True) svn('checkout', mock_repo.url, original_path) + dcmp = filecmp.dircmp(original_path, pkg.stage.source_path) # make sure there are no new files in the expanded # tarball @@ -113,33 +119,42 @@ def check_mirror(): @pytest.mark.usefixtures('config', 'refresh_builtin_mock') class TestMirror(object): - def test_git_mirror(self, mock_git_repository): - set_up_package('git-test', mock_git_repository, 'git') - check_mirror() - repos.clear() - - def test_svn_mirror(self, mock_svn_repository): - set_up_package('svn-test', mock_svn_repository, 'svn') - check_mirror() - repos.clear() - - def test_hg_mirror(self, mock_hg_repository): - set_up_package('hg-test', mock_hg_repository, 'hg') - check_mirror() - repos.clear() - def test_url_mirror(self, mock_archive): set_up_package('trivial-install-test-package', mock_archive, 'url') check_mirror() repos.clear() + @pytest.mark.skipif( + not which('git'), reason='requires git to be installed') + def test_git_mirror(self, mock_git_repository): + set_up_package('git-test', mock_git_repository, 'git') + check_mirror() + repos.clear() + + @pytest.mark.skipif( + not which('svn'), reason='requires subversion to be installed') + def test_svn_mirror(self, mock_svn_repository): + set_up_package('svn-test', mock_svn_repository, 'svn') + check_mirror() + repos.clear() + + @pytest.mark.skipif( + not which('hg'), reason='requires mercurial to be installed') + def test_hg_mirror(self, mock_hg_repository): + set_up_package('hg-test', mock_hg_repository, 'hg') + check_mirror() + repos.clear() + + @pytest.mark.skipif( + not all([which('svn'), which('hg'), which('git')]), + reason='requires subversion, git, and mercurial to be installed') def test_all_mirror( self, mock_git_repository, mock_svn_repository, mock_hg_repository, - mock_archive, - ): + mock_archive): + set_up_package('git-test', mock_git_repository, 'git') set_up_package('svn-test', mock_svn_repository, 'svn') set_up_package('hg-test', mock_hg_repository, 'hg') diff --git a/lib/spack/spack/test/svn_fetch.py b/lib/spack/spack/test/svn_fetch.py index 2ffedee7db2..1a7cc3ecd18 100644 --- a/lib/spack/spack/test/svn_fetch.py +++ b/lib/spack/spack/test/svn_fetch.py @@ -29,6 +29,11 @@ from llnl.util.filesystem import * from spack.spec import Spec from spack.version import ver +from spack.util.executable import which + + +pytestmark = pytest.mark.skipif( + not which('svn'), reason='requires subversion to be installed') @pytest.mark.parametrize("type_of_test", ['default', 'rev0']) From 5d0d670b724e7cb095c7b9c5c7c85578b607f839 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 1 May 2017 14:31:59 -0500 Subject: [PATCH 0807/2394] Add latest version of lcms (#4066) --- var/spack/repos/builtin/packages/lcms/package.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/lcms/package.py b/var/spack/repos/builtin/packages/lcms/package.py index ad85ebe0558..5025e68c4a7 100644 --- a/var/spack/repos/builtin/packages/lcms/package.py +++ b/var/spack/repos/builtin/packages/lcms/package.py @@ -30,10 +30,11 @@ class Lcms(AutotoolsPackage): transforms between ICC profiles. It is focused on speed, and is portable across several platforms (MIT license).""" homepage = "http://www.littlecms.com" - url = "http://downloads.sourceforge.net/project/lcms/lcms/2.6/lcms2-2.6.tar.gz" + url = "http://downloads.sourceforge.net/project/lcms/lcms/2.8/lcms2-2.8.tar.gz" + version('2.8', '87a5913f1a52464190bb655ad230539c') version('2.6', 'f4c08d38ceade4a664ebff7228910a33') - depends_on("jpeg") - depends_on("libtiff") - depends_on("zlib") + depends_on('jpeg') + depends_on('libtiff') + depends_on('zlib') From 9e4b0eb34a66927ca92df79dedc68d35c9fbd4ae Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 1 May 2017 22:08:47 +0200 Subject: [PATCH 0808/2394] Multi-valued variants (#2386) Modifications: - added support for multi-valued variants - refactored code related to variants into variant.py - added new generic features to AutotoolsPackage that leverage multi-valued variants - modified openmpi to use new features - added unit tests for the new semantics --- lib/spack/llnl/util/lang.py | 20 +- lib/spack/llnl/util/tty/__init__.py | 16 +- lib/spack/spack/build_systems/autotools.py | 45 ++ lib/spack/spack/cmd/info.py | 98 ++- lib/spack/spack/cmd/spec.py | 3 +- lib/spack/spack/concretize.py | 7 +- lib/spack/spack/directives.py | 36 +- lib/spack/spack/error.py | 15 + lib/spack/spack/spec.py | 233 +++---- lib/spack/spack/test/build_systems.py | 30 + lib/spack/spack/test/concretize.py | 2 +- lib/spack/spack/test/conftest.py | 2 +- lib/spack/spack/test/spec_semantics.py | 141 +++- lib/spack/spack/test/spec_yaml.py | 6 + lib/spack/spack/test/variant.py | 656 ++++++++++++++++++ lib/spack/spack/variant.py | 582 +++++++++++++++- .../repos/builtin.mock/packages/a/package.py | 32 +- .../packages/multivalue_variant/package.py | 57 ++ .../repos/builtin/packages/cdo/package.py | 3 +- .../builtin/packages/mvapich2/package.py | 274 +++----- .../repos/builtin/packages/netcdf/package.py | 26 +- .../repos/builtin/packages/openmpi/package.py | 111 ++- 22 files changed, 1959 insertions(+), 436 deletions(-) create mode 100644 lib/spack/spack/test/variant.py create mode 100644 var/spack/repos/builtin.mock/packages/multivalue_variant/package.py diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 4943c9df676..9821ec74169 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -266,10 +266,28 @@ def setter(name, value): @key_ordering -class HashableMap(dict): +class HashableMap(collections.MutableMapping): """This is a hashable, comparable dictionary. Hash is performed on a tuple of the values in the dictionary.""" + def __init__(self): + self.dict = {} + + def __getitem__(self, key): + return self.dict[key] + + def __setitem__(self, key, value): + self.dict[key] = value + + def __iter__(self): + return iter(self.dict) + + def __len__(self): + return len(self.dict) + + def __delitem__(self, key): + del self.dict[key] + def _cmp_key(self): return tuple(sorted(self.values())) diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index e5c3ba8110a..b28ac22c1fd 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -22,22 +22,22 @@ # 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 sys -import os -import textwrap import fcntl -import termios +import os import struct +import sys +import termios +import textwrap import traceback from six import StringIO from six.moves import input from llnl.util.tty.color import * -_debug = False +_debug = False _verbose = False _stacktrace = False -indent = " " +indent = " " def is_verbose(): @@ -100,7 +100,7 @@ def msg(message, *args, **kwargs): def info(message, *args, **kwargs): format = kwargs.get('format', '*b') stream = kwargs.get('stream', sys.stdout) - wrap = kwargs.get('wrap', False) + wrap = kwargs.get('wrap', False) break_long_words = kwargs.get('break_long_words', False) st_countback = kwargs.get('countback', 3) @@ -218,7 +218,7 @@ def hline(label=None, **kwargs): char (str): Char to draw the line with. Default '-' max_width (int): Maximum width of the line. Default is 64 chars. """ - char = kwargs.pop('char', '-') + char = kwargs.pop('char', '-') max_width = kwargs.pop('max_width', 64) if kwargs: raise TypeError( diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index ffd00e7f697..2e4c86ea3e6 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -289,6 +289,51 @@ def check(self): self._if_make_target_execute('test') self._if_make_target_execute('check') + def _activate_or_not(self, active, inactive, name, active_parameters=None): + spec = self.spec + args = [] + # For each allowed value in the list of values + for value in self.variants[name].values: + # Check if the value is active in the current spec + condition = '{name}={value}'.format(name=name, value=value) + activated = condition in spec + # Search for an override in the package for this value + override_name = '{0}_or_{1}_{2}'.format(active, inactive, value) + line_generator = getattr(self, override_name, None) + # If not available use a sensible default + if line_generator is None: + def _default_generator(is_activated): + if is_activated: + line = '--{0}-{1}'.format(active, value) + if active_parameters is not None and active_parameters(value): # NOQA=ignore=E501 + line += '={0}'.format(active_parameters(value)) + return line + return '--{0}-{1}'.format(inactive, value) + line_generator = _default_generator + args.append(line_generator(activated)) + return args + + def with_or_without(self, name, active_parameters=None): + """Inspects the multi-valued variant 'name' and returns the configure + arguments that activate / deactivate the selected feature. + + :param str name: name of a valid multi-valued variant + :param callable active_parameters: if present accepts a single value + and returns the parameter to be used leading to an entry of the + type '--with-{name}={parameter} + """ + return self._activate_or_not( + 'with', 'without', name, active_parameters + ) + + def enable_or_disable(self, name, active_parameters=None): + """Inspects the multi-valued variant 'name' and returns the configure + arguments that activate / deactivate the selected feature. + """ + return self._activate_or_not( + 'enable', 'disable', name, active_parameters + ) + run_after('install')(PackageBase._run_default_install_time_test_callbacks) def installcheck(self): diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 799471ffcce..86ec839b90e 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -25,7 +25,7 @@ from __future__ import print_function import textwrap - +import itertools from llnl.util.tty.colify import * import spack import spack.fetch_strategy as fs @@ -49,6 +49,81 @@ def setup_parser(subparser): 'name', metavar="PACKAGE", help="name of package to get info for") +class VariantFormatter(object): + def __init__(self, variants, max_widths=(25, 20, 35)): + self.variants = variants + self.headers = ('Name [Default]', 'Allowed values', 'Description') + # Set max headers lengths + self.max_column_widths = max_widths + + # Formats + fmt_name = '{0} [{1}]' + + # Initialize column widths with the length of the + # corresponding headers, as they cannot be shorter + # than that + self.column_widths = [len(x) for x in self.headers] + + # Update according to line lengths + for k, v in variants.items(): + candidate_max_widths = ( + len(fmt_name.format(k, self.default(v))), # Name [Default] + len(v.allowed_values), # Allowed values + len(v.description) # Description + ) + + self.column_widths = ( + max(self.column_widths[0], candidate_max_widths[0]), + max(self.column_widths[1], candidate_max_widths[1]), + max(self.column_widths[2], candidate_max_widths[2]) + ) + + # Reduce to at most the maximum allowed + self.column_widths = ( + min(self.column_widths[0], self.max_column_widths[0]), + min(self.column_widths[1], self.max_column_widths[1]), + min(self.column_widths[2], self.max_column_widths[2]) + ) + + # Compute the format + self.fmt = "%%-%ss%%-%ss%%s" % ( + self.column_widths[0] + 4, + self.column_widths[1] + 4 + ) + + def default(self, v): + s = 'on' if v.default is True else 'off' + if not isinstance(v.default, bool): + s = v.default + return s + + @property + def lines(self): + if not self.variants: + yield " None" + else: + yield " " + self.fmt % self.headers + yield '\n' + for k, v in sorted(self.variants.items()): + name = textwrap.wrap( + '{0} [{1}]'.format(k, self.default(v)), + width=self.column_widths[0] + ) + allowed = textwrap.wrap( + v.allowed_values, + width=self.column_widths[1] + ) + description = textwrap.wrap( + v.description, + width=self.column_widths[2] + ) + for t in itertools.izip_longest( + name, allowed, description, fillvalue='' + ): + yield " " + self.fmt % t + yield '' # Trigger a new line + + def print_text_info(pkg): """Print out a plain text description of a package.""" header = "{0}: ".format(pkg.build_system_class) @@ -70,25 +145,10 @@ def print_text_info(pkg): print() print("Variants:") - if not pkg.variants: - print(" None") - else: - pad = padder(pkg.variants, 4) - maxv = max(len(v) for v in sorted(pkg.variants)) - fmt = "%%-%ss%%-10s%%s" % (maxv + 4) - - print(" " + fmt % ('Name', 'Default', 'Description')) - print() - for name in sorted(pkg.variants): - v = pkg.variants[name] - default = 'on' if v.default else 'off' - - lines = textwrap.wrap(v.description) - lines[1:] = [" " + (" " * maxv) + l for l in lines[1:]] - desc = "\n".join(lines) - - print(" " + fmt % (name, default, desc)) + formatter = VariantFormatter(pkg.variants) + for line in formatter.lines: + print(line) print() print("Installation Phases:") diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index d89707f2300..2e917d2ee35 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -69,7 +69,8 @@ def spec(parser, args): for spec in spack.cmd.parse_specs(args.specs): # With -y, just print YAML to output. if args.yaml: - spec.concretize() + if spec.name in spack.repo: + spec.concretize() print(spec.to_yaml()) continue diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 5507b599ff3..d7f21e8c81f 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -245,14 +245,15 @@ def concretize_variants(self, spec): """ changed = False preferred_variants = PackagePrefs.preferred_variants(spec.name) - for name, variant in spec.package_class.variants.items(): + pkg_cls = spec.package_class + for name, variant in pkg_cls.variants.items(): if name not in spec.variants: changed = True if name in preferred_variants: spec.variants[name] = preferred_variants.get(name) else: - spec.variants[name] = spack.spec.VariantSpec( - name, variant.default) + spec.variants[name] = variant.make_default() + return changed def concretize_compiler(self, spec): diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 7a245f606c5..43ac71c6798 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -368,9 +368,37 @@ def _execute(pkg): @directive('variants') -def variant(name, default=False, description=""): +def variant( + name, + default=None, + description='', + values=(True, False), + multi=False, + validator=None +): """Define a variant for the package. Packager can specify a default - value (on or off) as well as a text description.""" + value as well as a text description. + + Args: + name (str): name of the variant + default (str or bool): default value for the variant, if not + specified otherwise the default will be False for a boolean + variant and 'nothing' for a multi-valued variant + description (str): description of the purpose of the variant + values (tuple or callable): either a tuple of strings containing the + allowed values, or a callable accepting one value and returning + True if it is valid + multi (bool): if False only one value per spec is allowed for + this variant + validator (callable): optional group validator to enforce additional + logic. It receives a tuple of values and should raise an instance + of SpackError if the group doesn't meet the additional constraints + """ + + if default is None: + default = False if values == (True, False) else '' + + default = default description = str(description).strip() def _execute(pkg): @@ -379,7 +407,9 @@ def _execute(pkg): msg = "Invalid variant name in {0}: '{1}'" raise DirectiveError(directive, msg.format(pkg.name, name)) - pkg.variants[name] = Variant(default, description) + pkg.variants[name] = Variant( + name, default, description, values, multi, validator + ) return _execute diff --git a/lib/spack/spack/error.py b/lib/spack/spack/error.py index cd1ae5b25c4..09969b2b41d 100644 --- a/lib/spack/spack/error.py +++ b/lib/spack/spack/error.py @@ -100,3 +100,18 @@ def __init__(self, message, url): "No network connection: " + str(message), "URL was: " + str(url)) self.url = url + + +class SpecError(SpackError): + """Superclass for all errors that occur while constructing specs.""" + + +class UnsatisfiableSpecError(SpecError): + """Raised when a spec conflicts with package constraints. + Provide the requirement that was violated when raising.""" + def __init__(self, provided, required, constraint_type): + super(UnsatisfiableSpecError, self).__init__( + "%s does not satisfy %s" % (provided, required)) + self.provided = provided + self.required = required + self.constraint_type = constraint_type diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 0d8fb2893b8..0cf392a7ced 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -121,12 +121,14 @@ from llnl.util.lang import * from llnl.util.tty.color import * from spack.build_environment import get_path_from_module, load_module +from spack.error import SpecError, UnsatisfiableSpecError from spack.provider_index import ProviderIndex from spack.util.crypto import prefix_bits from spack.util.executable import Executable from spack.util.prefix import Prefix from spack.util.spack_yaml import syaml_dict from spack.util.string import * +from spack.variant import * from spack.version import * from yaml.error import MarkedYAMLError @@ -606,81 +608,6 @@ def __str__(self): self.spec.name if self.spec else None) -@key_ordering -class VariantSpec(object): - """Variants are named, build-time options for a package. Names depend - on the particular package being built, and each named variant can - be enabled or disabled. - """ - - def __init__(self, name, value): - self.name = name - self.value = value - - def _cmp_key(self): - return (self.name, self.value) - - def copy(self): - return VariantSpec(self.name, self.value) - - def __str__(self): - if type(self.value) == bool: - return '{0}{1}'.format('+' if self.value else '~', self.name) - else: - return ' {0}={1} '.format(self.name, self.value) - - -class VariantMap(HashableMap): - - def __init__(self, spec): - super(VariantMap, self).__init__() - self.spec = spec - - def satisfies(self, other, strict=False): - if strict or self.spec._concrete: - return all(k in self and self[k].value == other[k].value - for k in other) - else: - return all(self[k].value == other[k].value - for k in other if k in self) - - def constrain(self, other): - """Add all variants in other that aren't in self to self. - - Raises an error if any common variants don't match. - Return whether the spec changed. - """ - if other.spec._concrete: - for k in self: - if k not in other: - raise UnsatisfiableVariantSpecError(self[k], '') - - changed = False - for k in other: - if k in self: - if self[k].value != other[k].value: - raise UnsatisfiableVariantSpecError(self[k], other[k]) - else: - self[k] = other[k].copy() - changed = True - return changed - - @property - def concrete(self): - return self.spec._concrete or all( - v in self for v in self.spec.package_class.variants) - - def copy(self): - clone = VariantMap(None) - for name, variant in self.items(): - clone[name] = variant.copy() - return clone - - def __str__(self): - sorted_keys = sorted(self.keys()) - return ''.join(str(self[key]) for key in sorted_keys) - - _valid_compiler_flags = [ 'cflags', 'cxxflags', 'fflags', 'ldflags', 'ldlibs', 'cppflags'] @@ -1094,17 +1021,6 @@ def _add_version(self, version): """Called by the parser to add an allowable version.""" self.versions.add(version) - def _add_variant(self, name, value): - """Called by the parser to add a variant.""" - if name in self.variants: - raise DuplicateVariantError( - "Cannot specify variant '%s' twice" % name) - if isinstance(value, string_types) and value.upper() == 'TRUE': - value = True - elif isinstance(value, string_types) and value.upper() == 'FALSE': - value = False - self.variants[name] = VariantSpec(name, value) - def _add_flag(self, name, value): """Called by the parser to add a known flag. Known flags currently include "arch" @@ -1124,7 +1040,13 @@ def _add_flag(self, name, value): assert(self.compiler_flags is not None) self.compiler_flags[name] = value.split() else: - self._add_variant(name, value) + # All other flags represent variants. 'foo=true' and 'foo=false' + # map to '+foo' and '~foo' respectively. As such they need a + # BoolValuedVariant instance. + if str(value).upper() == 'TRUE' or str(value).upper() == 'FALSE': + self.variants[name] = BoolValuedVariant(name, value) + else: + self.variants[name] = MultiValuedVariant(name, value) def _set_architecture(self, **kwargs): """Called by the parser to set the architecture.""" @@ -1424,8 +1346,11 @@ def to_node_dict(self): if self.namespace: d['namespace'] = self.namespace - params = syaml_dict(sorted( - (name, v.value) for name, v in self.variants.items())) + params = syaml_dict( + sorted( + v.yaml_entry() for _, v in self.variants.items() + ) + ) params.update(sorted(self.compiler_flags.items())) if params: d['parameters'] = params @@ -1491,11 +1416,14 @@ def from_node_dict(node): if name in _valid_compiler_flags: spec.compiler_flags[name] = value else: - spec.variants[name] = VariantSpec(name, value) - + spec.variants[name] = MultiValuedVariant.from_node_dict( + name, value + ) elif 'variants' in node: for name, value in node['variants'].items(): - spec.variants[name] = VariantSpec(name, value) + spec.variants[name] = MultiValuedVariant.from_node_dict( + name, value + ) for name in FlagMap.valid_compiler_flags(): spec.compiler_flags[name] = [] @@ -2076,7 +2004,7 @@ def normalize(self, force=False): self._mark_concrete(False) # Ensure first that all packages & compilers in the DAG exist. - self.validate_names() + self.validate_or_raise() # Get all the dependencies into one DependencyMap spec_deps = self.flat_dependencies(copy=False, deptype_query=alldeps) @@ -2110,11 +2038,13 @@ def normalized(self): clone.normalize() return clone - def validate_names(self): - """This checks that names of packages and compilers in this spec are real. - If they're not, it will raise either UnknownPackageError or - UnsupportedCompilerError. + def validate_or_raise(self): + """Checks that names and values in this spec are real. If they're not, + it will raise an appropriate exception. """ + # FIXME: this function should be lazy, and collect all the errors + # FIXME: before raising the exceptions, instead of being greedy and + # FIXME: raise just the first one encountered for spec in self.traverse(): # raise an UnknownPackageError if the spec's package isn't real. if (not spec.virtual) and spec.name: @@ -2125,16 +2055,44 @@ def validate_names(self): if not compilers.supported(spec.compiler): raise UnsupportedCompilerError(spec.compiler.name) - # Ensure that variants all exist. - for vname, variant in spec.variants.items(): - if vname not in spec.package_class.variants: - raise UnknownVariantError(spec.name, vname) + # FIXME: Move the logic below into the variant.py module + # Ensure correctness of variants (if the spec is not virtual) + if not spec.virtual: + pkg_cls = spec.package_class + pkg_variants = pkg_cls.variants + not_existing = set(spec.variants) - set(pkg_variants) + if not_existing: + raise UnknownVariantError(spec.name, not_existing) + + for name, v in [(x, y) for (x, y) in spec.variants.items()]: + # When parsing a spec every variant of the form + # 'foo=value' will be interpreted by default as a + # multi-valued variant. During validation of the + # variants we use the information in the package + # to turn any variant that needs it to a single-valued + # variant. + pkg_variant = pkg_variants[name] + pkg_variant.validate_or_raise(v, pkg_cls) + spec.variants.substitute( + pkg_variant.make_variant(v._original_value) + ) def constrain(self, other, deps=True): """Merge the constraints of other with self. Returns True if the spec changed as a result, False if not. """ + # If we are trying to constrain a concrete spec, either the spec + # already satisfies the constraint (and the method returns False) + # or it raises an exception + if self.concrete: + if self.satisfies(other): + return False + else: + raise UnsatisfiableSpecError( + self, other, 'constrain a concrete spec' + ) + other = self._autospec(other) if not (self.name == other.name or @@ -2150,11 +2108,11 @@ def constrain(self, other, deps=True): if not self.versions.overlaps(other.versions): raise UnsatisfiableVersionSpecError(self.versions, other.versions) - for v in other.variants: - if (v in self.variants and - self.variants[v].value != other.variants[v].value): - raise UnsatisfiableVariantSpecError(self.variants[v], - other.variants[v]) + for v in [x for x in other.variants if x in self.variants]: + if not self.variants[v].compatible(other.variants[v]): + raise UnsatisfiableVariantSpecError( + self.variants[v], other.variants[v] + ) # TODO: Check out the logic here sarch, oarch = self.architecture, other.architecture @@ -2328,6 +2286,30 @@ def satisfies(self, other, deps=True, strict=False, strict_deps=False): elif strict and (other.compiler and not self.compiler): return False + # If self is a concrete spec, and other is not virtual, then we need + # to substitute every multi-valued variant that needs it with a + # single-valued variant. + if self.concrete: + for name, v in [(x, y) for (x, y) in other.variants.items()]: + # When parsing a spec every variant of the form + # 'foo=value' will be interpreted by default as a + # multi-valued variant. During validation of the + # variants we use the information in the package + # to turn any variant that needs it to a single-valued + # variant. + pkg_cls = type(other.package) + try: + pkg_variant = other.package.variants[name] + pkg_variant.validate_or_raise(v, pkg_cls) + except (SpecError, KeyError): + # Catch the two things that could go wrong above: + # 1. name is not a valid variant (KeyError) + # 2. the variant is not validated (SpecError) + return False + other.variants.substitute( + pkg_variant.make_variant(v._original_value) + ) + var_strict = strict if (not self.name) or (not other.name): var_strict = True @@ -3118,10 +3100,12 @@ def spec(self, name): added_version = True elif self.accept(ON): - spec._add_variant(self.variant(), True) + name = self.variant() + spec.variants[name] = BoolValuedVariant(name, True) elif self.accept(OFF): - spec._add_variant(self.variant(), False) + name = self.variant() + spec.variants[name] = BoolValuedVariant(name, False) elif self.accept(PCT): spec._set_compiler(self.compiler()) @@ -3275,10 +3259,6 @@ def base32_prefix_bits(hash_string, bits): return prefix_bits(hash_bytes, bits) -class SpecError(spack.error.SpackError): - """Superclass for all errors that occur while constructing specs.""" - - class SpecParseError(SpecError): """Wrapper for ParseError for when we're parsing specs.""" def __init__(self, parse_error): @@ -3291,10 +3271,6 @@ class DuplicateDependencyError(SpecError): """Raised when the same dependency occurs in a spec twice.""" -class DuplicateVariantError(SpecError): - """Raised when the same variant occurs in a spec twice.""" - - class DuplicateCompilerSpecError(SpecError): """Raised when the same compiler occurs in a spec twice.""" @@ -3306,13 +3282,6 @@ def __init__(self, compiler_name): "The '%s' compiler is not yet supported." % compiler_name) -class UnknownVariantError(SpecError): - """Raised when the same variant occurs in a spec twice.""" - def __init__(self, pkg, variant): - super(UnknownVariantError, self).__init__( - "Package %s has no variant %s!" % (pkg, variant)) - - class DuplicateArchitectureError(SpecError): """Raised when the same architecture occurs in a spec twice.""" @@ -3354,17 +3323,6 @@ def __init__(self, vpkg, providers): self.providers = providers -class UnsatisfiableSpecError(SpecError): - """Raised when a spec conflicts with package constraints. - Provide the requirement that was violated when raising.""" - def __init__(self, provided, required, constraint_type): - super(UnsatisfiableSpecError, self).__init__( - "%s does not satisfy %s" % (provided, required)) - self.provided = provided - self.required = required - self.constraint_type = constraint_type - - class UnsatisfiableSpecNameError(UnsatisfiableSpecError): """Raised when two specs aren't even for the same package.""" def __init__(self, provided, required): @@ -3386,13 +3344,6 @@ def __init__(self, provided, required): provided, required, "compiler") -class UnsatisfiableVariantSpecError(UnsatisfiableSpecError): - """Raised when a spec variant conflicts with package constraints.""" - def __init__(self, provided, required): - super(UnsatisfiableVariantSpecError, self).__init__( - provided, required, "variant") - - class UnsatisfiableCompilerFlagSpecError(UnsatisfiableSpecError): """Raised when a spec variant conflicts with package constraints.""" def __init__(self, provided, required): diff --git a/lib/spack/spack/test/build_systems.py b/lib/spack/spack/test/build_systems.py index 2cafba0333c..8e771c8a682 100644 --- a/lib/spack/spack/test/build_systems.py +++ b/lib/spack/spack/test/build_systems.py @@ -24,6 +24,8 @@ ############################################################################## import spack +import pytest + from spack.build_environment import get_std_cmake_args from spack.spec import Spec @@ -40,3 +42,31 @@ def test_cmake_std_args(config, builtin_mock): s.concretize() pkg = spack.repo.get(s) assert get_std_cmake_args(pkg) + + +@pytest.mark.usefixtures('config', 'builtin_mock') +class TestAutotoolsPackage(object): + + def test_with_or_without(self): + s = Spec('a') + s.concretize() + pkg = spack.repo.get(s) + + # Called without parameters + l = pkg.with_or_without('foo') + assert '--with-bar' in l + assert '--without-baz' in l + assert '--no-fee' in l + + def activate(value): + return 'something' + + l = pkg.with_or_without('foo', active_parameters=activate) + assert '--with-bar=something' in l + assert '--without-baz' in l + assert '--no-fee' in l + + l = pkg.enable_or_disable('foo') + assert '--enable-bar' in l + assert '--disable-baz' in l + assert '--disable-fee' in l diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 20630881845..779d4f88165 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -75,7 +75,7 @@ def check_concretize(abstract_spec): # dag 'callpath', 'mpileaks', 'libelf', # variant - 'mpich+debug', 'mpich~debug', 'mpich debug=2', 'mpich', + 'mpich+debug', 'mpich~debug', 'mpich debug=True', 'mpich', # compiler flags 'mpich cppflags="-O3"', # with virtual diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index 120425794f3..3c725e229b5 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -55,7 +55,7 @@ @pytest.fixture(autouse=True) def no_stdin_duplication(monkeypatch): """Duplicating stdin (or any other stream) returns an empty - cStringIO object. + StringIO object. """ monkeypatch.setattr(llnl.util.lang, 'duplicate_stream', lambda x: StringIO()) diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index f071bcc8330..306a6ad98f8 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -24,7 +24,9 @@ ############################################################################## import spack.architecture import pytest + from spack.spec import * +from spack.variant import * def check_satisfies(spec, anon_spec, concrete=False): @@ -243,6 +245,128 @@ def test_satisfies_matching_variant(self): check_satisfies('mpich~foo', 'mpich foo=FALSE') check_satisfies('mpich foo=False', 'mpich~foo') + def test_satisfies_multi_value_variant(self): + # Check quoting + check_satisfies('multivalue_variant foo="bar,baz"', + 'multivalue_variant foo="bar,baz"') + check_satisfies('multivalue_variant foo=bar,baz', + 'multivalue_variant foo=bar,baz') + check_satisfies('multivalue_variant foo="bar,baz"', + 'multivalue_variant foo=bar,baz') + + # A more constrained spec satisfies a less constrained one + check_satisfies('multivalue_variant foo="bar,baz"', + 'multivalue_variant foo="bar"') + + check_satisfies('multivalue_variant foo="bar,baz"', + 'multivalue_variant foo="baz"') + + check_satisfies('multivalue_variant foo="bar,baz,barbaz"', + 'multivalue_variant foo="bar,baz"') + + check_satisfies('multivalue_variant foo="bar,baz"', + 'foo="bar,baz"') + + check_satisfies('multivalue_variant foo="bar,baz"', + 'foo="bar"') + + def test_satisfies_single_valued_variant(self): + """Tests that the case reported in + https://github.com/LLNL/spack/pull/2386#issuecomment-282147639 + is handled correctly. + """ + a = Spec('a foobar=bar') + a.concretize() + + assert a.satisfies('foobar=bar') + + def test_unsatisfiable_multi_value_variant(self): + + # Semantics for a multi-valued variant is different + # Depending on whether the spec is concrete or not + + a = Spec('multivalue_variant foo="bar"', concrete=True) + spec_str = 'multivalue_variant foo="bar,baz"' + b = Spec(spec_str) + assert not a.satisfies(b) + assert not a.satisfies(spec_str) + # A concrete spec cannot be constrained further + with pytest.raises(UnsatisfiableSpecError): + a.constrain(b) + + a = Spec('multivalue_variant foo="bar"') + spec_str = 'multivalue_variant foo="bar,baz"' + b = Spec(spec_str) + assert not a.satisfies(b) + assert not a.satisfies(spec_str) + # An abstract spec can instead be constrained + assert a.constrain(b) + + a = Spec('multivalue_variant foo="bar,baz"', concrete=True) + spec_str = 'multivalue_variant foo="bar,baz,quux"' + b = Spec(spec_str) + assert not a.satisfies(b) + assert not a.satisfies(spec_str) + # A concrete spec cannot be constrained further + with pytest.raises(UnsatisfiableSpecError): + a.constrain(b) + + a = Spec('multivalue_variant foo="bar,baz"') + spec_str = 'multivalue_variant foo="bar,baz,quux"' + b = Spec(spec_str) + assert not a.satisfies(b) + assert not a.satisfies(spec_str) + # An abstract spec can instead be constrained + assert a.constrain(b) + # ...but will fail during concretization if there are + # values in the variant that are not allowed + with pytest.raises(InvalidVariantValueError): + a.concretize() + + # This time we'll try to set a single-valued variant + a = Spec('multivalue_variant fee="bar"') + spec_str = 'multivalue_variant fee="baz"' + b = Spec(spec_str) + assert not a.satisfies(b) + assert not a.satisfies(spec_str) + # A variant cannot be parsed as single-valued until we try to + # concretize. This means that we can constrain the variant above + assert a.constrain(b) + # ...but will fail during concretization if there are + # multiple values set + with pytest.raises(MultipleValuesInExclusiveVariantError): + a.concretize() + + # FIXME: remove after having checked the correctness of the semantics + # check_unsatisfiable('multivalue_variant foo="bar,baz"', + # 'multivalue_variant foo="bar,baz,quux"', + # concrete=True) + # check_unsatisfiable('multivalue_variant foo="bar,baz"', + # 'multivalue_variant foo="bar,baz,quux"', + # concrete=True) + + # but succeed for abstract ones (b/c they COULD satisfy the + # constraint if constrained) + # check_satisfies('multivalue_variant foo="bar"', + # 'multivalue_variant foo="bar,baz"') + + # check_satisfies('multivalue_variant foo="bar,baz"', + # 'multivalue_variant foo="bar,baz,quux"') + + def test_unsatisfiable_variant_types(self): + # These should fail due to incompatible types + check_unsatisfiable('multivalue_variant +foo', + 'multivalue_variant foo="bar"') + + check_unsatisfiable('multivalue_variant ~foo', + 'multivalue_variant foo="bar"') + + check_unsatisfiable('multivalue_variant foo="bar"', + 'multivalue_variant +foo') + + check_unsatisfiable('multivalue_variant foo="bar"', + 'multivalue_variant ~foo') + def test_satisfies_unconstrained_variant(self): # only asked for mpich, no constraints. Either will do. check_satisfies('mpich+foo', 'mpich') @@ -266,7 +390,7 @@ def test_unsatisfiable_variant_mismatch(self): # No matchi in specs check_unsatisfiable('mpich~foo', 'mpich+foo') check_unsatisfiable('mpich+foo', 'mpich~foo') - check_unsatisfiable('mpich foo=1', 'mpich foo=2') + check_unsatisfiable('mpich foo=True', 'mpich foo=False') def test_satisfies_matching_compiler_flag(self): check_satisfies('mpich cppflags="-O3"', 'mpich cppflags="-O3"') @@ -416,6 +540,19 @@ def test_constrain_variants(self): 'libelf+debug~foo', 'libelf+debug', 'libelf+debug~foo' ) + def test_constrain_multi_value_variant(self): + check_constrain( + 'multivalue_variant foo="bar,baz"', + 'multivalue_variant foo="bar"', + 'multivalue_variant foo="baz"' + ) + + check_constrain( + 'multivalue_variant foo="bar,baz,barbaz"', + 'multivalue_variant foo="bar,barbaz"', + 'multivalue_variant foo="baz"' + ) + def test_constrain_compiler_flags(self): check_constrain( 'libelf cflags="-O3" cppflags="-Wall"', @@ -455,7 +592,7 @@ def test_invalid_constraint(self): check_invalid_constraint('libelf+debug', 'libelf~debug') check_invalid_constraint('libelf+debug~foo', 'libelf+debug+foo') - check_invalid_constraint('libelf debug=2', 'libelf debug=1') + check_invalid_constraint('libelf debug=True', 'libelf debug=False') check_invalid_constraint( 'libelf cppflags="-O3"', 'libelf cppflags="-O2"') diff --git a/lib/spack/spack/test/spec_yaml.py b/lib/spack/spack/test/spec_yaml.py index adf262a60e9..866cdebd26f 100644 --- a/lib/spack/spack/test/spec_yaml.py +++ b/lib/spack/spack/test/spec_yaml.py @@ -74,6 +74,12 @@ def test_concrete_spec(config, builtin_mock): check_yaml_round_trip(spec) +def test_yaml_multivalue(): + spec = Spec('multivalue_variant foo="bar,baz"') + spec.concretize() + check_yaml_round_trip(spec) + + def test_yaml_subdag(config, builtin_mock): spec = Spec('mpileaks^mpich+debug') spec.concretize() diff --git a/lib/spack/spack/test/variant.py b/lib/spack/spack/test/variant.py new file mode 100644 index 00000000000..0c546a5dacc --- /dev/null +++ b/lib/spack/spack/test/variant.py @@ -0,0 +1,656 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 pytest +import numbers + +from spack.variant import * + + +class TestMultiValuedVariant(object): + + def test_initialization(self): + + # Basic properties + a = MultiValuedVariant('foo', 'bar,baz') + assert repr(a) == "MultiValuedVariant('foo', 'bar,baz')" + assert str(a) == 'foo=bar,baz' + assert a.value == ('bar', 'baz') + assert 'bar' in a + assert 'baz' in a + assert eval(repr(a)) == a + + # Spaces are trimmed + b = MultiValuedVariant('foo', 'bar, baz') + assert repr(b) == "MultiValuedVariant('foo', 'bar, baz')" + assert str(b) == 'foo=bar,baz' + assert b.value == ('bar', 'baz') + assert 'bar' in b + assert 'baz' in b + assert a == b + assert hash(a) == hash(b) + assert eval(repr(b)) == a + + # Order is not important + c = MultiValuedVariant('foo', 'baz, bar') + assert repr(c) == "MultiValuedVariant('foo', 'baz, bar')" + assert str(c) == 'foo=bar,baz' + assert c.value == ('bar', 'baz') + assert 'bar' in c + assert 'baz' in c + assert a == c + assert hash(a) == hash(c) + assert eval(repr(c)) == a + + # Check the copy + d = a.copy() + assert repr(a) == repr(d) + assert str(a) == str(d) + assert d.value == ('bar', 'baz') + assert 'bar' in d + assert 'baz' in d + assert a == d + assert a is not d + assert hash(a) == hash(d) + assert eval(repr(d)) == a + + def test_satisfies(self): + + a = MultiValuedVariant('foo', 'bar,baz') + b = MultiValuedVariant('foo', 'bar') + c = MultiValuedVariant('fee', 'bar,baz') + d = MultiValuedVariant('foo', 'True') + + # 'foo=bar,baz' satisfies 'foo=bar' + assert a.satisfies(b) + + # 'foo=bar' does not satisfy 'foo=bar,baz' + assert not b.satisfies(a) + + # 'foo=bar,baz' does not satisfy 'foo=bar,baz' and vice-versa + assert not a.satisfies(c) + assert not c.satisfies(a) + + # Cannot satisfy the constraint with an object of + # another type + b_sv = SingleValuedVariant('foo', 'bar') + assert not b.satisfies(b_sv) + + d_bv = BoolValuedVariant('foo', 'True') + assert not d.satisfies(d_bv) + + def test_compatible(self): + + a = MultiValuedVariant('foo', 'bar,baz') + b = MultiValuedVariant('foo', 'True') + c = MultiValuedVariant('fee', 'bar,baz') + d = MultiValuedVariant('foo', 'bar,barbaz') + + # If the name of two multi-valued variants is the same, + # they are compatible + assert a.compatible(b) + assert not a.compatible(c) + assert a.compatible(d) + + assert b.compatible(a) + assert not b.compatible(c) + assert b.compatible(d) + + assert not c.compatible(a) + assert not c.compatible(b) + assert not c.compatible(d) + + assert d.compatible(a) + assert d.compatible(b) + assert not d.compatible(c) + + # Can't be compatible with other types + b_bv = BoolValuedVariant('foo', 'True') + assert not b.compatible(b_bv) + + b_sv = SingleValuedVariant('foo', 'True') + assert not b.compatible(b_sv) + + def test_constrain(self): + + # Try to constrain on a value with less constraints than self + a = MultiValuedVariant('foo', 'bar,baz') + b = MultiValuedVariant('foo', 'bar') + + changed = a.constrain(b) + assert not changed + t = MultiValuedVariant('foo', 'bar,baz') + assert a == t + + # Try to constrain on a value with more constraints than self + a = MultiValuedVariant('foo', 'bar,baz') + b = MultiValuedVariant('foo', 'bar') + + changed = b.constrain(a) + assert changed + t = MultiValuedVariant('foo', 'bar,baz') + assert a == t + + # Try to constrain on the same value + a = MultiValuedVariant('foo', 'bar,baz') + b = a.copy() + + changed = a.constrain(b) + assert not changed + t = MultiValuedVariant('foo', 'bar,baz') + assert a == t + + # Try to constrain on a different name + a = MultiValuedVariant('foo', 'bar,baz') + b = MultiValuedVariant('fee', 'bar') + + with pytest.raises(ValueError): + a.constrain(b) + + # Try to constrain on other types + a = MultiValuedVariant('foo', 'bar,baz') + sv = SingleValuedVariant('foo', 'bar') + bv = BoolValuedVariant('foo', 'True') + for v in (sv, bv): + with pytest.raises(TypeError): + a.constrain(v) + + def test_yaml_entry(self): + + a = MultiValuedVariant('foo', 'bar,baz,barbaz') + b = MultiValuedVariant('foo', 'bar, baz, barbaz') + expected = ('foo', sorted(['bar', 'baz', 'barbaz'])) + + assert a.yaml_entry() == expected + assert b.yaml_entry() == expected + + a = MultiValuedVariant('foo', 'bar') + expected = ('foo', sorted(['bar'])) + + assert a.yaml_entry() == expected + + +class TestSingleValuedVariant(object): + + def test_initialization(self): + + # Basic properties + a = SingleValuedVariant('foo', 'bar') + assert repr(a) == "SingleValuedVariant('foo', 'bar')" + assert str(a) == 'foo=bar' + assert a.value == 'bar' + assert 'bar' in a + assert eval(repr(a)) == a + + # Raise if multiple values are passed + with pytest.raises(ValueError): + SingleValuedVariant('foo', 'bar, baz') + + # Check the copy + b = a.copy() + assert repr(a) == repr(b) + assert str(a) == str(b) + assert b.value == 'bar' + assert 'bar' in b + assert a == b + assert a is not b + assert hash(a) == hash(b) + assert eval(repr(b)) == a + + def test_satisfies(self): + a = SingleValuedVariant('foo', 'bar') + b = SingleValuedVariant('foo', 'bar') + c = SingleValuedVariant('foo', 'baz') + d = SingleValuedVariant('fee', 'bar') + e = SingleValuedVariant('foo', 'True') + + # 'foo=bar' can only satisfy 'foo=bar' + assert a.satisfies(b) + assert not a.satisfies(c) + assert not a.satisfies(d) + + assert b.satisfies(a) + assert not b.satisfies(c) + assert not b.satisfies(d) + + assert not c.satisfies(a) + assert not c.satisfies(b) + assert not c.satisfies(d) + + # Cannot satisfy the constraint with an object of + # another type + a_mv = MultiValuedVariant('foo', 'bar') + assert not a.satisfies(a_mv) + + e_bv = BoolValuedVariant('foo', 'True') + assert not e.satisfies(e_bv) + + def test_compatible(self): + + a = SingleValuedVariant('foo', 'bar') + b = SingleValuedVariant('fee', 'bar') + c = SingleValuedVariant('foo', 'baz') + d = SingleValuedVariant('foo', 'bar') + + # If the name of two multi-valued variants is the same, + # they are compatible + assert not a.compatible(b) + assert not a.compatible(c) + assert a.compatible(d) + + assert not b.compatible(a) + assert not b.compatible(c) + assert not b.compatible(d) + + assert not c.compatible(a) + assert not c.compatible(b) + assert not c.compatible(d) + + assert d.compatible(a) + assert not d.compatible(b) + assert not d.compatible(c) + + # Can't be compatible with other types + a_mv = MultiValuedVariant('foo', 'bar') + assert not a.compatible(a_mv) + + e = SingleValuedVariant('foo', 'True') + e_bv = BoolValuedVariant('foo', 'True') + assert not e.compatible(e_bv) + + def test_constrain(self): + + # Try to constrain on a value equal to self + a = SingleValuedVariant('foo', 'bar') + b = SingleValuedVariant('foo', 'bar') + + changed = a.constrain(b) + assert not changed + t = SingleValuedVariant('foo', 'bar') + assert a == t + + # Try to constrain on a value with a different value + a = SingleValuedVariant('foo', 'bar') + b = SingleValuedVariant('foo', 'baz') + + with pytest.raises(UnsatisfiableVariantSpecError): + b.constrain(a) + + # Try to constrain on a value with a different value + a = SingleValuedVariant('foo', 'bar') + b = SingleValuedVariant('fee', 'bar') + + with pytest.raises(ValueError): + b.constrain(a) + + # Try to constrain on the same value + a = SingleValuedVariant('foo', 'bar') + b = a.copy() + + changed = a.constrain(b) + assert not changed + t = SingleValuedVariant('foo', 'bar') + assert a == t + + # Try to constrain on other values + a = SingleValuedVariant('foo', 'True') + mv = MultiValuedVariant('foo', 'True') + bv = BoolValuedVariant('foo', 'True') + for v in (mv, bv): + with pytest.raises(TypeError): + a.constrain(v) + + def test_yaml_entry(self): + a = SingleValuedVariant('foo', 'bar') + expected = ('foo', 'bar') + + assert a.yaml_entry() == expected + + +class TestBoolValuedVariant(object): + + def test_initialization(self): + # Basic properties - True value + for v in (True, 'True', 'TRUE', 'TrUe'): + a = BoolValuedVariant('foo', v) + assert repr(a) == "BoolValuedVariant('foo', {0})".format(repr(v)) + assert str(a) == '+foo' + assert a.value is True + assert True in a + assert eval(repr(a)) == a + + # Copy - True value + b = a.copy() + assert repr(a) == repr(b) + assert str(a) == str(b) + assert b.value is True + assert True in b + assert a == b + assert a is not b + assert hash(a) == hash(b) + assert eval(repr(b)) == a + + # Basic properties - False value + for v in (False, 'False', 'FALSE', 'FaLsE'): + a = BoolValuedVariant('foo', v) + assert repr(a) == "BoolValuedVariant('foo', {0})".format(repr(v)) + assert str(a) == '~foo' + assert a.value is False + assert False in a + assert eval(repr(a)) == a + + # Copy - True value + b = a.copy() + assert repr(a) == repr(b) + assert str(a) == str(b) + assert b.value is False + assert False in b + assert a == b + assert a is not b + assert eval(repr(b)) == a + + # Invalid values + for v in ('bar', 'bar,baz'): + with pytest.raises(ValueError): + BoolValuedVariant('foo', v) + + def test_satisfies(self): + a = BoolValuedVariant('foo', True) + b = BoolValuedVariant('foo', False) + c = BoolValuedVariant('fee', False) + d = BoolValuedVariant('foo', 'True') + + assert not a.satisfies(b) + assert not a.satisfies(c) + assert a.satisfies(d) + + assert not b.satisfies(a) + assert not b.satisfies(c) + assert not b.satisfies(d) + + assert not c.satisfies(a) + assert not c.satisfies(b) + assert not c.satisfies(d) + + assert d.satisfies(a) + assert not d.satisfies(b) + assert not d.satisfies(c) + + # Cannot satisfy the constraint with an object of + # another type + d_mv = MultiValuedVariant('foo', 'True') + assert not d.satisfies(d_mv) + + d_sv = SingleValuedVariant('foo', 'True') + assert not d.satisfies(d_sv) + + def test_compatible(self): + + a = BoolValuedVariant('foo', True) + b = BoolValuedVariant('fee', True) + c = BoolValuedVariant('foo', False) + d = BoolValuedVariant('foo', 'True') + + # If the name of two multi-valued variants is the same, + # they are compatible + assert not a.compatible(b) + assert not a.compatible(c) + assert a.compatible(d) + + assert not b.compatible(a) + assert not b.compatible(c) + assert not b.compatible(d) + + assert not c.compatible(a) + assert not c.compatible(b) + assert not c.compatible(d) + + assert d.compatible(a) + assert not d.compatible(b) + assert not d.compatible(c) + + # Can't be compatible with other types + d_mv = MultiValuedVariant('foo', 'True') + assert not d.compatible(d_mv) + + d_sv = SingleValuedVariant('foo', 'True') + assert not d.compatible(d_sv) + + def test_constrain(self): + # Try to constrain on a value equal to self + a = BoolValuedVariant('foo', 'True') + b = BoolValuedVariant('foo', True) + + changed = a.constrain(b) + assert not changed + t = BoolValuedVariant('foo', True) + assert a == t + + # Try to constrain on a value with a different value + a = BoolValuedVariant('foo', True) + b = BoolValuedVariant('foo', False) + + with pytest.raises(UnsatisfiableVariantSpecError): + b.constrain(a) + + # Try to constrain on a value with a different value + a = BoolValuedVariant('foo', True) + b = BoolValuedVariant('fee', True) + + with pytest.raises(ValueError): + b.constrain(a) + + # Try to constrain on the same value + a = BoolValuedVariant('foo', True) + b = a.copy() + + changed = a.constrain(b) + assert not changed + t = BoolValuedVariant('foo', True) + assert a == t + + # Try to constrain on other values + a = BoolValuedVariant('foo', 'True') + sv = SingleValuedVariant('foo', 'True') + mv = MultiValuedVariant('foo', 'True') + for v in (sv, mv): + with pytest.raises(TypeError): + a.constrain(v) + + def test_yaml_entry(self): + + a = BoolValuedVariant('foo', 'True') + expected = ('foo', True) + assert a.yaml_entry() == expected + + a = BoolValuedVariant('foo', 'False') + expected = ('foo', False) + assert a.yaml_entry() == expected + + +def test_from_node_dict(): + a = MultiValuedVariant.from_node_dict('foo', ['bar']) + assert type(a) == MultiValuedVariant + + a = MultiValuedVariant.from_node_dict('foo', 'bar') + assert type(a) == SingleValuedVariant + + a = MultiValuedVariant.from_node_dict('foo', 'true') + assert type(a) == BoolValuedVariant + + +class TestVariant(object): + + def test_validation(self): + a = Variant( + 'foo', + default='', + description='', + values=('bar', 'baz', 'foobar'), + multi=False + ) + # Valid vspec, shouldn't raise + vspec = a.make_variant('bar') + a.validate_or_raise(vspec) + + # Multiple values are not allowed + with pytest.raises(MultipleValuesInExclusiveVariantError): + vspec.value = 'bar,baz' + + # Inconsistent vspec + vspec.name = 'FOO' + with pytest.raises(InconsistentValidationError): + a.validate_or_raise(vspec) + + # Valid multi-value vspec + a.multi = True + vspec = a.make_variant('bar,baz') + a.validate_or_raise(vspec) + # Add an invalid value + vspec.value = 'bar,baz,barbaz' + with pytest.raises(InvalidVariantValueError): + a.validate_or_raise(vspec) + + def test_callable_validator(self): + + def validator(x): + try: + return isinstance(int(x), numbers.Integral) + except ValueError: + return False + + a = Variant( + 'foo', + default=1024, + description='', + values=validator, + multi=False + ) + vspec = a.make_default() + a.validate_or_raise(vspec) + vspec.value = 2056 + a.validate_or_raise(vspec) + vspec.value = 'foo' + with pytest.raises(InvalidVariantValueError): + a.validate_or_raise(vspec) + + def test_representation(self): + a = Variant( + 'foo', + default='', + description='', + values=('bar', 'baz', 'foobar'), + multi=False + ) + assert a.allowed_values == 'bar, baz, foobar' + + +class TestVariantMapTest(object): + + def test_invalid_values(self): + # Value with invalid type + a = VariantMap(None) + with pytest.raises(TypeError): + a['foo'] = 2 + + # Duplicate variant + a['foo'] = MultiValuedVariant('foo', 'bar,baz') + with pytest.raises(DuplicateVariantError): + a['foo'] = MultiValuedVariant('foo', 'bar') + + with pytest.raises(DuplicateVariantError): + a['foo'] = SingleValuedVariant('foo', 'bar') + + with pytest.raises(DuplicateVariantError): + a['foo'] = BoolValuedVariant('foo', True) + + # Non matching names between key and vspec.name + with pytest.raises(KeyError): + a['bar'] = MultiValuedVariant('foo', 'bar') + + def test_set_item(self): + # Check that all the three types of variants are accepted + a = VariantMap(None) + + a['foo'] = BoolValuedVariant('foo', True) + a['bar'] = SingleValuedVariant('bar', 'baz') + a['foobar'] = MultiValuedVariant('foobar', 'a, b, c, d, e') + + def test_substitute(self): + # Check substitution of a key that exists + a = VariantMap(None) + a['foo'] = BoolValuedVariant('foo', True) + a.substitute(SingleValuedVariant('foo', 'bar')) + + # Trying to substitute something that is not + # in the map will raise a KeyError + with pytest.raises(KeyError): + a.substitute(BoolValuedVariant('bar', True)) + + def test_satisfies_and_constrain(self): + # foo=bar foobar=fee feebar=foo + a = VariantMap(None) + a['foo'] = MultiValuedVariant('foo', 'bar') + a['foobar'] = SingleValuedVariant('foobar', 'fee') + a['feebar'] = SingleValuedVariant('feebar', 'foo') + + # foo=bar,baz foobar=fee shared=True + b = VariantMap(None) + b['foo'] = MultiValuedVariant('foo', 'bar, baz') + b['foobar'] = SingleValuedVariant('foobar', 'fee') + b['shared'] = BoolValuedVariant('shared', True) + + assert not a.satisfies(b) + assert b.satisfies(a) + + assert not a.satisfies(b, strict=True) + assert not b.satisfies(a, strict=True) + + # foo=bar,baz foobar=fee feebar=foo shared=True + c = VariantMap(None) + c['foo'] = MultiValuedVariant('foo', 'bar, baz') + c['foobar'] = SingleValuedVariant('foobar', 'fee') + c['feebar'] = SingleValuedVariant('feebar', 'foo') + c['shared'] = BoolValuedVariant('shared', True) + + assert a.constrain(b) + assert a == c + + def test_copy(self): + a = VariantMap(None) + a['foo'] = BoolValuedVariant('foo', True) + a['bar'] = SingleValuedVariant('bar', 'baz') + a['foobar'] = MultiValuedVariant('foobar', 'a, b, c, d, e') + + c = a.copy() + assert a == c + + def test_str(self): + c = VariantMap(None) + c['foo'] = MultiValuedVariant('foo', 'bar, baz') + c['foobar'] = SingleValuedVariant('foobar', 'fee') + c['feebar'] = SingleValuedVariant('feebar', 'foo') + c['shared'] = BoolValuedVariant('shared', True) + assert str(c) == ' feebar=foo foo=bar,baz foobar=fee +shared' diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index b2c1a734891..7102676b69c 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -22,17 +22,583 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -"""Variant is a class describing flags on builds, or "variants". - -Could be generalized later to describe aribitrary parameters, but -currently variants are just flags. - +"""The variant module contains data structures that are needed to manage +variants both in packages and in specs. """ +import inspect +import re + +import llnl.util.lang as lang +import spack.error as error +from six import StringIO + class Variant(object): - """Represents a variant on a build. Can be either on or off.""" + """Represents a variant in a package, as declared in the + variant directive. + """ - def __init__(self, default, description): - self.default = default + def __init__( + self, + name, + default, + description, + values=(True, False), + multi=False, + validator=None + ): + """Initialize a package variant. + + Args: + name (str): name of the variant + default (str): default value for the variant in case + nothing has been specified + description (str): purpose of the variant + values (sequence): sequence of allowed values or a callable + accepting a single value as argument and returning True if the + value is good, False otherwise + multi (bool): whether multiple CSV are allowed + validator (callable): optional callable used to enforce + additional logic on the set of values being validated + """ + self.name = name + self.default = default self.description = str(description) + + if callable(values): + # If 'values' is a callable, assume it is a single value + # validator and reset the values to be explicit during debug + self.single_value_validator = values + self.values = None + else: + # Otherwise assume values is the set of allowed explicit values + self.values = tuple(values) + allowed = self.values + (self.default,) + self.single_value_validator = lambda x: x in allowed + + self.multi = multi + self.group_validator = validator + + def validate_or_raise(self, vspec, pkg=None): + """Validate a variant spec against this package variant. Raises an + exception if any error is found. + + Args: + vspec (VariantSpec): instance to be validated + pkg (Package): the package that required the validation, + if available + + Raises: + InconsistentValidationError: if ``vspec.name != self.name`` + + MultipleValuesInExclusiveVariantError: if ``vspec`` has + multiple values but ``self.multi == False`` + + InvalidVariantValueError: if ``vspec.value`` contains + invalid values + """ + # Check the name of the variant + if self.name != vspec.name: + raise InconsistentValidationError(vspec, self) + + # Check the values of the variant spec + value = vspec.value + if isinstance(vspec.value, (bool, str)): + value = (vspec.value,) + + # If the value is exclusive there must be at most one + if not self.multi and len(value) != 1: + raise MultipleValuesInExclusiveVariantError(vspec, pkg) + + # Check and record the values that are not allowed + not_allowed_values = [ + x for x in value if not self.single_value_validator(x) + ] + if not_allowed_values: + raise InvalidVariantValueError(self, not_allowed_values, pkg) + + # Validate the group of values if needed + if self.group_validator is not None: + self.group_validator(value) + + @property + def allowed_values(self): + """Returns a string representation of the allowed values for + printing purposes + + Returns: + str: representation of the allowed values + """ + # Join an explicit set of allowed values + if self.values is not None: + v = tuple(str(x) for x in self.values) + return ', '.join(v) + # In case we were given a single-value validator + # print the docstring + docstring = inspect.getdoc(self.single_value_validator) + v = docstring if docstring else '' + return v + + def make_default(self): + """Factory that creates a variant holding the default value. + + Returns: + MultiValuedVariant or SingleValuedVariant or BoolValuedVariant: + instance of the proper variant + """ + return self.make_variant(self.default) + + def make_variant(self, value): + """Factory that creates a variant holding the value passed as + a parameter. + + Args: + value: value that will be hold by the variant + + Returns: + MultiValuedVariant or SingleValuedVariant or BoolValuedVariant: + instance of the proper variant + """ + return self.variant_cls(self.name, value) + + @property + def variant_cls(self): + """Proper variant class to be used for this configuration.""" + if self.multi: + return MultiValuedVariant + elif self.values == (True, False): + return BoolValuedVariant + return SingleValuedVariant + + +@lang.key_ordering +class MultiValuedVariant(object): + """A variant that can hold multiple values at once.""" + + @staticmethod + def from_node_dict(name, value): + """Reconstruct a variant from a node dict.""" + if isinstance(value, list): + value = ','.join(value) + return MultiValuedVariant(name, value) + elif str(value).upper() == 'TRUE' or str(value).upper() == 'FALSE': + return BoolValuedVariant(name, value) + return SingleValuedVariant(name, value) + + def __init__(self, name, value): + self.name = name + + # Stores 'value' after a bit of massaging + # done by the property setter + self._value = None + self._original_value = None + + # Invokes property setter + self.value = value + + @property + def value(self): + """Returns a tuple of strings containing the values stored in + the variant. + + Returns: + tuple of str: values stored in the variant + """ + return self._value + + @value.setter + def value(self, value): + self._value_setter(value) + + def _value_setter(self, value): + # Store the original value + self._original_value = value + + # Store a tuple of CSV string representations + # Tuple is necessary here instead of list because the + # values need to be hashed + t = re.split(r'\s*,\s*', str(value)) + + # With multi-value variants it is necessary + # to remove duplicates and give an order + # to a set + self._value = tuple(sorted(set(t))) + + def _cmp_key(self): + return self.name, self.value + + def copy(self): + """Returns an instance of a variant equivalent to self + + Returns: + any variant type: a copy of self + + >>> a = MultiValuedVariant('foo', True) + >>> b = a.copy() + >>> assert a == b + >>> assert a is not b + """ + return type(self)(self.name, self._original_value) + + def satisfies(self, other): + """Returns true if ``other.name == self.name`` and ``other.value`` is + a strict subset of self. Does not try to validate. + + Args: + other: constraint to be met for the method to return True + + Returns: + bool: True or False + """ + # If types are different the constraint is not satisfied + if type(other) != type(self): + return False + + # If names are different then `self` does not satisfy `other` + # (`foo=bar` does not satisfy `baz=bar`) + if other.name != self.name: + return False + + # Otherwise we want all the values in `other` to be also in `self` + return all(v in self.value for v in other.value) + + def compatible(self, other): + """Returns True if self and other are compatible, False otherwise. + + As there is no semantic check, two VariantSpec are compatible if + either they contain the same value or they are both multi-valued. + + Args: + other: instance against which we test compatibility + + Returns: + bool: True or False + """ + # If types are different they are not compatible + if type(other) != type(self): + return False + + # If names are different then they are not compatible + return other.name == self.name + + def constrain(self, other): + """Modify self to match all the constraints for other if both + instances are multi-valued. Returns True if self changed, + False otherwise. + + Args: + other: instance against which we constrain self + + Returns: + bool: True or False + """ + # If types are different they are not compatible + if type(other) != type(self): + msg = 'other must be of type \'{0.__name__}\'' + raise TypeError(msg.format(type(self))) + + if self.name != other.name: + raise ValueError('variants must have the same name') + old_value = self.value + self.value = ','.join(sorted(set(self.value + other.value))) + return old_value != self.value + + def yaml_entry(self): + """Returns a key, value tuple suitable to be an entry in a yaml dict. + + Returns: + tuple: (name, value_representation) + """ + return self.name, list(self.value) + + def __contains__(self, item): + return item in self._value + + def __repr__(self): + cls = type(self) + return '{0.__name__}({1}, {2})'.format( + cls, repr(self.name), repr(self._original_value) + ) + + def __str__(self): + return '{0}={1}'.format( + self.name, ','.join(str(x) for x in self.value) + ) + + +class SingleValuedVariant(MultiValuedVariant): + """A variant that can hold multiple values, but one at a time.""" + + def _value_setter(self, value): + # Treat the value as a multi-valued variant + super(SingleValuedVariant, self)._value_setter(value) + + # Then check if there's only a single value + if len(self._value) != 1: + raise MultipleValuesInExclusiveVariantError(self, None) + self._value = str(self._value[0]) + + def __str__(self): + return '{0}={1}'.format(self.name, self.value) + + def satisfies(self, other): + # If types are different the constraint is not satisfied + if type(other) != type(self): + return False + + # If names are different then `self` does not satisfy `other` + # (`foo=bar` does not satisfy `baz=bar`) + if other.name != self.name: + return False + + return self.value == other.value + + def compatible(self, other): + return self.satisfies(other) + + def constrain(self, other): + if type(other) != type(self): + msg = 'other must be of type \'{0.__name__}\'' + raise TypeError(msg.format(type(self))) + + if self.name != other.name: + raise ValueError('variants must have the same name') + + if self.value != other.value: + raise UnsatisfiableVariantSpecError(other.value, self.value) + return False + + def __contains__(self, item): + return item == self.value + + def yaml_entry(self): + return self.name, self.value + + +class BoolValuedVariant(SingleValuedVariant): + """A variant that can hold either True or False.""" + + def _value_setter(self, value): + # Check the string representation of the value and turn + # it to a boolean + if str(value).upper() == 'TRUE': + self._original_value = value + self._value = True + elif str(value).upper() == 'FALSE': + self._original_value = value + self._value = False + else: + msg = 'cannot construct a BoolValuedVariant from ' + msg += 'a value that does not represent a bool' + raise ValueError(msg) + + def __contains__(self, item): + return item is self.value + + def __str__(self): + return '{0}{1}'.format('+' if self.value else '~', self.name) + + +class VariantMap(lang.HashableMap): + """Map containing variant instances. New values can be added only + if the key is not already present. + """ + + def __init__(self, spec): + super(VariantMap, self).__init__() + self.spec = spec + + def __setitem__(self, name, vspec): + # Raise a TypeError if vspec is not of the right type + if not isinstance(vspec, MultiValuedVariant): + msg = 'VariantMap accepts only values of type VariantSpec' + raise TypeError(msg) + + # Raise an error if the variant was already in this map + if name in self.dict: + msg = 'Cannot specify variant "{0}" twice'.format(name) + raise DuplicateVariantError(msg) + + # Raise an error if name and vspec.name don't match + if name != vspec.name: + msg = 'Inconsistent key "{0}", must be "{1}" to match VariantSpec' + raise KeyError(msg.format(name, vspec.name)) + + # Set the item + super(VariantMap, self).__setitem__(name, vspec) + + def substitute(self, vspec): + """Substitutes the entry under ``vspec.name`` with ``vspec``. + + Args: + vspec: variant spec to be substituted + """ + if vspec.name not in self: + msg = 'cannot substitute a key that does not exist [{0}]' + raise KeyError(msg.format(vspec.name)) + + # Set the item + super(VariantMap, self).__setitem__(vspec.name, vspec) + + def satisfies(self, other, strict=False): + """Returns True if this VariantMap is more constrained than other, + False otherwise. + + Args: + other (VariantMap): VariantMap instance to satisfy + strict (bool): if True return False if a key is in other and + not in self, otherwise discard that key and proceed with + evaluation + + Returns: + bool: True or False + """ + to_be_checked = [k for k in other] + + strict_or_concrete = strict + if self.spec is not None: + strict_or_concrete |= self.spec._concrete + + if not strict_or_concrete: + to_be_checked = filter(lambda x: x in self, to_be_checked) + + return all(k in self and self[k].satisfies(other[k]) + for k in to_be_checked) + + def constrain(self, other): + """Add all variants in other that aren't in self to self. Also + constrain all multi-valued variants that are already present. + Return True if self changed, False otherwise + + Args: + other (VariantMap): instance against which we constrain self + + Returns: + bool: True or False + """ + if other.spec is not None and other.spec._concrete: + for k in self: + if k not in other: + raise UnsatisfiableVariantSpecError(self[k], '') + + changed = False + for k in other: + if k in self: + # If they are not compatible raise an error + if not self[k].compatible(other[k]): + raise UnsatisfiableVariantSpecError(self[k], other[k]) + # If they are compatible merge them + changed |= self[k].constrain(other[k]) + else: + # If it is not present copy it straight away + self[k] = other[k].copy() + changed = True + + return changed + + @property + def concrete(self): + """Returns True if the spec is concrete in terms of variants. + + Returns: + bool: True or False + """ + return self.spec._concrete or all( + v in self for v in self.spec.package_class.variants + ) + + def copy(self): + """Return an instance of VariantMap equivalent to self. + + Returns: + VariantMap: a copy of self + """ + clone = VariantMap(self.spec) + for name, variant in self.items(): + clone[name] = variant.copy() + return clone + + def __str__(self): + # print keys in order + sorted_keys = sorted(self.keys()) + + # add spaces before and after key/value variants. + string = StringIO() + + kv = False + for key in sorted_keys: + vspec = self[key] + + if not isinstance(vspec.value, bool): + # add space before all kv pairs. + string.write(' ') + kv = True + else: + # not a kv pair this time + if kv: + # if it was LAST time, then pad after. + string.write(' ') + kv = False + + string.write(str(vspec)) + + return string.getvalue() + + +class DuplicateVariantError(error.SpecError): + """Raised when the same variant occurs in a spec twice.""" + + +class UnknownVariantError(error.SpecError): + """Raised when an unknown variant occurs in a spec.""" + + def __init__(self, pkg, variant): + super(UnknownVariantError, self).__init__( + 'Package {0} has no variant {1}!'.format(pkg, variant) + ) + + +class InconsistentValidationError(error.SpecError): + """Raised if the wrong validator is used to validate a variant.""" + def __init__(self, vspec, variant): + msg = ('trying to validate variant "{0.name}" ' + 'with the validator of "{1.name}"') + super(InconsistentValidationError, self).__init__( + msg.format(vspec, variant) + ) + + +class MultipleValuesInExclusiveVariantError(error.SpecError, ValueError): + """Raised when multiple values are present in a variant that wants + only one. + """ + def __init__(self, variant, pkg): + msg = 'multiple values are not allowed for variant "{0.name}"{1}' + pkg_info = '' + if pkg is not None: + pkg_info = ' in package "{0}"'.format(pkg.name) + super(MultipleValuesInExclusiveVariantError, self).__init__( + msg.format(variant, pkg_info) + ) + + +class InvalidVariantValueError(error.SpecError): + """Raised when a valid variant has at least an invalid value.""" + + def __init__(self, variant, invalid_values, pkg): + msg = 'invalid values for variant "{0.name}"{2}: {1}\n' + pkg_info = '' + if pkg is not None: + pkg_info = ' in package "{0}"'.format(pkg.name) + super(InvalidVariantValueError, self).__init__( + msg.format(variant, invalid_values, pkg_info) + ) + + +class UnsatisfiableVariantSpecError(error.UnsatisfiableSpecError): + """Raised when a spec variant conflicts with package constraints.""" + + def __init__(self, provided, required): + super(UnsatisfiableVariantSpecError, self).__init__( + provided, required, "variant") diff --git a/var/spack/repos/builtin.mock/packages/a/package.py b/var/spack/repos/builtin.mock/packages/a/package.py index 0d75ee1256a..b697f4d2a9a 100644 --- a/var/spack/repos/builtin.mock/packages/a/package.py +++ b/var/spack/repos/builtin.mock/packages/a/package.py @@ -25,7 +25,7 @@ from spack import * -class A(Package): +class A(AutotoolsPackage): """Simple package with no dependencies""" homepage = "http://www.example.com" @@ -33,5 +33,35 @@ class A(Package): version('1.0', '0123456789abcdef0123456789abcdef') + variant( + 'foo', + values=('bar', 'baz', 'fee'), + default='bar', + description='', + multi=True + ) + + variant( + 'foobar', + values=('bar', 'baz', 'fee'), + default='bar', + description='', + multi=False + ) + + def with_or_without_fee(self, activated): + if not activated: + return '--no-fee' + return '--fee-all-the-time' + + def autoreconf(self, spec, prefix): + pass + + def configure(self, spec, prefix): + pass + + def build(self, spec, prefix): + pass + def install(self, spec, prefix): pass diff --git a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py new file mode 100644 index 00000000000..13c3b02e775 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class MultivalueVariant(Package): + homepage = "http://www.llnl.gov" + url = "http://www.llnl.gov/mpileaks-1.0.tar.gz" + + version(1.0, 'foobarbaz') + version(2.1, 'foobarbaz') + version(2.2, 'foobarbaz') + version(2.3, 'foobarbaz') + + variant('debug', default=False, description='Debug variant') + variant( + 'foo', + description='Multi-valued variant', + values=('bar', 'baz', 'barbaz'), + multi=True + ) + + variant( + 'fee', + description='Single-valued variant', + default='bar', + values=('bar', 'baz', 'barbaz'), + multi=False + ) + + depends_on('mpi') + depends_on('callpath') + + def install(self, spec, prefix): + pass diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index 90039d4479e..3cee41b299e 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -27,7 +27,8 @@ class Cdo(Package): """CDO is a collection of command line Operators to manipulate and analyse - Climate and NWP model Data. """ + Climate and NWP model Data. + """ homepage = "https://code.zmaw.de/projects/cdo" url = "https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz" diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index d952165ac1d..3844f804be0 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -22,11 +22,20 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * import sys +from spack import * +from spack.error import SpackError -class Mvapich2(Package): + +def _process_manager_validator(values): + if len(values) > 1 and 'slurm' in values: + raise SpackError( + 'slurm cannot be activated along with other process managers' + ) + + +class Mvapich2(AutotoolsPackage): """MVAPICH2 is an MPI implementation for Infiniband networks.""" homepage = "http://mvapich.cse.ohio-state.edu/" url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.2.tar.gz" @@ -55,62 +64,39 @@ class Mvapich2(Package): # serialized - User serializes calls to MPI (MPI_THREAD_SERIALIZED) # multiple - Fully multi-threaded (MPI_THREAD_MULTIPLE) # runtime - Alias to "multiple" - variant('threads', default='multiple', - description='Control the level of thread support') + variant( + 'threads', + default='multiple', + values=('single', 'funneled', 'serialized', 'multiple'), + multi=False, + description='Control the level of thread support' + ) # 32 is needed when job size exceeds 32768 cores - variant('ch3_rank_bits', default=32, - description='Number of bits allocated to the rank field (16 or 32)' - ) + variant( + 'ch3_rank_bits', + default='32', + values=('16', '32'), + multi=False, + description='Number of bits allocated to the rank field (16 or 32)' + ) - ########## - # TODO : Process managers should be grouped into the same variant, - # as soon as variant capabilities will be extended See - # https://groups.google.com/forum/#!topic/spack/F8-f8B4_0so - SLURM = 'slurm' - HYDRA = 'hydra' - GFORKER = 'gforker' - REMSHELL = 'remshell' - SLURM_INCOMPATIBLE_PMS = (HYDRA, GFORKER, REMSHELL) - variant(SLURM, default=False, - description='Set slurm as the only process manager') - variant(HYDRA, default=False, - description='Set hydra as one of the process managers') - variant(GFORKER, default=False, - description='Set gforker as one of the process managers') - variant(REMSHELL, default=False, - description='Set remshell as one of the process managers') - ########## + variant( + 'process_managers', + description='List of the process managers to activate', + values=('slurm', 'hydra', 'gforker', 'remshell'), + multi=True, + validator=_process_manager_validator + ) - ########## - # TODO : Network types should be grouped into the same variant, as - # soon as variant capabilities will be extended - PSM = 'psm' - SOCK = 'sock' - NEMESISIBTCP = 'nemesisibtcp' - NEMESISIB = 'nemesisib' - NEMESIS = 'nemesis' - MRAIL = 'mrail' - SUPPORTED_NETWORKS = (PSM, SOCK, NEMESIS, NEMESISIB, NEMESISIBTCP) variant( - PSM, default=False, - description='Configure for QLogic PSM-CH3') - variant( - SOCK, default=False, - description='Configure for TCP/IP-CH3') - variant( - NEMESISIBTCP, default=False, - description='Configure for both OFA-IB-Nemesis and TCP/IP-Nemesis') - variant( - NEMESISIB, default=False, - description='Configure for OFA-IB-Nemesis') - variant( - NEMESIS, default=False, - description='Configure for TCP/IP-Nemesis') - variant( - MRAIL, default=False, - description='Configure for OFA-IB-CH3') - ########## + 'fabrics', + description='The fabric enabled for this build', + default='psm', + values=( + 'psm', 'sock', 'nemesisib', 'nemesis', 'mrail', 'nemesisibtcp' + ) + ) # FIXME : CUDA support is missing depends_on('bison') @@ -123,110 +109,52 @@ def url_for_version(self, version): else: return "%s/mvapich/mv2/mvapich2-%s.tar.gz" % (base_url, version) - @staticmethod - def enabled(x): - """Given a variant name returns the string that means the variant is - enabled + @property + def process_manager_options(self): + spec = self.spec - :param x: variant name - :return: - """ - return '+' + x + other_pms = [] + for x in ('hydra', 'gforker', 'remshell'): + if 'process_managers={0}'.format(x) in spec: + other_pms.append(x) + opts = ['--with-pm=%s' % ':'.join(other_pms)] - def set_build_type(self, spec, configure_args): - """Appends to configure_args the flags that depends only on the build - type (i.e. release or debug) - - :param spec: spec - :param configure_args: list of current configure arguments - """ - if '+debug' in spec: - build_type_options = [ - "--disable-fast", - "--enable-error-checking=runtime", - "--enable-error-messages=all", - # Permits debugging with TotalView - "--enable-g=dbg", "--enable-debuginfo" - ] - else: - build_type_options = ["--enable-fast=all"] - - configure_args.extend(build_type_options) - - def set_process_manager(self, spec, configure_args): - """Appends to configure_args the flags that will enable the - appropriate process managers - - :param spec: spec - :param configure_args: list of current configure arguments - """ - # Check that slurm variant is not activated together with - # other pm variants - has_slurm_incompatible_variants = \ - any(self.enabled(x) in spec - for x in Mvapich2.SLURM_INCOMPATIBLE_PMS) - - if self.enabled(Mvapich2.SLURM) in spec and \ - has_slurm_incompatible_variants: - raise RuntimeError(" %s : 'slurm' cannot be activated \ - together with other process managers" % self.name) - - process_manager_options = [] # See: http://slurm.schedmd.com/mpi_guide.html#mvapich2 - if self.enabled(Mvapich2.SLURM) in spec: + if 'process_managers=slurm' in spec: if self.version > Version('2.0'): - process_manager_options = [ - "--with-pmi=pmi2", - "--with-pm=slurm" + opts = [ + '--with-pmi=pmi2', + '--with-pm=slurm' ] else: - process_manager_options = [ - "--with-pmi=slurm", - "--with-pm=no" + opts = [ + '--with-pmi=slurm', + '--with-pm=no' ] - elif has_slurm_incompatible_variants: - pms = [] - # The variant name is equal to the process manager name in - # the configuration options - for x in Mvapich2.SLURM_INCOMPATIBLE_PMS: - if self.enabled(x) in spec: - pms.append(x) - process_manager_options = [ - "--with-pm=%s" % ':'.join(pms) - ] - configure_args.extend(process_manager_options) + return opts - def set_network_type(self, spec, configure_args): - # Check that at most one variant has been activated - count = 0 - for x in Mvapich2.SUPPORTED_NETWORKS: - if self.enabled(x) in spec: - count += 1 - if count > 1: - raise RuntimeError('network variants are mutually exclusive \ - (only one can be selected at a time)') - - network_options = [] + @property + def network_options(self): + opts = [] # From here on I can suppose that only one variant has been selected - if self.enabled(Mvapich2.PSM) in spec: - network_options = ["--with-device=ch3:psm"] - elif self.enabled(Mvapich2.SOCK) in spec: - network_options = ["--with-device=ch3:sock"] - elif self.enabled(Mvapich2.NEMESISIBTCP) in spec: - network_options = ["--with-device=ch3:nemesis:ib,tcp"] - elif self.enabled(Mvapich2.NEMESISIB) in spec: - network_options = ["--with-device=ch3:nemesis:ib"] - elif self.enabled(Mvapich2.NEMESIS) in spec: - network_options = ["--with-device=ch3:nemesis"] - elif self.enabled(Mvapich2.MRAIL) in spec: - network_options = ["--with-device=ch3:mrail", "--with-rdma=gen2"] - - configure_args.extend(network_options) + if 'fabrics=psm' in self.spec: + opts = ["--with-device=ch3:psm"] + elif 'fabrics=sock' in self.spec: + opts = ["--with-device=ch3:sock"] + elif 'fabrics=nemesisibtcp' in self.spec: + opts = ["--with-device=ch3:nemesis:ib,tcp"] + elif 'fabrics=nemesisib' in self.spec: + opts = ["--with-device=ch3:nemesis:ib"] + elif 'fabrics=nemesis' in self.spec: + opts = ["--with-device=ch3:nemesis"] + elif 'fabrics=mrail' in self.spec: + opts = ["--with-device=ch3:mrail", "--with-rdma=gen2"] + return opts def setup_environment(self, spack_env, run_env): - if self.enabled(Mvapich2.SLURM) in self.spec and \ - self.version > Version('2.0'): + spec = self.spec + if 'process_managers=slurm' in spec and spec.satisfies('@2.0:'): run_env.set('SLURM_MPI_TYPE', 'pmi2') def setup_dependent_environment(self, spack_env, run_env, dependent_spec): @@ -251,48 +179,44 @@ def setup_dependent_package(self, module, dependent_spec): join_path(self.prefix.lib, 'libmpi.{0}'.format(dso_suffix)) ] - def install(self, spec, prefix): + @run_before('configure') + def die_without_fortran(self): # Until we can pass variants such as +fortran through virtual # dependencies depends_on('mpi'), require Fortran compiler to # avoid delayed build errors in dependents. if (self.compiler.f77 is None) or (self.compiler.fc is None): - raise InstallError('Mvapich2 requires both C and Fortran ', - 'compilers!') + raise InstallError( + 'Mvapich2 requires both C and Fortran compilers!' + ) - # we'll set different configure flags depending on our - # environment - configure_args = [ - "--prefix=%s" % prefix, - "--enable-shared", - "--enable-romio", - "--disable-silent-rules", + def configure_args(self): + args = [ + '--enable-shared', + '--enable-romio', + '-disable-silent-rules', + '--enable-fortran=all', "--enable-threads={0}".format(spec.variants['threads'].value), "--with-ch3-rank-bits={0}".format( spec.variants['ch3_rank_bits'].value), ] - if self.compiler.f77 and self.compiler.fc: - configure_args.append("--enable-fortran=all") - elif self.compiler.f77: - configure_args.append("--enable-fortran=f77") - elif self.compiler.fc: - configure_args.append("--enable-fortran=fc") + if '+debug' in self.spec: + args.extend([ + '--disable-fast', + '--enable-error-checking=runtime', + '--enable-error-messages=all', + # Permits debugging with TotalView + '--enable-g=dbg', + '--enable-debuginfo' + ]) else: - configure_args.append("--enable-fortran=none") + args.append('--enable-fast=all') - # Set the type of the build (debug, release) - self.set_build_type(spec, configure_args) - # Set the process manager - self.set_process_manager(spec, configure_args) - # Determine network type by variant - self.set_network_type(spec, configure_args) - - configure(*configure_args) - make() - make("install") - - self.filter_compilers() + args.extend(self.process_manager_options) + args.extend(self.network_options) + return args + @run_after('install') def filter_compilers(self): """Run after install to make the MPI compilers use the compilers that Spack built the package with. @@ -302,7 +226,7 @@ def filter_compilers(self): be bound to whatever compiler they were built with. """ bin = self.prefix.bin - mpicc = join_path(bin, 'mpicc') + mpicc = join_path(bin, 'mpicc') mpicxx = join_path(bin, 'mpicxx') mpif77 = join_path(bin, 'mpif77') mpif90 = join_path(bin, 'mpif90') diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py index ca6a30e9a4d..f3f0ed59a6d 100644 --- a/var/spack/repos/builtin/packages/netcdf/package.py +++ b/var/spack/repos/builtin/packages/netcdf/package.py @@ -24,6 +24,16 @@ ############################################################################## from spack import * +import numbers + + +def is_integral(x): + """Any integer value""" + try: + return isinstance(int(x), numbers.Integral) and not isinstance(x, bool) + except ValueError: + return False + class Netcdf(AutotoolsPackage): """NetCDF is a set of software libraries and self-describing, @@ -52,10 +62,18 @@ class Netcdf(AutotoolsPackage): # These variants control the number of dimensions (i.e. coordinates and # attributes) and variables (e.g. time, entity ID, number of coordinates) # that can be used in any particular NetCDF file. - variant('maxdims', default=1024, - description='Defines the maximum dimensions of NetCDF files.') - variant('maxvars', default=8192, - description='Defines the maximum variables of NetCDF files.') + variant( + 'maxdims', + default=1024, + description='Defines the maximum dimensions of NetCDF files.', + values=is_integral + ) + variant( + 'maxvars', + default=8192, + description='Defines the maximum variables of NetCDF files.', + values=is_integral + ) depends_on("m4", type='build') depends_on("hdf", when='+hdf4') diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 63579efe0ef..2761df543d4 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -22,13 +22,16 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * + import os +from spack import * + def _verbs_dir(): """Try to find the directory where the OpenFabrics verbs package is - installed. Return None if not found.""" + installed. Return None if not found. + """ try: # Try to locate Verbs by looking for a utility in the path ibv_devices = which("ibv_devices") @@ -43,7 +46,7 @@ def _verbs_dir(): if path == "/": path = "/usr" return path - except: + except TypeError: return None @@ -82,22 +85,20 @@ class Openmpi(AutotoolsPackage): patch('configure.patch', when="@1.10.0:1.10.1") patch('fix_multidef_pmi_class.patch', when="@2.0.0:2.0.1") - # Fabrics - variant('psm', default=False, description='Build support for the PSM library') - variant('psm2', default=False, - description='Build support for the Intel PSM2 library') - variant('pmi', default=False, - description='Build support for PMI-based launchers') - variant('verbs', default=_verbs_dir() is not None, - description='Build support for OpenFabrics verbs') - variant('mxm', default=False, description='Build Mellanox Messaging support') + variant( + 'fabrics', + default=None if _verbs_dir() is None else 'verbs', + description='List of fabrics that are enabled', + values=('psm', 'psm2', 'pmi', 'verbs', 'mxm'), + multi=True + ) - # Schedulers - # TODO: support for alps and loadleveler is missing - variant('tm', default=False, - description='Build TM (Torque, PBSPro, and compatible) support') - variant('slurm', default=False, - description='Build SLURM scheduler component') + variant( + 'schedulers', + description='List of schedulers for which support is enabled', + values=('alps', 'lsf', 'tm', 'slurm', 'sge', 'loadleveler'), + multi=True + ) # Additional support options variant('java', default=False, description='Build Java support') @@ -114,7 +115,7 @@ class Openmpi(AutotoolsPackage): depends_on('hwloc') depends_on('hwloc +cuda', when='+cuda') depends_on('jdk', when='+java') - depends_on('sqlite', when='+sqlite3') + depends_on('sqlite', when='+sqlite3@:1.11') def url_for_version(self, version): return "http://www.open-mpi.org/software/ompi/v%s/downloads/openmpi-%s.tar.bz2" % ( @@ -153,15 +154,22 @@ def setup_dependent_package(self, module, dependent_spec): join_path(self.prefix.lib, 'libmpi.{0}'.format(dso_suffix)) ] - @property - def verbs(self): + def with_or_without_verbs(self, activated): # Up through version 1.6, this option was previously named # --with-openib - if self.spec.satisfies('@:1.6'): - return 'openib' + opt = 'openib' # In version 1.7, it was renamed to be --with-verbs - elif self.spec.satisfies('@1.7:'): - return 'verbs' + if self.spec.satisfies('@1.7:'): + opt = 'verbs' + # If the option has not been activated return + # --without-openib or --without-verbs + if not activated: + return '--without-{0}'.format(opt) + line = '--with-{0}'.format(opt) + path = _verbs_dir() + if (path is not None) and (path not in ('/usr', '/usr/local')): + line += '={0}'.format(path) + return line @run_before('autoreconf') def die_without_fortran(self): @@ -175,48 +183,17 @@ def die_without_fortran(self): def configure_args(self): spec = self.spec - config_args = [ '--enable-shared', - '--enable-static', - '--enable-mpi-cxx', - # Schedulers - '--with-tm' if '+tm' in spec else '--without-tm', - '--with-slurm' if '+slurm' in spec else '--without-slurm', - # Fabrics - '--with-psm' if '+psm' in spec else '--without-psm', + '--enable-static' ] + if self.spec.satisfies('@2.0:'): + # for Open-MPI 2.0:, C++ bindings are disabled by default. + config_args.extend(['--enable-mpi-cxx']) - # Intel PSM2 support - if spec.satisfies('@1.10:'): - if '+psm2' in spec: - config_args.append('--with-psm2') - else: - config_args.append('--without-psm2') - - # PMI support - if spec.satisfies('@1.5.5:'): - if '+pmi' in spec: - config_args.append('--with-pmi') - else: - config_args.append('--without-pmi') - - # Mellanox Messaging support - if spec.satisfies('@1.5.4:'): - if '+mxm' in spec: - config_args.append('--with-mxm') - else: - config_args.append('--without-mxm') - - # OpenFabrics verbs support - if '+verbs' in spec: - path = _verbs_dir() - if path is not None and path not in ('/usr', '/usr/local'): - config_args.append('--with-{0}={1}'.format(self.verbs, path)) - else: - config_args.append('--with-{0}'.format(self.verbs)) - else: - config_args.append('--without-{0}'.format(self.verbs)) + # Fabrics and schedulers + config_args.extend(self.with_or_without('fabrics')) + config_args.extend(self.with_or_without('schedulers')) # Hwloc support if spec.satisfies('@1.5.2:'): @@ -270,11 +247,11 @@ def configure_args(self): @run_after('install') def filter_compilers(self): """Run after install to make the MPI compilers use the - compilers that Spack built the package with. + compilers that Spack built the package with. - If this isn't done, they'll have CC, CXX and FC set - to Spack's generic cc, c++ and f90. We want them to - be bound to whatever compiler they were built with. + If this isn't done, they'll have CC, CXX and FC set + to Spack's generic cc, c++ and f90. We want them to + be bound to whatever compiler they were built with. """ kwargs = {'ignore_absent': True, 'backup': False, 'string': False} wrapper_basepath = join_path(self.prefix, 'share', 'openmpi') From c86b53a73fca0a7d14b5a44c69034bbdd619025e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 1 May 2017 15:19:51 -0500 Subject: [PATCH 0809/2394] Add latest version of libtiff (#4067) --- var/spack/repos/builtin/packages/libtiff/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libtiff/package.py b/var/spack/repos/builtin/packages/libtiff/package.py index 3e5b57a9656..db16f640c2b 100644 --- a/var/spack/repos/builtin/packages/libtiff/package.py +++ b/var/spack/repos/builtin/packages/libtiff/package.py @@ -28,8 +28,9 @@ class Libtiff(AutotoolsPackage): """libtiff graphics format library""" homepage = "http://www.simplesystems.org/libtiff/" - url = "http://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz" + url = "http://download.osgeo.org/libtiff/tiff-4.0.7.tar.gz" + version('4.0.7', '77ae928d2c6b7fb46a21c3a29325157b') version('4.0.6', 'd1d2e940dea0b5ad435f21f03d96dd72') version('4.0.3', '051c1068e6a0627f461948c365290410') From ef5da08f80bec4be4d62e1d16165a9b19ec0ebdf Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 1 May 2017 22:58:24 +0200 Subject: [PATCH 0810/2394] only add direct build-only dependencies to PATH --- lib/spack/spack/build_environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 2ac935291d3..c3f887fd694 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -248,7 +248,7 @@ def set_build_environment_variables(pkg, env, dirty=False): dirty (bool): Skip unsetting the user's environment settings """ # Gather information about various types of dependencies - build_deps = pkg.spec.traverse(root=False, deptype=('build')) + build_deps = pkg.spec.dependencies(deptype='build') link_deps = pkg.spec.traverse(root=False, deptype=('link')) build_link_deps = pkg.spec.traverse(root=False, deptype=('build', 'link')) rpath_deps = get_rpath_deps(pkg) From 094d47bff15b67d6e04b9fedf0637f3a2767cf1a Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 1 May 2017 14:32:33 -0700 Subject: [PATCH 0811/2394] Allow user to specify profile sort column on the command line. (#4056) - Add -P argument so that caller can specify a sort column for cProfile. Can specify multiple columns with commas. e.g.: spack -P cumtime,module - Add --lines option to Spack spec to control number of profile lines displayed - Sort by time by default (because it works in all Python versions) - Show sort column options in command help. - Do a short profile run in the unit tests. --- bin/spack | 45 ++++++++++++++++++++++++++++++++--- share/spack/qa/run-unit-tests | 3 +++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/bin/spack b/bin/spack index c737a0f178c..922e6a6be45 100755 --- a/bin/spack +++ b/bin/spack @@ -93,6 +93,12 @@ from llnl.util.tty.color import * import spack from spack.error import SpackError import argparse +import pstats + +# Get the allowed names of statistics for cProfile, and make a list of +# groups of 7 names to wrap them nicely. +stat_names = pstats.Stats.sort_arg_dict_default +stat_lines = list(zip(*(iter(stat_names),)*7)) # Command parsing parser = argparse.ArgumentParser( @@ -120,10 +126,15 @@ parser.add_argument('-m', '--mock', action='store_true', help="use mock packages instead of real ones") parser.add_argument('-p', '--profile', action='store_true', help="profile execution using cProfile") +parser.add_argument('-P', '--sorted-profile', default=None, metavar="STAT", + help="profile and sort by one or more of:\n[%s]" % + ',\n '.join([', '.join(line) for line in stat_lines])) +parser.add_argument('--lines', default=20, action='store', + help="lines of profile output: default 20; 'all' for all") parser.add_argument('-v', '--verbose', action='store_true', help="print additional output during builds") parser.add_argument('-s', '--stacktrace', action='store_true', - help="add stacktrace information to all printed statements") + help="add stacktrace info to all printed statements") parser.add_argument('-V', '--version', action='version', version="%s" % spack.spack_version) @@ -206,9 +217,37 @@ def main(args): # actually parse the args. args, unknown = parser.parse_known_args() - if args.profile: + if args.profile or args.sorted_profile: import cProfile - cProfile.runctx('_main(args, unknown)', globals(), locals()) + + try: + nlines = int(args.lines) + except ValueError: + if args.lines != 'all': + tty.die('Invalid number for --lines: %s' % args.lines) + nlines = -1 + + # allow comma-separated list of fields + sortby = ['time'] + if args.sorted_profile: + sortby = args.sorted_profile.split(',') + for stat in sortby: + if stat not in stat_names: + tty.die("Invalid sort field: %s" % stat) + + try: + # make a profiler and run the code. + pr = cProfile.Profile() + pr.enable() + _main(args, unknown) + finally: + pr.disable() + + # print out profile stats. + stats = pstats.Stats(pr) + stats.sort_stats(*sortby) + stats.print_stats(nlines) + elif args.pdb: import pdb pdb.runctx('_main(args, unknown)', globals(), locals()) diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index 7e300280ff1..fe2ec6f54ac 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -20,6 +20,9 @@ cd "$SPACK_ROOT" # Print compiler information spack config get compilers +# Profile and print top 20 lines for a simple call to spack spec +${coverage_run} bin/spack -p --lines 20 spec mpileaks + # Run unit tests with code coverage ${coverage_run} bin/spack test "$@" ${coverage_combine} From 708d8586eab7c8a1960a7a30269a0c43317746af Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 2 May 2017 08:43:37 +0200 Subject: [PATCH 0812/2394] add run-time dependencies of direct build-time dependencies to PATH --- lib/spack/spack/build_environment.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index c3f887fd694..ac1eaaa77a5 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -258,6 +258,11 @@ def set_build_environment_variables(pkg, env, dirty=False): build_link_prefixes = [dep.prefix for dep in build_link_deps] rpath_prefixes = [dep.prefix for dep in rpath_deps] + # add run-time dependencies of direct build-time dependencies: + for bd in build_deps: + for rd in bd.dependencies(deptype='run'): + build_prefixes.append(rd.prefix) + # Filter out system paths: ['/', '/usr', '/usr/local'] # These paths can be introduced into the build when an external package # is added as a dependency. The problem with these paths is that they often From b32afbbbcb033022cfe99f7118f75ce6eb8af167 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 2 May 2017 11:26:30 +0200 Subject: [PATCH 0813/2394] mvapich2: fixed broken reference to spec (#4078) --- var/spack/repos/builtin/packages/mvapich2/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 3844f804be0..cc874356d38 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -190,6 +190,7 @@ def die_without_fortran(self): ) def configure_args(self): + spec = self.spec args = [ '--enable-shared', '--enable-romio', From 0f9059236c34f1932cf5e2721bb3290703701bc7 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 2 May 2017 09:44:02 -0500 Subject: [PATCH 0814/2394] Add missing dependencies to emacs (#4068) --- var/spack/repos/builtin/packages/emacs/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py index dac57682ea3..71733eebd27 100644 --- a/var/spack/repos/builtin/packages/emacs/package.py +++ b/var/spack/repos/builtin/packages/emacs/package.py @@ -39,7 +39,10 @@ class Emacs(AutotoolsPackage): variant('toolkit', default='gtk', description="Select an X toolkit (gtk, athena)") + depends_on('pkg-config@0.9.0:', type='build') + depends_on('ncurses') + depends_on('zlib') depends_on('libtiff', when='+X') depends_on('libpng', when='+X') depends_on('libxpm', when='+X') From 9a3acea759b2d36a10cab92c7e08fa7d59cdb281 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 2 May 2017 09:45:10 -0500 Subject: [PATCH 0815/2394] Allow ghostscript to build with Spack dependencies (#4065) --- .../builtin/packages/ghostscript/package.py | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/ghostscript/package.py b/var/spack/repos/builtin/packages/ghostscript/package.py index 2e884b42788..255abaa6bd7 100644 --- a/var/spack/repos/builtin/packages/ghostscript/package.py +++ b/var/spack/repos/builtin/packages/ghostscript/package.py @@ -23,28 +23,59 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import shutil -class Ghostscript(Package): +class Ghostscript(AutotoolsPackage): """An interpreter for the PostScript language and for PDF.""" homepage = "http://ghostscript.com/" url = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs921/ghostscript-9.21.tar.gz" - version('9.21', '6f60d7fcb5eef6a8bec5abedf21c6a7008a8c0c7') + version('9.21', '5f213281761d2750fcf27476c404d17f') version('9.18', '33a47567d7a591c00a253caddd12a88a') - parallel = False + depends_on('pkg-config', type='build') + depends_on('freetype@2.4.2:') + depends_on('jpeg') + depends_on('lcms') + depends_on('libpng') depends_on('libtiff') + depends_on('zlib') def url_for_version(self, version): baseurl = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs{0}/ghostscript-{1}.tar.gz" return baseurl.format(version.joined, version.dotted) - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix), - '--with-system-libtiff') + def patch(self): + """Ghostscript comes with all of its dependencies vendored. + In order to build with Spack versions of these dependencies, + we have to remove these vendored dependencies. + Note that this approach is also recommended by Linux from Scratch: + http://www.linuxfromscratch.org/blfs/view/svn/pst/gs.html + """ + directories = ['freetype', 'jpeg', 'lcms2', 'libpng', 'zlib'] + for directory in directories: + shutil.rmtree(directory) + + filter_file('ZLIBDIR=src', + 'ZLIBDIR={0}'.format(self.spec['zlib'].prefix.include), + 'configure.ac', 'configure', + string=True) + + def configure_args(self): + return [ + '--disable-compile-inits', + '--enable-dynamic', + '--with-system-libtiff', + ] + + def build(self, spec, prefix): make() + make('so') + + def install(self, spec, prefix): make('install') + make('soinstall') From 1336630f172bf30c1c3d85a5acbe8295c5e2d852 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 2 May 2017 11:20:45 -0500 Subject: [PATCH 0816/2394] Add link to spack view docs in command index (#4082) --- lib/spack/docs/workflows.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/spack/docs/workflows.rst b/lib/spack/docs/workflows.rst index 7814ebf3cd1..84da3b0f442 100644 --- a/lib/spack/docs/workflows.rst +++ b/lib/spack/docs/workflows.rst @@ -476,10 +476,11 @@ if the view is built with hardlinks. .. FIXME: reference the relocation work of Hegner and Gartung (PR #1013) +.. _cmd-spack-view: -"""""""""""""""""""""" -Using Filesystem Views -"""""""""""""""""""""" +"""""""""""""" +``spack view`` +"""""""""""""" A filesystem view is created, and packages are linked in, by the ``spack view`` command's ``symlink`` and ``hardlink`` sub-commands. The From 78c4d0bd2091805c644f5b00f052ee70e0a5d0e4 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 2 May 2017 19:27:37 +0200 Subject: [PATCH 0817/2394] cgal: updated version (#4081) --- var/spack/repos/builtin/packages/cgal/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index a16572246bc..60762006f94 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -35,6 +35,7 @@ class Cgal(Package): homepage = 'http://www.cgal.org/' url = 'https://github.com/CGAL/cgal/archive/releases/CGAL-4.7.tar.gz' + version('4.9.1', 'df6517df3320bf6c9de2e1b0361738b9') version('4.9', '7b628db3e5614347f776c046b7666089') version('4.7', '4826714810f3b4c65cac96b90fb03b67') version('4.6.3', 'e8ee2ecc8d2b09b94a121c09257b576d') From a0efcaef69546638f9a9d53427fe2a22da5ca770 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Tue, 2 May 2017 15:27:56 -0500 Subject: [PATCH 0818/2394] Add the libconfig package (#4097) --- .../builtin/packages/libconfig/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libconfig/package.py diff --git a/var/spack/repos/builtin/packages/libconfig/package.py b/var/spack/repos/builtin/packages/libconfig/package.py new file mode 100644 index 00000000000..54aeec5b2f5 --- /dev/null +++ b/var/spack/repos/builtin/packages/libconfig/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libconfig(AutotoolsPackage): + """C/C++ Configuration File Library""" + + homepage = "http://www.hyperrealm.com/libconfig/" + url = "https://github.com/hyperrealm/libconfig/archive/v1.6.tar.gz" + + force_autoreconf = True + # there is currently a build error with version 1.6, see: + # https://github.com/hyperrealm/libconfig/issues/47 + # version('1.6', '2ccd24b6a2ee39f7ff8a3badfafb6539') + version('1.5', 'e92a91c2ddf3bf77bea0f5ed7f09e492', preferred=True) + + depends_on('m4', type=('build')) + depends_on('autoconf', type=('build')) + depends_on('automake', type=('build')) + depends_on('libtool', type=('build')) From 39ddc7d159774184df897d8334c7456f6f52b2cc Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Tue, 2 May 2017 15:28:19 -0500 Subject: [PATCH 0819/2394] Add py-libconf package (#4096) --- .../builtin/packages/py-libconf/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-libconf/package.py diff --git a/var/spack/repos/builtin/packages/py-libconf/package.py b/var/spack/repos/builtin/packages/py-libconf/package.py new file mode 100644 index 00000000000..d43479d9ef3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-libconf/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyLibconf(PythonPackage): + """A pure-Python libconfig reader/writer with permissive license""" + + homepage = "https://pypi.python.org/pypi/libconf" + url = "https://pypi.io/packages/source/l/libconf/libconf-1.0.1.tar.gz" + + version('1.0.1', 'd37d355b3248f99802c46669ba38e406') + + depends_on('py-setuptools', type='build') From 70ea990efdcd9f46c0acf5de3aef277c7095144c Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Tue, 2 May 2017 15:28:46 -0500 Subject: [PATCH 0820/2394] Add py-pyprof2html package (#4095) --- .../packages/py-pyprof2html/package.py | 39 +++++++++++++++++++ .../py-pyprof2html/version_0.3.1.patch | 10 +++++ 2 files changed, 49 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pyprof2html/package.py create mode 100644 var/spack/repos/builtin/packages/py-pyprof2html/version_0.3.1.patch diff --git a/var/spack/repos/builtin/packages/py-pyprof2html/package.py b/var/spack/repos/builtin/packages/py-pyprof2html/package.py new file mode 100644 index 00000000000..19e3967e350 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyprof2html/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPyprof2html(PythonPackage): + """Python cProfile and hotshot profile's data to HTML Converter""" + + homepage = "https://pypi.python.org/pypi/pyprof2html/" + url = "https://pypi.io/packages/source/p/pyprof2html/pyprof2html-0.3.1.tar.gz" + + version('0.3.1', 'aa65a1635aac95e0487d7749a6351c43') + + patch('version_0.3.1.patch', when="@0.3.1") + + depends_on('py-setuptools', type='build') + depends_on('py-jinja2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pyprof2html/version_0.3.1.patch b/var/spack/repos/builtin/packages/py-pyprof2html/version_0.3.1.patch new file mode 100644 index 00000000000..fd0e856cb5e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyprof2html/version_0.3.1.patch @@ -0,0 +1,10 @@ +diff --git a/pyprof2html/__init__.py b/pyprof2html/__init__.py +index 342eb6d..74b3392 100644 +--- a/pyprof2html/__init__.py ++++ b/pyprof2html/__init__.py +@@ -10,3 +10,5 @@ __licence__ = 'New BSD License' + __author__ = 'Hideo Hattori ' + + __all__ = ['Converter', 'pyprof2html_main'] ++ ++__version__ = '0.3.1' From 2a1301596d4fd762c38c8efd13a8085f905c8fbc Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Tue, 2 May 2017 15:29:48 -0500 Subject: [PATCH 0821/2394] Add the py-xvfbwrapper package (#4093) --- .../packages/py-xvfbwrapper/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-xvfbwrapper/package.py diff --git a/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py b/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py new file mode 100644 index 00000000000..3c10c179d1b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyXvfbwrapper(PythonPackage): + """run headless display inside X virtual framebuffer (Xvfb)""" + + homepage = "https://pypi.python.org/pypi/xvfbwrapper/0.2.9" + url = "https://pypi.io/packages/source/x/xvfbwrapper/xvfbwrapper-0.2.9.tar.gz" + + version('0.2.9', '3f3cbed698606f4b14e76ccc7b5dd366') + + depends_on('py-setuptools', type='build') + # Eventually add xvfb! From abdb1fb0a0eb39e66c218f96d5179051d336db09 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Tue, 2 May 2017 16:34:28 -0500 Subject: [PATCH 0822/2394] Add the py-webkit-server package (#4092) * Add the py-webkit-server package * Change development to develop --- .../packages/py-webkit-server/package.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-webkit-server/package.py diff --git a/var/spack/repos/builtin/packages/py-webkit-server/package.py b/var/spack/repos/builtin/packages/py-webkit-server/package.py new file mode 100644 index 00000000000..8393ddabbfd --- /dev/null +++ b/var/spack/repos/builtin/packages/py-webkit-server/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyWebkitServer(PythonPackage): + """a Webkit-based, headless web client""" + + homepage = "https://github.com/niklasb/webkit-server" + url = "https://pypi.io/packages/source/w/webkit-server/webkit-server-1.0.tar.gz" + + version('develop', git="https://github.com/niklasb/webkit-server", branch="master") + version('1.0', '8463245c2b4f0264d934c0ae20bd4654') From f265eefa22c2124a1f7eb3ec92414a7ac64078e1 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Tue, 2 May 2017 16:35:15 -0500 Subject: [PATCH 0823/2394] Add findutils package (#4091) --- .../builtin/packages/findutils/package.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 var/spack/repos/builtin/packages/findutils/package.py diff --git a/var/spack/repos/builtin/packages/findutils/package.py b/var/spack/repos/builtin/packages/findutils/package.py new file mode 100644 index 00000000000..f436e53d1ab --- /dev/null +++ b/var/spack/repos/builtin/packages/findutils/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Findutils(AutotoolsPackage): + """The GNU Find Utilities are the basic directory searching + utilities of the GNU operating system.""" + + homepage = "https://www.gnu.org/software/findutils/" + url = "http://ftpmirror.gnu.org/findutils/findutils-4.6.0.tar.gz" + + version('4.6.0', '9936aa8009438ce185bea2694a997fc1') + version('4.4.2', '351cc4adb07d54877fa15f75fb77d39f') + version('4.4.1', '5883f569dc021eee765f330bb7a3782d') + version('4.4.0', '49e769ac4382fae6f104f99d54d0a112') + version('4.2.33', 'b7e35aa175778c84942b1fee4144988b') + version('4.2.32', 'aaa6beeb41a6f04963dff58f24a55b96') + version('4.2.31', 'a0e31a0f18a49709bf5a449867c8049a') + version('4.2.30', 'c35ff6502e0b3514c99089cb5d333c25') + version('4.2.29', '24e76434ca74ba3c2c6ad621eb64e1ff') + version('4.2.28', 'f5fb3349354ee3d94fceb81dab5c71fd') + version('4.2.27', 'f1e0ddf09f28f8102ff3b90f3b5bc920') + version('4.2.26', '9ac4e62937b1fdc4eb643d1d4bf117d3') + version('4.2.25', 'e92fef6714ffa9972f28a1a423066921') + version('4.2.23', 'ecaff8b060e8d69c10eb2391a8032e26') + version('4.2.20', '7c8e12165b221dd67a19c00d780437a4') + version('4.2.18', '8aac2498435f3f1882678fb9ebda5c34') + version('4.2.15', 'a881b15aa7170aea045bf35cc92d48e7') + version('4.1.20', 'e90ce7222daadeb8616b8db461e17cbc') + version('4.1', '3ea8fe58ef5386da75f6c707713aa059') From a651b979ca869be932a6ad8f9686436ab6a16a6e Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Tue, 2 May 2017 16:35:42 -0500 Subject: [PATCH 0824/2394] Update the py-lxml package (#4090) --- var/spack/repos/builtin/packages/py-lxml/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-lxml/package.py b/var/spack/repos/builtin/packages/py-lxml/package.py index ad78d816ceb..fe63f876394 100644 --- a/var/spack/repos/builtin/packages/py-lxml/package.py +++ b/var/spack/repos/builtin/packages/py-lxml/package.py @@ -32,6 +32,10 @@ class PyLxml(PythonPackage): homepage = "http://lxml.de/" url = "https://pypi.io/packages/source/l/lxml/lxml-2.3.tar.gz" + version('3.7.3', '075692ce442e69bbd604d44e21c02753') version('2.3', 'a245a015fd59b63e220005f263e1682a') depends_on('py-setuptools@0.6c5:', type='build') + depends_on('py-cython@0.20:', type='build') + depends_on('libxml2', type=('build', 'run')) + depends_on('libxslt', type=('build', 'run')) From 72d45f7a446a6293ff675fce652a62f27ef2ed77 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Tue, 2 May 2017 18:47:55 -0500 Subject: [PATCH 0825/2394] Add the py-dryscrape package (#4094) * Add the py-dryscrape package * Adjust dependencies and change development to develop --- .../builtin/packages/py-dryscrape/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-dryscrape/package.py diff --git a/var/spack/repos/builtin/packages/py-dryscrape/package.py b/var/spack/repos/builtin/packages/py-dryscrape/package.py new file mode 100644 index 00000000000..e3dd3506a2b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-dryscrape/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyDryscrape(PythonPackage): + """a lightweight Javascript-aware, headless web scraping library + for Python""" + + homepage = "https://github.com/niklasb/dryscrape" + url = "https://pypi.io/packages/source/d/dryscrape/dryscrape-1.0.tar.gz" + + version('develop', git="https://github.com/niklasb/dryscrape", + branch="master") + version('1.0', '267e380a8efaf9cd8fd94de1639d3198') + + depends_on('py-lxml', type=('build', 'run')) + depends_on('py-webkit-server@1.0:', type=('build', 'run')) + depends_on('py-xvfbwrapper', type=('build', 'run')) From ae9a9e019a73cb951d4d2a2585ac71a53f351c81 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 3 May 2017 06:21:37 +0200 Subject: [PATCH 0826/2394] spack: no stacktrace if not in debug mode + fix emacs variant (#4098) * spack: no stacktrace if not in debug mode + fix emacs variant * emacs: removed dead code --- bin/spack | 2 ++ lib/spack/spack/variant.py | 4 ++-- var/spack/repos/builtin/packages/emacs/package.py | 13 +++++++------ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/bin/spack b/bin/spack index 922e6a6be45..5ab805fe549 100755 --- a/bin/spack +++ b/bin/spack @@ -194,6 +194,8 @@ def _main(args, unknown_args): return_val = command(parser, args) except SpackError as e: e.die() + except Exception as e: + tty.die(str(e)) except KeyboardInterrupt: sys.stderr.write('\n') tty.die("Keyboard interrupt.") diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index 7102676b69c..2d02ab1253c 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -389,9 +389,9 @@ def _value_setter(self, value): self._original_value = value self._value = False else: - msg = 'cannot construct a BoolValuedVariant from ' + msg = 'cannot construct a BoolValuedVariant for "{0}" from ' msg += 'a value that does not represent a bool' - raise ValueError(msg) + raise ValueError(msg.format(self.name)) def __contains__(self, item): return item is self.value diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py index 71733eebd27..195cb1281f6 100644 --- a/var/spack/repos/builtin/packages/emacs/package.py +++ b/var/spack/repos/builtin/packages/emacs/package.py @@ -36,8 +36,12 @@ class Emacs(AutotoolsPackage): version('24.5', 'd74b597503a68105e61b5b9f6d065b44') variant('X', default=False, description="Enable an X toolkit") - variant('toolkit', default='gtk', - description="Select an X toolkit (gtk, athena)") + variant( + 'toolkit', + default='gtk', + values=('gtk', 'athena'), + description="Select an X toolkit (gtk, athena)" + ) depends_on('pkg-config@0.9.0:', type='build') @@ -53,12 +57,9 @@ class Emacs(AutotoolsPackage): def configure_args(self): spec = self.spec - args = [] + toolkit = spec.variants['toolkit'].value if '+X' in spec: - if toolkit not in ('gtk', 'athena'): - raise InstallError("toolkit must be in (gtk, athena), not %s" % - toolkit) args = [ '--with-x', '--with-x-toolkit={0}'.format(toolkit) From 7ef46f4f6930897ea2c020da0815c0faea992805 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 3 May 2017 15:06:04 +0200 Subject: [PATCH 0827/2394] hdf5: updated version (#4108) --- var/spack/repos/builtin/packages/hdf5/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 5a3f9e5657a..3fc978e7251 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -37,6 +37,7 @@ class Hdf5(AutotoolsPackage): list_url = "http://www.hdfgroup.org/ftp/HDF5/releases" list_depth = 3 + version('1.10.1', '43a2f9466702fb1db31df98ae6677f15') version('1.10.0-patch1', '9180ff0ef8dc2ef3f61bd37a7404f295') version('1.10.0', 'bdc935337ee8282579cd6bc4270ad199') version('1.8.18', 'dd2148b740713ca0295442ec683d7b1c', From 060351e121b3ae1a7056435d760d7724f5674699 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 3 May 2017 15:12:33 +0200 Subject: [PATCH 0828/2394] bash completion: fixed invalid identifier (#4079) * bash completion: fixed `_spack_create-db-tarball': not a valid identifier * bash completion: dashes are translated to underscores This also fixes the name of the subfunction to be called, as apparently it was not updated after moving the command `create-db-tarball`. --- share/spack/spack-completion.bash | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 819dcc06ab1..b8d104aca8a 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -53,6 +53,9 @@ function _bash_completion_spack { # For example, `spack -d install []` will call _spack_install # and `spack compiler add []` will call _spack_compiler_add local subfunction=$(IFS='_'; echo "_${COMP_WORDS_NO_FLAGS[*]}") + # Translate dashes to underscores, as dashes are not permitted in + # compatibility mode. See https://github.com/LLNL/spack/pull/4079 + subfunction=${subfunction//-/_} # However, the word containing the current cursor position needs to be # added regardless of whether or not it is a flag. This allows us to @@ -288,7 +291,7 @@ function _spack_debug { fi } -function _spack_create-db-tarball { +function _spack_debug_create_db_tarball { compgen -W "-h --help" -- "$cur" } From 07e1597a15a8f7a9a96d2d5b450544b1f8a808f6 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Wed, 3 May 2017 10:29:55 -0500 Subject: [PATCH 0829/2394] building wget depends on perl > 5.12.0 (#4087) * building wget depends on perl > 5.12.0 * Remove extra parenthesis --- var/spack/repos/builtin/packages/wget/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/wget/package.py b/var/spack/repos/builtin/packages/wget/package.py index aff771b723c..10b8c33d319 100644 --- a/var/spack/repos/builtin/packages/wget/package.py +++ b/var/spack/repos/builtin/packages/wget/package.py @@ -39,6 +39,7 @@ class Wget(Package): version('1.16', '293a37977c41b5522f781d3a3a078426') depends_on("openssl") + depends_on("perl@5.12.0:", type='build') def install(self, spec, prefix): configure( From 6e14b97f84342d6a99bae5bec0425c505229b8ea Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Wed, 3 May 2017 12:05:15 -0500 Subject: [PATCH 0830/2394] Update cray compiler options (#4086) --- lib/spack/spack/compilers/cce.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/spack/spack/compilers/cce.py b/lib/spack/spack/compilers/cce.py index 43d000dd695..94956b9d836 100644 --- a/lib/spack/spack/compilers/cce.py +++ b/lib/spack/spack/compilers/cce.py @@ -53,3 +53,15 @@ class Cce(Compiler): @classmethod def default_version(cls, comp): return get_compiler_version(comp, '-V', r'[Vv]ersion.*(\d+(\.\d+)+)') + + @property + def openmp_flag(self): + return "-h omp" + + @property + def cxx11_flag(self): + return "-h std=c++11" + + @property + def pic_flag(self): + return "-h PIC" From 18db25bb026d33fe6ed2bc572c12363ce79e0dc6 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Wed, 3 May 2017 14:17:04 -0500 Subject: [PATCH 0831/2394] Update py-beautifulsoup4 (#4089) * Update py-beautifulsoup4 * Change beautifulsoup4 url to pypi.io url. --- .../repos/builtin/packages/py-beautifulsoup4/package.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py b/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py index 3a90d02127d..f97c01dcede 100644 --- a/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py +++ b/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py @@ -31,11 +31,10 @@ class PyBeautifulsoup4(PythonPackage): of navigating, searching, and modifying the parse tree.""" homepage = "https://www.crummy.com/software/BeautifulSoup" - url = "https://pypi.python.org/packages/source/b/beautifulsoup4/beautifulsoup4-4.4.1.tar.gz" + url = "https://pypi.io/packages/source/b/beautifulsoup4/beautifulsoup4-4.5.3.tar.gz" - version('4.5.1', '994abd90e691beaf7d42c00ffb2f3a67', - url='https://www.crummy.com/software/BeautifulSoup/bs4/' - 'download/4.5/beautifulsoup4-4.5.1.tar.gz') + version('4.5.3', '937e0df0d699a1237646f38fd567f0c6') + version('4.5.1', '994abd90e691beaf7d42c00ffb2f3a67') version('4.4.1', '8fbd9a7cac0704645fa20d1419036815') depends_on('py-setuptools', type='build') From 7592971cb1cdd2af2c2a57cdea1186f2f782eebd Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 4 May 2017 08:43:06 +0200 Subject: [PATCH 0832/2394] add transitive run dependencies of direct build dependencies --- lib/spack/spack/build_environment.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index ac1eaaa77a5..e216d4aa7cd 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -259,9 +259,9 @@ def set_build_environment_variables(pkg, env, dirty=False): rpath_prefixes = [dep.prefix for dep in rpath_deps] # add run-time dependencies of direct build-time dependencies: - for bd in build_deps: - for rd in bd.dependencies(deptype='run'): - build_prefixes.append(rd.prefix) + for build_dep in build_deps: + for run_dep in build_dep.traverse(deptype='run'): + build_prefixes.append(run_dep.prefix) # Filter out system paths: ['/', '/usr', '/usr/local'] # These paths can be introduced into the build when an external package From 26a9793148fe419b2895fe325b63dbe66df74b29 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Thu, 4 May 2017 04:43:28 -0700 Subject: [PATCH 0833/2394] patch sqlite to work around macro definition (#4117) --- var/spack/repos/builtin/packages/sqlite/package.py | 6 ++++++ .../repos/builtin/packages/sqlite/sqlite_b0.patch | 13 +++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sqlite/sqlite_b0.patch diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py index c2f2268f1f9..c12e937af90 100644 --- a/var/spack/repos/builtin/packages/sqlite/package.py +++ b/var/spack/repos/builtin/packages/sqlite/package.py @@ -40,6 +40,12 @@ class Sqlite(AutotoolsPackage): depends_on('readline') + # On some platforms (e.g., PPC) the include chain includes termios.h which + # defines a macro B0. Sqlite has a shell.c source file that declares a + # variable named B0 and will fail to compile when the macro is found. The + # following patch undefines the macro in shell.c + patch('sqlite_b0.patch', when='@3.18.0') + def get_arch(self): arch = architecture.Arch() arch.platform = architecture.platform() diff --git a/var/spack/repos/builtin/packages/sqlite/sqlite_b0.patch b/var/spack/repos/builtin/packages/sqlite/sqlite_b0.patch new file mode 100644 index 00000000000..0be1bb95c17 --- /dev/null +++ b/var/spack/repos/builtin/packages/sqlite/sqlite_b0.patch @@ -0,0 +1,13 @@ +--- a/shell.c 2017-05-03 10:49:13.266276246 -0700 ++++ b/shell.c 2017-05-03 10:51:34.868963321 -0700 +@@ -198,6 +198,10 @@ + #define getrusage(A,B) memset(B,0,sizeof(*B)) + #endif + ++#ifdef B0 ++#undef B0 ++#endif ++ + /* Saved resource information for the beginning of an operation */ + static struct rusage sBegin; /* CPU time at start */ + static sqlite3_int64 iBegin; /* Wall-clock time at start */ From 6a9052bd4dfb7526cc0ed5859ae8907d77d6e12a Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 4 May 2017 19:58:58 +0200 Subject: [PATCH 0834/2394] variants: fixed packages reported by @adamjstewart in #4098 (#4105) --- .../repos/builtin/packages/charm/package.py | 8 ++- .../repos/builtin/packages/matlab/package.py | 15 +++- .../repos/builtin/packages/npb/package.py | 71 +++++++++++++------ .../repos/builtin/packages/plumed/package.py | 8 ++- .../repos/builtin/packages/texlive/package.py | 14 ++-- 5 files changed, 84 insertions(+), 32 deletions(-) diff --git a/var/spack/repos/builtin/packages/charm/package.py b/var/spack/repos/builtin/packages/charm/package.py index 85451eb5ae8..3e84394da8a 100644 --- a/var/spack/repos/builtin/packages/charm/package.py +++ b/var/spack/repos/builtin/packages/charm/package.py @@ -53,8 +53,12 @@ class Charm(Package): # Communication mechanisms (choose exactly one) # TODO: Support Blue Gene/Q PAMI, Cray GNI, Cray shmem, CUDA - variant('backend', default='mpi', description=( - 'Set the backend to use (mpi, multicore, net, netlrts, verbs)')) + variant( + 'backend', + default='mpi', + values=('mpi', 'multicore', 'net', 'netlrts', 'verbs'), + description='Set the backend to use' + ) # Other options # Something is off with PAPI -- there are build errors. Maybe diff --git a/var/spack/repos/builtin/packages/matlab/package.py b/var/spack/repos/builtin/packages/matlab/package.py index 787b89031ed..589116b08b7 100644 --- a/var/spack/repos/builtin/packages/matlab/package.py +++ b/var/spack/repos/builtin/packages/matlab/package.py @@ -45,8 +45,19 @@ class Matlab(Package): version('R2016b', 'b0e0b688894282139fa787b5a86a5cf7') - variant('mode', default='interactive', description='Installation mode (interactive, silent, or automated)') - variant('key', default='', description='The file installation key to use') + variant( + 'mode', + default='interactive', + values=('interactive', 'silent', 'automated'), + description='Installation mode (interactive, silent, or automated)' + ) + + variant( + 'key', + default='', + values=lambda x: True, # Anything goes as a key + description='The file installation key to use' + ) # Licensing license_required = True diff --git a/var/spack/repos/builtin/packages/npb/package.py b/var/spack/repos/builtin/packages/npb/package.py index abf14ef115a..a6e428b3444 100644 --- a/var/spack/repos/builtin/packages/npb/package.py +++ b/var/spack/repos/builtin/packages/npb/package.py @@ -22,9 +22,19 @@ # 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 numbers + from spack import * +def is_integral(x): + """Any integer value""" + try: + return isinstance(int(x), numbers.Integral) and not isinstance(x, bool) + except ValueError: + return False + + class Npb(MakefilePackage): """The NAS Parallel Benchmarks (NPB) are a small set of programs designed to help evaluate the performance of parallel supercomputers. @@ -66,20 +76,39 @@ class Npb(MakefilePackage): ) # TODO: Combine these into a single mutually exclusive variant - variant('mpi', default=True, description='Build the MPI implementation') - variant('openmp', default=False, description='Build the OpenMP implementation') - variant('serial', default=False, description='Build the serial version') + variant( + 'implementation', + default='mpi', + values=('serial', 'mpi', 'openmp'), + description='Selects one among the available implementations' + ) + + variant( + 'names', + default=','.join(valid_names), + values=valid_names, + multi=True, + description='Benchmark names (comma separated list)' + ) + + variant( + 'classes', + default=','.join(valid_classes), + values=valid_classes, + multi=True, + description='Benchmark classes (comma separated list)' + ) - # TODO: Convert these to non-exclusive multi-valued variants - variant('names', default=','.join(valid_names), - description='Benchmark names (comma separated list)') - variant('classes', default=','.join(valid_classes), - description='Benchmark classes (comma separated list)') # This variant only applies to the MPI implementation - variant('nprocs', default='1,2,4,8,16,32,64,128', - description='Number of processes (comma separated list)') + variant( + 'nprocs', + default='1,2,4,8,16,32,64,128', + values=is_integral, + multi=True, + description='Number of processes (comma separated list)' + ) - depends_on('mpi@2:', when='+mpi') + depends_on('mpi@2:', when='implementation=mpi') phases = ['edit', 'install'] @@ -88,11 +117,11 @@ class Npb(MakefilePackage): @property def build_directory(self): - if '+mpi' in self.spec: + if 'implementation=mpi' in self.spec: implementation = 'MPI' - elif '+openmp' in self.spec: + elif 'implementation=openmp' in self.spec: implementation = 'OMP' - elif '+serial' in self.spec: + elif 'implementation=serial' in self.spec: implementation = 'SER' else: raise RuntimeError('You must choose an implementation to build') @@ -100,11 +129,11 @@ def build_directory(self): return 'NPB{0}-{1}'.format(self.version.up_to(2), implementation) def edit(self, spec, prefix): - names = spec.variants['names'].value.split(',') - classes = spec.variants['classes'].value.split(',') - nprocs = spec.variants['nprocs'].value.split(',') + names = spec.variants['names'].value + classes = spec.variants['classes'].value + nprocs = spec.variants['nprocs'].value - if '+mpi' in spec: + if 'implementation=mpi' in spec: definitions = { # Parallel Fortran 'MPIF77': spec['mpi'].mpif77, @@ -125,7 +154,7 @@ def edit(self, spec, prefix): 'BINDIR': prefix.bin, 'RAND': 'randi8', } - elif '+openmp' in spec: + elif 'implementation=openmp' in spec: definitions = { # Parallel Fortran 'F77': spack_f77, @@ -147,7 +176,7 @@ def edit(self, spec, prefix): 'RAND': 'randi8', 'WTIME': 'wtime.c', } - elif '+serial' in spec: + elif 'implementation=serial' in spec: definitions = { # Parallel Fortran 'F77': spack_f77, @@ -187,7 +216,7 @@ def edit(self, spec, prefix): if name == 'is' and classname == 'E': continue - if '+mpi' in spec: + if 'implementation=mpi' in spec: for nproc in nprocs: suite_def.write('{0}\t{1}\t{2}\n'.format( name, classname, nproc)) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 3022cd7959e..de59f572086 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -51,8 +51,12 @@ class Plumed(AutotoolsPackage): # The ones listed here are not built by default for various reasons, # such as stability, lack of testing, or lack of demand. # FIXME: This needs to be an optional - variant('optional_modules', default='all', - description='String that is used to build optional modules') + variant( + 'optional_modules', + default='all', + values=lambda x: True, + description='String that is used to build optional modules' + ) variant('shared', default=True, description='Builds shared libraries') variant('mpi', default=True, description='Activates MPI support') variant('gsl', default=True, description='Activates GSL support') diff --git a/var/spack/repos/builtin/packages/texlive/package.py b/var/spack/repos/builtin/packages/texlive/package.py index 70d5a1d789f..3cfab6304da 100644 --- a/var/spack/repos/builtin/packages/texlive/package.py +++ b/var/spack/repos/builtin/packages/texlive/package.py @@ -36,8 +36,8 @@ class Texlive(Package): # update in synchrony. # # BEWARE: TexLive updates their installs frequently (probably why - # they call it *Live*...). There is no good way to provide a - # repeatable install of the package. We try to keep up with the + # they call it *Live*...). There is no good way to provide a + # repeatable install of the package. We try to keep up with the # digest values, but don't be surprised if this package is # briefly unbuildable. # @@ -53,8 +53,12 @@ class Texlive(Package): # minimal scheme (plain only) # See: # https://www.tug.org/texlive/doc/texlive-en/texlive-en.html#x1-25025r6 - variant('scheme', default="small", - description='Package subset to install (e.g. full, small, basic)') + variant( + 'scheme', + default='small', + values=('minimal', 'basic', 'small', 'medium', 'full'), + description='Package subset to install' + ) depends_on('perl', type='build') @@ -62,7 +66,7 @@ def install(self, spec, prefix): # Using texlive's mirror system leads to mysterious problems, # in lieu of being able to specify a repository as a variant, hardwire # a particular (slow, but central) one for now. - _repository='http://ctan.math.washington.edu/tex-archive/systems/texlive/tlnet/' + _repository = 'http://ctan.math.washington.edu/tex-archive/systems/texlive/tlnet/' env = os.environ env['TEXLIVE_INSTALL_PREFIX'] = prefix perl = which('perl') From 85b4b15d9a0d59b0a2a6e405ce7e4ddcc2ec71ba Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 4 May 2017 20:01:02 +0200 Subject: [PATCH 0835/2394] SV variants are evaluated correctly in "when=" (#4118) * SV variants are evaluated correctly in `when=` statements fixes #4113 The problem here was tricky: ```python spec.satisfies(other) ``` changes already the MV variants in others into SV variants (where necessary) if spec is concrete. If it is not concrete it does nothing because we may be acting at a pure syntactical level. When evaluating a `when=` keyword spec is for sure not concrete as it is in the middle of the concretization process. In this case we have to trigger manually the substitution in other to not end up comparing a MV variant "foo=bar" to a SV variant "foo=bar" and having False in return. Which is wrong. * sv variants: improved error message for typos in "when=" statements --- lib/spack/spack/spec.py | 45 +++++++++---------- lib/spack/spack/test/spec_semantics.py | 28 +++++------- lib/spack/spack/variant.py | 16 +++++++ .../repos/builtin.mock/packages/a/package.py | 2 + .../repos/builtin/packages/wget/package.py | 10 ++++- 5 files changed, 59 insertions(+), 42 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 0cf392a7ced..399f58461f6 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1828,6 +1828,18 @@ def _evaluate_dependency_conditions(self, name): # evaluate when specs to figure out constraints on the dependency. dep = None for when_spec, dep_spec in conditions.items(): + # If self was concrete it would have changed the variants in + # when_spec automatically. As here we are for sure during the + # concretization process, self is not concrete and we must change + # the variants in when_spec on our own to avoid using a + # MultiValuedVariant whe it is instead a SingleValuedVariant + try: + substitute_single_valued_variants(when_spec) + except SpecError as e: + msg = 'evaluating a `when=` statement gives ' + e.message + e.message = msg + raise + sat = self.satisfies(when_spec, strict=True) if sat: if dep is None: @@ -2064,18 +2076,7 @@ def validate_or_raise(self): if not_existing: raise UnknownVariantError(spec.name, not_existing) - for name, v in [(x, y) for (x, y) in spec.variants.items()]: - # When parsing a spec every variant of the form - # 'foo=value' will be interpreted by default as a - # multi-valued variant. During validation of the - # variants we use the information in the package - # to turn any variant that needs it to a single-valued - # variant. - pkg_variant = pkg_variants[name] - pkg_variant.validate_or_raise(v, pkg_cls) - spec.variants.substitute( - pkg_variant.make_variant(v._original_value) - ) + substitute_single_valued_variants(spec) def constrain(self, other, deps=True): """Merge the constraints of other with self. @@ -2290,25 +2291,19 @@ def satisfies(self, other, deps=True, strict=False, strict_deps=False): # to substitute every multi-valued variant that needs it with a # single-valued variant. if self.concrete: - for name, v in [(x, y) for (x, y) in other.variants.items()]: + try: # When parsing a spec every variant of the form # 'foo=value' will be interpreted by default as a # multi-valued variant. During validation of the # variants we use the information in the package # to turn any variant that needs it to a single-valued # variant. - pkg_cls = type(other.package) - try: - pkg_variant = other.package.variants[name] - pkg_variant.validate_or_raise(v, pkg_cls) - except (SpecError, KeyError): - # Catch the two things that could go wrong above: - # 1. name is not a valid variant (KeyError) - # 2. the variant is not validated (SpecError) - return False - other.variants.substitute( - pkg_variant.make_variant(v._original_value) - ) + substitute_single_valued_variants(other) + except (SpecError, KeyError): + # Catch the two things that could go wrong above: + # 1. name is not a valid variant (KeyError) + # 2. the variant is not validated (SpecError) + return False var_strict = strict if (not self.name) or (not other.name): diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 306a6ad98f8..80a2f63bde5 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -280,6 +280,18 @@ def test_satisfies_single_valued_variant(self): assert a.satisfies('foobar=bar') + # Assert that an autospec generated from a literal + # gives the right result for a single valued variant + assert 'foobar=bar' in a + assert 'foobar=baz' not in a + assert 'foobar=fee' not in a + + # ... and for a multi valued variant + assert 'foo=bar' in a + + # Check that conditional dependencies are treated correctly + assert '^b' in a + def test_unsatisfiable_multi_value_variant(self): # Semantics for a multi-valued variant is different @@ -337,22 +349,6 @@ def test_unsatisfiable_multi_value_variant(self): with pytest.raises(MultipleValuesInExclusiveVariantError): a.concretize() - # FIXME: remove after having checked the correctness of the semantics - # check_unsatisfiable('multivalue_variant foo="bar,baz"', - # 'multivalue_variant foo="bar,baz,quux"', - # concrete=True) - # check_unsatisfiable('multivalue_variant foo="bar,baz"', - # 'multivalue_variant foo="bar,baz,quux"', - # concrete=True) - - # but succeed for abstract ones (b/c they COULD satisfy the - # constraint if constrained) - # check_satisfies('multivalue_variant foo="bar"', - # 'multivalue_variant foo="bar,baz"') - - # check_satisfies('multivalue_variant foo="bar,baz"', - # 'multivalue_variant foo="bar,baz,quux"') - def test_unsatisfiable_variant_types(self): # These should fail due to incompatible types check_unsatisfiable('multivalue_variant +foo', diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index 2d02ab1253c..fe08e4529e9 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -546,6 +546,22 @@ def __str__(self): return string.getvalue() +def substitute_single_valued_variants(spec): + """Uses the information in `spec.package` to turn any variant that needs + it into a SingleValuedVariant. + + Args: + spec: spec on which to operate the substitution + """ + for name, v in spec.variants.items(): + pkg_cls = type(spec.package) + pkg_variant = spec.package.variants[name] + pkg_variant.validate_or_raise(v, pkg_cls) + spec.variants.substitute( + pkg_variant.make_variant(v._original_value) + ) + + class DuplicateVariantError(error.SpecError): """Raised when the same variant occurs in a spec twice.""" diff --git a/var/spack/repos/builtin.mock/packages/a/package.py b/var/spack/repos/builtin.mock/packages/a/package.py index b697f4d2a9a..e39ad13bd1b 100644 --- a/var/spack/repos/builtin.mock/packages/a/package.py +++ b/var/spack/repos/builtin.mock/packages/a/package.py @@ -49,6 +49,8 @@ class A(AutotoolsPackage): multi=False ) + depends_on('b', when='foobar=bar') + def with_or_without_fee(self, activated): if not activated: return '--no-fee' diff --git a/var/spack/repos/builtin/packages/wget/package.py b/var/spack/repos/builtin/packages/wget/package.py index 10b8c33d319..ff704ca37cd 100644 --- a/var/spack/repos/builtin/packages/wget/package.py +++ b/var/spack/repos/builtin/packages/wget/package.py @@ -38,7 +38,15 @@ class Wget(Package): version('1.17', 'c4c4727766f24ac716936275014a0536') version('1.16', '293a37977c41b5522f781d3a3a078426') - depends_on("openssl") + variant( + 'ssl', + default='openssl', + values=('gnutls', 'openssl'), + description='Specify SSL backend' + ) + + depends_on('gnutls', when='ssl=gnutls') + depends_on('openssl', when='ssl=openssl') depends_on("perl@5.12.0:", type='build') def install(self, spec, prefix): From 0042b5e856d0c9ea7b42997d8597922c2bccef60 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 5 May 2017 11:04:46 -0700 Subject: [PATCH 0836/2394] Add info for r@3.3.3 (#4128) --- var/spack/repos/builtin/packages/r/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index ba3417caa08..948de4340ec 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -40,6 +40,7 @@ class R(AutotoolsPackage): extendable = True + version('3.3.3', '0ac211ec15e813a24f8f4a5a634029a4') version('3.3.2', '2437014ef40641cdc9673e89c040b7a8') version('3.3.1', 'f50a659738b73036e2f5635adbd229c5') version('3.3.0', '5a7506c8813432d1621c9725e86baf7a') From 665e328566b2467f0927045c05601b78123ea3b8 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 5 May 2017 11:05:05 -0700 Subject: [PATCH 0837/2394] Add OpenCV 3.2.0 checksum (#4138) --- var/spack/repos/builtin/packages/opencv/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index b052cfa12ad..162939167cc 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -42,6 +42,7 @@ class Opencv(Package): homepage = 'http://opencv.org/' url = 'https://github.com/Itseez/opencv/archive/3.1.0.tar.gz' + version('3.2.0', 'a43b65488124ba33dde195fea9041b70') version('3.1.0', '70e1dd07f0aa06606f1bc0e3fa15abd3') variant('shared', default=True, From f532b4c90b3e7c7d1dd04ce9698699e7b5c61dbd Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 5 May 2017 11:05:27 -0700 Subject: [PATCH 0838/2394] Add info for jdk@8u73 (#4137) * Fix ordering of versions (proper!) * Add url/digest for jdk@8u73 --- var/spack/repos/builtin/packages/jdk/package.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index 8df01f4b67e..6651ab02bce 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -45,12 +45,15 @@ class Jdk(Package): '-H', # specify required License Agreement cookie 'Cookie: oraclelicense=accept-securebackup-cookie'] - version('8u66', '88f31f3d642c3287134297b8c10e61bf', - url="http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz", - curl_options=curl_options) version('8u92', '65a1cc17ea362453a6e0eb4f13be76e4', url="http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.tar.gz", curl_options=curl_options) + version('8u73', '1b0120970aa8bc182606a16bf848a686', + url="http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.tar.gz", + curl_options=curl_options) + version('8u66', '88f31f3d642c3287134297b8c10e61bf', + url="http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz", + curl_options=curl_options) def install(self, spec, prefix): distutils.dir_util.copy_tree(".", prefix) From 9b49dfdc2afa9f42723c485dfc38aa2901e92278 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 5 May 2017 13:05:56 -0500 Subject: [PATCH 0839/2394] Fix typos in Basic Installation Tutorial (#4127) --- lib/spack/docs/tutorial_basics.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/spack/docs/tutorial_basics.rst b/lib/spack/docs/tutorial_basics.rst index 8d9a8fbaea0..6bd5dad604b 100644 --- a/lib/spack/docs/tutorial_basics.rst +++ b/lib/spack/docs/tutorial_basics.rst @@ -574,7 +574,7 @@ You may also have noticed that there are some packages shown in the dependencies that were installed implicitly. A few packages installed implicitly are not shown as dependencies in the ``spack find -d`` output. These are build dependencies. For example, ``libpciaccess`` is a -dependency of openmpi and requires m4 to build. Spack will build `m4`` as +dependency of openmpi and requires ``m4`` to build. Spack will build ``m4`` as part of the installation of ``openmpi``, but it does not become a part of the DAG because it is not linked in at run time. Spack handles build dependencies differently because of their different (less strict) @@ -951,7 +951,7 @@ You can control how the output is displayed with a number of options. The ASCII output from ``spack graph`` can be difficult to parse for complicated packages. The output can be changed to the ``graphviz`` -``.dot`` format using the `--dot` flag. +``.dot`` format using the ``--dot`` flag. .. code-block:: console @@ -1093,13 +1093,13 @@ packages at once. Advanced ``spack find`` Usage ----------------------------- -We will go over some additional uses for the `spack find` command not +We will go over some additional uses for the ``spack find`` command not already covered in the :ref:`basics-tutorial-install` and :ref:`basics-tutorial-uninstall` sections. The ``spack find`` command can accept what we call "anonymous specs." These are expressions in spec syntax that do not contain a package -name. For example, `spack find %intel` will return every package built +name. For example, ``spack find %intel`` will return every package built with the intel compiler, and ``spack find cppflags="-O3"`` will return every package which was built with ``cppflags="-O3"``. From 19511a78b858c2e591263599b4f32663df1a6563 Mon Sep 17 00:00:00 2001 From: Peter Josef Scheibel Date: Fri, 5 May 2017 13:06:49 -0700 Subject: [PATCH 0840/2394] Remove python dependency for libxcb and xcbproto python+tk will not build because it depends (indirectly) on python~tk via libxcb. There are efforts to allow multiple instances of a package to concretize together but they are ongoing so in the meantime this comments out the dependencies and adds TODOs --- var/spack/repos/builtin/packages/libxcb/package.py | 3 ++- var/spack/repos/builtin/packages/xcb-proto/package.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libxcb/package.py b/var/spack/repos/builtin/packages/libxcb/package.py index 0e4d00da979..3c77e045b7f 100644 --- a/var/spack/repos/builtin/packages/libxcb/package.py +++ b/var/spack/repos/builtin/packages/libxcb/package.py @@ -43,7 +43,8 @@ class Libxcb(AutotoolsPackage): depends_on('libxdmcp') depends_on('xcb-proto', type='build') - depends_on('python@2:2.8', type='build') + # TODO: uncomment once build deps can be resolved separately + # depends_on('python@2:2.8', type='build') depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') diff --git a/var/spack/repos/builtin/packages/xcb-proto/package.py b/var/spack/repos/builtin/packages/xcb-proto/package.py index 546375c7fc2..11e99c1d286 100644 --- a/var/spack/repos/builtin/packages/xcb-proto/package.py +++ b/var/spack/repos/builtin/packages/xcb-proto/package.py @@ -35,6 +35,7 @@ class XcbProto(AutotoolsPackage): version('1.12', '5ee1ec124ea8d56bd9e83b8e9e0b84c4') version('1.11', 'c8c6cb72c84f58270f4db1f39607f66a') - extends('python') + # TODO: uncomment once build deps can be resolved separately + # extends('python') patch('xcb-proto-1.12-schema-1.patch', when='@1.12') From c3af901ac613805544c228a048a383bf92d4d11d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 5 May 2017 16:06:07 -0500 Subject: [PATCH 0841/2394] Add latest version of Lmod (#4141) --- var/spack/repos/builtin/packages/lmod/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 625a0445722..87f0883fba1 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -36,8 +36,9 @@ class Lmod(AutotoolsPackage): """ homepage = 'https://www.tacc.utexas.edu/research-development/tacc-projects/lmod' - url = 'https://github.com/TACC/Lmod/archive/7.3.tar.gz' + url = 'https://github.com/TACC/Lmod/archive/7.4.9.tar.gz' + version('7.4.9', 'd8ffab81ddca2491fe13e2ac0a4fd320') version('7.4.8', '3b22932437cc29ce546ec887885355e7') version('7.4.5', 'fc34029c60dd9782c3d011c2b93fd266') version('7.4.1', '59b2558ee50877f2cf49ed37d7b09fea') From 6e23c31ad1bbfa985b8aa1a250778da9abefa45d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 5 May 2017 16:21:15 -0500 Subject: [PATCH 0842/2394] Python 3 doesn't have iteritems, use items (#4143) --- var/spack/repos/builtin/packages/boost/package.py | 2 +- var/spack/repos/builtin/packages/openfoam-com/package.py | 6 +++--- var/spack/repos/builtin/packages/openfoam-org/package.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index d4c772ed037..c0aa582d72d 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -164,7 +164,7 @@ def determine_toolset(self, spec): if spec.satisfies('@1.47:'): toolsets['icpc'] += '-linux' - for cc, toolset in toolsets.iteritems(): + for cc, toolset in toolsets.items(): if cc in self.compiler.cxx_names: return toolset diff --git a/var/spack/repos/builtin/packages/openfoam-com/package.py b/var/spack/repos/builtin/packages/openfoam-com/package.py index fcd33eadcbf..15c4f8fdd40 100644 --- a/var/spack/repos/builtin/packages/openfoam-com/package.py +++ b/var/spack/repos/builtin/packages/openfoam-com/package.py @@ -140,7 +140,7 @@ def rewrite_environ_files(environ, **kwargs): """ posix = kwargs.get('posix', None) if posix and isfile(posix): - for k, v in environ.iteritems(): + for k, v in environ.items(): filter_file( r'^(\s*export\s+%s)=.*$' % k, r'\1=%s' % v, @@ -148,7 +148,7 @@ def rewrite_environ_files(environ, **kwargs): backup=False) cshell = kwargs.get('cshell', None) if cshell and isfile(cshell): - for k, v in environ.iteritems(): + for k, v in environ.items(): filter_file( r'^(\s*setenv\s+%s)\s+.*$' % k, r'\1 %s' % v, @@ -616,7 +616,7 @@ def configure(self, spec, prefix): cshell=join_path('etc', 'prefs.csh')) # Adjust components to use SPACK variants - for component, subdict in self.etc_config.iteritems(): + for component, subdict in self.etc_config.items(): write_environ( subdict, posix=join_path('etc', 'config.sh', component), diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py index 19ffd405074..53be5f63378 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/package.py +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -386,7 +386,7 @@ def configure(self, spec, prefix): cshell=join_path('etc', 'prefs.csh')) # Adjust components to use SPACK variants - for component, subdict in self.etc_config.iteritems(): + for component, subdict in self.etc_config.items(): write_environ( subdict, posix=join_path('etc', 'config.sh', component), From be991a6efaa18513466fe6059930d50aff246b3c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 5 May 2017 16:21:37 -0500 Subject: [PATCH 0843/2394] Add latest version of curl (#4140) --- var/spack/repos/builtin/packages/curl/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 7a48f651c37..6f8a3e8625b 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -31,8 +31,9 @@ class Curl(AutotoolsPackage): homepage = "http://curl.haxx.se" # URL must remain http:// so Spack can bootstrap curl - url = "http://curl.haxx.se/download/curl-7.53.1.tar.bz2" + url = "http://curl.haxx.se/download/curl-7.54.0.tar.bz2" + version('7.54.0', '89bb7ba87384dfbf4f1a3f953da42458') version('7.53.1', 'fb1f03a142236840c1a77c035fa4c542') version('7.52.1', 'dd014df06ff1d12e173de86873f9f77a') version('7.50.3', 'bd177fd6deecce00cfa7b5916d831c5e') From f55eddb9bd0bcefe637093cdcb22328dbd7f0e62 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 5 May 2017 16:00:23 -0700 Subject: [PATCH 0844/2394] Add info for perl@5.22.1 (#4147) What the user wants, the user gets.... --- var/spack/repos/builtin/packages/perl/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index dc1f7be93cf..10895f60894 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -50,6 +50,7 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package # Misc releases that people need version('5.22.2', '5767e2a10dd62a46d7b57f74a90d952b') + version('5.22.1', '19295bbb775a3c36123161b9bf4892f1') # End of life releases version('5.20.3', 'd647d0ea5a7a8194c34759ab9f2610cd') From 73896e94810df41202d8b1d344218ab8adf40f1b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 5 May 2017 18:52:28 -0500 Subject: [PATCH 0845/2394] Remind developers to update tab completion script (#4148) --- lib/spack/docs/developer_guide.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index ea8d50c6cae..96b44366838 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -336,6 +336,10 @@ your command. If it isn't used very frequently, changes to the rest of Spack can cause your command to break without sufficient unit tests to prevent this from happening. +Whenever you add/remove/rename a command or flags for an existing command, +make sure to update Spack's `Bash tab completion script +`_. + ---------- Unit tests ---------- From 741e4df233482bedefc000387625663cf201c231 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Sat, 6 May 2017 12:02:32 -0500 Subject: [PATCH 0846/2394] Update zlib to work with other compilers (#4088) * Fix -include issue with intel and pgi in zlib MERGE CANDIDATE * Patch zlib to compiler with the cray compiler suite. --- var/spack/repos/builtin/packages/zlib/package.py | 2 ++ var/spack/repos/builtin/packages/zlib/w_patch.patch | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 var/spack/repos/builtin/packages/zlib/w_patch.patch diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 5778c976ad7..43d24c61d15 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -46,6 +46,8 @@ class Zlib(Package): variant('shared', default=True, description='Enables the build of shared libraries.') + patch('w_patch.patch', when="@1.2.11%cce") + def setup_environment(self, spack_env, run_env): if '+pic' in self.spec: spack_env.set('CFLAGS', self.compiler.pic_flag) diff --git a/var/spack/repos/builtin/packages/zlib/w_patch.patch b/var/spack/repos/builtin/packages/zlib/w_patch.patch new file mode 100644 index 00000000000..756cff6a78b --- /dev/null +++ b/var/spack/repos/builtin/packages/zlib/w_patch.patch @@ -0,0 +1,13 @@ +diff --git a/configure b/configure +index e974d1f..ed26a63 100755 +--- a/configure ++++ b/configure +@@ -409,7 +409,7 @@ EOF + if test $shared -eq 1; then + echo Checking for shared library support... | tee -a configure.log + # we must test in two steps (cc then ld), required at least on SunOS 4.x +- if try $CC -w -c $SFLAGS $test.c && ++ if try $CC -c $SFLAGS $test.c && + try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then + echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log + elif test -z "$old_cc" -a -z "$old_cflags"; then From c0a52cc59e65c48d095036a43c7e574aa088d0b3 Mon Sep 17 00:00:00 2001 From: Barry Britt Date: Sat, 6 May 2017 12:05:12 -0500 Subject: [PATCH 0847/2394] Updating bamtools to include a dependency for zlib. (#4031) * Updating bamtools to include a dependency for zlib. In a standard compile, bamtools will fail if zlib headers are not installed on the target machine. In order to maintain compatibility with all systems -- and since zlib is included already as a dependency for cmake -- this patch adds zlib as a link dependency for the bamtools package. * Modified cmake rpath include. Bamtools has a non-standard library location, so we need to append $prefix/lib/bamtools to the rpath. Not sure there's a better way to do this... * Fixing syntax error in package.py Fixed a non-terminated parenthesis on line 46. * Updated bamtools to be a CMakePackage Removed extraneous code, and altered the package to extend cmake_args including the non-standard library location. * UpRemoving cmake dependency and removing blank line from end of file * Updates to cmake_args. Removed the duplicate definition of std_cmake_args in favor of simply overriding the CMAKE_INSTALL_RPATH variable that is provided. This should allow the package to be linked correctly to itself. --- .../repos/builtin/packages/bamtools/package.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/bamtools/package.py b/var/spack/repos/builtin/packages/bamtools/package.py index 6ad90c779b7..79e71cc0f26 100644 --- a/var/spack/repos/builtin/packages/bamtools/package.py +++ b/var/spack/repos/builtin/packages/bamtools/package.py @@ -23,9 +23,10 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import os -class Bamtools(Package): +class Bamtools(CMakePackage): """C++ API & command-line toolkit for working with BAM data.""" homepage = "https://github.com/pezmaster31/bamtools" @@ -36,11 +37,11 @@ class Bamtools(Package): version('2.3.0', 'd327df4ba037d6eb8beef65d7da75ebc') version('2.2.3', '6eccd3e45e4ba12a68daa3298998e76d') - depends_on('cmake', type='build') + depends_on('zlib', type='link') - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('..', *std_cmake_args) - - make() - make('install') + def cmake_args(self): + args = [] + rpath = self.rpath + rpath.append(os.path.join(self.prefix.lib, "bamtools")) + args.append("-DCMAKE_INSTALL_RPATH=%s" % ':'.join(rpath)) + return args From 4f439f8e821e90a96df0c80762c2426fa411b37c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 6 May 2017 14:22:32 -0500 Subject: [PATCH 0848/2394] mpfr: switch to more reliable URL (#4139) * Add list_url to mpfr * Switch to download directly from GNU * http -> https --- var/spack/repos/builtin/packages/mpfr/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/mpfr/package.py b/var/spack/repos/builtin/packages/mpfr/package.py index 1a86dfdb817..2d88fa1522e 100644 --- a/var/spack/repos/builtin/packages/mpfr/package.py +++ b/var/spack/repos/builtin/packages/mpfr/package.py @@ -30,14 +30,15 @@ class Mpfr(AutotoolsPackage): floating-point computations with correct rounding.""" homepage = "http://www.mpfr.org" - url = "https://gforge.inria.fr/frs/download.php/latestfile/159/mpfr-3.1.2.tar.bz2" + url = "https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.5.tar.bz2" version('3.1.5', 'b1d23a55588e3b2a13e3be66bc69fd8d') version('3.1.4', 'b8a2f6b0e68bef46e53da2ac439e1cf4') version('3.1.3', '5fdfa3cfa5c86514ee4a241a1affa138') version('3.1.2', 'ee2c3ac63bf0c2359bf08fc3ee094c19') - depends_on('gmp@4.1.0:') # mpir is a drop-in replacement for this + # mpir is a drop-in replacement for gmp + depends_on('gmp@4.1.0:') # 4.2.3 or higher is recommended patch('vasprintf.patch', when='@3.1.5') patch('strtofr.patch', when='@3.1.5') From 42b09640f00d57af12a736e2df03af9aaa886bfc Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 6 May 2017 14:24:19 -0500 Subject: [PATCH 0849/2394] gmp: switch to download directly from GNU (#4152) --- var/spack/repos/builtin/packages/gmp/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gmp/package.py b/var/spack/repos/builtin/packages/gmp/package.py index 45e8b8a452f..b318273b0b6 100644 --- a/var/spack/repos/builtin/packages/gmp/package.py +++ b/var/spack/repos/builtin/packages/gmp/package.py @@ -30,7 +30,7 @@ class Gmp(AutotoolsPackage): on signed integers, rational numbers, and floating-point numbers.""" homepage = "https://gmplib.org" - url = "https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2" + url = "https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2" version('6.1.2', '8ddbb26dc3bd4e2302984debba1406a5') version('6.1.1', '4c175f86e11eb32d8bf9872ca3a8e11d') From 12633b06e420bfec0fb3ebae09d212c41b47f1d3 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 6 May 2017 14:24:45 -0500 Subject: [PATCH 0850/2394] Add Read the Docs badge to README (#4153) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 68c2939ec63..fd828a0ad23 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ [![Build Status](https://travis-ci.org/LLNL/spack.svg?branch=develop)](https://travis-ci.org/LLNL/spack) [![codecov](https://codecov.io/gh/LLNL/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/LLNL/spack) +[![Read the Docs](https://readthedocs.org/projects/spack/badge/?version=latest)](https://spack.readthedocs.io) Spack is a package management tool designed to support multiple versions and configurations of software on a wide variety of platforms From bb1a8efaca5825e6e4323bb14a40c5e5d9074344 Mon Sep 17 00:00:00 2001 From: nvarini Date: Tue, 18 Apr 2017 18:12:58 +0200 Subject: [PATCH 0851/2394] Added scala package (#67) --- .../repos/builtin/packages/scala/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/scala/package.py diff --git a/var/spack/repos/builtin/packages/scala/package.py b/var/spack/repos/builtin/packages/scala/package.py new file mode 100644 index 00000000000..1a4ac51ca36 --- /dev/null +++ b/var/spack/repos/builtin/packages/scala/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Scala(Package): + """Scala is a general-purpose programming language providing support for + functional programming and a strong static type system. Designed to be + concise, many of Scala's design decisions were designed to build from + criticisms of Java. + """ + + homepage = "https://www.scala-lang.org/" + url = "https://downloads.lightbend.com/scala/2.12.1/scala-2.12.1.tgz" + + depends_on('jdk') + version('2.12.1', '3eaecbce019b0fa3067503846e292b32') + + def install(self, spec, prefix): + + def install_dir(dirname): + install_tree(dirname, join_path(prefix, dirname)) + + install_dir('bin') + install_dir('lib') + install_dir('doc') + install_dir('man') From b65daa93be5d88ac1b2b5d9572f57acf4d9d0f9a Mon Sep 17 00:00:00 2001 From: Luigi Calori Date: Mon, 8 May 2017 02:00:25 +0200 Subject: [PATCH 0852/2394] Paramiko python extensions + his deps and other related extensions (#4158) * adding paramiko and missing dependencies, setup to work with #2548 * adding other deps for paramiko * fix flake8 errors * removed spurious add * address suggestion for proper dependencies * fix cryptography deps * remove FIXME comments and commented depends lines --- .../builtin/packages/py-asn1crypto/package.py | 37 +++++++++++++++ .../packages/py-cryptography/package.py | 46 +++++++++++++++++++ .../repos/builtin/packages/py-idna/package.py | 38 +++++++++++++++ .../builtin/packages/py-ipaddress/package.py | 37 +++++++++++++++ .../builtin/packages/py-paramiko/package.py | 39 ++++++++++++++++ .../builtin/packages/py-pyasn1/package.py | 37 +++++++++++++++ .../builtin/packages/py-pycrypto/package.py | 38 +++++++++++++++ 7 files changed, 272 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-asn1crypto/package.py create mode 100644 var/spack/repos/builtin/packages/py-cryptography/package.py create mode 100644 var/spack/repos/builtin/packages/py-idna/package.py create mode 100644 var/spack/repos/builtin/packages/py-ipaddress/package.py create mode 100644 var/spack/repos/builtin/packages/py-paramiko/package.py create mode 100644 var/spack/repos/builtin/packages/py-pyasn1/package.py create mode 100644 var/spack/repos/builtin/packages/py-pycrypto/package.py diff --git a/var/spack/repos/builtin/packages/py-asn1crypto/package.py b/var/spack/repos/builtin/packages/py-asn1crypto/package.py new file mode 100644 index 00000000000..838a8a41826 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-asn1crypto/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PyAsn1crypto(PythonPackage): + """Python ASN.1 library with a focus on performance and a pythonic API """ + + homepage = "https://github.com/wbond/asn1crypto" + url = "https://pypi.io/packages/source/a/asn1crypto/asn1crypto-0.22.0.tar.gz" + + version('0.22.0', '74a8b9402625b38ef19cf3fa69ef8470') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-cryptography/package.py b/var/spack/repos/builtin/packages/py-cryptography/package.py new file mode 100644 index 00000000000..93531acc21b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-cryptography/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PyCryptography(PythonPackage): + """cryptography is a package which provides cryptographic recipes + and primitives to Python developers""" + + homepage = "https://pypi.python.org/pypi/cryptography" + url = "https://pypi.io/packages/source/c/cryptography/cryptography-1.8.1.tar.gz" + + version('1.8.1', '9f28a9c141995cd2300d0976b4fac3fb') + + # dependencies taken from https://github.com/pyca/cryptography/blob/master/setup.py + depends_on('py-setuptools@20.5:', type='build') + depends_on('py-cffi@1.4.1:', type=('build', 'run')) + depends_on('py-asn1crypto@0.21.0:', type=('build', 'run')) + depends_on('py-six@1.4.1:', type=('build', 'run')) + depends_on('py-idna@2.1:', type=('build', 'run')) + depends_on('py-enum34', type=('build', 'run'), when='^python@:3.4') + depends_on('py-ipaddress', type=('build', 'run'), when='^python@:3.3') + depends_on('openssl') diff --git a/var/spack/repos/builtin/packages/py-idna/package.py b/var/spack/repos/builtin/packages/py-idna/package.py new file mode 100644 index 00000000000..5a191430f2b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-idna/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PyIdna(PythonPackage): + """Internationalized Domain Names for Python (IDNA 2008 and UTS #46) """ + + homepage = "https://github.com/kjd/idna" + url = "https://pypi.io/packages/source/i/idna/idna-2.5.tar.gz" + + version('2.5', 'fc1d992bef73e8824db411bb5d21f012') + + depends_on('py-setuptools', type=('build', 'link')) + depends_on('python@2.6:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ipaddress/package.py b/var/spack/repos/builtin/packages/py-ipaddress/package.py new file mode 100644 index 00000000000..5e088ed75e3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ipaddress/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PyIpaddress(PythonPackage): + """Python 3.3's ipaddress for older Python versions""" + + homepage = "https://github.com/phihag/ipaddress" + url = "https://pypi.io/packages/source/i/ipaddress/ipaddress-1.0.18.tar.gz" + + version('1.0.18', '310c2dfd64eb6f0df44aa8c59f2334a7') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-paramiko/package.py b/var/spack/repos/builtin/packages/py-paramiko/package.py new file mode 100644 index 00000000000..94ddb85ec26 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-paramiko/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PyParamiko(PythonPackage): + """SSH2 protocol library""" + + homepage = "http://www.paramiko.org/" + url = "https://pypi.io/packages/source/p/paramiko/paramiko-2.1.2.tar.gz" + + version('2.1.2', '41a8ea0e8abb03a6bf59870670d4f46c') + + depends_on('py-setuptools', type='build') + depends_on('py-pyasn1@0.1.7:', type=('build', 'run')) + depends_on('py-cryptography@1.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pyasn1/package.py b/var/spack/repos/builtin/packages/py-pyasn1/package.py new file mode 100644 index 00000000000..885ef06389c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyasn1/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PyPyasn1(PythonPackage): + """ Generic ASN.1 library for Python http://pyasn1.sf.net""" + + homepage = "https://github.com/etingof/pyasn1" + url = "https://pypi.io/packages/source/p/pyasn1/pyasn1-0.2.3.tar.gz" + + version('0.2.3', '79f98135071c8dd5c37b6c923c51be45') + depends_on('py-setuptools', type='build') + depends_on('python@2.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pycrypto/package.py b/var/spack/repos/builtin/packages/py-pycrypto/package.py new file mode 100644 index 00000000000..e791d38cf12 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pycrypto/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PyPycrypto(PythonPackage): + """The Python Cryptography Toolkit""" + + homepage = "https://www.dlitz.net/software/pycrypto/" + url = "https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz" + + version('2.6.1', '55a61a054aa66812daf5161a0d5d7eda') + + # depends_on('py-setuptools', type='build') + depends_on('gmp') From 4e44d39f1a65b3fd25929d3f9be6441888789846 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 8 May 2017 06:53:02 +0200 Subject: [PATCH 0853/2394] Spec.__init__: removed dead code (#4146) The conditionals are repeated in the statement before _add_dependencies --- lib/spack/spack/spec.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 399f58461f6..ff213c59866 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -966,15 +966,12 @@ def __init__(self, spec_like, *dep_like, **kwargs): # Spec(a, b) will copy a but just add b as a dep. deptypes = () for dep in dep_like: - if isinstance(dep, Spec): - spec = dep - elif isinstance(dep, (list, tuple)): + + if isinstance(dep, (list, tuple)): # Literals can be deptypes -- if there are tuples in the # list, they will be used as deptypes for the following Spec. deptypes = tuple(dep) continue - else: - spec = Spec(dep) spec = dep if isinstance(dep, Spec) else Spec(dep) self._add_dependency(spec, deptypes) From cf93f49462a319be4d6b6f263725297686612299 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 8 May 2017 00:04:52 -0500 Subject: [PATCH 0854/2394] Fix PGI compiler detection on PowerPC (#4150) --- lib/spack/spack/compilers/pgi.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/compilers/pgi.py b/lib/spack/spack/compilers/pgi.py index 146c1530418..ed8bad1a9ba 100644 --- a/lib/spack/spack/compilers/pgi.py +++ b/lib/spack/spack/compilers/pgi.py @@ -61,12 +61,20 @@ def pic_flag(self): @classmethod def default_version(cls, comp): - """The '-V' option works for all the PGI compilers. + """The ``-V`` option works for all the PGI compilers. Output looks like this:: pgcc 15.10-0 64-bit target on x86-64 Linux -tp sandybridge The Portland Group - PGI Compilers and Tools Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved. + + on x86-64, and:: + + pgcc 17.4-0 linuxpower target on Linuxpower + PGI Compilers and Tools + Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. + + on PowerPC. """ return get_compiler_version( - comp, '-V', r'pg[^ ]* ([^ ]+) \d\d\d?-bit target') + comp, '-V', r'pg[^ ]* ([0-9.-]+) [^ ]+ target on ') From 85b0ebe83644d4d223f6a580b51a015de4b76ac7 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 8 May 2017 07:06:39 +0200 Subject: [PATCH 0855/2394] BarrierTimeoutError must derive from Exception (#4157) Seen in https://travis-ci.org/LLNL/spack/builds/229484526, very likely due to a problem in the Travis builder. --- lib/spack/spack/util/multiproc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/util/multiproc.py b/lib/spack/spack/util/multiproc.py index 91bac57c269..f465a3dbdc2 100644 --- a/lib/spack/spack/util/multiproc.py +++ b/lib/spack/spack/util/multiproc.py @@ -92,5 +92,5 @@ def wait(self): self.turnstile2.release() -class BarrierTimeoutError: +class BarrierTimeoutError(Exception): pass From 7923579a424d8d9280717760cea1742cdb594d07 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 8 May 2017 21:29:08 +0200 Subject: [PATCH 0856/2394] qt: add 5.8.0 which builds on Sierra with clang 8.1.0 (#4109) * qt: add 5.8.0 which builds on Sierra with clang 8.1.0 * enable parallel build, add freetype dependency * minor * minor --- .../builtin/packages/qt/QTBUG-57656.patch | 17 ++++++++++++++ .../builtin/packages/qt/QTBUG-58038.patch | 12 ++++++++++ .../repos/builtin/packages/qt/package.py | 23 +++++++++++++++++-- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/qt/QTBUG-57656.patch create mode 100644 var/spack/repos/builtin/packages/qt/QTBUG-58038.patch diff --git a/var/spack/repos/builtin/packages/qt/QTBUG-57656.patch b/var/spack/repos/builtin/packages/qt/QTBUG-57656.patch new file mode 100644 index 00000000000..b1ba47fa00d --- /dev/null +++ b/var/spack/repos/builtin/packages/qt/QTBUG-57656.patch @@ -0,0 +1,17 @@ +diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf +index f6cbf99..ec31e45 100644 +--- a/qtbase/mkspecs/features/qt_module.prf ++++ b/qtbase/mkspecs/features/qt_module.prf +@@ -68,9 +68,9 @@ load(qt_build_paths) + + header_module { + TEMPLATE = aux +- CONFIG += \ +- force_qt \ # Needed for the headers_clean tests. +- qt_no_install_library ++ CONFIG += force_qt # Needed for the headers_clean tests. ++ !lib_bundle: \ ++ CONFIG += qt_no_install_library + } else { + TEMPLATE = lib + } diff --git a/var/spack/repos/builtin/packages/qt/QTBUG-58038.patch b/var/spack/repos/builtin/packages/qt/QTBUG-58038.patch new file mode 100644 index 00000000000..c8d71105abd --- /dev/null +++ b/var/spack/repos/builtin/packages/qt/QTBUG-58038.patch @@ -0,0 +1,12 @@ +diff --git a/qtbase/src/3rdparty/freetype/freetype.pro b/qtbase/src/3rdparty/freetype/freetype.pro +index 5b1eb92..390a6da 100644 +--- a/qtbase/src/3rdparty/freetype/freetype.pro ++++ b/qtbase/src/3rdparty/freetype/freetype.pro +@@ -69,6 +69,7 @@ DEFINES += FT_CONFIG_OPTION_SYSTEM_ZLIB + include(../zlib_dependency.pri) + + DEFINES += FT_CONFIG_OPTION_USE_PNG ++include($$OUT_PWD/../../gui/qtgui-config.pri) + QMAKE_USE_PRIVATE += libpng + + DEFINES += TT_CONFIG_OPTION_SUBPIXEL_HINTING diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index b9c7e1f5c3e..3737c70f5ac 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -35,6 +35,7 @@ class Qt(Package): list_url = 'http://download.qt.io/archive/qt/' list_depth = 3 + version('5.8.0', 'a9f2494f75f966e2f22358ec367d8f41') version('5.7.1', '031fb3fd0c3cc0f1082644492683f18d') version('5.7.0', '9a46cce61fc64c20c3ac0a0e0fa41b42') version('5.5.1', '59f0216819152b77536cf660b015d784') @@ -64,6 +65,11 @@ class Qt(Package): patch('qt3krell.patch', when='@3.3.8b+krellpatch') + # see https://bugreports.qt.io/browse/QTBUG-57656 + patch('QTBUG-57656.patch', when='@5.8.0') + # see https://bugreports.qt.io/browse/QTBUG-58038 + patch('QTBUG-58038.patch', when='@5.8.0') + # https://github.com/xboxdrv/xboxdrv/issues/188 patch('btn_trigger_happy.patch', when='@5.7.0:') @@ -84,6 +90,10 @@ class Qt(Package): depends_on("libmng") depends_on("jpeg") depends_on("icu4c") + # FIXME: + # depends_on("freetype", when='@5.8:') and '-system-freetype' + # -system-harfbuzz + # -system-pcre # QtQml depends_on("python", when='@5.7.0:', type='build') @@ -185,10 +195,19 @@ def common_config_args(self): '-confirm-license', '-openssl-linked', '-optimized-qmake', - '-no-openvg', - '-no-pch', + '-no-pch' ] + if '@:5.7.1' in self.spec: + config_args.append('-no-openvg') + else: + # FIXME: those could work for other versions + config_args.extend([ + '-system-libpng', + '-system-libjpeg', + '-system-zlib' + ]) + if '@:5.7.0' in self.spec: config_args.extend([ # NIS is deprecated in more recent glibc, From ff3b5d88e4229516e9655a9a75f818453613e8e4 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 8 May 2017 13:18:29 -0700 Subject: [PATCH 0857/2394] rework spack help (#3033) - Full help is now only generated lazily, when needed. - Executing specific commands doesn't require loading all of them. - All commands are only loaded if we need them for help. - There is now short and long help: - short help (spack help) shows only basic spack options - long help (spack help -a) shows all spack options - Both divide help on commands into high-level sections - Commands now specify attributes from which help is auto-generated: - description: used in help to describe the command. - section: help section - level: short or long - Clean up command descriptions - Add a `spack docs` command to open full documentation in the browser. - move `spack doc` command to `spack pydoc` for clarity - Add a `spack --spec` command to show documentation on the spec syntax. --- bin/spack | 222 +---------- lib/spack/spack/__init__.py | 2 +- lib/spack/spack/cmd/activate.py | 2 + lib/spack/spack/cmd/arch.py | 2 + lib/spack/spack/cmd/bootstrap.py | 2 + lib/spack/spack/cmd/build.py | 3 + lib/spack/spack/cmd/cd.py | 2 + lib/spack/spack/cmd/checksum.py | 2 + lib/spack/spack/cmd/clean.py | 2 + lib/spack/spack/cmd/compiler.py | 2 + lib/spack/spack/cmd/compilers.py | 4 +- lib/spack/spack/cmd/config.py | 2 + lib/spack/spack/cmd/configure.py | 4 +- lib/spack/spack/cmd/create.py | 3 + lib/spack/spack/cmd/deactivate.py | 2 + lib/spack/spack/cmd/debug.py | 2 + lib/spack/spack/cmd/dependents.py | 2 + lib/spack/spack/cmd/diy.py | 2 + lib/spack/spack/cmd/docs.py | 33 ++ lib/spack/spack/cmd/edit.py | 2 + lib/spack/spack/cmd/env.py | 4 +- lib/spack/spack/cmd/extensions.py | 2 + lib/spack/spack/cmd/fetch.py | 2 + lib/spack/spack/cmd/find.py | 4 +- lib/spack/spack/cmd/flake8.py | 4 + lib/spack/spack/cmd/graph.py | 2 + lib/spack/spack/cmd/help.py | 90 ++++- lib/spack/spack/cmd/info.py | 2 + lib/spack/spack/cmd/install.py | 2 + lib/spack/spack/cmd/list.py | 5 +- lib/spack/spack/cmd/load.py | 4 +- lib/spack/spack/cmd/location.py | 2 + lib/spack/spack/cmd/md5.py | 2 + lib/spack/spack/cmd/mirror.py | 2 + lib/spack/spack/cmd/module.py | 3 + lib/spack/spack/cmd/patch.py | 2 + lib/spack/spack/cmd/pkg.py | 2 + lib/spack/spack/cmd/providers.py | 2 + lib/spack/spack/cmd/purge.py | 2 + lib/spack/spack/cmd/{doc.py => pydoc.py} | 6 +- lib/spack/spack/cmd/python.py | 2 + lib/spack/spack/cmd/reindex.py | 3 + lib/spack/spack/cmd/repo.py | 2 + lib/spack/spack/cmd/restage.py | 2 + lib/spack/spack/cmd/setup.py | 2 + lib/spack/spack/cmd/spec.py | 4 +- lib/spack/spack/cmd/stage.py | 2 + lib/spack/spack/cmd/test.py | 4 +- lib/spack/spack/cmd/uninstall.py | 4 +- lib/spack/spack/cmd/unload.py | 4 +- lib/spack/spack/cmd/unuse.py | 2 + lib/spack/spack/cmd/url.py | 2 + lib/spack/spack/cmd/use.py | 2 + lib/spack/spack/cmd/versions.py | 2 + lib/spack/spack/cmd/view.py | 4 +- lib/spack/spack/main.py | 468 +++++++++++++++++++++++ share/spack/qa/run-unit-tests | 4 + 57 files changed, 736 insertions(+), 218 deletions(-) create mode 100644 lib/spack/spack/cmd/docs.py rename lib/spack/spack/cmd/{doc.py => pydoc.py} (91%) create mode 100644 lib/spack/spack/main.py diff --git a/bin/spack b/bin/spack index 5ab805fe549..496c7050422 100755 --- a/bin/spack +++ b/bin/spack @@ -1,5 +1,4 @@ #!/usr/bin/env python -# flake8: noqa ############################################################################## # Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. @@ -26,34 +25,32 @@ ############################################################################## from __future__ import print_function +import os import sys + if sys.version_info[:2] < (2, 6): v_info = sys.version_info[:3] sys.exit("Spack requires Python 2.6 or higher." "This is Python %d.%d.%d." % v_info) -import os -import inspect - # Find spack's location and its prefix. -SPACK_FILE = os.path.realpath(os.path.expanduser(__file__)) -os.environ["SPACK_FILE"] = SPACK_FILE -SPACK_PREFIX = os.path.dirname(os.path.dirname(SPACK_FILE)) +spack_file = os.path.realpath(os.path.expanduser(__file__)) +spack_prefix = os.path.dirname(os.path.dirname(spack_file)) # Allow spack libs to be imported in our scripts -SPACK_LIB_PATH = os.path.join(SPACK_PREFIX, "lib", "spack") -sys.path.insert(0, SPACK_LIB_PATH) +spack_lib_path = os.path.join(spack_prefix, "lib", "spack") +sys.path.insert(0, spack_lib_path) # Add external libs -SPACK_EXTERNAL_LIBS = os.path.join(SPACK_LIB_PATH, "external") -sys.path.insert(0, SPACK_EXTERNAL_LIBS) +spack_external_libs = os.path.join(spack_lib_path, "external") +sys.path.insert(0, spack_external_libs) # Handle vendoring of YAML specially, as it has two versions. if sys.version_info[0] == 2: - SPACK_YAML_LIBS = os.path.join(SPACK_EXTERNAL_LIBS, "yaml/lib") + spack_yaml_libs = os.path.join(spack_external_libs, "yaml/lib") else: - SPACK_YAML_LIBS = os.path.join(SPACK_EXTERNAL_LIBS, "yaml/lib3") -sys.path.insert(0, SPACK_YAML_LIBS) + spack_yaml_libs = os.path.join(spack_external_libs, "yaml/lib3") +sys.path.insert(0, spack_yaml_libs) # Quick and dirty check to clean orphaned .pyc files left over from # previous revisions. These files were present in earlier versions of @@ -61,13 +58,13 @@ sys.path.insert(0, SPACK_YAML_LIBS) # imports. If we leave them, Spack will fail in mysterious ways. # TODO: more elegant solution for orphaned pyc files. orphaned_pyc_files = [ - os.path.join(SPACK_EXTERNAL_LIBS, 'functools.pyc'), - os.path.join(SPACK_EXTERNAL_LIBS, 'ordereddict.pyc'), - os.path.join(SPACK_LIB_PATH, 'spack', 'platforms', 'cray_xc.pyc'), - os.path.join(SPACK_LIB_PATH, 'spack', 'cmd', 'package-list.pyc'), - os.path.join(SPACK_LIB_PATH, 'spack', 'cmd', 'test-install.pyc'), - os.path.join(SPACK_LIB_PATH, 'spack', 'cmd', 'url-parse.pyc'), - os.path.join(SPACK_LIB_PATH, 'spack', 'test', 'yaml.pyc') + os.path.join(spack_external_libs, 'functools.pyc'), + os.path.join(spack_external_libs, 'ordereddict.pyc'), + os.path.join(spack_lib_path, 'spack', 'platforms', 'cray_xc.pyc'), + os.path.join(spack_lib_path, 'spack', 'cmd', 'package-list.pyc'), + os.path.join(spack_lib_path, 'spack', 'cmd', 'test-install.pyc'), + os.path.join(spack_lib_path, 'spack', 'cmd', 'url-parse.pyc'), + os.path.join(spack_lib_path, 'spack', 'test', 'yaml.pyc') ] for pyc_file in orphaned_pyc_files: @@ -79,183 +76,6 @@ for pyc_file in orphaned_pyc_files: print("WARNING: Spack may fail mysteriously. " "Couldn't remove orphaned .pyc file: %s" % pyc_file) -# If there is no working directory, use the spack prefix. -try: - working_dir = os.getcwd() -except OSError: - os.chdir(SPACK_PREFIX) - working_dir = SPACK_PREFIX - -# clean up the scope and start using spack package instead. -del SPACK_FILE, SPACK_PREFIX, SPACK_LIB_PATH -import llnl.util.tty as tty -from llnl.util.tty.color import * -import spack -from spack.error import SpackError -import argparse -import pstats - -# Get the allowed names of statistics for cProfile, and make a list of -# groups of 7 names to wrap them nicely. -stat_names = pstats.Stats.sort_arg_dict_default -stat_lines = list(zip(*(iter(stat_names),)*7)) - -# Command parsing -parser = argparse.ArgumentParser( - formatter_class=argparse.RawTextHelpFormatter, - description="Spack: the Supercomputing PACKage Manager." + colorize(""" - -spec expressions: - PACKAGE [CONSTRAINTS] - - CONSTRAINTS: - @c{@version} - @g{%compiler @compiler_version} - @B{+variant} - @r{-variant} or @r{~variant} - @m{=architecture} - [^DEPENDENCY [CONSTRAINTS] ...]""")) - -parser.add_argument('-d', '--debug', action='store_true', - help="write out debug logs during compile") -parser.add_argument('-D', '--pdb', action='store_true', - help="run spack under the pdb debugger") -parser.add_argument('-k', '--insecure', action='store_true', - help="do not check ssl certificates when downloading") -parser.add_argument('-m', '--mock', action='store_true', - help="use mock packages instead of real ones") -parser.add_argument('-p', '--profile', action='store_true', - help="profile execution using cProfile") -parser.add_argument('-P', '--sorted-profile', default=None, metavar="STAT", - help="profile and sort by one or more of:\n[%s]" % - ',\n '.join([', '.join(line) for line in stat_lines])) -parser.add_argument('--lines', default=20, action='store', - help="lines of profile output: default 20; 'all' for all") -parser.add_argument('-v', '--verbose', action='store_true', - help="print additional output during builds") -parser.add_argument('-s', '--stacktrace', action='store_true', - help="add stacktrace info to all printed statements") -parser.add_argument('-V', '--version', action='version', - version="%s" % spack.spack_version) - -# each command module implements a parser() function, to which we pass its -# subparser for setup. -subparsers = parser.add_subparsers(metavar='SUBCOMMAND', dest="command") - - -import spack.cmd -for cmd in spack.cmd.commands: - module = spack.cmd.get_module(cmd) - cmd_name = cmd.replace('_', '-') - subparser = subparsers.add_parser(cmd_name, help=module.description) - module.setup_parser(subparser) - - -def _main(args, unknown_args): - # Set up environment based on args. - tty.set_verbose(args.verbose) - tty.set_debug(args.debug) - tty.set_stacktrace(args.stacktrace) - spack.debug = args.debug - - if spack.debug: - import spack.util.debug as debug - debug.register_interrupt_handler() - - # Run any available pre-run hooks - spack.hooks.pre_run() - - spack.spack_working_dir = working_dir - if args.mock: - from spack.repository import RepoPath - spack.repo.swap(RepoPath(spack.mock_packages_path)) - - # If the user asked for it, don't check ssl certs. - if args.insecure: - tty.warn("You asked for --insecure. Will NOT check SSL certificates.") - spack.insecure = True - - # Try to load the particular command asked for and run it - command = spack.cmd.get_command(args.command.replace('-', '_')) - - # Allow commands to inject an optional argument and get unknown args - # if they want to handle them. - info = dict(inspect.getmembers(command)) - varnames = info['__code__'].co_varnames - argcount = info['__code__'].co_argcount - - # Actually execute the command - try: - if argcount == 3 and varnames[2] == 'unknown_args': - return_val = command(parser, args, unknown_args) - else: - if unknown_args: - tty.die('unrecognized arguments: %s' % ' '.join(unknown_args)) - return_val = command(parser, args) - except SpackError as e: - e.die() - except Exception as e: - tty.die(str(e)) - except KeyboardInterrupt: - sys.stderr.write('\n') - tty.die("Keyboard interrupt.") - - # Allow commands to return values if they want to exit with some other code. - if return_val is None: - sys.exit(0) - elif isinstance(return_val, int): - sys.exit(return_val) - else: - tty.die("Bad return value from command %s: %s" - % (args.command, return_val)) - - -def main(args): - # Just print help and exit if run with no arguments at all - if len(args) == 1: - parser.print_help() - sys.exit(1) - - # actually parse the args. - args, unknown = parser.parse_known_args() - - if args.profile or args.sorted_profile: - import cProfile - - try: - nlines = int(args.lines) - except ValueError: - if args.lines != 'all': - tty.die('Invalid number for --lines: %s' % args.lines) - nlines = -1 - - # allow comma-separated list of fields - sortby = ['time'] - if args.sorted_profile: - sortby = args.sorted_profile.split(',') - for stat in sortby: - if stat not in stat_names: - tty.die("Invalid sort field: %s" % stat) - - try: - # make a profiler and run the code. - pr = cProfile.Profile() - pr.enable() - _main(args, unknown) - finally: - pr.disable() - - # print out profile stats. - stats = pstats.Stats(pr) - stats.sort_stats(*sortby) - stats.print_stats(nlines) - - elif args.pdb: - import pdb - pdb.runctx('_main(args, unknown)', globals(), locals()) - else: - _main(args, unknown) - - -if __name__ == '__main__': - main(sys.argv) +# Once we've set up the system path, run the spack main method +import spack.main # noqa +sys.exit(spack.main.main()) diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 73963b848c6..27283d10a96 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -217,5 +217,5 @@ # Add default values for attributes that would otherwise be modified from # Spack main script -debug = True +debug = False spack_working_dir = None diff --git a/lib/spack/spack/cmd/activate.py b/lib/spack/spack/cmd/activate.py index f21799753b5..f7e826efd6e 100644 --- a/lib/spack/spack/cmd/activate.py +++ b/lib/spack/spack/cmd/activate.py @@ -28,6 +28,8 @@ import spack.cmd description = "activate a package extension" +section = "extensions" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/arch.py b/lib/spack/spack/cmd/arch.py index 1079e7f215f..d4241dcae94 100644 --- a/lib/spack/spack/cmd/arch.py +++ b/lib/spack/spack/cmd/arch.py @@ -27,6 +27,8 @@ import spack.architecture as architecture description = "print architecture information about this machine" +section = "system" +level = "short" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/bootstrap.py b/lib/spack/spack/cmd/bootstrap.py index a804086a389..b6daf4f09bf 100644 --- a/lib/spack/spack/cmd/bootstrap.py +++ b/lib/spack/spack/cmd/bootstrap.py @@ -33,6 +33,8 @@ _SPACK_UPSTREAM = 'https://github.com/llnl/spack' description = "create a new installation of spack in another prefix" +section = "admin" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/build.py b/lib/spack/spack/cmd/build.py index 877f2ce0cfc..cc63c6593b8 100644 --- a/lib/spack/spack/cmd/build.py +++ b/lib/spack/spack/cmd/build.py @@ -27,6 +27,9 @@ from spack import * description = 'stops at build stage when installing a package, if possible' +section = "build" +level = "long" + build_system_to_phase = { AutotoolsPackage: 'build', diff --git a/lib/spack/spack/cmd/cd.py b/lib/spack/spack/cmd/cd.py index 784ad4ac83c..531f3c59fd1 100644 --- a/lib/spack/spack/cmd/cd.py +++ b/lib/spack/spack/cmd/cd.py @@ -26,6 +26,8 @@ import spack.modules description = "cd to spack directories in the shell" +section = "environment" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/checksum.py b/lib/spack/spack/cmd/checksum.py index fda9beed27c..d8a17fd3836 100644 --- a/lib/spack/spack/cmd/checksum.py +++ b/lib/spack/spack/cmd/checksum.py @@ -36,6 +36,8 @@ from spack.version import * description = "checksum available versions of a package" +section = "packaging" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py index 6c70b5bd38f..23507822ef4 100644 --- a/lib/spack/spack/cmd/clean.py +++ b/lib/spack/spack/cmd/clean.py @@ -30,6 +30,8 @@ import spack.cmd description = "remove build stage and source tarball for packages" +section = "build" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index 6067d44c5ef..f2eeca20ab3 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -39,6 +39,8 @@ from spack.util.environment import get_path description = "manage compilers" +section = "system" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/compilers.py b/lib/spack/spack/cmd/compilers.py index 934fc6cf061..f0e21f987ec 100644 --- a/lib/spack/spack/cmd/compilers.py +++ b/lib/spack/spack/cmd/compilers.py @@ -25,7 +25,9 @@ import spack from spack.cmd.compiler import compiler_list -description = "list available compilers, same as 'spack compiler list'" +description = "list available compilers" +section = "system" +level = "short" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/config.py b/lib/spack/spack/cmd/config.py index a647e3ed6e6..61c2c6f0e8b 100644 --- a/lib/spack/spack/cmd/config.py +++ b/lib/spack/spack/cmd/config.py @@ -25,6 +25,8 @@ import spack.config description = "get and set configuration options" +section = "config" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/configure.py b/lib/spack/spack/cmd/configure.py index 7f6c07c34b7..7cab5660524 100644 --- a/lib/spack/spack/cmd/configure.py +++ b/lib/spack/spack/cmd/configure.py @@ -30,7 +30,9 @@ from spack import * -description = 'stops at configuration stage when installing a package, if possible' # NOQA: ignore=E501 +description = 'stage and configure a package but do not install' +section = "build" +level = "long" build_system_to_phase = { diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index adaf388387b..89ba050a538 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -40,6 +40,9 @@ from spack.url import * description = "create a new package file" +section = "packaging" +level = "short" + package_template = '''\ ############################################################################## diff --git a/lib/spack/spack/cmd/deactivate.py b/lib/spack/spack/cmd/deactivate.py index 7ea20392362..3d8020d064a 100644 --- a/lib/spack/spack/cmd/deactivate.py +++ b/lib/spack/spack/cmd/deactivate.py @@ -31,6 +31,8 @@ from spack.graph import topological_sort description = "deactivate a package extension" +section = "extensions" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/debug.py b/lib/spack/spack/cmd/debug.py index 06dea9ea708..ba5f7838394 100644 --- a/lib/spack/spack/cmd/debug.py +++ b/lib/spack/spack/cmd/debug.py @@ -34,6 +34,8 @@ from spack.util.executable import which description = "debugging commands for troubleshooting Spack" +section = "developer" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index c752ffb9432..6c481548d38 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -31,6 +31,8 @@ import spack.cmd description = "show installed packages that depend on another" +section = "basic" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/diy.py b/lib/spack/spack/cmd/diy.py index c67e189f733..14d28bb3f4c 100644 --- a/lib/spack/spack/cmd/diy.py +++ b/lib/spack/spack/cmd/diy.py @@ -34,6 +34,8 @@ from spack.stage import DIYStage description = "do-it-yourself: build from an existing source directory" +section = "developer" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/docs.py b/lib/spack/spack/cmd/docs.py new file mode 100644 index 00000000000..fe026da4a7d --- /dev/null +++ b/lib/spack/spack/cmd/docs.py @@ -0,0 +1,33 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 webbrowser + +description = 'open spack documentation in a web browser' +section = 'help' +level = 'short' + + +def docs(parser, args): + webbrowser.open('https://spack.readthedocs.io') diff --git a/lib/spack/spack/cmd/edit.py b/lib/spack/spack/cmd/edit.py index 01f2b618876..0287b8cd677 100644 --- a/lib/spack/spack/cmd/edit.py +++ b/lib/spack/spack/cmd/edit.py @@ -33,6 +33,8 @@ from spack.repository import Repo description = "open package files in $EDITOR" +section = "packaging" +level = "short" def edit_package(name, repo_path, namespace): diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index ed18940ac09..034b710b852 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -31,7 +31,9 @@ import spack.cmd import spack.build_environment as build_env -description = "run a command with the install environment for a spec" +description = "show install environment for a spec, and run commands" +section = "build" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/extensions.py b/lib/spack/spack/cmd/extensions.py index 94a3e8288f5..d073d42cc3b 100644 --- a/lib/spack/spack/cmd/extensions.py +++ b/lib/spack/spack/cmd/extensions.py @@ -33,6 +33,8 @@ import spack.store description = "list extensions for package" +section = "extensions" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/fetch.py b/lib/spack/spack/cmd/fetch.py index 35cc23a9631..cf39d4a40bd 100644 --- a/lib/spack/spack/cmd/fetch.py +++ b/lib/spack/spack/cmd/fetch.py @@ -28,6 +28,8 @@ import spack.cmd description = "fetch archives for packages" +section = "build" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index 3a6d8270fb8..0142155fe18 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -29,7 +29,9 @@ from spack.cmd import display_specs -description = "find installed spack packages" +description = "list and search installed packages" +section = "basic" +level = "short" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index 42d36a3beb2..9753b20e788 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -36,7 +36,11 @@ import spack from spack.util.executable import * + description = "runs source code style checks on Spack. requires flake8" +section = "developer" +level = "long" + """List of directories to exclude from checks.""" exclude_directories = [spack.external_path] diff --git a/lib/spack/spack/cmd/graph.py b/lib/spack/spack/cmd/graph.py index ee401d8fb7a..3a82f39ce55 100644 --- a/lib/spack/spack/cmd/graph.py +++ b/lib/spack/spack/cmd/graph.py @@ -34,6 +34,8 @@ from spack.graph import * description = "generate graphs of package dependency relationships" +section = "basic" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/help.py b/lib/spack/spack/cmd/help.py index e867ca12958..313b082e2f0 100644 --- a/lib/spack/spack/cmd/help.py +++ b/lib/spack/spack/cmd/help.py @@ -22,16 +22,100 @@ # 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 sys +from llnl.util.tty import colorize + description = "get help on spack and its commands" +section = "help" +level = "short" + +# +# These are longer guides on particular aspects of Spack. Currently there +# is only one on spec syntax. +# +spec_guide = """\ +spec expression syntax: + + package [constraints] [^dependency [constraints] ...] + + package any package from 'spack list' + + constraints: + versions: + @c{@version} single version + @c{@min:max} version range (inclusive) + @c{@min:} version or higher + @c{@:max} up to version (inclusive) + + compilers: + @g{%compiler} build with + @g{%compiler@version} build with specific compiler version + @g{%compiler@min:max} specific version range (see above) + + variants: + @B{+variant} enable + @r{-variant} or @r{~variant} disable + @B{variant=value} set non-boolean to + @B{variant=value1,value2,value3} set multi-value values + + architecture variants: + @m{target=target} specific processor + @m{os=operating_system} specific + @m{platform=platform} linux, darwin, cray, bgq, etc. + @m{arch=platform-os-target} shortcut for all three above + + cross-compiling: + @m{os=backend} or @m{os=be} build for compute node (backend) + @m{os=frontend} or @m{os=fe} build for login node (frontend) + + dependencies: + ^dependency [constraints] specify constraints on dependencies + + examples: + hdf5 any hdf5 configuration + hdf5 @c{@1.10.1} hdf5 version 1.10.1 + hdf5 @c{@1.8:} hdf5 1.8 or higher + hdf5 @c{@1.8:} @g{%gcc} hdf5 1.8 or higher built with gcc + hdf5 @B{+mpi} hdf5 with mpi enabled + hdf5 @r{~mpi} hdf5 with mpi disabled + hdf5 @B{+mpi} ^mpich hdf5 with mpi, using mpich + hdf5 @B{+mpi} ^openmpi@c{@1.7} hdf5 wtih mpi, using openmpi 1.7 + boxlib @B{dim=2} boxlib built for 2 dimensions + libdwarf @g{%intel} ^libelf@g{%gcc} + libdwarf, built with intel compiler, linked to libelf built with gcc + mvapich2 @g{%pgi} @B{fabrics=psm,mrail,sock} + mvapich2, built with pgi compiler, with support for multiple fabrics +""" + + +guides = { + 'spec': spec_guide, +} def setup_parser(subparser): - subparser.add_argument('help_command', nargs='?', default=None, - help='command to get help on') + help_cmd_group = subparser.add_mutually_exclusive_group() + help_cmd_group.add_argument('help_command', nargs='?', default=None, + help='command to get help on') + + help_all_group = subparser.add_mutually_exclusive_group() + help_all_group.add_argument( + '-a', '--all', action='store_const', const='long', default='short', + help='print all available commands') + + help_spec_group = subparser.add_mutually_exclusive_group() + help_spec_group.add_argument( + '--spec', action='store_const', dest='guide', const='spec', + default=None, help='print all available commands') def help(parser, args): + if args.guide: + print(colorize(guides[args.guide])) + return 0 + if args.help_command: + parser.add_command(args.help_command) parser.parse_args([args.help_command, '-h']) else: - parser.print_help() + sys.stdout.write(parser.format_help(level=args.all)) diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 86ec839b90e..62de5484af1 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -31,6 +31,8 @@ import spack.fetch_strategy as fs description = "get detailed information on a particular package" +section = "basic" +level = "short" def padder(str_list, extra=0): diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index fb01fc2d5e1..87fad761818 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -41,6 +41,8 @@ from spack.package import PackageBase description = "build and install packages" +section = "build" +level = "short" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/list.py b/lib/spack/spack/cmd/list.py index bcfb0929452..72be99d260b 100644 --- a/lib/spack/spack/cmd/list.py +++ b/lib/spack/spack/cmd/list.py @@ -35,7 +35,10 @@ import spack from llnl.util.tty.colify import colify -description = "print available spack packages to stdout in different formats" +description = "list and search available packages" +section = "basic" +level = "short" + formatters = {} diff --git a/lib/spack/spack/cmd/load.py b/lib/spack/spack/cmd/load.py index cdc3a741ae0..106a95c9c2b 100644 --- a/lib/spack/spack/cmd/load.py +++ b/lib/spack/spack/cmd/load.py @@ -25,7 +25,9 @@ import argparse import spack.modules -description = "add package to environment using modules" +description = "add package to environment using `module load`" +section = "environment" +level = "short" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/location.py b/lib/spack/spack/cmd/location.py index d1a78256302..e713d028d2a 100644 --- a/lib/spack/spack/cmd/location.py +++ b/lib/spack/spack/cmd/location.py @@ -31,6 +31,8 @@ import spack.cmd description = "print out locations of various directories used by Spack" +section = "environment" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/md5.py b/lib/spack/spack/cmd/md5.py index fc205cc6933..1d121f01209 100644 --- a/lib/spack/spack/cmd/md5.py +++ b/lib/spack/spack/cmd/md5.py @@ -32,6 +32,8 @@ from spack.stage import Stage, FailedDownloadError description = "calculate md5 checksums for files/urls" +section = "packaging" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py index 528fcbfc3fd..e5b3b492b4d 100644 --- a/lib/spack/spack/cmd/mirror.py +++ b/lib/spack/spack/cmd/mirror.py @@ -38,6 +38,8 @@ from spack.util.spack_yaml import syaml_dict description = "manage mirrors" +section = "config" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/module.py b/lib/spack/spack/cmd/module.py index 37c79a358bb..f8253aad6f4 100644 --- a/lib/spack/spack/cmd/module.py +++ b/lib/spack/spack/cmd/module.py @@ -36,6 +36,9 @@ from spack.modules import module_types description = "manipulate module files" +section = "environment" +level = "short" + # Dictionary that will be populated with the list of sub-commands # Each sub-command must be callable and accept 3 arguments : diff --git a/lib/spack/spack/cmd/patch.py b/lib/spack/spack/cmd/patch.py index 2e332554ad8..dfe45b0494e 100644 --- a/lib/spack/spack/cmd/patch.py +++ b/lib/spack/spack/cmd/patch.py @@ -30,6 +30,8 @@ description = "patch expanded archive sources in preparation for install" +section = "build" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/pkg.py b/lib/spack/spack/cmd/pkg.py index 12dcb817924..aca69e9c993 100644 --- a/lib/spack/spack/cmd/pkg.py +++ b/lib/spack/spack/cmd/pkg.py @@ -34,6 +34,8 @@ from spack.util.executable import * description = "query packages associated with particular git revisions" +section = "developer" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/providers.py b/lib/spack/spack/cmd/providers.py index 470e3e5ed2f..f30c28a951d 100644 --- a/lib/spack/spack/cmd/providers.py +++ b/lib/spack/spack/cmd/providers.py @@ -30,6 +30,8 @@ import spack.cmd description = "list packages that provide a particular virtual package" +section = "basic" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/purge.py b/lib/spack/spack/cmd/purge.py index 56165d5d97a..b7ebb0fc69e 100644 --- a/lib/spack/spack/cmd/purge.py +++ b/lib/spack/spack/cmd/purge.py @@ -26,6 +26,8 @@ import spack.stage as stage description = "remove temporary build files and/or downloaded archives" +section = "admin" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/doc.py b/lib/spack/spack/cmd/pydoc.py similarity index 91% rename from lib/spack/spack/cmd/doc.py rename to lib/spack/spack/cmd/pydoc.py index 12ae6b49738..c9003184c4e 100644 --- a/lib/spack/spack/cmd/doc.py +++ b/lib/spack/spack/cmd/pydoc.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -24,11 +24,13 @@ ############################################################################## description = "run pydoc from within spack" +section = "developer" +level = "long" def setup_parser(subparser): subparser.add_argument('entity', help="run pydoc help on entity") -def doc(parser, args): +def pydoc(parser, args): help(args.entity) diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py index 6df95075803..3c4fbf9e87b 100644 --- a/lib/spack/spack/cmd/python.py +++ b/lib/spack/spack/cmd/python.py @@ -32,6 +32,8 @@ description = "launch an interpreter as spack would launch a command" +section = "developer" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/reindex.py b/lib/spack/spack/cmd/reindex.py index 0bbd85069fc..dff127bc069 100644 --- a/lib/spack/spack/cmd/reindex.py +++ b/lib/spack/spack/cmd/reindex.py @@ -26,6 +26,9 @@ import spack.store description = "rebuild Spack's package database" +section = "admin" +level = "long" + def reindex(parser, args): spack.store.db.reindex(spack.store.layout) diff --git a/lib/spack/spack/cmd/repo.py b/lib/spack/spack/cmd/repo.py index dd75f148c20..5beb0083e22 100644 --- a/lib/spack/spack/cmd/repo.py +++ b/lib/spack/spack/cmd/repo.py @@ -33,6 +33,8 @@ from spack.repository import * description = "manage package source repositories" +section = "config" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/restage.py b/lib/spack/spack/cmd/restage.py index 36fee9237b5..4cecf4b42e6 100644 --- a/lib/spack/spack/cmd/restage.py +++ b/lib/spack/spack/cmd/restage.py @@ -30,6 +30,8 @@ import spack.cmd description = "revert checked out package source code" +section = "build" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/setup.py b/lib/spack/spack/cmd/setup.py index 82d00f4e11f..79e7bca1ab0 100644 --- a/lib/spack/spack/cmd/setup.py +++ b/lib/spack/spack/cmd/setup.py @@ -39,6 +39,8 @@ from spack.stage import DIYStage description = "create a configuration script and module, but don't build" +section = "developer" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index 2e917d2ee35..f4105900cb1 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -29,7 +29,9 @@ import spack.cmd import spack.cmd.common.arguments as arguments -description = "print out abstract and concrete versions of a spec" +description = "show what would be installed, given a spec" +section = "build" +level = "short" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/stage.py b/lib/spack/spack/cmd/stage.py index e0023b7254d..a469cd896da 100644 --- a/lib/spack/spack/cmd/stage.py +++ b/lib/spack/spack/cmd/stage.py @@ -29,6 +29,8 @@ import spack.cmd description = "expand downloaded archive in preparation for install" +section = "build" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index 9384e3a9e62..f7ec6a10e0d 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -36,7 +36,9 @@ import spack -description = "a thin wrapper around the pytest command" +description = "run spack's unit tests" +section = "developer" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index f3eaddf88ab..6880409c56c 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -33,7 +33,9 @@ from llnl.util import tty -description = "remove an installed package" +description = "remove installed packages" +section = "build" +level = "short" error_message = """You can either: a) use a more specific spec, or diff --git a/lib/spack/spack/cmd/unload.py b/lib/spack/spack/cmd/unload.py index 5da6f5daa58..8a0511f64c5 100644 --- a/lib/spack/spack/cmd/unload.py +++ b/lib/spack/spack/cmd/unload.py @@ -25,7 +25,9 @@ import argparse import spack.modules -description = "remove package from environment using module" +description = "remove package from environment using `module unload`" +section = "environment" +level = "short" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/unuse.py b/lib/spack/spack/cmd/unuse.py index e4797494578..77312d1204f 100644 --- a/lib/spack/spack/cmd/unuse.py +++ b/lib/spack/spack/cmd/unuse.py @@ -26,6 +26,8 @@ import spack.modules description = "remove package from environment using dotkit" +section = "environment" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/url.py b/lib/spack/spack/cmd/url.py index e5cfce0de36..28118a178a2 100644 --- a/lib/spack/spack/cmd/url.py +++ b/lib/spack/spack/cmd/url.py @@ -34,6 +34,8 @@ from spack.util.naming import simplify_name description = "debugging tool for url parsing" +section = "developer" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/use.py b/lib/spack/spack/cmd/use.py index c9714d9de07..e67de3a8b30 100644 --- a/lib/spack/spack/cmd/use.py +++ b/lib/spack/spack/cmd/use.py @@ -26,6 +26,8 @@ import spack.modules description = "add package to environment using dotkit" +section = "environment" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/versions.py b/lib/spack/spack/cmd/versions.py index a6f6805fb02..446f0a876d4 100644 --- a/lib/spack/spack/cmd/versions.py +++ b/lib/spack/spack/cmd/versions.py @@ -29,6 +29,8 @@ import spack description = "list available versions of a package" +section = "packaging" +level = "long" def setup_parser(subparser): diff --git a/lib/spack/spack/cmd/view.py b/lib/spack/spack/cmd/view.py index 72e139d123c..8fb94d3f378 100644 --- a/lib/spack/spack/cmd/view.py +++ b/lib/spack/spack/cmd/view.py @@ -69,7 +69,9 @@ import spack.cmd import llnl.util.tty as tty -description = "produce a single-rooted directory view of a spec" +description = "produce a single-rooted directory view of packages" +section = "environment" +level = "short" def setup_parser(sp): diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py new file mode 100644 index 00000000000..39c64b3ce03 --- /dev/null +++ b/lib/spack/spack/main.py @@ -0,0 +1,468 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +"""This is the implementation of the Spack command line executable. + +In a normal Spack installation, this is invoked from the bin/spack script +after the system path is set up. +""" +from __future__ import print_function + +import sys +import os +import inspect +from argparse import _ArgumentGroup, ArgumentParser, RawTextHelpFormatter +import pstats + +import llnl.util.tty as tty +from llnl.util.tty.color import * + +import spack +import spack.cmd +from spack.error import SpackError + + +# names of profile statistics +stat_names = pstats.Stats.sort_arg_dict_default + +# help levels in order of detail (i.e., number of commands shown) +levels = ['short', 'long'] + +# intro text for help at different levels +intro_by_level = { + 'short': 'These are common spack commands:', + 'long': 'Complete list of spack commands:', +} + +# control top-level spack options shown in basic vs. advanced help +options_by_level = { + 'short': 'hkV', + 'long': 'all' +} + +# Longer text for each section, to show in help +section_descriptions = { + 'admin': 'administration', + 'basic': 'query packages', + 'build': 'build packages', + 'config': 'configuration', + 'developer': 'developer', + 'environment': 'environment', + 'extensions': 'extensions', + 'help': 'more help', + 'packaging': 'create packages', + 'system': 'system', +} + +# preferential command order for some sections (e.g., build pipeline is +# in execution order, not alphabetical) +section_order = { + 'basic': ['list', 'info', 'find'], + 'build': ['fetch', 'stage', 'patch', 'configure', 'build', 'restage', + 'install', 'uninstall', 'clean'] +} + +# Properties that commands are required to set. +required_command_properties = ['level', 'section', 'description'] + + +def set_working_dir(): + """Change the working directory to getcwd, or spack prefix if no cwd.""" + try: + spack.spack_working_dir = os.getcwd() + except OSError: + os.chdir(spack_prefix) + spack.spack_working_dir = spack_prefix + + +def add_all_commands(parser): + """Add all spack subcommands to the parser.""" + for cmd in spack.cmd.commands: + parser.add_command(cmd) + + +def index_commands(): + """create an index of commands by section for this help level""" + index = {} + for command in spack.cmd.commands: + cmd_module = spack.cmd.get_module(command) + + # make sure command modules have required properties + for p in required_command_properties: + prop = getattr(cmd_module, p, None) + if not prop: + tty.die("Command doesn't define a property '%s': %s" + % (p, command)) + + # add commands to lists for their level and higher levels + for level in reversed(levels): + level_sections = index.setdefault(level, {}) + commands = level_sections.setdefault(cmd_module.section, []) + commands.append(command) + if level == cmd_module.level: + break + + return index + + +class SpackArgumentParser(ArgumentParser): + def format_help_sections(self, level): + """Format help on sections for a particular verbosity level. + + Args: + level (str): 'short' or 'long' (more commands shown for long) + """ + if level not in levels: + raise ValueError("level must be one of: %s" % levels) + + # lazily add all commands to the parser when needed. + add_all_commands(self) + + """Print help on subcommands in neatly formatted sections.""" + formatter = self._get_formatter() + + # Create a list of subcommand actions. Argparse internals are nasty! + # Note: you can only call _get_subactions() once. Even nastier! + if not hasattr(self, 'actions'): + self.actions = self._subparsers._actions[-1]._get_subactions() + + # make a set of commands not yet added. + remaining = set(spack.cmd.commands) + + def add_group(group): + formatter.start_section(group.title) + formatter.add_text(group.description) + formatter.add_arguments(group._group_actions) + formatter.end_section() + + def add_subcommand_group(title, commands): + """Add informational help group for a specific subcommand set.""" + cmd_set = set(commands) + + # make a dict of commands of interest + cmds = dict((action.metavar, action) for action in self.actions + if action.metavar in cmd_set) + + # add commands to a group in order, and add the group + group = _ArgumentGroup(self, title=title) + for name in commands: + group._add_action(cmds[name]) + if name in remaining: + remaining.remove(name) + add_group(group) + + # select only the options for the particular level we're showing. + show_options = options_by_level[level] + if show_options != 'all': + opts = dict((opt.option_strings[0].strip('-'), opt) + for opt in self._optionals._group_actions) + + new_actions = [opts[letter] for letter in show_options] + self._optionals._group_actions = new_actions + + options = ''.join(opt.option_strings[0].strip('-') + for opt in self._optionals._group_actions) + + index = index_commands() + + # usage + formatter.add_text( + "usage: %s [-%s] [...]" % (self.prog, options)) + + # description + formatter.add_text(self.description) + + # start subcommands + formatter.add_text(intro_by_level[level]) + + # add argument groups based on metadata in commands + sections = index[level] + for section in sorted(sections): + if section == 'help': + continue # Cover help in the epilog. + + group_description = section_descriptions.get(section, section) + + to_display = sections[section] + commands = [] + + # add commands whose order we care about first. + if section in section_order: + commands.extend(cmd for cmd in section_order[section] + if cmd in to_display) + + # add rest in alphabetical order. + commands.extend(cmd for cmd in sorted(sections[section]) + if cmd not in commands) + + # add the group to the parser + add_subcommand_group(group_description, commands) + + # optionals + add_group(self._optionals) + + # epilog + formatter.add_text("""\ +{help}: + spack help -a list all available commands + spack help help on a specific command + spack help --spec help on the spec syntax + spack docs open http://spack.rtfd.io/ in a browser""" +.format(help=section_descriptions['help'])) + + # determine help from format above + return formatter.format_help() + + def add_command(self, name): + """Add one subcommand to this parser.""" + # lazily initialize any subparsers + if not hasattr(self, 'subparsers'): + # remove the dummy "command" argument. + self._remove_action(self._actions[-1]) + self.subparsers = self.add_subparsers(metavar='COMMAND', + dest="command") + + # each command module implements a parser() function, to which we + # pass its subparser for setup. + module = spack.cmd.get_module(name) + cmd_name = name.replace('_', '-') + subparser = self.subparsers.add_parser( + cmd_name, help=module.description, description=module.description) + module.setup_parser(subparser) + return module + + def format_help(self, level='short'): + if self.prog == 'spack': + # use format_help_sections for the main spack parser, but not + # for subparsers + return self.format_help_sections(level) + else: + # in subparsers, self.prog is, e.g., 'spack install' + return super(SpackArgumentParser, self).format_help() + + +def make_argument_parser(): + """Create an basic argument parser without any subcommands added.""" + parser = SpackArgumentParser( + formatter_class=RawTextHelpFormatter, add_help=False, + description=( + "A flexible package manager that supports multiple versions,\n" + "configurations, platforms, and compilers.")) + + # stat names in groups of 7, for nice wrapping. + stat_lines = list(zip(*(iter(stat_names),) * 7)) + + parser.add_argument('-h', '--help', action='store_true', + help="show this help message and exit") + parser.add_argument('-d', '--debug', action='store_true', + help="write out debug logs during compile") + parser.add_argument('-D', '--pdb', action='store_true', + help="run spack under the pdb debugger") + parser.add_argument('-k', '--insecure', action='store_true', + help="do not check ssl certificates when downloading") + parser.add_argument('-m', '--mock', action='store_true', + help="use mock packages instead of real ones") + parser.add_argument('-p', '--profile', action='store_true', + help="profile execution using cProfile") + parser.add_argument('-P', '--sorted-profile', default=None, metavar="STAT", + help="profile and sort by one or more of:\n[%s]" % + ',\n '.join([', '.join(line) for line in stat_lines])) + parser.add_argument('--lines', default=20, action='store', + help="lines of profile output; default 20; or 'all'") + parser.add_argument('-v', '--verbose', action='store_true', + help="print additional output during builds") + parser.add_argument('-s', '--stacktrace', action='store_true', + help="add stacktraces to all printed statements") + parser.add_argument('-V', '--version', action='store_true', + help='show version number and exit') + return parser + + +def setup_main_options(args): + """Configure spack globals based on the basic options.""" + # Set up environment based on args. + tty.set_verbose(args.verbose) + tty.set_debug(args.debug) + tty.set_stacktrace(args.stacktrace) + spack.debug = args.debug + + if spack.debug: + import spack.util.debug as debug + debug.register_interrupt_handler() + + if args.mock: + from spack.repository import RepoPath + spack.repo.swap(RepoPath(spack.mock_packages_path)) + + # If the user asked for it, don't check ssl certs. + if args.insecure: + tty.warn("You asked for --insecure. Will NOT check SSL certificates.") + spack.insecure = True + + +def allows_unknown_args(command): + """This is a basic argument injection test. + + Commands may add an optional argument called "unknown args" to + indicate they can handle unknonwn args, and we'll pass the unknown + args in. + """ + info = dict(inspect.getmembers(command)) + varnames = info['__code__'].co_varnames + argcount = info['__code__'].co_argcount + return (argcount == 3 and varnames[2] == 'unknown_args') + + +def _main(command, parser, args, unknown_args): + # many operations will fail without a working directory. + set_working_dir() + + # only setup main options in here, after the real parse (we'll get it + # wrong if we do it after the initial, partial parse) + setup_main_options(args) + spack.hooks.pre_run() + + # Now actually execute the command + try: + if allows_unknown_args(command): + return_val = command(parser, args, unknown_args) + else: + if unknown_args: + tty.die('unrecognized arguments: %s' % ' '.join(unknown_args)) + return_val = command(parser, args) + except SpackError as e: + e.die() # gracefully die on any SpackErrors + except Exception as e: + if spack.debug: + raise + tty.die(str(e)) + except KeyboardInterrupt: + sys.stderr.write('\n') + tty.die("Keyboard interrupt.") + + # Allow commands to return and error code if they want + return 0 if return_val is None else return_val + + +def _profile_wrapper(command, parser, args, unknown_args): + import cProfile + + try: + nlines = int(args.lines) + except ValueError: + if args.lines != 'all': + tty.die('Invalid number for --lines: %s' % args.lines) + nlines = -1 + + # allow comma-separated list of fields + sortby = ['time'] + if args.sorted_profile: + sortby = args.sorted_profile.split(',') + for stat in sortby: + if stat not in stat_names: + tty.die("Invalid sort field: %s" % stat) + + try: + # make a profiler and run the code. + pr = cProfile.Profile() + pr.enable() + return _main(command, parser, args, unknown_args) + + finally: + pr.disable() + + # print out profile stats. + stats = pstats.Stats(pr) + stats.sort_stats(*sortby) + stats.print_stats(nlines) + + +def main(argv=None): + """This is the entry point for the Spack command. + + Args: + argv (list of str or None): command line arguments, NOT including + the executable name. If None, parses from sys.argv. + """ + # Create a parser with a simple positional argument first. We'll + # lazily load the subcommand(s) we need later. This allows us to + # avoid loading all the modules from spack.cmd when we don't need + # them, which reduces startup latency. + parser = make_argument_parser() + parser.add_argument( + 'command', metavar='COMMAND', nargs='?', action='store') + args, unknown = parser.parse_known_args(argv) + + # Just print help and exit if run with no arguments at all + no_args = (len(sys.argv) == 1) if argv is None else (len(argv) == 0) + if no_args: + parser.print_help() + return 1 + + # -h and -V are special as they do not require a command, but all the + # other options do nothing without a command. + if not args.command: + if args.version: + print(spack.spack_version) + return 0 + else: + parser.print_help() + return 0 if args.help else 1 + + # Try to load the particular command the caller asked for. If there + # is no module for it, just die. + command_name = args.command.replace('-', '_') + try: + parser.add_command(command_name) + except ImportError: + if spack.debug: + raise + tty.die("Unknown command: %s" % args.command) + + # Re-parse with the proper sub-parser added. + args, unknown = parser.parse_known_args() + + # we now know whether options go with spack or the command + if args.version: + print(spack.spack_version) + return 0 + elif args.help: + parser.print_help() + return 0 + + # now we can actually execute the command. + command = spack.cmd.get_command(command_name) + try: + if args.profile or args.sorted_profile: + _profile_wrapper(command, parser, args, unknown) + elif args.pdb: + import pdb + pdb.runctx('_main(command, parser, args, unknown)', + globals(), locals()) + return 0 + else: + return _main(command, parser, args, unknown) + + except SystemExit as e: + return e.code diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index fe2ec6f54ac..87203ba915d 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -20,6 +20,10 @@ cd "$SPACK_ROOT" # Print compiler information spack config get compilers +# Run spack help to cover command import +${coverage_run} bin/spack -h +${coverage_run} bin/spack help -a + # Profile and print top 20 lines for a simple call to spack spec ${coverage_run} bin/spack -p --lines 20 spec mpileaks From 3efa9bd29678c884df9f9ff8c97416741f01fde1 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 8 May 2017 22:24:37 +0200 Subject: [PATCH 0858/2394] spec_syntax: added xfailing tests for cases in #4144 (#4151) It seems that parse_anonymous_spec may fail if more than one part (variant, version range, etc.) is given to the function. Added tests to code against to fix the problem in #4144. --- lib/spack/spack/test/spec_syntax.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/spack/spack/test/spec_syntax.py b/lib/spack/spack/test/spec_syntax.py index dfad4a019ff..2ee9ef486ce 100644 --- a/lib/spack/spack/test/spec_syntax.py +++ b/lib/spack/spack/test/spec_syntax.py @@ -138,6 +138,13 @@ def test_anonymous_specs(self): self.check_parse("^zlib") self.check_parse("+foo") self.check_parse("arch=test-None-None", "platform=test") + self.check_parse('@2.7:') + + @pytest.mark.xfail() + def test_anonymous_specs_with_multiple_parts(self): + # Parse anonymous spec with multiple tokens + self.check_parse('languages=go @4.2:') + self.check_parse('@4.2: languages=go') def test_simple_dependence(self): self.check_parse("openmpi^hwloc") @@ -539,3 +546,22 @@ def test_kv_with_spaces(self): "mvapich_foo debug= 4 " "^ _openmpi @1.2 : 1.4 , 1.6 % intel @ 12.1 : 12.6 + debug - qt_4 " "^ stackwalker @ 8.1_1e") + + +@pytest.mark.parametrize('spec,anon_spec,spec_name', [ + ('openmpi languages=go', 'languages=go', 'openmpi'), + ('openmpi @4.6:', '@4.6:', 'openmpi'), + pytest.mark.xfail( + ('openmpi languages=go @4.6:', 'languages=go @4.6:', 'openmpi') + ), + pytest.mark.xfail( + ('openmpi @4.6: languages=go', '@4.6: languages=go', 'openmpi') + ), +]) +def test_parse_anonymous_specs(spec, anon_spec, spec_name): + + expected = parse(spec) + spec = parse_anonymous_spec(anon_spec, spec_name) + + assert len(expected) == 1 + assert spec in expected From 4b866c6395a84eb60fa17029f0e6d0c549b6780a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 8 May 2017 15:28:28 -0500 Subject: [PATCH 0859/2394] Add GCC 7 (#4144) * Add GCC 7 * Allow users to build subset of GCC compilers with multi-value variant. * Add comment explaining what 'all' actually means * More specific golang support * Only require Zip when building Java * Comment out provide directives that don't currently work * Add Ada support * Use conflicts directive * Fix joining of languages * Need special flag to build jit * Explicitly declare GNAT download extension * Import tty, update lib64 to lib * BRIG and Go are not supported on macOS * Simplify formatting and imports * JIT patch required for newer versions as well --- .../packages/gcc/darwin/gcc-6.1.0-jit.patch | 21 +++ .../gcc/darwin/gcc-7.1.0-headerpad.patch | 19 ++ .../repos/builtin/packages/gcc/package.py | 169 ++++++++++++------ .../repos/builtin/packages/gnat/package.py | 51 ++++++ 4 files changed, 209 insertions(+), 51 deletions(-) create mode 100644 var/spack/repos/builtin/packages/gcc/darwin/gcc-6.1.0-jit.patch create mode 100644 var/spack/repos/builtin/packages/gcc/darwin/gcc-7.1.0-headerpad.patch create mode 100644 var/spack/repos/builtin/packages/gnat/package.py diff --git a/var/spack/repos/builtin/packages/gcc/darwin/gcc-6.1.0-jit.patch b/var/spack/repos/builtin/packages/gcc/darwin/gcc-6.1.0-jit.patch new file mode 100644 index 00000000000..8cc4405de49 --- /dev/null +++ b/var/spack/repos/builtin/packages/gcc/darwin/gcc-6.1.0-jit.patch @@ -0,0 +1,21 @@ +# Fix for libgccjit.so linkage on Darwin +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64089 +# https://github.com/Homebrew/homebrew-core/issues/1872#issuecomment-225625332 +# https://github.com/Homebrew/homebrew-core/issues/1872#issuecomment-225626490 + +# Stolen from Homebrew: +# https://raw.githubusercontent.com/Homebrew/formula-patches/e9e0ee09389a54cc4c8fe1c24ebca3cd765ed0ba/gcc/6.1.0-jit.patch +diff --git a/gcc/jit/Make-lang.in b/gcc/jit/Make-lang.in +index 44d0750..4df2a9c 100644 +--- a/gcc/jit/Make-lang.in ++++ b/gcc/jit/Make-lang.in +@@ -85,8 +85,7 @@ $(LIBGCCJIT_FILENAME): $(jit_OBJS) \ + $(jit_OBJS) libbackend.a libcommon-target.a libcommon.a \ + $(CPPLIB) $(LIBDECNUMBER) $(LIBS) $(BACKENDLIBS) \ + $(EXTRA_GCC_OBJS) \ +- -Wl,--version-script=$(srcdir)/jit/libgccjit.map \ +- -Wl,-soname,$(LIBGCCJIT_SONAME) ++ -Wl,-install_name,$(LIBGCCJIT_SONAME) + + $(LIBGCCJIT_SONAME_SYMLINK): $(LIBGCCJIT_FILENAME) + ln -sf $(LIBGCCJIT_FILENAME) $(LIBGCCJIT_SONAME_SYMLINK) diff --git a/var/spack/repos/builtin/packages/gcc/darwin/gcc-7.1.0-headerpad.patch b/var/spack/repos/builtin/packages/gcc/darwin/gcc-7.1.0-headerpad.patch new file mode 100644 index 00000000000..11ca2d0e4d7 --- /dev/null +++ b/var/spack/repos/builtin/packages/gcc/darwin/gcc-7.1.0-headerpad.patch @@ -0,0 +1,19 @@ +# Use -headerpad_max_install_names in the build, +# otherwise lto1 load commands cannot be edited on El Capitan + +# Stolen from Homebrew: +# https://raw.githubusercontent.com/Homebrew/formula-patches/32cf103/gcc/7.1.0-headerpad.patch + +diff --git a/config/mh-darwin b/config/mh-darwin +index 148b730..c2318b5 100644 +--- a/config/mh-darwin ++++ b/config/mh-darwin +@@ -16,7 +16,7 @@ DARWIN_GCC_MDYNAMIC_NO_PIC := \ + DARWIN_NO_PIE := `case ${host} in *-*-darwin[1][1-9]*) echo -Wl,-no_pie ;; esac;` + + BOOT_CFLAGS += $(DARWIN_MDYNAMIC_NO_PIC) +-BOOT_LDFLAGS += $(DARWIN_NO_PIE) ++BOOT_LDFLAGS += $(DARWIN_NO_PIE) -Wl,-headerpad_max_install_names + + # Similarly, for cross-compilation. + STAGE1_CFLAGS += $(DARWIN_MDYNAMIC_NO_PIC) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index b362060e612..d4ed2341228 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -23,22 +23,24 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +from llnl.util import tty -from contextlib import closing -from glob import glob +import glob +import os +import shutil import sys -from os.path import isfile class Gcc(AutotoolsPackage): - """The GNU Compiler Collection includes front ends for C, C++, - Objective-C, Fortran, and Java.""" - homepage = "https://gcc.gnu.org" + """The GNU Compiler Collection includes front ends for C, C++, Objective-C, + Fortran, Ada, and Go, as well as libraries for these languages.""" - url = "http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2" + homepage = 'https://gcc.gnu.org' + url = 'http://ftp.gnu.org/gnu/gcc/gcc-7.1.0/gcc-7.1.0.tar.bz2' list_url = 'http://ftp.gnu.org/gnu/gcc/' list_depth = 1 + version('7.1.0', '6bf56a2bca9dac9dbbf8e8d1036964a8') version('6.3.0', '677a7623c7ef6ab99881bc4e048debb6') version('6.2.0', '9768625159663b300ae4de2f4745fcc4') version('6.1.0', '8fb6cb98b8459f5863328380fbf06bd1') @@ -56,23 +58,35 @@ class Gcc(AutotoolsPackage): version('4.6.4', 'b407a3d1480c11667f293bfb1f17d1a4') version('4.5.4', '27e459c2566b8209ab064570e1b378f7') + # Builds all default languages by default. + # Ada, Go, Jit, and Objective-C++ are not default languages. + # In that respect, the name 'all' is rather misleading. + variant('languages', + default='all', + values=('all', 'ada', 'brig', 'c', 'c++', 'fortran', + 'go', 'java', 'jit', 'lto', 'objc', 'obj-c++'), + multi=True, + description='Compilers and runtime libraries to build') variant('binutils', default=sys.platform != 'darwin', - description="Build via binutils") + description='Build via binutils') variant('piclibs', default=False, - description="Build PIC versions of libgfortran.a and libstdc++.a") + description='Build PIC versions of libgfortran.a and libstdc++.a') - depends_on("mpfr") - depends_on("gmp") - depends_on("mpc", when='@4.5:') - depends_on("isl", when='@5.0:') - depends_on("binutils~libiberty", when='+binutils') - depends_on("zip", type='build') + # https://gcc.gnu.org/install/prerequisites.html + depends_on('gmp@4.3.2:') + depends_on('mpfr@2.4.2:') + depends_on('mpc@0.8.1:', when='@4.5:') + depends_on('isl@0.15:', when='@5.0:') + depends_on('zlib', when='@6:') + depends_on('gnat', when='languages=ada') + depends_on('binutils~libiberty', when='+binutils') + depends_on('zip', type='build', when='languages=java') # TODO: integrate these libraries. - # depends_on("ppl") - # depends_on("cloog") + # depends_on('ppl') + # depends_on('cloog') # TODO: Add a 'test' deptype # https://github.com/LLNL/spack/issues/1279 @@ -82,60 +96,115 @@ class Gcc(AutotoolsPackage): # depends_on('autogen@5.5.4:', type='test') # depends_on('guile@1.4.1:', type='test') + # See https://golang.org/doc/install/gccgo#Releases + provides('golang', when='languages=go') + # 'when' does not currently support multiple parts of a spec. + # See https://github.com/LLNL/spack/pull/4151 + # provides('golang', when='languages=go @4.6:') + # provides('golang@:1', when='languages=go @4.7.1:') + # provides('golang@:1.1', when='languages=go @4.8:') + # provides('golang@:1.1.2', when='languages=go @4.8.2:') + # provides('golang@:1.2', when='languages=go @4.9:') + # provides('golang@:1.4', when='languages=go @5:') + # provides('golang@:1.6.1', when='languages=go @6:') + # provides('golang@:1.8', when='languages=go @7:') + + # For a list of valid languages for a specific release, + # run the following command in the GCC source directory: + # $ grep ^language= gcc/*/config-lang.in + # See https://gcc.gnu.org/install/configure.html + + # Support for processing BRIG 1.0 files was added in GCC 7 + # BRIG is a binary format for HSAIL: + # (Heterogeneous System Architecture Intermediate Language). + # See https://gcc.gnu.org/gcc-7/changes.html + conflicts('languages=brig', when='@:6') + + # BRIG does not seem to be supported on macOS + conflicts('languages=brig', when='platform=darwin') + + # GCC 4.8 added a 'c' language. I'm sure C was always built, + # but this is the first version that accepts 'c' as a valid language. + conflicts('languages=c', when='@:4.7') + + # GCC 4.6 added support for the Go programming language. + # See https://gcc.gnu.org/gcc-4.6/changes.html + conflicts('languages=go', when='@:4.5') + + # Go is not supported on macOS + conflicts('languages=go', when='platform=darwin') + + # The GCC Java frontend and associated libjava runtime library + # have been removed from GCC as of GCC 7. + # See https://gcc.gnu.org/gcc-7/changes.html + conflicts('languages=java', when='@7:') + + # GCC 5 added the ability to build GCC as a Just-In-Time compiler. + # See https://gcc.gnu.org/gcc-5/changes.html + conflicts('languages=jit', when='@:4') + if sys.platform == 'darwin': + patch('darwin/gcc-7.1.0-headerpad.patch', when='@5:') + patch('darwin/gcc-6.1.0-jit.patch', when='@5:') patch('darwin/gcc-4.9.patch1', when='@4.9.0:4.9.3') patch('darwin/gcc-4.9.patch2', when='@4.9.0:4.9.3') - else: - provides('golang', when='@4.7.1:') patch('piclibs.patch', when='+piclibs') patch('gcc-backport.patch', when='@4.7:4.9.2,5:5.3') - def configure_args(self): + build_directory = 'spack-build' + + def patch(self): spec = self.spec prefix = self.spec.prefix - enabled_languages = set(('c', 'c++', 'fortran', 'java', 'objc')) - - if spec.satisfies("@4.7.1:") and sys.platform != 'darwin' and \ - not (spec.satisfies('@:4.9.3') and 'ppc64le' in spec.architecture): - enabled_languages.add('go') - # Fix a standard header file for OS X Yosemite that # is GCC incompatible by replacing non-GCC compliant macros if 'yosemite' in spec.architecture: - if isfile(r'/usr/include/dispatch/object.h'): + if os.path.isfile('/usr/include/dispatch/object.h'): new_dispatch_dir = join_path(prefix, 'include', 'dispatch') mkdirp(new_dispatch_dir) - cp = which('cp') new_header = join_path(new_dispatch_dir, 'object.h') - cp(r'/usr/include/dispatch/object.h', new_header) + shutil.copyfile('/usr/include/dispatch/object.h', new_header) filter_file(r'typedef void \(\^dispatch_block_t\)\(void\)', 'typedef void* dispatch_block_t', new_header) + def configure_args(self): + spec = self.spec + # Generic options to compile GCC options = [ - '--libdir={0}'.format(prefix.lib64), '--disable-multilib', - '--enable-languages={0}'.format(','.join(enabled_languages)), + '--enable-languages={0}'.format( + ','.join(spec.variants['languages'].value)), '--with-mpfr={0}'.format(spec['mpfr'].prefix), '--with-gmp={0}'.format(spec['gmp'].prefix), '--enable-lto', '--with-quad' ] + # Use installed libz + if self.version >= Version('6'): + options.append('--with-system-zlib') + + # Enabling language "jit" requires --enable-host-shared. + if 'languages=jit' in spec: + options.append('--enable-host-shared') + # Binutils if spec.satisfies('+binutils'): - static_bootstrap_flags = "-static-libstdc++ -static-libgcc" + static_bootstrap_flags = '-static-libstdc++ -static-libgcc' binutils_options = [ - "--with-sysroot=/", "--with-stage1-ldflags=%s %s" % - (self.rpath_args, static_bootstrap_flags), - "--with-boot-ldflags=%s %s" % - (self.rpath_args, static_bootstrap_flags), "--with-gnu-ld", - "--with-ld=%s/bin/ld" % spec['binutils'].prefix, - "--with-gnu-as", - "--with-as=%s/bin/as" % spec['binutils'].prefix + '--with-sysroot=/', + '--with-stage1-ldflags={0} {1}'.format( + self.rpath_args, static_bootstrap_flags), + '--with-boot-ldflags={0} {1}'.format( + self.rpath_args, static_bootstrap_flags), + '--with-gnu-ld', + '--with-ld={0}/ld'.format(spec['binutils'].prefix.bin), + '--with-gnu-as', + '--with-as={0}/as'.format(spec['binutils'].prefix.bin), ] options.extend(binutils_options) @@ -153,8 +222,6 @@ def configure_args(self): return options - build_directory = 'spack-build' - @property def build_targets(self): if sys.platform == 'darwin': @@ -163,8 +230,8 @@ def build_targets(self): @property def spec_dir(self): - # e.g. lib64/gcc/x86_64-unknown-linux-gnu/4.9.2 - spec_dir = glob("%s/lib64/gcc/*/*" % self.prefix) + # e.g. lib/gcc/x86_64-unknown-linux-gnu/4.9.2 + spec_dir = glob.glob('{0}/gcc/*/*'.format(self.prefix.lib)) return spec_dir[0] if spec_dir else None @run_after('install') @@ -172,17 +239,17 @@ def write_rpath_specs(self): """Generate a spec file so the linker adds a rpath to the libs the compiler used to build the executable.""" if not self.spec_dir: - tty.warn("Could not install specs for %s." % - self.spec.format('$_$@')) + tty.warn('Could not install specs for {0}.'.format( + self.spec.format('$_$@'))) return gcc = self.spec['gcc'].command - lines = gcc('-dumpspecs', output=str).strip().split("\n") + lines = gcc('-dumpspecs', output=str).strip().split('\n') specs_file = join_path(self.spec_dir, 'specs') - with closing(open(specs_file, 'w')) as out: + with open(specs_file, 'w') as out: for line in lines: - out.write(line + "\n") - if line.startswith("*link:"): - out.write("-rpath %s/lib:%s/lib64 \\\n" % - (self.prefix, self.prefix)) + out.write(line + '\n') + if line.startswith('*link:'): + out.write(r'-rpath {0}:{1} \n'.format( + self.prefix.lib, self.prefix.lib64)) set_install_permissions(specs_file) diff --git a/var/spack/repos/builtin/packages/gnat/package.py b/var/spack/repos/builtin/packages/gnat/package.py new file mode 100644 index 00000000000..b0ecbc7f5f0 --- /dev/null +++ b/var/spack/repos/builtin/packages/gnat/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Gnat(MakefilePackage): + """The GNAT Ada compiler. Ada is a modern programming language designed + for large, long-lived applications - and embedded systems in particular + - where reliability and efficiency are essential.""" + + homepage = "https://libre.adacore.com/tools/gnat-gpl-edition/" + + # NOTE: This is a binary installer intended to bootstrap GCC's Ada compiler + + # There may actually be a way to install GNAT from source. If you go to + # the GNAT Download page: https://libre.adacore.com/download/ + # select "Free Software or Academic Development", select your platform, + # expand GNAT Ada, and expand Sources, you'll see links to download the + # source code for GNAT and all of its dependencies. Most of these + # dependencies are already in Spack. + + # This is the GPL release for Linux x86-64 + version('2016', '9741107cca1a6a4ddb0d5e8de824a90c', extension='tar.gz', + url="http://mirrors.cdn.adacore.com/art/5739cefdc7a447658e0b016b") + + phases = ['install'] + + def install(self, spec, prefix): + make('ins-all', 'prefix={0}'.format(prefix)) From 306f158c733801cda6eacf74e3349b510cf90867 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 5 May 2017 18:24:04 +0200 Subject: [PATCH 0860/2394] cp2k: fixed compilation issues for intel stack Added DFLAGS to the `make.inc` file being written. These macros are also added to the language specific variables like CFLAGS, CXXFLAGS and FCFLAGS. Changed `spec.satisfies('foo')` with `'foo' in spec` in `intel-mkl`, see #4135. Added a basic build interface to `intel-mpi`. --- lib/spack/spack/file_cache.py | 2 +- .../repos/builtin/packages/cp2k/package.py | 71 ++++++++++++++----- .../builtin/packages/intel-mkl/package.py | 22 +++--- .../builtin/packages/intel-mpi/package.py | 12 ++++ 4 files changed, 82 insertions(+), 25 deletions(-) diff --git a/lib/spack/spack/file_cache.py b/lib/spack/spack/file_cache.py index e37f77d68d4..95a8bc7ce6f 100644 --- a/lib/spack/spack/file_cache.py +++ b/lib/spack/spack/file_cache.py @@ -149,7 +149,7 @@ def __exit__(cm, type, value, traceback): if value: # remove tmp on exception & raise it shutil.rmtree(cm.tmp_filename, True) - raise value + else: os.rename(cm.tmp_filename, cm.orig_filename) diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 06e46979046..00d60521213 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -50,7 +50,7 @@ class Cp2k(Package): depends_on('fftw') depends_on('libint@:1.2', when='@3.0,4.1') - depends_on('mpi', when='+mpi') + depends_on('mpi@2:', when='+mpi') depends_on('scalapack', when='+mpi') depends_on('plumed+shared+mpi', when='+plumed+mpi') depends_on('plumed+shared~mpi', when='+plumed~mpi') @@ -80,32 +80,56 @@ def install(self, spec, prefix): optflags = { 'gcc': ['-O2', '-ffast-math', - '-ffree-form', - '-ffree-line-length-none', '-ftree-vectorize', '-funroll-loops', '-mtune=native'], 'intel': ['-O2', '-pc64', - '-unroll', - '-heap-arrays 64'] + '-unroll'] } + + dflags = ['-DNDEBUG'] + cppflags = [ '-D__FFTW3', '-D__LIBINT', spec['fftw'].headers.cpp_flags ] + + if '^mpi@3:' in spec: + cppflags.append('-D__MPI_VERSION=3') + elif '^mpi@2:' in spec: + cppflags.append('-D__MPI_VERSION=2') + + if '^intel-mkl' in spec: + cppflags.append('-D__FFTSG') + + cflags = copy.deepcopy(optflags[self.spec.compiler.name]) + cxxflags = copy.deepcopy(optflags[self.spec.compiler.name]) fcflags = copy.deepcopy(optflags[self.spec.compiler.name]) - fcflags.append(spec['fftw'].headers.cpp_flags) + fcflags.extend([ + '-ffree-form', + '-ffree-line-length-none', + spec['fftw'].headers.cpp_flags + ]) + + if '%intel' in spec: + cflags.append('-fp-model precise') + cxxflags.append('-fp-model precise') + fcflags.extend(['-fp-model source', '-heap-arrays 64']) + fftw = find_libraries('libfftw3', root=spec['fftw'].prefix.lib) ldflags = [fftw.search_flags] + if 'superlu-dist@4.3' in spec: ldflags = ['-Wl,--allow-multiple-definition'] + ldflags + libs = [ join_path(spec['libint'].prefix.lib, 'libint.so'), join_path(spec['libint'].prefix.lib, 'libderiv.so'), join_path(spec['libint'].prefix.lib, 'libr12.so') ] + if '+plumed' in self.spec: # Include Plumed.inc in the Makefile mkf.write('include {0}\n'.format( @@ -116,6 +140,7 @@ def install(self, spec, prefix): 'Plumed.inc') )) # Add required macro + dflags.extend(['-D__PLUMED2']) cppflags.extend(['-D__PLUMED2']) libs.extend([ join_path(self.spec['plumed'].prefix.lib, @@ -130,18 +155,20 @@ def install(self, spec, prefix): # ${CPP} .F > .f90 # # and use `-fpp` instead - mkf.write('CPP = # {0.compiler.cc} -P\n'.format(self)) - mkf.write('AR = xiar -r\n') + mkf.write('CPP = # {0.compiler.cc} -P\n\n'.format(self)) + mkf.write('AR = xiar -r\n\n') else: - mkf.write('CPP = {0.compiler.cc} -E\n'.format(self)) - mkf.write('AR = ar -r\n') + mkf.write('CPP = {0.compiler.cc} -E\n\n'.format(self)) + mkf.write('AR = ar -r\n\n') fc = self.compiler.fc if '~mpi' in spec else self.spec['mpi'].mpifc mkf.write('FC = {0}\n'.format(fc)) mkf.write('LD = {0}\n'.format(fc)) # Intel if '%intel' in self.spec: cppflags.extend([ - '-D__INTEL_COMPILER', + '-D__INTEL', + '-D__HAS_ISO_C_BINDING', + '-D__USE_CP2K_TRACE', '-D__MKL' ]) fcflags.extend([ @@ -196,7 +223,7 @@ def install(self, spec, prefix): libs.append(wannier) libs.extend(scalapack) - libs.extend(self.spec['mpi'].mpicxx_shared_libs) + libs.extend(self.spec['mpi:cxx'].libs) libs.extend(self.compiler.stdcxx_libs) # LAPACK / BLAS lapack = spec['lapack'].libs @@ -205,11 +232,23 @@ def install(self, spec, prefix): ldflags.append((lapack + blas).search_flags) libs.extend([str(x) for x in (fftw, lapack, blas)]) + dflags.extend(cppflags) + cflags.extend(cppflags) + cxxflags.extend(cppflags) + fcflags.extend(cppflags) + # Write compiler flags to file - mkf.write('CPPFLAGS = {0}\n'.format(' '.join(cppflags))) - mkf.write('FCFLAGS = {0}\n'.format(' '.join(fcflags))) - mkf.write('LDFLAGS = {0}\n'.format(' '.join(ldflags))) - mkf.write('LIBS = {0}\n'.format(' '.join(libs))) + mkf.write('DFLAGS = {0}\n\n'.format(' '.join(dflags))) + mkf.write('CPPFLAGS = {0}\n\n'.format(' '.join(cppflags))) + mkf.write('CFLAGS = {0}\n\n'.format(' '.join(cflags))) + mkf.write('CXXFLAGS = {0}\n\n'.format(' '.join(cxxflags))) + mkf.write('FCFLAGS = {0}\n\n'.format(' '.join(fcflags))) + mkf.write('LDFLAGS = {0}\n\n'.format(' '.join(ldflags))) + if '%intel' in spec: + mkf.write('LDFLAGS_C = {0}\n\n'.format( + ' '.join(ldflags) + ' -nofor_main') + ) + mkf.write('LIBS = {0}\n\n'.format(' '.join(libs))) with working_dir('makefiles'): # Apparently the Makefile bases its paths on PWD diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 7f0f8e0eb55..bbc50ca4241 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -96,19 +96,25 @@ def lapack_libs(self): @property def scalapack_libs(self): libnames = ['libmkl_scalapack'] - if self.spec.satisfies('^openmpi'): + + # Intel MKL does not directly depend on mpi but the scalapack + # interface does and the corresponding BLACS library changes + # depending on the MPI implementation we are using. We need then to + # inspect the root package which asked for Scalapack and check which + # MPI it depends on. + root = self.spec.root + if '^openmpi' in root: libnames.append('libmkl_blacs_openmpi') - elif self.spec.satisfies('^mpich@1'): + elif '^mpich@1' in root: libnames.append('libmkl_blacs') - elif self.spec.satisfies('^mpich@2:'): + elif '^mpich@2:' in root: libnames.append('libmkl_blacs_intelmpi') - elif self.spec.satisfies('^mvapich2'): + elif '^mvapich2' in root: libnames.append('libmkl_blacs_intelmpi') - elif self.spec.satisfies('^mpt'): + elif '^mpt' in root: libnames.append('libmkl_blacs_sgimpt') - # TODO: ^intel-parallel-studio can mean intel mpi, a compiler or a lib - # elif self.spec.satisfies('^intel-parallel-studio'): - # libnames.append('libmkl_blacs_intelmpi') + elif '^intel-mpi' in root: + libnames.append('libmkl_blacs_intelmpi') else: raise InstallError("No MPI found for scalapack") diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py index c4d3df8f742..0336f426be7 100644 --- a/var/spack/repos/builtin/packages/intel-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-mpi/package.py @@ -42,6 +42,18 @@ class IntelMpi(IntelInstaller): provides('mpi') + @property + def mpi_libs(self): + query_parameters = self.spec.last_query.extra_parameters + libraries = ['libmpifort', 'libmpi'] + + if 'cxx' in query_parameters: + libraries = ['libmpicxx'] + libraries + + return find_libraries( + libraries, root=self.prefix.lib64, shared=True, recurse=True + ) + def install(self, spec, prefix): self.intel_prefix = prefix IntelInstaller.install(self, spec, prefix) From e8f493ee7be4c048ad20db9c2a062836fa5b92e0 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 May 2017 13:59:59 -0500 Subject: [PATCH 0861/2394] Travis version of pip is too old (#4180) * Travis version of pip is too old * Also need to upgrade setuptools --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 4b95903d16a..2bf21d0e57a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -82,6 +82,8 @@ before_install: # Install various dependencies install: + - pip install --upgrade pip + - pip install --upgrade setuptools - pip install --upgrade codecov - pip install --upgrade flake8 - pip install --upgrade sphinx From 68034e4d428776ac3fb3fcfa4ee8a53b4f5714a6 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 9 May 2017 17:18:17 -0400 Subject: [PATCH 0862/2394] gdbm: Declare readline dependency (#4171) --- var/spack/repos/builtin/packages/gdbm/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/gdbm/package.py b/var/spack/repos/builtin/packages/gdbm/package.py index b661c39b954..b3e405d0ba2 100644 --- a/var/spack/repos/builtin/packages/gdbm/package.py +++ b/var/spack/repos/builtin/packages/gdbm/package.py @@ -42,5 +42,7 @@ class Gdbm(AutotoolsPackage): version('1.9.1', '59f6e4c4193cb875964ffbe8aa384b58') version('1.9', '1f0e8e6691edd61bdd6b697b8c02528d') + depends_on("readline") + def configure_args(self): return ['--enable-libgdbm-compat'] From 0e02f993238712220f3925629f4698adfe03a52e Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 9 May 2017 17:19:06 -0400 Subject: [PATCH 0863/2394] funhpc: Update to version 1.3 (#4170) Also use a Spack-provided GoogleTest. --- var/spack/repos/builtin/packages/funhpc/package.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/funhpc/package.py b/var/spack/repos/builtin/packages/funhpc/package.py index 03120d07ba3..d676e978107 100644 --- a/var/spack/repos/builtin/packages/funhpc/package.py +++ b/var/spack/repos/builtin/packages/funhpc/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## - from spack import * @@ -32,6 +31,8 @@ class Funhpc(CMakePackage): homepage = "https://github.com/eschnett/FunHPC.cxx" url = "https://github.com/eschnett/FunHPC.cxx/archive/version/0.1.0.tar.gz" + version('1.3.0', '71a1e57c4d882cdf001f29122edf7fc6') + version('1.2.0', 'ba2bbeea3091e999b6b85eaeb1b67a83') version('1.1.1', '7b9ef638b02fffe35b75517e8eeff580') version('1.1.0', '897bd968c42cd4f14f86fcf67da70444') version('1.0.0', 'f34e71ccd5548b42672e692c913ba5ee') @@ -44,6 +45,7 @@ class Funhpc(CMakePackage): description="Produce position-independent code") depends_on('cereal') + depends_on('googletest') depends_on('hwloc') depends_on('jemalloc') depends_on('mpi') @@ -51,9 +53,9 @@ class Funhpc(CMakePackage): def cmake_args(self): spec = self.spec - options = [] + options = ["-DGTEST_ROOT=%s" % spec['googletest'].prefix] if '+pic' in spec: - options.extend(["-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true"]) + options += ["-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true"] return options def check(self): From 44440d023dae13b7a6b167e8364d71cc83922da7 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 9 May 2017 18:58:44 -0400 Subject: [PATCH 0864/2394] qthreads: Convert to AutoTools package (#4176) --- .../repos/builtin/packages/qthreads/package.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/qthreads/package.py b/var/spack/repos/builtin/packages/qthreads/package.py index e3cf09ed6ce..085ce7d8b0b 100644 --- a/var/spack/repos/builtin/packages/qthreads/package.py +++ b/var/spack/repos/builtin/packages/qthreads/package.py @@ -25,7 +25,7 @@ from spack import * -class Qthreads(Package): +class Qthreads(AutotoolsPackage): """The qthreads API is designed to make using large numbers of threads convenient and easy, and to allow portable access to threading constructs used in massively parallel shared memory @@ -48,10 +48,10 @@ class Qthreads(Package): depends_on("hwloc") - def install(self, spec, prefix): - configure("--prefix=%s" % prefix, - "--enable-guard-pages", - "--with-topology=hwloc", - "--with-hwloc=%s" % spec["hwloc"].prefix) - make() - make("install") + def configure_args(self): + spec = self.spec + args = [ + "--enable-guard-pages", + "--with-topology=hwloc", + "--with-hwloc=%s" % spec["hwloc"].prefix] + return args From caabcdc8b41b220ea09cc11fa6aa2fa9f1be48da Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 9 May 2017 18:59:21 -0400 Subject: [PATCH 0865/2394] simulationio: Declare dependency on the HDF5 C++ bindings (#4177) --- var/spack/repos/builtin/packages/simulationio/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/simulationio/package.py b/var/spack/repos/builtin/packages/simulationio/package.py index 5ac31f58587..7e97c1e4ba8 100644 --- a/var/spack/repos/builtin/packages/simulationio/package.py +++ b/var/spack/repos/builtin/packages/simulationio/package.py @@ -42,6 +42,7 @@ class Simulationio(CMakePackage): variant('pic', default=True, description="Produce position-independent code") + depends_on('hdf5 +cxx @:1.10.0-patch1') depends_on('julia', when='+julia', type=('build', 'run')) depends_on('py-h5py', when='+python', type=('build', 'run')) depends_on('py-numpy', when='+python', type=('build', 'run')) From 692a100caadc2820102307bb2ed70e2afb03adfd Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 9 May 2017 18:59:46 -0400 Subject: [PATCH 0866/2394] ncurses: Always build tools (#4174) Otherwise, the install can fail if the system-provided `tic` binary is too old. --- var/spack/repos/builtin/packages/ncurses/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 0a8d597b7fc..0d305167ea3 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -63,7 +63,6 @@ def configure(self, spec, prefix): ] nwide_opts = ['--without-manpages', - '--without-progs', '--without-tests'] wide_opts = ['--enable-widec'] From ba32f0d3a25f9315b7d8c7f4f881ac11ab641c2c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 9 May 2017 16:00:08 -0700 Subject: [PATCH 0867/2394] Make openmpi package defn more robust (#4183) Make openmpi handle bad ibv_devices return statuses without bailing out completely. See #4162 for background. --- var/spack/repos/builtin/packages/openmpi/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 2761df543d4..a97584fa38e 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -48,6 +48,8 @@ def _verbs_dir(): return path except TypeError: return None + except ProcessError: + return None class Openmpi(AutotoolsPackage): From a5fd658986be32404b6d50539dc413df8efea96f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 May 2017 18:15:14 -0500 Subject: [PATCH 0868/2394] Add latest versions of Intel compiler (#4184) --- .../repos/builtin/packages/intel-parallel-studio/package.py | 6 ++++++ var/spack/repos/builtin/packages/intel/package.py | 2 ++ 2 files changed, 8 insertions(+) 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 8bc489f1cb3..7ed89e950fa 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -35,6 +35,12 @@ class IntelParallelStudio(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" + version('professional.2017.3', '691874735458d3e88fe0bcca4438b2a9', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11460/parallel_studio_xe_2017_update3.tgz') + version('cluster.2017.3', '691874735458d3e88fe0bcca4438b2a9', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11460/parallel_studio_xe_2017_update3.tgz') + version('composer.2017.3', '52344df122c17ddff3687f84ceb21623', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11464/parallel_studio_xe_2017_update3_composer_edition.tgz') version('professional.2017.2', '70e54b33d940a1609ff1d35d3c56e3b3', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11298/parallel_studio_xe_2017_update2.tgz') version('cluster.2017.2', '70e54b33d940a1609ff1d35d3c56e3b3', diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index eec294df882..06f7ca88503 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -120,6 +120,8 @@ class Intel(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" + version('17.0.3', '691874735458d3e88fe0bcca4438b2a9', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11460/parallel_studio_xe_2017_update3.tgz') version('17.0.2', '2891ab1ece43eb61b6ab892f07c47f01', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11302/parallel_studio_xe_2017_update2_composer_edition.tgz') version('17.0.1', '1f31976931ed8ec424ac7c3ef56f5e85', From 64fb2f22b436cf14e75da11e27430500a675212c Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Tue, 9 May 2017 16:26:57 -0700 Subject: [PATCH 0869/2394] Adding FASTMath uber package and missing FASTMath packages (#4120) * adding 0.5.1 and variant for uint8 bit stream word type * Revisions as per davydden * fixing style (flake8) issues * - switched to derive from MakefilePackage - fixed typo in variant check - Confirmed installs correctly with bswtuint8 variant * added build method; changed zfp_incdir to incdir * * Adding uber fastmath package to support 'spack install fastmath' * Adding dims variant boxlib to control compile-time spatial dimension count * Explicitly disabling many parts of moab to get lib to build. Don't need tools yet. * Add logic to spack/setup-env to not refer to $SYS_TYPE if its not defined. * adding mesquite package * * Added Chombo (still working on Fortran name mangling) * Made mesquite depend on mpi * Fixed use of boxlib's dims numerical variant * adding PUMI * flake8 compliance * adding phasta * fixing flake8 issues * undue $SYS_TYPE protection change * fixing install step for fastmath uber package; resolve issues requested by adamjstewart in PR * revisions as per adamjstewart * re-enabling trilinos and phasta dependencies * all changes requested modulu values= and assert statement * fixing cmake_args usage in pumi; fixing lib installs for chombo * first pass at numerical variant * fixing dims variant as per @adamjstewart * fixing func/var name collision * fixing means of disabling -Werror * fix name collision for cmake_args var/func * fixing chombo homepage/url; make FASTMath use chombo#3.2; remove extraneous comment about boxlib dim * remove dummy fastmath package; switch to @BarrySmith soln for install of dummy bundle * fix flake8 import os issue * remove extraneous comment * adding url for fastmath scidac site * final fixes as per @adamjstewart * adding 1 dims option for boxlib * switching make(all) to gmake(all) --- .../repos/builtin/packages/boxlib/package.py | 9 +- .../chombo/Make.defs.local.template.patch | 23 +++ .../builtin/packages/chombo/hdf5-16api.patch | 12 ++ .../repos/builtin/packages/chombo/package.py | 140 ++++++++++++++++++ .../builtin/packages/fastmath/package.py | 65 ++++++++ .../builtin/packages/mesquite/package.py | 56 +++++++ .../repos/builtin/packages/moab/package.py | 28 +++- .../repos/builtin/packages/phasta/package.py | 61 ++++++++ .../repos/builtin/packages/pumi/package.py | 65 ++++++++ .../packages/pumi/phiotimer.cc.darwin.patch | 21 +++ 10 files changed, 477 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin/packages/chombo/Make.defs.local.template.patch create mode 100644 var/spack/repos/builtin/packages/chombo/hdf5-16api.patch create mode 100644 var/spack/repos/builtin/packages/chombo/package.py create mode 100644 var/spack/repos/builtin/packages/fastmath/package.py create mode 100644 var/spack/repos/builtin/packages/mesquite/package.py create mode 100644 var/spack/repos/builtin/packages/phasta/package.py create mode 100644 var/spack/repos/builtin/packages/pumi/package.py create mode 100644 var/spack/repos/builtin/packages/pumi/phiotimer.cc.darwin.patch diff --git a/var/spack/repos/builtin/packages/boxlib/package.py b/var/spack/repos/builtin/packages/boxlib/package.py index 8d46014d3b2..dd23c05fc31 100644 --- a/var/spack/repos/builtin/packages/boxlib/package.py +++ b/var/spack/repos/builtin/packages/boxlib/package.py @@ -36,12 +36,19 @@ class Boxlib(CMakePackage): depends_on('mpi') + variant('dims', + default='3', + values=('1', '2', '3'), + multi=False, + description='Number of spatial dimensions' + ) + def cmake_args(self): spec = self.spec options = [] options.extend([ - # '-DBL_SPACEDIM=3', + '-DBL_SPACEDIM=%d' % int(spec.variants['dims'].value), '-DENABLE_POSITION_INDEPENDENT_CODE=ON', '-DENABLE_FBASELIB=ON', '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, diff --git a/var/spack/repos/builtin/packages/chombo/Make.defs.local.template.patch b/var/spack/repos/builtin/packages/chombo/Make.defs.local.template.patch new file mode 100644 index 00000000000..cc726594452 --- /dev/null +++ b/var/spack/repos/builtin/packages/chombo/Make.defs.local.template.patch @@ -0,0 +1,23 @@ +*** lib/mk/Make.defs.local.template 2017-05-02 16:00:16.000000000 -0700 +--- lib/mk/Make.defs.local.template.patched 2017-05-02 18:50:36.000000000 -0700 +*************** +*** 129,135 **** +--- 129,137 ---- + #HDFMPILIBFLAGS= -L/lib -lhdf5 -lz + #USE_MF = + #USE_MT = ++ #USE_LAPACK = + #USE_SETVAL = ++ #USE_TIMER = + #CH_AR = + #CH_CPP = + #DOXYGEN = +*************** +*** 151,155 **** +--- 153,158 ---- + #ldoptflags = + #ldprofflags = + #syslibflags = ++ #lapackincflags = + + #end -- dont change this line diff --git a/var/spack/repos/builtin/packages/chombo/hdf5-16api.patch b/var/spack/repos/builtin/packages/chombo/hdf5-16api.patch new file mode 100644 index 00000000000..6525061886e --- /dev/null +++ b/var/spack/repos/builtin/packages/chombo/hdf5-16api.patch @@ -0,0 +1,12 @@ +*** lib/src/BoxTools/HDF5Portable.H 2017-05-02 13:57:57.000000000 -0700 +--- lib/src/BoxTools/HDF5Portable.H.patched 2017-05-02 13:55:30.000000000 -0700 +*************** +*** 15,20 **** +--- 15,21 ---- + extern "C" + { + #ifdef CH_USE_HDF5 ++ #define H5_USE_16_API + #include + #else + typedef long hid_t; diff --git a/var/spack/repos/builtin/packages/chombo/package.py b/var/spack/repos/builtin/packages/chombo/package.py new file mode 100644 index 00000000000..1ae50e6bc07 --- /dev/null +++ b/var/spack/repos/builtin/packages/chombo/package.py @@ -0,0 +1,140 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from shutil import copyfile +import glob + + +class Chombo(MakefilePackage): + """The Chombo package provides a set of tools for implementing finite + difference and finite-volume methods for the solution of partial + differential equations on block-structured adaptively refined + logically rectangular (i.e. Cartesian) grids.""" + + homepage = "https://commons.lbl.gov/display/chombo" + url = "http://bitbucket.org/drhansj/chombo-xsdk.git" + + # Use whatever path Brian V. and Terry L. agreed upon, but preserve version + version('3.2', git='http://bitbucket.org/drhansj/chombo-xsdk.git', commit='71d856c') + version('develop', git='http://bitbucket.org/drhansj/chombo-xsdk.git', tag='master') +# version('3.2', svn='https://anag-repo.lbl.gov/svn/Chombo/release/3.2') + + variant('mpi', default=True, description='Enable MPI parallel support') + variant('hdf5', default=True, description='Enable HDF5 support') + variant('dims', + default='3', + values=('1', '2', '3', '4', '5', '6'), + multi=False, + description='Number of PDE dimensions [1-6]' + ) + + patch('hdf5-16api.patch', when='@3.2', level=0) + patch('Make.defs.local.template.patch', when='@3.2', level=0) + + depends_on('blas') + depends_on('lapack') + depends_on('gmake', type='build') + depends_on('mpi', when='+mpi') + depends_on('hdf5', when='+hdf5') + depends_on('hdf5+mpi', when='+mpi+hdf5') + + def edit(self, spec, prefix): + + # Set fortran name mangling in Make.defs + defs_file = FileFilter('./lib/mk/Make.defs') + defs_file.filter('^\s*#\s*cppcallsfort\s*=\s*', + 'cppcallsfort = -DCH_FORT_UNDERSCORE') + + # Set remaining variables in Make.defs.local + # Make.defs.local.template.patch ensures lines for USE_TIMER, + # USE_LAPACK and lapackincflags are present + copyfile('./lib/mk/Make.defs.local.template', + './lib/mk/Make.defs.local') + + defs_file = FileFilter('./lib/mk/Make.defs.local') + + # Unconditional settings + defs_file.filter('^\s*#\s*DEBUG\s*=\s*', 'DEBUG = FALSE') + defs_file.filter('^\s*#\s*OPT\s*=\s*', 'OPT = TRUE') + defs_file.filter('^\s*#\s*PIC\s*=\s*', 'PIC = TRUE') + # timer code frequently fails compiles. So disable it. + defs_file.filter('^\s*#\s*USE_TIMER\s*=\s*', 'USE_TIMER = FALSE') + + # LAPACK setup + lapack_blas = spec['lapack'].libs + spec['blas'].libs + defs_file.filter('^\s*#\s*USE_LAPACK\s*=\s*', 'USE_LAPACK = TRUE') + defs_file.filter( + '^\s*#\s*lapackincflags\s*=\s*', + 'lapackincflags = -I%s' % spec['lapack'].prefix.include) + defs_file.filter( + '^\s*#\s*syslibflags\s*=\s*', + 'syslibflags = %s' % lapack_blas.ld_flags) + + # Compilers and Compiler flags + defs_file.filter('^\s*#\s*CXX\s*=\s*', 'CXX = %s' % spack_cxx) + defs_file.filter('^\s*#\s*FC\s*=\s*', 'FC = %s' % spack_fc) + if '+mpi' in spec: + defs_file.filter( + '^\s*#\s*MPICXX\s*=\s*', + 'MPICXX = %s' % self.spec['mpi'].mpicxx) + + # Conditionally determined settings + defs_file.filter( + '^\s*#\s*MPI\s*=\s*', + 'MPI = %s' % ('TRUE' if '+mpi' in spec else 'FALSE')) + defs_file.filter( + '^\s*#\s*DIM\s*=\s*', + 'DIM = %s' % spec.variants['dims'].value) + + # HDF5 settings + if '+hdf5' in spec: + defs_file.filter('^\s*#\s*USE_HDF5\s*=\s*', 'USE_HDF5 = TRUE') + defs_file.filter( + '^\s*#\s*HDFINCFLAGS\s*=.*', + 'HDFINCFLAGS = -I%s' % spec['hdf5'].prefix.include) + defs_file.filter( + '^\s*#\s*HDFLIBFLAGS\s*=.*', + 'HDFLIBFLAGS = %s' % spec['hdf5'].libs.ld_flags) + if '+mpi' in spec: + defs_file.filter( + '^\s*#\s*HDFMPIINCFLAGS\s*=.*', + 'HDFMPIINCFLAGS = -I%s' % spec['hdf5'].prefix.include) + defs_file.filter( + '^\s*#\s*HDFMPILIBFLAGS\s*=.*', + 'HDFMPILIBFLAGS = %s' % spec['hdf5'].libs.ld_flags) + + def build(self, spec, prefix): + with working_dir('lib'): + gmake('all') + + def install(self, spec, prefix): + with working_dir('lib'): + install_tree('include', prefix.include) + libfiles = glob.glob('lib*.a') + libfiles += glob.glob('lib*.so') + libfiles += glob.glob('lib*.dylib') + mkdirp(prefix.lib) + for lib in libfiles: + install(lib, prefix.lib) diff --git a/var/spack/repos/builtin/packages/fastmath/package.py b/var/spack/repos/builtin/packages/fastmath/package.py new file mode 100644 index 00000000000..cae9b10ae48 --- /dev/null +++ b/var/spack/repos/builtin/packages/fastmath/package.py @@ -0,0 +1,65 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Fastmath(Package): + """FASTMath is a suite of ~15 numerical libraries frequently used together + in various SciDAC and CSE applications. The suite includes discretization + libraries for structured, AMR and unstructured grids as well as solver + libraries for ODE's, Time Integrators, Iterative, Non-Linear, and Direct + Solvers.""" + + homepage = "www.fastmath-scidac.org/" + url = "https://github.com/citibeth/dummy/tarball/v1.0" + + version('1.0', 'e2b724dfcc31d735897971db91be89ff') + + # BundlePackage + depends_on('boxlib dims=3') + depends_on('chombo@3.2') + depends_on('hypre~internal-superlu') + depends_on('mesquite') +# depends_on('ml-trilinos') # hoping for stripped down install of just ml +# depends_on('nox-trilinos') # hoping for stripped down install of just nox + depends_on('moab') + depends_on('mpi') + depends_on('parpack') # we need parpack ng + depends_on('petsc') + depends_on('phasta') + depends_on('pumi') + depends_on('sundials') + depends_on('superlu-dist') + depends_on('trilinos') + depends_on('zoltan') + + # Dummy install for now, will be removed when metapackage is available + def install(self, spec, prefix): + # Prevent the error message + # ==> Error: Install failed for fastmath. Nothing was installed! + # ==> Error: Installation process had nonzero exit code : 256 + with open(join_path(spec.prefix, 'bundle-package.txt'), 'w') as out: + out.write('This is a bundle\n') + out.close() diff --git a/var/spack/repos/builtin/packages/mesquite/package.py b/var/spack/repos/builtin/packages/mesquite/package.py new file mode 100644 index 00000000000..d67d8aaac40 --- /dev/null +++ b/var/spack/repos/builtin/packages/mesquite/package.py @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mesquite(AutotoolsPackage): + """Mesquite (Mesh Quality Improvement Toolkit) is designed to provide a + stand-alone, portable, comprehensive suite of mesh quality improvement + algorithms and components that can be used to construct custom quality + improvement algorithms. Mesquite provides a robust and effective mesh + improvement toolkit that allows both meshing researchers application + scientists to benefit from the latest developments in mesh quality + control and improvement.""" + + homepage = "https://software.sandia.gov/mesquite" + url = "https://software.sandia.gov/mesquite/mesquite-2.3.0.tar.gz" + + version('2.99', '92b94167981bb8fcd59b0f0f18fbab64') + version('2.3.0', 'f64948b5210d5ccffaa9a2482447b322') + version('2.2.0', '41360c363e541aff7dc10024c90072d3') + + variant('mpi', default=True, description='Enable MPI parallel support') + + depends_on('mpi', when='+mpi') + + def configure_args(self): + args = [ + 'CC=%s' % self.spec['mpi'].mpicc, + 'CXX=%s' % self.spec['mpi'].mpicxx, + '--with-mpi=%s' % self.spec['mpi'].prefix, + '--enable-release', + '--enable-shared', + ] + return args diff --git a/var/spack/repos/builtin/packages/moab/package.py b/var/spack/repos/builtin/packages/moab/package.py index 14925cfd3e1..bd864e0980c 100644 --- a/var/spack/repos/builtin/packages/moab/package.py +++ b/var/spack/repos/builtin/packages/moab/package.py @@ -57,7 +57,9 @@ class Moab(Package): depends_on('mpi') depends_on('hdf5+mpi') + depends_on('netcdf', when='+netcdf') depends_on('netcdf+mpi', when='+netcdf') + depends_on('metis') depends_on('parmetis') depends_on('zoltan') depends_on('zoltan~fortran', when='~fortran') @@ -67,13 +69,35 @@ def install(self, spec, prefix): options = [ '--prefix=%s' % prefix, '--enable-optimize', - '--enable-tools', + '--disable-tools', + '--disable-mbconvert', + '--disable-hexmodops', + '--disable-vtkMOABReader', + '--disable-mbsize', + '--disable-mbskin', + '--disable-mbtagprop', + '--disable-mbmem', + '--disable-spheredecomp', + '--disable-mbsurfplot', + '--disable-mbpart', + '--disable-dagmc', + '--disable-gsets', + '--disable-mbmerge', + '--disable-mbdepth', + '--disable-mbcoupler', + '--disable-mcnpmit', + '--disable-refiner', + '--disable-h5mtools', + '--disable-mbcslam', + '--disable-mbquality', + '--disable-ahf', + '--disable-mbumr', + '--disable-imesh', '--with-pic', '--with-mpi=%s' % spec['mpi'].prefix, '--with-hdf5=%s' % spec['hdf5'].prefix, '--with-parmetis=%s' % spec['parmetis'].prefix, '--with-zoltan=%s' % spec['zoltan'].prefix, - '--disable-vtkMOABReader', '--without-vtk', 'CXX=%s' % spec['mpi'].mpicxx, 'CC=%s' % spec['mpi'].mpicc, diff --git a/var/spack/repos/builtin/packages/phasta/package.py b/var/spack/repos/builtin/packages/phasta/package.py new file mode 100644 index 00000000000..e5e794bcfae --- /dev/null +++ b/var/spack/repos/builtin/packages/phasta/package.py @@ -0,0 +1,61 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Phasta(CMakePackage): + """SCOREC RPI's Parallel Hierarchic Adaptive Stabilized Transient Analysis + (PHASTA) of compressible and incompressible Navier Stokes equations.""" + + homepage = "https://www.scorec.rpi.edu/software.php" + url = "https://github.com/PHASTA/phasta.git" + + version('0.0.1', git='https://github.com/PHASTA/phasta.git', + commit='11f431f2d1a53a529dab4b0f079ab8aab7ca1109') + version('develop', git='https://github.com/PHASTA/phasta.git', + branch='master') + + depends_on('mpi') + + def cmake_args(self): + spec = self.spec + + args = [ + '-DPHASTA_USE_MPI=ON', + '-DPHASTA_BUILD_CONVERTERIO=OFF', + '-DPHASTA_BUILD_ACUSTAT=OFF', + '-DPHASTA_BUILD_M2N=OFF', + '-DPHASTA_BUILD_M2NFixBnd=OFF', + '-DPHASTA_USE_LESLIB=OFF', + '-DPHASTA_USE_PETSC=OFF', + '-DPHASTA_USE_SVLS=ON', + '-DPHASTA_INCOMPRESSIBLE=ON', + '-DPHASTA_COMPRESSIBLE=ON', + '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, + '-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx, + '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc, + ] + + return args diff --git a/var/spack/repos/builtin/packages/pumi/package.py b/var/spack/repos/builtin/packages/pumi/package.py new file mode 100644 index 00000000000..40d37c6ce66 --- /dev/null +++ b/var/spack/repos/builtin/packages/pumi/package.py @@ -0,0 +1,65 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import sys + + +class Pumi(CMakePackage): + """SCOREC RPI's Parallel Unstructured Mesh Infrastructure (PUMI). + An efficient distributed mesh data structure and methods to support + parallel adaptive analysis including general mesh-based operations, + such as mesh entity creation/deletion, adjacency and geometric + classification, iterators, arbitrary (field) data attachable to mesh + entities, efficient communication involving entities duplicated + across multiple tasks, migration of mesh entities between tasks, + and dynamic load balancing.""" + + homepage = "https://www.scorec.rpi.edu/pumi" + url = "https://github.com/SCOREC/core.git" + + version('0.0.1', git='https://github.com/SCOREC/core.git', + commit='0c315e82b3f2478dc18bdd6cfa89f1cddb85cd6a') + version('develop', git='https://github.com/SCOREC/core.git', + branch='master') + + if sys.platform == 'darwin': + patch('phiotimer.cc.darwin.patch', level=0) # !clock_gettime + + variant('zoltan', default=False, description='Enable Zoltan Features') + + depends_on('mpi') + depends_on('zoltan', when='+zoltan') + + def cmake_args(self): + spec = self.spec + + args = [ + '-DSCOREC_CXX_WARNINGS=OFF', + '-DENABLE_ZOLTAN=%s' % ('ON' if '+zoltan' in spec else 'OFF'), + '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, + '-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx, + ] + + return args diff --git a/var/spack/repos/builtin/packages/pumi/phiotimer.cc.darwin.patch b/var/spack/repos/builtin/packages/pumi/phiotimer.cc.darwin.patch new file mode 100644 index 00000000000..52c6e63fcab --- /dev/null +++ b/var/spack/repos/builtin/packages/pumi/phiotimer.cc.darwin.patch @@ -0,0 +1,21 @@ +*** ./phasta/phiotimer.cc 2017-05-03 12:26:25.000000000 -0700 +--- ./phasta/phiotimer.cc.patched 2017-05-03 12:26:11.000000000 -0700 +*************** +*** 56,63 **** + } + #else + void phastaio_time(phastaioTime* t) { +! int err; +! err = clock_gettime(CLOCK_MONOTONIC,t); + PCU_ALWAYS_ASSERT(!err); + } + /*return elapsed time in micro seconds*/ +--- 56,63 ---- + } + #else + void phastaio_time(phastaioTime* t) { +! int err=0; +! /*err = clock_gettime(CLOCK_MONOTONIC,t);*/ + PCU_ALWAYS_ASSERT(!err); + } + /*return elapsed time in micro seconds*/ From 36db5ba9d879a747308f3a29db4737fab49fd915 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 May 2017 18:51:40 -0500 Subject: [PATCH 0870/2394] Fix newline character in GCC package (#4181) * Fix newline character in GCC package * Remove the newline completely --- var/spack/repos/builtin/packages/gcc/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index d4ed2341228..893b8efce59 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -250,6 +250,6 @@ def write_rpath_specs(self): for line in lines: out.write(line + '\n') if line.startswith('*link:'): - out.write(r'-rpath {0}:{1} \n'.format( + out.write('-rpath {0}:{1} '.format( self.prefix.lib, self.prefix.lib64)) set_install_permissions(specs_file) From b5eb298f3efde1ae32545a3363bed46e1811ab76 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 9 May 2017 18:52:08 -0500 Subject: [PATCH 0871/2394] Add a new package for ExtUtils::MakeMaker (#4179) --- .../perl-extutils-makemaker/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py diff --git a/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py b/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py new file mode 100644 index 00000000000..b675212395a --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PerlExtutilsMakemaker(PerlPackage): + """ExtUtils::MakeMaker - Create a module Makefile. This utility is designed + to write a Makefile for an extension module from a Makefile.PL. It is based + on the Makefile.SH model provided by Andy Dougherty and the perl5-porters. + """ + homepage = "https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker" + url = "http://search.cpan.org/CPAN/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-7.24.tar.gz" + + version('7.24', '15c67ba2ea2c9e20a3d976b738adb113') + + depends_on('perl@5.6.0:', type=('build', 'run')) From c0ceece9ccc251a8f9c0dd51b0504bd54d9dfae5 Mon Sep 17 00:00:00 2001 From: Stephen McDowell Date: Wed, 10 May 2017 09:13:14 -0400 Subject: [PATCH 0872/2394] enable cuda support for suite-sparse (#4163) * enable cuda support for suite-sparse * do not use spec.satisfies * cuda restructure, give clearer comment of why * str format compatibility * flake8 checks --- .../builtin/packages/suite-sparse/package.py | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index 375af78a485..ab0df75410b 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -37,8 +37,9 @@ class SuiteSparse(Package): version('4.5.3', '8ec57324585df3c6483ad7f556afccbd') version('4.5.1', 'f0ea9aad8d2d1ffec66a5b6bfeff5319') - variant('tbb', default=False, description='Build with Intel TBB') - variant('pic', default=True, description='Build position independent code (required to link with shared libraries)') + variant('tbb', default=False, description='Build with Intel TBB') + variant('pic', default=True, description='Build position independent code (required to link with shared libraries)') + variant('cuda', default=False, description='Build with CUDA') depends_on('blas') depends_on('lapack') @@ -48,6 +49,8 @@ class SuiteSparse(Package): # flags does not seem to be used, which leads to linking errors on Linux. depends_on('tbb', when='@4.5.3:+tbb') + depends_on('cuda', when='+cuda') + patch('tbb_453.patch', when='@4.5.3:+tbb') def install(self, spec, prefix): @@ -65,19 +68,16 @@ def install(self, spec, prefix): 'CC=%s' % self.compiler.cc, 'CXX=%s' % self.compiler.cxx, 'F77=%s' % self.compiler.f77, - 'CUDA_ROOT =', - 'GPU_BLAS_PATH =', - 'GPU_CONFIG =', - 'CUDA_PATH =', - 'CUDART_LIB =', - 'CUBLAS_LIB =', - 'CUDA_INC_PATH =', - 'NV20 =', - 'NV30 =', - 'NV35 =', - 'NVCC = echo', - 'NVCCFLAGS =', + # CUDA=no does NOT disable cuda, it only disables internal search + # for CUDA_PATH. If in addition the latter is empty, then CUDA is + # completely disabled. See + # [SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk] for more. + 'CUDA=no', + 'CUDA_PATH={0}'.format( + spec['cuda'].prefix if '+cuda' in spec else '' + ) ]) + if '+pic' in spec: make_args.extend([ 'CFLAGS={0}'.format(self.compiler.pic_flag), From 61ad36918671af00acda5454fe75dea5e5a2b43d Mon Sep 17 00:00:00 2001 From: Stephen McDowell Date: Wed, 10 May 2017 09:15:47 -0400 Subject: [PATCH 0873/2394] py-flask version updates, remote switch (#4166) * version updates, remote switch * trim versions to original and most recent * proper url discovered and tested --- var/spack/repos/builtin/packages/py-flask/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-flask/package.py b/var/spack/repos/builtin/packages/py-flask/package.py index cd400f6339f..15f668642cc 100644 --- a/var/spack/repos/builtin/packages/py-flask/package.py +++ b/var/spack/repos/builtin/packages/py-flask/package.py @@ -29,8 +29,9 @@ class PyFlask(PythonPackage): """A microframework based on Werkzeug, Jinja2 and good intentions""" homepage = "http://github.com/pallets/flask" - url = "https://pypi.io/packages/source/f/flask/flask-0.11.1.tar.gz" + url = "https://pypi.io/packages/source/F/Flask/Flask-0.11.1.tar.gz" + version('0.12.1', '76e9fee5c3afcf4634b9baf96c578207') version('0.11.1', 'd2af95d8fe79cf7da099f062dd122a08') depends_on('py-setuptools', type='build') From 94c1651bce82cc1c7052571bf02724c1b2a142bb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 10 May 2017 08:16:39 -0500 Subject: [PATCH 0874/2394] Add latest version of PGI compilers (#4186) * Add latest version of PGI compilers * Prepend, don't overwrite --- var/spack/repos/builtin/packages/pgi/package.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py index 1e11eaf526d..4a9295249c7 100644 --- a/var/spack/repos/builtin/packages/pgi/package.py +++ b/var/spack/repos/builtin/packages/pgi/package.py @@ -39,6 +39,7 @@ class Pgi(Package): homepage = "http://www.pgroup.com/" + version('17.4', 'a311d2756ddda657860bad8e5725597b') version('17.3', '6eefc42f85e756cbaba76467ed640902') version('16.10', '9bb6bfb7b1052f9e6a45829ba7a24e47') version('16.5', 'a40e8852071b5d600cb42f31631b3de1') @@ -109,8 +110,8 @@ def setup_environment(self, spack_env, run_env): run_env.set('F77', join_path(prefix.bin, 'pgfortran')) run_env.set('FC', join_path(prefix.bin, 'pgfortran')) - run_env.set('PATH', prefix.bin) - run_env.set('CPATH', prefix.include) - run_env.set('LIBRARY_PATH', prefix.lib) - run_env.set('LD_LIBRARY_PATH', prefix.lib) - run_env.set('MANPATH', prefix.man) + run_env.prepend_path('PATH', prefix.bin) + run_env.prepend_path('CPATH', prefix.include) + run_env.prepend_path('LIBRARY_PATH', prefix.lib) + run_env.prepend_path('LD_LIBRARY_PATH', prefix.lib) + run_env.prepend_path('MANPATH', prefix.man) From c422b33d77c13cc6e7cc0aa16fcaf6de6ce6452c Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 10 May 2017 10:47:56 -0400 Subject: [PATCH 0875/2394] highfive: New package; this is a C++ wrapper for the HDF5 library (#4173) * highfive: New package; this is a C++ wrapper for the HDF5 library The C++ wrapper that is shipped with the HDF5 library has several shortcomings. The highfive library seems to avoid these. * highfive: Make MPI variant default to true --- .../builtin/packages/highfive/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/highfive/package.py diff --git a/var/spack/repos/builtin/packages/highfive/package.py b/var/spack/repos/builtin/packages/highfive/package.py new file mode 100644 index 00000000000..3ee9cfeba0e --- /dev/null +++ b/var/spack/repos/builtin/packages/highfive/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Highfive(CMakePackage): + """HighFive - Header only C++ HDF5 interface""" + + homepage = "https://github.com/BlueBrain/HighFive" + url = "https://github.com/BlueBrain/HighFive/archive/v1.2.tar.gz" + + version('1.2', '030728d53519c7e13b5a522d34240301') + version('1.1', '986f0bd18c5264709688a536c02d2b2a') + version('1.0', 'e44e548560ea92afdb244c223b7655b6') + + variant('boost', default=False, description='Support Boost') + variant('mpi', default=True, description='Support MPI') + + depends_on('boost @1.41:', when='+boost') + depends_on('hdf5') + depends_on('hdf5 +mpi', when='+mpi') + + def cmake_args(self): + args = [ + '-DUSE_BOOST:Bool={0}'.format('+boost' in self.spec), + '-DHIGHFIVE_PARALLEL_HDF5:Bool={0}'.format('+mpi' in self.spec), + '-DUNIT_TESTS:Bool=false', + '-DHIGHFIVE_EXAMPLES:Bool=false'] + return args From 28c7d15df863a337ab17ee7248d2420e9979ea55 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 10 May 2017 11:10:31 -0400 Subject: [PATCH 0876/2394] hdf5: Correct spelling (#4172) * hdf5: Correct spelling * hdf5: avoid trailing spaces --- var/spack/repos/builtin/packages/hdf5/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 3fc978e7251..50ad30222f2 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -79,11 +79,11 @@ class Hdf5(AutotoolsPackage): @property def libs(self): - """Hdf5 can be queried for the following parameters: + """HDF5 can be queried for the following parameters: - "hl": high-level interface - "cxx": C++ APIs - - "fortran": fortran APIs + - "fortran": Fortran APIs :return: list of matching libraries """ @@ -144,7 +144,7 @@ def libs(self): def fortran_check(self): spec = self.spec if '+fortran' in spec and not self.compiler.fc: - msg = 'cannot build a fortran variant without a fortran compiler' + msg = 'cannot build a Fortran variant without a Fortran compiler' raise RuntimeError(msg) def configure_args(self): From e4538658591c85fd86acdf3e62c12db564240c16 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 10 May 2017 11:10:53 -0400 Subject: [PATCH 0877/2394] cosmomc: Enable Python bindings (#4169) * cosmomc: Enable Python bindings * cosmomc: Make python dependency optional --- .../repos/builtin/packages/cosmomc/package.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/cosmomc/package.py b/var/spack/repos/builtin/packages/cosmomc/package.py index 6c41002079e..e04965b25ce 100644 --- a/var/spack/repos/builtin/packages/cosmomc/package.py +++ b/var/spack/repos/builtin/packages/cosmomc/package.py @@ -50,13 +50,21 @@ def url_for_version(self, version): variant('mpi', default=True, description='Enable MPI support') variant('planck', default=False, description='Enable Planck Likelihood code and baseline data') + variant('python', default=True, description='Enable Python bindings') - patch('Makefile.patch') - patch('errorstop.patch') + extends('python', when='+python') depends_on('mpi', when='+mpi') depends_on('planck-likelihood', when='+planck') - depends_on('python@2.7:2.8,3.4:') + depends_on('py-matplotlib', type=('build', 'run'), when='+python') + depends_on('py-numpy', type=('build', 'run'), when='+python') + depends_on('py-pandas', type=('build', 'run'), when='+python') + depends_on('py-scipy', type=('build', 'run'), when='+python') + depends_on('py-six', type=('build', 'run'), when='+python') + depends_on('python @2.7:2.999,3.4:', type=('build', 'run'), when='+python') + + patch('Makefile.patch') + patch('errorstop.patch') parallel = False @@ -141,7 +149,6 @@ def install(self, spec, prefix): 'paramnames', 'params_generic.ini', 'planck_covmats', - 'python', 'scripts', # don't copy 'source' 'test.ini', @@ -149,6 +156,8 @@ def install(self, spec, prefix): 'test_planck.ini', 'tests', ] + if '+python' in spec: + entries += ['python'] for entry in entries: if os.path.isfile(entry): install(entry, root) From 604f65f3952eaadfdffe1ce2215517a499bb2dcc Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Wed, 10 May 2017 11:18:45 -0400 Subject: [PATCH 0878/2394] Edits to get setup-env.csh working better (#4044) * Edits to get setup-env.csh working better. Autosets the sys_type a la setup-env.sh * More stealing from bash setup script for module roots * Add error message if SPACK_ROOT isn't set * Remove _sp_lmod_root per Adam J Stewart --- share/spack/setup-env.csh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/share/spack/setup-env.csh b/share/spack/setup-env.csh index b960c21459a..8bb08dafde8 100755 --- a/share/spack/setup-env.csh +++ b/share/spack/setup-env.csh @@ -39,9 +39,15 @@ if ($?SPACK_ROOT) then alias spack 'set _sp_args = (\!*); source $_spack_share_dir/csh/spack.csh' alias _spack_pathadd 'set _pa_args = (\!*) && source $_spack_share_dir/csh/pathadd.csh' + # Shamelessly stolen from setup-env.sh + set _sp_sys_type = `$SPACK_ROOT/bin/spack python -c 'print(spack.architecture.sys_type())'` + set _sp_dotkit_root = `$SPACK_ROOT/bin/spack python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots').get('dotkit')))"` + set _sp_tcl_root = `$SPACK_ROOT/bin/spack python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots').get('tcl')))"` + # Set up modules and dotkit search paths in the user environment - # TODO: fix SYS_TYPE to something non-LLNL-specific - _spack_pathadd DK_NODE "$_spack_share_dir/dotkit/$SYS_TYPE" - _spack_pathadd MODULEPATH "$_spack_share_dir/modules/$SYS_TYPE" + _spack_pathadd DK_NODE "$_sp_dotkit_root/$_sp_sys_type" + _spack_pathadd MODULEPATH "$_sp_tcl_root/$_sp_sys_type" _spack_pathadd PATH "$SPACK_ROOT/bin" +else + echo "ERROR: Sourcing spack setup-env.csh requires setting SPACK_ROOT to the root of your spack installation" endif From e1d8cc86f0b1bc3dcf056a1226e08526c8f19579 Mon Sep 17 00:00:00 2001 From: Suzanne Parete-Koon Date: Wed, 10 May 2017 15:36:10 -0400 Subject: [PATCH 0879/2394] updating git (#4200) --- var/spack/repos/builtin/packages/git/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index d71f49bff6a..ca34969bfe5 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -43,6 +43,11 @@ class Git(AutotoolsPackage): # https://www.kernel.org/pub/software/scm/git/git-manpages-{version}.tar.xz releases = [ + { + 'version': '2.13.0', + 'md5': 'd0f14da0ef1d22f1ce7f7876fadcb39f', + 'md5_manpages': 'fda8d6d5314eb5a47e315405830f9970', + }, { 'version': '2.12.2', 'md5': 'f1a50c09ce8b5dd197f3c6c6d5ea8e75', From a01be73185ed3cdc0aeec9e7b0556604ba47656a Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Wed, 10 May 2017 21:37:01 +0200 Subject: [PATCH 0880/2394] Add nemesistcpib fabrics variant (#4197) --- var/spack/repos/builtin/packages/mvapich2/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index cc874356d38..5dc14215844 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -94,7 +94,8 @@ class Mvapich2(AutotoolsPackage): description='The fabric enabled for this build', default='psm', values=( - 'psm', 'sock', 'nemesisib', 'nemesis', 'mrail', 'nemesisibtcp' + 'psm', 'sock', 'nemesisib', 'nemesis', 'mrail', 'nemesisibtcp', + 'nemesistcpib' ) ) @@ -142,6 +143,8 @@ def network_options(self): opts = ["--with-device=ch3:psm"] elif 'fabrics=sock' in self.spec: opts = ["--with-device=ch3:sock"] + elif 'fabrics=nemesistcpib' in self.spec: + opts = ["--with-device=ch3:nemesis:tcp,ib"] elif 'fabrics=nemesisibtcp' in self.spec: opts = ["--with-device=ch3:nemesis:ib,tcp"] elif 'fabrics=nemesisib' in self.spec: From 64dfc8bda6db7d14c3c055d23f9f242d9ce6dfe7 Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Wed, 10 May 2017 16:08:52 -0500 Subject: [PATCH 0881/2394] Open MPI: add 2.1.1 to the list (#4204) Signed-off-by: Howard Pritchard --- var/spack/repos/builtin/packages/openmpi/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index a97584fa38e..14deb97bdf4 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -64,10 +64,11 @@ class Openmpi(AutotoolsPackage): """ homepage = "http://www.open-mpi.org" - url = "https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2" + url = "https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.bz2" list_url = "http://www.open-mpi.org/software/ompi/" list_depth = 2 + version('2.1.1', 'ae542f5cf013943ffbbeb93df883731b') version('2.1.0', '4838a5973115c44e14442c01d3f21d52') version('2.0.2', 'ecd99aa436a1ca69ce936a96d6a3fa48') version('2.0.1', '6f78155bd7203039d2448390f3b51c96') From 23ee792dcf46b4ea948b71ada1bfd26e5729a4ee Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 11 May 2017 11:30:55 -0500 Subject: [PATCH 0882/2394] Update NAG checksum, add F77 and FC (#4196) --- var/spack/repos/builtin/packages/nag/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nag/package.py b/var/spack/repos/builtin/packages/nag/package.py index 66cb2a6a54d..f2dd5cc95bc 100644 --- a/var/spack/repos/builtin/packages/nag/package.py +++ b/var/spack/repos/builtin/packages/nag/package.py @@ -30,7 +30,7 @@ class Nag(Package): """The NAG Fortran Compiler.""" homepage = "http://www.nag.com/nagware/np.asp" - version('6.1', 'f49bd548e0d5e2458b2dabb3ee01341a') + version('6.1', '0040d2254258223c78a6a4ab4829d7e0') version('6.0', '3fa1e7f7b51ef8a23e6c687cdcad9f96') # Licensing @@ -54,3 +54,7 @@ def install(self, spec, prefix): # Run install script os.system('./INSTALLU.sh') + + def setup_environment(self, spack_env, run_env): + run_env.set('F77', join_path(self.prefix.bin, 'nagfor')) + run_env.set('FC', join_path(self.prefix.bin, 'nagfor')) From f8b3eff01c61adf3a49699ff41649246558a7794 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 11 May 2017 19:29:08 +0200 Subject: [PATCH 0883/2394] filesystem.py: fixed bug introduced in #3367 (scrambled order in output) (#4156) PR #3367 inadvertently changed the semantics of _find_recursive and _find_non_recursive so that the returned list are not ordered as the input search list. This commit restores the original semantic, and adds tests to verify it. --- lib/spack/llnl/util/filesystem.py | 27 +++++-- .../test/data/directory_search/README.txt | 1 + .../spack/test/data/directory_search/a/c.h | 0 .../spack/test/data/directory_search/a/libc.a | 0 .../test/data/directory_search/a/libc.dylib | 0 .../test/data/directory_search/a/libc.so | 0 .../spack/test/data/directory_search/b/b.h | 0 .../spack/test/data/directory_search/b/d.h | 0 .../spack/test/data/directory_search/b/liba.a | 0 .../test/data/directory_search/b/liba.dylib | 0 .../test/data/directory_search/b/liba.so | 0 .../spack/test/data/directory_search/b/libd.a | 0 .../test/data/directory_search/b/libd.dylib | 0 .../test/data/directory_search/b/libd.so | 0 .../spack/test/data/directory_search/c/a.h | 0 .../spack/test/data/directory_search/c/libb.a | 0 .../test/data/directory_search/c/libb.dylib | 0 .../test/data/directory_search/c/libb.so | 0 lib/spack/spack/test/file_list.py | 74 ++++++++++++++++++- 19 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 lib/spack/spack/test/data/directory_search/README.txt create mode 100644 lib/spack/spack/test/data/directory_search/a/c.h create mode 100644 lib/spack/spack/test/data/directory_search/a/libc.a create mode 100644 lib/spack/spack/test/data/directory_search/a/libc.dylib create mode 100644 lib/spack/spack/test/data/directory_search/a/libc.so create mode 100644 lib/spack/spack/test/data/directory_search/b/b.h create mode 100644 lib/spack/spack/test/data/directory_search/b/d.h create mode 100644 lib/spack/spack/test/data/directory_search/b/liba.a create mode 100644 lib/spack/spack/test/data/directory_search/b/liba.dylib create mode 100644 lib/spack/spack/test/data/directory_search/b/liba.so create mode 100644 lib/spack/spack/test/data/directory_search/b/libd.a create mode 100644 lib/spack/spack/test/data/directory_search/b/libd.dylib create mode 100644 lib/spack/spack/test/data/directory_search/b/libd.so create mode 100644 lib/spack/spack/test/data/directory_search/c/a.h create mode 100644 lib/spack/spack/test/data/directory_search/c/libb.a create mode 100644 lib/spack/spack/test/data/directory_search/c/libb.dylib create mode 100644 lib/spack/spack/test/data/directory_search/c/libb.so diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 25dc7474998..f7fae7eb44d 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -551,26 +551,41 @@ def find(root, files, recurse=True): def _find_recursive(root, search_files): - found_files = [] + + # The variable here is **on purpose** a defaultdict. The idea is that + # we want to poke the filesystem as little as possible, but still maintain + # stability in the order of the answer. Thus we are recording each library + # found in a key, and reconstructing the stable order later. + found_files = collections.defaultdict(list) for path, _, list_files in os.walk(root): for search_file in search_files: for list_file in list_files: if fnmatch.fnmatch(list_file, search_file): - found_files.append(join_path(path, list_file)) + found_files[search_file].append(join_path(path, list_file)) - return found_files + answer = [] + for search_file in search_files: + answer.extend(found_files[search_file]) + + return answer def _find_non_recursive(root, search_files): - found_files = [] + # The variable here is **on purpose** a defaultdict as os.list_dir + # can return files in any order (does not preserve stability) + found_files = collections.defaultdict(list) for list_file in os.listdir(root): for search_file in search_files: if fnmatch.fnmatch(list_file, search_file): - found_files.append(join_path(root, list_file)) + found_files[search_file].append(join_path(root, list_file)) - return found_files + answer = [] + for search_file in search_files: + answer.extend(found_files[search_file]) + + return answer # Utilities for libraries and headers diff --git a/lib/spack/spack/test/data/directory_search/README.txt b/lib/spack/spack/test/data/directory_search/README.txt new file mode 100644 index 00000000000..9c43a4224d7 --- /dev/null +++ b/lib/spack/spack/test/data/directory_search/README.txt @@ -0,0 +1 @@ +This directory tree is made up to test that search functions wil return a stable ordered sequence. \ No newline at end of file diff --git a/lib/spack/spack/test/data/directory_search/a/c.h b/lib/spack/spack/test/data/directory_search/a/c.h new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/a/libc.a b/lib/spack/spack/test/data/directory_search/a/libc.a new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/a/libc.dylib b/lib/spack/spack/test/data/directory_search/a/libc.dylib new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/a/libc.so b/lib/spack/spack/test/data/directory_search/a/libc.so new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/b/b.h b/lib/spack/spack/test/data/directory_search/b/b.h new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/b/d.h b/lib/spack/spack/test/data/directory_search/b/d.h new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/b/liba.a b/lib/spack/spack/test/data/directory_search/b/liba.a new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/b/liba.dylib b/lib/spack/spack/test/data/directory_search/b/liba.dylib new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/b/liba.so b/lib/spack/spack/test/data/directory_search/b/liba.so new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/b/libd.a b/lib/spack/spack/test/data/directory_search/b/libd.a new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/b/libd.dylib b/lib/spack/spack/test/data/directory_search/b/libd.dylib new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/b/libd.so b/lib/spack/spack/test/data/directory_search/b/libd.so new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/c/a.h b/lib/spack/spack/test/data/directory_search/c/a.h new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/c/libb.a b/lib/spack/spack/test/data/directory_search/c/libb.a new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/c/libb.dylib b/lib/spack/spack/test/data/directory_search/c/libb.dylib new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/data/directory_search/c/libb.so b/lib/spack/spack/test/data/directory_search/c/libb.so new file mode 100644 index 00000000000..e69de29bb2d diff --git a/lib/spack/spack/test/file_list.py b/lib/spack/spack/test/file_list.py index be4334f0554..10c86d0d089 100644 --- a/lib/spack/spack/test/file_list.py +++ b/lib/spack/spack/test/file_list.py @@ -23,9 +23,14 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -import pytest +import fnmatch +import os +import pytest +import six +import spack from llnl.util.filesystem import LibraryList, HeaderList +from llnl.util.filesystem import find_libraries, find_headers @pytest.fixture() @@ -201,3 +206,70 @@ def test_add(self, header_list): # Always produce an instance of HeaderList assert type(header_list + pylist) == type(header_list) assert type(pylist + header_list) == type(header_list) + + +#: Directory where the data for the test below is stored +search_dir = os.path.join(spack.test_path, 'data', 'directory_search') + + +@pytest.mark.parametrize('search_fn,search_list,root,kwargs', [ + (find_libraries, 'liba', search_dir, {'recurse': True}), + (find_libraries, ['liba'], search_dir, {'recurse': True}), + (find_libraries, 'libb', search_dir, {'recurse': True}), + (find_libraries, ['libc'], search_dir, {'recurse': True}), + (find_libraries, ['libc', 'liba'], search_dir, {'recurse': True}), + (find_libraries, ['liba', 'libc'], search_dir, {'recurse': True}), + (find_libraries, ['libc', 'libb', 'liba'], search_dir, {'recurse': True}), + (find_libraries, ['liba', 'libc'], search_dir, {'recurse': True}), + (find_libraries, + ['libc', 'libb', 'liba'], + search_dir, + {'recurse': True, 'shared': False} + ), + (find_headers, 'a', search_dir, {'recurse': True}), + (find_headers, ['a'], search_dir, {'recurse': True}), + (find_headers, 'b', search_dir, {'recurse': True}), + (find_headers, ['c'], search_dir, {'recurse': True}), + (find_headers, ['c', 'a'], search_dir, {'recurse': True}), + (find_headers, ['a', 'c'], search_dir, {'recurse': True}), + (find_headers, ['c', 'b', 'a'], search_dir, {'recurse': True}), + (find_headers, ['a', 'c'], search_dir, {'recurse': True}), + (find_libraries, + ['liba', 'libd'], + os.path.join(search_dir, 'b'), + {'recurse': False} + ), + (find_headers, + ['b', 'd'], + os.path.join(search_dir, 'b'), + {'recurse': False} + ), +]) +def test_searching_order(search_fn, search_list, root, kwargs): + + # Test search + result = search_fn(search_list, root, **kwargs) + + # The tests are set-up so that something is always found + assert len(result) != 0 + + # Now reverse the result and start discarding things + # as soon as you have matches. In the end the list should + # be emptied. + l = list(reversed(result)) + + # At this point make sure the search list is a sequence + if isinstance(search_list, six.string_types): + search_list = [search_list] + + # Discard entries in the order they appear in search list + for x in search_list: + try: + while fnmatch.fnmatch(l[-1], x) or x in l[-1]: + l.pop() + except IndexError: + # List is empty + pass + + # List should be empty here + assert len(l) == 0 From 9e65f2347c06a3b6e07099b3b0074c645adbc1a6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 11 May 2017 14:50:29 -0500 Subject: [PATCH 0884/2394] Add patch to fix missing MODULESHOME in profile (#4214) --- ...oblem-with-MODULESHOME-and-issue-271.patch | 25 +++++++++++++++++ .../repos/builtin/packages/lmod/package.py | 27 ++++++++++--------- 2 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 var/spack/repos/builtin/packages/lmod/0001-fix-problem-with-MODULESHOME-and-issue-271.patch diff --git a/var/spack/repos/builtin/packages/lmod/0001-fix-problem-with-MODULESHOME-and-issue-271.patch b/var/spack/repos/builtin/packages/lmod/0001-fix-problem-with-MODULESHOME-and-issue-271.patch new file mode 100644 index 00000000000..ea2f191d1f0 --- /dev/null +++ b/var/spack/repos/builtin/packages/lmod/0001-fix-problem-with-MODULESHOME-and-issue-271.patch @@ -0,0 +1,25 @@ +From 6dea3d8c6d1ec9dc279e0f1fbd9965e7cc774678 Mon Sep 17 00:00:00 2001 +From: Robert McLay +Date: Thu, 11 May 2017 12:42:08 -0500 +Subject: [PATCH] fix problem with MODULESHOME and issue #271 + +--- + init/profile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/init/profile.in b/init/profile.in +index 0a7f7be..fdcbfcc 100644 +--- a/init/profile.in ++++ b/init/profile.in +@@ -15,7 +15,7 @@ if [ -z "${USER_IS_ROOT:-}" ]; then + export MODULEPATH_ROOT="@modulepath_root@" + export MODULEPATH=$(@PKG@/libexec/addto --append MODULEPATH $MODULEPATH_ROOT/$LMOD_sys $MODULEPATH_ROOT/Core) + export MODULEPATH=$(@PKG@/libexec/addto --append MODULEPATH @PKG@/modulefiles/Core) +- export BASH_ENV=$MODULESHOME/init/bash ++ export BASH_ENV=@PKG@/init/bash + + # + # If MANPATH is empty, Lmod is adding a trailing ":" so that +-- +2.9.3 + diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 87f0883fba1..89a5ba34122 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -36,23 +36,28 @@ class Lmod(AutotoolsPackage): """ homepage = 'https://www.tacc.utexas.edu/research-development/tacc-projects/lmod' - url = 'https://github.com/TACC/Lmod/archive/7.4.9.tar.gz' + url = 'https://github.com/TACC/Lmod/archive/7.4.11.tar.gz' - version('7.4.9', 'd8ffab81ddca2491fe13e2ac0a4fd320') - version('7.4.8', '3b22932437cc29ce546ec887885355e7') - version('7.4.5', 'fc34029c60dd9782c3d011c2b93fd266') - version('7.4.1', '59b2558ee50877f2cf49ed37d7b09fea') - version('7.3', '70180ec2ea1fae53aa83350523f6b2b3') - version('6.4.5', '14f6c58dbc0a5a75574d795eac2c1e3c') - version('6.4.1', '7978ba777c8aa41a4d8c05fec5f780f4') - version('6.3.7', '0fa4d5a24c41cae03776f781aa2dedc1') - version('6.0.1', '91abf52fe5033bd419ffe2842ebe7af9') + version('7.4.11', '70c55ba0ba3877b6d8df536ee7ea6d49') + version('7.4.10', 'a13e36d6196747fded7987ef3dcfb605') + version('7.4.9', 'd8ffab81ddca2491fe13e2ac0a4fd320') + version('7.4.8', '3b22932437cc29ce546ec887885355e7') + version('7.4.5', 'fc34029c60dd9782c3d011c2b93fd266') + version('7.4.1', '59b2558ee50877f2cf49ed37d7b09fea') + version('7.3', '70180ec2ea1fae53aa83350523f6b2b3') + version('6.4.5', '14f6c58dbc0a5a75574d795eac2c1e3c') + version('6.4.1', '7978ba777c8aa41a4d8c05fec5f780f4') + version('6.3.7', '0fa4d5a24c41cae03776f781aa2dedc1') + version('6.0.1', '91abf52fe5033bd419ffe2842ebe7af9') depends_on('lua@5.2:') depends_on('lua-luaposix', type=('build', 'run')) depends_on('lua-luafilesystem', type=('build', 'run')) depends_on('tcl', type=('build', 'run')) + patch('fix_tclsh_paths.patch', when='@:6.4.3') + patch('0001-fix-problem-with-MODULESHOME-and-issue-271.patch', when='@7.3.28:7.4.10') + parallel = False def setup_environment(self, spack_env, run_env): @@ -61,8 +66,6 @@ def setup_environment(self, spack_env, run_env): spack_env.append_path('LUA_PATH', stage_lua_path.format( version=self.version), separator=';') - patch('fix_tclsh_paths.patch', when='@:6.4.3') - def patch(self): """The tcl scripts should use the tclsh that was discovered by the configure script. Touch up their #! lines so that the From 4cc2d33bcfb33b199bf3c9f8418f67c19a9be2c5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 11 May 2017 18:07:28 -0500 Subject: [PATCH 0885/2394] Force suite-sparse to use Spack's compiler wrappers (#4220) --- var/spack/repos/builtin/packages/suite-sparse/package.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index ab0df75410b..ae2a99e7371 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -62,12 +62,11 @@ def install(self, spec, prefix): make_args = ['INSTALL=%s' % prefix] - # inject Spack compiler wrappers make_args.extend([ + # By default, the Makefile uses the Intel compilers if + # they are found. This flag disables this behavior, + # forcing it to use Spack's compiler wrappers. 'AUTOCC=no', - 'CC=%s' % self.compiler.cc, - 'CXX=%s' % self.compiler.cxx, - 'F77=%s' % self.compiler.f77, # CUDA=no does NOT disable cuda, it only disables internal search # for CUDA_PATH. If in addition the latter is empty, then CUDA is # completely disabled. See From d01f01c77f8c2177efe0ce9355e4f2322069ae31 Mon Sep 17 00:00:00 2001 From: Stephen McDowell Date: Thu, 11 May 2017 20:03:23 -0400 Subject: [PATCH 0886/2394] Flann package (#3966) * Initial attempt at flann packaging. Python2 somehow works. Python3 does not. Still debugging their obscure setup.py configuration. * Flann good enough. Python3 broken but close. Flake8 checks in place. Unsure about CMAKE_BUILD_TYPE and default spack behavior. * spack uses RelWithDebInfo as default build type. * builds py2/3, but direct site-packages install * prefix working, empty python install dir * flann package +python installs correctly * str format {0} instead of {} * potential doctest fix * consistency of build env with PythonPackage * fix python again, test deptype todo, build type * potentially enable matlab, untested --- .../repos/builtin/packages/flann/package.py | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 var/spack/repos/builtin/packages/flann/package.py diff --git a/var/spack/repos/builtin/packages/flann/package.py b/var/spack/repos/builtin/packages/flann/package.py new file mode 100644 index 00000000000..bb7af21fa96 --- /dev/null +++ b/var/spack/repos/builtin/packages/flann/package.py @@ -0,0 +1,141 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Flann(CMakePackage): + """FLANN is a library for performing fast approximate nearest neighbor + searches in high dimensional spaces. It contains a collection of + algorithms we found to work best for nearest neighbor search and a system + for automatically choosing the best algorithm and optimum parameters + depending on the dataset. + + FLANN is written in C++ and contains bindings for the following languages: + C, MATLAB and Python. + """ + + homepage = "http://www.cs.ubc.ca/research/flann/" + url = "https://github.com/mariusmuja/flann/archive/1.9.1.tar.gz" + + version('1.9.1', '73adef1c7bf8e8b978987e7860926ea6') + version('1.8.5', '02a81640b1e9c11796a0413976dc11f5') + version('1.8.4', '774b74580e3cbc5b0d45c6ec345a64ae') + version('1.8.1', '1f51500e172f5e11fbda05f033858eb6') + version('1.8.0', '473150f592c2997e32d5ce31fd3c19a2') + + # Options available in the CMakeLists.txt + # Language bindings + variant("python", default=False, + description="Build the Python bindings. " + "Module: pyflann.") + variant("matlab", default=False, description="Build the Matlab bindings.") + # default to true for C because it's a C++ library, nothing extra needed + variant("c", default=True, description="Build the C bindings.") + + # Must build C bindings for Python / Matlab + conflicts("+python", when="~c") + conflicts("+matlab", when="~c") + + # Additional options + variant("cuda", default=False, description="Build the CUDA library.") + variant("examples", default=False, description="Build the examples.") + variant("doc", default=False, description="Build the documentation.") + variant("openmp", default=True, description="Use OpenMP multi-threading.") + # mpi and hdf5 are the bread and butter of this library, use 'em + variant("mpi", default=True, description="Use MPI.") + variant("hdf5", default=True, description="Enable HDF5 support.") + + # Dependencies + extends("python", when="+python") + depends_on("py-numpy", when="+python", type=("build", "run")) + depends_on("matlab", when="+matlab", type=("build", "run")) + depends_on("cuda", when="+cuda") + depends_on("mpi", when="+mpi") + depends_on("hdf5", when="+hdf5") + # HDF5_IS_PARALLEL actually comes from hdf5+mpi + # https://github.com/mariusmuja/flann/blob/06a49513138009d19a1f4e0ace67fbff13270c69/CMakeLists.txt#L108-L112 + depends_on("boost+mpi+system+serialization+thread", when="+mpi ^hdf5+mpi") + + # Doc deps + depends_on("latex", when="+doc") + + # Example uses hdf5. + depends_on("hdf5", when="+examples") + + def patch(self): + # Fix up the python setup.py call inside the install(CODE + filter_file("setup.py install", + 'setup.py --no-user-cfg install --prefix=\\"{0}\\"'.format( + self.prefix + ), + "src/python/CMakeLists.txt") + # Fix the install location so that spack activate works + filter_file("share/flann/python", + site_packages_dir, + "src/python/CMakeLists.txt") + # Hack. Don't install setup.py + filter_file("install( FILES", + "# install( FILES", + "src/python/CMakeLists.txt", string=True) + + # TODO: revisit after https://github.com/LLNL/spack/issues/1279 + # depends_on('hdf5', type='test') + # depends_on('gtest', type='test') + + def cmake_args(self): + spec = self.spec + args = [] + + # Language bindings. Many default to true in CMakeLists, bypass all + c_bind = "ON" if "+c" in spec else "OFF" + args.append("-DBUILD_C_BINDINGS:BOOL={0}".format(c_bind)) + + py_bind = "ON" if "+python" in spec else "OFF" + args.append("-DBUILD_PYTHON_BINDINGS:BOOL={0}".format(py_bind)) + + mat_bind = "ON" if "+matlab" in spec else "OFF" + args.append("-DBUILD_MATLAB_BINDINGS:BOOL={0}".format(mat_bind)) + + # Extra options + cuda_lib = "ON" if "+cuda" in spec else "OFF" + args.append("-DBUILD_CUDA_LIB:BOOL={0}".format(cuda_lib)) + + examples = "ON" if "+examples" in spec else "OFF" + args.append("-DBUILD_EXAMPLES:BOOL={0}".format(examples)) + + use_openmp = "ON" if "+openmp" in spec else "OFF" + args.append("-DUSE_OPENMP:BOOL={0}".format(use_openmp)) + + use_mpi = "ON" if "+mpi" in spec else "OFF" + args.append("-DUSE_MPI:BOOL={0}".format(use_mpi)) + + # Configure the proper python executable + if "+python" in spec: + args.append( + "-DPYTHON_EXECUTABLE={0}".format(spec["python"].command.path) + ) + + return args From 70939cf14729f059ab95e836a8104585ff470b4d Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 11 May 2017 19:04:38 -0500 Subject: [PATCH 0887/2394] Fix metis list_url (#4222) --- var/spack/repos/builtin/packages/metis/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index 454bb970377..64245095922 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -38,7 +38,7 @@ class Metis(Package): homepage = "http://glaros.dtc.umn.edu/gkhome/metis/metis/overview" url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz" - list_url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/OLD" + list_url = "http://glaros.dtc.umn.edu/gkhome/fsroot/sw/metis/OLD" version('5.1.0', '5465e67079419a69e0116de24fce58fe') version('5.0.2', 'acb521a4e8c2e6dd559a7f9abd0468c5') From e7973dd290edbd7c3fc2a96bfbc4666964646255 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 11 May 2017 19:05:02 -0500 Subject: [PATCH 0888/2394] Fix typo in PythonPackage documentation (#4221) --- lib/spack/spack/build_systems/python.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index 3fae6671f0b..c52c529b50d 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -75,7 +75,7 @@ class PythonPackage(PackageBase): .. code-block:: console - $ python --no-user-cfg setup.py + $ python setup.py --no-user-cfg Each phase also has a function that can pass arguments to this call. All of these functions are empty except for the ``install_args`` From 34cfd2483a89e83b71d77ba73c3d0990a00e2483 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 11 May 2017 19:06:11 -0500 Subject: [PATCH 0889/2394] Add latest version of eigen (#4224) --- .../repos/builtin/packages/eigen/package.py | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index 1d7df47b211..4ed28580050 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -25,14 +25,16 @@ from spack import * -class Eigen(Package): +class Eigen(CMakePackage): """Eigen is a C++ template library for linear algebra matrices, vectors, numerical solvers, and related algorithms. """ homepage = 'http://eigen.tuxfamily.org/' - url = 'https://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2' + url = 'https://bitbucket.org/eigen/eigen/get/3.3.3.tar.bz2' + list_url = 'https://bitbucket.org/eigen/eigen/downloads/?tab=tags' + version('3.3.3', 'b2ddade41040d9cf73b39b4b51e8775b') version('3.3.1', 'edb6799ef413b0868aace20d2403864c') version('3.2.10', 'a85bb68c82988648c3d53ba9768d7dcbcfe105f8') version('3.2.9', '59ab81212f8eb2534b1545a9b42c38bf618a0d71') @@ -51,26 +53,15 @@ class Eigen(Package): description='Enables support for multi-precisions FP via mpfr') # TODO : dependency on googlehash, superlu, adolc missing - depends_on('cmake', type='build') depends_on('metis@5:', when='+metis') depends_on('scotch', when='+scotch') depends_on('fftw', when='+fftw') depends_on('suite-sparse', when='+suitesparse') - depends_on('mpfr@2.3.0:', when="+mpfr") - depends_on('gmp', when="+mpfr") + depends_on('mpfr@2.3.0:', when='+mpfr') + depends_on('gmp', when='+mpfr') - def install(self, spec, prefix): - - options = [] - options.extend(std_cmake_args) - - build_directory = join_path(self.stage.path, 'spack-build') - source_directory = self.stage.source_path - - if '+debug' in spec: - options.append('-DCMAKE_BUILD_TYPE:STRING=Debug') - - with working_dir(build_directory, create=True): - cmake(source_directory, *options) - make() - make("install") + def build_type(self): + if '+debug' in self.spec: + return 'Debug' + else: + return 'Release' From 5719cfb2f7c730421842e618f9e2ef2c278d50fa Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 11 May 2017 19:07:12 -0500 Subject: [PATCH 0890/2394] Download udunits from FTP server (#4218) --- .../builtin/packages/udunits2/package.py | 35 +++---------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/var/spack/repos/builtin/packages/udunits2/package.py b/var/spack/repos/builtin/packages/udunits2/package.py index a6128b09298..6df1f1e8d29 100644 --- a/var/spack/repos/builtin/packages/udunits2/package.py +++ b/var/spack/repos/builtin/packages/udunits2/package.py @@ -29,37 +29,10 @@ class Udunits2(AutotoolsPackage): """Automated units conversion""" homepage = "http://www.unidata.ucar.edu/software/udunits" - url = "https://github.com/Unidata/UDUNITS-2/archive/v2.2.23.tar.gz" + url = "ftp://ftp.unidata.ucar.edu/pub/udunits/udunits-2.2.24.tar.gz" - # When adding new versions, check whether they are listed at - # ftp://ftp.unidata.ucar.edu/pub/udunits first. Git tags may change - # for unreleased versions. - version('2.2.24', '316911493e3b5c28ff7019223b4e27ea') - version('2.2.23', '0c0d9b1ebd7ad066233bedf40e66f1ba') - version('2.2.21', '167738b3ec886da1b92239de9cbbbc39') + version('2.2.24', '898b90dc1890f172c493406d0f26f531') + version('2.2.23', '9f66006accecd621a4c3eda4ba9fa7c9') + version('2.2.21', '1585a5efb2c40c00601abab036a81299') depends_on('expat') - - depends_on('bison', type='build') - depends_on('flex', type='build') - depends_on('libtool', type='build') - depends_on('automake', type='build') - depends_on('autoconf', type='build') - depends_on('pkg-config', type='build') - depends_on('texinfo', type='build') - - def autoreconf(self, spec, prefix): - # Work around autogen.sh oddities - # bash = which("bash") - # bash("./autogen.sh") - mkdirp("config") - autoreconf = which("autoreconf") - autoreconf("--install", "--verbose", "--force", - "-I", "config", - "-I", join_path(spec['pkg-config'].prefix, - "share", "aclocal"), - "-I", join_path(spec['automake'].prefix, - "share", "aclocal"), - "-I", join_path(spec['libtool'].prefix, - "share", "aclocal"), - ) From e7016b250f505dbdd38643f967ec44020cc034fe Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Fri, 12 May 2017 14:37:18 +0200 Subject: [PATCH 0891/2394] Add pdt support to scorep (#4198) Add pdt dependency to scorep --- var/spack/repos/builtin/packages/pdt/package.py | 16 +++++++++++++++- .../repos/builtin/packages/scorep/package.py | 2 ++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index 589d40e8435..1012911cd5f 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -22,6 +22,7 @@ # 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 os from spack import * @@ -45,4 +46,17 @@ class Pdt(AutotoolsPackage): version('3.18.1', 'e401534f5c476c3e77f05b7f73b6c4f2') def configure(self, spec, prefix): - configure('-prefix=%s' % prefix) + configure('-prefix={0}'.format(prefix)) + + @run_after('install') + def link_arch_dirs(self): + # Link arch-specific directories into prefix + for dir in os.listdir(self.prefix): + path = join_path(self.prefix, dir) + if not os.path.isdir(path) or os.path.islink(path): + continue + for d in ('bin', 'lib'): + src = join_path(path, d) + dst = join_path(self.prefix, d) + if os.path.isdir(src) and not os.path.exists(dst): + os.symlink(join_path(dir, d), dst) diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index 75c88e7be21..f9979132b0b 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -62,6 +62,7 @@ class Scorep(AutotoolsPackage): depends_on("mpi") depends_on("papi") + depends_on('pdt') variant('shmem', default=False, description='Enable shmem tracing') @@ -79,6 +80,7 @@ def configure_args(self): "--with-cube=%s" % spec['cube'].prefix.bin, "--with-papi-header=%s" % spec['papi'].prefix.include, "--with-papi-lib=%s" % spec['papi'].prefix.lib, + "--with-pdt=%s" % spec['pdt'].prefix.bin, "--enable-shared", ] From 2413f1ec3efb143f8deacbd61fed996c71b73708 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Fri, 12 May 2017 22:46:58 +1000 Subject: [PATCH 0892/2394] Python cdat-lite package (#4208) * py-cdat-lite: a python package for managing and analysing climate science data * py-cdat-lite: depends on py-numpy * py-cdat-lite: flake8 compliance * py-cdat-lite: provide a generic URL where multiple versions are listed * py-cdat-lite: restrict python versions; python required at run-time * py-cdat-lite: use URL under pypi.io for consistency with other packages * py-cdat-lite: add run-time dependency on py-numpy --- .../builtin/packages/py-cdat-lite/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-cdat-lite/package.py diff --git a/var/spack/repos/builtin/packages/py-cdat-lite/package.py b/var/spack/repos/builtin/packages/py-cdat-lite/package.py new file mode 100644 index 00000000000..2006c0eadd2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-cdat-lite/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class PyCdatLite(PythonPackage): + """Cdat-lite is a Python package for managing and analysing climate + science data. It is a subset of the Climate Data Analysis Tools (CDAT) + developed by PCMDI at Lawrence Livermore National Laboratory.""" + + homepage = "http://proj.badc.rl.ac.uk/cedaservices/wiki/CdatLite" + url = "https://pypi.io/packages/source/c/cdat-lite/cdat-lite-6.0.1.tar.gz" + + version('6.0.1', '6d5a6e86f15ce15291d25feab8793248') + + depends_on("netcdf") + depends_on("python@2.5:2.8", type=('build', 'run')) + depends_on("py-numpy", type=('build', 'run')) + depends_on('py-setuptools', type='build') From d972ba7fbcb61b245d9c19eb84adb34fe02e4da1 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Fri, 12 May 2017 14:49:06 +0200 Subject: [PATCH 0893/2394] Add SymEngine release 0.3.0 (#4227) --- var/spack/repos/builtin/packages/symengine/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/symengine/package.py b/var/spack/repos/builtin/packages/symengine/package.py index 575509cd5e2..04625283204 100644 --- a/var/spack/repos/builtin/packages/symengine/package.py +++ b/var/spack/repos/builtin/packages/symengine/package.py @@ -32,6 +32,7 @@ class Symengine(CMakePackage): homepage = "https://github.com/symengine/symengine" url = "https://github.com/symengine/symengine/archive/v0.2.0.tar.gz" + version('0.3.0', 'e61d7513cca4963cd062616891de54c6') version('0.2.0', '45401561add36a13c1f0b0c5f8d7422d') version('0.1.0', '41ad7daed61fc5a77c285eb6c7303425') version('develop', git='https://github.com/symengine/symengine.git') From 1a6b4afe7f0c382f98534f57a0a859ebc21b3eb8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 12 May 2017 09:52:01 -0500 Subject: [PATCH 0894/2394] Add helpful error message for uncompressed downloads (#4205) --- lib/spack/spack/mirror.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index c9ed617dc8b..1c0618e6e08 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -53,13 +53,33 @@ def mirror_archive_filename(spec, fetcher, resourceId=None): if fetcher.expand_archive: # If we fetch with a URLFetchStrategy, use URL's archive type ext = url.determine_url_file_extension(fetcher.url) - ext = ext or spec.package.versions[spec.package.version].get( - 'extension', None) - ext = ext.lstrip('.') + + # If the filename does not end with a normal suffix, + # see if the package explicitly declares the extension if not ext: - raise MirrorError( - "%s version does not specify an extension" % spec.name + - " and could not parse extension from %s" % fetcher.url) + ext = spec.package.versions[spec.package.version].get( + 'extension', None) + + if ext: + # Remove any leading dots + ext = ext.lstrip('.') + + if not ext: + msg = """\ +Unable to parse extension from {0}. + +If this URL is for a tarball but does not include the file extension +in the name, you can explicitly declare it with the following syntax: + + version('1.2.3', 'hash', extension='tar.gz') + +If this URL is for a download like a .jar or .whl that does not need +to be expanded, or an uncompressed installation script, you can tell +Spack not to expand it with the following syntax: + + version('1.2.3', 'hash', expand=False) +""" + raise MirrorError(msg.format(fetcher.url)) else: # If the archive shouldn't be expanded, don't check extension. ext = None From c612781f6f8b7221aa0934705d11363b59388148 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 12 May 2017 11:29:16 -0500 Subject: [PATCH 0895/2394] Convert pixman to AutotoolsPackage (#4231) --- .../repos/builtin/packages/pixman/package.py | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py index c780fd64aa2..4d5bd4767ac 100644 --- a/var/spack/repos/builtin/packages/pixman/package.py +++ b/var/spack/repos/builtin/packages/pixman/package.py @@ -26,7 +26,7 @@ import sys -class Pixman(Package): +class Pixman(AutotoolsPackage): """The Pixman package contains a library that provides low-level pixel manipulation features such as image compositing and trapezoid rasterization.""" @@ -37,18 +37,16 @@ class Pixman(Package): version('0.34.0', 'e80ebae4da01e77f68744319f01d52a3') version('0.32.6', '3a30859719a41bd0f5cccffbfefdd4c2') - depends_on('pkg-config', type='build') + depends_on('pkg-config@0.9.0:', type='build') depends_on('libpng') - def install(self, spec, prefix): - config_args = ["--prefix=" + prefix, - "--disable-gtk"] + def configure_args(self): + args = [ + '--enable-libpng', + '--disable-gtk', + ] - if sys.platform == "darwin": - config_args.append("--disable-mmx") + if sys.platform == 'darwin': + args.append('--disable-mmx') - configure(*config_args) - - make() - make('check') - make('install') + return args From 4e13641db869b5660a2c2c56ec2130acd2fea8e7 Mon Sep 17 00:00:00 2001 From: Hans Pabst Date: Fri, 12 May 2017 20:51:43 +0200 Subject: [PATCH 0896/2394] LIBXSMM 1.8.1 (#4235) * Included LIBXSMM 1.8 into the list of available versions. * LIBXSMM 1.8.1 --- var/spack/repos/builtin/packages/libxsmm/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py index 8552d3c2f0c..eb9bf123509 100644 --- a/var/spack/repos/builtin/packages/libxsmm/package.py +++ b/var/spack/repos/builtin/packages/libxsmm/package.py @@ -32,10 +32,11 @@ class Libxsmm(Package): and small convolutions.''' homepage = 'https://github.com/hfp/libxsmm' - url = 'https://github.com/hfp/libxsmm/archive/1.8.tar.gz' + url = 'https://github.com/hfp/libxsmm/archive/1.8.1.tar.gz' version('develop', git='https://github.com/hfp/libxsmm.git') + version('1.8.1', 'ece51ec767580f4542f509655daa5ec0') version('1.8', '2d513afbdad99e5d04c6c4ab4c9bb25b') version('1.7.1', 'a938335b1c2c90616dc72c2c1a5824ab') version('1.7', 'cb3aff6d123ba70bd3d4daf575767d14') From 360dc4a70962a8b7084b83a5194ec4e3b1ae5fa9 Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Fri, 12 May 2017 15:11:20 -0400 Subject: [PATCH 0897/2394] albacore and cutadapt again (#4219) * added albacore package as well as dependency py-ont-fast5-api * added py-cutadapt and dependency py-xopen * made more changes to albacore and cutadapt as well as dependencies * made changes again per @adamjstewart * fixed by python n00b errors i think * fixed? * tw=79 * made changes to py-ont-fast5-api ont-albacore * removed bad characters --- .../builtin/packages/ont-albacore/package.py | 51 +++++++++++++++++++ .../builtin/packages/py-cutadapt/package.py | 40 +++++++++++++++ .../packages/py-ont-fast5-api/package.py | 43 ++++++++++++++++ .../builtin/packages/py-xopen/package.py | 40 +++++++++++++++ 4 files changed, 174 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ont-albacore/package.py create mode 100644 var/spack/repos/builtin/packages/py-cutadapt/package.py create mode 100644 var/spack/repos/builtin/packages/py-ont-fast5-api/package.py create mode 100644 var/spack/repos/builtin/packages/py-xopen/package.py diff --git a/var/spack/repos/builtin/packages/ont-albacore/package.py b/var/spack/repos/builtin/packages/ont-albacore/package.py new file mode 100644 index 00000000000..a9b6ea0661e --- /dev/null +++ b/var/spack/repos/builtin/packages/ont-albacore/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class OntAlbacore(Package): + """Albacore is a software project that provides an entry point to the Oxford + Nanopore basecalling algorithms. It can be run from the command line on + Windows and multiple Linux platforms. A selection of configuration files + allow basecalling DNA libraries made with our current range of sequencing + kits and Flow Cells.""" + + homepage = "https://nanoporetech.com" + url = "https://mirror.oxfordnanoportal.com/software/analysis/ont_albacore-1.1.0-cp35-cp35m-manylinux1_x86_64.whl" + + version('1.1.0', 'fab4502ea1bad99d813aa2629e03e83d', expand=False) + extends('python') + + depends_on('python@3.5.0:3.5.999', type=('build', 'run')) + depends_on('py-setuptools', type=('build')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-dateutil', type=('build', 'run')) + depends_on('py-h5py', type=('build', 'run')) + depends_on('py-ont-fast5-api', type=('build', 'run')) + depends_on('py-pip', type=('build')) + + def install(self, spec, prefix): + pip = which('pip') + pip('install', self.stage.archive_file, '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-cutadapt/package.py b/var/spack/repos/builtin/packages/py-cutadapt/package.py new file mode 100644 index 00000000000..30c6c4332fa --- /dev/null +++ b/var/spack/repos/builtin/packages/py-cutadapt/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyCutadapt(PythonPackage): + """Cutadapt finds and removes adapter sequences, primers, poly-A tails and + other types of unwanted sequence from your high-throughput sequencing + reads.""" + + homepage = "https://cutadapt.readthedocs.io" + url = "https://pypi.io/packages/source/c/cutadapt/cutadapt-1.13.tar.gz" + + version('1.13', '2d2d14e0c20ad53d7d84b57bc3e63b4c') + + depends_on('python@2.6:', type=('build', 'run')) + depends_on('py-setuptools', type=('build')) + depends_on('py-xopen@0.1.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py b/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py new file mode 100644 index 00000000000..d6aea1f5ece --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyOntFast5Api(PythonPackage): + """This project provides classes and utility functions for working with + read fast5 files. It provides an abstraction layer between the underlying + h5py library and the various concepts central to read fast5 files, such as + "reads", "analyses", "analysis summaries", and "analysis datasets". + Ideally all interaction with a read fast5 file should be possible via this + API, without having to directly invoke the h5py library.""" + + homepage = "https://github.com/nanoporetech/ont_fast5_api" + url = "https://pypi.io/packages/source/o/ont-fast5-api/ont-fast5-api-0.3.2.tar.gz" + + version('0.3.2', '2ccfdbcd55239ffae712bb6e70ebfe8c') + + depends_on('py-setuptools', type='build') + depends_on('py-h5py', type=('build', 'run')) + depends_on('py-numpy@1.8.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-xopen/package.py b/var/spack/repos/builtin/packages/py-xopen/package.py new file mode 100644 index 00000000000..0137bc476f4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-xopen/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyXopen(PythonPackage): + """This small Python module provides a xopen function that works like the + built-in open function, but can also deal with compressed files. Supported + compression formats are gzip, bzip2 and xz. They are automatically + recognized by their file extensions .gz, .bz2 or .xz.""" + + homepage = "https://github.com/marcelm/xopen" + url = "https://pypi.io/packages/source/x/xopen/xopen-0.1.1.tar.gz" + + version('0.1.1', '4e0e955546ee6bee4ea736b54623a671') + + depends_on('py-setuptools', type='build') + depends_on('python@2.6:', type=('build', 'run')) From f147c9f5f0956a8c7144c2acf4ea919b9b23400f Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 12 May 2017 13:36:11 -0600 Subject: [PATCH 0898/2394] espressopp: always depends on py-numpy (#4207) Ref espressopp/espressopp#161 --- var/spack/repos/builtin/packages/espressopp/package.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/espressopp/package.py b/var/spack/repos/builtin/packages/espressopp/package.py index 7878ed3fc65..61aad512dc2 100644 --- a/var/spack/repos/builtin/packages/espressopp/package.py +++ b/var/spack/repos/builtin/packages/espressopp/package.py @@ -54,8 +54,7 @@ class Espressopp(CMakePackage): depends_on("fftw") depends_on("py-sphinx", when="+ug", type='build') depends_on("py-sphinx", when="+pdf", type='build') - depends_on('py-numpy', when="+ug", type='build') - depends_on('py-numpy', when="+pdf", type='build') + depends_on('py-numpy', type=('build', 'run')) depends_on('py-matplotlib', when="+ug", type='build') depends_on('py-matplotlib', when="+pdf", type='build') depends_on("texlive", when="+pdf", type='build') From 1cb98167a2ca0f7153d4ceca2e17c2b49d5992cc Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Sun, 14 May 2017 22:37:50 +1000 Subject: [PATCH 0899/2394] ncurses: build "normal" libs, not just "wide-char" libs, for ncurses@6: (#4246) --- var/spack/repos/builtin/packages/ncurses/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 0d305167ea3..bf3c3d596b0 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -62,7 +62,8 @@ def configure(self, spec, prefix): '--with-pkg-config-libdir={0}/lib/pkgconfig'.format(self.prefix) ] - nwide_opts = ['--without-manpages', + nwide_opts = ['--disable-widec', + '--without-manpages', '--without-tests'] wide_opts = ['--enable-widec'] From 447d6f660294272dde1fd46fa8d9dac7e6276edb Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Sun, 14 May 2017 22:39:50 +1000 Subject: [PATCH 0900/2394] harfbuzz: add latest version (1.4.6) (#4245) --- var/spack/repos/builtin/packages/harfbuzz/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py index f8d5355f87e..0ae8e21e1b1 100644 --- a/var/spack/repos/builtin/packages/harfbuzz/package.py +++ b/var/spack/repos/builtin/packages/harfbuzz/package.py @@ -30,6 +30,7 @@ class Harfbuzz(AutotoolsPackage): homepage = "http://www.freedesktop.org/wiki/Software/HarfBuzz/" url = "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.37.tar.bz2" + version('1.4.6', '21a78b81cd20cbffdb04b59ac7edfb410e42141869f637ae1d6778e74928d293') version('0.9.37', 'bfe733250e34629a188d82e3b971bc1e') depends_on("pkg-config", type="build") From 1ab2077b87e1d1e96e2832b7273e7756480516c1 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Sun, 14 May 2017 22:41:00 +1000 Subject: [PATCH 0901/2394] mesa-glu: provides libGLU, the OpenGL utility library from SGI (#4244) --- .../builtin/packages/mesa-glu/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mesa-glu/package.py diff --git a/var/spack/repos/builtin/packages/mesa-glu/package.py b/var/spack/repos/builtin/packages/mesa-glu/package.py new file mode 100644 index 00000000000..02ce82e44ae --- /dev/null +++ b/var/spack/repos/builtin/packages/mesa-glu/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class MesaGlu(AutotoolsPackage): + """This package provides the Mesa OpenGL Utility library.""" + + homepage = "https://www.mesa3d.org" + url = "ftp://ftp.freedesktop.org/pub/mesa/glu/glu-9.0.0.tar.gz" + + version('9.0.0', 'bbc57d4fe3bd3fb095bdbef6fcb977c4') + + depends_on('mesa') From 7864fbfcd32cafc9307a63aad0eb8c628d8e3696 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 15 May 2017 09:46:19 -0500 Subject: [PATCH 0902/2394] Remove need for autoreconf in glib package (#4240) --- .../glib/no-Werror=format-security.patch | 19 ++++++++----------- .../repos/builtin/packages/glib/package.py | 11 +++-------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/var/spack/repos/builtin/packages/glib/no-Werror=format-security.patch b/var/spack/repos/builtin/packages/glib/no-Werror=format-security.patch index cfcfe424bef..3e70212b973 100644 --- a/var/spack/repos/builtin/packages/glib/no-Werror=format-security.patch +++ b/var/spack/repos/builtin/packages/glib/no-Werror=format-security.patch @@ -1,16 +1,13 @@ ---- a/configure.ac 2016-08-16 11:57:34.000000000 -0400 -+++ b/configure.ac 2016-08-16 11:57:36.000000000 -0400 -@@ -3357,11 +3357,11 @@ - enable_compile_warnings=yes) - AS_IF([test "x$enable_compile_warnings" = xyes], [ - CC_CHECK_FLAGS_APPEND([GLIB_WARN_CFLAGS], [CFLAGS], [\ +--- a/configure 2017-05-12 16:03:01.000000000 -0500 ++++ b/configure 2017-05-12 16:01:58.000000000 -0500 +@@ -29273,8 +29273,8 @@ + for flag in \ -Wall -Wstrict-prototypes -Werror=declaration-after-statement \ -Werror=missing-prototypes -Werror=implicit-function-declaration \ - -Werror=pointer-arith -Werror=init-self -Werror=format-security \ -- -Werror=format=2 -Werror=missing-include-dirs]) +- -Werror=format=2 -Werror=missing-include-dirs; do + -Werror=pointer-arith -Werror=init-self \ -+ -Werror=missing-include-dirs]) - ]) - AC_SUBST(GLIB_WARN_CFLAGS) ++ -Werror=missing-include-dirs; do - # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports flag $flag in envvar CFLAGS" >&5 + $as_echo_n "checking if $CC supports flag $flag in envvar CFLAGS... " >&6; } diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index 91343043669..6814d9270b8 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -32,18 +32,15 @@ class Glib(AutotoolsPackage): threads, dynamic loading and an object system.""" homepage = "https://developer.gnome.org/glib/" - url = "http://ftp.gnome.org/pub/gnome/sources/glib/2.42/glib-2.42.1.tar.xz" + url = "https://ftp.gnome.org/pub/gnome/sources/glib/2.53/glib-2.53.1.tar.xz" + version('2.53.1', '3362ef4da713f834ea26904caf3a75f5') version('2.49.7', '397ead3fcf325cb921d54e2c9e7dfd7a') version('2.49.4', 'e2c87c03017b0cd02c4c73274b92b148') version('2.48.1', '67bd3b75c9f6d5587b457dc01cdcd5bb') version('2.42.1', '89c4119e50e767d3532158605ee9121a') - depends_on('autoconf', type='build') - depends_on('automake', type='build') - depends_on('libtool', type='build') - depends_on('m4', type='build') - depends_on('pkg-config+internal_glib', type='build') + depends_on('pkg-config@0.16:+internal_glib', type='build') depends_on('libffi') depends_on('zlib') depends_on('gettext') @@ -55,8 +52,6 @@ class Glib(AutotoolsPackage): # around a legitimate usage. patch('no-Werror=format-security.patch') - force_autoreconf = True - def url_for_version(self, version): """Handle glib's version-based custom URLs.""" url = 'http://ftp.gnome.org/pub/gnome/sources/glib' From 6a328892d2c07505923a51c6a50c11ad639a9182 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 15 May 2017 12:47:03 -0500 Subject: [PATCH 0903/2394] Add latest version of util-linux (#4252) --- var/spack/repos/builtin/packages/util-linux/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/util-linux/package.py b/var/spack/repos/builtin/packages/util-linux/package.py index 2fc413a98e2..7ca694c5da5 100644 --- a/var/spack/repos/builtin/packages/util-linux/package.py +++ b/var/spack/repos/builtin/packages/util-linux/package.py @@ -29,10 +29,11 @@ class UtilLinux(AutotoolsPackage): """Util-linux is a suite of essential utilities for any Linux system.""" homepage = "http://freecode.com/projects/util-linux" - url = "https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.1.tar.gz" + url = "https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.2.tar.gz" list_url = "https://www.kernel.org/pub/linux/utils/util-linux" list_depth = 1 + version('2.29.2', '24e0c67aac6f5c2535208866a42aeea2') version('2.29.1', 'c7d5c111ef6bc5df65659e0b523ac9d9') version('2.25', 'f6d7fc6952ec69c4dc62c8d7c59c1d57') From 9f6c166f2fe5f9318da6a423666b9d857a47fa86 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 15 May 2017 14:17:28 -0500 Subject: [PATCH 0904/2394] Add missing dependency to glib package (#4253) --- var/spack/repos/builtin/packages/glib/package.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index 6814d9270b8..83099fa1507 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -40,11 +40,14 @@ class Glib(AutotoolsPackage): version('2.48.1', '67bd3b75c9f6d5587b457dc01cdcd5bb') version('2.42.1', '89c4119e50e767d3532158605ee9121a') + variant('libmount', default=False, description='Build with libmount support') + depends_on('pkg-config@0.16:+internal_glib', type='build') depends_on('libffi') depends_on('zlib') depends_on('gettext') depends_on('pcre+utf', when='@2.48:') + depends_on('util-linux', when='+libmount') # The following patch is needed for gcc-6.1 patch('g_date_strftime.patch', when='@2.42.1') @@ -56,3 +59,14 @@ def url_for_version(self, version): """Handle glib's version-based custom URLs.""" url = 'http://ftp.gnome.org/pub/gnome/sources/glib' return url + '/%s/glib-%s.tar.xz' % (version.up_to(2), version) + + def configure_args(self): + spec = self.spec + args = [] + + if '+libmount' in spec: + args.append('--enable-libmount') + else: + args.append('--disable-libmount') + + return args From fbc9d5a634751cc65cd3f7b4941db15b2e8deb5b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 15 May 2017 15:57:21 -0500 Subject: [PATCH 0905/2394] albacore requires setuptools as build and run requirement (#4255) --- .../repos/builtin/packages/ont-albacore/package.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/ont-albacore/package.py b/var/spack/repos/builtin/packages/ont-albacore/package.py index a9b6ea0661e..c4ec25d62a0 100644 --- a/var/spack/repos/builtin/packages/ont-albacore/package.py +++ b/var/spack/repos/builtin/packages/ont-albacore/package.py @@ -38,13 +38,13 @@ class OntAlbacore(Package): version('1.1.0', 'fab4502ea1bad99d813aa2629e03e83d', expand=False) extends('python') - depends_on('python@3.5.0:3.5.999', type=('build', 'run')) - depends_on('py-setuptools', type=('build')) - depends_on('py-numpy', type=('build', 'run')) - depends_on('py-dateutil', type=('build', 'run')) - depends_on('py-h5py', type=('build', 'run')) - depends_on('py-ont-fast5-api', type=('build', 'run')) - depends_on('py-pip', type=('build')) + depends_on('python@3.5.0:3.5.999', type=('build', 'run')) + depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-dateutil', type=('build', 'run')) + depends_on('py-h5py', type=('build', 'run')) + depends_on('py-ont-fast5-api', type=('build', 'run')) + depends_on('py-pip', type=('build')) def install(self, spec, prefix): pip = which('pip') From 9a4b86cd49505cc4a1181d0aaae0d44204a03965 Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Tue, 16 May 2017 10:42:37 -0400 Subject: [PATCH 0906/2394] added meme package (#4257) * added albacore package as well as dependency py-ont-fast5-api * added py-cutadapt and dependency py-xopen * made more changes to albacore and cutadapt as well as dependencies * made changes again per @adamjstewart * fixed by python n00b errors i think * fixed? * tw=79 * made changes to py-ont-fast5-api ont-albacore * removed bad characters * albacore requires setuptools as build and run dependency * added vmd * added back albacore * removed vmd package * added meme software * libz is only needed as link depedency for meme * added libxml2 libxslt libgcrypt as link dependencies --- .../repos/builtin/packages/meme/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/meme/package.py diff --git a/var/spack/repos/builtin/packages/meme/package.py b/var/spack/repos/builtin/packages/meme/package.py new file mode 100644 index 00000000000..ca7554c565e --- /dev/null +++ b/var/spack/repos/builtin/packages/meme/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Meme(AutotoolsPackage): + """The MEME Suite allows the biologist to discover novel motifs in + collections of unaligned nucleotide or protein sequences, and to perform a + wide variety of other motif-based analyses.""" + + homepage = "http://meme-suite.org" + url = "http://meme-suite.org/meme-software/4.11.4/meme_4.11.4.tar.gz" + + version('4.11.4', '371f513f82fa0888205748e333003897') + + depends_on('zlib', type=('link')) + depends_on('libxml2', type=('link')) + depends_on('libxslt', type=('link')) + depends_on('libgcrypt', type=('link')) + depends_on('perl', type=('build', 'run')) + depends_on('python@2.7:', type=('build', 'run')) From de958df3b8aa977350233877309c10c48c9cb3ed Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 16 May 2017 11:42:00 -0500 Subject: [PATCH 0907/2394] Update checksum for latest version of cudnn (#4254) --- var/spack/repos/builtin/packages/cudnn/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cudnn/package.py b/var/spack/repos/builtin/packages/cudnn/package.py index b780bc0d30e..4340591c16b 100644 --- a/var/spack/repos/builtin/packages/cudnn/package.py +++ b/var/spack/repos/builtin/packages/cudnn/package.py @@ -32,7 +32,7 @@ class Cudnn(Package): homepage = "https://developer.nvidia.com/cudnn" - version('6.0', '4aacb7acb93c5e4dfa9db814df496219', + version('6.0', 'a08ca487f88774e39eb6b0ef6507451d', url='http://developer.download.nvidia.com/compute/redist/cudnn/v6.0/cudnn-8.0-linux-x64-v6.0.tgz') version('5.1', '406f4ac7f7ee8aa9e41304c143461a69', url='http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz') From b630c06773bb4ba960f8791b756c17a39d049501 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 16 May 2017 16:24:35 -0500 Subject: [PATCH 0908/2394] Sphinx no longer ignores first argument (#4243) * Sphinx no longer ignores first argument * Duplicate first argument for maximum compatibility --- lib/spack/docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 48f1fda47e5..d1248485427 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -103,7 +103,7 @@ # Without this, the API Docs will never actually update # apidoc_args = [ - 'sphinx_apidoc', # The first arugment is ignored + '--force', # Older versions of Sphinx ignore the first argument '--force', # Overwrite existing files '--no-toc', # Don't create a table of contents file '--output-dir=.', # Directory to place all output From cafc3cc3ca5c457d6dcf4fafcb0c94ddedead0e7 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 17 May 2017 11:36:02 -0500 Subject: [PATCH 0909/2394] Sphinx no longer supports Python 2.6 (#4266) * Sphinx no longer supports Python 2.6 * Update vendored sphinxcontrib.programoutput from 0.9.0 to 0.10.0 * Documentation cannot be built in parallel * Let Travis install programoutput for us * Remove vendored sphinxcontrib-programoutput Recent updates to the sphinx package prevent the vendored version from being found in sys.path. We don't vendor sphinx, so it doesn't make sense to vendor sphinxcontrib-programoutput either. --- .travis.yml | 3 +- lib/spack/docs/Makefile | 3 +- lib/spack/docs/conf.py | 1 - lib/spack/docs/contribution_guide.rst | 3 +- lib/spack/docs/exts/sphinxcontrib/LICENSE | 25 -- lib/spack/docs/exts/sphinxcontrib/__init__.py | 9 - .../docs/exts/sphinxcontrib/programoutput.py | 263 ------------------ share/spack/qa/run-doc-tests | 2 +- 8 files changed, 6 insertions(+), 303 deletions(-) delete mode 100644 lib/spack/docs/exts/sphinxcontrib/LICENSE delete mode 100644 lib/spack/docs/exts/sphinxcontrib/__init__.py delete mode 100644 lib/spack/docs/exts/sphinxcontrib/programoutput.py diff --git a/.travis.yml b/.travis.yml index 2bf21d0e57a..c4bfe176409 100644 --- a/.travis.yml +++ b/.travis.yml @@ -86,7 +86,8 @@ install: - pip install --upgrade setuptools - pip install --upgrade codecov - pip install --upgrade flake8 - - pip install --upgrade sphinx + - if [[ "$TEST_SUITE" == "doc" ]]; then pip install --upgrade sphinx; fi + - if [[ "$TEST_SUITE" == "doc" ]]; then pip install --upgrade sphinxcontrib-programoutput; fi before_script: # Need this for the git tests to succeed. diff --git a/lib/spack/docs/Makefile b/lib/spack/docs/Makefile index 1054d91a50e..35037940211 100644 --- a/lib/spack/docs/Makefile +++ b/lib/spack/docs/Makefile @@ -3,8 +3,7 @@ # You can set these variables from the command line. SPHINXOPTS = -E -JOBS ?= $(shell python -c 'import multiprocessing; print multiprocessing.cpu_count()') -SPHINXBUILD = sphinx-build -j $(JOBS) +SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index d1248485427..ee2b314aa34 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -49,7 +49,6 @@ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath('exts')) sys.path.insert(0, os.path.abspath('../external')) if sys.version_info[0] < 3: sys.path.insert(0, os.path.abspath('../external/yaml/lib')) diff --git a/lib/spack/docs/contribution_guide.rst b/lib/spack/docs/contribution_guide.rst index a3b31971816..c0e07f7340d 100644 --- a/lib/spack/docs/contribution_guide.rst +++ b/lib/spack/docs/contribution_guide.rst @@ -189,6 +189,7 @@ Building the documentation requires several dependencies, all of which can be installed with Spack: * sphinx +* sphinxcontrib-programoutput * graphviz * git * mercurial @@ -227,7 +228,7 @@ your PR is accepted. There is also a ``run-doc-tests`` script in the Quality Assurance directory. The only difference between running this script and running ``make`` by hand is that the script will exit immediately if it encounters an error or warning. - This is necessary for Travis CI. If you made a lot of documentation tests, it + This is necessary for Travis CI. If you made a lot of documentation changes, it is much quicker to run ``make`` by hand so that you can see all of the warnings at once. diff --git a/lib/spack/docs/exts/sphinxcontrib/LICENSE b/lib/spack/docs/exts/sphinxcontrib/LICENSE deleted file mode 100644 index 43b87a59928..00000000000 --- a/lib/spack/docs/exts/sphinxcontrib/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2010, 2011, 2012 Sebastian Wiesner -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/lib/spack/docs/exts/sphinxcontrib/__init__.py b/lib/spack/docs/exts/sphinxcontrib/__init__.py deleted file mode 100644 index 591cf0e16ec..00000000000 --- a/lib/spack/docs/exts/sphinxcontrib/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# -*- coding: utf-8 -*- -""" - sphinxcontrib - ~~~~~~~~~~~~~ - - Contains 3rd party Sphinx extensions. -""" - -__import__('pkg_resources').declare_namespace(__name__) diff --git a/lib/spack/docs/exts/sphinxcontrib/programoutput.py b/lib/spack/docs/exts/sphinxcontrib/programoutput.py deleted file mode 100644 index 3f6a4f1595f..00000000000 --- a/lib/spack/docs/exts/sphinxcontrib/programoutput.py +++ /dev/null @@ -1,263 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2010, 2011, 2012, Sebastian Wiesner -# All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: - -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -""" - sphinxcontrib.programoutput - =========================== - - This extension provides a directive to include the output of commands as - literal block while building the docs. - - .. moduleauthor:: Sebastian Wiesner -""" - -from __future__ import (print_function, division, unicode_literals, - absolute_import) - -import sys -import os -import shlex -from subprocess import Popen, PIPE, STDOUT -from collections import defaultdict, namedtuple - -from docutils import nodes -from docutils.parsers import rst -from docutils.parsers.rst.directives import flag, unchanged, nonnegative_int - - -__version__ = '0.9' - - -class program_output(nodes.Element): - pass - - -def _slice(value): - parts = [int(v.strip()) for v in value.split(',')] - if len(parts) > 2: - raise ValueError('too many slice parts') - return tuple((parts + [None] * 2)[:2]) - - -class ProgramOutputDirective(rst.Directive): - has_content = False - final_argument_whitespace = True - required_arguments = 1 - - option_spec = dict(shell=flag, prompt=flag, nostderr=flag, - ellipsis=_slice, extraargs=unchanged, - returncode=nonnegative_int, cwd=unchanged) - - def run(self): - env = self.state.document.settings.env - - node = program_output() - node.line = self.lineno - node['command'] = self.arguments[0] - - if self.name == 'command-output': - node['show_prompt'] = True - else: - node['show_prompt'] = 'prompt' in self.options - - node['hide_standard_error'] = 'nostderr' in self.options - node['extraargs'] = self.options.get('extraargs', '') - _, cwd = env.relfn2path(self.options.get('cwd', '/')) - node['working_directory'] = cwd - node['use_shell'] = 'shell' in self.options - node['returncode'] = self.options.get('returncode', 0) - if 'ellipsis' in self.options: - node['strip_lines'] = self.options['ellipsis'] - return [node] - - -_Command = namedtuple( - 'Command', 'command shell hide_standard_error working_directory') - - -class Command(_Command): - """ - A command to be executed. - """ - - def __new__(cls, command, shell=False, hide_standard_error=False, - working_directory='/'): - if isinstance(command, list): - command = tuple(command) - # `chdir()` resolves symlinks, so we need to resolve them too for - # caching to make sure that different symlinks to the same directory - # don't result in different cache keys. Also normalize paths to make - # sure that identical paths are also equal as strings. - working_directory = os.path.normpath(os.path.realpath( - working_directory)) - return _Command.__new__(cls, command, shell, hide_standard_error, - working_directory) - - @classmethod - def from_program_output_node(cls, node): - """ - Create a command from a :class:`program_output` node. - """ - extraargs = node.get('extraargs', '') - command = (node['command'] + ' ' + extraargs).strip() - return cls(command, node['use_shell'], - node['hide_standard_error'], node['working_directory']) - - def execute(self): - """ - Execute this command. - - Return the :class:`~subprocess.Popen` object representing the running - command. - """ - if self.shell: - if sys.version_info[0] < 3 and isinstance(self.command, unicode): - command = self.command.encode(sys.getfilesystemencoding()) - else: - command = self.command - else: - if sys.version_info[0] < 3 and isinstance(self.command, unicode): - command = shlex.split(self.command.encode( - sys.getfilesystemencoding())) - elif isinstance(self.command, str): - command = shlex.split(self.command) - else: - command = self.command - return Popen(command, shell=self.shell, stdout=PIPE, - stderr=PIPE if self.hide_standard_error else STDOUT, - cwd=self.working_directory) - - def get_output(self): - """ - Get the output of this command. - - Return a tuple ``(returncode, output)``. ``returncode`` is the - integral return code of the process, ``output`` is the output as - unicode string, with final trailing spaces and new lines stripped. - """ - process = self.execute() - output = process.communicate()[0].decode( - sys.getfilesystemencoding(), 'replace').rstrip() - return process.returncode, output - - def __str__(self): - if isinstance(self.command, tuple): - return repr(list(self.command)) - return repr(self.command) - - -class ProgramOutputCache(defaultdict): - """ - Execute command and cache their output. - - This class is a mapping. Its keys are :class:`Command` objects represeting - command invocations. Its values are tuples of the form ``(returncode, - output)``, where ``returncode`` is the integral return code of the command, - and ``output`` is the output as unicode string. - - The first time, a key is retrieved from this object, the command is - invoked, and its result is cached. Subsequent access to the same key - returns the cached value. - """ - - def __missing__(self, command): - """ - Called, if a command was not found in the cache. - - ``command`` is an instance of :class:`Command`. - """ - result = command.get_output() - self[command] = result - return result - - -def run_programs(app, doctree): - """ - Execute all programs represented by ``program_output`` nodes in - ``doctree``. Each ``program_output`` node in ``doctree`` is then - replaced with a node, that represents the output of this program. - - The program output is retrieved from the cache in - ``app.env.programoutput_cache``. - """ - if app.config.programoutput_use_ansi: - # enable ANSI support, if requested by config - from sphinxcontrib.ansi import ansi_literal_block - node_class = ansi_literal_block - else: - node_class = nodes.literal_block - - cache = app.env.programoutput_cache - - for node in doctree.traverse(program_output): - command = Command.from_program_output_node(node) - try: - returncode, output = cache[command] - except EnvironmentError as error: - error_message = 'Command {0} failed: {1}'.format(command, error) - error_node = doctree.reporter.error(error_message, base_node=node) - node.replace_self(error_node) - else: - if returncode != node['returncode']: - app.warn('Unexpected return code {0} from command {1}'.format( - returncode, command)) - - # replace lines with ..., if ellipsis is specified - if 'strip_lines' in node: - lines = output.splitlines() - start, stop = node['strip_lines'] - lines[start:stop] = ['...'] - output = '\n'.join(lines) - - if node['show_prompt']: - tmpl = app.config.programoutput_prompt_template - output = tmpl.format(command=node['command'], output=output, - returncode=returncode) - - new_node = node_class(output, output) - new_node['language'] = 'text' - node.replace_self(new_node) - - -def init_cache(app): - """ - Initialize the cache for program output at - ``app.env.programoutput_cache``, if not already present (e.g. being - loaded from a pickled environment). - - The cache is of type :class:`ProgramOutputCache`. - """ - if not hasattr(app.env, 'programoutput_cache'): - app.env.programoutput_cache = ProgramOutputCache() - - -def setup(app): - app.add_config_value('programoutput_use_ansi', False, 'env') - app.add_config_value('programoutput_prompt_template', - '$ {command}\n{output}', 'env') - app.add_directive('program-output', ProgramOutputDirective) - app.add_directive('command-output', ProgramOutputDirective) - app.connect(str('builder-inited'), init_cache) - app.connect(str('doctree-read'), run_programs) diff --git a/share/spack/qa/run-doc-tests b/share/spack/qa/run-doc-tests index b9a05aa3c8a..c43779fcaff 100755 --- a/share/spack/qa/run-doc-tests +++ b/share/spack/qa/run-doc-tests @@ -17,4 +17,4 @@ cd "$SPACK_ROOT/lib/spack/docs" # Treat warnings as fatal errors make clean --silent -make SPHINXOPTS=-W JOBS=1 +make SPHINXOPTS=-W From 3e8662aaa750c20d3a96f1b27dc9bc768ec8e997 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 17 May 2017 09:37:06 -0700 Subject: [PATCH 0910/2394] fix bug with executables setting their own environment. (#4237) --- lib/spack/spack/util/executable.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 44865e7bdb0..c7e445971b8 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -130,12 +130,13 @@ def __call__(self, *args, **kwargs): ignore_errors = kwargs.pop("ignore_errors", ()) # environment - env = kwargs.get('env', None) - if env is None: + env_arg = kwargs.get('env', None) + if env_arg is None: env = os.environ.copy() env.update(self.default_env) else: - env = self.default_env.copy().update(env) + env = self.default_env.copy() + env.update(env_arg) # TODO: This is deprecated. Remove in a future version. return_output = kwargs.pop("return_output", False) From 96560cc11faa10fd41b1cf77296a412303de1b1f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 17 May 2017 18:07:10 -0500 Subject: [PATCH 0911/2394] Add latest version of Sphinx (#4264) * Add latest version of Sphinx * Flake8 fix --- .../builtin/packages/py-alabaster/package.py | 10 ++-- .../builtin/packages/py-babel/package.py | 8 ++-- .../builtin/packages/py-imagesize/package.py | 9 ++-- .../builtin/packages/py-jinja2/package.py | 5 +- .../builtin/packages/py-markupsafe/package.py | 5 +- .../builtin/packages/py-pygments/package.py | 2 +- .../builtin/packages/py-pyparsing/package.py | 2 +- .../repos/builtin/packages/py-pytz/package.py | 6 ++- .../builtin/packages/py-requests/package.py | 30 ++++++++---- .../builtin/packages/py-setuptools/package.py | 10 +--- .../packages/py-snowballstemmer/package.py | 6 ++- .../packages/py-sphinx-rtd-theme/package.py | 10 ++-- .../builtin/packages/py-sphinx/package.py | 45 +++++++++++++----- .../py-sphinxcontrib-websupport/package.py | 47 +++++++++++++++++++ .../builtin/packages/py-typing/package.py | 40 ++++++++++++++++ 15 files changed, 184 insertions(+), 51 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py create mode 100644 var/spack/repos/builtin/packages/py-typing/package.py diff --git a/var/spack/repos/builtin/packages/py-alabaster/package.py b/var/spack/repos/builtin/packages/py-alabaster/package.py index f2402c9bc63..ae082de17f6 100644 --- a/var/spack/repos/builtin/packages/py-alabaster/package.py +++ b/var/spack/repos/builtin/packages/py-alabaster/package.py @@ -29,10 +29,12 @@ class PyAlabaster(PythonPackage): """Alabaster is a visually (c)lean, responsive, configurable theme for the Sphinx documentation system.""" - homepage = "https://pypi.python.org/pypi/alabaster" - url = "https://pypi.python.org/packages/source/a/alabaster/alabaster-0.7.9.tar.gz" + homepage = "https://alabaster.readthedocs.io/" + url = "https://pypi.io/packages/source/a/alabaster/alabaster-0.7.10.tar.gz" - version('0.7.9', 'b29646a8bbe7aa52830375b7d17b5d7a', - url="https://pypi.python.org/packages/71/c3/70da7d8ac18a4f4c502887bd2549e05745fa403e2cd9d06a8a9910a762bc/alabaster-0.7.9.tar.gz") + import_modules = ['alabaster'] + + version('0.7.10', '7934dccf38801faa105f6e7b4784f493') + version('0.7.9', 'b29646a8bbe7aa52830375b7d17b5d7a') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-babel/package.py b/var/spack/repos/builtin/packages/py-babel/package.py index 844ceab34ea..d9ab3bc494a 100644 --- a/var/spack/repos/builtin/packages/py-babel/package.py +++ b/var/spack/repos/builtin/packages/py-babel/package.py @@ -31,10 +31,12 @@ class PyBabel(PythonPackage): emphasis on web-based applications.""" homepage = "http://babel.pocoo.org/en/latest/" - url = "https://pypi.python.org/packages/source/B/Babel/Babel-2.3.4.tar.gz" + url = "https://pypi.io/packages/source/B/Babel/Babel-2.4.0.tar.gz" - version('2.3.4', 'afa20bc55b0e991833030129ad498f35', - url="https://pypi.python.org/packages/6e/96/ba2a2462ed25ca0e651fb7b66e7080f5315f91425a07ea5b34d7c870c114/Babel-2.3.4.tar.gz") + import_modules = ['babel', 'babel.localtime', 'babel.messages'] + + version('2.4.0', '90e7a0add19b2036a9b415630a0d9388') + version('2.3.4', 'afa20bc55b0e991833030129ad498f35') depends_on('py-setuptools', type='build') depends_on('py-pytz', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-imagesize/package.py b/var/spack/repos/builtin/packages/py-imagesize/package.py index a2d08f65027..44491f79f09 100644 --- a/var/spack/repos/builtin/packages/py-imagesize/package.py +++ b/var/spack/repos/builtin/packages/py-imagesize/package.py @@ -29,10 +29,11 @@ class PyImagesize(PythonPackage): """Parses image file headers and returns image size. Supports PNG, JPEG, JPEG2000, and GIF image file formats.""" - homepage = "https://pypi.python.org/pypi/imagesize" - url = "https://pypi.python.org/packages/source/i/imagesize/imagesize-0.7.1.tar.gz" + homepage = "https://github.com/shibukawa/imagesize_py" + url = "https://pypi.io/packages/source/i/imagesize/imagesize-0.7.1.tar.gz" - version('0.7.1', '976148283286a6ba5f69b0f81aef8052', - url="https://pypi.python.org/packages/53/72/6c6f1e787d9cab2cc733cf042f125abec07209a58308831c9f292504e826/imagesize-0.7.1.tar.gz") + import_modules = ['imagesize'] + + version('0.7.1', '976148283286a6ba5f69b0f81aef8052') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-jinja2/package.py b/var/spack/repos/builtin/packages/py-jinja2/package.py index eafe8c252b5..36439d1d36a 100644 --- a/var/spack/repos/builtin/packages/py-jinja2/package.py +++ b/var/spack/repos/builtin/packages/py-jinja2/package.py @@ -31,8 +31,11 @@ class PyJinja2(PythonPackage): and an optional sandboxed environment.""" homepage = "http://jinja.pocoo.org/" - url = "https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.8.tar.gz" + url = "https://pypi.io/packages/source/J/Jinja2/Jinja2-2.9.6.tar.gz" + import_modules = ['jinja2'] + + version('2.9.6', '6411537324b4dba0956aaa8109f3c77b') version('2.8', 'edb51693fe22c53cee5403775c71a99e') version('2.7.3', 'b9dffd2f3b43d673802fe857c8445b1a') version('2.7.2', 'df1581455564e97010e38bc792012aa5') diff --git a/var/spack/repos/builtin/packages/py-markupsafe/package.py b/var/spack/repos/builtin/packages/py-markupsafe/package.py index a31e3972de8..6c8af74a9f0 100644 --- a/var/spack/repos/builtin/packages/py-markupsafe/package.py +++ b/var/spack/repos/builtin/packages/py-markupsafe/package.py @@ -32,8 +32,11 @@ class PyMarkupsafe(PythonPackage): Mako templating engine, the Pylons web framework and many more.""" homepage = "http://www.pocoo.org/projects/markupsafe/" - url = "https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.23.tar.gz" + url = "https://pypi.io/packages/source/M/MarkupSafe/MarkupSafe-1.0.tar.gz" + import_modules = ['markupsafe'] + + version('1.0', '2fcedc9284d50e577b5192e8e3578355') version('0.23', 'f5ab3deee4c37cd6a922fb81e730da6e') version('0.22', 'cb3ec29fd5361add24cfd0c6e2953b3e') version('0.21', 'fde838d9337fa51744283f46a1db2e74') diff --git a/var/spack/repos/builtin/packages/py-pygments/package.py b/var/spack/repos/builtin/packages/py-pygments/package.py index 0312a4f9aab..771245cc109 100644 --- a/var/spack/repos/builtin/packages/py-pygments/package.py +++ b/var/spack/repos/builtin/packages/py-pygments/package.py @@ -28,7 +28,7 @@ class PyPygments(PythonPackage): """Pygments is a syntax highlighting package written in Python.""" - homepage = "https://pypi.python.org/pypi/pygments" + homepage = "http://pygments.org/" url = "https://pypi.io/packages/source/P/Pygments/Pygments-2.2.0.tar.gz" import_modules = [ diff --git a/var/spack/repos/builtin/packages/py-pyparsing/package.py b/var/spack/repos/builtin/packages/py-pyparsing/package.py index 1d0c5a3bf09..9baca31e917 100644 --- a/var/spack/repos/builtin/packages/py-pyparsing/package.py +++ b/var/spack/repos/builtin/packages/py-pyparsing/package.py @@ -27,7 +27,7 @@ class PyPyparsing(PythonPackage): """A Python Parsing Module.""" - homepage = "https://pypi.python.org/pypi/pyparsing" + homepage = "http://pyparsing.wikispaces.com/" url = "https://pypi.io/packages/source/p/pyparsing/pyparsing-2.2.0.tar.gz" import_modules = ['pyparsing'] diff --git a/var/spack/repos/builtin/packages/py-pytz/package.py b/var/spack/repos/builtin/packages/py-pytz/package.py index db97520fba9..6289651a290 100644 --- a/var/spack/repos/builtin/packages/py-pytz/package.py +++ b/var/spack/repos/builtin/packages/py-pytz/package.py @@ -28,9 +28,13 @@ class PyPytz(PythonPackage): """World timezone definitions, modern and historical.""" - homepage = "https://pypi.python.org/pypi/pytz" + homepage = "http://pythonhosted.org/pytz" url = "https://pypi.io/packages/source/p/pytz/pytz-2016.10.tar.gz" + import_modules = ['pytz'] + + version('2017.2', 'f89bde8a811c8a1a5bac17eaaa94383c', + url="https://pypi.io/packages/source/p/pytz/pytz-2017.2.zip") version('2016.10', 'cc9f16ba436efabdcef3c4d32ae4919c') version('2016.6.1', 'b6c28a3b968bc1d8badfb61b93874e03') version('2014.10', 'eb1cb941a20c5b751352c52486aa1dd7') diff --git a/var/spack/repos/builtin/packages/py-requests/package.py b/var/spack/repos/builtin/packages/py-requests/package.py index ca8c74d13a1..419883eefd3 100644 --- a/var/spack/repos/builtin/packages/py-requests/package.py +++ b/var/spack/repos/builtin/packages/py-requests/package.py @@ -29,17 +29,27 @@ class PyRequests(PythonPackage): """Python HTTP for Humans.""" homepage = "http://python-requests.org" - url = "https://pypi.io/packages/source/r/requests/requests-2.13.0.tar.gz" + url = "https://pypi.io/packages/source/r/requests/requests-2.14.2.tar.gz" + import_modules = [ + 'requests', 'requests.packages', 'requests.packages.chardet', + 'requests.packages.urllib3', 'requests.packages.idna', + 'requests.packages.chardet.cli', 'requests.packages.urllib3.util', + 'requests.packages.urllib3.packages', + 'requests.packages.urllib3.contrib', + 'requests.packages.urllib3.packages.ssl_match_hostname', + 'requests.packages.urllib3.packages.backports', + 'requests.packages.urllib3.contrib._securetransport' + ] + + version('2.14.2', '4c3c169ed67466088a2a6947784fe444') version('2.13.0', '921ec6b48f2ddafc8bb6160957baf444') version('2.11.1', 'ad5f9c47b5c5dfdb28363ad7546b0763') - depends_on('py-setuptools', type='build') - # from setup.py: - # test_requirements = ['pytest>=2.8.0', 'pytest-httpbin'==0.0.7, - # 'pytest-cov', 'pytest-mock'] - # needs #1279 and #2869 - # depends_on('py-pytest@2.8.7:', type=('build', 'run')) - # depends_on('py-pytest-cov@2.2.1:', type=('build', 'run')) - # depends_on('py-pytest-httpbin@0.2.0:', type=('build', 'run')) - # depends_on('py-pytest-mock@0.11.0:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + + # TODO: Add a 'test' deptype + # depends_on('py-pytest@2.8.0:', type='test') + # depends_on('py-pytest-cov', type='test') + # depends_on('py-pytest-httpbin@0.0.7', type='test') + # depends_on('py-pytest-mock', type='test') diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index c6bbfda35c5..e87349f918f 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -34,6 +34,8 @@ class PySetuptools(PythonPackage): import_modules = ['pkg_resources', 'setuptools', 'setuptools.command'] + version('35.0.2', 'c368b4970d3ad3eab5afe4ef4dbe2437', + url="https://pypi.io/packages/source/s/setuptools/setuptools-35.0.2.zip") version('34.4.1', '5f9b07aeaafd29eac2548fc0b89a4934', url="https://pypi.io/packages/source/s/setuptools/setuptools-34.4.1.zip") version('34.2.0', '41b630da4ea6cfa5894d9eb3142922be', @@ -55,11 +57,3 @@ class PySetuptools(PythonPackage): depends_on('py-packaging@16.8:', when='@34.0.0:', type=('build', 'run')) depends_on('py-six@1.6.0:', when='@34.0.0:', type=('build', 'run')) depends_on('py-appdirs@1.4.0:', when='@34.0.0:', type=('build', 'run')) - - # Tests require: - # TODO: Add a 'test' deptype - # FIXME: All of these depend on setuptools, creating a dependency loop - # FIXME: Is there any way around this problem? - # depends_on('py-pytest-flake8', type='test') - # depends_on('pytest@2.8:', type='test') - # depends_on('py-mock', when='^python@:3.2', type='test') diff --git a/var/spack/repos/builtin/packages/py-snowballstemmer/package.py b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py index cfeeeb26ce8..dc8bbbef086 100644 --- a/var/spack/repos/builtin/packages/py-snowballstemmer/package.py +++ b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py @@ -29,7 +29,9 @@ class PySnowballstemmer(PythonPackage): """This package provides 16 stemmer algorithms (15 + Poerter English stemmer) generated from Snowball algorithms.""" - homepage = "https://pypi.python.org/pypi/snowballstemmer" - url = "https://pypi.python.org/packages/source/s/snowballstemmer/snowballstemmer-1.2.1.tar.gz" + homepage = "https://github.com/shibukawa/snowball_py" + url = "https://pypi.io/packages/source/s/snowballstemmer/snowballstemmer-1.2.1.tar.gz" + + import_modules = ['snowballstemmer'] version('1.2.1', '643b019667a708a922172e33a99bf2fa') diff --git a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py index 4b9141d80ce..886b47e8148 100644 --- a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py @@ -28,10 +28,12 @@ class PySphinxRtdTheme(PythonPackage): """ReadTheDocs.org theme for Sphinx.""" - homepage = "https://pypi.python.org/pypi/sphinx_rtd_theme" - url = "https://pypi.python.org/packages/source/s/sphinx_rtd_theme/sphinx_rtd_theme-0.1.10a0.tar.gz" + homepage = "https://github.com/rtfd/sphinx_rtd_theme/" + url = "https://pypi.io/packages/source/s/sphinx_rtd_theme/sphinx_rtd_theme-0.1.10a0.tar.gz" - version('0.1.10a0', '83bd95cae55aa8b773a8cc3a41094282', - url="https://pypi.python.org/packages/da/6b/1b75f13d8aa3333f19c6cdf1f0bc9f52ea739cae464fbee050307c121857/sphinx_rtd_theme-0.1.10a0.tar.gz") + import_modules = ['sphinx_rtd_theme'] + + version('0.2.5b1', '0923473a43bd2527f32151f195f2a521') + version('0.1.10a0', '83bd95cae55aa8b773a8cc3a41094282') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py index 1f9696b3707..89b199dd81a 100644 --- a/var/spack/repos/builtin/packages/py-sphinx/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx/package.py @@ -28,24 +28,47 @@ class PySphinx(PythonPackage): """Sphinx Documentation Generator.""" homepage = "http://sphinx-doc.org" - url = "https://pypi.io/packages/source/S/Sphinx/Sphinx-1.5.5.tar.gz" + url = "https://pypi.io/packages/source/S/Sphinx/Sphinx-1.6.1.tar.gz" + import_modules = [ + 'sphinx', 'sphinx.testing', 'sphinx.ext', 'sphinx.pycode', + 'sphinx.search', 'sphinx.transforms', 'sphinx.builders', + 'sphinx.directives', 'sphinx.util', 'sphinx.environment', + 'sphinx.writers', 'sphinx.domains', 'sphinx.locale', + 'sphinx.ext.napoleon', 'sphinx.ext.autosummary', 'sphinx.pycode.pgen2', + 'sphinx.transforms.post_transforms', 'sphinx.util.stemmer', + 'sphinx.environment.collectors', 'sphinx.environment.adapters' + ] + + version('1.6.1', '26cb1cdca7aa4afc8c925d926b6268e7') version('1.5.5', 'f9581b3556df9722143c47290273bcf8') version('1.4.5', '5c2cd2dac45dfa6123d067e32a89e89a') version('1.3.1', '8786a194acf9673464c5455b11fd4332') extends('python', ignore='bin/(pybabel|pygmentize)') + # Sphinx requires at least Python 2.7 or 3.4 to run + depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) + # Most Python packages only require py-setuptools as a build dependency. # However, py-sphinx requires py-setuptools during runtime as well. - depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-setuptools', type=('build', 'run')) - depends_on('py-six@1.4:', type=('build', 'run')) - depends_on('py-jinja2@2.3:', type=('build', 'run')) - depends_on('py-pygments@2.0:', type=('build', 'run')) - depends_on('py-docutils@0.11:', type=('build', 'run')) - depends_on('py-snowballstemmer@1.1:', type=('build', 'run')) - depends_on('py-babel@1.3:', type=('build', 'run')) # not 2.0 - depends_on('py-alabaster@0.7:', type=('build', 'run')) - depends_on('py-imagesize', when='@1.4:', type=('build', 'run')) - depends_on('py-sphinx-rtd-theme@0.1:', type=('build', 'run')) # optional as of 1.4 + depends_on('py-six@1.5:', type=('build', 'run')) + depends_on('py-jinja2@2.3:', type=('build', 'run')) + depends_on('py-pygments@2.0:', type=('build', 'run')) + depends_on('py-docutils@0.11:', type=('build', 'run')) + depends_on('py-snowballstemmer@1.1:', type=('build', 'run')) + depends_on('py-babel@1.3:', type=('build', 'run')) # not 2.0 + depends_on('py-alabaster@0.7.0:0.7.999', type=('build', 'run')) + depends_on('py-imagesize', when='@1.4:', type=('build', 'run')) + depends_on('py-requests@2.0.0:', type=('build', 'run')) + depends_on('py-typing', type=('build', 'run')) + depends_on('py-sphinxcontrib-websupport', type=('build', 'run')) + depends_on('py-sphinx-rtd-theme@0.1:', type=('build', 'run')) # optional as of 1.4 + + # TODO: Add a 'test' deptype + # depends_on('py-pytest', type='test') + # depends_on('py-mock', type='test') + # depends_on('py-simplejson', type='test') + # depends_on('py-html5lib', type='test') diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py new file mode 100644 index 00000000000..65e751bd583 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySphinxcontribWebsupport(PythonPackage): + """sphinxcontrib-webuspport provides a Python API to easily integrate + Sphinx documentation into your Web application.""" + + homepage = "http://sphinx-doc.org/" + url = "https://pypi.io/packages/source/s/sphinxcontrib-websupport/sphinxcontrib-websupport-1.0.1.tar.gz" + + # FIXME: These import tests don't work for some reason + # import_modules = [ + # 'sphinxcontrib', 'sphinxcontrib.websupport', + # 'sphinxcontrib.websupport.storage', 'sphinxcontrib.websupport.search' + # ] + + version('1.0.1', '84df26463b1ba65b07f926dbe2055665') + + depends_on('py-setuptools', type='build') + + # TODO: Add a 'test' deptype + # depends_on('py-pytest', type='test') + # depends_on('py-mock', type='test') diff --git a/var/spack/repos/builtin/packages/py-typing/package.py b/var/spack/repos/builtin/packages/py-typing/package.py new file mode 100644 index 00000000000..4b1d1645203 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-typing/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyTyping(PythonPackage): + """This is a backport of the standard library typing module to Python + versions older than 3.6.""" + + homepage = "https://docs.python.org/3/library/typing.html" + url = "https://pypi.io/packages/source/t/typing/typing-3.6.1.tar.gz" + + import_modules = ['typing'] + + version('3.6.1', '3fec97415bae6f742fb3c3013dedeb89') + + # You need Python 2.7 or 3.3+ to install the typing package + depends_on('python@2.7:2.8,3.3:', type=('build', 'run')) From bb451f967cd821fc19ab7cc984f5481aff40c6f3 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 17 May 2017 19:50:50 -0500 Subject: [PATCH 0912/2394] Add latest version of matplotlib (#4279) --- var/spack/repos/builtin/packages/py-matplotlib/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 34ebeaf5ff5..9948c85727e 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -32,8 +32,9 @@ class PyMatplotlib(PythonPackage): environments across platforms.""" homepage = "https://pypi.python.org/pypi/matplotlib" - url = "https://pypi.io/packages/source/m/matplotlib/matplotlib-1.4.2.tar.gz" + url = "https://pypi.io/packages/source/m/matplotlib/matplotlib-2.0.2.tar.gz" + version('2.0.2', '061111784278bde89b5d4987014be4ca') version('2.0.0', '7aa54b06327f0e1c4f3877fc2f7d6b17') version('1.5.3', 'ba993b06113040fee6628d74b80af0fd') version('1.5.1', 'f51847d8692cb63df64cd0bd0304fd20') From 5b527e2c145590968b65fc37cfa9b74aa69aba87 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 17 May 2017 19:51:15 -0500 Subject: [PATCH 0913/2394] Add a new package for sphinxcontrib-programoutput (#4267) --- .../py-sphinxcontrib-programoutput/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py new file mode 100644 index 00000000000..6255d3e4f06 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySphinxcontribProgramoutput(PythonPackage): + """A Sphinx extension to literally insert the output of arbitrary commands + into documents, helping you to keep your command examples up to date.""" + + homepage = "https://sphinxcontrib-programoutput.readthedocs.org/" + url = "https://pypi.io/packages/source/s/sphinxcontrib-programoutput/sphinxcontrib-programoutput-0.10.tar.gz" + + # FIXME: These import tests don't work for some reason + # import_modules = ['sphinxcontrib', 'sphinxcontrib.programoutput'] + + version('0.10', '8e511e476c67696c7ae2c08b15644eb4') + + depends_on('py-setuptools', type='build') + depends_on('py-sphinx@1.3.5:', type=('build', 'run')) From 32c570913d9f1668ad566283109b175cbc8e5f86 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Wed, 17 May 2017 18:45:03 -0700 Subject: [PATCH 0914/2394] Move doc dependencies to requirements.txt for readthedocs (#4280) * Move doc dependencies to requirements.txt for readthedocs * Move sphinx to doc requirements. --- .travis.yml | 3 +-- lib/spack/docs/requirements.txt | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 lib/spack/docs/requirements.txt diff --git a/.travis.yml b/.travis.yml index c4bfe176409..c89bcf1275e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -86,8 +86,7 @@ install: - pip install --upgrade setuptools - pip install --upgrade codecov - pip install --upgrade flake8 - - if [[ "$TEST_SUITE" == "doc" ]]; then pip install --upgrade sphinx; fi - - if [[ "$TEST_SUITE" == "doc" ]]; then pip install --upgrade sphinxcontrib-programoutput; fi + - if [[ "$TEST_SUITE" == "doc" ]]; then pip install --upgrade -r lib/spack/docs/requirements.txt; fi before_script: # Need this for the git tests to succeed. diff --git a/lib/spack/docs/requirements.txt b/lib/spack/docs/requirements.txt new file mode 100644 index 00000000000..d3fe0d18d7f --- /dev/null +++ b/lib/spack/docs/requirements.txt @@ -0,0 +1,5 @@ +# These dependencies should be installed using pip in order +# to build the documentation. + +sphinx +sphinxcontrib-programoutput From daaa37c1ff1efb8d746e549838934b136d5e0e95 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 17 May 2017 18:57:23 -0700 Subject: [PATCH 0915/2394] Package for bcl2fastq2 (updates libxslt) (#4234) * Add v1.1.26 and make crypto a variant I need 1.1.26 for bcl2fastq2. I also need to build it without crypto support. * Initial support for bcl2fastq2 * Clean up commentary, messages, names No substantial changes intended, just cleanup. * fix flake8 and extra import * The masked grammarian strikes again... * Be normal (messages don't end in periods) * When +crypto, add --with-crypto Add `--with-crypto` to configure args when user hasn't explicitly set `~crypto`. * self.spec.satisfies is unsatisfying, in is in instead See #4135, self.spec.satisfies has issues. @adamjstewart suggests simply using in. --- .../packages/bcl2fastq2/cmake-macros.patch | 10 ++ .../bcl2fastq2/cxxConfigure-cmake.patch | 12 +++ .../builtin/packages/bcl2fastq2/package.py | 95 +++++++++++++++++++ .../repos/builtin/packages/libxslt/package.py | 16 +++- 4 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/bcl2fastq2/cmake-macros.patch create mode 100644 var/spack/repos/builtin/packages/bcl2fastq2/cxxConfigure-cmake.patch create mode 100644 var/spack/repos/builtin/packages/bcl2fastq2/package.py diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/cmake-macros.patch b/var/spack/repos/builtin/packages/bcl2fastq2/cmake-macros.patch new file mode 100644 index 00000000000..a799ef68e58 --- /dev/null +++ b/var/spack/repos/builtin/packages/bcl2fastq2/cmake-macros.patch @@ -0,0 +1,10 @@ +--- a/src/cmake/bcl2fastq_redist_macros.cmake 2017-05-11 15:03:27.652495488 -0700 ++++ b/src/cmake/bcl2fastq_redist_macros.cmake 2017-05-11 15:06:38.326745889 -0700 +@@ -30,6 +30,7 @@ + message(" Found: ${libname}, correct version ${version}") + message(" ${${libname}_UPPER}_INCLUDE_DIR = ${${${libname}_UPPER}_INCLUDE_DIR}") + message(" ${${libname}_UPPER}_LIBRARIES = ${${${libname}_UPPER}_LIBRARIES}") ++ set (HAVE_${${libname}_UPPER} true CACHE BOOL "package" FORCE) + else("${${${libname}_UPPER}_VERSION_STRING}" STREQUAL "${version}") + message(" Not found: ${libname}, incorrect version ( ${${${libname}_UPPER}_VERSION} )") + set(${${libname}_UPPER}_FOUND "FALSE") diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/cxxConfigure-cmake.patch b/var/spack/repos/builtin/packages/bcl2fastq2/cxxConfigure-cmake.patch new file mode 100644 index 00000000000..4452bb31c19 --- /dev/null +++ b/var/spack/repos/builtin/packages/bcl2fastq2/cxxConfigure-cmake.patch @@ -0,0 +1,12 @@ +--- a/src/cmake/cxxConfigure.cmake 2017-05-11 16:55:14.745107845 -0700 ++++ b/src/cmake/cxxConfigure.cmake 2017-05-11 17:16:39.355981745 -0700 +@@ -101,6 +101,9 @@ + if((NOT HAVE_LIBXML2) OR (NOT HAVE_LIBXSLT)) + find_package_version(LibXml2 ${BCL2FASTQ_LIBXML2_VERSION}) + find_package_version(LibXslt ${BCL2FASTQ_LIBXSLT_VERSION}) ++ # macro isn't ONLY for redist, see its definition... ++ string(REGEX REPLACE "/include$" "" LIBEXSLT_HINT ${LIBXSLT_INCLUDE_DIR}) ++ find_library_redist(LIBEXSLT ${LIBEXSLT_HINT} libexslt/exslt.h exslt) + endif((NOT HAVE_LIBXML2) OR (NOT HAVE_LIBXSLT)) + + if((NOT HAVE_LIBXML2) OR (NOT HAVE_LIBXSLT)) diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/package.py b/var/spack/repos/builtin/packages/bcl2fastq2/package.py new file mode 100644 index 00000000000..98799a1444e --- /dev/null +++ b/var/spack/repos/builtin/packages/bcl2fastq2/package.py @@ -0,0 +1,95 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os +import shutil +import llnl.util.tty as tty + + +# This application uses cmake to build, but they wrap it with a +# configure script that performs dark magic. This package does it +# their way. +class Bcl2fastq2(Package): + """The bcl2fastq2 Conversion Software converts base + call (BCL) files from a sequencing run into FASTQ + files.""" + + homepage = "https://support.illumina.com/downloads/bcl2fastq-conversion-software-v2-18.html" + url = "https://support.illumina.com/content/dam/illumina-support/documents/downloads/software/bcl2fastq/bcl2fastq2-v2-18-0-12-tar.zip" + + version('2-18-0-12', 'fbe06492117f65609c41be0c27e3215c') + + depends_on('boost@1.54.0') + depends_on('cmake@2.8.9:') + depends_on('libxml2@2.7.8') + depends_on('libxslt@1.1.26~crypto') + depends_on('libgcrypt') + depends_on('zlib') + + # Their cmake macros don't set the flag when they find a library + # that makes them happy. + patch('cmake-macros.patch') + # After finding the libxslt bits, cmake still needs to wire in the + # libexslt bits. + patch('cxxConfigure-cmake.patch') + + root_cmakelists_dir = '../src' + + def url_for_version(self, version): + url = "https://support.illumina.com/content/dam/illumina-support/documents/downloads/software/bcl2fastq/bcl2fastq2-v{0}-tar.zip" + return url.format(version.dashed) + + # Illumina tucks the source inside a gzipped tarball inside a zip + # file. We let the normal Spack expansion bit unzip the zip file, + # then follow it with a function untars the tarball after Spack's + # done it's bit. + def do_stage(self, mirror_only=False): + # wrap (decorate) the standard expand_archive step with a + # helper, then call the real do_stage(). + self.stage.expand_archive = self.unpack_it(self.stage.expand_archive) + super(Bcl2fastq2, self).do_stage(mirror_only) + + def unpack_it(self, f): + def wrap(): + f() # call the original expand_archive() + if os.path.isdir('bcl2fastq'): + tty.msg("The tarball has already been unpacked") + else: + tty.msg("Unpacking bcl2fastq2 tarball") + tarball = 'bcl2fastq2-v{0}.tar.gz'.format(self.version.dotted) + shutil.move(join_path('spack-expanded-archive', tarball), '.') + os.rmdir('spack-expanded-archive') + tar = which('tar') + tar('-xf', tarball) + tty.msg("Finished unpacking bcl2fastq2 tarball") + return wrap + + def install(self, spec, prefix): + bash = which('bash') + bash("src/configure", "--prefix={0}".format(prefix), + "--with-cmake={0}".format(join_path(spec['cmake'].prefix.bin, + "cmake"))) + make() + make("install") diff --git a/var/spack/repos/builtin/packages/libxslt/package.py b/var/spack/repos/builtin/packages/libxslt/package.py index 9c5a42bcfb5..3396f10242d 100644 --- a/var/spack/repos/builtin/packages/libxslt/package.py +++ b/var/spack/repos/builtin/packages/libxslt/package.py @@ -36,10 +36,22 @@ class Libxslt(AutotoolsPackage): homepage = "http://www.xmlsoft.org/XSLT/index.html" url = "http://xmlsoft.org/sources/libxslt-1.1.28.tar.gz" - version('1.1.28', '9667bf6f9310b957254fdcf6596600b7') version('1.1.29', 'a129d3c44c022de3b9dcf6d6f288d72e') + version('1.1.28', '9667bf6f9310b957254fdcf6596600b7') + version('1.1.26', 'e61d0364a30146aaa3001296f853b2b9') + + variant('crypto', default=True, + description='Build libexslt with crypto support') depends_on("libxml2") depends_on("xz") depends_on("zlib") - depends_on("libgcrypt") + depends_on("libgcrypt", when="+crypto") + + def configure_args(self): + args = [] + if '~crypto' in self.spec: + args.append('--without-crypto') + else: + args.append('--with-crypto') + return args From 8eeb63e78ecd19b2c9957e56436a31aaf2a01256 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 17 May 2017 18:57:48 -0700 Subject: [PATCH 0916/2394] Add info for miniconda[23]@4.3.14 (#4263) --- var/spack/repos/builtin/packages/miniconda2/package.py | 1 + var/spack/repos/builtin/packages/miniconda3/package.py | 1 + 2 files changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/miniconda2/package.py b/var/spack/repos/builtin/packages/miniconda2/package.py index d23ab080b05..52fc2a2f668 100644 --- a/var/spack/repos/builtin/packages/miniconda2/package.py +++ b/var/spack/repos/builtin/packages/miniconda2/package.py @@ -33,6 +33,7 @@ class Miniconda2(Package): homepage = "https://conda.io/miniconda.html" url = "https://repo.continuum.io/miniconda/Miniconda2-4.3.11-Linux-x86_64.sh" + version('4.3.14', '8cb075cf5462480980ef2373ad9fad38', expand=False) version('4.3.11', 'd573980fe3b5cdf80485add2466463f5', expand=False) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/miniconda3/package.py b/var/spack/repos/builtin/packages/miniconda3/package.py index 8184c10d88a..bf9905c312f 100644 --- a/var/spack/repos/builtin/packages/miniconda3/package.py +++ b/var/spack/repos/builtin/packages/miniconda3/package.py @@ -33,6 +33,7 @@ class Miniconda3(Package): homepage = "https://conda.io/miniconda.html" url = "https://repo.continuum.io/miniconda/Miniconda3-4.3.11-Linux-x86_64.sh" + version('4.3.14', 'fc6fc37479e3e3fcf3f9ba52cae98991', expand=False) version('4.3.11', '1924c8d9ec0abf09005aa03425e9ab1a', expand=False) def install(self, spec, prefix): From 48eec5fc0f06f42411ffe156d285f7d7a008de65 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 17 May 2017 21:58:32 -0400 Subject: [PATCH 0917/2394] benchmark: New package for the Google Benchmark library (#4194) * benchmark: New package * benchmark: Remove empty function --- .../builtin/packages/benchmark/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/benchmark/package.py diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py new file mode 100644 index 00000000000..9c74be8d1e3 --- /dev/null +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Benchmark(CMakePackage): + """A microbenchmark support library""" + + homepage = "https://github.com/google/benchmark" + url = "https://github.com/google/benchmark/archive/v1.1.0.tar.gz" + + version('1.1.0', '66b2a23076cf70739525be0092fc3ae3') + version('1.0.0', '1474ff826f8cd68067258db75a0835b8') From 48588cb1d89b45a947a0fe2d27d41b40b251e536 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 18 May 2017 10:06:44 -0500 Subject: [PATCH 0918/2394] Add a new package for Open Babel (#4256) * Add a new package for Open Babel * Add post-installation tests, stolen from the fine folks at Homebrew * Add patch to fix Python 3.6 support * Add a more complete patch to get Python 3.6 support working * Add patch to convert tabs to spaces in test script testpdbformat.py contains mixed tabs and spaces causing the unit tests to fail. With this patch, all tests pass with flying colors. --- .../builtin/packages/openbabel/package.py | 80 +++++++++++++++++++ .../openbabel/python-3.6-rtld-global.patch | 42 ++++++++++ .../testpdbformat-tabs-to-spaces.patch | 47 +++++++++++ 3 files changed, 169 insertions(+) create mode 100644 var/spack/repos/builtin/packages/openbabel/package.py create mode 100644 var/spack/repos/builtin/packages/openbabel/python-3.6-rtld-global.patch create mode 100644 var/spack/repos/builtin/packages/openbabel/testpdbformat-tabs-to-spaces.patch diff --git a/var/spack/repos/builtin/packages/openbabel/package.py b/var/spack/repos/builtin/packages/openbabel/package.py new file mode 100644 index 00000000000..014d1183f35 --- /dev/null +++ b/var/spack/repos/builtin/packages/openbabel/package.py @@ -0,0 +1,80 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Openbabel(CMakePackage): + """Open Babel is a chemical toolbox designed to speak the many languages + of chemical data. It's an open, collaborative project allowing anyone to + search, convert, analyze, or store data from molecular modeling, chemistry, + solid-state materials, biochemistry, or related areas.""" + + homepage = "http://openbabel.org/wiki/Main_Page" + url = "https://sourceforge.net/projects/openbabel/files/openbabel/2.4.1/openbabel-2.4.1.tar.gz" + + version('2.4.1', 'd9defcd7830b0592fece4fe54a137b99') + + variant('python', default=True, description='Build Python bindings') + + extends('python', when='+python') + + depends_on('python', type=('build', 'run'), when='+python') + depends_on('cmake@2.4.8:', type='build') + depends_on('pkg-config', type='build') + depends_on('cairo') # required to support PNG depiction + depends_on('eigen@3.0:') # required if using the language bindings + depends_on('libxml2') # required to read/write CML files, XML formats + depends_on('zlib') # required to support reading gzipped files + + # Needed for Python 3.6 support + patch('python-3.6-rtld-global.patch', when='@:2.4.1+python') + + # Convert tabs to spaces. Allows unit tests to pass + patch('testpdbformat-tabs-to-spaces.patch', when='@:2.4.1') + + def cmake_args(self): + spec = self.spec + args = [] + + if '+python' in spec: + args.extend([ + '-DPYTHON_BINDINGS=ON', + '-DPYTHON_EXECUTABLE={0}'.format(spec['python'].command.path), + ]) + else: + args.append('-DPYTHON_BINDINGS=OFF') + + return args + + @run_after('install') + @on_package_attributes(run_tests=True) + def check_install(self): + obabel = Executable(join_path(self.prefix.bin, 'obabel')) + obabel('-:C1=CC=CC=C1Br', '-omol') + + if '+python' in self.spec: + # Attempt to import the Python modules + for module in ['openbabel', 'pybel']: + python('-c', 'import {0}'.format(module)) diff --git a/var/spack/repos/builtin/packages/openbabel/python-3.6-rtld-global.patch b/var/spack/repos/builtin/packages/openbabel/python-3.6-rtld-global.patch new file mode 100644 index 00000000000..68cd56a1f5c --- /dev/null +++ b/var/spack/repos/builtin/packages/openbabel/python-3.6-rtld-global.patch @@ -0,0 +1,42 @@ +The DLFCN module has been removed from python 3.6, as it is not +documented. Same funtionality can be achive with the os module +that makes available the os.RTLD_GLOBAL variable for dlopen() + +See https://github.com/openbabel/openbabel/pull/372 for the +source of this patch. The original patch only affects the CMake +file that SWIG uses to generate openbabel.py. This patch also +includes changes to openbabel.py. + +diff -Nuar a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt +--- a/scripts/CMakeLists.txt 2017-05-17 10:02:54.408527942 -0500 ++++ b/scripts/CMakeLists.txt 2017-05-17 10:04:09.701598715 -0500 +@@ -81,11 +81,8 @@ + COMMAND ${SWIG_EXECUTABLE} -python -c++ -small -O -templatereduce -naturalvar -I${openbabel_SOURCE_DIR}/include -I${openbabel_BINARY_DIR}/include -o ${openbabel_SOURCE_DIR}/scripts/python/openbabel-python.cpp ${eigen_define} -outdir ${openbabel_SOURCE_DIR}/scripts/python ${openbabel_SOURCE_DIR}/scripts/openbabel-python.i + COMMAND ${CMAKE_COMMAND} -E echo "import sys" > ob.py + COMMAND ${CMAKE_COMMAND} -E echo "if sys.platform.find('linux'\) != -1:" >> ob.py +- COMMAND ${CMAKE_COMMAND} -E echo " try:" >> ob.py +- COMMAND ${CMAKE_COMMAND} -E echo " import dl" >> ob.py +- COMMAND ${CMAKE_COMMAND} -E echo " except ImportError:" >> ob.py +- COMMAND ${CMAKE_COMMAND} -E echo " import DLFCN as dl" >> ob.py +- COMMAND ${CMAKE_COMMAND} -E echo " sys.setdlopenflags(sys.getdlopenflags() | dl.RTLD_GLOBAL)" >> ob.py ++ COMMAND ${CMAKE_COMMAND} -E echo " import os" >> ob.py ++ COMMAND ${CMAKE_COMMAND} -E echo " sys.setdlopenflags(sys.getdlopenflags() | os.RTLD_GLOBAL)" >> ob.py + COMMAND cat ${openbabel_SOURCE_DIR}/scripts/python/openbabel.py >> ob.py + COMMAND ${CMAKE_COMMAND} -E copy ob.py ${openbabel_SOURCE_DIR}/scripts/python/openbabel.py + COMMAND ${CMAKE_COMMAND} -E remove ob.py +diff -Nuar a/scripts/python/openbabel.py b/scripts/python/openbabel.py +--- a/scripts/python/openbabel.py 2017-05-17 10:02:54.398527534 -0500 ++++ b/scripts/python/openbabel.py 2017-05-17 10:04:26.705292138 -0500 +@@ -1,10 +1,7 @@ + import sys + if sys.platform.find('linux') != -1: +- try: +- import dl +- except ImportError: +- import DLFCN as dl +- sys.setdlopenflags(sys.getdlopenflags() | dl.RTLD_GLOBAL) ++ import os ++ sys.setdlopenflags(sys.getdlopenflags() | os.RTLD_GLOBAL) + # This file was automatically generated by SWIG (http://www.swig.org). + # Version 3.0.10 + # diff --git a/var/spack/repos/builtin/packages/openbabel/testpdbformat-tabs-to-spaces.patch b/var/spack/repos/builtin/packages/openbabel/testpdbformat-tabs-to-spaces.patch new file mode 100644 index 00000000000..0a71a72e014 --- /dev/null +++ b/var/spack/repos/builtin/packages/openbabel/testpdbformat-tabs-to-spaces.patch @@ -0,0 +1,47 @@ +From 08cd38485d4cf1df8802da540f3018921dbc735e Mon Sep 17 00:00:00 2001 +From: "Adam J. Stewart" +Date: Wed, 17 May 2017 10:56:23 -0500 +Subject: [PATCH] Convert tabs to spaces in testpdbformat.py + +See https://github.com/openbabel/openbabel/pull/1568 + +--- + test/testpdbformat.py | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/test/testpdbformat.py b/test/testpdbformat.py +index 40bd316..ceb8496 100644 +--- a/test/testpdbformat.py ++++ b/test/testpdbformat.py +@@ -24,12 +24,12 @@ class TestPDBFormat(BaseTest): + + def testInsertionCodes(self): + """ +- Testing a PDB entry with insertion codes to distinguish residues +- upon conversion to FASTA. ++ Testing a PDB entry with insertion codes to distinguish residues ++ upon conversion to FASTA. + """ + self.canFindExecutable("babel") + +- self.entryPDBwithInsertioncodes="""ATOM 406 N VAL L 29 58.041 17.797 48.254 1.00 0.00 N ++ self.entryPDBwithInsertioncodes="""ATOM 406 N VAL L 29 58.041 17.797 48.254 1.00 0.00 N + ATOM 407 CA VAL L 29 57.124 18.088 47.170 1.00 0.00 C + ATOM 408 C VAL L 29 55.739 17.571 47.538 1.00 0.00 C + ATOM 409 O VAL L 29 55.535 16.362 47.550 1.00 0.00 O +@@ -100,9 +100,9 @@ ATOM 473 HE1 TYR L 32 48.512 15.775 42.066 1.00 0.00 H + ATOM 474 HE2 TYR L 32 48.145 19.172 44.648 1.00 0.00 H + ATOM 475 HH TYR L 32 46.462 17.658 44.280 1.00 0.00 H + """ +- output, error = run_exec(self.entryPDBwithInsertioncodes, +- "babel -ipdb -ofasta") +- self.assertEqual(output.rstrip().rsplit("\n",1)[1], "VSSSY") ++ output, error = run_exec(self.entryPDBwithInsertioncodes, ++ "babel -ipdb -ofasta") ++ self.assertEqual(output.rstrip().rsplit("\n",1)[1], "VSSSY") + + if __name__ == "__main__": + testsuite = [] +-- +2.9.4 + From a29921b99500744f575eb2489ca4cc1103555cbd Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Thu, 18 May 2017 10:11:27 -0500 Subject: [PATCH 0919/2394] =?UTF-8?q?Add=20the=20gnupg=20package=20and=20m?= =?UTF-8?q?issing=20dependencies.=20Update=20versions=20of=20ex=E2=80=A6?= =?UTF-8?q?=20(#4281)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add the gnupg package and missing dependencies. Update versions of existing dependencies. * this ended up in the wrong repo * put versions back, remove uneeded function * OK ;) * autopep8 * typo on npth line * whitespace --- .../repos/builtin/packages/gnupg/package.py | 50 +++++++++++++++++++ .../builtin/packages/libassuan/package.py | 41 +++++++++++++++ .../builtin/packages/libgcrypt/package.py | 3 +- .../builtin/packages/libgpg-error/package.py | 3 +- .../repos/builtin/packages/libksba/package.py | 41 +++++++++++++++ .../repos/builtin/packages/npth/package.py | 35 +++++++++++++ 6 files changed, 171 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/gnupg/package.py create mode 100644 var/spack/repos/builtin/packages/libassuan/package.py create mode 100644 var/spack/repos/builtin/packages/libksba/package.py create mode 100644 var/spack/repos/builtin/packages/npth/package.py diff --git a/var/spack/repos/builtin/packages/gnupg/package.py b/var/spack/repos/builtin/packages/gnupg/package.py new file mode 100644 index 00000000000..0239c15d0e7 --- /dev/null +++ b/var/spack/repos/builtin/packages/gnupg/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Gnupg(AutotoolsPackage): + """GnuPG is a complete and free implementation of the OpenPGP + standard as defined by RFC4880 """ + + homepage = "https://gnupg.org/index.html" + url = "https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.1.21.tar.bz2" + + version('2.1.21', '685ebf4c3a7134ba0209c96b18b2f064') + + depends_on('libgcrypt') + depends_on('libassuan') + depends_on('libksba') + depends_on('libgpg-error') + depends_on('npth') + + def configure_args(self): + args = ['--with-npth-prefix=%s' % self.spec['npth'].prefix, + '--with-libgcrypt-prefix=%s' % self.spec['libgcrypt'].prefix, + '--with-libksba-prefixx=%s' % self.spec['libksba'].prefix, + '--with-libassuan-prefix=%s' % self.spec['libassuan'].prefix, + '--with-libpgp-error-prefix=%s' % + self.spec['libgpg-error'].prefix] + return args diff --git a/var/spack/repos/builtin/packages/libassuan/package.py b/var/spack/repos/builtin/packages/libassuan/package.py new file mode 100644 index 00000000000..9c53bd5e4b2 --- /dev/null +++ b/var/spack/repos/builtin/packages/libassuan/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libassuan(AutotoolsPackage): + """Libassuan is a small library implementing the so-called Assuan + protocol.""" + + homepage = "https://gnupg.org/software/libassuan/index.html" + url = "https://gnupg.org/ftp/gcrypt/libassuan/libassuan-2.4.3.tar.bz2" + + version('2.4.3', '8e01a7c72d3e5d154481230668e6eb5a') + + depends_on('libgpg-error') + + def configure_args(self): + args = ['--with-libgpp-error=%s' % self.spec['libgpg-error'].prefix] + return args diff --git a/var/spack/repos/builtin/packages/libgcrypt/package.py b/var/spack/repos/builtin/packages/libgcrypt/package.py index 1eae9c6530a..b196adc18b9 100644 --- a/var/spack/repos/builtin/packages/libgcrypt/package.py +++ b/var/spack/repos/builtin/packages/libgcrypt/package.py @@ -32,8 +32,9 @@ class Libgcrypt(AutotoolsPackage): key algorithms, large integer functions, random numbers and a lot of supporting functions. """ homepage = "http://www.gnu.org/software/libgcrypt/" - url = "http://gd.tuwien.ac.at/pub/gnupg/libgcrypt/libgcrypt-1.6.2.tar.bz2" + url = "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.6.tar.bz2" + version('1.7.6', '54e180679a7ae4d090f8689ca32b654c') version('1.6.2', 'b54395a93cb1e57619943c082da09d5f') depends_on("libgpg-error") diff --git a/var/spack/repos/builtin/packages/libgpg-error/package.py b/var/spack/repos/builtin/packages/libgpg-error/package.py index 67cd1759c0c..e0565f2c4cf 100644 --- a/var/spack/repos/builtin/packages/libgpg-error/package.py +++ b/var/spack/repos/builtin/packages/libgpg-error/package.py @@ -32,7 +32,8 @@ class LibgpgError(AutotoolsPackage): SmartCard Daemon and possibly more in the future. """ homepage = "https://www.gnupg.org/related_software/libgpg-error" - url = "http://gd.tuwien.ac.at/pub/gnupg/libgpg-error/libgpg-error-1.18.tar.bz2" + url = "https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2" + version('1.27', '5217ef3e76a7275a2a3b569a12ddc989') version('1.21', 'ab0b5aba6d0a185b41d07bda804fd8b2') version('1.18', '12312802d2065774b787cbfc22cc04e9') diff --git a/var/spack/repos/builtin/packages/libksba/package.py b/var/spack/repos/builtin/packages/libksba/package.py new file mode 100644 index 00000000000..ab9bcedc27e --- /dev/null +++ b/var/spack/repos/builtin/packages/libksba/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libksba(AutotoolsPackage): + """Libksba is a library to make the tasks of working with X.509 + certificates, CMS data and related objects more easy. """ + + homepage = "https://gnupg.org/software/libksba/index.html" + url = "https://gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2" + + version('1.3.5', '8302a3e263a7c630aa7dea7d341f07a2') + + depends_on('libgpg-error') + + def configure_args(self): + args = ['--with-libgpp-error=%s' % self.spec['libgpg-error'].prefix] + return args diff --git a/var/spack/repos/builtin/packages/npth/package.py b/var/spack/repos/builtin/packages/npth/package.py new file mode 100644 index 00000000000..ac4264036cb --- /dev/null +++ b/var/spack/repos/builtin/packages/npth/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Npth(AutotoolsPackage): + """nPth is a library to provide the GNU Pth API and thus a + non-preemptive threads implementation.""" + + homepage = "https://gnupg.org/software/npth/index.html" + url = "https://gnupg.org/ftp/gcrypt/npth/npth-1.4.tar.bz2" + + version('1.4', '76cef5542e0db6a339cf960641ed86f8') From 5486d021d686f256a008dd9ab90dfb5b9fa60967 Mon Sep 17 00:00:00 2001 From: Tom Merrick Date: Thu, 18 May 2017 11:24:40 -0500 Subject: [PATCH 0920/2394] Add mpi support to R (#4286) --- .../repos/builtin/packages/r-rmpi/package.py | 55 +++++++++++++++++++ .../repos/builtin/packages/r-snow/package.py | 38 +++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-rmpi/package.py create mode 100644 var/spack/repos/builtin/packages/r-snow/package.py diff --git a/var/spack/repos/builtin/packages/r-rmpi/package.py b/var/spack/repos/builtin/packages/r-rmpi/package.py new file mode 100644 index 00000000000..7b955545d8f --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rmpi/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RRmpi(RPackage): + """An interface (wrapper) to MPI APIs. It also provides interactive R + manager and worker environment.""" + + homepage = "http://www.stats.uwo.ca/faculty/yu/Rmpi" + url = "https://cran.r-project.org/src/contrib/Rmpi_0.6-6.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/Rmpi" + + version('0.6-6', '59ae8ce62ff0ff99342d53942c745779') + + depends_on('mpi') + depends_on('r@2.15.1:') + + def install(self, spec, prefix): + if 'mpich' in spec: + Rmpi_type = 'MPICH' + elif 'mvapich' in spec: + Rmpi_type = 'MVAPICH' + else: + Rmpi_type = 'OPENMPI' + + my_mpi = spec['mpi'] + + R('CMD', 'INSTALL', + '--configure-args=--with-Rmpi-type=%s' % Rmpi_type + + ' --with-mpi=%s' % my_mpi.prefix, + '--library={0}'.format(self.module.r_lib_dir), + self.stage.source_path) diff --git a/var/spack/repos/builtin/packages/r-snow/package.py b/var/spack/repos/builtin/packages/r-snow/package.py new file mode 100644 index 00000000000..662cdd80a74 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-snow/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RSnow(RPackage): + """Support for simple parallel computing in R.""" + + homepage = "https://cran.r-project.org/web/packages/snow/index.html" + url = "https://cran.r-project.org/src/contrib/snow_0.4-2.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/snow" + + version('0.4-2', 'afc7b0dfd4518aedb6fc81712fd2ac70') + + depends_on('r-rmpi', type='run') + depends_on('r@2.13.1:', type=('build', 'run')) From fa90a65d0964bbaaea4f267d5634c0410e0c773e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 18 May 2017 12:12:08 -0500 Subject: [PATCH 0921/2394] Fix spec['python'].home (#4228) --- var/spack/repos/builtin/packages/python/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 12b77813d1c..c5f0f23d6d6 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -531,6 +531,8 @@ def setup_dependent_package(self, module, dependent_spec): module.site_packages_dir = join_path(dependent_spec.prefix, self.site_packages_dir) + self.spec.home = self.home + # Make the site packages directory for extensions if dependent_spec.package.is_extension: mkdirp(module.site_packages_dir) From 04ccb8f774ebe415e0cc7c8a37fc6662a0125f73 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 18 May 2017 13:22:09 -0500 Subject: [PATCH 0922/2394] Add old version of ROOT 5 (#4288) --- var/spack/repos/builtin/packages/root/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index b1e7cc6834f..ca77b8fba5d 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -44,6 +44,7 @@ class Root(CMakePackage): version('6.06.06', '4308449892210c8d36e36924261fea26') version('6.06.04', '55a2f98dd4cea79c9c4e32407c2d6d17') version('6.06.02', 'e9b8b86838f65b0a78d8d02c66c2ec55') + version('5.34.36', '6a1ad549b3b79b10bbb1f116b49067ee') if sys.platform == 'darwin': patch('math_uint.patch', when='@6.06.02') From f72cd79ad1737f44616827c96f3ea32d7ac93738 Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Thu, 18 May 2017 16:37:47 -0400 Subject: [PATCH 0923/2394] add mpi support to meme (#4265) * added openmpi support to meme * openmpi is a link dependency which leverages r_path * openmpi support now the default - meme does not have configure argument for mpi - if it's found then it's used * added serial option and set mpi to not be default * modified meme --- var/spack/repos/builtin/packages/meme/package.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/var/spack/repos/builtin/packages/meme/package.py b/var/spack/repos/builtin/packages/meme/package.py index ca7554c565e..87174c391e9 100644 --- a/var/spack/repos/builtin/packages/meme/package.py +++ b/var/spack/repos/builtin/packages/meme/package.py @@ -35,9 +35,20 @@ class Meme(AutotoolsPackage): version('4.11.4', '371f513f82fa0888205748e333003897') + variant('mpi', default=True, description='Enable MPI support') + depends_on('zlib', type=('link')) depends_on('libxml2', type=('link')) depends_on('libxslt', type=('link')) depends_on('libgcrypt', type=('link')) depends_on('perl', type=('build', 'run')) depends_on('python@2.7:', type=('build', 'run')) + depends_on('mpi', when='+mpi') + + # disable mpi support + def configure_args(self): + spec = self.spec + args = [] + if '~mpi' in spec: + args += ['--enable-serial'] + return args From 153a63de62463e4da630971297b42c19f7efdb4c Mon Sep 17 00:00:00 2001 From: kothah Date: Fri, 19 May 2017 02:01:40 +0200 Subject: [PATCH 0924/2394] added new version 7.900.1 (#4292) added new md5 --- var/spack/repos/builtin/packages/armadillo/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index 7bf28efc0dc..0729afd8c87 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -33,6 +33,7 @@ class Armadillo(Package): homepage = "http://arma.sourceforge.net/" url = "http://sourceforge.net/projects/arma/files/armadillo-7.200.1.tar.xz" + version('7.900.1', '5ef71763bd429a3d481499878351f3be') version('7.500.0', '7d316fdf3c3c7ea92b64704180ae315d') version('7.200.2', 'b21585372d67a8876117fd515d8cf0a2') version('7.200.1', 'ed86d6df0058979e107502e1fe3e469e') From be356cf707f37d172a73141f1d1c163e9028b08c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 18 May 2017 17:02:03 -0700 Subject: [PATCH 0925/2394] Add info for libxml2@2.7.8 (#4290) bcl2fastq2 needs this older version. --- var/spack/repos/builtin/packages/libxml2/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 4324b1dcd39..6a9e6e65100 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -34,6 +34,7 @@ class Libxml2(AutotoolsPackage): version('2.9.4', 'ae249165c173b1ff386ee8ad676815f5') version('2.9.2', '9e6a9aca9d155737868b3dc5fd82f788') + version('2.7.8', '8127a65e8c3b08856093099b52599c86') variant('python', default=False, description='Enable Python support') From 0bff9c1eb1b99484e077a5cd18dc52a16057feb0 Mon Sep 17 00:00:00 2001 From: Tom Merrick Date: Fri, 19 May 2017 09:59:35 -0500 Subject: [PATCH 0926/2394] Add r-rmpfr and r-gmp to R (#4287) * Add mpi support to R * Add multiple precision math routines to R * Updated the URL to match the version * Remove duplicate packages --- .../repos/builtin/packages/r-gmp/package.py | 39 +++++++++++++++++ .../repos/builtin/packages/r-rmpfr/package.py | 42 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-gmp/package.py create mode 100644 var/spack/repos/builtin/packages/r-rmpfr/package.py diff --git a/var/spack/repos/builtin/packages/r-gmp/package.py b/var/spack/repos/builtin/packages/r-gmp/package.py new file mode 100644 index 00000000000..13b890220d6 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-gmp/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RGmp(RPackage): + """Multiple Precision Arithmetic (big integers and rationals, prime + number tests, matrix computation), "arithmetic without limitations" + using the C library GMP (GNU Multiple Precision Arithmetic).""" + + homepage = "http://mulcyber.toulouse.inra.fr/projects/gmp" + url = "https://cran.r-project.org/src/contrib/gmp_0.5-13.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/gmp" + + version('0.5-13.1', '4a45d45e53bf7140720bd44f10b075ed') + + depends_on('gmp@4.2.3:') diff --git a/var/spack/repos/builtin/packages/r-rmpfr/package.py b/var/spack/repos/builtin/packages/r-rmpfr/package.py new file mode 100644 index 00000000000..cbf9b3d3c2d --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rmpfr/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RRmpfr(RPackage): + """Arithmetic (via S4 classes and methods) for arbitrary precision + floating point numbers, including transcendental ("special") + functions. To this end, Rmpfr interfaces to the LGPL'ed MPFR + (Multiple Precision Floating-Point Reliable) Library which itself + is based on the GMP (GNU Multiple Precision) Library.""" + + homepage = "http://rmpfr.r-forge.r-project.org" + url = "https://cran.r-project.org/src/contrib/Rmpfr_0.6-1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/Rmpfr" + + version('0.6-1', '55d4ec257bd2a9233bafee9e444d0265') + + depends_on('r-gmp@0.5-8:') + depends_on('mpfr@3.0.0:') From 18c7e9662437081e4d283abf656e1604228af045 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 19 May 2017 09:55:21 -0700 Subject: [PATCH 0927/2394] Fix boost@:1.56.0%gcc@:5 (#4295) I need boost@1.54.0 for bcl2fastq2. I tested bcl2fastq2 using the system compiler (gcc@4.8.5). My full build uses a spack-build gcc@5.4.0. boost@1.54.0 won't build. I found the answer [here](https://github.com/hashdist/hashstack/issues/802) with the details in [this upstream/boost ticket](https://svn.boost.org/trac/boost/ticket/10125). I've confirmed that these combo's build: boost version| compiler ------------ | ------------------ boost@1.54.0 | gcc@4.8.5 (system) boost@1.54.0 | gcc@5.4.0 (Spack) boost@1.64.0 | gcc@5.5.0 (system) --- .../packages/boost/call_once_variadic.patch | 57 +++++++++++++++++++ .../repos/builtin/packages/boost/package.py | 2 + 2 files changed, 59 insertions(+) create mode 100644 var/spack/repos/builtin/packages/boost/call_once_variadic.patch diff --git a/var/spack/repos/builtin/packages/boost/call_once_variadic.patch b/var/spack/repos/builtin/packages/boost/call_once_variadic.patch new file mode 100644 index 00000000000..f143644a70c --- /dev/null +++ b/var/spack/repos/builtin/packages/boost/call_once_variadic.patch @@ -0,0 +1,57 @@ +diff --git a/boost/thread/pthread/once.hpp b/boost/thread/pthread/once.hpp +index ccfb051..0bef038 100644 +--- a/boost/thread/pthread/once.hpp ++++ b/boost/thread/pthread/once.hpp +@@ -42,7 +42,7 @@ namespace boost + } + + #ifdef BOOST_THREAD_PROVIDES_ONCE_CXX11 +-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES ++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + inline void call_once(once_flag& flag, BOOST_THREAD_RV_REF(Function) f, BOOST_THREAD_RV_REF(ArgTypes)... args); + #else +@@ -65,7 +65,7 @@ namespace boost + private: + volatile thread_detail::uintmax_atomic_t epoch; + +-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES ++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + friend void call_once(once_flag& flag, BOOST_THREAD_RV_REF(Function) f, BOOST_THREAD_RV_REF(ArgTypes)... args); + #else +@@ -118,7 +118,7 @@ namespace boost + // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2444.html + + +-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES ++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + + + template +diff --git a/boost/thread/pthread/once_atomic.hpp b/boost/thread/pthread/once_atomic.hpp +index 9e2f876..923f07b 100644 +--- a/boost/thread/pthread/once_atomic.hpp ++++ b/boost/thread/pthread/once_atomic.hpp +@@ -115,7 +115,7 @@ namespace boost + #endif + + +-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES ++#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + + template + inline void call_once(once_flag& flag, BOOST_THREAD_RV_REF(Function) f, BOOST_THREAD_RV_REF(ArgTypes)... args) +diff --git a/boost/thread/win32/once.hpp b/boost/thread/win32/once.hpp +index cafcfd4..9b37b31 100644 +--- a/boost/thread/win32/once.hpp ++++ b/boost/thread/win32/once.hpp +@@ -227,7 +227,7 @@ namespace boost + } + } + +-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES ++#if !defined BOOST_NO_CXX11_VARIADIC_TEMPLATES && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + //#if defined(BOOST_THREAD_RVALUE_REFERENCES_DONT_MATCH_FUNTION_PTR) + inline void call_once(once_flag& flag, void (*f)()) + { diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index c0aa582d72d..9ac2d7e2ab0 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -148,6 +148,8 @@ class Boost(Package): patch('xl_1_62_0_le.patch', when='@1.62.0%xl_r') patch('xl_1_62_0_le.patch', when='@1.62.0%xl') + patch('call_once_variadic.patch', when='@:1.56.0%gcc@5:') + def url_for_version(self, version): url = "http://downloads.sourceforge.net/project/boost/boost/{0}/boost_{1}.tar.bz2" return url.format(version.dotted, version.underscored) From 8b47fe5a781ba73bd3a5d86e23b6debbd27cf625 Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Fri, 19 May 2017 12:55:48 -0400 Subject: [PATCH 0928/2394] added R 3.4.0, again (#4260) (#4294) --- var/spack/repos/builtin/packages/r/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 948de4340ec..4ae8caab238 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -36,10 +36,11 @@ class R(AutotoolsPackage): Please consult the R project homepage for further information.""" homepage = "https://www.r-project.org" - url = "https://cloud.r-project.org/src/base/R-3/R-3.3.2.tar.gz" + url = "https://cloud.r-project.org/src/base/R-3/R-3.4.0.tar.gz" extendable = True + version('3.4.0', '75083c23d507b9c16d5c6afbd7a827e7') version('3.3.3', '0ac211ec15e813a24f8f4a5a634029a4') version('3.3.2', '2437014ef40641cdc9673e89c040b7a8') version('3.3.1', 'f50a659738b73036e2f5635adbd229c5') From 571a42d6149faf88e5b49fa6d8d9bfa6c2b6c783 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Fri, 19 May 2017 19:03:56 +0200 Subject: [PATCH 0929/2394] Fix gcc not finding zlib (#4291) --- var/spack/repos/builtin/packages/gcc/package.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 893b8efce59..1bdee43e831 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -170,6 +170,15 @@ def patch(self): 'typedef void* dispatch_block_t', new_header) + # Use installed libz + if self.version >= Version('6'): + filter_file('@zlibdir@', + '-L{0}'.format(spec['zlib'].prefix.lib), + 'gcc/Makefile.in') + filter_file('@zlibinc@', + '-I{0}'.format(spec['zlib'].prefix.include), + 'gcc/Makefile.in') + def configure_args(self): spec = self.spec From efbcdafd30d0df8b2317f772d00c31df08fe57d8 Mon Sep 17 00:00:00 2001 From: Adam Moody Date: Fri, 19 May 2017 15:09:21 -0700 Subject: [PATCH 0930/2394] Mpifileutils (#4283) * adding mpifileutils * mpifileutils: add +lustre variant * mpifileutils: add variant for xattr * mpifileutils: update to AutotoolsPackage * mpifileutils: simplify and eliminate redundant make * mpifileutils: drop unnecessary comments --- .../builtin/packages/mpifileutils/package.py | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mpifileutils/package.py diff --git a/var/spack/repos/builtin/packages/mpifileutils/package.py b/var/spack/repos/builtin/packages/mpifileutils/package.py new file mode 100644 index 00000000000..102a1e9ff99 --- /dev/null +++ b/var/spack/repos/builtin/packages/mpifileutils/package.py @@ -0,0 +1,81 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mpifileutils(AutotoolsPackage): + """mpiFileUtils is a suite of MPI-based tools to manage large datasets, + which may vary from large directory trees to large files. + High-performance computing users often generate large datasets with + parallel applications that run with many processes (millions in some + cases). However those users are then stuck with single-process tools + like cp and rm to manage their datasets. This suite provides + MPI-based tools to handle typical jobs like copy, remove, and compare + for such datasets, providing speedups of up to 20-30x.""" + + homepage = "https://github.com/hpc/mpifileutils" + url = "https://github.com/hpc/mpifileutils/releases/download/v0.6/mpifileutils-0.6.tar.gz" + + version('0.6', '620bcc4966907481f1b1a965b28fc9bf') + + depends_on('mpi') + depends_on('libcircle') + depends_on('lwgrp') + depends_on('dtcmp') + depends_on('libarchive') + + variant('xattr', default=True, + description="Enable code for extended attributes") + + variant('lustre', default=False, + description="Enable optimizations and features for Lustre") + + # install experimental tools + # (coming with v0.7) + # variant('experimental', default=False, + # description="Install experimental tools") + + def configure_args(self): + args = [] + + if '+lustre' in self.spec: + args.append('--enable-lustre') + else: + args.append('--disable-lustre') + + # coming with v0.7 + # if '+experimental' in self.spec: + # args.append('--enable-experimental') + # else: + # args.append('--disable-experimental') + + return args + + @property + def build_targets(self): + targets = [] + if '+xattr' in self.spec: + targets.append('CFLAGS=-DDCOPY_USE_XATTRS') + return targets From a62bbb6ed89024499d4c6e3fe41bd0a69d94c5ca Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 20 May 2017 00:30:54 +0200 Subject: [PATCH 0931/2394] gobject-introspection depends on pkg-build (#4301) --- .../repos/builtin/packages/gobject-introspection/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index 5f147cccfca..55ea0369a4f 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -44,6 +44,7 @@ class GobjectIntrospection(Package): depends_on("cairo") depends_on("bison", type="build") depends_on("flex", type="build") + depends_on("pkg-config@0.9.0:", type="build") # This package creates several scripts from # toosl/g-ir-tool-template.in. In their original form these From ff6ebe30e07aa105e9b5eb36bb24d1339ec9e476 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 19 May 2017 18:31:20 -0400 Subject: [PATCH 0932/2394] cmake: new version (#4274) --- var/spack/repos/builtin/packages/cmake/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 7642df9f198..70d6c14351a 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -33,6 +33,7 @@ class Cmake(Package): list_url = 'https://cmake.org/files/' list_depth = 1 + version('3.8.1', 'e8ef820ddf7a650845252bca846696e7') version('3.8.0', 'f28cba717ba38ad82a488daed8f45b5b') version('3.7.2', '79bd7e65cd81ea3aa2619484ad6ff25a') version('3.7.1', 'd031d5a06e9f1c5367cdfc56fbd2a1c8') From eb001e4d5dc4b7bde6592a8d903f28f2545041bd Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 19 May 2017 18:31:53 -0400 Subject: [PATCH 0933/2394] hpx5: new version (#4273) --- var/spack/repos/builtin/packages/hpx5/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/hpx5/package.py b/var/spack/repos/builtin/packages/hpx5/package.py index a1b1b0fc6b6..55f253f4672 100644 --- a/var/spack/repos/builtin/packages/hpx5/package.py +++ b/var/spack/repos/builtin/packages/hpx5/package.py @@ -39,6 +39,7 @@ class Hpx5(AutotoolsPackage): homepage = "http://hpx.crest.iu.edu" url = "http://hpx.crest.iu.edu/release/hpx-3.1.0.tar.gz" + version('4.1.0', '43cb78758506f77416b95276a472f84f') version('4.0.0', 'b40dc03449ae1039cbb48ee149952b22') version('3.1.0', '9e90b8ac46788c009079632828c77628') version('2.0.0', '3d2ff3aab6c46481f9ec65c5b2bfe7a6') From 4b075de9de5847a5104ef008f24117a62e7e4f7a Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 19 May 2017 18:32:16 -0400 Subject: [PATCH 0934/2394] hwloc: new version (#4272) --- var/spack/repos/builtin/packages/hwloc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index 6efa2dfbd93..b2db0b3b38c 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -44,6 +44,7 @@ class Hwloc(AutotoolsPackage): list_url = "http://www.open-mpi.org/software/hwloc/" list_depth = 2 + version('1.11.7', '867a5266675e5bf1ef4ab66c459653f8') version('1.11.6', 'b4e95eadd2fbdb6d40bbd96be6f03c84') version('1.11.5', '8f5fe6a9be2eb478409ad5e640b2d3ba') version('1.11.4', 'b6f23eb59074fd09fdd84905d50b103d') From a32f8c33b045f8bcb70ad0cb5b00d4e0b0c373e0 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 19 May 2017 18:32:40 -0400 Subject: [PATCH 0935/2394] julia: New version 0.5.2 (#4259) --- var/spack/repos/builtin/packages/julia/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index 007a384f10e..ad44d026192 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -37,7 +37,8 @@ class Julia(Package): git='https://github.com/JuliaLang/julia.git', branch='master') version('release-0.5', git='https://github.com/JuliaLang/julia.git', branch='release-0.5') - version('0.5.1', 'bce119b98f274e0f07ce01498c463ad5', preferred=True) + version('0.5.2', '8c3fff150a6f96cf0536fb3b4eaa5cbb', preferred=True) + version('0.5.1', 'bce119b98f274e0f07ce01498c463ad5') version('0.5.0', 'b61385671ba74767ab452363c43131fb') version('release-0.4', git='https://github.com/JuliaLang/julia.git', branch='release-0.4') From c741cd900b81e65d3a2b959bb3744de745ffaac4 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 20 May 2017 16:40:10 +0200 Subject: [PATCH 0936/2394] magics fixes for versions > 2.29.x (#4302) --- var/spack/repos/builtin/packages/magics/package.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index f7df6ce2feb..22fb6a73c36 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -42,7 +42,7 @@ class Magics(Package): # The patch changes the hardcoded path to python in shebang to enable the # usage of the first python installation that appears in $PATH - patch('no_hardcoded_python.patch') + patch('no_hardcoded_python.patch', when='@:2.29.6') # The patch reorders includes and adds namespaces where necessary to # resolve ambiguity of invocations of isnan and isinf functions. The @@ -63,7 +63,8 @@ class Magics(Package): depends_on('python', type='build') depends_on('perl', type='build') depends_on('perl-xml-parser', type='build') - depends_on('grib-api') + depends_on('eccodes', when='@2.30.0:') + depends_on('grib-api', when='@:2.29.6') depends_on('proj') depends_on('boost') depends_on('expat') @@ -72,6 +73,7 @@ class Magics(Package): depends_on('libemos', when='+bufr') depends_on('qt', when='+metview+qt') + @when('@:2.29.6') def patch(self): filter_file('#!/usr/bin/perl', '#!/usr/bin/env perl', 'tools/xml2cc_new.pl') @@ -83,9 +85,13 @@ def install(self, spec, prefix): options.append('-DENABLE_PYTHON=OFF') options.append('-DBOOST_ROOT=%s' % spec['boost'].prefix) options.append('-DPROJ4_PATH=%s' % spec['proj'].prefix) - options.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix) options.append('-DENABLE_TESTS=OFF') + if self.version >= Version('2.30.0'): + options.append('-DECCODES_PATH=%s' % spec['eccodes'].prefix) + else: + options.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix) + if '+bufr' in spec: options.append('-DENABLE_BUFR=ON') options.append('-DLIBEMOS_PATH=%s' % spec['libemos'].prefix) From 17b2db0bd215bbd77319484b76bc8d950fa7564d Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sun, 21 May 2017 03:59:15 +0200 Subject: [PATCH 0937/2394] Fix ncview with netcdf+mpi (#4305) ncview has to be compiled using the same compiler as netcdf. --- var/spack/repos/builtin/packages/ncview/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py index 6f83aa9139e..ecd733ccea2 100644 --- a/var/spack/repos/builtin/packages/ncview/package.py +++ b/var/spack/repos/builtin/packages/ncview/package.py @@ -36,3 +36,13 @@ class Ncview(AutotoolsPackage): depends_on('udunits2') depends_on('libpng') depends_on('libxaw') + + def configure_args(self): + spec = self.spec + + config_args = [] + + if spec.satisfies('^netcdf+mpi'): + config_args.append('CC={0}'.format(spec['mpi'].mpicc)) + + return config_args From e4a3295c37f3bc68a659f7400ef3315d75b6e2ca Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sun, 21 May 2017 06:40:59 +0200 Subject: [PATCH 0938/2394] spark: remove whitespaces from run_env variable (#4210) --- var/spack/repos/builtin/packages/spark/package.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py index 3bc6abd234c..e955a759852 100644 --- a/var/spack/repos/builtin/packages/spark/package.py +++ b/var/spack/repos/builtin/packages/spark/package.py @@ -22,10 +22,11 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * - +import re import shutil +from spack import * + class Spark(Package): """Apache Spark is a fast and general engine @@ -72,4 +73,8 @@ def setup_environment(self, spack_env, run_env): hadoop = self.spec['hadoop'].command hadoop_classpath = hadoop('classpath', return_output=True) + # Remove whitespaces, as they can compromise syntax in + # module files + hadoop_classpath = re.sub('[\s+]', '', hadoop_classpath) + run_env.set('SPARK_DIST_CLASSPATH', hadoop_classpath) From ca2755d53268756f8c1c004f4f9e96f78765d8a8 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Sun, 21 May 2017 23:33:34 +1000 Subject: [PATCH 0939/2394] flex: create variant +lex that creates symlinks for lex and libl.{a,so} (#3894) * flex: create variant +lex that creates symlinks for lex and libl.{a,so} * flex: enable variant +lex by default * flex: use dso_suffix for portability; replace repetitive code with a loop --- .../repos/builtin/packages/flex/package.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py index 8f0c46bc56e..73d08d98e0e 100644 --- a/var/spack/repos/builtin/packages/flex/package.py +++ b/var/spack/repos/builtin/packages/flex/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import os class Flex(AutotoolsPackage): @@ -39,6 +40,9 @@ class Flex(AutotoolsPackage): version('2.6.0', '760be2ee9433e822b6eb65318311c19d') version('2.5.39', '5865e76ac69c05699f476515592750d7') + variant('lex', default=True, + description="Provide symlinks for lex and libl") + depends_on('bison', type='build') depends_on('gettext@0.19:', type='build') depends_on('help2man', type='build') @@ -61,3 +65,16 @@ def url_for_version(self, version): url += "/archive/flex-{0}.tar.gz".format(version.dashed) return url + + @run_after('install') + def symlink_lex(self): + if self.spec.satisfies('+lex'): + dso = dso_suffix + for dir, flex, lex in \ + ((self.prefix.bin, 'flex', 'lex'), + (self.prefix.lib, 'libfl.a', 'libl.a'), + (self.prefix.lib, 'libfl.' + dso, 'libl.' + dso)): + with working_dir(dir): + if (os.path.isfile(flex) and not + os.path.lexists(lex)): + symlink(flex, lex) From f9203d42812261b22417f1f8129416a825414301 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sun, 21 May 2017 20:34:16 +0200 Subject: [PATCH 0940/2394] libdrm depends on pkg-config (#4308) --- var/spack/repos/builtin/packages/libdrm/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libdrm/package.py b/var/spack/repos/builtin/packages/libdrm/package.py index bebc20f089a..750d3361d96 100644 --- a/var/spack/repos/builtin/packages/libdrm/package.py +++ b/var/spack/repos/builtin/packages/libdrm/package.py @@ -38,6 +38,7 @@ class Libdrm(Package): version('2.4.59', '105ac7af1afcd742d402ca7b4eb168b6') version('2.4.33', '86e4e3debe7087d5404461e0032231c8') + depends_on('pkg-config@0.9.0:', type='build') depends_on('libpciaccess@0.10:', when=(sys.platform != 'darwin')) depends_on('libpthread-stubs') From 132b3c56bc09e3cafef1355024d7efdee0e13744 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Mon, 22 May 2017 09:01:26 +1000 Subject: [PATCH 0941/2394] qt: patch JavaScriptCore to favour internal pcre headers (#4270) --- .../repos/builtin/packages/qt/package.py | 3 ++ .../repos/builtin/packages/qt/qt5-pcre.patch | 33 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/qt/qt5-pcre.patch diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 3737c70f5ac..c0b08d86f1f 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -73,6 +73,9 @@ class Qt(Package): # https://github.com/xboxdrv/xboxdrv/issues/188 patch('btn_trigger_happy.patch', when='@5.7.0:') + # https://github.com/LLNL/spack/issues/1517 + patch('qt5-pcre.patch', when='@5:') + patch('qt4-corewlan-new-osx.patch', when='@4') patch('qt4-pcre-include-conflict.patch', when='@4') patch('qt4-el-capitan.patch', when='@4') diff --git a/var/spack/repos/builtin/packages/qt/qt5-pcre.patch b/var/spack/repos/builtin/packages/qt/qt5-pcre.patch new file mode 100644 index 00000000000..8fdf25661c6 --- /dev/null +++ b/var/spack/repos/builtin/packages/qt/qt5-pcre.patch @@ -0,0 +1,33 @@ +--- a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExp.cpp 2016-09-17 20:55:14.000000000 +0000 ++++ b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExp.cpp 2017-05-17 01:55:10.000000000 +0000 +@@ -44,7 +44,7 @@ + #include "JIT.h" + #include "WRECGenerator.h" + #endif +-#include ++#include "../pcre/pcre.h" + + #endif + +--- a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.cpp 2016-09-17 20:55:14.000000000 +0000 ++++ b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.cpp 2017-05-17 01:55:51.000000000 +0000 +@@ -32,7 +32,7 @@ + #include "MacroAssembler.h" + #include "RegexCompiler.h" + +-#include "pcre.h" // temporary, remove when fallback is removed. ++#include "../pcre/pcre.h" // temporary, remove when fallback is removed. + + #if ENABLE(YARR_JIT) + +--- a/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.h 2016-09-17 20:55:14.000000000 +0000 ++++ b/qtscript/src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.h 2017-05-17 01:55:36.000000000 +0000 +@@ -34,7 +34,7 @@ + #include "RegexPattern.h" + #include + +-#include ++#include "../pcre/pcre.h" + struct JSRegExp; // temporary, remove when fallback is removed. + + #if CPU(X86) && !COMPILER(MSVC) From 8ab845939780d1dfcc9a405d9dafff0ed0f2b26d Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Mon, 22 May 2017 21:45:24 +1000 Subject: [PATCH 0942/2394] magics: use spack perl instead of system perl (#4310) --- var/spack/repos/builtin/packages/magics/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index 22fb6a73c36..fca92d69d44 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import glob class Magics(Package): @@ -73,10 +74,9 @@ class Magics(Package): depends_on('libemos', when='+bufr') depends_on('qt', when='+metview+qt') - @when('@:2.29.6') def patch(self): - filter_file('#!/usr/bin/perl', '#!/usr/bin/env perl', - 'tools/xml2cc_new.pl') + for plfile in glob.glob('*/*.pl'): + filter_file('#!/usr/bin/perl', '#!/usr/bin/env perl', plfile) def install(self, spec, prefix): options = [] From dd73c98d0e7d4e1ca7fe1750ee2bf3997d994715 Mon Sep 17 00:00:00 2001 From: "Robert D. French" Date: Mon, 22 May 2017 16:15:17 -0400 Subject: [PATCH 0943/2394] Add Microsoft's C++ Rest SDK (#4315) --- .../builtin/packages/cpprestsdk/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cpprestsdk/package.py diff --git a/var/spack/repos/builtin/packages/cpprestsdk/package.py b/var/spack/repos/builtin/packages/cpprestsdk/package.py new file mode 100644 index 00000000000..60952035631 --- /dev/null +++ b/var/spack/repos/builtin/packages/cpprestsdk/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cpprestsdk(CMakePackage): + """The C++ REST SDK is a Microsoft project for cloud-based client-server + communication in native code using a modern asynchronous C++ API design. + This project aims to help C++ developers connect to and interact with + services. """ + + homepage = "https://github.com/Microsoft/cpprestsdk" + url = "https://github.com/Microsoft/cpprestsdk/archive/v2.9.1.tar.gz" + + version('2.9.1', 'c3dd67d8cde8a65c2e994e2ede4439a2') + + depends_on('boost') + + root_cmakelists_dir = '../Release' From e89c699c06268aadca01255a006c6890a933dacf Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 23 May 2017 17:04:23 +0200 Subject: [PATCH 0944/2394] plumed: fixed compilation on rhel6 (#4318) * plumed: fixed compilation on rhel6 with mvapich2 and gcc@5.4.0 (#77) * plumed: prevent parallel compilation, as it breaks for the newest version --- var/spack/repos/builtin/packages/plumed/package.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index de59f572086..5b22fdb4ea9 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -113,6 +113,8 @@ class Plumed(AutotoolsPackage): force_autoreconf = True + parallel = False + def apply_patch(self, other): plumed = subprocess.Popen( [join_path(self.spec.prefix.bin, 'plumed'), 'patch', '-p'], @@ -126,7 +128,7 @@ def apply_patch(self, other): def setup_dependent_package(self, module, dependent_spec): # Make plumed visible from dependent packages - module.plumed = self.spec['plumed'].command + module.plumed = dependent_spec['plumed'].command @run_before('autoreconf') def filter_gslcblas(self): @@ -162,6 +164,14 @@ def configure_args(self): 'STATIC_LIBS=-mt_mpi' ]) + # Set flags to help find gsl + if '+gsl' in self.spec: + gsl_libs = self.spec['gsl'].libs + blas_libs = self.spec['blas'].libs + configure_opts.append('LDFLAGS={0}'.format( + (gsl_libs + blas_libs).ld_flags + )) + # Additional arguments configure_opts.extend([ '--enable-shared={0}'.format('yes' if '+shared' in spec else 'no'), From 1469cfd0e7b470704091ac0848bb8aebd1a23ccb Mon Sep 17 00:00:00 2001 From: Tom Merrick Date: Tue, 23 May 2017 10:05:05 -0500 Subject: [PATCH 0945/2394] Packages/r ergm (#4314) * Add mpi support to R * Add multiple precision math routines to R * Add packages for r-ergm and it's dependents * Fixed depends-on types * Correct flake8 errors --- .../repos/builtin/packages/r-coda/package.py | 40 ++++++++++++++++ .../builtin/packages/r-deoptimr/package.py | 36 +++++++++++++++ .../repos/builtin/packages/r-ergm/package.py | 46 +++++++++++++++++++ .../packages/r-laplacesdemon/package.py | 37 +++++++++++++++ .../builtin/packages/r-lpsolve/package.py | 40 ++++++++++++++++ .../builtin/packages/r-network/package.py | 37 +++++++++++++++ .../builtin/packages/r-quadprog/package.py | 36 +++++++++++++++ .../builtin/packages/r-robustbase/package.py | 40 ++++++++++++++++ .../packages/r-statnet-common/package.py | 36 +++++++++++++++ .../repos/builtin/packages/r-trust/package.py | 36 +++++++++++++++ 10 files changed, 384 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-coda/package.py create mode 100644 var/spack/repos/builtin/packages/r-deoptimr/package.py create mode 100644 var/spack/repos/builtin/packages/r-ergm/package.py create mode 100644 var/spack/repos/builtin/packages/r-laplacesdemon/package.py create mode 100644 var/spack/repos/builtin/packages/r-lpsolve/package.py create mode 100644 var/spack/repos/builtin/packages/r-network/package.py create mode 100644 var/spack/repos/builtin/packages/r-quadprog/package.py create mode 100644 var/spack/repos/builtin/packages/r-robustbase/package.py create mode 100644 var/spack/repos/builtin/packages/r-statnet-common/package.py create mode 100644 var/spack/repos/builtin/packages/r-trust/package.py diff --git a/var/spack/repos/builtin/packages/r-coda/package.py b/var/spack/repos/builtin/packages/r-coda/package.py new file mode 100644 index 00000000000..08f0f10bb42 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-coda/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RCoda(RPackage): + """Provides functions for summarizing and plotting the output from + Markov Chain Monte Carlo (MCMC) simulations, as well as + diagnostic tests of convergence to the equilibrium distribution + of the Markov chain.""" + + homepage = "https://cran.r-project.org/web/packages/coda/index.html" + url = "https://cran.r-project.org/src/contrib/coda_0.19-1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/coda" + + version('0.19-1', '0d2aca6a5a3bdae9542708817c1ec001') + + depends_on('r-lattice', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-deoptimr/package.py b/var/spack/repos/builtin/packages/r-deoptimr/package.py new file mode 100644 index 00000000000..758b10f9e40 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-deoptimr/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RDeoptimr(RPackage): + """An implementation of a bespoke jDE variant of the Differential + Evolution stochastic algorithm for global optimization of + nonlinear programming problems.""" + + homepage = "https://cran.r-project.org/web/packages/DEoptimR/index.html" + url = "https://cran.r-project.org/src/contrib/DEoptimR_1.0-8.tar.gz" + + version('1.0-8', 'c85836a504fbe4166e3c8eba0efe705d') diff --git a/var/spack/repos/builtin/packages/r-ergm/package.py b/var/spack/repos/builtin/packages/r-ergm/package.py new file mode 100644 index 00000000000..72663cc1f8e --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ergm/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RErgm(RPackage): + """An integrated set of tools to analyze and simulate networks based + on exponential-family random graph models (ERGM). "ergm" is a + part of the "statnet" suite of packages for network analysis.""" + + homepage = "http://statnet.org" + url = "https://cran.r-project.org/src/contrib/ergm_3.7.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/ergm" + + version('3.7.1', '431ae430c76b2408988f469831d80126') + + depends_on('r-robustbase@0.9-10:', type=('build', 'run')) + depends_on('r-coda@0.18-1:', type=('build', 'run')) + depends_on('r-trust', type=('build', 'run')) + depends_on('r-matrix', type=('build', 'run')) + depends_on('r-lpsolve', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run')) + depends_on('r-statnet-common@3.3:', type=('build', 'run')) + depends_on('r-network@1.13:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-laplacesdemon/package.py b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py new file mode 100644 index 00000000000..1518b34bea6 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RLaplacesdemon(RPackage): + """Provides a complete environment for Bayesian inference using a variety + of different samplers (see ?LaplacesDemon for an overview). The README + describes the history of the package development process.""" + + homepage = "https://github.com/LaplacesDemonR/LaplacesDemon" + url = "https://cran.r-project.org/src/contrib/LaplacesDemon_16.0.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/LaplacesDemon" + + version('16.0.1', '1e4dab2dd0e27251734d68b0bfdbe911') diff --git a/var/spack/repos/builtin/packages/r-lpsolve/package.py b/var/spack/repos/builtin/packages/r-lpsolve/package.py new file mode 100644 index 00000000000..1ef84eb6729 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-lpsolve/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RLpsolve(RPackage): + """Lp_solve is freely available (under LGPL 2) software for solving + linear, integer and mixed integer programs. In this + implementation we supply a "wrapper" function in C and some R + functions that solve general linear/integer problems, assignment + problems, and transportation problems. This version calls + lp_solve""" + + homepage = "https://cran.r-project.org/web/packages/lpSolve/index.html" + url = "https://cran.r-project.org/src/contrib/lpSolve_5.6.13.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/lpSolve" + + version('5.6.13', '8471654d9ae76e0f85ff3449433d4bc1') diff --git a/var/spack/repos/builtin/packages/r-network/package.py b/var/spack/repos/builtin/packages/r-network/package.py new file mode 100644 index 00000000000..9fdc59c02ba --- /dev/null +++ b/var/spack/repos/builtin/packages/r-network/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RNetwork(RPackage): + """Tools to create and modify network objects. The network class can + represent a range of relational data types, and supports + arbitrary vertex/edge/graph attributes.""" + + homepage = "https://statnet.org" + url = "https://cran.r-project.org/src/contrib/network_1.13.0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/network" + + version('1.13.0', 'd0b967d6f1aad43b6479d72f29b705de') diff --git a/var/spack/repos/builtin/packages/r-quadprog/package.py b/var/spack/repos/builtin/packages/r-quadprog/package.py new file mode 100644 index 00000000000..84e4624e169 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-quadprog/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RQuadprog(RPackage): + """This package contains routines and documentation for solving + quadratic programming problems.""" + + homepage = "https://cran.r-project.org/web/packages/quadprog/index.html" + url = "https://cran.r-project.org/src/contrib/quadprog_1.5-5.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/quadprog" + + version('1.5-5', '8442f37afd8d0b19b12e77d63e6515ad') diff --git a/var/spack/repos/builtin/packages/r-robustbase/package.py b/var/spack/repos/builtin/packages/r-robustbase/package.py new file mode 100644 index 00000000000..1b7db70fbee --- /dev/null +++ b/var/spack/repos/builtin/packages/r-robustbase/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RRobustbase(RPackage): + """"Essential" Robust Statistics. Tools allowing to analyze data + with robust methods. This includes regression methodology + including model selections and multivariate statistics where we + strive to cover the book "Robust Statistics, Theory and Methods" + by 'Maronna, Martin and Yohai'; Wiley 2006.""" + + homepage = "https://robustbase.r-forge.r-project.org" + url = "https://cran.r-project.org/src/contrib/robustbase_0.92-7.tar.gz" + + version('0.92-7', 'db3c8d12f9729b35bad17abf09e80b72') + + depends_on('r-deoptimr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-statnet-common/package.py b/var/spack/repos/builtin/packages/r-statnet-common/package.py new file mode 100644 index 00000000000..68bf2c4222c --- /dev/null +++ b/var/spack/repos/builtin/packages/r-statnet-common/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RStatnetCommon(RPackage): + """Non-statistical utilities used by the software developed by the + Statnet Project. They may also be of use to others.""" + + homepage = "http://www.statnet.org" + url = "https://cran.r-project.org/src/contrib/statnet.common_3.3.0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/statnet.common" + + version('3.3.0', '36bc11098dcd3652a4beb05c156ad6c8') diff --git a/var/spack/repos/builtin/packages/r-trust/package.py b/var/spack/repos/builtin/packages/r-trust/package.py new file mode 100644 index 00000000000..622a0325a7e --- /dev/null +++ b/var/spack/repos/builtin/packages/r-trust/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RTrust(RPackage): + """Does local optimization using two derivatives and trust regions. + Guaranteed to converge to local minimum of objective function.""" + + homepage = "http://www.stat.umn.edu/geyer/trust" + url = "https://cran.r-project.org/src/contrib/trust_0.1-7.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/trust" + + version('0.1-7', '7e218b3a6b33bd77bd7e86dc6360418d') From 4553b1400cd6432ecadfb80e3ef6c44f098481b4 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Wed, 24 May 2017 01:06:59 +1000 Subject: [PATCH 0946/2394] Magics with eccodes variant (#4320) * magics: use filter_file to avoid using system python in all versions * magics: add eccodes variant to switch between eccodes and grib-api --- .../packages/magics/no_hardcoded_python.patch | 5 ---- .../repos/builtin/packages/magics/package.py | 26 +++++++++++-------- 2 files changed, 15 insertions(+), 16 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/magics/no_hardcoded_python.patch diff --git a/var/spack/repos/builtin/packages/magics/no_hardcoded_python.patch b/var/spack/repos/builtin/packages/magics/no_hardcoded_python.patch deleted file mode 100644 index e2e2a5d1ba9..00000000000 --- a/var/spack/repos/builtin/packages/magics/no_hardcoded_python.patch +++ /dev/null @@ -1,5 +0,0 @@ ---- a/tools/xml2mv.py 2016-06-27 17:49:27.000000000 +0200 -+++ a/tools/xml2mv.py 2016-09-13 16:25:17.246960456 +0200 -@@ -1 +1 @@ --#!/usr/bin/python -+#!/usr/bin/env python diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index fca92d69d44..1b3e3e87bf8 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -41,10 +41,6 @@ class Magics(Package): version('2.29.4', '91c561f413316fb665b3bb563f3878d1') version('2.29.0', 'db20a4d3c51a2da5657c31ae3de59709', preferred=True) - # The patch changes the hardcoded path to python in shebang to enable the - # usage of the first python installation that appears in $PATH - patch('no_hardcoded_python.patch', when='@:2.29.6') - # The patch reorders includes and adds namespaces where necessary to # resolve ambiguity of invocations of isnan and isinf functions. The # patch is not needed since the version 2.29.1 @@ -55,6 +51,7 @@ class Magics(Package): variant('cairo', default=True, description='Enable cairo support[png/jpeg]') variant('metview', default=False, description='Enable metview support') variant('qt', default=False, description='Enable metview support with qt') + variant('eccodes', default=False, description='Use eccodes instead of grib-api') depends_on('cmake', type='build') depends_on('pkg-config', type='build') @@ -64,8 +61,8 @@ class Magics(Package): depends_on('python', type='build') depends_on('perl', type='build') depends_on('perl-xml-parser', type='build') - depends_on('eccodes', when='@2.30.0:') - depends_on('grib-api', when='@:2.29.6') + depends_on('eccodes', when='+eccodes') + depends_on('grib-api', when='~eccodes') depends_on('proj') depends_on('boost') depends_on('expat') @@ -74,9 +71,14 @@ class Magics(Package): depends_on('libemos', when='+bufr') depends_on('qt', when='+metview+qt') + conflicts('+eccodes', when='@:2.29.0') + + # Replace system python and perl by spack versions: def patch(self): for plfile in glob.glob('*/*.pl'): filter_file('#!/usr/bin/perl', '#!/usr/bin/env perl', plfile) + for pyfile in glob.glob('*/*.py'): + filter_file('#!/usr/bin/python', '#!/usr/bin/env python', pyfile) def install(self, spec, prefix): options = [] @@ -87,11 +89,6 @@ def install(self, spec, prefix): options.append('-DPROJ4_PATH=%s' % spec['proj'].prefix) options.append('-DENABLE_TESTS=OFF') - if self.version >= Version('2.30.0'): - options.append('-DECCODES_PATH=%s' % spec['eccodes'].prefix) - else: - options.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix) - if '+bufr' in spec: options.append('-DENABLE_BUFR=ON') options.append('-DLIBEMOS_PATH=%s' % spec['libemos'].prefix) @@ -119,6 +116,13 @@ def install(self, spec, prefix): else: options.append('-DENABLE_METVIEW=OFF') + if '+eccodes' in spec: + options.append('-DENABLE_ECCODES=ON') + options.append('-DECCODES_PATH=%s' % spec['eccodes'].prefix) + else: + options.append('-DENABLE_ECCODES=OFF') + options.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix) + if (self.compiler.f77 is None) or (self.compiler.fc is None): options.append('-DENABLE_FORTRAN=OFF') From d38e601134fd251b3ef7229ed8f384526f1b165f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 23 May 2017 13:47:06 -0500 Subject: [PATCH 0947/2394] Add latest version of libpciaccess (#4325) --- var/spack/repos/builtin/packages/libpciaccess/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libpciaccess/package.py b/var/spack/repos/builtin/packages/libpciaccess/package.py index 94b9dfe173b..ec75c0993be 100644 --- a/var/spack/repos/builtin/packages/libpciaccess/package.py +++ b/var/spack/repos/builtin/packages/libpciaccess/package.py @@ -29,8 +29,9 @@ class Libpciaccess(AutotoolsPackage): """Generic PCI access library.""" homepage = "http://cgit.freedesktop.org/xorg/lib/libpciaccess/" - url = "http://xorg.freedesktop.org/archive/individual/lib/libpciaccess-0.13.4.tar.gz" + url = "http://xorg.freedesktop.org/archive/individual/lib/libpciaccess-0.13.5.tar.gz" + version('0.13.5', '81468664fde96d1df2c3216fdf3c4a20') version('0.13.4', 'cc1fad87da60682af1d5fa43a5da45a4') depends_on('libtool', type='build') From 39ac8abbbd1bae825e24b0f399f7a1371509b04c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 23 May 2017 13:37:24 -0700 Subject: [PATCH 0948/2394] Add support for addl versions of bcl2fastq2 (#4328) Two changes: - It seems that Illumina version numbers are dotted and that the dashed version in the 2.18... filename is an anomaly (based on the names for 2.17.1.14 and 2.19.0). `url_for_version` does the right thing for 2.18. It will need to be fixed when support for 2.19 is added. 2.17 is no longer generally available so it gets a pass. - Add version and hash for 2.17.1.14. 2.17.1.14 is no longer distributed. If you have a copy of the source tarball, you can drop it into a local mirror w/ the name mirror/bcl2fastq2/bcl2fastq2-2.17.1.14.zip and go from there. --- var/spack/repos/builtin/packages/bcl2fastq2/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/package.py b/var/spack/repos/builtin/packages/bcl2fastq2/package.py index 98799a1444e..2aff74b8a8e 100644 --- a/var/spack/repos/builtin/packages/bcl2fastq2/package.py +++ b/var/spack/repos/builtin/packages/bcl2fastq2/package.py @@ -39,7 +39,11 @@ class Bcl2fastq2(Package): homepage = "https://support.illumina.com/downloads/bcl2fastq-conversion-software-v2-18.html" url = "https://support.illumina.com/content/dam/illumina-support/documents/downloads/software/bcl2fastq/bcl2fastq2-v2-18-0-12-tar.zip" - version('2-18-0-12', 'fbe06492117f65609c41be0c27e3215c') + version('2.18.0.12', 'fbe06492117f65609c41be0c27e3215c') + # 2.17.1.14 is no longer distributed. If you have a copy of the + # source tarball, you can drop it into a local mirror w/ the name + # mirror/bcl2fastq2/bcl2fastq2-2.17.1.14.zip and go from there. + version('2.17.1.14', '7426226c6db095862e636b95c38608d3') depends_on('boost@1.54.0') depends_on('cmake@2.8.9:') From 43edcfbf13d8811347750a653ee8a7b1b314c228 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 23 May 2017 17:30:14 -0400 Subject: [PATCH 0949/2394] opencoarrays: new version (#4271) --- var/spack/repos/builtin/packages/opencoarrays/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/opencoarrays/package.py b/var/spack/repos/builtin/packages/opencoarrays/package.py index 3500cf75844..22d2152495f 100644 --- a/var/spack/repos/builtin/packages/opencoarrays/package.py +++ b/var/spack/repos/builtin/packages/opencoarrays/package.py @@ -36,6 +36,7 @@ class Opencoarrays(CMakePackage): homepage = "http://www.opencoarrays.org/" url = "https://github.com/sourceryinstitute/OpenCoarrays/releases/download/1.8.4/OpenCoarrays-1.8.4.tar.gz" + version('1.8.10', '9ba1670647db4d986634abf743abfd6a') version('1.8.4', '7c9eaffc3a0b5748d0d840e52ec9d4ad') version('1.8.0', 'ca78d1507b2a118c75128c6c2e093e27') version('1.7.4', '85ba87def461e3ff5a164de2e6482930') From 785168f5a1b613ab76f0ed65896e5bf0b0b6af24 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Tue, 23 May 2017 14:35:42 -0700 Subject: [PATCH 0950/2394] fix build command for caffe with openblas (#4299) --- var/spack/repos/builtin/packages/caffe/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index 5d83b8e1a70..ba01c25a6e4 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -73,7 +73,8 @@ class Caffe(CMakePackage): def cmake_args(self): spec = self.spec - args = ['-DBLAS={0}'.format(spec['blas'].name), + args = ['-DBLAS={0}'.format('open' if spec['blas'].name == 'openblas' + else spec['blas'].name), '-DCPU_ONLY=%s' % ('~gpu' in spec), '-DUSE_CUDNN=%s' % ('+gpu' in spec), '-DBUILD_python=%s' % ('+python' in spec), From 929c45916bf9f9b483f2a6999fad68127c7b667e Mon Sep 17 00:00:00 2001 From: Luigi Calori Date: Tue, 23 May 2017 23:36:48 +0200 Subject: [PATCH 0951/2394] new package virtualgl (#4297) * new package virtualgl, depends on mesa-glu but NOT on mesa, so added a variant to mesa-glu * add comment on mesa variant of mesa-glu --- .../builtin/packages/mesa-glu/package.py | 4 +- .../builtin/packages/virtualgl/package.py | 45 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/virtualgl/package.py diff --git a/var/spack/repos/builtin/packages/mesa-glu/package.py b/var/spack/repos/builtin/packages/mesa-glu/package.py index 02ce82e44ae..ecc60b61350 100644 --- a/var/spack/repos/builtin/packages/mesa-glu/package.py +++ b/var/spack/repos/builtin/packages/mesa-glu/package.py @@ -34,4 +34,6 @@ class MesaGlu(AutotoolsPackage): version('9.0.0', 'bbc57d4fe3bd3fb095bdbef6fcb977c4') - depends_on('mesa') + variant('mesa', default=True, + description='Usually depends on mesa, disable for accelerated OpenGL') + depends_on('mesa', when='+mesa') diff --git a/var/spack/repos/builtin/packages/virtualgl/package.py b/var/spack/repos/builtin/packages/virtualgl/package.py new file mode 100644 index 00000000000..744c6da56f0 --- /dev/null +++ b/var/spack/repos/builtin/packages/virtualgl/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class Virtualgl(CMakePackage): + """VirtualGL redirects 3D commands from a Unix/Linux OpenGL application + onto a server-side GPU and converts the rendered 3D images into a video + stream with which remote clients can interact to view and control the + 3D application in real time.""" + + homepage = "http://www.virtualgl.org/Main/HomePage" + url = "http://downloads.sourceforge.net/project/virtualgl/2.5.2/VirtualGL-2.5.2.tar.gz" + + version('2.5.2', '1a9f404f4a35afa9f56381cb33ed210c') + + depends_on("libjpeg-turbo") + # virtualgl require OpenGL but also wants to link libglu + # on systems without development packages, provide with spack and depends + # on mesa-glu, but we do not want Mesa OpenGL sw emulation, so added + # variant on mesa-glu to disable dependencies on sw emulated OpenGL + depends_on("mesa-glu~mesa") From d0a81fda3056d988acc3d783501c49733944113d Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 23 May 2017 14:37:33 -0700 Subject: [PATCH 0952/2394] Correct installation step for mummer (and dependency) (#4293) * Trailing whitespace cleanup * Handcraft an install process for mummer (grumble) Mummer punts on an installation step, they just build in and run from the same directory. Mummer also has various hardcoded paths built into it that allow it to find other executables that it needs as well as its Perl library. This updates the package to deal with this approach. It patches the Makefile and scripts/Makefile so that the correct info is fed to sed when it munges the perl scripts. The install step is now finer grained and puts things where mummer relatively wants to find them. * Add perl dependency * perl should be build/run dependency * Fix whitespace * Delete stray u at top of file --- .../builtin/packages/mummer/Makefile.patch | 24 ++++++ .../repos/builtin/packages/mummer/package.py | 34 ++++++--- .../packages/mummer/scripts-Makefile.patch | 74 +++++++++++++++++++ 3 files changed, 121 insertions(+), 11 deletions(-) create mode 100644 var/spack/repos/builtin/packages/mummer/Makefile.patch create mode 100644 var/spack/repos/builtin/packages/mummer/scripts-Makefile.patch diff --git a/var/spack/repos/builtin/packages/mummer/Makefile.patch b/var/spack/repos/builtin/packages/mummer/Makefile.patch new file mode 100644 index 00000000000..0c96565afbf --- /dev/null +++ b/var/spack/repos/builtin/packages/mummer/Makefile.patch @@ -0,0 +1,24 @@ +--- a/Makefile 2017-05-15 17:33:05.132803923 -0700 ++++ b/Makefile 2017-05-16 16:01:29.264842369 -0700 +@@ -35,6 +35,13 @@ + TIGR_SRC_DIR := $(TOP_DIR)/src/tigr + KURTZ_SRC_DIR := $(TOP_DIR)/src/kurtz + ++ifndef INSTALL_TOP_DIR ++INSTALL_TOP_DIR := $(TOP_DIR) ++endif ++INSTALL_BIN_DIR := $(INSTALL_TOP_DIR)/bin ++INSTALL_AUX_BIN_DIR := $(INSTALL_TOP_DIR)/aux_bin ++INSTALL_SCRIPT_DIR := $(INSTALL_TOP_DIR)/scripts ++ + CC := $(filter /%,$(shell /bin/sh -c 'type gcc')) + CXX := $(filter /%,$(shell /bin/sh -c 'type g++')) + SED := $(filter /%,$(shell /bin/sh -c 'type sed')) +@@ -52,6 +59,7 @@ + + #-- EXPORT THESE VARIABLES TO OTHER MAKEFILES + export BIN_DIR AUX_BIN_DIR CXX CC CFLAGS CXXFLAGS LDFLAGS ++export INSTALL_BIN_DIR INSTALL_AUX_BIN_DIR INSTALL_SCRIPT_DIR + + + diff --git a/var/spack/repos/builtin/packages/mummer/package.py b/var/spack/repos/builtin/packages/mummer/package.py index 49533ed95e5..222aab54b79 100644 --- a/var/spack/repos/builtin/packages/mummer/package.py +++ b/var/spack/repos/builtin/packages/mummer/package.py @@ -34,22 +34,34 @@ class Mummer(Package): version('3.23', 'f2422b3d2638dba4baedb71b1acdffa2') depends_on('gnuplot') + depends_on('perl', type=('build', 'run')) + + patch('Makefile.patch') + patch('scripts-Makefile.patch') def install(self, spec, prefix): if self.run_tests: make('check') - make('install') - mkdirp(prefix.bin) + make('INSTALL_TOP_DIR={0}'.format(prefix)) + bd = prefix.bin + abd = join_path(prefix, 'aux_bin') + sd = join_path(prefix, 'scripts') + mkdirp(bd) + mkdirp(abd) + mkdirp(sd) - bins = ["show-tiling", "show-snps", "show-coords", "show-aligns", - "show-diff", "delta-filter", "combineMUMs", "mummer", - "repeat-match", "annotate", "mgaps", "gaps", "dnadiff", - "nucmer2xfig", "run-mummer3", "mummerplot", "promer", + bins = ["show-tiling", "show-snps", "show-coords", "show-aligns", + "show-diff", "delta-filter", "combineMUMs", "mummer", + "repeat-match", "annotate", "mgaps", "gaps", "dnadiff", + "nucmer2xfig", "run-mummer3", "mummerplot", "promer", "run-mummer1", "nucmer", "mapview", "exact-tandems"] aux_bins = ["aux_bin/postnuc", "aux_bin/postpro", "aux_bin/prenuc", "aux_bin/prepro"] - - for b in bins: - install(b, join_path(prefix.bin, b)) - for b in aux_bins: - install(b, join_path(prefix.bin, b[8:])) + scripts = ["scripts/Foundation.pm"] + + for f in bins: + install(f, join_path(bd, f)) + for f in aux_bins: + install(f, join_path(abd, f[8:])) + for f in scripts: + install(f, join_path(sd, f[8:])) diff --git a/var/spack/repos/builtin/packages/mummer/scripts-Makefile.patch b/var/spack/repos/builtin/packages/mummer/scripts-Makefile.patch new file mode 100644 index 00000000000..961a4d5463d --- /dev/null +++ b/var/spack/repos/builtin/packages/mummer/scripts-Makefile.patch @@ -0,0 +1,74 @@ +--- a/scripts/Makefile 2011-12-16 18:49:26.000000000 -0800 ++++ b/scripts/Makefile 2017-05-16 16:05:48.697853000 -0700 +@@ -37,56 +37,56 @@ + #-- not so PHONY rules --# + exact-tandems: exact-tandems.csh + $(SED) -e 's?__CSH_PATH?$(CSH)?g' \ +- -e 's?__BIN_DIR?$(BIN_DIR)?g' \ +- -e 's?__SCRIPT_DIR?$(SCRIPT_DIR)?g' \ ++ -e 's?__BIN_DIR?$(INSTALL_BIN_DIR)?g' \ ++ -e 's?__SCRIPT_DIR?$(INSTALL_SCRIPT_DIR)?g' \ + exact-tandems.csh > $(BIN_DIR)/exact-tandems + chmod 755 $(BIN_DIR)/exact-tandems + + mapview: mapview.pl + $(SED) -e 's?__PERL_PATH?$(PERL)?g' \ +- -e 's?__SCRIPT_DIR?$(SCRIPT_DIR)?g' \ ++ -e 's?__SCRIPT_DIR?$(INSTALL_SCRIPT_DIR)?g' \ + mapview.pl > $(BIN_DIR)/mapview + chmod 755 $(BIN_DIR)/mapview + + mummerplot: mummerplot.pl Foundation.pm + $(SED) -e 's?__PERL_PATH?$(PERL)?g' \ +- -e 's?__SCRIPT_DIR?$(SCRIPT_DIR)?g' \ +- -e 's?__BIN_DIR?$(BIN_DIR)?g' \ ++ -e 's?__SCRIPT_DIR?$(INSTALL_SCRIPT_DIR)?g' \ ++ -e 's?__BIN_DIR?$(INSTALL_BIN_DIR)?g' \ + mummerplot.pl > $(BIN_DIR)/mummerplot + chmod 755 $(BIN_DIR)/mummerplot + + dnadiff: dnadiff.pl Foundation.pm + $(SED) -e 's?__PERL_PATH?$(PERL)?g' \ +- -e 's?__SCRIPT_DIR?$(SCRIPT_DIR)?g' \ +- -e 's?__BIN_DIR?$(BIN_DIR)?g' \ ++ -e 's?__SCRIPT_DIR?$(INSTALL_SCRIPT_DIR)?g' \ ++ -e 's?__BIN_DIR?$(INSTALL_BIN_DIR)?g' \ + dnadiff.pl > $(BIN_DIR)/dnadiff + chmod 755 $(BIN_DIR)/dnadiff + + nucmer: nucmer.pl Foundation.pm + $(SED) -e 's?__PERL_PATH?$(PERL)?g' \ +- -e 's?__SCRIPT_DIR?$(SCRIPT_DIR)?g' \ +- -e 's?__AUX_BIN_DIR?$(AUX_BIN_DIR)?g' \ +- -e 's?__BIN_DIR?$(BIN_DIR)?g' \ ++ -e 's?__SCRIPT_DIR?$(INSTALL_SCRIPT_DIR)?g' \ ++ -e 's?__AUX_BIN_DIR?$(INSTALL_AUX_BIN_DIR)?g' \ ++ -e 's?__BIN_DIR?$(INSTALL_BIN_DIR)?g' \ + nucmer.pl > $(BIN_DIR)/nucmer + chmod 755 $(BIN_DIR)/nucmer + + promer: promer.pl Foundation.pm + $(SED) -e 's?__PERL_PATH?$(PERL)?g' \ +- -e 's?__SCRIPT_DIR?$(SCRIPT_DIR)?g' \ +- -e 's?__AUX_BIN_DIR?$(AUX_BIN_DIR)?g' \ +- -e 's?__BIN_DIR?$(BIN_DIR)?g' \ ++ -e 's?__SCRIPT_DIR?$(INSTALL_SCRIPT_DIR)?g' \ ++ -e 's?__AUX_BIN_DIR?$(INSTALL_AUX_BIN_DIR)?g' \ ++ -e 's?__BIN_DIR?$(INSTALL_BIN_DIR)?g' \ + promer.pl > $(BIN_DIR)/promer + chmod 755 $(BIN_DIR)/promer + + run-mummer1: run-mummer1.csh + $(SED) -e 's?__CSH_PATH?$(CSH)?g' \ +- -e 's?__BIN_DIR?$(BIN_DIR)?g' \ ++ -e 's?__BIN_DIR?$(INSTALL_BIN_DIR)?g' \ + run-mummer1.csh > $(BIN_DIR)/run-mummer1 + chmod 755 $(BIN_DIR)/run-mummer1 + + run-mummer3: run-mummer3.csh + $(SED) -e 's?__CSH_PATH?$(CSH)?g' \ +- -e 's?__BIN_DIR?$(BIN_DIR)?g' \ ++ -e 's?__BIN_DIR?$(INSTALL_BIN_DIR)?g' \ + run-mummer3.csh > $(BIN_DIR)/run-mummer3 + chmod 755 $(BIN_DIR)/run-mummer3 + From 0932b16d4ef905508630d5c11d3719b3b08d1b2a Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Wed, 24 May 2017 07:43:22 +1000 Subject: [PATCH 0953/2394] cairo: ensure that X support is disabled for variant "~X" (#4242) * cairo: ensure that X support is disabled for variant "~X" * cairo: explicitly enable X support for +X variant * cairo: prefer "variant in spec" over spec.satisfies(variant) --- var/spack/repos/builtin/packages/cairo/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/cairo/package.py b/var/spack/repos/builtin/packages/cairo/package.py index 5d04bf29fa7..a7e0d150b82 100644 --- a/var/spack/repos/builtin/packages/cairo/package.py +++ b/var/spack/repos/builtin/packages/cairo/package.py @@ -51,4 +51,8 @@ class Cairo(AutotoolsPackage): def configure_args(self): args = ["--disable-trace", # can cause problems with libiberty "--enable-tee"] + if '+X' in self.spec: + args.extend(["--enable-xlib", "--enable-xcb"]) + else: + args.extend(["--disable-xlib", "--disable-xcb"]) return args From 315bda3487ca06bdd872efec6349920289bfad64 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 May 2017 06:57:31 -0500 Subject: [PATCH 0954/2394] Fix PGI version detection: 17.4-0 -> 17.4 (#4251) --- lib/spack/spack/compilers/pgi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/compilers/pgi.py b/lib/spack/spack/compilers/pgi.py index ed8bad1a9ba..cfc3d8ea573 100644 --- a/lib/spack/spack/compilers/pgi.py +++ b/lib/spack/spack/compilers/pgi.py @@ -77,4 +77,4 @@ def default_version(cls, comp): on PowerPC. """ return get_compiler_version( - comp, '-V', r'pg[^ ]* ([0-9.-]+) [^ ]+ target on ') + comp, '-V', r'pg[^ ]* ([0-9.]+)-[0-9]+ [^ ]+ target on ') From a0e7169df6328b4fea4cd2500fa2f959fad537d6 Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Wed, 24 May 2017 11:25:31 -0400 Subject: [PATCH 0955/2394] added new R package - r-rgl (#4335) --- .../repos/builtin/packages/r-rgl/package.py | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-rgl/package.py diff --git a/var/spack/repos/builtin/packages/r-rgl/package.py b/var/spack/repos/builtin/packages/r-rgl/package.py new file mode 100644 index 00000000000..a4b912a6d5c --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rgl/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RRgl(RPackage): + """Provides medium to high level functions for 3D interactive graphics, + including functions modelled on base graphics (plot3d(), etc.) as well as + functions for constructing representations of geometric objects (cube3d(), + etc.). Output may be on screen using OpenGL, or to various standard + 3D file formats including WebGL, PLY, OBJ, STL as well as 2D image formats, + including PNG, Postscript, SVG, PGF.""" + + homepage = "https://r-forge.r-project.org/projects/rgl" + url = "https://cloud.r-project.org/src/contrib/rgl_0.98.1.tar.gz" + + list_url = 'https://cloud.r-project.org/src/contrib/Archive/rgl' + + version('0.98.1', 'bd69e1d33f1590feb4b6dc080b133e5b') + + depends_on('r@3.2:3.9') + depends_on('zlib', type=('link')) + depends_on('libpng', type=('link')) + depends_on('freetype', type=('link')) + depends_on('mesa', type=('link')) + depends_on('mesa-glu', type=('link')) + depends_on('r-htmlwidgets', type=('build', 'run')) + depends_on('r-htmltools', type=('build', 'run')) + depends_on('r-knitr', type=('build', 'run')) + depends_on('r-jsonlite', type=('build', 'run')) + depends_on('r-shiny', type=('build', 'run')) + depends_on('r-magrittr', type=('build', 'run')) From c1cea7ebcfdcb2573439c8185dae35ce5e55c43f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 24 May 2017 14:20:13 -0500 Subject: [PATCH 0956/2394] Add latest version of CONVERGE (#4337) * Add latest version of CONVERGE * Flake8 fixes --- .../builtin/packages/converge/package.py | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/converge/package.py b/var/spack/repos/builtin/packages/converge/package.py index 429be8542d2..c1d039132dd 100644 --- a/var/spack/repos/builtin/packages/converge/package.py +++ b/var/spack/repos/builtin/packages/converge/package.py @@ -24,7 +24,6 @@ ############################################################################## from spack import * from distutils.dir_util import copy_tree -import os class Converge(Package): @@ -37,25 +36,30 @@ class Converge(Package): parameters. This grid generation method completely eliminates the need to manually generate a grid. In addition, CONVERGE offers many other features to expedite the setup process and to ensure that your simulations are as - computationally efficient as possible. - - Note: CONVERGE is licensed software. You will need to create an account on - the CONVERGE homepage and download CONVERGE yourself. Spack will search - your current directory for the download file. Alternatively, add this file - to a mirror so that Spack can find it. For instructions on how to set up a - mirror, see http://spack.readthedocs.io/en/latest/mirrors.html""" + computationally efficient as possible.""" homepage = "https://www.convergecfd.com/" - url = "file://%s/converge_install_2.3.16.tar.gz" % os.getcwd() + url = "https://download.convergecfd.com/download/CONVERGE_2.4/Full_Solver_Packages/converge_install_2.4.10.tar.gz" + # In order to view available versions, you need to register for an account: + # https://download.convergecfd.com/wp-login.php?action=register + + version('2.4.10', '53f5bd4bfb39005bebae46b8d6ee3ce6') version('2.3.16', '8b80f1e73a63181c427c7732ad279986') variant('mpi', default=True, description='Build with MPI support') - # The Converge Getting Started Guide recommends: - # MPICH: 3.1.4 - # HP-MPI: 2.0.3+ - # OpenMPI: 1.6.* + # The CONVERGE Getting Started Guide recommends: + # + # +--------------+--------+---------+---------+ + # | MPI Packages | v2.2 | v2.3 | v2.4 | + # +--------------+--------+---------+---------+ + # | MPICH | 1.2.1 | 3.1.4 | | + # | HP-MPI | 2.0.3+ | 2.0.3+ | | + # | Platform MPI | | 9.1.2 | 9.1.2 | + # | Open MPI | 1.6+ | 1.6+ | 1.10.1+ | + # | Intel MPI | | 17.0.98 | 17.0.98 | + # +--------------+--------+---------+---------+ depends_on('mpi', when='+mpi') # Licensing @@ -67,3 +71,7 @@ class Converge(Package): def install(self, spec, prefix): copy_tree('.', prefix) + + def setup_environment(self, spack_env, run_env): + run_env.set('CONVERGE_ROOT', self.prefix) + run_env.prepend_path('PATH', join_path(self.prefix, 'l_x86_64', 'bin')) From 12ab882eba1631f85f4ebd2acfe1a9c41857ca79 Mon Sep 17 00:00:00 2001 From: becker33 Date: Wed, 24 May 2017 17:13:18 -0700 Subject: [PATCH 0957/2394] Fix issues parsing multiple anonymous specs (#4199) * fix parser * Removed xfails * cleaned up debug print statements * make use of these changes in gcc * Added comment explaining unreachable line, line left for added protection --- lib/spack/spack/spec.py | 31 +++++++++++++------ lib/spack/spack/test/spec_syntax.py | 11 ++----- .../repos/builtin/packages/gcc/package.py | 19 +++++------- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index ff213c59866..9e89feb1483 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2958,16 +2958,23 @@ def do_parse(self): # We're parsing an anonymous spec beginning with a # key-value pair. if not specs: + self.push_tokens([self.previous, self.token]) + self.previous = None specs.append(self.spec(None)) - self.expect(VAL) - # Raise an error if the previous spec is already - # concrete (assigned by hash) - if specs[-1]._hash: - raise RedundantSpecError(specs[-1], - 'key-value pair') - specs[-1]._add_flag( - self.previous.value, self.token.value) - self.previous = None + else: + if specs[-1].concrete: + # Trying to add k-v pair to spec from hash + raise RedundantSpecError(specs[-1], + 'key-value pair') + # We should never end up here. + # This requires starting a new spec with ID, EQ + # After another spec that is not concrete + # If the previous spec is not concrete, this is + # handled in the spec parsing loop + # If it is concrete, see the if statement above + # If there is no previous spec, we don't land in + # this else case. + self.unexpected_token() else: # We're parsing a new spec by name self.previous = None @@ -3151,7 +3158,11 @@ def version(self): if self.accept(COLON): if self.accept(ID): - end = self.token.value + if self.next and self.next.type is EQ: + # This is a start: range followed by a key=value pair + self.push_tokens([self.token]) + else: + end = self.token.value elif start: # No colon, but there was a version. return Version(start) diff --git a/lib/spack/spack/test/spec_syntax.py b/lib/spack/spack/test/spec_syntax.py index 2ee9ef486ce..906aa77bb2e 100644 --- a/lib/spack/spack/test/spec_syntax.py +++ b/lib/spack/spack/test/spec_syntax.py @@ -140,10 +140,9 @@ def test_anonymous_specs(self): self.check_parse("arch=test-None-None", "platform=test") self.check_parse('@2.7:') - @pytest.mark.xfail() def test_anonymous_specs_with_multiple_parts(self): # Parse anonymous spec with multiple tokens - self.check_parse('languages=go @4.2:') + self.check_parse('@4.2: languages=go', 'languages=go @4.2:') self.check_parse('@4.2: languages=go') def test_simple_dependence(self): @@ -551,12 +550,8 @@ def test_kv_with_spaces(self): @pytest.mark.parametrize('spec,anon_spec,spec_name', [ ('openmpi languages=go', 'languages=go', 'openmpi'), ('openmpi @4.6:', '@4.6:', 'openmpi'), - pytest.mark.xfail( - ('openmpi languages=go @4.6:', 'languages=go @4.6:', 'openmpi') - ), - pytest.mark.xfail( - ('openmpi @4.6: languages=go', '@4.6: languages=go', 'openmpi') - ), + ('openmpi languages=go @4.6:', 'languages=go @4.6:', 'openmpi'), + ('openmpi @4.6: languages=go', '@4.6: languages=go', 'openmpi'), ]) def test_parse_anonymous_specs(spec, anon_spec, spec_name): diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 1bdee43e831..3d42bb98b5b 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -97,17 +97,14 @@ class Gcc(AutotoolsPackage): # depends_on('guile@1.4.1:', type='test') # See https://golang.org/doc/install/gccgo#Releases - provides('golang', when='languages=go') - # 'when' does not currently support multiple parts of a spec. - # See https://github.com/LLNL/spack/pull/4151 - # provides('golang', when='languages=go @4.6:') - # provides('golang@:1', when='languages=go @4.7.1:') - # provides('golang@:1.1', when='languages=go @4.8:') - # provides('golang@:1.1.2', when='languages=go @4.8.2:') - # provides('golang@:1.2', when='languages=go @4.9:') - # provides('golang@:1.4', when='languages=go @5:') - # provides('golang@:1.6.1', when='languages=go @6:') - # provides('golang@:1.8', when='languages=go @7:') + provides('golang', when='languages=go @4.6:') + provides('golang@:1', when='languages=go @4.7.1:') + provides('golang@:1.1', when='languages=go @4.8:') + provides('golang@:1.1.2', when='languages=go @4.8.2:') + provides('golang@:1.2', when='languages=go @4.9:') + provides('golang@:1.4', when='languages=go @5:') + provides('golang@:1.6.1', when='languages=go @6:') + provides('golang@:1.8', when='languages=go @7:') # For a list of valid languages for a specific release, # run the following command in the GCC source directory: From 8e9d9057940bc3ed092530c6d2e6835e84ab0574 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Thu, 25 May 2017 10:41:11 -0400 Subject: [PATCH 0958/2394] Trilinos: add DTK external package (#4304) * trilinos: add DTK external package * Making +dtk and ~tpetra conflict --- .../builtin/packages/trilinos/package.py | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 0d90ae4e1e6..66dc4f0e642 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -87,14 +87,23 @@ class Trilinos(CMakePackage): description='Enables the build of shared libraries') variant('debug', default=False, description='Builds a debug version of the libraries') - variant('boost', default=True, description='Compile with Boost') - variant('tpetra', default=True, description='Compile with Tpetra') - variant('exodus', default=False, description='Compile with Exodus from SEACAS') + variant('boost', default=True, description='Compile with Boost') + variant('tpetra', default=True, description='Compile with Tpetra') + variant('exodus', default=False, description='Compile with Exodus from SEACAS') + + variant('dtk', default=False, description='Enable DataTransferKit') + resource(name='dtk', + git='https://github.com/ornl-cees/DataTransferKit', + tag='master', + placement='DataTransferKit', + when='+dtk') + conflicts('+dtk', when='~tpetra') # Everything should be compiled with -fpic depends_on('blas') depends_on('lapack') depends_on('boost', when='+boost') + depends_on('boost', when='+dtk') depends_on('matio') depends_on('glm') depends_on('metis@5:', when='+metis') @@ -386,6 +395,13 @@ def cmake_args(self): '-DTrilinos_ENABLE_STK=OFF' ]) + if '+dtk' in spec: + options.extend([ + '-DTrilinos_EXTRA_REPOSITORIES:STRING=DataTransferKit', + '-DTpetra_INST_INT_UNSIGNED_LONG:BOOL=ON', + '-DTrilinos_ENABLE_DataTransferKit:BOOL=ON' + ]) + # exodus if '+exodus' in spec: options.extend([ From f8a7549f513586c5399d243e23e05f01e6339c98 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 25 May 2017 09:49:00 -0500 Subject: [PATCH 0959/2394] Add missing dependency to py-entrypoints (#4330) --- .../builtin/packages/py-configparser/package.py | 13 +++++-------- .../builtin/packages/py-entrypoints/package.py | 11 +++++++++-- .../builtin/packages/py-ordereddict/package.py | 4 +++- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-configparser/package.py b/var/spack/repos/builtin/packages/py-configparser/package.py index 0a8660aa719..a489c893273 100644 --- a/var/spack/repos/builtin/packages/py-configparser/package.py +++ b/var/spack/repos/builtin/packages/py-configparser/package.py @@ -29,16 +29,13 @@ class PyConfigparser(PythonPackage): """This library brings the updated configparser from Python 3.5 to Python 2.6-3.5.""" - homepage = "https://pypi.python.org/pypi/configparser" - url = "https://pypi.python.org/packages/source/c/configparser/configparser-3.5.0.tar.gz" + homepage = "https://docs.python.org/3/library/configparser.html" + url = "https://pypi.io/packages/source/c/configparser/configparser-3.5.0.tar.gz" - version('3.5.0', 'cfdd915a5b7a6c09917a64a573140538', - url="https://pypi.python.org/packages/7c/69/c2ce7e91c89dc073eb1aa74c0621c3eefbffe8216b3f9af9d3885265c01c/configparser-3.5.0.tar.gz") + version('3.5.0', 'cfdd915a5b7a6c09917a64a573140538') - depends_on('python@2.6:2.8,3.4:') + depends_on('py-setuptools', type='build') # This dependency breaks concretization # See https://github.com/LLNL/spack/issues/2793 - # depends_on('py-ordereddict', when='^python@2.6:2.6.999', type=('build', 'run')) # noqa - - depends_on('py-setuptools', type='build') + # depends_on('py-ordereddict', when='^python@:2.6', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-entrypoints/package.py b/var/spack/repos/builtin/packages/py-entrypoints/package.py index 944999d69b8..76f6b37b743 100644 --- a/var/spack/repos/builtin/packages/py-entrypoints/package.py +++ b/var/spack/repos/builtin/packages/py-entrypoints/package.py @@ -25,15 +25,22 @@ from spack import * -class PyEntrypoints(Package): +class PyEntrypoints(PythonPackage): """Discover and load entry points from installed packages.""" homepage = "https://pypi.python.org/pypi/entrypoints" - url = "https://files.pythonhosted.org/packages/f8/ad/0e77a853c745a15981ab51fa9a0cb4eca7a7a007b4c1970106ee6ba01e0c/entrypoints-0.2.2-py2.py3-none-any.whl" + url = "https://pypi.python.org/packages/f8/ad/0e77a853c745a15981ab51fa9a0cb4eca7a7a007b4c1970106ee6ba01e0c/entrypoints-0.2.2-py2.py3-none-any.whl" + + import_modules = ['entrypoints'] version('0.2.2', '73bd7ce92c19b25dc5a20aff41be996a', expand=False) + depends_on('python@2.7:', type=('build', 'run')) + depends_on('py-pip', type='build') + depends_on('py-configparser', when='^python@:2.8', type=('build', 'run')) + + phases = ['install'] def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-ordereddict/package.py b/var/spack/repos/builtin/packages/py-ordereddict/package.py index b560990f00c..29d57862372 100644 --- a/var/spack/repos/builtin/packages/py-ordereddict/package.py +++ b/var/spack/repos/builtin/packages/py-ordereddict/package.py @@ -30,6 +30,8 @@ class PyOrdereddict(PythonPackage): OrderedDict that works in Python 2.4-2.6.""" homepage = "https://pypi.python.org/pypi/ordereddict" - url = "https://pypi.python.org/packages/source/o/ordereddict/ordereddict-1.1.tar.gz" + url = "https://pypi.io/packages/source/o/ordereddict/ordereddict-1.1.tar.gz" + + import_modules = ['ordereddict'] version('1.1', 'a0ed854ee442051b249bfad0f638bbec') From 53713d57c92a82d8aac7c1447d08b3b2b95420cf Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 25 May 2017 11:29:54 -0500 Subject: [PATCH 0960/2394] Add older version of CONVERGE (#4346) --- var/spack/repos/builtin/packages/converge/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/converge/package.py b/var/spack/repos/builtin/packages/converge/package.py index c1d039132dd..c62f4bd5d15 100644 --- a/var/spack/repos/builtin/packages/converge/package.py +++ b/var/spack/repos/builtin/packages/converge/package.py @@ -46,6 +46,8 @@ class Converge(Package): version('2.4.10', '53f5bd4bfb39005bebae46b8d6ee3ce6') version('2.3.16', '8b80f1e73a63181c427c7732ad279986') + version('2.1.0', '327a917d46aa3bc8dee9511375ce112c', + url="https://download.convergecfd.com/download/CONVERGE_2.1/Full_Solver_Packages/converge_install_2.1.0_111615.tar.gz") variant('mpi', default=True, description='Build with MPI support') From 26440accabc68d441b759f448ac0e76736fb3b3c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 25 May 2017 11:00:58 -0700 Subject: [PATCH 0961/2394] Touch up string expansion. (#4344) * Touch up string expansion. I'm chasing this: ``` $ (module purge; spack install perl %gcc/5.4.0) ==> Error: No installed spec matches the hash: '%s' ``` There's something deeper going on, but the error message isn't helpful. After this change it tells me this: ``` $ (module purge; spack install perl %gcc/5.4.0) ==> Error: No installed spec matches the hash: '5.4.0' ``` Which is weird because `5.4.0` is not a hash... Whatever is going on here, the error message needs to be fixed. * Flake8 whitespace --- lib/spack/spack/spec.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 9e89feb1483..c757e6b0d6f 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -3395,7 +3395,8 @@ def __init__(self, spec, hash): class NoSuchHashError(SpecError): def __init__(self, hash): super(NoSuchHashError, self).__init__( - "No installed spec matches the hash: '%s'") + "No installed spec matches the hash: '%s'" + % hash) class RedundantSpecError(SpecError): From d9892c629cf6ebd185affd2d681d289c6dec4e8d Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 25 May 2017 11:31:46 -0700 Subject: [PATCH 0962/2394] Add ant@1.9.6 info (#4350) --- var/spack/repos/builtin/packages/ant/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/ant/package.py b/var/spack/repos/builtin/packages/ant/package.py index 5267b4ee0d8..cbd05c7dec1 100644 --- a/var/spack/repos/builtin/packages/ant/package.py +++ b/var/spack/repos/builtin/packages/ant/package.py @@ -39,6 +39,7 @@ class Ant(Package): version('1.9.9', '22c9d40dabafbec348aaada226581239') version('1.9.8', '16253d516d5c33c4af9ef8fafcf1004b') version('1.9.7', 'a2fd9458c76700b7be51ef12f07d4bb1') + version('1.9.6', '29b7507c9053e301d2b85091f2aec6f0') depends_on('jdk') From 7055be82b97ba42c2fd6c5445dafaf47f5a3d7c8 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 25 May 2017 12:42:32 -0700 Subject: [PATCH 0963/2394] Add info for bwa@0.7.12 (#4356) --- var/spack/repos/builtin/packages/bwa/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/bwa/package.py b/var/spack/repos/builtin/packages/bwa/package.py index bb6763629b7..8b7f33aeaa9 100644 --- a/var/spack/repos/builtin/packages/bwa/package.py +++ b/var/spack/repos/builtin/packages/bwa/package.py @@ -32,6 +32,8 @@ class Bwa(Package): url = "https://github.com/lh3/bwa/releases/download/v0.7.15/bwa-0.7.15.tar.bz2" version('0.7.15', 'fcf470a46a1dbe2f96a1c5b87c530554') + version('0.7.12', 'e24a587baaad411d5da89516ad7a261a', + url='https://github.com/lh3/bwa/archive/0.7.12.tar.gz') depends_on('zlib') From 794dc5099567b075237a12474eedfdd5ffaa357b Mon Sep 17 00:00:00 2001 From: Tom Merrick Date: Thu, 25 May 2017 14:42:49 -0500 Subject: [PATCH 0964/2394] Packages/r adegenet (#4354) * Add mpi support to R * Add multiple precision math routines to R * Updated the URL to match the version * Remove duplicate packages * Add packages for r-ergm and it's dependents * Fixed depends-on types * Correct flake8 errors * Correct Build type * r-adegenet and dependent packages --- .../repos/builtin/packages/r-ade4/package.py | 38 +++++++++++++ .../builtin/packages/r-adegenet/package.py | 55 ++++++++++++++++++ .../repos/builtin/packages/r-ape/package.py | 51 +++++++++++++++++ .../builtin/packages/r-deldir/package.py | 41 ++++++++++++++ .../repos/builtin/packages/r-expm/package.py | 36 ++++++++++++ .../builtin/packages/r-gmodels/package.py | 38 +++++++++++++ .../builtin/packages/r-learnbayes/package.py | 41 ++++++++++++++ .../builtin/packages/r-permute/package.py | 43 ++++++++++++++ .../repos/builtin/packages/r-rmpfr/package.py | 2 +- .../builtin/packages/r-segmented/package.py | 37 ++++++++++++ .../builtin/packages/r-seqinr/package.py | 42 ++++++++++++++ .../repos/builtin/packages/r-spdep/package.py | 56 +++++++++++++++++++ .../repos/builtin/packages/r-vegan/package.py | 39 +++++++++++++ 13 files changed, 518 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/r-ade4/package.py create mode 100644 var/spack/repos/builtin/packages/r-adegenet/package.py create mode 100644 var/spack/repos/builtin/packages/r-ape/package.py create mode 100644 var/spack/repos/builtin/packages/r-deldir/package.py create mode 100644 var/spack/repos/builtin/packages/r-expm/package.py create mode 100644 var/spack/repos/builtin/packages/r-gmodels/package.py create mode 100644 var/spack/repos/builtin/packages/r-learnbayes/package.py create mode 100644 var/spack/repos/builtin/packages/r-permute/package.py create mode 100644 var/spack/repos/builtin/packages/r-segmented/package.py create mode 100644 var/spack/repos/builtin/packages/r-seqinr/package.py create mode 100644 var/spack/repos/builtin/packages/r-spdep/package.py create mode 100644 var/spack/repos/builtin/packages/r-vegan/package.py diff --git a/var/spack/repos/builtin/packages/r-ade4/package.py b/var/spack/repos/builtin/packages/r-ade4/package.py new file mode 100644 index 00000000000..e7bc51d3af1 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ade4/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RAde4(RPackage): + """Analysis of Ecological Data : Exploratory and Euclidean Methods in + Environmental Sciences""" + + homepage = "http://pbil.univ-lyon1.fr/ADE-4" + url = "https://cran.r-project.org/src/contrib/ade4_1.7-6.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/ade4" + + version('1.7-6', '63401ca369677538c96c3d7b75b3f4a1') + + depends_on('r@2.10:') diff --git a/var/spack/repos/builtin/packages/r-adegenet/package.py b/var/spack/repos/builtin/packages/r-adegenet/package.py new file mode 100644 index 00000000000..368d546e1d2 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-adegenet/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RAdegenet(RPackage): + """Toolset for the exploration of genetic and genomic data. Adegenet + provides formal (S4) classes for storing and handling various genetic + data, including genetic markers with varying ploidy and hierarchical + population structure ('genind' class), alleles counts by populations + ('genpop'), and genome-wide SNP data ('genlight'). It also implements + original multivariate methods (DAPC, sPCA), graphics, statistical tests, + simulation tools, distance and similarity measures, and several spatial + methods. A range of both empirical and simulated datasets is also provided + to illustrate various methods.""" + + homepage = "https://github.com/thibautjombart/adegenet/wiki" + url = "https://cran.r-project.org/src/contrib/adegenet_2.0.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/adegenet" + + version('2.0.1', 'ecb1220ce7c9affaba2987bc7f38adda') + + depends_on('r@2.14:') + depends_on('r-ade4', type=('build', 'run')) + depends_on('r-igraph', type=('build', 'run')) + depends_on('r-ape', type=('build', 'run')) + depends_on('r-shiny', type=('build', 'run')) + depends_on('r-ggplot2', type=('build', 'run')) + depends_on('r-seqinr', type=('build', 'run')) + depends_on('r-spdep', type=('build', 'run')) + depends_on('r-reshape2', type=('build', 'run')) + depends_on('r-dplyr@0.4.1:', type=('build', 'run')) + depends_on('r-vegan', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ape/package.py b/var/spack/repos/builtin/packages/r-ape/package.py new file mode 100644 index 00000000000..0476a6da298 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ape/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RApe(RPackage): + """Functions for reading, writing, plotting, and manipulating phylogenetic + trees, analyses of comparative data in a phylogenetic framework, ancestral + character analyses, analyses of diversification and macroevolution, + computing distances from DNA sequences, reading and writing nucleotide + sequences as well as importing from BioConductor, and several tools such + as Mantel's test, generalized skyline plots, graphical exploration of + phylogenetic data (alex, trex, kronoviz), estimation of absolute + evolutionary rates and clock-like trees using mean path lengths and + penalized likelihood, dating trees with non-contemporaneous sequences, + translating DNA into AA sequences, and assessing sequence alignments. + Phylogeny estimation can be done with the NJ, BIONJ, ME, MVR, SDM, and + triangle methods, and several methods handling incomplete distance + matrices (NJ*, BIONJ*, MVR*, and the corresponding triangle method). Some + functions call external applications (PhyML, Clustal, T-Coffee, Muscle) + whose results are returned into R.""" + + homepage = "http://ape-package.ird.fr/" + url = "https://cran.r-project.org/src/contrib/ape_4.1.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/ape" + + version('4.1', 'a9ed416d6d172d4b9682556cf692d7c2') + + depends_on('r@3.2:') diff --git a/var/spack/repos/builtin/packages/r-deldir/package.py b/var/spack/repos/builtin/packages/r-deldir/package.py new file mode 100644 index 00000000000..4a08be58bbd --- /dev/null +++ b/var/spack/repos/builtin/packages/r-deldir/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RDeldir(RPackage): + """Calculates the Delaunay triangulation and the Dirichlet or Voronoi + tessellation (with respect to the entire plane) of a planar point set. + Plots triangulations and tessellations in various ways. Clips + tessellations to sub-windows. Calculates perimeters of tessellations. + Summarises information about the tiles of the tessellation.""" + + homepage = "https://CRAN.R-project.org/package=deldir" + url = "https://cran.r-project.org/src/contrib/deldir_0.1-14.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/deldir" + + version('0.1-14', '6a22b13d962615cd9d51b6eae403409f') + + depends_on('r@0.99:') diff --git a/var/spack/repos/builtin/packages/r-expm/package.py b/var/spack/repos/builtin/packages/r-expm/package.py new file mode 100644 index 00000000000..ba129a30714 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-expm/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RExpm(RPackage): + """Computation of the matrix exponential, logarithm, sqrt, and related + quantities.""" + + homepage = "http://R-Forge.R-project.org/projects/expm" + url = "https://cran.r-project.org/src/contrib/expm_0.999-2.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/expm" + + version('0.999-2', 'e05fa3f995754af92bd03227625da984') diff --git a/var/spack/repos/builtin/packages/r-gmodels/package.py b/var/spack/repos/builtin/packages/r-gmodels/package.py new file mode 100644 index 00000000000..2afb9273ceb --- /dev/null +++ b/var/spack/repos/builtin/packages/r-gmodels/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RGmodels(RPackage): + """Various R programming tools for model fitting.""" + + homepage = "http://www.sf.net/projects/r-gregmisc" + url = "https://cran.r-project.org/src/contrib/gmodels_2.16.2.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/gmodels" + + version('2.16.2', 'f13e5feb2a8b9f0cd47fdf25ddc74228') + + depends_on('r@1.9:') + depends_on('r-gdata', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-learnbayes/package.py b/var/spack/repos/builtin/packages/r-learnbayes/package.py new file mode 100644 index 00000000000..85a9e122bcd --- /dev/null +++ b/var/spack/repos/builtin/packages/r-learnbayes/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RLearnbayes(RPackage): + """LearnBayes contains a collection of functions helpful in learning the + basic tenets of Bayesian statistical inference. It contains functions for + summarizing basic one and two parameter posterior distributions and + predictive distributions. It contains MCMC algorithms for summarizing + posterior distributions defined by the user. It also contains functions + for regression models, hierarchical models, Bayesian tests, and + illustrations of Gibbs sampling.""" + + homepage = "https://CRAN.R-project.org/package=LearnBayes" + url = "https://cran.r-project.org/src/contrib/LearnBayes_2.15.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/LearnBayes" + + version('2.15', '213713664707bc79fd6d3a109555ef76') diff --git a/var/spack/repos/builtin/packages/r-permute/package.py b/var/spack/repos/builtin/packages/r-permute/package.py new file mode 100644 index 00000000000..739e001b3b6 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-permute/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RPermute(RPackage): + """A set of restricted permutation designs for freely exchangeable, line + transects (time series), and spatial grid designs plus permutation of + blocks (groups of samples) is provided. 'permute' also allows split-plot + designs, in which the whole-plots or split-plots or both can be + freely-exchangeable or one of the restricted designs. The 'permute' + package is modelled after the permutation schemes of 'Canoco 3.1' + (and later) by Cajo ter Braak.""" + + homepage = "https://github.com/gavinsimpson/permute" + url = "https://cran.r-project.org/src/contrib/permute_0.9-4.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/permute" + + version('0.9-4', '569fc2442d72a1e3b7e2d456019674c9') + + depends_on('r@2.14:') diff --git a/var/spack/repos/builtin/packages/r-rmpfr/package.py b/var/spack/repos/builtin/packages/r-rmpfr/package.py index cbf9b3d3c2d..c9a957ae0dc 100644 --- a/var/spack/repos/builtin/packages/r-rmpfr/package.py +++ b/var/spack/repos/builtin/packages/r-rmpfr/package.py @@ -38,5 +38,5 @@ class RRmpfr(RPackage): version('0.6-1', '55d4ec257bd2a9233bafee9e444d0265') - depends_on('r-gmp@0.5-8:') + depends_on('r-gmp@0.5-8:', type=('build', 'run')) depends_on('mpfr@3.0.0:') diff --git a/var/spack/repos/builtin/packages/r-segmented/package.py b/var/spack/repos/builtin/packages/r-segmented/package.py new file mode 100644 index 00000000000..53bac60ca9d --- /dev/null +++ b/var/spack/repos/builtin/packages/r-segmented/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RSegmented(RPackage): + """Given a regression model, segmented 'updates' the model by adding + one or more segmented (i.e., piecewise-linear) relationships. Several + variables with multiple breakpoints are allowed.""" + + homepage = "https://CRAN.R-project.org/package=segmented" + url = "https://cran.r-project.org/src/contrib/segmented_0.5-1.4.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/segmented" + + version('0.5-1.4', 'f9d76ea9e22ef5f40aa126b697351cae') diff --git a/var/spack/repos/builtin/packages/r-seqinr/package.py b/var/spack/repos/builtin/packages/r-seqinr/package.py new file mode 100644 index 00000000000..e77914b726c --- /dev/null +++ b/var/spack/repos/builtin/packages/r-seqinr/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RSeqinr(RPackage): + """Exploratory data analysis and data visualization for biological + sequence (DNA and protein) data. Includes also utilities for sequence + data management under the ACNUC system.""" + + homepage = "http://seqinr.r-forge.r-project.org" + url = "https://cran.r-project.org/src/contrib/seqinr_3.3-6.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/seqinr" + + version('3.3-6', '73023d627e72021b723245665e1ad055') + + depends_on('r@2.10:') + depends_on('r-ade4', type=('build', 'run')) + depends_on('r-segmented', type=('build', 'run')) + depends_on('zlib') diff --git a/var/spack/repos/builtin/packages/r-spdep/package.py b/var/spack/repos/builtin/packages/r-spdep/package.py new file mode 100644 index 00000000000..d229876ff3e --- /dev/null +++ b/var/spack/repos/builtin/packages/r-spdep/package.py @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RSpdep(RPackage): + """A collection of functions to create spatial weights matrix objects from + polygon contiguities, from point patterns by distance and tessellations, + for summarizing these objects, and for permitting their use in spatial + data analysis, including regional aggregation by minimum spanning tree; + a collection of tests for spatial autocorrelation, including global + Moran's I, APLE, Geary's C, Hubert/Mantel general cross product statistic, + Empirical Bayes estimates and AssunasReis Index, Getis/Ord G and + multicoloured join count statistics, local Moran's I and Getis/Ord G, + saddlepoint approximations and exact tests for global and local Moran's I; + and functions for estimating spatial simultaneous autoregressive (SAR) lag + and error models, impact measures for lag models, weighted and unweighted + SAR and CAR spatial regression models, semi-parametric and Moran + eigenvector spatial filtering, GM SAR error models, and generalized spatial + two stage least squares models.""" + + homepage = "https://r-forge.r-project.org/projects/spdep" + url = "https://cran.r-project.org/src/contrib/spdep_0.6-13.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/spdep" + + version('0.6-13', 'bfc68b3016b4894b152ecec4b86f85d1') + + depends_on('r@3.0:') + depends_on('r-sp@1.0:', type=('build', 'run')) + depends_on('r-learnbayes', type=('build', 'run')) + depends_on('r-deldir', type=('build', 'run')) + depends_on('r-coda', type=('build', 'run')) + depends_on('r-gmodels', type=('build', 'run')) + depends_on('r-expm', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-vegan/package.py b/var/spack/repos/builtin/packages/r-vegan/package.py new file mode 100644 index 00000000000..4892193e595 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-vegan/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RVegan(RPackage): + """Ordination methods, diversity analysis and other functions for + community and vegetation ecologists.""" + + homepage = "https://github.com/vegandevs/vegan" + url = "https://cran.r-project.org/src/contrib/vegan_2.4-3.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/vegan" + + version('2.4-3', 'db17d4c4b9a4d421246abd5b36b00fec') + + depends_on('r@3.0:') + depends_on('r-permute@0.9-0:', type=('build', 'run')) From c7de8d0cdcffe74163b8849c9ec4408af429a789 Mon Sep 17 00:00:00 2001 From: eklee15 Date: Thu, 25 May 2017 17:23:26 -0400 Subject: [PATCH 0965/2394] Added pgi support for superlu-dist package (#4343) * Added pgi support for superlu-dist package * added self.compiler.pic_flag --- var/spack/repos/builtin/packages/superlu-dist/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index e7d7b1587d6..546a35b6af5 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -71,11 +71,14 @@ def install(self, spec, prefix): 'ARCHFLAGS = cr', 'RANLIB = true', 'CC = {0}'.format(self.spec['mpi'].mpicc), - 'CFLAGS = -fPIC -std=c99 -O2 %s %s %s' % ( + 'CFLAGS = %s %s -O2 %s %s %s' % ( + self.compiler.pic_flag, + '' if '%pgi' in spec else '-std=c99', spec['parmetis'].headers.cpp_flags, spec['metis'].headers.cpp_flags, '-D_LONGINT' if '+int64' in spec else ''), - 'NOOPTS = -fPIC -std=c99', + 'NOOPTS = %s -std=c99' % ( + self.compiler.pic_flag), 'FORTRAN = {0}'.format(self.spec['mpi'].mpif77), 'F90FLAGS = -O2', 'LOADER = {0}'.format(self.spec['mpi'].mpif77), From af77f811f29b4a297dfa2eccb553bd43995071ce Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 25 May 2017 23:23:59 +0200 Subject: [PATCH 0966/2394] petsc: fix scalapack error: (#4341) Specify either "--with-scalapack-dir" or "--with-scalapack-lib --with-scalapack-include". But not both! --- var/spack/repos/builtin/packages/petsc/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 4e2effd9ad2..7d41297f32e 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -198,7 +198,7 @@ def install(self, spec, prefix): # Activates library support if needed for library in ('metis', 'boost', 'hdf5', 'hypre', 'parmetis', - 'mumps', 'scalapack', 'trilinos'): + 'mumps', 'trilinos'): options.append( '--with-{library}={value}'.format( library=library, value=('1' if library in spec else '0')) From e85113faf6e06fd0b6cb6b99ed023b7101420905 Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Thu, 25 May 2017 16:14:47 -0700 Subject: [PATCH 0967/2394] updating mfem version (#4362) * updating mfem version * changing mfem tarball extension to .tar.gz --- var/spack/repos/builtin/packages/mfem/package.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index b3fe5197a06..a2d6bdc7ffe 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -50,6 +50,10 @@ class Mfem(Package): # If this quick verification procedure fails, additional discussion # will be required to verify the new version. + version('3.3', + 'b17bd452593aada93dc0fee748fcfbbf4f04ce3e7d77fdd0341cc9103bcacd0b', + url='http://goo.gl/Vrpsns', extension='.tar.gz') + version('3.2', '2938c3deed4ec4f7fd5b5f5cfe656845282e86e2dcd477d292390058b7b94340', url='http://goo.gl/Y9T75B', extension='.tar.gz') @@ -173,9 +177,7 @@ def install(self, spec, prefix): ss_lib += (' -lumfpack -lcholmod -lcolamd' + ' -lamd -lcamd -lccolamd -lsuitesparseconfig') - no_librt_archs = ['darwin-i686', 'darwin-x86_64'] - no_rt = any(map(lambda a: spec.satisfies('=' + a), - no_librt_archs)) + no_rt = spec.satisfies('platform=darwin') if not no_rt: ss_lib += ' -lrt' ss_lib += (' ' + metis_lib + ' ' + lapack_lib) From d13eac310a7b65d6ae30e2739cce3c086e9da1b0 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 25 May 2017 16:15:19 -0700 Subject: [PATCH 0968/2394] Add info for fastqc@0.11.4 (#4357) * Add info for fastqc@0.11.4 * Delete the bamutil package (included by mistake) The bamutil package was included by mistake, the commit deletes it. --- var/spack/repos/builtin/packages/fastqc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/fastqc/package.py b/var/spack/repos/builtin/packages/fastqc/package.py index a9e352e101f..21b607c90ab 100644 --- a/var/spack/repos/builtin/packages/fastqc/package.py +++ b/var/spack/repos/builtin/packages/fastqc/package.py @@ -34,6 +34,7 @@ class Fastqc(Package): url = "http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.5.zip" version('0.11.5', '3524f101c0ab0bae77c7595983170a76') + version('0.11.4', '104ff2e0e9aebf5bee1f6b068a059b0d') depends_on('jdk', type='run') depends_on('perl') # for fastqc "script", any perl will do From 7bdf7a74afa7b9f2791159c55a2bf014c81415a7 Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Thu, 25 May 2017 23:19:59 -0400 Subject: [PATCH 0969/2394] added libdrm 2.4.75 per #4316 (#4359) * added libdrm 2.4.75 per #4316 * removed 'list_url' --- var/spack/repos/builtin/packages/libdrm/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libdrm/package.py b/var/spack/repos/builtin/packages/libdrm/package.py index 750d3361d96..781e7928846 100644 --- a/var/spack/repos/builtin/packages/libdrm/package.py +++ b/var/spack/repos/builtin/packages/libdrm/package.py @@ -34,6 +34,7 @@ class Libdrm(Package): homepage = "http://dri.freedesktop.org/libdrm/" url = "http://dri.freedesktop.org/libdrm/libdrm-2.4.59.tar.gz" + version('2.4.75', '743c16109d91a2539dfc9cc56130d695') version('2.4.70', 'a8c275bce5f3d71a5ca25e8fb60df084') version('2.4.59', '105ac7af1afcd742d402ca7b4eb168b6') version('2.4.33', '86e4e3debe7087d5404461e0032231c8') From e5f5e98fc4961be3ab731add187072021be2f9e3 Mon Sep 17 00:00:00 2001 From: Nils Deppe Date: Fri, 26 May 2017 08:46:11 -0400 Subject: [PATCH 0970/2394] Add master as install option for yaml-cpp (#4364) --- var/spack/repos/builtin/packages/yaml-cpp/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py index e600d470a95..cc22b3420d3 100644 --- a/var/spack/repos/builtin/packages/yaml-cpp/package.py +++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py @@ -32,6 +32,7 @@ class YamlCpp(CMakePackage): url = "https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.5.3.tar.gz" version('0.5.3', '4e47733d98266e46a1a73ae0a72954eb') + version('develop', git='https://github.com/jbeder/yaml-cpp', branch='master') variant('shared', default=True, description='Enable build of shared libraries') From 71cc4e2ad1f413be1abde48e7de0df1328e0e37d Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 26 May 2017 08:46:14 -0700 Subject: [PATCH 0971/2394] Add info for jdk@7u80 (not downloadable) (#4363) * Add info for jdk@7u80 (not downloadable) Add version info for jdk@7u80. Oracle does't seem to be distributing it any longer so there's no reasonable URL to provide, but for those of us who already have the tarball this is useful. * Flake8 cleanup --- var/spack/repos/builtin/packages/jdk/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index 6651ab02bce..02c44e9337f 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -54,6 +54,10 @@ class Jdk(Package): version('8u66', '88f31f3d642c3287134297b8c10e61bf', url="http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz", curl_options=curl_options) + # The 7u80 tarball is not readily available from Oracle. If you have + # the tarball, add it to your mirror as mirror/jdk/jdk-7u80.tar.gz and + # away you go. + version('7u80', '6152f8a7561acf795ca4701daa10a965') def install(self, spec, prefix): distutils.dir_util.copy_tree(".", prefix) From f38d250e508ef933a6f0bf1e0e5be89c23e20559 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 26 May 2017 13:31:04 -0400 Subject: [PATCH 0972/2394] gpg: add 'spack gpg subcommand (#3845) - Add a `spack gpg` subcommand in anticipation of signed binaries. - GPG keys are stored in var/spack/gpg, and the spack gpg command manages them. - Docs are included on the command. --- .travis.yml | 2 + lib/spack/docs/basic_usage.rst | 64 +++++++++ lib/spack/docs/getting_started.rst | 1 + lib/spack/spack/__init__.py | 7 + lib/spack/spack/cmd/gpg.py | 168 ++++++++++++++++++++++ lib/spack/spack/test/cmd/gpg.py | 181 ++++++++++++++++++++++++ lib/spack/spack/util/gpg.py | 120 ++++++++++++++++ var/spack/gpg.mock/README.md | 3 + var/spack/gpg.mock/data/content.txt | 1 + var/spack/gpg.mock/data/content.txt.asc | 17 +++ var/spack/gpg.mock/keys/external.key | 30 ++++ var/spack/gpg/README.md | 5 + 12 files changed, 599 insertions(+) create mode 100644 lib/spack/spack/cmd/gpg.py create mode 100644 lib/spack/spack/test/cmd/gpg.py create mode 100644 lib/spack/spack/util/gpg.py create mode 100644 var/spack/gpg.mock/README.md create mode 100644 var/spack/gpg.mock/data/content.txt create mode 100644 var/spack/gpg.mock/data/content.txt.asc create mode 100644 var/spack/gpg.mock/keys/external.key create mode 100644 var/spack/gpg/README.md diff --git a/.travis.yml b/.travis.yml index c89bcf1275e..ef3ec362c41 100644 --- a/.travis.yml +++ b/.travis.yml @@ -71,12 +71,14 @@ addons: - gfortran - mercurial - graphviz + - gnupg2 # Work around Travis's lack of support for Python on OSX before_install: - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew ls --versions python > /dev/null || brew install python; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew ls --versions gcc > /dev/null || brew install gcc; fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew ls --versions gnupg2 > /dev/null || brew install gnupg2; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then virtualenv venv; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then source venv/bin/activate; fi diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index f25247579b1..6eba26a4b5b 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -276,6 +276,70 @@ Seeing installed packages We know that ``spack list`` shows you the names of available packages, but how do you figure out which are already installed? +.. _cmd-spack-gpg: + +^^^^^^^^^^^^^ +``spack gpg`` +^^^^^^^^^^^^^ + +Spack has support for signing and verifying packages using GPG keys. A +separate keyring is used for Spack, so any keys available in the user's home +directory are not used. + +^^^^^^^^^^^^^^^^^^ +``spack gpg init`` +^^^^^^^^^^^^^^^^^^ + +When Spack is first installed, its keyring is empty. Keys stored in +:file:`var/spack/gpg` are the default keys for a Spack installation. These +keys may be imported by running ``spack gpg init``. This will import the +default keys into the keyring as trusted keys. + +------------- +Trusting keys +------------- + +Additional keys may be added to the keyring using +``spack gpg trust ``. Once a key is trusted, packages signed by the +owner of they key may be installed. + +------------- +Creating keys +------------- + +You may also create your own key so that you may sign your own packages using +``spack gpg create ``. By default, the key has no expiration, +but it may be set with the ``--expires `` flag (see the ``gnupg2`` +documentation for accepted date formats). It is also recommended to add a +comment as to the use of the key using the ``--comment `` flag. The +public half of the key can also be exported for sharing with others so that +they may use packages you have signed using the ``--export `` flag. +Secret keys may also be later exported using the +``spack gpg export [...]`` command. + +------------ +Listing keys +------------ + +In order to list the keys available in the keyring, the +``spack gpg list`` command will list trusted keys with the ``--trusted`` flag +and keys available for signing using ``--signing``. If you would like to +remove keys from your keyring, ``spack gpg untrust ``. Key IDs can be +email addresses, names, or (best) fingerprints. + +------------------------------ +Signing and Verifying Packages +------------------------------ + +In order to sign a package, ``spack gpg sign `` should be used. By +default, the signature will be written to ``.asc``, but that may be +changed by using the ``--output `` flag. If there is only one signing +key available, it will be used, but if there is more than one, the key to use +must be specified using the ``--key `` flag. The ``--clearsign`` flag +may also be used to create a signed file which contains the contents, but it +is not recommended. Signed packages may be verified by using +``spack gpg verify ``. + .. _cmd-spack-find: ^^^^^^^^^^^^^^ diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 971d42cea08..75c2f662b5b 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -14,6 +14,7 @@ before Spack is run: 1. Python 2 (2.6 or 2.7) or 3 (3.3 - 3.6) 2. A C/C++ compiler 3. The ``git`` and ``curl`` commands. +4. If using the ``gpg`` subcommand, ``gnupg2`` is required. These requirements can be easily installed on most modern Linux systems; on Macintosh, XCode is required. Spack is designed to run on HPC diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 27283d10a96..057c54d6650 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -68,6 +68,13 @@ etc_path = join_path(prefix, "etc") +# GPG paths. +gpg_keys_path = join_path(var_path, "gpg") +mock_gpg_data_path = join_path(var_path, "gpg.mock", "data") +mock_gpg_keys_path = join_path(var_path, "gpg.mock", "keys") +gpg_path = join_path(opt_path, "spack", "gpg") + + #----------------------------------------------------------------------------- # Initial imports (only for use in this file -- see __all__ below.) #----------------------------------------------------------------------------- diff --git a/lib/spack/spack/cmd/gpg.py b/lib/spack/spack/cmd/gpg.py new file mode 100644 index 00000000000..ff511b65208 --- /dev/null +++ b/lib/spack/spack/cmd/gpg.py @@ -0,0 +1,168 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack.util.gpg import Gpg +import spack +import os + +description = "handle GPG actions for spack" +section = "developer" +level = "long" + + +def setup_parser(subparser): + setup_parser.parser = subparser + subparsers = subparser.add_subparsers(help='GPG sub-commands') + + verify = subparsers.add_parser('verify') + verify.add_argument('package', type=str, + help='the package to verify') + verify.add_argument('signature', type=str, nargs='?', + help='the signature file') + verify.set_defaults(func=gpg_verify) + + trust = subparsers.add_parser('trust') + trust.add_argument('keyfile', type=str, + help='add a key to the trust store') + trust.set_defaults(func=gpg_trust) + + untrust = subparsers.add_parser('untrust') + untrust.add_argument('--signing', action='store_true', + help='allow untrusting signing keys') + untrust.add_argument('keys', nargs='+', type=str, + help='remove keys from the trust store') + untrust.set_defaults(func=gpg_untrust) + + sign = subparsers.add_parser('sign') + sign.add_argument('--output', metavar='DEST', type=str, + help='the directory to place signatures') + sign.add_argument('--key', metavar='KEY', type=str, + help='the key to use for signing') + sign.add_argument('--clearsign', action='store_true', + help='if specified, create a clearsign signature') + sign.add_argument('package', type=str, + help='the package to sign') + sign.set_defaults(func=gpg_sign) + + create = subparsers.add_parser('create') + create.add_argument('name', type=str, + help='the name to use for the new key') + create.add_argument('email', type=str, + help='the email address to use for the new key') + create.add_argument('--comment', metavar='COMMENT', type=str, + default='GPG created for Spack', + help='a description for the intended use of the key') + create.add_argument('--expires', metavar='EXPIRATION', type=str, + default='0', help='when the key should expire') + create.add_argument('--export', metavar='DEST', type=str, + help='export the public key to a file') + create.set_defaults(func=gpg_create) + + list = subparsers.add_parser('list') + list.add_argument('--trusted', action='store_true', + help='list trusted keys') + list.add_argument('--signing', action='store_true', + help='list keys which may be used for signing') + list.set_defaults(func=gpg_list) + + init = subparsers.add_parser('init') + init.set_defaults(func=gpg_init) + init.set_defaults(import_dir=spack.gpg_keys_path) + + export = subparsers.add_parser('export') + export.add_argument('location', type=str, + help='where to export keys') + export.add_argument('keys', nargs='*', + help='the keys to export; ' + 'all secret keys if unspecified') + export.set_defaults(func=gpg_export) + + +def gpg_create(args): + if args.export: + old_sec_keys = Gpg.signing_keys() + Gpg.create(name=args.name, email=args.email, + comment=args.comment, expires=args.expires) + if args.export: + new_sec_keys = set(Gpg.signing_keys()) + new_keys = new_sec_keys.difference(old_sec_keys) + Gpg.export_keys(args.export, *new_keys) + + +def gpg_export(args): + keys = args.keys + if not keys: + keys = Gpg.signing_keys() + Gpg.export_keys(args.location, *keys) + + +def gpg_list(args): + Gpg.list(args.trusted, args.signing) + + +def gpg_sign(args): + key = args.key + if key is None: + keys = Gpg.signing_keys() + if len(keys) == 1: + key = keys[0] + elif not keys: + raise RuntimeError('no signing keys are available') + else: + raise RuntimeError('multiple signing keys are available; ' + 'please choose one') + output = args.output + if not output: + output = args.package + '.asc' + # TODO: Support the package format Spack creates. + Gpg.sign(key, args.package, output, args.clearsign) + + +def gpg_trust(args): + Gpg.trust(args.keyfile) + + +def gpg_init(args): + for root, _, filenames in os.walk(args.import_dir): + for filename in filenames: + if not filename.endswith('.key'): + continue + Gpg.trust(os.path.join(root, filename)) + + +def gpg_untrust(args): + Gpg.untrust(args.signing, *args.keys) + + +def gpg_verify(args): + # TODO: Support the package format Spack creates. + signature = args.signature + if signature is None: + signature = args.package + '.asc' + Gpg.verify(signature, args.package) + + +def gpg(parser, args): + if args.func: + args.func(args) diff --git a/lib/spack/spack/test/cmd/gpg.py b/lib/spack/spack/test/cmd/gpg.py new file mode 100644 index 00000000000..cc6d57d91e3 --- /dev/null +++ b/lib/spack/spack/test/cmd/gpg.py @@ -0,0 +1,181 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 argparse +import os.path + +import pytest +import spack +import spack.cmd.gpg as gpg +import spack.util.gpg as gpg_util +from spack.util.executable import ProcessError + + +@pytest.fixture(scope='function') +def testing_gpg_directory(tmpdir): + old_gpg_path = gpg_util.GNUPGHOME + gpg_util.GNUPGHOME = str(tmpdir.join('gpg')) + yield + gpg_util.GNUPGHOME = old_gpg_path + + +def has_gnupg2(): + try: + gpg_util.Gpg.gpg()('--version') + return True + except Exception: + return False + + +@pytest.mark.usefixtures('testing_gpg_directory') +@pytest.mark.skipif(not has_gnupg2(), + reason='These tests require gnupg2') +def test_gpg(tmpdir): + parser = argparse.ArgumentParser() + gpg.setup_parser(parser) + + # Verify a file with an empty keyring. + args = parser.parse_args(['verify', os.path.join( + spack.mock_gpg_data_path, 'content.txt')]) + with pytest.raises(ProcessError): + gpg.gpg(parser, args) + + # Import the default key. + args = parser.parse_args(['init']) + args.import_dir = spack.mock_gpg_keys_path + gpg.gpg(parser, args) + + # List the keys. + # TODO: Test the output here. + args = parser.parse_args(['list', '--trusted']) + gpg.gpg(parser, args) + args = parser.parse_args(['list', '--signing']) + gpg.gpg(parser, args) + + # Verify the file now that the key has been trusted. + args = parser.parse_args(['verify', os.path.join( + spack.mock_gpg_data_path, 'content.txt')]) + gpg.gpg(parser, args) + + # Untrust the default key. + args = parser.parse_args(['untrust', 'Spack testing']) + gpg.gpg(parser, args) + + # Now that the key is untrusted, verification should fail. + args = parser.parse_args(['verify', os.path.join( + spack.mock_gpg_data_path, 'content.txt')]) + with pytest.raises(ProcessError): + gpg.gpg(parser, args) + + # Create a file to test signing. + test_path = tmpdir.join('to-sign.txt') + with open(str(test_path), 'w+') as fout: + fout.write('Test content for signing.\n') + + # Signing without a private key should fail. + args = parser.parse_args(['sign', str(test_path)]) + with pytest.raises(RuntimeError) as exc_info: + gpg.gpg(parser, args) + assert exc_info.value.args[0] == 'no signing keys are available' + + # Create a key for use in the tests. + keypath = tmpdir.join('testing-1.key') + args = parser.parse_args(['create', + '--comment', 'Spack testing key', + '--export', str(keypath), + 'Spack testing 1', + 'spack@googlegroups.com']) + gpg.gpg(parser, args) + keyfp = gpg_util.Gpg.signing_keys()[0] + + # List the keys. + # TODO: Test the output here. + args = parser.parse_args(['list', '--trusted']) + gpg.gpg(parser, args) + args = parser.parse_args(['list', '--signing']) + gpg.gpg(parser, args) + + # Signing with the default (only) key. + args = parser.parse_args(['sign', str(test_path)]) + gpg.gpg(parser, args) + + # Verify the file we just verified. + args = parser.parse_args(['verify', str(test_path)]) + gpg.gpg(parser, args) + + # Export the key for future use. + export_path = tmpdir.join('export.testing.key') + args = parser.parse_args(['export', str(export_path)]) + gpg.gpg(parser, args) + + # Create a second key for use in the tests. + args = parser.parse_args(['create', + '--comment', 'Spack testing key', + 'Spack testing 2', + 'spack@googlegroups.com']) + gpg.gpg(parser, args) + + # List the keys. + # TODO: Test the output here. + args = parser.parse_args(['list', '--trusted']) + gpg.gpg(parser, args) + args = parser.parse_args(['list', '--signing']) + gpg.gpg(parser, args) + + test_path = tmpdir.join('to-sign-2.txt') + with open(str(test_path), 'w+') as fout: + fout.write('Test content for signing.\n') + + # Signing with multiple signing keys is ambiguous. + args = parser.parse_args(['sign', str(test_path)]) + with pytest.raises(RuntimeError) as exc_info: + gpg.gpg(parser, args) + assert exc_info.value.args[0] == \ + 'multiple signing keys are available; please choose one' + + # Signing with a specified key. + args = parser.parse_args(['sign', '--key', keyfp, str(test_path)]) + gpg.gpg(parser, args) + + # Untrusting signing keys needs a flag. + args = parser.parse_args(['untrust', 'Spack testing 1']) + with pytest.raises(ProcessError): + gpg.gpg(parser, args) + + # Untrust the key we created. + args = parser.parse_args(['untrust', '--signing', keyfp]) + gpg.gpg(parser, args) + + # Verification should now fail. + args = parser.parse_args(['verify', str(test_path)]) + with pytest.raises(ProcessError): + gpg.gpg(parser, args) + + # Trust the exported key. + args = parser.parse_args(['trust', str(export_path)]) + gpg.gpg(parser, args) + + # Verification should now succeed again. + args = parser.parse_args(['verify', str(test_path)]) + gpg.gpg(parser, args) diff --git a/lib/spack/spack/util/gpg.py b/lib/spack/spack/util/gpg.py new file mode 100644 index 00000000000..ccaf33519b8 --- /dev/null +++ b/lib/spack/spack/util/gpg.py @@ -0,0 +1,120 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os + +import spack +from spack.util.executable import Executable + + +GNUPGHOME = spack.gpg_path + + +class Gpg(object): + @staticmethod + def gpg(): + # TODO: Support loading up a GPG environment from a built gpg. + gpg = Executable('gpg2') + if not os.path.exists(GNUPGHOME): + os.makedirs(GNUPGHOME) + os.chmod(GNUPGHOME, 0o700) + gpg.add_default_env('GNUPGHOME', GNUPGHOME) + return gpg + + @classmethod + def create(cls, **kwargs): + r, w = os.pipe() + r = os.fdopen(r, 'r') + w = os.fdopen(w, 'w') + w.write(''' + Key-Type: rsa + Key-Length: 4096 + Key-Usage: sign + Name-Real: %(name)s + Name-Email: %(email)s + Name-Comment: %(comment)s + Expire-Date: %(expires)s + %%no-protection + %%commit + ''' % kwargs) + w.close() + cls.gpg()('--gen-key', '--batch', input=r) + r.close() + + @classmethod + def signing_keys(cls): + keys = [] + output = cls.gpg()('--list-secret-keys', '--with-colons', + '--fingerprint', output=str) + for line in output.split('\n'): + if line.startswith('fpr'): + keys.append(line.split(':')[9]) + return keys + + @classmethod + def export_keys(cls, location, *keys): + cls.gpg()('--armor', '--export', '--output', location, *keys) + + @classmethod + def trust(cls, keyfile): + cls.gpg()('--import', keyfile) + + @classmethod + def untrust(cls, signing, *keys): + args = [ + '--yes', + '--batch', + ] + if signing: + signing_args = args + ['--delete-secret-keys'] + list(keys) + cls.gpg()(*signing_args) + args.append('--delete-keys') + args.extend(keys) + cls.gpg()(*args) + + @classmethod + def sign(cls, key, file, output, clearsign=False): + args = [ + '--armor', + '--default-key', key, + '--output', output, + file, + ] + if clearsign: + args.insert(0, '--clearsign') + else: + args.insert(0, '--detach-sign') + cls.gpg()(*args) + + @classmethod + def verify(cls, signature, file): + cls.gpg()('--verify', signature, file) + + @classmethod + def list(cls, trusted, signing): + if trusted: + cls.gpg()('--list-public-keys') + if signing: + cls.gpg()('--list-secret-keys') diff --git a/var/spack/gpg.mock/README.md b/var/spack/gpg.mock/README.md new file mode 100644 index 00000000000..95215a86347 --- /dev/null +++ b/var/spack/gpg.mock/README.md @@ -0,0 +1,3 @@ +# Mock GPG directory + +This directory contains keys and data used in the testing Spack. diff --git a/var/spack/gpg.mock/data/content.txt b/var/spack/gpg.mock/data/content.txt new file mode 100644 index 00000000000..6ab0f567cfb --- /dev/null +++ b/var/spack/gpg.mock/data/content.txt @@ -0,0 +1 @@ +This file has a signature signed by an external key. diff --git a/var/spack/gpg.mock/data/content.txt.asc b/var/spack/gpg.mock/data/content.txt.asc new file mode 100644 index 00000000000..75931561133 --- /dev/null +++ b/var/spack/gpg.mock/data/content.txt.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2 + +iQIcBAABCAAGBQJZELiKAAoJENygJBhApdriPvgP/0shBTmx4jg6QaI0zyie8a+R ++L/o9iIV4MqvBI5g+Ti+nktoCSxSOPOYFW4af740A7/43wIML9LK+gIhx/QbCrMb +bNqzyIry9/L6PK1cCuXvd10CT+MCF1P0hdaMtKihdBYB3J8f5y1i30z+a8YWsRsX +tPMVF/HunlpAkSWIpjmbJzFPT1R/UiBHl4VJ+mM3NNZYNIq8ZhKUiXwlQkZ8R8zg +M0IEFkwfFtp7JxnhG7jR0k63cNm3KSocAJpwENy46RKGsAvwvqTzRh4T2MlmQIjH +TC1MA8alJvtSdBHpkKffSU8jLewKHe1H48nc9NifMy04Ni8fSlGZe14Oe7Krqla0 +qWs+XHrGCmSleyiRUQes1MKQ7NhumKEoEaU+q0/c+lUDILZp1TlfvTPg2fzng4M/ +YF6+f+wqM+xY6z1/IloOMHis5oALjARSO88ldrLU4DQp/6jTKJO/+I4uWhMnPkMW ++a3GLWl1CShReHKbWZTLFtdQATZXA8M6wQ8FAsLOmRLb0AlEQ28A8fHrBCCdU2xj +tSG++U1ZUo64cMYQmIMsvIApnkTh7qCkDjaVBP1to3qc83YHncxorydz9ERpuDvP +d1IOHlJyUSM4+sLkCPvH9QyTaJn/x7D/VraznEiptGON7G6G9AgyAzIgYamm1Kwh +UDhbQDFDhLLvUSDGzO3l +=kwo9 +-----END PGP SIGNATURE----- diff --git a/var/spack/gpg.mock/keys/external.key b/var/spack/gpg.mock/keys/external.key new file mode 100644 index 00000000000..d08c90ea7f3 --- /dev/null +++ b/var/spack/gpg.mock/keys/external.key @@ -0,0 +1,30 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v2 + +mQINBFkQuFIBEAC7DiUM7jQ01kaGX+4nguzVeYquBRYoEUiObl5UIVSavMn4I7Oy +aytG+qR26tUpunjEB6ftIQMJSyPKueclUJBaQ9lzQ3WpFC3ItpBNkMxHpiqPa9DX +ddMk2QtJt4TlCWJEdnhR/92mMF+vf7B5/OvFvKOi0P+AwzBHC8IKTxml/UosmeVI +Cs69FzRDXyqQxQAkATmuDmHXPaC6RkDmpVRe3ej+Kr+Xu4vcb/EBHg/vcZkFdSmi +hyOj21/8LQZzcwTg4TSgHzKqbjPtIEQM3NNksvcFYlq2X0ad4cBcxa1Hj5xV8oS/ +bdYOFSdsh3QRROcEeKYVQZhvCR12qS93P4b2egbamBxCQK0Sn6QPIjlR6+Ya2/6p +/hHddF+YVA6HJ22QZjaORf9lImYfYMs1ka2GtgkczOeaFEfcJ96nIa8Qb1jcrOon +/3k/l+Ae09HRCcGB2DgKXw7S+CXKt46Oadp3bIDAyceotGnrG3cVA6A9Lwqy6U/5 +ywry8ETu3wlIR3EAIwM0a/3xCPg3cC/bt9rSqsFcmXyxltGI2CBTWcTqcyjW4VAw +nVI8otBd4yNdimhpxLfx6AaMjA+D+OSltnAZUrp1fSFVhWLpTxLbcTv+HJ/g4U+x ++PAsQ79Hzmzvy/8nOvIprGzY4LCmBPbLUB47Yu761HhYQhkuJiYP1R/GzQARAQAB +tDpTcGFjayB0ZXN0aW5nIChTcGFjayB0ZXN0aW5nIGtleSkgPHNwYWNrQGdvb2ds +ZWdyb3Vwcy5jb20+iQI3BBMBCAAhBQJZELhSAhsDBQsJCAcCBhUICQoLAgQWAgMB +Ah4BAheAAAoJENygJBhApdriOnUP/iLC1ZxyBP3STSVgBBTS1L6FnRAc9ya6eXNT +EwLLoSL0I0srs0sThmhyW38ZamsXYDhggaetShxemcO0BoNAii/oNK9yQoXNF4f6 +7wg2ZxCDuDjp/3VsbiI+kNlH2kj1tQ/M53ak9nYhmwLJFfKzjQBWJiyTwYZwO3MB +QvXBvLIKj6IDS20o+7jbOq8F243vo5/uNHc/6C9eC3i4jzXWVlln2+iN/e5sVt+X +ZiggLK2Goj5CZ7ZjZQvdoH4wKbSPLBg0Lh5FYSih9p0wx0UTEoi0jPqFUDw81duz +IyxjbGASSaUxoz16C2U/olPEAAXeBe4266jRQwTrn+sEIX5FD+RGoryXQ97pV5up +I9wb2anVAMHOf20iYep3vYTjnFG/81ykODm8+I4D/Jj0EEe1E2b0D+7RQ9xKNYxC +fDgY3isXBFzmS6O4h8N27P06yfzQX+zvjPrrHRB7ka2pmDT3M421p2wN0n9aCq1J +8+M5UdpF98A38oosyE53KcItoCUFLgEP3KrWPwvpDUC2sNQAOFiHeitzc+v1iwmD +RScdefCQ8qc2JJdCqMG6M0tlFy6Tw1o0eBYOhhDGa0rq/PQ4NewR2dj+yDXXBGJy +ElR0VChqniMCyd2Q4SDPnhcVrWPTYSKL1MpsL0lXED8TGOdoAHHmQNU8MWhqmdBy +zcWArNUY +=yVqw +-----END PGP PUBLIC KEY BLOCK----- diff --git a/var/spack/gpg/README.md b/var/spack/gpg/README.md new file mode 100644 index 00000000000..122d24f8412 --- /dev/null +++ b/var/spack/gpg/README.md @@ -0,0 +1,5 @@ +# GPG Keys + +This directory contains keys that should be trusted by this installation of +Spack. They are imported when running `spack gpg init`, but may also be +imported manually with `spack gpg trust path/to/key`. From 6f0ac9d54cc8494cdb4a002c7a203622dfe656eb Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 26 May 2017 16:37:06 -0500 Subject: [PATCH 0973/2394] Add --configure-args/vars support to RPackage (#4289) * Add --configure-args/vars support to RPackage * Docstring formatting change --- lib/spack/spack/build_systems/r.py | 36 ++++++++++++++++--- lib/spack/spack/cmd/create.py | 6 +++- .../repos/builtin/packages/r-rmpi/package.py | 33 ++++++++++------- 3 files changed, 57 insertions(+), 18 deletions(-) diff --git a/lib/spack/spack/build_systems/r.py b/lib/spack/spack/build_systems/r.py index 618ba398e17..a659f75b986 100644 --- a/lib/spack/spack/build_systems/r.py +++ b/lib/spack/spack/build_systems/r.py @@ -30,7 +30,10 @@ class RPackage(PackageBase): - """Specialized class for packages that are built using R + """Specialized class for packages that are built using R. + + For more information on the R build system, see: + https://stat.ethz.ch/R-manual/R-devel/library/utils/html/INSTALL.html This class provides a single phase that can be overridden: @@ -49,12 +52,37 @@ class RPackage(PackageBase): depends_on('r', type=('build', 'run')) + def configure_args(self, spec, prefix): + """Arguments to pass to install via ``--configure-args``.""" + return [] + + def configure_vars(self, spec, prefix): + """Arguments to pass to install via ``--configure-vars``.""" + return [] + def install(self, spec, prefix): """Installs an R package.""" - inspect.getmodule(self).R( - 'CMD', 'INSTALL', + + config_args = self.configure_args(spec, prefix) + config_vars = self.configure_vars(spec, prefix) + + args = [ + 'CMD', + 'INSTALL' + ] + + if config_args: + args.append('--configure-args={0}'.format(' '.join(config_args))) + + if config_vars: + args.append('--configure-vars={0}'.format(' '.join(config_vars))) + + args.extend([ '--library={0}'.format(self.module.r_lib_dir), - self.stage.source_path) + self.stage.source_path + ]) + + inspect.getmodule(self).R(*args) # Check that self.prefix is there after installation run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 89ba050a538..648400e41e3 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -265,7 +265,11 @@ class RPackageTemplate(PackageTemplate): # depends_on('r-foo', type=('build', 'run'))""" body = """\ - # FIXME: Override install() if necessary.""" + def configure_args(self, spec, prefix): + # FIXME: Add arguments to pass to install via --configure-args + # FIXME: If not needed delete this function + args = [] + return args""" def __init__(self, name, *args): # If the user provided `--name r-rcpp`, don't rename it r-r-rcpp diff --git a/var/spack/repos/builtin/packages/r-rmpi/package.py b/var/spack/repos/builtin/packages/r-rmpi/package.py index 7b955545d8f..4ef46791ec1 100644 --- a/var/spack/repos/builtin/packages/r-rmpi/package.py +++ b/var/spack/repos/builtin/packages/r-rmpi/package.py @@ -38,18 +38,25 @@ class RRmpi(RPackage): depends_on('mpi') depends_on('r@2.15.1:') - def install(self, spec, prefix): - if 'mpich' in spec: - Rmpi_type = 'MPICH' - elif 'mvapich' in spec: - Rmpi_type = 'MVAPICH' - else: + # The following MPI types are not supported + conflicts('^intel-mpi') + conflicts('^intel-parallel-studio') + conflicts('^mvapich2') + conflicts('^spectrum-mpi') + + def configure_args(self, spec, prefix): + mpi_name = spec['mpi'].name + + # The type of MPI. Supported values are: + # OPENMPI, LAM, MPICH, MPICH2, or CRAY + if mpi_name == 'openmpi': Rmpi_type = 'OPENMPI' + elif mpi_name == 'mpich': + Rmpi_type = 'MPICH2' + else: + raise InstallError('Unsupported MPI type') - my_mpi = spec['mpi'] - - R('CMD', 'INSTALL', - '--configure-args=--with-Rmpi-type=%s' % Rmpi_type + - ' --with-mpi=%s' % my_mpi.prefix, - '--library={0}'.format(self.module.r_lib_dir), - self.stage.source_path) + return [ + '--with-Rmpi-type={0}'.format(Rmpi_type), + '--with-mpi={0}'.format(spec['mpi'].prefix), + ] From d3a82ce63215c048358650c55feeaecf5625bbf6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 26 May 2017 22:05:54 -0500 Subject: [PATCH 0974/2394] Fix typo in mod_to_class docstring (#4371) --- lib/spack/spack/util/naming.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/util/naming.py b/lib/spack/spack/util/naming.py index 18142bd83f1..e70b0a6ce05 100644 --- a/lib/spack/spack/util/naming.py +++ b/lib/spack/spack/util/naming.py @@ -57,7 +57,7 @@ def mod_to_class(mod_name): * Class names use the CapWords convention. Regular source code follows these convetions. Spack is a bit - more liberal with its Package names nad Compiler names: + more liberal with its Package names and Compiler names: * They can contain '-' as well as '_', but cannot start with '-'. * They can start with numbers, e.g. "3proxy". From e7ad79fbed69555704857322063ad456eef6c632 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 26 May 2017 22:06:24 -0500 Subject: [PATCH 0975/2394] Add latest version of NCO (#4370) --- var/spack/repos/builtin/packages/nco/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 7e52380f626..aeccee7a74f 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -30,8 +30,9 @@ class Nco(AutotoolsPackage): netCDF-accessible formats""" homepage = "http://nco.sourceforge.net/" - url = "https://github.com/nco/nco/archive/4.6.6.tar.gz" + url = "https://github.com/nco/nco/archive/4.6.7.tar.gz" + version('4.6.7', 'b04c92aa715d3fad3ebebd1fd178ce32') version('4.6.6', 'df6fa47aaf6e41adfc0631912a7a341f') version('4.6.5', '2afd34a6bb5ff6c7ed39cf40c917b6e4') version('4.6.4', '22f4e779d0011a9c0db90fda416c8e45') From a9feeefdb93c7766d02e264bbdd7f070c2d6ec83 Mon Sep 17 00:00:00 2001 From: eklee15 Date: Fri, 26 May 2017 23:06:55 -0400 Subject: [PATCH 0976/2394] Added pgi support for mumps (#4369) --- var/spack/repos/builtin/packages/mumps/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index c5bd783f393..f28941fda37 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -178,8 +178,8 @@ def write_makefile_inc(self): # TODO: change the value to the correct one according to the # compiler possible values are -DAdd_, -DAdd__ and/or -DUPPER - if self.compiler.name == 'intel': - # Intel Fortran compiler provides the main() function so + if self.compiler.name == 'intel' or self.compiler.name == 'pgi': + # Intel & PGI Fortran compiler provides the main() function so # C examples linked with the Fortran compiler require a # hack defined by _DMAIN_COMP (see examples/c_example.c) makefile_conf.append("CDEFS = -DAdd_ -DMAIN_COMP") From c0fff6722dadfa7ef576d3bcc815f98ce33a7d03 Mon Sep 17 00:00:00 2001 From: eklee15 Date: Fri, 26 May 2017 23:07:24 -0400 Subject: [PATCH 0977/2394] added -c11 flag for pgi compiler for TSL (#4367) --- var/spack/repos/builtin/packages/parmetis/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py index b07c796dd76..c66829f94e4 100644 --- a/var/spack/repos/builtin/packages/parmetis/package.py +++ b/var/spack/repos/builtin/packages/parmetis/package.py @@ -70,7 +70,9 @@ def install(self, spec, prefix): '-DGKLIB_PATH:PATH=%s/GKlib' % spec['metis'].prefix.include, '-DMETIS_PATH:PATH=%s' % spec['metis'].prefix, '-DCMAKE_C_COMPILER:STRING=%s' % spec['mpi'].mpicc, - '-DCMAKE_CXX_COMPILER:STRING=%s' % spec['mpi'].mpicxx + '-DCMAKE_CXX_COMPILER:STRING=%s' % spec['mpi'].mpicxx, + '-DCMAKE_C_FLAGS:STRING=%s' % ( + '-c11' if '%pgi' in spec else ''), ]) if '+shared' in spec: From 248fc92a459d8587dc3b61a98642b945d8b98f7c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 26 May 2017 20:08:00 -0700 Subject: [PATCH 0978/2394] Fix bwa url's (#4366) * Fix bwa url's Work around varying github URLs. See #4365 for details. * Restore main url entry @adamjstewart pointed out that the package still needs a main url so that `spack versions` works. --- var/spack/repos/builtin/packages/bwa/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/bwa/package.py b/var/spack/repos/builtin/packages/bwa/package.py index 8b7f33aeaa9..6b326ae6fe5 100644 --- a/var/spack/repos/builtin/packages/bwa/package.py +++ b/var/spack/repos/builtin/packages/bwa/package.py @@ -31,7 +31,8 @@ class Bwa(Package): homepage = "http://github.com/lh3/bwa" url = "https://github.com/lh3/bwa/releases/download/v0.7.15/bwa-0.7.15.tar.bz2" - version('0.7.15', 'fcf470a46a1dbe2f96a1c5b87c530554') + version('0.7.15', 'fcf470a46a1dbe2f96a1c5b87c530554', + url="https://github.com/lh3/bwa/releases/download/v0.7.15/bwa-0.7.15.tar.bz2") version('0.7.12', 'e24a587baaad411d5da89516ad7a261a', url='https://github.com/lh3/bwa/archive/0.7.12.tar.gz') From 1d80a879960191ad82cb8d78b58ef58d04537b2b Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 26 May 2017 20:08:40 -0700 Subject: [PATCH 0979/2394] Fix mummerplot when ^perl@5.20: (#4348) * Fix mummerplot when ^perl@5.20: Calling defined() on a hash has been deprecated for ages. It became an error in perl@5.20. If we're building with a perl where it's illegal, we should fix it. * Simplify call to filter_file Treat the first arg to filter_file as a string rather than a regex, so that we don't have to figure out the escapes. * Patch mummerplot for *any* perl version. --- var/spack/repos/builtin/packages/mummer/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/mummer/package.py b/var/spack/repos/builtin/packages/mummer/package.py index 222aab54b79..b8cd61531c7 100644 --- a/var/spack/repos/builtin/packages/mummer/package.py +++ b/var/spack/repos/builtin/packages/mummer/package.py @@ -39,6 +39,14 @@ class Mummer(Package): patch('Makefile.patch') patch('scripts-Makefile.patch') + def patch(self): + """Fix mummerplot's use of defined on hashes (deprecated + since perl@5.10, made illegal in perl@5.20.""" + + kwargs = {'string': True} + filter_file('defined (%', '(%', 'scripts/mummerplot.pl', + **kwargs) + def install(self, spec, prefix): if self.run_tests: make('check') From 1b07d949aeb88c31f7618eaed391a27839f4abb4 Mon Sep 17 00:00:00 2001 From: eklee15 Date: Sat, 27 May 2017 07:49:21 -0400 Subject: [PATCH 0980/2394] Added pgi support for suite-sparse package (#4340) * Added pgi support for suite-sparse package * Patch modified * added 'CFOPENMP={0}'.format(self.compiler.openmp_flag) for -mp flag --- .../repos/builtin/packages/suite-sparse/package.py | 6 +++++- .../repos/builtin/packages/suite-sparse/pgi.patch | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/suite-sparse/pgi.patch diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index ae2a99e7371..7884e540ba5 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -53,6 +53,9 @@ class SuiteSparse(Package): patch('tbb_453.patch', when='@4.5.3:+tbb') + # This patch removes unsupported flags for pgi compiler + patch('pgi.patch', when='%pgi') + def install(self, spec, prefix): # The build system of SuiteSparse is quite old-fashioned. # It's basically a plain Makefile which include an header @@ -74,7 +77,8 @@ def install(self, spec, prefix): 'CUDA=no', 'CUDA_PATH={0}'.format( spec['cuda'].prefix if '+cuda' in spec else '' - ) + ), + 'CFOPENMP={0}'.format(self.compiler.openmp_flag) ]) if '+pic' in spec: diff --git a/var/spack/repos/builtin/packages/suite-sparse/pgi.patch b/var/spack/repos/builtin/packages/suite-sparse/pgi.patch new file mode 100644 index 00000000000..f615a576747 --- /dev/null +++ b/var/spack/repos/builtin/packages/suite-sparse/pgi.patch @@ -0,0 +1,12 @@ +--- a/SuiteSparse_config/SuiteSparse_config.mk ++++ b/SuiteSparse_config/SuiteSparse_config.mk +@@ -89,7 +89,8 @@ + + # The CF macro is used by SuiteSparse Makefiles as a combination of + # CFLAGS, CPPFLAGS, TARGET_ARCH, and system-dependent settings. +- CF ?= $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(OPTIMIZATION) -fexceptions -fPIC ++ #CF ?= $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(OPTIMIZATION) -fexceptions -fPIC ++ CF ?= $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(OPTIMIZATION) -fPIC + + #--------------------------------------------------------------------------- + # OpenMP is used in CHOLMOD From f9ac965fb9ed251819c80541bb1bd8542c416952 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 27 May 2017 12:51:03 -0500 Subject: [PATCH 0981/2394] Document known issue with R concretization (#4313) --- lib/spack/docs/known_issues.rst | 40 +++++++++++++++++++ var/spack/repos/builtin/packages/r/package.py | 2 + 2 files changed, 42 insertions(+) diff --git a/lib/spack/docs/known_issues.rst b/lib/spack/docs/known_issues.rst index a68033dba69..2756f596914 100644 --- a/lib/spack/docs/known_issues.rst +++ b/lib/spack/docs/known_issues.rst @@ -37,6 +37,46 @@ A workaround is to explicitly activate the variant related to the dependency: See https://github.com/LLNL/spack/issues/397 for further details. +--------------------------------------------------- +Variants are not properly forwarded to dependencies +--------------------------------------------------- + +**Status:** Expected to be fixed in the next release + +Sometimes, a variant of a package can also affect how its dependencies are +built. For example, in order to build MPI support for a package, it may +require that its dependencies are also built with MPI support. In the +``package.py``, this looks like: + +.. code-block:: python + + depends_on('hdf5~mpi', when='~mpi') + depends_on('hdf5+mpi', when='+mpi') + +Spack handles this situation properly for *immediate* dependencies, and +builds ``hdf5`` with the same variant you used for the package that +depends on it. However, for *indirect* dependencies (dependencies of +dependencies), Spack does not backtrack up the DAG far enough to handle +this. Users commonly run into this situation when trying to build R with +X11 support: + +.. code-block:: console + + $ spack install r+X + ... + ==> Error: Invalid spec: 'cairo@1.14.8%gcc@6.2.1+X arch=linux-fedora25-x86_64 ^bzip2@1.0.6%gcc@6.2.1+shared arch=linux-fedora25-x86_64 ^font-util@1.3.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^fontconfig@2.12.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^freetype@2.7.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^gettext@0.19.8.1%gcc@6.2.1+bzip2+curses+git~libunistring+libxml2+tar+xz arch=linux-fedora25-x86_64 ^glib@2.53.1%gcc@6.2.1~libmount arch=linux-fedora25-x86_64 ^inputproto@2.3.2%gcc@6.2.1 arch=linux-fedora25-x86_64 ^kbproto@1.0.7%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libffi@3.2.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libpng@1.6.29%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libpthread-stubs@0.4%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libx11@1.6.5%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxau@1.0.8%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxcb@1.12%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxdmcp@1.1.2%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxext@1.3.3%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxml2@2.9.4%gcc@6.2.1~python arch=linux-fedora25-x86_64 ^libxrender@0.9.10%gcc@6.2.1 arch=linux-fedora25-x86_64 ^ncurses@6.0%gcc@6.2.1~symlinks arch=linux-fedora25-x86_64 ^openssl@1.0.2k%gcc@6.2.1 arch=linux-fedora25-x86_64 ^pcre@8.40%gcc@6.2.1+utf arch=linux-fedora25-x86_64 ^pixman@0.34.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^pkg-config@0.29.2%gcc@6.2.1+internal_glib arch=linux-fedora25-x86_64 ^python@2.7.13%gcc@6.2.1+shared~tk~ucs4 arch=linux-fedora25-x86_64 ^readline@7.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^renderproto@0.11.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^sqlite@3.18.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^tar^util-macros@1.19.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xcb-proto@1.12%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xextproto@7.3.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xproto@7.0.31%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xtrans@1.3.5%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xz@5.2.3%gcc@6.2.1 arch=linux-fedora25-x86_64 ^zlib@1.2.11%gcc@6.2.1+pic+shared arch=linux-fedora25-x86_64'. + Package cairo requires variant ~X, but spec asked for +X + +A workaround is to explicitly activate the variants of dependencies as well: + +.. code-block:: console + + $ spack install r+X ^cairo+X ^pango+X + +See https://github.com/LLNL/spack/issues/267 and +https://github.com/LLNL/spack/issues/2546 for further details. + + --------------------------------- ``spack extensions`` doesn't work --------------------------------- diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 4ae8caab238..5c092e30e5e 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -74,6 +74,8 @@ class R(AutotoolsPackage): depends_on('cairo+X', when='+X') depends_on('cairo~X', when='~X') depends_on('pango') + depends_on('pango+X', when='+X') + depends_on('pango~X', when='~X') depends_on('freetype') depends_on('tcl') depends_on('tk') From 50e729173ba49f0c95ae98266caca16b119f481a Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 27 May 2017 22:02:25 +0200 Subject: [PATCH 0982/2394] arpack: add 3.5.0 (#4375) --- var/spack/repos/builtin/packages/arpack-ng/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py index ebaeb1da1da..5da29828b29 100644 --- a/var/spack/repos/builtin/packages/arpack-ng/package.py +++ b/var/spack/repos/builtin/packages/arpack-ng/package.py @@ -56,6 +56,7 @@ class ArpackNg(Package): homepage = 'https://github.com/opencollab/arpack-ng' url = 'https://github.com/opencollab/arpack-ng/archive/3.3.0.tar.gz' + version('3.5.0', '9762c9ae6d739a9e040f8201b1578874') version('3.4.0', 'ae9ca13f2143a7ea280cb0e2fd4bfae4') version('3.3.0', 'ed3648a23f0a868a43ef44c97a21bad5') From f14041d6c1902ea18d74690374074a8d0d256ffe Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Sat, 27 May 2017 16:02:39 -0400 Subject: [PATCH 0983/2394] added STAR aligner package (#4368) * added STAR aligner package * fixed flake errors * PATH NOW WORKS * STAR install now works * star install now perfected --- .../repos/builtin/packages/star/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/star/package.py diff --git a/var/spack/repos/builtin/packages/star/package.py b/var/spack/repos/builtin/packages/star/package.py new file mode 100644 index 00000000000..87c30733e47 --- /dev/null +++ b/var/spack/repos/builtin/packages/star/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Star(Package): + """STAR is an ultrafast universal RNA-seq aligner.""" + + homepage = "https://github.com/alexdobin/STAR" + url = "https://github.com/alexdobin/STAR/archive/2.5.3a.tar.gz" + + version('2.5.3a', 'baf8d1b62a50482cfa13acb7652dc391') + + def install(self, spec, prefix): + with working_dir('source'): + make('STAR', 'STARlong') + mkdirp(prefix.bin) + install('STAR', prefix.bin) + install('STARlong', prefix.bin) From d0d7768b90674ad200509a7ce71e8f3adb97604e Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 27 May 2017 23:35:05 +0200 Subject: [PATCH 0984/2394] Petsc and Slepc -- add new versions (#4378) * petsc: add 3.7.6 * slepc: add 3.7.4 * hypre: remove whitespace --- var/spack/repos/builtin/packages/hypre/package.py | 2 +- var/spack/repos/builtin/packages/petsc/package.py | 1 + var/spack/repos/builtin/packages/slepc/package.py | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index 67a636de447..9af1fecd8c0 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -36,7 +36,7 @@ class Hypre(Package): url = "http://computation.llnl.gov/project/linear_solvers/download/hypre-2.10.0b.tar.gz" version('develop', git='https://github.com/LLNL/hypre', tag='master') - version('xsdk-0.2.0', git='https://github.com/LLNL/hypre', tag='xsdk-0.2.0') + version('xsdk-0.2.0', git='https://github.com/LLNL/hypre', tag='xsdk-0.2.0') version('2.11.2', 'd507943a1a3ce5681c3308e2f3a6dd34') version('2.11.1', '3f02ef8fd679239a6723f60b7f796519') version('2.10.1', 'dc048c4cabb3cd549af72591474ad674') diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 7d41297f32e..c379365dcb7 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -40,6 +40,7 @@ class Petsc(Package): version('develop', git='https://bitbucket.org/petsc/petsc.git', tag='master') version('xsdk-0.2.0', git='https://bitbucket.org/petsc/petsc.git', tag='xsdk-0.2.0') + version('3.7.6', '977aa84b85aa3146c695592cd0a11057') version('3.7.5', 'f00f6e6a3bac39052350dd47194b58a3') version('3.7.4', 'aaf94fa54ef83022c14091f10866eedf') version('3.7.2', '50da49867ce7a49e7a0c1b37f4ec7b34') diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 70db52ba2b7..2e5bd086929 100644 --- a/var/spack/repos/builtin/packages/slepc/package.py +++ b/var/spack/repos/builtin/packages/slepc/package.py @@ -34,6 +34,7 @@ class Slepc(Package): homepage = "http://www.grycap.upv.es/slepc" url = "http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz" + version('3.7.4', '2fb782844e3bc265a8d181c3c3e2632a4ca073111c874c654f1365d33ca2eb8a') version('3.7.3', '3ef9bcc645a10c1779d56b3500472ceb66df692e389d635087d30e7c46424df9') version('3.7.1', '670216f263e3074b21e0623c01bc0f562fdc0bffcd7bd42dd5d8edbe73a532c2') version('3.6.3', '384939d009546db37bc05ed81260c8b5ba451093bf891391d32eb7109ccff876') From 0b252d540218b2dd8af98c184f30952894479d9a Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 27 May 2017 23:35:17 +0200 Subject: [PATCH 0985/2394] tbb: add 2017.6 (#4377) --- var/spack/repos/builtin/packages/tbb/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/tbb/package.py b/var/spack/repos/builtin/packages/tbb/package.py index a4e15e708b3..518d7a86bd2 100644 --- a/var/spack/repos/builtin/packages/tbb/package.py +++ b/var/spack/repos/builtin/packages/tbb/package.py @@ -36,6 +36,8 @@ class Tbb(Package): # Only version-specific URL's work for TBB # can also use https://github.com/01org/tbb/releases/ + version('2017.6', '5b0909fbb1741724f7a0ce83232f50b166788af0', + url='https://github.com/01org/tbb/archive/2017_U6.tar.gz') version('2017.5', '26f720729d322913912e99d1e4a36bd10625d3ca', url='https://github.com/01org/tbb/archive/2017_U5.tar.gz') version('2017.3', '2c451a5bcf6fc31487b98b4b29651c369874277c', From 87ebb0fc157731ac2a52aeb9ce09ad375ad8103d Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 27 May 2017 23:35:32 +0200 Subject: [PATCH 0986/2394] oce: add 0.18.1 (#4376) --- var/spack/repos/builtin/packages/oce/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py index 950621da40a..840b50f4a8a 100644 --- a/var/spack/repos/builtin/packages/oce/package.py +++ b/var/spack/repos/builtin/packages/oce/package.py @@ -34,6 +34,7 @@ class Oce(Package): homepage = "https://github.com/tpaviot/oce" url = "https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz" + version('0.18.1', '2a7597f4243ee1f03245aeeb02d00956') version('0.18', '226e45e77c16a4a6e127c71fefcd171410703960ae75c7ecc7eb68895446a993') version('0.17.2', 'bf2226be4cd192606af677cf178088e5') version('0.17.1', '36c67b87093c675698b483454258af91') @@ -59,7 +60,7 @@ class Oce(Package): # reported 27 Sep 2016 https://github.com/tpaviot/oce/issues/643 if (platform.system() == "Darwin") and ( '.'.join(platform.mac_ver()[0].split('.')[:2]) == '10.12'): - patch('sierra.patch', when='@0.17.2:0.18') + patch('sierra.patch', when='@0.17.2:0.18.0') def install(self, spec, prefix): options = [] From 7ea0e143c5e923b80b0c3fa3db321cc93adf02fd Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Mon, 29 May 2017 02:17:16 +1000 Subject: [PATCH 0987/2394] python: RPATH on Cray (#4209) * python: ensure that distutils sets valid compiler options for RPATH on cray * python: add cray-rpath patches for python@2.3:3.0.1 and python@3.1: * python: in patch(..., when="@a:b platform=c"), limit b must be specified * python: assume that python@4 will break the cray patches --- .../builtin/packages/python/cray-rpath-2.3.patch | 12 ++++++++++++ .../builtin/packages/python/cray-rpath-3.1.patch | 15 +++++++++++++++ .../repos/builtin/packages/python/package.py | 4 ++++ 3 files changed, 31 insertions(+) create mode 100644 var/spack/repos/builtin/packages/python/cray-rpath-2.3.patch create mode 100644 var/spack/repos/builtin/packages/python/cray-rpath-3.1.patch diff --git a/var/spack/repos/builtin/packages/python/cray-rpath-2.3.patch b/var/spack/repos/builtin/packages/python/cray-rpath-2.3.patch new file mode 100644 index 00000000000..54a85cc64a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/python/cray-rpath-2.3.patch @@ -0,0 +1,12 @@ +--- a/Lib/distutils/unixccompiler.py 2003-06-02 05:27:40.000000000 +1000 ++++ b/Lib/distutils/unixccompiler.py 2017-05-13 13:52:45.554213616 +1000 +@@ -208,7 +208,8 @@ + elif compiler[:3] == "gcc" or compiler[:3] == "g++": + return "-Wl,-R" + dir + else: +- return "-R" + dir ++ # Patched by spack to use gcc syntax by default: ++ return "-Wl,-R" + dir + + def library_option(self, lib): + return "-l" + lib diff --git a/var/spack/repos/builtin/packages/python/cray-rpath-3.1.patch b/var/spack/repos/builtin/packages/python/cray-rpath-3.1.patch new file mode 100644 index 00000000000..f203bbbaa5f --- /dev/null +++ b/var/spack/repos/builtin/packages/python/cray-rpath-3.1.patch @@ -0,0 +1,15 @@ +--- a/Lib/distutils/unixccompiler.py 2009-05-09 21:55:12.000000000 +1000 ++++ b/Lib/distutils/unixccompiler.py 2017-05-13 14:30:18.077518999 +1000 +@@ -299,10 +299,8 @@ + else: + return "-Wl,-R" + dir + else: +- # No idea how --enable-new-dtags would be passed on to +- # ld if this system was using GNU ld. Don't know if a +- # system like this even exists. +- return "-R" + dir ++ # Patched by spack to use gcc syntax by default: ++ return "-Wl,-R" + dir + + def library_option(self, lib): + return "-l" + lib diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index c5f0f23d6d6..e7dede8ecc2 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -92,6 +92,10 @@ class Python(AutotoolsPackage): # Patch does not work for Python 3.1 patch('ncurses.patch', when='@:2.8,3.2:') + # Ensure that distutils chooses correct compiler option for RPATH on cray: + patch('cray-rpath-2.3.patch', when="@2.3:3.0.1 platform=cray") + patch('cray-rpath-3.1.patch', when="@3.1:3.99 platform=cray") + _DISTUTIL_VARS_TO_SAVE = ['LDSHARED'] _DISTUTIL_CACHE_FILENAME = 'sysconfig.json' _distutil_vars = None From 62daeaa525b1ae7b1f5da1c48d957430787be280 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 29 May 2017 13:36:18 -0700 Subject: [PATCH 0988/2394] Add package for bamutil (#4387) *Minimally* tested on CentOS 7. Stole the `install_target` bit from zip.... --- .../packages/bamutil/libstatgen-issue-9.patch | 11 +++++ .../repos/builtin/packages/bamutil/package.py | 45 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 var/spack/repos/builtin/packages/bamutil/libstatgen-issue-9.patch create mode 100644 var/spack/repos/builtin/packages/bamutil/package.py diff --git a/var/spack/repos/builtin/packages/bamutil/libstatgen-issue-9.patch b/var/spack/repos/builtin/packages/bamutil/libstatgen-issue-9.patch new file mode 100644 index 00000000000..23435f7c3c9 --- /dev/null +++ b/var/spack/repos/builtin/packages/bamutil/libstatgen-issue-9.patch @@ -0,0 +1,11 @@ +--- a/libStatGen/general/PedigreeLoader.cpp 2017-05-29 11:08:07.627528417 -0700 ++++ b/libStatGen/general/PedigreeLoader.cpp 2017-05-29 11:08:36.247547411 -0700 +@@ -636,7 +636,7 @@ + return 2; + default : + { +- bool result = atoi(code); ++ int result = atoi(code); + + if (result != 0 && result != 1 && result != 2) + { diff --git a/var/spack/repos/builtin/packages/bamutil/package.py b/var/spack/repos/builtin/packages/bamutil/package.py new file mode 100644 index 00000000000..1c1268f7f1d --- /dev/null +++ b/var/spack/repos/builtin/packages/bamutil/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Bamutil(MakefilePackage): + """bamUtil is a repository that contains several programs + that perform operations on SAM/BAM files. All of these programs + are built into a single executable, bam. + """ + + homepage = "http://genome.sph.umich.edu/wiki/BamUtil" + url = "http://genome.sph.umich.edu/w/images/7/70/BamUtilLibStatGen.1.0.13.tgz" + + version('1.0.13', '08b7d0bb1d60be104a11f0e54ddf4a79') + + # Looks like this will be fixed in 1.0.14. + # https://github.com/statgen/libStatGen/issues/9 + patch('libstatgen-issue-9.patch', when='@1.0.13:') + + @property + def install_targets(self): + return ['install', 'INSTALLDIR={0}'.format(self.prefix.bin)] From e31f80988c50f0d4db863ee0cfe5b3f23fdf5e73 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 29 May 2017 13:47:31 -0700 Subject: [PATCH 0989/2394] Add support for an older version of STAR (#4385) What the user wants, the user etc.... Add info for STAR@2.4.2a. It's URL looks different, so added a URL for it. This broke the URL for the current version, so added a URL for it also (known bug). *Minimally* tested on CentOS 7. --- var/spack/repos/builtin/packages/star/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/star/package.py b/var/spack/repos/builtin/packages/star/package.py index 87c30733e47..a70dfb00bbc 100644 --- a/var/spack/repos/builtin/packages/star/package.py +++ b/var/spack/repos/builtin/packages/star/package.py @@ -31,7 +31,10 @@ class Star(Package): homepage = "https://github.com/alexdobin/STAR" url = "https://github.com/alexdobin/STAR/archive/2.5.3a.tar.gz" - version('2.5.3a', 'baf8d1b62a50482cfa13acb7652dc391') + version('2.5.3a', 'baf8d1b62a50482cfa13acb7652dc391', + url='https://github.com/alexdobin/STAR/archive/2.5.3a.tar.gz') + version('2.4.2a', '8b9345f2685a5ec30731e0868e86d506', + url='https://github.com/alexdobin/STAR/archive/STAR_2.4.2a.tar.gz') def install(self, spec, prefix): with working_dir('source'): From e3eaba80b1b48788e0c80e581650c33a3f729836 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 29 May 2017 14:59:30 -0700 Subject: [PATCH 0990/2394] Ensure Config.pm has correct setting for cc (#4345) * Ensure Config.pm has correct setting for cc Run a filter after install so that Config.pm records the compiler that Spack built the package with. If this isn't done, $Config{cc} will be set to Spack's cc wrapper script. * Also patch compilers Config_heavy.pl This patch sets ld=gcc, which appears to work. I'm not sure if there's a good way to get at the ld that Spack uses. * Clean up quoting * Fix pattern for Config.pm Does not start at beginning of line... --- .../repos/builtin/packages/perl/package.py | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 10895f60894..ef1c11289f0 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -31,6 +31,7 @@ # Date: September 6, 2015 # from spack import * +import os class Perl(Package): # Perl doesn't use Autotools, it should subclass Package @@ -160,3 +161,33 @@ def setup_dependent_package(self, module, dependent_spec): # if it does not exist already. if dependent_spec.package.is_extension: mkdirp(module.perl_lib_dir) + + @run_after('install') + def filter_config_dot_pm(self): + """Run after install so that Config.pm records the compiler that Spack + built the package with. If this isn't done, $Config{cc} will + be set to Spack's cc wrapper script. + """ + + kwargs = {'ignore_absent': True, 'backup': False, 'string': False} + + # Find the actual path to the installed Config.pm file. + perl = Executable(join_path(prefix.bin, 'perl')) + config_dot_pm = perl('-MModule::Loaded', '-MConfig', '-e', + 'print is_loaded(Config)', output=str) + + match = 'cc *=>.*' + substitute = "cc => '{cc}',".format(cc=self.compiler.cc) + filter_file(match, substitute, config_dot_pm, **kwargs) + + # And the path Config_heavy.pl + d = os.path.dirname(config_dot_pm) + config_heavy = join_path(d, 'Config_heavy.pl') + + match = '^cc=.*' + substitute = "cc='{cc}'".format(cc=self.compiler.cc) + filter_file(match, substitute, config_heavy, **kwargs) + + match = '^ld=.*' + substitute = "ld='{ld}'".format(ld=self.compiler.cc) + filter_file(match, substitute, config_heavy, **kwargs) From d7622b32f10e157a0f998083664072e98222228b Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 May 2017 13:56:20 +0200 Subject: [PATCH 0991/2394] Close #4388 libaio fetch (#4392) fetch libaio via the debian mirrors, the same way as archlinux builds it (from original, unmodified sources): https://git.archlinux.org/svntogit/packages.git/commit/trunk/PKGBUILD?h=packages/libaio&id=a8ec32dd3988668809e6c6affe678db04db3fc76 --- var/spack/repos/builtin/packages/libaio/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/libaio/package.py b/var/spack/repos/builtin/packages/libaio/package.py index 735ced047be..c34ac13e609 100644 --- a/var/spack/repos/builtin/packages/libaio/package.py +++ b/var/spack/repos/builtin/packages/libaio/package.py @@ -28,10 +28,10 @@ class Libaio(Package): """This is the linux native Asynchronous I/O interface library.""" - homepage = "https://git.fedorahosted.org/cgit/libaio.git" - url = "https://git.fedorahosted.org/cgit/libaio.git/snapshot/libaio-0.3.110-1.tar.gz" + homepage = "http://lse.sourceforge.net/io/aio.html" + url = "https://ftp.de.debian.org/debian/pool/main/liba/libaio/libaio_0.3.110.orig.tar.gz" - version('0.3.110-1', 'eb6b1b435afadb5b80c5dd80984249f6') + version('0.3.110', '2a35602e43778383e2f4907a4ca39ab8') def install(self, spec, prefix): # libaio is not supported on OS X From 1b7c29cdfecd7179c40fc33ba880c2023383e584 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 May 2017 13:56:44 +0200 Subject: [PATCH 0992/2394] Fix #3851 xmlto fetch (#4393) xmlto migrated to https://pagure.io/xmlto --- var/spack/repos/builtin/packages/xmlto/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/xmlto/package.py b/var/spack/repos/builtin/packages/xmlto/package.py index 2ed392b9b86..35f41d72e93 100644 --- a/var/spack/repos/builtin/packages/xmlto/package.py +++ b/var/spack/repos/builtin/packages/xmlto/package.py @@ -31,8 +31,8 @@ class Xmlto(AutotoolsPackage): without remembering many long options and searching for the syntax of the backends.""" - homepage = "http://cyberelk.net/tim/software/xmlto/" - url = "https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.28.tar.gz" + homepage = "https://pagure.io/xmlto" + url = "https://releases.pagure.org/xmlto/xmlto-0.0.28.tar.gz" version('0.0.28', 'a1fefad9d83499a15576768f60f847c6') From 115fec334663682cf67b7469a73943c07dff6c47 Mon Sep 17 00:00:00 2001 From: Diana Bite Date: Tue, 30 May 2017 12:57:28 +0100 Subject: [PATCH 0993/2394] zeromq: Fix invocation when building with clang. (#4395) --- var/spack/repos/builtin/packages/zeromq/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/zeromq/package.py b/var/spack/repos/builtin/packages/zeromq/package.py index 51fff7222d4..938bb857fb4 100644 --- a/var/spack/repos/builtin/packages/zeromq/package.py +++ b/var/spack/repos/builtin/packages/zeromq/package.py @@ -41,4 +41,8 @@ class Zeromq(AutotoolsPackage): depends_on("libsodium@:1.0.3", when='@:4.1.2') def configure_args(self): - return ['--with-libsodium'] + config_args = ['--with-libsodium'] + if 'clang' in self.compiler.cc: + config_args.append("CFLAGS=-Wno-gnu") + config_args.append("CXXFLAGS=-Wno-gnu") + return config_args From 8297244446e5505c888cf462442af3b9d5de0932 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 30 May 2017 04:59:37 -0700 Subject: [PATCH 0994/2394] Add package for vcftools@0.1.14 (#4389) * Add package for vcftools@0.1.14 The package munges the various perl scripts so that their sbang lines point to the depended upon perl (perhaps with Spack sbanger in the dance) instead of relying on `/usr/bin/env perl`. As it stands it installs its Perl libraries into `prefix/lib` and then depends on `setup_environment` to prepend that dir onto PERL5LIB. See my [vcftools issue 80](https://github.com/vcftools/vcftools/issues/80) for a discussion about fixing its non-functional attempt at isolating itself from PERL5LIB shenanigans. * perl dependency should be build/run --- .../builtin/packages/vcftools/package.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vcftools/package.py diff --git a/var/spack/repos/builtin/packages/vcftools/package.py b/var/spack/repos/builtin/packages/vcftools/package.py new file mode 100644 index 00000000000..3f2f01dbff1 --- /dev/null +++ b/var/spack/repos/builtin/packages/vcftools/package.py @@ -0,0 +1,75 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Vcftools(AutotoolsPackage): + """VCFtools is a program package designed for working with VCF files, + such as those generated by the 1000 Genomes Project. The aim of + VCFtools is to provide easily accessible methods for working + with complex genetic variation data in the form of VCF files. + """ + + homepage = "https://vcftools.github.io/" + url = "https://github.com/vcftools/vcftools/releases/download/v0.1.14/vcftools-0.1.14.tar.gz" + + # this is "a pre-release" + # version('0.1.15', '61045197848dea20a0158d2faf02e5be') + version('0.1.14', 'a110662535651caa6cc8c876216a9f77') + + depends_on('perl', type=('build', 'run')) + depends_on('zlib') + + # this needs to be in sync with what setup_environment adds to + # PERL5LIB below + def configure_args(self): + return ['--with-pmdir=lib'] + + @run_before('install') + def filter_sbang(self): + """Run before install so that the standard Spack sbang install hook + can fix up the path to the perl binary. + """ + + with working_dir('src/perl'): + match = '^#!/usr/bin/env perl' + perl = join_path(self.spec['perl'].prefix.bin, 'perl') + substitute = "#!{perl}".format(perl=perl) + # tab-to-vcf added in 0.1.15 + files = ['fill-aa', 'fill-an-ac', 'fill-fs', + 'fill-ref-md5', 'tab-to-vcf', 'vcf-annotate', + 'vcf-compare', 'vcf-concat', 'vcf-consensus', + 'vcf-contrast', 'vcf-convert', + 'vcf-fix-newlines', 'vcf-fix-ploidy', + 'vcf-indel-stats', 'vcf-isec', 'vcf-merge', + 'vcf-phased-join', 'vcf-query', + 'vcf-shuffle-cols', 'vcf-sort', 'vcf-stats', + 'vcf-subset', 'vcf-to-tab', 'vcf-tstv', + 'vcf-validator', ] + kwargs = {'ignore_absent': True, 'backup': False, 'string': False} + filter_file(match, substitute, *files, **kwargs) + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PERL5LIB', join_path(self.prefix, 'lib')) From c23ccb58e1a5ba81077890a10f03bf009fc7b2be Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 May 2017 16:37:34 +0200 Subject: [PATCH 0995/2394] Package: Wt (#4384) * Package: libharu (PDF) C++ PDF generation library, necessary for wt * Package: WT Adds `wt` "witty", a Qt-like C++ web framework for GUIs --- .../repos/builtin/packages/libharu/package.py | 51 ++++++++++ .../repos/builtin/packages/wt/package.py | 95 +++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libharu/package.py create mode 100644 var/spack/repos/builtin/packages/wt/package.py diff --git a/var/spack/repos/builtin/packages/libharu/package.py b/var/spack/repos/builtin/packages/libharu/package.py new file mode 100644 index 00000000000..54477fc7b5b --- /dev/null +++ b/var/spack/repos/builtin/packages/libharu/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class Libharu(AutotoolsPackage): + """libharu - free PDF library. + + Haru is a free, cross platform, open-sourced software library for + generating PDF.""" + + homepage = "http://libharu.org" + url = "https://github.com/libharu/libharu/archive/RELEASE_2_3_0.tar.gz" + + version('2.3.0', '4f916aa49c3069b3a10850013c507460') + version('2.2.0', 'b65a6fc33a0bdad89bec6b7def101f01') + version('master', branch='master', + git='https://github.com/libharu/libharu.git') + + def autoreconf(self, spec, prefix): + """execute their autotools wrapper script""" + if os.path.exists('./buildconf.sh'): + bash = which('bash') + bash('./buildconf.sh', '--force') + + def url_for_version(self, version): + url = 'https://github.com/libharu/libharu/archive/RELEASE_{0}.tar.gz' + return url.format(version.underscored) diff --git a/var/spack/repos/builtin/packages/wt/package.py b/var/spack/repos/builtin/packages/wt/package.py new file mode 100644 index 00000000000..91e80394f5e --- /dev/null +++ b/var/spack/repos/builtin/packages/wt/package.py @@ -0,0 +1,95 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Wt(CMakePackage): + """Wt, C++ Web Toolkit. + + Wt is a C++ library for developing web applications.""" + + homepage = "http://www.webtoolkit.eu/wt" + url = "https://github.com/emweb/wt/archive/3.3.7.tar.gz" + + version('3.3.7', '09858901f2dcf5c3d36a9237daba3e3f') + version('master', branch='master', + git='https://github.com/emweb/wt.git') + + # wt builds in parallel, but requires more than 5 GByte RAM per -j + # which most machines do not provide and crash the build + parallel = False + + variant('openssl', default=True, + description='SSL and WebSockets support in the built-in httpd, ' + 'the HTTP(S) client, and additional cryptographic ' + 'hashes in the authentication module') + variant('libharu', default=True, description='painting to PDF') + # variant('graphicsmagick', default=True, + # description='painting to PNG, GIF') + variant('sqlite', default=False, description='create SQLite3 DBO') + variant('mariadb', default=False, description='create MariaDB/MySQL DBO') + variant('postgresql', default=False, description='create PostgreSQL DBO') + # variant('firebird', default=False, description='create Firebird DBO') + variant('pango', default=True, + description='improved font support in PDF and raster image ' + 'painting') + variant('zlib', default=True, + description='compression in the built-in httpd') + # variant('fastcgi', default=False, + # description='FastCGI connector via libfcgi++') + + depends_on('boost@1.46.1:') + depends_on('openssl', when='+openssl') + depends_on('libharu', when='+libharu') + depends_on('sqlite', when='+sqlite') + depends_on('mariadb', when='+mariadb') + depends_on('postgresql', when='+postgresql') + depends_on('pango', when='+pango') + depends_on('zlib', when='+zlib') + + def cmake_args(self): + spec = self.spec + + cmake_args = [ + '-DBUILD_EXAMPLES:BOOL=OFF', + '-DCONNECTOR_FCGI:BOOL=OFF', + '-DENABLE_OPENGL:BOOL=OFF', + '-DENABLE_QT4:BOOL=OFF' + ] + cmake_args.extend([ + '-DENABLE_SSL:BOOL={0}'.format(( + 'ON' if '+openssl' in spec else 'OFF')), + '-DENABLE_HARU:BOOL={0}'.format(( + 'ON' if '+libharu' in spec else 'OFF')), + '-DENABLE_PANGO:BOOL={0}'.format(( + 'ON' if '+pango' in spec else 'OFF')), + '-DENABLE_SQLITE:BOOL={0}'.format(( + 'ON' if '+sqlite' in spec else 'OFF')), + '-DENABLE_MYSQL:BOOL={0}'.format(( + 'ON' if '+mariadb' in spec else 'OFF')), + '-DENABLE_POSTGRES:BOOL={0}'.format(( + 'ON' if '+postgres' in spec else 'OFF')) + ]) + return cmake_args From 336d988cc6bad73bc582789c278bdeb2d770def2 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 30 May 2017 10:16:43 -0500 Subject: [PATCH 0996/2394] Add every version of OpenMPI (#4372) --- .../repos/builtin/packages/openmpi/package.py | 108 +++++++++++++++--- 1 file changed, 91 insertions(+), 17 deletions(-) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 14deb97bdf4..2ab75859180 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -66,26 +66,96 @@ class Openmpi(AutotoolsPackage): homepage = "http://www.open-mpi.org" url = "https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.bz2" list_url = "http://www.open-mpi.org/software/ompi/" - list_depth = 2 - version('2.1.1', 'ae542f5cf013943ffbbeb93df883731b') - version('2.1.0', '4838a5973115c44e14442c01d3f21d52') - version('2.0.2', 'ecd99aa436a1ca69ce936a96d6a3fa48') - version('2.0.1', '6f78155bd7203039d2448390f3b51c96') - version('2.0.0', 'cdacc800cb4ce690c1f1273cb6366674') - version('1.10.6', '2e65008c1867b1f47c32f9f814d41706') - version('1.10.5', 'd32ba9530a869d9c1eae930882ea1834') - version('1.10.4', '9d2375835c5bc5c184ecdeb76c7c78ac') - version('1.10.3', 'e2fe4513200e2aaa1500b762342c674b') - version('1.10.2', 'b2f43d9635d2d52826e5ef9feb97fd4c') - version('1.10.1', 'f0fcd77ed345b7eafb431968124ba16e') - version('1.10.0', '280cf952de68369cebaca886c5ce0304') - version('1.8.8', '0dab8e602372da1425e9242ae37faf8c') - version('1.6.5', '03aed2a4aa4d0b27196962a2a65fc475') + # Current + version('2.1.1', 'ae542f5cf013943ffbbeb93df883731b') # libmpi.so.20.10.1 + version('2.1.0', '4838a5973115c44e14442c01d3f21d52') # libmpi.so.20.10.0 + + # Still supported + version('2.0.2', 'ecd99aa436a1ca69ce936a96d6a3fa48') # libmpi.so.20.0.2 + version('2.0.1', '6f78155bd7203039d2448390f3b51c96') # libmpi.so.20.0.1 + version('2.0.0', 'cdacc800cb4ce690c1f1273cb6366674') # libmpi.so.20.0.0 + + version('1.10.7', 'c87c613f9acb1a4eee21fa1ac8042579') # libmpi.so.12.0.7 + version('1.10.6', '2e65008c1867b1f47c32f9f814d41706') # libmpi.so.12.0.6 + version('1.10.5', 'd32ba9530a869d9c1eae930882ea1834') # libmpi.so.12.0.5 + version('1.10.4', '9d2375835c5bc5c184ecdeb76c7c78ac') # libmpi.so.12.0.4 + version('1.10.3', 'e2fe4513200e2aaa1500b762342c674b') # libmpi.so.12.0.3 + version('1.10.2', 'b2f43d9635d2d52826e5ef9feb97fd4c') # libmpi.so.12.0.2 + version('1.10.1', 'f0fcd77ed345b7eafb431968124ba16e') # libmpi.so.12.0.1 + version('1.10.0', '280cf952de68369cebaca886c5ce0304') # libmpi.so.12.0.0 + + # Retired + version('1.8.8', '0dab8e602372da1425e9242ae37faf8c') # libmpi.so.1.6.3 + version('1.8.7', '2485ed6fa0fab9bb5b4e7a9f63718630') # libmpi.so.1.6.2 + version('1.8.6', 'eb569e7dc97eeaa5b1876cccf114f377') # libmpi.so.1.6.1 + version('1.8.5', '93e958914ff0e4d9634d668d2d48c793') # libmpi.so.1.6.0 + version('1.8.4', '93b7ea2c4ebae76947f942579608ae4a') # libmpi.so.1.6.0 + version('1.8.3', '2067d00853e0c33d498153fc7d268d2b') # libmpi.so.1.6.0 + version('1.8.2', '339a9fc199563bacbb359875ce8c9e20') # libmpi.so.1.5.2 + version('1.8.1', '0e12c24a28a605f681ff9a19a1aca2f1') # libmpi.so.1.5.0 + version('1.8', '5999cfb177a50c480b5d0bced379aff1') # libmpi.so.1.5.0 + + version('1.7.5', '321ab81147ac69a5bbca72652fb3b468') # libmpi.so.1.4.0 + version('1.7.4', '4aea4fb00f8956dd56ccf50e5784e03f') # libmpi.so.1.3.0 + version('1.7.3', '7d0779f73c43eb1d098ad037d60649bc') # libmpi.so.1.2.0 + version('1.7.2', 'b897b92100bd13b367e651df483421d5') # libmpi.so.1.1.2 + version('1.7.1', 'f25b446a9dcbbd6a105a99d926d34441') # libmpi.so.1.1.1 + version('1.7', 'c0e3c4b3bfcd8b8bbd027f6f4c164acb') # libmpi.so.1.1.0 + + version('1.6.5', '03aed2a4aa4d0b27196962a2a65fc475') # libmpi.so.1.0.8 + version('1.6.4', '62119579ab92b2592cd96b6a9d2a8cc3') # libmpi.so.1.0.7 + version('1.6.3', 'eedb73155a7a40b0b07718494298fb25') # libmpi.so.1.0.6 + version('1.6.2', '219754715a8e40beb468bbc8f0b3251a') # libmpi.so.1.0.3 + version('1.6.1', '33d2782c20ff6be79130a703b85da8f0') # libmpi.so.1.0.3 + version('1.6', 'dd6f5bd4b3cb14d93bbf530e50e46e60') # libmpi.so.1.0.3 + + # Ancient + version('1.5.5', 'f882fd61ff89db856bfd8f0dfa42e1bd') # libmpi.so.1.0.3 + version('1.5.4', '51153d794c49ce6d275dba2793ab0c68') # libmpi.so.1.0.2 + version('1.5.3', '0eb8ec2aa05c74a4bc7602b01847131e') # libmpi.so.1.0.1 + version('1.5.2', 'faaee6a2777bf607d7fa1297c0b3a9ed') # libmpi.so.1.0.1 + version('1.5.1', '3f9409f5d3b617c04dea48ba8fbd703a') # libmpi.so.1.0.0 + version('1.5', '86bf5f9ef7337231abbca3350b31f112') # libmpi.so.1.0.0 + + version('1.4.5', '84ddd2772f46d35da79e1db8a274c99d') # libmpi.so.0.0.4 + version('1.4.4', 'e58a1ea7b8af62453aaa0ddaee5f26a0') # libmpi.so.0.0.3 + version('1.4.3', 'd2ead141c43b915343f5c5a18f3b5016') # libmpi.so.0.0.2 + version('1.4.2', '53b26fa2586aedaf73cf40effbfcc2f3') # libmpi.so.0.0.2 + version('1.4.1', '28a820c85e02973809df881fdeddd15e') # libmpi.so.0.0.1 + version('1.4', '9786ec0698afed9498ce43dc3978a435') # libmpi.so.0.0.1 + + version('1.3.4', '978c29f3b671856daa0fc67459b73e01') # libmpi.so.0.0.1 + version('1.3.3', 'f6cdc9c195daa8571b2e509e952d6755') # libmpi.so.0.0.0 + version('1.3.2', '75781dc31255cd841701c065e239d994') # libmpi.so.0.0.0 + version('1.3.1', 'd759523b0752139872c534714d641d64') # libmpi.so.0.0.0 + version('1.3', 'efbba7d652d1e430d456f65d7a2e339b') # libmpi.so.0.0.0 + + version('1.2.9', '78c2aebbb746610ed12bdedcc2b6ec0e') # libmpi.so.0.0.0 + version('1.2.8', '7f2d5af02101c5f01173f4f6de296549') # libmpi.so.0.0.0 + version('1.2.7', 'b5ae3059fba71eba4a89a2923da8223f') # libmpi.so.0.0.0 + version('1.2.6', 'f126793b68e71f5ec4a192c40675af2d') # libmpi.so.0.0.0 + version('1.2.5', 'c6e82aab6cdcd425bf29217e8317d7dc') # libmpi.so.0.0.0 + version('1.2.4', '311b38c597f54d8d6b277225ef458666') # libmpi.so.0.0.0 + version('1.2.3', 'ae980bb00f9686934a1143701cc041e4') # libmpi.so.0.0.0 + version('1.2.2', '7f553317e388c4efe479e908b66f910d') # libmpi.so.0.0.0 + version('1.2.1', 'ceaa42891edba2324a94fdd0b87e46ca') # libmpi.so.0.0.0 + version('1.2', '37e8d4edad54a8d8c3127fbef87ebda1') # libmpi.so.0.0.0 + + version('1.1.5', '6aada92896a1830ece6d3ba1e66a17fa') # libmpi.so.0.0.0 + version('1.1.4', '28940b182156478fa442397b0c9660e1') # libmpi.so.0.0.0 + version('1.1.3', 'bbaa7fe9d556212d877d872544a31569') # libmpi.so.0.0.0 + version('1.1.2', '53877ec8bca5f6e505496b6b94b1d850') # libmpi.so.0.0.0 + version('1.1.1', '498b9322ae0ad512026a008a30c7e0b5') # libmpi.so.0.0.0 + version('1.1', '821af8bbb7a8e85ec707cb4c3b6bcbf6') # libmpi.so.0.0.0 + + version('1.0.2', 'fd32861d643f9fe539a01d0d5b836f41') # libmpi.so.0.0.0 + version('1.0.1', '8abccca5cdddc81a6d9d9e22b3bb6db9') # libmpi.so.0.0.0 + version('1.0', 'f5dcb5d3a98f2e5a9c2a0caaef54d806') # libmpi.so.0.0.0 patch('ad_lustre_rwcontig_open_source.patch', when="@1.6.5") patch('llnl-platforms.patch', when="@1.6.5") - patch('configure.patch', when="@1.10.0:1.10.1") + patch('configure.patch', when="@1.10.1") patch('fix_multidef_pmi_class.patch', when="@2.0.0:2.0.1") variant( @@ -120,6 +190,10 @@ class Openmpi(AutotoolsPackage): depends_on('jdk', when='+java') depends_on('sqlite', when='+sqlite3@:1.11') + conflicts('fabrics=psm2', when='@:1.8') # PSM2 support was added in 1.10.0 + conflicts('fabrics=pmi', when='@:1.5.4') # PMI support was added in 1.5.5 + conflicts('fabrics=mxm', when='@:1.5.3') # MXM support was added in 1.5.4 + def url_for_version(self, version): return "http://www.open-mpi.org/software/ompi/v%s/downloads/openmpi-%s.tar.bz2" % ( version.up_to(2), version) @@ -236,7 +310,7 @@ def configure_args(self): config_args.append('--disable-mpi-thread-multiple') # CUDA support - if spec.satisfies('@1.6:'): + if spec.satisfies('@1.7:'): if '+cuda' in spec: config_args.append('--with-cuda={0}'.format( spec['cuda'].prefix)) From d9d5135ec9f1ef71fa6604406a2efe46668821ea Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 30 May 2017 13:37:56 -0500 Subject: [PATCH 0997/2394] Fix spack info bug for Python 3 (#4391) --- lib/spack/spack/cmd/info.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 62de5484af1..f0cddad2e23 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -25,7 +25,7 @@ from __future__ import print_function import textwrap -import itertools +from six.moves import zip_longest from llnl.util.tty.colify import * import spack import spack.fetch_strategy as fs @@ -119,7 +119,7 @@ def lines(self): v.description, width=self.column_widths[2] ) - for t in itertools.izip_longest( + for t in zip_longest( name, allowed, description, fillvalue='' ): yield " " + self.fmt % t From 7e3a11b46a9604bc5e495ec34c60b9e69e6347d6 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 30 May 2017 21:55:50 +0200 Subject: [PATCH 0998/2394] ISAAC: Fix CMakeLists.txt Path (#4374) Somehow the path to `CMakeLists.txt` via the class property `root_cmakelists_dir` was relative but is now actually relative to `spack-build/`. Close 4324 by providing a path relative to the source repo of the stage via a method instead of a member variable --- var/spack/repos/builtin/packages/isaac-server/package.py | 4 +++- var/spack/repos/builtin/packages/isaac/package.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/isaac-server/package.py b/var/spack/repos/builtin/packages/isaac-server/package.py index b9954b0a172..8e345b1ea2e 100644 --- a/var/spack/repos/builtin/packages/isaac-server/package.py +++ b/var/spack/repos/builtin/packages/isaac-server/package.py @@ -31,7 +31,9 @@ class IsaacServer(CMakePackage): homepage = "http://computationalradiationphysics.github.io/isaac/" url = "https://github.com/ComputationalRadiationPhysics/isaac/archive/v1.3.0.tar.gz" - root_cmakelists_dir = 'server' + @property + def root_cmakelists_dir(self): + return join_path(self.stage.source_path, 'server') version('develop', branch='dev', git='https://github.com/ComputationalRadiationPhysics/isaac.git') diff --git a/var/spack/repos/builtin/packages/isaac/package.py b/var/spack/repos/builtin/packages/isaac/package.py index fd3b9799850..390006174e8 100644 --- a/var/spack/repos/builtin/packages/isaac/package.py +++ b/var/spack/repos/builtin/packages/isaac/package.py @@ -31,7 +31,9 @@ class Isaac(CMakePackage): homepage = "http://computationalradiationphysics.github.io/isaac/" url = "https://github.com/ComputationalRadiationPhysics/isaac/archive/v1.3.0.tar.gz" - root_cmakelists_dir = 'lib' + @property + def root_cmakelists_dir(self): + return join_path(self.stage.source_path, 'lib') version('develop', branch='dev', git='https://github.com/ComputationalRadiationPhysics/isaac.git') From 421d8ea31617c4abe11d7bee63afb49ec6969f5a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 30 May 2017 14:57:53 -0500 Subject: [PATCH 0999/2394] Make sure py-entrypoints runs its unit tests (#4347) --- var/spack/repos/builtin/packages/py-entrypoints/package.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-entrypoints/package.py b/var/spack/repos/builtin/packages/py-entrypoints/package.py index 76f6b37b743..2c5082ffd14 100644 --- a/var/spack/repos/builtin/packages/py-entrypoints/package.py +++ b/var/spack/repos/builtin/packages/py-entrypoints/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +from spack.package import PackageBase class PyEntrypoints(PythonPackage): @@ -45,3 +46,8 @@ class PyEntrypoints(PythonPackage): def install(self, spec, prefix): pip = which('pip') pip('install', self.stage.archive_file, '--prefix={0}'.format(prefix)) + + run_after('install')(PackageBase._run_default_install_time_test_callbacks) + + # Check that self.prefix is there after installation + run_after('install')(PackageBase.sanity_check_prefix) From 665598af1b9e1418d082e50c77a4f4265bf2419d Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 30 May 2017 21:59:47 +0200 Subject: [PATCH 1000/2394] Fix missing gcc dependency on zip (#4303) For @:6, java is included in languages=all and requires zip. --- var/spack/repos/builtin/packages/gcc/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 3d42bb98b5b..dbdf4833b34 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -83,6 +83,7 @@ class Gcc(AutotoolsPackage): depends_on('gnat', when='languages=ada') depends_on('binutils~libiberty', when='+binutils') depends_on('zip', type='build', when='languages=java') + depends_on('zip', type='build', when='@:6 languages=all') # TODO: integrate these libraries. # depends_on('ppl') From c15f3bc6ff4235a02666be65b4afd4577b7ed55c Mon Sep 17 00:00:00 2001 From: Diana Bite Date: Wed, 31 May 2017 11:48:43 +0100 Subject: [PATCH 1001/2394] cmocka: Bump version and add checksums (#4405) --- var/spack/repos/builtin/packages/cmocka/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cmocka/package.py b/var/spack/repos/builtin/packages/cmocka/package.py index 274b78379a5..c82c38a46a1 100644 --- a/var/spack/repos/builtin/packages/cmocka/package.py +++ b/var/spack/repos/builtin/packages/cmocka/package.py @@ -28,8 +28,10 @@ class Cmocka(Package): """Unit-testing framework in pure C""" homepage = "https://cmocka.org/" - url = "https://cmocka.org/files/1.0/cmocka-1.0.1.tar.xz" + url = "https://cmocka.org/files/1.1/cmocka-1.1.1.tar.xz" + version('1.1.1', '6fbff4e42589566eda558db98b97623e') + version('1.1.0', '59c9aa5735d9387fb591925ec53523ec') version('1.0.1', 'ed861e501a21a92b2af63e466df2015e') parallel = False From c124fdb7a0c800d0d72e659e1053501f3e2247a4 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Wed, 31 May 2017 13:37:44 +0200 Subject: [PATCH 1002/2394] Fix Fetch MariaDB (#4394) The two given versions of mariadb are not fetchable under the given URL, probably because older versions are purged and only kept in an archive. Add two working, latest revisions of each release line. --- var/spack/repos/builtin/packages/mariadb/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/mariadb/package.py b/var/spack/repos/builtin/packages/mariadb/package.py index d9df200d02e..6313d100528 100644 --- a/var/spack/repos/builtin/packages/mariadb/package.py +++ b/var/spack/repos/builtin/packages/mariadb/package.py @@ -33,8 +33,11 @@ class Mariadb(Package): tools make it very versatile for a wide variety of use cases.""" homepage = "https://mariadb.org/about/" - url = "https://downloads.mariadb.org/f/mariadb-10.1.14/source/mariadb-10.1.14.tar.gz" + url = "https://downloads.mariadb.org/f/mariadb-10.1.23/source/mariadb-10.1.23.tar.gz" + version('10.1.23', '1a7392cc05c7c249acd4495022719ca8') + version('5.5.56', '8bc7772fea3e11b0bc1a09d2278e2e32') + # old versions, do not fetch under given url anymore version('10.1.14', '294925531e0fd2f0461e3894496a5adc') version('5.5.49', '67b5a499a5f158b2a586e6e3bfb4f304') From 218d55a072fb57583d4e1738989ebeff7d2f6bd8 Mon Sep 17 00:00:00 2001 From: Diana Bite Date: Wed, 31 May 2017 12:41:24 +0100 Subject: [PATCH 1003/2394] openssl: Fix build on Aarch64 with clang. (#4404) --- var/spack/repos/builtin/packages/openssl/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 204debbc5f5..67f978e80c1 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -25,6 +25,7 @@ import llnl.util.tty as tty from spack import * +import spack.architecture class Openssl(Package): @@ -85,6 +86,10 @@ def install(self, spec, prefix): options = ['zlib', 'shared'] if spec.satisfies('@1.0'): options.append('no-krb5') + # clang does not support the .arch directive in assembly files. + if 'clang' in self.compiler.cc and \ + 'aarch64' in spack.architecture.sys_type(): + options.append('no-asm') config = Executable('./config') config('--prefix=%s' % prefix, From 2310e9dac0659236beaaf5de70301665df148ac7 Mon Sep 17 00:00:00 2001 From: Nils Deppe Date: Wed, 31 May 2017 15:11:36 -0400 Subject: [PATCH 1004/2394] Add Catch v1.7.1-1.9.4 (#4406) --- var/spack/repos/builtin/packages/catch/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/catch/package.py b/var/spack/repos/builtin/packages/catch/package.py index 880d0f88b57..f439d3d8c26 100644 --- a/var/spack/repos/builtin/packages/catch/package.py +++ b/var/spack/repos/builtin/packages/catch/package.py @@ -31,6 +31,16 @@ class Catch(Package): homepage = "https://github.com/philsquared/Catch" url = "https://github.com/philsquared/Catch/archive/v1.3.0.tar.gz" + version('1.9.4', '110b9173d7f766487fed5b710836c7216a781568') + version('1.9.3', 'dc0cd0b344d8ccb1190ac3447efcb49c9b43d497') + version('1.9.2', '0580f57edd2b33ec671488dc7b6151f9e360c8c9') + version('1.9.1', '10784fc4c3786dfc3bd222fb3f9b048b6d68f186') + version('1.9.0', '62f07506d4a381d1730d494b71cff0396b9eb3d6') + version('1.8.2', '45a7598a8e5c47bc09fb73eec205ffe0885983dc') + version('1.8.1', 'd4e302f712fb7e75ce6f05b436dbaf21dca40030') + version('1.8.0', '26064092b5682c9c997b04015ed1565f0e198827') + version('1.7.2', '13018db2f0f0395456f695b0d0fbc490662e3467') + version('1.7.1', 'f82e11a5cdfef2d36b5687ff5970d383f9e76490') version('1.7.0', 'fe39f5b3eb07a5dd0e3f84a1335ceca7de8982e6') version('1.6.1', '7d46961a3131655b986123f8a1f439a04a0af623') version('1.6.0', '890a3b21085d796e13c3bfaf4b6c6f1d06e4a52e') From 61f640238b10bf6f93af45229718d99f77549c96 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 1 Jun 2017 00:22:24 -0700 Subject: [PATCH 1005/2394] Add a package for Trimmomatic (#4399) * Add a package for Trimmomatic See the discussion about installing jar files in #4386. Also installs a wrapper script that has explicit references to the prerequisite java exe and to the jar file in it's final resting place. * Fix bad format statement Apparently something like this "blah{}".format(...) works (it's missing something inside the curly braces) but fails the travis test. --- .../builtin/packages/trimmomatic/package.py | 65 +++++++++++++++++++ .../packages/trimmomatic/trimmomatic.sh | 3 + 2 files changed, 68 insertions(+) create mode 100644 var/spack/repos/builtin/packages/trimmomatic/package.py create mode 100644 var/spack/repos/builtin/packages/trimmomatic/trimmomatic.sh diff --git a/var/spack/repos/builtin/packages/trimmomatic/package.py b/var/spack/repos/builtin/packages/trimmomatic/package.py new file mode 100644 index 00000000000..1694dbad70b --- /dev/null +++ b/var/spack/repos/builtin/packages/trimmomatic/package.py @@ -0,0 +1,65 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree +from shutil import copyfile +import os.path + + +class Trimmomatic(Package): + """A flexible read trimming tool for Illumina NGS data.""" + + homepage = "http://www.usadellab.org/cms/?page=trimmomatic" + url = "http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.36.zip" + + # Older version aren't explicitly made available, but the URL + # works as we'd like it to, so... + version('0.36', '8549130d86b6f0382b1a71a2eb45de39') + version('0.33', '924fc8eb38fdff71740a0e05d32d6a2b') + + depends_on('jdk@8:', type='run') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + jar_file = 'trimmomatic-{v}.jar'.format(v=self.version.dotted) + install(jar_file, prefix.bin) + + # Put the adapter files someplace sensible + copy_tree('adapters', join_path(self.prefix.share, 'adapters')) + + # Set up a helper script to call java on the jar file, + # explicitly codes the path for java and the jar file. + script_sh = join_path(os.path.dirname(__file__), "trimmomatic.sh") + script = join_path(prefix.bin, "trimmomatic") + copyfile(script_sh, script) + set_executable(script) + + # Munge the helper script to explicitly point to java and the + # jar file. + java = join_path(self.spec['jdk'].prefix, 'bin', 'java') + kwargs = {'ignore_absent': False, 'backup': False, 'string': False} + filter_file('^java', java, script, **kwargs) + filter_file('trimmomatic.jar', join_path(prefix.bin, jar_file), + script, **kwargs) diff --git a/var/spack/repos/builtin/packages/trimmomatic/trimmomatic.sh b/var/spack/repos/builtin/packages/trimmomatic/trimmomatic.sh new file mode 100644 index 00000000000..55068f6a078 --- /dev/null +++ b/var/spack/repos/builtin/packages/trimmomatic/trimmomatic.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# convenience wrapper for the trimmomatic.jar file +java -jar trimmomatic.jar "$@" From 489dde1135e680a6ae9126a3606ea7bab88f86a4 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 1 Jun 2017 14:42:33 +0200 Subject: [PATCH 1006/2394] travis: fixes failure on six (#4415) --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index ef3ec362c41..eeeaee85df8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -85,6 +85,7 @@ before_install: # Install various dependencies install: - pip install --upgrade pip + - pip install --upgrade six - pip install --upgrade setuptools - pip install --upgrade codecov - pip install --upgrade flake8 From 916243b23a534ce78d9fde6ad0c52b740a9d84e0 Mon Sep 17 00:00:00 2001 From: Tom Merrick Date: Thu, 1 Jun 2017 10:43:51 -0500 Subject: [PATCH 1007/2394] Packages/r factoextra (#4410) * Add mpi support to R * Add multiple precision math routines to R * Updated the URL to match the version * Remove duplicate packages * Add packages for r-ergm and it's dependents * Fixed depends-on types * Correct flake8 errors * Correct Build type * r-factoextra and dependents * Revert "r-factoextra and dependents" This reverts commit afbf477fd66e565fd187262c386bcc08c98a4d7e. * Add only r-factoextra files --- .../builtin/packages/r-dendextend/package.py | 42 ++++++++++++++++ .../builtin/packages/r-diptest/package.py | 35 ++++++++++++++ .../builtin/packages/r-factoextra/package.py | 47 ++++++++++++++++++ .../builtin/packages/r-factominer/package.py | 46 ++++++++++++++++++ .../builtin/packages/r-flashclust/package.py | 37 ++++++++++++++ .../builtin/packages/r-flexmix/package.py | 40 ++++++++++++++++ .../repos/builtin/packages/r-fpc/package.py | 48 +++++++++++++++++++ .../builtin/packages/r-ggpubr/package.py | 41 ++++++++++++++++ .../builtin/packages/r-ggrepel/package.py | 40 ++++++++++++++++ .../repos/builtin/packages/r-ggsci/package.py | 40 ++++++++++++++++ .../repos/builtin/packages/r-leaps/package.py | 35 ++++++++++++++ .../builtin/packages/r-mclust/package.py | 38 +++++++++++++++ .../builtin/packages/r-prabclus/package.py | 40 ++++++++++++++++ .../packages/r-scatterplot3d/package.py | 37 ++++++++++++++ .../builtin/packages/r-trimcluster/package.py | 37 ++++++++++++++ .../builtin/packages/r-viridis/package.py | 40 ++++++++++++++++ .../builtin/packages/r-viridislite/package.py | 37 ++++++++++++++ 17 files changed, 680 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-dendextend/package.py create mode 100644 var/spack/repos/builtin/packages/r-diptest/package.py create mode 100644 var/spack/repos/builtin/packages/r-factoextra/package.py create mode 100644 var/spack/repos/builtin/packages/r-factominer/package.py create mode 100644 var/spack/repos/builtin/packages/r-flashclust/package.py create mode 100644 var/spack/repos/builtin/packages/r-flexmix/package.py create mode 100644 var/spack/repos/builtin/packages/r-fpc/package.py create mode 100644 var/spack/repos/builtin/packages/r-ggpubr/package.py create mode 100644 var/spack/repos/builtin/packages/r-ggrepel/package.py create mode 100644 var/spack/repos/builtin/packages/r-ggsci/package.py create mode 100644 var/spack/repos/builtin/packages/r-leaps/package.py create mode 100644 var/spack/repos/builtin/packages/r-mclust/package.py create mode 100644 var/spack/repos/builtin/packages/r-prabclus/package.py create mode 100644 var/spack/repos/builtin/packages/r-scatterplot3d/package.py create mode 100644 var/spack/repos/builtin/packages/r-trimcluster/package.py create mode 100644 var/spack/repos/builtin/packages/r-viridis/package.py create mode 100644 var/spack/repos/builtin/packages/r-viridislite/package.py diff --git a/var/spack/repos/builtin/packages/r-dendextend/package.py b/var/spack/repos/builtin/packages/r-dendextend/package.py new file mode 100644 index 00000000000..3bde46b6f01 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-dendextend/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RDendextend(RPackage): + """dendextend: Extending 'Dendrogram' Functionality in R""" + + homepage = "https://CRAN.R-project.org/package=dendextend" + url = "https://cran.r-project.org/src/contrib/dendextend_1.5.2.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/dendextend" + + version('1.5.2', '1134869d94005727c63cf3037e2f1bbf') + + depends_on('r@3.0.0:') + depends_on('r-magrittr@1.0.1:', type=('build', 'run')) + depends_on('r-ggplot2', type=('build', 'run')) + depends_on('r-fpc', type=('build', 'run')) + depends_on('r-whisker', type=('build', 'run')) + depends_on('r-viridis', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-diptest/package.py b/var/spack/repos/builtin/packages/r-diptest/package.py new file mode 100644 index 00000000000..f9ce2dd7946 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-diptest/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RDiptest(RPackage): + """diptest: Hartigan's Dip Test Statistic for Unimodality - Corrected""" + + homepage = "https://CRAN.R-project.org/package=diptest" + url = "https://cran.r-project.org/src/contrib/diptest_0.75-7.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/diptest" + + version('0.75-7', '1a4a958fda763f7c99cb485dbe5954ab') diff --git a/var/spack/repos/builtin/packages/r-factoextra/package.py b/var/spack/repos/builtin/packages/r-factoextra/package.py new file mode 100644 index 00000000000..44b39e73268 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-factoextra/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RFactoextra(RPackage): + """factoextra: Extract and Visualize the Results of Multivariate Data + Analyses""" + + homepage = "http://www.sthda.com/english/rpkgs/factoextra" + url = "https://cran.r-project.org/src/contrib/factoextra_1.0.4.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/factoextra" + + version('1.0.4', 'aa4c81ca610f17fdee0c9f3379e35429') + + depends_on('r@3.1.0:') + depends_on('r-ggplot2@2.2.0:', type=('build', 'run')) + depends_on('r-abind', type=('build', 'run')) + # depends_on('r-cluster', type=('build', 'run')) + depends_on('r-dendextend', type=('build', 'run')) + depends_on('r-factominer', type=('build', 'run')) + depends_on('r-ggpubr', type=('build', 'run')) + depends_on('r-reshape2', type=('build', 'run')) + depends_on('r-ggrepel', type=('build', 'run')) + depends_on('r-tidyr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-factominer/package.py b/var/spack/repos/builtin/packages/r-factominer/package.py new file mode 100644 index 00000000000..909e6871bf4 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-factominer/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RFactominer(RPackage): + """FactoMineR: Multivariate Exploratory Data Analysis and Data Mining""" + + homepage = "http://factominer.free.fr" + url = "https://cran.r-project.org/src/contrib/FactoMineR_1.35.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/FactoMineR" + + version('1.35', 'bef076181ce942016114dd7a6f5c2348') + + depends_on('r@3.3.0:') + depends_on('r-car', type=('build', 'run')) + # depends_on('r-cluster', type=('build', 'run')) + depends_on('r-ellipse', type=('build', 'run')) + depends_on('r-flashclust', type=('build', 'run')) + # depends_on('r-lattice', type=('build', 'run')) + depends_on('r-leaps', type=('build', 'run')) + # depends_on('r-mass', type=('build', 'run')) + depends_on('r-scatterplot3d', type=('build', 'run')) + depends_on('r-knitr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-flashclust/package.py b/var/spack/repos/builtin/packages/r-flashclust/package.py new file mode 100644 index 00000000000..e8ea8c76e4e --- /dev/null +++ b/var/spack/repos/builtin/packages/r-flashclust/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RFlashclust(RPackage): + """flashClust: Implementation of optimal hierarchical clustering""" + + homepage = "https://CRAN.R-project.org/package=flashClust" + url = "https://cran.r-project.org/src/contrib/flashClust_1.01-2.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/flashClust" + + version('1.01-2', '23409aeeef98bf35d0b3d5dd755fdeff') + + depends_on('r@2.3.0:') diff --git a/var/spack/repos/builtin/packages/r-flexmix/package.py b/var/spack/repos/builtin/packages/r-flexmix/package.py new file mode 100644 index 00000000000..ebaed1ebd87 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-flexmix/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RFlexmix(RPackage): + """flexmix: Flexible Mixture Modeling""" + + homepage = "https://CRAN.R-project.org/package=flexmix" + url = "https://cran.r-project.org/src/contrib/flexmix_2.3-14.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/flexmix" + + version('2.3-14', '5be4f7764e6a697f4586e60c2bf6e960') + + depends_on('r@2.15.0:') + # depends_on('r-lattice', type=('build', 'run')) + depends_on('r-modeltools@0.2-16:', type=('build', 'run')) + # depends_on('r-nnet', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-fpc/package.py b/var/spack/repos/builtin/packages/r-fpc/package.py new file mode 100644 index 00000000000..8a50a984f4c --- /dev/null +++ b/var/spack/repos/builtin/packages/r-fpc/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RFpc(RPackage): + """fpc: Flexible Procedures for Clustering""" + + homepage = "http://www.homepages.ucl.ac.uk/~ucakche" + url = "https://cran.r-project.org/src/contrib/fpc_2.1-10.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/fpc" + + version('2.1-10', '75e5340e416cd13d7751e06f1c07866b') + + depends_on('r@2.0.0:') + # depends_on('r-mass', type=('build', 'run')) + # depends_on('r-cluster', type=('build', 'run')) + depends_on('r-mclust', type=('build', 'run')) + depends_on('r-flexmix', type=('build', 'run')) + depends_on('r-prabclus', type=('build', 'run')) + # depends_on('r-class', type=('build', 'run')) + depends_on('r-diptest', type=('build', 'run')) + depends_on('r-mvtnorm', type=('build', 'run')) + depends_on('r-robustbase', type=('build', 'run')) + depends_on('r-kernlab', type=('build', 'run')) + depends_on('r-trimcluster', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ggpubr/package.py b/var/spack/repos/builtin/packages/r-ggpubr/package.py new file mode 100644 index 00000000000..52184b73070 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ggpubr/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RGgpubr(RPackage): + """ggpubr: 'ggplot2' Based Publication Ready Plots""" + + homepage = "http://www.sthda.com/english/rpkgs/ggpubr" + url = "https://cran.r-project.org/src/contrib/ggpubr_0.1.2.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/ggpubr" + + version('0.1.2', '42a5749ae44121597ef511a7424429d1') + + depends_on('r@3.1.0:') + depends_on('r-ggplot2', type=('build', 'run')) + depends_on('r-ggrepel', type=('build', 'run')) + depends_on('r-ggsci', type=('build', 'run')) + depends_on('r-plyr', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ggrepel/package.py b/var/spack/repos/builtin/packages/r-ggrepel/package.py new file mode 100644 index 00000000000..c1547655c0c --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ggrepel/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RGgrepel(RPackage): + """ggrepel: Repulsive Text and Label Geoms for 'ggplot2'""" + + homepage = "http://github.com/slowkow/ggrepel" + url = "https://cran.r-project.org/src/contrib/ggrepel_0.6.5.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/ggrepel" + + version('0.6.5', '7e2732cd4840efe2dc9e4bc689cf1ee5') + + depends_on('r@3.0.0:') + depends_on('r-ggplot2@2.0.0:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) + depends_on('r-scales@0.3.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-ggsci/package.py b/var/spack/repos/builtin/packages/r-ggsci/package.py new file mode 100644 index 00000000000..fb811ff2fe5 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ggsci/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RGgsci(RPackage): + """ggsci: Scientific Journal and Sci-Fi Themed Color Palettes for + 'ggplot2'""" + + homepage = "https://github.com/road2stat/ggsci" + url = "https://cran.r-project.org/src/contrib/ggsci_2.4.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/ggsci" + + version('2.4', '8e5dc2fcf84352cacbb91363e26c7175') + + depends_on('r@3.0.2:') + depends_on('r-scales', type=('build', 'run')) + depends_on('r-ggplot2@2.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-leaps/package.py b/var/spack/repos/builtin/packages/r-leaps/package.py new file mode 100644 index 00000000000..077ea282baa --- /dev/null +++ b/var/spack/repos/builtin/packages/r-leaps/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RLeaps(RPackage): + """leaps: Regression Subset Selection""" + + homepage = "https://CRAN.R-project.org/package=leaps" + url = "https://cran.r-project.org/src/contrib/leaps_3.0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/leaps" + + version('3.0', '30823138890680e0493d1491c8f43edc') diff --git a/var/spack/repos/builtin/packages/r-mclust/package.py b/var/spack/repos/builtin/packages/r-mclust/package.py new file mode 100644 index 00000000000..5bf58c02cd6 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-mclust/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RMclust(RPackage): + """mclust: Gaussian Mixture Modelling for Model-Based Clustering, + Classification, and Density Estimation""" + + homepage = "http://www.stat.washington.edu/mclust" + url = "https://cran.r-project.org/src/contrib/mclust_5.3.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/mclust" + + version('5.3', '74aac9fccdfc78373ce733c1a09176ef') + + depends_on('r@3.0.0:') diff --git a/var/spack/repos/builtin/packages/r-prabclus/package.py b/var/spack/repos/builtin/packages/r-prabclus/package.py new file mode 100644 index 00000000000..424d75274d7 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-prabclus/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RPrabclus(RPackage): + """prabclus: Functions for Clustering of Presence-Absence, Abundance and + Multilocus Genetic Data""" + + homepage = "http://www.homepages.ucl.ac.uk/~ucakche" + url = "https://cran.r-project.org/src/contrib/prabclus_2.2-6.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/prabclus" + + version('2.2-6', '7f835dcc113243e1db74aad28ce93d11') + + depends_on('r@2.1.0:') + # depends_on('r-mass', type=('build', 'run')) + depends_on('r-mclust', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py new file mode 100644 index 00000000000..edb92a08208 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RScatterplot3d(RPackage): + """scatterplot3d: 3D Scatter Plot""" + + homepage = "https://CRAN.R-project.org/package=scatterplot3d" + url = "https://cran.r-project.org/src/contrib/scatterplot3d_0.3-40.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/scatterplot3d" + + version('0.3-40', '67b9ab6131d244d7fc1db39dcc911dfe') + + depends_on('r@2.7.0:') diff --git a/var/spack/repos/builtin/packages/r-trimcluster/package.py b/var/spack/repos/builtin/packages/r-trimcluster/package.py new file mode 100644 index 00000000000..770718ae009 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-trimcluster/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RTrimcluster(RPackage): + """trimcluster: Cluster analysis with trimming""" + + homepage = "http://www.homepages.ucl.ac.uk/~ucakche" + url = "https://cran.r-project.org/src/contrib/trimcluster_0.1-2.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/trimcluster" + + version('0.1-2', '7617920e224bd18f5b87db38a3116ec2') + + depends_on('r@1.9.0:') diff --git a/var/spack/repos/builtin/packages/r-viridis/package.py b/var/spack/repos/builtin/packages/r-viridis/package.py new file mode 100644 index 00000000000..55f879e90e7 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-viridis/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RViridis(RPackage): + """viridis: Default Color Maps from 'matplotlib'""" + + homepage = "https://github.com/sjmgarnier/viridis" + url = "https://cran.r-project.org/src/contrib/viridis_0.4.0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/viridis" + + version('0.4.0', 'f874384cbedf459f6c309ddb40b354ea') + + depends_on('r@2.1.0:') + depends_on('r-viridislite@0.2.0:', type=('build', 'run')) + depends_on('r-ggplot2@1.0.1:', type=('build', 'run')) + depends_on('r-gridextra', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-viridislite/package.py b/var/spack/repos/builtin/packages/r-viridislite/package.py new file mode 100644 index 00000000000..fc65b7f3931 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-viridislite/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RViridislite(RPackage): + """viridisLite: Default Color Maps from 'matplotlib' (Lite Version)""" + + homepage = "https://github.com/sjmgarnier/viridisLite" + url = "https://cran.r-project.org/src/contrib/viridisLite_0.2.0.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/viridisLite" + + version('0.2.0', '04a04415cf651a2b5f964b261896c0fb') + + depends_on('r@2.1.0:') From 391afa9271f90424917262c48b91b2d9c2a00e2f Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 1 Jun 2017 10:36:01 -0700 Subject: [PATCH 1008/2394] Add packages for clustalw and clustalo (and argtable) (#4412) * Add packages for clustalw and clustalo (and argtable) Add packages for the classic multiple alignment package, `clustalw` and its younger sibling, `clustalo`. `clustalo` needed the `argtable` package (command line arg parsing). Lightly tested on CentOS 7. * Remove FIXME (sigh...) --- .../builtin/packages/argtable/package.py | 36 +++++++++++++++++++ .../builtin/packages/clustalo/package.py | 36 +++++++++++++++++++ .../builtin/packages/clustalw/package.py | 34 ++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 var/spack/repos/builtin/packages/argtable/package.py create mode 100644 var/spack/repos/builtin/packages/clustalo/package.py create mode 100644 var/spack/repos/builtin/packages/clustalw/package.py diff --git a/var/spack/repos/builtin/packages/argtable/package.py b/var/spack/repos/builtin/packages/argtable/package.py new file mode 100644 index 00000000000..8e1bec15f9a --- /dev/null +++ b/var/spack/repos/builtin/packages/argtable/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Argtable(AutotoolsPackage): + """Argtable is an ANSI C library for parsing GNU style command line + options with a minimum of fuss. + """ + + homepage = "http://argtable.sourceforge.net/" + url = "https://sourceforge.net/projects/argtable/files/argtable/argtable-2.13/argtable2-13.tar.gz/download" + + version('2-13', '156773989d0d6406cea36526d3926668') diff --git a/var/spack/repos/builtin/packages/clustalo/package.py b/var/spack/repos/builtin/packages/clustalo/package.py new file mode 100644 index 00000000000..9e985f0cd7a --- /dev/null +++ b/var/spack/repos/builtin/packages/clustalo/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Clustalo(AutotoolsPackage): + """Clustal Omega: the last alignment program you'll ever need.""" + + homepage = "http://www.clustal.org/omega/" + url = "http://www.clustal.org/omega/clustal-omega-1.2.4.tar.gz" + + version('1.2.4', '6c0459f4c463a30e942ce7e0efc91422') + + depends_on('argtable') diff --git a/var/spack/repos/builtin/packages/clustalw/package.py b/var/spack/repos/builtin/packages/clustalw/package.py new file mode 100644 index 00000000000..97f193c628b --- /dev/null +++ b/var/spack/repos/builtin/packages/clustalw/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Clustalw(AutotoolsPackage): + """Multiple alignment of nucleic acid and protein sequences.""" + + homepage = "http://www.clustal.org/clustal2/" + url = "http://www.clustal.org/download/2.1/clustalw-2.1.tar.gz" + + version('2.1', '144df8440a0ae083d5167616c8ceeb41') From d8b6859e7b53e607eaac3cd825af290944a2a073 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 1 Jun 2017 14:13:33 -0700 Subject: [PATCH 1009/2394] Add a package for Picard (#4398) See the discussion about installing jar files in #4386. Also installs a wrapper script that has explicit references to the prerequisite java exe and to the jar file in it's final resting place. --- .../repos/builtin/packages/picard/package.py | 75 +++++++++++++++++++ .../repos/builtin/packages/picard/picard.sh | 3 + 2 files changed, 78 insertions(+) create mode 100644 var/spack/repos/builtin/packages/picard/package.py create mode 100644 var/spack/repos/builtin/packages/picard/picard.sh diff --git a/var/spack/repos/builtin/packages/picard/package.py b/var/spack/repos/builtin/packages/picard/package.py new file mode 100644 index 00000000000..0a52db42642 --- /dev/null +++ b/var/spack/repos/builtin/packages/picard/package.py @@ -0,0 +1,75 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from shutil import copyfile +import glob +import os.path +import re + + +class Picard(Package): + """Picard is a set of command line tools for manipulating high-throughput + sequencing (HTS) data and formats such as SAM/BAM/CRAM and VCF. + """ + + homepage = "http://broadinstitute.github.io/picard/" + url = "https://github.com/broadinstitute/picard/releases/download/2.9.2/picard.jar" + + # They started distributing a single jar file at v2.6.0, prior to + # that it was a .zip file with multiple .jar and .so files + version('2.9.2', '0449279a6a89830917e8bcef3a976ef7', expand=False, + url="https://github.com/broadinstitute/picard/releases/download/2.9.2/picard.jar") + version('1.140', '308f95516d94c1f3273a4e7e2b315ec2', + url='https://github.com/broadinstitute/picard/releases/download/1.140/picard-tools-1.140.zip') + + depends_on('jdk@8:', type='run') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + # The list of files to install varies with release... + # ... but skip the spack-{build.env}.out files. + files = [x for x in glob.glob("*") if not re.match("^spack-", x)] + for f in files: + install(f, prefix.bin) + + # Set up a helper script to call java on the jar file, + # explicitly codes the path for java and the jar file. + script_sh = join_path(os.path.dirname(__file__), "picard.sh") + script = join_path(prefix.bin, "picard") + copyfile(script_sh, script) + set_executable(script) + + # Munge the helper script to explicitly point to java and the + # jar file. + java = join_path(self.spec['jdk'].prefix, 'bin', 'java') + kwargs = {'ignore_absent': False, 'backup': False, 'string': False} + filter_file('^java', java, script, **kwargs) + filter_file('picard.jar', join_path(prefix.bin, 'picard.jar'), + script, **kwargs) + + def setup_environment(self, spack_env, run_env): + """The Picard docs suggest setting this as a convenience.""" + run_env.prepend_path('PICARD', + join_path(self.prefix, 'bin', 'picard.jar')) diff --git a/var/spack/repos/builtin/packages/picard/picard.sh b/var/spack/repos/builtin/packages/picard/picard.sh new file mode 100644 index 00000000000..6d4864f118d --- /dev/null +++ b/var/spack/repos/builtin/packages/picard/picard.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# convenience wrapper for the picard jar file +java -jar picard.jar "$@" From bf585249430a074dc86db31286d4f44d3516452b Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 2 Jun 2017 15:00:45 +0200 Subject: [PATCH 1010/2394] astyle: add new versions (#4424) --- var/spack/repos/builtin/packages/astyle/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/astyle/package.py b/var/spack/repos/builtin/packages/astyle/package.py index 5598373b44d..7eeb68cdf81 100644 --- a/var/spack/repos/builtin/packages/astyle/package.py +++ b/var/spack/repos/builtin/packages/astyle/package.py @@ -34,8 +34,10 @@ class Astyle(MakefilePackage): homepage = "http://astyle.sourceforge.net/" url = "http://downloads.sourceforge.net/project/astyle/astyle/astyle%202.04/astyle_2.04_linux.tar.gz" + version('3.0.1', 'c301f09679efa2e1eb6e6b5fd33788b4') + version('2.06', 'ff588e7fcede824591cf5b9085df109d') version('2.05.1', '4142d178047d7040da3e0e2f1b030a1a') - version('2.04', '30b1193a758b0909d06e7ee8dd9627f6') + version('2.04', '30b1193a758b0909d06e7ee8dd9627f6') parallel = False From 623e7cb7b6adad548aed8a7ab98f6260dab1415e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 2 Jun 2017 08:04:47 -0500 Subject: [PATCH 1011/2394] Add latest version of gnuplot (#4418) --- var/spack/repos/builtin/packages/gnuplot/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gnuplot/package.py b/var/spack/repos/builtin/packages/gnuplot/package.py index c29b83be51c..c2ac6d1ba82 100644 --- a/var/spack/repos/builtin/packages/gnuplot/package.py +++ b/var/spack/repos/builtin/packages/gnuplot/package.py @@ -39,12 +39,13 @@ class Gnuplot(AutotoolsPackage): """ homepage = "http://www.gnuplot.info" - url = "http://downloads.sourceforge.net/project/gnuplot/gnuplot/5.0.1/gnuplot-5.0.1.tar.gz" + url = "http://downloads.sourceforge.net/project/gnuplot/gnuplot/5.0.6/gnuplot-5.0.6.tar.gz" # There is a conflict in term.h between gnuplot and ncurses, which is a # dependency of readline. Fix it with a small patch patch('term_include.patch') + version('5.0.6', '8ec46520a86a61163a701b00404faf1a') version('5.0.5', 'c5e96fca73afbee4f57cbc1bfce6b3b8') version('5.0.1', '79b4f9e203728f76b60b28bcd402d3c7') From 23474be4b0fe55dc0818c0a334a337e282717b44 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 2 Jun 2017 08:44:01 -0700 Subject: [PATCH 1012/2394] Add variant to build shared Perl lib (#4416) * Add variant to build shared Perl lib Add a variant that enables Perl's "useshrplib" feature, which builds a shared perl library. This addresses problems like so: ``` /usr/bin/ld: /blah/blah/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/perl-5.24.1-y43dp3p5w66v7qh5xkwgufxohyuodyew/lib/5.24.1/x86_64-linux/CORE/libperl.a(op.o): relocation R_X86_64_32S against `PL_opargs' can not be used when making a shared object; recompile with -fPIC /blah/blah/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/perl-5.24.1-y43dp3p5w66v7qh5xkwgufxohyuodyew/lib/5.24.1/x86_64-linux/CORE/libperl.a: could not read symbols: Bad value ``` It should also address the Intel compiler issue discussed in #3081 while respecting Perl's configuration machinery. * Rename shared variant and default to True * Use correct variant to add configure arg * Restore bits that set ccflags for intel compilers After some experimentation we've established that setting the flag to build a shared perl library is tightly tied to the use of -fPIC. This commit restores the code that sets ccflags for intel compilers. * Flake8 cleanup --- var/spack/repos/builtin/packages/perl/package.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index ef1c11289f0..95b2ae8726a 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -69,6 +69,9 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package variant('cpanm', default=True, description='Optionally install cpanm with the core packages.') + variant('shared', default=True, + description='Build a shared libperl.so library') + resource( name="cpanm", url="http://search.cpan.org/CPAN/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7042.tar.gz", @@ -87,14 +90,18 @@ def configure_args(self): '-des', '-Dprefix={0}'.format(prefix), '-Dlocincpth=' + self.spec['gdbm'].prefix.include, - '-Dloclibpth=' + self.spec['gdbm'].prefix.lib + '-Dloclibpth=' + self.spec['gdbm'].prefix.lib, ] # Discussion of -fPIC for Intel at: - # https://github.com/LLNL/spack/pull/3081 + # https://github.com/LLNL/spack/pull/3081 and + # https://github.com/LLNL/spack/pull/4416 if spec.satisfies('%intel'): config_args.append('-Accflags={0}'.format(self.compiler.pic_flag)) + if '+shared' in spec: + config_args.append('-Duseshrplib') + return config_args def configure(self, spec, prefix): From 626aa3a8d02c1acf381bf5e6d3897078027f7bc4 Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Fri, 2 Jun 2017 12:44:33 -0400 Subject: [PATCH 1013/2394] Bugfix/boost pgi (#4426) * Added magma package * Incorporated Serban's change * boost-pgi: Add support for PGI compiler There are two patches required: (1) general fixes required by PGI (2) workaround for a bug in PGI 17.4 Conflicts: var/spack/repos/builtin/packages/boost/package.py --- .../packages/boost/boost_1.63.0_pgi.patch | 290 ++++++++++++++++++ .../boost_1.63.0_pgi_17.4_workaround.patch | 250 +++++++++++++++ .../repos/builtin/packages/boost/package.py | 7 +- 3 files changed, 546 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi.patch create mode 100644 var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch diff --git a/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi.patch b/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi.patch new file mode 100644 index 00000000000..925592e3217 --- /dev/null +++ b/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi.patch @@ -0,0 +1,290 @@ +diff -uNr boost_1_63_0/boost/mpl/assert.hpp boost_1_63_0/boost/mpl/assert.hpp +--- boost_1_63_0/boost/mpl/assert.hpp 2016-12-22 07:33:17.000000000 -0500 ++++ boost_1_63_0/boost/mpl/assert.hpp 2017-05-31 20:09:43.704689605 -0400 +@@ -56,7 +56,7 @@ + // and GCC (which issues "unused variable" warnings when static constants are used + // at a function scope) + #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ +- || (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0) ++ || (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0) || defined(__PGI) + # define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr } + #else + # define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr) +diff -uNr boost_1_63_0/boost/type_traits/is_floating_point.hpp boost_1_63_0/boost/type_traits/is_floating_point.hpp +--- boost_1_63_0/boost/type_traits/is_floating_point.hpp 2016-12-22 07:33:20.000000000 -0500 ++++ boost_1_63_0/boost/type_traits/is_floating_point.hpp 2017-05-31 20:12:50.187001957 -0400 +@@ -20,8 +20,9 @@ + template<> struct is_floating_point : public true_type{}; + template<> struct is_floating_point : public true_type{}; + template<> struct is_floating_point : public true_type{}; +- +-#if defined(BOOST_HAS_FLOAT128) ++ ++// In PGI compiler, __float128 is a typedef, not its own type. ++#if defined(BOOST_HAS_FLOAT128) && !defined(__PGI) + template<> struct is_floating_point<__float128> : public true_type{}; + #endif + +diff -uNr boost_1_63_0/boost/spirit/home/lex/lexer/lexertl/functor.hpp boost_1_63_0/boost/spirit/home/lex/lexer/lexertl/functor.hpp +--- boost_1_63_0/boost/spirit/home/lex/lexer/lexertl/functor.hpp 2016-12-22 07:33:20.000000000 -0500 ++++ boost_1_63_0/boost/spirit/home/lex/lexer/lexertl/functor.hpp 2017-05-31 20:11:12.365788989 -0400 +@@ -98,11 +98,7 @@ + }; + + public: +- functor() +-#if defined(__PGI) +- : eof() +-#endif +- {} ++ functor() {} + + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1310) + // somehow VC7.1 needs this (meaningless) assignment operator +diff -uNr boost_1_63_0/boost/cstdint.hpp boost_1_63_0/boost/cstdint.hpp +--- boost_1_63_0/boost/cstdint.hpp 2016-12-22 07:33:14.000000000 -0500 ++++ boost_1_63_0/boost/cstdint.hpp 2017-05-31 20:04:52.821068853 -0400 +@@ -367,9 +367,6 @@ + #include + #endif + +-// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config. +-#if !defined(__PGIC__) +- + #if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \ + || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \ + || defined(__CYGWIN__) \ +@@ -393,8 +390,6 @@ + + #endif + +-#endif // !defined(__PGIC__) +- + #endif // BOOST_CSTDINT_HPP + + +diff -uNr boost_1_63_0/libs/filesystem/src/operations.cpp boost_1_63_0/libs/filesystem/src/operations.cpp +--- boost_1_63_0/libs/filesystem/src/operations.cpp 2016-12-22 07:33:15.000000000 -0500 ++++ boost_1_63_0/libs/filesystem/src/operations.cpp 2017-05-31 20:06:26.492231150 -0400 +@@ -2051,10 +2051,6 @@ + return ok; + } + +-#if defined(__PGI) && defined(__USE_FILE_OFFSET64) +-#define dirent dirent64 +-#endif +- + error_code dir_itr_first(void *& handle, void *& buffer, + const char* dir, string& target, + fs::file_status &, fs::file_status &) +diff -uNr boost_1_63_0/tools/build/src/engine/boehm_gc/configure boost_1_63_0/tools/build/src/engine/boehm_gc/configure +--- boost_1_63_0/tools/build/src/engine/boehm_gc/configure 2016-12-22 07:33:21.000000000 -0500 ++++ boost_1_63_0/tools/build/src/engine/boehm_gc/configure 2017-05-31 13:02:25.089265415 -0400 +@@ -9286,7 +9286,7 @@ + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; +- pgcc* | pgf77* | pgf90* | pgf95*) ++ pgcc* | pgc++* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' +@@ -9722,7 +9722,7 @@ + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler ++ pgcc* | pgc++*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; +@@ -13421,7 +13421,7 @@ + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; +- pgCC*) ++ pgc++*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +@@ -14098,7 +14098,7 @@ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; +- pgCC*) ++ pgc++*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' +@@ -15812,7 +15812,7 @@ + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; +- pgcc* | pgf77* | pgf90* | pgf95*) ++ pgcc* | pgc++* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' +@@ -16248,7 +16248,7 @@ + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler ++ pgcc* | pgc++*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; +@@ -18386,7 +18386,7 @@ + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; +- pgcc* | pgf77* | pgf90* | pgf95*) ++ pgcc* | pgc++* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' +@@ -18822,7 +18822,7 @@ + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler ++ pgcc* | pgc++*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; +diff -uNr boost_1_63_0/tools/build/src/engine/boehm_gc/libtool.m4 boost_1_63_0/tools/build/src/engine/boehm_gc/libtool.m4 +--- boost_1_63_0/tools/build/src/engine/boehm_gc/libtool.m4 2016-12-22 07:33:21.000000000 -0500 ++++ boost_1_63_0/tools/build/src/engine/boehm_gc/libtool.m4 2017-05-31 13:02:56.629643895 -0400 +@@ -3325,7 +3325,7 @@ + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; +- pgCC*) ++ pgc++*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +@@ -4977,7 +4977,7 @@ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; +- pgCC*) ++ pgc++*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +@@ -5225,7 +5225,7 @@ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; +- pgcc* | pgf77* | pgf90* | pgf95*) ++ pgcc* | pgc++* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +diff -uNr boost_1_63_0/tools/build/src/tools/pgi.jam boost_1_63_0/tools/build/src/tools/pgi.jam +--- boost_1_63_0/tools/build/src/tools/pgi.jam 2016-12-22 07:33:21.000000000 -0500 ++++ boost_1_63_0/tools/build/src/tools/pgi.jam 2017-05-31 20:25:19.726296130 -0400 +@@ -25,7 +25,7 @@ + { + local condition = [ common.check-init-parameters pgi : version $(version) ] ; + +- local l_command = [ common.get-invocation-command pgi : pgCC : $(command) ] ; ++ local l_command = [ common.get-invocation-command pgi : pgc++ : $(command) ] ; + + common.handle-options pgi : $(condition) : $(l_command) : $(options) ; + +@@ -36,17 +36,10 @@ + flags pgi.compile DEFINES $(condition) : + [ feature.get-values : $(options) ] : unchecked ; + +- # IOV_MAX support +- flags pgi.compile DEFINES $(condition) : __need_IOV_MAX : unchecked ; +- + # set link flags + flags pgi.link FINDLIBS-ST : [ + feature.get-values : $(options) ] : unchecked ; + +- # always link lib rt to resolve clock_gettime() +- flags pgi.link FINDLIBS-SA : rt [ +- feature.get-values : $(options) ] : unchecked ; +- + gcc.init-link-flags pgi gnu $(condition) ; + } + +@@ -56,18 +49,19 @@ + generators.register-fortran-compiler pgi.compile.fortran : FORTRAN : OBJ : pgi ; + + # Declare flags and actions for compilation +-flags pgi.compile OPTIONS : -Kieee ; +-flags pgi.compile OPTIONS shared : -fpic -fPIC ; ++flags pgi.compile OPTIONS shared : -fpic ; + flags pgi.compile OPTIONS on : -gopt ; +-flags pgi.compile OPTIONS on : -xprofile=tcov ; +-flags pgi.compile OPTIONS speed : -fast -Mx,8,0x10000000 ; +-flags pgi.compile OPTIONS space : -xO2 -xspace ; +-# flags pgi.compile OPTIONS multi : -mt ; ++flags pgi.compile OPTIONS off : -O0 ; ++flags pgi.compile OPTIONS speed : -fast ; ++flags pgi.compile OPTIONS space : -fast ; + + flags pgi.compile OPTIONS off : -Minform=severe ; + flags pgi.compile OPTIONS on : -Minform=warn ; ++flags pgi.compile OPTIONS on : -Werror ; + + flags pgi.compile.c++ OPTIONS off : -INLINE:none ; ++flags pgi.compile.c++ OPTIONS off : --no_rtti ; ++flags pgi.compile.c++ OPTIONS off : --no_exceptions ; + + flags pgi.compile OPTIONS ; + flags pgi.compile.c++ OPTIONS ; +@@ -95,9 +89,8 @@ + flags pgi.link OPTIONS on : -gopt ; + # Strip the binary when no debugging is needed + flags pgi.link OPTIONS off : -s ; +-flags pgi.link OPTIONS on : -xprofile=tcov ; + flags pgi.link OPTIONS ; +-flags pgi.link OPTIONS shared : -fpic -fPIC ; ++flags pgi.link OPTIONS shared : -fpic ; + flags pgi.link LINKPATH ; + flags pgi.link FINDLIBS-ST ; + flags pgi.link FINDLIBS-SA ; +@@ -107,24 +100,14 @@ + flags pgi.link LINK-RUNTIME shared : dynamic ; + flags pgi.link RPATH ; + +-# On gcc, there are separate options for dll path at runtime and +-# link time. On Solaris, there's only one: -R, so we have to use +-# it, even though it's bad idea. +-flags pgi.link RPATH ; +- + rule link ( targets * : sources * : properties * ) + { + SPACE on $(targets) = " " ; + } + +-# reddish can only link statically and, somehow, the presence of -Bdynamic on the link line +-# marks the executable as a dynamically linked exec even though no dynamic libraries are supplied. +-# Yod on redstorm refuses to load an executable that is dynamically linked. +-# removing the dynamic link options should get us where we need to be on redstorm. +-# "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME) + actions link bind LIBRARIES + { +- "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -Bstatic -l$(FINDLIBS-ST) -Bdynamic -l$(FINDLIBS-SA) -B$(LINK-RUNTIME) ++ "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) + } + + # Slight mods for dlls +@@ -133,11 +116,10 @@ + SPACE on $(targets) = " " ; + } + +-# "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" -h$(<[1]:D=) -G "$(>)" "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME) + + actions link.dll bind LIBRARIES + { +- "$(CONFIG_COMMAND)" $(OPTIONS) -shared -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" -Wl,-h -Wl,$(<[1]:D=) "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME) ++ "$(CONFIG_COMMAND)" $(OPTIONS) -shared -L"$(LINKPATH)" -R"$(RPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) + } + + actions updated together piecemeal pgi.archive diff --git a/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch b/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch new file mode 100644 index 00000000000..3bfb989f807 --- /dev/null +++ b/var/spack/repos/builtin/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch @@ -0,0 +1,250 @@ +diff -uNr boost_1_63_0/boost/archive/archive_exception.hpp boost_1_63_0/boost/archive/archive_exception.hpp +--- boost_1_63_0/boost/archive/archive_exception.hpp 2016-12-22 07:33:19.000000000 -0500 ++++ boost_1_63_0/boost/archive/archive_exception.hpp 2017-06-01 22:07:26.013983567 -0400 +@@ -42,13 +42,6 @@ + class BOOST_SYMBOL_VISIBLE archive_exception : + public virtual std::exception + { +-private: +- char m_buffer[128]; +-protected: +- BOOST_ARCHIVE_DECL unsigned int +- append(unsigned int l, const char * a); +- BOOST_ARCHIVE_DECL +- archive_exception() BOOST_NOEXCEPT; + public: + typedef enum { + no_exception, // initialized without code +@@ -90,6 +83,15 @@ + BOOST_ARCHIVE_DECL archive_exception(archive_exception const &) BOOST_NOEXCEPT ; + virtual BOOST_ARCHIVE_DECL ~archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ; + virtual BOOST_ARCHIVE_DECL const char * what() const BOOST_NOEXCEPT_OR_NOTHROW ; ++protected: ++ BOOST_ARCHIVE_DECL unsigned int ++ append(unsigned int l, const char * a); ++ BOOST_ARCHIVE_DECL ++ archive_exception() BOOST_NOEXCEPT; ++private: ++ char m_buffer[128]; ++ BOOST_ARCHIVE_DECL void ++ pgi_bug_workaround_init(archive_exception *, const char *, const char *); + }; + + }// namespace archive +diff -uNr boost_1_63_0/boost/archive/xml_archive_exception.hpp boost_1_63_0/boost/archive/xml_archive_exception.hpp +--- boost_1_63_0/boost/archive/xml_archive_exception.hpp 2016-12-22 07:33:19.000000000 -0500 ++++ boost_1_63_0/boost/archive/xml_archive_exception.hpp 2017-05-31 21:02:03.373700156 -0400 +@@ -47,6 +47,9 @@ + ); + BOOST_ARCHIVE_DECL xml_archive_exception(xml_archive_exception const &) ; + virtual BOOST_ARCHIVE_DECL ~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ; ++private: ++ BOOST_ARCHIVE_DECL void ++ pgi_bug_workaround_init_xml(xml_archive_exception *, exception_code, const char *, const char *); + }; + + }// namespace archive +diff -uNr boost_1_63_0/libs/serialization/src/archive_exception.cpp boost_1_63_0/libs/serialization/src/archive_exception.cpp +--- boost_1_63_0/libs/serialization/src/archive_exception.cpp 2016-12-22 07:33:19.000000000 -0500 ++++ boost_1_63_0/libs/serialization/src/archive_exception.cpp 2017-06-01 22:06:14.193128909 -0400 +@@ -37,83 +37,90 @@ + } + + BOOST_ARCHIVE_DECL +-archive_exception::archive_exception( +- exception_code c, +- const char * e1, +- const char * e2 +-) BOOST_NOEXCEPT : +- code(c) ++void ++archive_exception::pgi_bug_workaround_init(archive_exception *new_object, const char *e1, const char *e2) + { + unsigned int length = 0; +- switch(code){ ++ switch(new_object->code){ + case no_exception: +- length = append(length, "uninitialized exception"); ++ length = new_object->append(length, "uninitialized exception"); + break; +- case unregistered_class: +- length = append(length, "unregistered class"); ++ case archive_exception::unregistered_class: ++ length = new_object->append(length, "unregistered class"); + if(NULL != e1){ +- length = append(length, " - "); +- length = append(length, e1); ++ length = new_object->append(length, " - "); ++ length = new_object->append(length, e1); + } + break; + case invalid_signature: +- length = append(length, "invalid signature"); ++ length = new_object->append(length, "invalid signature"); + break; + case unsupported_version: +- length = append(length, "unsupported version"); ++ length = new_object->append(length, "unsupported version"); + break; + case pointer_conflict: +- length = append(length, "pointer conflict"); ++ length = new_object->append(length, "pointer conflict"); + break; + case incompatible_native_format: +- length = append(length, "incompatible native format"); ++ length = new_object->append(length, "incompatible native format"); + if(NULL != e1){ +- length = append(length, " - "); +- length = append(length, e1); ++ length = new_object->append(length, " - "); ++ length = new_object->append(length, e1); + } + break; + case array_size_too_short: +- length = append(length, "array size too short"); ++ length = new_object->append(length, "array size too short"); + break; + case input_stream_error: +- length = append(length, "input stream error"); ++ length = new_object->append(length, "input stream error"); + break; + case invalid_class_name: +- length = append(length, "class name too long"); ++ length = new_object->append(length, "class name too long"); + break; + case unregistered_cast: +- length = append(length, "unregistered void cast "); +- length = append(length, (NULL != e1) ? e1 : "?"); +- length = append(length, "<-"); +- length = append(length, (NULL != e2) ? e2 : "?"); ++ length = new_object->append(length, "unregistered void cast "); ++ length = new_object->append(length, (NULL != e1) ? e1 : "?"); ++ length = new_object->append(length, "<-"); ++ length = new_object->append(length, (NULL != e2) ? e2 : "?"); + break; + case unsupported_class_version: +- length = append(length, "class version "); +- length = append(length, (NULL != e1) ? e1 : ""); ++ length = new_object->append(length, "class version "); ++ length = new_object->append(length, (NULL != e1) ? e1 : ""); + break; + case other_exception: + // if get here - it indicates a derived exception + // was sliced by passing by value in catch +- length = append(length, "unknown derived exception"); ++ length = new_object->append(length, "unknown derived exception"); + break; + case multiple_code_instantiation: +- length = append(length, "code instantiated in more than one module"); ++ length = new_object->append(length, "code instantiated in more than one module"); + if(NULL != e1){ +- length = append(length, " - "); +- length = append(length, e1); ++ length = new_object->append(length, " - "); ++ length = new_object->append(length, e1); + } + break; + case output_stream_error: +- length = append(length, "output stream error"); ++ length = new_object->append(length, "output stream error"); + break; + default: + BOOST_ASSERT(false); +- length = append(length, "programming error"); ++ length = new_object->append(length, "programming error"); + break; + } + } + + BOOST_ARCHIVE_DECL ++archive_exception::archive_exception( ++ exception_code c, ++ const char * e1, ++ const char * e2 ++) BOOST_NOEXCEPT : ++ code(c) ++{ ++ pgi_bug_workaround_init(this, e1, e2); ++} ++ ++BOOST_ARCHIVE_DECL + archive_exception::archive_exception(archive_exception const & oth) BOOST_NOEXCEPT : + std::exception(oth), + code(oth.code) +diff -uNr boost_1_63_0/libs/serialization/src/xml_archive_exception.cpp boost_1_63_0/libs/serialization/src/xml_archive_exception.cpp +--- boost_1_63_0/libs/serialization/src/xml_archive_exception.cpp 2016-12-22 07:33:19.000000000 -0500 ++++ boost_1_63_0/libs/serialization/src/xml_archive_exception.cpp 2017-05-31 20:58:15.650876427 -0400 +@@ -26,41 +26,48 @@ + namespace archive { + + BOOST_ARCHIVE_DECL ++void ++xml_archive_exception::pgi_bug_workaround_init_xml(xml_archive_exception *new_object, exception_code c, const char *e1, const char *e2) ++{ ++ switch(c){ ++ case xml_archive_parsing_error: ++ new_object->append(0, "unrecognized XML syntax"); ++ break; ++ case xml_archive_tag_mismatch:{ ++ unsigned int l; ++ l = new_object->append(0, "XML start/end tag mismatch"); ++ if(NULL != e1){ ++ l = new_object->append(l, " - "); ++ new_object->append(l, e1); ++ } ++ break; ++ } ++ case xml_archive_tag_name_error: ++ new_object->append(0, "Invalid XML tag name"); ++ break; ++ default: ++ BOOST_ASSERT(false); ++ new_object->append(0, "programming error"); ++ break; ++ } ++} ++ ++BOOST_ARCHIVE_DECL + xml_archive_exception::xml_archive_exception( + exception_code c, + const char * e1, + const char * e2 + ) : + archive_exception(other_exception, e1, e2) +- { +- switch(c){ +- case xml_archive_parsing_error: +- archive_exception::append(0, "unrecognized XML syntax"); +- break; +- case xml_archive_tag_mismatch:{ +- unsigned int l; +- l = archive_exception::append(0, "XML start/end tag mismatch"); +- if(NULL != e1){ +- l = archive_exception::append(l, " - "); +- archive_exception::append(l, e1); +- } +- break; +- } +- case xml_archive_tag_name_error: +- archive_exception::append(0, "Invalid XML tag name"); +- break; +- default: +- BOOST_ASSERT(false); +- archive_exception::append(0, "programming error"); +- break; +- } +- } ++{ ++ pgi_bug_workaround_init_xml(this, c, e1, e2); ++} + + BOOST_ARCHIVE_DECL + xml_archive_exception::xml_archive_exception(xml_archive_exception const & oth) : + archive_exception(oth) +- { +- } ++{ ++} + + BOOST_ARCHIVE_DECL xml_archive_exception::~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {} + diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 9ac2d7e2ab0..4076b61ed8c 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -150,6 +150,10 @@ class Boost(Package): patch('call_once_variadic.patch', when='@:1.56.0%gcc@5:') + # Patch fix for PGI compiler + patch('boost_1.63.0_pgi.patch', when='@1.63.0%pgi') + patch('boost_1.63.0_pgi_17.4_workaround.patch', when='@1.63.0%pgi@17.4') + def url_for_version(self, version): url = "http://downloads.sourceforge.net/project/boost/boost/{0}/boost_{1}.tar.bz2" return url.format(version.dotted, version.underscored) @@ -162,7 +166,8 @@ def determine_toolset(self, spec): 'icpc': 'intel', 'clang++': 'clang', 'xlc++': 'xlcpp', - 'xlc++_r': 'xlcpp'} + 'xlc++_r': 'xlcpp', + 'pgc++': 'pgi'} if spec.satisfies('@1.47:'): toolsets['icpc'] += '-linux' From 36d153967b57805170f6caf0477e690fc3010936 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 5 Jun 2017 09:41:02 -0700 Subject: [PATCH 1014/2394] Add package for cctools (#4417) * Add package for cctools Add a package for cctools. Requires the recently submitted "useshrplib" support in Perl (or some other mechanism to enable -fPIC for perl). * Delete extraneous import * Perl's shared variant changed, adapt... The name of the variant that perl uses to build a shared lib changed and it now defaults to True. Use the new name and continue to be insistent about using the shared variant. * Flake8 cleanup --- .../repos/builtin/packages/cctools/package.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cctools/package.py diff --git a/var/spack/repos/builtin/packages/cctools/package.py b/var/spack/repos/builtin/packages/cctools/package.py new file mode 100644 index 00000000000..452df0d613d --- /dev/null +++ b/var/spack/repos/builtin/packages/cctools/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cctools(AutotoolsPackage): + """The Cooperative Computing Tools (cctools) enable large scale + distributed computations to harness hundreds to thousands of + machines from clusters, clouds, and grids. + """ + + homepage = "https://github.com/cooperative-computing-lab/cctools" + url = "https://github.com/cooperative-computing-lab/cctools/archive/release/6.1.1.tar.gz" + + version('6.1.1', '9b43cdb3aceebddc1608c77184590619') + + depends_on('openssl') + depends_on('perl+shared', type=('build', 'run')) + depends_on('python@:3', type=('build', 'run')) + depends_on('readline') + depends_on('swig') + # depends_on('xrootd') + depends_on('zlib') + + def configure_args(self): + args = [] + # disable these bits + for p in ['mysql', 'python3', 'xrootd']: + args.append('--with-{0}-path=no'.format(p)) + # point these bits at the Spack installations + for p in ['openssl', 'perl', 'python', 'readline', 'swig', 'zlib']: + args.append('--with-{0}-path={1}'.format(p, self.spec[p].prefix)) + return args From bfb45ba1cec521ea7ba25d6d248de1f913dde0c7 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 5 Jun 2017 11:02:39 -0700 Subject: [PATCH 1015/2394] Tighten up graphviz package (explicitly disable unused languages, etc...) (#4408) * Tighten up graphviz package The fun started when configure discovered a broken/partial installation of `swig` in `/usr/local`, then auto-discovered my system's python and ruby packages. - SpackException doesn't seem to exist. Convert it to a SpackError and call `.format(...)` on the error string to fill in the placeholder. - Pull swig out of the list of languages. It's something that can be asked for explicitly and that is needed if *any* of the langagues are enabled. It's disabled by default. - Explicitly disable the languages that are in "untested_bindings" list lest the configure script pick up things from the system. * Touch up variant description string * Clean up conditional statement * Use InstallError, not SpackError * Drop the swig variant Get rid of the swig variant and drive that bit based on whether any languages are enabled. * Move perl to the untested list That's not strictly accurate. I tested it and it doesn't work. There's a missing depends_on(). When you add that you'll discover that the language binding bit can't find Perl's 'EXTERN.h'. Then you'll discover that graphviz's `configure` script doesn't have a good way to include the paths to Perl's bits (looks like I'll have to gather them for each language and then use them to build `CFLAGS` and `CXXFLAGS` and `LDFLAGS`). While pondering that, you'll discover that EXTERN.h is buried down here: ``` opt/spack/linux-centos7-x86_64/gcc-4.8.5/perl-5.24.1-35ejv4426dmzreum4ekdibu3ddmhquvi/lib/5.24.1/x86_64-linux/CORE/EXTERN.h ``` and decide that you wish you had never thought to actually test `graphviz+perl`. I could find that directory with a snippet like so: ``` perl -MConfig -e 'print "$Config{archlib}\n"' ``` but at this point I'm much, much further down this rabbit hole then I ever wanted to go. * Convince python that tested_bindings is a list When I removed `+perl` and made `tested_bindings` a list of one thing, I ended up with this: ``` ==> Error: cannot concatenate 'str' and 'tuple' objects ``` * Flake8 cleanup * Don't convert a string to a string * rm unused () and clarify variable name Feedback from @adamjstewart - Get rid of some unnecessary parens. - Clearer variable name and use. * Further cleanup of language enabling loop Now we don't need that pesky temporary variable. --- .../builtin/packages/graphviz/package.py | 49 ++++++++++++------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py index 18b69b9f2bf..89e7ffc635c 100644 --- a/var/spack/repos/builtin/packages/graphviz/package.py +++ b/var/spack/repos/builtin/packages/graphviz/package.py @@ -36,9 +36,6 @@ class Graphviz(AutotoolsPackage): # We try to leave language bindings enabled if they don't cause # build issues or add dependencies. - variant('swig', default=False, - description='Enable for optional swig language bindings' - ' (not yet functional)') variant('sharp', default=False, description='Enable for optional sharp language bindings' ' (not yet functional)') @@ -79,7 +76,20 @@ class Graphviz(AutotoolsPackage): parallel = False - depends_on('swig', when='+swig') + # These language bindings have been tested, we know they work. + tested_bindings = ('+java', ) + + # These language bindings have not yet been tested. They + # likely need additional dependencies to get working. + untested_bindings = ( + '+perl', + '+sharp', '+go', '+guile', '+io', + '+lua', '+ocaml', '+php', + '+python', '+r', '+ruby', '+tcl') + + for b in tested_bindings + untested_bindings: + depends_on('swig', when=b) + depends_on('ghostscript') depends_on('freetype') depends_on('expat') @@ -93,19 +103,11 @@ def configure_args(self): spec = self.spec options = [] - # These language bindings have been tested, we know they work. - tested_bindings = ('+java', '+perl') + need_swig = False - # These language bindings have not yet been tested. They - # likely need additional dependencies to get working. - untested_bindings = ( - '+swig', '+sharp', '+go', '+guile', '+io', - '+lua', '+ocaml', '+php', - '+python', '+r', '+ruby', '+tcl') - - for var in untested_bindings: + for var in self.untested_bindings: if var in spec: - raise SpackException( + raise InstallError( "The variant {0} for language bindings has not been " "tested. It might or might not work. To try it " "out, run `spack edit graphviz`, and then move '{0}' " @@ -113,11 +115,20 @@ def configure_args(self): "`tested_bindings` list. Be prepared to add " "required dependencies. " "Please then submit a pull request to " - "http://github.com/llnl/spack") + "http://github.com/llnl/spack".format(var)) + options.append('--disable-%s' % var[1:]) - for var in tested_bindings: - enable = 'enable' if (var in spec) else 'disable' - options.append('--%s-%s' % (enable, var[1:])) + for var in self.tested_bindings: + if var in spec: + need_swig = True + options.append('--enable-{0}'.format(var[1:])) + else: + options.append('--disable-{0}'.format(var[1:])) + + if need_swig: + options.append('--enable-swig=yes') + else: + options.append('--enable-swig=no') # On OSX fix the compiler error: # In file included from tkStubLib.c:15: From 6b9d485e0620cf4dbc97e02cf24f87afab1a8910 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 5 Jun 2017 12:14:49 -0700 Subject: [PATCH 1016/2394] Disable parallel builds for bamutil (#4430) I've had non-repeatable failures in my CI runs on all three clusters at the bamutil's step. In each case there are .o or .so files that are corrupt or truncated. I suspect that the homebrewed bamutil Makefile scheme doesn't actually support parallel builds. --- var/spack/repos/builtin/packages/bamutil/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/bamutil/package.py b/var/spack/repos/builtin/packages/bamutil/package.py index 1c1268f7f1d..89aaa0e9ac3 100644 --- a/var/spack/repos/builtin/packages/bamutil/package.py +++ b/var/spack/repos/builtin/packages/bamutil/package.py @@ -40,6 +40,8 @@ class Bamutil(MakefilePackage): # https://github.com/statgen/libStatGen/issues/9 patch('libstatgen-issue-9.patch', when='@1.0.13:') + parallel = False + @property def install_targets(self): return ['install', 'INSTALLDIR={0}'.format(self.prefix.bin)] From baad627944c9481737befd72bb6d8884ef28a432 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 5 Jun 2017 12:17:12 -0700 Subject: [PATCH 1017/2394] Need to help Makefile.PL find the expat bits (#4422) * Need to help Makefile.PL find the expat bits We need to provide Makefile.PL with a clue about where our expat bits live. We had the dependency, but I suspect that the lib was actually linking against a system version. * Use prefix.lib instead of building path myself Ditto with .include --- .../repos/builtin/packages/perl-xml-parser/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/perl-xml-parser/package.py b/var/spack/repos/builtin/packages/perl-xml-parser/package.py index 5ceb380473b..23e1af9213b 100644 --- a/var/spack/repos/builtin/packages/perl-xml-parser/package.py +++ b/var/spack/repos/builtin/packages/perl-xml-parser/package.py @@ -35,3 +35,13 @@ class PerlXmlParser(PerlPackage): version('2.44', 'af4813fe3952362451201ced6fbce379') depends_on('expat') + + def configure_args(self): + args = [] + + p = self.spec['expat'].prefix.lib + args.append('EXPATLIBPATH={0}'.format(p)) + p = self.spec['expat'].prefix.include + args.append('EXPATINCPATH={0}'.format(p)) + + return args From 08a054afd89366ce3b533d57ba852240a85e1ad6 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 6 Jun 2017 12:59:25 +0200 Subject: [PATCH 1018/2394] Update bazel to 0.4.5 (#4436) --- var/spack/repos/builtin/packages/bazel/package.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index d2e3ee8f8a7..0e0f99966a1 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -32,10 +32,10 @@ class Bazel(Package): """Bazel is Google's own build tool""" homepage = "https://www.bazel.io" - url = "https://github.com/bazelbuild/bazel/archive/0.3.1.tar.gz" + url = "https://github.com/bazelbuild/bazel/releases/download/0.5.0/bazel-0.5.0-dist.zip" - version('0.4.4', '5e7c52b89071efc41277e2f0057d258f', - url="https://github.com/bazelbuild/bazel/releases/download/0.4.4/bazel-0.4.4-dist.zip") + version('0.4.5', '2b737be42678900470ae9e48c975ac5b2296d9ae23c007bf118350dbe7c0552b') + version('0.4.4', '5e7c52b89071efc41277e2f0057d258f') version('0.3.1', '5c959467484a7fc7dd2e5e4a1e8e866b') version('0.3.0', '33a2cb457d28e1bee9282134769b9283') version('0.2.3', '393a491d690e43caaba88005efe6da91') @@ -43,10 +43,18 @@ class Bazel(Package): version('0.2.2', '644bc4ea7f429d835e74f255dc1054e6') depends_on('jdk@8:') + depends_on('zip') + patch('fix_env_handling.patch') patch('link.patch') patch('cc_configure.patch') + def url_for_version(self, version): + if version >= Version('0.4.1'): + return 'https://github.com/bazelbuild/bazel/releases/download/{0}/bazel-{0}-dist.zip'.format(version) + else: + return 'https://github.com/bazelbuild/bazel/archive/{0}.tar.gz'.format(version) + def install(self, spec, prefix): bash = which('bash') bash('-c', './compile.sh') From 54cc8dd7fd956b37e17982173e5624d0c98f8ce3 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Tue, 6 Jun 2017 21:05:10 +1000 Subject: [PATCH 1019/2394] ncl: cairo and math libraries (#4434) * ncl: depends on cairo+X (cairo~X is built by default) * ncl: '-lm' is needed when linking fortran with gcc --- var/spack/repos/builtin/packages/ncl/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index 051eaab4716..01e49f24f72 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -56,7 +56,7 @@ class Ncl(Package): # Non-optional dependencies according to the manual: depends_on('jpeg') depends_on('netcdf') - depends_on('cairo') + depends_on('cairo+X') # Extra dependencies that may be missing from build system: depends_on('bison', type='build') @@ -124,7 +124,7 @@ def prepare_site_config(self): if self.compiler.name == 'gcc': fc_flags.append('-fno-range-check') - c2f_flags.extend(['-lgfortran']) + c2f_flags.extend(['-lgfortran', '-lm']) elif self.compiler.name == 'intel': fc_flags.append('-fp-model precise') cc_flags.append('-fp-model precise') From aa51e766cd710cc5602cb2988fa7d5d5f1fb64a9 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 6 Jun 2017 04:06:36 -0700 Subject: [PATCH 1020/2394] Add add'l output formats for graphviz (#4431) * Add add'l output formats for graphviz Add support for additional output formats to graphviz, including gif, jpg, pdf, and png. Graphviz calls its pango+cairo option *pangocairo* so I followed suit. Libgd was missing jpeg/jpg support. None of the other supported formats are conditionalized and there is no --with/--without support, so I followed suit. * Fix ghostscript plugin When I installed thusly: spack install graphviz+pangocairo+libgd^cairo+X^pango+X the ghostscript plugin tripped over some variable names that had changes in `gs@9.18:`. This fixes them. * Remove wayward import of tty --- .../builtin/packages/graphviz/package.py | 22 +++++++++++++++++++ .../repos/builtin/packages/libgd/package.py | 1 + 2 files changed, 23 insertions(+) diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py index 89e7ffc635c..9a0337e656f 100644 --- a/var/spack/repos/builtin/packages/graphviz/package.py +++ b/var/spack/repos/builtin/packages/graphviz/package.py @@ -74,6 +74,11 @@ class Graphviz(AutotoolsPackage): description='Enable for optional tcl language bindings' ' (not yet functional)') + variant('pangocairo', default=False, + description='Build with pango+cairo support (more output formats)') + variant('libgd', default=False, + description='Build with libgd support (more output formats)') + parallel = False # These language bindings have been tested, we know they work. @@ -90,6 +95,9 @@ class Graphviz(AutotoolsPackage): for b in tested_bindings + untested_bindings: depends_on('swig', when=b) + depends_on('cairo', when='+pangocairo') + depends_on('pango', when='+pangocairo') + depends_on('libgd', when='+libgd') depends_on('ghostscript') depends_on('freetype') depends_on('expat') @@ -99,6 +107,14 @@ class Graphviz(AutotoolsPackage): depends_on('jdk', when='+java') depends_on('python@2:2.8', when='+python') + def patch(self): + # Fix a few variable names, gs after 9.18 renamed them + # See http://lists.linuxfromscratch.org/pipermail/blfs-book/2015-October/056960.html + if self.spec.satisfies('^ghostscript@9.18:'): + kwargs = {'ignore_absent': False, 'backup': True, 'string': True} + filter_file(' e_', ' gs_error_', 'plugin/gs/gvloadimage_gs.c', + **kwargs) + def configure_args(self): spec = self.spec options = [] @@ -130,6 +146,12 @@ def configure_args(self): else: options.append('--enable-swig=no') + for var in ('+pangocairo', '+libgd'): + if var in spec: + options.append('--with-{0}'.format(var[1:])) + else: + options.append('--without-{0}'.format(var[1:])) + # On OSX fix the compiler error: # In file included from tkStubLib.c:15: # /usr/include/tk.h:78:11: fatal error: 'X11/Xlib.h' file not found diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py index c70d8b56fd7..d3cb549f4c6 100644 --- a/var/spack/repos/builtin/packages/libgd/package.py +++ b/var/spack/repos/builtin/packages/libgd/package.py @@ -54,5 +54,6 @@ class Libgd(AutotoolsPackage): depends_on('libiconv') depends_on('libpng') + depends_on('jpeg') depends_on('libtiff') depends_on('fontconfig') From f7b8b75c121ce2601ba2b8db1bb105dd525423c4 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 6 Jun 2017 18:24:33 +0200 Subject: [PATCH 1021/2394] Fix intel-mpi installation (#4438) --- var/spack/repos/builtin/packages/intel/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index 06f7ca88503..6af8baf0eca 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -69,6 +69,7 @@ def license_required(self): # https://software.intel.com/en-us/articles/free-mkl if (self.spec.satisfies("intel-mkl@2017.2:") or self.spec.satisfies("intel-daal@2017.2:") or + self.spec.satisfies("intel-mpi@2017.2:") or self.spec.satisfies("intel-ipp@2017.2:")): return False return True @@ -103,6 +104,7 @@ def install(self, spec, prefix): # https://software.intel.com/en-us/articles/free-mkl if not (spec.satisfies("intel-mkl@2017.2:") or spec.satisfies("intel-daal@2017.2:") or + spec.satisfies("intel-mpi@2017.2:") or spec.satisfies("intel-ipp@2017.2:")): with open(silent_config_filename, 'a') as f: f.write(""" From 06e7708728fd5bb58f9d6b8ea399da0b605224f6 Mon Sep 17 00:00:00 2001 From: Diana Bite Date: Wed, 7 Jun 2017 17:20:17 +0100 Subject: [PATCH 1022/2394] postgresql: Fix build with threadsafe and add variant. (#4403) * postgresql: Fix build with threadsafe and add variant. * postgresql: Convert Package to AutotoolsPackage. Also add explicit enable flag for +threadsafe variant. --- .../builtin/packages/postgresql/package.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/postgresql/package.py b/var/spack/repos/builtin/packages/postgresql/package.py index caf3768362a..f8a28945381 100644 --- a/var/spack/repos/builtin/packages/postgresql/package.py +++ b/var/spack/repos/builtin/packages/postgresql/package.py @@ -25,7 +25,7 @@ from spack import * -class Postgresql(Package): +class Postgresql(AutotoolsPackage): """PostgreSQL is a powerful, open source object-relational database system. It has more than 15 years of active development and a proven architecture that has earned it a strong reputation for reliability, data integrity, and @@ -40,8 +40,13 @@ class Postgresql(Package): depends_on('openssl') depends_on('readline') - def install(self, spec, prefix): - configure("--prefix=%s" % prefix, - "--with-openssl") - make() - make("install") + variant('threadsafe', default=False, description='Build with thread safe.') + + def configure_arg(self): + config_args = ["--with-openssl"] + if '+threadsafe' in self.spec: + config_args.append("--enable-thread-safety") + else: + config_args.append("--disable-thread-safety") + + return config_args From af850149789761c8fff6a0f03a01fcaf9cdcfe4c Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Wed, 7 Jun 2017 11:49:39 -0500 Subject: [PATCH 1023/2394] Added latest version of image-magick 7.0.5-9 (#4447) --- var/spack/repos/builtin/packages/image-magick/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/image-magick/package.py b/var/spack/repos/builtin/packages/image-magick/package.py index 4683e422eaf..8d0804ecc94 100644 --- a/var/spack/repos/builtin/packages/image-magick/package.py +++ b/var/spack/repos/builtin/packages/image-magick/package.py @@ -32,6 +32,7 @@ class ImageMagick(AutotoolsPackage): homepage = "http://www.imagemagick.org" url = "https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz" + version('7.0.5-9', '0bcde35180778a61367599e46ff40cb4') version('7.0.2-7', 'c59cdc8df50e481b2bd1afe09ac24c08') version('7.0.2-6', 'aa5689129c39a5146a3212bf5f26d478') From 8018f6cdf633306244a888266ab7bdaa7229c504 Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Wed, 7 Jun 2017 11:50:56 -0500 Subject: [PATCH 1024/2394] Fixed duplicated spec: nag@6.1 line in getting started guide (#4445) --- lib/spack/docs/getting_started.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 75c2f662b5b..9b31ea44915 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -641,6 +641,7 @@ Or it can be set permanently in your ``compilers.yaml``: fflags: -mismatch spec: nag@6.1 + --------------- System Packages --------------- From 29090a527af34bcc9c5d5414ce8e61ac42d40bb0 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 7 Jun 2017 09:51:46 -0700 Subject: [PATCH 1025/2394] Bug/cctools syscall (#4440) * Handle missing defn of __NR_memfd_create Generally SYS_foo is defined to __NR_foo (in sys/syscall.h) which is then defined to a syscall number (in asm/unistd_64.h). Certain CentOS systems have SYS_memfd_create defined to __NR_memfd_create but are missing the second definition. This is a belt and suspenders solution to the problem. See [this post][syscall] for a nice general description of how these parts fit together. [syscall]: https://www.uninformativ.de/blog/postings/2017-02-11/0/POSTING-en.html * Avoid flake8 warning --- var/spack/repos/builtin/packages/cctools/package.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/var/spack/repos/builtin/packages/cctools/package.py b/var/spack/repos/builtin/packages/cctools/package.py index 452df0d613d..165d684a9ff 100644 --- a/var/spack/repos/builtin/packages/cctools/package.py +++ b/var/spack/repos/builtin/packages/cctools/package.py @@ -44,6 +44,18 @@ class Cctools(AutotoolsPackage): # depends_on('xrootd') depends_on('zlib') + # Generally SYS_foo is defined to __NR_foo (sys/syscall.h) which + # is then defined to a syscall number (asm/unistd_64.h). Certain + # CentOS systems have SYS_memfd_create defined to + # __NR_memfd_create but are missing the second definition. + # This is a belt and suspenders solution to the problem. + def patch(self): + before = '#if defined(__linux__) && defined(SYS_memfd_create)' + after = '#if defined(__linux__) && defined(SYS_memfd_create) && defined(__NR_memfd_create)' # noqa: E501 + f = 'dttools/src/memfdexe.c' + kwargs = {'ignore_absent': False, 'backup': True, 'string': True} + filter_file(before, after, f, **kwargs) + def configure_args(self): args = [] # disable these bits From 0bbafb1673460e404c6ea43afbcbc82ee42ebd82 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Jun 2017 11:52:07 -0500 Subject: [PATCH 1026/2394] Fix tab completion of Spack subcommands (#4442) --- share/spack/spack-completion.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index b8d104aca8a..818f4d8acfa 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -843,7 +843,7 @@ function _spack_view_symlink { # Helper functions for subcommands function _subcommands { - spack help | grep "^ [a-z]" | awk '{print $1}' + spack help --all | grep "^ [a-z]" | awk '{print $1}' | grep -v spack } function _all_packages { From 1b9af88572c902df6de43105d751eb5785449d9f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Jun 2017 11:52:28 -0500 Subject: [PATCH 1027/2394] Supress output from gpg --version during tests (#4441) --- lib/spack/spack/test/cmd/gpg.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/test/cmd/gpg.py b/lib/spack/spack/test/cmd/gpg.py index cc6d57d91e3..e4dbb681a6c 100644 --- a/lib/spack/spack/test/cmd/gpg.py +++ b/lib/spack/spack/test/cmd/gpg.py @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import argparse -import os.path +import os import pytest import spack @@ -42,7 +42,7 @@ def testing_gpg_directory(tmpdir): def has_gnupg2(): try: - gpg_util.Gpg.gpg()('--version') + gpg_util.Gpg.gpg()('--version', output=os.devnull) return True except Exception: return False From 69bd119d64a70e04b207769fea5517f68626683d Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 7 Jun 2017 21:42:15 +0200 Subject: [PATCH 1028/2394] folly: added new package. Also modified double-conversion to use 'pic'. (#4449) --- .../packages/double-conversion/package.py | 3 + .../repos/builtin/packages/folly/package.py | 60 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 var/spack/repos/builtin/packages/folly/package.py diff --git a/var/spack/repos/builtin/packages/double-conversion/package.py b/var/spack/repos/builtin/packages/double-conversion/package.py index 1400996853a..52fa5fc9a1f 100644 --- a/var/spack/repos/builtin/packages/double-conversion/package.py +++ b/var/spack/repos/builtin/packages/double-conversion/package.py @@ -45,3 +45,6 @@ class DoubleConversion(CMakePackage): version('1.1.5', 'ddf782373e2630c07b2691c31cee0b24') version('1.1.4', '5df72704406d93cd54c73d73f02e2744') version('1.1.3', 'b312152c8c66c80449d5e0325b94502e') + + def cmake_args(self): + return ['-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true'] diff --git a/var/spack/repos/builtin/packages/folly/package.py b/var/spack/repos/builtin/packages/folly/package.py new file mode 100644 index 00000000000..bf9eb1cbd05 --- /dev/null +++ b/var/spack/repos/builtin/packages/folly/package.py @@ -0,0 +1,60 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Folly(AutotoolsPackage): + """Folly (acronymed loosely after Facebook Open Source Library) is a + library of C++11 components designed with practicality and efficiency + in mind. + + Folly contains a variety of core library components used extensively at + Facebook. In particular, it's often a dependency of Facebook's other open + source C++ efforts and place where those projects can share code. + """ + + homepage = "https://github.com/facebook/folly" + url = "https://github.com/facebook/folly/archive/v2017.06.05.00.tar.gz" + + version('2017.06.05.00', 'a25e8d646702c3e0c1400f591e485a33') + + depends_on('m4', type='build') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('pkg-config', type='build') + + # TODO: folly requires gcc 4.9+ and a version of boost compiled with + # TODO: C++14 support (but there's no neat way to check that these + # TODO: constraints are met right now) + depends_on('boost') + + depends_on('gflags') + depends_on('glog') + depends_on('double-conversion') + depends_on('libevent') + + configure_directory = 'folly' From 4e928119394d5a4efb07c2f22df967f84dd052c4 Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Wed, 7 Jun 2017 13:42:49 -0600 Subject: [PATCH 1029/2394] Open MPI: add 2.0.3 (#4450) Add Open MPI bug fix release 2.0.3 Signed-off-by: Howard Pritchard --- var/spack/repos/builtin/packages/openmpi/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 2ab75859180..6d5e5e6d2b4 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -72,6 +72,7 @@ class Openmpi(AutotoolsPackage): version('2.1.0', '4838a5973115c44e14442c01d3f21d52') # libmpi.so.20.10.0 # Still supported + version('2.0.3', '6c09e56ac2230c4f9abd8ba029f03edd') # libmpi.so.20.0.3 version('2.0.2', 'ecd99aa436a1ca69ce936a96d6a3fa48') # libmpi.so.20.0.2 version('2.0.1', '6f78155bd7203039d2448390f3b51c96') # libmpi.so.20.0.1 version('2.0.0', 'cdacc800cb4ce690c1f1273cb6366674') # libmpi.so.20.0.0 From 816f4f8b04eb71994a3bd2934e924f65b4c0c464 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Thu, 8 Jun 2017 08:23:30 -0700 Subject: [PATCH 1030/2394] fix mfem build for ppc with gcc (#4452) --- .../repos/builtin/packages/mfem/mfem_ppc_build.patch | 10 ++++++++++ var/spack/repos/builtin/packages/mfem/package.py | 2 ++ 2 files changed, 12 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mfem/mfem_ppc_build.patch diff --git a/var/spack/repos/builtin/packages/mfem/mfem_ppc_build.patch b/var/spack/repos/builtin/packages/mfem/mfem_ppc_build.patch new file mode 100644 index 00000000000..b4036831056 --- /dev/null +++ b/var/spack/repos/builtin/packages/mfem/mfem_ppc_build.patch @@ -0,0 +1,10 @@ +--- mfem/miniapps/performance/makefile 2017-06-07 13:51:29.366596901 -0700 ++++ mfem/miniapps/performance/makefile.new 2017-06-07 13:51:57.087104178 -0700 +@@ -26,7 +26,6 @@ + # Compiler specific optimizations. + # For best performance, GCC 5 (or newer) is recommended. + ifneq (,$(findstring $(MFEM_CXX),g++ mpicxx)) +- MFEM_CXXFLAGS += -march=native + # MFEM_CXXFLAGS += -std=c++03 + MFEM_CXXFLAGS += -std=c++11 + MFEM_CXXFLAGS += -pedantic -Wall diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index a2d6bdc7ffe..8f6f3a78555 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -96,6 +96,8 @@ class Mfem(Package): depends_on('zlib', when='@3.2: +netcdf') depends_on('hdf5', when='@3.2: +netcdf') + patch('mfem_ppc_build.patch', when='@3.2:3.3 arch=ppc64le') + def check_variants(self, spec): if '+mpi' in spec and ('+hypre' not in spec or '+metis' not in spec): raise InstallError('mfem+mpi must be built with +hypre ' + From 3508909f069413f0400f92e76078ab5aa671e0c4 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 8 Jun 2017 16:54:26 -0600 Subject: [PATCH 1031/2394] Adding Nalu package. (#4428) * Adding Nalu package. * Fixing flake8 stuff. * Fixing flake8 stuff. * Reorganizing trilinos package file a little to make it less verbose. * Reorganizing trilinos package file for more general use as well as use as a dependency of the Nalu package. Setting fpic as default for yaml-cpp and superlu. * Explicitly stating fpic variants in dependent packages. * Updating nalu and trilinos package files with suggested changes. * Fixing formatting issues. Making suggested changes. * Fixing formatting. * Reducing amount of explicit variants in Nalu. Adding suggested changes to Trilinos package file. * Making suggested changes to Nalu package. * Turning off superlu-dist variant. * Cleaning up yaml-cpp file. * Fixing pnetcdf requirements in trilinos. --- .../repos/builtin/packages/nalu/package.py | 64 ++++ .../repos/builtin/packages/superlu/package.py | 6 +- .../builtin/packages/trilinos/package.py | 340 +++++++++++++----- .../builtin/packages/yaml-cpp/package.py | 16 +- 4 files changed, 316 insertions(+), 110 deletions(-) create mode 100644 var/spack/repos/builtin/packages/nalu/package.py diff --git a/var/spack/repos/builtin/packages/nalu/package.py b/var/spack/repos/builtin/packages/nalu/package.py new file mode 100644 index 00000000000..f485b5cb17e --- /dev/null +++ b/var/spack/repos/builtin/packages/nalu/package.py @@ -0,0 +1,64 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Nalu(CMakePackage): + """Nalu: a generalized unstructured massively parallel low Mach flow code + designed to support a variety of energy applications of interest (most + notably Wind ECP) built on the Sierra Toolkit and Trilinos solver + Tpetra/Epetra stack + """ + + homepage = "https://github.com/NaluCFD/Nalu" + url = "https://github.com/NaluCFD/Nalu.git" + + version('master', + git='https://github.com/NaluCFD/Nalu.git', branch='master') + + variant('debug', default=False, + description='Builds a debug version') + + # Currently Nalu only builds static libraries; To be fixed soon + depends_on('yaml-cpp+fpic~shared') + depends_on('trilinos~shared+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf@master') + + def build_type(self): + if '+debug' in self.spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + spec = self.spec + options = [] + + options.extend([ + '-DTrilinos_DIR:PATH=%s' % spec['trilinos'].prefix, + '-DYAML_DIR:PATH=%s' % spec['yaml-cpp'].prefix, + '-DENABLE_INSTALL:BOOL=ON' + ]) + + return options diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py index 13c11b66b99..8e7303d6c87 100644 --- a/var/spack/repos/builtin/packages/superlu/package.py +++ b/var/spack/repos/builtin/packages/superlu/package.py @@ -38,8 +38,8 @@ class Superlu(Package): version('5.2.1', '3a1a9bff20cb06b7d97c46d337504447') version('4.3', 'b72c6309f25e9660133007b82621ba7c') - variant('fpic', default=False, - description='Build with position independent code') + variant('fpic', default=True, + description='Build with position independent code') depends_on('cmake', when='@5.2.1:', type='build') depends_on('blas') @@ -117,4 +117,4 @@ def install(self, spec, prefix): headers = glob.glob(join_path('SRC', '*.h')) mkdir(prefix.include) for h in headers: - install(h, prefix.include) + install(h, prefix.include) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 66dc4f0e642..40929499de2 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -46,6 +46,8 @@ class Trilinos(CMakePackage): homepage = "https://trilinos.org/" url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-12-10-1.tar.gz" + # ###################### Versions ########################## + version('xsdk-0.2.0', git='https://github.com/trilinos/Trilinos.git', tag='xsdk-0.2.0') version('develop', @@ -65,7 +67,11 @@ class Trilinos(CMakePackage): version('11.14.2', 'e7c3cdbbfe3279a8a68838b873ad6d51') version('11.14.1', 'b7760b142eef66c79ed13de7c9560f81') - variant('xsdkflags', default=False, + # ###################### Variants ########################## + + variant('alloptpkgs', default=False, + description='Compile with all optional packages') + variant('xsdkflags', default=False, description='Compile using the default xSDK configuration') variant('metis', default=True, description='Compile with METIS and ParMETIS') @@ -73,25 +79,72 @@ class Trilinos(CMakePackage): description='Compile with support for MUMPS solvers') variant('superlu-dist', default=True, description='Compile with SuperluDist solvers') - variant('superlu', default=False, + variant('superlu', default=False, description='Compile with SuperLU solvers') variant('hypre', default=True, description='Compile with Hypre preconditioner') - variant('hdf5', default=True, description='Compile with HDF5') + variant('hdf5', default=True, + description='Compile with HDF5') variant('suite-sparse', default=True, description='Compile with SuiteSparse solvers') # not everyone has py-numpy activated, keep it disabled by default to avoid # configure errors - variant('python', default=False, description='Build python wrappers') + variant('python', default=False, + description='Build python wrappers') variant('shared', default=True, description='Enables the build of shared libraries') variant('debug', default=False, description='Builds a debug version of the libraries') - variant('boost', default=True, description='Compile with Boost') - variant('tpetra', default=True, description='Compile with Tpetra') - variant('exodus', default=False, description='Compile with Exodus from SEACAS') - - variant('dtk', default=False, description='Enable DataTransferKit') + variant('boost', default=True, + description='Compile with Boost') + variant('tpetra', default=True, + description='Compile with Tpetra') + variant('epetra', default=True, + description='Compile with Epetra') + variant('epetraext', default=True, + description='Compile with EpetraExt') + variant('exodus', default=True, + description='Compile with Exodus from SEACAS') + variant('pnetcdf', default=False, + description='Compile with parallel-netcdf') + variant('zlib', default=False, + description='Compile with zlib') + variant('stk', default=False, + description='Compile with STK') + variant('belos', default=True, + description='Compile with Belos') + variant('zoltan', default=True, + description='Compile with Zoltan') + variant('zoltan2', default=True, + description='Compile with Zoltan2') + variant('amesos', default=True, + description='Compile with Amesos') + variant('amesos2', default=True, + description='Compile with Amesos2') + variant('ifpack', default=True, + description='Compile with Ifpack') + variant('ifpack2', default=True, + description='Compile with Ifpack2') + variant('muelu', default=True, + description='Compile with Muelu') + variant('fortran', default=True, + description='Compile with Fortran support') + variant('ml', default=True, + description='Compile with ML') + variant('gtest', default=True, + description='Compile with Gtest') + variant('aztec', default=True, + description='Compile with Aztec') + variant('sacado', default=True, + description='Compile with Sacado') + variant('x11', default=False, + description='Compile with X11') + variant('instantiate', default=True, + description='Compile with explicit instantiation') + variant('instantiate_cmplx', default=False, + description='Compile with explicit instantiation for complex') + variant('dtk', default=False, + description='Enable DataTransferKit') resource(name='dtk', git='https://github.com/ornl-cees/DataTransferKit', tag='master', @@ -99,6 +152,8 @@ class Trilinos(CMakePackage): when='+dtk') conflicts('+dtk', when='~tpetra') + # ###################### Dependencies ########################## + # Everything should be compiled with -fpic depends_on('blas') depends_on('lapack') @@ -108,10 +163,13 @@ class Trilinos(CMakePackage): depends_on('glm') depends_on('metis@5:', when='+metis') depends_on('suite-sparse', when='+suite-sparse') + depends_on('zlib', when="+zlib") # MPI related dependencies depends_on('mpi') depends_on('netcdf+mpi') + depends_on('parallel-netcdf', when="+pnetcdf@master") + depends_on('parallel-netcdf', when="+pnetcdf@12.10.2:") depends_on('parmetis', when='+metis') # Trilinos' Tribits config system is limited which makes it very tricky to # link Amesos with static MUMPS, see @@ -163,53 +221,137 @@ def cmake_args(self): cxx_flags = [] options = [] + # #################### Base Settings ####################### + mpi_bin = spec['mpi'].prefix.bin - # Note: -DXYZ_LIBRARY_NAMES= needs semicolon separated list of names - blas = spec['blas'].libs - lapack = spec['lapack'].libs options.extend([ - '-DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON', - '-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON', '-DTrilinos_VERBOSE_CONFIGURE:BOOL=OFF', '-DTrilinos_ENABLE_TESTS:BOOL=OFF', '-DTrilinos_ENABLE_EXAMPLES:BOOL=OFF', + '-DTrilinos_ENABLE_CXX11:BOOL=ON', '-DCMAKE_BUILD_TYPE:STRING=%s' % ( 'DEBUG' if '+debug' in spec else 'RELEASE'), '-DBUILD_SHARED_LIBS:BOOL=%s' % ( 'ON' if '+shared' in spec else 'OFF'), - '-DTPL_FIND_SHARED_LIBS:BOOL=%s' % ( - 'ON' if '+shared' in spec else 'OFF'), - '-DTrilinos_LINK_SEARCH_START_STATIC:BOOL=%s' % ( - 'OFF' if '+shared' in spec else 'ON'), + + # The following can cause problems on systems that don't have + # static libraries available for things like dl and pthreads + # for example when trying to build static libs + # '-DTPL_FIND_SHARED_LIBS:BOOL=%s' % ( + # 'ON' if '+shared' in spec else 'OFF'), + # '-DTrilinos_LINK_SEARCH_START_STATIC:BOOL=%s' % ( + # 'OFF' if '+shared' in spec else 'ON'), + + # Force Trilinos to use the MPI wrappers instead of raw compilers + # this is needed on Apple systems that require full resolution of + # all symbols when linking shared libraries '-DTPL_ENABLE_MPI:BOOL=ON', - '-DMPI_BASE_DIR:PATH=%s' % spec['mpi'].prefix, + '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, + '-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx, + '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc, + '-DMPI_BASE_DIR:PATH=%s' % spec['mpi'].prefix + ]) + + # ################## Trilinos Packages ##################### + + options.extend([ + '-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=%s' % ( + 'ON' if '+alloptpkgs' in spec else 'OFF'), + '-DTrilinos_ENABLE_Tpetra:BOOL=%s' % ( + 'ON' if '+tpetra' in spec else 'OFF'), + '-DTrilinos_ENABLE_Epetra:BOOL=%s' % ( + 'ON' if '+epetra' in spec else 'OFF'), + '-DTrilinos_ENABLE_EpetraExt:BOOL=%s' % ( + 'ON' if '+epetraext' in spec else 'OFF'), + '-DTrilinos_ENABLE_ML:BOOL=%s' % ( + 'ON' if '+ml' in spec else 'OFF'), + '-DTrilinos_ENABLE_AztecOO:BOOL=%s' % ( + 'ON' if '+aztec' in spec else 'OFF'), + '-DTrilinos_ENABLE_Sacado:BOOL=%s' % ( + 'ON' if '+sacado' in spec else 'OFF'), + '-DTrilinos_ENABLE_Belos:BOOL=%s' % ( + 'ON' if '+belos' in spec else 'OFF'), + '-DTrilinos_ENABLE_Zoltan:BOOL=%s' % ( + 'ON' if '+zoltan' in spec else 'OFF'), + '-DTrilinos_ENABLE_Zoltan2:BOOL=%s' % ( + 'ON' if '+zoltan2' in spec else 'OFF'), + '-DTrilinos_ENABLE_Amesos:BOOL=%s' % ( + 'ON' if '+amesos' in spec else 'OFF'), + '-DTrilinos_ENABLE_Amesos2:BOOL=%s' % ( + 'ON' if '+amesos2' in spec else 'OFF'), + '-DTrilinos_ENABLE_MueLu:BOOL=%s' % ( + 'ON' if '+muelu' in spec else 'OFF'), + '-DTrilinos_ENABLE_Ifpack:BOOL=%s' % ( + 'ON' if '+ifpack' in spec else 'OFF'), + '-DTrilinos_ENABLE_Ifpack2:BOOL=%s' % ( + 'ON' if '+ifpack2' in spec else 'OFF'), + '-DTrilinos_ENABLE_Gtest:BOOL=%s' % ( + 'ON' if '+gtest' in spec else 'OFF'), + ]) + + if '+xsdkflags' in spec: + options.extend(['-DUSE_XSDK_DEFAULTS=YES']) + + if '+stk' in spec: + # Currently these are fairly specific to the Nalu package + # They can likely change when necessary in the future + options.extend([ + '-DTrilinos_ENABLE_STKMesh:BOOL=ON', + '-DTrilinos_ENABLE_STKSimd:BOOL=ON', + '-DTrilinos_ENABLE_STKIO:BOOL=ON', + '-DTrilinos_ENABLE_STKTransfer:BOOL=ON', + '-DTrilinos_ENABLE_STKSearch:BOOL=ON', + '-DTrilinos_ENABLE_STKUtil:BOOL=ON', + '-DTrilinos_ENABLE_STKTopology:BOOL=ON', + '-DTrilinos_ENABLE_STKUnit_tests:BOOL=ON', + '-DTrilinos_ENABLE_STKUnit_test_utils:BOOL=ON', + '-DTrilinos_ENABLE_STKClassic:BOOL=OFF' + ]) + + if '+dtk' in spec: + options.extend([ + '-DTrilinos_EXTRA_REPOSITORIES:STRING=DataTransferKit', + '-DTpetra_INST_INT_UNSIGNED_LONG:BOOL=ON', + '-DTrilinos_ENABLE_DataTransferKit:BOOL=ON' + ]) + + if '+exodus' in spec: + # Currently these are fairly specific to the Nalu package + # They can likely change when necessary in the future + options.extend([ + '-DTrilinos_ENABLE_SEACAS:BOOL=ON', + '-DTrilinos_ENABLE_SEACASExodus:BOOL=ON', + '-DTrilinos_ENABLE_SEACASEpu:BOOL=ON', + '-DTrilinos_ENABLE_SEACASExodiff:BOOL=ON', + '-DTrilinos_ENABLE_SEACASNemspread:BOOL=ON', + '-DTrilinos_ENABLE_SEACASNemslice:BOOL=ON' + ]) + else: + options.extend([ + '-DTrilinos_ENABLE_SEACAS:BOOL=OFF', + '-DTrilinos_ENABLE_SEACASExodus:BOOL=OFF' + ]) + + # ######################### TPLs ############################# + + blas = spec['blas'].libs + lapack = spec['lapack'].libs + # Note: -DXYZ_LIBRARY_NAMES= needs semicolon separated list of names + options.extend([ '-DTPL_ENABLE_BLAS=ON', '-DBLAS_LIBRARY_NAMES=%s' % ';'.join(blas.names), '-DBLAS_LIBRARY_DIRS=%s' % ';'.join(blas.directories), '-DTPL_ENABLE_LAPACK=ON', '-DLAPACK_LIBRARY_NAMES=%s' % ';'.join(lapack.names), '-DLAPACK_LIBRARY_DIRS=%s' % ';'.join(lapack.directories), - '-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON', - '-DTrilinos_ENABLE_CXX11:BOOL=ON', '-DTPL_ENABLE_Netcdf:BOOL=ON', - '-DTrilinos_ENABLE_Tpetra:BOOL=%s' % ( - 'ON' if '+tpetra' in spec else 'OFF') + '-DNetCDF_ROOT:PATH=%s' % spec['netcdf'].prefix, + '-DTPL_ENABLE_X11:BOOL=%s' % ( + 'ON' if '+x11' in spec else 'OFF'), + '-DTrilinos_ENABLE_PyTrilinos:BOOL=%s' % ( + 'ON' if '+python' in spec else 'OFF'), ]) - if '.'.join(platform.mac_ver()[0].split('.')[:2]) == '10.12': - # use @rpath on Sierra due to limit of dynamic loader - options.append('-DCMAKE_MACOSX_RPATH=ON') - else: - options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix) - - # Force Trilinos to use the MPI wrappers instead of raw compilers - # this is needed on Apple systems that require full resolution of - # all symbols when linking shared libraries - options.extend([ - '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, - '-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx, - '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc - ]) if '+hypre' in spec: options.extend([ '-DTPL_ENABLE_HYPRE:BOOL=ON', @@ -217,25 +359,6 @@ def cmake_args(self): '-DHYPRE_LIBRARY_DIRS:PATH=%s' % spec['hypre'].prefix.lib ]) - if spec.satisfies('%intel') and spec.satisfies('@12.6.2'): - # Panzer uses some std:chrono that is not recognized by Intel - # Don't know which (maybe all) Trilinos versions this applies to - # Don't know which (maybe all) Intel versions this applies to - options.extend([ - '-DTrilinos_ENABLE_Panzer:BOOL=OFF' - ]) - - if '+xsdkflags' in spec: - options.extend(['-DUSE_XSDK_DEFAULTS=YES']) - if '+hdf5' in spec: - options.extend([ - '-DTPL_ENABLE_HDF5:BOOL=ON', - '-DHDF5_INCLUDE_DIRS:PATH=%s' % spec['hdf5'].prefix.include, - '-DHDF5_LIBRARY_DIRS:PATH=%s' % spec['hdf5'].prefix.lib - ]) - else: - options.extend(['-DTPL_ENABLE_HDF5:BOOL=OFF']) - if '+boost' in spec: options.extend([ '-DTPL_ENABLE_Boost:BOOL=ON', @@ -254,18 +377,6 @@ def cmake_args(self): else: options.extend(['-DTPL_ENABLE_HDF5:BOOL=OFF']) - # Fortran lib - if spec.satisfies('%gcc') or spec.satisfies('%clang'): - libgfortran = os.path.dirname(os.popen( - '%s --print-file-name libgfortran.a' % - join_path(mpi_bin, 'mpif90')).read()) - options.extend([ - '-DTrilinos_EXTRA_LINK_FLAGS:STRING=-L%s/ -lgfortran' % ( - libgfortran), - '-DTrilinos_ENABLE_Fortran=ON' - ]) - - # suite-sparse related if '+suite-sparse' in spec: options.extend([ # FIXME: Trilinos seems to be looking for static libs only, @@ -290,7 +401,6 @@ def cmake_args(self): '-DTPL_ENABLE_UMFPACK:BOOL=OFF', ]) - # metis / parmetis if '+metis' in spec: options.extend([ '-DTPL_ENABLE_METIS:BOOL=ON', @@ -310,7 +420,6 @@ def cmake_args(self): '-DTPL_ENABLE_ParMETIS:BOOL=OFF', ]) - # mumps / scalapack if '+mumps' in spec: scalapack = spec['scalapack'].libs options.extend([ @@ -333,7 +442,6 @@ def cmake_args(self): '-DTPL_ENABLE_SCALAPACK:BOOL=OFF', ]) - # superlu-dist: if '+superlu-dist' in spec: # Amesos, conflicting types of double and complex SLU_D # see @@ -360,7 +468,6 @@ def cmake_args(self): '-DTPL_ENABLE_SuperLUDist:BOOL=OFF', ]) - # superlu: if '+superlu' in spec: options.extend([ '-DTPL_ENABLE_SuperLU:BOOL=ON', @@ -374,44 +481,56 @@ def cmake_args(self): '-DTPL_ENABLE_SuperLU:BOOL=OFF', ]) - # python - if '+python' in spec: + if '+pnetcdf' in spec: options.extend([ - '-DTrilinos_ENABLE_PyTrilinos:BOOL=ON' + '-DTPL_ENABLE_Pnetcdf:BOOL=ON', + '-DTPL_Netcdf_Enables_Netcdf4:BOOL=ON', + '-DTPL_Netcdf_PARALLEL:BOOL=ON', + '-DPNetCDF_ROOT:PATH=%s' % spec['parallel-netcdf'].prefix ]) else: options.extend([ - '-DTrilinos_ENABLE_PyTrilinos:BOOL=OFF' + '-DTPL_ENABLE_Pnetcdf:BOOL=OFF' ]) - # collect CXX flags: - options.extend([ - '-DCMAKE_CXX_FLAGS:STRING=%s' % (' '.join(cxx_flags)), - ]) - - # disable due to compiler / config errors: - options.extend([ - '-DTrilinos_ENABLE_Pike=OFF', - '-DTrilinos_ENABLE_STK=OFF' - ]) - - if '+dtk' in spec: + if '+zlib' in spec: options.extend([ - '-DTrilinos_EXTRA_REPOSITORIES:STRING=DataTransferKit', - '-DTpetra_INST_INT_UNSIGNED_LONG:BOOL=ON', - '-DTrilinos_ENABLE_DataTransferKit:BOOL=ON' - ]) - - # exodus - if '+exodus' in spec: - options.extend([ - '-DTrilinos_ENABLE_SEACAS:BOOL=ON' + '-DTPL_ENABLE_Zlib:BOOL=ON', + '-DZlib_ROOT:PATH=%s' % spec['zlib'].prefix, ]) else: options.extend([ - '-DTrilinos_ENABLE_SEACAS:BOOL=OFF' + '-DTPL_ENABLE_Zlib:BOOL=OFF' ]) + # ################# Miscellaneous Stuff ###################### + + # Fortran lib + if '+fortran' in spec: + if spec.satisfies('%gcc') or spec.satisfies('%clang'): + libgfortran = os.path.dirname(os.popen( + '%s --print-file-name libgfortran.a' % + join_path(mpi_bin, 'mpif90')).read()) + options.extend([ + '-DTrilinos_EXTRA_LINK_FLAGS:STRING=-L%s/ -lgfortran' % ( + libgfortran), + '-DTrilinos_ENABLE_Fortran=ON' + ]) + + # Explicit instantiation + if '+instantiate' in spec: + options.extend([ + '-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON' + ]) + if '+tpetra' in spec: + options.extend([ + '-DTpetra_INST_DOUBLE:BOOL=ON', + '-DTpetra_INST_INT_LONG:BOOL=ON' + '-DTpetra_INST_COMPLEX_DOUBLE=%s' % ( + 'ON' if '+instantiate_cmplx' in spec else 'OFF' + ) + ]) + # disable due to compiler / config errors: if spec.satisfies('%xl') or spec.satisfies('%xl_r'): options.extend([ @@ -423,6 +542,31 @@ def cmake_args(self): options.extend([ '-DTrilinos_ENABLE_FEI=OFF' ]) + + if '.'.join(platform.mac_ver()[0].split('.')[:2]) == '10.12': + # use @rpath on Sierra due to limit of dynamic loader + options.append('-DCMAKE_MACOSX_RPATH=ON') + else: + options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s' % prefix.lib) + + if spec.satisfies('%intel') and spec.satisfies('@12.6.2'): + # Panzer uses some std:chrono that is not recognized by Intel + # Don't know which (maybe all) Trilinos versions this applies to + # Don't know which (maybe all) Intel versions this applies to + options.extend([ + '-DTrilinos_ENABLE_Panzer:BOOL=OFF' + ]) + + # collect CXX flags: + options.extend([ + '-DCMAKE_CXX_FLAGS:STRING=%s' % (' '.join(cxx_flags)), + ]) + + # disable due to compiler / config errors: + options.extend([ + '-DTrilinos_ENABLE_Pike=OFF' + ]) + return options @run_after('install') diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py index cc22b3420d3..21400c2cfd8 100644 --- a/var/spack/repos/builtin/packages/yaml-cpp/package.py +++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py @@ -36,7 +36,7 @@ class YamlCpp(CMakePackage): variant('shared', default=True, description='Enable build of shared libraries') - variant('fpic', default=False, + variant('fpic', default=True, description='Build with position independent code') depends_on('boost', when='@:0.5.3') @@ -45,13 +45,11 @@ def cmake_args(self): spec = self.spec options = [] - if '+fpic' in spec: - options.extend([ - '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true' - ]) - if '+shared' in spec: - options.append('-DBUILD_SHARED_LIBS=ON') - else: - options.append('-DBUILD_SHARED_LIBS=OFF') + options.extend([ + '-DBUILD_SHARED_LIBS:BOOL=%s' % ( + 'ON' if '+shared' in spec else 'OFF'), + '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=%s' % ( + 'ON' if '+fpic' in spec else 'OFF'), + ]) return options From a6bbbd4458f39d83e3c5399fcac38ff014126641 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 8 Jun 2017 15:55:45 -0700 Subject: [PATCH 1032/2394] Package for mono (#4435) * First draft package for mono Mono's vendor'ed boringssl interacts badly with openssl, so you need to use `cmake~openssl`. Left to its own devices, it wants to refer to things in `/usr/share/.mono`. This doesn't work for installs that don't run as root, etc... This package includes a variant to redirect those paths to `prefix.share`. * Whitespace/Flake8 --- .../repos/builtin/packages/mono/package.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mono/package.py diff --git a/var/spack/repos/builtin/packages/mono/package.py b/var/spack/repos/builtin/packages/mono/package.py new file mode 100644 index 00000000000..4a2692262b1 --- /dev/null +++ b/var/spack/repos/builtin/packages/mono/package.py @@ -0,0 +1,65 @@ +############################################################################### +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mono(AutotoolsPackage): + """Mono is a software platform designed to allow developers to easily + create cross platform applications. It is an open source + implementation of Microsoft's .NET Framework based on the ECMA + standards for C# and the Common Language Runtime. + """ + + homepage = "http://www.mono-project.com/" + url = "https://download.mono-project.com/sources/mono/mono-5.0.1.1.tar.bz2" + + # /usr/share/.mono/keypairs needs to exist or be able to be + # created, e.g. https://github.com/gentoo/dotnet/issues/6 + variant('patch-folder-path', default=False, + description='Point SpecialFolder.CommonApplicationData folder ' + 'into Spack installation instead of /usr/share') + + # Spack's openssl interacts badly with mono's vendored + # "boringssl", don't drag it in w/ cmake + depends_on('cmake~openssl', type=('build')) + depends_on('libiconv') + depends_on('perl', type=('build')) + + version('5.0.1.1', '17692c7a797f95ee6f9a0987fda3d486') + version('4.8.0.524', 'baeed5b8139a85ad7e291d402a4bcccb') + + def patch(self): + if '+patch-folder-path' in self.spec: + before = 'return "/usr/share";' + after = 'return "{0}";'.format(self.prefix.share) + f = 'mcs/class/corlib/System/Environment.cs' + kwargs = {'ignore_absent': False, 'backup': True, 'string': True} + filter_file(before, after, f, **kwargs) + + def configure_args(self): + args = [] + li = self.spec['libiconv'].prefix + args.append('--with-libiconv-prefix={p}'.format(p=li)) + return args From 85fd8f0b31b2df7ec610e13092b9e43aeca01d45 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 9 Jun 2017 01:53:40 -0500 Subject: [PATCH 1033/2394] Fix url parse offset for SourceForge downloads (#4458) --- lib/spack/spack/test/url_parse.py | 2 ++ lib/spack/spack/url.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index cf6f262fdf1..5489cc8d26d 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -160,6 +160,8 @@ def test_url_strip_name_suffixes(url, version, expected): ('sionlib', 30, '1.7.1', 59, 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1'), # Regex in name ('voro++', 40, '0.4.6', 47, 'http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz'), + # SourceForge download + ('glew', 55, '2.0.0', 60, 'https://sourceforge.net/projects/glew/files/glew/2.0.0/glew-2.0.0.tgz/download'), ]) def test_url_parse_offset(name, noffset, ver, voffset, path): """Tests that the name, version and offsets are computed correctly. diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 8f2129b84ad..54b3b74f1bd 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -301,7 +301,8 @@ def split_url_extension(path): prefix, ext, suffix = path, '', '' # Strip off sourceforge download suffix. - match = re.search(r'((?:sourceforge\.net|sf\.net)/.*)(/download)$', path) + # e.g. https://sourceforge.net/projects/glew/files/glew/2.0.0/glew-2.0.0.tgz/download + match = re.search(r'(.*(?:sourceforge\.net|sf\.net)/.*)(/download)$', path) if match: prefix, suffix = match.groups() From 5c5fd4a7e38aada4f0ca8d39394c457dbc1ecc5e Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 9 Jun 2017 14:10:54 +0200 Subject: [PATCH 1034/2394] add teuchos to Trilinos, update dealii to explicitly require certain packages (#4460) --- .../repos/builtin/packages/dealii/package.py | 15 +++++++-------- .../repos/builtin/packages/trilinos/package.py | 4 ++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 5f149b74fe9..0148fae7a27 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -126,22 +126,21 @@ class Dealii(CMakePackage): depends_on("slepc", when='+slepc+petsc+mpi') depends_on("slepc@:3.6.3", when='@:8.4.1+slepc+petsc+mpi') depends_on("slepc~arpack", when='+slepc+petsc+mpi+int64') - depends_on("trilinos", when='+trilinos+mpi~int64') - depends_on("trilinos~hypre", when="+trilinos+mpi+int64") + depends_on("trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado+teuchos", when='+trilinos+mpi~int64') + depends_on("trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado+teuchos~hypre", when="+trilinos+mpi+int64") # check that the combination of variants makes sense - def variants_check(self): - for p in ['+arpack', '+hdf5', '+netcdf', '+p4est', '+petsc', - '+slepc', '+trilinos']: - if p in self.spec and '+mpi' not in self.spec: - raise RuntimeError('The ' + p + ' variant requires +mpi') + conflicts('+gsl', when='@:8.4.2') + conflicts('+python', when='@:8.4.2') + for p in ['+arpack', '+hdf5', '+netcdf', '+p4est', '+petsc', + '+slepc', '+trilinos']: + conflicts(p, when='~mpi') def build_type(self): # CMAKE_BUILD_TYPE should be DebugRelease | Debug | Release return 'DebugRelease' def cmake_args(self): - self.variants_check() spec = self.spec options = [] # release flags diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 40929499de2..f28eb36a50c 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -111,6 +111,8 @@ class Trilinos(CMakePackage): description='Compile with zlib') variant('stk', default=False, description='Compile with STK') + variant('teuchos', default=True, + description='Compile with Teuchos') variant('belos', default=True, description='Compile with Belos') variant('zoltan', default=True, @@ -287,6 +289,8 @@ def cmake_args(self): 'ON' if '+ifpack2' in spec else 'OFF'), '-DTrilinos_ENABLE_Gtest:BOOL=%s' % ( 'ON' if '+gtest' in spec else 'OFF'), + '-DTrilinos_ENABLE_Teuchos:BOOL=%s' % ( + 'ON' if '+teuchos' in spec else 'OFF'), ]) if '+xsdkflags' in spec: From 23a95de2bd66e4a40387cbe2a05e132ccb07bf49 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Fri, 9 Jun 2017 14:12:27 +0200 Subject: [PATCH 1035/2394] Fix autotools issues (#4463) Add ACLOCAL_PATH to libtool and pkg-config. Without this, aclocal can not find the .m4 files. --- var/spack/repos/builtin/packages/libtool/package.py | 4 ++++ var/spack/repos/builtin/packages/pkg-config/package.py | 2 ++ 2 files changed, 6 insertions(+) diff --git a/var/spack/repos/builtin/packages/libtool/package.py b/var/spack/repos/builtin/packages/libtool/package.py index ae706089c97..f0a7de37981 100644 --- a/var/spack/repos/builtin/packages/libtool/package.py +++ b/var/spack/repos/builtin/packages/libtool/package.py @@ -41,6 +41,10 @@ class Libtool(AutotoolsPackage): def _make_executable(self, name): return Executable(join_path(self.prefix.bin, name)) + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.append_path('ACLOCAL_PATH', + join_path(self.prefix.share, 'aclocal')) + def setup_dependent_package(self, module, dependent_spec): # Automake is very likely to be a build dependency, # so we add the tools it provides to the dependent module diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py index 0aa4bb99692..2e23aae3fe1 100644 --- a/var/spack/repos/builtin/packages/pkg-config/package.py +++ b/var/spack/repos/builtin/packages/pkg-config/package.py @@ -51,6 +51,8 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): files.""" spack_env.append_path('PKG_CONFIG_PATH', '/usr/lib64/pkgconfig') spack_env.append_path('PKG_CONFIG_PATH', '/usr/local/lib64/pkgconfig') + spack_env.append_path('ACLOCAL_PATH', + join_path(self.prefix.share, 'aclocal')) def configure_args(self): config_args = ['--enable-shared'] From a3b12a60d1d25b06f3d49c87ed4cc5a1e333c47b Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 9 Jun 2017 14:15:54 +0200 Subject: [PATCH 1036/2394] scala + spark: added legacy versions (#82) (#4461) --- var/spack/repos/builtin/packages/scala/package.py | 7 +++++-- var/spack/repos/builtin/packages/spark/package.py | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/scala/package.py b/var/spack/repos/builtin/packages/scala/package.py index 1a4ac51ca36..3f83cc44e26 100644 --- a/var/spack/repos/builtin/packages/scala/package.py +++ b/var/spack/repos/builtin/packages/scala/package.py @@ -34,10 +34,13 @@ class Scala(Package): """ homepage = "https://www.scala-lang.org/" - url = "https://downloads.lightbend.com/scala/2.12.1/scala-2.12.1.tgz" + url = "https://downloads.lightbend.com/scala/2.12.1/scala-2.12.1.tgz" + + version('2.12.1', '3eaecbce019b0fa3067503846e292b32') + version('2.11.11', '3f5b76001f60cbc31111ddb81de5ea07') + version('2.20.6', 'd79dc9fdc627b73289306bdaec81ca98') depends_on('jdk') - version('2.12.1', '3eaecbce019b0fa3067503846e292b32') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py index e955a759852..3030fb1310d 100644 --- a/var/spack/repos/builtin/packages/spark/package.py +++ b/var/spack/repos/builtin/packages/spark/package.py @@ -34,7 +34,7 @@ class Spark(Package): """ homepage = "http://spark.apache.org" - url = "http://archive.apache.org/dist/spark/spark-2.0.0/spark-2.0.0-bin-without-hadoop.tgz" + url = "http://archive.apache.org/dist/spark/spark-2.0.0/spark-2.0.0-bin-without-hadoop.tgz" variant('hadoop', default=False, description='Build with Hadoop') @@ -47,6 +47,7 @@ class Spark(Package): version('2.0.0', '8a5307d973da6949a385aefb6ff747bb') version('1.6.2', '304394fbe2899211217f0cd9e9b2b5d9') version('1.6.1', 'fcf4961649f15af1fea78c882e65b001') + version('1.6.0', '2c28edc89ca0067e63e525c04f7b1d89') def install(self, spec, prefix): From 218992862c436d4e1bd2ecde2d5914ce8fa5b448 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 9 Jun 2017 12:27:29 -0500 Subject: [PATCH 1037/2394] Move gpg section of docs to Getting Started (#4446) --- lib/spack/docs/basic_usage.rst | 64 ---------------------------- lib/spack/docs/getting_started.rst | 67 ++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 64 deletions(-) diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index 6eba26a4b5b..f25247579b1 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -276,70 +276,6 @@ Seeing installed packages We know that ``spack list`` shows you the names of available packages, but how do you figure out which are already installed? -.. _cmd-spack-gpg: - -^^^^^^^^^^^^^ -``spack gpg`` -^^^^^^^^^^^^^ - -Spack has support for signing and verifying packages using GPG keys. A -separate keyring is used for Spack, so any keys available in the user's home -directory are not used. - -^^^^^^^^^^^^^^^^^^ -``spack gpg init`` -^^^^^^^^^^^^^^^^^^ - -When Spack is first installed, its keyring is empty. Keys stored in -:file:`var/spack/gpg` are the default keys for a Spack installation. These -keys may be imported by running ``spack gpg init``. This will import the -default keys into the keyring as trusted keys. - -------------- -Trusting keys -------------- - -Additional keys may be added to the keyring using -``spack gpg trust ``. Once a key is trusted, packages signed by the -owner of they key may be installed. - -------------- -Creating keys -------------- - -You may also create your own key so that you may sign your own packages using -``spack gpg create ``. By default, the key has no expiration, -but it may be set with the ``--expires `` flag (see the ``gnupg2`` -documentation for accepted date formats). It is also recommended to add a -comment as to the use of the key using the ``--comment `` flag. The -public half of the key can also be exported for sharing with others so that -they may use packages you have signed using the ``--export `` flag. -Secret keys may also be later exported using the -``spack gpg export [...]`` command. - ------------- -Listing keys ------------- - -In order to list the keys available in the keyring, the -``spack gpg list`` command will list trusted keys with the ``--trusted`` flag -and keys available for signing using ``--signing``. If you would like to -remove keys from your keyring, ``spack gpg untrust ``. Key IDs can be -email addresses, names, or (best) fingerprints. - ------------------------------- -Signing and Verifying Packages ------------------------------- - -In order to sign a package, ``spack gpg sign `` should be used. By -default, the signature will be written to ``.asc``, but that may be -changed by using the ``--output `` flag. If there is only one signing -key available, it will be used, but if there is more than one, the key to use -must be specified using the ``--key `` flag. The ``--clearsign`` flag -may also be used to create a signed file which contains the contents, but it -is not recommended. Signed packages may be verified by using -``spack gpg verify ``. - .. _cmd-spack-find: ^^^^^^^^^^^^^^ diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 9b31ea44915..eaa92db6944 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -987,6 +987,73 @@ written in C/C++/Fortran would need it. A potential workaround is to load a recent ``binutils`` into your environment and use the ``--dirty`` flag. +----------- +GPG Signing +----------- + +.. _cmd-spack-gpg: + +^^^^^^^^^^^^^ +``spack gpg`` +^^^^^^^^^^^^^ + +Spack has support for signing and verifying packages using GPG keys. A +separate keyring is used for Spack, so any keys available in the user's home +directory are not used. + +^^^^^^^^^^^^^^^^^^ +``spack gpg init`` +^^^^^^^^^^^^^^^^^^ + +When Spack is first installed, its keyring is empty. Keys stored in +:file:`var/spack/gpg` are the default keys for a Spack installation. These +keys may be imported by running ``spack gpg init``. This will import the +default keys into the keyring as trusted keys. + +^^^^^^^^^^^^^ +Trusting keys +^^^^^^^^^^^^^ + +Additional keys may be added to the keyring using +``spack gpg trust ``. Once a key is trusted, packages signed by the +owner of they key may be installed. + +^^^^^^^^^^^^^ +Creating keys +^^^^^^^^^^^^^ + +You may also create your own key so that you may sign your own packages using +``spack gpg create ``. By default, the key has no expiration, +but it may be set with the ``--expires `` flag (see the ``gnupg2`` +documentation for accepted date formats). It is also recommended to add a +comment as to the use of the key using the ``--comment `` flag. The +public half of the key can also be exported for sharing with others so that +they may use packages you have signed using the ``--export `` flag. +Secret keys may also be later exported using the +``spack gpg export [...]`` command. + +^^^^^^^^^^^^ +Listing keys +^^^^^^^^^^^^ + +In order to list the keys available in the keyring, the +``spack gpg list`` command will list trusted keys with the ``--trusted`` flag +and keys available for signing using ``--signing``. If you would like to +remove keys from your keyring, ``spack gpg untrust ``. Key IDs can be +email addresses, names, or (best) fingerprints. + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Signing and Verifying Packages +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In order to sign a package, ``spack gpg sign `` should be used. By +default, the signature will be written to ``.asc``, but that may be +changed by using the ``--output `` flag. If there is only one signing +key available, it will be used, but if there is more than one, the key to use +must be specified using the ``--key `` flag. The ``--clearsign`` flag +may also be used to create a signed file which contains the contents, but it +is not recommended. Signed packages may be verified by using +``spack gpg verify ``. .. _cray-support: From 36b8ea2f928651a53f29c0dae158f70597207173 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 9 Jun 2017 12:28:39 -0500 Subject: [PATCH 1038/2394] Add default list_url for GitLab, BitBucket, and CRAN (#4439) * Add default list_url for GitLab, BitBucket, and CRAN * Fix flake and doc tests --- lib/spack/spack/url.py | 43 ++++++++++++++++--- .../repos/builtin/packages/eigen/package.py | 1 - .../builtin/packages/hoomd-blue/package.py | 3 +- .../packages/perl-term-readkey/package.py | 1 - .../repos/builtin/packages/r-abind/package.py | 1 - .../builtin/packages/r-adabag/package.py | 1 - .../repos/builtin/packages/r-ade4/package.py | 1 - .../builtin/packages/r-adegenet/package.py | 1 - .../repos/builtin/packages/r-ape/package.py | 1 - .../builtin/packages/r-assertthat/package.py | 1 - .../builtin/packages/r-base64enc/package.py | 1 - .../repos/builtin/packages/r-bh/package.py | 1 - .../builtin/packages/r-bitops/package.py | 1 - .../repos/builtin/packages/r-boot/package.py | 1 - .../repos/builtin/packages/r-brew/package.py | 1 - .../repos/builtin/packages/r-c50/package.py | 3 +- .../repos/builtin/packages/r-car/package.py | 1 - .../repos/builtin/packages/r-caret/package.py | 1 - .../builtin/packages/r-catools/package.py | 3 +- .../builtin/packages/r-checkpoint/package.py | 1 - .../repos/builtin/packages/r-chron/package.py | 1 - .../repos/builtin/packages/r-class/package.py | 3 +- .../builtin/packages/r-cluster/package.py | 1 - .../repos/builtin/packages/r-coda/package.py | 1 - .../builtin/packages/r-codetools/package.py | 1 - .../repos/builtin/packages/r-coin/package.py | 1 - .../builtin/packages/r-colorspace/package.py | 1 - .../builtin/packages/r-corrplot/package.py | 1 - .../builtin/packages/r-crayon/package.py | 1 - .../builtin/packages/r-cubature/package.py | 1 - .../builtin/packages/r-cubist/package.py | 1 - .../repos/builtin/packages/r-curl/package.py | 1 - .../builtin/packages/r-data-table/package.py | 1 - .../repos/builtin/packages/r-dbi/package.py | 1 - .../builtin/packages/r-deldir/package.py | 1 - .../builtin/packages/r-dendextend/package.py | 1 - .../builtin/packages/r-deoptim/package.py | 1 - .../builtin/packages/r-devtools/package.py | 1 - .../builtin/packages/r-diagrammer/package.py | 1 - .../builtin/packages/r-dichromat/package.py | 1 - .../builtin/packages/r-digest/package.py | 1 - .../builtin/packages/r-diptest/package.py | 1 - .../repos/builtin/packages/r-domc/package.py | 1 - .../builtin/packages/r-doparallel/package.py | 1 - .../repos/builtin/packages/r-dplyr/package.py | 1 - .../repos/builtin/packages/r-dt/package.py | 1 - .../builtin/packages/r-dygraphs/package.py | 1 - .../repos/builtin/packages/r-e1071/package.py | 1 - .../builtin/packages/r-ellipse/package.py | 1 - .../repos/builtin/packages/r-ergm/package.py | 1 - .../builtin/packages/r-evaluate/package.py | 1 - .../repos/builtin/packages/r-expm/package.py | 1 - .../builtin/packages/r-factoextra/package.py | 1 - .../builtin/packages/r-factominer/package.py | 1 - .../builtin/packages/r-filehash/package.py | 1 - .../builtin/packages/r-flashclust/package.py | 1 - .../builtin/packages/r-flexmix/package.py | 1 - .../builtin/packages/r-foreach/package.py | 1 - .../builtin/packages/r-foreign/package.py | 1 - .../builtin/packages/r-formatr/package.py | 1 - .../builtin/packages/r-formula/package.py | 1 - .../repos/builtin/packages/r-fpc/package.py | 1 - .../repos/builtin/packages/r-gdata/package.py | 1 - .../builtin/packages/r-geosphere/package.py | 1 - .../repos/builtin/packages/r-ggmap/package.py | 1 - .../builtin/packages/r-ggplot2/package.py | 1 - .../builtin/packages/r-ggpubr/package.py | 1 - .../builtin/packages/r-ggrepel/package.py | 1 - .../repos/builtin/packages/r-ggsci/package.py | 1 - .../repos/builtin/packages/r-ggvis/package.py | 1 - .../repos/builtin/packages/r-gistr/package.py | 1 - .../repos/builtin/packages/r-git2r/package.py | 1 - .../builtin/packages/r-glmnet/package.py | 1 - .../builtin/packages/r-gmodels/package.py | 1 - .../repos/builtin/packages/r-gmp/package.py | 1 - .../builtin/packages/r-googlevis/package.py | 1 - .../builtin/packages/r-gridbase/package.py | 1 - .../builtin/packages/r-gridextra/package.py | 1 - .../builtin/packages/r-gtable/package.py | 1 - .../builtin/packages/r-gtools/package.py | 1 - .../builtin/packages/r-hexbin/package.py | 1 - .../repos/builtin/packages/r-highr/package.py | 1 - .../builtin/packages/r-htmltools/package.py | 1 - .../builtin/packages/r-htmlwidgets/package.py | 1 - .../builtin/packages/r-httpuv/package.py | 1 - .../repos/builtin/packages/r-httr/package.py | 1 - .../builtin/packages/r-igraph/package.py | 1 - .../builtin/packages/r-inline/package.py | 1 - .../repos/builtin/packages/r-ipred/package.py | 1 - .../repos/builtin/packages/r-irlba/package.py | 1 - .../builtin/packages/r-iterators/package.py | 1 - .../repos/builtin/packages/r-jpeg/package.py | 1 - .../builtin/packages/r-jsonlite/package.py | 1 - .../builtin/packages/r-kernlab/package.py | 1 - .../builtin/packages/r-kernsmooth/package.py | 1 - .../repos/builtin/packages/r-kknn/package.py | 1 - .../repos/builtin/packages/r-knitr/package.py | 1 - .../builtin/packages/r-labeling/package.py | 1 - .../packages/r-laplacesdemon/package.py | 1 - .../builtin/packages/r-lattice/package.py | 1 - .../repos/builtin/packages/r-lava/package.py | 1 - .../builtin/packages/r-lazyeval/package.py | 1 - .../builtin/packages/r-leaflet/package.py | 1 - .../repos/builtin/packages/r-leaps/package.py | 1 - .../builtin/packages/r-learnbayes/package.py | 1 - .../repos/builtin/packages/r-lme4/package.py | 1 - .../builtin/packages/r-lmtest/package.py | 1 - .../builtin/packages/r-lpsolve/package.py | 1 - .../builtin/packages/r-lubridate/package.py | 1 - .../repos/builtin/packages/r-magic/package.py | 1 - .../builtin/packages/r-magrittr/package.py | 1 - .../builtin/packages/r-mapproj/package.py | 1 - .../repos/builtin/packages/r-maps/package.py | 1 - .../builtin/packages/r-maptools/package.py | 1 - .../builtin/packages/r-markdown/package.py | 1 - .../repos/builtin/packages/r-mass/package.py | 1 - .../builtin/packages/r-matrix/package.py | 1 - .../packages/r-matrixmodels/package.py | 1 - .../builtin/packages/r-mclust/package.py | 1 - .../repos/builtin/packages/r-mda/package.py | 1 - .../builtin/packages/r-memoise/package.py | 1 - .../repos/builtin/packages/r-mgcv/package.py | 1 - .../repos/builtin/packages/r-mime/package.py | 1 - .../repos/builtin/packages/r-minqa/package.py | 1 - .../builtin/packages/r-mlbench/package.py | 1 - .../packages/r-modelmetrics/package.py | 1 - .../builtin/packages/r-modeltools/package.py | 1 - .../builtin/packages/r-multcomp/package.py | 1 - .../builtin/packages/r-munsell/package.py | 1 - .../builtin/packages/r-mvtnorm/package.py | 1 - .../repos/builtin/packages/r-ncdf4/package.py | 1 - .../builtin/packages/r-network/package.py | 1 - .../builtin/packages/r-networkd3/package.py | 1 - .../repos/builtin/packages/r-nlme/package.py | 1 - .../builtin/packages/r-nloptr/package.py | 1 - .../repos/builtin/packages/r-nmf/package.py | 1 - .../repos/builtin/packages/r-nnet/package.py | 1 - .../repos/builtin/packages/r-np/package.py | 1 - .../builtin/packages/r-numderiv/package.py | 1 - .../builtin/packages/r-openssl/package.py | 1 - .../builtin/packages/r-packrat/package.py | 1 - .../builtin/packages/r-pacman/package.py | 1 - .../repos/builtin/packages/r-party/package.py | 1 - .../builtin/packages/r-partykit/package.py | 1 - .../builtin/packages/r-pbdzmq/package.py | 1 - .../builtin/packages/r-pbkrtest/package.py | 1 - .../builtin/packages/r-permute/package.py | 1 - .../builtin/packages/r-pkgmaker/package.py | 1 - .../builtin/packages/r-plotrix/package.py | 1 - .../repos/builtin/packages/r-pls/package.py | 1 - .../repos/builtin/packages/r-plyr/package.py | 1 - .../repos/builtin/packages/r-png/package.py | 1 - .../builtin/packages/r-prabclus/package.py | 1 - .../builtin/packages/r-prodlim/package.py | 1 - .../repos/builtin/packages/r-proto/package.py | 1 - .../repos/builtin/packages/r-pryr/package.py | 1 - .../builtin/packages/r-quadprog/package.py | 1 - .../builtin/packages/r-quantmod/package.py | 1 - .../builtin/packages/r-quantreg/package.py | 1 - .../repos/builtin/packages/r-r6/package.py | 1 - .../packages/r-randomforest/package.py | 1 - .../builtin/packages/r-raster/package.py | 1 - .../builtin/packages/r-rbokeh/package.py | 1 - .../packages/r-rcolorbrewer/package.py | 1 - .../repos/builtin/packages/r-rcpp/package.py | 1 - .../builtin/packages/r-rcppeigen/package.py | 1 - .../builtin/packages/r-registry/package.py | 1 - .../repos/builtin/packages/r-repr/package.py | 1 - .../builtin/packages/r-reshape2/package.py | 1 - .../repos/builtin/packages/r-rgl/package.py | 2 - .../builtin/packages/r-rgooglemaps/package.py | 1 - .../builtin/packages/r-rinside/package.py | 1 - .../repos/builtin/packages/r-rjava/package.py | 1 - .../repos/builtin/packages/r-rjson/package.py | 1 - .../builtin/packages/r-rjsonio/package.py | 1 - .../builtin/packages/r-rmarkdown/package.py | 1 - .../builtin/packages/r-rminer/package.py | 1 - .../repos/builtin/packages/r-rmpfr/package.py | 1 - .../repos/builtin/packages/r-rmpi/package.py | 1 - .../builtin/packages/r-rmysql/package.py | 1 - .../builtin/packages/r-rngtools/package.py | 1 - .../repos/builtin/packages/r-rodbc/package.py | 1 - .../builtin/packages/r-roxygen2/package.py | 1 - .../builtin/packages/r-rpart-plot/package.py | 1 - .../repos/builtin/packages/r-rpart/package.py | 1 - .../builtin/packages/r-rpostgresql/package.py | 1 - .../repos/builtin/packages/r-rsnns/package.py | 1 - .../builtin/packages/r-rsqlite/package.py | 1 - .../repos/builtin/packages/r-rstan/package.py | 1 - .../builtin/packages/r-rstudioapi/package.py | 1 - .../repos/builtin/packages/r-rzmq/package.py | 1 - .../builtin/packages/r-sandwich/package.py | 1 - .../builtin/packages/r-scales/package.py | 1 - .../packages/r-scatterplot3d/package.py | 1 - .../builtin/packages/r-segmented/package.py | 1 - .../builtin/packages/r-seqinr/package.py | 1 - .../repos/builtin/packages/r-shiny/package.py | 1 - .../repos/builtin/packages/r-snow/package.py | 1 - .../repos/builtin/packages/r-sp/package.py | 1 - .../builtin/packages/r-sparsem/package.py | 1 - .../repos/builtin/packages/r-spdep/package.py | 1 - .../builtin/packages/r-stanheaders/package.py | 1 - .../packages/r-statnet-common/package.py | 1 - .../builtin/packages/r-stringi/package.py | 1 - .../builtin/packages/r-stringr/package.py | 1 - .../builtin/packages/r-strucchange/package.py | 1 - .../builtin/packages/r-survey/package.py | 1 - .../builtin/packages/r-survival/package.py | 1 - .../builtin/packages/r-tarifx/package.py | 1 - .../builtin/packages/r-testit/package.py | 1 - .../builtin/packages/r-testthat/package.py | 1 - .../builtin/packages/r-th-data/package.py | 1 - .../builtin/packages/r-threejs/package.py | 1 - .../builtin/packages/r-tibble/package.py | 1 - .../repos/builtin/packages/r-tidyr/package.py | 1 - .../builtin/packages/r-trimcluster/package.py | 1 - .../repos/builtin/packages/r-trust/package.py | 1 - .../repos/builtin/packages/r-ttr/package.py | 1 - .../repos/builtin/packages/r-uuid/package.py | 1 - .../repos/builtin/packages/r-vcd/package.py | 1 - .../repos/builtin/packages/r-vegan/package.py | 1 - .../builtin/packages/r-viridis/package.py | 1 - .../builtin/packages/r-viridislite/package.py | 1 - .../builtin/packages/r-visnetwork/package.py | 1 - .../builtin/packages/r-whisker/package.py | 1 - .../repos/builtin/packages/r-withr/package.py | 1 - .../builtin/packages/r-xgboost/package.py | 1 - .../builtin/packages/r-xlconnect/package.py | 1 - .../packages/r-xlconnectjars/package.py | 1 - .../repos/builtin/packages/r-xlsx/package.py | 1 - .../builtin/packages/r-xlsxjars/package.py | 1 - .../repos/builtin/packages/r-xml/package.py | 1 - .../builtin/packages/r-xtable/package.py | 1 - .../repos/builtin/packages/r-xts/package.py | 1 - .../repos/builtin/packages/r-yaml/package.py | 1 - .../repos/builtin/packages/r-zoo/package.py | 1 - .../repos/builtin/packages/spindle/package.py | 1 - 237 files changed, 42 insertions(+), 246 deletions(-) diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 54b3b74f1bd..f20ca1f9181 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -63,16 +63,49 @@ # "path" seemed like the most generic term. # def find_list_url(url): - """Finds a good list URL for the supplied URL. This depends on - the site. By default, just assumes that a good list URL is the - dirname of an archive path. For github URLs, this returns the - URL of the project's releases page. + """Finds a good list URL for the supplied URL. + + By default, returns the dirname of the archive path. + + Provides special treatment for the following websites, which have a + unique list URL different from the dirname of the download URL: + + ========= ======================================================= + GitHub https://github.com///releases + GitLab https://gitlab.\*///tags + BitBucket https://bitbucket.org///downloads/?tab=tags + CRAN https://\*.r-project.org/src/contrib/Archive/ + ========= ======================================================= + + Parameters: + url (str): The download URL for the package + + Returns: + str: The list URL for the package """ url_types = [ + # GitHub # e.g. https://github.com/llnl/callpath/archive/v1.0.1.tar.gz (r'(.*github\.com/[^/]+/[^/]+)', - lambda m: m.group(1) + '/releases')] + lambda m: m.group(1) + '/releases'), + + # GitLab + # e.g. https://gitlab.dkrz.de/k202009/libaec/uploads/631e85bcf877c2dcaca9b2e6d6526339/libaec-1.0.0.tar.gz + (r'(.*gitlab[^/]+/[^/]+/[^/]+)', + lambda m: m.group(1) + '/tags'), + + # BitBucket + # e.g. https://bitbucket.org/eigen/eigen/get/3.3.3.tar.bz2 + (r'(.*bitbucket.org/[^/]+/[^/]+)', + lambda m: m.group(1) + '/downloads/?tab=tags'), + + # CRAN + # e.g. https://cran.r-project.org/src/contrib/Rcpp_0.12.9.tar.gz + # e.g. https://cloud.r-project.org/src/contrib/rgl_0.98.1.tar.gz + (r'(.*\.r-project\.org/src/contrib)/([^_]+)', + lambda m: m.group(1) + '/Archive/' + m.group(2)), + ] for pattern, fun in url_types: match = re.search(pattern, url) diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index 4ed28580050..07277fc3e31 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -32,7 +32,6 @@ class Eigen(CMakePackage): homepage = 'http://eigen.tuxfamily.org/' url = 'https://bitbucket.org/eigen/eigen/get/3.3.3.tar.bz2' - list_url = 'https://bitbucket.org/eigen/eigen/downloads/?tab=tags' version('3.3.3', 'b2ddade41040d9cf73b39b4b51e8775b') version('3.3.1', 'edb6799ef413b0868aace20d2403864c') diff --git a/var/spack/repos/builtin/packages/hoomd-blue/package.py b/var/spack/repos/builtin/packages/hoomd-blue/package.py index 0aa9574a6d1..bc1ffd4d5b7 100644 --- a/var/spack/repos/builtin/packages/hoomd-blue/package.py +++ b/var/spack/repos/builtin/packages/hoomd-blue/package.py @@ -40,9 +40,8 @@ class HoomdBlue(CMakePackage): git = "https://bitbucket.org/glotzer/hoomd-blue" # TODO: There is a bug in Spack that requires a url to be defined - # even if it isn't used. These URLs can hopefully be removed someday. + # even if it isn't used. This URL can hopefully be removed someday. url = "https://bitbucket.org/glotzer/hoomd-blue/get/v2.1.6.tar.bz2" - list_url = "https://bitbucket.org/glotzer/hoomd-blue/downloads/?tab=tags" version('develop', git=git, submodules=True) diff --git a/var/spack/repos/builtin/packages/perl-term-readkey/package.py b/var/spack/repos/builtin/packages/perl-term-readkey/package.py index 2b1f93cbc0a..b9ab06dce1a 100644 --- a/var/spack/repos/builtin/packages/perl-term-readkey/package.py +++ b/var/spack/repos/builtin/packages/perl-term-readkey/package.py @@ -36,6 +36,5 @@ class PerlTermReadkey(PerlPackage): homepage = "http://search.cpan.org/perldoc/Term::ReadKey" url = "http://www.cpan.org/authors/id/J/JS/JSTOWE/TermReadKey-2.37.tar.gz" - list_url = "http://www.cpan.org/authors/id/J/JS/JSTOWE" version('2.37', 'e8ea15c16333ac4f8d146d702e83cc0c') diff --git a/var/spack/repos/builtin/packages/r-abind/package.py b/var/spack/repos/builtin/packages/r-abind/package.py index 81fa319a90f..52815298cf3 100644 --- a/var/spack/repos/builtin/packages/r-abind/package.py +++ b/var/spack/repos/builtin/packages/r-abind/package.py @@ -33,6 +33,5 @@ class RAbind(RPackage): homepage = "https://cran.r-project.org/" url = "https://cran.r-project.org/src/contrib/abind_1.4-3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/abind" version('1.4-3', '10fcf80c677b991bf263d38be35a1fc5') diff --git a/var/spack/repos/builtin/packages/r-adabag/package.py b/var/spack/repos/builtin/packages/r-adabag/package.py index aa160478568..a2bc90a690e 100644 --- a/var/spack/repos/builtin/packages/r-adabag/package.py +++ b/var/spack/repos/builtin/packages/r-adabag/package.py @@ -30,7 +30,6 @@ class RAdabag(RPackage): homepage = "https://cran.r-project.org/package=adabag" url = "https://cran.r-project.org/src/contrib/adabag_4.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/adabag" version('4.1', '2e019f053d49f62ebb3b1697bbb50afa') diff --git a/var/spack/repos/builtin/packages/r-ade4/package.py b/var/spack/repos/builtin/packages/r-ade4/package.py index e7bc51d3af1..9583db2f24b 100644 --- a/var/spack/repos/builtin/packages/r-ade4/package.py +++ b/var/spack/repos/builtin/packages/r-ade4/package.py @@ -31,7 +31,6 @@ class RAde4(RPackage): homepage = "http://pbil.univ-lyon1.fr/ADE-4" url = "https://cran.r-project.org/src/contrib/ade4_1.7-6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ade4" version('1.7-6', '63401ca369677538c96c3d7b75b3f4a1') diff --git a/var/spack/repos/builtin/packages/r-adegenet/package.py b/var/spack/repos/builtin/packages/r-adegenet/package.py index 368d546e1d2..47347b6897b 100644 --- a/var/spack/repos/builtin/packages/r-adegenet/package.py +++ b/var/spack/repos/builtin/packages/r-adegenet/package.py @@ -38,7 +38,6 @@ class RAdegenet(RPackage): homepage = "https://github.com/thibautjombart/adegenet/wiki" url = "https://cran.r-project.org/src/contrib/adegenet_2.0.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/adegenet" version('2.0.1', 'ecb1220ce7c9affaba2987bc7f38adda') diff --git a/var/spack/repos/builtin/packages/r-ape/package.py b/var/spack/repos/builtin/packages/r-ape/package.py index 0476a6da298..314f9b0c4dd 100644 --- a/var/spack/repos/builtin/packages/r-ape/package.py +++ b/var/spack/repos/builtin/packages/r-ape/package.py @@ -44,7 +44,6 @@ class RApe(RPackage): homepage = "http://ape-package.ird.fr/" url = "https://cran.r-project.org/src/contrib/ape_4.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ape" version('4.1', 'a9ed416d6d172d4b9682556cf692d7c2') diff --git a/var/spack/repos/builtin/packages/r-assertthat/package.py b/var/spack/repos/builtin/packages/r-assertthat/package.py index b8ab7d7a0cd..f4935eaf08e 100644 --- a/var/spack/repos/builtin/packages/r-assertthat/package.py +++ b/var/spack/repos/builtin/packages/r-assertthat/package.py @@ -33,6 +33,5 @@ class RAssertthat(RPackage): homepage = "https://cran.r-project.org/package=assertthat" url = "https://cran.r-project.org/src/contrib/assertthat_0.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/assertthat" version('0.1', '59f9d7f7c00077ea54d763b78eeb5798') diff --git a/var/spack/repos/builtin/packages/r-base64enc/package.py b/var/spack/repos/builtin/packages/r-base64enc/package.py index 698e27a29ee..1d189fac5f4 100644 --- a/var/spack/repos/builtin/packages/r-base64enc/package.py +++ b/var/spack/repos/builtin/packages/r-base64enc/package.py @@ -31,6 +31,5 @@ class RBase64enc(RPackage): homepage = "http://www.rforge.net/base64enc" url = "https://cran.r-project.org/src/contrib/base64enc_0.1-3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/base64enc" version('0.1-3', '0f476dacdd11a3e0ad56d13f5bc2f190') diff --git a/var/spack/repos/builtin/packages/r-bh/package.py b/var/spack/repos/builtin/packages/r-bh/package.py index 683ba24d86a..44f2442cabf 100644 --- a/var/spack/repos/builtin/packages/r-bh/package.py +++ b/var/spack/repos/builtin/packages/r-bh/package.py @@ -43,6 +43,5 @@ class RBh(RPackage): homepage = "https://cran.r-project.org/web/packages/BH/index.html" url = "https://cran.r-project.org/src/contrib/BH_1.60.0-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/BH" version('1.60.0-2', 'b50fdc85285da05add4e9da664a2d551') diff --git a/var/spack/repos/builtin/packages/r-bitops/package.py b/var/spack/repos/builtin/packages/r-bitops/package.py index 67bb0fe7774..2b40e8c4d8a 100644 --- a/var/spack/repos/builtin/packages/r-bitops/package.py +++ b/var/spack/repos/builtin/packages/r-bitops/package.py @@ -31,6 +31,5 @@ class RBitops(RPackage): homepage = "https://cran.r-project.org/package=bitops" url = "https://cran.r-project.org/src/contrib/bitops_1.0-6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/bitops" version('1.0-6', 'fba16485a51b1ccd354abde5816b6bdd') diff --git a/var/spack/repos/builtin/packages/r-boot/package.py b/var/spack/repos/builtin/packages/r-boot/package.py index 1361920673d..27ae21c2b81 100644 --- a/var/spack/repos/builtin/packages/r-boot/package.py +++ b/var/spack/repos/builtin/packages/r-boot/package.py @@ -32,6 +32,5 @@ class RBoot(RPackage): homepage = "https://cran.r-project.org/package=boot" url = "https://cran.r-project.org/src/contrib/boot_1.3-18.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/boot" version('1.3-18', '711dd58af14e1027eb8377d9202e9b6f') diff --git a/var/spack/repos/builtin/packages/r-brew/package.py b/var/spack/repos/builtin/packages/r-brew/package.py index 558d830a2b7..f4aea091728 100644 --- a/var/spack/repos/builtin/packages/r-brew/package.py +++ b/var/spack/repos/builtin/packages/r-brew/package.py @@ -32,6 +32,5 @@ class RBrew(RPackage): homepage = "https://cran.r-project.org/package=brew" url = "https://cran.r-project.org/src/contrib/brew_1.0-6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/brew" version('1.0-6', '4aaca5e6ec145e0fc0fe6375ce1f3806') diff --git a/var/spack/repos/builtin/packages/r-c50/package.py b/var/spack/repos/builtin/packages/r-c50/package.py index 571f8f461ba..323f8efbea4 100644 --- a/var/spack/repos/builtin/packages/r-c50/package.py +++ b/var/spack/repos/builtin/packages/r-c50/package.py @@ -31,8 +31,7 @@ class RC50(RPackage): homepage = "https://cran.r-project.org/package=C50" url = "https://cran.r-project.org/src/contrib/C50_0.1.0-24.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/C50" version('0.1.0-24', '42631e65c5c579532cc6edf5ea175949') - depends_on('r-partykit', type=('build','run')) + depends_on('r-partykit', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-car/package.py b/var/spack/repos/builtin/packages/r-car/package.py index 56c87c27a6d..2fa7380ca3f 100644 --- a/var/spack/repos/builtin/packages/r-car/package.py +++ b/var/spack/repos/builtin/packages/r-car/package.py @@ -31,7 +31,6 @@ class RCar(RPackage): homepage = "https://r-forge.r-project.org/projects/car/" url = "https://cran.r-project.org/src/contrib/car_2.1-4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/car" version('2.1-4', 'a66c307e8ccf0c336ed197c0f1799565') version('2.1-2', '0f78ad74ef7130126d319acec23951a0') diff --git a/var/spack/repos/builtin/packages/r-caret/package.py b/var/spack/repos/builtin/packages/r-caret/package.py index 277fdc71430..a20a5c2280e 100644 --- a/var/spack/repos/builtin/packages/r-caret/package.py +++ b/var/spack/repos/builtin/packages/r-caret/package.py @@ -31,7 +31,6 @@ class RCaret(RPackage): homepage = "https://github.com/topepo/caret/" url = "https://cran.r-project.org/src/contrib/caret_6.0-73.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/caret" version('6.0-73', 'ca869e3357b5358f028fb926eb62eb70') version('6.0-70', '202d7abb6a679af716ea69fb2573f108') diff --git a/var/spack/repos/builtin/packages/r-catools/package.py b/var/spack/repos/builtin/packages/r-catools/package.py index 7b82a19c016..78165c59b47 100644 --- a/var/spack/repos/builtin/packages/r-catools/package.py +++ b/var/spack/repos/builtin/packages/r-catools/package.py @@ -34,8 +34,7 @@ class RCatools(RPackage): homepage = "https://cran.r-project.org/package=caTools" url = "https://cran.r-project.org/src/contrib/caTools_1.17.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/caTools" version('1.17.1', '5c872bbc78b177b306f36709deb44498') - depends_on('r-bitops', type=('build','run')) + depends_on('r-bitops', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-checkpoint/package.py b/var/spack/repos/builtin/packages/r-checkpoint/package.py index 5fd862fa46f..299051ddbba 100644 --- a/var/spack/repos/builtin/packages/r-checkpoint/package.py +++ b/var/spack/repos/builtin/packages/r-checkpoint/package.py @@ -33,7 +33,6 @@ class RCheckpoint(RPackage): homepage = "https://cran.r-project.org/package=checkpoint" url = "https://cran.r-project.org/src/contrib/checkpoint_0.3.18.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/checkpoint" version('0.3.18', '021d7faeb72c36167951e103b2b065ea') version('0.3.15', 'a4aa8320338f1434a330d984e97981ea') diff --git a/var/spack/repos/builtin/packages/r-chron/package.py b/var/spack/repos/builtin/packages/r-chron/package.py index e1731424b3b..00d08070ee2 100644 --- a/var/spack/repos/builtin/packages/r-chron/package.py +++ b/var/spack/repos/builtin/packages/r-chron/package.py @@ -30,6 +30,5 @@ class RChron(RPackage): homepage = "https://cran.r-project.org/package=chron" url = "https://cran.r-project.org/src/contrib/chron_2.3-47.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/chron" version('2.3-47', 'b8890cdc5f2337f8fd775b0becdcdd1f') diff --git a/var/spack/repos/builtin/packages/r-class/package.py b/var/spack/repos/builtin/packages/r-class/package.py index de81e7588e0..238e7543985 100644 --- a/var/spack/repos/builtin/packages/r-class/package.py +++ b/var/spack/repos/builtin/packages/r-class/package.py @@ -31,8 +31,7 @@ class RClass(RPackage): homepage = "http://www.stats.ox.ac.uk/pub/MASS4/" url = "https://cran.r-project.org/src/contrib/class_7.3-14.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/class" version('7.3-14', '6a21dd206fe4ea29c55faeb65fb2b71e') - depends_on('r-mass', type=('build','run')) + depends_on('r-mass', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-cluster/package.py b/var/spack/repos/builtin/packages/r-cluster/package.py index caa96a380a1..b5b8544710e 100644 --- a/var/spack/repos/builtin/packages/r-cluster/package.py +++ b/var/spack/repos/builtin/packages/r-cluster/package.py @@ -32,7 +32,6 @@ class RCluster(RPackage): homepage = "https://cran.r-project.org/web/packages/cluster/index.html" url = "https://cran.r-project.org/src/contrib/cluster_2.0.5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/cluster" version('2.0.5', '7330f209ebce960bdee1a6d6679cb85a') version('2.0.4', 'bb4deceaafb1c42bb1278d5d0dc11e59') diff --git a/var/spack/repos/builtin/packages/r-coda/package.py b/var/spack/repos/builtin/packages/r-coda/package.py index 08f0f10bb42..9645aab046b 100644 --- a/var/spack/repos/builtin/packages/r-coda/package.py +++ b/var/spack/repos/builtin/packages/r-coda/package.py @@ -33,7 +33,6 @@ class RCoda(RPackage): homepage = "https://cran.r-project.org/web/packages/coda/index.html" url = "https://cran.r-project.org/src/contrib/coda_0.19-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/coda" version('0.19-1', '0d2aca6a5a3bdae9542708817c1ec001') diff --git a/var/spack/repos/builtin/packages/r-codetools/package.py b/var/spack/repos/builtin/packages/r-codetools/package.py index 60b8fc2cc8a..07c9b442fdb 100644 --- a/var/spack/repos/builtin/packages/r-codetools/package.py +++ b/var/spack/repos/builtin/packages/r-codetools/package.py @@ -30,7 +30,6 @@ class RCodetools(RPackage): homepage = "https://cran.r-project.org/web/packages/codetools/index.html" url = "https://cran.r-project.org/src/contrib/codetools_0.2-15.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/codetools" version('0.2-15', '37419cbc3de81984cf6d9b207d4f62d4') version('0.2-14', '7ec41d4f8bd6ba85facc8c5e6adc1f4d') diff --git a/var/spack/repos/builtin/packages/r-coin/package.py b/var/spack/repos/builtin/packages/r-coin/package.py index 51b61a6164e..b2208f5c15a 100644 --- a/var/spack/repos/builtin/packages/r-coin/package.py +++ b/var/spack/repos/builtin/packages/r-coin/package.py @@ -32,7 +32,6 @@ class RCoin(RPackage): homepage = "https://cran.r-project.org/package=coin" url = "https://cran.r-project.org/src/contrib/coin_1.1-3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/coin" version('1.1-3', '97d3d21f1e4a5762e36dd718dd2d0661') diff --git a/var/spack/repos/builtin/packages/r-colorspace/package.py b/var/spack/repos/builtin/packages/r-colorspace/package.py index af2895acbf4..c5c022e6abe 100644 --- a/var/spack/repos/builtin/packages/r-colorspace/package.py +++ b/var/spack/repos/builtin/packages/r-colorspace/package.py @@ -33,7 +33,6 @@ class RColorspace(RPackage): homepage = "https://cran.r-project.org/web/packages/colorspace/index.html" url = "https://cran.r-project.org/src/contrib/colorspace_1.3-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/colorspace" version('1.3-2', '63000bab81d995ff167df76fb97b2984') version('1.2-6', 'a30191e9caf66f77ff4e99c062e9dce1') diff --git a/var/spack/repos/builtin/packages/r-corrplot/package.py b/var/spack/repos/builtin/packages/r-corrplot/package.py index ccae3bf9138..bc7b7f7cdee 100644 --- a/var/spack/repos/builtin/packages/r-corrplot/package.py +++ b/var/spack/repos/builtin/packages/r-corrplot/package.py @@ -31,6 +31,5 @@ class RCorrplot(RPackage): homepage = "https://cran.r-project.org/package=corrplot" url = "https://cran.r-project.org/src/contrib/corrplot_0.77.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/corrplot" version('0.77', '2a5d54fd5c65618b9afba1a32f6b4542') diff --git a/var/spack/repos/builtin/packages/r-crayon/package.py b/var/spack/repos/builtin/packages/r-crayon/package.py index 2002ea54192..99c0d248ea6 100644 --- a/var/spack/repos/builtin/packages/r-crayon/package.py +++ b/var/spack/repos/builtin/packages/r-crayon/package.py @@ -34,6 +34,5 @@ class RCrayon(RPackage): homepage = "https://github.com/gaborcsardi/crayon" url = "https://cran.r-project.org/src/contrib/crayon_1.3.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/crayon" version('1.3.2', 'fe29c6204d2d6ff4c2f9d107a03d0cb9') diff --git a/var/spack/repos/builtin/packages/r-cubature/package.py b/var/spack/repos/builtin/packages/r-cubature/package.py index 918f8e9e3d9..747e5e9e1ff 100644 --- a/var/spack/repos/builtin/packages/r-cubature/package.py +++ b/var/spack/repos/builtin/packages/r-cubature/package.py @@ -30,6 +30,5 @@ class RCubature(RPackage): homepage = "https://cran.r-project.org/package=cubature" url = "https://cran.r-project.org/src/contrib/cubature_1.1-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/cubature" version('1.1-2', '5617e1d82baa803a3814d92461da45c9') diff --git a/var/spack/repos/builtin/packages/r-cubist/package.py b/var/spack/repos/builtin/packages/r-cubist/package.py index acc02613833..6e1d8d10cc9 100644 --- a/var/spack/repos/builtin/packages/r-cubist/package.py +++ b/var/spack/repos/builtin/packages/r-cubist/package.py @@ -30,7 +30,6 @@ class RCubist(RPackage): homepage = "https://cran.r-project.org/package=Cubist" url = "https://cran.r-project.org/src/contrib/Cubist_0.0.19.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/Cubist" version('0.0.19', 'bf9364f655536ec03717fd2ad6223a47') diff --git a/var/spack/repos/builtin/packages/r-curl/package.py b/var/spack/repos/builtin/packages/r-curl/package.py index ae9ccf3f5e8..076872acc78 100644 --- a/var/spack/repos/builtin/packages/r-curl/package.py +++ b/var/spack/repos/builtin/packages/r-curl/package.py @@ -38,7 +38,6 @@ class RCurl(RPackage): homepage = "https://github.com/jeroenooms/curl" url = "https://cran.r-project.org/src/contrib/curl_2.3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/curl" version('2.3', '7250ee8caed98ba76906ab4d32da60f8') version('1.0', '93d34926d6071e1fba7e728b482f0dd9') diff --git a/var/spack/repos/builtin/packages/r-data-table/package.py b/var/spack/repos/builtin/packages/r-data-table/package.py index 4381d1e0f88..c6f45ba5bf0 100644 --- a/var/spack/repos/builtin/packages/r-data-table/package.py +++ b/var/spack/repos/builtin/packages/r-data-table/package.py @@ -33,7 +33,6 @@ class RDataTable(RPackage): homepage = "https://github.com/Rdatatable/data.table/wiki" url = "https://cran.r-project.org/src/contrib/data.table_1.10.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/data.table" version('1.10.0', 'f0e08dd5ba1b3f46c59dd1574fe497c1') version('1.9.6', 'b1c0c7cce490bdf42ab288541cc55372') diff --git a/var/spack/repos/builtin/packages/r-dbi/package.py b/var/spack/repos/builtin/packages/r-dbi/package.py index f00100bdf04..256d638812c 100644 --- a/var/spack/repos/builtin/packages/r-dbi/package.py +++ b/var/spack/repos/builtin/packages/r-dbi/package.py @@ -32,6 +32,5 @@ class RDbi(RPackage): homepage = "https://github.com/rstats-db/DBI" url = "https://cran.r-project.org/src/contrib/DBI_0.4-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/DBI" version('0.4-1', 'c7ee8f1c5037c2284e99c62698d0f087') diff --git a/var/spack/repos/builtin/packages/r-deldir/package.py b/var/spack/repos/builtin/packages/r-deldir/package.py index 4a08be58bbd..3e3d556a179 100644 --- a/var/spack/repos/builtin/packages/r-deldir/package.py +++ b/var/spack/repos/builtin/packages/r-deldir/package.py @@ -34,7 +34,6 @@ class RDeldir(RPackage): homepage = "https://CRAN.R-project.org/package=deldir" url = "https://cran.r-project.org/src/contrib/deldir_0.1-14.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/deldir" version('0.1-14', '6a22b13d962615cd9d51b6eae403409f') diff --git a/var/spack/repos/builtin/packages/r-dendextend/package.py b/var/spack/repos/builtin/packages/r-dendextend/package.py index 3bde46b6f01..c30491ef67f 100644 --- a/var/spack/repos/builtin/packages/r-dendextend/package.py +++ b/var/spack/repos/builtin/packages/r-dendextend/package.py @@ -30,7 +30,6 @@ class RDendextend(RPackage): homepage = "https://CRAN.R-project.org/package=dendextend" url = "https://cran.r-project.org/src/contrib/dendextend_1.5.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/dendextend" version('1.5.2', '1134869d94005727c63cf3037e2f1bbf') diff --git a/var/spack/repos/builtin/packages/r-deoptim/package.py b/var/spack/repos/builtin/packages/r-deoptim/package.py index 5334953d464..521c5e7a4b7 100644 --- a/var/spack/repos/builtin/packages/r-deoptim/package.py +++ b/var/spack/repos/builtin/packages/r-deoptim/package.py @@ -32,6 +32,5 @@ class RDeoptim(RPackage): homepage = "https://cran.r-project.org/package=DEoptim" url = "https://cran.r-project.org/src/contrib/DEoptim_2.2-3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/DEoptim" version('2.2-3', 'ed406e6790f8f1568aa9bec159f80326') diff --git a/var/spack/repos/builtin/packages/r-devtools/package.py b/var/spack/repos/builtin/packages/r-devtools/package.py index c994f557c81..f5e395c7159 100644 --- a/var/spack/repos/builtin/packages/r-devtools/package.py +++ b/var/spack/repos/builtin/packages/r-devtools/package.py @@ -30,7 +30,6 @@ class RDevtools(RPackage): homepage = "https://github.com/hadley/devtools" url = "https://cran.r-project.org/src/contrib/devtools_1.12.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/devtools" version('1.12.0', '73b46c446273566e5b21c9f5f72aeca3') version('1.11.1', '242672ee27d24dddcbdaac88c586b6c2') diff --git a/var/spack/repos/builtin/packages/r-diagrammer/package.py b/var/spack/repos/builtin/packages/r-diagrammer/package.py index 5f8e27a1027..8db0ab37367 100644 --- a/var/spack/repos/builtin/packages/r-diagrammer/package.py +++ b/var/spack/repos/builtin/packages/r-diagrammer/package.py @@ -30,7 +30,6 @@ class RDiagrammer(RPackage): homepage = "https://github.com/rich-iannone/DiagrammeR" url = "https://cran.r-project.org/src/contrib/DiagrammeR_0.8.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/DiagrammeR" version('0.8.4', '9ee295c744f5d4ba9a84289ca7bdaf1a') diff --git a/var/spack/repos/builtin/packages/r-dichromat/package.py b/var/spack/repos/builtin/packages/r-dichromat/package.py index ea465e2d6cc..57942674f24 100644 --- a/var/spack/repos/builtin/packages/r-dichromat/package.py +++ b/var/spack/repos/builtin/packages/r-dichromat/package.py @@ -31,6 +31,5 @@ class RDichromat(RPackage): homepage = "https://cran.r-project.org/web/packages/dichromat/index.html" url = "https://cran.r-project.org/src/contrib/dichromat_2.0-0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/dichromat" version('2.0-0', '84e194ac95a69763d740947a7ee346a6') diff --git a/var/spack/repos/builtin/packages/r-digest/package.py b/var/spack/repos/builtin/packages/r-digest/package.py index 08f5af0aca3..8919af2f5a5 100644 --- a/var/spack/repos/builtin/packages/r-digest/package.py +++ b/var/spack/repos/builtin/packages/r-digest/package.py @@ -45,7 +45,6 @@ class RDigest(RPackage): homepage = "http://dirk.eddelbuettel.com/code/digest.html" url = "https://cran.r-project.org/src/contrib/digest_0.6.12.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/digest" version('0.6.12', '738efd4d9a37c5a4001ae66e954ce07e') version('0.6.11', '52a864f55846b48b3cab0b5d0304a82a') diff --git a/var/spack/repos/builtin/packages/r-diptest/package.py b/var/spack/repos/builtin/packages/r-diptest/package.py index f9ce2dd7946..e64a490710c 100644 --- a/var/spack/repos/builtin/packages/r-diptest/package.py +++ b/var/spack/repos/builtin/packages/r-diptest/package.py @@ -30,6 +30,5 @@ class RDiptest(RPackage): homepage = "https://CRAN.R-project.org/package=diptest" url = "https://cran.r-project.org/src/contrib/diptest_0.75-7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/diptest" version('0.75-7', '1a4a958fda763f7c99cb485dbe5954ab') diff --git a/var/spack/repos/builtin/packages/r-domc/package.py b/var/spack/repos/builtin/packages/r-domc/package.py index 1a44aa537d7..163004f4a52 100644 --- a/var/spack/repos/builtin/packages/r-domc/package.py +++ b/var/spack/repos/builtin/packages/r-domc/package.py @@ -31,7 +31,6 @@ class RDomc(RPackage): homepage = "https://cran.r-project.org/package=doMC" url = "https://cran.r-project.org/src/contrib/doMC_1.3.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/doMC" version('1.3.4', 'f965b09add9056e84f99a831dc3af7d1') diff --git a/var/spack/repos/builtin/packages/r-doparallel/package.py b/var/spack/repos/builtin/packages/r-doparallel/package.py index fa039568c6b..04d9bd06a7c 100644 --- a/var/spack/repos/builtin/packages/r-doparallel/package.py +++ b/var/spack/repos/builtin/packages/r-doparallel/package.py @@ -31,7 +31,6 @@ class RDoparallel(RPackage): homepage = "https://cran.r-project.org/web/packages/doParallel/index.html" url = "https://cran.r-project.org/src/contrib/doParallel_1.0.10.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/doParallel" version('1.0.10', 'd9fbde8f315d98d055483ee3493c9b43') diff --git a/var/spack/repos/builtin/packages/r-dplyr/package.py b/var/spack/repos/builtin/packages/r-dplyr/package.py index 6ffa48adc80..682753cc63f 100644 --- a/var/spack/repos/builtin/packages/r-dplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dplyr/package.py @@ -31,7 +31,6 @@ class RDplyr(RPackage): homepage = "https://github.com/hadley/dplyr" url = "https://cran.r-project.org/src/contrib/dplyr_0.5.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/dplyr" version('0.5.0', '1fcafcacca70806eea2e6d465cdb94ef') diff --git a/var/spack/repos/builtin/packages/r-dt/package.py b/var/spack/repos/builtin/packages/r-dt/package.py index ae92f5fd24a..85e6fee8374 100644 --- a/var/spack/repos/builtin/packages/r-dt/package.py +++ b/var/spack/repos/builtin/packages/r-dt/package.py @@ -33,7 +33,6 @@ class RDt(RPackage): homepage = "http://rstudio.github.io/DT" url = "https://cran.r-project.org/src/contrib/DT_0.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/DT/" version('0.1', '5c8df984921fa484784ec4b8a4fb6f3c') diff --git a/var/spack/repos/builtin/packages/r-dygraphs/package.py b/var/spack/repos/builtin/packages/r-dygraphs/package.py index 323fb6d584b..d9e66d86f72 100644 --- a/var/spack/repos/builtin/packages/r-dygraphs/package.py +++ b/var/spack/repos/builtin/packages/r-dygraphs/package.py @@ -34,7 +34,6 @@ class RDygraphs(RPackage): homepage = "https://cran.r-project.org/web/packages/dygraphs/index.html" url = "https://cran.r-project.org/src/contrib/dygraphs_0.9.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/dygraphs" version('0.9', '7f0ce4312bcd3f0a58b8c03b2772f833') diff --git a/var/spack/repos/builtin/packages/r-e1071/package.py b/var/spack/repos/builtin/packages/r-e1071/package.py index 4d79fcccd72..545909bf28e 100644 --- a/var/spack/repos/builtin/packages/r-e1071/package.py +++ b/var/spack/repos/builtin/packages/r-e1071/package.py @@ -32,7 +32,6 @@ class RE1071(RPackage): homepage = "https://cran.r-project.org/package=e1071" url = "https://cran.r-project.org/src/contrib/e1071_1.6-7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/e1071" version('1.6-7', 'd109a7e3dd0c905d420e327a9a921f5a') diff --git a/var/spack/repos/builtin/packages/r-ellipse/package.py b/var/spack/repos/builtin/packages/r-ellipse/package.py index 1f6144285e9..e106a4322d5 100644 --- a/var/spack/repos/builtin/packages/r-ellipse/package.py +++ b/var/spack/repos/builtin/packages/r-ellipse/package.py @@ -31,7 +31,6 @@ class REllipse(RPackage): homepage = "https://cran.r-project.org/package=ellipse" url = "https://cran.r-project.org/src/contrib/ellipse_0.3-8.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ellipse" version('0.3-8', '385f5ec5e49bcda4317ca9dffd33f771') diff --git a/var/spack/repos/builtin/packages/r-ergm/package.py b/var/spack/repos/builtin/packages/r-ergm/package.py index 72663cc1f8e..06e3a0379a2 100644 --- a/var/spack/repos/builtin/packages/r-ergm/package.py +++ b/var/spack/repos/builtin/packages/r-ergm/package.py @@ -32,7 +32,6 @@ class RErgm(RPackage): homepage = "http://statnet.org" url = "https://cran.r-project.org/src/contrib/ergm_3.7.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ergm" version('3.7.1', '431ae430c76b2408988f469831d80126') diff --git a/var/spack/repos/builtin/packages/r-evaluate/package.py b/var/spack/repos/builtin/packages/r-evaluate/package.py index 004048e9857..ba0a9d5d159 100644 --- a/var/spack/repos/builtin/packages/r-evaluate/package.py +++ b/var/spack/repos/builtin/packages/r-evaluate/package.py @@ -33,7 +33,6 @@ class REvaluate(RPackage): homepage = "https://github.com/hadley/evaluate" url = "https://cran.rstudio.com/src/contrib/evaluate_0.9.tar.gz" - list_url = "https://cran.rstudio.com/src/contrib/Archive/evaluate" version('0.10', 'c49326babf984a8b36e7e276da370ad2') version('0.9', '877d89ce8a9ef7f403b1089ca1021775') diff --git a/var/spack/repos/builtin/packages/r-expm/package.py b/var/spack/repos/builtin/packages/r-expm/package.py index ba129a30714..e2ad5794415 100644 --- a/var/spack/repos/builtin/packages/r-expm/package.py +++ b/var/spack/repos/builtin/packages/r-expm/package.py @@ -31,6 +31,5 @@ class RExpm(RPackage): homepage = "http://R-Forge.R-project.org/projects/expm" url = "https://cran.r-project.org/src/contrib/expm_0.999-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/expm" version('0.999-2', 'e05fa3f995754af92bd03227625da984') diff --git a/var/spack/repos/builtin/packages/r-factoextra/package.py b/var/spack/repos/builtin/packages/r-factoextra/package.py index 44b39e73268..00052e61a5c 100644 --- a/var/spack/repos/builtin/packages/r-factoextra/package.py +++ b/var/spack/repos/builtin/packages/r-factoextra/package.py @@ -31,7 +31,6 @@ class RFactoextra(RPackage): homepage = "http://www.sthda.com/english/rpkgs/factoextra" url = "https://cran.r-project.org/src/contrib/factoextra_1.0.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/factoextra" version('1.0.4', 'aa4c81ca610f17fdee0c9f3379e35429') diff --git a/var/spack/repos/builtin/packages/r-factominer/package.py b/var/spack/repos/builtin/packages/r-factominer/package.py index 909e6871bf4..078caf42802 100644 --- a/var/spack/repos/builtin/packages/r-factominer/package.py +++ b/var/spack/repos/builtin/packages/r-factominer/package.py @@ -30,7 +30,6 @@ class RFactominer(RPackage): homepage = "http://factominer.free.fr" url = "https://cran.r-project.org/src/contrib/FactoMineR_1.35.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/FactoMineR" version('1.35', 'bef076181ce942016114dd7a6f5c2348') diff --git a/var/spack/repos/builtin/packages/r-filehash/package.py b/var/spack/repos/builtin/packages/r-filehash/package.py index b17335ed114..9f67ecad37a 100644 --- a/var/spack/repos/builtin/packages/r-filehash/package.py +++ b/var/spack/repos/builtin/packages/r-filehash/package.py @@ -38,6 +38,5 @@ class RFilehash(RPackage): homepage = 'https://cran.r-project.org/' url = "https://cran.r-project.org/src/contrib/filehash_2.3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/filehash" version('2.3', '01fffafe09b148ccadc9814c103bdc2f') diff --git a/var/spack/repos/builtin/packages/r-flashclust/package.py b/var/spack/repos/builtin/packages/r-flashclust/package.py index e8ea8c76e4e..a5adeb5016e 100644 --- a/var/spack/repos/builtin/packages/r-flashclust/package.py +++ b/var/spack/repos/builtin/packages/r-flashclust/package.py @@ -30,7 +30,6 @@ class RFlashclust(RPackage): homepage = "https://CRAN.R-project.org/package=flashClust" url = "https://cran.r-project.org/src/contrib/flashClust_1.01-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/flashClust" version('1.01-2', '23409aeeef98bf35d0b3d5dd755fdeff') diff --git a/var/spack/repos/builtin/packages/r-flexmix/package.py b/var/spack/repos/builtin/packages/r-flexmix/package.py index ebaed1ebd87..715a7107437 100644 --- a/var/spack/repos/builtin/packages/r-flexmix/package.py +++ b/var/spack/repos/builtin/packages/r-flexmix/package.py @@ -30,7 +30,6 @@ class RFlexmix(RPackage): homepage = "https://CRAN.R-project.org/package=flexmix" url = "https://cran.r-project.org/src/contrib/flexmix_2.3-14.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/flexmix" version('2.3-14', '5be4f7764e6a697f4586e60c2bf6e960') diff --git a/var/spack/repos/builtin/packages/r-foreach/package.py b/var/spack/repos/builtin/packages/r-foreach/package.py index 78efe021886..527cd5a1102 100644 --- a/var/spack/repos/builtin/packages/r-foreach/package.py +++ b/var/spack/repos/builtin/packages/r-foreach/package.py @@ -36,7 +36,6 @@ class RForeach(RPackage): homepage = "https://cran.r-project.org/web/packages/foreach/index.html" url = "https://cran.r-project.org/src/contrib/foreach_1.4.3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/foreach" version('1.4.3', 'ef45768126661b259f9b8994462c49a0') diff --git a/var/spack/repos/builtin/packages/r-foreign/package.py b/var/spack/repos/builtin/packages/r-foreign/package.py index b293f091c29..a3549068dcb 100644 --- a/var/spack/repos/builtin/packages/r-foreign/package.py +++ b/var/spack/repos/builtin/packages/r-foreign/package.py @@ -32,6 +32,5 @@ class RForeign(RPackage): homepage = "https://cran.r-project.org/web/packages/foreign/index.html" url = "https://cran.r-project.org/src/contrib/foreign_0.8-66.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/foreign" version('0.8-66', 'ff12190f4631dca31e30ca786c2c8f62') diff --git a/var/spack/repos/builtin/packages/r-formatr/package.py b/var/spack/repos/builtin/packages/r-formatr/package.py index 011111af07b..814e83ffac9 100644 --- a/var/spack/repos/builtin/packages/r-formatr/package.py +++ b/var/spack/repos/builtin/packages/r-formatr/package.py @@ -35,7 +35,6 @@ class RFormatr(RPackage): homepage = "http://yihui.name/formatR" url = "https://cran.r-project.org/src/contrib/formatR_1.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/formatR" version('1.4', '98b9b64b2785b35f9df403e1aab6c73c') diff --git a/var/spack/repos/builtin/packages/r-formula/package.py b/var/spack/repos/builtin/packages/r-formula/package.py index 5515ca91a3c..2381f5a115d 100644 --- a/var/spack/repos/builtin/packages/r-formula/package.py +++ b/var/spack/repos/builtin/packages/r-formula/package.py @@ -32,6 +32,5 @@ class RFormula(RPackage): homepage = "https://cran.r-project.org/package=Formula" url = "https://cran.r-project.org/src/contrib/Formula_1.2-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/Formula" version('1.2-1', '2afb31e637cecd0c1106317aca1e4849') diff --git a/var/spack/repos/builtin/packages/r-fpc/package.py b/var/spack/repos/builtin/packages/r-fpc/package.py index 8a50a984f4c..675e3b7c962 100644 --- a/var/spack/repos/builtin/packages/r-fpc/package.py +++ b/var/spack/repos/builtin/packages/r-fpc/package.py @@ -30,7 +30,6 @@ class RFpc(RPackage): homepage = "http://www.homepages.ucl.ac.uk/~ucakche" url = "https://cran.r-project.org/src/contrib/fpc_2.1-10.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/fpc" version('2.1-10', '75e5340e416cd13d7751e06f1c07866b') diff --git a/var/spack/repos/builtin/packages/r-gdata/package.py b/var/spack/repos/builtin/packages/r-gdata/package.py index ef001699bb4..b68a8b91c24 100644 --- a/var/spack/repos/builtin/packages/r-gdata/package.py +++ b/var/spack/repos/builtin/packages/r-gdata/package.py @@ -46,7 +46,6 @@ class RGdata(RPackage): homepage = "https://cran.r-project.org/package=gdata" url = "https://cran.r-project.org/src/contrib/gdata_2.17.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/gdata" version('2.17.0', 'c716b663b9dc16ad8cafe6acc781a75f') diff --git a/var/spack/repos/builtin/packages/r-geosphere/package.py b/var/spack/repos/builtin/packages/r-geosphere/package.py index d90594a3e0c..93f56a2873c 100644 --- a/var/spack/repos/builtin/packages/r-geosphere/package.py +++ b/var/spack/repos/builtin/packages/r-geosphere/package.py @@ -32,7 +32,6 @@ class RGeosphere(RPackage): homepage = "https://cran.r-project.org/package=geosphere" url = "https://cran.r-project.org/src/contrib/geosphere_1.5-5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/geosphere" version('1.5-5', '28efb7a8e266c7f076cdbcf642455f3e') diff --git a/var/spack/repos/builtin/packages/r-ggmap/package.py b/var/spack/repos/builtin/packages/r-ggmap/package.py index 65a69553a10..40b81aef31e 100644 --- a/var/spack/repos/builtin/packages/r-ggmap/package.py +++ b/var/spack/repos/builtin/packages/r-ggmap/package.py @@ -33,7 +33,6 @@ class RGgmap(RPackage): homepage = "https://github.com/dkahle/ggmap" url = "https://cran.r-project.org/src/contrib/ggmap_2.6.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ggmap" version('2.6.1', '25ad414a3a1c6d59a227a9f22601211a') diff --git a/var/spack/repos/builtin/packages/r-ggplot2/package.py b/var/spack/repos/builtin/packages/r-ggplot2/package.py index e5c80e4b799..da514768fcf 100644 --- a/var/spack/repos/builtin/packages/r-ggplot2/package.py +++ b/var/spack/repos/builtin/packages/r-ggplot2/package.py @@ -36,7 +36,6 @@ class RGgplot2(RPackage): homepage = "http://ggplot2.org/" url = "https://cran.r-project.org/src/contrib/ggplot2_2.2.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ggplot2" version('2.2.1', '14c5a3507bc123c6e7e9ad3bef7cee5c') version('2.1.0', '771928cfb97c649c720423deb3ec7fd3') diff --git a/var/spack/repos/builtin/packages/r-ggpubr/package.py b/var/spack/repos/builtin/packages/r-ggpubr/package.py index 52184b73070..538a0f5d33e 100644 --- a/var/spack/repos/builtin/packages/r-ggpubr/package.py +++ b/var/spack/repos/builtin/packages/r-ggpubr/package.py @@ -30,7 +30,6 @@ class RGgpubr(RPackage): homepage = "http://www.sthda.com/english/rpkgs/ggpubr" url = "https://cran.r-project.org/src/contrib/ggpubr_0.1.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ggpubr" version('0.1.2', '42a5749ae44121597ef511a7424429d1') diff --git a/var/spack/repos/builtin/packages/r-ggrepel/package.py b/var/spack/repos/builtin/packages/r-ggrepel/package.py index c1547655c0c..8bda46f3980 100644 --- a/var/spack/repos/builtin/packages/r-ggrepel/package.py +++ b/var/spack/repos/builtin/packages/r-ggrepel/package.py @@ -30,7 +30,6 @@ class RGgrepel(RPackage): homepage = "http://github.com/slowkow/ggrepel" url = "https://cran.r-project.org/src/contrib/ggrepel_0.6.5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ggrepel" version('0.6.5', '7e2732cd4840efe2dc9e4bc689cf1ee5') diff --git a/var/spack/repos/builtin/packages/r-ggsci/package.py b/var/spack/repos/builtin/packages/r-ggsci/package.py index fb811ff2fe5..53726771638 100644 --- a/var/spack/repos/builtin/packages/r-ggsci/package.py +++ b/var/spack/repos/builtin/packages/r-ggsci/package.py @@ -31,7 +31,6 @@ class RGgsci(RPackage): homepage = "https://github.com/road2stat/ggsci" url = "https://cran.r-project.org/src/contrib/ggsci_2.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ggsci" version('2.4', '8e5dc2fcf84352cacbb91363e26c7175') diff --git a/var/spack/repos/builtin/packages/r-ggvis/package.py b/var/spack/repos/builtin/packages/r-ggvis/package.py index 5acbff04b08..14d65a02238 100644 --- a/var/spack/repos/builtin/packages/r-ggvis/package.py +++ b/var/spack/repos/builtin/packages/r-ggvis/package.py @@ -32,7 +32,6 @@ class RGgvis(RPackage): homepage = "http://ggvis.rstudio.com/" url = "https://cran.r-project.org/src/contrib/ggvis_0.4.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ggvis" version('0.4.2', '039f45e5c7f1e0652779163d7d99f922') diff --git a/var/spack/repos/builtin/packages/r-gistr/package.py b/var/spack/repos/builtin/packages/r-gistr/package.py index 67c34cfffc5..644d6f12d0a 100644 --- a/var/spack/repos/builtin/packages/r-gistr/package.py +++ b/var/spack/repos/builtin/packages/r-gistr/package.py @@ -36,7 +36,6 @@ class RGistr(RPackage): homepage = "https://github.com/ropensci/gistr" url = "https://cran.r-project.org/src/contrib/gistr_0.3.6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/gistr" version('0.3.6', '49d548cb3eca0e66711aece37757a2c0') diff --git a/var/spack/repos/builtin/packages/r-git2r/package.py b/var/spack/repos/builtin/packages/r-git2r/package.py index a0df2d9b230..2bfb2eee79e 100644 --- a/var/spack/repos/builtin/packages/r-git2r/package.py +++ b/var/spack/repos/builtin/packages/r-git2r/package.py @@ -32,7 +32,6 @@ class RGit2r(RPackage): homepage = "https://github.com/ropensci/git2r" url = "https://cran.r-project.org/src/contrib/git2r_0.18.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/git2r" version('0.18.0', 'fb5741eb490c3d6e23a751a72336f24d') version('0.15.0', '57658b3298f9b9aadc0dd77b4ef6a1e1') diff --git a/var/spack/repos/builtin/packages/r-glmnet/package.py b/var/spack/repos/builtin/packages/r-glmnet/package.py index ac44d42c121..6922fc2aaa1 100644 --- a/var/spack/repos/builtin/packages/r-glmnet/package.py +++ b/var/spack/repos/builtin/packages/r-glmnet/package.py @@ -35,7 +35,6 @@ class RGlmnet(RPackage): homepage = "http://www.jstatsoft.org/v33/i01/" url = "https://cran.r-project.org/src/contrib/glmnet_2.0-5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/glmnet" version('2.0-5', '049b18caa29529614cd684db3beaec2a') diff --git a/var/spack/repos/builtin/packages/r-gmodels/package.py b/var/spack/repos/builtin/packages/r-gmodels/package.py index 2afb9273ceb..44fcfe0ee99 100644 --- a/var/spack/repos/builtin/packages/r-gmodels/package.py +++ b/var/spack/repos/builtin/packages/r-gmodels/package.py @@ -30,7 +30,6 @@ class RGmodels(RPackage): homepage = "http://www.sf.net/projects/r-gregmisc" url = "https://cran.r-project.org/src/contrib/gmodels_2.16.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/gmodels" version('2.16.2', 'f13e5feb2a8b9f0cd47fdf25ddc74228') diff --git a/var/spack/repos/builtin/packages/r-gmp/package.py b/var/spack/repos/builtin/packages/r-gmp/package.py index 13b890220d6..89194084733 100644 --- a/var/spack/repos/builtin/packages/r-gmp/package.py +++ b/var/spack/repos/builtin/packages/r-gmp/package.py @@ -32,7 +32,6 @@ class RGmp(RPackage): homepage = "http://mulcyber.toulouse.inra.fr/projects/gmp" url = "https://cran.r-project.org/src/contrib/gmp_0.5-13.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/gmp" version('0.5-13.1', '4a45d45e53bf7140720bd44f10b075ed') diff --git a/var/spack/repos/builtin/packages/r-googlevis/package.py b/var/spack/repos/builtin/packages/r-googlevis/package.py index 29916965b45..2d090025cca 100644 --- a/var/spack/repos/builtin/packages/r-googlevis/package.py +++ b/var/spack/repos/builtin/packages/r-googlevis/package.py @@ -34,7 +34,6 @@ class RGooglevis(RPackage): homepage = "https://github.com/mages/googleVis#googlevis" url = "https://cran.r-project.org/src/contrib/googleVis_0.6.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/googleVis" version('0.6.0', 'ec36fd2a6884ddc7baa894007d0d0468') diff --git a/var/spack/repos/builtin/packages/r-gridbase/package.py b/var/spack/repos/builtin/packages/r-gridbase/package.py index 73d87c7e49a..829a394d33c 100644 --- a/var/spack/repos/builtin/packages/r-gridbase/package.py +++ b/var/spack/repos/builtin/packages/r-gridbase/package.py @@ -30,6 +30,5 @@ class RGridbase(RPackage): homepage = "https://cran.r-project.org/web/packages/gridBase/index.html" url = "https://cran.r-project.org/src/contrib/gridBase_0.4-7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/gridBase" version('0.4-7', '6d5064a85f5c966a92ee468ae44c5f1f') diff --git a/var/spack/repos/builtin/packages/r-gridextra/package.py b/var/spack/repos/builtin/packages/r-gridextra/package.py index 304035dc066..790e7254ee6 100644 --- a/var/spack/repos/builtin/packages/r-gridextra/package.py +++ b/var/spack/repos/builtin/packages/r-gridextra/package.py @@ -31,7 +31,6 @@ class RGridextra(RPackage): homepage = "https://github.com/baptiste/gridextra" url = "https://cran.r-project.org/src/contrib/gridExtra_2.2.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/gridExtra" version('2.2.1', '7076c2122d387c7ef3add69a1c4fc1b2') diff --git a/var/spack/repos/builtin/packages/r-gtable/package.py b/var/spack/repos/builtin/packages/r-gtable/package.py index 236416755b4..d47ec281a9e 100644 --- a/var/spack/repos/builtin/packages/r-gtable/package.py +++ b/var/spack/repos/builtin/packages/r-gtable/package.py @@ -30,6 +30,5 @@ class RGtable(RPackage): homepage = "https://cran.r-project.org/web/packages/gtable/index.html" url = "https://cran.r-project.org/src/contrib/gtable_0.2.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/gtable" version('0.2.0', '124090ae40b2dd3170ae11180e0d4cab') diff --git a/var/spack/repos/builtin/packages/r-gtools/package.py b/var/spack/repos/builtin/packages/r-gtools/package.py index 632187b49e1..df047b6c941 100644 --- a/var/spack/repos/builtin/packages/r-gtools/package.py +++ b/var/spack/repos/builtin/packages/r-gtools/package.py @@ -49,6 +49,5 @@ class RGtools(RPackage): homepage = "https://cran.r-project.org/package=gtools" url = "https://cran.r-project.org/src/contrib/gtools_3.5.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/gtools" version('3.5.0', '45f8800c0336d35046641fbacc56bdbb') diff --git a/var/spack/repos/builtin/packages/r-hexbin/package.py b/var/spack/repos/builtin/packages/r-hexbin/package.py index 0a5c66c1a37..21ae867da22 100644 --- a/var/spack/repos/builtin/packages/r-hexbin/package.py +++ b/var/spack/repos/builtin/packages/r-hexbin/package.py @@ -32,7 +32,6 @@ class RHexbin(RPackage): homepage = "http://github.com/edzer/hexbin" url = "https://cran.r-project.org/src/contrib/hexbin_1.27.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/hexbin" version('1.27.1', '7f380390c6511e97df10a810a3b3bb7c') diff --git a/var/spack/repos/builtin/packages/r-highr/package.py b/var/spack/repos/builtin/packages/r-highr/package.py index 13164f9c605..616bab728b5 100644 --- a/var/spack/repos/builtin/packages/r-highr/package.py +++ b/var/spack/repos/builtin/packages/r-highr/package.py @@ -33,6 +33,5 @@ class RHighr(RPackage): homepage = "https://github.com/yihui/highr" url = "https://cran.r-project.org/src/contrib/highr_0.6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/highr" version('0.6', 'bf47388c5f57dc61962362fb7e1d8b16') diff --git a/var/spack/repos/builtin/packages/r-htmltools/package.py b/var/spack/repos/builtin/packages/r-htmltools/package.py index 9374e1f9cc7..e6c5294c186 100644 --- a/var/spack/repos/builtin/packages/r-htmltools/package.py +++ b/var/spack/repos/builtin/packages/r-htmltools/package.py @@ -30,7 +30,6 @@ class RHtmltools(RPackage): homepage = "https://github.com/rstudio/htmltools" url = "https://cran.r-project.org/src/contrib/htmltools_0.3.5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/htmltools" version('0.3.5', '5f001aff4a39e329f7342dcec5139724') diff --git a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py index 85ab593245c..ad08721f657 100644 --- a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py +++ b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py @@ -32,7 +32,6 @@ class RHtmlwidgets(RPackage): homepage = "https://github.com/ramnathv/htmlwidgets" url = "https://cran.r-project.org/src/contrib/htmlwidgets_0.6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/htmlwidgets" version('0.6', '7fa522d2eda97593978021bda9670c0e') diff --git a/var/spack/repos/builtin/packages/r-httpuv/package.py b/var/spack/repos/builtin/packages/r-httpuv/package.py index a81e3c3fb18..aa8b7743831 100644 --- a/var/spack/repos/builtin/packages/r-httpuv/package.py +++ b/var/spack/repos/builtin/packages/r-httpuv/package.py @@ -36,7 +36,6 @@ class RHttpuv(RPackage): homepage = "https://github.com/rstudio/httpuv" url = "https://cran.r-project.org/src/contrib/httpuv_1.3.3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/httpuv" version('1.3.3', 'c78ae068cf59e949b9791be987bb4489') diff --git a/var/spack/repos/builtin/packages/r-httr/package.py b/var/spack/repos/builtin/packages/r-httr/package.py index b27bee4fbbe..ec01bc0c662 100644 --- a/var/spack/repos/builtin/packages/r-httr/package.py +++ b/var/spack/repos/builtin/packages/r-httr/package.py @@ -32,7 +32,6 @@ class RHttr(RPackage): homepage = "https://github.com/hadley/httr" url = "https://cran.r-project.org/src/contrib/httr_1.2.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/httr" version('1.2.1', 'c469948dedac9ab3926f23cf484b33d9') version('1.1.0', '5ffbbc5c2529e49f00aaa521a2b35600') diff --git a/var/spack/repos/builtin/packages/r-igraph/package.py b/var/spack/repos/builtin/packages/r-igraph/package.py index 993a80ae1c4..77bda4a3a08 100644 --- a/var/spack/repos/builtin/packages/r-igraph/package.py +++ b/var/spack/repos/builtin/packages/r-igraph/package.py @@ -32,7 +32,6 @@ class RIgraph(RPackage): homepage = "http://igraph.org/" url = "https://cran.r-project.org/src/contrib/igraph_1.0.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/igraph" version('1.0.1', 'ea33495e49adf4a331e4ba60ba559065') diff --git a/var/spack/repos/builtin/packages/r-inline/package.py b/var/spack/repos/builtin/packages/r-inline/package.py index f30c87dc9b3..9040d0fbccd 100644 --- a/var/spack/repos/builtin/packages/r-inline/package.py +++ b/var/spack/repos/builtin/packages/r-inline/package.py @@ -32,6 +32,5 @@ class RInline(RPackage): homepage = "https://cran.r-project.org/web/packages/inline/index.html" url = "https://cran.r-project.org/src/contrib/inline_0.3.14.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/inline" version('0.3.14', '9fe304a6ebf0e3889c4c6a7ad1c50bca') diff --git a/var/spack/repos/builtin/packages/r-ipred/package.py b/var/spack/repos/builtin/packages/r-ipred/package.py index 37accb6ee28..f504528c677 100644 --- a/var/spack/repos/builtin/packages/r-ipred/package.py +++ b/var/spack/repos/builtin/packages/r-ipred/package.py @@ -32,7 +32,6 @@ class RIpred(RPackage): homepage = "https://cran.r-project.org/package=ipred" url = "https://cran.r-project.org/src/contrib/ipred_0.9-5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ipred" version('0.9-5', 'ce8768547a7aa9554ad3650b18ea3cbd') diff --git a/var/spack/repos/builtin/packages/r-irlba/package.py b/var/spack/repos/builtin/packages/r-irlba/package.py index ad383492ff2..4ed3fe5b390 100644 --- a/var/spack/repos/builtin/packages/r-irlba/package.py +++ b/var/spack/repos/builtin/packages/r-irlba/package.py @@ -32,7 +32,6 @@ class RIrlba(RPackage): homepage = "https://cran.r-project.org/web/packages/irlba/index.html" url = "https://cran.r-project.org/src/contrib/irlba_2.1.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/irlba" version('2.1.2', '290940abf6662ed10c0c5a8db1bc6e88') version('2.0.0', '557674cf8b68fea5b9f231058c324d26') diff --git a/var/spack/repos/builtin/packages/r-iterators/package.py b/var/spack/repos/builtin/packages/r-iterators/package.py index 38dff8f9ac7..bc9a8c67268 100644 --- a/var/spack/repos/builtin/packages/r-iterators/package.py +++ b/var/spack/repos/builtin/packages/r-iterators/package.py @@ -31,6 +31,5 @@ class RIterators(RPackage): homepage = "https://cran.r-project.org/web/packages/iterators/index.html" url = "https://cran.r-project.org/src/contrib/iterators_1.0.8.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/iterators" version('1.0.8', '2ded7f82cddd8174f1ec98607946c6ee') diff --git a/var/spack/repos/builtin/packages/r-jpeg/package.py b/var/spack/repos/builtin/packages/r-jpeg/package.py index 02c42b5ff12..643b510f056 100644 --- a/var/spack/repos/builtin/packages/r-jpeg/package.py +++ b/var/spack/repos/builtin/packages/r-jpeg/package.py @@ -32,7 +32,6 @@ class RJpeg(RPackage): homepage = "http://www.rforge.net/jpeg/" url = "https://cran.r-project.org/src/contrib/jpeg_0.1-8.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/jpeg" version('0.1-8', '696007451d14395b1ed1d0e9af667a57') diff --git a/var/spack/repos/builtin/packages/r-jsonlite/package.py b/var/spack/repos/builtin/packages/r-jsonlite/package.py index 4a690d475a6..34c0c88c87b 100644 --- a/var/spack/repos/builtin/packages/r-jsonlite/package.py +++ b/var/spack/repos/builtin/packages/r-jsonlite/package.py @@ -39,7 +39,6 @@ class RJsonlite(RPackage): homepage = "https://github.com/jeroenooms/jsonlite" url = "https://cran.r-project.org/src/contrib/jsonlite_1.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/jsonlite" version('1.2', '80cd2678ae77254be470f5931db71c51') version('1.0', 'c8524e086de22ab39b8ac8000220cc87') diff --git a/var/spack/repos/builtin/packages/r-kernlab/package.py b/var/spack/repos/builtin/packages/r-kernlab/package.py index 67159297ab0..7d3079a2103 100644 --- a/var/spack/repos/builtin/packages/r-kernlab/package.py +++ b/var/spack/repos/builtin/packages/r-kernlab/package.py @@ -33,7 +33,6 @@ class RKernlab(RPackage): homepage = "https://cran.r-project.org/package=kernlab" url = "https://cran.r-project.org/src/contrib/kernlab_0.9-25.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/kernlab" version('0.9-25', '1182a2a336a79fd2cf70b4bc5a35353f') diff --git a/var/spack/repos/builtin/packages/r-kernsmooth/package.py b/var/spack/repos/builtin/packages/r-kernsmooth/package.py index 14e58072dc5..59479a5ef9d 100644 --- a/var/spack/repos/builtin/packages/r-kernsmooth/package.py +++ b/var/spack/repos/builtin/packages/r-kernsmooth/package.py @@ -30,7 +30,6 @@ class RKernsmooth(RPackage): homepage = "https://cran.r-project.org/package=KernSmooth" url = "https://cran.r-project.org/src/contrib/KernSmooth_2.23-15.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/KernSmooth" version('2.23-15', '746cdf26dec72004cf19978e87dcc982') diff --git a/var/spack/repos/builtin/packages/r-kknn/package.py b/var/spack/repos/builtin/packages/r-kknn/package.py index bd5d688b140..c12a359b142 100644 --- a/var/spack/repos/builtin/packages/r-kknn/package.py +++ b/var/spack/repos/builtin/packages/r-kknn/package.py @@ -31,7 +31,6 @@ class RKknn(RPackage): homepage = "https://cran.r-project.org/package=kknn" url = "https://cran.r-project.org/src/contrib/kknn_1.3.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/kknn" version('1.3.1', '372cd84f618cd5005f8c4c5721755117') diff --git a/var/spack/repos/builtin/packages/r-knitr/package.py b/var/spack/repos/builtin/packages/r-knitr/package.py index dd924749449..5d604252f8c 100644 --- a/var/spack/repos/builtin/packages/r-knitr/package.py +++ b/var/spack/repos/builtin/packages/r-knitr/package.py @@ -32,7 +32,6 @@ class RKnitr(RPackage): homepage = "http://yihui.name/knitr/" url = "https://cran.rstudio.com/src/contrib/knitr_1.14.tar.gz" - list_url = "https://cran.rstudio.com/src/contrib/Archive/knitr" version('1.14', 'ef0fbeaa9372f99ffbc57212a7781511') version('0.6', 'c67d6db84cd55594a9e870c90651a3db') diff --git a/var/spack/repos/builtin/packages/r-labeling/package.py b/var/spack/repos/builtin/packages/r-labeling/package.py index 7c288c63a40..41ac015977c 100644 --- a/var/spack/repos/builtin/packages/r-labeling/package.py +++ b/var/spack/repos/builtin/packages/r-labeling/package.py @@ -30,6 +30,5 @@ class RLabeling(RPackage): homepage = "https://cran.r-project.org/web/packages/labeling/index.html" url = "https://cran.r-project.org/src/contrib/labeling_0.3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/labeling" version('0.3', 'ccd7082ec0b211aba8a89d85176bb534') diff --git a/var/spack/repos/builtin/packages/r-laplacesdemon/package.py b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py index 1518b34bea6..c2755a49207 100644 --- a/var/spack/repos/builtin/packages/r-laplacesdemon/package.py +++ b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py @@ -32,6 +32,5 @@ class RLaplacesdemon(RPackage): homepage = "https://github.com/LaplacesDemonR/LaplacesDemon" url = "https://cran.r-project.org/src/contrib/LaplacesDemon_16.0.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/LaplacesDemon" version('16.0.1', '1e4dab2dd0e27251734d68b0bfdbe911') diff --git a/var/spack/repos/builtin/packages/r-lattice/package.py b/var/spack/repos/builtin/packages/r-lattice/package.py index ed3c19f2e68..7837bac1b4d 100644 --- a/var/spack/repos/builtin/packages/r-lattice/package.py +++ b/var/spack/repos/builtin/packages/r-lattice/package.py @@ -33,6 +33,5 @@ class RLattice(RPackage): homepage = "http://lattice.r-forge.r-project.org/" url = "https://cran.r-project.org/src/contrib/lattice_0.20-34.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/lattice" version('0.20-34', 'c2a648b22d4206ae7526fb70b8e90fed') diff --git a/var/spack/repos/builtin/packages/r-lava/package.py b/var/spack/repos/builtin/packages/r-lava/package.py index 263e859c489..f4c85a57ad3 100644 --- a/var/spack/repos/builtin/packages/r-lava/package.py +++ b/var/spack/repos/builtin/packages/r-lava/package.py @@ -30,7 +30,6 @@ class RLava(RPackage): homepage = "https://cran.r-project.org/package=lava" url = "https://cran.r-project.org/src/contrib/lava_1.4.7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/lava" version('1.4.7', '28039248a7039ba9281d172e4dbf9543') diff --git a/var/spack/repos/builtin/packages/r-lazyeval/package.py b/var/spack/repos/builtin/packages/r-lazyeval/package.py index ab41a396752..72b73f9e0a5 100644 --- a/var/spack/repos/builtin/packages/r-lazyeval/package.py +++ b/var/spack/repos/builtin/packages/r-lazyeval/package.py @@ -32,6 +32,5 @@ class RLazyeval(RPackage): homepage = "https://cran.r-project.org/web/packages/lazyeval/index.html" url = "https://cran.r-project.org/src/contrib/lazyeval_0.2.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/lazyeval" version('0.2.0', 'df1daac908dcf02ae7e12f4335b1b13b') diff --git a/var/spack/repos/builtin/packages/r-leaflet/package.py b/var/spack/repos/builtin/packages/r-leaflet/package.py index 62c2cf3c7c5..c309c92de9b 100644 --- a/var/spack/repos/builtin/packages/r-leaflet/package.py +++ b/var/spack/repos/builtin/packages/r-leaflet/package.py @@ -32,7 +32,6 @@ class RLeaflet(RPackage): homepage = "http://rstudio.github.io/leaflet/" url = "https://cran.r-project.org/src/contrib/leaflet_1.0.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/leaflet" version('1.0.1', '7f3d8b17092604d87d4eeb579f73d5df') diff --git a/var/spack/repos/builtin/packages/r-leaps/package.py b/var/spack/repos/builtin/packages/r-leaps/package.py index 077ea282baa..3afc27e6ddc 100644 --- a/var/spack/repos/builtin/packages/r-leaps/package.py +++ b/var/spack/repos/builtin/packages/r-leaps/package.py @@ -30,6 +30,5 @@ class RLeaps(RPackage): homepage = "https://CRAN.R-project.org/package=leaps" url = "https://cran.r-project.org/src/contrib/leaps_3.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/leaps" version('3.0', '30823138890680e0493d1491c8f43edc') diff --git a/var/spack/repos/builtin/packages/r-learnbayes/package.py b/var/spack/repos/builtin/packages/r-learnbayes/package.py index 85a9e122bcd..c6b276c863a 100644 --- a/var/spack/repos/builtin/packages/r-learnbayes/package.py +++ b/var/spack/repos/builtin/packages/r-learnbayes/package.py @@ -36,6 +36,5 @@ class RLearnbayes(RPackage): homepage = "https://CRAN.R-project.org/package=LearnBayes" url = "https://cran.r-project.org/src/contrib/LearnBayes_2.15.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/LearnBayes" version('2.15', '213713664707bc79fd6d3a109555ef76') diff --git a/var/spack/repos/builtin/packages/r-lme4/package.py b/var/spack/repos/builtin/packages/r-lme4/package.py index 0ca545ced90..e71da3ad813 100644 --- a/var/spack/repos/builtin/packages/r-lme4/package.py +++ b/var/spack/repos/builtin/packages/r-lme4/package.py @@ -33,7 +33,6 @@ class RLme4(RPackage): homepage = "https://github.com/lme4/lme4/" url = "https://cran.r-project.org/src/contrib/lme4_1.1-12.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/lme4" version('1.1-12', 'da8aaebb67477ecb5631851c46207804') diff --git a/var/spack/repos/builtin/packages/r-lmtest/package.py b/var/spack/repos/builtin/packages/r-lmtest/package.py index 3d17dd2a7ea..7967f386159 100644 --- a/var/spack/repos/builtin/packages/r-lmtest/package.py +++ b/var/spack/repos/builtin/packages/r-lmtest/package.py @@ -32,7 +32,6 @@ class RLmtest(RPackage): homepage = "https://cran.r-project.org/package=lmtest" url = "https://cran.r-project.org/src/contrib/lmtest_0.9-34.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/lmtest" version('0.9-34', 'fcdf7286bb5ccc2ca46be00bf25ac2fe') diff --git a/var/spack/repos/builtin/packages/r-lpsolve/package.py b/var/spack/repos/builtin/packages/r-lpsolve/package.py index 1ef84eb6729..65570e2873f 100644 --- a/var/spack/repos/builtin/packages/r-lpsolve/package.py +++ b/var/spack/repos/builtin/packages/r-lpsolve/package.py @@ -35,6 +35,5 @@ class RLpsolve(RPackage): homepage = "https://cran.r-project.org/web/packages/lpSolve/index.html" url = "https://cran.r-project.org/src/contrib/lpSolve_5.6.13.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/lpSolve" version('5.6.13', '8471654d9ae76e0f85ff3449433d4bc1') diff --git a/var/spack/repos/builtin/packages/r-lubridate/package.py b/var/spack/repos/builtin/packages/r-lubridate/package.py index 159e84e2927..ad64ce0c390 100644 --- a/var/spack/repos/builtin/packages/r-lubridate/package.py +++ b/var/spack/repos/builtin/packages/r-lubridate/package.py @@ -35,7 +35,6 @@ class RLubridate(RPackage): homepage = "https://cran.r-project.org/web/packages/lubridate/index.html" url = "https://cran.r-project.org/src/contrib/lubridate_1.5.6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/lubridate" version('1.5.6', 'a5dc44817548ee219d26a10bae92e611') diff --git a/var/spack/repos/builtin/packages/r-magic/package.py b/var/spack/repos/builtin/packages/r-magic/package.py index b0987adcd7a..4e2c3bb1936 100644 --- a/var/spack/repos/builtin/packages/r-magic/package.py +++ b/var/spack/repos/builtin/packages/r-magic/package.py @@ -33,7 +33,6 @@ class RMagic(RPackage): homepage = "https://cran.r-project.org/" url = "https://cran.r-project.org/src/contrib/magic_1.5-6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/magic" version('1.5-6', 'a68e5ced253b2196af842e1fc84fd029') diff --git a/var/spack/repos/builtin/packages/r-magrittr/package.py b/var/spack/repos/builtin/packages/r-magrittr/package.py index 915797e11d5..a01b601a3cd 100644 --- a/var/spack/repos/builtin/packages/r-magrittr/package.py +++ b/var/spack/repos/builtin/packages/r-magrittr/package.py @@ -34,6 +34,5 @@ class RMagrittr(RPackage): homepage = "https://cran.r-project.org/web/packages/magrittr/index.html" url = "https://cran.r-project.org/src/contrib/magrittr_1.5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/magrittr" version('1.5', 'e74ab7329f2b9833f0c3c1216f86d65a') diff --git a/var/spack/repos/builtin/packages/r-mapproj/package.py b/var/spack/repos/builtin/packages/r-mapproj/package.py index 3475868abdf..711c3dfb075 100644 --- a/var/spack/repos/builtin/packages/r-mapproj/package.py +++ b/var/spack/repos/builtin/packages/r-mapproj/package.py @@ -30,7 +30,6 @@ class RMapproj(RPackage): homepage = "https://cran.r-project.org/package=mapproj" url = "https://cran.r-project.org/src/contrib/mapproj_1.2-4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/mapproj" version('1.2-4', '10e22bde1c790e1540672f15ddcaee71') diff --git a/var/spack/repos/builtin/packages/r-maps/package.py b/var/spack/repos/builtin/packages/r-maps/package.py index c399bc52f3a..0f327db31ef 100644 --- a/var/spack/repos/builtin/packages/r-maps/package.py +++ b/var/spack/repos/builtin/packages/r-maps/package.py @@ -31,6 +31,5 @@ class RMaps(RPackage): homepage = "https://cran.r-project.org/" url = "https://cran.r-project.org/src/contrib/maps_3.1.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/maps" version('3.1.1', 'ff045eccb6d5a658db5a539116ddf764') diff --git a/var/spack/repos/builtin/packages/r-maptools/package.py b/var/spack/repos/builtin/packages/r-maptools/package.py index 74d0673aea8..f2894568d06 100644 --- a/var/spack/repos/builtin/packages/r-maptools/package.py +++ b/var/spack/repos/builtin/packages/r-maptools/package.py @@ -34,7 +34,6 @@ class RMaptools(RPackage): homepage = "http://r-forge.r-project.org/projects/maptools/" url = "https://cran.r-project.org/src/contrib/maptools_0.8-39.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/maptools" version('0.8-39', '3690d96afba8ef22c8e27ae540ffb836') diff --git a/var/spack/repos/builtin/packages/r-markdown/package.py b/var/spack/repos/builtin/packages/r-markdown/package.py index c0e03fef0aa..f843e64bc72 100644 --- a/var/spack/repos/builtin/packages/r-markdown/package.py +++ b/var/spack/repos/builtin/packages/r-markdown/package.py @@ -34,7 +34,6 @@ class RMarkdown(RPackage): homepage = "https://github.com/rstudio/markdown" url = "https://cran.r-project.org/src/contrib/markdown_0.7.7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/markdown" version('0.7.7', '72deca9c675c7cc9343048edbc29f7ff') diff --git a/var/spack/repos/builtin/packages/r-mass/package.py b/var/spack/repos/builtin/packages/r-mass/package.py index 25d3b5869b8..56a000968d8 100644 --- a/var/spack/repos/builtin/packages/r-mass/package.py +++ b/var/spack/repos/builtin/packages/r-mass/package.py @@ -31,6 +31,5 @@ class RMass(RPackage): homepage = "http://www.stats.ox.ac.uk/pub/MASS4/" url = "https://cran.r-project.org/src/contrib/MASS_7.3-45.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/MASS" version('7.3-45', 'aba3d12fab30f1793bee168a1efea88b') diff --git a/var/spack/repos/builtin/packages/r-matrix/package.py b/var/spack/repos/builtin/packages/r-matrix/package.py index ba1323a7372..d2f14df0633 100644 --- a/var/spack/repos/builtin/packages/r-matrix/package.py +++ b/var/spack/repos/builtin/packages/r-matrix/package.py @@ -31,7 +31,6 @@ class RMatrix(RPackage): homepage = "http://matrix.r-forge.r-project.org/" url = "https://cran.r-project.org/src/contrib/Matrix_1.2-8.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/Matrix" version('1.2-8', '4a6406666bf97d3ec6b698eea5d9c0f5') version('1.2-6', 'f545307fb1284861e9266c4e9712c55e') diff --git a/var/spack/repos/builtin/packages/r-matrixmodels/package.py b/var/spack/repos/builtin/packages/r-matrixmodels/package.py index 0958de49a3f..2391da8ad71 100644 --- a/var/spack/repos/builtin/packages/r-matrixmodels/package.py +++ b/var/spack/repos/builtin/packages/r-matrixmodels/package.py @@ -31,7 +31,6 @@ class RMatrixmodels(RPackage): homepage = "http://matrix.r-forge.r-project.org/" url = "https://cran.r-project.org/src/contrib/MatrixModels_0.4-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/MatrixModels" version('0.4-1', '65b3ab56650c62bf1046a3eb1f1e19a0') diff --git a/var/spack/repos/builtin/packages/r-mclust/package.py b/var/spack/repos/builtin/packages/r-mclust/package.py index 5bf58c02cd6..308afd5952d 100644 --- a/var/spack/repos/builtin/packages/r-mclust/package.py +++ b/var/spack/repos/builtin/packages/r-mclust/package.py @@ -31,7 +31,6 @@ class RMclust(RPackage): homepage = "http://www.stat.washington.edu/mclust" url = "https://cran.r-project.org/src/contrib/mclust_5.3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/mclust" version('5.3', '74aac9fccdfc78373ce733c1a09176ef') diff --git a/var/spack/repos/builtin/packages/r-mda/package.py b/var/spack/repos/builtin/packages/r-mda/package.py index 4a3325abec1..5c39cc78587 100644 --- a/var/spack/repos/builtin/packages/r-mda/package.py +++ b/var/spack/repos/builtin/packages/r-mda/package.py @@ -31,7 +31,6 @@ class RMda(RPackage): homepage = "https://cran.r-project.org/package=mda" url = "https://cran.r-project.org/src/contrib/mda_0.4-9.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/mda" version('0.4-9', '2ce1446c4a013e0ebcc1099a00269ad9') diff --git a/var/spack/repos/builtin/packages/r-memoise/package.py b/var/spack/repos/builtin/packages/r-memoise/package.py index 76c207dc04d..9cabadb2828 100644 --- a/var/spack/repos/builtin/packages/r-memoise/package.py +++ b/var/spack/repos/builtin/packages/r-memoise/package.py @@ -31,7 +31,6 @@ class RMemoise(RPackage): homepage = "https://github.com/hadley/memoise" url = "https://cran.r-project.org/src/contrib/memoise_1.0.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/memoise" version('1.0.0', 'd31145292e2a88ae9a504cab1602e4ac') diff --git a/var/spack/repos/builtin/packages/r-mgcv/package.py b/var/spack/repos/builtin/packages/r-mgcv/package.py index 611abfd47c1..bdf6fe3a891 100644 --- a/var/spack/repos/builtin/packages/r-mgcv/package.py +++ b/var/spack/repos/builtin/packages/r-mgcv/package.py @@ -33,7 +33,6 @@ class RMgcv(RPackage): homepage = "https://cran.r-project.org/package=mgcv" url = "https://cran.r-project.org/src/contrib/mgcv_1.8-16.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/mgcv" version('1.8-16', '4c1d85e0f80b017bccb4b63395842911') version('1.8-13', '30607be3aaf44b13bd8c81fc32e8c984') diff --git a/var/spack/repos/builtin/packages/r-mime/package.py b/var/spack/repos/builtin/packages/r-mime/package.py index c4d2eb2b3ed..aa6e51c18bd 100644 --- a/var/spack/repos/builtin/packages/r-mime/package.py +++ b/var/spack/repos/builtin/packages/r-mime/package.py @@ -31,7 +31,6 @@ class RMime(RPackage): homepage = "https://github.com/yihui/mime" url = "https://cran.r-project.org/src/contrib/mime_0.5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/mime" version('0.5', '87e00b6d57b581465c19ae869a723c4d') version('0.4', '789cb33e41db2206c6fc7c3e9fbc2c02') diff --git a/var/spack/repos/builtin/packages/r-minqa/package.py b/var/spack/repos/builtin/packages/r-minqa/package.py index 7a9032a546d..afd5c371320 100644 --- a/var/spack/repos/builtin/packages/r-minqa/package.py +++ b/var/spack/repos/builtin/packages/r-minqa/package.py @@ -31,7 +31,6 @@ class RMinqa(RPackage): homepage = "http://optimizer.r-forge.r-project.org/" url = "https://cran.r-project.org/src/contrib/minqa_1.2.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/minqa" version('1.2.4', 'bcaae4fdba60a33528f2116e2fd51105') diff --git a/var/spack/repos/builtin/packages/r-mlbench/package.py b/var/spack/repos/builtin/packages/r-mlbench/package.py index ec7957d5f71..8ab4c89058c 100644 --- a/var/spack/repos/builtin/packages/r-mlbench/package.py +++ b/var/spack/repos/builtin/packages/r-mlbench/package.py @@ -31,7 +31,6 @@ class RMlbench(RPackage): homepage = "https://cran.r-project.org/web/packages/mlbench/index.html" url = "https://cran.r-project.org/src/contrib/mlbench_2.1-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/mlbench" version('2.1-1', '9f06848b8e137b8a37417c92d8e57f3b') diff --git a/var/spack/repos/builtin/packages/r-modelmetrics/package.py b/var/spack/repos/builtin/packages/r-modelmetrics/package.py index 99644ef1900..03ae0ca6f7d 100644 --- a/var/spack/repos/builtin/packages/r-modelmetrics/package.py +++ b/var/spack/repos/builtin/packages/r-modelmetrics/package.py @@ -31,7 +31,6 @@ class RModelmetrics(RPackage): homepage = "https://cran.r-project.org/package=ModelMetrics" url = "https://cran.r-project.org/src/contrib/ModelMetrics_1.1.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ModelMetrics" version('1.1.0', 'd43175001f0531b8810d2802d76b7b44') diff --git a/var/spack/repos/builtin/packages/r-modeltools/package.py b/var/spack/repos/builtin/packages/r-modeltools/package.py index 97c3cf0682b..2d80652f8c7 100644 --- a/var/spack/repos/builtin/packages/r-modeltools/package.py +++ b/var/spack/repos/builtin/packages/r-modeltools/package.py @@ -30,6 +30,5 @@ class RModeltools(RPackage): homepage = "https://cran.r-project.org/package=modeltools" url = "https://cran.r-project.org/src/contrib/modeltools_0.2-21.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/modeltools" version('0.2-21', '3bf56b2e7bf78981444385d87eeccdd7') diff --git a/var/spack/repos/builtin/packages/r-multcomp/package.py b/var/spack/repos/builtin/packages/r-multcomp/package.py index 0dbfb14ea00..ab77b6024d8 100644 --- a/var/spack/repos/builtin/packages/r-multcomp/package.py +++ b/var/spack/repos/builtin/packages/r-multcomp/package.py @@ -34,7 +34,6 @@ class RMultcomp(RPackage): homepage = "http://multcomp.r-forge.r-project.org/" url = "https://cran.r-project.org/src/contrib/multcomp_1.4-6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/multcomp" version('1.4-6', 'f1353ede2ed78b23859a7f1f1f9ebe88') diff --git a/var/spack/repos/builtin/packages/r-munsell/package.py b/var/spack/repos/builtin/packages/r-munsell/package.py index 670fed41e2e..fe43d4c7461 100644 --- a/var/spack/repos/builtin/packages/r-munsell/package.py +++ b/var/spack/repos/builtin/packages/r-munsell/package.py @@ -34,7 +34,6 @@ class RMunsell(RPackage): homepage = "https://cran.r-project.org/web/packages/munsell/index.html" url = "https://cran.r-project.org/src/contrib/munsell_0.4.3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/munsell" version('0.4.3', 'ebd205323dc37c948f499ee08be9c476') diff --git a/var/spack/repos/builtin/packages/r-mvtnorm/package.py b/var/spack/repos/builtin/packages/r-mvtnorm/package.py index 01e3aea91df..3c79b05691c 100644 --- a/var/spack/repos/builtin/packages/r-mvtnorm/package.py +++ b/var/spack/repos/builtin/packages/r-mvtnorm/package.py @@ -31,6 +31,5 @@ class RMvtnorm(RPackage): homepage = "http://mvtnorm.r-forge.r-project.org/" url = "https://cran.r-project.org/src/contrib/mvtnorm_1.0-5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/mvtnorm" version('1.0-5', '5894dd3969bbfa26f4862c45f9a48a52') diff --git a/var/spack/repos/builtin/packages/r-ncdf4/package.py b/var/spack/repos/builtin/packages/r-ncdf4/package.py index 597f4d903f5..299bf0b108f 100644 --- a/var/spack/repos/builtin/packages/r-ncdf4/package.py +++ b/var/spack/repos/builtin/packages/r-ncdf4/package.py @@ -43,7 +43,6 @@ class RNcdf4(RPackage): homepage = "http://cirrus.ucsd.edu/~pierce/ncdf" url = "https://cran.r-project.org/src/contrib/ncdf4_1.15.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/ncdf4" version('1.15', 'cd60dadbae3be31371e1ed40ddeb420a') diff --git a/var/spack/repos/builtin/packages/r-network/package.py b/var/spack/repos/builtin/packages/r-network/package.py index 9fdc59c02ba..acf0e9a0e91 100644 --- a/var/spack/repos/builtin/packages/r-network/package.py +++ b/var/spack/repos/builtin/packages/r-network/package.py @@ -32,6 +32,5 @@ class RNetwork(RPackage): homepage = "https://statnet.org" url = "https://cran.r-project.org/src/contrib/network_1.13.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/network" version('1.13.0', 'd0b967d6f1aad43b6479d72f29b705de') diff --git a/var/spack/repos/builtin/packages/r-networkd3/package.py b/var/spack/repos/builtin/packages/r-networkd3/package.py index e881394538e..2c70b454385 100644 --- a/var/spack/repos/builtin/packages/r-networkd3/package.py +++ b/var/spack/repos/builtin/packages/r-networkd3/package.py @@ -31,7 +31,6 @@ class RNetworkd3(RPackage): homepage = "http://cran.r-project.org/package=networkD3" url = "https://cran.r-project.org/src/contrib/networkD3_0.2.12.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/networkD3" version('0.2.12', '356fe4be59698e6fb052644bd9659d84') diff --git a/var/spack/repos/builtin/packages/r-nlme/package.py b/var/spack/repos/builtin/packages/r-nlme/package.py index 32fa484f60a..0c619e5f9d2 100644 --- a/var/spack/repos/builtin/packages/r-nlme/package.py +++ b/var/spack/repos/builtin/packages/r-nlme/package.py @@ -30,7 +30,6 @@ class RNlme(RPackage): homepage = "https://cran.r-project.org/package=nlme" url = "https://cran.r-project.org/src/contrib/nlme_3.1-130.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/nlme" version('3.1-130', '1935d6e308a8018ed8e45d25c8731288') version('3.1-128', '3d75ae7380bf123761b95a073eb55008') diff --git a/var/spack/repos/builtin/packages/r-nloptr/package.py b/var/spack/repos/builtin/packages/r-nloptr/package.py index 8da84c5814c..2512cca6958 100644 --- a/var/spack/repos/builtin/packages/r-nloptr/package.py +++ b/var/spack/repos/builtin/packages/r-nloptr/package.py @@ -36,6 +36,5 @@ class RNloptr(RPackage): homepage = "https://cran.r-project.org/package=nloptr" url = "https://cran.r-project.org/src/contrib/nloptr_1.0.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/nloptr" version('1.0.4', '9af69a613349b236fd377d0a107f484c') diff --git a/var/spack/repos/builtin/packages/r-nmf/package.py b/var/spack/repos/builtin/packages/r-nmf/package.py index 78347ea6157..a0385d4ce23 100644 --- a/var/spack/repos/builtin/packages/r-nmf/package.py +++ b/var/spack/repos/builtin/packages/r-nmf/package.py @@ -35,7 +35,6 @@ class RNmf(RPackage): homepage = "http://renozao.github.io/NMF" url = "https://cran.r-project.org/src/contrib/NMF_0.20.6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/NMF" version('0.20.6', '81df07b3bf710a611db5af24730ff3d0') diff --git a/var/spack/repos/builtin/packages/r-nnet/package.py b/var/spack/repos/builtin/packages/r-nnet/package.py index eeb6f910341..6a7651a51ee 100644 --- a/var/spack/repos/builtin/packages/r-nnet/package.py +++ b/var/spack/repos/builtin/packages/r-nnet/package.py @@ -31,6 +31,5 @@ class RNnet(RPackage): homepage = "http://www.stats.ox.ac.uk/pub/MASS4/" url = "https://cran.r-project.org/src/contrib/nnet_7.3-12.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/nnet" version('7.3-12', 'dc7c6f0d0de53d8fc72b44554400a74e') diff --git a/var/spack/repos/builtin/packages/r-np/package.py b/var/spack/repos/builtin/packages/r-np/package.py index e15cb7efcb4..a010d37af9f 100644 --- a/var/spack/repos/builtin/packages/r-np/package.py +++ b/var/spack/repos/builtin/packages/r-np/package.py @@ -36,7 +36,6 @@ class RNp(RPackage): homepage = "https://github.com/JeffreyRacine/R-Package-np/" url = "https://cran.r-project.org/src/contrib/np_0.60-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/np" version('0.60-2', 'e094d52ddff7280272b41e6cb2c74389') diff --git a/var/spack/repos/builtin/packages/r-numderiv/package.py b/var/spack/repos/builtin/packages/r-numderiv/package.py index 135c4f41418..1323e537ae0 100644 --- a/var/spack/repos/builtin/packages/r-numderiv/package.py +++ b/var/spack/repos/builtin/packages/r-numderiv/package.py @@ -31,7 +31,6 @@ class RNumderiv(RPackage): homepage = "https://cran.r-project.org/package=numDeriv" url = "https://cran.r-project.org/src/contrib/numDeriv_2016.8-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/numDeriv" version('2016.8-1', '30e486298d5126d86560095be8e8aac1') diff --git a/var/spack/repos/builtin/packages/r-openssl/package.py b/var/spack/repos/builtin/packages/r-openssl/package.py index 8b20482c322..8989fcf14ce 100644 --- a/var/spack/repos/builtin/packages/r-openssl/package.py +++ b/var/spack/repos/builtin/packages/r-openssl/package.py @@ -39,7 +39,6 @@ class ROpenssl(RPackage): homepage = "https://github.com/jeroenooms/openssl#readme" url = "https://cran.r-project.org/src/contrib/openssl_0.9.6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/openssl" version('0.9.6', '7ef137929d9dd07db690d35db242ba4b') version('0.9.4', '82a890e71ed0e74499878bedacfb8ccb') diff --git a/var/spack/repos/builtin/packages/r-packrat/package.py b/var/spack/repos/builtin/packages/r-packrat/package.py index ff66ddaf39c..e0f8c0ec4e2 100644 --- a/var/spack/repos/builtin/packages/r-packrat/package.py +++ b/var/spack/repos/builtin/packages/r-packrat/package.py @@ -31,7 +31,6 @@ class RPackrat(RPackage): homepage = "https://github.com/rstudio/packrat/" url = "https://cran.r-project.org/src/contrib/packrat_0.4.7-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/packrat" version('0.4.8-1', '14e82feba55fcda923396282fc490038') version('0.4.7-1', '80c2413269b292ade163a70ba5053e84') diff --git a/var/spack/repos/builtin/packages/r-pacman/package.py b/var/spack/repos/builtin/packages/r-pacman/package.py index a51633fbb4d..3112e9ef196 100644 --- a/var/spack/repos/builtin/packages/r-pacman/package.py +++ b/var/spack/repos/builtin/packages/r-pacman/package.py @@ -33,7 +33,6 @@ class RPacman(RPackage): homepage = "https://cran.r-project.org/package=pacman" url = "https://cran.r-project.org/src/contrib/pacman_0.4.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/pacman" version('0.4.1', 'bf18fe6d1407d31e00b337d9b07fb648') diff --git a/var/spack/repos/builtin/packages/r-party/package.py b/var/spack/repos/builtin/packages/r-party/package.py index 23f66ca4a4d..ee006ec710c 100644 --- a/var/spack/repos/builtin/packages/r-party/package.py +++ b/var/spack/repos/builtin/packages/r-party/package.py @@ -30,7 +30,6 @@ class RParty(RPackage): homepage = "https://cran.r-project.org/web/packages/party/index.html" url = "https://cran.r-project.org/src/contrib/party_1.1-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/party" version('1.1-2', '40a00336cf8418042d2ab616675c8ddf') diff --git a/var/spack/repos/builtin/packages/r-partykit/package.py b/var/spack/repos/builtin/packages/r-partykit/package.py index 8773dace22c..5c056e7b719 100644 --- a/var/spack/repos/builtin/packages/r-partykit/package.py +++ b/var/spack/repos/builtin/packages/r-partykit/package.py @@ -38,7 +38,6 @@ class RPartykit(RPackage): homepage = "http://partykit.r-forge.r-project.org/partykit" url = "https://cran.r-project.org/src/contrib/partykit_1.1-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/partykit" version('1.1-1', '8fcb31d73ec1b8cd3bcd9789639a9277') diff --git a/var/spack/repos/builtin/packages/r-pbdzmq/package.py b/var/spack/repos/builtin/packages/r-pbdzmq/package.py index f602e507235..ee85dfe3a44 100644 --- a/var/spack/repos/builtin/packages/r-pbdzmq/package.py +++ b/var/spack/repos/builtin/packages/r-pbdzmq/package.py @@ -37,7 +37,6 @@ class RPbdzmq(RPackage): homepage = "http://r-pbd.org/" url = "https://cran.r-project.org/src/contrib/pbdZMQ_0.2-4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/pbdZMQ" version('0.2-4', 'e5afb70199aa54d737ee7a0e26bde060') diff --git a/var/spack/repos/builtin/packages/r-pbkrtest/package.py b/var/spack/repos/builtin/packages/r-pbkrtest/package.py index 2a2edc50ce5..8278f672180 100644 --- a/var/spack/repos/builtin/packages/r-pbkrtest/package.py +++ b/var/spack/repos/builtin/packages/r-pbkrtest/package.py @@ -34,7 +34,6 @@ class RPbkrtest(RPackage): homepage = "http://people.math.aau.dk/~sorenh/software/pbkrtest/" url = "https://cran.r-project.org/src/contrib/pbkrtest_0.4-6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/pbkrtest" version('0.4-6', '0a7d9ff83b8d131af9b2335f35781ef9') version('0.4-4', '5e54b1b1b35413dd1d24ef15735ec645') diff --git a/var/spack/repos/builtin/packages/r-permute/package.py b/var/spack/repos/builtin/packages/r-permute/package.py index 739e001b3b6..8dbc5a82bed 100644 --- a/var/spack/repos/builtin/packages/r-permute/package.py +++ b/var/spack/repos/builtin/packages/r-permute/package.py @@ -36,7 +36,6 @@ class RPermute(RPackage): homepage = "https://github.com/gavinsimpson/permute" url = "https://cran.r-project.org/src/contrib/permute_0.9-4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/permute" version('0.9-4', '569fc2442d72a1e3b7e2d456019674c9') diff --git a/var/spack/repos/builtin/packages/r-pkgmaker/package.py b/var/spack/repos/builtin/packages/r-pkgmaker/package.py index 099cabd954f..2692d491b48 100644 --- a/var/spack/repos/builtin/packages/r-pkgmaker/package.py +++ b/var/spack/repos/builtin/packages/r-pkgmaker/package.py @@ -36,7 +36,6 @@ class RPkgmaker(RPackage): homepage = "https://renozao.github.io/pkgmaker" url = "https://cran.r-project.org/src/contrib/pkgmaker_0.22.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/pkgmaker" version('0.22', '73a0c6d3e84c6dadf3de7582ef7e88a4') diff --git a/var/spack/repos/builtin/packages/r-plotrix/package.py b/var/spack/repos/builtin/packages/r-plotrix/package.py index 0cd3423f733..9740c70594d 100644 --- a/var/spack/repos/builtin/packages/r-plotrix/package.py +++ b/var/spack/repos/builtin/packages/r-plotrix/package.py @@ -30,7 +30,6 @@ class RPlotrix(RPackage): homepage = "https://cran.r-project.org/package=plotrix" url = "https://cran.r-project.org/src/contrib/plotrix_3.6-4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/plotrix" version('3.6-4', 'efe9b9b093d8903228a9b56c46d943fa') version('3.6-3', '23e3e022a13a596e9b77b40afcb4a2ef') diff --git a/var/spack/repos/builtin/packages/r-pls/package.py b/var/spack/repos/builtin/packages/r-pls/package.py index ddb18ff42ec..c75048962e3 100644 --- a/var/spack/repos/builtin/packages/r-pls/package.py +++ b/var/spack/repos/builtin/packages/r-pls/package.py @@ -32,7 +32,6 @@ class RPls(RPackage): homepage = "https://cran.r-project.org/package=pls" url = "https://cran.r-project.org/src/contrib/pls_2.6-0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/pls" version('2.6-0', '04e02e8e46d983c5ed53c1f952b329df') diff --git a/var/spack/repos/builtin/packages/r-plyr/package.py b/var/spack/repos/builtin/packages/r-plyr/package.py index 6f48f5c38ef..f9f8176c647 100644 --- a/var/spack/repos/builtin/packages/r-plyr/package.py +++ b/var/spack/repos/builtin/packages/r-plyr/package.py @@ -36,7 +36,6 @@ class RPlyr(RPackage): homepage = "http://had.co.nz/plyr" url = "https://cran.r-project.org/src/contrib/plyr_1.8.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/plyr" version('1.8.4', 'ef455cf7fc06e34837692156b7b2587b') diff --git a/var/spack/repos/builtin/packages/r-png/package.py b/var/spack/repos/builtin/packages/r-png/package.py index 38b7ae5138b..9808e3e3a50 100644 --- a/var/spack/repos/builtin/packages/r-png/package.py +++ b/var/spack/repos/builtin/packages/r-png/package.py @@ -32,7 +32,6 @@ class RPng(RPackage): homepage = "http://www.rforge.net/png/" url = "https://cran.r-project.org/src/contrib/png_0.1-7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/png" version('0.1-7', '1ebc8b8aa5979b12c5ec2384b30d649f') diff --git a/var/spack/repos/builtin/packages/r-prabclus/package.py b/var/spack/repos/builtin/packages/r-prabclus/package.py index 424d75274d7..1dd42ffae42 100644 --- a/var/spack/repos/builtin/packages/r-prabclus/package.py +++ b/var/spack/repos/builtin/packages/r-prabclus/package.py @@ -31,7 +31,6 @@ class RPrabclus(RPackage): homepage = "http://www.homepages.ucl.ac.uk/~ucakche" url = "https://cran.r-project.org/src/contrib/prabclus_2.2-6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/prabclus" version('2.2-6', '7f835dcc113243e1db74aad28ce93d11') diff --git a/var/spack/repos/builtin/packages/r-prodlim/package.py b/var/spack/repos/builtin/packages/r-prodlim/package.py index 5219578d943..44f03e789ad 100644 --- a/var/spack/repos/builtin/packages/r-prodlim/package.py +++ b/var/spack/repos/builtin/packages/r-prodlim/package.py @@ -32,7 +32,6 @@ class RProdlim(RPackage): homepage = "https://cran.r-project.org/package=prodlim" url = "https://cran.r-project.org/src/contrib/prodlim_1.5.9.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/prodlim" version('1.5.9', 'e0843053c9270e41b657a733d6675dc9') diff --git a/var/spack/repos/builtin/packages/r-proto/package.py b/var/spack/repos/builtin/packages/r-proto/package.py index 2553e325f39..f4b6c2f8099 100644 --- a/var/spack/repos/builtin/packages/r-proto/package.py +++ b/var/spack/repos/builtin/packages/r-proto/package.py @@ -31,6 +31,5 @@ class RProto(RPackage): homepage = "http://r-proto.googlecode.com/" url = "https://cran.r-project.org/src/contrib/proto_0.3-10.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/proto" version('0.3-10', 'd5523943a5be6ca2f0ab557c900f8212') diff --git a/var/spack/repos/builtin/packages/r-pryr/package.py b/var/spack/repos/builtin/packages/r-pryr/package.py index 3a103e98557..673060c7798 100644 --- a/var/spack/repos/builtin/packages/r-pryr/package.py +++ b/var/spack/repos/builtin/packages/r-pryr/package.py @@ -32,7 +32,6 @@ class RPryr(RPackage): homepage = "https://github.com/hadley/pryr" url = "https://cran.r-project.org/src/contrib/pryr_0.1.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/pryr" version('0.1.2', '66b597a762aa15a3b7037779522983b6') diff --git a/var/spack/repos/builtin/packages/r-quadprog/package.py b/var/spack/repos/builtin/packages/r-quadprog/package.py index 84e4624e169..b72a7f92605 100644 --- a/var/spack/repos/builtin/packages/r-quadprog/package.py +++ b/var/spack/repos/builtin/packages/r-quadprog/package.py @@ -31,6 +31,5 @@ class RQuadprog(RPackage): homepage = "https://cran.r-project.org/web/packages/quadprog/index.html" url = "https://cran.r-project.org/src/contrib/quadprog_1.5-5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/quadprog" version('1.5-5', '8442f37afd8d0b19b12e77d63e6515ad') diff --git a/var/spack/repos/builtin/packages/r-quantmod/package.py b/var/spack/repos/builtin/packages/r-quantmod/package.py index 4cc53fcf69f..8a9755cc4e9 100644 --- a/var/spack/repos/builtin/packages/r-quantmod/package.py +++ b/var/spack/repos/builtin/packages/r-quantmod/package.py @@ -31,7 +31,6 @@ class RQuantmod(RPackage): homepage = "http://www.quantmod.com/" url = "https://cran.r-project.org/src/contrib/quantmod_0.4-5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/quantmod" version('0.4-5', 'cab3c409e4de3df98a20f1ded60f3631') diff --git a/var/spack/repos/builtin/packages/r-quantreg/package.py b/var/spack/repos/builtin/packages/r-quantreg/package.py index c9bdaefa44e..011c4a1c4ea 100644 --- a/var/spack/repos/builtin/packages/r-quantreg/package.py +++ b/var/spack/repos/builtin/packages/r-quantreg/package.py @@ -35,7 +35,6 @@ class RQuantreg(RPackage): homepage = "https://cran.r-project.org/package=quantreg" url = "https://cran.r-project.org/src/contrib/quantreg_5.29.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/quantreg" version('5.29', '643ca728200d13f8c2e62365204e9907') version('5.26', '1d89ed932fb4d67ae2d5da0eb8c2989f') diff --git a/var/spack/repos/builtin/packages/r-r6/package.py b/var/spack/repos/builtin/packages/r-r6/package.py index 700771f40fd..9930b751b27 100644 --- a/var/spack/repos/builtin/packages/r-r6/package.py +++ b/var/spack/repos/builtin/packages/r-r6/package.py @@ -35,7 +35,6 @@ class RR6(RPackage): homepage = "https://github.com/wch/R6/" url = "https://cran.r-project.org/src/contrib/R6_2.2.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/R6" version('2.2.0', '659d83b2d3f7a308a48332b4cfbdab49') version('2.1.2', 'b6afb9430e48707be87638675390e457') diff --git a/var/spack/repos/builtin/packages/r-randomforest/package.py b/var/spack/repos/builtin/packages/r-randomforest/package.py index bc7798695dc..6df372e6f35 100644 --- a/var/spack/repos/builtin/packages/r-randomforest/package.py +++ b/var/spack/repos/builtin/packages/r-randomforest/package.py @@ -31,6 +31,5 @@ class RRandomforest(RPackage): homepage = "https://www.stat.berkeley.edu/~breiman/RandomForests/" url = "https://cran.r-project.org/src/contrib/randomForest_4.6-12.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/randomForest" version('4.6-12', '071c03af974198e861f1475c5bab9e7a') diff --git a/var/spack/repos/builtin/packages/r-raster/package.py b/var/spack/repos/builtin/packages/r-raster/package.py index daa42793ee0..2bcdfe33ec5 100644 --- a/var/spack/repos/builtin/packages/r-raster/package.py +++ b/var/spack/repos/builtin/packages/r-raster/package.py @@ -32,7 +32,6 @@ class RRaster(RPackage): homepage = "http://cran.r-project.org/package=raster" url = "https://cran.r-project.org/src/contrib/raster_2.5-8.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/raster" version('2.5-8', '2a7db931c74d50516e82d04687c0a577') diff --git a/var/spack/repos/builtin/packages/r-rbokeh/package.py b/var/spack/repos/builtin/packages/r-rbokeh/package.py index 00f15891b2b..f90ea20fbfd 100644 --- a/var/spack/repos/builtin/packages/r-rbokeh/package.py +++ b/var/spack/repos/builtin/packages/r-rbokeh/package.py @@ -32,7 +32,6 @@ class RRbokeh(RPackage): homepage = "https://hafen.github.io/rbokeh" url = "https://cran.r-project.org/src/contrib/rbokeh_0.5.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rbokeh" version('0.5.0', '4e14778c3fbd9286460ca28c68f57d10') diff --git a/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py b/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py index 59f134caad9..d123f536dee 100644 --- a/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py +++ b/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py @@ -31,6 +31,5 @@ class RRcolorbrewer(RPackage): homepage = "http://colorbrewer2.org" url = "https://cran.r-project.org/src/contrib/RColorBrewer_1.1-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/RColorBrewer" version('1.1-2', '66054d83eade4dff8a43ad4732691182') diff --git a/var/spack/repos/builtin/packages/r-rcpp/package.py b/var/spack/repos/builtin/packages/r-rcpp/package.py index 5b89324970e..1f85226975a 100644 --- a/var/spack/repos/builtin/packages/r-rcpp/package.py +++ b/var/spack/repos/builtin/packages/r-rcpp/package.py @@ -38,7 +38,6 @@ class RRcpp(RPackage): homepage = "http://dirk.eddelbuettel.com/code/rcpp.html" url = "https://cran.r-project.org/src/contrib/Rcpp_0.12.9.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/Rcpp" version('0.12.9', '691c49b12794507288b728ede03668a5') version('0.12.6', 'db4280fb0a79cd19be73a662c33b0a8b') diff --git a/var/spack/repos/builtin/packages/r-rcppeigen/package.py b/var/spack/repos/builtin/packages/r-rcppeigen/package.py index b33e938d5bf..e5db4ac0f68 100644 --- a/var/spack/repos/builtin/packages/r-rcppeigen/package.py +++ b/var/spack/repos/builtin/packages/r-rcppeigen/package.py @@ -42,7 +42,6 @@ class RRcppeigen(RPackage): homepage = "http://eigen.tuxfamily.org/" url = "https://cran.r-project.org/src/contrib/RcppEigen_0.3.2.9.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/RcppEigen" version('0.3.2.9.0', '14a7786882a5d9862d53c4b2217df318') version('0.3.2.8.1', '4146e06e4fdf7f4d08db7839069d479f') diff --git a/var/spack/repos/builtin/packages/r-registry/package.py b/var/spack/repos/builtin/packages/r-registry/package.py index 479250cac6b..618ab003853 100644 --- a/var/spack/repos/builtin/packages/r-registry/package.py +++ b/var/spack/repos/builtin/packages/r-registry/package.py @@ -30,6 +30,5 @@ class RRegistry(RPackage): homepage = "https://cran.r-project.org/web/packages/registry/index.html" url = "https://cran.r-project.org/src/contrib/registry_0.3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/registry" version('0.3', '85345b334ec81eb3da6edcbb27c5f421') diff --git a/var/spack/repos/builtin/packages/r-repr/package.py b/var/spack/repos/builtin/packages/r-repr/package.py index 47720327de2..67804a7b4f4 100644 --- a/var/spack/repos/builtin/packages/r-repr/package.py +++ b/var/spack/repos/builtin/packages/r-repr/package.py @@ -32,6 +32,5 @@ class RRepr(RPackage): homepage = "https://github.com/IRkernel/repr" url = "https://cran.r-project.org/src/contrib/repr_0.9.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/repr" version('0.9', 'db5ff74893063b492f684e42283070bd') diff --git a/var/spack/repos/builtin/packages/r-reshape2/package.py b/var/spack/repos/builtin/packages/r-reshape2/package.py index ca65e006dc2..208cc4d576f 100644 --- a/var/spack/repos/builtin/packages/r-reshape2/package.py +++ b/var/spack/repos/builtin/packages/r-reshape2/package.py @@ -31,7 +31,6 @@ class RReshape2(RPackage): homepage = "https://github.com/hadley/reshape" url = "https://cran.r-project.org/src/contrib/reshape2_1.4.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/reshape2" version('1.4.2', 'c851a0312191b8c5bab956445df7cf5f') version('1.4.1', '41e9dffdf5c6fa830321ac9c8ebffe00') diff --git a/var/spack/repos/builtin/packages/r-rgl/package.py b/var/spack/repos/builtin/packages/r-rgl/package.py index a4b912a6d5c..d3b65adbaff 100644 --- a/var/spack/repos/builtin/packages/r-rgl/package.py +++ b/var/spack/repos/builtin/packages/r-rgl/package.py @@ -36,8 +36,6 @@ class RRgl(RPackage): homepage = "https://r-forge.r-project.org/projects/rgl" url = "https://cloud.r-project.org/src/contrib/rgl_0.98.1.tar.gz" - list_url = 'https://cloud.r-project.org/src/contrib/Archive/rgl' - version('0.98.1', 'bd69e1d33f1590feb4b6dc080b133e5b') depends_on('r@3.2:3.9') diff --git a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py index 87672a35e26..b505249f59b 100644 --- a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py +++ b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py @@ -33,7 +33,6 @@ class RRgooglemaps(RPackage): homepage = "https://cran.r-project.org/package=RgoogleMaps" url = "https://cran.r-project.org/src/contrib/RgoogleMaps_1.2.0.7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/RgoogleMaps" version('1.2.0.7', '2e1df804f0331b4122d841105f0c7ea5') diff --git a/var/spack/repos/builtin/packages/r-rinside/package.py b/var/spack/repos/builtin/packages/r-rinside/package.py index d8e7c28e239..11a254a1623 100644 --- a/var/spack/repos/builtin/packages/r-rinside/package.py +++ b/var/spack/repos/builtin/packages/r-rinside/package.py @@ -44,7 +44,6 @@ class RRinside(RPackage): homepage = "http://dirk.eddelbuettel.com/code/rinside.html" url = "https://cran.r-project.org/src/contrib/RInside_0.2.13.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/RInside" version('0.2.13', '2e3c35a7bd648e9bef98d0afcc02cf88') diff --git a/var/spack/repos/builtin/packages/r-rjava/package.py b/var/spack/repos/builtin/packages/r-rjava/package.py index 440b93ff1f4..26502134c1c 100644 --- a/var/spack/repos/builtin/packages/r-rjava/package.py +++ b/var/spack/repos/builtin/packages/r-rjava/package.py @@ -31,7 +31,6 @@ class RRjava(RPackage): homepage = "http://www.rforge.net/rJava/" url = "https://cran.r-project.org/src/contrib/rJava_0.9-8.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rJava" version('0.9-8', '51ae0d690ceed056ebe7c4be71fc6c7a') diff --git a/var/spack/repos/builtin/packages/r-rjson/package.py b/var/spack/repos/builtin/packages/r-rjson/package.py index f37b5743236..5db82ed44aa 100644 --- a/var/spack/repos/builtin/packages/r-rjson/package.py +++ b/var/spack/repos/builtin/packages/r-rjson/package.py @@ -30,6 +30,5 @@ class RRjson(RPackage): homepage = "https://cran.r-project.org/package=rjson" url = "https://cran.r-project.org/src/contrib/rjson_0.2.15.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rjson" version('0.2.15', '87d0e29bc179c6aeaf312b138089f8e9') diff --git a/var/spack/repos/builtin/packages/r-rjsonio/package.py b/var/spack/repos/builtin/packages/r-rjsonio/package.py index 4d5ffa6ddf6..5cf23bc973c 100644 --- a/var/spack/repos/builtin/packages/r-rjsonio/package.py +++ b/var/spack/repos/builtin/packages/r-rjsonio/package.py @@ -44,6 +44,5 @@ class RRjsonio(RPackage): homepage = "https://cran.r-project.org/package=RJSONIO" url = "https://cran.r-project.org/src/contrib/RJSONIO_1.3-0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/RJSONIO" version('1.3-0', '72c395622ba8d1435ec43849fd32c830') diff --git a/var/spack/repos/builtin/packages/r-rmarkdown/package.py b/var/spack/repos/builtin/packages/r-rmarkdown/package.py index 31a76959238..09328f7684b 100644 --- a/var/spack/repos/builtin/packages/r-rmarkdown/package.py +++ b/var/spack/repos/builtin/packages/r-rmarkdown/package.py @@ -31,7 +31,6 @@ class RRmarkdown(RPackage): homepage = "http://rmarkdown.rstudio.com/" url = "https://cran.r-project.org/src/contrib/rmarkdown_1.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rmarkdown" version('1.0', '264aa6a59e9680109e38df8270e14c58') diff --git a/var/spack/repos/builtin/packages/r-rminer/package.py b/var/spack/repos/builtin/packages/r-rminer/package.py index b22612a2389..4a50994db5e 100644 --- a/var/spack/repos/builtin/packages/r-rminer/package.py +++ b/var/spack/repos/builtin/packages/r-rminer/package.py @@ -32,7 +32,6 @@ class RRminer(RPackage): homepage = "http://www3.dsi.uminho.pt/pcortez/rminer.html" url = "https://cran.r-project.org/src/contrib/rminer_1.4.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rminer" version('1.4.2', '7d5d90f4ae030cf647d67aa962412c05') diff --git a/var/spack/repos/builtin/packages/r-rmpfr/package.py b/var/spack/repos/builtin/packages/r-rmpfr/package.py index c9a957ae0dc..cda1bdd1350 100644 --- a/var/spack/repos/builtin/packages/r-rmpfr/package.py +++ b/var/spack/repos/builtin/packages/r-rmpfr/package.py @@ -34,7 +34,6 @@ class RRmpfr(RPackage): homepage = "http://rmpfr.r-forge.r-project.org" url = "https://cran.r-project.org/src/contrib/Rmpfr_0.6-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/Rmpfr" version('0.6-1', '55d4ec257bd2a9233bafee9e444d0265') diff --git a/var/spack/repos/builtin/packages/r-rmpi/package.py b/var/spack/repos/builtin/packages/r-rmpi/package.py index 4ef46791ec1..d1844776e03 100644 --- a/var/spack/repos/builtin/packages/r-rmpi/package.py +++ b/var/spack/repos/builtin/packages/r-rmpi/package.py @@ -31,7 +31,6 @@ class RRmpi(RPackage): homepage = "http://www.stats.uwo.ca/faculty/yu/Rmpi" url = "https://cran.r-project.org/src/contrib/Rmpi_0.6-6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/Rmpi" version('0.6-6', '59ae8ce62ff0ff99342d53942c745779') diff --git a/var/spack/repos/builtin/packages/r-rmysql/package.py b/var/spack/repos/builtin/packages/r-rmysql/package.py index 4946b071fae..c0248e73493 100644 --- a/var/spack/repos/builtin/packages/r-rmysql/package.py +++ b/var/spack/repos/builtin/packages/r-rmysql/package.py @@ -30,7 +30,6 @@ class RRmysql(RPackage): homepage = "https://github.com/rstats-db/rmysql" url = "https://cran.r-project.org/src/contrib/RMySQL_0.10.9.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/RMySQL" version('0.10.9', '3628200a1864ac3005cfd55cc7cde17a') diff --git a/var/spack/repos/builtin/packages/r-rngtools/package.py b/var/spack/repos/builtin/packages/r-rngtools/package.py index f9edc93a2cd..4d26350cc45 100644 --- a/var/spack/repos/builtin/packages/r-rngtools/package.py +++ b/var/spack/repos/builtin/packages/r-rngtools/package.py @@ -34,7 +34,6 @@ class RRngtools(RPackage): homepage = "https://renozao.github.io/rngtools" url = "https://cran.r-project.org/src/contrib/rngtools_1.2.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rngtools" version('1.2.4', '715967f8b3af2848a76593a7c718c1cd') diff --git a/var/spack/repos/builtin/packages/r-rodbc/package.py b/var/spack/repos/builtin/packages/r-rodbc/package.py index 70e477bcb17..c48455b91c4 100644 --- a/var/spack/repos/builtin/packages/r-rodbc/package.py +++ b/var/spack/repos/builtin/packages/r-rodbc/package.py @@ -30,7 +30,6 @@ class RRodbc(RPackage): homepage = "https://cran.rstudio.com/web/packages/RODBC/" url = "https://cran.rstudio.com/src/contrib/RODBC_1.3-13.tar.gz" - list_url = "https://cran.rstudio.com/src/contrib/Archive/RODBC" version('1.3-13', 'c52ef9139c2ed85adc53ad6effa7d68e') diff --git a/var/spack/repos/builtin/packages/r-roxygen2/package.py b/var/spack/repos/builtin/packages/r-roxygen2/package.py index 1bbfeb2e87a..10b876d6869 100644 --- a/var/spack/repos/builtin/packages/r-roxygen2/package.py +++ b/var/spack/repos/builtin/packages/r-roxygen2/package.py @@ -31,7 +31,6 @@ class RRoxygen2(RPackage): homepage = "https://github.com/klutometis/roxygen" url = "https://cran.r-project.org/src/contrib/roxygen2_5.0.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/roxygen2" version('5.0.1', 'df5bdbc12fda372e427710ef1cd92ed7') diff --git a/var/spack/repos/builtin/packages/r-rpart-plot/package.py b/var/spack/repos/builtin/packages/r-rpart-plot/package.py index d7d40f21545..64559f93035 100644 --- a/var/spack/repos/builtin/packages/r-rpart-plot/package.py +++ b/var/spack/repos/builtin/packages/r-rpart-plot/package.py @@ -31,7 +31,6 @@ class RRpartPlot(RPackage): homepage = "https://cran.r-project.org/package=rpart.plot" url = "https://cran.r-project.org/src/contrib/rpart.plot_2.1.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rpart.plot" version('2.1.0', 'fb0f8edfe22c464683ee82aa429136f9') diff --git a/var/spack/repos/builtin/packages/r-rpart/package.py b/var/spack/repos/builtin/packages/r-rpart/package.py index a81c9d7d919..df8e33414a3 100644 --- a/var/spack/repos/builtin/packages/r-rpart/package.py +++ b/var/spack/repos/builtin/packages/r-rpart/package.py @@ -31,7 +31,6 @@ class RRpart(RPackage): homepage = "https://cran.r-project.org/package=rpart" url = "https://cran.r-project.org/src/contrib/rpart_4.1-10.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rpart" version('4.1-10', '15873cded4feb3ef44d63580ba3ca46e') diff --git a/var/spack/repos/builtin/packages/r-rpostgresql/package.py b/var/spack/repos/builtin/packages/r-rpostgresql/package.py index b204c538283..80331755ac8 100644 --- a/var/spack/repos/builtin/packages/r-rpostgresql/package.py +++ b/var/spack/repos/builtin/packages/r-rpostgresql/package.py @@ -38,7 +38,6 @@ class RRpostgresql(RPackage): homepage = "https://code.google.com/p/rpostgresql/" url = "https://cran.r-project.org/src/contrib/RPostgreSQL_0.4-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/RPostgreSQL" version('0.4-1', 'e7b22e212afbb2cbb88bab937f93e55a') diff --git a/var/spack/repos/builtin/packages/r-rsnns/package.py b/var/spack/repos/builtin/packages/r-rsnns/package.py index 1a0978363af..0359102983b 100644 --- a/var/spack/repos/builtin/packages/r-rsnns/package.py +++ b/var/spack/repos/builtin/packages/r-rsnns/package.py @@ -37,7 +37,6 @@ class RRsnns(RPackage): homepage = "http://sci2s.ugr.es/dicits/software/RSNNS" url = "https://cran.r-project.org/src/contrib/RSNNS_0.4-7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/RSNNS" version('0.4-7', 'ade7736611c456effb5f72e0ce0a1e6f') diff --git a/var/spack/repos/builtin/packages/r-rsqlite/package.py b/var/spack/repos/builtin/packages/r-rsqlite/package.py index c08fcac20c4..218d7e589f8 100644 --- a/var/spack/repos/builtin/packages/r-rsqlite/package.py +++ b/var/spack/repos/builtin/packages/r-rsqlite/package.py @@ -32,7 +32,6 @@ class RRsqlite(RPackage): homepage = "https://github.com/rstats-db/RSQLite" url = "https://cran.r-project.org/src/contrib/RSQLite_1.0.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/RSQLite" version('1.0.0', 'e6cbe2709612b687c13a10d30c7bad45') diff --git a/var/spack/repos/builtin/packages/r-rstan/package.py b/var/spack/repos/builtin/packages/r-rstan/package.py index e616f0a7dd3..0283c34d324 100644 --- a/var/spack/repos/builtin/packages/r-rstan/package.py +++ b/var/spack/repos/builtin/packages/r-rstan/package.py @@ -38,7 +38,6 @@ class RRstan(RPackage): homepage = "http://mc-stan.org/" url = "https://cran.r-project.org/src/contrib/rstan_2.10.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rstan" version('2.10.1', 'f5d212f6f8551bdb91fe713d05d4052a') diff --git a/var/spack/repos/builtin/packages/r-rstudioapi/package.py b/var/spack/repos/builtin/packages/r-rstudioapi/package.py index 2558a5c3f69..acf391d1365 100644 --- a/var/spack/repos/builtin/packages/r-rstudioapi/package.py +++ b/var/spack/repos/builtin/packages/r-rstudioapi/package.py @@ -31,7 +31,6 @@ class RRstudioapi(RPackage): homepage = "https://cran.r-project.org/web/packages/rstudioapi/index.html" url = "https://cran.r-project.org/src/contrib/rstudioapi_0.5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rstudioapi" version('0.6', 'fdb13bf46aab02421557e713fceab66b') version('0.5', '6ce1191da74e7bcbf06b61339486b3ba') diff --git a/var/spack/repos/builtin/packages/r-rzmq/package.py b/var/spack/repos/builtin/packages/r-rzmq/package.py index f385a139016..9142c66055b 100644 --- a/var/spack/repos/builtin/packages/r-rzmq/package.py +++ b/var/spack/repos/builtin/packages/r-rzmq/package.py @@ -31,7 +31,6 @@ class RRzmq(RPackage): homepage = "http://github.com/armstrtw/rzmq" url = "https://cran.r-project.org/src/contrib/rzmq_0.7.7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/rzmq" version('0.7.7', '8ba18fd1c222d1eb25bb622ccd2897e0') diff --git a/var/spack/repos/builtin/packages/r-sandwich/package.py b/var/spack/repos/builtin/packages/r-sandwich/package.py index bae8e82d68b..2b04a2f675c 100644 --- a/var/spack/repos/builtin/packages/r-sandwich/package.py +++ b/var/spack/repos/builtin/packages/r-sandwich/package.py @@ -31,7 +31,6 @@ class RSandwich(RPackage): homepage = "https://cran.r-project.org/package=sandwich" url = "https://cran.r-project.org/src/contrib/sandwich_2.3-4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/sandwich" version('2.3-4', 'a621dbd8a57b6e1e036496642aadc2e5') diff --git a/var/spack/repos/builtin/packages/r-scales/package.py b/var/spack/repos/builtin/packages/r-scales/package.py index e88ef144cfa..ec7f82af375 100644 --- a/var/spack/repos/builtin/packages/r-scales/package.py +++ b/var/spack/repos/builtin/packages/r-scales/package.py @@ -31,7 +31,6 @@ class RScales(RPackage): homepage = "https://github.com/hadley/scales" url = "https://cran.r-project.org/src/contrib/scales_0.4.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/scales" version('0.4.1', '3fb2218866a7fe4c1f6e66790876f85a') version('0.4.0', '7b5602d9c55595901192248bca25c099') diff --git a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py index edb92a08208..51c3b44e1c2 100644 --- a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py +++ b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py @@ -30,7 +30,6 @@ class RScatterplot3d(RPackage): homepage = "https://CRAN.R-project.org/package=scatterplot3d" url = "https://cran.r-project.org/src/contrib/scatterplot3d_0.3-40.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/scatterplot3d" version('0.3-40', '67b9ab6131d244d7fc1db39dcc911dfe') diff --git a/var/spack/repos/builtin/packages/r-segmented/package.py b/var/spack/repos/builtin/packages/r-segmented/package.py index 53bac60ca9d..415e5a4f724 100644 --- a/var/spack/repos/builtin/packages/r-segmented/package.py +++ b/var/spack/repos/builtin/packages/r-segmented/package.py @@ -32,6 +32,5 @@ class RSegmented(RPackage): homepage = "https://CRAN.R-project.org/package=segmented" url = "https://cran.r-project.org/src/contrib/segmented_0.5-1.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/segmented" version('0.5-1.4', 'f9d76ea9e22ef5f40aa126b697351cae') diff --git a/var/spack/repos/builtin/packages/r-seqinr/package.py b/var/spack/repos/builtin/packages/r-seqinr/package.py index e77914b726c..d9157a77fc1 100644 --- a/var/spack/repos/builtin/packages/r-seqinr/package.py +++ b/var/spack/repos/builtin/packages/r-seqinr/package.py @@ -32,7 +32,6 @@ class RSeqinr(RPackage): homepage = "http://seqinr.r-forge.r-project.org" url = "https://cran.r-project.org/src/contrib/seqinr_3.3-6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/seqinr" version('3.3-6', '73023d627e72021b723245665e1ad055') diff --git a/var/spack/repos/builtin/packages/r-shiny/package.py b/var/spack/repos/builtin/packages/r-shiny/package.py index b1d21c7e7c3..dd0ce0192da 100644 --- a/var/spack/repos/builtin/packages/r-shiny/package.py +++ b/var/spack/repos/builtin/packages/r-shiny/package.py @@ -33,7 +33,6 @@ class RShiny(RPackage): homepage = "http://shiny.rstudio.com/" url = "https://cran.r-project.org/src/contrib/shiny_0.13.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/shiny" version('0.13.2', 'cb5bff7a28ad59ec2883cd0912ca9611') diff --git a/var/spack/repos/builtin/packages/r-snow/package.py b/var/spack/repos/builtin/packages/r-snow/package.py index 662cdd80a74..6070e4a8826 100644 --- a/var/spack/repos/builtin/packages/r-snow/package.py +++ b/var/spack/repos/builtin/packages/r-snow/package.py @@ -30,7 +30,6 @@ class RSnow(RPackage): homepage = "https://cran.r-project.org/web/packages/snow/index.html" url = "https://cran.r-project.org/src/contrib/snow_0.4-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/snow" version('0.4-2', 'afc7b0dfd4518aedb6fc81712fd2ac70') diff --git a/var/spack/repos/builtin/packages/r-sp/package.py b/var/spack/repos/builtin/packages/r-sp/package.py index 2917f0b6b6c..66a213133c7 100644 --- a/var/spack/repos/builtin/packages/r-sp/package.py +++ b/var/spack/repos/builtin/packages/r-sp/package.py @@ -33,7 +33,6 @@ class RSp(RPackage): homepage = "https://github.com/edzer/sp/" url = "https://cran.r-project.org/src/contrib/sp_1.2-3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/sp" version('1.2-3', 'f0e24d993dec128642ee66b6b47b10c1') diff --git a/var/spack/repos/builtin/packages/r-sparsem/package.py b/var/spack/repos/builtin/packages/r-sparsem/package.py index bcd11a5c1f3..49f4f03f04e 100644 --- a/var/spack/repos/builtin/packages/r-sparsem/package.py +++ b/var/spack/repos/builtin/packages/r-sparsem/package.py @@ -32,7 +32,6 @@ class RSparsem(RPackage): homepage = "http://www.econ.uiuc.edu/~roger/research/sparse/sparse.html" url = "https://cran.r-project.org/src/contrib/SparseM_1.74.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/SparseM" version('1.74', 'a16c9b7db172dfd2b7b6508c48e81a5d') version('1.7', '7b5b0ab166a0929ef6dcfe1d97643601') diff --git a/var/spack/repos/builtin/packages/r-spdep/package.py b/var/spack/repos/builtin/packages/r-spdep/package.py index d229876ff3e..eb31f64d5d2 100644 --- a/var/spack/repos/builtin/packages/r-spdep/package.py +++ b/var/spack/repos/builtin/packages/r-spdep/package.py @@ -43,7 +43,6 @@ class RSpdep(RPackage): homepage = "https://r-forge.r-project.org/projects/spdep" url = "https://cran.r-project.org/src/contrib/spdep_0.6-13.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/spdep" version('0.6-13', 'bfc68b3016b4894b152ecec4b86f85d1') diff --git a/var/spack/repos/builtin/packages/r-stanheaders/package.py b/var/spack/repos/builtin/packages/r-stanheaders/package.py index 322356e347b..1f7e59064d1 100644 --- a/var/spack/repos/builtin/packages/r-stanheaders/package.py +++ b/var/spack/repos/builtin/packages/r-stanheaders/package.py @@ -44,6 +44,5 @@ class RStanheaders(RPackage): homepage = "http://mc-stan.org/" url = "https://cran.r-project.org/src/contrib/StanHeaders_2.10.0-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/StanHeaders" version('2.10.0-2', '9d09b1e9278f08768f7a988ad9082d57') diff --git a/var/spack/repos/builtin/packages/r-statnet-common/package.py b/var/spack/repos/builtin/packages/r-statnet-common/package.py index 68bf2c4222c..25c014790ac 100644 --- a/var/spack/repos/builtin/packages/r-statnet-common/package.py +++ b/var/spack/repos/builtin/packages/r-statnet-common/package.py @@ -31,6 +31,5 @@ class RStatnetCommon(RPackage): homepage = "http://www.statnet.org" url = "https://cran.r-project.org/src/contrib/statnet.common_3.3.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/statnet.common" version('3.3.0', '36bc11098dcd3652a4beb05c156ad6c8') diff --git a/var/spack/repos/builtin/packages/r-stringi/package.py b/var/spack/repos/builtin/packages/r-stringi/package.py index b116c328f58..15b89fe64e1 100644 --- a/var/spack/repos/builtin/packages/r-stringi/package.py +++ b/var/spack/repos/builtin/packages/r-stringi/package.py @@ -38,7 +38,6 @@ class RStringi(RPackage): homepage = "http://www.gagolewski.com/software/stringi/" url = "https://cran.r-project.org/src/contrib/stringi_1.1.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/stringi" version('1.1.2', '0ec2faa62643e1900734c0eaf5096648') version('1.1.1', '32b919ee3fa8474530c4942962a6d8d9') diff --git a/var/spack/repos/builtin/packages/r-stringr/package.py b/var/spack/repos/builtin/packages/r-stringr/package.py index 4accd04e51e..e14616cc200 100644 --- a/var/spack/repos/builtin/packages/r-stringr/package.py +++ b/var/spack/repos/builtin/packages/r-stringr/package.py @@ -34,7 +34,6 @@ class RStringr(RPackage): homepage = "https://cran.r-project.org/web/packages/stringr/index.html" url = "https://cran.r-project.org/src/contrib/stringr_1.1.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/stringr" version('1.1.0', '47973a33944c6d5db9524b1e835b8a5d') version('1.0.0', '5ca977c90351f78b1b888b379114a7b4') diff --git a/var/spack/repos/builtin/packages/r-strucchange/package.py b/var/spack/repos/builtin/packages/r-strucchange/package.py index 6d00d314020..651e8aee4ee 100644 --- a/var/spack/repos/builtin/packages/r-strucchange/package.py +++ b/var/spack/repos/builtin/packages/r-strucchange/package.py @@ -31,7 +31,6 @@ class RStrucchange(RPackage): homepage = "https://cran.r-project.org/package=strucchange" url = "https://cran.r-project.org/src/contrib/strucchange_1.5-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/strucchange" version('1.5-1', 'fc751fc011df9c8df82d577298cb8395') diff --git a/var/spack/repos/builtin/packages/r-survey/package.py b/var/spack/repos/builtin/packages/r-survey/package.py index 249cad81785..b13dbe3f7e0 100644 --- a/var/spack/repos/builtin/packages/r-survey/package.py +++ b/var/spack/repos/builtin/packages/r-survey/package.py @@ -36,6 +36,5 @@ class RSurvey(RPackage): homepage = "http://r-survey.r-forge.r-project.org/survey/" url = "https://cran.r-project.org/src/contrib/survey_3.30-3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/survey" version('3.30-3', 'c70cdae9cb43d35abddd11173d64cad0') diff --git a/var/spack/repos/builtin/packages/r-survival/package.py b/var/spack/repos/builtin/packages/r-survival/package.py index 067cdcfd6bf..62477d53143 100644 --- a/var/spack/repos/builtin/packages/r-survival/package.py +++ b/var/spack/repos/builtin/packages/r-survival/package.py @@ -32,7 +32,6 @@ class RSurvival(RPackage): homepage = "https://cran.r-project.org/package=survival" url = "https://cran.r-project.org/src/contrib/survival_2.40-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/survival" version('2.40-1', 'a2474b656cd723791268e3114481b8a7') version('2.39-5', 'a3cc6b5762e8c5c0bb9e64a276710be2') diff --git a/var/spack/repos/builtin/packages/r-tarifx/package.py b/var/spack/repos/builtin/packages/r-tarifx/package.py index 1fb2d35b1d4..f935989a38f 100644 --- a/var/spack/repos/builtin/packages/r-tarifx/package.py +++ b/var/spack/repos/builtin/packages/r-tarifx/package.py @@ -30,7 +30,6 @@ class RTarifx(RPackage): homepage = "https://cran.r-project.org/package=taRifx" url = "https://cran.r-project.org/src/contrib/taRifx_1.0.6.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/taRifx" version('1.0.6', '7e782e04bd69d929b29f91553382e6a2') diff --git a/var/spack/repos/builtin/packages/r-testit/package.py b/var/spack/repos/builtin/packages/r-testit/package.py index 4d99c388e68..39bd69ca38a 100644 --- a/var/spack/repos/builtin/packages/r-testit/package.py +++ b/var/spack/repos/builtin/packages/r-testit/package.py @@ -32,6 +32,5 @@ class RTestit(RPackage): homepage = "https://github.com/yihui/testit" url = "https://cran.r-project.org/src/contrib/testit_0.5.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/testit" version('0.5', 'f206d3cbdc5174e353d2d05ba6a12e59') diff --git a/var/spack/repos/builtin/packages/r-testthat/package.py b/var/spack/repos/builtin/packages/r-testthat/package.py index 62409912f71..87cdb93ed47 100644 --- a/var/spack/repos/builtin/packages/r-testthat/package.py +++ b/var/spack/repos/builtin/packages/r-testthat/package.py @@ -31,7 +31,6 @@ class RTestthat(RPackage): homepage = "https://github.com/hadley/testthat" url = "https://cran.r-project.org/src/contrib/testthat_1.0.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/testthat" version('1.0.2', '6c6a90c8db860292df5784a70e07b8dc') diff --git a/var/spack/repos/builtin/packages/r-th-data/package.py b/var/spack/repos/builtin/packages/r-th-data/package.py index b9c5fab0d07..39eed23fc70 100644 --- a/var/spack/repos/builtin/packages/r-th-data/package.py +++ b/var/spack/repos/builtin/packages/r-th-data/package.py @@ -30,7 +30,6 @@ class RThData(RPackage): homepage = "https://cran.r-project.org/package=TH.data" url = "https://cran.r-project.org/src/contrib/TH.data_1.0-8.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/TH.data" version('1.0-8', '2cc20acc8b470dff1202749b4bea55c4') version('1.0-7', '3e8b6b1a4699544f175215aed7039a94') diff --git a/var/spack/repos/builtin/packages/r-threejs/package.py b/var/spack/repos/builtin/packages/r-threejs/package.py index 50b484dc25d..c318b0c4350 100644 --- a/var/spack/repos/builtin/packages/r-threejs/package.py +++ b/var/spack/repos/builtin/packages/r-threejs/package.py @@ -31,7 +31,6 @@ class RThreejs(RPackage): homepage = "http://bwlewis.github.io/rthreejs" url = "https://cran.r-project.org/src/contrib/threejs_0.2.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/threejs" version('0.2.2', '35c179b10813c5e4bd3e7827fae6627b') diff --git a/var/spack/repos/builtin/packages/r-tibble/package.py b/var/spack/repos/builtin/packages/r-tibble/package.py index a06b33e7f21..50d75bae96a 100644 --- a/var/spack/repos/builtin/packages/r-tibble/package.py +++ b/var/spack/repos/builtin/packages/r-tibble/package.py @@ -31,7 +31,6 @@ class RTibble(RPackage): homepage = "https://github.com/hadley/tibble" url = "https://cran.r-project.org/src/contrib/tibble_1.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/tibble" version('1.2', 'bdbc3d67aa16860741add6d6ec20ea13') version('1.1', '2fe9f806109d0b7fadafb1ffafea4cb8') diff --git a/var/spack/repos/builtin/packages/r-tidyr/package.py b/var/spack/repos/builtin/packages/r-tidyr/package.py index 1285e5e9ae1..e4334bac118 100644 --- a/var/spack/repos/builtin/packages/r-tidyr/package.py +++ b/var/spack/repos/builtin/packages/r-tidyr/package.py @@ -32,7 +32,6 @@ class RTidyr(RPackage): homepage = "https://github.com/hadley/tidyr" url = "https://cran.r-project.org/src/contrib/tidyr_0.5.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/tidyr" version('0.5.1', '3cadc869510c054ed93d374ab44120bd') diff --git a/var/spack/repos/builtin/packages/r-trimcluster/package.py b/var/spack/repos/builtin/packages/r-trimcluster/package.py index 770718ae009..bb64a9c5dfb 100644 --- a/var/spack/repos/builtin/packages/r-trimcluster/package.py +++ b/var/spack/repos/builtin/packages/r-trimcluster/package.py @@ -30,7 +30,6 @@ class RTrimcluster(RPackage): homepage = "http://www.homepages.ucl.ac.uk/~ucakche" url = "https://cran.r-project.org/src/contrib/trimcluster_0.1-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/trimcluster" version('0.1-2', '7617920e224bd18f5b87db38a3116ec2') diff --git a/var/spack/repos/builtin/packages/r-trust/package.py b/var/spack/repos/builtin/packages/r-trust/package.py index 622a0325a7e..1fe6676b8f6 100644 --- a/var/spack/repos/builtin/packages/r-trust/package.py +++ b/var/spack/repos/builtin/packages/r-trust/package.py @@ -31,6 +31,5 @@ class RTrust(RPackage): homepage = "http://www.stat.umn.edu/geyer/trust" url = "https://cran.r-project.org/src/contrib/trust_0.1-7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/trust" version('0.1-7', '7e218b3a6b33bd77bd7e86dc6360418d') diff --git a/var/spack/repos/builtin/packages/r-ttr/package.py b/var/spack/repos/builtin/packages/r-ttr/package.py index 79429f5286a..1db3f3c10cf 100644 --- a/var/spack/repos/builtin/packages/r-ttr/package.py +++ b/var/spack/repos/builtin/packages/r-ttr/package.py @@ -30,7 +30,6 @@ class RTtr(RPackage): homepage = "https://github.com/joshuaulrich/TTR" url = "https://cran.r-project.org/src/contrib/TTR_0.23-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/TTR" version('0.23-1', '35f693ac0d97e8ec742ebea2da222986') diff --git a/var/spack/repos/builtin/packages/r-uuid/package.py b/var/spack/repos/builtin/packages/r-uuid/package.py index b9dcc12629f..638f493ace4 100644 --- a/var/spack/repos/builtin/packages/r-uuid/package.py +++ b/var/spack/repos/builtin/packages/r-uuid/package.py @@ -32,6 +32,5 @@ class RUuid(RPackage): homepage = "http://www.rforge.net/uuid" url = "https://cran.rstudio.com/src/contrib/uuid_0.1-2.tar.gz" - list_url = "https://cran.rstudio.com/src/contrib/Archive/uuid" version('0.1-2', 'f97d000c0b16bca455fb5bf2cd668ddf') diff --git a/var/spack/repos/builtin/packages/r-vcd/package.py b/var/spack/repos/builtin/packages/r-vcd/package.py index 56a2ebdfa77..7f785f81584 100644 --- a/var/spack/repos/builtin/packages/r-vcd/package.py +++ b/var/spack/repos/builtin/packages/r-vcd/package.py @@ -35,7 +35,6 @@ class RVcd(RPackage): homepage = "https://cran.r-project.org/package=vcd" url = "https://cran.r-project.org/src/contrib/vcd_1.4-1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/vcd" version('1.4-1', '7db150a77f173f85b69a1f86f73f8f02') diff --git a/var/spack/repos/builtin/packages/r-vegan/package.py b/var/spack/repos/builtin/packages/r-vegan/package.py index 4892193e595..bd1134e8bef 100644 --- a/var/spack/repos/builtin/packages/r-vegan/package.py +++ b/var/spack/repos/builtin/packages/r-vegan/package.py @@ -31,7 +31,6 @@ class RVegan(RPackage): homepage = "https://github.com/vegandevs/vegan" url = "https://cran.r-project.org/src/contrib/vegan_2.4-3.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/vegan" version('2.4-3', 'db17d4c4b9a4d421246abd5b36b00fec') diff --git a/var/spack/repos/builtin/packages/r-viridis/package.py b/var/spack/repos/builtin/packages/r-viridis/package.py index 55f879e90e7..bb0ac670a63 100644 --- a/var/spack/repos/builtin/packages/r-viridis/package.py +++ b/var/spack/repos/builtin/packages/r-viridis/package.py @@ -30,7 +30,6 @@ class RViridis(RPackage): homepage = "https://github.com/sjmgarnier/viridis" url = "https://cran.r-project.org/src/contrib/viridis_0.4.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/viridis" version('0.4.0', 'f874384cbedf459f6c309ddb40b354ea') diff --git a/var/spack/repos/builtin/packages/r-viridislite/package.py b/var/spack/repos/builtin/packages/r-viridislite/package.py index fc65b7f3931..e1e4f50d1c3 100644 --- a/var/spack/repos/builtin/packages/r-viridislite/package.py +++ b/var/spack/repos/builtin/packages/r-viridislite/package.py @@ -30,7 +30,6 @@ class RViridislite(RPackage): homepage = "https://github.com/sjmgarnier/viridisLite" url = "https://cran.r-project.org/src/contrib/viridisLite_0.2.0.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/viridisLite" version('0.2.0', '04a04415cf651a2b5f964b261896c0fb') diff --git a/var/spack/repos/builtin/packages/r-visnetwork/package.py b/var/spack/repos/builtin/packages/r-visnetwork/package.py index ea0b972bf1c..6618bf8b076 100644 --- a/var/spack/repos/builtin/packages/r-visnetwork/package.py +++ b/var/spack/repos/builtin/packages/r-visnetwork/package.py @@ -31,7 +31,6 @@ class RVisnetwork(RPackage): homepage = "https://github.com/datastorm-open/visNetwork" url = "https://cran.r-project.org/src/contrib/visNetwork_1.0.1.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/visNetwork" version('1.0.1', 'dfc9664a5165134d8dbdcd949ad73cf7') diff --git a/var/spack/repos/builtin/packages/r-whisker/package.py b/var/spack/repos/builtin/packages/r-whisker/package.py index 17f904f5c3c..44b8c6fc08b 100644 --- a/var/spack/repos/builtin/packages/r-whisker/package.py +++ b/var/spack/repos/builtin/packages/r-whisker/package.py @@ -31,6 +31,5 @@ class RWhisker(RPackage): homepage = "http://github.com/edwindj/whisker" url = "https://cran.r-project.org/src/contrib/whisker_0.3-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/whisker" version('0.3-2', 'c4b9bf9a22e69ce003fe68663ab5e8e6') diff --git a/var/spack/repos/builtin/packages/r-withr/package.py b/var/spack/repos/builtin/packages/r-withr/package.py index 082b94e2a62..f9de7d42cd0 100644 --- a/var/spack/repos/builtin/packages/r-withr/package.py +++ b/var/spack/repos/builtin/packages/r-withr/package.py @@ -33,7 +33,6 @@ class RWithr(RPackage): homepage = "http://github.com/jimhester/withr" url = "https://cran.r-project.org/src/contrib/withr_1.0.2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/withr" version('1.0.2', 'ca52b729af9bbaa14fc8b7bafe38663c') version('1.0.1', 'ac38af2c6f74027c9592dd8f0acb7598') diff --git a/var/spack/repos/builtin/packages/r-xgboost/package.py b/var/spack/repos/builtin/packages/r-xgboost/package.py index 4246d73e498..eb6dacab345 100644 --- a/var/spack/repos/builtin/packages/r-xgboost/package.py +++ b/var/spack/repos/builtin/packages/r-xgboost/package.py @@ -38,7 +38,6 @@ class RXgboost(RPackage): homepage = "https://github.com/dmlc/xgboost" url = "https://cran.r-project.org/src/contrib/xgboost_0.6-4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/xgboost" version('0.6-4', '86e517e3ce39f8a01de796920f6b425e') version('0.4-4', 'c24d3076058101a71de4b8af8806697c') diff --git a/var/spack/repos/builtin/packages/r-xlconnect/package.py b/var/spack/repos/builtin/packages/r-xlconnect/package.py index 1863997ad79..5f23a9e2754 100644 --- a/var/spack/repos/builtin/packages/r-xlconnect/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnect/package.py @@ -31,7 +31,6 @@ class RXlconnect(RPackage): homepage = "http://miraisolutions.wordpress.com/" url = "https://cran.r-project.org/src/contrib/XLConnect_0.2-11.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/XLConnect" version('0.2-12', '3340d05d259f0a41262eab4ed32617ad') version('0.2-11', '9d1769a103cda05665df399cc335017d') diff --git a/var/spack/repos/builtin/packages/r-xlconnectjars/package.py b/var/spack/repos/builtin/packages/r-xlconnectjars/package.py index 0200b00a0fa..1e8b0b4f69e 100644 --- a/var/spack/repos/builtin/packages/r-xlconnectjars/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnectjars/package.py @@ -30,7 +30,6 @@ class RXlconnectjars(RPackage): homepage = "http://miraisolutions.wordpress.com/" url = "https://cran.r-project.org/src/contrib/XLConnectJars_0.2-9.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/XLConnectJars" version('0.2-12', '6984e5140cd1c887c017ef6f88cbba81') version('0.2-9', 'e6d6b1acfede26acaa616ee421bd30fb') diff --git a/var/spack/repos/builtin/packages/r-xlsx/package.py b/var/spack/repos/builtin/packages/r-xlsx/package.py index e16a582306b..35c8d35d95b 100644 --- a/var/spack/repos/builtin/packages/r-xlsx/package.py +++ b/var/spack/repos/builtin/packages/r-xlsx/package.py @@ -31,7 +31,6 @@ class RXlsx(RPackage): homepage = "http://code.google.com/p/rexcel/" url = "https://cran.rstudio.com/src/contrib/xlsx_0.5.7.tar.gz" - list_url = "https://cran.rstudio.com/src/contrib/Archive/xlsx" version('0.5.7', '36b1b16f29c54b6089b1dae923180dd5') diff --git a/var/spack/repos/builtin/packages/r-xlsxjars/package.py b/var/spack/repos/builtin/packages/r-xlsxjars/package.py index 1c16c75a9d4..8d351d69b62 100644 --- a/var/spack/repos/builtin/packages/r-xlsxjars/package.py +++ b/var/spack/repos/builtin/packages/r-xlsxjars/package.py @@ -31,7 +31,6 @@ class RXlsxjars(RPackage): homepage = "https://cran.rstudio.com/web/packages/xlsxjars/index.html" url = "https://cran.rstudio.com/src/contrib/xlsxjars_0.6.1.tar.gz" - list_url = "https://cran.rstudio.com/src/contrib/Archive/xlsxjars" version('0.6.1', '5a1721d5733cb42f3a29e3f353e39166') diff --git a/var/spack/repos/builtin/packages/r-xml/package.py b/var/spack/repos/builtin/packages/r-xml/package.py index 2fe2a8a05b8..9ec3d8cf1e1 100644 --- a/var/spack/repos/builtin/packages/r-xml/package.py +++ b/var/spack/repos/builtin/packages/r-xml/package.py @@ -32,7 +32,6 @@ class RXml(RPackage): homepage = "http://www.omegahat.net/RSXML" url = "https://cran.r-project.org/src/contrib/XML_3.98-1.4.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/XML" version('3.98-1.5', 'd1cfcd56f7aec96a84ffca91aea507ee') version('3.98-1.4', '1a7f3ce6f264eeb109bfa57bedb26c14') diff --git a/var/spack/repos/builtin/packages/r-xtable/package.py b/var/spack/repos/builtin/packages/r-xtable/package.py index 66d8687b6dd..462a97b451f 100644 --- a/var/spack/repos/builtin/packages/r-xtable/package.py +++ b/var/spack/repos/builtin/packages/r-xtable/package.py @@ -30,6 +30,5 @@ class RXtable(RPackage): homepage = "http://xtable.r-forge.r-project.org/" url = "https://cran.r-project.org/src/contrib/xtable_1.8-2.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/xtable" version('1.8-2', '239e4825cd046156a67efae3aac01d86') diff --git a/var/spack/repos/builtin/packages/r-xts/package.py b/var/spack/repos/builtin/packages/r-xts/package.py index 1cedec1d422..a3a4ce7f587 100644 --- a/var/spack/repos/builtin/packages/r-xts/package.py +++ b/var/spack/repos/builtin/packages/r-xts/package.py @@ -33,7 +33,6 @@ class RXts(RPackage): homepage = "http://r-forge.r-project.org/projects/xts/" url = "https://cran.r-project.org/src/contrib/xts_0.9-7.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/xts" version('0.9-7', 'a232e94aebfa654653a7d88a0503537b') diff --git a/var/spack/repos/builtin/packages/r-yaml/package.py b/var/spack/repos/builtin/packages/r-yaml/package.py index c812ea8ca26..79cc0b392f5 100644 --- a/var/spack/repos/builtin/packages/r-yaml/package.py +++ b/var/spack/repos/builtin/packages/r-yaml/package.py @@ -31,6 +31,5 @@ class RYaml(RPackage): homepage = "https://cran.r-project.org/web/packages/yaml/index.html" url = "https://cran.r-project.org/src/contrib/yaml_2.1.13.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/yaml" version('2.1.13', 'f2203ea395adaff6bd09134666191d9a') diff --git a/var/spack/repos/builtin/packages/r-zoo/package.py b/var/spack/repos/builtin/packages/r-zoo/package.py index 7418d36a64d..0012a2d29a4 100644 --- a/var/spack/repos/builtin/packages/r-zoo/package.py +++ b/var/spack/repos/builtin/packages/r-zoo/package.py @@ -34,7 +34,6 @@ class RZoo(RPackage): homepage = "http://zoo.r-forge.r-project.org/" url = "https://cran.r-project.org/src/contrib/zoo_1.7-14.tar.gz" - list_url = "https://cran.r-project.org/src/contrib/Archive/zoo" version('1.7-14', '8c577a7c1e535c899ab14177b1039c32') version('1.7-13', '99521dfa4c668e692720cefcc5a1bf30') diff --git a/var/spack/repos/builtin/packages/spindle/package.py b/var/spack/repos/builtin/packages/spindle/package.py index c23fb56f034..ec996140b12 100644 --- a/var/spack/repos/builtin/packages/spindle/package.py +++ b/var/spack/repos/builtin/packages/spindle/package.py @@ -33,7 +33,6 @@ class Spindle(AutotoolsPackage): """ homepage = "https://computation.llnl.gov/project/spindle/" url = "https://github.com/hpc/Spindle/archive/v0.8.1.tar.gz" - list_url = "https://github.com/hpc/Spindle/releases" version('0.8.1', 'f11793a6b9d8df2cd231fccb2857d912') From c67f6477854091de09ac650352db5ce97b3c76f5 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 9 Jun 2017 21:02:16 -0700 Subject: [PATCH 1039/2394] Move description to top of `spack info` (#4475) --- lib/spack/spack/cmd/info.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index f0cddad2e23..43d086d4b3f 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -131,6 +131,14 @@ def print_text_info(pkg): header = "{0}: ".format(pkg.build_system_class) print(header, pkg.name) + + print() + print("Description:") + if pkg.__doc__: + print(pkg.format_doc(indent=4)) + else: + print(" None") + whitespaces = ''.join([' '] * (len(header) - len("Homepage: "))) print("Homepage:", whitespaces, pkg.homepage) @@ -183,13 +191,6 @@ def print_text_info(pkg): else: print(" None") - print() - print("Description:") - if pkg.__doc__: - print(pkg.format_doc(indent=4)) - else: - print(" None") - def info(parser, args): pkg = spack.repo.get(args.name) From a5c6f0412be6e4450ec9f093d87aa7b7e3083c1c Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Sat, 10 Jun 2017 23:16:10 +1000 Subject: [PATCH 1040/2394] gcc: use isl@0.14 for gcc@5 (#4474) --- var/spack/repos/builtin/packages/gcc/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index dbdf4833b34..5560e36457a 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -78,7 +78,8 @@ class Gcc(AutotoolsPackage): depends_on('gmp@4.3.2:') depends_on('mpfr@2.4.2:') depends_on('mpc@0.8.1:', when='@4.5:') - depends_on('isl@0.15:', when='@5.0:') + depends_on('isl@0.14', when='@5:5.9') + depends_on('isl@0.15:', when='@6:') depends_on('zlib', when='@6:') depends_on('gnat', when='languages=ada') depends_on('binutils~libiberty', when='+binutils') From 4db107353e546d2a2367cd04bfe478ff1e9168c5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 11 Jun 2017 11:47:40 -0500 Subject: [PATCH 1041/2394] Convert elk to MakefilePackage (#4477) --- var/spack/repos/builtin/packages/elk/package.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/elk/package.py b/var/spack/repos/builtin/packages/elk/package.py index 148fbd999ab..23948a1a065 100644 --- a/var/spack/repos/builtin/packages/elk/package.py +++ b/var/spack/repos/builtin/packages/elk/package.py @@ -22,11 +22,10 @@ # 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 spack from spack import * -class Elk(Package): +class Elk(MakefilePackage): '''An all-electron full-potential linearised augmented-plane wave (FP-LAPW) code with many advanced features.''' @@ -60,7 +59,7 @@ class Elk(Package): # Cannot be built in parallel parallel = False - def configure(self, spec): + def edit(self, spec, prefix): # Dictionary of configuration options config = { 'MAKE': 'make', @@ -110,8 +109,8 @@ def configure(self, spec): config['F90'] = spec['mpi'].mpifc config['F77'] = spec['mpi'].mpif77 else: - config['F90'] = join_path(spack.build_env_path, 'f90') - config['F77'] = join_path(spack.build_env_path, 'f77') + config['F90'] = spack_fc + config['F77'] = spack_f77 config['SRC_MPI'] = 'mpi_stub.f90' # OpenMP support @@ -141,14 +140,8 @@ def configure(self, spec): inc.write('{0} = {1}\n'.format(key, config[key])) def install(self, spec, prefix): - # Elk only provides an interactive setup script - self.configure(spec) - - make() - make('test') - # The Elk Makefile does not provide an install target - mkdirp(prefix.bin) + mkdir(prefix.bin) install('src/elk', prefix.bin) install('src/eos/eos', prefix.bin) From f127c4ed27ba6eda85939ef6516481e103582115 Mon Sep 17 00:00:00 2001 From: Robert Pavel Date: Sun, 11 Jun 2017 16:21:51 -0600 Subject: [PATCH 1042/2394] New Package: bml (#4213) * New Package: lanl-bml Added LANL's BML library as Spack Package as dependency for future packages * Adjusted lanl-bml versions Specified current master as develop and added v1.1.0 tagged version * Renamed lanlbml package to bml --- .../repos/builtin/packages/bml/package.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 var/spack/repos/builtin/packages/bml/package.py diff --git a/var/spack/repos/builtin/packages/bml/package.py b/var/spack/repos/builtin/packages/bml/package.py new file mode 100644 index 00000000000..e881a0e93c3 --- /dev/null +++ b/var/spack/repos/builtin/packages/bml/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Bml(CMakePackage): + """The basic matrix library (bml) is a collection of various matrix data + formats (in dense and sparse) and their associated algorithms for basic + matrix operations.""" + + homepage = "https://github.com/qmmd/bml" + url = "https://github.com/qmmd/bml" + + version('develop', git='https://github.com/qmmd/bml', branch='master') + version('1.1.0', git='https://github.com/qmmd/bml', tag='v1.1.0') + + variant('debug', default=False, description='Build debug version') + + depends_on("blas") + depends_on("lapack") + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' From ab9155eb377137e76986bfbd430909a2b461871f Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 12 Jun 2017 16:01:17 +0200 Subject: [PATCH 1043/2394] ISAAC Server: Less Strict Deps (#4481) The dependencies of the server packages were overly strict and pulled in too many dependencies. This fixes it. --- var/spack/repos/builtin/packages/isaac-server/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/isaac-server/package.py b/var/spack/repos/builtin/packages/isaac-server/package.py index 8e345b1ea2e..c88a465e21e 100644 --- a/var/spack/repos/builtin/packages/isaac-server/package.py +++ b/var/spack/repos/builtin/packages/isaac-server/package.py @@ -45,6 +45,8 @@ def root_cmakelists_dir(self): # 'Support for RTP streams, e.g. to Twitch or Youtube') depends_on('cmake@3.3:', type='build') - depends_on('isaac') - depends_on('libwebsockets') + depends_on('libjpeg-turbo', type='link') + depends_on('jansson', type='link') + depends_on('boost@1.56:', type='link') + depends_on('libwebsockets', type='link') # depends_on('gstreamer@1.0', when='+gstreamer') From 0de653ff016003c62b5e491646f62b3d644b835f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 12 Jun 2017 09:47:46 -0500 Subject: [PATCH 1044/2394] Add an installcheck phase to MakefilePackage (#4476) * Add an installcheck phase to MakefilePackage * Minor changes to ESMF --- lib/spack/spack/build_systems/makefile.py | 12 +++++++++ .../repos/builtin/packages/esmf/package.py | 26 +++++++------------ 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/lib/spack/spack/build_systems/makefile.py b/lib/spack/spack/build_systems/makefile.py index a014ed7c156..2311158bfea 100644 --- a/lib/spack/spack/build_systems/makefile.py +++ b/lib/spack/spack/build_systems/makefile.py @@ -75,6 +75,9 @@ class MakefilePackage(PackageBase): #: Callback names for build-time test build_time_test_callbacks = ['check'] + #: Callback names for install-time test + install_time_test_callbacks = ['installcheck'] + @property def build_directory(self): """Returns the directory containing the main Makefile @@ -113,5 +116,14 @@ def check(self): self._if_make_target_execute('test') self._if_make_target_execute('check') + run_after('install')(PackageBase._run_default_install_time_test_callbacks) + + def installcheck(self): + """Searches the Makefile for an ``installcheck`` target + and runs it if found. + """ + with working_dir(self.build_directory): + self._if_make_target_execute('installcheck') + # Check that self.prefix is there after installation run_after('install')(PackageBase.sanity_check_prefix) diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index 9d68d17846b..9c8b9d2c2e5 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -26,7 +26,7 @@ import os -class Esmf(Package): +class Esmf(MakefilePackage): """The Earth System Modeling Framework (ESMF) is high-performance, flexible software infrastructure for building and coupling weather, climate, and related Earth science applications. The ESMF defines an architecture for @@ -47,25 +47,28 @@ class Esmf(Package): variant('debug', default=False, description='Make a debuggable version of the library') # Required dependencies - depends_on('mpi', when='+mpi') depends_on('zlib') depends_on('libxml2') - # depends_on('perl', type='test') # TODO: Add a test deptype # Optional dependencies + depends_on('mpi', when='+mpi') depends_on('lapack@3:', when='+lapack') depends_on('netcdf@3.6:', when='+netcdf') depends_on('netcdf-fortran@3.6:', when='+netcdf') depends_on('parallel-netcdf@1.2.0:', when='+pnetcdf') depends_on('xerces-c@3.1.0:', when='+xerces') + # Testing dependencies + # depends_on('perl', type='test') # TODO: Add a test deptype + # NOTE: ESMF cannot be installed with GCC 6. It uses constructs that # are no longer valid in GCC 6. GCC 4 is recommended for installation. + conflicts('%gcc@6:') def url_for_version(self, version): return "http://www.earthsystemmodeling.org/esmf_releases/non_public/ESMF_{0}/esmf_{0}_src.tar.gz".format(version.underscored) - def install(self, spec, prefix): + def edit(self, spec, prefix): # Installation instructions can be found at: # http://www.earthsystemmodeling.org/esmf_releases/last_built/ESMF_usrdoc/node9.html @@ -238,16 +241,5 @@ def install(self, spec, prefix): # ESMF_XERCES_INCLUDE # ESMF_XERCES_LIBPATH - ################ - # Installation # - ################ - - make() - - if self.run_tests: - make('check', parallel=False) - - make('install') - - if self.run_tests: - make('installcheck') + def check(self): + make('check', parallel=False) From 14aa3b63e3b61ce3e6a3bb7a75ad3f85ab99ea71 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 12 Jun 2017 09:48:20 -0500 Subject: [PATCH 1045/2394] Add list_url for packages from http://ab-initio.mit.edu/ (#4471) --- .../repos/builtin/packages/harminv/package.py | 17 +++++++-------- .../repos/builtin/packages/libctl/package.py | 21 ++++++++++--------- .../repos/builtin/packages/meep/package.py | 21 +++++++------------ 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/var/spack/repos/builtin/packages/harminv/package.py b/var/spack/repos/builtin/packages/harminv/package.py index 184535ebb0c..67baf42b5d8 100644 --- a/var/spack/repos/builtin/packages/harminv/package.py +++ b/var/spack/repos/builtin/packages/harminv/package.py @@ -25,7 +25,7 @@ from spack import * -class Harminv(Package): +class Harminv(AutotoolsPackage): """Harminv is a free program (and accompanying library) to solve the problem of harmonic inversion - given a discrete-time, finite-length signal that consists of a sum of finitely-many sinusoids (possibly @@ -34,21 +34,18 @@ class Harminv(Package): homepage = "http://ab-initio.mit.edu/wiki/index.php/Harminv" url = "http://ab-initio.mit.edu/harminv/harminv-1.4.tar.gz" + list_url = "http://ab-initio.mit.edu/harminv/old" version('1.4', 'b95e24a9bc7e07d3d2202d1605e9e86f') depends_on('blas') depends_on('lapack') - def install(self, spec, prefix): - config_args = [ - '--prefix={0}'.format(prefix), + def configure_args(self): + spec = self.spec + + return [ + '--enable-shared', '--with-blas={0}'.format(spec['blas'].prefix.lib), '--with-lapack={0}'.format(spec['lapack'].prefix.lib), - '--enable-shared' ] - - configure(*config_args) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/libctl/package.py b/var/spack/repos/builtin/packages/libctl/package.py index 53d30ce5c3c..7357939c1b2 100644 --- a/var/spack/repos/builtin/packages/libctl/package.py +++ b/var/spack/repos/builtin/packages/libctl/package.py @@ -25,24 +25,25 @@ from spack import * -class Libctl(Package): +class Libctl(AutotoolsPackage): """libctl is a free Guile-based library implementing flexible control files for scientific simulations.""" homepage = "http://ab-initio.mit.edu/wiki/index.php/Libctl" url = "http://ab-initio.mit.edu/libctl/libctl-3.2.2.tar.gz" + list_url = "http://ab-initio.mit.edu/libctl/old" version('3.2.2', '5fd7634dc9ae8e7fa70a68473b9cbb68') depends_on('guile') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix), - '--enable-shared', - 'GUILE={0}'.format(join_path( - spec['guile'].prefix.bin, 'guile')), - 'GUILE_CONFIG={0}'.format(join_path( - spec['guile'].prefix.bin, 'guile-config'))) + def configure_args(self): + spec = self.spec - make() - make('install') + return [ + '--enable-shared', + 'GUILE={0}'.format(join_path( + spec['guile'].prefix.bin, 'guile')), + 'GUILE_CONFIG={0}'.format(join_path( + spec['guile'].prefix.bin, 'guile-config')), + ] diff --git a/var/spack/repos/builtin/packages/meep/package.py b/var/spack/repos/builtin/packages/meep/package.py index 00b9c4ea091..f64edd767b0 100644 --- a/var/spack/repos/builtin/packages/meep/package.py +++ b/var/spack/repos/builtin/packages/meep/package.py @@ -25,7 +25,7 @@ from spack import * -class Meep(Package): +class Meep(AutotoolsPackage): """Meep (or MEEP) is a free finite-difference time-domain (FDTD) simulation software package developed at MIT to model electromagnetic systems.""" @@ -56,16 +56,10 @@ class Meep(Package): depends_on('hdf5+mpi', when='+hdf5+mpi') depends_on('gsl', when='+gsl') - def url_for_version(self, version): - base_url = "http://ab-initio.mit.edu/meep" - if version > Version('1.1.1'): - return "{0}/meep-{1}.tar.gz".format(base_url, version) - else: - return "{0}/old/meep-{1}.tar.gz".format(base_url, version) + def configure_args(self): + spec = self.spec - def install(self, spec, prefix): config_args = [ - '--prefix={0}'.format(prefix), '--enable-shared' ] @@ -97,15 +91,14 @@ def install(self, spec, prefix): else: config_args.append('--without-hdf5') - configure(*config_args) + return config_args - make() + def check(self): + spec = self.spec # aniso_disp test fails unless installed with harminv # near2far test fails unless installed with gsl - if self.run_tests and '+harminv' in spec and '+gsl' in spec: + if '+harminv' in spec and '+gsl' in spec: # Most tests fail when run in parallel # 2D_convergence tests still fails to converge for unknown reasons make('check', parallel=False) - - make('install') From d450e4a93baefcd0c2995ba1c4080c8215864628 Mon Sep 17 00:00:00 2001 From: Diana Bite Date: Tue, 13 Jun 2017 13:43:54 +0100 Subject: [PATCH 1046/2394] czmq: Fix invocation when building with clang. (#4479) Also bump to latest stable version. --- var/spack/repos/builtin/packages/czmq/package.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/czmq/package.py b/var/spack/repos/builtin/packages/czmq/package.py index fd50197326d..c5803fb3ad6 100644 --- a/var/spack/repos/builtin/packages/czmq/package.py +++ b/var/spack/repos/builtin/packages/czmq/package.py @@ -28,13 +28,20 @@ class Czmq(AutotoolsPackage): """ A C interface to the ZMQ library """ homepage = "http://czmq.zeromq.org" - url = "https://github.com/zeromq/czmq/archive/v3.0.2.tar.gz" + url = "https://github.com/zeromq/czmq/archive/v4.0.2.tar.gz" - version('3.0.2', '23e9885f7ee3ce88d99d0425f52e9be1', - url='https://github.com/zeromq/czmq/archive/v3.0.2.tar.gz') + version('4.0.2', 'a65317a3fb8238cf70e3e992e381f9cc') + version('3.0.2', '23e9885f7ee3ce88d99d0425f52e9be1') depends_on('libtool', type='build') depends_on('automake', type='build') depends_on('autoconf', type='build') depends_on('pkg-config', type='build') depends_on('zeromq') + + def configure_args(self): + config_args = [] + if 'clang' in self.compiler.name: + config_args.append("CFLAGS=-Wno-gnu") + config_args.append("CXXFLAS=-Wno-gnu") + return config_args From 181fd95057018b4e26d3fcbc76dd8d84f56cd3eb Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 13 Jun 2017 15:06:44 +0200 Subject: [PATCH 1047/2394] Fix building shared libraries for gmp (#4464) If specific compiler flags are set, gmp will not build a shared library, causing failures further down the line. --- var/spack/repos/builtin/packages/gmp/package.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/var/spack/repos/builtin/packages/gmp/package.py b/var/spack/repos/builtin/packages/gmp/package.py index b318273b0b6..023ecd6069a 100644 --- a/var/spack/repos/builtin/packages/gmp/package.py +++ b/var/spack/repos/builtin/packages/gmp/package.py @@ -38,8 +38,15 @@ class Gmp(AutotoolsPackage): version('6.0.0a', 'b7ff2d88cae7f8085bd5006096eed470') version('6.0.0', '6ef5869ae735db9995619135bd856b84') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') depends_on('m4', type='build') + # gmp's configure script seems to be broken; it sometimes misdetects + # shared library support. Regenerating it fixes the issue. + force_autoreconf = True + def configure_args(self): args = ['--enable-cxx'] # This flag is necessary for the Intel build to pass `make check` From df6d8d913bd9e8c8fc704fc7b83ece9e0b9a4b37 Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Tue, 13 Jun 2017 09:09:59 -0400 Subject: [PATCH 1048/2394] Fix/mumps (#4453) * Added magma package * Incorporated Serban's change * mumps: Fix compiler error with IBM XL Split the patching between v 5.0.2 and 5.1.1 --- ...atch => mumps-5.0.2-spectrum-mpi-xl.patch} | 0 .../mumps/mumps-5.1.1-spectrum-mpi-xl.patch | 79 +++++++++++++++++++ .../repos/builtin/packages/mumps/package.py | 8 +- 3 files changed, 84 insertions(+), 3 deletions(-) rename var/spack/repos/builtin/packages/mumps/{spectrum-mpi-xl.patch => mumps-5.0.2-spectrum-mpi-xl.patch} (100%) create mode 100644 var/spack/repos/builtin/packages/mumps/mumps-5.1.1-spectrum-mpi-xl.patch diff --git a/var/spack/repos/builtin/packages/mumps/spectrum-mpi-xl.patch b/var/spack/repos/builtin/packages/mumps/mumps-5.0.2-spectrum-mpi-xl.patch similarity index 100% rename from var/spack/repos/builtin/packages/mumps/spectrum-mpi-xl.patch rename to var/spack/repos/builtin/packages/mumps/mumps-5.0.2-spectrum-mpi-xl.patch diff --git a/var/spack/repos/builtin/packages/mumps/mumps-5.1.1-spectrum-mpi-xl.patch b/var/spack/repos/builtin/packages/mumps/mumps-5.1.1-spectrum-mpi-xl.patch new file mode 100644 index 00000000000..8d9c1fb93a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/mumps/mumps-5.1.1-spectrum-mpi-xl.patch @@ -0,0 +1,79 @@ +diff -Naur MUMPS_5.0.1/Makefile MUMPS_5.0.1-patched/MUMPS_5.0.1/Makefile +--- ./Makefile 2015-07-23 13:08:29.000000000 -0400 ++++ ./Makefile 2016-12-05 14:08:30.788638382 -0500 +@@ -62,7 +62,7 @@ + $(libdir)/libpord$(PLAT)$(LIBEXT): + if [ "$(LPORDDIR)" != "" ] ; then \ + cd $(LPORDDIR); \ +- $(MAKE) CC="$(CC)" CFLAGS="$(OPTC)" AR="$(AR)" RANLIB="$(RANLIB)" OUTC="$(OUTC)" LIBEXT=$(LIBEXT); \ ++ $(MAKE) CC="$(CC)" CFLAGS="$(OPTC)" SAR="$(SAR)" RANLIB="$(RANLIB)" OUTC="$(OUTC)" LIBEXT=$(LIBEXT); \ + fi; + if [ "$(LPORDDIR)" != "" ] ; then \ + cp $(LPORDDIR)/libpord$(LIBEXT) $@; \ +diff -Naur MUMPS_5.0.1/PORD/lib/Makefile MUMPS_5.0.1-patched/PORD/lib/MUMPS_5.0.1/Makefile +--- ./PORD/lib/Makefile 2015-07-23 13:08:29.000000000 -0400 ++++ ./PORD/lib/Makefile 2016-12-05 11:26:24.785317467 -0500 +@@ -25,7 +25,7 @@ + $(CC) $(COPTIONS) -c $*.c $(OUTC)$*.o + + libpord$(LIBEXT):$(OBJS) +- $(AR)$@ $(OBJS) ++ $(SAR)$@ $(OBJS) + $(RANLIB) $@ + + clean: +--- ./examples/Makefile 2017-06-07 15:40:49.366671322 -0400 ++++ ./examples/Makefile 2017-06-07 15:47:55.666685772 -0400 +@@ -26,40 +26,33 @@ + + LIBSMUMPS = $(libdir)/libsmumps$(PLAT)$(LIBEXT) $(LIBMUMPS_COMMON) + +-ssimpletest: $(LIBSMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) ssimpletest.o $(LIBSMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) ++ssimpletest: $(LIBSMUMPS) $$@.F ++ $(FC) -o $@ $(OPTF) $(INCS) -I. -I$(topdir)/include ssimpletest.F $(LIBSMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + + LIBDMUMPS = $(libdir)/libdmumps$(PLAT)$(LIBEXT) $(LIBMUMPS_COMMON) + +-dsimpletest: $(LIBDMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) dsimpletest.o $(LIBDMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) ++dsimpletest: $(LIBDMUMPS) $$@.F ++ $(FC) -o $@ $(OPTF) $(INCS) -I. -I$(topdir)/include dsimpletest.F $(LIBDMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + + LIBCMUMPS = $(libdir)/libcmumps$(PLAT)$(LIBEXT) $(LIBMUMPS_COMMON) + +-csimpletest: $(LIBCMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) csimpletest.o $(LIBCMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) ++csimpletest: $(LIBCMUMPS) $$@.F ++ $(FC) -o $@ $(OPTF) $(INCS) -I. -I$(topdir)/include csimpletest.F $(LIBCMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + + LIBZMUMPS = $(libdir)/libzmumps$(PLAT)$(LIBEXT) $(LIBMUMPS_COMMON) + +-zsimpletest: $(LIBZMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) zsimpletest.o $(LIBZMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) ++zsimpletest: $(LIBZMUMPS) $$@.F ++ $(FC) -o $@ $(OPTF) $(INCS) -I. -I$(topdir)/include zsimpletest.F $(LIBZMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + +-c_example: $(LIBDMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) $@.o $(LIBDMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) ++c_example: $(LIBDMUMPS) $$@.c ++ $(CC) -o $@ $(OPTC) $(INCS) -I. -I$(topdir)/include c_example.c $(LIBDMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + +-multiple_arithmetics_example: $(LIBSMUMPS) $(LIBDMUMPS) $(LIBCMUMPS) $(LIBZMUMPS) $$@.o +- $(FL) -o $@ $(OPTL) $@.o $(LIBSMUMPS) $(LIBDMUMPS) $(LIBCMUMPS) $(LIBZMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) +- +- +-.SUFFIXES: .c .F .o +-.F.o: +- $(FC) $(OPTF) $(INCS) -I. -I$(topdir)/include -c $*.F $(OUTF)$*.o +-.c.o: +- $(CC) $(OPTC) $(INCS) $(CDEFS) -I. -I$(topdir)/include -I$(topdir)/src -c $*.c $(OUTC)$*.o ++multiple_arithmetics_example: $(LIBSMUMPS) $(LIBDMUMPS) $(LIBCMUMPS) $(LIBZMUMPS) $$@.F ++ $(FC) -o $@ $(OPTF) $(INCS) -I. -I$(topdir)/include multiple_arithmetics_example.F $(LIBSMUMPS) $(LIBDMUMPS) $(LIBCMUMPS) $(LIBZMUMPS) $(LORDERINGS) $(LIBS) $(LIBBLAS) $(LIBOTHERS) + + + $(libdir)/libsmumps$(PLAT)$(LIBEXT): diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index f28941fda37..5bddeaba5d5 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -69,8 +69,10 @@ class Mumps(Package): depends_on('scalapack', when='+mpi') depends_on('mpi', when='+mpi') - patch('spectrum-mpi-xl.patch', when='%xl^spectrum-mpi') - patch('spectrum-mpi-xl.patch', when='%xl_r^spectrum-mpi') + patch('mumps-5.0.2-spectrum-mpi-xl.patch', when='@5.0.2%xl^spectrum-mpi') + patch('mumps-5.0.2-spectrum-mpi-xl.patch', when='@5.0.2%xl_r^spectrum-mpi') + patch('mumps-5.1.1-spectrum-mpi-xl.patch', when='@5.1.1%xl^spectrum-mpi') + patch('mumps-5.1.1-spectrum-mpi-xl.patch', when='@5.1.1%xl_r^spectrum-mpi') # this function is not a patch function because in case scalapack # is needed it uses self.spec['scalapack'].fc_link set by the @@ -147,7 +149,7 @@ def write_makefile_inc(self): else: if self.compiler.name == "xl" or self.compiler.name == "xl_r": makefile_conf.extend( - ['OPTF = -O3', + ['OPTF = -O3 -qfixed', 'OPTL = %s -O3' % fpic, 'OPTC = %s -O3' % fpic]) else: From 9defe2c1c24ffb655346a94307fd4b0409beeff6 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 13 Jun 2017 17:22:12 +0200 Subject: [PATCH 1049/2394] espresso: fixed compilation for 6.1 (elpa) and added support for hdf5 (#4483) * espresso: fixed compilation for 6.1 (elpa) and added support for hdf5 * espresso: addressed items in @davydden review * espresso: fixed behavior for espresso@:5.4.0 --- .../repos/builtin/packages/elpa/package.py | 5 +- .../packages/espresso/dspev_drv_elpa.patch | 42 +++++++ .../builtin/packages/espresso/package.py | 109 +++++++++++------- 3 files changed, 113 insertions(+), 43 deletions(-) create mode 100644 var/spack/repos/builtin/packages/espresso/dspev_drv_elpa.patch diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py index 5f9a86956be..403e48f2cbf 100644 --- a/var/spack/repos/builtin/packages/elpa/package.py +++ b/var/spack/repos/builtin/packages/elpa/package.py @@ -53,8 +53,11 @@ def url_for_version(self, version): # override default implementation which returns static lib @property def libs(self): + + libname = 'libelpa_openmp' if '+openmp' in self.spec else 'libelpa' + return find_libraries( - ['libelpa'], root=self.prefix, shared=True, recurse=True + libname, root=self.prefix, shared=True, recurse=True ) build_directory = 'spack-build' diff --git a/var/spack/repos/builtin/packages/espresso/dspev_drv_elpa.patch b/var/spack/repos/builtin/packages/espresso/dspev_drv_elpa.patch new file mode 100644 index 00000000000..153bcf2ef51 --- /dev/null +++ b/var/spack/repos/builtin/packages/espresso/dspev_drv_elpa.patch @@ -0,0 +1,42 @@ +diff -ruN LAXlib-orig/dspev_drv.f90 LAXlib/dspev_drv.f90 +--- a/LAXlib/dspev_drv.f90 2017-06-12 15:00:46.157372185 +0200 ++++ b/LAXlib/dspev_drv.f90 2017-06-12 15:01:19.937371580 +0200 +@@ -708,11 +708,11 @@ + + #if defined(__ELPA_2016) + ! -> ELPA 2016.11.001_pre +- ierr = elpa_get_communicators(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) +- success = solve_evp_real_1stage(n, n, s, lds, w, vv, lds,SIZE(s,2),nb ,mpi_comm_rows, mpi_comm_cols, ortho_comm) ++ !ierr = elpa_get_communicators(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) ++ !success = solve_evp_real_1stage(n, n, s, lds, w, vv, lds,SIZE(s,2),nb ,mpi_comm_rows, mpi_comm_cols, ortho_comm) + ! -> ELPA 2016.05.003 +- !ierr = get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) +- !success = solve_evp_real_1stage(n, n, s, lds, w, vv, lds,SIZE(s,2),nb ,mpi_comm_rows, mpi_comm_cols) ++ ierr = get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) ++ success = solve_evp_real_1stage(n, n, s, lds, w, vv, lds,SIZE(s,2),nb ,mpi_comm_rows, mpi_comm_cols) + #elif defined(__ELPA_2015) + ierr = get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) + ierr = solve_evp_real(n, n, s, lds, w, vv, lds,SIZE(s,2),nb ,mpi_comm_rows, mpi_comm_cols) +diff -ruN LAXlib-orig/zhpev_drv.f90 LAXlib/zhpev_drv.f90 +--- a/LAXlib/zhpev_drv.f90 2017-06-12 15:00:46.157372185 +0200 ++++ b/LAXlib/zhpev_drv.f90 2017-06-12 15:02:09.309370696 +0200 +@@ -1519,13 +1519,13 @@ + + #if defined(__ELPA_2016) + ! -> ELPA 2016.11.001_pre +- ierr = elpa_get_communicators(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) +- success = solve_evp_complex_1stage_double(n, n, h, size(h,1), w, v, size(h,1), size(h,2), nb, & +- mpi_comm_rows, mpi_comm_cols, ortho_comm) ++ !ierr = elpa_get_communicators(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) ++ !success = solve_evp_complex_1stage_double(n, n, h, size(h,1), w, v, size(h,1), size(h,2), nb, & ++ ! mpi_comm_rows, mpi_comm_cols, ortho_comm) + ! -> ELPA 2016.05.003 +- !ierr = get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) +- !success = solve_evp_complex(n, n, h, size(h,1), w, v, size(h,1), size(h,2), nb, & +- ! mpi_comm_rows, mpi_comm_cols) ++ ierr = get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) ++ success = solve_evp_complex(n, n, h, size(h,1), w, v, size(h,1), size(h,2), nb, & ++ mpi_comm_rows, mpi_comm_cols) + #elif defined(__ELPA_2015) + ierr = get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols) + ierr = solve_evp_complex(n, n, h, size(h,1), w, v, size(h,1), size(h,2), nb, & diff --git a/var/spack/repos/builtin/packages/espresso/package.py b/var/spack/repos/builtin/packages/espresso/package.py index 097049370a1..b53374fa9e1 100644 --- a/var/spack/repos/builtin/packages/espresso/package.py +++ b/var/spack/repos/builtin/packages/espresso/package.py @@ -22,16 +22,17 @@ # 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 glob +import os.path + from spack import * -import os -from glob import glob class Espresso(Package): - """QE is an integrated suite of Open-Source computer codes for - electronic-structure calculations and materials modeling at - the nanoscale. It is based on density-functional theory, plane - waves, and pseudopotentials. + """Quantum-ESPRESSO is an integrated suite of Open-Source computer codes + for electronic-structure calculations and materials modeling at the + nanoscale. It is based on density-functional theory, plane waves, and + pseudopotentials. """ homepage = 'http://quantum-espresso.org' @@ -55,34 +56,43 @@ class Espresso(Package): variant('scalapack', default=True, description='Enables scalapack support') variant('elpa', default=True, description='Uses elpa as an eigenvalue solver') + # Support for HDF5 has been added starting in version 6.1.0 and is + # still experimental, therefore we default to False for the variant + variant('hdf5', default=False, description='Builds with HDF5 support') + depends_on('blas') depends_on('lapack') - depends_on('mpi', when='+mpi') - depends_on('fftw~mpi', when='~mpi') - depends_on('fftw+mpi', when='+mpi') - # TODO : + mpi needed to avoid false dependencies installation depends_on('scalapack', when='+scalapack+mpi') - depends_on('elpa@2016.11.001.pre', when='@6.1.0+elpa') + + depends_on('fftw+mpi', when='+mpi') + depends_on('fftw~mpi', when='~mpi') + depends_on('elpa+openmp', when='+elpa+openmp') + depends_on('elpa~openmp', when='+elpa~openmp') + depends_on('hdf5', when='+hdf5') + + patch('dspev_drv_elpa.patch', when='@6.1 ^elpa@2016.05.004') + patch('dspev_drv_elpa.patch', when='@6.1 ^elpa@2016.05.003') + + # We can't ask for scalapack or elpa if we don't want MPI + conflicts('+scalapack', when='~mpi') + conflicts('+elpa', when='~mpi') + + # Elpa is formally supported by @:5.4.0, but QE configure searches + # for it in the wrong folders (or tries to download it within + # the build directory). Instead of patching Elpa to provide the + # folder QE expects as a link, we issue a conflict here. + conflicts('+elpa', when='@:5.4.0') + conflicts('+hdf5', when='@:5.4.0') # Spurious problems running in parallel the Makefile # generated by the configure parallel = False - def check_variants(self, spec): - error = 'you cannot ask for \'+{variant}\' when \'+mpi\' is not active' - if '+scalapack' in spec and '~mpi' in spec: - raise RuntimeError(error.format(variant='scalapack')) - if '+elpa' in spec and ('~mpi' in spec or '~scalapack' in spec): - raise RuntimeError(error.format(variant='elpa')) - def install(self, spec, prefix): - self.check_variants(spec) - options = [ - '-prefix=%s' % (prefix.bin if spec.satisfies('@:5.4.0') else - prefix) - ] + prefix_path = prefix.bin if '@:5.4.0' in spec else prefix + options = ['-prefix={0}'.format(prefix_path)] if '+mpi' in spec: options.append('--enable-parallel') @@ -91,38 +101,53 @@ def install(self, spec, prefix): options.append('--enable-openmp') if '+scalapack' in spec: - options.append('--with-scalapack=yes') + scalapack_option = 'intel' if '^intel-mkl' in spec else 'yes' + options.append('--with-scalapack={0}'.format(scalapack_option)) if '+elpa' in spec: - if spec.satisfies('@:5.4.0'): - options.append('--with-elpa=yes') - else: - options.extend([ - '--with-elpa-include={0}'.format( - join_path(spec['elpa'].prefix, - 'include', - 'elpa-{0}'.format(str(spec['elpa'].version)), - 'modules') - ), - '--with-elpa-lib={0}'.format(spec['elpa'].libs.joined()) - ]) + + # Spec for elpa + elpa = spec['elpa'] + + # Find where the Fortran module resides + elpa_module = find(elpa.prefix, 'elpa.mod') + + # Compute the include directory from there: versions + # of espresso prior to 6.1 requires -I in front of the directory + elpa_include = '' if '@6.1:' in spec else '-I' + elpa_include += os.path.dirname(elpa_module[0]) + + options.extend([ + '--with-elpa-include={0}'.format(elpa_include), + '--with-elpa-lib={0}'.format(elpa.libs[0]) + ]) + + if '+hdf5' in spec: + options.append('--with-hdf5={0}'.format(spec['hdf5'].prefix)) # Add a list of directories to search search_list = [] for dependency_spec in spec.dependencies(): - search_list.extend([dependency_spec.prefix.lib, - dependency_spec.prefix.lib64]) + search_list.extend([ + dependency_spec.prefix.lib, + dependency_spec.prefix.lib64 + ]) search_list = " ".join(search_list) - options.append('LIBDIRS=%s' % search_list) - options.append('F90=%s' % os.environ['FC']) + + options.extend([ + 'LIBDIRS={0}'.format(search_list), + 'F90={0}'.format(env['SPACK_FC']), + 'CC={0}'.format(env['SPACK_CC']) + ]) configure(*options) + make('all') - if spec.satisfies('platform=darwin'): + if 'platform=darwin' in spec: mkdirp(prefix.bin) - for filename in glob("bin/*.x"): + for filename in glob.glob("bin/*.x"): install(filename, prefix.bin) else: make('install') From 1e69d9d1a94c1f3f5b165e7b5eeebcf65e1789fc Mon Sep 17 00:00:00 2001 From: scheibelp Date: Tue, 13 Jun 2017 09:15:51 -0700 Subject: [PATCH 1050/2394] Override partial installs by default - part three (#4331) * During install, remove prior unfinished installs If a user performs an installation which fails, in some cases the install prefix is still present, and the stage path may also be present. With this commit, unless the user specifies '--keep-prefix', installs are guaranteed to begin with a clean slate. The database is used to decide whether an install finished, since a database record is not added until the end of the install process. * test updates * repair_partial uses keep_prefix and keep_stage * use of mock stage object to ensure that stage is destroyed when it should be destroyed (and otherwise not) * add --restage option to 'install' command; when this option is not set, the default is to reuse a stage if it is found. --- lib/spack/spack/cmd/install.py | 4 + lib/spack/spack/database.py | 2 + lib/spack/spack/package.py | 44 +++++- lib/spack/spack/test/install.py | 125 ++++++++++++++++++ .../builtin.mock/packages/canfail/package.py | 43 ++++++ 5 files changed, 215 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/canfail/package.py diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index 87fad761818..f030e5b2df5 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -65,6 +65,9 @@ def setup_parser(subparser): subparser.add_argument( '--keep-stage', action='store_true', dest='keep_stage', help="don't remove the build stage if installation succeeds") + subparser.add_argument( + '--restage', action='store_true', dest='restage', + help="if a partial install is detected, delete prior state") subparser.add_argument( '-n', '--no-checksum', action='store_true', dest='no_checksum', help="do not check packages against checksum") @@ -307,6 +310,7 @@ def install(parser, args, **kwargs): kwargs.update({ 'keep_prefix': args.keep_prefix, 'keep_stage': args.keep_stage, + 'restage': args.restage, 'install_deps': 'dependencies' in args.things_to_install, 'make_jobs': args.jobs, 'run_tests': args.run_tests, diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 38ea8d584ca..123c3a89980 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -577,6 +577,8 @@ def _read(self): else: # The file doesn't exist, try to traverse the directory. # reindex() takes its own write lock, so no lock here. + with WriteTransaction(self.lock, timeout=_db_lock_timeout): + self._write(None, None, None) self.reindex(spack.store.layout) def _add(self, spec, directory_layout=None, explicit=False): diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 12b91bcdb01..90e55e2ce03 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1188,11 +1188,13 @@ def do_install(self, if self.spec.external: return self._process_external_package(explicit) + restage = kwargs.get('restage', False) + partial = self.check_for_unfinished_installation(keep_prefix, restage) + # Ensure package is not already installed layout = spack.store.layout with spack.store.db.prefix_read_lock(self.spec): - if (keep_prefix and os.path.isdir(self.prefix) and - (not self.installed)): + if partial: tty.msg( "Continuing from partial install of %s" % self.name) elif layout.check_installed(self.spec): @@ -1319,7 +1321,8 @@ def build_process(input_stream): try: # Create the install prefix and fork the build process. - spack.store.layout.create_install_directory(self.spec) + if not os.path.exists(self.prefix): + spack.store.layout.create_install_directory(self.spec) # Fork a child to do the actual installation spack.build_environment.fork(self, build_process, dirty=dirty) # If we installed then we should keep the prefix @@ -1346,6 +1349,41 @@ def build_process(input_stream): if not keep_prefix: self.remove_prefix() + def check_for_unfinished_installation( + self, keep_prefix=False, restage=False): + """Check for leftover files from partially-completed prior install to + prepare for a new install attempt. Options control whether these + files are reused (vs. destroyed). This function considers a package + fully-installed if there is a DB entry for it (in that way, it is + more strict than Package.installed). The return value is used to + indicate when the prefix exists but the install is not complete. + """ + if self.spec.external: + raise ExternalPackageError("Attempted to repair external spec %s" % + self.spec.name) + + with spack.store.db.prefix_write_lock(self.spec): + try: + record = spack.store.db.get_record(self.spec) + installed_in_db = record.installed if record else False + except KeyError: + installed_in_db = False + + partial = False + if not installed_in_db and os.path.isdir(self.prefix): + if not keep_prefix: + self.remove_prefix() + else: + partial = True + + stage_is_managed_in_spack = self.stage.path.startswith( + spack.stage_path) + if restage and stage_is_managed_in_spack: + self.stage.destroy() + self.stage.create() + + return partial + def _do_install_pop_kwargs(self, kwargs): """Pops kwargs from do_install before starting the installation diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py index f10c3a37e99..13d3e2ee945 100644 --- a/lib/spack/spack/test/install.py +++ b/lib/spack/spack/test/install.py @@ -30,6 +30,8 @@ from spack.fetch_strategy import URLFetchStrategy, FetchStrategyComposite from spack.spec import Spec +import os + @pytest.fixture() def install_mockery(tmpdir, config, builtin_mock): @@ -77,6 +79,125 @@ def test_install_and_uninstall(mock_archive): raise +def mock_remove_prefix(*args): + raise MockInstallError( + "Intentional error", + "Mock remove_prefix method intentionally fails") + + +class RemovePrefixChecker(object): + def __init__(self, wrapped_rm_prefix): + self.removed = False + self.wrapped_rm_prefix = wrapped_rm_prefix + + def remove_prefix(self): + self.removed = True + self.wrapped_rm_prefix() + + +class MockStage(object): + def __init__(self, wrapped_stage): + self.wrapped_stage = wrapped_stage + self.test_destroyed = False + + def __enter__(self): + return self + + def __exit__(self, *exc): + return True + + def destroy(self): + self.test_destroyed = True + self.wrapped_stage.destroy() + + def __getattr__(self, attr): + return getattr(self.wrapped_stage, attr) + + +@pytest.mark.usefixtures('install_mockery') +def test_partial_install_delete_prefix_and_stage(mock_archive): + spec = Spec('canfail') + spec.concretize() + pkg = spack.repo.get(spec) + fake_fetchify(mock_archive.url, pkg) + remove_prefix = spack.package.Package.remove_prefix + instance_rm_prefix = pkg.remove_prefix + + try: + spack.package.Package.remove_prefix = mock_remove_prefix + with pytest.raises(MockInstallError): + pkg.do_install() + assert os.path.isdir(pkg.prefix) + rm_prefix_checker = RemovePrefixChecker(instance_rm_prefix) + spack.package.Package.remove_prefix = rm_prefix_checker.remove_prefix + setattr(pkg, 'succeed', True) + pkg.stage = MockStage(pkg.stage) + pkg.do_install(restage=True) + assert rm_prefix_checker.removed + assert pkg.stage.test_destroyed + assert pkg.installed + finally: + spack.package.Package.remove_prefix = remove_prefix + pkg._stage = None + try: + delattr(pkg, 'succeed') + except AttributeError: + pass + + +@pytest.mark.usefixtures('install_mockery') +def test_partial_install_keep_prefix(mock_archive): + spec = Spec('canfail') + spec.concretize() + pkg = spack.repo.get(spec) + # Normally the stage should start unset, but other tests set it + pkg._stage = None + fake_fetchify(mock_archive.url, pkg) + remove_prefix = spack.package.Package.remove_prefix + try: + # If remove_prefix is called at any point in this test, that is an + # error + spack.package.Package.remove_prefix = mock_remove_prefix + with pytest.raises(spack.build_environment.ChildError): + pkg.do_install(keep_prefix=True) + assert os.path.exists(pkg.prefix) + setattr(pkg, 'succeed', True) + pkg.stage = MockStage(pkg.stage) + pkg.do_install(keep_prefix=True) + assert pkg.installed + assert not pkg.stage.test_destroyed + finally: + spack.package.Package.remove_prefix = remove_prefix + pkg._stage = None + try: + delattr(pkg, 'succeed') + except AttributeError: + pass + + +@pytest.mark.usefixtures('install_mockery') +def test_second_install_no_overwrite_first(mock_archive): + spec = Spec('canfail') + spec.concretize() + pkg = spack.repo.get(spec) + fake_fetchify(mock_archive.url, pkg) + remove_prefix = spack.package.Package.remove_prefix + try: + spack.package.Package.remove_prefix = mock_remove_prefix + setattr(pkg, 'succeed', True) + pkg.do_install() + assert pkg.installed + # If Package.install is called after this point, it will fail + delattr(pkg, 'succeed') + pkg.do_install() + finally: + spack.package.Package.remove_prefix = remove_prefix + try: + delattr(pkg, 'succeed') + except AttributeError: + pass + + @pytest.mark.usefixtures('install_mockery') def test_store(mock_archive): spec = Spec('cmake-client').concretized() @@ -102,3 +223,7 @@ def test_failing_build(mock_archive): pkg = spec.package with pytest.raises(spack.build_environment.ChildError): pkg.do_install() + + +class MockInstallError(spack.error.SpackError): + pass diff --git a/var/spack/repos/builtin.mock/packages/canfail/package.py b/var/spack/repos/builtin.mock/packages/canfail/package.py new file mode 100644 index 00000000000..18def385621 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/canfail/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Canfail(Package): + """Package which fails install unless a special attribute is set""" + + homepage = "http://www.example.com" + url = "http://www.example.com/a-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + def install(self, spec, prefix): + try: + succeed = getattr(self, 'succeed') + if not succeed: + raise InstallError("'succeed' was false") + touch(join_path(prefix, 'an_installation_file')) + except AttributeError: + raise InstallError("'succeed' attribute was not set") From b80252451782ed2606ee340f1de233a84d634685 Mon Sep 17 00:00:00 2001 From: John Roberts Date: Tue, 13 Jun 2017 18:17:51 -0500 Subject: [PATCH 1051/2394] visit: Added VisIt version 2.12.2 (#4495) --- var/spack/repos/builtin/packages/visit/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index 3c8505db972..2a735404a71 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -31,6 +31,7 @@ class Visit(Package): homepage = "https://wci.llnl.gov/simulation/computer-codes/visit/" url = "http://portal.nersc.gov/project/visit/releases/2.10.1/visit2.10.1.tar.gz" + version('2.12.2', '355779b1dbf440cdd548526eecd77b60') version('2.10.3', 'a1082a6f6dab3e2dcb58993603456c2b') version('2.10.2', '253de0837a9d69fb689befc98ea4d068') version('2.10.1', '3cbca162fdb0249f17c4456605c4211e') From 56f7c85c939231c289c1b497607058f8bb57245f Mon Sep 17 00:00:00 2001 From: Geoffrey Oxberry Date: Tue, 13 Jun 2017 17:59:25 -0700 Subject: [PATCH 1052/2394] metis: bugfix: make shared library build portable (#4489) Fixes #4488. When compiling metis as a shared library, the package used the syntax `-rpath=`, followed by a path. This syntax is non-portable, so replace it using Spack's compiler rpath argument property. --- var/spack/repos/builtin/packages/metis/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index 64245095922..3b904dd0155 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -135,7 +135,8 @@ def install(self, spec, prefix): # Set up and run tests on installation ccompile('-I%s' % prefix.include, '-L%s' % prefix.lib, - '-Wl,-rpath=%s' % (prefix.lib if '+shared' in spec else ''), + self.compiler.cc_rpath_arg + + '%s' % (prefix.lib if '+shared' in spec else ''), join_path('Programs', 'io.o'), join_path('Test', 'mtest.c'), '-o', '%s/mtest' % prefix.bin, '-lmetis', '-lm') From 6af44e63add228614cd776229ff1da8c863e1fdc Mon Sep 17 00:00:00 2001 From: Geoffrey Oxberry Date: Tue, 13 Jun 2017 18:03:49 -0700 Subject: [PATCH 1053/2394] coinhsl 2014.01.17: new package (#4482) --- .../repos/builtin/packages/coinhsl/package.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/coinhsl/package.py diff --git a/var/spack/repos/builtin/packages/coinhsl/package.py b/var/spack/repos/builtin/packages/coinhsl/package.py new file mode 100644 index 00000000000..87d866ec584 --- /dev/null +++ b/var/spack/repos/builtin/packages/coinhsl/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class Coinhsl(AutotoolsPackage): + """CoinHSL is a collection of linear algebra libraries (KB22, MA27, + MA28, MA54, MA57, MA64, MA77, MA86, MA97, MC19, MC34, MC64, MC68, + MC69, MC78, MC80, OF01, ZB01, ZB11) bundled for use with IPOPT and + other applications that use these HSL routines. + + Note: CoinHSL is licensed software. You will need to request a + license from Research Councils UK and download a .tar.gz archive + of CoinHSL yourself. Spack will search your current directory for + the download file. Alternatively, add this file to a mirror so + that Spack can find it. For instructions on how to set up a + mirror, see http://spack.readthedocs.io/en/latest/mirrors.html""" + + # NOTE(oxberry1@llnl.gov): an HTTPS version of the URL below does not + # exist + homepage = "http://www.hsl.rl.ac.uk/ipopt/" + url = "file://{0}/coinhsl-archive-2014.01.17.tar.gz".format(os.getcwd()) + + version('2014.01.17', '9eb3dd40ed034814ed8dfee75b281180c1d9d2ae') From 3025f9d30305c8af38288f8329081a7c2f713ac8 Mon Sep 17 00:00:00 2001 From: Geoffrey Oxberry Date: Tue, 13 Jun 2017 18:09:12 -0700 Subject: [PATCH 1054/2394] ipopt 3.12.7 (#4490) * ipopt: update version to 3.12.7 * ipopt: add +coinhsl option * ipopt: add +metis option --- .../repos/builtin/packages/ipopt/package.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/var/spack/repos/builtin/packages/ipopt/package.py b/var/spack/repos/builtin/packages/ipopt/package.py index f35fa45dade..8bfda4a10bd 100644 --- a/var/spack/repos/builtin/packages/ipopt/package.py +++ b/var/spack/repos/builtin/packages/ipopt/package.py @@ -31,16 +31,26 @@ class Ipopt(Package): homepage = "https://projects.coin-or.org/Ipopt" url = "http://www.coin-or.org/download/source/Ipopt/Ipopt-3.12.4.tgz" + version('3.12.7', '2a36e4a04717a8ed7012ac7d1253ae4ffbc1a8fd') + version('3.12.6', 'ed4072427fab786fcf6082fe7e6f6c2ed9b5e6f8') + version('3.12.5', '3f63ddfff517235ead17af6cceb426ca858dda37') version('3.12.4', '12a8ecaff8dd90025ddea6c65b49cb03') version('3.12.3', 'c560cbfa9cbf62acf8b485823c255a1b') version('3.12.2', 'ec1e855257d7de09e122c446506fb00d') version('3.12.1', 'ceaf895ce80c77778f2cab68ba9f17f3') version('3.12.0', 'f7dfc3aa106a6711a85214de7595e827') + variant('coinhsl', default=False, + description="Build with Coin Harwell Subroutine Libraries") + variant('metis', default=False, + description="Build with METIS partitioning support") + depends_on("blas") depends_on("lapack") depends_on("pkg-config", type='build') depends_on("mumps+double~mpi") + depends_on('coinhsl', when='+coinhsl') + depends_on('metis@4.0:4.999', when='+metis') def install(self, spec, prefix): # Dependency directories @@ -68,6 +78,16 @@ def install(self, spec, prefix): "--with-lapack-lib=%s" % lapack_lib ] + if 'coinhsl' in spec: + configure_args.extend([ + '--with-hsl-lib=%s' % spec['coinhsl'].libs.ld_flags, + '--with-hsl-incdir=%s' % spec['coinhsl'].prefix.include]) + + if 'metis' in spec: + configure_args.extend([ + '--with-metis-lib=%s' % spec['metis'].libs.ld_flags, + '--with-metis-incdir=%s' % spec['metis'].prefix.include]) + configure(*configure_args) # IPOPT does not build correctly in parallel on OS X From 0e5fb26dc1a8522dd7380992591130a51281fbad Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Wed, 14 Jun 2017 03:10:51 -0400 Subject: [PATCH 1055/2394] superlu-dist: don't use '_' symbols from BLAS for IBM XL compiler (#4486) --- var/spack/repos/builtin/packages/superlu-dist/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index 546a35b6af5..7f7a0f4db0a 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -83,7 +83,9 @@ def install(self, spec, prefix): 'F90FLAGS = -O2', 'LOADER = {0}'.format(self.spec['mpi'].mpif77), 'LOADOPTS =', - 'CDEFS = -DAdd_' + 'CDEFS = %s' % ("-DNoChange" + if '%xl' in spec or '%xl_r' in spec + else "-DAdd_") ]) with open('make.inc', 'w') as fh: From f4f2f258386c39d9d0f1ad54f6b71a89fd3b2ec6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 14 Jun 2017 10:35:10 -0500 Subject: [PATCH 1056/2394] Added new package for py-rsa (#4494) --- .../repos/builtin/packages/py-rsa/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-rsa/package.py diff --git a/var/spack/repos/builtin/packages/py-rsa/package.py b/var/spack/repos/builtin/packages/py-rsa/package.py new file mode 100644 index 00000000000..0821df1390d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-rsa/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyRsa(PythonPackage): + """Pure-Python RSA implementation""" + + homepage = "https://stuvel.eu/rsa" + url = "https://pypi.io/packages/source/r/rsa/rsa-3.4.2.tar.gz" + + import_modules = ['rsa'] + + version('3.4.2', 'b315f47882c24030ee6b5aad628cccdb') + + depends_on('py-setuptools', type=('build', 'run')) + depends_on('py-pyasn1@0.1.3:', type=('build', 'run')) From bc2c4a14c24370465d3d9cb949fdbdd6baa0eb69 Mon Sep 17 00:00:00 2001 From: Josh Asplund Date: Wed, 14 Jun 2017 10:43:50 -0700 Subject: [PATCH 1057/2394] Updates rose definition (#4411) * Adds z3 package * Adds binwalk package * Updates spot package definition * Updates rose package definition * Modifications for code review * Fixes string formatting * Remove python version requirement --- .../builtin/packages/py-binwalk/package.py | 39 ++++++++++++ .../repos/builtin/packages/rose/package.py | 62 +++++++++++++++---- .../repos/builtin/packages/spot/package.py | 11 +++- .../repos/builtin/packages/z3/package.py | 55 ++++++++++++++++ 4 files changed, 151 insertions(+), 16 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-binwalk/package.py create mode 100644 var/spack/repos/builtin/packages/z3/package.py diff --git a/var/spack/repos/builtin/packages/py-binwalk/package.py b/var/spack/repos/builtin/packages/py-binwalk/package.py new file mode 100644 index 00000000000..b9002749675 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-binwalk/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PyBinwalk(PythonPackage): + """Binwalk is a fast, easy to use tool for analyzing, reverse engineering, + and extracting firmware images.""" + + homepage = "https://github.com/devttys0/binwalk" + url = "https://pypi.io/packages/source/b/binwalk/binwalk-2.1.0.tar.gz" + + version('2.1.0', '054867d9abe6a05f43200cf2591051e6') + + depends_on('python') + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py index 5f0d12427c5..ed8cca40ad2 100644 --- a/var/spack/repos/builtin/packages/rose/package.py +++ b/var/spack/repos/builtin/packages/rose/package.py @@ -35,7 +35,7 @@ class Rose(Package): (Developed at Lawrence Livermore National Lab)""" homepage = "http://rosecompiler.org/" - url = "https://github.com/rose-compiler/rose/archive/v0.9.7.tar.gz" + url = "https://github.com/rose-compiler/rose/archive/v0.9.7.tar.gz" version('0.9.7', 'e14ce5250078df4b09f4f40559d46c75') version('master', branch='master', @@ -46,20 +46,56 @@ class Rose(Package): depends_on("autoconf@2.69", type='build') depends_on("automake@1.14", type='build') depends_on("libtool@2.4", type='build') - depends_on("boost@1.54.0") - depends_on("jdk@8u25") + depends_on("boost@1.47.0:") - def install(self, spec, prefix): - # Bootstrap with autotools + variant('tests', default=False, description='Build the tests directory') + + variant('binanalysis', default=False, description='Enable binary analysis tooling') + depends_on('libgcrypt', when='+binanalysis', type='build') + depends_on('py-binwalk', when='+binanalysis', type='run') + + variant('c', default=True, description='Enable c language support') + variant('cxx', default=True, description='Enable c++ language support') + + variant('fortran', default=False, description='Enable fortran language support') + + variant('java', default=False, description='Enable java language support') + depends_on('jdk', when='+java') + + variant('z3', default=False, description='Enable z3 theorem prover') + depends_on('z3', when='+z3') + + build_directory = 'spack-build' + + def autoreconf(self, spec, prefix): bash = which('bash') bash('build') - # Configure, compile & install - with working_dir('rose-build', create=True): - boost = spec['boost'] + @property + def languages(self): + spec = self.spec + langs = [ + 'binaries' if '+binanalysis' in spec else '', + 'c' if '+c' in spec else '', + 'c++' if '+cxx' in spec else '', + 'java' if '+java' in spec else '', + 'fortran' if '+fortran' in spec else '' + ] + return list(filter(None, langs)) - configure = Executable('../configure') - configure("--prefix=" + prefix, - "--with-boost=" + boost.prefix, - "--disable-boost-version-check") - make("install-core") + def configure_args(self): + spec = self.spec + cc = self.compiler.cc + cxx = self.compiler.cxx + return [ + '--disable-boost-version-check', + "--with-alternate_backend_C_compiler={0}".format(cc), + "--with-alternate_backend_Cxx_compiler={0}".format(cxx), + "--with-boost={0}".format(spec['boost'].prefix), + "--enable-languages={0}".format(",".join(self.languages)), + "--with-z3={0}".format(spec['z3'].prefix) if '+z3' in spec else '', + '--disable-tests-directory' if '+tests' not in spec else '', + '--enable-tutorial-directory={0}'.format('no'), + ] + + install_targets = ["install-core"] diff --git a/var/spack/repos/builtin/packages/spot/package.py b/var/spack/repos/builtin/packages/spot/package.py index abb1776aaf4..24787e3adc0 100644 --- a/var/spack/repos/builtin/packages/spot/package.py +++ b/var/spack/repos/builtin/packages/spot/package.py @@ -28,10 +28,15 @@ class Spot(AutotoolsPackage): """Spot is a C++11 library for omega-automata manipulation and model checking.""" - homepage = "https://spot.lrde.epita.fr/index.html" + homepage = "https://spot.lrde.epita.fr/" url = "http://www.lrde.epita.fr/dload/spot/spot-1.99.3.tar.gz" version('1.99.3', 'd53adcb2d0fe7c69f45d4e595a58254e') + version('1.2.6', '799bf59ccdee646d12e00f0fe6c23902') - # depends_on("gcc@4.8:", type='build') - depends_on("python@3.2:") + variant('python', default=True, description='Enable python API') + + depends_on("python@3.3:", when='@1.99.5: +python') + depends_on("python@3.2:", when='@1.99: +python') + depends_on("python@2:", when='+python') + depends_on('boost', when='@:1.2.6') diff --git a/var/spack/repos/builtin/packages/z3/package.py b/var/spack/repos/builtin/packages/z3/package.py new file mode 100644 index 00000000000..d2f8fb9d7a8 --- /dev/null +++ b/var/spack/repos/builtin/packages/z3/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Z3(MakefilePackage): + """Z3 is a theorem prover from Microsoft Research. + It is licensed under the MIT license.""" + + homepage = "https://github.com/Z3Prover/z3/wiki" + url = "https://github.com/Z3Prover/z3/archive/z3-4.5.0.tar.gz" + + version('4.5.0', 'f332befa0d66d81818a06279a0973e25') + version('4.4.1', '4336a9df24f090e711c6d42fd4e2b1fc') + version('4.4.0', '2bcbb0381cc1572cace99aac8af08990') + + phases = ['bootstrap', 'build', 'install'] + + variant('python', default=False, description='Enable python support') + depends_on('python', when='+python') + + build_directory = 'build' + + def configure_args(self): + spec = self.spec + return [ + '--python' if '+python' in spec else '' + ] + + def bootstrap(self, spec, prefix): + options = ['--prefix={0}'.format(prefix)] + self.configure_args() + spec['python'].command('scripts/mk_make.py', *options) From f06c23ef42835fd5bac96f35608132bee0dcd6f9 Mon Sep 17 00:00:00 2001 From: Nicolas Richart Date: Wed, 14 Jun 2017 20:11:30 +0200 Subject: [PATCH 1058/2394] Adding package namd (#4321) * Initial version of the namd package * Modified charm to consider compile against intel/intel-mpi * Correction of namd to compile with intel-mkl and intel compiler * Adding inclue64 in the prefix * adding property for the build directory * removing useless function build --- lib/spack/spack/util/prefix.py | 23 +-- .../repos/builtin/packages/charm/package.py | 34 ++-- .../builtin/packages/intel-mpi/package.py | 7 + .../repos/builtin/packages/namd/package.py | 151 ++++++++++++++++++ 4 files changed, 194 insertions(+), 21 deletions(-) create mode 100644 var/spack/repos/builtin/packages/namd/package.py diff --git a/lib/spack/spack/util/prefix.py b/lib/spack/spack/util/prefix.py index e39b81a4c6f..ca880c53b75 100644 --- a/lib/spack/spack/util/prefix.py +++ b/lib/spack/spack/util/prefix.py @@ -60,17 +60,18 @@ class Prefix(str): def __new__(cls, path): s = super(Prefix, cls).__new__(cls, path) - s.bin = join_path(s, 'bin') - s.bin64 = join_path(s, 'bin64') - s.sbin = join_path(s, 'sbin') - s.etc = join_path(s, 'etc') - s.include = join_path(s, 'include') - s.lib = join_path(s, 'lib') - s.lib64 = join_path(s, 'lib64') - s.libexec = join_path(s, 'libexec') - s.share = join_path(s, 'share') - s.doc = join_path(s.share, 'doc') - s.info = join_path(s.share, 'info') + s.bin = join_path(s, 'bin') + s.bin64 = join_path(s, 'bin64') + s.sbin = join_path(s, 'sbin') + s.etc = join_path(s, 'etc') + s.include = join_path(s, 'include') + s.include64 = join_path(s, 'include64') + s.lib = join_path(s, 'lib') + s.lib64 = join_path(s, 'lib64') + s.libexec = join_path(s, 'libexec') + s.share = join_path(s, 'share') + s.doc = join_path(s.share, 'doc') + s.info = join_path(s.share, 'info') s.man = join_path(s, 'man') s.man1 = join_path(s.man, 'man1') diff --git a/var/spack/repos/builtin/packages/charm/package.py b/var/spack/repos/builtin/packages/charm/package.py index 3e84394da8a..9f08d820d22 100644 --- a/var/spack/repos/builtin/packages/charm/package.py +++ b/var/spack/repos/builtin/packages/charm/package.py @@ -115,29 +115,43 @@ def install(self, spec, prefix): # We assume that Spack's compiler wrappers make this work. If # not, then we need to query the compiler vendor from Spack # here. - compiler = "gcc" + compiler = os.path.basename(self.compiler.cc) - options = [compiler, - "--with-production", # Note: turn this into a variant - "-j%d" % make_jobs, - "--destination=%s" % prefix] - if "+mpi" in spec: - options.append("--basedir=%s" % spec["mpi"].prefix) + options = [compiler] + if compiler == 'icc': + options.append('ifort') + + options.extend([ + "--with-production", # Note: turn this into a variant + "-j%d" % make_jobs, + "--destination=%s" % prefix]) + + if 'backend=mpi' in spec: + # in intelmpi /include and /lib fails so --basedir + # cannot be used + options.extend([ + '--incdir={0}'.format(incdir) + for incdir in spec["mpi"].headers.directories + ]) + options.extend([ + '--libdir={0}'.format(libdir) + for libdir in spec["mpi"].libs.directories + ]) if "+papi" in spec: options.extend(["papi", "--basedir=%s" % spec["papi"].prefix]) if "+smp" in spec: - if "+multicore" in spec: + if 'backend=multicore' in spec: # This is a Charm++ limitation; it would lead to a # build error raise InstallError("Cannot combine +smp with +multicore") options.append("smp") if "+tcp" in spec: - if "+net" not in spec: + if 'backend=net' not in spec: # This is a Charm++ limitation; it would lead to a # build error raise InstallError( "The +tcp variant requires " - "the +net communication mechanism") + "the backend=net communication mechanism") options.append("tcp") if "+shared" in spec: options.append("--build-shared") diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py index 0336f426be7..68610d7afe7 100644 --- a/var/spack/repos/builtin/packages/intel-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-mpi/package.py @@ -54,6 +54,13 @@ def mpi_libs(self): libraries, root=self.prefix.lib64, shared=True, recurse=True ) + @property + def mpi_headers(self): + # recurse from self.prefix will find too many things for all the + # supported sub-architectures like 'mic' + return find_headers( + 'mpi', root=self.prefix.include64, recurse=False) + def install(self, spec, prefix): self.intel_prefix = prefix IntelInstaller.install(self, spec, prefix) diff --git a/var/spack/repos/builtin/packages/namd/package.py b/var/spack/repos/builtin/packages/namd/package.py new file mode 100644 index 00000000000..160d508004f --- /dev/null +++ b/var/spack/repos/builtin/packages/namd/package.py @@ -0,0 +1,151 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 platform +import shutil +import sys +import os +from spack import * + + +class Namd(MakefilePackage): + """NAMDis a parallel molecular dynamics code designed for + high-performance simulation of large biomolecular systems.""" + + homepage = "http://www.ks.uiuc.edu/Research/namd/" + url = "file://{0}/NAMD_2.12_Source.tar.gz".format(os.getcwd()) + + version('2.12', '2a1191909b1ab03bf0205971ad4d8ee9') + + variant('fftw', default='3', values=('none', '2', '3', 'mkl'), + description='Enable the use of FFTW/FFTW3/MKL FFT') + + variant('interface', default='none', values=('none', 'tcl', 'python'), + description='Enables TCL and/or python interface') + + depends_on('charm') + + depends_on('fftw@:2.99', when="fftw=2") + depends_on('fftw@3:', when="fftw=3") + + depends_on('intel-mkl', when="fftw=mkl") + + depends_on('tcl', when='interface=tcl') + + depends_on('tcl', when='interface=python') + depends_on('python', when='interface=python') + + def _copy_arch_file(self, lib): + config_filename = 'arch/{0}.{1}'.format(self.arch, lib) + shutil.copy('arch/Linux-x86_64.{0}'.format(lib), + config_filename) + if lib == 'tcl': + filter_file(r'-ltcl8\.5', + '-ltcl{0}'.format(self.spec['tcl'].version.up_to(2)), + config_filename) + + def _append_option(self, opts, lib): + if lib != 'python': + self._copy_arch_file(lib) + spec = self.spec + opts.extend([ + '--with-{0}'.format(lib), + '--{0}-prefix'.format(lib), spec[lib].prefix + ]) + + @property + def arch(self): + plat = sys.platform + if plat.startswith("linux"): + plat = "linux" + march = platform.machine() + return '{0}-{1}'.format(plat, march) + + @property + def build_directory(self): + return '{0}-spack'.format(self.arch) + + def edit(self, spec, prefix): + with working_dir('arch'): + with open('{0}.arch'.format(self.build_directory), 'w') as fh: + # this options are take from the default provided + # configuration files + optims_opts = { + 'gcc': '-m64 -O3 -fexpensive-optimizations -ffast-math', + 'intel': '-O2 -ip' + } + + optim_opts = optims_opts[self.compiler.name] \ + if self.compiler.name in optims_opts else '' + + fh.write('\n'.join([ + 'NAMD_ARCH = {0}'.format(self.arch), + 'CHARMARCH = ', + 'CXX = {0.cxx} {0.cxx11_flag}'.format( + self.compiler), + 'CXXOPTS = {0}'.format(optim_opts), + 'CC = {0}'.format(self.compiler.cc), + 'COPTS = {0}'.format(optim_opts), + '' + ])) + + self._copy_arch_file('base') + + opts = ['--charm-base', spec['charm'].prefix] + fftw_version = spec.variants['fftw'].value + if fftw_version == 'none': + opts.append('--without-fftw') + elif fftw_version == 'mkl': + self._append_option(opts, 'mkl') + else: + _fftw = 'fftw{0}'.format('' if fftw_version == '2' else '3') + + self._copy_arch_file(_fftw) + opts.extend(['--with-{0}'.format(_fftw), + '--fftw-prefix', spec['fftw'].prefix]) + + interface_type = spec.variants['interface'].value + if interface_type != 'none': + self._append_option(opts, 'tcl') + + if interface_type == 'python': + self._append_option(opts, 'python') + else: + opts.extend([ + '--without-tcl', + '--without-python' + ]) + + config = Executable('./config') + + config(self.build_directory, *opts) + + def install(self, spec, prefix): + with working_dir(self.build_directory): + mkdirp(prefix.bin) + install('namd2', prefix.bin) + + # I'm not sure this is a good idea or if an autoload of the charm + # module would not be better. + install('charmrun', prefix.bin) From 1ec3c14d23199222b617fac7c672f11f2e2c8bd9 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Wed, 14 Jun 2017 20:13:39 +0200 Subject: [PATCH 1059/2394] Improve qt (#4309) - Introduce an opengl variant that is enabled by default. Disabling it allows building qt for X forwarding etc. - Depend on fontconfig and freetype to make use of system fonts. Otherwise qt can not find any fonts. - libx11 is required when libxcb is used. - Set MAKEFLAGS to parallelize qmake compilation. --- var/spack/repos/builtin/packages/qt/package.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index c0b08d86f1f..a2f7350aaf6 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -62,6 +62,8 @@ class Qt(Package): description="Build with D-Bus support.") variant('phonon', default=False, description="Build with phonon support.") + variant('opengl', default=True, + description="Build with OpenGL support.") patch('qt3krell.patch', when='@3.3.8b+krellpatch') @@ -93,6 +95,8 @@ class Qt(Package): depends_on("libmng") depends_on("jpeg") depends_on("icu4c") + depends_on("fontconfig") + depends_on("freetype") # FIXME: # depends_on("freetype", when='@5.8:') and '-system-freetype' # -system-harfbuzz @@ -104,12 +108,12 @@ class Qt(Package): # OpenGL hardware acceleration depends_on("mesa", when='@4:+mesa') depends_on("libxcb", when=sys.platform != 'darwin') + depends_on("libx11", when=sys.platform != 'darwin') # Webkit depends_on("flex", when='+webkit', type='build') depends_on("bison", when='+webkit', type='build') depends_on("gperf", when='+webkit') - depends_on("fontconfig", when='+webkit') # Multimedia # depends_on("gstreamer", when='+multimedia') @@ -151,6 +155,7 @@ def url_for_version(self, version): return url def setup_environment(self, spack_env, run_env): + spack_env.set('MAKEFLAGS', '-j{0}'.format(make_jobs)) run_env.set('QTDIR', self.prefix) def setup_dependent_environment(self, spack_env, run_env, dependent_spec): @@ -192,12 +197,15 @@ def common_config_args(self): '-prefix', self.prefix, '-v', '-opensource', - '-opengl', + '-{0}opengl'.format('' if '+opengl' in self.spec else 'no-'), '-release', '-shared', '-confirm-license', '-openssl-linked', '-optimized-qmake', + '-fontconfig', + '-system-freetype', + '-I{0}/freetype2'.format(self.spec['freetype'].prefix.include), '-no-pch' ] From daa5cf7e73d34b89cbc223d9477f32a77d0b0e9f Mon Sep 17 00:00:00 2001 From: Luigi Calori Date: Wed, 14 Jun 2017 20:24:01 +0200 Subject: [PATCH 1060/2394] fix intltool_sbang issue #4191 (#4192) * fix intltool_sbang issue #4191 * add per dep even if already depending on perl-xml-parser * adding more comment, properly spaced --- bin/sbang | 15 +++++++++++---- .../repos/builtin/packages/intltool/package.py | 3 ++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/bin/sbang b/bin/sbang index e71074b3302..ed54f7dad7e 100755 --- a/bin/sbang +++ b/bin/sbang @@ -109,13 +109,20 @@ while read line && ((lines < 2)) ; do fi lines=$((lines+1)) done < "$script" +# this is ineeded for scripts with sbang parameter +# like ones in intltool +# #!//perl -w +# this is the interpreter line with all the parameters as a vector +interpreter_v=(${interpreter}) +# this is the single interpreter path +interpreter_f="${interpreter_v[0]}" # Invoke any interpreter found, or raise an error if none was found. -if [[ -n "$interpreter" ]]; then - if [[ "${interpreter##*/}" = "perl" ]]; then - exec $interpreter -x "$@" +if [[ -n "$interpreter_f" ]]; then + if [[ "${interpreter_f##*/}" = "perl" ]]; then + exec $interpreter_v -x "$@" else - exec $interpreter "$@" + exec $interpreter_v "$@" fi else echo "error: sbang found no interpreter in $script" diff --git a/var/spack/repos/builtin/packages/intltool/package.py b/var/spack/repos/builtin/packages/intltool/package.py index 0007326eba5..a9e3a8a0625 100644 --- a/var/spack/repos/builtin/packages/intltool/package.py +++ b/var/spack/repos/builtin/packages/intltool/package.py @@ -36,7 +36,8 @@ class Intltool(AutotoolsPackage): version('0.51.0', '12e517cac2b57a0121cda351570f1e63') # requires XML::Parser perl module - # depends_on('perl@5.8.1:', type='build') + depends_on('perl-xml-parser', type=('build', 'run')) + depends_on('perl@5.8.1:', type=('build', 'run')) def check(self): # `make check` passes but causes `make install` to fail From f732598f516d8a61c3e15b61fccf3dd7ee8fbadc Mon Sep 17 00:00:00 2001 From: Alicia Klinvex Date: Wed, 14 Jun 2017 14:56:24 -0400 Subject: [PATCH 1061/2394] Fix tpetra-related xsdk errors (#4501) * Fix tpetra-related xsdk errors Recent changes to the trilinos package broke the xsdk build. xSDK explicitly disables tpetra, but packages depending on it (such as ifpack2 and amesos2) are explicitly enabled by default in the trilinos package. This commit explicitly disables them within the xsdk package.py. * Disabled exodus in the xsdk build See issue #4502 for details --- var/spack/repos/builtin/packages/xsdk/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py index 22a873bca82..735aedbe457 100644 --- a/var/spack/repos/builtin/packages/xsdk/package.py +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -48,9 +48,9 @@ class Xsdk(Package): depends_on('superlu-dist@xsdk-0.2.0', when='@xsdk-0.2.0') depends_on('superlu-dist@develop', when='@develop') - depends_on('trilinos@xsdk-0.2.0+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra', + depends_on('trilinos@xsdk-0.2.0+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan2~amesos2~exodus', when='@xsdk-0.2.0') - depends_on('trilinos@develop+xsdkflags+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra', + depends_on('trilinos@develop+xsdkflags+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan2~amesos2~exodus', when='@develop') depends_on('petsc@xsdk-0.2.0+trilinos+mpi+hypre+superlu-dist+metis+hdf5~mumps~boost', From ce11e78530f28d58693764bdc3893a268028bd48 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 14 Jun 2017 15:41:42 -0500 Subject: [PATCH 1062/2394] Add h5utils package (#4506) --- .../repos/builtin/packages/h5utils/package.py | 73 +++++++++++++++++++ .../builtin/packages/libmatheval/package.py | 42 +++++++++++ 2 files changed, 115 insertions(+) create mode 100644 var/spack/repos/builtin/packages/h5utils/package.py create mode 100644 var/spack/repos/builtin/packages/libmatheval/package.py diff --git a/var/spack/repos/builtin/packages/h5utils/package.py b/var/spack/repos/builtin/packages/h5utils/package.py new file mode 100644 index 00000000000..2a51ca22f22 --- /dev/null +++ b/var/spack/repos/builtin/packages/h5utils/package.py @@ -0,0 +1,73 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class H5utils(AutotoolsPackage): + """h5utils is a set of utilities for visualization and conversion of + scientific data in the free, portable HDF5 format.""" + + homepage = "http://ab-initio.mit.edu/wiki/index.php/H5utils" + url = "http://ab-initio.mit.edu/h5utils/h5utils-1.12.1.tar.gz" + list_url = "http://ab-initio.mit.edu/h5utils/old/" + + version('1.12.1', '46a6869fee6e6bf87fbba9ab8a99930e') + + variant('png', default=True, description='Enable PNG support') + variant('vis5d', default=False, description='Enable Vis5d support') + variant('octave', default=False, description='Enable GNU Octave support') + variant('hdf4', default=False, description='Enable HDF4 support') + variant('math', default=False, description='Build h5math') + + # Required dependencies + depends_on('hdf5') + + # Optional dependencies + depends_on('libpng', when='+png') + # depends_on('vis5d', when='+vis5d') # TODO: Add a vis5d package + depends_on('octave', when='+octave') + depends_on('hdf', when='+hdf4') + depends_on('libmatheval', when='+math') + + def configure_args(self): + spec = self.spec + args = [] + + if '+vis5d' in spec: + args.append('--with-v5d={0}'.format(spec['vis5d'].prefix)) + else: + args.append('--without-v5d') + + if '+octave' in spec: + args.append('--with-octave') + else: + args.append('--without-octave') + + if '+hdf' in spec: + args.append('--with-hdf4') + else: + args.append('--without-hdf4') + + return args diff --git a/var/spack/repos/builtin/packages/libmatheval/package.py b/var/spack/repos/builtin/packages/libmatheval/package.py new file mode 100644 index 00000000000..7af0a2e52a1 --- /dev/null +++ b/var/spack/repos/builtin/packages/libmatheval/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libmatheval(AutotoolsPackage): + """GNU libmatheval is a library (callable from C and Fortran) to parse + and evaluate symbolic expressions input as text. It supports expressions + in any number of variables of arbitrary names, decimal and symbolic + constants, basic unary and binary operators, and elementary mathematical + functions. In addition to parsing and evaluation, libmatheval can also + compute symbolic derivatives and output expressions to strings.""" + + homepage = "https://www.gnu.org/software/libmatheval/" + url = "https://ftp.gnu.org/gnu/libmatheval/libmatheval-1.1.11.tar.gz" + + version('1.1.11', '595420ea60f6ddd75623847f46ca45c4') + + # Only needed for unit tests, but configure crashes without it + depends_on('guile', type='build') From e62744741785075c535c739b2b0613ebbe4aa0b6 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 15 Jun 2017 04:27:18 -0500 Subject: [PATCH 1063/2394] Prefer vim to vi for default editor (#4230) * vim > vi * Allow which to accept multiple args * Update __init__ to use which with multiple args * Fix doc tests --- lib/spack/spack/__init__.py | 17 +- lib/spack/spack/abi.py | 3 +- lib/spack/spack/package_test.py | 2 +- lib/spack/spack/util/executable.py | 146 +++++++++--------- .../builtin/packages/hdf5-blosc/package.py | 2 +- .../repos/builtin/packages/hdf5/package.py | 2 +- .../repos/builtin/packages/spark/package.py | 2 +- 7 files changed, 93 insertions(+), 81 deletions(-) diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 057c54d6650..214bb098781 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -213,7 +213,22 @@ __all__ += spack.util.executable.__all__ # User's editor from the environment -editor = Executable(os.environ.get("EDITOR", "vi")) + +# Default editors to use: +_default_editors = ['vim', 'vi', 'emacs', 'nano'] + +# The EDITOR environment variable has the highest precedence +if os.environ.get('EDITOR'): + _default_editors.insert(0, os.environ.get('EDITOR')) + +editor = which(*_default_editors) + +if not editor: + default = default_editors[0] + msg = 'Default text editor, {0}, not found.\n'.format(default) + msg += 'Please set the EDITOR environment variable to your preferred ' + msg += 'text editor, or install {0}.'.format(default) + raise EnvironmentError(msg) from spack.package import \ install_dependency_symlinks, flatten_dependencies, \ diff --git a/lib/spack/spack/abi.py b/lib/spack/spack/abi.py index ad3cae6ee2b..401b99cf712 100644 --- a/lib/spack/spack/abi.py +++ b/lib/spack/spack/abi.py @@ -69,8 +69,7 @@ def _gcc_get_libstdcxx_version(self, version): if Clang.default_version(rungcc.exe[0]) != 'unknown': return None - output = rungcc("--print-file-name=%s" % libname, - return_output=True) + output = rungcc("--print-file-name=%s" % libname, output=str) except ProcessError: return None if not output: diff --git a/lib/spack/spack/package_test.py b/lib/spack/spack/package_test.py index 54f424d45ef..fa424287f33 100644 --- a/lib/spack/spack/package_test.py +++ b/lib/spack/spack/package_test.py @@ -39,7 +39,7 @@ def compile_c_and_execute(source_file, include_flags, link_flags): *link_flags) check = Executable('./check') - return check(return_output=True) + return check(output=str) def compare_output(current_output, blessed_output): diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index c7e445971b8..0aec84b1d0a 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -46,9 +46,16 @@ def __init__(self, name): raise ProcessError("Cannot construct executable for '%s'" % name) def add_default_arg(self, arg): + """Add a default argument to the command.""" self.exe.append(arg) def add_default_env(self, key, value): + """Set an environment variable when the command is run. + + Parameters: + key: The environment variable to set + value: The value to set it to + """ self.default_env[key] = value @property @@ -81,55 +88,34 @@ def path(self): def __call__(self, *args, **kwargs): """Run this executable in a subprocess. - Arguments - args - command line arguments to the executable to run. + Parameters: + *args (str): Command-line arguments to the executable to run - Optional arguments + Keyword Arguments: + env (dict): The environment to run the executable with + fail_on_error (bool): Raise an exception if the subprocess returns + an error. Default is True. The return code is available as + ``exe.returncode`` + ignore_errors (int or list): A list of error codes to ignore. + If these codes are returned, this process will not raise + an exception even if ``fail_on_error`` is set to ``True`` + input: Where to read stdin from + output: Where to send stdout + error: Where to send stderr - fail_on_error + Accepted values for input, output, and error: - Raise an exception if the subprocess returns an - error. Default is True. When not set, the return code is - available as `exe.returncode`. - - ignore_errors - - An optional list/tuple of error codes that can be - *ignored*. i.e., if these codes are returned, this will - not raise an exception when `fail_on_error` is `True`. - - output, error - - These arguments allow you to specify new stdout and stderr - values. They default to `None`, which means the - subprocess will inherit the parent's file descriptors. - - You can set these to: - - python streams, e.g. open Python file objects, or os.devnull; - - filenames, which will be automatically opened for writing; or - - `str`, as in the Python string type. If you set these to `str`, - output and error will be written to pipes and returned as - a string. If both `output` and `error` are set to `str`, - then one string is returned containing output concatenated - with error. - - input - - Same as output, error, but `str` is not an allowed value. - - Deprecated arguments - - return_output[=False] - - Setting this to True is the same as setting output=str. - This argument may be removed in future Spack versions. + * python streams, e.g. open Python file objects, or ``os.devnull`` + * filenames, which will be automatically opened for writing + * ``str``, as in the Python string type. If you set these to ``str``, + output and error will be written to pipes and returned as a string. + If both ``output`` and ``error`` are set to ``str``, then one string + is returned containing output concatenated with error. Not valid + for ``input`` + By default, the subprocess inherits the parent's file descriptors. """ - fail_on_error = kwargs.pop("fail_on_error", True) - ignore_errors = kwargs.pop("ignore_errors", ()) - - # environment + # Environment env_arg = kwargs.get('env', None) if env_arg is None: env = os.environ.copy() @@ -138,19 +124,19 @@ def __call__(self, *args, **kwargs): env = self.default_env.copy() env.update(env_arg) - # TODO: This is deprecated. Remove in a future version. - return_output = kwargs.pop("return_output", False) + fail_on_error = kwargs.pop('fail_on_error', True) + ignore_errors = kwargs.pop('ignore_errors', ()) - # Default values of None says to keep parent's file descriptors. - if return_output: - output = str - else: - output = kwargs.pop("output", None) + # If they just want to ignore one error code, make it a tuple. + if isinstance(ignore_errors, int): + ignore_errors = (ignore_errors, ) + + input = kwargs.pop('input', None) + output = kwargs.pop('output', None) + error = kwargs.pop('error', None) - error = kwargs.pop("error", None) - input = kwargs.pop("input", None) if input is str: - raise ValueError("Cannot use `str` as input stream.") + raise ValueError('Cannot use `str` as input stream.') def streamify(arg, mode): if isinstance(arg, string_types): @@ -161,12 +147,8 @@ def streamify(arg, mode): return arg, False ostream, close_ostream = streamify(output, 'w') - estream, close_estream = streamify(error, 'w') - istream, close_istream = streamify(input, 'r') - - # if they just want to ignore one error code, make it a tuple. - if isinstance(ignore_errors, int): - ignore_errors = (ignore_errors, ) + estream, close_estream = streamify(error, 'w') + istream, close_istream = streamify(input, 'r') quoted_args = [arg for arg in args if re.search(r'^"|^\'|"$|\'$', arg)] if quoted_args: @@ -196,7 +178,7 @@ def streamify(arg, mode): rc = self.returncode = proc.returncode if fail_on_error and rc != 0 and (rc not in ignore_errors): - raise ProcessError("Command exited with status %d:" % + raise ProcessError('Command exited with status %d:' % proc.returncode, cmd_line) if output is str or error is str: @@ -209,12 +191,12 @@ def streamify(arg, mode): except OSError as e: raise ProcessError( - "%s: %s" % (self.exe[0], e.strerror), "Command: " + cmd_line) + '%s: %s' % (self.exe[0], e.strerror), 'Command: ' + cmd_line) except subprocess.CalledProcessError as e: if fail_on_error: raise ProcessError( - str(e), "\nExit status %d when invoking command: %s" % + str(e), '\nExit status %d when invoking command: %s' % (proc.returncode, cmd_line)) finally: @@ -235,27 +217,43 @@ def __hash__(self): return hash((type(self), ) + tuple(self.exe)) def __repr__(self): - return "" % self.exe + return '' % self.exe def __str__(self): return ' '.join(self.exe) -def which(name, **kwargs): - """Finds an executable in the path like command-line which.""" - path = kwargs.get('path', os.environ.get('PATH', '').split(os.pathsep)) +def which(*args, **kwargs): + """Finds an executable in the path like command-line which. + + If given multiple executables, returns the first one that is found. + If no executables are found, returns None. + + Parameters: + *args (str): One or more executables to search for + + Keyword Arguments: + path (:func:`list` or str): The path to search. Defaults to ``PATH`` + required (bool): If set to True, raise an error if executable not found + + Returns: + Executable: The first executable that is found in the path + """ + path = kwargs.get('path', os.environ.get('PATH')) required = kwargs.get('required', False) - if not path: - path = [] + if isinstance(path, string_types): + path = path.split(os.pathsep) - for dir in path: - exe = os.path.join(dir, name) - if os.path.isfile(exe) and os.access(exe, os.X_OK): - return Executable(exe) + for name in args: + for directory in path: + exe = os.path.join(directory, name) + if os.path.isfile(exe) and os.access(exe, os.X_OK): + return Executable(exe) if required: - tty.die("spack requires %s. Make sure it is in your path." % name) + tty.die("spack requires '%s'. Make sure it is in your path." % args[0]) + return None diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index 053a4d48524..288f9581347 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -184,7 +184,7 @@ def check_install(self, spec): "-L%s" % spec["hdf5"].prefix.lib, "-lhdf5") try: check = Executable("./check") - output = check(return_output=True) + output = check(output=str) except: output = "" success = output == expected diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 50ad30222f2..2f2f0161773 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -263,7 +263,7 @@ def check_install(self): spec['hdf5'].libs.ld_flags.split())) try: check = Executable('./check') - output = check(return_output=True) + output = check(output=str) except: output = "" success = output == expected diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py index 3030fb1310d..52eb5d72892 100644 --- a/var/spack/repos/builtin/packages/spark/package.py +++ b/var/spack/repos/builtin/packages/spark/package.py @@ -72,7 +72,7 @@ def setup_environment(self, spack_env, run_env): # spack_env.set('JAVA_HOME', self.spec['jdk'].prefix) hadoop = self.spec['hadoop'].command - hadoop_classpath = hadoop('classpath', return_output=True) + hadoop_classpath = hadoop('classpath', output=str) # Remove whitespaces, as they can compromise syntax in # module files From 6762714302195dd072dd10a5020f80fd98b49ed9 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 15 Jun 2017 03:31:03 -0600 Subject: [PATCH 1064/2394] Nalu requires Trilinos with Exodus support (#4505) * Disabling Exodus in Trilinos by default. * Returning default of Exodus to true in Trilinos. --- var/spack/repos/builtin/packages/nalu/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/nalu/package.py b/var/spack/repos/builtin/packages/nalu/package.py index f485b5cb17e..ed3785c5c70 100644 --- a/var/spack/repos/builtin/packages/nalu/package.py +++ b/var/spack/repos/builtin/packages/nalu/package.py @@ -43,7 +43,7 @@ class Nalu(CMakePackage): # Currently Nalu only builds static libraries; To be fixed soon depends_on('yaml-cpp+fpic~shared') - depends_on('trilinos~shared+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf@master') + depends_on('trilinos~shared+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf@master') def build_type(self): if '+debug' in self.spec: From 8c2447272eae511aa3dfc4bb9d47fad1a16468a3 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 15 Jun 2017 11:32:55 +0200 Subject: [PATCH 1065/2394] Fix dashes in variant parsing (#4498) - Skip spack flake8 test when flake8 is not installed. - Fix parsing of dashes in specs broken by new help parser. - use argparse.REMAINDER instead of narg='?' - don't interpret parts of specs like -mpi as arguments. --- lib/spack/spack/main.py | 15 +++++++-------- lib/spack/spack/test/cmd/flake8.py | 1 + 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 39c64b3ce03..543d871f429 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -32,8 +32,8 @@ import sys import os import inspect -from argparse import _ArgumentGroup, ArgumentParser, RawTextHelpFormatter import pstats +import argparse import llnl.util.tty as tty from llnl.util.tty.color import * @@ -126,7 +126,7 @@ def index_commands(): return index -class SpackArgumentParser(ArgumentParser): +class SpackArgumentParser(argparse.ArgumentParser): def format_help_sections(self, level): """Format help on sections for a particular verbosity level. @@ -165,7 +165,7 @@ def add_subcommand_group(title, commands): if action.metavar in cmd_set) # add commands to a group in order, and add the group - group = _ArgumentGroup(self, title=title) + group = argparse._ArgumentGroup(self, title=title) for name in commands: group._add_action(cmds[name]) if name in remaining: @@ -265,7 +265,7 @@ def format_help(self, level='short'): def make_argument_parser(): """Create an basic argument parser without any subcommands added.""" parser = SpackArgumentParser( - formatter_class=RawTextHelpFormatter, add_help=False, + formatter_class=argparse.RawTextHelpFormatter, add_help=False, description=( "A flexible package manager that supports multiple versions,\n" "configurations, platforms, and compilers.")) @@ -410,8 +410,7 @@ def main(argv=None): # avoid loading all the modules from spack.cmd when we don't need # them, which reduces startup latency. parser = make_argument_parser() - parser.add_argument( - 'command', metavar='COMMAND', nargs='?', action='store') + parser.add_argument('command', nargs=argparse.REMAINDER) args, unknown = parser.parse_known_args(argv) # Just print help and exit if run with no arguments at all @@ -432,13 +431,13 @@ def main(argv=None): # Try to load the particular command the caller asked for. If there # is no module for it, just die. - command_name = args.command.replace('-', '_') + command_name = args.command[0].replace('-', '_') try: parser.add_command(command_name) except ImportError: if spack.debug: raise - tty.die("Unknown command: %s" % args.command) + tty.die("Unknown command: %s" % args.command[0]) # Re-parse with the proper sub-parser added. args, unknown = parser.parse_known_args() diff --git a/lib/spack/spack/test/cmd/flake8.py b/lib/spack/spack/test/cmd/flake8.py index 438791c9883..3fad486333e 100644 --- a/lib/spack/spack/test/cmd/flake8.py +++ b/lib/spack/spack/test/cmd/flake8.py @@ -81,6 +81,7 @@ def test_changed_files(parser, flake8_package): sys.version_info[:2] <= (2, 6) or (3, 0) <= sys.version_info[:2] <= (3, 3), reason='flake8 no longer supports Python 2.6 or 3.3 and older') +@pytest.mark.skipif(not which('flake8'), reason='flake8 is not installed.') def test_flake8(parser, flake8_package): # Only test the flake8_package that we modified # Otherwise, the unit tests would fail every time From 336e3e6a897f3759ba8cd5f2b17a33ea2d722164 Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Thu, 15 Jun 2017 04:51:52 -0500 Subject: [PATCH 1066/2394] Added py-pywavelets package (#4496) * Added py-pywt package * passes flake8 test * renamed py-pywt to py-pywavelets --- .../builtin/packages/py-pywavelets/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pywavelets/package.py diff --git a/var/spack/repos/builtin/packages/py-pywavelets/package.py b/var/spack/repos/builtin/packages/py-pywavelets/package.py new file mode 100644 index 00000000000..eed3a465b0f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pywavelets/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PyPywavelets(PythonPackage): + """PyWavelets is a free Open Source library for wavelet transforms + in Python""" + + homepage = "https://github.com/PyWavelets" + url = "https://pypi.io/packages/source/P/PyWavelets/PyWavelets-0.5.2.tar.gz" + + version('0.5.2', 'aedda732f064cf9395f03d37f1003d1a') + + import_modules = ['pywt'] + + depends_on('py-setuptools', type='build') + depends_on('py-cython', type='build') + depends_on('py-numpy@1.9.1:', type=('build', 'run')) From 27e6e8715e6c3176718660653713ab410250e3c6 Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Thu, 15 Jun 2017 03:27:52 -0700 Subject: [PATCH 1067/2394] Adding initial AMReX package (#4467) * adding initial amrex package * adding missing fortran variant predicate * adjusting description text * adjusting as per @tgamlin guidance --- .../repos/builtin/packages/amrex/package.py | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 var/spack/repos/builtin/packages/amrex/package.py diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py new file mode 100644 index 00000000000..0147ffb69d6 --- /dev/null +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -0,0 +1,85 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Amrex(CMakePackage): + """AMReX is the successor to BoxLib. + It is a Block-Structured AMR Framework. + """ + + homepage = "https://ccse.lbl.gov/AMReX/index.html" + url = "https://github.com/AMReX-Codes/amrex.git" + + version('develop', git='https://github.com/AMReX-Codes/amrex.git', tag='master') + version('17.06', git='https://github.com/AMReX-Codes/amrex.git', commit='836d3c7') + + variant('dims', + default='3', + values=('1', '2', '3'), + multi=False, + description='Number of spatial dimensions') + + variant('prec', + default='DOUBLE', + values=('FLOAT', 'DOUBLE'), + multi=False, + description='Floating point precision') + + variant('mpi', default=True, description='Enable MPI parallel support') + variant('openmp', default=False, description='Enable OpenMP parallel support') + variant('fortran', default=True, description='Enable Fortran support') + variant('debug', default=False, description='Enable debugging features') + variant('particles', default=False, description='Include particle classes in build') + + depends_on('mpi', when='+mpi') + + def cmake_args(self): + spec = self.spec + + cmake_args = [ + '-DENABLE_POSITION_INDEPENDENT_CODE=ON', + '-DBL_SPACEDIM:INT=%d' % int(spec.variants['dims'].value), + '-DBL_PRECISION:STRING=%s' % spec.variants['prec'].value, + '-DENABLE_FMG=%s' % ('+fortran' in spec), + '-DENABLE_FBASELIB=%s' % ('+fortran' in spec), + '-DBL_DEBUG:INT=%d' % int('+debug' in spec), + '-DBL_USE_PARTICLES:INT=%d' % int('+particles' in spec), + '-DENABLE_MPI:INT=%d' % int('+mpi' in spec), + '-DENABLE_OpenMP:INT=%d' % int('+openmp' in spec), + ] + + if '+mpi' in spec: + cmake_args += [ + '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, + '-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx + ] + if '+fortran' in spec: + cmake_args += [ + '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc + ] + cmake_args += ['-DENABLE_FORTRAN_MPI=%s' % ('+fortran' in spec)] + + return cmake_args From dc911661ca1ea15d0e4f39ed530900dd615f2178 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 15 Jun 2017 05:35:56 -0500 Subject: [PATCH 1068/2394] Add missing doc variant to fenics package (#4473) --- .../repos/builtin/packages/fenics/package.py | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/var/spack/repos/builtin/packages/fenics/package.py b/var/spack/repos/builtin/packages/fenics/package.py index 4be94a96b89..1db9614dc28 100644 --- a/var/spack/repos/builtin/packages/fenics/package.py +++ b/var/spack/repos/builtin/packages/fenics/package.py @@ -25,7 +25,7 @@ from spack import * -class Fenics(Package): +class Fenics(CMakePackage): """FEniCS is organized as a collection of interoperable components that together form the FEniCS Project. These components include the problem-solving environment DOLFIN, the form compiler FFC, the @@ -35,9 +35,10 @@ class Fenics(Package): homepage = "http://fenicsproject.org/" url = "https://bitbucket.org/fenics-project/dolfin/downloads/dolfin-1.6.0.tar.gz" - base_url = "https://bitbucket.org/fenics-project/{pkg}/downloads/{pkg}-{version}.tar.gz" + python_components = ['ufl', 'ffc', 'fiat', 'instant'] + variant('hdf5', default=True, description='Compile with HDF5') variant('parmetis', default=True, description='Compile with ParMETIS') variant('scotch', default=True, description='Compile with Scotch') @@ -56,6 +57,8 @@ class Fenics(Package): description='Enables the build of shared libraries') variant('debug', default=False, description='Builds a debug version of the libraries') + variant('doc', default=False, + description='Builds the documentation') # not part of spack list for now # variant('petsc4py', default=True, description='Uses PETSc4py') @@ -68,7 +71,7 @@ class Fenics(Package): extends('python') - depends_on('eigen@3.2.0:', type='build') + depends_on('eigen@3.2.0:') depends_on('boost+filesystem+program_options+system+iostreams+timer+regex+chrono') depends_on('mpi', when='+mpi') @@ -88,7 +91,7 @@ class Fenics(Package): depends_on('py-numpy', type=('build', 'run')) depends_on('py-sympy', type=('build', 'run')) depends_on('swig@3.0.3:', type=('build', 'run')) - depends_on('cmake@2.8.12:', type=('build', 'run')) + depends_on('cmake@2.8.12:', type='build') depends_on('py-setuptools', type='build') depends_on('py-sphinx@1.0.1:', when='+doc', type='build') @@ -140,14 +143,14 @@ class Fenics(Package): def cmake_is_on(self, option): return 'ON' if option in self.spec else 'OFF' - def install(self, spec, prefix): - for package in ['ufl', 'ffc', 'fiat', 'instant']: - with working_dir(join_path('depends', package)): - setup_py('install', '--prefix=%s' % prefix) + def cmake_args(self): + spec = self.spec - cmake_args = [ + return [ '-DCMAKE_BUILD_TYPE:STRING={0}'.format( 'Debug' if '+debug' in spec else 'RelWithDebInfo'), + '-DDOLFIN_ENABLE_DOCS:BOOL={0}'.format( + self.cmake_is_on('+doc')), '-DBUILD_SHARED_LIBS:BOOL={0}'.format( self.cmake_is_on('+shared')), '-DDOLFIN_SKIP_BUILD_TESTS:BOOL=ON', @@ -189,10 +192,14 @@ def install(self, spec, prefix): self.cmake_is_on('zlib')), ] - cmake_args.extend(std_cmake_args) + @run_after('build') + def build_python_components(self): + for package in self.python_components: + with working_dir(join_path('depends', package)): + setup_py('build') - with working_dir('build', create=True): - cmake('..', *cmake_args) - - make() - make('install') + @run_after('install') + def install_python_components(self): + for package in self.python_components: + with working_dir(join_path('depends', package)): + setup_py('install', '--prefix={0}'.format(self.prefix)) From 41e4a034ffd89b6e31411a00ad765e7f936dc3ab Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 15 Jun 2017 05:40:55 -0500 Subject: [PATCH 1069/2394] Add latest version of JDK (#4317) * Add latest version of JDK * Use a more specific URL to get curl to work * Remove failing unit test --- lib/spack/spack/test/package_sanity.py | 10 -------- .../repos/builtin/packages/jdk/package.py | 25 +++++++++++-------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/lib/spack/spack/test/package_sanity.py b/lib/spack/spack/test/package_sanity.py index ac318f94dcb..c1902413ea8 100644 --- a/lib/spack/spack/test/package_sanity.py +++ b/lib/spack/spack/test/package_sanity.py @@ -49,16 +49,6 @@ def test_get_all_mock_packages(): spack.repo.swap(db) -def test_url_versions(): - """Check URLs for regular packages, if they are explicitly defined.""" - for pkg in spack.repo.all_packages(): - for v, vattrs in pkg.versions.items(): - if 'url' in vattrs: - # If there is a url for the version check it. - v_url = pkg.url_for_version(v) - assert vattrs['url'] == v_url - - def test_all_versions_are_lowercase(): """Spack package names must be lowercase, and use `-` instead of `_`.""" errors = [] diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index 02c44e9337f..9939772f470 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -45,19 +45,24 @@ class Jdk(Package): '-H', # specify required License Agreement cookie 'Cookie: oraclelicense=accept-securebackup-cookie'] - version('8u92', '65a1cc17ea362453a6e0eb4f13be76e4', - url="http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.tar.gz", - curl_options=curl_options) - version('8u73', '1b0120970aa8bc182606a16bf848a686', - url="http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.tar.gz", - curl_options=curl_options) - version('8u66', '88f31f3d642c3287134297b8c10e61bf', - url="http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz", - curl_options=curl_options) + # For instructions on how to find the magic URL, see: + # https://gist.github.com/P7h/9741922 + # https://linuxconfig.org/how-to-install-java-se-development-kit-on-debian-linux + version('8u131-b11', '75b2cb2249710d822a60f83e28860053', curl_options=curl_options, + url='http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz') + version('8u92-b14', '65a1cc17ea362453a6e0eb4f13be76e4', curl_options=curl_options) + version('8u73-b02', '1b0120970aa8bc182606a16bf848a686', curl_options=curl_options) + version('8u66-b17', '88f31f3d642c3287134297b8c10e61bf', curl_options=curl_options) # The 7u80 tarball is not readily available from Oracle. If you have # the tarball, add it to your mirror as mirror/jdk/jdk-7u80.tar.gz and # away you go. - version('7u80', '6152f8a7561acf795ca4701daa10a965') + version('7u80-b0', '6152f8a7561acf795ca4701daa10a965') + + def url_for_version(self, version): + url = "http://download.oracle.com/otn-pub/java/jdk/{0}/jdk-{1}-linux-x64.tar.gz" + version = str(version) + minor_version = version[:version.index('-')] + return url.format(version, minor_version) def install(self, spec, prefix): distutils.dir_util.copy_tree(".", prefix) From a9a780562610e32b854c94864d4736252261759e Mon Sep 17 00:00:00 2001 From: Diana Bite Date: Thu, 15 Jun 2017 12:38:24 +0100 Subject: [PATCH 1070/2394] openblas: Fix build on aarch64. (#4487) - invoke make with the correct TARGET for aarch64 - foforce PILERDRIVER as openblas cannot correctly detect CPU on aarch64 - update url to more recent version --- var/spack/repos/builtin/packages/openblas/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 4ebb38aa7aa..5353bdcc48c 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -24,13 +24,14 @@ ############################################################################## from spack import * from spack.package_test import * +import spack.architecture import os class Openblas(MakefilePackage): """OpenBLAS: An optimized BLAS library""" homepage = 'http://www.openblas.net' - url = 'http://github.com/xianyi/OpenBLAS/archive/v0.2.15.tar.gz' + url = 'http://github.com/xianyi/OpenBLAS/archive/v0.2.19.tar.gz' version('0.2.19', '28c998054fd377279741c6f0b9ea7941') version('0.2.18', '805e7f660877d588ea7e3792cda2ee65') @@ -97,6 +98,12 @@ def make_defs(self): 'FC={0}'.format(spack_f77), 'MAKE_NO_J=1' ] + # invoke make with the correct TARGET for aarch64 + if 'aarch64' in spack.architecture.sys_type(): + make_defs += [ + 'TARGET=PILEDRIVER', + 'TARGET=ARMV8' + ] if self.spec.satisfies('%gcc@:4.8.4'): make_defs += ['NO_AVX2=1'] if '~shared' in self.spec: From 080314c68eabf77d4d5086b81e94a9b28f5e6960 Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Thu, 15 Jun 2017 09:45:27 -0500 Subject: [PATCH 1071/2394] added py-counter package (#4510) --- .../builtin/packages/py-counter/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-counter/package.py diff --git a/var/spack/repos/builtin/packages/py-counter/package.py b/var/spack/repos/builtin/packages/py-counter/package.py new file mode 100644 index 00000000000..61e1d51e6cc --- /dev/null +++ b/var/spack/repos/builtin/packages/py-counter/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyCounter(PythonPackage): + """Counter package defines the "counter.Counter" class similar to + bags or multisets in other languages.""" + + homepage = "https://github.com/KelSolaar/Counter" + url = "https://pypi.io/packages/source/C/Counter/Counter-1.0.0.tar.gz" + + version('1.0.0', '1b49029693c28813ff276c2b16673f98') + + depends_on('py-setuptools', type='build') From 503efb8881e9dd1cc3c54df469c4b8c973eb6c5c Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Thu, 15 Jun 2017 09:46:44 -0500 Subject: [PATCH 1072/2394] added py-latexcodec package (#4509) * Added py-latexcodec package * removed url line from the file --- .../builtin/packages/py-latexcodec/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-latexcodec/package.py diff --git a/var/spack/repos/builtin/packages/py-latexcodec/package.py b/var/spack/repos/builtin/packages/py-latexcodec/package.py new file mode 100644 index 00000000000..d93050e8219 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-latexcodec/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyLatexcodec(PythonPackage): + """A lexer and codec to work with LaTeX code in Python.""" + + homepage = "http://latexcodec.readthedocs.io" + url = "https://pypi.io/packages/source/l/latexcodec/latexcodec-1.0.4.tar.gz" + + version('1.0.4', '72010ec2a55227a5802239cff6fd32d6') + + depends_on('py-setuptools', type='build') + depends_on('py-six@1.4.1:', type=('build', 'run')) From c102be2144b9ebf56d6f0d604d45cdaca12c8d99 Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Thu, 15 Jun 2017 13:50:48 -0500 Subject: [PATCH 1073/2394] Added package py-oset (#4500) * Added py-oset package * Added package py-oset * changed homepage url --- .../repos/builtin/packages/py-oset/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-oset/package.py diff --git a/var/spack/repos/builtin/packages/py-oset/package.py b/var/spack/repos/builtin/packages/py-oset/package.py new file mode 100644 index 00000000000..6ce7b392e6f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-oset/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyOset(PythonPackage): + """Set that remembers original insertion order.""" + + homepage = "https://pypi.python.org/pypi/oset" + url = "https://pypi.io/packages/source/o/oset/oset-0.1.3.tar.gz" + + version('0.1.3', 'f23e5a545d2c77df3916398d2d39a3ab') + + depends_on('py-setuptools', type='build') + depends_on('python@2.5:', type=('build', 'run')) From da67ee9790598fa91aa97af173660560202b3e82 Mon Sep 17 00:00:00 2001 From: Mario Melara Date: Thu, 15 Jun 2017 15:16:14 -0700 Subject: [PATCH 1074/2394] Fix tests on cray (#4298) * Check for CRAYPE_VERSION instead of path Architecture tests would fail on Cray since it would not find the expected path. To make the test correctly work on Cray search for the CRAYPE version instead. * Catch SystemExit error in case flake8 not in path On shared systems having flake8 can involve starting own virtual env. Skip the test if no flake8 is found to avoid failure reporting. * Add compatibility to 1.5 svnadmin create The flag added is needed to correctly create svn repos on NERSC systems. This could be unnecessary for other sites. I'd like to see others test before this change gets merged. --- lib/spack/spack/test/architecture.py | 2 +- lib/spack/spack/test/cmd/flake8.py | 3 --- lib/spack/spack/test/conftest.py | 4 +++- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/test/architecture.py b/lib/spack/spack/test/architecture.py index 8f257cf0dc9..f658b1951f6 100644 --- a/lib/spack/spack/test/architecture.py +++ b/lib/spack/spack/test/architecture.py @@ -58,7 +58,7 @@ def test_dict_functions_for_architecture(): def test_platform(): output_platform_class = spack.architecture.real_platform() - if os.path.exists('/opt/cray/craype'): + if os.environ.get('CRAYPE_VERSION') is not None: my_platform_class = Cray() elif os.path.exists('/bgsys'): my_platform_class = Bgq() diff --git a/lib/spack/spack/test/cmd/flake8.py b/lib/spack/spack/test/cmd/flake8.py index 3fad486333e..f0fc339f8b9 100644 --- a/lib/spack/spack/test/cmd/flake8.py +++ b/lib/spack/spack/test/cmd/flake8.py @@ -87,10 +87,7 @@ def test_flake8(parser, flake8_package): # Otherwise, the unit tests would fail every time # the flake8 tests fail args = parser.parse_args([flake8_package]) - flake8(parser, args) - # Get even more coverage args = parser.parse_args(['--output', '--root-relative', flake8_package]) - flake8(parser, args) diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index 3c725e229b5..c8720ddbc83 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -474,7 +474,9 @@ def mock_svn_repository(): url = 'file://' + str(repodir) # Initialize the repository current = repodir.chdir() - svnadmin('create', str(repodir)) + # NOTE: Adding --pre-1.5-compatible works for NERSC + # Unknown if this is also an issue at other sites. + svnadmin('create', '--pre-1.5-compatible', str(repodir)) # Import a structure (first commit) r0_file = 'r0_file' From 8b5e94976d9850d352225e60e1d9428fc7c87735 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 16 Jun 2017 12:41:15 +0200 Subject: [PATCH 1075/2394] issue 4492: DependencyMap.concrete checks for unconditional dependencies (#4499) * issue 4492: added xfailing test, added owner to DependencyMap * DependencyMap.concrete checks if we have unconditional dependencies This fixes #4492 and #4107 using some heuristics to avoid an infinite recursion among Spec.satisfies, Spec.concrete and DependencyMap.concrete The idea, as suggested by @becker33, is to check just for unconditional dependencies. This is not covering the whole space and a package with just conditional dependencies can still fail in the same way. It should cover though all the **real** packages we have in our repo so far. --- lib/spack/spack/spec.py | 85 ++++++++++++++++++++++++++---- lib/spack/spack/test/concretize.py | 21 +++++++- 2 files changed, 96 insertions(+), 10 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index c757e6b0d6f..eed93eccb76 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -678,10 +678,72 @@ class DependencyMap(HashableMap): """Each spec has a DependencyMap containing specs for its dependencies. The DependencyMap is keyed by name. """ + def __init__(self, owner): + super(DependencyMap, self).__init__() + + # Owner Spec for the current map + self.owner = owner + @property def concrete(self): - return all((d.spec.concrete and d.deptypes) - for d in self.values()) + + # Check if the dependencies are concrete and of the correct type + dependencies_are_concrete = all( + (d.spec.concrete and d.deptypes) for d in self.values() + ) + + if not dependencies_are_concrete: + return False + + # If we are dealing with an external spec, it clearly has no + # dependencies managed by spack + if self.owner.external: + return True + + # Now check we have every dependency we need + pkg = self.owner.package + for dependency in pkg.dependencies.values(): + # Check that for every condition we satisfy we satisfy also + # the associated constraint + for condition, constraint in dependency.items(): + # WARNING: This part relies on the fact that dependencies are + # the last item to be checked when computing if a spec is + # concrete. This means that we are ensured that all variants, + # versions, compilers, etc. are there with their final value + # when we call 'Spec.satisfies(..., strict=True)' + + # FIXME: at the moment check only for non conditional + # FIXME: dependencies, to avoid infinite recursion + + # satisfy_condition = self.owner.satisfies( + # condition, strict=True + # ) + + satisfy_condition = str(condition) == self.owner.name + + if not satisfy_condition: + continue + + dependency_name = constraint.name + + # We don't want to check build dependencies + if pkg.dependency_types[dependency_name] == set(['build']): + continue + + try: + dependency = self.owner[dependency_name] + satisfy_constraint = dependency.satisfies( + constraint, strict=True + ) + except KeyError: + # If the dependency is not there we don't + # satisfy the constraint + satisfy_constraint = False + + if satisfy_condition and not satisfy_constraint: + return False + + return True def __str__(self): return "{deps: %s}" % ', '.join(str(d) for d in sorted(self.values())) @@ -1144,9 +1206,13 @@ def concrete(self): If any of the name, version, architecture, compiler, variants, or depdenencies are ambiguous,then it is not concrete. """ + # If we have cached that the spec is concrete, then it's concrete if self._concrete: return True + # Otherwise check if the various parts of the spec are concrete. + # It's crucial to have the check on dependencies last, as it relies + # on all the other parts to be already checked for concreteness. self._concrete = bool(not self.virtual and self.namespace is not None and self.versions.concrete and @@ -1647,8 +1713,8 @@ def _expand_virtual_packages(self): if replacement.external: if (spec._dependencies): changed = True - spec._dependencies = DependencyMap() - replacement._dependencies = DependencyMap() + spec._dependencies = DependencyMap(spec) + replacement._dependencies = DependencyMap(replacement) replacement.architecture = self.architecture # TODO: could this and the stuff in _dup be cleaned up? @@ -1676,6 +1742,7 @@ def feq(cfield, sfield): if spec._dup(replacement, deps=False, cleardeps=False): changed = True + spec._dependencies.owner = spec self_index.update(spec) done = False break @@ -1807,7 +1874,7 @@ def flat_dependencies(self, **kwargs): def index(self, deptype=None): """Return DependencyMap that points to all the dependencies in this spec.""" - dm = DependencyMap() + dm = DependencyMap(None) for spec in self.traverse(deptype=deptype): dm[spec.name] = spec return dm @@ -2416,8 +2483,8 @@ def _dup(self, other, deps=True, cleardeps=True): else None self.compiler = other.compiler.copy() if other.compiler else None if cleardeps: - self._dependents = DependencyMap() - self._dependencies = DependencyMap() + self._dependents = DependencyMap(self) + self._dependencies = DependencyMap(self) self.compiler_flags = other.compiler_flags.copy() self.variants = other.variants.copy() self.variants.spec = self @@ -3078,8 +3145,8 @@ def spec(self, name): spec.external_path = None spec.external_module = None spec.compiler_flags = FlagMap(spec) - spec._dependents = DependencyMap() - spec._dependencies = DependencyMap() + spec._dependents = DependencyMap(spec) + spec._dependencies = DependencyMap(spec) spec.namespace = spec_namespace spec._hash = None spec._cmp_key_cache = None diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 779d4f88165..1b659cb091b 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -26,7 +26,8 @@ import spack import spack.architecture from spack.concretize import find_spec -from spack.spec import Spec, CompilerSpec, ConflictsInSpecError, SpecError +from spack.spec import Spec, CompilerSpec +from spack.spec import ConflictsInSpecError, SpecError from spack.version import ver @@ -397,3 +398,21 @@ def test_conflicts_in_spec(self, conflict_spec): s = Spec(conflict_spec) with pytest.raises(exc_type): s.concretize() + + def test_regression_issue_4492(self): + # Constructing a spec which has no dependencies, but is otherwise + # concrete is kind of difficult. What we will do is to concretize + # a spec, and then modify it to have no dependency and reset the + # cache values. + + s = Spec('mpileaks') + s.concretize() + + # Check that now the Spec is concrete, store the hash + assert s.concrete + + # Remove the dependencies and reset caches + s._dependencies.clear() + s._concrete = False + + assert not s.concrete From 790b06e0c363ce1598deb3bde217c4685701b61d Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 16 Jun 2017 14:03:21 +0200 Subject: [PATCH 1076/2394] bugfix: support EDITOR values with spaces (#4523) - previous code called `which` on $EDITOR, but that doesn't work for EDITORs like `emacs -nw` or `emacsclient -t -nw`. - This patch just trusts EDITOR if it is set (same as previous behavior), and only uses the defaults if it's not. --- lib/spack/spack/__init__.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 214bb098781..3f99c5581c9 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -212,16 +212,16 @@ from spack.util.executable import * __all__ += spack.util.executable.__all__ -# User's editor from the environment -# Default editors to use: -_default_editors = ['vim', 'vi', 'emacs', 'nano'] +# Set up the user's editor +# $EDITOR environment variable has the highest precedence +editor = os.environ.get('EDITOR') -# The EDITOR environment variable has the highest precedence -if os.environ.get('EDITOR'): - _default_editors.insert(0, os.environ.get('EDITOR')) - -editor = which(*_default_editors) +# if editor is not set, use some sensible defaults +if editor is not None: + editor = Executable(editor) +else: + editor = which('vim', 'vi', 'emacs', 'nano') if not editor: default = default_editors[0] From fe7bf77afeb11e3656d86e1e39d0c557cc5b7af8 Mon Sep 17 00:00:00 2001 From: iulian787 Date: Fri, 16 Jun 2017 09:29:59 -0400 Subject: [PATCH 1077/2394] oce changes for cgm (#4514) * oce changes for cgm cgm can be configured with oce, but oce needs to have X11 enabled, because some libraries (like TKCAF in occ/oce) gets built only of X11 is NOT disabled so introduce a variant +X11 for oce, which is needed when configuring cgm with oce(+X11) * follow up review simplify by removing the patch and different url paths use append instead of extend, when necessary make mpi true by default X11 dependency is still to be addressed; it pulls in some opengl library (on laptop nvidia seem to work, on virtual linux machine mesa was good enough) --- .../repos/builtin/packages/cgm/package.py | 42 ++++++++++++------- .../repos/builtin/packages/oce/package.py | 7 +++- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/var/spack/repos/builtin/packages/cgm/package.py b/var/spack/repos/builtin/packages/cgm/package.py index 5a998d471c9..46838a90571 100644 --- a/var/spack/repos/builtin/packages/cgm/package.py +++ b/var/spack/repos/builtin/packages/cgm/package.py @@ -25,30 +25,40 @@ from spack import * -class Cgm(Package): +class Cgm(AutotoolsPackage): """The Common Geometry Module, Argonne (CGMA) is a code library which provides geometry functionality used for mesh generation and other applications.""" - homepage = "http://trac.mcs.anl.gov/projects/ITAPS/wiki/CGM" - url = "http://ftp.mcs.anl.gov/pub/fathom/cgm13.1.1.tar.gz" + homepage = "http://sigma.mcs.anl.gov/cgm-library" + url = "http://ftp.mcs.anl.gov/pub/fathom/cgm-16.0.tar.gz" + version('16.0', 'a68aa5954d82502ff75d5eb91a29a01c') version('13.1.1', '4e8dbc4ba8f65767b29f985f7a23b01f') version('13.1.0', 'a6c7b22660f164ce893fb974f9cb2028') version('13.1', '95f724bda04919fc76818a5b7bc0b4ed') - depends_on("mpi") + variant("mpi", default=True, description='enable mpi support') + variant("oce", default=False, description='enable oce geometry kernel') - def patch(self): - filter_file('^(#include "CGMParallelConventions.h")', - '//\1', - 'geom/parallel/CGMReadParallel.cpp') + depends_on('mpi', when='+mpi') + depends_on('oce+X11', when='+oce') - def install(self, spec, prefix): - configure("--with-mpi", - "--prefix=%s" % prefix, - "CFLAGS=-static", - "CXXFLAGS=-static", - "FCFLAGS=-static") + def configure_args(self): + spec = self.spec + args = [] - make() - make("install") + if '+mpi' in spec: + args.extend([ + "--with-mpi", + "CC={0}".format(spec['mpi'].mpicc), + "CXX={0}".format(spec['mpi'].mpicxx) + ]) + else: + args.append("--without-mpi") + + if '+oce' in spec: + args.append("--with-occ={0}".format(spec['oce'].prefix)) + else: + args.append("--without-occ") + + return args diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py index 840b50f4a8a..8a452392626 100644 --- a/var/spack/repos/builtin/packages/oce/package.py +++ b/var/spack/repos/builtin/packages/oce/package.py @@ -32,7 +32,7 @@ class Oce(Package): Open CASCADE library. """ homepage = "https://github.com/tpaviot/oce" - url = "https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz" + url = "https://github.com/tpaviot/oce/archive/OCE-0.18.tar.gz" version('0.18.1', '2a7597f4243ee1f03245aeeb02d00956') version('0.18', '226e45e77c16a4a6e127c71fefcd171410703960ae75c7ecc7eb68895446a993') @@ -44,6 +44,8 @@ class Oce(Package): variant('tbb', default=True, description='Build with Intel Threading Building Blocks') + variant('X11', default=False, + description='Build with X11 enabled') depends_on('cmake@2.8:', type='build') depends_on('tbb', when='+tbb') @@ -70,7 +72,8 @@ def install(self, spec, prefix): '-DOCE_BUILD_SHARED_LIB:BOOL=ON', '-DCMAKE_BUILD_TYPE:STRING=Release', '-DOCE_DATAEXCHANGE:BOOL=ON', - '-DOCE_DISABLE_X11:BOOL=ON', + '-DOCE_DISABLE_X11:BOOL=%s' % ( + 'OFF' if '+X11' in spec else 'ON'), '-DOCE_DRAW:BOOL=OFF', '-DOCE_MODEL:BOOL=ON', '-DOCE_MULTITHREAD_LIBRARY:STRING=%s' % ( From f6e3ad4d9058cacca1a01ffefae53bb354a75961 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Fri, 16 Jun 2017 23:43:18 +1000 Subject: [PATCH 1078/2394] py-pillow: ensure that RPATH includes graphics libraries (#4522) --- var/spack/repos/builtin/packages/py-pillow/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index 5729c5c3dd0..6d35957819c 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -129,4 +129,6 @@ def variant_to_flag(variant): return '--{0}-{1}'.format(able, variant) variants = ['jpeg', 'zlib', 'tiff', 'freetype', 'lcms', 'jpeg2000'] - return list(map(variant_to_flag, variants)) + args = list(map(variant_to_flag, variants)) + args.extend(['--rpath=%s' % ":".join(self.rpath)]) + return args From 60db73a3f516c8cd94169700ee98295211dc5dc1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 16 Jun 2017 10:00:19 -0500 Subject: [PATCH 1079/2394] Fix OpenMPI CUDA support (#4323) * Fix OpenMPI CUDA support * Remove --with-cuda-libdir flag, not a real flag * Fix PGI and CUDA 7 support --- .../repos/builtin/packages/openmpi/package.py | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 6d5e5e6d2b4..bf6cf029956 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -191,6 +191,7 @@ class Openmpi(AutotoolsPackage): depends_on('jdk', when='+java') depends_on('sqlite', when='+sqlite3@:1.11') + conflicts('+cuda', when='@:1.6') # CUDA support was added in 1.7 conflicts('fabrics=psm2', when='@:1.8') # PSM2 support was added in 1.10.0 conflicts('fabrics=pmi', when='@:1.5.4') # PMI support was added in 1.5.5 conflicts('fabrics=mxm', when='@:1.5.3') # MXM support was added in 1.5.4 @@ -311,12 +312,29 @@ def configure_args(self): config_args.append('--disable-mpi-thread-multiple') # CUDA support + # See https://www.open-mpi.org/faq/?category=buildcuda if spec.satisfies('@1.7:'): if '+cuda' in spec: + # OpenMPI dynamically loads libcuda.so, requires dlopen + config_args.append('--enable-dlopen') + # Searches for header files in DIR/include config_args.append('--with-cuda={0}'.format( spec['cuda'].prefix)) - config_args.append('--with-cuda-libdir={0}'.format( - spec['cuda'].libs.directories)) + if spec.satisfies('@1.7:1.7.2'): + # This option was removed from later versions + config_args.append('--with-cuda-libdir={0}'.format( + spec['cuda'].libs.directories[0])) + if spec.satisfies('@1.7.2'): + # There was a bug in 1.7.2 when --enable-static is used + config_args.append('--enable-mca-no-build=pml-bfo') + if spec.satisfies('%pgi^cuda@7.0:7.999'): + # OpenMPI has problems with CUDA 7 and PGI + config_args.append( + '--with-wrapper-cflags=-D__LP64__ -ta:tesla') + if spec.satisfies('%pgi@:15.8'): + # With PGI 15.9 and later compilers, the + # CFLAGS=-D__LP64__ is no longer needed. + config_args.append('CFLAGS=-D__LP64__') else: config_args.append('--without-cuda') From 04c2a1caf46b5b3b96b76c68a96a621072c40f2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=B6hme?= Date: Fri, 16 Jun 2017 09:45:06 -0700 Subject: [PATCH 1080/2394] Update Scalasca/Score-P/Cube/OTF2 (#4485) * Update Scalasca/Score-P/OTF2/Cube. Should fix #4349# * cube: Fix flake8 warnings * cube, scalasca: Fix version range syntax for deps * otf2: Fix version URL generation * cube: Remove static URLs --- .../repos/builtin/packages/cube/package.py | 35 +++++++++++-------- .../builtin/packages/scalasca/package.py | 25 ++++++------- .../repos/builtin/packages/scorep/package.py | 1 + 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/var/spack/repos/builtin/packages/cube/package.py b/var/spack/repos/builtin/packages/cube/package.py index 9cea3c40e88..7164aefce7d 100644 --- a/var/spack/repos/builtin/packages/cube/package.py +++ b/var/spack/repos/builtin/packages/cube/package.py @@ -25,7 +25,7 @@ from spack import * -class Cube(Package): +class Cube(AutotoolsPackage): """Cube the profile viewer for Score-P and Scalasca profiles. It displays a multi-dimensional performance space consisting of the dimensions: - performance metric @@ -36,26 +36,31 @@ class Cube(Package): homepage = "http://www.scalasca.org/software/cube-4.x/download.html" url = "http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz" - version('4.3.4', '50f73060f55311cb12c5b3cb354d59fa', - url='http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3.4.tar.gz') - version('4.3.3', '07e109248ed8ffc7bdcce614264a2909', - url='http://apps.fz-juelich.de/scalasca/releases/cube/4.3/dist/cube-4.3.3.tar.gz') - version('4.2.3', '8f95b9531f5a8f8134f279c2767c9b20', - url="http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz") + # Some versions fail with parallel builds/installs + parallel = False + + version('4.3.5', 'e5dce986e3c6381ea3a5fcb66c553adc') + version('4.3.4', '50f73060f55311cb12c5b3cb354d59fa') + version('4.3.3', '07e109248ed8ffc7bdcce614264a2909') + + version('4.2.3', '8f95b9531f5a8f8134f279c2767c9b20') variant('gui', default=False, description='Build CUBE GUI') depends_on('zlib') - depends_on('qt@4.6:', when='+gui') - def install(self, spec, prefix): - configure_args = ["--prefix=%s" % prefix, - "--without-paraver"] + depends_on('qt@5:', when='@4.3.0:4.3.999 +gui') + depends_on('qt@4.8:', when='@4.2.0:4.2.999 +gui') + + def url_for_version(self, version): + return 'http://apps.fz-juelich.de/scalasca/releases/cube/{0}/dist/cube-{1}.tar.gz'.format(version.up_to(2), version) + + def configure_args(self): + spec = self.spec + + configure_args = ['--enable-shared'] - # TODO : need to handle cross compiling build if '+gui' not in spec: configure_args.append('--without-gui') - configure(*configure_args) - make() - make("install", parallel=False) + return configure_args diff --git a/var/spack/repos/builtin/packages/scalasca/package.py b/var/spack/repos/builtin/packages/scalasca/package.py index a1f53973b7f..5b1ca12665a 100644 --- a/var/spack/repos/builtin/packages/scalasca/package.py +++ b/var/spack/repos/builtin/packages/scalasca/package.py @@ -43,19 +43,14 @@ class Scalasca(AutotoolsPackage): version('2.1', 'bab9c2b021e51e2ba187feec442b96e6') depends_on("mpi") - ########## - # Hard-code dependencies for Scalasca according to what stated in the - # release page - # The OTF2 library path should be detected automatically from SCOREP - # SCALASCA 2.2.2 - depends_on("scorep@1.4:", when='@2.2.2:') - # Use same cube as scorep does - # -> depends_on("cube@4.3:", when='@2.2.2:') - # SCALASCA 2.1 - depends_on("scorep@1.3", when='@2.1') - # Use same cube as scorep does - # -> depends_on("cube@4.2:", when='@2.1') - ########## + + # version 2.3 + depends_on('cube@4.3:', when='@2.3:') + depends_on('otf2@2:', when='@2.3:') + + # version 2.1+ + depends_on('cube@4.2', when='@2.1:2.2.999') + depends_on('otf2@1.4', when='@2.1:2.2.999') def url_for_version(self, version): return 'http://apps.fz-juelich.de/scalasca/releases/scalasca/{0}/dist/scalasca-{1}.tar.gz'.format(version.up_to(2), version) @@ -65,7 +60,7 @@ def configure_args(self): config_args = ["--enable-shared"] - if 'cube' in spec: # From scorep dependency - config_args.append("--with-cube=%s" % spec['cube'].prefix.bin) + config_args.append("--with-cube=%s" % spec['cube'].prefix.bin) + config_args.append("--with-otf2=%s" % spec['otf2'].prefix.bin) return config_args diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index f9979132b0b..288a0a0cd11 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -34,6 +34,7 @@ class Scorep(AutotoolsPackage): homepage = "http://www.vi-hps.org/projects/score-p" url = "http://www.vi-hps.org/upload/packages/scorep/scorep-2.0.2.tar.gz" + version('3.1', '065bf8eb08398e8146c895718ddb9145') version('3.0', '44da8beaa3f71436a5f6fe51938aab2f') version('2.0.2', '8f00e79e1b5b96e511c5ebecd10b2888') version('1.4.2', '3b9a042b13bdd5836452354e6567f71e') From a8919b07cab4118abc003073abec92ba6e255a7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kyle=20Fernandes=2C=20n=C3=A9=20Jacobs?= Date: Fri, 16 Jun 2017 18:18:25 +0100 Subject: [PATCH 1081/2394] Update intel* packages (#4528) * Update intel-* packages * Update intel package --- var/spack/repos/builtin/packages/intel-daal/package.py | 4 ++++ var/spack/repos/builtin/packages/intel-ipp/package.py | 4 ++++ var/spack/repos/builtin/packages/intel-mkl/package.py | 4 ++++ var/spack/repos/builtin/packages/intel-mpi/package.py | 2 ++ .../repos/builtin/packages/intel-parallel-studio/package.py | 6 ++++++ var/spack/repos/builtin/packages/intel/package.py | 6 ++++-- 6 files changed, 24 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel-daal/package.py b/var/spack/repos/builtin/packages/intel-daal/package.py index fb76509eaed..9ccd291bcc7 100644 --- a/var/spack/repos/builtin/packages/intel-daal/package.py +++ b/var/spack/repos/builtin/packages/intel-daal/package.py @@ -37,8 +37,12 @@ class IntelDaal(IntelInstaller): homepage = "https://software.intel.com/en-us/daal" + version('2017.3.196', '93221eaeb560917a129d42fb2cf02500', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11546/l_daal_2017.3.196.tgz") version('2017.2.174', 'f067d5d7b0f70914fba1f78da0361065', url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11308/l_daal_2017.2.174.tgz") + version('2017.1.132', '56eef8cc45219f92a27de03ae914eba4', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/10983/l_daal_2017.1.132.tgz") version('2017.0.098', 'b4eb234de12beff4a5cba4b81ea60673', url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9664/l_daal_2017.0.098.tgz") version('2016.3.210', 'ad747c0dd97dace4cad03cf2266cad28', diff --git a/var/spack/repos/builtin/packages/intel-ipp/package.py b/var/spack/repos/builtin/packages/intel-ipp/package.py index ed5c235ecfb..3c247e94c71 100644 --- a/var/spack/repos/builtin/packages/intel-ipp/package.py +++ b/var/spack/repos/builtin/packages/intel-ipp/package.py @@ -37,8 +37,12 @@ class IntelIpp(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-ipp" + version('2017.3.196', '47e53bd1a2740041f4d0be7c36b61a18', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11545/l_ipp_2017.3.196.tgz") version('2017.2.174', '8ad7753ee30c5176c4931070334144bc', url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11307/l_ipp_2017.2.174.tgz") + version('2017.1.132', '9fbbaa402b8d16f4cb4be9aee2f557c2', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11031/l_ipp_2017.1.132.tgz") version('2017.0.098', 'e7be757ebe351d9f9beed7efdc7b7118', url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9663/l_ipp_2017.0.098.tgz") version('9.0.3.210', '0e1520dd3de7f811a6ef6ebc7aa429a3', diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index bbc50ca4241..0cce184e471 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -33,8 +33,12 @@ class IntelMkl(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-mkl" + version('2017.3.196', '4a2eb4bee789391d9c07d7c348a80702', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11544/l_mkl_2017.3.196.tgz") version('2017.2.174', 'ef39a12dcbffe5f4a0ef141b8759208c', url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11306/l_mkl_2017.2.174.tgz") + version('2017.1.132', '7911c0f777c4cb04225bf4518088939e', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11024/l_mkl_2017.1.132.tgz") version('2017.0.098', '3cdcb739ab5ab1e047eb130b9ffdd8d0', url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9662/l_mkl_2017.0.098.tgz") version('11.3.3.210', 'f72546df27f5ebb0941b5d21fd804e34', diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py index 68610d7afe7..75aa5257aa9 100644 --- a/var/spack/repos/builtin/packages/intel-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-mpi/package.py @@ -33,6 +33,8 @@ class IntelMpi(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-mpi-library" + version('2017.3', '721ecd5f6afa385e038777e5b5361dfb', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11595/l_mpi_2017.3.196.tgz') version('2017.2', 'b6c2e62c3fb9b1558ede72ccf72cf1d6', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11334/l_mpi_2017.2.174.tgz') version('2017.1', 'd5e941ac2bcf7c5576f85f6bcfee4c18', 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 7ed89e950fa..a1b59563baf 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -35,6 +35,12 @@ class IntelParallelStudio(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" + version('professional.2017.4', '669b45b8dc9826ba018966367b802f98', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11481/parallel_studio_xe_2017_update4.tgz') + version('cluster.2017.4', '669b45b8dc9826ba018966367b802f98', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11481/parallel_studio_xe_2017_update4.tgz') + version('composer.2017.4', '3cd2a5763bf2ebe97889a067a1a7c800', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11485/parallel_studio_xe_2017_update4_composer_edition.tgz') version('professional.2017.3', '691874735458d3e88fe0bcca4438b2a9', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11460/parallel_studio_xe_2017_update3.tgz') version('cluster.2017.3', '691874735458d3e88fe0bcca4438b2a9', diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index 6af8baf0eca..74ff4ca3258 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -122,8 +122,10 @@ class Intel(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" - version('17.0.3', '691874735458d3e88fe0bcca4438b2a9', - url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11460/parallel_studio_xe_2017_update3.tgz') + version('17.0.4', '3cd2a5763bf2ebe97889a067a1a7c800', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11485/parallel_studio_xe_2017_update4_composer_edition.tgz') + version('17.0.3', '52344df122c17ddff3687f84ceb21623', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11464/parallel_studio_xe_2017_update3_composer_edition.tgz') version('17.0.2', '2891ab1ece43eb61b6ab892f07c47f01', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11302/parallel_studio_xe_2017_update2_composer_edition.tgz') version('17.0.1', '1f31976931ed8ec424ac7c3ef56f5e85', From 09ff2afb78c8c09285fffc40712b3ce430400f80 Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Fri, 16 Jun 2017 12:42:36 -0500 Subject: [PATCH 1082/2394] added py-sphinxcontrib-bibtex and py-pybtex-docutils packages (#4520) * added py-sphinxcontrib-bibtex and py-pybtex-docutils packages * added dpendency py-ordereddict --- .../packages/py-pybtex-docutils/package.py | 39 +++++++++++++++++ .../py-sphinxcontrib-bibtex/package.py | 43 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pybtex-docutils/package.py create mode 100644 var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py diff --git a/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py new file mode 100644 index 00000000000..d951348a90b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPybtexDocutils(PythonPackage): + """A docutils backend for pybtex.""" + + homepage = "https://pypi.python.org/pypi/pybtex-docutils/" + url = "https://pypi.io/packages/source/p/pybtex-docutils/pybtex-docutils-0.2.1.tar.gz" + + version('0.2.1', '7ae4b00562bd8881f582edf95009cc62') + + depends_on('py-setuptools', type='build') + depends_on('py-docutils@0.8:', type=('build', 'run')) + depends_on('py-pybtex@0.16:', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py new file mode 100644 index 00000000000..77fb43bde66 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySphinxcontribBibtex(PythonPackage): + """A Sphinx extension for BibTeX style citations.""" + + homepage = "https://pypi.python.org/pypi/sphinxcontrib-bibtex" + url = "https://pypi.io/packages/source/s/sphinxcontrib-bibtex/sphinxcontrib-bibtex-0.3.5.tar.gz" + + version('0.3.5', 'd3c86836e2f6227b55a5ca9108590b1c') + + depends_on('py-setuptools', type='build') + depends_on('py-latexcodec@0.3.0:', type=('build', 'run')) + depends_on('py-pybtex@0.17:', type=('build', 'run')) + depends_on('pybtex-docutils@0.2.0:', type=('build', 'run')) + depends_on('py-six@1.4.1:', type=('build', 'run')) + depends_on('py-sphinx@1.0:', type=('build', 'run')) + depends_on('py-oset@0.1.3:', type=('build', 'run')) + depends_on('py-ordereddict@1.1:', when='^python@:2.6', type=('build', 'run')) From 4bd05d0c52f10379e680c0bcf57acbcbd9dd165e Mon Sep 17 00:00:00 2001 From: John Roberts Date: Fri, 16 Jun 2017 12:44:12 -0500 Subject: [PATCH 1083/2394] Py ase (#4517) * py-ase: Adding python package py-ase. * py-ase: Adding Python package py-ase. * py-ase: Shortened package description. * py-ase: Splitting package description to multiple lines to avoid char count max. * py-ase: Removing trailing whitespace. Local flake8 tests passed now that flake8 is working for me. --- .../repos/builtin/packages/py-ase/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-ase/package.py diff --git a/var/spack/repos/builtin/packages/py-ase/package.py b/var/spack/repos/builtin/packages/py-ase/package.py new file mode 100644 index 00000000000..8800826ce53 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ase/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyAse(PythonPackage): + """The Atomic Simulation Environment (ASE) is a set of tools + and Python modules for setting up, manipulating, running, + visualizing and analyzing atomistic simulations.""" + + homepage = "https://wiki.fysik.dtu.dk/ase/" + url = "https://pypi.io/packages/source/a/ase/ase-3.13.0.tar.gz" + + version('3.13.0', 'e946a0addc5b61e5e2e75857e0f99b89') + + depends_on('python@2.6:') + depends_on('py-numpy', type=('build', 'run')) From 5c01fadc59cc456a0529c5c6536e5362ded6ed98 Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Fri, 16 Jun 2017 12:45:30 -0500 Subject: [PATCH 1084/2394] Added py-pybtex package (#4507) * Added py-pybtex package * added more dependencies to py-pybtex * added run to py-latexcodec dependency --- .../builtin/packages/py-pybtex/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pybtex/package.py diff --git a/var/spack/repos/builtin/packages/py-pybtex/package.py b/var/spack/repos/builtin/packages/py-pybtex/package.py new file mode 100644 index 00000000000..e0fd1ae5b0d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pybtex/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PyPybtex(PythonPackage): + """Pybtex is a BibTeX-compatible bibliography processor written in + Python.""" + + homepage = "https://pybtex.org" + url = "https://pypi.io/packages/source/P/Pybtex/pybtex-0.21.tar.gz" + + version('0.21', 'e7b320b2bcb34c664c4385533a2ea831') + + depends_on('py-setuptools', type='build') + depends_on('py-latexcodec@1.0.4:', type=('build', 'run')) + depends_on('py-pyyaml@3.01:', type=('build', 'run')) + depends_on('py-counter@1:', when='^python@:2.6', type=('build', 'run')) From 541496dfe150f50a11531156a108f7741c5d1177 Mon Sep 17 00:00:00 2001 From: becker33 Date: Fri, 16 Jun 2017 12:31:56 -0700 Subject: [PATCH 1085/2394] System config (#4518) * Code changes to enable system config scope in /etc Files will go in either /etc/spack or /etc/spack/ Required minor changes to conftest. * Updated documentation to match new config scope --- lib/spack/docs/configuration.rst | 40 +++++++++++++++++---------- lib/spack/spack/__init__.py | 6 ++-- lib/spack/spack/compilers/__init__.py | 3 +- lib/spack/spack/config.py | 10 ++++++- lib/spack/spack/test/conftest.py | 1 + 5 files changed, 40 insertions(+), 20 deletions(-) diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index 32e1a8c1706..5f76a76c81b 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -45,20 +45,27 @@ Configuration Scopes ------------------------- Spack pulls configuration data from files in several directories. There -are three configuration scopes. From lowest to highest: +are four configuration scopes. From lowest to highest: -1. **defaults**: Stored in ``$(prefix)/etc/spack/defaults/``. These are +#. **defaults**: Stored in ``$(prefix)/etc/spack/defaults/``. These are the "factory" settings. Users should generally not modify the settings here, but should override them in other configuration scopes. The defaults here will change from version to version of Spack. -2. **site**: Stored in ``$(prefix)/etc/spack/``. Settings here affect +#. **system**: Stored in ``/etc/spack``. These are settings for this + machine, or for all machines on which this file system is + mounted. The site scope can be used for settings idiosyncratic to a + particular machine, such as the locations of compilers or external + packages. These settings are presumably controlled by someone with + root access on the machine. + +#. **site**: Stored in ``$(prefix)/etc/spack/``. Settings here affect only *this instance* of Spack, and they override defaults. The site scope can can be used for per-project settings (one spack instance per project) or for site-wide settings on a multi-user machine (e.g., for a common spack instance). -3. **user**: Stored in the home directory: ``~/.spack/``. These settings +#. **user**: Stored in the home directory: ``~/.spack/``. These settings affect all instances of Spack and take the highest precedence. Each configuration directory may contain several configuration files, @@ -78,22 +85,25 @@ Platform-specific scopes ------------------------- For each scope above, there can *also* be platform-specific settings. -For example, on Blue Gene/Q machines, Spack needs to know the location of -cross-compilers for the compute nodes. This configuration is in -``etc/spack/defaults/bgq/compilers.yaml``. It will take precedence over -settings in the ``defaults`` scope, but can still be overridden by -settings in ``site``, ``site/bgq``, ``user``, or ``user/bgq``. So, the -full scope precedence is: +For example, on Blue Gene/Q machines, Spack needs to know the location +of cross-compilers for the compute nodes. This configuration is in +``etc/spack/defaults/bgq/compilers.yaml``. It will take precedence +over settings in the ``defaults`` scope, but can still be overridden +by settings in ``system``, ``system/bgq``, ``site``, ``site/bgq``, +``user``, or ``user/bgq``. So, the full scope precedence is: 1. ``defaults`` 2. ``defaults/`` -3. ``site`` -4. ``site/`` -5. ``user`` -6. ``user/`` +3. ``system`` +4. ``system/`` +5. ``site`` +6. ``site/`` +7. ``user`` +8. ``user/`` You can get the name to use for ```` by running ``spack arch ---platform``. +--platform``. The system config scope has a ```` section for +sites at which ``/etc`` is mounted on multiple heterogeneous machines. ------------------------- Scope precedence diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 3f99c5581c9..b67fcaf2f66 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -64,9 +64,9 @@ user_config_path = os.path.expanduser('~/.spack') prefix = spack_root -opt_path = join_path(prefix, "opt") -etc_path = join_path(prefix, "etc") - +opt_path = join_path(prefix, "opt") +etc_path = join_path(prefix, "etc") +system_etc_path = '/etc' # GPG paths. gpg_keys_path = join_path(var_path, "gpg") diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index 585df233203..826e74bbbb4 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -100,7 +100,8 @@ def init_compiler_config(): # Check the site config and update the user config if # nothing is configured at the site level. site_config = spack.config.get_config('compilers', scope='site') - if not site_config: + sys_config = spack.config.get_config('compilers', scope='system') + if not site_config and not sys_config: init_compiler_config() config = spack.config.get_config('compilers', scope=scope) return config diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index 7c3d614aee0..d0d6b6be2dd 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -30,6 +30,7 @@ configuration system behaves. The scopes are: #. ``default`` + #. ``system`` #. ``site`` #. ``user`` @@ -211,11 +212,17 @@ def __repr__(self): _platform = spack.architecture.platform().name """Default configuration scope is the lowest-level scope. These are - versioned with Spack and can be overridden by sites or users.""" + versioned with Spack and can be overridden by systems, sites or users.""" _defaults_path = os.path.join(spack.etc_path, 'spack', 'defaults') ConfigScope('defaults', _defaults_path) ConfigScope('defaults/%s' % _platform, os.path.join(_defaults_path, _platform)) +"""System configuration is per machine. + No system-level configs should be checked into spack by default""" +_system_path = os.path.join(spack.system_etc_path, 'spack') +ConfigScope('system', _system_path) +ConfigScope('system/%s' % _platform, os.path.join(_system_path, _platform)) + """Site configuration is per spack instance, for sites or projects. No site-level configs should be checked into spack by default.""" _site_path = os.path.join(spack.etc_path, 'spack') @@ -398,6 +405,7 @@ def get_config(section, scope=None): for scope in scopes: # read potentially cached data from the scope. + data = scope.get_section(section) # Skip empty configs diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index c8720ddbc83..19e78440907 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -173,6 +173,7 @@ def config(configuration_dir): real_scope = spack.config.config_scopes spack.config.config_scopes = ordereddict_backport.OrderedDict() spack.config.ConfigScope('site', str(configuration_dir.join('site'))) + spack.config.ConfigScope('system', str(configuration_dir.join('system'))) spack.config.ConfigScope('user', str(configuration_dir.join('user'))) Config = collections.namedtuple('Config', ['real', 'mock']) From cbdee5faf7489d1dc3469512e70369c3a5779b29 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Sat, 17 Jun 2017 10:32:14 -0400 Subject: [PATCH 1086/2394] votca-csg: fixing develop url (#4536) Fix #4525. --- var/spack/repos/builtin/packages/votca-csg/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/votca-csg/package.py b/var/spack/repos/builtin/packages/votca-csg/package.py index 516ce8b1455..d965fa83e53 100644 --- a/var/spack/repos/builtin/packages/votca-csg/package.py +++ b/var/spack/repos/builtin/packages/votca-csg/package.py @@ -36,7 +36,7 @@ class VotcaCsg(CMakePackage): homepage = "http://www.votca.org" url = "https://github.com/votca/csg/tarball/v1.4" - version('develop', git='https://github.com/csg/tools', branch='master') + version('develop', git='https://github.com/votca/csg', branch='master') version('1.4', 'd009e761e5e3afd51eed89c420610a67') variant('debug', default=False, description='Build debug version') From d1f176541d102ad439fcb594a41d877ae13f6b87 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 17 Jun 2017 19:37:33 +0200 Subject: [PATCH 1087/2394] Update README.md and add analytics. (#4537) --- README.md | 58 +++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index fd828a0ad23..6bb7ee136cc 100644 --- a/README.md +++ b/README.md @@ -5,27 +5,24 @@ [![codecov](https://codecov.io/gh/LLNL/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/LLNL/spack) [![Read the Docs](https://readthedocs.org/projects/spack/badge/?version=latest)](https://spack.readthedocs.io) -Spack is a package management tool designed to support multiple -versions and configurations of software on a wide variety of platforms -and environments. It was designed for large supercomputing centers, -where many users and application teams share common installations of -software on clusters with exotic architectures, using libraries that -do not have a standard ABI. Spack is non-destructive: installing a new -version does not break existing installations, so many configurations -can coexist on the same system. +Spack is a multi-platform package manager that builds and installs +multiple versions and configurations of software. It works on Linux, +macOS, and many supercomputers. Spack is non-destructive: installing a +new version of a package does not break existing installations, so many +configurations of the same package can coexist. -Most importantly, Spack is simple. It offers a simple spec syntax so -that users can specify versions and configuration options -concisely. Spack is also simple for package authors: package files are -written in pure Python, and specs allow package authors to write a -single build script for many different builds of the same package. +Spack offers a simple "spec" syntax that allows users to specify versions +and configuration options. Package files are written in pure Python, and +specs allow package authors to write a single script for many different +builds of the same package. With Spack, you can build your software +*all* the ways you want to. See the [Feature Overview](http://spack.readthedocs.io/en/latest/features.html) for examples and highlights. -To install spack and install your first package, make sure you have -Python (2 or 3). Then: +To install spack and your first package, make sure you have Python. +Then: $ git clone https://github.com/llnl/spack.git $ cd spack/bin @@ -37,15 +34,16 @@ Documentation [**Full documentation**](http://spack.readthedocs.io/) for Spack is the first place to look. -We've also got a [**Spack 101 Tutorial**](http://spack.readthedocs.io/en/latest/tutorial_sc16.html), -so you can learn Spack yourself, or teach users at your own site. +Try the +[**Spack Tutorial**](http://spack.readthedocs.io/en/latest/tutorial.html), +to learn how to use spack, write packages, or deploy packages for users +at your site. See also: * [Technical paper](http://www.computer.org/csdl/proceedings/sc/2015/3723/00/2807623.pdf) and [slides](https://tgamblin.github.io/files/Gamblin-Spack-SC15-Talk.pdf) on Spack's design and implementation. * [Short presentation](https://tgamblin.github.io/files/Gamblin-Spack-Lightning-Talk-BOF-SC15.pdf) from the *Getting Scientific Software Installed* BOF session at Supercomputing 2015. - Get Involved! ------------------------ @@ -55,9 +53,8 @@ packages to bugfixes, or even new core features. ### Mailing list -If you are interested in contributing to spack, the first step is to -join the mailing list. We're using a Google Group for this, and you -can join it here: +If you are interested in contributing to spack, the first step is to join +the mailing list. We're Google Groups for this. Join here: * [Spack Google Group](https://groups.google.com/d/forum/spack) @@ -69,23 +66,22 @@ When you send your request, make ``develop`` the destination branch on the [Spack repository](https://github.com/LLNL/spack). Your PR must pass Spack's unit tests and documentation tests, and must be -[PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant. -We enforce these guidelines with [Travis CI](https://travis-ci.org/LLNL/spack). -To run these tests locally, and for helpful tips on git, see our +[PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant. We enforce +these guidelines with [Travis CI](https://travis-ci.org/LLNL/spack). To +run these tests locally, and for helpful tips on git, see our [Contribution Guide](http://spack.readthedocs.io/en/latest/contribution_guide.html). -Spack uses a rough approximation of the [Git -Flow](http://nvie.com/posts/a-successful-git-branching-model/) +Spack uses a rough approximation of the +[Git Flow](http://nvie.com/posts/a-successful-git-branching-model/) branching model. The ``develop`` branch contains the latest -contributions, and ``master`` is always tagged and points to the -latest stable release. - +contributions, and ``master`` is always tagged and points to the latest +stable release. Authors ---------------- Many thanks go to Spack's [contributors](https://github.com/llnl/spack/graphs/contributors). -Spack was originally written by Todd Gamblin, tgamblin@llnl.gov. +Spack was created by Todd Gamblin, tgamblin@llnl.gov. ### Citing Spack @@ -102,3 +98,5 @@ Spack is released under an LGPL license. For more details see the LICENSE file. ``LLNL-CODE-647188`` + +![Analytics](https://ga-beacon.appspot.com/UA-101208306-3/welcome-page?pixel) From 04af95c69af0190f1d3b4b012f9e98d692ae90cc Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 19 Jun 2017 01:00:40 -0700 Subject: [PATCH 1088/2394] Add Slack info to READMEmd (#4542) - Added a badge to show who's online. - Added a section under "Get involved!" --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6bb7ee136cc..7e83f0eddb4 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![Build Status](https://travis-ci.org/LLNL/spack.svg?branch=develop)](https://travis-ci.org/LLNL/spack) [![codecov](https://codecov.io/gh/LLNL/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/LLNL/spack) [![Read the Docs](https://readthedocs.org/projects/spack/badge/?version=latest)](https://spack.readthedocs.io) +[![Slack](https://spackpm.herokuapp.com/badge.svg)](https://spackpm.herokuapp.com) Spack is a multi-platform package manager that builds and installs multiple versions and configurations of software. It works on Linux, @@ -53,11 +54,20 @@ packages to bugfixes, or even new core features. ### Mailing list -If you are interested in contributing to spack, the first step is to join -the mailing list. We're Google Groups for this. Join here: +If you are interested in contributing to spack, join the mailing list. +We're using Google Groups for this: * [Spack Google Group](https://groups.google.com/d/forum/spack) +### Slack channel + +Spack has a Slack channel where you can chat about all things Spack: + + * [Spack on Slack](https://spackpm.slack.com) + +[Sign up here](https://spackpm.herokuapp.com) to get an invitation mailed +to you. + ### Contributions Contributing to Spack is relatively easy. Just send us a From b12c0e0f8706cac061d30854c3cab9586645d3aa Mon Sep 17 00:00:00 2001 From: Diana Bite Date: Mon, 19 Jun 2017 16:02:30 +0100 Subject: [PATCH 1089/2394] fontconfig: Update to latest stable release (#4543) --- var/spack/repos/builtin/packages/fontconfig/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py index 32d72deae39..9e909b90ff0 100644 --- a/var/spack/repos/builtin/packages/fontconfig/package.py +++ b/var/spack/repos/builtin/packages/fontconfig/package.py @@ -28,8 +28,9 @@ class Fontconfig(AutotoolsPackage): """Fontconfig is a library for configuring/customizing font access""" homepage = "http://www.freedesktop.org/wiki/Software/fontconfig/" - url = "http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.12.1.tar.gz" + url = "http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.12.3.tar.gz" + version('2.12.3', 'aca0c734c1a38eb3ba12b2447dd90ab0') version('2.12.1', 'ce55e525c37147eee14cc2de6cc09f6c') version('2.11.1', 'e75e303b4f7756c2b16203a57ac87eba') From cf2178f416c648586c973bdb7050cc58326b2759 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 19 Jun 2017 10:18:48 -0500 Subject: [PATCH 1090/2394] Overhaul CONVERGE installation and concretization (#4397) --- .../builtin/packages/converge/package.py | 189 ++++++++++++++++-- .../repos/builtin/packages/mpich/package.py | 1 + .../builtin/packages/mvapich2/package.py | 1 + .../repos/builtin/packages/openmpi/package.py | 1 + 4 files changed, 178 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/converge/package.py b/var/spack/repos/builtin/packages/converge/package.py index c62f4bd5d15..a6c3b5091d6 100644 --- a/var/spack/repos/builtin/packages/converge/package.py +++ b/var/spack/repos/builtin/packages/converge/package.py @@ -22,8 +22,10 @@ # 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 glob +import os + from spack import * -from distutils.dir_util import copy_tree class Converge(Package): @@ -45,25 +47,55 @@ class Converge(Package): # https://download.convergecfd.com/wp-login.php?action=register version('2.4.10', '53f5bd4bfb39005bebae46b8d6ee3ce6') - version('2.3.16', '8b80f1e73a63181c427c7732ad279986') + version('2.3.23', '2913c3e440f82db069051f8822115e5e') + version('2.2.0', 'd949cfe338c83ee736ca0be8f77df6bf', + url="https://download.convergecfd.com/download/CONVERGE_2.2/Full_Solver_Packages/converge_install_2.2.0_042916.tar.gz") version('2.1.0', '327a917d46aa3bc8dee9511375ce112c', url="https://download.convergecfd.com/download/CONVERGE_2.1/Full_Solver_Packages/converge_install_2.1.0_111615.tar.gz") + version('2.0.0', '06f017521c3abc1a922b136e83d606dd', + url="https://download.convergecfd.com/download/CONVERGE_2.0/Full_Solver_Packages/converge_install_2.0.0_090214.tar.gz") variant('mpi', default=True, description='Build with MPI support') - # The CONVERGE Getting Started Guide recommends: + # The following MPI libraries are compatible with CONVERGE: # - # +--------------+--------+---------+---------+ - # | MPI Packages | v2.2 | v2.3 | v2.4 | - # +--------------+--------+---------+---------+ - # | MPICH | 1.2.1 | 3.1.4 | | - # | HP-MPI | 2.0.3+ | 2.0.3+ | | - # | Platform MPI | | 9.1.2 | 9.1.2 | - # | Open MPI | 1.6+ | 1.6+ | 1.10.1+ | - # | Intel MPI | | 17.0.98 | 17.0.98 | - # +--------------+--------+---------+---------+ + # +--------------+---------+---------+---------+---------+---------+ + # | MPI Packages | v2.0 | v2.1 | v2.2 | v2.3 | v2.4 | + # +--------------+---------+---------+---------+---------+---------+ + # | HP-MPI | 2.0.3+ | 2.0.3+ | 2.0.3+ | 2.0.3+ | | + # | Intel MPI | | | | | 17.0.98 | + # | MPICH | ?.?.? | ?.?.? | 1.2.1 | 3.1.4 | ?.?.? | + # | MVAPICH2 | ?.?.? | | | | | + # | Open MPI | 1.0-1.4 | 1.0-1.4 | 1.5-1.8 | 1.5-1.8 | 1.10 | + # | Platform MPI | | | 9.1.2 | 9.1.2 | 9.1.2 | + # +--------------+---------+---------+---------+---------+---------+ + # + # NOTE: HP-MPI was bought out by Platform MPI + # + # These version requirements are more strict than for most packages. + # Since the tarball comes with pre-compiled executables, + # the version of libmpi.so must match exactly, or else + # you will end up with missing libraries and symbols. + depends_on('mpi', when='+mpi') + # FIXME: Concretization is currently broken, so this causes: + # $ spack spec converge + # to crash. You must explicitly state what MPI version you want: + # $ spack spec converge@2.4.10 +mpi ^openmpi@:1.10 + # + # TODO: Add version ranges for other MPI libraries + depends_on('openmpi@1.10.0:1.10.999', when='@2.4.0:2.4.999+mpi^openmpi') + depends_on('openmpi@1.5:1.8', when='@2.2:2.3+mpi^openmpi') + depends_on('openmpi@:1.4', when='@:2.1+mpi^openmpi') + + # TODO: Add packages for hp-mpi and platform-mpi + # conflicts('^hp-mpi', when='@2.4:') + conflicts('^intel-mpi', when='@:2.3') + conflicts('^intel-parallel-studio+mpi', when='@:2.3') + # conflicts('^platform-mpi', when='@:2.1') + conflicts('^spectrum-mpi') + # Licensing license_required = True license_comment = '#' @@ -71,9 +103,138 @@ class Converge(Package): license_vars = ['RLM_LICENSE'] license_url = 'http://www.reprisesoftware.com/RLM_License_Administration.pdf' + def url_for_version(self, version): + url = "https://download.convergecfd.com/download/CONVERGE_{0}/Full_Solver_Packages/converge_install_{1}.tar.gz" + return url.format(version.up_to(2), version) + def install(self, spec, prefix): - copy_tree('.', prefix) + # 2.0.0 + # converge -> converge-2.0.0-hpmpi-090214 + # converge-2.0.0-hpmpi-090214 -> libmpi.so.1, libmpio.so.1 + # converge-2.0.0-mpich2-090214 -> libmpich.so.1.2 + # converge-2.0.0-mvapich-090214 -> libibumad.so.1 + # converge-2.0.0-openmpi-090214 -> libmpi.so.0 + # converge-2.0.0-serial-090214 + # make_surface + # post_convert + + # 2.1.0 + # converge -> converge-2.1.0-hpmpi-111615 + # converge-2.1.0-hpmpi-111615 -> libmpi.so.1, libmpio.so.1 + # converge-2.1.0-mpich2-111615 -> libmpich.so.1.2 + # converge-2.1.0-openmpi-111615 -> libmpi.so.0 + # converge-2.1.0-serial-111615 + # make_surface + # post_convert + + # 2.2.0 + # converge -> converge-2.2.0-hpmpi-042916 + # converge-2.2.0-hpmpi-042916 -> libmpi.so.1, libmpio.so.1 + # converge-2.2.0-mpich2-042916 + # converge-2.2.0-openmpi-042916 -> libmpi.so.1 + # converge-2.2.0-pmpi-042916 -> libmpi.so.1, libmpio.so.1 + # converge-2.2.0-serial-042916 + # make_surface + # post_convert + + # 2.3.23 + # converge-2.3.23-hpmpi-linux-64 -> libmpi.so.1, libmpio.so.1 + # converge-2.3.23-mpich2-linux-64 -> libmpi.so.12 + # converge-2.3.23-openmpi-linux-64 -> libmpi.so.1 + # converge-2.3.23-pmpi-linux-64 -> libmpi.so.1, libmpio.so.1 + # converge-2.3.23-serial-linux-64 + # make_surface_64 + # post_convert_mpich_64 -> libmpi.so.12 + # post_convert_ompi_64 -> libmpi.so.1 + # post_convert_pmpi_64 -> libmpi.so.1, libmpio.so.1 + # post_convert_serial_64 + + # 2.4.10 + # converge-2.4.10-intel -> libmpi.so.12, libmpifort.so.12 + # converge-2.4.10-mpich -> libmpi.so.12 + # converge-2.4.10-ompi -> libmpi.so.12 + # converge-2.4.10-pmpi -> libmpi.so.1, libmpio.so.1 + # converge-2.4.10-serial + # make_surface_64 + # post_convert_mpich_64 -> libmpi.so.12 + # post_convert_ompi_64 -> libmpi.so.1 + # post_convert_pmpi_64 -> libmpi.so.1 + # post_convert_serial_64 + + # The CONVERGE tarball comes with binaries for several MPI libraries. + # Only install the binary that matches the MPI we are building with. + with working_dir('l_x86_64/bin'): + if '~mpi' in spec: + converge = glob.glob('converge-*-serial*') + post_convert = glob.glob('post_convert_serial*') + elif 'hp-mpi' in spec: + converge = glob.glob('converge-*-hpmpi*') + # No HP-MPI version of post_convert + post_convert = glob.glob('post_convert_serial*') + elif 'intel-mpi' in spec or 'intel-parallel-studio+mpi' in spec: + converge = glob.glob('converge-*-intel*') + # No Intel MPI version of post_convert + post_convert = glob.glob('post_convert_serial*') + elif 'mpich' in spec: + converge = glob.glob('converge-*-mpich*') + post_convert = glob.glob('post_convert_mpich*') + elif 'mvapich2' in spec: + converge = glob.glob('converge-*-mvapich*') + # MVAPICH2 hasn't been supported since CONVERGE + # came with a single serial post_convert + post_convert = glob.glob('post_convert') + elif 'openmpi' in spec: + converge = glob.glob('converge-*-o*mpi*') + post_convert = glob.glob('post_convert_o*mpi*') + elif 'platform-mpi' in spec: + converge = glob.glob('converge-*-pmpi*') + post_convert = glob.glob('post_convert_pmpi*') + else: + raise InstallError('Unsupported MPI provider') + + make_surface = glob.glob('make_surface*') + + # Old versions of CONVERGE come with a single serial post_convert + if not post_convert: + post_convert = glob.glob('post_convert') + + # Make sure glob actually found something + if not converge: + raise InstallError('converge executable not found') + if not post_convert: + raise InstallError('post_convert executable not found') + if not make_surface: + raise InstallError('make_surface executable not found') + + # Make sure glob didn't find multiple matches + if len(converge) > 1: + raise InstallError('multiple converge executables found') + if len(post_convert) > 1: + raise InstallError('multiple post_convert executables found') + if len(make_surface) > 1: + raise InstallError('multiple make_surface executables found') + + converge = converge[0] + post_convert = post_convert[0] + make_surface = make_surface[0] + + mkdir(prefix.bin) + + # Install the executables + install(converge, join_path(prefix.bin, converge)) + install(post_convert, join_path(prefix.bin, post_convert)) + install(make_surface, join_path(prefix.bin, make_surface)) + + with working_dir(prefix.bin): + # Create generic symlinks to all executables + if not os.path.exists('converge'): + os.symlink(converge, 'converge') + if not os.path.exists('post_convert'): + os.symlink(post_convert, 'post_convert') + if not os.path.exists('make_surface'): + os.symlink(make_surface, 'make_surface') def setup_environment(self, spack_env, run_env): + # CONVERGE searches for a valid license file in: + # $CONVERGE_ROOT/license/license.lic run_env.set('CONVERGE_ROOT', self.prefix) - run_env.prepend_path('PATH', join_path(self.prefix, 'l_x86_64', 'bin')) diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index 819fc95d5ba..c22f92cf385 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -47,6 +47,7 @@ class Mpich(AutotoolsPackage): variant('romio', default=True, description='Enable ROMIO MPI I/O implementation') variant('verbs', default=False, description='Build support for OpenFabrics verbs.') + provides('mpi') provides('mpi@:3.0', when='@3:') provides('mpi@:1.3', when='@1:') diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 5dc14215844..91b151516d5 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -52,6 +52,7 @@ class Mvapich2(AutotoolsPackage): patch('ad_lustre_rwcontig_open_source.patch', when='@1.9') + provides('mpi') provides('mpi@:2.2', when='@1.9') # MVAPICH2-1.9 supports MPI 2.2 provides('mpi@:3.0', when='@2.0:') # MVAPICH2-2.0 supports MPI 3.0 diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index bf6cf029956..345f9c34f39 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -182,6 +182,7 @@ class Openmpi(AutotoolsPackage): description='Enable MPI_THREAD_MULTIPLE support') variant('cuda', default=False, description='Enable CUDA support') + provides('mpi') provides('mpi@:2.2', when='@1.6.5') provides('mpi@:3.0', when='@1.7.5:') provides('mpi@:3.1', when='@2.0.0:') From 9b89272ae08b1606144149a17686e29739d286a4 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 19 Jun 2017 15:13:18 -0500 Subject: [PATCH 1091/2394] Various updates to wget and dependencies (#4116) * Various updates to wget and dependencies * Add newer version of gnutls --- .../repos/builtin/packages/gnutls/package.py | 54 +++++++++--- .../repos/builtin/packages/libpsl/package.py | 57 +++++++++++++ .../repos/builtin/packages/nettle/package.py | 3 +- .../repos/builtin/packages/wget/package.py | 85 +++++++++++++------ 4 files changed, 161 insertions(+), 38 deletions(-) create mode 100644 var/spack/repos/builtin/packages/libpsl/package.py diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index 46fee8d2607..bef2433ed2b 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -26,25 +26,30 @@ class Gnutls(AutotoolsPackage): - """GnuTLS is a secure communications library implementing the SSL, - TLS and DTLS protocols and technologies around them. It - provides a simple C language application programming interface - (API) to access the secure communications protocols as well as - APIs to parse and write X.509, PKCS #12, OpenPGP and other - required structures. It is aimed to be portable and efficient - with focus on security and interoperability.""" + """GnuTLS is a secure communications library implementing the SSL, TLS + and DTLS protocols and technologies around them. It provides a simple C + language application programming interface (API) to access the secure + communications protocols as well as APIs to parse and write X.509, PKCS + #12, OpenPGP and other required structures. It is aimed to be portable + and efficient with focus on security and interoperability.""" homepage = "http://www.gnutls.org" - url = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.10.tar.xz" + url = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.13.tar.xz" + version('3.5.13', '4fd41ad86572933c2379b4cc321a0959') version('3.5.10', '336c03a71ba90184ffd0388075dde504') version('3.5.9', '0ab25eb6a1509345dd085bc21a387951') version('3.3.9', 'ff61b77e39d09f1140ab5a9cf52c58b6') + variant('zlib', default=True, description='Enable zlib compression support') + # Note that version 3.3.9 of gnutls doesn't support nettle 3.0. - depends_on("nettle@:2.9", when='@3.3.9') - depends_on("nettle", when='@3.5:') - depends_on("zlib", when='@3.5:') + depends_on('nettle@:2.9', when='@3.3.9') + depends_on('nettle', when='@3.5:') + depends_on('zlib', when='+zlib') + depends_on('gettext') + + depends_on('pkg-config@0.9.0:', type='build') build_directory = 'spack-build' @@ -53,10 +58,33 @@ def url_for_version(self, version): return url.format(version.up_to(2), version) def configure_args(self): - args = [] - if self.spec.satisfies('@3.5:'): + spec = self.spec + args = [ + '--enable-static', + ] + + if spec.satisfies('@3.5:'): # use shipped libraries, might be turned into variants args.append('--with-included-libtasn1') args.append('--with-included-unistring') args.append('--without-p11-kit') # p11-kit@0.23.1: ... + + if '+zlib' in spec: + args.append('--with-zlib') + else: + args.append('--without-zlib') + + if self.run_tests: + args.extend([ + '--enable-tests', + '--enable-valgrind-tests', + '--enable-full-test-suite', + ]) + else: + args.extend([ + '--disable-tests', + '--disable-valgrind-tests', + '--disable-full-test-suite', + ]) + return args diff --git a/var/spack/repos/builtin/packages/libpsl/package.py b/var/spack/repos/builtin/packages/libpsl/package.py new file mode 100644 index 00000000000..3a545f6f180 --- /dev/null +++ b/var/spack/repos/builtin/packages/libpsl/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libpsl(AutotoolsPackage): + """libpsl - C library to handle the Public Suffix List.""" + + homepage = "https://github.com/rockdaboot/libpsl" + url = "https://github.com/rockdaboot/libpsl/releases/download/libpsl-0.17.0/libpsl-0.17.0.tar.gz" + + version('0.17.0', 'fed13f33d0d6dc13ef24de255630bfcb') + + depends_on('icu4c') + + depends_on('gettext', type='build') + depends_on('pkg-config@0.9.0:', type='build') + depends_on('python@2.7:', type='build') + + # TODO: Add a 'test' deptype + # depends_on('valgrind', type='test') + + def configure_args(self): + spec = self.spec + + args = [ + 'PYTHON={0}'.format(spec['python'].command.path), + ] + + if self.run_tests: + args.append('--enable-valgrind-tests') + else: + args.append('--disable-valgrind-tests') + + return args diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py index e9df8489c95..fd410d51023 100644 --- a/var/spack/repos/builtin/packages/nettle/package.py +++ b/var/spack/repos/builtin/packages/nettle/package.py @@ -30,8 +30,9 @@ class Nettle(AutotoolsPackage): that is designed to fit easily in many contexts.""" homepage = "https://www.lysator.liu.se/~nisse/nettle/" - url = "http://ftp.gnu.org/gnu/nettle/nettle-3.2.tar.gz" + url = "http://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz" + version('3.3', '10f969f78a463704ae73529978148dbe') version('3.2', 'afb15b4764ebf1b4e6d06c62bd4d29e4') version('2.7.1', '003d5147911317931dd453520eb234a5') version('2.7', '2caa1bd667c35db71becb93c5d89737f') diff --git a/var/spack/repos/builtin/packages/wget/package.py b/var/spack/repos/builtin/packages/wget/package.py index ff704ca37cd..276e51c3884 100644 --- a/var/spack/repos/builtin/packages/wget/package.py +++ b/var/spack/repos/builtin/packages/wget/package.py @@ -25,36 +25,73 @@ from spack import * -class Wget(Package): +class Wget(AutotoolsPackage): """GNU Wget is a free software package for retrieving files using - HTTP, HTTPS and FTP, the most widely-used Internet protocols. It - is a non-interactive commandline tool, so it may easily be called - from scripts, cron jobs, terminals without X-Windows support, - etc.""" + HTTP, HTTPS and FTP, the most widely-used Internet protocols. It is a + non-interactive commandline tool, so it may easily be called from scripts, + cron jobs, terminals without X-Windows support, etc.""" homepage = "http://www.gnu.org/software/wget/" - url = "http://ftp.gnu.org/gnu/wget/wget-1.16.tar.gz" + url = "http://ftp.gnu.org/gnu/wget/wget-1.19.1.tar.gz" - version('1.17', 'c4c4727766f24ac716936275014a0536') - version('1.16', '293a37977c41b5522f781d3a3a078426') + version('1.19.1', '87cea36b7161fd43e3fd51a4e8b89689') + version('1.17', 'c4c4727766f24ac716936275014a0536') + version('1.16', '293a37977c41b5522f781d3a3a078426') - variant( - 'ssl', - default='openssl', - values=('gnutls', 'openssl'), - description='Specify SSL backend' - ) + variant('ssl', default='openssl', values=('gnutls', 'openssl'), + description='Specify SSL backend') + variant('zlib', default=True, + description='Enable zlib support') + variant('libpsl', default=False, + description='Enable support for libpsl cookie checking') + variant('pcre', default=False, + description='Enable PCRE style regular expressions') + variant('python', default=False, + description='Enable Python support') depends_on('gnutls', when='ssl=gnutls') depends_on('openssl', when='ssl=openssl') - depends_on("perl@5.12.0:", type='build') - def install(self, spec, prefix): - configure( - "--prefix=%s" % prefix, - "--with-ssl=openssl", - "OPENSSL_CFLAGS=-I%s" % spec['openssl'].prefix.include, - "OPENSSL_LIBS=-L%s -lssl -lcrypto -lz" % spec[ - 'openssl'].prefix.lib) - make() - make("install") + depends_on('gettext', type='build') + depends_on('python@3:', type='build', when='+python') + + depends_on('zlib', when='+zlib') + depends_on('libpsl', when='+libpsl') + depends_on('pcre', when='+pcre') + + depends_on('perl@5.12.0:', type='build') + depends_on('pkg-config@0.9.0:', type='build') + + # TODO: Add a 'test' deptype + # depends_on('valgrind', type='test') + + build_directory = 'spack-build' + + def configure_args(self): + spec = self.spec + + args = [ + '--with-ssl={0}'.format(spec.variants['ssl'].value), + ] + + if '+zlib' in spec: + args.append('--with-zlib') + else: + args.append('--without-zlib') + + if '+libpsl' in spec: + args.append('--with-libpsl') + else: + args.append('--without-libpsl') + + if '+pcre' in spec: + args.append('--enable-pcre') + else: + args.append('--disable-pcre') + + if self.run_tests: + args.append('--enable-valgrind-tests') + else: + args.append('--disable-valgrind-tests') + + return args From 229886aa8fa90a49b48f6bae30b5e383c65e1554 Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Mon, 19 Jun 2017 16:26:37 -0500 Subject: [PATCH 1092/2394] added py-dxchange and its dependencies dxfile,edffile,spefile,tifffile (#4534) * added py-dxchange and its dependencies dxfile,edffile,spefile,tifffile * fixed https in homepage of py-dxfile --- .../builtin/packages/py-dxchange/package.py | 47 +++++++++++++++++++ .../builtin/packages/py-dxfile/package.py | 38 +++++++++++++++ .../builtin/packages/py-edffile/package.py | 40 ++++++++++++++++ .../builtin/packages/py-spefile/package.py | 41 ++++++++++++++++ .../builtin/packages/py-tifffile/package.py | 37 +++++++++++++++ 5 files changed, 203 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-dxchange/package.py create mode 100644 var/spack/repos/builtin/packages/py-dxfile/package.py create mode 100644 var/spack/repos/builtin/packages/py-edffile/package.py create mode 100644 var/spack/repos/builtin/packages/py-spefile/package.py create mode 100644 var/spack/repos/builtin/packages/py-tifffile/package.py diff --git a/var/spack/repos/builtin/packages/py-dxchange/package.py b/var/spack/repos/builtin/packages/py-dxchange/package.py new file mode 100644 index 00000000000..7c745c348f4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-dxchange/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PyDxchange(PythonPackage): + """DXchange provides an interface with tomoPy and raw tomographic data + collected at different synchrotron facilities.""" + + homepage = "https://github.com/data-exchange/dxchange" + url = "https://github.com/data-exchange/dxchange/archive/v0.1.2.tar.gz" + + version('0.1.2', '36633bb67a1e7d1fb60c2300adbcbab3') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type='run') + depends_on('py-scipy', type='run') + depends_on('py-h5py', type='run') + depends_on('py-six', type='run') + depends_on('py-netcdf4', type='run') + depends_on('py-spefile', type='run') + depends_on('py-edffile', type='run') + depends_on('py-tifffile', type='run') + depends_on('py-dxfile', type='run') diff --git a/var/spack/repos/builtin/packages/py-dxfile/package.py b/var/spack/repos/builtin/packages/py-dxfile/package.py new file mode 100644 index 00000000000..c0942ddc986 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-dxfile/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyDxfile(PythonPackage): + """Scientific Data Exchange [A1] is a set of guidelines for storing scientific + data and metadata in a Hierarchical Data Format 5 [B6] file.""" + + homepage = "https://github.com/data-exchange/dxfile" + url = "https://github.com/data-exchange/dxfile/archive/v0.4.tar.gz" + + version('0.4', '0402cd38aefdfd5ce92feb43dda18947') + + depends_on('py-setuptools', type='build') + depends_on('py-h5py', type='run') diff --git a/var/spack/repos/builtin/packages/py-edffile/package.py b/var/spack/repos/builtin/packages/py-edffile/package.py new file mode 100644 index 00000000000..02422dedff7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-edffile/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyEdffile(PythonPackage): + """Generic class for Edf files manipulation.""" + + homepage = "https://github.com/vasole/pymca/blob/master/PyMca5/PyMcaIO/EdfFile.py" + url = "https://github.com/conda-forge/edffile-feedstock.git" + + version('5.0.0', git='https://github.com/conda-forge/edffile-feedstock.git', + commit='be5ab4199db9f8209c59e31874934b8536b52301') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run')) + + build_directory = 'recipe/src' diff --git a/var/spack/repos/builtin/packages/py-spefile/package.py b/var/spack/repos/builtin/packages/py-spefile/package.py new file mode 100644 index 00000000000..6279391bbd9 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-spefile/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySpefile(PythonPackage): + """Reader for SPE files part of pyspec a set of python routines for data + analysis of x-ray scattering experiments""" + + homepage = "https://github.com/conda-forge/spefile-feedstock" + url = "https://github.com/conda-forge/spefile-feedstock.git" + + version('1.6', git='https://github.com/conda-forge/spefile-feedstock.git', + commit='24394e066da8dee5e7608f556ca0203c9db217f9') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type='run') + + build_directory = 'recipe/src' diff --git a/var/spack/repos/builtin/packages/py-tifffile/package.py b/var/spack/repos/builtin/packages/py-tifffile/package.py new file mode 100644 index 00000000000..4412352db1a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tifffile/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyTifffile(PythonPackage): + """Read and write image data from and to TIFF files.""" + + homepage = "https://github.com/blink1073/tifffile" + url = "https://pypi.io/packages/source/t/tifffile/tifffile-0.12.1.tar.gz" + + version('0.12.1', '8a8afa74dd0df7915ac376a6cd7eeffc') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.8.2:', type=('build', 'run')) From ca9e6576db7bf80238bb4ef50a2b702395c5c7aa Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Tue, 20 Jun 2017 07:59:40 -0700 Subject: [PATCH 1093/2394] Fix veclibfort for gcc (#4548) * fixes #967 * Version bump to 0.9.1 - Bugfixes for spack find - 0.9.1 can read specs from current develop. * Don't assume spack is in the path when building docs. * fixing Makefile override of PREFIX and install w/gcc-6 --- .../repos/builtin/packages/veclibfort/package.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/veclibfort/package.py b/var/spack/repos/builtin/packages/veclibfort/package.py index 4a056803ca4..c02299d97c4 100644 --- a/var/spack/repos/builtin/packages/veclibfort/package.py +++ b/var/spack/repos/builtin/packages/veclibfort/package.py @@ -55,8 +55,16 @@ def install(self, spec, prefix): if sys.platform != 'darwin': raise InstallError('vecLibFort can be installed on macOS only') - make('all') - make('PREFIX=%s' % prefix, 'install') + filter_file(r'^PREFIX=.*', '', 'Makefile') + + make_args = [] + + if spec.satisfies('%gcc@6:'): + make_args += ['CFLAGS=-flax-vector-conversions'] + + make_args += ['PREFIX=%s' % prefix, 'install'] + + make(*make_args) # test fc = which('fc') From e5560dfbdee0235f6f727071cec968fd4913fab4 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 20 Jun 2017 10:46:49 -0700 Subject: [PATCH 1094/2394] fontconfig should depend on gperf (#4551) * Include depends_on for gperf Sometime around 2.12.2 fontconfig acquired a build-time dependency on `gperf` (this commit, I think: 59fd9960bbb58fd6257adb13ec0f918882149332). This adds the dependency. `gperf` is called in the `src/Makefile`, see line 907 of `src/Makefile.in`. * Only depend_on gperf if @2.12.2: The gperf dependency *seems* to only be required when @2.12.2:. Earlier releases do not check the arg type of the gperf lookup function (which requires gperf) and are able to use pre-generated files so gperf is not required at build time. --- var/spack/repos/builtin/packages/fontconfig/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py index 9e909b90ff0..9f0fc2b7951 100644 --- a/var/spack/repos/builtin/packages/fontconfig/package.py +++ b/var/spack/repos/builtin/packages/fontconfig/package.py @@ -35,6 +35,7 @@ class Fontconfig(AutotoolsPackage): version('2.11.1', 'e75e303b4f7756c2b16203a57ac87eba') depends_on('freetype') + depends_on('gperf', type='build', when='@2.12.2:') depends_on('libxml2') depends_on('pkg-config', type='build') depends_on('font-util') From 12113c41e49dc557f05f4dc0e5d10d9459b134a1 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 20 Jun 2017 14:34:17 -0600 Subject: [PATCH 1095/2394] Features/votca (#4556) * votca-csg: needs non-mpi version of gromacs * votca-csg: fixed deps * votca-moo: new package * votca-ctp: new package * votca-ctp: make flake8 happy --- .../builtin/packages/votca-csg/package.py | 5 +- .../builtin/packages/votca-ctp/package.py | 54 +++++++++++++++++++ .../builtin/packages/votca-moo/package.py | 52 ++++++++++++++++++ 3 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/votca-ctp/package.py create mode 100644 var/spack/repos/builtin/packages/votca-moo/package.py diff --git a/var/spack/repos/builtin/packages/votca-csg/package.py b/var/spack/repos/builtin/packages/votca-csg/package.py index d965fa83e53..4c3d992cfb4 100644 --- a/var/spack/repos/builtin/packages/votca-csg/package.py +++ b/var/spack/repos/builtin/packages/votca-csg/package.py @@ -42,8 +42,9 @@ class VotcaCsg(CMakePackage): variant('debug', default=False, description='Build debug version') depends_on("cmake@2.8:", type='build') - depends_on("votca-tools") - depends_on("gromacs@5.1:") + depends_on("votca-tools@1.4:1.4.999", when='@1.4:1.4.999') + depends_on("votca-tools@develop", when='@develop') + depends_on("gromacs~mpi@5.1:") def build_type(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/votca-ctp/package.py b/var/spack/repos/builtin/packages/votca-ctp/package.py new file mode 100644 index 00000000000..41735b60718 --- /dev/null +++ b/var/spack/repos/builtin/packages/votca-ctp/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2017, The VOTCA Development Team (http://www.votca.org) +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class VotcaCtp(CMakePackage): + """Versatile Object-oriented Toolkit for Coarse-graining + Applications (VOTCA) is a package intended to reduce the amount of + routine work when doing systematic coarse-graining of various + systems. The core is written in C++. + + This package contains the VOTCA charge transport engine. + """ + homepage = "http://www.votca.org" + # No release yet + # url = "https://github.com/votca/ctp/tarball/v1.4" + + version('develop', git='https://github.com/votca/ctp', branch='master') + + variant('debug', default=False, description='Build debug version') + + depends_on("cmake@2.8:", type='build') + depends_on("votca-tools@develop", when='@develop') + depends_on("votca-csg@develop", when='@develop') + depends_on("votca-moo@develop", when='@develop') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' diff --git a/var/spack/repos/builtin/packages/votca-moo/package.py b/var/spack/repos/builtin/packages/votca-moo/package.py new file mode 100644 index 00000000000..788fc1ad947 --- /dev/null +++ b/var/spack/repos/builtin/packages/votca-moo/package.py @@ -0,0 +1,52 @@ +############################################################################# +# Copyright (c) 2017, The VOTCA Development Team (http://www.votca.org) +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class VotcaMoo(CMakePackage): + """Versatile Object-oriented Toolkit for Coarse-graining + Applications (VOTCA) is a package intended to reduce the amount of + routine work when doing systematic coarse-graining of various + systems. The core is written in C++. + + This package contains the VOTCA molecular orbital module. + """ + homepage = "http://www.votca.org" + # No release yet + # url = "https://github.com/votca/moo/tarball/v1.4" + + version('develop', git='https://github.com/votca/moo', branch='master') + + variant('debug', default=False, description='Build debug version') + + depends_on("cmake@2.8:", type='build') + depends_on("votca-tools@develop", when='@develop') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' From bcb8615fb0d009ad4e7899b9e91701333dc56990 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 20 Jun 2017 16:34:42 -0500 Subject: [PATCH 1096/2394] Add abyss package (#4555) * abyss * abyss: deleting attemped test from script * abyss: adding new package abyss * abyss: partially fixing mpi dependency issue * abyss: added mpi provider conflicts --- .../repos/builtin/packages/abyss/package.py | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 var/spack/repos/builtin/packages/abyss/package.py diff --git a/var/spack/repos/builtin/packages/abyss/package.py b/var/spack/repos/builtin/packages/abyss/package.py new file mode 100644 index 00000000000..9f4a31a47e6 --- /dev/null +++ b/var/spack/repos/builtin/packages/abyss/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Abyss(AutotoolsPackage): + """ABySS is a de novo, parallel, paired-end sequence assembler + that is designed for short reads. The single-processor version + is useful for assembling genomes up to 100 Mbases in size.""" + + homepage = "http://www.bcgsc.ca/platform/bioinfo/software/abyss" + url = "http://www.bcgsc.ca/platform/bioinfo/software/abyss/releases/2.0.2/abyss-2.0.2.tar.gz" + + version('2.0.2', '1623f55ad7f4586e80f6e74b1f27c798') + + depends_on('mpi') + depends_on('boost@:1.50.0,1.53.0:') + depends_on('sparsehash') + depends_on('sqlite') + + conflicts('^intel-mpi') + conflicts('^intel-parallel-studio+mpi') + conflicts('^mvapich2') + conflicts('^spectrum-mpi') + + def configure_args(self): + args = ['--with-boost=%s' % self.spec['boost'].prefix, + '--with-sqlite=%s' % self.spec['sqlite'].prefix, + '--with-mpi=%s' % self.spec['mpi'].prefix] + if self.spec['mpi'].name == 'mpich': + args.append('--enable-mpich') + return args From 0fe9cb5d1c145cb219c5c7acd39bf0a3142e922b Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Tue, 20 Jun 2017 17:47:24 -0400 Subject: [PATCH 1097/2394] FFTW: remove search for IBM XL threaded compiler when compiler is not gcc (#4187) * Added magma package * Incorporated Serban's change * fftw: patch configuration file to remove search for xlc_r compiler when compiler not gcc FFTW assumes there are only 2 compilers: gcc and IBM XL. When building threaded fftw, the configuration file is looking for the threaded IBM XL's xlc_r compiler when the compiler is not gcc. The PGI compiler is not gcc. --- .../repos/builtin/packages/fftw/package.py | 1 + .../builtin/packages/fftw/pgi-3.3.6-pl2.patch | 121 ++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 var/spack/repos/builtin/packages/fftw/pgi-3.3.6-pl2.patch diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 062b0a0eb0c..ce454095817 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -44,6 +44,7 @@ class Fftw(AutotoolsPackage): patch('pfft-3.3.5.patch', when="@3.3.5:+pfft_patches", level=0) patch('pfft-3.3.4.patch', when="@3.3.4+pfft_patches", level=0) + patch('pgi-3.3.6-pl2.patch', when="@3.3.6-pl2%pgi", level=0) variant( 'float', default=True, diff --git a/var/spack/repos/builtin/packages/fftw/pgi-3.3.6-pl2.patch b/var/spack/repos/builtin/packages/fftw/pgi-3.3.6-pl2.patch new file mode 100644 index 00000000000..1822db12311 --- /dev/null +++ b/var/spack/repos/builtin/packages/fftw/pgi-3.3.6-pl2.patch @@ -0,0 +1,121 @@ +--- configure 2017-01-27 16:08:52.000000000 -0500 ++++ configure 2017-05-08 22:34:32.358821182 -0400 +@@ -21744,117 +21744,7 @@ + + # Various other checks: + if test "x$acx_pthread_ok" = xyes; then +- save_LIBS="$LIBS" +- LIBS="$PTHREAD_LIBS $LIBS" +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +- +- # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +-$as_echo_n "checking for joinable pthread attribute... " >&6; } +- attr_name=unknown +- for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +-#ifdef F77_DUMMY_MAIN +- +-# ifdef __cplusplus +- extern "C" +-# endif +- int F77_DUMMY_MAIN() { return 1; } +- +-#endif +-int +-main () +-{ +-int attr=$attr; return attr; +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_link "$LINENO"; then : +- attr_name=$attr; break +-fi +-rm -f core conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 +-$as_echo "$attr_name" >&6; } +- if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then +- +-cat >>confdefs.h <<_ACEOF +-#define PTHREAD_CREATE_JOINABLE $attr_name +-_ACEOF +- +- fi +- +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 +-$as_echo_n "checking if more special flags are required for pthreads... " >&6; } +- flag=no +- case "${host_cpu}-${host_os}" in +- *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; +- *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; +- esac +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 +-$as_echo "${flag}" >&6; } +- if test "x$flag" != xno; then +- PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" +- fi +- +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" +- +- # More AIX lossage: must compile with xlc_r or cc_r +- if test x"$GCC" != xyes; then +- for ac_prog in xlc_r cc_r +-do +- # Extract the first word of "$ac_prog", so it can be a program name with args. +-set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_PTHREAD_CC+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if test -n "$PTHREAD_CC"; then +- ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_PTHREAD_CC="$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +- done +-IFS=$as_save_IFS +- +-fi +-fi +-PTHREAD_CC=$ac_cv_prog_PTHREAD_CC +-if test -n "$PTHREAD_CC"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +-$as_echo "$PTHREAD_CC" >&6; } +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } +-fi +- +- +- test -n "$PTHREAD_CC" && break +-done +-test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" +- +- else +- PTHREAD_CC=$CC +- fi +-else +- PTHREAD_CC="$CC" ++ PTHREAD_CC="$CC" + fi + + From 7c0a759a26a877ea885fee3ce4ab1cde55526619 Mon Sep 17 00:00:00 2001 From: Jim Eliot Date: Wed, 21 Jun 2017 12:38:27 +0100 Subject: [PATCH 1098/2394] Fix for SAMRAI build debug spec bug (#4564) (#4565) --- var/spack/repos/builtin/packages/samrai/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/samrai/package.py b/var/spack/repos/builtin/packages/samrai/package.py index c9bb34d5475..5100d71583e 100644 --- a/var/spack/repos/builtin/packages/samrai/package.py +++ b/var/spack/repos/builtin/packages/samrai/package.py @@ -81,7 +81,7 @@ def configure_args(self): '--with-hypre=no', '--with-petsc=no']) - if '+debug' in spec: + if '+debug' in self.spec: options.extend([ '--disable-opt', '--enable-debug']) From 2525363c11a4939f6597a8c93bb8a361ece6cfc0 Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Wed, 21 Jun 2017 04:46:14 -0700 Subject: [PATCH 1099/2394] adding H5Z-ZFP; updating zfp to use choice variant for bit stream word size (#4466) * adding H5Z-ZFP; updating zfp to use choice variant for bit stream word size * fixing homepage url * removed fortran error message...just build fortran if can, otherwise ignore --- .../repos/builtin/packages/h5z-zfp/package.py | 65 +++++++++++++++++++ .../repos/builtin/packages/zfp/package.py | 20 +++--- 2 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 var/spack/repos/builtin/packages/h5z-zfp/package.py diff --git a/var/spack/repos/builtin/packages/h5z-zfp/package.py b/var/spack/repos/builtin/packages/h5z-zfp/package.py new file mode 100644 index 00000000000..b98823a1bdf --- /dev/null +++ b/var/spack/repos/builtin/packages/h5z-zfp/package.py @@ -0,0 +1,65 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class H5zZfp(MakefilePackage): + """A highly flexible floating point and integer compression plugin for the + HDF5 library using ZFP compression.""" + + homepage = "http://h5z-zfp.readthedocs.io/en/latest" + url = "https://github.com/LLNL/H5Z-ZFP" + + version('develop', git='https://github.com/LLNL/H5Z-ZFP.git', tag='master') + version('0.7.0', git='https://github.com/LLNL/H5Z-ZFP.git', commit='58ac811') + + variant('fortran', default=True, description='Enable Fortran support') + + depends_on('hdf5') +# depends_on('zfp bsws=8') + depends_on('zfp') + + @property + def make_defs(self): + make_defs = [ + 'PREFIX=%s' % prefix, + 'CC=%s' % spack_cc, + 'HDF5_HOME=%s' % self.spec['hdf5'].prefix, + 'ZFP_HOME=%s' % self.spec['zfp'].prefix] + + if '+fortran' in self.spec and spack_fc: + make_defs += ['FC=%s' % spack_fc] + + return make_defs + + @property + def build_targets(self): + targets = ['all'] + return self.make_defs + targets + + @property + def install_targets(self): + make_args = ['install'] + return make_args + self.make_defs diff --git a/var/spack/repos/builtin/packages/zfp/package.py b/var/spack/repos/builtin/packages/zfp/package.py index b2c5fc4e196..93d71bd4701 100644 --- a/var/spack/repos/builtin/packages/zfp/package.py +++ b/var/spack/repos/builtin/packages/zfp/package.py @@ -41,16 +41,20 @@ class Zfp(MakefilePackage): version('0.5.1', '0ed7059a9b480635e0dd33745e213d17') version('0.5.0', '2ab29a852e65ad85aae38925c5003654') - variant('bswtuint8', default=False, - description='Build with bit stream word type of uint8') + variant('bsws', + default='64', + values=('8', '16', '32', '64'), + multi=False, + description='Bit stream word size: use smaller for finer \ + rate granularity. Use 8 for H5Z-ZFP filter.') def edit(self, spec, prefix): - if '+bswtuint8' in self.spec: - config_file = FileFilter('Config') - config_file.filter( - '^\s*#\s*DEFS\s*\+=\s*-DBIT_STREAM_WORD_TYPE\s*=\s*uint8', - 'DEFS += -DBIT_STREAM_WORD_TYPE=uint8') - + config_file = FileFilter('Config') + config_file.filter( + '^\s*#\s*DEFS\s*\+=\s*-DBIT_STREAM_WORD_TYPE\s*=\s*uint8', + 'DEFS += -DBIT_STREAM_WORD_TYPE=uint%s' % + spec.variants['bsws'].value) + def build(self, spec, prefix): make("shared") From cb87edf230c80fa1e0fc54027d0773f6a4d0b270 Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Wed, 21 Jun 2017 04:47:06 -0700 Subject: [PATCH 1100/2394] Modified ipopt package to support build on ppc64le (#4561) Added line in package.py to patch using ipopt_ppc_build.patch. The patch simply adds support in config.guess and Ipopt/config.guess to build ipopt on ppc64le. --- .../packages/ipopt/ipopt_ppc_build.patch | 26 +++++++++++++++++++ .../repos/builtin/packages/ipopt/package.py | 2 ++ 2 files changed, 28 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ipopt/ipopt_ppc_build.patch diff --git a/var/spack/repos/builtin/packages/ipopt/ipopt_ppc_build.patch b/var/spack/repos/builtin/packages/ipopt/ipopt_ppc_build.patch new file mode 100644 index 00000000000..a903544cc7a --- /dev/null +++ b/var/spack/repos/builtin/packages/ipopt/ipopt_ppc_build.patch @@ -0,0 +1,26 @@ +--- ipopt/config.guess 2017-06-20 14:49:19.618016003 -0700 ++++ ipopt/config.guess.new 2017-06-20 14:50:35.678878802 -0700 +@@ -908,6 +908,9 @@ + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; ++ ppc64le:Linux:*:*) ++ echo powerpc64-unknown-linux-gnu ++ exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + + +--- ipopt/Ipopt/config.guess 2017-06-20 14:49:19.618016003 -0700 ++++ ipopt/Ipopt/config.guess.new 2017-06-20 14:50:35.678878802 -0700 +@@ -908,6 +908,9 @@ + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; ++ ppc64le:Linux:*:*) ++ echo powerpc64-unknown-linux-gnu ++ exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; diff --git a/var/spack/repos/builtin/packages/ipopt/package.py b/var/spack/repos/builtin/packages/ipopt/package.py index 8bfda4a10bd..d5bc0b21a4f 100644 --- a/var/spack/repos/builtin/packages/ipopt/package.py +++ b/var/spack/repos/builtin/packages/ipopt/package.py @@ -52,6 +52,8 @@ class Ipopt(Package): depends_on('coinhsl', when='+coinhsl') depends_on('metis@4.0:4.999', when='+metis') + patch('ipopt_ppc_build.patch', when='arch=ppc64le') + def install(self, spec, prefix): # Dependency directories blas_dir = spec['blas'].prefix From b1fceb75d0f7b999c5f2a4edc686a1a947b60a95 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 21 Jun 2017 10:51:05 -0500 Subject: [PATCH 1101/2394] Andi and libdivsufsort (#4559) * andi: adding andi and libdivsufsort * andi: adding andi and dependency libdivsufsort * andi: adding andi and dependency libdivsufsort * andi: fixing autotool dependency types * andi: fixed whitespace to make flake8 compliant --- .../repos/builtin/packages/andi/package.py | 42 +++++++++++++++++++ .../builtin/packages/libdivsufsort/package.py | 35 ++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 var/spack/repos/builtin/packages/andi/package.py create mode 100644 var/spack/repos/builtin/packages/libdivsufsort/package.py diff --git a/var/spack/repos/builtin/packages/andi/package.py b/var/spack/repos/builtin/packages/andi/package.py new file mode 100644 index 00000000000..0d48ad69afb --- /dev/null +++ b/var/spack/repos/builtin/packages/andi/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Andi(AutotoolsPackage): + """andi is used for for estimating the + evolutionary distance between closely related genomes.""" + + homepage = "https://github.com/EvolBioInf/andi" + url = "https://github.com/EvolBioInf/andi/archive/v0.10.tar.gz" + + version('0.10', '3aaba7961798bb4aaa546baa44e469d8') + + depends_on('m4', type='build') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('gsl') + depends_on('libdivsufsort') diff --git a/var/spack/repos/builtin/packages/libdivsufsort/package.py b/var/spack/repos/builtin/packages/libdivsufsort/package.py new file mode 100644 index 00000000000..88355f87255 --- /dev/null +++ b/var/spack/repos/builtin/packages/libdivsufsort/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libdivsufsort(CMakePackage): + """libdivsufsort is a software library that implements a + lightweight suffix array construction algorithm.""" + + homepage = "https://github.com/y-256/libdivsufsort" + url = "https://github.com/y-256/libdivsufsort/archive/2.0.1.tar.gz" + + version('2.0.1', 'a75c6be4715d3d659936f3a1ab8cb5c0') From 1f2e56e1f3452fdc9b6dde349a67efc217292b04 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 21 Jun 2017 17:35:31 +0100 Subject: [PATCH 1102/2394] refactor openfoam packages (#3669) * Several improvements for the openfoam packages -- Refactor openfoam packages by adding an OpenfoamArch class Use separate configure, build, install phases. Provide FOAM_PROJECT_DIR dependent env for openfoam packages - easier way to locate Eliminate intermediate installation directories - unneeded clutter. - makes it less than easy to find the etc/bashrc file Add versioning for all openfoam patches - no certainty which parts (if any) will be needed in future versions, especially if we strive to ensure that the upstream version builds well with spack to begin with. Support build of develop branches - helps track build regressions for future openfoam releases STYLE: use common/ and assets/ to provide additional (build) resources ... * - adjust OpenFOAM provider Move openfoam-com up front since this is the one being used as a base for the others --- etc/spack/defaults/packages.yaml | 2 +- .../builtin/packages/foam-extend/package.py | 290 +++----- .../packages/openfoam-com/common/README | 2 + .../packages/openfoam-com/common/README-spack | 15 + .../openfoam-com/common/change-sitedir.sh | 94 +++ .../openfoam-com/common/change-userdir.sh | 94 +++ .../openfoam-com/common/spack-Allwmake | 22 + .../common/spack-derived-Allwmake | 26 + .../openfoam-com/mgridgen-lib-1612.patch | 41 ++ ...am-site.patch => openfoam-site-1612.patch} | 6 +- .../openfoam-com/openfoam-site-plus.patch | 35 + .../builtin/packages/openfoam-com/package.py | 677 ++++++++++-------- .../openfoam-org/assets/bin/foamEtcFile | 417 +++++++++++ ...foam-site.patch => openfoam-site-41.patch} | 6 +- .../builtin/packages/openfoam-org/package.py | 340 +++------ 15 files changed, 1313 insertions(+), 754 deletions(-) create mode 100644 var/spack/repos/builtin/packages/openfoam-com/common/README create mode 100644 var/spack/repos/builtin/packages/openfoam-com/common/README-spack create mode 100644 var/spack/repos/builtin/packages/openfoam-com/common/change-sitedir.sh create mode 100644 var/spack/repos/builtin/packages/openfoam-com/common/change-userdir.sh create mode 100755 var/spack/repos/builtin/packages/openfoam-com/common/spack-Allwmake create mode 100755 var/spack/repos/builtin/packages/openfoam-com/common/spack-derived-Allwmake create mode 100644 var/spack/repos/builtin/packages/openfoam-com/mgridgen-lib-1612.patch rename var/spack/repos/builtin/packages/openfoam-com/{openfoam-site.patch => openfoam-site-1612.patch} (86%) create mode 100644 var/spack/repos/builtin/packages/openfoam-com/openfoam-site-plus.patch create mode 100755 var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile rename var/spack/repos/builtin/packages/openfoam-org/{openfoam-site.patch => openfoam-site-41.patch} (86%) diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index 0cafab28e90..d04ce76e6b4 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -28,6 +28,6 @@ packages: mpe: [mpe2] mpi: [openmpi, mpich] opencl: [pocl] - openfoam: [foam-extend] + openfoam: [openfoam-com, openfoam-org, foam-extend] pil: [py-pillow] scalapack: [netlib-scalapack] diff --git a/var/spack/repos/builtin/packages/foam-extend/package.py b/var/spack/repos/builtin/packages/foam-extend/package.py index c68e570c0fd..d417ef8cf33 100644 --- a/var/spack/repos/builtin/packages/foam-extend/package.py +++ b/var/spack/repos/builtin/packages/foam-extend/package.py @@ -48,16 +48,17 @@ # - reworked to mirror the openfoam-com package. # If changes are needed here, consider if they need applying there too. # +# Known issues +# - Combining +parmgridgen with +float32 probably won't work. +# ############################################################################## from spack import * from spack.environment import * -import multiprocessing import glob import re import shutil import os -from os.path import isdir, isfile from spack.pkg.builtin.openfoam_com import * @@ -77,10 +78,9 @@ class FoamExtend(Package): version('3.0', git='http://git.code.sf.net/p/foam-extend/foam-extend-3.0') # variant('int64', default=False, - # description='Compile with 64-bit labels') + # description='Compile with 64-bit label') variant('float32', default=False, description='Compile with 32-bit scalar (single-precision)') - variant('paraview', default=False, description='Build paraview plugins (eg, paraFoam)') variant('scotch', default=True, @@ -96,10 +96,6 @@ class FoamExtend(Package): variant('source', default=True, description='Install library/application sources and tutorials') - #: Map spack compiler names to OpenFOAM compiler names - # By default, simply capitalize the first letter - compiler_mapping = {'intel': 'icc'} - provides('openfoam') depends_on('mpi') depends_on('python') @@ -111,25 +107,22 @@ class FoamExtend(Package): depends_on('scotch~metis+mpi', when='+ptscotch') depends_on('metis@5:', when='+metis') depends_on('parmetis', when='+parmetis') - depends_on('parmgridgen', when='+parmgridgen') + # mgridgen is statically linked + depends_on('parmgridgen', when='+parmgridgen', type='build') depends_on('paraview@:5.0.1', when='+paraview') - # Some user settings, to be adjusted manually or via variants - foam_cfg = { - 'WM_COMPILER': 'Gcc', # <- %compiler - 'WM_ARCH_OPTION': '64', # (32/64-bit on x86_64) - # FUTURE? 'WM_LABEL_SIZE': '32', # <- +int64 - 'WM_PRECISION_OPTION': 'DP', # <- +float32 - 'WM_COMPILE_OPTION': 'SPACKOpt', # Do not change - 'WM_MPLIB': 'USER', # USER | USERMPI + # General patches + common = ['spack-Allwmake', 'README-spack'] + assets = [] + + # Some user config settings + config = { + 'label-size': False, # <- No int32/int64 support + 'mplib': 'USERMPI', # USER | USERMPI } - # The system description is frequently needed - foam_sys = { - 'WM_ARCH': None, - 'WM_COMPILER': None, - 'WM_OPTIONS': None, - } + # The openfoam architecture, compiler information etc + _foam_arch = None # Content for etc/prefs.{csh,sh} etc_prefs = {} @@ -137,163 +130,54 @@ class FoamExtend(Package): # Content for etc/config.{csh,sh}/ files etc_config = {} - build_script = './spack-Allwmake' # <- Generated by patch() method. - # phases = ['configure', 'build', 'install'] - # build_system_class = 'OpenfoamCom' + phases = ['configure', 'build', 'install'] + build_script = './spack-Allwmake' # <- Added by patch() method. + + # + # - End of definitions / setup - + # def setup_environment(self, spack_env, run_env): - run_env.set('FOAM_INST_DIR', self.prefix) + run_env.set('FOAM_INST_DIR', os.path.dirname(self.projectdir)), + run_env.set('FOAM_PROJECT_DIR', self.projectdir) run_env.set('WM_PROJECT_DIR', self.projectdir) + for d in ['wmake', self.archbin]: # bin already added automatically + run_env.prepend_path('PATH', join_path(self.projectdir, d)) + run_env.set('MPI_BUFFER_SIZE', "20000000") - @property - def _canonical(self): - """Canonical name for this package and version""" - return 'foam-extend-{0}'.format(self.version.up_to(2)) + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + """Provide location of the OpenFOAM project. + This is identical to the WM_PROJECT_DIR value, but we avoid that + variable since it would mask the normal OpenFOAM cleanup of + previous versions. + """ + spack_env.set('FOAM_PROJECT_DIR', self.projectdir) @property def projectdir(self): """Absolute location of project directory: WM_PROJECT_DIR/""" - return join_path(self.prefix, self._canonical) # <- prefix/canonical + return self.prefix # <- install directly under prefix @property - def etc(self): - """Absolute location of the OpenFOAM etc/ directory""" - return join_path(self.projectdir, 'etc') + def foam_arch(self): + if not self._foam_arch: + self._foam_arch = OpenfoamArch(self.spec, **self.config) + return self._foam_arch @property def archbin(self): """Relative location of architecture-specific executables""" - wm_options = self.set_openfoam() - return join_path('applications', 'bin', wm_options) + return join_path('applications', 'bin', self.foam_arch) @property def archlib(self): """Relative location of architecture-specific libraries""" - wm_options = self.set_openfoam() - return join_path('lib', wm_options) - - @property - def wm_options(self): - """The architecture+compiler+options for OpenFOAM""" - opts = self.set_openfoam() - return opts - - @property - def rpath_info(self): - """Define 'SPACKOpt' compiler optimization file to have wmake - use spack information with minimum modifications to OpenFOAM - """ - build_libpath = join_path(self.stage.source_path, self.archlib) - install_libpath = join_path(self.projectdir, self.archlib) - - # 'DBUG': rpaths - return '{0}{1} {2}{3}'.format( - self.compiler.cxx_rpath_arg, install_libpath, - self.compiler.cxx_rpath_arg, build_libpath) - - def openfoam_arch(self): - """Return an architecture value similar to what OpenFOAM does in - etc/config.sh/settings, but slightly more generous. - Uses and may adjust foam_cfg[WM_ARCH_OPTION] as a side-effect - """ - # spec.architecture.platform is like `uname -s`, but lower-case - platform = self.spec.architecture.platform - - # spec.architecture.target is like `uname -m` - target = self.spec.architecture.target - - if platform == 'linux': - if target == 'i686': - self.foam_cfg['WM_ARCH_OPTION'] = '32' # Force consistency - elif target == 'x86_64': - if self.foam_cfg['WM_ARCH_OPTION'] == '64': - platform += '64' - elif target == 'ia64': - platform += 'ia64' - elif target == 'armv7l': - platform += 'ARM7' - elif target == ppc64: - platform += 'PPC64' - elif target == ppc64le: - platform += 'PPC64le' - elif platform == 'darwin': - if target == 'x86_64': - platform += 'Intel' - if self.foam_cfg['WM_ARCH_OPTION'] == '64': - platform += '64' - # ... and others? - return platform - - def openfoam_compiler(self): - """Capitalized version of the compiler name, which usually corresponds - to how OpenFOAM will camel-case things. - Use compiler_mapping to handing special cases. - Also handle special compiler options (eg, KNL) - """ - comp = self.compiler.name - if comp in self.compiler_mapping: - comp = self.compiler_mapping[comp] - comp = comp.capitalize() - - if '+knl' in self.spec: - comp += 'KNL' - return comp - - # For foam-extend: does not yet support +int64 - def set_openfoam(self): - """Populate foam_cfg, foam_sys according to - variants, architecture, compiler. - Returns WM_OPTIONS. - """ - # Run once - opts = self.foam_sys['WM_OPTIONS'] - if opts: - return opts - - wm_arch = self.openfoam_arch() - wm_compiler = self.openfoam_compiler() - compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] - - # Insist on a wmake rule for this architecture/compiler combination - archCompiler = wm_arch + wm_compiler - compiler_rule = join_path( - self.stage.source_path, 'wmake', 'rules', archCompiler) - - if not isdir(compiler_rule): - raise RuntimeError( - 'No wmake rule for {0}'.format(archCompiler)) - if not re.match(r'.+Opt$', compileOpt): - raise RuntimeError( - "WM_COMPILE_OPTION={0} is not type '*Opt'".format(compileOpt)) - - # Adjust for variants - # FUTURE? self.foam_cfg['WM_LABEL_SIZE'] = ( - # FUTURE? '64' if '+int64' in self.spec else '32' - # FUTURE? ) - self.foam_cfg['WM_PRECISION_OPTION'] = ( - 'SP' if '+float32' in self.spec else 'DP' - ) - - # ---- - # WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION - # ---- - self.foam_sys['WM_ARCH'] = wm_arch - self.foam_sys['WM_COMPILER'] = wm_compiler - self.foam_cfg['WM_COMPILER'] = wm_compiler # For bashrc,cshrc too - self.foam_sys['WM_OPTIONS'] = ''.join([ - wm_arch, - wm_compiler, - self.foam_cfg['WM_PRECISION_OPTION'], - # FUTURE? 'Int', self.foam_cfg['WM_LABEL_SIZE'], # Int32/Int64 - compileOpt - ]) - return self.foam_sys['WM_OPTIONS'] + return join_path('lib', self.foam_arch) def patch(self): - """Adjust OpenFOAM build for spack. Where needed, apply filter as an - alternative to normal patching. - """ - self.set_openfoam() # May need foam_cfg/foam_sys information + """Adjust OpenFOAM build for spack. + Where needed, apply filter as an alternative to normal patching.""" + add_extra_files(self, self.common, self.assets) # Adjust ParMGridGen - this is still a mess files = [ @@ -319,23 +203,7 @@ def patch(self): filter_file( r'#if YY_FLEX_SUBMINOR_VERSION < 34', r'#if YY_FLEX_MAJOR_VERSION <= 2 && YY_FLEX_MINOR_VERSION <= 5 && YY_FLEX_SUBMINOR_VERSION < 34', # noqa: E501 - f, backup=False - ) - - # Build wrapper script - with open(self.build_script, 'w') as out: - out.write( - """#!/bin/bash -export FOAM_INST_DIR=$(cd .. && pwd -L) -. $PWD/etc/bashrc '' # No arguments -mkdir -p $FOAM_APPBIN $FOAM_LIBBIN 2>/dev/null # Allow interrupt -echo Build openfoam with SPACK -echo WM_PROJECT_DIR = $WM_PROJECT_DIR -./Allwmake # No arguments -# -""") - set_executable(self.build_script) - self.configure(self.spec, self.prefix) # Should be a separate phase + f, backup=False) def configure(self, spec, prefix): """Make adjustments to the OpenFOAM configuration files in their various @@ -343,8 +211,6 @@ def configure(self, spec, prefix): don't properly fit get placed in the etc/prefs.sh file (similiarly for csh). """ - self.set_openfoam() # Need foam_cfg/foam_sys information - # Content for etc/prefs.{csh,sh} self.etc_prefs = { '000': { # Sort first @@ -373,7 +239,7 @@ def configure(self, spec, prefix): }, } # Adjust configuration via prefs - sort second - self.etc_prefs['001'].update(self.foam_cfg) + self.etc_prefs['001'].update(self.foam_arch.foam_dict()) if '+scotch' in spec or '+ptscotch' in spec: pkg = spec['scotch'].prefix @@ -434,41 +300,33 @@ def configure(self, spec, prefix): posix=join_path('etc', 'prefs.sh'), cshell=join_path('etc', 'prefs.csh')) - archCompiler = self.foam_sys['WM_ARCH'] + self.foam_sys['WM_COMPILER'] - compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] - # general_rule = join_path('wmake', 'rules', 'General') - compiler_rule = join_path('wmake', 'rules', archCompiler) - generate_mplib_rules(compiler_rule, self.spec) - generate_compiler_rules(compiler_rule, compileOpt, self.rpath_info) - # Record the spack spec information - with open("log.spack-spec", 'w') as outfile: - outfile.write(spec.tree()) - def build(self, spec, prefix): """Build using the OpenFOAM Allwmake script, with a wrapper to source its environment first. + Only build if the compiler is known to be supported. """ - self.set_openfoam() # Force proper population of foam_cfg/foam_sys + self.foam_arch.has_rule(self.stage.source_path) + self.foam_arch.create_rules(self.stage.source_path, self) + args = [] if self.parallel: # Build in parallel? - pass via the environment - os.environ['WM_NCOMPPROCS'] = str(self.make_jobs) \ - if self.make_jobs else str(multiprocessing.cpu_count()) + os.environ['WM_NCOMPPROCS'] = str(make_jobs) builder = Executable(self.build_script) builder(*args) def install(self, spec, prefix): - """Install under the projectdir (== prefix/name-version)""" - self.build(spec, prefix) # Should be a separate phase - opts = self.wm_options + """Install under the projectdir""" + opts = str(self.foam_arch) # Fairly ugly since intermediate targets are scattered inside sources appdir = 'applications' + projdir = os.path.basename(self.projectdir) mkdirp(self.projectdir, join_path(self.projectdir, appdir)) - - # Retain build log file - out = "spack-build.out" - if isfile(out): - install(out, join_path(self.projectdir, "log." + opts)) + # Filtering: bashrc, cshrc + edits = { + 'WM_PROJECT_INST_DIR': os.path.dirname(self.projectdir), + 'WM_PROJECT_DIR': join_path('$WM_PROJECT_INST_DIR', projdir), + } # All top-level files, except spack build info and possibly Allwmake if '+source' in spec: @@ -477,36 +335,52 @@ def install(self, spec, prefix): ignored = re.compile(r'^(Allclean|Allwmake|spack-).*') files = [ - f for f in glob.glob("*") if isfile(f) and not ignored.search(f) + f for f in glob.glob("*") + if os.path.isfile(f) and not ignored.search(f) ] for f in files: install(f, self.projectdir) # Install directories. install applications/bin directly - for d in ['bin', 'etc', 'wmake', 'lib', join_path(appdir, 'bin')]: + # Install 'etc' before 'bin' (for symlinks) + for d in ['etc', 'bin', 'wmake', 'lib', join_path(appdir, 'bin')]: install_tree( d, - join_path(self.projectdir, d)) + join_path(self.projectdir, d), + symlinks=True) if '+source' in spec: subitem = join_path(appdir, 'Allwmake') install(subitem, join_path(self.projectdir, subitem)) - ignored = [opts] # Intermediate targets + ignored = [opts] # Ignore intermediate targets for d in ['src', 'tutorials']: install_tree( d, join_path(self.projectdir, d), - ignore=shutil.ignore_patterns(*ignored)) + ignore=shutil.ignore_patterns(*ignored), + symlinks=True) for d in ['solvers', 'utilities']: install_tree( join_path(appdir, d), join_path(self.projectdir, appdir, d), - ignore=shutil.ignore_patterns(*ignored)) + ignore=shutil.ignore_patterns(*ignored), + symlinks=True) + + etc_dir = join_path(self.projectdir, 'etc') + rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc + edits, + posix=join_path(etc_dir, 'bashrc'), + cshell=join_path(etc_dir, 'cshrc')) + self.install_links() def install_links(self): """Add symlinks into bin/, lib/ (eg, for other applications)""" - return + # Make build log visible - it contains OpenFOAM-specific information + with working_dir(self.projectdir): + os.symlink( + join_path('.spack', 'build.out'), + join_path('log.' + str(self.foam_arch))) # ----------------------------------------------------------------------------- diff --git a/var/spack/repos/builtin/packages/openfoam-com/common/README b/var/spack/repos/builtin/packages/openfoam-com/common/README new file mode 100644 index 00000000000..d116bbaa23d --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/common/README @@ -0,0 +1,2 @@ +Some helper tools for packaging applications/libraries dependent on an +openfoam provider. diff --git a/var/spack/repos/builtin/packages/openfoam-com/common/README-spack b/var/spack/repos/builtin/packages/openfoam-com/common/README-spack new file mode 100644 index 00000000000..83b606dda17 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/common/README-spack @@ -0,0 +1,15 @@ +Additional notes for spack +-------------------------- + +OpenFOAM largely manages its own PATH and LD_LIBRARY_PATH settings. +The spack build currently also follows this and only provides +a minimum modules environment. + +The variable FOAM_PROJECT_DIR points to the location of the OpenFOAM project +and shall contain a $FOAM_PROJECT_DIR/etc/bashrc file for OpenFOAM. +The variable FOAM_INST_DIR may also be provided for older OpenFOAM versions. + +It is the aim for the future to use spack to provide the environment directly, +but this still needs more work. + +2017-04-18 diff --git a/var/spack/repos/builtin/packages/openfoam-com/common/change-sitedir.sh b/var/spack/repos/builtin/packages/openfoam-com/common/change-sitedir.sh new file mode 100644 index 00000000000..61d9c3ea8b6 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/common/change-sitedir.sh @@ -0,0 +1,94 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM. If not, see . +# +# Script +# . change-sitedir.sh PREFIX [SUFFIX] +# +# Shortcuts (prefix) +# -prefix "$WM_PROJECT_INST_DIR/site" +# -project "$WM_PROJECT_DIR/site" +# -none remove from environment +# +# Shortcuts (suffix) +# -platforms "platforms/$WM_OPTIONS" +# +# Description +# Change WM_PROJECT_SITE, FOAM_SITE_APPBIN, FOAM_SITE_LIBBIN +# and the respective entries in PATH, LD_LIBRARY_PATH. +# +# This can be useful when temporarily reassigning the site directory +# when packaging OpenFOAM. +# +# The suffix value should normally include "platforms/$WM_OPTIONS" +# +# Example +# . /path/change-sitedir.sh -prefix -platforms +# +# corresponds to the standard site location: +# +# $WM_PROJECT_INST_DIR/site{/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS} +# +#------------------------------------------------------------------------------ + +if [ "$#" -ge 1 ] +then + prefix="$1" + suffix="$2" + + foamOldDirs="$FOAM_SITE_APPBIN $FOAM_SITE_LIBBIN \ + $WM_PROJECT_SITE $WM_PROJECT_INST_DIR/site $WM_PROJECT_DIR/site" + foamClean=$WM_PROJECT_DIR/bin/foamCleanPath + if [ -x "$foamClean" ] + then + cleaned=$($foamClean "$PATH" "$foamOldDirs") && PATH="$cleaned" + cleaned=$($foamClean "$LD_LIBRARY_PATH" "$foamOldDirs") \ + && LD_LIBRARY_PATH="$cleaned" + fi + + case "$suffix" in + -plat*) suffix="platforms/$WM_OPTIONS" ;; + esac + case "$prefix" in + -prefix) prefix="$WM_PROJECT_INST_DIR/site" ;; + -project) prefix="$WM_PROJECT_DIR/site" ;; + -none) unset prefix ;; + esac + + if [ -n "$prefix" ] + then + export WM_PROJECT_SITE="$prefix" + + prefix="$prefix/${WM_PROJECT_VERSION:-unknown}${suffix:+/}${suffix}" + + export FOAM_SITE_APPBIN="$prefix/bin" + export FOAM_SITE_LIBBIN="$prefix/lib" + PATH="$FOAM_SITE_APPBIN:$PATH" + LD_LIBRARY_PATH="$FOAM_SITE_LIBBIN:$LD_LIBRARY_PATH" + else + unset WM_PROJECT_SITE FOAM_SITE_APPBIN FOAM_SITE_LIBBIN + fi +fi + +unset foamClean foamOldDirs cleaned prefix suffix + +#------------------------------------------------------------------------------ diff --git a/var/spack/repos/builtin/packages/openfoam-com/common/change-userdir.sh b/var/spack/repos/builtin/packages/openfoam-com/common/change-userdir.sh new file mode 100644 index 00000000000..d126fcfe5d1 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/common/change-userdir.sh @@ -0,0 +1,94 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM. If not, see . +# +# Script +# . change-userdir.sh PREFIX [SUFFIX] +# +# Shortcuts (prefix) +# -home "$HOME/OpenFOAM/$USER-$WM_PROJECT_VERSION" +# -none remove from environment +# +# Shortcuts (suffix) +# -platforms "platforms/$WM_OPTIONS" +# +# Description +# Change WM_PROJECT_USER_DIR, FOAM_USER_APPBIN, FOAM_USER_LIBBIN +# and the respective entries in PATH, LD_LIBRARY_PATH. +# Also adjusts FOAM_RUN. +# +# This can be useful with compiling additional OpenFOAM programs +# (that use FOAM_USER_APPBIN, FOAM_USER_LIBBIN for their build), +# to avoid conflicts with the normal user bin/lib files. +# +# The suffix value should normally include "platforms/$WM_OPTIONS" +# +# Example +# . /path/change-userdir.sh -home -platforms +# +# corresponds to the standard user location: +# +# $HOME/OpenFOAM/$USER-$WM_PROJECT_VERSION/platforms/$WM_OPTIONS +# +#------------------------------------------------------------------------------ + +if [ "$#" -ge 1 ] +then + prefix="$1" + suffix="$2" + + foamOldDirs="$FOAM_USER_APPBIN $FOAM_USER_LIBBIN" + foamClean=$WM_PROJECT_DIR/bin/foamCleanPath + if [ -x "$foamClean" ] + then + cleaned=$($foamClean "$PATH" "$foamOldDirs") && PATH="$cleaned" + cleaned=$($foamClean "$LD_LIBRARY_PATH" "$foamOldDirs") \ + && LD_LIBRARY_PATH="$cleaned" + fi + + case "$suffix" in + -plat*) suffix="platforms/$WM_OPTIONS" ;; + esac + case "$prefix" in + -home) prefix="$HOME/OpenFOAM/$USER-${WM_PROJECT_VERSION:-unknown}" ;; + -none) unset prefix ;; + esac + + if [ -n "$prefix" ] + then + export WM_PROJECT_USER_DIR="$prefix" + export FOAM_RUN="$prefix/run" + + prefix="$prefix${suffix:+/}${suffix}" + export FOAM_USER_APPBIN="$prefix/bin" + export FOAM_USER_LIBBIN="$prefix/lib" + + PATH="$FOAM_USER_APPBIN:$PATH" + LD_LIBRARY_PATH="$FOAM_USER_LIBBIN:$LD_LIBRARY_PATH" + else + unset WM_PROJECT_USER_DIR FOAM_RUN FOAM_USER_APPBIN FOAM_USER_LIBBIN + fi +fi + +unset foamClean foamOldDirs cleaned prefix suffix + +#------------------------------------------------------------------------------ diff --git a/var/spack/repos/builtin/packages/openfoam-com/common/spack-Allwmake b/var/spack/repos/builtin/packages/openfoam-com/common/spack-Allwmake new file mode 100755 index 00000000000..cff22daf100 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/common/spack-Allwmake @@ -0,0 +1,22 @@ +#!/bin/bash +# Build wrapper script - FOAM_INST_DIR is only required by foam-extend +export FOAM_INST_DIR=$(cd .. && pwd -L) +. $PWD/etc/bashrc '' # No arguments +mkdir -p $FOAM_APPBIN $FOAM_LIBBIN 2>/dev/null # Allow interrupt +echo "Build openfoam with SPACK ($@)" +echo WM_PROJECT_DIR = $WM_PROJECT_DIR +./Allwmake $@ # Pass arguments + +# Link non-dummy MPI_FOAM type to parent-dir, where rpath can find it +if [ "${FOAM_MPI:=dummy}" != dummy -a -d "$FOAM_LIBBIN/$FOAM_MPI" ] +then +( + cd "$FOAM_LIBBIN" || exit 1 + for i in $FOAM_MPI/lib*.so + do + [ -f $i ] && ln -sf $i "${i##*/}" + done +) +fi + +# ----------------------------------------------------------------------------- diff --git a/var/spack/repos/builtin/packages/openfoam-com/common/spack-derived-Allwmake b/var/spack/repos/builtin/packages/openfoam-com/common/spack-derived-Allwmake new file mode 100755 index 00000000000..407ad734e8c --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/common/spack-derived-Allwmake @@ -0,0 +1,26 @@ +#!/bin/bash +# The openfoam providers must export 'FOAM_PROJECT_DIR' +# The package is expected to supply an appropriate Allwmake file. + +[ -d "$FOAM_PROJECT_DIR" -a -f "$FOAM_PROJECT_DIR/etc/bashrc" ] || { + echo "Error: no PROJECT=$FOAM_PROJECT_DIR" 1>&2 + echo " or no etc/bashrc found" 1>&2 + exit 1 +} + +export FOAM_INST_DIR=$(cd $FOAM_PROJECT_DIR/.. && pwd -L) # Needed by foam-extend +. $FOAM_PROJECT_DIR/etc/bashrc '' # No arguments + +# Package-specific adjustments +[ -f spack-config.sh ] && . ./spack-config.sh '' # No arguments + +echo "========================================" +date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown" +echo "Build with ${WM_PROJECT}-${WM_PROJECT_VERSION}" +echo " WM_PROJECT_DIR = $WM_PROJECT_DIR" +echo " $WM_COMPILER $WM_COMPILER_TYPE compiler" +echo " $WM_OPTIONS - with $WM_MPLIB $FOAM_MPI" +echo + +./Allwmake $@ # Pass arguments +# ----------------------------------------------------------------------------- diff --git a/var/spack/repos/builtin/packages/openfoam-com/mgridgen-lib-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/mgridgen-lib-1612.patch new file mode 100644 index 00000000000..8dc0b995ff8 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/mgridgen-lib-1612.patch @@ -0,0 +1,41 @@ +--- OpenFOAM-v1612+.orig/src/fvAgglomerationMethods/Allwmake 2017-01-02 09:56:17.578558265 +0100 ++++ OpenFOAM-v1612+/src/fvAgglomerationMethods/Allwmake 2017-04-18 18:58:38.236795902 +0200 +@@ -4,9 +4,13 @@ + # Parse arguments for library compilation + . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments + +-export ParMGridGen=$WM_THIRD_PARTY_DIR/ParMGridGen-1.0 ++unset MGRIDGEN_ARCH_PATH ++if settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/mgridgen) ++then ++ . $settings ++fi + +-if [ -e "$FOAM_LIBBIN/libMGridGen.so" ] ++if [ -e "$MGRIDGEN_ARCH_PATH/include/mgridgen.h" ] + then + wmake $targetType MGridGenGamgAgglomeration + fi +--- OpenFOAM-v1612+.orig/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options 2017-01-02 09:56:17.578558265 +0100 ++++ OpenFOAM-v1612+/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options 2017-04-18 18:59:16.860662811 +0200 +@@ -1,15 +1,9 @@ +-/* Needs ParMGridGen environment variable set. (see Allwmake script) */ +- +-TYPE_REAL= +-#if defined(WM_SP) +-TYPE_REAL=-DTYPE_REAL +-#endif +- + EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ +- -I$(ParMGridGen)/MGridGen/Lib/lnInclude \ +- -I$(ParMGridGen)/MGridGen/IMlib/lnInclude \ +- $(TYPE_REAL) ++ -I$(MGRIDGEN_ARCH_PATH)/include + + LIB_LIBS = \ +- -L$(FOAM_EXT_LIBBIN) -lMGridGen ++ -L$(FOAM_EXT_LIBBIN) \ ++ -L$(MGRIDGEN_ARCH_PATH)/lib \ ++ -L$(MGRIDGEN_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ ++ -lmgrid diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-site.patch b/var/spack/repos/builtin/packages/openfoam-com/openfoam-site-1612.patch similarity index 86% rename from var/spack/repos/builtin/packages/openfoam-com/openfoam-site.patch rename to var/spack/repos/builtin/packages/openfoam-com/openfoam-site-1612.patch index 66310257885..d988c2f9b85 100644 --- a/var/spack/repos/builtin/packages/openfoam-com/openfoam-site.patch +++ b/var/spack/repos/builtin/packages/openfoam-com/openfoam-site-1612.patch @@ -6,7 +6,7 @@ diff -uw OpenFOAM-v1612+.orig/etc/config.sh/settings OpenFOAM-v1612+/etc/config. # Location of the jobControl directory -export FOAM_JOB_DIR=$WM_PROJECT_INST_DIR/jobControl -+export FOAM_JOB_DIR=$HOME/$WM_PROJECT/jobControl #SPACK: non-central location ++export FOAM_JOB_DIR=$HOME/.OpenFOAM/jobControl #SPACK: non-central location # wmake configuration export WM_DIR=$WM_PROJECT_DIR/wmake @@ -15,7 +15,7 @@ diff -uw OpenFOAM-v1612+.orig/etc/config.sh/settings OpenFOAM-v1612+/etc/config. # Site-specific directory -siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_INST_DIR/site}" -+siteDir="${WM_PROJECT_SITE:-$WM_PROJECT/site}" #SPACK: not in parent directory ++siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_DIR/site}" #SPACK: not in parent directory # Shared site executables/libraries # Similar naming convention as ~OpenFOAM expansion @@ -27,7 +27,7 @@ diff -uw OpenFOAM-v1612+.orig/etc/config.csh/settings OpenFOAM-v1612+/etc/config # Location of the jobControl directory -setenv FOAM_JOB_DIR $WM_PROJECT_INST_DIR/jobControl -+setenv FOAM_JOB_DIR=$HOME/$WM_PROJECT/jobControl #SPACK: non-central location ++setenv FOAM_JOB_DIR=$HOME/.OpenFOAM/jobControl #SPACK: non-central location # wmake configuration setenv WM_DIR $WM_PROJECT_DIR/wmake diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-site-plus.patch b/var/spack/repos/builtin/packages/openfoam-com/openfoam-site-plus.patch new file mode 100644 index 00000000000..a1f5d8a08a2 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-com/openfoam-site-plus.patch @@ -0,0 +1,35 @@ +diff -uw OpenFOAM-plus.orig/etc/config.sh/settings OpenFOAM-plus/etc/config.sh/settings +--- OpenFOAM-plus.orig/etc/config.sh/settings 2017-04-04 17:34:29.875873400 +0200 ++++ OpenFOAM-plus/etc/config.sh/settings 2017-04-04 17:38:40.174992466 +0200 +@@ -154,10 +154,10 @@ + export FOAM_LIBBIN=$WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib + + # External (ThirdParty) libraries +-export FOAM_EXT_LIBBIN=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib ++unset FOAM_EXT_LIBBIN #SPACK: none + + # Site-specific directory +-siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_INST_DIR/site}" ++siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_DIR/site}" #SPACK: not in parent directory + + # Shared site executables/libraries + # Similar naming convention as ~OpenFOAM expansion +diff -uw OpenFOAM-plus.orig/etc/config.csh/settings OpenFOAM-plus/etc/config.csh/settings +--- OpenFOAM-plus.orig/etc/config.csh/settings 2017-04-04 17:34:28.255879107 +0200 ++++ OpenFOAM-plus/etc/config.csh/settings 2017-04-04 17:39:22.214844670 +0200 +@@ -151,13 +151,13 @@ + setenv FOAM_LIBBIN $WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib + + # External (ThirdParty) libraries +-setenv FOAM_EXT_LIBBIN $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib ++unsetenv FOAM_EXT_LIBBIN #SPACK: none + + # Site-specific directory + if ( $?WM_PROJECT_SITE ) then + set siteDir=$WM_PROJECT_SITE + else +- set siteDir=$WM_PROJECT_INST_DIR/site ++ set siteDir=$WM_PROJECT_DIR/site #SPACK: not in parent directory + endif + + # Shared site executables/libraries diff --git a/var/spack/repos/builtin/packages/openfoam-com/package.py b/var/spack/repos/builtin/packages/openfoam-com/package.py index 15c4f8fdd40..c6dd6dbe9ad 100644 --- a/var/spack/repos/builtin/packages/openfoam-com/package.py +++ b/var/spack/repos/builtin/packages/openfoam-com/package.py @@ -50,38 +50,74 @@ # variants: +plugins +qt # in ~/.spack/packages.yaml # +# Known issues # - Combining +zoltan with +int64 has not been tested, but probably won't work. +# - Combining +mgridgen with +int64 or +float32 probably won't work. # ############################################################################## from spack import * from spack.environment import * +import llnl.util.tty as tty import glob import re import shutil import os -from os.path import isdir, isfile # Not the nice way of doing things, but is a start for refactoring __all__ = [ - 'format_export', - 'format_setenv', + 'add_extra_files', 'write_environ', 'rewrite_environ_files', 'mplib_content', - 'generate_mplib_rules', - 'generate_compiler_rules', + 'foamAddPath', + 'foamAddLib', + 'OpenfoamArch', ] +def add_extra_files(foam_pkg, common, local, **kwargs): + """Copy additional common and local files into the stage.source_path + from the openfoam-com/common and the package/assets directories, + respectively + """ + outdir = foam_pkg.stage.source_path + + indir = join_path(os.path.dirname(__file__), 'common') + for f in common: + tty.info('Added file {0}'.format(f)) + install(join_path(indir, f), join_path(outdir, f)) + + indir = join_path(foam_pkg.package_dir, 'assets') + for f in local: + tty.info('Added file {0}'.format(f)) + install(join_path(indir, f), join_path(outdir, f)) + + def format_export(key, value): - """Format key,value pair as 'export' with newline for POSIX shell.""" - return 'export {0}={1}\n'.format(key, value) + """Format key,value pair as 'export' with newline for POSIX shell. + A leading '#' for key adds a comment character to the entire line. + A value of 'None' corresponds to 'unset'. + """ + if key.startswith('#'): + return '## export {0}={1}\n'.format(re.sub(r'^#+\s*', '', key), value) + elif value is None: + return 'unset {0}\n'.format(key) + else: + return 'export {0}={1}\n'.format(key, value) def format_setenv(key, value): - """Format key,value pair as 'setenv' with newline for C-shell.""" - return 'setenv {0} {1}\n'.format(key, value) + """Format key,value pair as 'setenv' with newline for C-shell. + A leading '#' for key adds a comment character to the entire line. + A value of 'None' corresponds to 'unsetenv'. + """ + if key.startswith('#'): + return '## setenv {0} {1}\n'.format(re.sub(r'^#+\s*', '', key), value) + elif value is None: + return 'unsetenv {0}\n'.format(key) + else: + return 'setenv {0} {1}\n'.format(key, value) def _write_environ_entries(outfile, environ, formatter): @@ -139,7 +175,7 @@ def rewrite_environ_files(environ, **kwargs): cshell[=None] If set, the name of the C-shell file to rewrite. """ posix = kwargs.get('posix', None) - if posix and isfile(posix): + if posix and os.path.isfile(posix): for k, v in environ.items(): filter_file( r'^(\s*export\s+%s)=.*$' % k, @@ -147,7 +183,7 @@ def rewrite_environ_files(environ, **kwargs): posix, backup=False) cshell = kwargs.get('cshell', None) - if cshell and isfile(cshell): + if cshell and os.path.isfile(cshell): for k, v in environ.items(): filter_file( r'^(\s*setenv\s+%s)\s+.*$' % k, @@ -156,19 +192,35 @@ def rewrite_environ_files(environ, **kwargs): backup=False) -def pkglib(package): - """Get lib64 or lib from package prefix""" +def foamAddPath(*args): + """A string with args prepended to 'PATH'""" + return '"' + ':'.join(args) + ':${PATH}"' + + +def foamAddLib(*args): + """A string with args prepended to 'LD_LIBRARY_PATH'""" + return '"' + ':'.join(args) + ':${LD_LIBRARY_PATH}"' + + +def pkglib(package, pre=None): + """Get lib64 or lib from package prefix. + + Optional parameter 'pre' to provide alternative prefix + """ libdir = package.prefix.lib64 - if isdir(libdir): + if not os.path.isdir(libdir): + libdir = package.prefix.lib + if pre: + return join_path(pre, os.path.basename(libdir)) + else: return libdir - return package.prefix.lib def mplib_content(spec, pre=None): """The mpi settings to have wmake use spack information with minimum modifications to OpenFOAM. - Optional parameter 'pre' to provid alternative prefix + Optional parameter 'pre' to provide alternative prefix """ mpi_spec = spec['mpi'] bin = mpi_spec.prefix.bin @@ -194,36 +246,7 @@ def mplib_content(spec, pre=None): return info -def generate_mplib_rules(directory, spec): - """ Create mplibUSER,mplibUSERMPI rules in the specified directory""" - content = mplib_content(spec) - with working_dir(directory): - for mplib in ['mplibUSER', 'mplibUSERMPI']: - with open(mplib, 'w') as out: - out.write("""# Use mpi from spack ({name})\n -PFLAGS = {FLAGS} -PINC = {PINC} -PLIBS = {PLIBS} -""".format(**content)) - - -def generate_compiler_rules(directory, compOpt, value): - """ Create cSPACKOpt,c++SPACKOpt rules in the specified directory. - The file content is copied and filtered from the corresponding - cOpt,c++Opt rules""" - # Compiler options for SPACK - eg, wmake/rules/linux64Gcc/ - # Copy from existing cOpt, c++Opt and modify DBUG value - with working_dir(directory): - for lang in ['c', 'c++']: - src = '{0}Opt'.format(lang) - dst = '{0}{1}'.format(lang, compOpt) - shutil.copyfile(src, dst) # src -> dst - filter_file( - r'^(\S+DBUG\s*)=.*$', - r'\1= %s' % value, - dst, - backup=False) - +# ----------------------------------------------------------------------------- class OpenfoamCom(Package): """OpenFOAM is a GPL-opensource C++ CFD-toolbox. @@ -239,31 +262,28 @@ class OpenfoamCom(Package): version('1612', 'ca02c491369150ab127cbb88ec60fbdf', url=baseurl + '/v1612+/OpenFOAM-v1612+.tgz') + version('plus', branch='develop', # Note: needs user credentials + git='https://develop.openfoam.com/Development/OpenFOAM-plus.git') variant('int64', default=False, - description='Compile with 64-bit labels') + description='Compile with 64-bit label') variant('float32', default=False, description='Compile with 32-bit scalar (single-precision)') variant('knl', default=False, description='Use KNL compiler settings') - variant('scotch', default=True, description='With scotch/ptscotch for decomposition') variant('metis', default=False, description='With metis for decomposition') variant('zoltan', default=False, description='With zoltan renumbering') - # TODO?# variant('parmgridgen', default=True, - # TODO?# description='With parmgridgen support') - variant('source', default=True, - description='Install library/application sources and tutorials') - + # TODO?# variant('scalasca', default=False, + # TODO?# description='With scalasca profiling') + variant('mgridgen', default=False, description='With mgridgen support') variant('paraview', default=True, description='Build paraview plugins and runtime post-processing') - - #: Map spack compiler names to OpenFOAM compiler names - # By default, simply capitalize the first letter - compiler_mapping = {'intel': 'icc'} + variant('source', default=True, + description='Install library/application sources and tutorials') provides('openfoam') depends_on('mpi') @@ -275,12 +295,14 @@ class OpenfoamCom(Package): depends_on('cmake', type='build') # Require scotch with ptscotch - corresponds to standard OpenFOAM setup - depends_on('scotch~int64+mpi', when='+scotch~int64') - depends_on('scotch+int64+mpi', when='+scotch+int64') + depends_on('scotch~metis+mpi~int64', when='+scotch~int64') + depends_on('scotch~metis+mpi+int64', when='+scotch+int64') depends_on('metis@5:', when='+metis') depends_on('metis+int64', when='+metis+int64') - depends_on('parmgridgen', when='+parmgridgen') + # mgridgen is statically linked + depends_on('parmgridgen', when='+mgridgen', type='build') depends_on('zoltan', when='+zoltan') + # TODO?# depends_on('scalasca', when='+scalasca') # For OpenFOAM plugins and run-time post-processing this should just be # 'paraview+plugins' but that resolves poorly. @@ -289,36 +311,36 @@ class OpenfoamCom(Package): # 1612 plugins need older paraview # The native reader in paraview 5.2 is broken, so start after that - depends_on('paraview@:5.0.1', when='@:1612+paraview') + depends_on('paraview@:5.0.1', when='@1612+paraview') depends_on('paraview@5.3:', when='@1706:+paraview') + depends_on('paraview@5.3:', when='@plus+paraview') # General patches - patch('openfoam-site.patch') + common = ['spack-Allwmake', 'README-spack'] + assets = [] # Version-specific patches patch('openfoam-bin-1612.patch', when='@1612') patch('openfoam-etc-1612.patch', when='@1612') + patch('openfoam-site-1612.patch', when='@1612') patch('openfoam-mpi-1612.patch', when='@1612') patch('openfoam-build-1612.patch', when='@1612') + patch('mgridgen-lib-1612.patch', when='@1612') patch('scotch-metis-lib-1612.patch', when='@1612') patch('zoltan-lib-1612.patch', when='@1612') - # Some user settings, to be adjusted manually or via variants - foam_cfg = { - 'WM_COMPILER': 'Gcc', # <- %compiler - 'WM_ARCH_OPTION': '64', # (32/64-bit on x86_64) - 'WM_LABEL_SIZE': '32', # <- +int64 - 'WM_PRECISION_OPTION': 'DP', # <- +float32 - 'WM_COMPILE_OPTION': 'SPACKOpt', # Do not change - 'WM_MPLIB': 'USERMPI', # Use user mpi for spack + patch('openfoam-site-plus.patch', when='@plus') + + # Some user config settings + # default: 'compile-option': 'RpathOpt', + # default: 'mplib': 'USERMPI', # Use user mpi for spack + config = { + # Add links into bin/, lib/ (eg, for other applications) + 'link': False } - # The system description is frequently needed - foam_sys = { - 'WM_ARCH': None, - 'WM_COMPILER': None, - 'WM_OPTIONS': None, - } + # The openfoam architecture, compiler information etc + _foam_arch = None # Content for etc/prefs.{csh,sh} etc_prefs = {} @@ -326,23 +348,27 @@ class OpenfoamCom(Package): # Content for etc/config.{csh,sh}/ files etc_config = {} - build_script = './spack-Allwmake' # <- Generated by patch() method. - # phases = ['configure', 'build', 'install'] - # build_system_class = 'OpenfoamCom' + phases = ['configure', 'build', 'install'] + build_script = './spack-Allwmake' # <- Added by patch() method. - # Add symlinks into bin/, lib/ (eg, for other applications) - extra_symlinks = False - - # Quickly enable/disable testing with the current develop branch - if False: - version( - 'plus', - branch='develop', - git='file://{0}/{1}' - .format(os.path.expanduser("~"), 'openfoam/OpenFOAM-plus/.git')) + # + # - End of definitions / setup - + # def setup_environment(self, spack_env, run_env): + run_env.set('FOAM_PROJECT_DIR', self.projectdir) run_env.set('WM_PROJECT_DIR', self.projectdir) + for d in ['wmake', self.archbin]: # bin already added automatically + run_env.prepend_path('PATH', join_path(self.projectdir, d)) + run_env.set('MPI_BUFFER_SIZE', "20000000") + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + """Provide location of the OpenFOAM project. + This is identical to the WM_PROJECT_DIR value, but we avoid that + variable since it would mask the normal OpenFOAM cleanup of + previous versions. + """ + spack_env.set('FOAM_PROJECT_DIR', self.projectdir) @property def projectdir(self): @@ -350,195 +376,50 @@ def projectdir(self): return self.prefix # <- install directly under prefix @property - def etc(self): - """Absolute location of the OpenFOAM etc/ directory""" - return join_path(self.projectdir, 'etc') + def foam_arch(self): + if not self._foam_arch: + self._foam_arch = OpenfoamArch(self.spec, **self.config) + return self._foam_arch @property def archbin(self): """Relative location of architecture-specific executables""" - return join_path('platforms', self.wm_options, 'bin') + return join_path('platforms', self.foam_arch, 'bin') @property def archlib(self): """Relative location of architecture-specific libraries""" - return join_path('platforms', self.wm_options, 'lib') - - @property - def wm_options(self): - """The architecture+compiler+options for OpenFOAM""" - opts = self.set_openfoam() - return opts - - @property - def rpath_info(self): - """Define 'SPACKOpt' compiler optimization file to have wmake - use spack information with minimum modifications to OpenFOAM - """ - build_libpath = join_path(self.stage.source_path, self.archlib) - install_libpath = join_path(self.projectdir, self.archlib) - - # 'DBUG': rpaths - return '{0}{1} {2}{3}'.format( - self.compiler.cxx_rpath_arg, install_libpath, - self.compiler.cxx_rpath_arg, build_libpath) - - def openfoam_arch(self): - """Return an architecture value similar to what OpenFOAM does in - etc/config.sh/settings, but slightly more generous. - Uses and may adjust foam_cfg[WM_ARCH_OPTION] as a side-effect - """ - # spec.architecture.platform is like `uname -s`, but lower-case - platform = self.spec.architecture.platform - - # spec.architecture.target is like `uname -m` - target = self.spec.architecture.target - - if platform == 'linux': - if target == 'i686': - self.foam_cfg['WM_ARCH_OPTION'] = '32' # Force consistency - elif target == 'x86_64': - if self.foam_cfg['WM_ARCH_OPTION'] == '64': - platform += '64' - elif target == 'ia64': - platform += 'ia64' - elif target == 'armv7l': - platform += 'ARM7' - elif target == ppc64: - platform += 'PPC64' - elif target == ppc64le: - platform += 'PPC64le' - elif platform == 'darwin': - if target == 'x86_64': - platform += 'Intel' - if self.foam_cfg['WM_ARCH_OPTION'] == '64': - platform += '64' - # ... and others? - return platform - - def openfoam_compiler(self): - """Capitalized version of the compiler name, which usually corresponds - to how OpenFOAM will camel-case things. - Use compiler_mapping to handing special cases. - Also handle special compiler options (eg, KNL) - """ - comp = self.compiler.name - if comp in self.compiler_mapping: - comp = self.compiler_mapping[comp] - comp = comp.capitalize() - - if '+knl' in self.spec: - comp += 'KNL' - return comp - - def set_openfoam(self): - """Populate foam_cfg, foam_sys according to - variants, architecture, compiler. - Returns WM_OPTIONS. - """ - # Run once - opts = self.foam_sys['WM_OPTIONS'] - if opts: - return opts - - wm_arch = self.openfoam_arch() - wm_compiler = self.openfoam_compiler() - compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] - - # Insist on a wmake rule for this architecture/compiler combination - archCompiler = wm_arch + wm_compiler - compiler_rule = join_path( - self.stage.source_path, 'wmake', 'rules', archCompiler) - - if not isdir(compiler_rule): - raise RuntimeError( - 'No wmake rule for {0}'.format(archCompiler)) - if not re.match(r'.+Opt$', compileOpt): - raise RuntimeError( - "WM_COMPILE_OPTION={0} is not type '*Opt'".format(compileOpt)) - - # Adjust for variants - self.foam_cfg['WM_LABEL_SIZE'] = ( - '64' if '+int64' in self.spec else '32' - ) - self.foam_cfg['WM_PRECISION_OPTION'] = ( - 'SP' if '+float32' in self.spec else 'DP' - ) - - # ---- - # WM_LABEL_OPTION=Int$WM_LABEL_SIZE - # WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION$WM_COMPILE_OPTION - # ---- - self.foam_sys['WM_ARCH'] = wm_arch - self.foam_sys['WM_COMPILER'] = wm_compiler - self.foam_cfg['WM_COMPILER'] = wm_compiler # For bashrc,cshrc too - self.foam_sys['WM_OPTIONS'] = ''.join([ - wm_arch, - wm_compiler, - self.foam_cfg['WM_PRECISION_OPTION'], - 'Int', self.foam_cfg['WM_LABEL_SIZE'], # Int32/Int64 - compileOpt - ]) - return self.foam_sys['WM_OPTIONS'] + return join_path('platforms', self.foam_arch, 'lib') def patch(self): - """Adjust OpenFOAM build for spack. Where needed, apply filter as an - alternative to normal patching. - """ - self.set_openfoam() # May need foam_cfg/foam_sys information + """Adjust OpenFOAM build for spack. + Where needed, apply filter as an alternative to normal patching.""" + add_extra_files(self, self.common, self.assets) # Avoid WM_PROJECT_INST_DIR for ThirdParty, site or jobControl. # Use openfoam-site.patch to handle jobControl, site. # - # Filter (not patch) bashrc,cshrc for additional flexibility - wm_setting = { + # Filtering: bashrc,cshrc (using a patch is less flexible) + edits = { 'WM_THIRD_PARTY_DIR': r'$WM_PROJECT_DIR/ThirdParty #SPACK: No separate third-party', } - rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc - wm_setting, + edits, posix=join_path('etc', 'bashrc'), cshell=join_path('etc', 'cshrc')) - # Adjust ParMGridGen - this is still a mess. - # We also have no assurances about sizes (int/long, float/double) etc. - # - # Need to adjust src/fvAgglomerationMethods/Allwmake - # "export ParMGridGen=%s" % spec['parmgridgen'].prefix - # - # and src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options - # "-I=%s" % spec['parmgridgen'].include - # "-L=%s -lmgrid" % spec['parmgridgen'].lib - - # Build wrapper script - with open(self.build_script, 'w') as out: - out.write( - """#!/bin/bash -. $PWD/etc/bashrc '' # No arguments -mkdir -p $FOAM_APPBIN $FOAM_LIBBIN 2>/dev/null # Allow interrupt -echo Build openfoam with SPACK -echo WM_PROJECT_DIR = $WM_PROJECT_DIR -./Allwmake $@ -# -""") - set_executable(self.build_script) - self.configure(self.spec, self.prefix) # Should be a separate phase - def configure(self, spec, prefix): """Make adjustments to the OpenFOAM configuration files in their various locations: etc/bashrc, etc/config.sh/FEATURE and customizations that don't properly fit get placed in the etc/prefs.sh file (similiarly for csh). """ - self.set_openfoam() # Need foam_cfg/foam_sys information - - # Some settings for filtering bashrc, cshrc - wm_setting = {} - wm_setting.update(self.foam_cfg) - + # Filtering bashrc, cshrc + edits = {} + edits.update(self.foam_arch.foam_dict()) rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc - wm_setting, + edits, posix=join_path('etc', 'bashrc'), cshell=join_path('etc', 'cshrc')) @@ -551,27 +432,34 @@ def configure(self, spec, prefix): } # MPI content, using MPI_ARCH_PATH - content = mplib_content(spec, '${MPI_ARCH_PATH}') + user_mpi = mplib_content(spec, '${MPI_ARCH_PATH}') # Content for etc/config.{csh,sh}/ files self.etc_config = { - 'CGAL': { - 'BOOST_ARCH_PATH': spec['boost'].prefix, - 'CGAL_ARCH_PATH': spec['cgal'].prefix, - }, - 'FFTW': { - 'FFTW_ARCH_PATH': spec['fftw'].prefix, - }, + 'CGAL': [ + ('BOOST_ARCH_PATH', spec['boost'].prefix), + ('CGAL_ARCH_PATH', spec['cgal'].prefix), + ('LD_LIBRARY_PATH', + foamAddLib( + pkglib(spec['boost'], '${BOOST_ARCH_PATH}'), + pkglib(spec['cgal'], '${CGAL_ARCH_PATH}'))), + ], + 'FFTW': [ + ('FFTW_ARCH_PATH', spec['fftw'].prefix), # Absolute + ('LD_LIBRARY_PATH', + foamAddLib( + pkglib(spec['fftw'], '${BOOST_ARCH_PATH}'))), + ], # User-defined MPI 'mpi-user': [ ('MPI_ARCH_PATH', spec['mpi'].prefix), # Absolute - ('LD_LIBRARY_PATH', - '"%s:${LD_LIBRARY_PATH}"' % content['libdir']), - ('PATH', '"%s:${PATH}"' % content['bindir']), + ('LD_LIBRARY_PATH', foamAddLib(user_mpi['libdir'])), + ('PATH', foamAddPath(user_mpi['bindir'])), ], 'scotch': {}, 'metis': {}, 'paraview': [], + 'gperftools': [], # Currently unused } if '+scotch' in spec: @@ -590,15 +478,15 @@ def configure(self, spec, prefix): pvMajor = 'paraview-{0}'.format(spec['paraview'].version.up_to(2)) self.etc_config['paraview'] = [ ('ParaView_DIR', spec['paraview'].prefix), - ('ParaView_INCLUDE_DIR', '$ParaView_DIR/include/' + pvMajor), + ('ParaView_INCLUDE_DIR', '${ParaView_DIR}/include/' + pvMajor), ('PV_PLUGIN_PATH', '$FOAM_LIBBIN/' + pvMajor), - ('PATH', '"${ParaView_DIR}/bin:${PATH}"'), + ('PATH', foamAddPath('${ParaView_DIR}/bin')), ] - # Not normally included as etc/config file - if '+parmgridgen' in spec: - self.etc_config['parmgridgen'] = { - 'PARMGRIDGEN_ARCH_PATH': spec['parmgridgen'].prefix + # Optional + if '+mgridgen' in spec: + self.etc_config['mgridgen'] = { + 'MGRIDGEN_ARCH_PATH': spec['parmgridgen'].prefix } # Optional @@ -622,45 +510,30 @@ def configure(self, spec, prefix): posix=join_path('etc', 'config.sh', component), cshell=join_path('etc', 'config.csh', component)) - archCompiler = self.foam_sys['WM_ARCH'] + self.foam_sys['WM_COMPILER'] - compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] - general_rule = join_path('wmake', 'rules', 'General') - compiler_rule = join_path('wmake', 'rules', archCompiler) - generate_mplib_rules(general_rule, self.spec) - generate_compiler_rules(compiler_rule, compileOpt, self.rpath_info) - # Record the spack spec information - with open("log.spack-spec", 'w') as outfile: - outfile.write(spec.tree()) - def build(self, spec, prefix): """Build using the OpenFOAM Allwmake script, with a wrapper to source its environment first. + Only build if the compiler is known to be supported. """ - self.set_openfoam() # Force proper population of foam_cfg/foam_sys + self.foam_arch.has_rule(self.stage.source_path) + self.foam_arch.create_rules(self.stage.source_path, self) + args = ['-silent'] if self.parallel: # Build in parallel? - pass as an argument - args.append( - '-j{0}'.format(str(self.make_jobs) if self.make_jobs else '')) + args.append('-j{0}'.format(make_jobs)) builder = Executable(self.build_script) builder(*args) def install(self, spec, prefix): - """Install under the projectdir (== prefix)""" - self.build(spec, prefix) # Should be a separate phase - opts = self.wm_options - + """Install under the projectdir""" mkdirp(self.projectdir) projdir = os.path.basename(self.projectdir) - wm_setting = { + # Filtering: bashrc, cshrc + edits = { 'WM_PROJECT_INST_DIR': os.path.dirname(self.projectdir), 'WM_PROJECT_DIR': join_path('$WM_PROJECT_INST_DIR', projdir), } - # Retain build log file - out = "spack-build.out" - if isfile(out): - install(out, join_path(self.projectdir, "log." + opts)) - # All top-level files, except spack build info and possibly Allwmake if '+source' in spec: ignored = re.compile(r'^spack-.*') @@ -668,20 +541,23 @@ def install(self, spec, prefix): ignored = re.compile(r'^(Allwmake|spack-).*') files = [ - f for f in glob.glob("*") if isfile(f) and not ignored.search(f) + f for f in glob.glob("*") + if os.path.isfile(f) and not ignored.search(f) ] for f in files: install(f, self.projectdir) - # Having wmake without sources is actually somewhat pointless... - dirs = ['bin', 'etc', 'wmake'] + # Having wmake and ~source is actually somewhat pointless... + # Install 'etc' before 'bin' (for symlinks) + dirs = ['etc', 'bin', 'wmake'] if '+source' in spec: dirs.extend(['applications', 'src', 'tutorials']) for d in dirs: install_tree( d, - join_path(self.projectdir, d)) + join_path(self.projectdir, d), + symlinks=True) dirs = ['platforms'] if '+source' in spec: @@ -693,30 +569,229 @@ def install(self, spec, prefix): install_tree( d, join_path(self.projectdir, d), - ignore=shutil.ignore_patterns(*ignored)) + ignore=shutil.ignore_patterns(*ignored), + symlinks=True) + etc_dir = join_path(self.projectdir, 'etc') rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc - wm_setting, - posix=join_path(self.etc, 'bashrc'), - cshell=join_path(self.etc, 'cshrc')) + edits, + posix=join_path(etc_dir, 'bashrc'), + cshell=join_path(etc_dir, 'cshrc')) self.install_links() def install_links(self): """Add symlinks into bin/, lib/ (eg, for other applications)""" - if not self.extra_symlinks: + # Make build log visible - it contains OpenFOAM-specific information + with working_dir(self.projectdir): + os.symlink( + join_path('.spack', 'build.out'), + join_path('log.' + str(self.foam_arch))) + + if not self.config['link']: return # ln -s platforms/linux64GccXXX/lib lib with working_dir(self.projectdir): - if isdir(self.archlib): + if os.path.isdir(self.archlib): os.symlink(self.archlib, 'lib') # (cd bin && ln -s ../platforms/linux64GccXXX/bin/* .) with working_dir(join_path(self.projectdir, 'bin')): for f in [ f for f in glob.glob(join_path('..', self.archbin, "*")) - if isfile(f) + if os.path.isfile(f) ]: os.symlink(f, os.path.basename(f)) + def openfoam_run_environment(self, projdir): + # This seems to bomb out with an ImportError 'site'! + # mods = EnvironmentModifications.from_sourcing_files( + # join_path(projdir, 'etc/bashrc')) + pass + + +# ----------------------------------------------------------------------------- + +class OpenfoamArch(object): + """OpenfoamArch represents architecture/compiler settings for OpenFOAM. + The string representation is WM_OPTIONS. + + Keywords + label-size=[True] supports int32/int64 + compile-option[=RpathOpt] + mplib[=USERMPI] + """ + + #: Map spack compiler names to OpenFOAM compiler names + # By default, simply capitalize the first letter + compiler_mapping = {'intel': 'icc'} + + def __init__(self, spec, **kwargs): + # Some user settings, to be adjusted manually or via variants + self.compiler = None # <- %compiler + self.arch_option = '64' # (32/64-bit on x86_64) + self.label_size = None # <- +int64 + self.precision_option = 'DP' # <- +float32 + self.compile_option = kwargs.get('compile-option', 'RpathOpt') + self.arch = None + self.options = None + self.rule = None + self.mplib = kwargs.get('mplib', 'USERMPI') + + # Normally support WM_LABEL_OPTION, but not yet for foam-extend + if '+int64' in spec: + self.label_size = '64' + elif kwargs.get('label-size', True): + self.label_size = '32' + + if '+float32' in spec: + self.precision_option = 'SP' + + # spec.architecture.platform is like `uname -s`, but lower-case + platform = spec.architecture.platform + + # spec.architecture.target is like `uname -m` + target = spec.architecture.target + + if platform == 'linux': + if target == 'i686': + self.arch_option = '32' # Force consistency + elif target == 'x86_64': + if self.arch_option == '64': + platform += '64' + elif target == 'ia64': + platform += 'ia64' + elif target == 'armv7l': + platform += 'ARM7' + elif target == ppc64: + platform += 'PPC64' + elif target == ppc64le: + platform += 'PPC64le' + elif platform == 'darwin': + if target == 'x86_64': + platform += 'Intel' + if self.arch_option == '64': + platform += '64' + # ... and others? + + self.arch = platform + + # Capitalized version of the compiler name, which usually corresponds + # to how OpenFOAM will camel-case things. + # Use compiler_mapping to handing special cases. + # Also handle special compiler options (eg, KNL) + comp = spec.compiler.name + + if comp in self.compiler_mapping: + comp = self.compiler_mapping[comp] + comp = comp.capitalize() + + if '+knl' in spec: + comp += 'KNL' + self.compiler = comp + self.rule = self.arch + self.compiler + + # Build WM_OPTIONS + # ---- + # WM_LABEL_OPTION=Int$WM_LABEL_SIZE + # WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION$WM_COMPILE_OPTION + # or + # WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION + # ---- + self.options = ''.join([ + self.rule, + self.precision_option, + ('Int' + self.label_size if self.label_size else ''), + self.compile_option]) + + def __str__(self): + return self.options + + def __repr__(self): + return str(self) + + def foam_dict(self): + """Returns a dictionary for OpenFOAM prefs, bashrc, cshrc.""" + return dict([ + ('WM_COMPILER', self.compiler), + ('WM_ARCH_OPTION', self.arch_option), + ('WM_LABEL_SIZE', self.label_size), + ('WM_PRECISION_OPTION', self.precision_option), + ('WM_COMPILE_OPTION', self.compile_option), + ('WM_MPLIB', self.mplib), + ]) + + def _rule_directory(self, projdir=None, general=False): + """The wmake/rules/ compiler directory""" + if general: + relative = os.path.join('wmake', 'rules', 'General') + else: + relative = os.path.join('wmake', 'rules', self.rule) + if projdir: + return os.path.join(projdir, relative) + else: + return relative + + def has_rule(self, projdir): + """Verify that a wmake/rules/ compiler rule exists in the project + directory. + """ + # Insist on a wmake rule for this architecture/compiler combination + rule_dir = self._rule_directory(projdir) + + if not os.path.isdir(rule_dir): + raise InstallError( + 'No wmake rule for {0}'.format(self.rule)) + if not re.match(r'.+Opt$', self.compile_option): + raise InstallError( + "WM_COMPILE_OPTION={0} is not type '*Opt'" + .format(self.compile_option)) + return True + + def create_rules(self, projdir, foam_pkg): + """ Create cRpathOpt,c++RpathOpt and mplibUSER,mplibUSERMPI + rules in the specified project directory. + The compiler rules are based on the respective cOpt,c++Opt rules + but with additional rpath information for the OpenFOAM libraries. + + The rpath rules allow wmake to use spack information with minimal + modification to OpenFOAM. + The rpath is used for the installed libpath (continue to use + LD_LIBRARY_PATH for values during the build). + """ + # Note: the 'c' rules normally don't need rpath, since they are just + # used for statically linked wmake utilities, but left in anyhow. + + # rpath for installed OpenFOAM libraries + rpath = '{0}{1}'.format( + foam_pkg.compiler.cxx_rpath_arg, + join_path(foam_pkg.projectdir, foam_pkg.archlib)) + + user_mpi = mplib_content(foam_pkg.spec) + rule_dir = self._rule_directory(projdir) + + with working_dir(rule_dir): + # Compiler: copy existing cOpt,c++Opt and modify '*DBUG' value + for lang in ['c', 'c++']: + src = '{0}Opt'.format(lang) + dst = '{0}{1}'.format(lang, self.compile_option) + with open(src, 'r') as infile: + with open(dst, 'w') as outfile: + for line in infile: + line = line.rstrip() + outfile.write(line) + if re.match(r'^\S+DBUG\s*=', line): + outfile.write(' ') + outfile.write(rpath) + outfile.write('\n') + + # MPI rules + for mplib in ['mplibUSER', 'mplibUSERMPI']: + with open(mplib, 'w') as out: + out.write("""# Use mpi from spack ({name})\n +PFLAGS = {FLAGS} +PINC = {PINC} +PLIBS = {PLIBS} +""".format(**user_mpi)) + # ----------------------------------------------------------------------------- diff --git a/var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile b/var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile new file mode 100755 index 00000000000..294cc265054 --- /dev/null +++ b/var/spack/repos/builtin/packages/openfoam-org/assets/bin/foamEtcFile @@ -0,0 +1,417 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation +# \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. +#------------------------------------------------------------------------------- +# License +# This file is part of OpenFOAM. +# +# OpenFOAM is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenFOAM. If not, see . +# +# Script +# foamEtcFile +# +# Description +# Locate user/group/other files with semantics similar to the +# ~OpenFOAM/fileName expansion. +# +# The -mode option can be used to allow chaining from +# personal settings to site-wide settings. +# +# For example, within the user ~/.OpenFOAM//prefs.sh: +# \code +# eval $(foamEtcFile -sh -mode=go prefs.sh) +# \endcode +# +# Environment +# - WM_PROJECT: (unset defaults to OpenFOAM) +# - WM_PROJECT_SITE: (unset defaults to PREFIX/site) +# - WM_PROJECT_VERSION: (unset defaults to detect from path) +# +# Note +# This script must exist in one of these locations: +# - $WM_PROJECT_INST_DIR/OpenFOAM-/bin +# - $WM_PROJECT_INST_DIR/openfoam-/bin +# - $WM_PROJECT_INST_DIR/OpenFOAM+/bin +# - $WM_PROJECT_INST_DIR/openfoam+/bin +# - $WM_PROJECT_INST_DIR/openfoam/bin (debian version) +# +#------------------------------------------------------------------------------- +unset optQuiet optSilent +usage() { + [ "${optQuiet:-$optSilent}" = true ] && exit 1 + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat<&2 + echo + echo "Error encountered:" + while [ "$#" -ge 1 ]; do echo " $1"; shift; done + echo + echo "See 'foamEtcFile -help' for usage" + echo + exit 1 +} + +#------------------------------------------------------------------------------- +binDir="${0%/*}" # The bin dir +projectDir="${binDir%/bin}" # The project dir +prefixDir="${projectDir%/*}" # The prefix dir (same as $WM_PROJECT_INST_DIR) + +# Could not resolve projectDir, prefixDir? (eg, called as ./bin/foamEtcFile) +if [ "$prefixDir" = "$projectDir" ] +then + binDir="$(cd $binDir && pwd -L)" + projectDir="${binDir%/bin}" + prefixDir="${projectDir%/*}" +fi +projectDirName="${projectDir##*/}" # The project directory name + +projectVersion="$WM_PROJECT_VERSION" # Empty? - will be treated later +userDir="$HOME/.OpenFOAM" # Hard-coded as per foamVersion.H + +#------------------------------------------------------------------------------- + +# Guess project version or simply get the stem part of the projectDirName. +# Handle standard and debian naming conventions. +# +# - projectVersion: update unless already set +# +# Helper variables: +# - dirBase (for reassembling name) == projectDirName without the version +# - versionNum (debian packaging) +unset dirBase versionNum +guessVersion() +{ + local version + + case "$projectDirName" in + (OpenFOAM-* | openfoam-*) + # Standard naming: OpenFOAM- or openfoam- + dirBase="${projectDirName%%-*}-" + version="${projectDirName#*-}" + version="${version%%*-}" # Extra safety, eg openfoam-version-packager + ;; + + (OpenFOAM+* | openfoam+*) + # Alternative naming: OpenFOAM+ or openfoam+ + dirBase="${projectDirName%%+*}+" + version="${projectDirName#*+}" + version="${version%%*-}" # Extra safety, eg openfoam-version-packager + ;; + + (openfoam[0-9]*) + # Debian naming: openfoam + dirBase="openfoam" + version="${projectDirName#openfoam}" + versionNum="$version" + + # Convert digits version number to decimal delineated + case "${#versionNum}" in (2|3|4) + version=$(echo "$versionNum" | sed -e 's@\([0-9]\)@\1.@g') + version="${version%.}" + ;; + esac + + # Ignore special treatment if no decimals were inserted. + [ "${#version}" -gt "${#versionNum}" ] || unset versionNum + ;; + + (*) + die "unknown/unsupported naming convention for '$projectDirName'" + ;; + esac + + # Set projectVersion if required + : ${projectVersion:=$version} +} + + +# Set projectVersion and update versionNum, projectDirName accordingly +setVersion() +{ + projectVersion="$1" + + # Need dirBase when reassembling projectDirName + [ -n "$dirBase" ] || guessVersion + + # Debian: update x.y.z -> xyz version + if [ -n "$versionNum" ] + then + versionNum=$(echo "$projectVersion" | sed -e 's@\.@@g') + fi + + projectDirName="$dirBase${versionNum:-$projectVersion}" +} + + +optMode=ugo # Default mode is always 'ugo' +unset optAll optList optShell optVersion + +# Parse options +while [ "$#" -gt 0 ] +do + case "$1" in + -h | -help) + usage + ;; + -a | -all) + optAll=true + unset optShell + ;; + -l | -list) + optList=true + unset optShell + ;; + -list-test) + optList='test' + unset optShell + ;; + -csh | -sh | -csh-verbose | -sh-verbose) + optShell="${1#-}" + unset optAll + ;; + -mode=[ugo]*) + optMode="${1#*=}" + ;; + -prefix=/*) + prefixDir="${1#*=}" + prefixDir="${prefixDir%/}" + ;; + -version=*) + optVersion="${1#*=}" + ;; + -m | -mode) + optMode="$2" + shift + # Sanity check. Handles missing argument too. + case "$optMode" in + ([ugo]*) + ;; + (*) + die "invalid mode '$optMode'" + ;; + esac + ;; + -p | -prefix) + [ "$#" -ge 2 ] || die "'$1' option requires an argument" + prefixDir="${2%/}" + shift + ;; + -q | -quiet) + optQuiet=true + ;; + -s | -silent) + optSilent=true + ;; + -v | -version) + [ "$#" -ge 2 ] || die "'$1' option requires an argument" + optVersion="$2" + shift + ;; + --) + shift + break + ;; + -*) + die "unknown option: '$1'" + ;; + *) + break + ;; + esac + shift +done + + +#------------------------------------------------------------------------------- + +if [ -n "$optVersion" ] +then + setVersion $optVersion +elif [ -z "$projectVersion" ] +then + guessVersion +fi + +# Updates: +# - projectDir for changes via -prefix or -version +# - groupDir for changes via -prefix +projectDir="$prefixDir/$projectDirName" +groupDir="${WM_PROJECT_SITE:-$prefixDir/site}" + + +# Debugging: +# echo "Installed locations:" 1>&2 +# for i in projectDir prefixDir projectDirName projectVersion +# do +# eval echo "$i=\$$i" 1>&2 +# done + + +# Save the essential bits of information +# silently remove leading ~OpenFOAM/ (used in Foam::findEtcFile) +nArgs=$# +fileName="${1#~OpenFOAM/}" + +# Define the various places to be searched: +unset dirList +case "$optMode" in (*u*) # (U)ser + dirList="$dirList $userDir/$projectVersion $userDir" + ;; +esac + +case "$optMode" in (*g*) # (G)roup == site + dirList="$dirList $groupDir/$projectVersion $groupDir" + ;; +esac + +case "$optMode" in (*o*) # (O)ther == shipped + dirList="$dirList $projectDir/etc" + ;; +esac +set -- $dirList + + +# +# The main routine +# + +exitCode=0 +if [ -n "$optList" ] +then + + # List directories, or potential file locations + [ "$nArgs" -le 1 ] || \ + die "-list expects 0 or 1 filename, but $nArgs provided" + + # A silly combination, but -quiet does have precedence + [ -n "$optQuiet" ] && exit 0 + + # Test for directory or file too? + if [ "$optList" = "test" ] + then + exitCode=2 # Fallback to a general error (file not found) + + if [ "$nArgs" -eq 1 ] + then + for dir + do + resolved="$dir/$fileName" + if [ -f "$resolved" ] + then + echo "$resolved" + exitCode=0 # OK + fi + done + else + for dir + do + if [ -d "$dir" ] + then + echo "$dir" + exitCode=0 # OK + fi + done + fi + else + for dir + do + echo "$dir${fileName:+/}$fileName" + done + fi + +else + + [ "$nArgs" -eq 1 ] || die "One filename expected - $nArgs provided" + + exitCode=2 # Fallback to a general error (file not found) + + for dir + do + if [ -f "$dir/$fileName" ] + then + exitCode=0 + [ -n "$optQuiet" ] && break + + case "$optShell" in + (*verbose) + echo "Using: $dir/$fileName" 1>&2 + ;; + esac + + case "$optShell" in + csh*) + echo "source $dir/$fileName" + break + ;; + sh*) + echo ". $dir/$fileName" + break + ;; + *) + echo "$dir/$fileName" + [ -n "$optAll" ] || break + ;; + esac + fi + done + +fi + +exit $exitCode + +#------------------------------------------------------------------------------ diff --git a/var/spack/repos/builtin/packages/openfoam-org/openfoam-site.patch b/var/spack/repos/builtin/packages/openfoam-org/openfoam-site-41.patch similarity index 86% rename from var/spack/repos/builtin/packages/openfoam-org/openfoam-site.patch rename to var/spack/repos/builtin/packages/openfoam-org/openfoam-site-41.patch index 66310257885..d988c2f9b85 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/openfoam-site.patch +++ b/var/spack/repos/builtin/packages/openfoam-org/openfoam-site-41.patch @@ -6,7 +6,7 @@ diff -uw OpenFOAM-v1612+.orig/etc/config.sh/settings OpenFOAM-v1612+/etc/config. # Location of the jobControl directory -export FOAM_JOB_DIR=$WM_PROJECT_INST_DIR/jobControl -+export FOAM_JOB_DIR=$HOME/$WM_PROJECT/jobControl #SPACK: non-central location ++export FOAM_JOB_DIR=$HOME/.OpenFOAM/jobControl #SPACK: non-central location # wmake configuration export WM_DIR=$WM_PROJECT_DIR/wmake @@ -15,7 +15,7 @@ diff -uw OpenFOAM-v1612+.orig/etc/config.sh/settings OpenFOAM-v1612+/etc/config. # Site-specific directory -siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_INST_DIR/site}" -+siteDir="${WM_PROJECT_SITE:-$WM_PROJECT/site}" #SPACK: not in parent directory ++siteDir="${WM_PROJECT_SITE:-$WM_PROJECT_DIR/site}" #SPACK: not in parent directory # Shared site executables/libraries # Similar naming convention as ~OpenFOAM expansion @@ -27,7 +27,7 @@ diff -uw OpenFOAM-v1612+.orig/etc/config.csh/settings OpenFOAM-v1612+/etc/config # Location of the jobControl directory -setenv FOAM_JOB_DIR $WM_PROJECT_INST_DIR/jobControl -+setenv FOAM_JOB_DIR=$HOME/$WM_PROJECT/jobControl #SPACK: non-central location ++setenv FOAM_JOB_DIR=$HOME/.OpenFOAM/jobControl #SPACK: non-central location # wmake configuration setenv WM_DIR $WM_PROJECT_DIR/wmake diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py index 53be5f63378..02c27a0db5b 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/package.py +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -44,22 +44,23 @@ # entirely clear and thus untested. # - Resolution of flex, zlib needs more attention (within OpenFOAM) # -# - mpi handling: WM_MPLIB=SYSTEMMPI and use spack to populate the prefs.sh -# for it. -# Also provide wmake rules for special purpose 'USER' and 'USERMPI' +# - mpi handling: WM_MPLIB=SYSTEMMPI and use spack to populate prefs.sh for it. +# Provide wmake rules for special purpose 'USER' and 'USERMPI' # mpi implementations, in case these are required. # +# Known issues +# - Combining +zoltan with +int64 has not been tested, but probably won't work. +# - Combining +mgridgen with +int64 or +float32 probably won't work. +# ############################################################################## from spack import * from spack.environment import * import llnl.util.tty as tty -import multiprocessing import glob import re import shutil import os -from os.path import isdir, isfile from spack.pkg.builtin.openfoam_com import * @@ -78,19 +79,15 @@ class OpenfoamOrg(Package): version('4.1', '318a446c4ae6366c7296b61184acd37c', url=baseurl + '/OpenFOAM-4.x/archive/version-4.1.tar.gz') + version('dev', git='https://github.com/OpenFOAM/OpenFOAM-dev.git') variant('int64', default=False, - description='Compile with 64-bit labels') + description='Compile with 64-bit label') variant('float32', default=False, description='Compile with 32-bit scalar (single-precision)') - variant('source', default=True, description='Install library/application sources and tutorials') - #: Map spack compiler names to OpenFOAM compiler names - # By default, simply capitalize the first letter - compiler_mapping = {'intel': 'icc'} - provides('openfoam') depends_on('mpi') depends_on('zlib') @@ -98,31 +95,26 @@ class OpenfoamOrg(Package): depends_on('cmake', type='build') # Require scotch with ptscotch - corresponds to standard OpenFOAM setup - depends_on('scotch~int64+mpi', when='~int64') - depends_on('scotch+int64+mpi', when='+int64') + depends_on('scotch~metis+mpi~int64', when='~int64') + depends_on('scotch~metis+mpi+int64', when='+int64') - # General patches - patch('openfoam-site.patch') + # General patches - foamEtcFile as per openfoam.com (robuster) + common = ['spack-Allwmake', 'README-spack'] + assets = ['bin/foamEtcFile'] # Version-specific patches - patch('openfoam-etc-41.patch') + patch('openfoam-etc-41.patch', when='@4.1') + patch('openfoam-site-41.patch', when='@4.1') - # Some user settings, to be adjusted manually or via variants - foam_cfg = { - 'WM_COMPILER': 'Gcc', # <- %compiler - 'WM_ARCH_OPTION': '64', # (32/64-bit on x86_64) - 'WM_LABEL_SIZE': '32', # <- +int64 - 'WM_PRECISION_OPTION': 'DP', # <- +float32 - 'WM_COMPILE_OPTION': 'SPACKOpt', # Do not change - 'WM_MPLIB': 'SYSTEMMPI', # Use system mpi for spack + # Some user config settings + config = { + 'mplib': 'SYSTEMMPI', # Use system mpi for spack + # Add links into bin/, lib/ (eg, for other applications) + 'link': False } - # The system description is frequently needed - foam_sys = { - 'WM_ARCH': None, - 'WM_COMPILER': None, - 'WM_OPTIONS': None, - } + # The openfoam architecture, compiler information etc + _foam_arch = None # Content for etc/prefs.{csh,sh} etc_prefs = {} @@ -130,236 +122,111 @@ class OpenfoamOrg(Package): # Content for etc/config.{csh,sh}/ files etc_config = {} - build_script = './spack-Allwmake' # <- Generated by patch() method. - # phases = ['configure', 'build', 'install'] - # build_system_class = 'OpenfoamCom' + phases = ['configure', 'build', 'install'] + build_script = './spack-Allwmake' # <- Added by patch() method. - # Add symlinks into bin/, lib/ (eg, for other applications) - extra_symlinks = False + # + # - End of definitions / setup - + # def setup_environment(self, spack_env, run_env): + run_env.set('FOAM_PROJECT_DIR', self.projectdir) run_env.set('WM_PROJECT_DIR', self.projectdir) + for d in ['wmake', self.archbin]: # bin already added automatically + run_env.prepend_path('PATH', join_path(self.projectdir, d)) + run_env.set('MPI_BUFFER_SIZE', "20000000") - @property - def _canonical(self): - """Canonical name for this package and version""" - return 'OpenFOAM-{0}'.format(self.version) + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + """Provide location of the OpenFOAM project. + This is identical to the WM_PROJECT_DIR value, but we avoid that + variable since it would mask the normal OpenFOAM cleanup of + previous versions. + """ + spack_env.set('FOAM_PROJECT_DIR', self.projectdir) @property def projectdir(self): """Absolute location of project directory: WM_PROJECT_DIR/""" - return join_path(self.prefix, self._canonical) # <- prefix/canonical + return self.prefix # <- install directly under prefix @property - def etc(self): - """Absolute location of the OpenFOAM etc/ directory""" - return join_path(self.projectdir, 'etc') + def foam_arch(self): + if not self._foam_arch: + self._foam_arch = OpenfoamArch(self.spec, **self.config) + return self._foam_arch @property def archbin(self): """Relative location of architecture-specific executables""" - return join_path('platforms', self.wm_options, 'bin') + return join_path('platforms', self.foam_arch, 'bin') @property def archlib(self): """Relative location of architecture-specific libraries""" - return join_path('platforms', self.wm_options, 'lib') + return join_path('platforms', self.foam_arch, 'lib') - @property - def wm_options(self): - """The architecture+compiler+options for OpenFOAM""" - opts = self.set_openfoam() - return opts - - @property - def rpath_info(self): - """Define 'SPACKOpt' compiler optimization file to have wmake - use spack information with minimum modifications to OpenFOAM + def rename_source(self): + """This is fairly horrible. + The github tarfiles have weird names that do not correspond to the + canonical name. We need to rename these, but leave a symlink for + spack to work with. """ - build_libpath = join_path(self.stage.source_path, self.archlib) - install_libpath = join_path(self.projectdir, self.archlib) - - # 'DBUG': rpaths - return '{0}{1} {2}{3}'.format( - self.compiler.cxx_rpath_arg, install_libpath, - self.compiler.cxx_rpath_arg, build_libpath) - - def openfoam_arch(self): - """Return an architecture value similar to what OpenFOAM does in - etc/config.sh/settings, but slightly more generous. - Uses and may adjust foam_cfg[WM_ARCH_OPTION] as a side-effect - """ - # spec.architecture.platform is like `uname -s`, but lower-case - platform = self.spec.architecture.platform - - # spec.architecture.target is like `uname -m` - target = self.spec.architecture.target - - if platform == 'linux': - if target == 'i686': - self.foam_cfg['WM_ARCH_OPTION'] = '32' # Force consistency - elif target == 'x86_64': - if self.foam_cfg['WM_ARCH_OPTION'] == '64': - platform += '64' - elif target == 'ia64': - platform += 'ia64' - elif target == 'armv7l': - platform += 'ARM7' - elif target == ppc64: - platform += 'PPC64' - elif target == ppc64le: - platform += 'PPC64le' - elif platform == 'darwin': - if target == 'x86_64': - platform += 'Intel' - if self.foam_cfg['WM_ARCH_OPTION'] == '64': - platform += '64' - # ... and others? - return platform - - def openfoam_compiler(self): - """Capitalized version of the compiler name, which usually corresponds - to how OpenFOAM will camel-case things. - Use compiler_mapping to handing special cases. - Also handle special compiler options (eg, KNL) - """ - comp = self.compiler.name - if comp in self.compiler_mapping: - comp = self.compiler_mapping[comp] - comp = comp.capitalize() - - if '+knl' in self.spec: - comp += 'KNL' - return comp - - def set_openfoam(self): - """Populate foam_cfg, foam_sys according to - variants, architecture, compiler. - Returns WM_OPTIONS. - """ - # Run once - opts = self.foam_sys['WM_OPTIONS'] - if opts: - return opts - - wm_arch = self.openfoam_arch() - wm_compiler = self.openfoam_compiler() - compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] - - # Insist on a wmake rule for this architecture/compiler combination - archCompiler = wm_arch + wm_compiler - compiler_rule = join_path( - self.stage.source_path, 'wmake', 'rules', archCompiler) - - if not isdir(compiler_rule): - raise RuntimeError( - 'No wmake rule for {0}'.format(archCompiler)) - if not re.match(r'.+Opt$', compileOpt): - raise RuntimeError( - "WM_COMPILE_OPTION={0} is not type '*Opt'".format(compileOpt)) - - # Adjust for variants - self.foam_cfg['WM_LABEL_SIZE'] = ( - '64' if '+int64' in self.spec else '32' - ) - self.foam_cfg['WM_PRECISION_OPTION'] = ( - 'SP' if '+float32' in self.spec else 'DP' - ) - - # ---- - # WM_LABEL_OPTION=Int$WM_LABEL_SIZE - # WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION$WM_COMPILE_OPTION - # ---- - self.foam_sys['WM_ARCH'] = wm_arch - self.foam_sys['WM_COMPILER'] = wm_compiler - self.foam_cfg['WM_COMPILER'] = wm_compiler # For bashrc,cshrc too - self.foam_sys['WM_OPTIONS'] = ''.join([ - wm_arch, - wm_compiler, - self.foam_cfg['WM_PRECISION_OPTION'], - 'Int', self.foam_cfg['WM_LABEL_SIZE'], # Int32/Int64 - compileOpt - ]) - return self.foam_sys['WM_OPTIONS'] - - def patch(self): - """Adjust OpenFOAM build for spack. Where needed, apply filter as an - alternative to normal patching. - """ - self.set_openfoam() # May need foam_cfg/foam_sys information - - # This is fairly horrible. - # The github tarfiles have weird names that do not correspond to the - # canonical name. We need to rename these, but leave a symlink for - # spack to work with. - # - # Note that this particular OpenFOAM release requires absolute - # directories to build correctly! + # Note that this particular OpenFOAM requires absolute directories + # to build correctly! parent = os.path.dirname(self.stage.source_path) original = os.path.basename(self.stage.source_path) - target = self._canonical + target = 'OpenFOAM-{0}'.format(self.version) + # Could also grep through etc/bashrc for WM_PROJECT_VERSION with working_dir(parent): if original != target and not os.path.lexists(target): os.rename(original, target) os.symlink(target, original) tty.info('renamed {0} -> {1}'.format(original, target)) + def patch(self): + """Adjust OpenFOAM build for spack. + Where needed, apply filter as an alternative to normal patching.""" + self.rename_source() + add_extra_files(self, self.common, self.assets) + # Avoid WM_PROJECT_INST_DIR for ThirdParty, site or jobControl. # Use openfoam-site.patch to handle jobControl, site. # - # Filter (not patch) bashrc,cshrc for additional flexibility - wm_setting = { + # Filtering: bashrc,cshrc (using a patch is less flexible) + edits = { 'WM_THIRD_PARTY_DIR': r'$WM_PROJECT_DIR/ThirdParty #SPACK: No separate third-party', 'WM_VERSION': self.version, # consistency 'FOAMY_HEX_MESH': '', # This is horrible (unset variable?) } - rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc - wm_setting, + edits, posix=join_path('etc', 'bashrc'), cshell=join_path('etc', 'cshrc')) - # Build wrapper script - with open(self.build_script, 'w') as out: - out.write( - """#!/bin/bash -. $PWD/etc/bashrc '' # No arguments -mkdir -p $FOAM_APPBIN $FOAM_LIBBIN 2>/dev/null # Allow interrupt -echo Build openfoam with SPACK -echo WM_PROJECT_DIR = $WM_PROJECT_DIR -./Allwmake $@ -# -""") - set_executable(self.build_script) - self.configure(self.spec, self.prefix) # Should be a separate phase - def configure(self, spec, prefix): """Make adjustments to the OpenFOAM configuration files in their various locations: etc/bashrc, etc/config.sh/FEATURE and customizations that don't properly fit get placed in the etc/prefs.sh file (similiarly for csh). """ - self.set_openfoam() # Need foam_cfg/foam_sys information - - # Some settings for filtering bashrc, cshrc - wm_setting = {} - wm_setting.update(self.foam_cfg) - + # Filtering bashrc, cshrc + edits = {} + edits.update(self.foam_arch.foam_dict()) rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc - wm_setting, + edits, posix=join_path('etc', 'bashrc'), cshell=join_path('etc', 'cshrc')) # MPI content, with absolute paths - content = mplib_content(spec) + user_mpi = mplib_content(spec) # Content for etc/prefs.{csh,sh} self.etc_prefs = { r'MPI_ROOT': spec['mpi'].prefix, # Absolute - r'MPI_ARCH_FLAGS': '"%s"' % content['FLAGS'], - r'MPI_ARCH_INC': '"%s"' % content['PINC'], - r'MPI_ARCH_LIBS': '"%s"' % content['PLIBS'], + r'MPI_ARCH_FLAGS': '"%s"' % user_mpi['FLAGS'], + r'MPI_ARCH_INC': '"%s"' % user_mpi['PINC'], + r'MPI_ARCH_LIBS': '"%s"' % user_mpi['PLIBS'], } # Content for etc/config.{csh,sh}/ files @@ -368,6 +235,7 @@ def configure(self, spec, prefix): 'scotch': {}, 'metis': {}, 'paraview': [], + 'gperftools': [], # Currently unused } if True: @@ -392,45 +260,30 @@ def configure(self, spec, prefix): posix=join_path('etc', 'config.sh', component), cshell=join_path('etc', 'config.csh', component)) - archCompiler = self.foam_sys['WM_ARCH'] + self.foam_sys['WM_COMPILER'] - compileOpt = self.foam_cfg['WM_COMPILE_OPTION'] - general_rule = join_path('wmake', 'rules', 'General') - compiler_rule = join_path('wmake', 'rules', archCompiler) - generate_mplib_rules(general_rule, self.spec) - generate_compiler_rules(compiler_rule, compileOpt, self.rpath_info) - # Record the spack spec information - with open("log.spack-spec", 'w') as outfile: - outfile.write(spec.tree()) - def build(self, spec, prefix): """Build using the OpenFOAM Allwmake script, with a wrapper to source its environment first. + Only build if the compiler is known to be supported. """ - self.set_openfoam() # Force proper population of foam_cfg/foam_sys + self.foam_arch.has_rule(self.stage.source_path) + self.foam_arch.create_rules(self.stage.source_path, self) + args = [] if self.parallel: # Build in parallel? - pass via the environment - os.environ['WM_NCOMPPROCS'] = str(self.make_jobs) \ - if self.make_jobs else str(multiprocessing.cpu_count()) + os.environ['WM_NCOMPPROCS'] = str(make_jobs) builder = Executable(self.build_script) builder(*args) def install(self, spec, prefix): - """Install under the projectdir (== prefix/name-version)""" - self.build(spec, prefix) # Should be a separate phase - opts = self.wm_options - + """Install under the projectdir""" mkdirp(self.projectdir) projdir = os.path.basename(self.projectdir) - wm_setting = { + # Filtering: bashrc, cshrc + edits = { 'WM_PROJECT_INST_DIR': os.path.dirname(self.projectdir), 'WM_PROJECT_DIR': join_path('$WM_PROJECT_INST_DIR', projdir), } - # Retain build log file - out = "spack-build.out" - if isfile(out): - install(out, join_path(self.projectdir, "log." + opts)) - # All top-level files, except spack build info and possibly Allwmake if '+source' in spec: ignored = re.compile(r'^spack-.*') @@ -438,20 +291,23 @@ def install(self, spec, prefix): ignored = re.compile(r'^(Allwmake|spack-).*') files = [ - f for f in glob.glob("*") if isfile(f) and not ignored.search(f) + f for f in glob.glob("*") + if os.path.isfile(f) and not ignored.search(f) ] for f in files: install(f, self.projectdir) - # Having wmake without sources is actually somewhat pointless... - dirs = ['bin', 'etc', 'wmake'] + # Having wmake and ~source is actually somewhat pointless... + # Install 'etc' before 'bin' (for symlinks) + dirs = ['etc', 'bin', 'wmake'] if '+source' in spec: dirs.extend(['applications', 'src', 'tutorials']) for d in dirs: install_tree( d, - join_path(self.projectdir, d)) + join_path(self.projectdir, d), + symlinks=True) dirs = ['platforms'] if '+source' in spec: @@ -463,29 +319,37 @@ def install(self, spec, prefix): install_tree( d, join_path(self.projectdir, d), - ignore=shutil.ignore_patterns(*ignored)) + ignore=shutil.ignore_patterns(*ignored), + symlinks=True) + etc_dir = join_path(self.projectdir, 'etc') rewrite_environ_files( # Adjust etc/bashrc and etc/cshrc - wm_setting, - posix=join_path(self.etc, 'bashrc'), - cshell=join_path(self.etc, 'cshrc')) + edits, + posix=join_path(etc_dir, 'bashrc'), + cshell=join_path(etc_dir, 'cshrc')) self.install_links() def install_links(self): """Add symlinks into bin/, lib/ (eg, for other applications)""" - if not self.extra_symlinks: + # Make build log visible - it contains OpenFOAM-specific information + with working_dir(self.projectdir): + os.symlink( + join_path('.spack', 'build.out'), + join_path('log.' + str(self.foam_arch))) + + if not self.config['link']: return # ln -s platforms/linux64GccXXX/lib lib with working_dir(self.projectdir): - if isdir(self.archlib): + if os.path.isdir(self.archlib): os.symlink(self.archlib, 'lib') # (cd bin && ln -s ../platforms/linux64GccXXX/bin/* .) with working_dir(join_path(self.projectdir, 'bin')): for f in [ f for f in glob.glob(join_path('..', self.archbin, "*")) - if isfile(f) + if os.path.isfile(f) ]: os.symlink(f, os.path.basename(f)) From 59b66b0d27d29f4c7c1db256389331a36ca9fa10 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 21 Jun 2017 18:36:18 +0200 Subject: [PATCH 1103/2394] mumps: fixed compilation issues due to scotch not found at link time (#4567) --- .../repos/builtin/packages/mumps/package.py | 7 +------ .../scotch/esmumps-ldflags-6.0.4.patch | 11 ++++++++++ .../repos/builtin/packages/scotch/package.py | 20 ++++++++++++++++++- .../repos/builtin/packages/zlib/package.py | 7 +++++++ 4 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 var/spack/repos/builtin/packages/scotch/esmumps-ldflags-6.0.4.patch diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index 5bddeaba5d5..55aac441f02 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -92,14 +92,9 @@ def write_makefile_inc(self): orderings = ['-Dpord'] if '+ptscotch' in self.spec or '+scotch' in self.spec: - join_lib = ' -l%s' % ('pt' if '+ptscotch' in self.spec else '') makefile_conf.extend([ "ISCOTCH = -I%s" % self.spec['scotch'].prefix.include, - "LSCOTCH = -L%s %s%s" % (self.spec['scotch'].prefix.lib, - join_lib, - join_lib.join(['esmumps', - 'scotch', - 'scotcherr'])) + "LSCOTCH = {0}".format(self.spec['scotch'].libs.ld_flags) ]) orderings.append('-Dscotch') diff --git a/var/spack/repos/builtin/packages/scotch/esmumps-ldflags-6.0.4.patch b/var/spack/repos/builtin/packages/scotch/esmumps-ldflags-6.0.4.patch new file mode 100644 index 00000000000..e22ba17b340 --- /dev/null +++ b/var/spack/repos/builtin/packages/scotch/esmumps-ldflags-6.0.4.patch @@ -0,0 +1,11 @@ +--- a/src/esmumps/Makefile 2017-06-21 10:53:31.595758201 +0200 ++++ b/src/esmumps/Makefile 2017-06-21 10:54:30.811757141 +0200 +@@ -44,7 +44,7 @@ + $(CC) $(CFLAGS) $(CLIBFLAGS) -I$(includedir) -c $(<) -o $(@) + + %$(EXE) : %.c +- $(CC) $(CFLAGS) -I$(includedir) $(<) -o $(@) -L$(libdir) $(LDFLAGS) -L. -l$(ESMUMPSLIB) -l$(SCOTCHLIB) -lscotch -l$(SCOTCHLIB)errexit -lm ++ $(CC) $(CFLAGS) -I$(includedir) $(<) -o $(@) -L$(libdir) -L. -l$(ESMUMPSLIB) -l$(SCOTCHLIB) -lscotch -l$(SCOTCHLIB)errexit -lm $(LDFLAGS) + + ## + ## Project rules. diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index 89d1f8e568f..6129db104ae 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -58,6 +58,7 @@ class Scotch(Package): # Version-specific patches patch('nonthreaded-6.0.4.patch', when='@6.0.4') + patch('esmumps-ldflags-6.0.4.patch', when='@6.0.4') # NOTE: In cross-compiling environment parallel build # produces weird linker errors. @@ -74,6 +75,23 @@ def url_for_version(self, version): url = "http://gforge.inria.fr/frs/download.php/latestfile/298/scotch_{0}_esmumps.tar.gz" return url.format(version) + @property + def libs(self): + + shared = '+shared' in self.spec + libraries = ['libscotch', 'libscotcherr'] + + if '+mpi' in self.spec: + libraries = ['libptscotch', 'libptscotcherr'] + libraries + if '+esmumps' in self.spec: + libraries = ['libptesmumps'] + libraries + elif '~mpi+esmumps' in self.spec: + libraries = ['libesmumps'] + libraries + + return find_libraries( + libraries, root=self.prefix, recurse=True, shared=shared + ) + def patch(self): self.configure() @@ -146,7 +164,7 @@ def configure(self): if '+compression' in self.spec: cflags.append('-DCOMMON_FILE_COMPRESS_GZ') - ldflags.append('-L%s -lz' % (self.spec['zlib'].prefix.lib)) + ldflags.append(' {0} '.format(self.spec['zlib'].libs.joined())) cflags.append('-DCOMMON_PTHREAD') diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 43d24c61d15..8971cc0b1b1 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -48,6 +48,13 @@ class Zlib(Package): patch('w_patch.patch', when="@1.2.11%cce") + @property + def libs(self): + shared = '+shared' in self.spec + return find_libraries( + ['libz'], root=self.prefix, recurse=True, shared=shared + ) + def setup_environment(self, spack_env, run_env): if '+pic' in self.spec: spack_env.set('CFLAGS', self.compiler.pic_flag) From a1131011263c086042ec24748e518d6e2b16b5f8 Mon Sep 17 00:00:00 2001 From: becker33 Date: Wed, 21 Jun 2017 09:58:41 -0700 Subject: [PATCH 1104/2394] Module cmd fix (#3250) * Parse modules in a way that works for both lmod and tcl * added test and made method more robust * refactoring for pythonic clarity * Improved detection of 'module' shell function + refactored module utilities into spack.util.module_cmd * Improved regex to reject nested parentheses we are not prepared to handle * make tests backwards compatible with python 2.6 * Improved regex to account for sh being aliased to bash and used in bash module definition on some systems * Improve test compatibility with lmod * Added error for None module_cmd * Add test for get_module_cmd_from_which() Add test for get_module_cmd_from_which(). Add -c argument to Popen call to typeset -f module in get_module_cmd_from_bash(). * Increased detection options Included BASH_FUNC_module() variable outside of typeset as a detection option This should work on bash even in restricted_shell mode Kept the typeset detection as an option in case the module function is not exported in bash Also added try statements to tests, with environment recreation in finally blocks. * More tests added; some hackiness * increased test coverage for util/module_cmd --- lib/spack/spack/build_environment.py | 65 +------- lib/spack/spack/operating_systems/cnl.py | 5 +- lib/spack/spack/package_prefs.py | 2 +- lib/spack/spack/platforms/cray.py | 4 +- lib/spack/spack/spec.py | 2 +- lib/spack/spack/test/module_parsing.py | 143 +++++++++++++++++ lib/spack/spack/util/module_cmd.py | 195 +++++++++++++++++++++++ 7 files changed, 346 insertions(+), 70 deletions(-) create mode 100644 lib/spack/spack/test/module_parsing.py create mode 100644 lib/spack/spack/util/module_cmd.py diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index e216d4aa7cd..ac44e57c09d 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -67,8 +67,8 @@ import spack.store from spack.environment import EnvironmentModifications, validate from spack.util.environment import * -from spack.util.executable import Executable, which - +from spack.util.executable import Executable +from spack.util.module_cmd import load_module, get_path_from_module # # This can be set by the user to globally disable parallel builds. # @@ -120,67 +120,6 @@ def __call__(self, *args, **kwargs): return super(MakeExecutable, self).__call__(*args, **kwargs) -def load_module(mod): - """Takes a module name and removes modules until it is possible to - load that module. It then loads the provided module. Depends on the - modulecmd implementation of modules used in cray and lmod. - """ - # Create an executable of the module command that will output python code - modulecmd = which('modulecmd') - modulecmd.add_default_arg('python') - - # Read the module and remove any conflicting modules - # We do this without checking that they are already installed - # for ease of programming because unloading a module that is not - # loaded does nothing. - text = modulecmd('show', mod, output=str, error=str).split() - for i, word in enumerate(text): - if word == 'conflict': - exec(compile(modulecmd('unload', text[i + 1], output=str, - error=str), '', 'exec')) - # Load the module now that there are no conflicts - load = modulecmd('load', mod, output=str, error=str) - exec(compile(load, '', 'exec')) - - -def get_path_from_module(mod): - """Inspects a TCL module for entries that indicate the absolute path - at which the library supported by said module can be found. - """ - # Create a modulecmd executable - modulecmd = which('modulecmd') - modulecmd.add_default_arg('python') - - # Read the module - text = modulecmd('show', mod, output=str, error=str).split('\n') - # If it lists its package directory, return that - for line in text: - if line.find(mod.upper() + '_DIR') >= 0: - words = line.split() - return words[2] - - # If it lists a -rpath instruction, use that - for line in text: - rpath = line.find('-rpath/') - if rpath >= 0: - return line[rpath + 6:line.find('/lib')] - - # If it lists a -L instruction, use that - for line in text: - L = line.find('-L/') - if L >= 0: - return line[L + 2:line.find('/lib')] - - # If it sets the LD_LIBRARY_PATH or CRAY_LD_LIBRARY_PATH, use that - for line in text: - if line.find('LD_LIBRARY_PATH') >= 0: - words = line.split() - path = words[2] - return path[:path.find('/lib')] - # Unable to find module path - return None - - def set_compiler_environment_variables(pkg, env): assert(pkg.spec.concrete) compiler = pkg.compiler diff --git a/lib/spack/spack/operating_systems/cnl.py b/lib/spack/spack/operating_systems/cnl.py index b5c759bbcbb..95f23a076ee 100644 --- a/lib/spack/spack/operating_systems/cnl.py +++ b/lib/spack/spack/operating_systems/cnl.py @@ -25,10 +25,10 @@ import re from spack.architecture import OperatingSystem -from spack.util.executable import * import spack.spec from spack.util.multiproc import parmap import spack.compilers +from spack.util.module_cmd import get_module_cmd class Cnl(OperatingSystem): @@ -63,8 +63,7 @@ def find_compiler(self, cmp_cls, *paths): if not cmp_cls.PrgEnv_compiler: tty.die('Must supply PrgEnv_compiler with PrgEnv') - modulecmd = which('modulecmd') - modulecmd.add_default_arg('python') + modulecmd = get_module_cmd() output = modulecmd( 'avail', cmp_cls.PrgEnv_compiler, output=str, error=str) diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py index 8b1fe08154c..f9c4ced97e7 100644 --- a/lib/spack/spack/package_prefs.py +++ b/lib/spack/spack/package_prefs.py @@ -200,7 +200,7 @@ def spec_externals(spec): """Return a list of external specs (w/external directory path filled in), one for each known external installation.""" # break circular import. - from spack.build_environment import get_path_from_module # noqa: F401 + from spack.util.module_cmd import get_path_from_module # NOQA: ignore=F401 allpkgs = get_packages_config() name = spec.name diff --git a/lib/spack/spack/platforms/cray.py b/lib/spack/spack/platforms/cray.py index 1cd08e55656..76f7e596740 100644 --- a/lib/spack/spack/platforms/cray.py +++ b/lib/spack/spack/platforms/cray.py @@ -31,6 +31,7 @@ from spack.operating_systems.linux_distro import LinuxDistro from spack.operating_systems.cnl import Cnl from llnl.util.filesystem import join_path +from spack.util.module_cmd import get_module_cmd def _get_modules_in_modulecmd_output(output): @@ -142,8 +143,7 @@ def _default_target_from_env(self): def _avail_targets(self): '''Return a list of available CrayPE CPU targets.''' if getattr(self, '_craype_targets', None) is None: - module = which('modulecmd', required=True) - module.add_default_arg('python') + module = get_module_cmd() output = module('avail', '-t', 'craype-', output=str, error=str) craype_modules = _get_modules_in_modulecmd_output(output) self._craype_targets = targets = [] diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index eed93eccb76..602f2fd878c 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -120,7 +120,7 @@ from llnl.util.filesystem import find_headers, find_libraries, is_exe from llnl.util.lang import * from llnl.util.tty.color import * -from spack.build_environment import get_path_from_module, load_module +from spack.util.module_cmd import get_path_from_module, load_module from spack.error import SpecError, UnsatisfiableSpecError from spack.provider_index import ProviderIndex from spack.util.crypto import prefix_bits diff --git a/lib/spack/spack/test/module_parsing.py b/lib/spack/spack/test/module_parsing.py new file mode 100644 index 00000000000..6ddb9d2dbf3 --- /dev/null +++ b/lib/spack/spack/test/module_parsing.py @@ -0,0 +1,143 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 pytest +import subprocess +import os +from spack.util.module_cmd import * + +typeset_func = subprocess.Popen('module avail', + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=True) +typeset_func.wait() +typeset = typeset_func.stderr.read() +MODULE_NOT_DEFINED = b'not found' in typeset + + +@pytest.fixture +def save_env(): + old_PATH = os.environ.get('PATH', None) + old_bash_func = os.environ.get('BASH_FUNC_module()', None) + + yield + + if old_PATH: + os.environ['PATH'] = old_PATH + if old_bash_func: + os.environ['BASH_FUNC_module()'] = old_bash_func + + +def test_get_path_from_module(save_env): + lines = ['prepend-path LD_LIBRARY_PATH /path/to/lib', + 'setenv MOD_DIR /path/to', + 'setenv LDFLAGS -Wl,-rpath/path/to/lib', + 'setenv LDFLAGS -L/path/to/lib'] + + for line in lines: + module_func = '() { eval `echo ' + line + ' bash filler`\n}' + os.environ['BASH_FUNC_module()'] = module_func + path = get_path_from_module('mod') + + assert path == '/path/to' + + os.environ['BASH_FUNC_module()'] = '() { eval $(echo fill bash $*)\n}' + path = get_path_from_module('mod') + + assert path is None + + +def test_get_argument_from_module_line(): + lines = ['prepend-path LD_LIBRARY_PATH /lib/path', + 'prepend-path LD_LIBRARY_PATH /lib/path', + "prepend_path('PATH' , '/lib/path')", + 'prepend_path( "PATH" , "/lib/path" )', + 'prepend_path("PATH",' + "'/lib/path')"] + + bad_lines = ['prepend_path(PATH,/lib/path)', + 'prepend-path (LD_LIBRARY_PATH) /lib/path'] + + assert all(get_argument_from_module_line(l) == '/lib/path' for l in lines) + for bl in bad_lines: + with pytest.raises(ValueError): + get_argument_from_module_line(bl) + + +@pytest.mark.skipif(MODULE_NOT_DEFINED, reason='Depends on defined module fn') +def test_get_module_cmd_from_bash_using_modules(): + module_list_proc = subprocess.Popen(['module list'], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + executable='/bin/bash', + shell=True) + module_list_proc.wait() + module_list = module_list_proc.stdout.read() + + module_cmd = get_module_cmd_from_bash() + module_cmd_list = module_cmd('list', output=str, error=str) + + # Lmod command reprints some env variables on every invocation. + # Test containment to avoid false failures on lmod systems. + assert module_list in module_cmd_list + + +def test_get_module_cmd_from_bash_ticks(save_env): + os.environ['BASH_FUNC_module()'] = '() { eval `echo bash $*`\n}' + + module_cmd = get_module_cmd() + module_cmd_list = module_cmd('list', output=str, error=str) + + assert module_cmd_list == 'python list\n' + + +def test_get_module_cmd_from_bash_parens(save_env): + os.environ['BASH_FUNC_module()'] = '() { eval $(echo fill bash $*)\n}' + + module_cmd = get_module_cmd() + module_cmd_list = module_cmd('list', output=str, error=str) + + assert module_cmd_list == 'fill python list\n' + + +def test_get_module_cmd_fails(save_env): + os.environ.pop('BASH_FUNC_module()') + os.environ.pop('PATH') + with pytest.raises(ModuleError): + module_cmd = get_module_cmd(b'--norc') + module_cmd() # Here to avoid Flake F841 on previous line + + +def test_get_module_cmd_from_which(tmpdir, save_env): + f = tmpdir.mkdir('bin').join('modulecmd') + f.write('#!/bin/bash\n' + 'echo $*') + f.chmod(0o770) + + os.environ['PATH'] = str(tmpdir.join('bin')) + ':' + os.environ['PATH'] + os.environ.pop('BASH_FUNC_module()') + + module_cmd = get_module_cmd(b'--norc') + module_cmd_list = module_cmd('list', output=str, error=str) + + assert module_cmd_list == 'python list\n' diff --git a/lib/spack/spack/util/module_cmd.py b/lib/spack/spack/util/module_cmd.py new file mode 100644 index 00000000000..bdd84637571 --- /dev/null +++ b/lib/spack/spack/util/module_cmd.py @@ -0,0 +1,195 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +""" +This module contains routines related to the module command for accessing and +parsing environment modules. +""" +import subprocess +import re +import os +import llnl.util.tty as tty +from spack.util.executable import which + + +def get_module_cmd(bashopts=''): + try: + return get_module_cmd_from_bash(bashopts) + except ModuleError: + # Don't catch the exception this time; we have no other way to do it. + tty.warn("Could not detect module function from bash." + " Trying to detect modulecmd from `which`") + try: + return get_module_cmd_from_which() + except ModuleError: + raise ModuleError('Spack requires modulecmd or a defined module' + ' fucntion. Make sure modulecmd is in your path' + ' or the function "module" is defined in your' + ' bash environment.') + + +def get_module_cmd_from_which(): + module_cmd = which('modulecmd') + if not module_cmd: + raise ModuleError('`which` did not find any modulecmd executable') + module_cmd.add_default_arg('python') + + # Check that the executable works + module_cmd('list', output=str, error=str, fail_on_error=False) + if module_cmd.returncode != 0: + raise ModuleError('get_module_cmd cannot determine the module command') + + return module_cmd + + +def get_module_cmd_from_bash(bashopts=''): + # Find how the module function is defined in the environment + module_func = os.environ.get('BASH_FUNC_module()', None) + if module_func: + module_func = os.path.expandvars(module_func) + else: + module_func_proc = subprocess.Popen(['{0} typeset -f module | ' + 'envsubst'.format(bashopts)], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + executable='/bin/bash', + shell=True) + module_func_proc.wait() + module_func = module_func_proc.stdout.read() + + # Find the portion of the module function that is evaluated + try: + find_exec = re.search(r'.*`(.*(:? bash | sh ).*)`.*', module_func) + exec_line = find_exec.group(1) + except: + try: + # This will fail with nested parentheses. TODO: expand regex. + find_exec = re.search(r'.*\(([^()]*(:? bash | sh )[^()]*)\).*', + module_func) + exec_line = find_exec.group(1) + except: + raise ModuleError('get_module_cmd cannot ' + 'determine the module command from bash') + + # Create an executable + args = exec_line.split() + module_cmd = which(args[0]) + if module_cmd: + for arg in args[1:]: + if arg == 'bash': + module_cmd.add_default_arg('python') + break + else: + module_cmd.add_default_arg(arg) + else: + raise ModuleError('Could not create executable based on module' + ' function.') + + # Check that the executable works + module_cmd('list', output=str, error=str, fail_on_error=False) + if module_cmd.returncode != 0: + raise ModuleError('get_module_cmd cannot determine the module command' + 'from bash.') + + return module_cmd + + +def load_module(mod): + """Takes a module name and removes modules until it is possible to + load that module. It then loads the provided module. Depends on the + modulecmd implementation of modules used in cray and lmod. + """ + # Create an executable of the module command that will output python code + modulecmd = get_module_cmd() + + # Read the module and remove any conflicting modules + # We do this without checking that they are already installed + # for ease of programming because unloading a module that is not + # loaded does nothing. + text = modulecmd('show', mod, output=str, error=str).split() + for i, word in enumerate(text): + if word == 'conflict': + exec(compile(modulecmd('unload', text[i + 1], output=str, + error=str), '', 'exec')) + # Load the module now that there are no conflicts + load = modulecmd('load', mod, output=str, error=str) + exec(compile(load, '', 'exec')) + + +def get_argument_from_module_line(line): + if '(' in line and ')' in line: + # Determine which lua quote symbol is being used for the argument + comma_index = line.index(',') + cline = line[comma_index:] + try: + quote_index = min(cline.find(q) for q in ['"', "'"] if q in cline) + lua_quote = cline[quote_index] + except ValueError: + # Change error text to describe what is going on. + raise ValueError("No lua quote symbol found in lmod module line.") + words_and_symbols = line.split(lua_quote) + return words_and_symbols[-2] + else: + return line.split()[2] + + +def get_path_from_module(mod): + """Inspects a TCL module for entries that indicate the absolute path + at which the library supported by said module can be found. + """ + # Create a modulecmd executable + modulecmd = get_module_cmd() + + # Read the module + text = modulecmd('show', mod, output=str, error=str).split('\n') + + # If it sets the LD_LIBRARY_PATH or CRAY_LD_LIBRARY_PATH, use that + for line in text: + if line.find('LD_LIBRARY_PATH') >= 0: + path = get_argument_from_module_line(line) + return path[:path.find('/lib')] + + # If it lists its package directory, return that + for line in text: + if line.find(mod.upper() + '_DIR') >= 0: + return get_argument_from_module_line(line) + + # If it lists a -rpath instruction, use that + for line in text: + rpath = line.find('-rpath/') + if rpath >= 0: + return line[rpath + 6:line.find('/lib')] + + # If it lists a -L instruction, use that + for line in text: + L = line.find('-L/') + if L >= 0: + return line[L + 2:line.find('/lib')] + + # Unable to find module path + return None + + +class ModuleError(Exception): + """Raised the the module_cmd utility to indicate errors.""" From 689c1d2f0c432de7090dea593c90d7ffd6741a7d Mon Sep 17 00:00:00 2001 From: becker33 Date: Wed, 21 Jun 2017 16:33:11 -0700 Subject: [PATCH 1105/2394] fix issue #4577 (#4579) --- lib/spack/spack/util/executable.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 0aec84b1d0a..4222a48b82f 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -239,7 +239,7 @@ def which(*args, **kwargs): Returns: Executable: The first executable that is found in the path """ - path = kwargs.get('path', os.environ.get('PATH')) + path = kwargs.get('path', os.environ.get('PATH', '')) required = kwargs.get('required', False) if isinstance(path, string_types): From ff26cb9723d0742953671f0432bd4d55d8701cc7 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Thu, 22 Jun 2017 15:29:19 +0100 Subject: [PATCH 1106/2394] Update for paraview 5.4.0 (#4582) - paraview 5.2.1 -> 5.4.0 supports both Qt4 and Qt5, but the assumed default version changes between versions. So explicitly define which QT major version is being used. --- var/spack/repos/builtin/packages/paraview/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index ea0722dab8c..bf2246c6bad 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -33,6 +33,7 @@ class Paraview(CMakePackage): url = "http://www.paraview.org/files/v5.3/ParaView-v5.3.0.tar.gz" _urlfmt = 'http://www.paraview.org/files/v{0}/ParaView-v{1}{2}.tar.gz' + version('5.4.0', 'b92847605bac9036414b644f33cb7163') version('5.3.0', '68fbbbe733aa607ec13d1db1ab5eba71') version('5.2.0', '4570d1a2a183026adb65b73c7125b8b0') version('5.1.2', '44fb32fc8988fcdfbc216c9e40c3e925') @@ -117,6 +118,13 @@ def nvariant_bool(feature): '-DVTK_USE_SYSTEM_ZLIB:BOOL=ON', ] + # The assumed qt version changed to QT5 (as of paraview 5.2.1), + # so explicitly specify which QT major version is actually being used + if '+qt' in spec: + cmake_args.extend([ + '-DPARAVIEW_QT_VERSION=%s' % spec['qt'].version[0], + ]) + if '+python' in spec: cmake_args.extend([ '-DPARAVIEW_ENABLE_PYTHON:BOOL=ON', From 2fa918f32c102929401c19b3b4bd6f61e72666a4 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 22 Jun 2017 11:12:19 -0500 Subject: [PATCH 1107/2394] gmap-gsnap: adding gmap-gsnap package (#4570) --- .../builtin/packages/gmap-gsnap/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gmap-gsnap/package.py diff --git a/var/spack/repos/builtin/packages/gmap-gsnap/package.py b/var/spack/repos/builtin/packages/gmap-gsnap/package.py new file mode 100644 index 00000000000..e2c79848a01 --- /dev/null +++ b/var/spack/repos/builtin/packages/gmap-gsnap/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class GmapGsnap(AutotoolsPackage): + """GMAP: A Genomic Mapping and Alignment Program for + mRNA and EST Sequences, and GSNAP: Genomic Short-read + Nucleotide Alignment Program""" + + homepage = "http://research-pub.gene.com/gmap/" + url = "http://research-pub.gene.com/gmap/src/gmap-gsnap-2017-06-16.tar.gz" + + version('2017-06-16', 'fcc91b8bdd4bf12ae3124de0c00db0c0') From 3c8e65f3d800faea59a9a64994e92f9ae152beba Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 22 Jun 2017 11:12:37 -0500 Subject: [PATCH 1108/2394] New package albert (#4568) * albert: adding new package albert * albert: fixing dependency type and build process --- .../repos/builtin/packages/albert/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/albert/package.py diff --git a/var/spack/repos/builtin/packages/albert/package.py b/var/spack/repos/builtin/packages/albert/package.py new file mode 100644 index 00000000000..7375e512a97 --- /dev/null +++ b/var/spack/repos/builtin/packages/albert/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Albert(MakefilePackage): + """Albert is an interactive program to assist the + specialist in the study of nonassociative algebra.""" + + homepage = "https://people.cs.clemson.edu/~dpj/albertstuff/albert.html" + url = "https://github.com/kentavv/Albert/archive/v4.0a_opt4.tar.gz" + + version('4.0a_opt4', '79e3d9623602f2ca5db7d84c81d4eb8c') + + depends_on('readline') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('albert', join_path(prefix.bin)) From 6aa3d519390105e64ad940161be0e076892b81cb Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Thu, 22 Jun 2017 12:51:51 -0500 Subject: [PATCH 1109/2394] created py-tomopy package and fixed its dependencies (#4576) * added py-tomopy package * fixed dependencies and added import_modules * edited deps for tomopy with import_modules and added py-olefile pkg * changed module name * changed dependency to python because it will not build with setuptools * fixed dependency list for py-tomopy and py-dxchange * added py-nose dependency * fixed tests * commented out dependency py-counter * fixed dependency py-pybtex-docutils * removed nose as a dependency * fixed flake8 errors * fixed import_modules * fixed import_modules indent * fixed various issues in tomopy and deps files --- .../builtin/packages/py-counter/package.py | 2 + .../builtin/packages/py-dxchange/package.py | 22 ++++---- .../builtin/packages/py-dxfile/package.py | 4 +- .../builtin/packages/py-edffile/package.py | 2 + .../builtin/packages/py-latexcodec/package.py | 2 + .../builtin/packages/py-olefile/package.py | 38 ++++++++++++++ .../repos/builtin/packages/py-oset/package.py | 2 + .../packages/py-pybtex-docutils/package.py | 2 + .../builtin/packages/py-pybtex/package.py | 16 +++++- .../builtin/packages/py-pywavelets/package.py | 2 +- .../builtin/packages/py-spefile/package.py | 4 +- .../py-sphinxcontrib-bibtex/package.py | 4 +- .../builtin/packages/py-tifffile/package.py | 4 +- .../builtin/packages/py-tomopy/package.py | 51 +++++++++++++++++++ 14 files changed, 140 insertions(+), 15 deletions(-) create mode 100644 var/spack/repos/builtin/packages/py-olefile/package.py create mode 100644 var/spack/repos/builtin/packages/py-tomopy/package.py diff --git a/var/spack/repos/builtin/packages/py-counter/package.py b/var/spack/repos/builtin/packages/py-counter/package.py index 61e1d51e6cc..9be0edd8399 100644 --- a/var/spack/repos/builtin/packages/py-counter/package.py +++ b/var/spack/repos/builtin/packages/py-counter/package.py @@ -29,6 +29,8 @@ class PyCounter(PythonPackage): """Counter package defines the "counter.Counter" class similar to bags or multisets in other languages.""" + import_modules = ['counter'] + homepage = "https://github.com/KelSolaar/Counter" url = "https://pypi.io/packages/source/C/Counter/Counter-1.0.0.tar.gz" diff --git a/var/spack/repos/builtin/packages/py-dxchange/package.py b/var/spack/repos/builtin/packages/py-dxchange/package.py index 7c745c348f4..b981960438a 100644 --- a/var/spack/repos/builtin/packages/py-dxchange/package.py +++ b/var/spack/repos/builtin/packages/py-dxchange/package.py @@ -33,15 +33,19 @@ class PyDxchange(PythonPackage): homepage = "https://github.com/data-exchange/dxchange" url = "https://github.com/data-exchange/dxchange/archive/v0.1.2.tar.gz" + import_modules = ['dxchange'] + version('0.1.2', '36633bb67a1e7d1fb60c2300adbcbab3') depends_on('py-setuptools', type='build') - depends_on('py-numpy', type='run') - depends_on('py-scipy', type='run') - depends_on('py-h5py', type='run') - depends_on('py-six', type='run') - depends_on('py-netcdf4', type='run') - depends_on('py-spefile', type='run') - depends_on('py-edffile', type='run') - depends_on('py-tifffile', type='run') - depends_on('py-dxfile', type='run') + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-h5py', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) + depends_on('py-netcdf4', type=('build', 'run')) + depends_on('py-spefile', type=('build', 'run')) + depends_on('py-edffile', type=('build', 'run')) + depends_on('py-tifffile', type=('build', 'run')) + depends_on('py-dxfile', type=('build', 'run')) + depends_on('py-olefile', type=('build', 'run')) + depends_on('py-astropy', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-dxfile/package.py b/var/spack/repos/builtin/packages/py-dxfile/package.py index c0942ddc986..ed8cc0b6318 100644 --- a/var/spack/repos/builtin/packages/py-dxfile/package.py +++ b/var/spack/repos/builtin/packages/py-dxfile/package.py @@ -32,7 +32,9 @@ class PyDxfile(PythonPackage): homepage = "https://github.com/data-exchange/dxfile" url = "https://github.com/data-exchange/dxfile/archive/v0.4.tar.gz" + import_modules = ['dxfile'] + version('0.4', '0402cd38aefdfd5ce92feb43dda18947') depends_on('py-setuptools', type='build') - depends_on('py-h5py', type='run') + depends_on('py-h5py', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-edffile/package.py b/var/spack/repos/builtin/packages/py-edffile/package.py index 02422dedff7..878387a8ee0 100644 --- a/var/spack/repos/builtin/packages/py-edffile/package.py +++ b/var/spack/repos/builtin/packages/py-edffile/package.py @@ -31,6 +31,8 @@ class PyEdffile(PythonPackage): homepage = "https://github.com/vasole/pymca/blob/master/PyMca5/PyMcaIO/EdfFile.py" url = "https://github.com/conda-forge/edffile-feedstock.git" + import_modules = ['EdfFile'] + version('5.0.0', git='https://github.com/conda-forge/edffile-feedstock.git', commit='be5ab4199db9f8209c59e31874934b8536b52301') diff --git a/var/spack/repos/builtin/packages/py-latexcodec/package.py b/var/spack/repos/builtin/packages/py-latexcodec/package.py index d93050e8219..bdc96d2c68b 100644 --- a/var/spack/repos/builtin/packages/py-latexcodec/package.py +++ b/var/spack/repos/builtin/packages/py-latexcodec/package.py @@ -31,6 +31,8 @@ class PyLatexcodec(PythonPackage): homepage = "http://latexcodec.readthedocs.io" url = "https://pypi.io/packages/source/l/latexcodec/latexcodec-1.0.4.tar.gz" + import_modules = ['latexcodec'] + version('1.0.4', '72010ec2a55227a5802239cff6fd32d6') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-olefile/package.py b/var/spack/repos/builtin/packages/py-olefile/package.py new file mode 100644 index 00000000000..fd778862b85 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-olefile/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyOlefile(PythonPackage): + """Python package to parse, read and write Microsoft OLE2 files""" + + homepage = "https://www.decalage.info/python/olefileio" + url = "https://pypi.io/packages/source/o/olefile/olefile-0.44.zip" + + import_modules = ['olefile'] + + version('0.44', 'fc625554e4e7f0c2ddcd00baa3c74ff5') + + depends_on('python@2.6:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-oset/package.py b/var/spack/repos/builtin/packages/py-oset/package.py index 6ce7b392e6f..54627323b59 100644 --- a/var/spack/repos/builtin/packages/py-oset/package.py +++ b/var/spack/repos/builtin/packages/py-oset/package.py @@ -31,6 +31,8 @@ class PyOset(PythonPackage): homepage = "https://pypi.python.org/pypi/oset" url = "https://pypi.io/packages/source/o/oset/oset-0.1.3.tar.gz" + import_modules = ['oset'] + version('0.1.3', 'f23e5a545d2c77df3916398d2d39a3ab') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py index d951348a90b..ee154d27488 100644 --- a/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py +++ b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py @@ -31,6 +31,8 @@ class PyPybtexDocutils(PythonPackage): homepage = "https://pypi.python.org/pypi/pybtex-docutils/" url = "https://pypi.io/packages/source/p/pybtex-docutils/pybtex-docutils-0.2.1.tar.gz" + import_modules = ['pybtex_docutils'] + version('0.2.1', '7ae4b00562bd8881f582edf95009cc62') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pybtex/package.py b/var/spack/repos/builtin/packages/py-pybtex/package.py index e0fd1ae5b0d..99a0f5dfdc3 100644 --- a/var/spack/repos/builtin/packages/py-pybtex/package.py +++ b/var/spack/repos/builtin/packages/py-pybtex/package.py @@ -33,9 +33,23 @@ class PyPybtex(PythonPackage): homepage = "https://pybtex.org" url = "https://pypi.io/packages/source/P/Pybtex/pybtex-0.21.tar.gz" + import_modules = [ + 'custom_fixers', 'pybtex', 'pybtex.style', 'pybtex.tests', + 'pybtex.database', 'pybtex.backends', 'pybtex.bibtex', + 'pybtex.charwidths', 'pybtex.markup', 'pybtex.plugin', + 'pybtex.style.sorting', 'pybtex.style.names', + 'pybtex.style.labels', 'pybtex.style.formatting', + 'pybtex.tests.database_test', 'pybtex.tests.bst_parser_test', + 'pybtex.tests.data', 'pybtex.database.output', + 'pybtex.database.input', 'pybtex.database.format', + 'pybtex.database.convert' + ] + version('0.21', 'e7b320b2bcb34c664c4385533a2ea831') depends_on('py-setuptools', type='build') depends_on('py-latexcodec@1.0.4:', type=('build', 'run')) depends_on('py-pyyaml@3.01:', type=('build', 'run')) - depends_on('py-counter@1:', when='^python@:2.6', type=('build', 'run')) + # This dependency breaks concretization + # See https://github.com/LLNL/spack/issues/2793 + # depends_on('py-counter@1:', when='^python@:2.6', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pywavelets/package.py b/var/spack/repos/builtin/packages/py-pywavelets/package.py index eed3a465b0f..8dbb5977028 100644 --- a/var/spack/repos/builtin/packages/py-pywavelets/package.py +++ b/var/spack/repos/builtin/packages/py-pywavelets/package.py @@ -35,7 +35,7 @@ class PyPywavelets(PythonPackage): version('0.5.2', 'aedda732f064cf9395f03d37f1003d1a') - import_modules = ['pywt'] + import_modules = ['pywt', 'pywt.data'] depends_on('py-setuptools', type='build') depends_on('py-cython', type='build') diff --git a/var/spack/repos/builtin/packages/py-spefile/package.py b/var/spack/repos/builtin/packages/py-spefile/package.py index 6279391bbd9..d35cfae2034 100644 --- a/var/spack/repos/builtin/packages/py-spefile/package.py +++ b/var/spack/repos/builtin/packages/py-spefile/package.py @@ -32,10 +32,12 @@ class PySpefile(PythonPackage): homepage = "https://github.com/conda-forge/spefile-feedstock" url = "https://github.com/conda-forge/spefile-feedstock.git" + import_modules = ['spefile'] + version('1.6', git='https://github.com/conda-forge/spefile-feedstock.git', commit='24394e066da8dee5e7608f556ca0203c9db217f9') depends_on('py-setuptools', type='build') - depends_on('py-numpy', type='run') + depends_on('py-numpy', type=('build', 'run')) build_directory = 'recipe/src' diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py index 77fb43bde66..53011ee215f 100644 --- a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py @@ -31,12 +31,14 @@ class PySphinxcontribBibtex(PythonPackage): homepage = "https://pypi.python.org/pypi/sphinxcontrib-bibtex" url = "https://pypi.io/packages/source/s/sphinxcontrib-bibtex/sphinxcontrib-bibtex-0.3.5.tar.gz" + import_modules = ['sphinxcontrib', 'sphinxcontrib.bibtex'] + version('0.3.5', 'd3c86836e2f6227b55a5ca9108590b1c') depends_on('py-setuptools', type='build') depends_on('py-latexcodec@0.3.0:', type=('build', 'run')) depends_on('py-pybtex@0.17:', type=('build', 'run')) - depends_on('pybtex-docutils@0.2.0:', type=('build', 'run')) + depends_on('py-pybtex-docutils@0.2.0:', type=('build', 'run')) depends_on('py-six@1.4.1:', type=('build', 'run')) depends_on('py-sphinx@1.0:', type=('build', 'run')) depends_on('py-oset@0.1.3:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-tifffile/package.py b/var/spack/repos/builtin/packages/py-tifffile/package.py index 4412352db1a..87383fdbfd4 100644 --- a/var/spack/repos/builtin/packages/py-tifffile/package.py +++ b/var/spack/repos/builtin/packages/py-tifffile/package.py @@ -31,7 +31,9 @@ class PyTifffile(PythonPackage): homepage = "https://github.com/blink1073/tifffile" url = "https://pypi.io/packages/source/t/tifffile/tifffile-0.12.1.tar.gz" + import_modules = ['tifffile'] + version('0.12.1', '8a8afa74dd0df7915ac376a6cd7eeffc') depends_on('py-setuptools', type='build') - depends_on('py-numpy@1.8.2:', type=('build', 'run')) + depends_on('py-numpy@1.8.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-tomopy/package.py b/var/spack/repos/builtin/packages/py-tomopy/package.py new file mode 100644 index 00000000000..a77caa4dac3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-tomopy/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PyTomopy(PythonPackage): + """TomoPy is an open-source Python package for tomographic data + processing and image reconstruction.""" + + homepage = "http://tomopy.readthedocs.io/en/latest/index.html" + url = "https://github.com/tomopy/tomopy/archive/1.0.0.tar.gz" + + import_modules = [ + 'tomopy', 'doc', 'tomopy.util', 'tomopy.sim', 'tomopy.recon', + 'tomopy.prep', 'tomopy.misc', 'tomopy.io', 'doc.demo' + ] + + version('1.0.0', '986ac2c85a4af9ada0403b4c746d2cd4') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-h5py', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) + depends_on('py-scikit-image', type=('build', 'run')) + depends_on('py-pywavelets', type=('build', 'run')) + depends_on('py-pyfftw', type=('build', 'run')) + depends_on('py-dxchange', type=('build', 'run')) From 6d9494f0d2cbb928a3a0222ab66adb4c16c99f5c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 22 Jun 2017 12:52:02 -0500 Subject: [PATCH 1110/2394] Add latest version of libmng (#4575) --- var/spack/repos/builtin/packages/libmng/package.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libmng/package.py b/var/spack/repos/builtin/packages/libmng/package.py index c8ea90401b2..f1c451902c1 100644 --- a/var/spack/repos/builtin/packages/libmng/package.py +++ b/var/spack/repos/builtin/packages/libmng/package.py @@ -30,8 +30,9 @@ class Libmng(AutotoolsPackage): and examining Multiple-Image Network Graphics. MNG is the animation extension to the popular PNG image-format.""" homepage = "http://sourceforge.net/projects/libmng/" - url = "http://downloads.sourceforge.net/project/libmng/libmng-devel/2.0.2/libmng-2.0.2.tar.gz" + url = "http://downloads.sourceforge.net/project/libmng/libmng-devel/2.0.3/libmng-2.0.3.tar.gz" + version('2.0.3', '7e9a12ba2a99dff7e736902ea07383d4') version('2.0.2', '1ffefaed4aac98475ee6267422cbca55') depends_on("jpeg") @@ -39,10 +40,15 @@ class Libmng(AutotoolsPackage): depends_on("lcms") def patch(self): - # jpeg requires stdio to beincluded before its headrs. + # jpeg requires stdio to be included before its headers. filter_file(r'^(\#include \)', '#include\n\\1', 'libmng_types.h') @run_before('configure') def clean_configure_directory(self): + """Without this, configure crashes with: + + configure: error: source directory already configured; + run "make distclean" there first + """ make('distclean') From a803a5e9869d59cd1251be5b1ad89e9232670a22 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 22 Jun 2017 12:52:23 -0500 Subject: [PATCH 1111/2394] Add latest version of libtiff (#4574) --- var/spack/repos/builtin/packages/libtiff/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libtiff/package.py b/var/spack/repos/builtin/packages/libtiff/package.py index db16f640c2b..de5b577c471 100644 --- a/var/spack/repos/builtin/packages/libtiff/package.py +++ b/var/spack/repos/builtin/packages/libtiff/package.py @@ -28,8 +28,9 @@ class Libtiff(AutotoolsPackage): """libtiff graphics format library""" homepage = "http://www.simplesystems.org/libtiff/" - url = "http://download.osgeo.org/libtiff/tiff-4.0.7.tar.gz" + url = "http://download.osgeo.org/libtiff/tiff-4.0.8.tar.gz" + version('4.0.8', '2a7d1c1318416ddf36d5f6fa4600069b') version('4.0.7', '77ae928d2c6b7fb46a21c3a29325157b') version('4.0.6', 'd1d2e940dea0b5ad435f21f03d96dd72') version('4.0.3', '051c1068e6a0627f461948c365290410') From 8125780b8604c8e408cdb03b1995c181700bda7c Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 22 Jun 2017 16:00:43 -0500 Subject: [PATCH 1112/2394] New package augustus (#4586) * augustus: adding augustus * augustus: fixing flake8 things * augustus: simplifying verbose --- .../builtin/packages/augustus/package.py | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 var/spack/repos/builtin/packages/augustus/package.py diff --git a/var/spack/repos/builtin/packages/augustus/package.py b/var/spack/repos/builtin/packages/augustus/package.py new file mode 100644 index 00000000000..ccaa2f1e701 --- /dev/null +++ b/var/spack/repos/builtin/packages/augustus/package.py @@ -0,0 +1,70 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Augustus(MakefilePackage): + """AUGUSTUS is a program that predicts genes in eukaryotic + genomic sequences""" + + homepage = "http://bioinf.uni-greifswald.de/augustus/" + url = "http://bioinf.uni-greifswald.de/augustus/binaries/augustus-3.2.3.tar.gz" + + version('3.2.3', 'b8c47ea8d0c45aa7bb9a82626c8ff830') + + depends_on('bamtools') + depends_on('gsl') + depends_on('boost') + depends_on('zlib') + + def edit(self, spec, prefix): + with working_dir(join_path('auxprogs', 'filterBam', 'src')): + makefile = FileFilter('Makefile') + makefile.filter('BAMTOOLS = .*', 'BAMTOOLS = %s' % self.spec[ + 'bamtools'].prefix) + makefile.filter('INCLUDES = *', + 'INCLUDES = -I$(BAMTOOLS)/include/bamtools ') + makefile.filter('LIBS = -lbamtools -lz', + 'LIBS = $(BAMTOOLS)/lib/bamtools' + '/libbamtools.a -lz') + with working_dir(join_path('auxprogs', 'bam2hints')): + makefile = FileFilter('Makefile') + makefile.filter('# Variable definition', + 'BAMTOOLS = %s' % self.spec['bamtools'].prefix) + makefile.filter('INCLUDES = /usr/include/bamtools', + 'INCLUDES = $(BAMTOOLS)/include/bamtools') + makefile.filter('LIBS = -lbamtools -lz', + 'LIBS = $(BAMTOOLS)/lib/bamtools' + '/libbamtools.a -lz') + + def install(self, spec, prefix): + install_tree('bin', join_path(self.spec.prefix, 'bin')) + install_tree('config', join_path(self.spec.prefix, 'config')) + install_tree('scripts', join_path(self.spec.prefix, 'scripts')) + + def setup_environment(self, spack_env, run_env): + run_env.set('AUGUSTUS_CONFIG_PATH', join_path( + self.prefix, 'config')) + run_env.prepend_path('PATH', join_path(self.prefix, 'scripts')) From b741809bb200d4c9a06596edd89bfab05218c3d8 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 23 Jun 2017 14:45:17 +0100 Subject: [PATCH 1113/2394] BUG: flex+lex fails with lib64/ installation (issue #4583) (#4584) - new version 2.6.4 as well --- .../repos/builtin/packages/flex/package.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py index 73d08d98e0e..eda45c28a68 100644 --- a/var/spack/repos/builtin/packages/flex/package.py +++ b/var/spack/repos/builtin/packages/flex/package.py @@ -32,6 +32,7 @@ class Flex(AutotoolsPackage): homepage = "https://github.com/westes/flex" url = "https://github.com/westes/flex/releases/download/v2.6.1/flex-2.6.1.tar.gz" + version('2.6.4', '2882e3179748cc9f9c23ec593d6adc8d') version('2.6.3', 'a5f65570cd9107ec8a8ec88f17b31bb1') # Problematic version: # See issue #2554; https://github.com/westes/flex/issues/113 @@ -68,13 +69,17 @@ def url_for_version(self, version): @run_after('install') def symlink_lex(self): + """Install symlinks for lex compatibility.""" if self.spec.satisfies('+lex'): dso = dso_suffix for dir, flex, lex in \ - ((self.prefix.bin, 'flex', 'lex'), - (self.prefix.lib, 'libfl.a', 'libl.a'), - (self.prefix.lib, 'libfl.' + dso, 'libl.' + dso)): - with working_dir(dir): - if (os.path.isfile(flex) and not - os.path.lexists(lex)): - symlink(flex, lex) + ((self.prefix.bin, 'flex', 'lex'), + (self.prefix.lib, 'libfl.a', 'libl.a'), + (self.prefix.lib, 'libfl.' + dso, 'libl.' + dso), + (self.prefix.lib64, 'libfl.a', 'libl.a'), + (self.prefix.lib64, 'libfl.' + dso, 'libl.' + dso)): + + if os.path.isdir(dir): + with working_dir(dir): + if (os.path.isfile(flex) and not os.path.lexists(lex)): + symlink(flex, lex) From 1d741a2110e6cf71b46dc93860278eb548aae8f0 Mon Sep 17 00:00:00 2001 From: Geoffrey Oxberry Date: Fri, 23 Jun 2017 06:50:49 -0700 Subject: [PATCH 1114/2394] suite-sparse: add openmp variant (#4563) Fixes #4549. --- .../builtin/packages/suite-sparse/package.py | 73 +++++++++---------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index 7884e540ba5..74b8c53bec8 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -40,6 +40,7 @@ class SuiteSparse(Package): variant('tbb', default=False, description='Build with Intel TBB') variant('pic', default=True, description='Build position independent code (required to link with shared libraries)') variant('cuda', default=False, description='Build with CUDA') + variant('openmp', default=False, description='Build with OpenMP') depends_on('blas') depends_on('lapack') @@ -63,11 +64,12 @@ def install(self, spec, prefix): # logic in it. Any kind of customization will need to go through # filtering of that file - make_args = ['INSTALL=%s' % prefix] + pic_flag = self.compiler.pic_flag if '+pic' in spec else '' - make_args.extend([ + make_args = [ + 'INSTALL=%s' % prefix, # By default, the Makefile uses the Intel compilers if - # they are found. This flag disables this behavior, + # they are found. The AUTOCC flag disables this behavior, # forcing it to use Spack's compiler wrappers. 'AUTOCC=no', # CUDA=no does NOT disable cuda, it only disables internal search @@ -75,47 +77,44 @@ def install(self, spec, prefix): # completely disabled. See # [SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk] for more. 'CUDA=no', - 'CUDA_PATH={0}'.format( - spec['cuda'].prefix if '+cuda' in spec else '' - ), - 'CFOPENMP={0}'.format(self.compiler.openmp_flag) - ]) + 'CUDA_PATH=%s' % (spec['cuda'].prefix if '+cuda' in spec else ''), + 'CFOPENMP=%s' % (self.compiler.openmp_flag + if '+openmp' in spec else ''), + 'CFLAGS=-O3 %s' % pic_flag, + # Both FFLAGS and F77FLAGS are used in SuiteSparse makefiles; + # FFLAGS is used in CHOLMOD, F77FLAGS is used in AMD and UMFPACK. + 'FFLAGS=%s' % pic_flag, + 'F77FLAGS=%s' % pic_flag, + # use Spack's metis in CHOLMOD/Partition module, + # otherwise internal Metis will be compiled + 'MY_METIS_LIB=%s' % spec['metis'].libs.ld_flags, + 'MY_METIS_INC=%s' % spec['metis'].prefix.include, + # Make sure Spack's Blas/Lapack is used. Otherwise System's + # Blas/Lapack might be picked up. Need to add -lstdc++, following + # with the TCOV path of SparseSuite 4.5.1's Suitesparse_config.mk, + # even though this fix is ugly + 'BLAS=%s' % (spec['blas'].libs.ld_flags + ( + '-lstdc++' if '@4.5.1' in spec else '')), + 'LAPACK=%s' % spec['lapack'].libs.ld_flags, + ] - if '+pic' in spec: - make_args.extend([ - 'CFLAGS={0}'.format(self.compiler.pic_flag), - 'FFLAGS={0}'.format(self.compiler.pic_flag) - ]) + # SuiteSparse defaults to using '-fno-common -fexceptions' in + # CFLAGS, but not all compilers use the same flags for these + # optimizations + if any([x in spec + for x in ('%clang', '%gcc', '%intel')]): + make_args += ['CFLAGS+=-fno-common -fexceptions'] + elif '%pgi' in spec: + make_args += ['CFLAGS+=--exceptions'] if '%xl' in spec or '%xl_r' in spec: - make_args.extend(['CFLAGS+=-DBLAS_NO_UNDERSCORE']) - - # use Spack's metis in CHOLMOD/Partition module, - # otherwise internal Metis will be compiled - make_args.extend([ - 'MY_METIS_LIB=-L%s -lmetis' % spec['metis'].prefix.lib, - 'MY_METIS_INC=%s' % spec['metis'].prefix.include, - ]) + make_args += ['CFLAGS+=-DBLAS_NO_UNDERSCORE'] # Intel TBB in SuiteSparseQR if 'tbb' in spec: - make_args.extend([ + make_args += [ 'SPQR_CONFIG=-DHAVE_TBB', 'TBB=-L%s -ltbb' % spec['tbb'].prefix.lib, - ]) - - # Make sure Spack's Blas/Lapack is used. Otherwise System's - # Blas/Lapack might be picked up. - blas = spec['blas'].libs.ld_flags - lapack = spec['lapack'].libs.ld_flags - if '@4.5.1' in spec: - # adding -lstdc++ is clearly an ugly way to do this, but it follows - # with the TCOV path of SparseSuite 4.5.1's Suitesparse_config.mk - blas += ' -lstdc++' - - make_args.extend([ - 'BLAS=%s' % blas, - 'LAPACK=%s' % lapack - ]) + ] make('install', *make_args) From 3e087f2e25ee82ea7fafe2a144991703c5825911 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 23 Jun 2017 08:51:45 -0500 Subject: [PATCH 1115/2394] Remove test dependencies from Python packages (#4572) * Remove test dependencies from Python packages * Make test deptype more clear for a couple more packages --- var/spack/repos/builtin/packages/py-brian2/package.py | 6 +++--- .../repos/builtin/packages/py-matplotlib/package.py | 5 +++-- var/spack/repos/builtin/packages/py-pylint/package.py | 4 +++- var/spack/repos/builtin/packages/py-pynn/package.py | 4 +++- var/spack/repos/builtin/packages/py-qtconsole/package.py | 4 +++- var/spack/repos/builtin/packages/py-theano/package.py | 9 +++++---- 6 files changed, 20 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-brian2/package.py b/var/spack/repos/builtin/packages/py-brian2/package.py index 28d10054323..c3582a516d6 100644 --- a/var/spack/repos/builtin/packages/py-brian2/package.py +++ b/var/spack/repos/builtin/packages/py-brian2/package.py @@ -34,7 +34,7 @@ class PyBrian2(PythonPackage): version('2.0.1', 'df5990e9a71f7344887bc02f54dfd0f0') version('2.0rc3', '3100c5e4eb9eb83a06ff0413a7d43152') - variant('docs', default=False) + variant('docs', default=False, description='Build the documentation') # depends on py-setuptools@6: for windows, if spack targets windows, # this will need to be added here @@ -45,6 +45,6 @@ class PyBrian2(PythonPackage): depends_on('py-jinja2@2.7:', type=('build', 'run')) depends_on('py-cpuinfo@0.1.6:', type=('build', 'run')) - # depends_on('py-nosetests@1.0:', type=('build', 'run')) # extra test - depends_on('py-nosetests@1.0:', type=('build', 'run'), when='+docs') + # TODO: Add a 'test' deptype + # depends_on('py-nosetests@1.0:', type='test') depends_on('py-sphinx@1.4.2:', type=('build', 'run'), when='+docs') diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 9948c85727e..24dfab5c928 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -93,8 +93,9 @@ class PyMatplotlib(PythonPackage): depends_on('texlive', when='+latex', type='run') # Testing dependencies - depends_on('py-nose') # type='test' - depends_on('py-mock') # type='test' + # TODO: Add a 'test' deptype + # depends_on('py-nose', type='test') + # depends_on('py-mock', type='test') # Required libraries that ship with matplotlib # depends_on('agg@2.4:') diff --git a/var/spack/repos/builtin/packages/py-pylint/package.py b/var/spack/repos/builtin/packages/py-pylint/package.py index 84830c9bcf2..b825ed68dc8 100644 --- a/var/spack/repos/builtin/packages/py-pylint/package.py +++ b/var/spack/repos/builtin/packages/py-pylint/package.py @@ -37,5 +37,7 @@ class PyPylint(PythonPackage): depends_on('py-six', type=('build', 'run')) depends_on('py-astroid', type=('build', 'run')) depends_on('py-logilab-common', type=('build', 'run')) - depends_on('py-nose', type='build') depends_on('py-setuptools', type='build') + + # TODO: Add a 'test' deptype + # depends_on('py-nose', type='test') diff --git a/var/spack/repos/builtin/packages/py-pynn/package.py b/var/spack/repos/builtin/packages/py-pynn/package.py index 55f847d4fed..ffe0ea64af0 100644 --- a/var/spack/repos/builtin/packages/py-pynn/package.py +++ b/var/spack/repos/builtin/packages/py-pynn/package.py @@ -42,8 +42,10 @@ class PyPynn(PythonPackage): depends_on('python@2.6:2.8,3.3:') depends_on('py-jinja2@2.7:', type=('build', 'run')) depends_on('py-docutils@0.10:', type=('build', 'run')) - depends_on('py-mock@1.0:', type=('build', 'run')) depends_on('py-numpy@1.5:', type=('build', 'run')) depends_on('py-quantities@0.10:', type=('build', 'run')) depends_on('py-lazyarray@0.2.9:', type=('build', 'run')) depends_on('py-neo@0.3:', type=('build', 'run')) + + # TODO: Add a 'test' deptype + # depends_on('py-mock@1.0:', type='test') diff --git a/var/spack/repos/builtin/packages/py-qtconsole/package.py b/var/spack/repos/builtin/packages/py-qtconsole/package.py index 73f423943a4..0fba2499882 100644 --- a/var/spack/repos/builtin/packages/py-qtconsole/package.py +++ b/var/spack/repos/builtin/packages/py-qtconsole/package.py @@ -42,4 +42,6 @@ class PyQtconsole(PythonPackage): depends_on('py-pygments', type=('build', 'run')) depends_on('py-traitlets', type=('build', 'run')) depends_on('py-sphinx@1.3:', type=('build', 'run'), when='+docs') - # mock; python_version=="2.7" and extra == 'test' + + # TODO: Add a 'test' deptype + # depends_on('py-mock', type='test', when='^python@2.7:2.8') diff --git a/var/spack/repos/builtin/packages/py-theano/package.py b/var/spack/repos/builtin/packages/py-theano/package.py index 3d647265116..72bab1ce093 100644 --- a/var/spack/repos/builtin/packages/py-theano/package.py +++ b/var/spack/repos/builtin/packages/py-theano/package.py @@ -34,7 +34,7 @@ class PyTheano(PythonPackage): version('0.8.2', 'f2d0dfe7df141115201077cd933b2c52') - variant('gpu', default=False, + variant('gpu', default=False, description='Builds with support for GPUs via CUDA and cuDNN') depends_on('python@2.6:2.8,3.3:') @@ -48,6 +48,7 @@ class PyTheano(PythonPackage): depends_on('cuda', when='+gpu') depends_on('libgpuarray', when='+gpu') - # test requirements - # depends_on('py-nose@1.3.0:', type=('build', 'run')) - # depends_on('py-nose-parameterized@0.5.0:', type=('build', 'run')) + + # TODO: Add a 'test' deptype + # depends_on('py-nose@1.3.0:', type='test') + # depends_on('py-nose-parameterized@0.5.0:', type='test') From 811ea4f465438c285478665fa967c0a12b8c7691 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Fri, 23 Jun 2017 09:52:57 -0400 Subject: [PATCH 1116/2394] ninja-fortran: a Fortran-capable fork of ninja build tool (#4539) * ninja-fortran: a Fortran-capable fork of ninja build tool * Use url_for_version for clarity * Clean ninja-fortran * Cleanup in the original ninja package --- .../builtin/packages/ninja-fortran/package.py | 49 +++++++++++++++++++ .../repos/builtin/packages/ninja/package.py | 11 ++--- 2 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 var/spack/repos/builtin/packages/ninja-fortran/package.py diff --git a/var/spack/repos/builtin/packages/ninja-fortran/package.py b/var/spack/repos/builtin/packages/ninja-fortran/package.py new file mode 100644 index 00000000000..9b733cee6c4 --- /dev/null +++ b/var/spack/repos/builtin/packages/ninja-fortran/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class NinjaFortran(Package): + """ A Fortran capable fork of ninja """ + homepage = "https://github.com/Kitware/ninja" + url = "https://github.com/Kitware/ninja/archive/v1.7.2.gcc0ea.kitware.dyndep-1.tar.gz" + + version('1.7.2', '3982f508c415c0abaca34cb5e92e711a') + + extends('python') + + def url_for_version(self, version): + url = 'https://github.com/Kitware/ninja/archive/v{0}.gcc0ea.kitware.dyndep-1.tar.gz' + return url.format(version) + + def install(self, spec, prefix): + python('configure.py', '--bootstrap') + + mkdir(prefix.bin) + install('ninja', prefix.bin) + install_tree('misc', join_path(prefix, 'misc')) + with working_dir(prefix.bin): + os.symlink('ninja', 'ninja-build') diff --git a/var/spack/repos/builtin/packages/ninja/package.py b/var/spack/repos/builtin/packages/ninja/package.py index dcd00576dd3..87da2913fd8 100644 --- a/var/spack/repos/builtin/packages/ninja/package.py +++ b/var/spack/repos/builtin/packages/ninja/package.py @@ -38,9 +38,8 @@ class Ninja(Package): def install(self, spec, prefix): python('configure.py', '--bootstrap') - cp = which('cp') - - bindir = os.path.join(prefix, 'bin/') - mkdir(bindir) - cp('-a', 'ninja', bindir) - cp('-a', 'misc', prefix) + mkdir(prefix.bin) + install('ninja', prefix.bin) + install_tree('misc', join_path(prefix, 'misc')) + with working_dir(prefix.bin): + os.symlink('ninja', 'ninja-build') From 75b8d728bd502193b1e8e213f8e04206f3bde056 Mon Sep 17 00:00:00 2001 From: iulian787 Date: Fri, 23 Jun 2017 09:53:43 -0400 Subject: [PATCH 1117/2394] Moab 5.0 and meshkit 1.5 (#4557) * enable some of the tools do not make zoltan default * modify moab package add shared, debug options to cgm, too build some tools by default (mbsize, mbconvert) add hdf5, netcdf dependency add pnetcdf variant (dependency), metis, parmetis, zoltan add shared, debug, fortran options to moab * few kinks for moab zoltan should be built without fortran api, otherwise moab complains (need to fix) also, notice that when built with cgm, shared can't find cgm libraries for the new tools/geometry execs install in serial for the time being (because of example makefile duplicate?) for example, these builds are successful: spack install moab+mpi+hdf5+zoltan ^mpich@3.2 spack install moab+mpi+hdf5+shared ^mpich@3.2 * force hdf5+mpi if both are specified also, something like this works: spack install moab+mpi+hdf5+cgm ^mpich@3.2 ^cgm+oce+mpi ^oce@0.17.2 use mpich32, and cgm built with oce 0.17.2 * forgot about irel, fbigeom, mbcoupler * add meshkit package simple build so far, moab and cgm deps only also, an example of complex build for cgm spack install moab+mpi+hdf5+cgm+irel+fbigeom ^mpich@3.2 ^cgm+oce+mpi ^oce@0.17.2 * for meshkit, moab needs to have irel, fbigeom * forgot to self.spec after building moab with cgm with oce 0.17.2, we can build meshkit with something like this spack install meshkit ^moab/tsb75zk cgm depencency is found out from moab moab has to be built with irel and fbigeom * add netgen package and review do not support yet older versions of meshkit (which depend on lasso, etc) add netgen package; tested with meshkit (netgen has to be built without occ, for meshkit) We are not enforcing that yet, we may have to test * use conflicts where needed, suggested by review remove release candidates * flake8 alignment errors * flake8 * reviews flake8 alignment explicit options, even for default variants variant for netgen should be "gui", with the default ~gui (False) FIXME: with-occ does not work right for netgen ; maybe it should be disabled? also, with +gui, it should depend on a lot more, like tk, tcl? * flake8 issues whitespaces and a comment in netgen * add more explicit options --without-mpi needs fixing for cgm, moab and meshkit add variable url for netgen (although we don''t know if other versions will appear) * flake8, trailing whitespace --- .../repos/builtin/packages/cgm/package.py | 8 + .../repos/builtin/packages/meshkit/package.py | 81 +++++++++ .../repos/builtin/packages/moab/package.py | 166 +++++++++++++----- .../repos/builtin/packages/netgen/package.py | 83 +++++++++ 4 files changed, 296 insertions(+), 42 deletions(-) create mode 100644 var/spack/repos/builtin/packages/meshkit/package.py create mode 100644 var/spack/repos/builtin/packages/netgen/package.py diff --git a/var/spack/repos/builtin/packages/cgm/package.py b/var/spack/repos/builtin/packages/cgm/package.py index 46838a90571..336cea8867c 100644 --- a/var/spack/repos/builtin/packages/cgm/package.py +++ b/var/spack/repos/builtin/packages/cgm/package.py @@ -39,6 +39,8 @@ class Cgm(AutotoolsPackage): variant("mpi", default=True, description='enable mpi support') variant("oce", default=False, description='enable oce geometry kernel') + variant("debug", default=False, description='enable debug symbols') + variant("shared", default=False, description='enable shared builds') depends_on('mpi', when='+mpi') depends_on('oce+X11', when='+oce') @@ -61,4 +63,10 @@ def configure_args(self): else: args.append("--without-occ") + if '+debug' in spec: + args.append("--enable-debug") + + if '+shared' in spec: + args.append("--enable-shared") + return args diff --git a/var/spack/repos/builtin/packages/meshkit/package.py b/var/spack/repos/builtin/packages/meshkit/package.py new file mode 100644 index 00000000000..8b6edc3647d --- /dev/null +++ b/var/spack/repos/builtin/packages/meshkit/package.py @@ -0,0 +1,81 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class Meshkit(AutotoolsPackage): + """MeshKit is an open-source library of mesh generation functionality. + Its design philosophy is two-fold: it provides a collection of + meshing algorithms for use in real meshing problems, along with + other tools commonly needed to support mesh generation""" + + homepage = "http://sigma.mcs.anl.gov/meshkit-library" + url = "http://ftp.mcs.anl.gov/pub/fathom/meshkit-1.5.0.tar.gz" + + version('1.5.0', '90b52416598ef65525ce4457a50ffe68') + + variant("mpi", default=True, description='enable mpi support') + variant("netgen", default=False, description='enable netgen support') + variant("debug", default=False, description='enable debug symbols') + variant("shared", default=False, description='enable shared builds') + + depends_on('mpi', when='+mpi') + depends_on('netgen', when='+netgen') + depends_on('cgm') + depends_on('moab+irel+fbigeom') + + def configure_args(self): + spec = self.spec + args = [ + "--with-igeom={0}".format(spec['cgm'].prefix), + "--with-imesh={0}".format(spec['moab'].prefix) + ] + if '+mpi' in spec: + args.extend([ + "--with-mpi", + "CC={0}".format(spec['mpi'].mpicc), + "CXX={0}".format(spec['mpi'].mpicxx), + "FC={0}".format(spec['mpi'].mpifc) + ]) +# FIXME without-mpi is not working +# else: +# args.append("--without-mpi") + if '+netgen' in spec: + args.append("--with-netgen={0}".format(spec['netgen'].prefix)) + else: + args.append("--without-netgen") + + if '+debug' in spec: + args.append("--enable-debug") + else: + args.append("--disable-debug") + + if '+shared' in spec: + args.append("--enable-shared") + else: + args.append("--disable-shared") + + return args diff --git a/var/spack/repos/builtin/packages/moab/package.py b/var/spack/repos/builtin/packages/moab/package.py index bd864e0980c..f46aaabf0bb 100644 --- a/var/spack/repos/builtin/packages/moab/package.py +++ b/var/spack/repos/builtin/packages/moab/package.py @@ -25,7 +25,7 @@ from spack import * -class Moab(Package): +class Moab(AutotoolsPackage): """MOAB is a component for representing and evaluating mesh data. MOAB can store structured and unstructured mesh, consisting of elements in the finite element 'zoo.' The functional interface @@ -34,19 +34,43 @@ class Moab(Package): optimized for efficiency in space and time, based on access to mesh in chunks rather than through individual entities, while also versatile enough to support individual entity access.""" - homepage = "https://bitbucket.org/fathomteam/moab" - url = "http://ftp.mcs.anl.gov/pub/fathom/moab-4.9.1.tar.gz" + homepage = "https://bitbucket.org/fathomteam/moab" + url = "http://ftp.mcs.anl.gov/pub/fathom/moab-5.0.0.tar.gz" + + version('5.0.0', '1840ca02366f4d3237d44af63e239e3b') + version('4.9.2', '540931a604c180bbd3c1bb3ee8c51dd0') version('4.9.1', '19cc2189fa266181ad9109b18d0b2ab8') version('4.9.0', '40695d0a159040683cfa05586ad4a7c2') version('4.8.2', '1dddd10f162fce3cfffaedc48f6f467d') + variant('mpi', default=True, description='enable mpi support') + variant('hdf5', default=True, + description='Required to enable the hdf5 (default I/O) format') variant('netcdf', default=False, description='Required to enable the ExodusII reader/writer.') - variant('shared', default=True, + variant('pnetcdf', default=False, + description='Enable pnetcdf (AKA parallel-netcdf) support') + variant('netcdf', default=False, + description='Required to enable the ExodusII reader/writer.') + variant('zoltan', default=False, description='Enable zoltan support') + variant('cgm', default=False, description='Enable common geometric module') + variant('metis', default=True, description='Enable metis link') + variant('parmetis', default=True, description='Enable parmetis link') + variant('irel', default=False, description='Enable irel interface') + variant('fbigeom', default=False, description='Enable fbigeom interface') + variant('coupler', default=True, description='Enable mbcoupler tool') + + variant("debug", default=False, description='enable debug symbols') + variant('shared', default=False, description='Enables the build of shared libraries') variant('fortran', default=True, description='Enable Fortran support') + conflicts('+irel', when='~cgm') + conflicts('+pnetcdf', when='~mpi') + conflicts('+parmetis', when='~mpi') + conflicts('+coupler', when='~mpi') + # There are many possible variants for MOAB. Here are examples for # two of them: # @@ -55,61 +79,119 @@ class Moab(Package): # depends_on('cgns', when='+cgns') # depends_on('vtk', when='+vtk') - depends_on('mpi') - depends_on('hdf5+mpi') + depends_on('mpi', when='+mpi') + depends_on('hdf5', when='+hdf5') + depends_on('hdf5+mpi', when='+hdf5+mpi') depends_on('netcdf', when='+netcdf') - depends_on('netcdf+mpi', when='+netcdf') - depends_on('metis') - depends_on('parmetis') - depends_on('zoltan') - depends_on('zoltan~fortran', when='~fortran') + depends_on('parallel-netcdf', when='+pnetcdf') + depends_on('cgm', when='+cgm') + depends_on('metis', when='+metis') + depends_on('parmetis', when='+parmetis') + # FIXME it seems that zoltan needs to be built without fortran + depends_on('zoltan~fortran', when='+zoltan') - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec options = [ - '--prefix=%s' % prefix, '--enable-optimize', - '--disable-tools', - '--disable-mbconvert', - '--disable-hexmodops', '--disable-vtkMOABReader', - '--disable-mbsize', - '--disable-mbskin', '--disable-mbtagprop', '--disable-mbmem', '--disable-spheredecomp', '--disable-mbsurfplot', - '--disable-mbpart', - '--disable-dagmc', '--disable-gsets', - '--disable-mbmerge', - '--disable-mbdepth', - '--disable-mbcoupler', '--disable-mcnpmit', '--disable-refiner', '--disable-h5mtools', '--disable-mbcslam', - '--disable-mbquality', - '--disable-ahf', - '--disable-mbumr', - '--disable-imesh', '--with-pic', - '--with-mpi=%s' % spec['mpi'].prefix, - '--with-hdf5=%s' % spec['hdf5'].prefix, - '--with-parmetis=%s' % spec['parmetis'].prefix, - '--with-zoltan=%s' % spec['zoltan'].prefix, - '--without-vtk', - 'CXX=%s' % spec['mpi'].mpicxx, - 'CC=%s' % spec['mpi'].mpicc, - 'FC=%s' % spec['mpi'].mpifc] + '--without-vtk' + ] + if '+mpi' in spec: + options.extend([ + '--with-mpi=%s' % spec['mpi'].prefix, + 'CXX=%s' % spec['mpi'].mpicxx, + 'CC=%s' % spec['mpi'].mpicc, + 'FC=%s' % spec['mpi'].mpifc + ]) + if '+parmetis' in spec: + options.append('--with-parmetis=%s' % spec['parmetis'].prefix) + else: + options.append('--without-parmetis') +# FIXME: --without-mpi does not configure right +# else: +# options.append('--without-mpi') + + if '+hdf5' in spec: + options.append('--with-hdf5=%s' % spec['hdf5'].prefix) + else: + options.append('--without-hdf5') + + if '+netcdf' in spec: + options.append('--with-netcdf=%s' % spec['netcdf'].prefix) + else: + options.append('--without-netcdf') + + if '+pnetcdf' in spec: + options.append('--with-pnetcdf=%s' + % spec['parallel-netcdf'].prefix) + else: + options.append('--without-pnetcdf') + + if '+cgm' in spec: + options.append('--with-cgm=%s' % spec['cgm'].prefix) + if '+irel' in spec: + options.append('--enable-irel') + else: + options.append('--disable-irel') + else: + options.append('--without-cgm') + if '+fbigeom' in spec: + options.append('--enable-fbigeom') + else: + options.append('--disable-fbigeom') + + if '+coupler' in spec: + options.append('--enable-mbcoupler') + else: + options.append('--disable-mbcoupler') + + if '+metis' in spec: + options.append('--with-metis=%s' % spec['metis'].prefix) + else: + options.append('--without-metis') + + if '+parmetis' in spec: + options.append('--with-parmetis=%s' % spec['parmetis'].prefix) + else: + options.append('--without-parmetis') + + if '+zoltan' in spec: + options.append('--with-zoltan=%s' % spec['zoltan'].prefix) + else: + options.append('--without-zoltan') + + if '+debug' in spec: + options.append('--enable-debug') + else: + options.append('--disable-debug') + + # FIXME it seems that with cgm and shared, we have a link + # issue in tools/geometry + if '+shared' in spec: + options.append('--enable-shared') + else: + options.append('--disable-shared') if '~fortran' in spec: options.append('--disable-fortran') - if '+shared' in spec: - options.append('--enable-shared') - if '+netcdf' in spec: - options.append('--with-netcdf=%s' % spec['netcdf'].prefix) + else: + options.append('--enable-fortran') - configure(*options) - make() - make('install') + return options + + # FIXME Run the install phase with -j 1. There seems to be a problem with + # parallel installations of examples + def install(self, spec, prefix): + make('install', parallel=False) diff --git a/var/spack/repos/builtin/packages/netgen/package.py b/var/spack/repos/builtin/packages/netgen/package.py new file mode 100644 index 00000000000..ee96fac04dd --- /dev/null +++ b/var/spack/repos/builtin/packages/netgen/package.py @@ -0,0 +1,83 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Netgen(AutotoolsPackage): + """NETGEN is an automatic 3d tetrahedral mesh generator. It accepts + input from constructive solid geometry (CSG) or boundary + representation (BRep) from STL file format. The connection to + a geometry kernel allows the handling of IGES and STEP files. + NETGEN contains modules for mesh optimization and hierarchical + mesh refinement. """ + + homepage = "https://ngsolve.org/" + url = "https://gigenet.dl.sourceforge.net/project/netgen-mesher/netgen-mesher/5.3/netgen-5.3.1.tar.gz" + + version('5.3.1', 'afd5a9b0b1296c242a9c554f06af6510') + + variant("mpi", default=True, description='enable mpi support') + variant("oce", default=False, description='enable oce geometry kernel') + variant("gui", default=False, description='enable gui') + variant("metis", default=False, description='use metis for partitioning') + + depends_on('mpi', when='+mpi') + depends_on('oce+X11', when='+oce') + depends_on('metis', when='+metis') + + def url_for_version(self, version): + url = "https://gigenet.dl.sourceforge.net/project/netgen-mesher/netgen-mesher/{0}/netgen-{1}.tar.gz" + return url.format(version.up_to(2), version) + + def configure_args(self): + spec = self.spec + args = [] + if '+mpi' in spec: + args.extend([ + "CC={0}".format(spec['mpi'].mpicc), + "CXX={0}".format(spec['mpi'].mpicxx) + ]) + else: + args.append("--without-mpi") + + if '+oce' in spec: + args.append("--with-occ={0}".format(spec['oce'].prefix)) + # FIXME + # due to a bug in netgen config, when --without-occ is specified + # or --with-occ=no, OCC flags is turned true, and build fails + # later; so do not specify anything like that + # else: + # args.append("--without-occ") + + if '~gui' in spec: + args.append("--disable-gui") + else: + args.append("--enable-gui") + if '+metis' in spec: + args.append('--with-metis=%s' % spec['metis'].prefix) + else: + args.append("--without-metis") + + return args From e27ccac4a5baf42bb5e6ed132a130557f34e89cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=B6hme?= Date: Fri, 23 Jun 2017 06:59:59 -0700 Subject: [PATCH 1118/2394] caliper: Update caliper package (#4532) * caliper: Update caliper package * caliper: Explicitly enable/disable cmake options for all variants * caliper: Fix flake8 warnings * caliper: Modify defaults for Mac * caliper: Fix some more flake8 warnings --- .../repos/builtin/packages/caliper/package.py | 62 +++++++++++++++---- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index c9d4a41bc2d..2350880d225 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -24,11 +24,15 @@ ############################################################################## from spack import * +import sys -class Caliper(Package): - """Caliper is a generic context annotation system. It gives programmers the - ability to provide arbitrary program context information to (performance) - tools at runtime. + +class Caliper(CMakePackage): + """Caliper is a program instrumentation and performance measurement + framework. It provides data collection mechanisms and a source-code + annotation API for a variety of performance engineering use cases, + e.g., performance profiling, tracing, monitoring, and + auto-tuning. """ homepage = "https://github.com/LLNL/Caliper" @@ -36,15 +40,47 @@ class Caliper(Package): version('master', git='https://github.com/LLNL/Caliper.git') - variant('mpi', default=True, description='Enable MPI function wrappers.') + variant('mpi', default=True, + description='Enable MPI wrappers') + variant('dyninst', default=False, + description='Enable symbol translation support with dyninst') + # libunwind has some issues on Mac + variant('callpath', default=sys.platform != 'darwin', + description='Enable callpath service (requires libunwind)') + # pthread_self() signature is incompatible with PAPI_thread_init() on Mac + variant('papi', default=sys.platform != 'darwin', + description='Enable PAPI service') + # gotcha doesn't work on Mac + variant('gotcha', default=sys.platform != 'darwin', + description='Enable GOTCHA support') - depends_on('libunwind') - depends_on('papi') + depends_on('dyninst', when='+dyninst') + depends_on('papi', when='+papi') depends_on('mpi', when='+mpi') - depends_on('cmake', type='build') + depends_on('libunwind', when='+callpath') - def install(self, spec, prefix): - with working_dir('build', create=True): - cmake('..', *std_cmake_args) - make() - make("install") + depends_on('cmake', type='build') + depends_on('python', type='build') + + def cmake_args(self): + spec = self.spec + + args = [ + '-DBUILD_TESTING=Off', + '-DWITH_DOCS=Off', + '-DWITH_TEST_APPS=Off', + '-DWITH_DYNINST=%s' % ('On' if '+dyninst' in spec else 'Off'), + '-DWITH_CALLPATH=%s' % ('On' if '+callpath' in spec else 'Off'), + '-DWITH_GOTCHA=%s' % ('On' if '+gotcha' in spec else 'Off'), + '-DWITH_PAPI=%s' % ('On' if '+papi' in spec else 'Off'), + '-DWITH_MPI=%s' % ('On' if '+mpi' in spec else 'Off') + ] + + if '+papi' in spec: + args.append('-DPAPI_PREFIX=%s' % spec['papi'].prefix) + + if '+mpi' in spec: + args.append('-DMPI_C_COMPILER=%s' % spec['mpi'].mpicc) + args.append('-DMPI_CXX_COMPILER=%s' % spec['mpi'].mpicxx) + + return args From a4de3177374e4afe5f025c0526a0a198e7a76645 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Sat, 24 Jun 2017 00:01:09 +1000 Subject: [PATCH 1119/2394] Gtkplus icons (#4511) * gtkplus: set XDG_DATA_DIRS * shared-mime-info: database of common MIME types * gtkplus: needs shared-mime-info for correct handling of stock icons * shared-mime-info: builds with newer intltool than provided by some platforms * atk: set XDG_DATA_DIRS at run-time * gdk-pixbuf: set XDG_DATA_DIRS at run-time * gtkplus: set XDG_DATA_DIRS at run-time * pango: set XDG_DATA_DIRS at run-time * shared-mime-info: set XDG_DATA_DIRS at run-time --- .../repos/builtin/packages/atk/package.py | 2 + .../builtin/packages/gdk-pixbuf/package.py | 2 + .../repos/builtin/packages/gtkplus/package.py | 7 +++ .../repos/builtin/packages/pango/package.py | 2 + .../packages/shared-mime-info/package.py | 47 +++++++++++++++++++ 5 files changed, 60 insertions(+) create mode 100644 var/spack/repos/builtin/packages/shared-mime-info/package.py diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py index 7605059850b..8b6a51c52f7 100644 --- a/var/spack/repos/builtin/packages/atk/package.py +++ b/var/spack/repos/builtin/packages/atk/package.py @@ -48,3 +48,5 @@ def url_for_version(self, version): def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.prepend_path("XDG_DATA_DIRS", self.prefix.share) + run_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index deb8b778195..6b9328e45dc 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -49,3 +49,5 @@ class GdkPixbuf(AutotoolsPackage): def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.prepend_path("XDG_DATA_DIRS", self.prefix.share) + run_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index 227ecc3e099..ac34eeebcb9 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -45,6 +45,7 @@ class Gtkplus(AutotoolsPackage): depends_on("pango~X", when='~X') depends_on("pango+X", when='+X') depends_on('gobject-introspection', when='+X') + depends_on('shared-mime-info') patch('no-demos.patch') @@ -52,3 +53,9 @@ def patch(self): # remove disable deprecated flag. filter_file(r'CFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CFLAGS"', '', 'configure', string=True) + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) + run_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index 3c1c46e64bf..6b97bd641e6 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -64,3 +64,5 @@ def install(self, spec, prefix): def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.prepend_path("XDG_DATA_DIRS", self.prefix.share) + run_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) diff --git a/var/spack/repos/builtin/packages/shared-mime-info/package.py b/var/spack/repos/builtin/packages/shared-mime-info/package.py new file mode 100644 index 00000000000..b7d9deb5f7e --- /dev/null +++ b/var/spack/repos/builtin/packages/shared-mime-info/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class SharedMimeInfo(AutotoolsPackage): + """Database of common MIME types.""" + + homepage = "https://freedesktop.org/wiki/Software/shared-mime-info" + url = "http://freedesktop.org/~hadess/shared-mime-info-1.8.tar.xz" + + version('1.8', 'f6dcadce764605552fc956563efa058c') + + parallel = False + + depends_on('glib') + depends_on('libxml2') + depends_on('intltool', type='build') + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) + run_env.prepend_path("XDG_DATA_DIRS", + self.prefix.share) From 7fb9c3903fc523fbae785475629114daf677b6a5 Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Fri, 23 Jun 2017 15:18:50 +0100 Subject: [PATCH 1120/2394] Minor fixes to CNTK package (#4429) * Remove unneeded patch lines which fail for the most recent CNTK version on the head of the git repo * Really check for NVML/GDK * Fix some violations --- var/spack/repos/builtin/packages/cntk/build.patch | 15 --------------- var/spack/repos/builtin/packages/cntk/package.py | 8 ++++++-- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/var/spack/repos/builtin/packages/cntk/build.patch b/var/spack/repos/builtin/packages/cntk/build.patch index 0b1e46e9116..7ae6101db36 100644 --- a/var/spack/repos/builtin/packages/cntk/build.patch +++ b/var/spack/repos/builtin/packages/cntk/build.patch @@ -244,21 +244,6 @@ index 2c2e5cee7..c9c0072c9 100755 function find_gdk_include () { find_dir "$default_gdk_includes" "$gdk_include_check" -@@ -352,11 +382,14 @@ function show_help () - echo " --with-openblas[=directory] (experimental) $(show_default $(find_openblas))" - echo " --with-buildtype=(debug|release) $(show_default $default_buildtype)" - echo " --with-kaldi[=directory] $(show_default $(find_kaldi))" -+ echo " --with-openfst[=directory] $(show_default $(find_openfst))" - echo " --with-opencv[=directory] $(show_default $(find_opencv))" - echo " --with-libzip[=directory] $(show_default $(find_libzip))" - echo " --with-code-coverage[=(yes|no)] $(show_default ${default_use_code_coverage})" - echo " --with-boost[=directory] $(show_default $(find_boost))" - echo " --with-protobuf[=directory] $(show_default $(find_protobuf))" -+ echo " --with-multiverso[=directory] $(show_default $(find_multiverso))" -+ echo " --with-1bitsgd[=directory] $(show_default $(find_onebitsgd))" - echo " --with-py-versions=(space-separated list of 27, 34, 35)" - echo " --with-py27-path[=directory] $(show_default $(find_python 27))" - echo " --with-py34-path[=directory] $(show_default $(find_python 34))" @@ -751,6 +784,46 @@ do fi fi diff --git a/var/spack/repos/builtin/packages/cntk/package.py b/var/spack/repos/builtin/packages/cntk/package.py index 801c69dae49..025498fa8a1 100644 --- a/var/spack/repos/builtin/packages/cntk/package.py +++ b/var/spack/repos/builtin/packages/cntk/package.py @@ -31,10 +31,10 @@ class Cntk(Package): via a directed graph.""" homepage = "https://www.microsoft.com/en-us/research/product/cognitive-toolkit" - url = "https://github.com/Microsoft/CNTK/archive/v2.0.beta15.0.tar.gz" + url = "https://github.com/Microsoft/CNTK/archive/v2.0.tar.gz" version('master', git='https://github.com/Microsoft/CNTK.git', branch='master') - version('2.0.rc1', url='https://github.com/Microsoft/CNTK/archive/v2.0.rc1.tar.gz') + version('2.0', '8038780f1169ceea578e5ef4d69e4c6f') variant('opencv', default=False, description="Enable OpenCV support.") variant('kaldi', default=False, description="Enable Kaldi support.") @@ -106,6 +106,10 @@ def install(self, spec, prefix): args.append('--with-cudnn={0}' .format(spec['cudnn'].prefix)) args.append('--with-nccl={0}'.format(spec['nccl'].prefix)) + args.append('--with-gdk-include={0}' + .format(spec['cuda'].prefix.include)) + args.append('--with-gdk-nvml-lib={0}/stubs' + .format(spec['cuda'].prefix.lib64)) configure(*args) From 087b3885f934b5fc1449a32eeb26241efb436e0b Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 23 Jun 2017 18:14:01 +0200 Subject: [PATCH 1121/2394] cp2k: added missing macros to the makefile (#88) (#4589) --- var/spack/repos/builtin/packages/cp2k/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 00d60521213..2a41de54e0b 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -93,6 +93,8 @@ def install(self, spec, prefix): cppflags = [ '-D__FFTW3', '-D__LIBINT', + '-D__LIBINT_MAX_AM=6', + '-D__LIBDERIV_MAX_AM1=5', spec['fftw'].headers.cpp_flags ] From 2126c03a2855d40f9ba846da538a8aae3bf2c4b7 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 23 Jun 2017 17:41:44 +0100 Subject: [PATCH 1122/2394] update for new version: qt-5.9.0 (#4590) --- var/spack/repos/builtin/packages/qt/package.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index a2f7350aaf6..8a6220f7571 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -31,10 +31,12 @@ class Qt(Package): """Qt is a comprehensive cross-platform C++ application framework.""" homepage = 'http://qt.io' + # Alternative location 'http://download.qt.io/official_releases/qt/' url = 'http://download.qt.io/archive/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz' list_url = 'http://download.qt.io/archive/qt/' list_depth = 3 + version('5.9.0', '9c8bc8b828c2b56721980368266df9d9') version('5.8.0', 'a9f2494f75f966e2f22358ec367d8f41') version('5.7.1', '031fb3fd0c3cc0f1082644492683f18d') version('5.7.0', '9a46cce61fc64c20c3ac0a0e0fa41b42') @@ -150,7 +152,11 @@ def url_for_version(self, version): elif version >= Version('3'): url += 'free-' - url += str(version) + '.tar.gz' + # 5.9 only has xz format. From 5.2.1 -> 5.8.0 .gz or .xz were possible + if version >= Version('5.9'): + url += str(version) + '.tar.xz' + else: + url += str(version) + '.tar.gz' return url From 6c1c290a6362bc34199de1b8d81e8cad6d32e9a0 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 23 Jun 2017 18:41:29 +0100 Subject: [PATCH 1123/2394] relax qt dependency for paraview (#4592) - previously restricted everything to QT-4, but now only have that restriction for older paraview versions. --- var/spack/repos/builtin/packages/paraview/package.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index bf2246c6bad..cb5acf0e236 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -52,9 +52,8 @@ class Paraview(CMakePackage): depends_on('py-numpy', when='+python', type='run') depends_on('py-matplotlib', when='+python', type='run') depends_on('mpi', when='+mpi') - depends_on('qt@:4', when='+qt') - # TODO# depends_on('qt@:4', when='@:5.2.0+qt') - # TODO# depends_on('qt@5', when='@5.3.0:+qt') + depends_on('qt', when='@5.3.0:+qt') + depends_on('qt@:4', when='@:5.2.0+qt') depends_on('bzip2') depends_on('freetype') From b7ca7274b8ac8969d2862e43babc9a7582c2d046 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 23 Jun 2017 22:36:29 +0200 Subject: [PATCH 1124/2394] mv variants: packages are now needed only during normalization (#4129) * mv variants: packages are now needed only during normalization The relationship among different types of variants have been weakened, in the sense that now it is permitted to compare MV, SV and BV among each other. The mechanism that permits this is an implicit conversion of the variant passed as argument to the type of the variant asking to execute a constrain, satisfies, etc. operation. * asbtract variant: added a new type of variant An abstract variant is like a multi valued variant, but behaves differently on "satisfies" requests, because it will reply "True" to requests that **it could** satisfy eventually. Tests have been modified to reflect the fact that abstract variants are now what get parsed from expressions like `foo=bar` given by users. * Removed 'concrete=' and 'normal=' kwargs from Spec.__init__ These two keyword arguments where only used in one test module to force a Spec to 'appear' concrete. I suspect they are just a leftover from another refactoring, as now there's the private method '_mark_concrete' that does essentially the same job. Removed them to reduce a bit the clutter in Spec. * Moved yaml related functions from MultiValuedVariant to AbstractVariant. This is to fix the erros that are occurring in epfl-scitas#73, and that I can't reproduce locally. --- lib/spack/spack/spec.py | 46 ++------ lib/spack/spack/test/spec_semantics.py | 90 +++++++++++----- lib/spack/spack/test/variant.py | 120 +++++++++++++++------ lib/spack/spack/variant.py | 144 +++++++++++++++---------- 4 files changed, 241 insertions(+), 159 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 602f2fd878c..b4b80dab6fb 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1012,12 +1012,9 @@ def __init__(self, spec_like, *dep_like, **kwargs): self._hash = other._hash self._cmp_key_cache = other._cmp_key_cache - # Specs are by default not assumed to be normal, but in some - # cases we've read them from a file want to assume normal. - # This allows us to manipulate specs that Spack doesn't have - # package.py files for. - self._normal = kwargs.get('normal', False) - self._concrete = kwargs.get('concrete', False) + # Specs are by default not assumed to be normal or concrete. + self._normal = False + self._concrete = False # Allow a spec to be constructed with an external path. self.external_path = kwargs.get('external_path', None) @@ -1099,13 +1096,14 @@ def _add_flag(self, name, value): assert(self.compiler_flags is not None) self.compiler_flags[name] = value.split() else: + # FIXME: # All other flags represent variants. 'foo=true' and 'foo=false' # map to '+foo' and '~foo' respectively. As such they need a # BoolValuedVariant instance. if str(value).upper() == 'TRUE' or str(value).upper() == 'FALSE': self.variants[name] = BoolValuedVariant(name, value) else: - self.variants[name] = MultiValuedVariant(name, value) + self.variants[name] = AbstractVariant(name, value) def _set_architecture(self, **kwargs): """Called by the parser to set the architecture.""" @@ -1892,18 +1890,6 @@ def _evaluate_dependency_conditions(self, name): # evaluate when specs to figure out constraints on the dependency. dep = None for when_spec, dep_spec in conditions.items(): - # If self was concrete it would have changed the variants in - # when_spec automatically. As here we are for sure during the - # concretization process, self is not concrete and we must change - # the variants in when_spec on our own to avoid using a - # MultiValuedVariant whe it is instead a SingleValuedVariant - try: - substitute_single_valued_variants(when_spec) - except SpecError as e: - msg = 'evaluating a `when=` statement gives ' + e.message - e.message = msg - raise - sat = self.satisfies(when_spec, strict=True) if sat: if dep is None: @@ -2131,7 +2117,6 @@ def validate_or_raise(self): if not compilers.supported(spec.compiler): raise UnsupportedCompilerError(spec.compiler.name) - # FIXME: Move the logic below into the variant.py module # Ensure correctness of variants (if the spec is not virtual) if not spec.virtual: pkg_cls = spec.package_class @@ -2140,7 +2125,7 @@ def validate_or_raise(self): if not_existing: raise UnknownVariantError(spec.name, not_existing) - substitute_single_valued_variants(spec) + substitute_abstract_variants(spec) def constrain(self, other, deps=True): """Merge the constraints of other with self. @@ -2351,24 +2336,6 @@ def satisfies(self, other, deps=True, strict=False, strict_deps=False): elif strict and (other.compiler and not self.compiler): return False - # If self is a concrete spec, and other is not virtual, then we need - # to substitute every multi-valued variant that needs it with a - # single-valued variant. - if self.concrete: - try: - # When parsing a spec every variant of the form - # 'foo=value' will be interpreted by default as a - # multi-valued variant. During validation of the - # variants we use the information in the package - # to turn any variant that needs it to a single-valued - # variant. - substitute_single_valued_variants(other) - except (SpecError, KeyError): - # Catch the two things that could go wrong above: - # 1. name is not a valid variant (KeyError) - # 2. the variant is not validated (SpecError) - return False - var_strict = strict if (not self.name) or (not other.name): var_strict = True @@ -3209,7 +3176,6 @@ def spec(self, name): return spec def variant(self, name=None): - # TODO: Make generalized variants possible if name: return name else: diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 80a2f63bde5..4b21e8d0e13 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -29,31 +29,46 @@ from spack.variant import * -def check_satisfies(spec, anon_spec, concrete=False): - left = Spec(spec, concrete=concrete) +def target_factory(spec_string, target_concrete): + spec = Spec(spec_string) + + if target_concrete: + spec._mark_concrete() + substitute_abstract_variants(spec) + + return spec + + +def argument_factory(argument_spec, left): try: - right = Spec(anon_spec) # if it's not anonymous, allow it. + # If it's not anonymous, allow it + right = target_factory(argument_spec, False) except Exception: - right = parse_anonymous_spec(anon_spec, left.name) + right = parse_anonymous_spec(argument_spec, left.name) + return right + + +def check_satisfies(target_spec, argument_spec, target_concrete=False): + + left = target_factory(target_spec, target_concrete) + right = argument_factory(argument_spec, left) # Satisfies is one-directional. assert left.satisfies(right) - assert left.satisfies(anon_spec) + assert left.satisfies(argument_spec) - # if left satisfies right, then we should be able to consrain + # If left satisfies right, then we should be able to constrain # right by left. Reverse is not always true. right.copy().constrain(left) -def check_unsatisfiable(spec, anon_spec, concrete=False): - left = Spec(spec, concrete=concrete) - try: - right = Spec(anon_spec) # if it's not anonymous, allow it. - except Exception: - right = parse_anonymous_spec(anon_spec, left.name) +def check_unsatisfiable(target_spec, argument_spec, target_concrete=False): + + left = target_factory(target_spec, target_concrete) + right = argument_factory(argument_spec, left) assert not left.satisfies(right) - assert not left.satisfies(anon_spec) + assert not left.satisfies(argument_spec) with pytest.raises(UnsatisfiableSpecError): right.copy().constrain(left) @@ -297,7 +312,9 @@ def test_unsatisfiable_multi_value_variant(self): # Semantics for a multi-valued variant is different # Depending on whether the spec is concrete or not - a = Spec('multivalue_variant foo="bar"', concrete=True) + a = target_factory( + 'multivalue_variant foo="bar"', target_concrete=True + ) spec_str = 'multivalue_variant foo="bar,baz"' b = Spec(spec_str) assert not a.satisfies(b) @@ -309,12 +326,15 @@ def test_unsatisfiable_multi_value_variant(self): a = Spec('multivalue_variant foo="bar"') spec_str = 'multivalue_variant foo="bar,baz"' b = Spec(spec_str) - assert not a.satisfies(b) - assert not a.satisfies(spec_str) + # The specs are abstract and they **could** be constrained + assert a.satisfies(b) + assert a.satisfies(spec_str) # An abstract spec can instead be constrained assert a.constrain(b) - a = Spec('multivalue_variant foo="bar,baz"', concrete=True) + a = target_factory( + 'multivalue_variant foo="bar,baz"', target_concrete=True + ) spec_str = 'multivalue_variant foo="bar,baz,quux"' b = Spec(spec_str) assert not a.satisfies(b) @@ -326,8 +346,9 @@ def test_unsatisfiable_multi_value_variant(self): a = Spec('multivalue_variant foo="bar,baz"') spec_str = 'multivalue_variant foo="bar,baz,quux"' b = Spec(spec_str) - assert not a.satisfies(b) - assert not a.satisfies(spec_str) + # The specs are abstract and they **could** be constrained + assert a.satisfies(b) + assert a.satisfies(spec_str) # An abstract spec can instead be constrained assert a.constrain(b) # ...but will fail during concretization if there are @@ -339,8 +360,11 @@ def test_unsatisfiable_multi_value_variant(self): a = Spec('multivalue_variant fee="bar"') spec_str = 'multivalue_variant fee="baz"' b = Spec(spec_str) - assert not a.satisfies(b) - assert not a.satisfies(spec_str) + # The specs are abstract and they **could** be constrained, + # as before concretization I don't know which type of variant + # I have (if it is not a BV) + assert a.satisfies(b) + assert a.satisfies(spec_str) # A variant cannot be parsed as single-valued until we try to # concretize. This means that we can constrain the variant above assert a.constrain(b) @@ -351,17 +375,25 @@ def test_unsatisfiable_multi_value_variant(self): def test_unsatisfiable_variant_types(self): # These should fail due to incompatible types - check_unsatisfiable('multivalue_variant +foo', - 'multivalue_variant foo="bar"') - check_unsatisfiable('multivalue_variant ~foo', - 'multivalue_variant foo="bar"') + # FIXME: these needs to be checked as the new relaxed + # FIXME: semantic makes them fail (constrain does not raise) + # check_unsatisfiable('multivalue_variant +foo', + # 'multivalue_variant foo="bar"') + # check_unsatisfiable('multivalue_variant ~foo', + # 'multivalue_variant foo="bar"') - check_unsatisfiable('multivalue_variant foo="bar"', - 'multivalue_variant +foo') + check_unsatisfiable( + target_spec='multivalue_variant foo="bar"', + argument_spec='multivalue_variant +foo', + target_concrete=True + ) - check_unsatisfiable('multivalue_variant foo="bar"', - 'multivalue_variant ~foo') + check_unsatisfiable( + target_spec='multivalue_variant foo="bar"', + argument_spec='multivalue_variant ~foo', + target_concrete=True + ) def test_satisfies_unconstrained_variant(self): # only asked for mpich, no constraints. Either will do. diff --git a/lib/spack/spack/test/variant.py b/lib/spack/spack/test/variant.py index 0c546a5dacc..565b6dac863 100644 --- a/lib/spack/spack/test/variant.py +++ b/lib/spack/spack/test/variant.py @@ -93,13 +93,22 @@ def test_satisfies(self): assert not a.satisfies(c) assert not c.satisfies(a) - # Cannot satisfy the constraint with an object of - # another type + # Implicit type conversion for variants of other types + b_sv = SingleValuedVariant('foo', 'bar') - assert not b.satisfies(b_sv) + assert b.satisfies(b_sv) + d_sv = SingleValuedVariant('foo', 'True') + assert d.satisfies(d_sv) + almost_d_bv = SingleValuedVariant('foo', 'true') + assert not d.satisfies(almost_d_bv) d_bv = BoolValuedVariant('foo', 'True') - assert not d.satisfies(d_bv) + assert d.satisfies(d_bv) + # This case is 'peculiar': the two BV instances are + # equivalent, but if converted to MV they are not + # as MV is case sensitive with respect to 'True' and 'False' + almost_d_bv = BoolValuedVariant('foo', 'true') + assert not d.satisfies(almost_d_bv) def test_compatible(self): @@ -126,12 +135,15 @@ def test_compatible(self): assert d.compatible(b) assert not d.compatible(c) - # Can't be compatible with other types - b_bv = BoolValuedVariant('foo', 'True') - assert not b.compatible(b_bv) + # Implicit type conversion for other types b_sv = SingleValuedVariant('foo', 'True') - assert not b.compatible(b_sv) + assert b.compatible(b_sv) + assert not c.compatible(b_sv) + + b_bv = BoolValuedVariant('foo', 'True') + assert b.compatible(b_bv) + assert not c.compatible(b_bv) def test_constrain(self): @@ -169,13 +181,19 @@ def test_constrain(self): with pytest.raises(ValueError): a.constrain(b) - # Try to constrain on other types + # Implicit type conversion for variants of other types + a = MultiValuedVariant('foo', 'bar,baz') - sv = SingleValuedVariant('foo', 'bar') - bv = BoolValuedVariant('foo', 'True') - for v in (sv, bv): - with pytest.raises(TypeError): - a.constrain(v) + b_sv = SingleValuedVariant('foo', 'bar') + c_sv = SingleValuedVariant('foo', 'barbaz') + + assert not a.constrain(b_sv) + assert a.constrain(c_sv) + + d_bv = BoolValuedVariant('foo', 'True') + + assert a.constrain(d_bv) + assert not a.constrain(d_bv) def test_yaml_entry(self): @@ -239,13 +257,17 @@ def test_satisfies(self): assert not c.satisfies(b) assert not c.satisfies(d) - # Cannot satisfy the constraint with an object of - # another type + # Implicit type conversion for variants of other types + a_mv = MultiValuedVariant('foo', 'bar') - assert not a.satisfies(a_mv) + assert a.satisfies(a_mv) + multiple_values = MultiValuedVariant('foo', 'bar,baz') + assert not a.satisfies(multiple_values) e_bv = BoolValuedVariant('foo', 'True') - assert not e.satisfies(e_bv) + assert e.satisfies(e_bv) + almost_e_bv = BoolValuedVariant('foo', 'true') + assert not e.satisfies(almost_e_bv) def test_compatible(self): @@ -272,13 +294,35 @@ def test_compatible(self): assert not d.compatible(b) assert not d.compatible(c) - # Can't be compatible with other types + # Implicit type conversion for variants of other types + a_mv = MultiValuedVariant('foo', 'bar') - assert not a.compatible(a_mv) + b_mv = MultiValuedVariant('fee', 'bar') + c_mv = MultiValuedVariant('foo', 'baz') + d_mv = MultiValuedVariant('foo', 'bar') + + assert not a.compatible(b_mv) + assert not a.compatible(c_mv) + assert a.compatible(d_mv) + + assert not b.compatible(a_mv) + assert not b.compatible(c_mv) + assert not b.compatible(d_mv) + + assert not c.compatible(a_mv) + assert not c.compatible(b_mv) + assert not c.compatible(d_mv) + + assert d.compatible(a_mv) + assert not d.compatible(b_mv) + assert not d.compatible(c_mv) e = SingleValuedVariant('foo', 'True') e_bv = BoolValuedVariant('foo', 'True') - assert not e.compatible(e_bv) + almost_e_bv = BoolValuedVariant('foo', 'true') + + assert e.compatible(e_bv) + assert not e.compatible(almost_e_bv) def test_constrain(self): @@ -314,13 +358,12 @@ def test_constrain(self): t = SingleValuedVariant('foo', 'bar') assert a == t - # Try to constrain on other values + # Implicit type conversion for variants of other types a = SingleValuedVariant('foo', 'True') mv = MultiValuedVariant('foo', 'True') bv = BoolValuedVariant('foo', 'True') for v in (mv, bv): - with pytest.raises(TypeError): - a.constrain(v) + assert not a.constrain(v) def test_yaml_entry(self): a = SingleValuedVariant('foo', 'bar') @@ -398,13 +441,21 @@ def test_satisfies(self): assert not d.satisfies(b) assert not d.satisfies(c) - # Cannot satisfy the constraint with an object of - # another type + # BV variants are case insensitive to 'True' or 'False' d_mv = MultiValuedVariant('foo', 'True') + assert d.satisfies(d_mv) + assert not b.satisfies(d_mv) + + d_mv = MultiValuedVariant('foo', 'FaLsE') assert not d.satisfies(d_mv) + assert b.satisfies(d_mv) + + d_mv = MultiValuedVariant('foo', 'bar') + assert not d.satisfies(d_mv) + assert not b.satisfies(d_mv) d_sv = SingleValuedVariant('foo', 'True') - assert not d.satisfies(d_sv) + assert d.satisfies(d_sv) def test_compatible(self): @@ -431,12 +482,14 @@ def test_compatible(self): assert not d.compatible(b) assert not d.compatible(c) - # Can't be compatible with other types - d_mv = MultiValuedVariant('foo', 'True') - assert not d.compatible(d_mv) + for value in ('True', 'TrUe', 'TRUE'): + d_mv = MultiValuedVariant('foo', value) + assert d.compatible(d_mv) + assert not c.compatible(d_mv) - d_sv = SingleValuedVariant('foo', 'True') - assert not d.compatible(d_sv) + d_sv = SingleValuedVariant('foo', value) + assert d.compatible(d_sv) + assert not c.compatible(d_sv) def test_constrain(self): # Try to constrain on a value equal to self @@ -476,8 +529,7 @@ def test_constrain(self): sv = SingleValuedVariant('foo', 'True') mv = MultiValuedVariant('foo', 'True') for v in (sv, mv): - with pytest.raises(TypeError): - a.constrain(v) + assert not a.constrain(v) def test_yaml_entry(self): diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index fe08e4529e9..2acea30ddd5 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -26,6 +26,7 @@ variants both in packages and in specs. """ +import functools import inspect import re @@ -172,19 +173,37 @@ def variant_cls(self): return SingleValuedVariant -@lang.key_ordering -class MultiValuedVariant(object): - """A variant that can hold multiple values at once.""" +def implicit_variant_conversion(method): + """Converts other to type(self) and calls method(self, other) - @staticmethod - def from_node_dict(name, value): - """Reconstruct a variant from a node dict.""" - if isinstance(value, list): - value = ','.join(value) - return MultiValuedVariant(name, value) - elif str(value).upper() == 'TRUE' or str(value).upper() == 'FALSE': - return BoolValuedVariant(name, value) - return SingleValuedVariant(name, value) + Args: + method: any predicate method that takes another variant as an argument + + Returns: decorated method + """ + @functools.wraps(method) + def convert(self, other): + # We don't care if types are different as long as I can convert + # other to type(self) + try: + other = type(self)(other.name, other._original_value) + except (error.SpecError, ValueError): + return False + return method(self, other) + return convert + + +@lang.key_ordering +class AbstractVariant(object): + """A variant that has not yet decided who it wants to be. It behaves like + a multi valued variant which **could** do things. + + This kind of variant is generated during parsing of expressions like + ``foo=bar`` and differs from multi valued variants because it will + satisfy any other variant with the same name. This is because it **could** + do it if it grows up to be a multi valued variant with the right set of + values. + """ def __init__(self, name, value): self.name = name @@ -197,6 +216,24 @@ def __init__(self, name, value): # Invokes property setter self.value = value + @staticmethod + def from_node_dict(name, value): + """Reconstruct a variant from a node dict.""" + if isinstance(value, list): + value = ','.join(value) + return MultiValuedVariant(name, value) + elif str(value).upper() == 'TRUE' or str(value).upper() == 'FALSE': + return BoolValuedVariant(name, value) + return SingleValuedVariant(name, value) + + def yaml_entry(self): + """Returns a key, value tuple suitable to be an entry in a yaml dict. + + Returns: + tuple: (name, value_representation) + """ + return self.name, list(self.value) + @property def value(self): """Returns a tuple of strings containing the values stored in @@ -241,9 +278,10 @@ def copy(self): """ return type(self)(self.name, self._original_value) + @implicit_variant_conversion def satisfies(self, other): - """Returns true if ``other.name == self.name`` and ``other.value`` is - a strict subset of self. Does not try to validate. + """Returns true if ``other.name == self.name``, because any value that + other holds and is not in self yet **could** be added. Args: other: constraint to be met for the method to return True @@ -251,18 +289,11 @@ def satisfies(self, other): Returns: bool: True or False """ - # If types are different the constraint is not satisfied - if type(other) != type(self): - return False - # If names are different then `self` does not satisfy `other` - # (`foo=bar` does not satisfy `baz=bar`) - if other.name != self.name: - return False - - # Otherwise we want all the values in `other` to be also in `self` - return all(v in self.value for v in other.value) + # (`foo=bar` will never satisfy `baz=bar`) + return other.name == self.name + @implicit_variant_conversion def compatible(self, other): """Returns True if self and other are compatible, False otherwise. @@ -275,13 +306,10 @@ def compatible(self, other): Returns: bool: True or False """ - # If types are different they are not compatible - if type(other) != type(self): - return False - # If names are different then they are not compatible return other.name == self.name + @implicit_variant_conversion def constrain(self, other): """Modify self to match all the constraints for other if both instances are multi-valued. Returns True if self changed, @@ -293,25 +321,13 @@ def constrain(self, other): Returns: bool: True or False """ - # If types are different they are not compatible - if type(other) != type(self): - msg = 'other must be of type \'{0.__name__}\'' - raise TypeError(msg.format(type(self))) - if self.name != other.name: raise ValueError('variants must have the same name') + old_value = self.value self.value = ','.join(sorted(set(self.value + other.value))) return old_value != self.value - def yaml_entry(self): - """Returns a key, value tuple suitable to be an entry in a yaml dict. - - Returns: - tuple: (name, value_representation) - """ - return self.name, list(self.value) - def __contains__(self, item): return item in self._value @@ -327,6 +343,28 @@ def __str__(self): ) +class MultiValuedVariant(AbstractVariant): + """A variant that can hold multiple values at once.""" + @implicit_variant_conversion + def satisfies(self, other): + """Returns true if ``other.name == self.name`` and ``other.value`` is + a strict subset of self. Does not try to validate. + + Args: + other: constraint to be met for the method to return True + + Returns: + bool: True or False + """ + # If names are different then `self` does not satisfy `other` + # (`foo=bar` does not satisfy `baz=bar`) + if other.name != self.name: + return False + + # Otherwise we want all the values in `other` to be also in `self` + return all(v in self.value for v in other.value) + + class SingleValuedVariant(MultiValuedVariant): """A variant that can hold multiple values, but one at a time.""" @@ -342,11 +380,8 @@ def _value_setter(self, value): def __str__(self): return '{0}={1}'.format(self.name, self.value) + @implicit_variant_conversion def satisfies(self, other): - # If types are different the constraint is not satisfied - if type(other) != type(self): - return False - # If names are different then `self` does not satisfy `other` # (`foo=bar` does not satisfy `baz=bar`) if other.name != self.name: @@ -357,11 +392,8 @@ def satisfies(self, other): def compatible(self, other): return self.satisfies(other) + @implicit_variant_conversion def constrain(self, other): - if type(other) != type(self): - msg = 'other must be of type \'{0.__name__}\'' - raise TypeError(msg.format(type(self))) - if self.name != other.name: raise ValueError('variants must have the same name') @@ -411,8 +443,9 @@ def __init__(self, spec): def __setitem__(self, name, vspec): # Raise a TypeError if vspec is not of the right type - if not isinstance(vspec, MultiValuedVariant): - msg = 'VariantMap accepts only values of type VariantSpec' + if not isinstance(vspec, AbstractVariant): + msg = 'VariantMap accepts only values of variant types' + msg += ' [got {0} instead]'.format(type(vspec).__name__) raise TypeError(msg) # Raise an error if the variant was already in this map @@ -546,7 +579,7 @@ def __str__(self): return string.getvalue() -def substitute_single_valued_variants(spec): +def substitute_abstract_variants(spec): """Uses the information in `spec.package` to turn any variant that needs it into a SingleValuedVariant. @@ -556,10 +589,9 @@ def substitute_single_valued_variants(spec): for name, v in spec.variants.items(): pkg_cls = type(spec.package) pkg_variant = spec.package.variants[name] - pkg_variant.validate_or_raise(v, pkg_cls) - spec.variants.substitute( - pkg_variant.make_variant(v._original_value) - ) + new_variant = pkg_variant.make_variant(v._original_value) + pkg_variant.validate_or_raise(new_variant, pkg_cls) + spec.variants.substitute(new_variant) class DuplicateVariantError(error.SpecError): From e8f60629fcc2514eac8c1db59ce06291fd3d4c11 Mon Sep 17 00:00:00 2001 From: Rajeev Jain Date: Sat, 24 Jun 2017 15:34:14 -0500 Subject: [PATCH 1125/2394] Add cgm to moab, for resolving conflicts installing MeshKit on a brand new machine. (#4596) Use spack install meshkit ^cgm+oce, for geometry engine support, by default cgm is facet-based --- var/spack/repos/builtin/packages/meshkit/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/meshkit/package.py b/var/spack/repos/builtin/packages/meshkit/package.py index 8b6edc3647d..121ba78bcb5 100644 --- a/var/spack/repos/builtin/packages/meshkit/package.py +++ b/var/spack/repos/builtin/packages/meshkit/package.py @@ -45,7 +45,7 @@ class Meshkit(AutotoolsPackage): depends_on('mpi', when='+mpi') depends_on('netgen', when='+netgen') depends_on('cgm') - depends_on('moab+irel+fbigeom') + depends_on('moab+cgm+irel+fbigeom') def configure_args(self): spec = self.spec From add971e416c3398cf93c33e1415f06f2e1fcf138 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 24 Jun 2017 21:34:15 -0600 Subject: [PATCH 1126/2394] votca-xtp: new package (#4597) --- .../builtin/packages/votca-xtp/package.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/votca-xtp/package.py diff --git a/var/spack/repos/builtin/packages/votca-xtp/package.py b/var/spack/repos/builtin/packages/votca-xtp/package.py new file mode 100644 index 00000000000..951df7b8c6a --- /dev/null +++ b/var/spack/repos/builtin/packages/votca-xtp/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2017, The VOTCA Development Team (http://www.votca.org) +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class VotcaXtp(CMakePackage): + """Versatile Object-oriented Toolkit for Coarse-graining + Applications (VOTCA) is a package intended to reduce the amount of + routine work when doing systematic coarse-graining of various + systems. The core is written in C++. + + This package contains the VOTCA exciton transport engine. + """ + homepage = "http://www.votca.org" + # No release yet + # url = "https://github.com/votca/xtp/tarball/v1.4" + + version('develop', git='https://github.com/votca/xtp', branch='master') + + variant('debug', default=False, description='Build debug version') + + depends_on("cmake@2.8:", type='build') + depends_on("votca-tools@develop", when='@develop') + depends_on("votca-csg@develop", when='@develop') + depends_on("votca-ctp@develop", when='@develop') + depends_on("votca-moo@develop", when='@develop') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' From cac4362f6491bf48dd287f31f3de9169464713ea Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 24 Jun 2017 22:22:55 -0700 Subject: [PATCH 1127/2394] Make LICENSE recognizable by GitHub. (#4598) --- LICENSE | 574 +++++++++++------- NOTICE | 32 + README.md | 2 +- bin/sbang | 2 +- bin/spack | 2 +- bin/spack-python | 2 +- lib/spack/docs/conf.py | 2 +- lib/spack/docs/tutorial/examples/0.package.py | 2 +- lib/spack/docs/tutorial/examples/1.package.py | 2 +- lib/spack/docs/tutorial/examples/2.package.py | 2 +- lib/spack/docs/tutorial/examples/3.package.py | 2 +- lib/spack/docs/tutorial/examples/4.package.py | 2 +- lib/spack/env/cc | 2 +- lib/spack/external/__init__.py | 2 +- lib/spack/llnl/__init__.py | 2 +- lib/spack/llnl/util/__init__.py | 2 +- lib/spack/llnl/util/filesystem.py | 2 +- lib/spack/llnl/util/lang.py | 2 +- lib/spack/llnl/util/link_tree.py | 2 +- lib/spack/llnl/util/lock.py | 2 +- lib/spack/llnl/util/tty/__init__.py | 2 +- lib/spack/llnl/util/tty/colify.py | 2 +- lib/spack/llnl/util/tty/color.py | 2 +- lib/spack/llnl/util/tty/log.py | 2 +- lib/spack/spack/__init__.py | 2 +- lib/spack/spack/abi.py | 2 +- lib/spack/spack/architecture.py | 2 +- lib/spack/spack/build_environment.py | 2 +- lib/spack/spack/build_systems/__init__.py | 2 +- lib/spack/spack/build_systems/autotools.py | 2 +- lib/spack/spack/build_systems/cmake.py | 2 +- lib/spack/spack/build_systems/makefile.py | 2 +- lib/spack/spack/build_systems/perl.py | 2 +- lib/spack/spack/build_systems/python.py | 2 +- lib/spack/spack/build_systems/r.py | 2 +- lib/spack/spack/build_systems/waf.py | 2 +- lib/spack/spack/cmd/__init__.py | 2 +- lib/spack/spack/cmd/activate.py | 2 +- lib/spack/spack/cmd/arch.py | 2 +- lib/spack/spack/cmd/bootstrap.py | 2 +- lib/spack/spack/cmd/build.py | 2 +- lib/spack/spack/cmd/cd.py | 2 +- lib/spack/spack/cmd/checksum.py | 2 +- lib/spack/spack/cmd/clean.py | 2 +- lib/spack/spack/cmd/common/__init__.py | 2 +- lib/spack/spack/cmd/common/arguments.py | 2 +- lib/spack/spack/cmd/compiler.py | 2 +- lib/spack/spack/cmd/compilers.py | 2 +- lib/spack/spack/cmd/config.py | 2 +- lib/spack/spack/cmd/configure.py | 2 +- lib/spack/spack/cmd/create.py | 4 +- lib/spack/spack/cmd/deactivate.py | 2 +- lib/spack/spack/cmd/debug.py | 2 +- lib/spack/spack/cmd/dependents.py | 2 +- lib/spack/spack/cmd/diy.py | 2 +- lib/spack/spack/cmd/docs.py | 2 +- lib/spack/spack/cmd/edit.py | 2 +- lib/spack/spack/cmd/env.py | 2 +- lib/spack/spack/cmd/extensions.py | 2 +- lib/spack/spack/cmd/fetch.py | 2 +- lib/spack/spack/cmd/find.py | 2 +- lib/spack/spack/cmd/flake8.py | 2 +- lib/spack/spack/cmd/gpg.py | 2 +- lib/spack/spack/cmd/graph.py | 2 +- lib/spack/spack/cmd/help.py | 2 +- lib/spack/spack/cmd/info.py | 2 +- lib/spack/spack/cmd/install.py | 2 +- lib/spack/spack/cmd/list.py | 2 +- lib/spack/spack/cmd/load.py | 2 +- lib/spack/spack/cmd/location.py | 2 +- lib/spack/spack/cmd/md5.py | 2 +- lib/spack/spack/cmd/mirror.py | 2 +- lib/spack/spack/cmd/module.py | 2 +- lib/spack/spack/cmd/patch.py | 2 +- lib/spack/spack/cmd/pkg.py | 2 +- lib/spack/spack/cmd/providers.py | 2 +- lib/spack/spack/cmd/purge.py | 2 +- lib/spack/spack/cmd/pydoc.py | 2 +- lib/spack/spack/cmd/python.py | 2 +- lib/spack/spack/cmd/reindex.py | 2 +- lib/spack/spack/cmd/repo.py | 2 +- lib/spack/spack/cmd/restage.py | 2 +- lib/spack/spack/cmd/setup.py | 2 +- lib/spack/spack/cmd/spec.py | 2 +- lib/spack/spack/cmd/stage.py | 2 +- lib/spack/spack/cmd/test.py | 2 +- lib/spack/spack/cmd/uninstall.py | 2 +- lib/spack/spack/cmd/unload.py | 2 +- lib/spack/spack/cmd/unuse.py | 2 +- lib/spack/spack/cmd/url.py | 2 +- lib/spack/spack/cmd/use.py | 2 +- lib/spack/spack/cmd/versions.py | 2 +- lib/spack/spack/cmd/view.py | 2 +- lib/spack/spack/compiler.py | 2 +- lib/spack/spack/compilers/__init__.py | 2 +- lib/spack/spack/compilers/cce.py | 2 +- lib/spack/spack/compilers/clang.py | 2 +- lib/spack/spack/compilers/gcc.py | 2 +- lib/spack/spack/compilers/intel.py | 2 +- lib/spack/spack/compilers/nag.py | 2 +- lib/spack/spack/compilers/pgi.py | 2 +- lib/spack/spack/compilers/xl.py | 2 +- lib/spack/spack/compilers/xl_r.py | 2 +- lib/spack/spack/concretize.py | 2 +- lib/spack/spack/config.py | 2 +- lib/spack/spack/database.py | 2 +- lib/spack/spack/directives.py | 2 +- lib/spack/spack/directory_layout.py | 2 +- lib/spack/spack/environment.py | 2 +- lib/spack/spack/error.py | 2 +- lib/spack/spack/fetch_strategy.py | 2 +- lib/spack/spack/file_cache.py | 2 +- lib/spack/spack/graph.py | 2 +- lib/spack/spack/hooks/__init__.py | 2 +- lib/spack/spack/hooks/case_consistency.py | 2 +- lib/spack/spack/hooks/extensions.py | 2 +- lib/spack/spack/hooks/licensing.py | 2 +- .../spack/hooks/module_file_generation.py | 2 +- lib/spack/spack/hooks/sbang.py | 2 +- lib/spack/spack/hooks/yaml_version_check.py | 2 +- lib/spack/spack/main.py | 2 +- lib/spack/spack/mirror.py | 2 +- lib/spack/spack/modules.py | 2 +- lib/spack/spack/multimethod.py | 2 +- lib/spack/spack/operating_systems/__init__.py | 2 +- lib/spack/spack/operating_systems/cnk.py | 2 +- lib/spack/spack/operating_systems/cnl.py | 2 +- .../spack/operating_systems/linux_distro.py | 2 +- lib/spack/spack/operating_systems/mac_os.py | 2 +- lib/spack/spack/package.py | 2 +- lib/spack/spack/package_prefs.py | 2 +- lib/spack/spack/package_test.py | 2 +- lib/spack/spack/parse.py | 2 +- lib/spack/spack/patch.py | 2 +- lib/spack/spack/platforms/__init__.py | 2 +- lib/spack/spack/platforms/bgq.py | 2 +- lib/spack/spack/platforms/cray.py | 2 +- lib/spack/spack/platforms/darwin.py | 2 +- lib/spack/spack/platforms/linux.py | 2 +- lib/spack/spack/platforms/test.py | 2 +- lib/spack/spack/provider_index.py | 2 +- lib/spack/spack/repository.py | 2 +- lib/spack/spack/resource.py | 2 +- lib/spack/spack/schema/__init__.py | 2 +- lib/spack/spack/schema/compilers.py | 2 +- lib/spack/spack/schema/config.py | 2 +- lib/spack/spack/schema/mirrors.py | 2 +- lib/spack/spack/schema/modules.py | 2 +- lib/spack/spack/schema/packages.py | 2 +- lib/spack/spack/schema/repos.py | 2 +- lib/spack/spack/spec.py | 2 +- lib/spack/spack/stage.py | 2 +- lib/spack/spack/store.py | 2 +- lib/spack/spack/test/__init__.py | 2 +- lib/spack/spack/test/architecture.py | 2 +- lib/spack/spack/test/build_system_guess.py | 2 +- lib/spack/spack/test/build_systems.py | 2 +- lib/spack/spack/test/cc.py | 2 +- lib/spack/spack/test/cmd/__init__.py | 2 +- lib/spack/spack/test/cmd/find.py | 2 +- lib/spack/spack/test/cmd/flake8.py | 2 +- lib/spack/spack/test/cmd/gpg.py | 2 +- lib/spack/spack/test/cmd/install.py | 2 +- lib/spack/spack/test/cmd/module.py | 2 +- lib/spack/spack/test/cmd/python.py | 2 +- lib/spack/spack/test/cmd/test_compiler_cmd.py | 2 +- lib/spack/spack/test/cmd/uninstall.py | 2 +- lib/spack/spack/test/cmd/url.py | 2 +- lib/spack/spack/test/compilers.py | 2 +- lib/spack/spack/test/concretize.py | 2 +- .../spack/test/concretize_preferences.py | 2 +- lib/spack/spack/test/config.py | 2 +- lib/spack/spack/test/conftest.py | 2 +- lib/spack/spack/test/data/sourceme_first.sh | 2 +- .../spack/test/data/sourceme_parameters.sh | 2 +- lib/spack/spack/test/data/sourceme_second.sh | 2 +- lib/spack/spack/test/data/sourceme_unicode.sh | 2 +- lib/spack/spack/test/database.py | 2 +- lib/spack/spack/test/directory_layout.py | 2 +- lib/spack/spack/test/environment.py | 2 +- lib/spack/spack/test/file_cache.py | 2 +- lib/spack/spack/test/file_list.py | 2 +- lib/spack/spack/test/git_fetch.py | 2 +- lib/spack/spack/test/graph.py | 2 +- lib/spack/spack/test/hg_fetch.py | 2 +- lib/spack/spack/test/install.py | 2 +- lib/spack/spack/test/link_tree.py | 2 +- lib/spack/spack/test/lock.py | 2 +- lib/spack/spack/test/make_executable.py | 2 +- lib/spack/spack/test/mirror.py | 2 +- lib/spack/spack/test/module_parsing.py | 2 +- lib/spack/spack/test/modules.py | 2 +- lib/spack/spack/test/multimethod.py | 2 +- lib/spack/spack/test/namespace_trie.py | 2 +- lib/spack/spack/test/optional_deps.py | 2 +- lib/spack/spack/test/package_sanity.py | 2 +- lib/spack/spack/test/packages.py | 2 +- lib/spack/spack/test/pattern.py | 2 +- lib/spack/spack/test/provider_index.py | 2 +- lib/spack/spack/test/python_version.py | 2 +- lib/spack/spack/test/sbang.py | 2 +- lib/spack/spack/test/spack_yaml.py | 2 +- lib/spack/spack/test/spec_dag.py | 2 +- lib/spack/spack/test/spec_semantics.py | 2 +- lib/spack/spack/test/spec_syntax.py | 2 +- lib/spack/spack/test/spec_yaml.py | 2 +- lib/spack/spack/test/stage.py | 2 +- lib/spack/spack/test/svn_fetch.py | 2 +- lib/spack/spack/test/url_fetch.py | 2 +- lib/spack/spack/test/url_parse.py | 2 +- lib/spack/spack/test/url_substitution.py | 2 +- lib/spack/spack/test/variant.py | 2 +- lib/spack/spack/test/versions.py | 2 +- lib/spack/spack/test/web.py | 2 +- lib/spack/spack/url.py | 2 +- lib/spack/spack/util/__init__.py | 2 +- lib/spack/spack/util/compression.py | 2 +- lib/spack/spack/util/crypto.py | 2 +- lib/spack/spack/util/debug.py | 2 +- lib/spack/spack/util/environment.py | 2 +- lib/spack/spack/util/executable.py | 2 +- lib/spack/spack/util/gpg.py | 2 +- lib/spack/spack/util/module_cmd.py | 2 +- lib/spack/spack/util/multiproc.py | 2 +- lib/spack/spack/util/naming.py | 2 +- lib/spack/spack/util/path.py | 2 +- lib/spack/spack/util/pattern.py | 2 +- lib/spack/spack/util/prefix.py | 2 +- lib/spack/spack/util/spack_json.py | 2 +- lib/spack/spack/util/spack_yaml.py | 2 +- lib/spack/spack/util/string.py | 2 +- lib/spack/spack/util/web.py | 2 +- lib/spack/spack/variant.py | 2 +- lib/spack/spack/version.py | 2 +- share/spack/setup-env.csh | 2 +- share/spack/setup-env.sh | 2 +- share/spack/spack-completion.bash | 2 +- .../repos/builtin.mock/packages/a/package.py | 2 +- .../repos/builtin.mock/packages/b/package.py | 2 +- .../builtin.mock/packages/boost/package.py | 2 +- .../repos/builtin.mock/packages/c/package.py | 2 +- .../builtin.mock/packages/callpath/package.py | 2 +- .../builtin.mock/packages/canfail/package.py | 2 +- .../packages/cmake-client/package.py | 2 +- .../builtin.mock/packages/cmake/package.py | 2 +- .../packages/conflict-parent/package.py | 2 +- .../builtin.mock/packages/conflict/package.py | 2 +- .../packages/develop-test/package.py | 2 +- .../packages/direct-mpich/package.py | 2 +- .../packages/dt-diamond-bottom/package.py | 2 +- .../packages/dt-diamond-left/package.py | 2 +- .../packages/dt-diamond-right/package.py | 2 +- .../packages/dt-diamond/package.py | 2 +- .../builtin.mock/packages/dtbuild1/package.py | 2 +- .../builtin.mock/packages/dtbuild2/package.py | 2 +- .../builtin.mock/packages/dtbuild3/package.py | 2 +- .../builtin.mock/packages/dtlink1/package.py | 2 +- .../builtin.mock/packages/dtlink2/package.py | 2 +- .../builtin.mock/packages/dtlink3/package.py | 2 +- .../builtin.mock/packages/dtlink4/package.py | 2 +- .../builtin.mock/packages/dtlink5/package.py | 2 +- .../builtin.mock/packages/dtrun1/package.py | 2 +- .../builtin.mock/packages/dtrun2/package.py | 2 +- .../builtin.mock/packages/dtrun3/package.py | 2 +- .../builtin.mock/packages/dttop/package.py | 2 +- .../builtin.mock/packages/dtuse/package.py | 2 +- .../builtin.mock/packages/dyninst/package.py | 2 +- .../repos/builtin.mock/packages/e/package.py | 2 +- .../builtin.mock/packages/extendee/package.py | 2 +- .../packages/extension1/package.py | 2 +- .../packages/extension2/package.py | 2 +- .../packages/externalmodule/package.py | 2 +- .../packages/externalprereq/package.py | 2 +- .../packages/externaltest/package.py | 2 +- .../packages/externaltool/package.py | 2 +- .../packages/externalvirtual/package.py | 2 +- .../packages/failing-build/package.py | 2 +- .../builtin.mock/packages/fake/package.py | 2 +- .../builtin.mock/packages/flake8/package.py | 2 +- .../builtin.mock/packages/git-test/package.py | 2 +- .../builtin.mock/packages/hg-test/package.py | 2 +- .../builtin.mock/packages/hypre/package.py | 2 +- .../packages/indirect-mpich/package.py | 2 +- .../builtin.mock/packages/libdwarf/package.py | 2 +- .../builtin.mock/packages/libelf/package.py | 2 +- .../builtin.mock/packages/mpich/package.py | 2 +- .../builtin.mock/packages/mpich2/package.py | 2 +- .../builtin.mock/packages/mpileaks/package.py | 2 +- .../packages/multi-provider-mpi/package.py | 2 +- .../packages/multimethod-base/package.py | 2 +- .../packages/multimethod/package.py | 2 +- .../packages/multivalue_variant/package.py | 2 +- .../packages/netlib-blas/package.py | 2 +- .../packages/netlib-lapack/package.py | 2 +- .../packages/openblas-with-lapack/package.py | 2 +- .../builtin.mock/packages/openblas/package.py | 2 +- .../packages/optional-dep-test-2/package.py | 2 +- .../packages/optional-dep-test-3/package.py | 2 +- .../packages/optional-dep-test/package.py | 2 +- .../packages/othervirtual/package.py | 2 +- .../builtin.mock/packages/python/package.py | 2 +- .../builtin.mock/packages/svn-test/package.py | 2 +- .../trivial-install-test-package/package.py | 2 +- .../builtin.mock/packages/url-test/package.py | 2 +- .../builtin.mock/packages/zmpi/package.py | 2 +- .../repos/builtin/packages/abinit/package.py | 2 +- .../repos/builtin/packages/abyss/package.py | 2 +- .../repos/builtin/packages/ack/package.py | 2 +- .../builtin/packages/activeharmony/package.py | 2 +- .../builtin/packages/adept-utils/package.py | 2 +- .../repos/builtin/packages/adios/package.py | 2 +- .../repos/builtin/packages/adlbx/package.py | 2 +- .../repos/builtin/packages/adol-c/package.py | 2 +- .../builtin/packages/allinea-forge/package.py | 2 +- .../packages/allinea-reports/package.py | 2 +- .../builtin/packages/alquimia/package.py | 2 +- .../repos/builtin/packages/amrex/package.py | 2 +- .../repos/builtin/packages/andi/package.py | 2 +- .../repos/builtin/packages/ant/package.py | 2 +- .../repos/builtin/packages/antlr/package.py | 2 +- .../repos/builtin/packages/ape/package.py | 2 +- .../repos/builtin/packages/apex/package.py | 2 +- .../builtin/packages/applewmproto/package.py | 2 +- .../repos/builtin/packages/appres/package.py | 2 +- .../builtin/packages/apr-util/package.py | 2 +- .../repos/builtin/packages/apr/package.py | 2 +- .../repos/builtin/packages/archer/package.py | 2 +- .../builtin/packages/argtable/package.py | 2 +- .../builtin/packages/armadillo/package.py | 2 +- .../builtin/packages/arpack-ng/package.py | 2 +- .../repos/builtin/packages/arpack/package.py | 2 +- .../builtin/packages/asciidoc/package.py | 2 +- .../repos/builtin/packages/astra/package.py | 2 +- .../repos/builtin/packages/astyle/package.py | 2 +- .../repos/builtin/packages/atk/package.py | 2 +- .../repos/builtin/packages/atlas/package.py | 2 +- .../repos/builtin/packages/atompaw/package.py | 2 +- .../repos/builtin/packages/atop/package.py | 2 +- .../builtin/packages/autoconf/package.py | 2 +- .../repos/builtin/packages/autogen/package.py | 2 +- .../builtin/packages/automaded/package.py | 2 +- .../builtin/packages/automake/package.py | 2 +- .../builtin/packages/bamtools/package.py | 2 +- .../repos/builtin/packages/bamutil/package.py | 2 +- .../packages/bash-completion/package.py | 2 +- .../repos/builtin/packages/bash/package.py | 2 +- .../repos/builtin/packages/bats/package.py | 2 +- .../repos/builtin/packages/bazel/package.py | 2 +- .../repos/builtin/packages/bbcp/package.py | 2 +- .../builtin/packages/bcftools/package.py | 2 +- .../builtin/packages/bcl2fastq2/package.py | 2 +- .../builtin/packages/bdftopcf/package.py | 2 +- .../repos/builtin/packages/bdw-gc/package.py | 2 +- .../repos/builtin/packages/bear/package.py | 2 +- .../builtin/packages/bedtools2/package.py | 2 +- .../builtin/packages/beforelight/package.py | 2 +- .../builtin/packages/benchmark/package.py | 2 +- .../repos/builtin/packages/bertini/package.py | 2 +- .../builtin/packages/bib2xhtml/package.py | 2 +- .../builtin/packages/bigreqsproto/package.py | 2 +- .../builtin/packages/binutils/package.py | 2 +- .../repos/builtin/packages/bison/package.py | 2 +- .../repos/builtin/packages/bitmap/package.py | 2 +- .../builtin/packages/blast-plus/package.py | 2 +- .../repos/builtin/packages/blat/package.py | 4 +- .../repos/builtin/packages/blaze/package.py | 4 +- .../repos/builtin/packages/bliss/package.py | 2 +- .../repos/builtin/packages/blitz/package.py | 2 +- .../repos/builtin/packages/bml/package.py | 2 +- .../repos/builtin/packages/boost/package.py | 2 +- .../boostmplcartesianproduct/package.py | 2 +- .../repos/builtin/packages/bowtie/package.py | 2 +- .../repos/builtin/packages/bowtie2/package.py | 2 +- .../repos/builtin/packages/boxlib/package.py | 2 +- .../builtin/packages/bpp-core/package.py | 2 +- .../builtin/packages/bpp-phyl/package.py | 2 +- .../repos/builtin/packages/bpp-seq/package.py | 2 +- .../builtin/packages/bpp-suite/package.py | 2 +- .../repos/builtin/packages/brigand/package.py | 2 +- .../repos/builtin/packages/bwa/package.py | 2 +- .../repos/builtin/packages/bzip2/package.py | 2 +- .../repos/builtin/packages/c-blosc/package.py | 2 +- .../repos/builtin/packages/caffe/package.py | 2 +- .../repos/builtin/packages/cairo/package.py | 2 +- .../repos/builtin/packages/caliper/package.py | 2 +- .../builtin/packages/callpath/package.py | 2 +- .../repos/builtin/packages/cantera/package.py | 2 +- .../repos/builtin/packages/cask/package.py | 2 +- .../repos/builtin/packages/catch/package.py | 2 +- .../repos/builtin/packages/cbench/package.py | 2 +- .../repos/builtin/packages/cblas/package.py | 2 +- .../packages/cbtf-argonavis/package.py | 2 +- .../builtin/packages/cbtf-krell/package.py | 2 +- .../builtin/packages/cbtf-lanl/package.py | 2 +- .../repos/builtin/packages/cbtf/package.py | 2 +- .../repos/builtin/packages/ccache/package.py | 2 +- .../repos/builtin/packages/cctools/package.py | 2 +- .../repos/builtin/packages/cdd/package.py | 2 +- .../repos/builtin/packages/cddlib/package.py | 2 +- .../repos/builtin/packages/cdo/package.py | 2 +- .../repos/builtin/packages/cereal/package.py | 2 +- .../repos/builtin/packages/cfitsio/package.py | 2 +- .../repos/builtin/packages/cgal/package.py | 2 +- .../repos/builtin/packages/cgm/package.py | 2 +- .../repos/builtin/packages/cgns/package.py | 2 +- .../repos/builtin/packages/charm/package.py | 2 +- .../repos/builtin/packages/chombo/package.py | 2 +- .../builtin/packages/cityhash/package.py | 2 +- .../builtin/packages/cleverleaf/package.py | 2 +- .../repos/builtin/packages/clhep/package.py | 2 +- .../repos/builtin/packages/cloog/package.py | 2 +- .../builtin/packages/clustalo/package.py | 2 +- .../builtin/packages/clustalw/package.py | 2 +- .../repos/builtin/packages/cmake/package.py | 2 +- .../repos/builtin/packages/cmocka/package.py | 2 +- .../repos/builtin/packages/cmor/package.py | 2 +- .../repos/builtin/packages/cnmem/package.py | 2 +- .../repos/builtin/packages/cntk/package.py | 2 +- .../builtin/packages/cntk1bitsgd/package.py | 2 +- .../repos/builtin/packages/coinhsl/package.py | 2 +- .../repos/builtin/packages/compiz/package.py | 2 +- .../packages/compositeproto/package.py | 2 +- .../repos/builtin/packages/conduit/package.py | 2 +- .../builtin/packages/constype/package.py | 2 +- .../builtin/packages/converge/package.py | 2 +- .../builtin/packages/coreutils/package.py | 2 +- .../repos/builtin/packages/cosmomc/package.py | 2 +- .../repos/builtin/packages/cp2k/package.py | 2 +- .../repos/builtin/packages/cppad/package.py | 2 +- .../builtin/packages/cppcheck/package.py | 2 +- .../builtin/packages/cpprestsdk/package.py | 2 +- .../repos/builtin/packages/cppunit/package.py | 2 +- .../repos/builtin/packages/cram/package.py | 2 +- .../builtin/packages/cryptopp/package.py | 2 +- .../repos/builtin/packages/cscope/package.py | 2 +- .../repos/builtin/packages/cub/package.py | 2 +- .../repos/builtin/packages/cube/package.py | 2 +- .../builtin/packages/cuda-memtest/package.py | 2 +- .../repos/builtin/packages/cuda/package.py | 2 +- .../repos/builtin/packages/cudnn/package.py | 2 +- .../repos/builtin/packages/curl/package.py | 2 +- .../repos/builtin/packages/cvs/package.py | 2 +- .../repos/builtin/packages/czmq/package.py | 2 +- .../repos/builtin/packages/dakota/package.py | 2 +- .../builtin/packages/damageproto/package.py | 2 +- .../builtin/packages/damselfly/package.py | 2 +- .../packages/darshan-runtime/package.py | 2 +- .../builtin/packages/darshan-util/package.py | 2 +- .../repos/builtin/packages/dash/package.py | 2 +- .../builtin/packages/datamash/package.py | 2 +- .../repos/builtin/packages/dbus/package.py | 2 +- .../repos/builtin/packages/dealii/package.py | 2 +- .../repos/builtin/packages/dejagnu/package.py | 2 +- .../repos/builtin/packages/dia/package.py | 2 +- .../repos/builtin/packages/direnv/package.py | 2 +- .../builtin/packages/dmxproto/package.py | 2 +- .../builtin/packages/docbook-xml/package.py | 2 +- .../builtin/packages/docbook-xsl/package.py | 2 +- .../builtin/packages/dos2unix/package.py | 2 +- .../packages/double-conversion/package.py | 2 +- .../repos/builtin/packages/doxygen/package.py | 2 +- .../builtin/packages/dri2proto/package.py | 2 +- .../builtin/packages/dri3proto/package.py | 2 +- .../repos/builtin/packages/dtcmp/package.py | 2 +- .../repos/builtin/packages/dyninst/package.py | 2 +- .../builtin/packages/easybuild/package.py | 2 +- .../repos/builtin/packages/eccodes/package.py | 2 +- .../repos/builtin/packages/editres/package.py | 2 +- .../repos/builtin/packages/eigen/package.py | 2 +- .../builtin/packages/elemental/package.py | 2 +- .../builtin/packages/elfutils/package.py | 2 +- .../repos/builtin/packages/elk/package.py | 2 +- .../repos/builtin/packages/elpa/package.py | 2 +- .../repos/builtin/packages/emacs/package.py | 2 +- .../builtin/packages/encodings/package.py | 2 +- .../packages/environment-modules/package.py | 2 +- .../repos/builtin/packages/es/package.py | 2 +- .../repos/builtin/packages/esmf/package.py | 2 +- .../builtin/packages/espresso/package.py | 2 +- .../builtin/packages/espressopp/package.py | 2 +- .../repos/builtin/packages/etsf-io/package.py | 2 +- .../packages/everytrace-example/package.py | 2 +- .../builtin/packages/everytrace/package.py | 2 +- .../repos/builtin/packages/evieext/package.py | 2 +- .../builtin/packages/exmcutils/package.py | 2 +- .../builtin/packages/exodusii/package.py | 2 +- .../builtin/packages/exonerate/package.py | 2 +- .../repos/builtin/packages/expat/package.py | 2 +- .../repos/builtin/packages/expect/package.py | 2 +- .../repos/builtin/packages/extrae/package.py | 2 +- .../packages/exuberant-ctags/package.py | 2 +- .../builtin/packages/f90cache/package.py | 2 +- .../builtin/packages/farmhash/package.py | 2 +- .../builtin/packages/fastmath/package.py | 2 +- .../repos/builtin/packages/fastqc/package.py | 2 +- .../builtin/packages/fastx-toolkit/package.py | 2 +- .../repos/builtin/packages/fenics/package.py | 2 +- .../repos/builtin/packages/ferret/package.py | 2 +- .../repos/builtin/packages/ffmpeg/package.py | 8 +- .../repos/builtin/packages/fftw/package.py | 2 +- .../builtin/packages/findutils/package.py | 2 +- .../repos/builtin/packages/fio/package.py | 2 +- .../repos/builtin/packages/fish/package.py | 2 +- .../builtin/packages/fixesproto/package.py | 2 +- .../repos/builtin/packages/flac/package.py | 2 +- .../repos/builtin/packages/flann/package.py | 2 +- .../repos/builtin/packages/flash/package.py | 2 +- .../builtin/packages/flecsale/package.py | 2 +- .../repos/builtin/packages/flecsi/package.py | 2 +- .../repos/builtin/packages/flex/package.py | 2 +- .../repos/builtin/packages/flint/package.py | 2 +- .../repos/builtin/packages/fltk/package.py | 2 +- .../repos/builtin/packages/flux/package.py | 2 +- .../builtin/packages/foam-extend/package.py | 2 +- .../repos/builtin/packages/folly/package.py | 2 +- .../packages/font-adobe-100dpi/package.py | 2 +- .../packages/font-adobe-75dpi/package.py | 2 +- .../font-adobe-utopia-100dpi/package.py | 2 +- .../font-adobe-utopia-75dpi/package.py | 2 +- .../font-adobe-utopia-type1/package.py | 2 +- .../builtin/packages/font-alias/package.py | 2 +- .../packages/font-arabic-misc/package.py | 2 +- .../packages/font-bh-100dpi/package.py | 2 +- .../builtin/packages/font-bh-75dpi/package.py | 2 +- .../package.py | 2 +- .../font-bh-lucidatypewriter-75dpi/package.py | 2 +- .../builtin/packages/font-bh-ttf/package.py | 2 +- .../builtin/packages/font-bh-type1/package.py | 2 +- .../packages/font-bitstream-100dpi/package.py | 2 +- .../packages/font-bitstream-75dpi/package.py | 2 +- .../packages/font-bitstream-speedo/package.py | 2 +- .../packages/font-bitstream-type1/package.py | 2 +- .../packages/font-cronyx-cyrillic/package.py | 2 +- .../packages/font-cursor-misc/package.py | 2 +- .../packages/font-daewoo-misc/package.py | 2 +- .../builtin/packages/font-dec-misc/package.py | 2 +- .../packages/font-ibm-type1/package.py | 2 +- .../packages/font-isas-misc/package.py | 2 +- .../builtin/packages/font-jis-misc/package.py | 2 +- .../packages/font-micro-misc/package.py | 2 +- .../packages/font-misc-cyrillic/package.py | 2 +- .../packages/font-misc-ethiopic/package.py | 2 +- .../packages/font-misc-meltho/package.py | 2 +- .../packages/font-misc-misc/package.py | 2 +- .../packages/font-mutt-misc/package.py | 2 +- .../packages/font-schumacher-misc/package.py | 2 +- .../packages/font-screen-cyrillic/package.py | 2 +- .../packages/font-sony-misc/package.py | 2 +- .../builtin/packages/font-sun-misc/package.py | 2 +- .../builtin/packages/font-util/package.py | 2 +- .../font-winitzki-cyrillic/package.py | 2 +- .../packages/font-xfree86-type1/package.py | 2 +- .../packages/fontcacheproto/package.py | 2 +- .../builtin/packages/fontconfig/package.py | 2 +- .../builtin/packages/fontsproto/package.py | 2 +- .../builtin/packages/fonttosfnt/package.py | 2 +- .../builtin/packages/freetype/package.py | 2 +- .../builtin/packages/fslsfonts/package.py | 2 +- .../repos/builtin/packages/fstobdf/package.py | 2 +- .../repos/builtin/packages/funhpc/package.py | 2 +- .../repos/builtin/packages/gasnet/package.py | 2 +- .../repos/builtin/packages/gawk/package.py | 2 +- .../builtin/packages/gbenchmark/package.py | 2 +- .../repos/builtin/packages/gcc/package.py | 2 +- .../builtin/packages/gccmakedep/package.py | 2 +- .../repos/builtin/packages/gccxml/package.py | 2 +- .../repos/builtin/packages/gconf/package.py | 2 +- .../repos/builtin/packages/gdal/package.py | 2 +- .../repos/builtin/packages/gdb/package.py | 2 +- .../repos/builtin/packages/gdbm/package.py | 2 +- .../builtin/packages/gdk-pixbuf/package.py | 2 +- .../repos/builtin/packages/geant4/package.py | 2 +- .../builtin/packages/gemmlowp/package.py | 2 +- .../repos/builtin/packages/geos/package.py | 2 +- .../repos/builtin/packages/gettext/package.py | 2 +- .../repos/builtin/packages/gflags/package.py | 2 +- .../packages/ghostscript-fonts/package.py | 2 +- .../builtin/packages/ghostscript/package.py | 2 +- .../repos/builtin/packages/giflib/package.py | 2 +- .../repos/builtin/packages/git-lfs/package.py | 2 +- .../repos/builtin/packages/git/package.py | 2 +- .../repos/builtin/packages/gl2ps/package.py | 2 +- .../repos/builtin/packages/glew/package.py | 2 +- .../repos/builtin/packages/glib/package.py | 2 +- .../repos/builtin/packages/glm/package.py | 2 +- .../repos/builtin/packages/global/package.py | 2 +- .../builtin/packages/globalarrays/package.py | 4 +- .../packages/globus-toolkit/package.py | 2 +- .../repos/builtin/packages/glog/package.py | 2 +- .../repos/builtin/packages/glpk/package.py | 2 +- .../repos/builtin/packages/glproto/package.py | 2 +- .../repos/builtin/packages/gmake/package.py | 2 +- .../repos/builtin/packages/gmime/package.py | 2 +- .../repos/builtin/packages/gmp/package.py | 2 +- .../repos/builtin/packages/gmsh/package.py | 2 +- .../repos/builtin/packages/gnat/package.py | 2 +- .../builtin/packages/gnu-prolog/package.py | 2 +- .../repos/builtin/packages/gnupg/package.py | 2 +- .../repos/builtin/packages/gnuplot/package.py | 2 +- .../repos/builtin/packages/gnutls/package.py | 2 +- .../builtin/packages/go-bootstrap/package.py | 2 +- .../repos/builtin/packages/go/package.py | 2 +- .../packages/gobject-introspection/package.py | 2 +- .../builtin/packages/googletest/package.py | 2 +- .../repos/builtin/packages/gource/package.py | 2 +- .../repos/builtin/packages/gperf/package.py | 2 +- .../builtin/packages/gperftools/package.py | 2 +- .../repos/builtin/packages/grackle/package.py | 2 +- .../repos/builtin/packages/gradle/package.py | 10 +- .../repos/builtin/packages/grandr/package.py | 2 +- .../builtin/packages/graphlib/package.py | 2 +- .../builtin/packages/graphviz/package.py | 2 +- .../builtin/packages/grib-api/package.py | 2 +- .../repos/builtin/packages/gromacs/package.py | 2 +- .../repos/builtin/packages/gsl/package.py | 2 +- .../repos/builtin/packages/gtkplus/package.py | 2 +- .../repos/builtin/packages/gts/package.py | 2 +- .../repos/builtin/packages/guile/package.py | 2 +- .../repos/builtin/packages/h5hut/package.py | 2 +- .../repos/builtin/packages/h5part/package.py | 2 +- .../repos/builtin/packages/h5utils/package.py | 2 +- .../repos/builtin/packages/h5z-zfp/package.py | 2 +- .../repos/builtin/packages/hadoop/package.py | 2 +- .../builtin/packages/harfbuzz/package.py | 2 +- .../repos/builtin/packages/harminv/package.py | 2 +- .../repos/builtin/packages/hdf/package.py | 2 +- .../builtin/packages/hdf5-blosc/package.py | 2 +- .../repos/builtin/packages/hdf5/package.py | 2 +- .../builtin/packages/help2man/package.py | 2 +- .../repos/builtin/packages/hepmc/package.py | 2 +- .../repos/builtin/packages/heppdt/package.py | 2 +- .../builtin/packages/highfive/package.py | 2 +- .../builtin/packages/highwayhash/package.py | 2 +- .../repos/builtin/packages/hmmer/package.py | 2 +- .../builtin/packages/hoomd-blue/package.py | 2 +- .../packages/hpctoolkit-externals/package.py | 2 +- .../builtin/packages/hpctoolkit/package.py | 2 +- .../repos/builtin/packages/hpl/package.py | 2 +- .../repos/builtin/packages/hpx5/package.py | 2 +- .../repos/builtin/packages/hsakmt/package.py | 2 +- .../repos/builtin/packages/hstr/package.py | 2 +- .../repos/builtin/packages/htop/package.py | 2 +- .../repos/builtin/packages/htslib/package.py | 2 +- .../repos/builtin/packages/httpie/package.py | 4 +- .../repos/builtin/packages/hub/package.py | 2 +- .../builtin/packages/hunspell/package.py | 2 +- .../repos/builtin/packages/hwloc/package.py | 2 +- .../repos/builtin/packages/hydra/package.py | 2 +- .../repos/builtin/packages/hypre/package.py | 2 +- .../repos/builtin/packages/ibmisc/package.py | 2 +- .../repos/builtin/packages/iceauth/package.py | 2 +- .../repos/builtin/packages/icet/package.py | 2 +- .../repos/builtin/packages/ico/package.py | 2 +- .../repos/builtin/packages/icu4c/package.py | 2 +- .../repos/builtin/packages/id3lib/package.py | 2 +- .../repos/builtin/packages/ilmbase/package.py | 2 +- .../builtin/packages/image-magick/package.py | 2 +- .../repos/builtin/packages/imake/package.py | 2 +- .../builtin/packages/inputproto/package.py | 2 +- .../builtin/packages/intel-daal/package.py | 2 +- .../packages/intel-gpu-tools/package.py | 2 +- .../builtin/packages/intel-ipp/package.py | 2 +- .../builtin/packages/intel-mkl/package.py | 2 +- .../builtin/packages/intel-mpi/package.py | 2 +- .../packages/intel-parallel-studio/package.py | 2 +- .../repos/builtin/packages/intel/package.py | 2 +- .../builtin/packages/intltool/package.py | 2 +- .../repos/builtin/packages/ior/package.py | 2 +- .../repos/builtin/packages/iozone/package.py | 2 +- .../repos/builtin/packages/ipopt/package.py | 2 +- .../builtin/packages/isaac-server/package.py | 2 +- .../repos/builtin/packages/isaac/package.py | 2 +- .../repos/builtin/packages/isl/package.py | 2 +- .../repos/builtin/packages/itstool/package.py | 2 +- .../repos/builtin/packages/jansson/package.py | 2 +- .../repos/builtin/packages/jasper/package.py | 2 +- .../repos/builtin/packages/jdk/package.py | 2 +- .../builtin/packages/jemalloc/package.py | 2 +- .../repos/builtin/packages/jmol/package.py | 2 +- .../repos/builtin/packages/jpeg/package.py | 2 +- .../repos/builtin/packages/jq/package.py | 2 +- .../repos/builtin/packages/json-c/package.py | 2 +- .../repos/builtin/packages/jsoncpp/package.py | 2 +- .../repos/builtin/packages/judy/package.py | 2 +- .../repos/builtin/packages/julia/package.py | 2 +- .../repos/builtin/packages/kaldi/package.py | 2 +- .../repos/builtin/packages/kbproto/package.py | 2 +- .../repos/builtin/packages/kdiff3/package.py | 2 +- .../repos/builtin/packages/kealib/package.py | 2 +- .../repos/builtin/packages/kokkos/package.py | 2 +- .../repos/builtin/packages/kripke/package.py | 2 +- .../repos/builtin/packages/lammps/package.py | 2 +- .../builtin/packages/launchmon/package.py | 2 +- .../repos/builtin/packages/lbann/package.py | 2 +- .../builtin/packages/lbxproxy/package.py | 2 +- .../repos/builtin/packages/lcms/package.py | 2 +- .../repos/builtin/packages/legion/package.py | 2 +- .../repos/builtin/packages/leveldb/package.py | 2 +- .../repos/builtin/packages/libaio/package.py | 2 +- .../builtin/packages/libapplewm/package.py | 2 +- .../builtin/packages/libarchive/package.py | 2 +- .../builtin/packages/libassuan/package.py | 2 +- .../builtin/packages/libatomic-ops/package.py | 2 +- .../repos/builtin/packages/libbson/package.py | 2 +- .../builtin/packages/libcanberra/package.py | 2 +- .../repos/builtin/packages/libcap/package.py | 2 +- .../repos/builtin/packages/libcerf/package.py | 2 +- .../builtin/packages/libcircle/package.py | 2 +- .../builtin/packages/libconfig/package.py | 2 +- .../repos/builtin/packages/libctl/package.py | 2 +- .../builtin/packages/libdivsufsort/package.py | 2 +- .../repos/builtin/packages/libdmx/package.py | 2 +- .../repos/builtin/packages/libdrm/package.py | 2 +- .../builtin/packages/libdwarf/package.py | 4 +- .../repos/builtin/packages/libedit/package.py | 2 +- .../repos/builtin/packages/libelf/package.py | 2 +- .../repos/builtin/packages/libemos/package.py | 2 +- .../builtin/packages/libepoxy/package.py | 2 +- .../builtin/packages/libevent/package.py | 2 +- .../repos/builtin/packages/libffi/package.py | 2 +- .../builtin/packages/libfontenc/package.py | 2 +- .../repos/builtin/packages/libfs/package.py | 2 +- .../builtin/packages/libgcrypt/package.py | 2 +- .../repos/builtin/packages/libgd/package.py | 2 +- .../repos/builtin/packages/libgit2/package.py | 2 +- .../builtin/packages/libgpg-error/package.py | 2 +- .../builtin/packages/libgpuarray/package.py | 2 +- .../builtin/packages/libgtextutils/package.py | 2 +- .../repos/builtin/packages/libharu/package.py | 2 +- .../repos/builtin/packages/libhio/package.py | 2 +- .../repos/builtin/packages/libice/package.py | 2 +- .../builtin/packages/libiconv/package.py | 2 +- .../repos/builtin/packages/libint/package.py | 2 +- .../builtin/packages/libjpeg-turbo/package.py | 2 +- .../repos/builtin/packages/libksba/package.py | 2 +- .../builtin/packages/liblbxutil/package.py | 2 +- .../builtin/packages/libmatheval/package.py | 2 +- .../repos/builtin/packages/libmesh/package.py | 2 +- .../repos/builtin/packages/libmng/package.py | 2 +- .../builtin/packages/libmongoc/package.py | 2 +- .../builtin/packages/libmonitor/package.py | 2 +- .../repos/builtin/packages/libnbc/package.py | 2 +- .../repos/builtin/packages/libogg/package.py | 2 +- .../repos/builtin/packages/liboldx/package.py | 2 +- .../builtin/packages/libpciaccess/package.py | 2 +- .../repos/builtin/packages/libpfm4/package.py | 2 +- .../repos/builtin/packages/libpng/package.py | 2 +- .../repos/builtin/packages/libpsl/package.py | 2 +- .../packages/libpthread-stubs/package.py | 2 +- .../repos/builtin/packages/libquo/package.py | 2 +- .../builtin/packages/libsigsegv/package.py | 2 +- .../repos/builtin/packages/libsm/package.py | 2 +- .../builtin/packages/libsodium/package.py | 2 +- .../packages/libspatialindex/package.py | 2 +- .../builtin/packages/libsplash/package.py | 2 +- .../repos/builtin/packages/libssh2/package.py | 4 +- .../builtin/packages/libtermkey/package.py | 2 +- .../repos/builtin/packages/libtiff/package.py | 2 +- .../repos/builtin/packages/libtool/package.py | 2 +- .../builtin/packages/libunistring/package.py | 2 +- .../builtin/packages/libunwind/package.py | 2 +- .../repos/builtin/packages/libuuid/package.py | 2 +- .../repos/builtin/packages/libuv/package.py | 2 +- .../builtin/packages/libvorbis/package.py | 2 +- .../builtin/packages/libvterm/package.py | 2 +- .../builtin/packages/libwebsockets/package.py | 2 +- .../builtin/packages/libwindowswm/package.py | 2 +- .../repos/builtin/packages/libx11/package.py | 2 +- .../repos/builtin/packages/libxau/package.py | 2 +- .../repos/builtin/packages/libxaw/package.py | 2 +- .../builtin/packages/libxaw3d/package.py | 2 +- .../repos/builtin/packages/libxc/package.py | 2 +- .../repos/builtin/packages/libxcb/package.py | 2 +- .../builtin/packages/libxcomposite/package.py | 2 +- .../builtin/packages/libxcursor/package.py | 2 +- .../builtin/packages/libxdamage/package.py | 2 +- .../builtin/packages/libxdmcp/package.py | 2 +- .../builtin/packages/libxevie/package.py | 2 +- .../repos/builtin/packages/libxext/package.py | 2 +- .../builtin/packages/libxfixes/package.py | 2 +- .../builtin/packages/libxfont/package.py | 2 +- .../builtin/packages/libxfont2/package.py | 2 +- .../builtin/packages/libxfontcache/package.py | 2 +- .../repos/builtin/packages/libxft/package.py | 2 +- .../repos/builtin/packages/libxi/package.py | 2 +- .../builtin/packages/libxinerama/package.py | 2 +- .../builtin/packages/libxkbfile/package.py | 2 +- .../builtin/packages/libxkbui/package.py | 2 +- .../repos/builtin/packages/libxml2/package.py | 2 +- .../repos/builtin/packages/libxmu/package.py | 2 +- .../repos/builtin/packages/libxp/package.py | 2 +- .../repos/builtin/packages/libxpm/package.py | 2 +- .../builtin/packages/libxpresent/package.py | 2 +- .../packages/libxprintapputil/package.py | 2 +- .../builtin/packages/libxprintutil/package.py | 2 +- .../builtin/packages/libxrandr/package.py | 2 +- .../builtin/packages/libxrender/package.py | 2 +- .../repos/builtin/packages/libxres/package.py | 2 +- .../builtin/packages/libxscrnsaver/package.py | 2 +- .../builtin/packages/libxshmfence/package.py | 2 +- .../repos/builtin/packages/libxslt/package.py | 2 +- .../repos/builtin/packages/libxsmm/package.py | 2 +- .../builtin/packages/libxstream/package.py | 2 +- .../repos/builtin/packages/libxt/package.py | 2 +- .../builtin/packages/libxtrap/package.py | 2 +- .../repos/builtin/packages/libxtst/package.py | 2 +- .../repos/builtin/packages/libxv/package.py | 2 +- .../repos/builtin/packages/libxvmc/package.py | 2 +- .../builtin/packages/libxxf86dga/package.py | 2 +- .../builtin/packages/libxxf86misc/package.py | 2 +- .../builtin/packages/libxxf86vm/package.py | 2 +- .../repos/builtin/packages/libzip/package.py | 2 +- .../repos/builtin/packages/likwid/package.py | 2 +- .../builtin/packages/linux-headers/package.py | 2 +- .../repos/builtin/packages/listres/package.py | 2 +- .../builtin/packages/llvm-lld/package.py | 2 +- .../packages/llvm-openmp-ompt/package.py | 4 +- .../repos/builtin/packages/llvm/package.py | 2 +- .../repos/builtin/packages/lmdb/package.py | 2 +- .../repos/builtin/packages/lmod/package.py | 2 +- .../repos/builtin/packages/lndir/package.py | 2 +- .../repos/builtin/packages/log4cxx/package.py | 2 +- .../repos/builtin/packages/lrslib/package.py | 2 +- .../repos/builtin/packages/lrzip/package.py | 2 +- .../repos/builtin/packages/lua-jit/package.py | 2 +- .../packages/lua-luafilesystem/package.py | 2 +- .../builtin/packages/lua-luaposix/package.py | 2 +- .../repos/builtin/packages/lua/package.py | 2 +- .../repos/builtin/packages/luit/package.py | 2 +- .../repos/builtin/packages/lulesh/package.py | 2 +- .../repos/builtin/packages/lwgrp/package.py | 2 +- .../repos/builtin/packages/lwm2/package.py | 2 +- .../repos/builtin/packages/lz4/package.py | 2 +- .../repos/builtin/packages/lzma/package.py | 2 +- .../repos/builtin/packages/lzo/package.py | 2 +- .../repos/builtin/packages/m4/package.py | 2 +- .../builtin/packages/mad-numdiff/package.py | 2 +- .../repos/builtin/packages/mafft/package.py | 2 +- .../repos/builtin/packages/magics/package.py | 2 +- .../repos/builtin/packages/magma/package.py | 2 +- .../builtin/packages/makedepend/package.py | 2 +- .../builtin/packages/mallocmc/package.py | 2 +- .../repos/builtin/packages/mariadb/package.py | 2 +- .../repos/builtin/packages/matio/package.py | 3 +- .../repos/builtin/packages/matlab/package.py | 2 +- .../repos/builtin/packages/maven/package.py | 2 +- .../repos/builtin/packages/mawk/package.py | 2 +- .../repos/builtin/packages/mbedtls/package.py | 2 +- .../repos/builtin/packages/mdtest/package.py | 6 +- .../repos/builtin/packages/meep/package.py | 2 +- .../repos/builtin/packages/memaxes/package.py | 2 +- .../repos/builtin/packages/meme/package.py | 2 +- .../builtin/packages/mercurial/package.py | 2 +- .../builtin/packages/mesa-glu/package.py | 2 +- .../repos/builtin/packages/mesa/package.py | 2 +- .../builtin/packages/mesquite/package.py | 2 +- .../repos/builtin/packages/metis/package.py | 2 +- .../repos/builtin/packages/mfem/package.py | 2 +- .../builtin/packages/miniconda2/package.py | 2 +- .../builtin/packages/miniconda3/package.py | 2 +- .../repos/builtin/packages/mitos/package.py | 2 +- .../builtin/packages/mkfontdir/package.py | 2 +- .../builtin/packages/mkfontscale/package.py | 2 +- .../repos/builtin/packages/moab/package.py | 2 +- .../repos/builtin/packages/mono/package.py | 2 +- .../repos/builtin/packages/mosh/package.py | 2 +- .../repos/builtin/packages/mozjs/package.py | 2 +- .../repos/builtin/packages/mpc/package.py | 2 +- .../repos/builtin/packages/mpe2/package.py | 2 +- .../repos/builtin/packages/mpfr/package.py | 2 +- .../repos/builtin/packages/mpibash/package.py | 2 +- .../repos/builtin/packages/mpich/package.py | 2 +- .../builtin/packages/mpifileutils/package.py | 2 +- .../builtin/packages/mpileaks/package.py | 2 +- .../repos/builtin/packages/mpip/package.py | 2 +- .../repos/builtin/packages/mpir/package.py | 2 +- .../repos/builtin/packages/mrnet/package.py | 2 +- .../builtin/packages/msgpack-c/package.py | 2 +- .../builtin/packages/multiverso/package.py | 2 +- .../repos/builtin/packages/mummer/package.py | 2 +- .../repos/builtin/packages/mumps/package.py | 2 +- .../repos/builtin/packages/munge/package.py | 2 +- .../builtin/packages/muparser/package.py | 2 +- .../repos/builtin/packages/muster/package.py | 2 +- .../builtin/packages/mvapich2/package.py | 2 +- .../repos/builtin/packages/mxml/package.py | 2 +- .../repos/builtin/packages/nag/package.py | 2 +- .../repos/builtin/packages/nalu/package.py | 2 +- .../repos/builtin/packages/namd/package.py | 2 +- .../repos/builtin/packages/nano/package.py | 2 +- .../repos/builtin/packages/nasm/package.py | 2 +- .../repos/builtin/packages/nauty/package.py | 2 +- .../repos/builtin/packages/nccl/package.py | 2 +- .../repos/builtin/packages/nccmp/package.py | 2 +- .../repos/builtin/packages/ncdu/package.py | 2 +- .../repos/builtin/packages/ncftp/package.py | 4 +- .../repos/builtin/packages/ncl/package.py | 2 +- .../repos/builtin/packages/nco/package.py | 2 +- .../repos/builtin/packages/ncurses/package.py | 2 +- .../repos/builtin/packages/ncview/package.py | 2 +- .../repos/builtin/packages/ndiff/package.py | 2 +- .../builtin/packages/netcdf-cxx/package.py | 2 +- .../builtin/packages/netcdf-cxx4/package.py | 2 +- .../packages/netcdf-fortran/package.py | 2 +- .../repos/builtin/packages/netcdf/package.py | 2 +- .../builtin/packages/netgauge/package.py | 2 +- .../builtin/packages/netlib-lapack/package.py | 2 +- .../packages/netlib-scalapack/package.py | 2 +- .../repos/builtin/packages/nettle/package.py | 2 +- .../builtin/packages/nextflow/package.py | 2 +- .../repos/builtin/packages/nfft/package.py | 2 +- .../repos/builtin/packages/nginx/package.py | 2 +- .../repos/builtin/packages/ninja/package.py | 2 +- .../repos/builtin/packages/nmap/package.py | 6 +- .../repos/builtin/packages/node-js/package.py | 2 +- .../repos/builtin/packages/notmuch/package.py | 6 +- .../repos/builtin/packages/npb/package.py | 2 +- .../repos/builtin/packages/npm/package.py | 2 +- .../repos/builtin/packages/npth/package.py | 2 +- .../repos/builtin/packages/nspr/package.py | 2 +- .../repos/builtin/packages/numdiff/package.py | 2 +- .../repos/builtin/packages/nwchem/package.py | 2 +- .../repos/builtin/packages/ocaml/package.py | 4 +- .../repos/builtin/packages/oce/package.py | 2 +- .../repos/builtin/packages/oclock/package.py | 2 +- .../packages/octave-splines/package.py | 2 +- .../repos/builtin/packages/octave/package.py | 2 +- .../repos/builtin/packages/octopus/package.py | 2 +- .../repos/builtin/packages/ompss/package.py | 2 +- .../builtin/packages/ompt-openmp/package.py | 2 +- .../builtin/packages/oniguruma/package.py | 2 +- .../builtin/packages/ont-albacore/package.py | 2 +- .../repos/builtin/packages/opari2/package.py | 2 +- .../builtin/packages/openbabel/package.py | 2 +- .../builtin/packages/openblas/package.py | 2 +- .../builtin/packages/opencoarrays/package.py | 2 +- .../repos/builtin/packages/opencv/package.py | 2 +- .../repos/builtin/packages/openexr/package.py | 2 +- .../builtin/packages/openfoam-com/package.py | 2 +- .../builtin/packages/openfoam-org/package.py | 2 +- .../repos/builtin/packages/openfst/package.py | 2 +- .../builtin/packages/openjpeg/package.py | 2 +- .../repos/builtin/packages/openmpi/package.py | 2 +- .../packages/openscenegraph/package.py | 2 +- .../builtin/packages/openspeedshop/package.py | 2 +- .../repos/builtin/packages/openssh/package.py | 2 +- .../repos/builtin/packages/openssl/package.py | 2 +- .../repos/builtin/packages/opium/package.py | 2 +- .../repos/builtin/packages/opus/package.py | 2 +- .../packages/osu-micro-benchmarks/package.py | 2 +- .../repos/builtin/packages/otf/package.py | 2 +- .../repos/builtin/packages/otf2/package.py | 2 +- .../repos/builtin/packages/p4est/package.py | 2 +- .../repos/builtin/packages/pagmo/package.py | 2 +- .../repos/builtin/packages/panda/package.py | 2 +- .../repos/builtin/packages/pango/package.py | 2 +- .../repos/builtin/packages/papi/package.py | 2 +- .../builtin/packages/paradiseo/package.py | 2 +- .../packages/parallel-netcdf/package.py | 2 +- .../builtin/packages/parallel/package.py | 2 +- .../repos/builtin/packages/paraver/package.py | 2 +- .../builtin/packages/paraview/package.py | 2 +- .../builtin/packages/parmetis/package.py | 2 +- .../builtin/packages/parmgridgen/package.py | 2 +- .../repos/builtin/packages/parpack/package.py | 2 +- .../repos/builtin/packages/patch/package.py | 2 +- .../builtin/packages/patchelf/package.py | 2 +- .../builtin/packages/pax-utils/package.py | 2 +- .../repos/builtin/packages/pcre/package.py | 2 +- .../repos/builtin/packages/pcre2/package.py | 2 +- .../repos/builtin/packages/pdsh/package.py | 2 +- .../repos/builtin/packages/pdt/package.py | 2 +- .../repos/builtin/packages/pegtl/package.py | 2 +- .../builtin/packages/perl-dbi/package.py | 2 +- .../perl-extutils-makemaker/package.py | 2 +- .../packages/perl-module-build/package.py | 2 +- .../packages/perl-term-readkey/package.py | 2 +- .../packages/perl-xml-parser/package.py | 2 +- .../repos/builtin/packages/perl/package.py | 2 +- .../repos/builtin/packages/petsc/package.py | 2 +- .../repos/builtin/packages/pexsi/package.py | 2 +- .../repos/builtin/packages/pfft/package.py | 2 +- .../builtin/packages/pflotran/package.py | 2 +- .../repos/builtin/packages/pgi/package.py | 2 +- .../repos/builtin/packages/phasta/package.py | 2 +- .../repos/builtin/packages/picard/package.py | 2 +- .../repos/builtin/packages/pidx/package.py | 2 +- .../repos/builtin/packages/pigz/package.py | 4 +- .../repos/builtin/packages/piranha/package.py | 2 +- .../repos/builtin/packages/pixman/package.py | 2 +- .../builtin/packages/pkg-config/package.py | 2 +- .../packages/planck-likelihood/package.py | 2 +- .../repos/builtin/packages/plumed/package.py | 2 +- .../packages/pmgr-collective/package.py | 2 +- .../repos/builtin/packages/pnfft/package.py | 2 +- .../builtin/packages/pngwriter/package.py | 2 +- .../repos/builtin/packages/pocl/package.py | 2 +- .../builtin/packages/polymake/package.py | 2 +- .../repos/builtin/packages/porta/package.py | 2 +- .../repos/builtin/packages/portage/package.py | 2 +- .../builtin/packages/postgresql/package.py | 2 +- .../repos/builtin/packages/ppl/package.py | 2 +- .../repos/builtin/packages/prank/package.py | 2 +- .../builtin/packages/presentproto/package.py | 2 +- .../builtin/packages/printproto/package.py | 2 +- .../repos/builtin/packages/proj/package.py | 2 +- .../builtin/packages/protobuf/package.py | 2 +- .../builtin/packages/proxymngr/package.py | 2 +- .../builtin/packages/pruners-ninja/package.py | 2 +- .../repos/builtin/packages/psi4/package.py | 2 +- .../builtin/packages/pstreams/package.py | 2 +- .../repos/builtin/packages/pugixml/package.py | 2 +- .../repos/builtin/packages/pumi/package.py | 2 +- .../repos/builtin/packages/pvm/package.py | 2 +- .../repos/builtin/packages/py-3to2/package.py | 2 +- .../builtin/packages/py-4suite-xml/package.py | 2 +- .../builtin/packages/py-abipy/package.py | 2 +- .../builtin/packages/py-alabaster/package.py | 2 +- .../packages/py-apache-libcloud/package.py | 2 +- .../builtin/packages/py-appdirs/package.py | 2 +- .../builtin/packages/py-appnope/package.py | 2 +- .../packages/py-apscheduler/package.py | 2 +- .../packages/py-argcomplete/package.py | 2 +- .../builtin/packages/py-argparse/package.py | 2 +- .../repos/builtin/packages/py-ase/package.py | 2 +- .../builtin/packages/py-asn1crypto/package.py | 2 +- .../builtin/packages/py-astroid/package.py | 2 +- .../builtin/packages/py-astropy/package.py | 2 +- .../builtin/packages/py-attrs/package.py | 2 +- .../builtin/packages/py-autopep8/package.py | 2 +- .../builtin/packages/py-babel/package.py | 2 +- .../packages/py-backports-abc/package.py | 2 +- .../package.py | 2 +- .../package.py | 2 +- .../builtin/packages/py-basemap/package.py | 2 +- .../packages/py-beautifulsoup4/package.py | 2 +- .../builtin/packages/py-binwalk/package.py | 2 +- .../builtin/packages/py-biopython/package.py | 2 +- .../builtin/packages/py-bleach/package.py | 2 +- .../builtin/packages/py-blessings/package.py | 2 +- .../builtin/packages/py-bokeh/package.py | 2 +- .../builtin/packages/py-boltons/package.py | 2 +- .../builtin/packages/py-bottleneck/package.py | 2 +- .../builtin/packages/py-brian/package.py | 2 +- .../builtin/packages/py-brian2/package.py | 2 +- .../builtin/packages/py-cclib/package.py | 2 +- .../builtin/packages/py-cdat-lite/package.py | 2 +- .../repos/builtin/packages/py-cdo/package.py | 2 +- .../builtin/packages/py-certifi/package.py | 2 +- .../repos/builtin/packages/py-cffi/package.py | 2 +- .../builtin/packages/py-chardet/package.py | 2 +- .../builtin/packages/py-click/package.py | 2 +- .../builtin/packages/py-colorama/package.py | 2 +- .../packages/py-configparser/package.py | 2 +- .../builtin/packages/py-counter/package.py | 2 +- .../builtin/packages/py-coverage/package.py | 2 +- .../builtin/packages/py-cpuinfo/package.py | 2 +- .../packages/py-cryptography/package.py | 2 +- .../builtin/packages/py-csvkit/package.py | 2 +- .../builtin/packages/py-current/package.py | 2 +- .../builtin/packages/py-cutadapt/package.py | 2 +- .../builtin/packages/py-cycler/package.py | 2 +- .../builtin/packages/py-cython/package.py | 2 +- .../repos/builtin/packages/py-dask/package.py | 2 +- .../builtin/packages/py-dateutil/package.py | 2 +- .../repos/builtin/packages/py-dbf/package.py | 2 +- .../builtin/packages/py-decorator/package.py | 2 +- .../repos/builtin/packages/py-dev/package.py | 2 +- .../repos/builtin/packages/py-dill/package.py | 2 +- .../builtin/packages/py-docutils/package.py | 2 +- .../builtin/packages/py-doxypy/package.py | 2 +- .../builtin/packages/py-doxypypy/package.py | 2 +- .../builtin/packages/py-dryscrape/package.py | 2 +- .../builtin/packages/py-dxchange/package.py | 2 +- .../builtin/packages/py-dxfile/package.py | 2 +- .../py-easybuild-easyblocks/package.py | 2 +- .../py-easybuild-easyconfigs/package.py | 2 +- .../py-easybuild-framework/package.py | 2 +- .../builtin/packages/py-edffile/package.py | 2 +- .../packages/py-elasticsearch/package.py | 2 +- .../builtin/packages/py-elephant/package.py | 2 +- .../builtin/packages/py-emcee/package.py | 2 +- .../packages/py-entrypoints/package.py | 2 +- .../builtin/packages/py-enum34/package.py | 2 +- .../builtin/packages/py-epydoc/package.py | 2 +- .../builtin/packages/py-et-xmlfile/package.py | 2 +- .../builtin/packages/py-fasteners/package.py | 2 +- .../builtin/packages/py-fiscalyear/package.py | 2 +- .../builtin/packages/py-flake8/package.py | 2 +- .../builtin/packages/py-flask/package.py | 2 +- .../builtin/packages/py-flexx/package.py | 2 +- .../builtin/packages/py-funcsigs/package.py | 2 +- .../packages/py-functools32/package.py | 2 +- .../builtin/packages/py-future/package.py | 2 +- .../builtin/packages/py-futures/package.py | 2 +- .../builtin/packages/py-genders/package.py | 2 +- .../builtin/packages/py-genshi/package.py | 2 +- .../builtin/packages/py-git-review/package.py | 2 +- .../repos/builtin/packages/py-git2/package.py | 2 +- .../builtin/packages/py-gnuplot/package.py | 2 +- .../packages/py-griddataformats/package.py | 2 +- .../builtin/packages/py-guidata/package.py | 2 +- .../builtin/packages/py-guiqwt/package.py | 2 +- .../repos/builtin/packages/py-h5py/package.py | 2 +- .../builtin/packages/py-html2text/package.py | 2 +- .../builtin/packages/py-html5lib/package.py | 2 +- .../builtin/packages/py-httpbin/package.py | 2 +- .../builtin/packages/py-hypothesis/package.py | 2 +- .../repos/builtin/packages/py-idna/package.py | 2 +- .../builtin/packages/py-imagesize/package.py | 2 +- .../builtin/packages/py-iminuit/package.py | 2 +- .../builtin/packages/py-importlib/package.py | 2 +- .../builtin/packages/py-ipaddress/package.py | 2 +- .../repos/builtin/packages/py-ipdb/package.py | 2 +- .../builtin/packages/py-ipykernel/package.py | 2 +- .../packages/py-ipython-genutils/package.py | 2 +- .../builtin/packages/py-ipython/package.py | 2 +- .../builtin/packages/py-ipywidgets/package.py | 2 +- .../packages/py-itsdangerous/package.py | 2 +- .../builtin/packages/py-jdcal/package.py | 2 +- .../repos/builtin/packages/py-jedi/package.py | 2 +- .../builtin/packages/py-jinja2/package.py | 2 +- .../builtin/packages/py-joblib/package.py | 2 +- .../builtin/packages/py-jpype/package.py | 2 +- .../builtin/packages/py-jsonschema/package.py | 2 +- .../builtin/packages/py-junit-xml/package.py | 2 +- .../packages/py-jupyter-client/package.py | 2 +- .../packages/py-jupyter-console/package.py | 2 +- .../packages/py-jupyter-core/package.py | 2 +- .../packages/py-jupyter-notebook/package.py | 2 +- .../builtin/packages/py-keras/package.py | 2 +- .../builtin/packages/py-latexcodec/package.py | 2 +- .../repos/builtin/packages/py-lazy/package.py | 2 +- .../builtin/packages/py-lazyarray/package.py | 2 +- .../builtin/packages/py-libconf/package.py | 2 +- .../repos/builtin/packages/py-lit/package.py | 2 +- .../builtin/packages/py-lmfit/package.py | 2 +- .../builtin/packages/py-lockfile/package.py | 2 +- .../packages/py-logilab-common/package.py | 2 +- .../repos/builtin/packages/py-lxml/package.py | 2 +- .../builtin/packages/py-macs2/package.py | 2 +- .../repos/builtin/packages/py-mako/package.py | 2 +- .../builtin/packages/py-markdown/package.py | 2 +- .../builtin/packages/py-markupsafe/package.py | 2 +- .../builtin/packages/py-matplotlib/package.py | 2 +- .../builtin/packages/py-mccabe/package.py | 2 +- .../builtin/packages/py-mdanalysis/package.py | 2 +- .../repos/builtin/packages/py-meep/package.py | 2 +- .../builtin/packages/py-mistune/package.py | 2 +- .../repos/builtin/packages/py-mock/package.py | 2 +- .../builtin/packages/py-mongo/package.py | 2 +- .../builtin/packages/py-monotonic/package.py | 2 +- .../builtin/packages/py-monty/package.py | 2 +- .../builtin/packages/py-mpi4py/package.py | 2 +- .../builtin/packages/py-mpmath/package.py | 2 +- .../packages/py-multiprocess/package.py | 2 +- .../repos/builtin/packages/py-mx/package.py | 2 +- .../builtin/packages/py-myhdl/package.py | 2 +- .../builtin/packages/py-mysqldb1/package.py | 2 +- .../builtin/packages/py-nbconvert/package.py | 2 +- .../builtin/packages/py-nbformat/package.py | 2 +- .../repos/builtin/packages/py-neo/package.py | 6 +- .../builtin/packages/py-nestle/package.py | 2 +- .../builtin/packages/py-netcdf4/package.py | 2 +- .../builtin/packages/py-netifaces/package.py | 2 +- .../builtin/packages/py-networkx/package.py | 2 +- .../repos/builtin/packages/py-nose/package.py | 2 +- .../builtin/packages/py-nosexcover/package.py | 2 +- .../builtin/packages/py-numexpr/package.py | 2 +- .../builtin/packages/py-numpy/package.py | 2 +- .../builtin/packages/py-numpydoc/package.py | 2 +- .../packages/py-ont-fast5-api/package.py | 2 +- .../builtin/packages/py-openpyxl/package.py | 2 +- .../packages/py-ordereddict/package.py | 2 +- .../repos/builtin/packages/py-oset/package.py | 2 +- .../builtin/packages/py-packaging/package.py | 2 +- .../builtin/packages/py-palettable/package.py | 2 +- .../builtin/packages/py-pandas/package.py | 2 +- .../builtin/packages/py-paramiko/package.py | 2 +- .../builtin/packages/py-pathlib2/package.py | 2 +- .../builtin/packages/py-pathos/package.py | 2 +- .../builtin/packages/py-pathspec/package.py | 2 +- .../builtin/packages/py-patsy/package.py | 2 +- .../repos/builtin/packages/py-pbr/package.py | 2 +- .../packages/py-periodictable/package.py | 2 +- .../builtin/packages/py-petsc4py/package.py | 2 +- .../builtin/packages/py-pexpect/package.py | 2 +- .../builtin/packages/py-phonopy/package.py | 2 +- .../packages/py-pickleshare/package.py | 2 +- .../repos/builtin/packages/py-pil/package.py | 2 +- .../builtin/packages/py-pillow/package.py | 2 +- .../repos/builtin/packages/py-pip/package.py | 2 +- .../builtin/packages/py-pkgconfig/package.py | 2 +- .../repos/builtin/packages/py-ply/package.py | 2 +- .../repos/builtin/packages/py-pmw/package.py | 2 +- .../repos/builtin/packages/py-pox/package.py | 2 +- .../repos/builtin/packages/py-ppft/package.py | 2 +- .../packages/py-prettytable/package.py | 2 +- .../repos/builtin/packages/py-proj/package.py | 2 +- .../packages/py-prompt-toolkit/package.py | 2 +- .../builtin/packages/py-protobuf/package.py | 2 +- .../builtin/packages/py-psutil/package.py | 2 +- .../builtin/packages/py-ptyprocess/package.py | 2 +- .../repos/builtin/packages/py-pudb/package.py | 2 +- .../repos/builtin/packages/py-py/package.py | 2 +- .../builtin/packages/py-py2cairo/package.py | 2 +- .../builtin/packages/py-py2neo/package.py | 2 +- .../repos/builtin/packages/py-py4j/package.py | 2 +- .../builtin/packages/py-pyasn1/package.py | 2 +- .../packages/py-pybtex-docutils/package.py | 2 +- .../builtin/packages/py-pybtex/package.py | 2 +- .../builtin/packages/py-pychecker/package.py | 2 +- .../packages/py-pycodestyle/package.py | 2 +- .../builtin/packages/py-pycparser/package.py | 2 +- .../builtin/packages/py-pycrypto/package.py | 2 +- .../builtin/packages/py-pycurl/package.py | 2 +- .../builtin/packages/py-pydatalog/package.py | 2 +- .../packages/py-pydispatcher/package.py | 2 +- .../builtin/packages/py-pydot/package.py | 2 +- .../builtin/packages/py-pyelftools/package.py | 2 +- .../builtin/packages/py-pyfftw/package.py | 2 +- .../builtin/packages/py-pyflakes/package.py | 2 +- .../builtin/packages/py-pygments/package.py | 2 +- .../builtin/packages/py-pygobject/package.py | 2 +- .../builtin/packages/py-pygtk/package.py | 2 +- .../builtin/packages/py-pylint/package.py | 2 +- .../builtin/packages/py-pymatgen/package.py | 2 +- .../builtin/packages/py-pyminifier/package.py | 2 +- .../builtin/packages/py-pympler/package.py | 2 +- .../repos/builtin/packages/py-pynn/package.py | 2 +- .../builtin/packages/py-pypar/package.py | 2 +- .../builtin/packages/py-pyparsing/package.py | 2 +- .../packages/py-pyprof2html/package.py | 2 +- .../repos/builtin/packages/py-pyqt/package.py | 2 +- .../builtin/packages/py-pyserial/package.py | 2 +- .../builtin/packages/py-pyside/package.py | 2 +- .../builtin/packages/py-pysocks/package.py | 2 +- .../builtin/packages/py-pytables/package.py | 2 +- .../builtin/packages/py-pytest-cov/package.py | 4 +- .../packages/py-pytest-flake8/package.py | 2 +- .../packages/py-pytest-httpbin/package.py | 2 +- .../packages/py-pytest-mock/package.py | 2 +- .../packages/py-pytest-runner/package.py | 2 +- .../builtin/packages/py-pytest/package.py | 2 +- .../packages/py-python-daemon/package.py | 2 +- .../packages/py-python-gitlab/package.py | 2 +- .../builtin/packages/py-pythonqwt/package.py | 2 +- .../repos/builtin/packages/py-pytz/package.py | 2 +- .../builtin/packages/py-pywavelets/package.py | 2 +- .../builtin/packages/py-pyyaml/package.py | 2 +- .../builtin/packages/py-qtawesome/package.py | 2 +- .../builtin/packages/py-qtconsole/package.py | 2 +- .../repos/builtin/packages/py-qtpy/package.py | 2 +- .../builtin/packages/py-quantities/package.py | 2 +- .../packages/py-radical-utils/package.py | 2 +- .../builtin/packages/py-ranger/package.py | 2 +- .../packages/py-readme-renderer/package.py | 2 +- .../builtin/packages/py-requests/package.py | 2 +- .../builtin/packages/py-restview/package.py | 2 +- .../repos/builtin/packages/py-rope/package.py | 2 +- .../repos/builtin/packages/py-rpy2/package.py | 2 +- .../repos/builtin/packages/py-rsa/package.py | 2 +- .../builtin/packages/py-rtree/package.py | 2 +- .../packages/py-saga-python/package.py | 2 +- .../packages/py-scientificpython/package.py | 2 +- .../packages/py-scikit-image/package.py | 2 +- .../packages/py-scikit-learn/package.py | 2 +- .../builtin/packages/py-scipy/package.py | 2 +- .../builtin/packages/py-seaborn/package.py | 2 +- .../builtin/packages/py-setuptools/package.py | 2 +- .../repos/builtin/packages/py-sh/package.py | 2 +- .../builtin/packages/py-shiboken/package.py | 2 +- .../packages/py-simplegeneric/package.py | 2 +- .../builtin/packages/py-simplejson/package.py | 2 +- .../packages/py-singledispatch/package.py | 2 +- .../repos/builtin/packages/py-sip/package.py | 2 +- .../repos/builtin/packages/py-six/package.py | 2 +- .../builtin/packages/py-slepc4py/package.py | 4 +- .../builtin/packages/py-sncosmo/package.py | 2 +- .../packages/py-snowballstemmer/package.py | 2 +- .../builtin/packages/py-spefile/package.py | 2 +- .../builtin/packages/py-spglib/package.py | 2 +- .../py-sphinx-bootstrap-theme/package.py | 2 +- .../packages/py-sphinx-rtd-theme/package.py | 2 +- .../builtin/packages/py-sphinx/package.py | 2 +- .../py-sphinxcontrib-bibtex/package.py | 2 +- .../py-sphinxcontrib-programoutput/package.py | 2 +- .../py-sphinxcontrib-websupport/package.py | 2 +- .../builtin/packages/py-spyder/package.py | 2 +- .../builtin/packages/py-spykeutils/package.py | 2 +- .../builtin/packages/py-sqlalchemy/package.py | 2 +- .../packages/py-statsmodels/package.py | 2 +- .../builtin/packages/py-storm/package.py | 2 +- .../packages/py-subprocess32/package.py | 2 +- .../builtin/packages/py-symengine/package.py | 2 +- .../builtin/packages/py-symfit/package.py | 2 +- .../builtin/packages/py-sympy/package.py | 2 +- .../builtin/packages/py-tabulate/package.py | 2 +- .../builtin/packages/py-tappy/package.py | 2 +- .../builtin/packages/py-terminado/package.py | 2 +- .../builtin/packages/py-theano/package.py | 2 +- .../builtin/packages/py-tifffile/package.py | 2 +- .../builtin/packages/py-tornado/package.py | 2 +- .../repos/builtin/packages/py-tqdm/package.py | 2 +- .../builtin/packages/py-traitlets/package.py | 2 +- .../builtin/packages/py-tuiview/package.py | 2 +- .../builtin/packages/py-twisted/package.py | 2 +- .../builtin/packages/py-typing/package.py | 2 +- .../builtin/packages/py-tzlocal/package.py | 2 +- .../builtin/packages/py-unittest2/package.py | 2 +- .../packages/py-unittest2py3k/package.py | 2 +- .../builtin/packages/py-urllib3/package.py | 2 +- .../builtin/packages/py-urwid/package.py | 2 +- .../packages/py-vcversioner/package.py | 2 +- .../builtin/packages/py-virtualenv/package.py | 2 +- .../builtin/packages/py-vsc-base/package.py | 2 +- .../packages/py-vsc-install/package.py | 2 +- .../builtin/packages/py-wcsaxes/package.py | 2 +- .../builtin/packages/py-wcwidth/package.py | 2 +- .../packages/py-webkit-server/package.py | 2 +- .../builtin/packages/py-werkzeug/package.py | 2 +- .../builtin/packages/py-wheel/package.py | 2 +- .../packages/py-widgetsnbextension/package.py | 2 +- .../builtin/packages/py-wrapt/package.py | 2 +- .../builtin/packages/py-xarray/package.py | 2 +- .../repos/builtin/packages/py-xlrd/package.py | 2 +- .../builtin/packages/py-xmlrunner/package.py | 2 +- .../builtin/packages/py-xopen/package.py | 2 +- .../repos/builtin/packages/py-xpyb/package.py | 2 +- .../packages/py-xvfbwrapper/package.py | 2 +- .../repos/builtin/packages/py-yapf/package.py | 2 +- .../repos/builtin/packages/py-yt/package.py | 2 +- .../repos/builtin/packages/py-zmq/package.py | 2 +- .../repos/builtin/packages/python/package.py | 2 +- .../repos/builtin/packages/qbank/package.py | 2 +- .../repos/builtin/packages/qhull/package.py | 2 +- .../builtin/packages/qrupdate/package.py | 2 +- .../builtin/packages/qt-creator/package.py | 2 +- .../repos/builtin/packages/qt/package.py | 2 +- .../builtin/packages/qthreads/package.py | 2 +- .../repos/builtin/packages/r-abind/package.py | 2 +- .../builtin/packages/r-adabag/package.py | 2 +- .../repos/builtin/packages/r-ade4/package.py | 2 +- .../builtin/packages/r-adegenet/package.py | 2 +- .../repos/builtin/packages/r-ape/package.py | 2 +- .../builtin/packages/r-assertthat/package.py | 2 +- .../builtin/packages/r-base64enc/package.py | 2 +- .../repos/builtin/packages/r-bh/package.py | 2 +- .../packages/r-biocgenerics/package.py | 2 +- .../packages/r-biocinstaller/package.py | 2 +- .../builtin/packages/r-bitops/package.py | 2 +- .../repos/builtin/packages/r-boot/package.py | 2 +- .../repos/builtin/packages/r-brew/package.py | 2 +- .../repos/builtin/packages/r-c50/package.py | 2 +- .../repos/builtin/packages/r-car/package.py | 2 +- .../repos/builtin/packages/r-caret/package.py | 2 +- .../builtin/packages/r-catools/package.py | 2 +- .../builtin/packages/r-checkpoint/package.py | 2 +- .../repos/builtin/packages/r-chron/package.py | 2 +- .../repos/builtin/packages/r-class/package.py | 2 +- .../builtin/packages/r-cluster/package.py | 2 +- .../repos/builtin/packages/r-coda/package.py | 2 +- .../builtin/packages/r-codetools/package.py | 2 +- .../repos/builtin/packages/r-coin/package.py | 2 +- .../builtin/packages/r-colorspace/package.py | 2 +- .../builtin/packages/r-corrplot/package.py | 2 +- .../builtin/packages/r-crayon/package.py | 2 +- .../builtin/packages/r-cubature/package.py | 2 +- .../builtin/packages/r-cubist/package.py | 2 +- .../repos/builtin/packages/r-curl/package.py | 2 +- .../builtin/packages/r-data-table/package.py | 2 +- .../repos/builtin/packages/r-dbi/package.py | 2 +- .../builtin/packages/r-deldir/package.py | 2 +- .../builtin/packages/r-dendextend/package.py | 2 +- .../builtin/packages/r-deoptim/package.py | 2 +- .../builtin/packages/r-deoptimr/package.py | 2 +- .../builtin/packages/r-devtools/package.py | 2 +- .../builtin/packages/r-diagrammer/package.py | 2 +- .../builtin/packages/r-dichromat/package.py | 2 +- .../builtin/packages/r-digest/package.py | 2 +- .../builtin/packages/r-diptest/package.py | 2 +- .../repos/builtin/packages/r-domc/package.py | 2 +- .../builtin/packages/r-doparallel/package.py | 2 +- .../repos/builtin/packages/r-dplyr/package.py | 2 +- .../repos/builtin/packages/r-dt/package.py | 2 +- .../builtin/packages/r-dygraphs/package.py | 2 +- .../repos/builtin/packages/r-e1071/package.py | 2 +- .../builtin/packages/r-ellipse/package.py | 2 +- .../repos/builtin/packages/r-ergm/package.py | 2 +- .../builtin/packages/r-evaluate/package.py | 2 +- .../repos/builtin/packages/r-expm/package.py | 2 +- .../builtin/packages/r-factoextra/package.py | 2 +- .../builtin/packages/r-factominer/package.py | 2 +- .../builtin/packages/r-filehash/package.py | 2 +- .../builtin/packages/r-flashclust/package.py | 2 +- .../builtin/packages/r-flexmix/package.py | 2 +- .../builtin/packages/r-foreach/package.py | 2 +- .../builtin/packages/r-foreign/package.py | 2 +- .../builtin/packages/r-formatr/package.py | 2 +- .../builtin/packages/r-formula/package.py | 2 +- .../repos/builtin/packages/r-fpc/package.py | 2 +- .../repos/builtin/packages/r-gdata/package.py | 2 +- .../builtin/packages/r-geosphere/package.py | 2 +- .../repos/builtin/packages/r-ggmap/package.py | 2 +- .../builtin/packages/r-ggplot2/package.py | 2 +- .../builtin/packages/r-ggpubr/package.py | 2 +- .../builtin/packages/r-ggrepel/package.py | 2 +- .../repos/builtin/packages/r-ggsci/package.py | 2 +- .../repos/builtin/packages/r-ggvis/package.py | 2 +- .../repos/builtin/packages/r-gistr/package.py | 2 +- .../repos/builtin/packages/r-git2r/package.py | 2 +- .../builtin/packages/r-glmnet/package.py | 2 +- .../builtin/packages/r-gmodels/package.py | 2 +- .../repos/builtin/packages/r-gmp/package.py | 2 +- .../builtin/packages/r-googlevis/package.py | 2 +- .../builtin/packages/r-gridbase/package.py | 2 +- .../builtin/packages/r-gridextra/package.py | 2 +- .../builtin/packages/r-gtable/package.py | 2 +- .../builtin/packages/r-gtools/package.py | 2 +- .../builtin/packages/r-hexbin/package.py | 2 +- .../repos/builtin/packages/r-highr/package.py | 2 +- .../builtin/packages/r-htmltools/package.py | 2 +- .../builtin/packages/r-htmlwidgets/package.py | 2 +- .../builtin/packages/r-httpuv/package.py | 2 +- .../repos/builtin/packages/r-httr/package.py | 2 +- .../builtin/packages/r-igraph/package.py | 2 +- .../builtin/packages/r-influencer/package.py | 2 +- .../builtin/packages/r-inline/package.py | 2 +- .../repos/builtin/packages/r-ipred/package.py | 2 +- .../builtin/packages/r-irdisplay/package.py | 2 +- .../builtin/packages/r-irkernel/package.py | 2 +- .../repos/builtin/packages/r-irlba/package.py | 2 +- .../builtin/packages/r-iterators/package.py | 2 +- .../repos/builtin/packages/r-jpeg/package.py | 2 +- .../builtin/packages/r-jsonlite/package.py | 2 +- .../builtin/packages/r-kernlab/package.py | 2 +- .../builtin/packages/r-kernsmooth/package.py | 2 +- .../repos/builtin/packages/r-kknn/package.py | 2 +- .../repos/builtin/packages/r-knitr/package.py | 2 +- .../builtin/packages/r-labeling/package.py | 2 +- .../packages/r-laplacesdemon/package.py | 2 +- .../builtin/packages/r-lattice/package.py | 2 +- .../repos/builtin/packages/r-lava/package.py | 2 +- .../builtin/packages/r-lazyeval/package.py | 2 +- .../builtin/packages/r-leaflet/package.py | 2 +- .../repos/builtin/packages/r-leaps/package.py | 2 +- .../builtin/packages/r-learnbayes/package.py | 2 +- .../repos/builtin/packages/r-lme4/package.py | 2 +- .../builtin/packages/r-lmtest/package.py | 2 +- .../builtin/packages/r-lpsolve/package.py | 2 +- .../builtin/packages/r-lubridate/package.py | 2 +- .../repos/builtin/packages/r-magic/package.py | 2 +- .../builtin/packages/r-magrittr/package.py | 2 +- .../builtin/packages/r-mapproj/package.py | 2 +- .../repos/builtin/packages/r-maps/package.py | 2 +- .../builtin/packages/r-maptools/package.py | 2 +- .../builtin/packages/r-markdown/package.py | 2 +- .../repos/builtin/packages/r-mass/package.py | 2 +- .../builtin/packages/r-matrix/package.py | 2 +- .../packages/r-matrixmodels/package.py | 2 +- .../builtin/packages/r-mclust/package.py | 2 +- .../repos/builtin/packages/r-mda/package.py | 2 +- .../builtin/packages/r-memoise/package.py | 2 +- .../repos/builtin/packages/r-mgcv/package.py | 2 +- .../repos/builtin/packages/r-mime/package.py | 2 +- .../repos/builtin/packages/r-minqa/package.py | 2 +- .../builtin/packages/r-mlbench/package.py | 2 +- .../packages/r-modelmetrics/package.py | 2 +- .../builtin/packages/r-modeltools/package.py | 2 +- .../builtin/packages/r-multcomp/package.py | 2 +- .../builtin/packages/r-munsell/package.py | 2 +- .../builtin/packages/r-mvtnorm/package.py | 2 +- .../repos/builtin/packages/r-ncdf4/package.py | 2 +- .../builtin/packages/r-network/package.py | 2 +- .../builtin/packages/r-networkd3/package.py | 2 +- .../repos/builtin/packages/r-nlme/package.py | 2 +- .../builtin/packages/r-nloptr/package.py | 2 +- .../repos/builtin/packages/r-nmf/package.py | 2 +- .../repos/builtin/packages/r-nnet/package.py | 2 +- .../repos/builtin/packages/r-np/package.py | 2 +- .../builtin/packages/r-numderiv/package.py | 2 +- .../builtin/packages/r-openssl/package.py | 2 +- .../builtin/packages/r-packrat/package.py | 2 +- .../builtin/packages/r-pacman/package.py | 2 +- .../repos/builtin/packages/r-party/package.py | 2 +- .../builtin/packages/r-partykit/package.py | 2 +- .../builtin/packages/r-pbdzmq/package.py | 2 +- .../builtin/packages/r-pbkrtest/package.py | 2 +- .../builtin/packages/r-permute/package.py | 2 +- .../builtin/packages/r-pkgmaker/package.py | 2 +- .../builtin/packages/r-plotrix/package.py | 2 +- .../repos/builtin/packages/r-pls/package.py | 2 +- .../repos/builtin/packages/r-plyr/package.py | 2 +- .../repos/builtin/packages/r-png/package.py | 2 +- .../builtin/packages/r-prabclus/package.py | 2 +- .../builtin/packages/r-praise/package.py | 2 +- .../builtin/packages/r-prodlim/package.py | 2 +- .../repos/builtin/packages/r-proto/package.py | 2 +- .../repos/builtin/packages/r-pryr/package.py | 2 +- .../builtin/packages/r-quadprog/package.py | 2 +- .../builtin/packages/r-quantmod/package.py | 2 +- .../builtin/packages/r-quantreg/package.py | 2 +- .../repos/builtin/packages/r-r6/package.py | 2 +- .../packages/r-randomforest/package.py | 2 +- .../builtin/packages/r-raster/package.py | 2 +- .../builtin/packages/r-rbokeh/package.py | 2 +- .../packages/r-rcolorbrewer/package.py | 2 +- .../repos/builtin/packages/r-rcpp/package.py | 2 +- .../builtin/packages/r-rcppeigen/package.py | 2 +- .../builtin/packages/r-registry/package.py | 2 +- .../repos/builtin/packages/r-repr/package.py | 2 +- .../builtin/packages/r-reshape2/package.py | 2 +- .../repos/builtin/packages/r-rgl/package.py | 2 +- .../builtin/packages/r-rgooglemaps/package.py | 2 +- .../builtin/packages/r-rinside/package.py | 2 +- .../repos/builtin/packages/r-rjava/package.py | 2 +- .../repos/builtin/packages/r-rjson/package.py | 2 +- .../builtin/packages/r-rjsonio/package.py | 2 +- .../builtin/packages/r-rmarkdown/package.py | 2 +- .../builtin/packages/r-rminer/package.py | 2 +- .../repos/builtin/packages/r-rmpfr/package.py | 2 +- .../repos/builtin/packages/r-rmpi/package.py | 2 +- .../builtin/packages/r-rmysql/package.py | 2 +- .../builtin/packages/r-rngtools/package.py | 2 +- .../builtin/packages/r-robustbase/package.py | 2 +- .../repos/builtin/packages/r-rodbc/package.py | 2 +- .../builtin/packages/r-roxygen2/package.py | 2 +- .../builtin/packages/r-rpart-plot/package.py | 2 +- .../repos/builtin/packages/r-rpart/package.py | 2 +- .../builtin/packages/r-rpostgresql/package.py | 2 +- .../repos/builtin/packages/r-rsnns/package.py | 2 +- .../builtin/packages/r-rsqlite/package.py | 2 +- .../repos/builtin/packages/r-rstan/package.py | 2 +- .../builtin/packages/r-rstudioapi/package.py | 2 +- .../repos/builtin/packages/r-rzmq/package.py | 2 +- .../builtin/packages/r-sandwich/package.py | 2 +- .../builtin/packages/r-scales/package.py | 2 +- .../packages/r-scatterplot3d/package.py | 2 +- .../builtin/packages/r-segmented/package.py | 2 +- .../builtin/packages/r-seqinr/package.py | 2 +- .../repos/builtin/packages/r-shiny/package.py | 2 +- .../repos/builtin/packages/r-snow/package.py | 2 +- .../repos/builtin/packages/r-sp/package.py | 2 +- .../builtin/packages/r-sparsem/package.py | 2 +- .../repos/builtin/packages/r-spdep/package.py | 2 +- .../builtin/packages/r-stanheaders/package.py | 2 +- .../packages/r-statnet-common/package.py | 2 +- .../builtin/packages/r-stringi/package.py | 2 +- .../builtin/packages/r-stringr/package.py | 2 +- .../builtin/packages/r-strucchange/package.py | 2 +- .../builtin/packages/r-survey/package.py | 2 +- .../builtin/packages/r-survival/package.py | 2 +- .../builtin/packages/r-tarifx/package.py | 2 +- .../builtin/packages/r-testit/package.py | 2 +- .../builtin/packages/r-testthat/package.py | 2 +- .../builtin/packages/r-th-data/package.py | 2 +- .../builtin/packages/r-threejs/package.py | 2 +- .../builtin/packages/r-tibble/package.py | 2 +- .../repos/builtin/packages/r-tidyr/package.py | 2 +- .../builtin/packages/r-trimcluster/package.py | 2 +- .../repos/builtin/packages/r-trust/package.py | 2 +- .../repos/builtin/packages/r-ttr/package.py | 2 +- .../repos/builtin/packages/r-uuid/package.py | 2 +- .../repos/builtin/packages/r-vcd/package.py | 2 +- .../repos/builtin/packages/r-vegan/package.py | 2 +- .../builtin/packages/r-viridis/package.py | 2 +- .../builtin/packages/r-viridislite/package.py | 2 +- .../builtin/packages/r-visnetwork/package.py | 2 +- .../builtin/packages/r-whisker/package.py | 2 +- .../repos/builtin/packages/r-withr/package.py | 2 +- .../builtin/packages/r-xgboost/package.py | 2 +- .../builtin/packages/r-xlconnect/package.py | 2 +- .../packages/r-xlconnectjars/package.py | 2 +- .../repos/builtin/packages/r-xlsx/package.py | 2 +- .../builtin/packages/r-xlsxjars/package.py | 2 +- .../repos/builtin/packages/r-xml/package.py | 2 +- .../builtin/packages/r-xtable/package.py | 2 +- .../repos/builtin/packages/r-xts/package.py | 2 +- .../repos/builtin/packages/r-yaml/package.py | 2 +- .../repos/builtin/packages/r-zoo/package.py | 2 +- var/spack/repos/builtin/packages/r/package.py | 2 +- .../repos/builtin/packages/raja/package.py | 2 +- .../builtin/packages/random123/package.py | 2 +- .../builtin/packages/randrproto/package.py | 2 +- .../repos/builtin/packages/ravel/package.py | 2 +- .../builtin/packages/readline/package.py | 2 +- .../builtin/packages/recordproto/package.py | 2 +- .../repos/builtin/packages/relion/package.py | 2 +- .../repos/builtin/packages/rempi/package.py | 2 +- .../repos/builtin/packages/rename/package.py | 2 +- .../builtin/packages/rendercheck/package.py | 2 +- .../builtin/packages/renderproto/package.py | 2 +- .../builtin/packages/resourceproto/package.py | 2 +- .../repos/builtin/packages/rgb/package.py | 2 +- .../builtin/packages/rockstar/package.py | 2 +- .../repos/builtin/packages/root/package.py | 2 +- .../repos/builtin/packages/rose/package.py | 2 +- .../repos/builtin/packages/rstart/package.py | 2 +- .../repos/builtin/packages/rsync/package.py | 2 +- .../repos/builtin/packages/ruby/package.py | 2 +- .../builtin/packages/rust-bindgen/package.py | 2 +- .../repos/builtin/packages/rust/package.py | 2 +- .../repos/builtin/packages/samrai/package.py | 2 +- .../builtin/packages/samtools/package.py | 2 +- .../repos/builtin/packages/sas/package.py | 2 +- .../repos/builtin/packages/saws/package.py | 8 +- .../repos/builtin/packages/sbt/package.py | 2 +- .../repos/builtin/packages/scala/package.py | 2 +- .../builtin/packages/scalasca/package.py | 2 +- .../repos/builtin/packages/scons/package.py | 2 +- .../builtin/packages/scorec-core/package.py | 2 +- .../repos/builtin/packages/scorep/package.py | 2 +- .../repos/builtin/packages/scotch/package.py | 2 +- .../repos/builtin/packages/scr/package.py | 2 +- .../repos/builtin/packages/screen/package.py | 2 +- .../repos/builtin/packages/scripts/package.py | 2 +- .../packages/scrnsaverproto/package.py | 2 +- .../repos/builtin/packages/sctk/package.py | 10 +- .../builtin/packages/sdl2-image/package.py | 2 +- .../repos/builtin/packages/sdl2/package.py | 2 +- .../repos/builtin/packages/sed/package.py | 2 +- .../repos/builtin/packages/seqtk/package.py | 2 +- .../repos/builtin/packages/serf/package.py | 2 +- .../repos/builtin/packages/sessreg/package.py | 2 +- .../builtin/packages/setxkbmap/package.py | 2 +- .../repos/builtin/packages/sga/package.py | 4 +- .../builtin/packages/shiny-server/package.py | 2 +- .../builtin/packages/showfont/package.py | 2 +- .../repos/builtin/packages/silo/package.py | 2 +- .../repos/builtin/packages/simul/package.py | 4 +- .../builtin/packages/simulationio/package.py | 2 +- .../repos/builtin/packages/slepc/package.py | 2 +- .../repos/builtin/packages/smproxy/package.py | 2 +- .../builtin/packages/snakemake/package.py | 2 +- .../repos/builtin/packages/snappy/package.py | 2 +- .../repos/builtin/packages/sowing/package.py | 2 +- .../repos/builtin/packages/sox/package.py | 2 +- .../repos/builtin/packages/spark/package.py | 2 +- .../builtin/packages/sparsehash/package.py | 2 +- .../repos/builtin/packages/spdlog/package.py | 2 +- .../builtin/packages/spectrum-mpi/package.py | 2 +- .../repos/builtin/packages/speex/package.py | 4 +- .../builtin/packages/sph2pipe/package.py | 2 +- .../builtin/packages/spherepack/package.py | 2 +- .../repos/builtin/packages/spindle/package.py | 2 +- .../repos/builtin/packages/spot/package.py | 2 +- .../repos/builtin/packages/sqlite/package.py | 2 +- .../builtin/packages/sst-dumpi/package.py | 2 +- .../builtin/packages/sst-macro/package.py | 2 +- .../builtin/packages/staden-io-lib/package.py | 4 +- .../builtin/packages/star-ccm-plus/package.py | 2 +- .../repos/builtin/packages/star/package.py | 2 +- .../repos/builtin/packages/stat/package.py | 2 +- .../repos/builtin/packages/stc/package.py | 2 +- .../repos/builtin/packages/stream/package.py | 2 +- .../repos/builtin/packages/stress/package.py | 2 +- .../builtin/packages/sublime-text/package.py | 2 +- .../builtin/packages/subversion/package.py | 2 +- .../builtin/packages/suite-sparse/package.py | 2 +- .../builtin/packages/sundials/package.py | 2 +- .../builtin/packages/superlu-dist/package.py | 2 +- .../builtin/packages/superlu-mt/package.py | 2 +- .../repos/builtin/packages/superlu/package.py | 2 +- .../builtin/packages/swiftsim/package.py | 2 +- .../repos/builtin/packages/swig/package.py | 2 +- .../builtin/packages/symengine/package.py | 2 +- .../repos/builtin/packages/sympol/package.py | 2 +- .../repos/builtin/packages/sz/package.py | 2 +- .../repos/builtin/packages/szip/package.py | 2 +- .../repos/builtin/packages/talloc/package.py | 2 +- .../repos/builtin/packages/tar/package.py | 2 +- .../repos/builtin/packages/task/package.py | 2 +- .../repos/builtin/packages/taskd/package.py | 2 +- .../repos/builtin/packages/tau/package.py | 2 +- .../repos/builtin/packages/tbb/package.py | 2 +- .../repos/builtin/packages/tcl/package.py | 2 +- .../repos/builtin/packages/tetgen/package.py | 2 +- .../repos/builtin/packages/tethex/package.py | 2 +- .../repos/builtin/packages/texinfo/package.py | 2 +- .../repos/builtin/packages/texlive/package.py | 2 +- .../packages/the-platinum-searcher/package.py | 2 +- .../packages/the-silver-searcher/package.py | 2 +- .../repos/builtin/packages/thrift/package.py | 2 +- .../repos/builtin/packages/tinyxml/package.py | 2 +- .../builtin/packages/tinyxml2/package.py | 2 +- .../repos/builtin/packages/tk/package.py | 2 +- .../repos/builtin/packages/tmux/package.py | 2 +- .../builtin/packages/tmuxinator/package.py | 2 +- .../builtin/packages/transset/package.py | 2 +- .../builtin/packages/trapproto/package.py | 2 +- .../repos/builtin/packages/tree/package.py | 2 +- .../builtin/packages/triangle/package.py | 2 +- .../builtin/packages/trilinos/package.py | 2 +- .../builtin/packages/trimmomatic/package.py | 2 +- .../repos/builtin/packages/turbine/package.py | 2 +- .../builtin/packages/turbomole/package.py | 2 +- .../repos/builtin/packages/tut/package.py | 2 +- .../repos/builtin/packages/twm/package.py | 2 +- .../repos/builtin/packages/uberftp/package.py | 2 +- .../builtin/packages/udunits2/package.py | 2 +- .../builtin/packages/uncrustify/package.py | 2 +- .../builtin/packages/unibilium/package.py | 2 +- .../repos/builtin/packages/unison/package.py | 2 +- .../repos/builtin/packages/units/package.py | 2 +- .../builtin/packages/unixodbc/package.py | 2 +- .../builtin/packages/util-linux/package.py | 2 +- .../builtin/packages/util-macros/package.py | 2 +- .../repos/builtin/packages/uuid/package.py | 2 +- .../builtin/packages/valgrind/package.py | 2 +- .../builtin/packages/vampirtrace/package.py | 2 +- .../repos/builtin/packages/vc/package.py | 2 +- .../builtin/packages/vcftools/package.py | 2 +- .../repos/builtin/packages/vcsh/package.py | 2 +- .../repos/builtin/packages/vdt/package.py | 2 +- .../repos/builtin/packages/vecgeom/package.py | 2 +- .../builtin/packages/veclibfort/package.py | 2 +- .../builtin/packages/videoproto/package.py | 2 +- .../repos/builtin/packages/viewres/package.py | 2 +- .../repos/builtin/packages/vim/package.py | 2 +- .../builtin/packages/virtualgl/package.py | 2 +- .../repos/builtin/packages/visit/package.py | 2 +- .../repos/builtin/packages/vizglow/package.py | 2 +- .../repos/builtin/packages/voropp/package.py | 2 +- .../builtin/packages/votca-csg/package.py | 2 +- .../builtin/packages/votca-ctp/package.py | 2 +- .../builtin/packages/votca-moo/package.py | 2 +- .../builtin/packages/votca-tools/package.py | 2 +- .../repos/builtin/packages/vtk/package.py | 2 +- .../builtin/packages/wannier90/package.py | 2 +- .../repos/builtin/packages/wget/package.py | 2 +- .../packages/windowswmproto/package.py | 2 +- .../repos/builtin/packages/wt/package.py | 2 +- .../repos/builtin/packages/wx/package.py | 2 +- .../builtin/packages/wxpropgrid/package.py | 2 +- .../repos/builtin/packages/x11perf/package.py | 2 +- .../builtin/packages/xapian-core/package.py | 2 +- .../repos/builtin/packages/xauth/package.py | 2 +- .../builtin/packages/xbacklight/package.py | 2 +- .../repos/builtin/packages/xbiff/package.py | 2 +- .../builtin/packages/xbitmaps/package.py | 2 +- .../repos/builtin/packages/xcalc/package.py | 2 +- .../builtin/packages/xcb-demo/package.py | 2 +- .../builtin/packages/xcb-proto/package.py | 2 +- .../packages/xcb-util-cursor/package.py | 2 +- .../packages/xcb-util-errors/package.py | 2 +- .../packages/xcb-util-image/package.py | 2 +- .../packages/xcb-util-keysyms/package.py | 2 +- .../packages/xcb-util-renderutil/package.py | 2 +- .../builtin/packages/xcb-util-wm/package.py | 2 +- .../builtin/packages/xcb-util/package.py | 2 +- .../builtin/packages/xclipboard/package.py | 2 +- .../repos/builtin/packages/xclock/package.py | 2 +- .../builtin/packages/xcmiscproto/package.py | 2 +- .../repos/builtin/packages/xcmsdb/package.py | 2 +- .../builtin/packages/xcompmgr/package.py | 2 +- .../builtin/packages/xconsole/package.py | 2 +- .../packages/xcursor-themes/package.py | 2 +- .../builtin/packages/xcursorgen/package.py | 2 +- .../builtin/packages/xdbedizzy/package.py | 2 +- .../builtin/packages/xditview/package.py | 2 +- .../repos/builtin/packages/xdm/package.py | 2 +- .../builtin/packages/xdpyinfo/package.py | 2 +- .../builtin/packages/xdriinfo/package.py | 2 +- .../repos/builtin/packages/xedit/package.py | 2 +- .../builtin/packages/xerces-c/package.py | 2 +- .../repos/builtin/packages/xev/package.py | 2 +- .../builtin/packages/xextproto/package.py | 2 +- .../repos/builtin/packages/xeyes/package.py | 2 +- .../packages/xf86bigfontproto/package.py | 2 +- .../repos/builtin/packages/xf86dga/package.py | 2 +- .../builtin/packages/xf86dgaproto/package.py | 2 +- .../builtin/packages/xf86driproto/package.py | 2 +- .../builtin/packages/xf86miscproto/package.py | 2 +- .../builtin/packages/xf86rushproto/package.py | 2 +- .../packages/xf86vidmodeproto/package.py | 2 +- .../repos/builtin/packages/xfd/package.py | 2 +- .../builtin/packages/xfindproxy/package.py | 2 +- .../builtin/packages/xfontsel/package.py | 2 +- .../repos/builtin/packages/xfs/package.py | 2 +- .../repos/builtin/packages/xfsinfo/package.py | 2 +- .../repos/builtin/packages/xfwp/package.py | 2 +- .../repos/builtin/packages/xgamma/package.py | 2 +- .../repos/builtin/packages/xgc/package.py | 2 +- .../repos/builtin/packages/xhost/package.py | 2 +- .../builtin/packages/xineramaproto/package.py | 2 +- .../repos/builtin/packages/xinit/package.py | 2 +- .../repos/builtin/packages/xinput/package.py | 2 +- .../repos/builtin/packages/xkbcomp/package.py | 2 +- .../repos/builtin/packages/xkbdata/package.py | 2 +- .../repos/builtin/packages/xkbevd/package.py | 2 +- .../builtin/packages/xkbprint/package.py | 2 +- .../builtin/packages/xkbutils/package.py | 2 +- .../packages/xkeyboard-config/package.py | 2 +- .../repos/builtin/packages/xkill/package.py | 2 +- .../repos/builtin/packages/xload/package.py | 2 +- .../repos/builtin/packages/xlogo/package.py | 2 +- .../builtin/packages/xlsatoms/package.py | 2 +- .../builtin/packages/xlsclients/package.py | 2 +- .../builtin/packages/xlsfonts/package.py | 2 +- .../repos/builtin/packages/xmag/package.py | 2 +- .../repos/builtin/packages/xman/package.py | 2 +- .../builtin/packages/xmessage/package.py | 2 +- .../repos/builtin/packages/xmh/package.py | 2 +- .../repos/builtin/packages/xmlto/package.py | 2 +- .../repos/builtin/packages/xmodmap/package.py | 2 +- .../repos/builtin/packages/xmore/package.py | 2 +- .../builtin/packages/xorg-cf-files/package.py | 2 +- .../builtin/packages/xorg-docs/package.py | 2 +- .../builtin/packages/xorg-gtest/package.py | 2 +- .../builtin/packages/xorg-server/package.py | 2 +- .../packages/xorg-sgml-doctools/package.py | 2 +- .../builtin/packages/xphelloworld/package.py | 2 +- .../builtin/packages/xplsprinters/package.py | 2 +- .../repos/builtin/packages/xpr/package.py | 2 +- .../packages/xprehashprinterlist/package.py | 2 +- .../repos/builtin/packages/xprop/package.py | 2 +- .../repos/builtin/packages/xproto/package.py | 2 +- .../xproxymanagementprotocol/package.py | 2 +- .../repos/builtin/packages/xqilla/package.py | 2 +- .../repos/builtin/packages/xrandr/package.py | 2 +- .../repos/builtin/packages/xrdb/package.py | 2 +- .../builtin/packages/xrefresh/package.py | 2 +- .../repos/builtin/packages/xrootd/package.py | 2 +- .../repos/builtin/packages/xrx/package.py | 2 +- .../repos/builtin/packages/xscope/package.py | 2 +- .../repos/builtin/packages/xsdk/package.py | 2 +- .../builtin/packages/xsdktrilinos/package.py | 2 +- .../repos/builtin/packages/xset/package.py | 2 +- .../builtin/packages/xsetmode/package.py | 2 +- .../builtin/packages/xsetpointer/package.py | 2 +- .../builtin/packages/xsetroot/package.py | 2 +- .../repos/builtin/packages/xsm/package.py | 2 +- .../builtin/packages/xstdcmap/package.py | 2 +- .../repos/builtin/packages/xterm/package.py | 2 +- .../repos/builtin/packages/xtrans/package.py | 2 +- .../repos/builtin/packages/xtrap/package.py | 2 +- .../repos/builtin/packages/xts/package.py | 2 +- .../builtin/packages/xvidtune/package.py | 2 +- .../repos/builtin/packages/xvinfo/package.py | 2 +- .../repos/builtin/packages/xwd/package.py | 2 +- .../builtin/packages/xwininfo/package.py | 2 +- .../repos/builtin/packages/xwud/package.py | 2 +- .../repos/builtin/packages/xz/package.py | 2 +- .../builtin/packages/yaml-cpp/package.py | 2 +- .../repos/builtin/packages/yasm/package.py | 2 +- .../repos/builtin/packages/yorick/package.py | 2 +- .../repos/builtin/packages/z3/package.py | 2 +- .../repos/builtin/packages/zeromq/package.py | 2 +- .../repos/builtin/packages/zfp/package.py | 2 +- .../repos/builtin/packages/zip/package.py | 2 +- .../repos/builtin/packages/zlib/package.py | 2 +- .../repos/builtin/packages/zoltan/package.py | 2 +- .../repos/builtin/packages/zsh/package.py | 2 +- .../repos/builtin/packages/zstd/package.py | 2 +- 1854 files changed, 2264 insertions(+), 2125 deletions(-) create mode 100644 NOTICE diff --git a/LICENSE b/LICENSE index d7d101a3ac7..744bb9f3b5d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,135 +1,197 @@ -######################################################################## -GNU LESSER GENERAL PUBLIC LICENSE (Lesser GPL) -Version 2.1, February 1999 -######################################################################## -Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -Produced at the Lawrence Livermore National Laboratory. + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 -This file is part of Spack. -Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -LLNL-CODE-647188 + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. -For details, see https://github.com/llnl/spack +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License (as -published by the Free Software Foundation) version 2.1, February 1999. + Preamble -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -conditions of the GNU Lesser General Public License for more details. + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. -You should have received a copy of the GNU Lesser General Public -License along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. -######################################################################## -LLNL NOTICE AND TERMS AND CONDITIONS OF THE GNU LGPL + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. -LLNL Preamble Notice + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. -A. This notice is required to be provided under LLNL's contract with - the U.S. Department of Energy (DOE). This work was produced at the - Lawrence Livermore National Laboratory under Contract - No. DE-AC52-07NA27344 with the DOE. + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. -B. Neither the United States Government nor Lawrence Livermore - National Security, LLC nor any of their employees, makes any - warranty, express or implied, or assumes any liability or - responsibility for the accuracy, completeness, or usefulness of any - information, apparatus, product, or process disclosed, or - represents that its use would not infringe privately-owned rights. + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. -C. Also, reference herein to any specific commercial products, - process, or services by trade name, trademark, manufacturer or - otherwise does not necessarily constitute or imply its endorsement, - recommendation, or favoring by the United States Government or - Lawrence Livermore National Security, LLC. The views and opinions - of authors expressed herein do not necessarily state or reflect - those of the United States Government or Lawrence Livermore - National Security, LLC, and shall not be used for advertising or - product endorsement purposes. + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. -The precise terms and conditions for copying, distribution and -modification follows. + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. -######################################################################## -GNU LESSER GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. -0. This License Agreement applies to any software library or other + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). Each -licensee is addressed as "you". +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". -A "library" means a collection of software functions and/or data + A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. -The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is +straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) -"Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control -compilation and installation of the library. Activities other than -copying, distribution and modification are not covered by this -License; they are outside its scope. The act of running a program -using the Library is not restricted, and output from such a program is -covered only if its contents constitute a work based on the Library -(independent of the use of the Library in a tool for writing -it). Whether that is true depends on what the Library does and what -the program that uses the Library does. +interface definition files, plus the scripts used to control compilation +and installation of the library. -1. You may copy and distribute verbatim copies of the Library's + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the -Library. You may charge a fee for the physical act of transferring a -copy, and you may at your option offer warranty protection in exchange -for a fee. +Library. -2. You may modify your copy or copies of the Library or any portion of -it, thus forming a work based on the Library, and copy and distribute -such modifications or work under the terms of Section 1 above, -provided that you also meet all of these conditions: + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. -a) The modified work must itself be a software library. + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: -b) You must cause the files modified to carry prominent notices -stating that you changed the files and the date of any change. + a) The modified work must itself be a software library. -c) You must cause the whole of the work to be licensed at no charge to -all third parties under the terms of this License. + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. -d) If a facility in the modified Library refers to a function or a -table of data to be supplied by an application program that uses the -facility, other than as an argument passed when the facility is -invoked, then you must make a good faith effort to ensure that, in the -event an application does not supply such function or table, the -facility still operates, and performs whatever part of its purpose -remains meaningful. (For example, a function in a library to compute -square roots has a purpose that is entirely well-defined independent -of the application. Therefore, Subsection 2d requires that any -application-supplied function or table used by this function must be -optional: if the application does not supply it, the square root -function must still compute square roots.) + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. -These requirements apply to the modified work as a whole. If + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you +sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the @@ -146,189 +208,191 @@ with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. -3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the +instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in +that version instead if you wish.) Do not make any other change in these notices. -Once this change is made in a given copy, it is irreversible for that -copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. This -option is useful when you wish to copy part of the code of the Library -into a program that is not a library. + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. -4. You may copy and distribute the Library (or a portion or derivative -of it, under Section 2) in object code or executable form under the -terms of Sections 1 and 2 above provided that you accompany it with -the complete corresponding machine- readable source code, which must -be distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange. + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. -If distribution of object code is made by offering access to copy from -a designated place, then offering equivalent access to copy the source -code from the same place satisfies the requirement to distribute the -source code, even though third parties are not compelled to copy the -source along with the object code. + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. -5. A program that contains no derivative of any portion of the + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a work, -in isolation, is not a derivative work of the Library, and therefore -falls outside the scope of this License. +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. -However, linking a "work that uses the Library" with the Library + However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. Section -6 states terms for distribution of such executables. +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. -When a "work that uses the Library" uses material from a header file + When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is -not. Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. -If such an object file uses only numerical parameters, data structure -layouts and accessors, and small macros and small inline functions -(ten lines or less in length), then the use of the object file is -unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under section 6.) + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) -Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section -6. Any executables containing that work also fall under Section 6, + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. -6. As an exception to the Sections above, you may also combine or link -a "work that uses the Library" with the Library to produce a work -containing portions of the Library, and distribute that work under -terms of your choice, provided that the terms permit modification of -the work for the customer's own use and reverse engineering for -debugging such modifications. + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. -You must give prominent notice with each copy of the work that the + You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work +this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one +directing the user to the copy of this License. Also, you must do one of these things: -a) Accompany the work with the complete corresponding machine-readable -source code for the Library including whatever changes were used in -the work (which must be distributed under Sections 1 and 2 above); -and, if the work is an executable liked with the Library, with the -complete machine-readable "work that uses the Library", as object code -and/or source code, so that the user can modify the Library and then -relink to produce a modified executable containing the modified -Library. (It is understood that the user who changes the contents of -definitions files in the Library will not necessarily be able to -recompile the application to use the modified definitions.) + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) -b) Use a suitable shared library mechanism for linking with the -Library. A suitable mechanism is one that (1) uses at run time a copy -of the library already present on the user's computer system, rather -than copying library functions into the executable, and (2) will -operate properly with a modified version of the library, if the user -installs one, as long as the modified version is interface- compatible -with the version that the work was made with. + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. -c) Accompany the work with a written offer, valid for at least three -years, to give the same user the materials specified in Subsection 6a, -above, for a charge no more than the cost of performing this -distribution. + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. -d) If distribution of the work is made by offering access to copy from -a designated place, offer equivalent access to copy the above -specified materials from the same place. + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. -e) Verify that the user has already received a copy of these materials -or that you have already sent this user a copy. + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. -For an executable, the required form of the "work that uses the + For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, +reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. -It may happen that this requirement contradicts the license -restrictions of other propriety libraries that do not normally -accompany the operating system. Such a contradiction means you cannot + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. -7. You may place library facilities that are a work based on the + 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: -a) Accompany the combined library with a copy of the same work based -on the Library, uncombined with any other library facilities. This -must be distributed under the terms of the Sections above. + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. -b) Give prominent notice with the combined library of the fact that -part of it is a work based on the Library, and explaining where to -find the accompanying uncombined form of the same work. + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. -1 You may not copy, modify, sublicense, link with, or distribute the -Library except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense, link with, or distribute the -Library is void, and will automatically terminate your rights under -this License. However, parties who have received copies, or rights, -from you under this License will not have their licenses terminated so -long as such parties remain in full compliance. + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. -2 You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. -3 Each time you redistribute the Library (or any work based on the + 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted -herein. You are not responsible for enforcing compliance by third -parties with this License. +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. -4 If, as a consequence of a court judgment or allegation of patent + 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot +excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent +may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply, and the section as a whole is intended to apply in other -circumstances. +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is -implemented by public license practices. Many people have made +implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing @@ -338,56 +402,102 @@ impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. -1 If the distribution and/or use of the Library is restricted in + 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. -13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. Such -new versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Library +Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a +the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. -2 If you wish to incorporate parts of the Library into other free + 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is +write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our +Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. -NO WARRANTY + NO WARRANTY -1 BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT -WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER -PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. -2 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE - -LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL -OR CONSQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + diff --git a/NOTICE b/NOTICE new file mode 100644 index 00000000000..ed0d0df7922 --- /dev/null +++ b/NOTICE @@ -0,0 +1,32 @@ +######################################################################## +LLNL NOTICE AND TERMS AND CONDITIONS OF THE GNU LGPL +######################################################################## + +LLNL Preamble Notice + +A. This notice is required to be provided under LLNL's contract with + the U.S. Department of Energy (DOE). This work was produced at the + Lawrence Livermore National Laboratory under Contract + No. DE-AC52-07NA27344 with the DOE. + +B. Neither the United States Government nor Lawrence Livermore + National Security, LLC nor any of their employees, makes any + warranty, express or implied, or assumes any liability or + responsibility for the accuracy, completeness, or usefulness of any + information, apparatus, product, or process disclosed, or + represents that its use would not infringe privately-owned rights. + +C. Also, reference herein to any specific commercial products, + process, or services by trade name, trademark, manufacturer or + otherwise does not necessarily constitute or imply its endorsement, + recommendation, or favoring by the United States Government or + Lawrence Livermore National Security, LLC. The views and opinions + of authors expressed herein do not necessarily state or reflect + those of the United States Government or Lawrence Livermore + National Security, LLC, and shall not be used for advertising or + product endorsement purposes. + +See the LICENSE file for the precise terms and conditions for copying, +distribution and modification. + +######################################################################## diff --git a/README.md b/README.md index 7e83f0eddb4..81510b54ca1 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ If you are referencing Spack in a publication, please cite the following paper: Release ---------------- Spack is released under an LGPL license. For more details see the -LICENSE file. +NOTICE and LICENSE files. ``LLNL-CODE-647188`` diff --git a/bin/sbang b/bin/sbang index ed54f7dad7e..0b883a5feb0 100755 --- a/bin/sbang +++ b/bin/sbang @@ -8,7 +8,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/bin/spack b/bin/spack index 496c7050422..d95c07844c0 100755 --- a/bin/spack +++ b/bin/spack @@ -8,7 +8,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/bin/spack-python b/bin/spack-python index 96bc3678660..f79f859717e 100755 --- a/bin/spack-python +++ b/bin/spack-python @@ -8,7 +8,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index ee2b314aa34..887d04b5650 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -8,7 +8,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/docs/tutorial/examples/0.package.py b/lib/spack/docs/tutorial/examples/0.package.py index 7ff04d8f177..691f364df6c 100644 --- a/lib/spack/docs/tutorial/examples/0.package.py +++ b/lib/spack/docs/tutorial/examples/0.package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/docs/tutorial/examples/1.package.py b/lib/spack/docs/tutorial/examples/1.package.py index ed156fb34bc..ec2f23d5ea4 100644 --- a/lib/spack/docs/tutorial/examples/1.package.py +++ b/lib/spack/docs/tutorial/examples/1.package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/docs/tutorial/examples/2.package.py b/lib/spack/docs/tutorial/examples/2.package.py index 93274cb587f..8dfb149ca4c 100644 --- a/lib/spack/docs/tutorial/examples/2.package.py +++ b/lib/spack/docs/tutorial/examples/2.package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/docs/tutorial/examples/3.package.py b/lib/spack/docs/tutorial/examples/3.package.py index e732a7187d3..58208a26a42 100644 --- a/lib/spack/docs/tutorial/examples/3.package.py +++ b/lib/spack/docs/tutorial/examples/3.package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/docs/tutorial/examples/4.package.py b/lib/spack/docs/tutorial/examples/4.package.py index 8f3fae37edc..05735cf3d04 100644 --- a/lib/spack/docs/tutorial/examples/4.package.py +++ b/lib/spack/docs/tutorial/examples/4.package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/env/cc b/lib/spack/env/cc index aa3c2aa4b15..afec3eefaae 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -8,7 +8,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/external/__init__.py b/lib/spack/external/__init__.py index 48fe4ec5ac7..d3d085eee3e 100644 --- a/lib/spack/external/__init__.py +++ b/lib/spack/external/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/__init__.py b/lib/spack/llnl/__init__.py index ed1ec23bcab..445b6fdbd71 100644 --- a/lib/spack/llnl/__init__.py +++ b/lib/spack/llnl/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/util/__init__.py b/lib/spack/llnl/util/__init__.py index ed1ec23bcab..445b6fdbd71 100644 --- a/lib/spack/llnl/util/__init__.py +++ b/lib/spack/llnl/util/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index f7fae7eb44d..88e000b6d3c 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 9821ec74169..012befeada9 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/util/link_tree.py b/lib/spack/llnl/util/link_tree.py index d6547e933af..7e77cd738c8 100644 --- a/lib/spack/llnl/util/link_tree.py +++ b/lib/spack/llnl/util/link_tree.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/util/lock.py b/lib/spack/llnl/util/lock.py index a45ddec6912..2cab436e2d3 100644 --- a/lib/spack/llnl/util/lock.py +++ b/lib/spack/llnl/util/lock.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index b28ac22c1fd..59e20ebfe30 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/util/tty/colify.py b/lib/spack/llnl/util/tty/colify.py index 774f4035fde..fff449a51c0 100644 --- a/lib/spack/llnl/util/tty/colify.py +++ b/lib/spack/llnl/util/tty/colify.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/util/tty/color.py b/lib/spack/llnl/util/tty/color.py index bb1563f82bc..fc3b697827e 100644 --- a/lib/spack/llnl/util/tty/color.py +++ b/lib/spack/llnl/util/tty/color.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 34916ef7e7f..4bf7c77d2c2 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index b67fcaf2f66..1f583fff61e 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -8,7 +8,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/abi.py b/lib/spack/spack/abi.py index 401b99cf712..4354a8b5c8b 100644 --- a/lib/spack/spack/abi.py +++ b/lib/spack/spack/abi.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py index bace3c49f69..487948dd4e7 100644 --- a/lib/spack/spack/architecture.py +++ b/lib/spack/spack/architecture.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index ac44e57c09d..49fecdb59cd 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/build_systems/__init__.py b/lib/spack/spack/build_systems/__init__.py index ed1ec23bcab..445b6fdbd71 100644 --- a/lib/spack/spack/build_systems/__init__.py +++ b/lib/spack/spack/build_systems/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index 2e4c86ea3e6..4378d7aa589 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index 43d177d3cb6..4435a995fcb 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/build_systems/makefile.py b/lib/spack/spack/build_systems/makefile.py index 2311158bfea..b1f55e5ed6b 100644 --- a/lib/spack/spack/build_systems/makefile.py +++ b/lib/spack/spack/build_systems/makefile.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/build_systems/perl.py b/lib/spack/spack/build_systems/perl.py index 2f272373d2f..aabb53d589a 100644 --- a/lib/spack/spack/build_systems/perl.py +++ b/lib/spack/spack/build_systems/perl.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index c52c529b50d..63dd67d400b 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/build_systems/r.py b/lib/spack/spack/build_systems/r.py index a659f75b986..8f7af8cd327 100644 --- a/lib/spack/spack/build_systems/r.py +++ b/lib/spack/spack/build_systems/r.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/build_systems/waf.py b/lib/spack/spack/build_systems/waf.py index bb4fa6c3694..afe019028b7 100644 --- a/lib/spack/spack/build_systems/waf.py +++ b/lib/spack/spack/build_systems/waf.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 622ef4d96c6..f6910387344 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/activate.py b/lib/spack/spack/cmd/activate.py index f7e826efd6e..73faa83f08d 100644 --- a/lib/spack/spack/cmd/activate.py +++ b/lib/spack/spack/cmd/activate.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/arch.py b/lib/spack/spack/cmd/arch.py index d4241dcae94..1d028478264 100644 --- a/lib/spack/spack/cmd/arch.py +++ b/lib/spack/spack/cmd/arch.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/bootstrap.py b/lib/spack/spack/cmd/bootstrap.py index b6daf4f09bf..135dd66d39e 100644 --- a/lib/spack/spack/cmd/bootstrap.py +++ b/lib/spack/spack/cmd/bootstrap.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/build.py b/lib/spack/spack/cmd/build.py index cc63c6593b8..413b73a08eb 100644 --- a/lib/spack/spack/cmd/build.py +++ b/lib/spack/spack/cmd/build.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/cd.py b/lib/spack/spack/cmd/cd.py index 531f3c59fd1..4ee671d8b9c 100644 --- a/lib/spack/spack/cmd/cd.py +++ b/lib/spack/spack/cmd/cd.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/checksum.py b/lib/spack/spack/cmd/checksum.py index d8a17fd3836..858ecdf54fe 100644 --- a/lib/spack/spack/cmd/checksum.py +++ b/lib/spack/spack/cmd/checksum.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py index 23507822ef4..b7812bffc4b 100644 --- a/lib/spack/spack/cmd/clean.py +++ b/lib/spack/spack/cmd/clean.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/common/__init__.py b/lib/spack/spack/cmd/common/__init__.py index ed1ec23bcab..445b6fdbd71 100644 --- a/lib/spack/spack/cmd/common/__init__.py +++ b/lib/spack/spack/cmd/common/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 3115501439f..46ff44c84aa 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index f2eeca20ab3..d5aa25ee8eb 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/compilers.py b/lib/spack/spack/cmd/compilers.py index f0e21f987ec..1cac261affa 100644 --- a/lib/spack/spack/cmd/compilers.py +++ b/lib/spack/spack/cmd/compilers.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/config.py b/lib/spack/spack/cmd/config.py index 61c2c6f0e8b..09cb9a900e4 100644 --- a/lib/spack/spack/cmd/config.py +++ b/lib/spack/spack/cmd/config.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/configure.py b/lib/spack/spack/cmd/configure.py index 7cab5660524..4b590e6176d 100644 --- a/lib/spack/spack/cmd/configure.py +++ b/lib/spack/spack/cmd/configure.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 648400e41e3..62de3e24e9c 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -54,7 +54,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/deactivate.py b/lib/spack/spack/cmd/deactivate.py index 3d8020d064a..d58555afad3 100644 --- a/lib/spack/spack/cmd/deactivate.py +++ b/lib/spack/spack/cmd/deactivate.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/debug.py b/lib/spack/spack/cmd/debug.py index ba5f7838394..33c866e962f 100644 --- a/lib/spack/spack/cmd/debug.py +++ b/lib/spack/spack/cmd/debug.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index 6c481548d38..c983dd79ceb 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/diy.py b/lib/spack/spack/cmd/diy.py index 14d28bb3f4c..16a6f4c7a09 100644 --- a/lib/spack/spack/cmd/diy.py +++ b/lib/spack/spack/cmd/diy.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/docs.py b/lib/spack/spack/cmd/docs.py index fe026da4a7d..a2bab84a507 100644 --- a/lib/spack/spack/cmd/docs.py +++ b/lib/spack/spack/cmd/docs.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/edit.py b/lib/spack/spack/cmd/edit.py index 0287b8cd677..bd7fb773ec7 100644 --- a/lib/spack/spack/cmd/edit.py +++ b/lib/spack/spack/cmd/edit.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index 034b710b852..b11216044ac 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/extensions.py b/lib/spack/spack/cmd/extensions.py index d073d42cc3b..03130820de6 100644 --- a/lib/spack/spack/cmd/extensions.py +++ b/lib/spack/spack/cmd/extensions.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/fetch.py b/lib/spack/spack/cmd/fetch.py index cf39d4a40bd..15fd22d6063 100644 --- a/lib/spack/spack/cmd/fetch.py +++ b/lib/spack/spack/cmd/fetch.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index 0142155fe18..cbf91e4a8aa 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index 9753b20e788..fee03b4f5d4 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/gpg.py b/lib/spack/spack/cmd/gpg.py index ff511b65208..1f460338133 100644 --- a/lib/spack/spack/cmd/gpg.py +++ b/lib/spack/spack/cmd/gpg.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/graph.py b/lib/spack/spack/cmd/graph.py index 3a82f39ce55..e42e355f8f3 100644 --- a/lib/spack/spack/cmd/graph.py +++ b/lib/spack/spack/cmd/graph.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/help.py b/lib/spack/spack/cmd/help.py index 313b082e2f0..7522499dab1 100644 --- a/lib/spack/spack/cmd/help.py +++ b/lib/spack/spack/cmd/help.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 43d086d4b3f..575b65f8b05 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index f030e5b2df5..ec24ed9c625 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/list.py b/lib/spack/spack/cmd/list.py index 72be99d260b..5b915b94ecb 100644 --- a/lib/spack/spack/cmd/list.py +++ b/lib/spack/spack/cmd/list.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/load.py b/lib/spack/spack/cmd/load.py index 106a95c9c2b..2a5d14a1bf9 100644 --- a/lib/spack/spack/cmd/load.py +++ b/lib/spack/spack/cmd/load.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/location.py b/lib/spack/spack/cmd/location.py index e713d028d2a..e150a282388 100644 --- a/lib/spack/spack/cmd/location.py +++ b/lib/spack/spack/cmd/location.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/md5.py b/lib/spack/spack/cmd/md5.py index 1d121f01209..0c341e5bad4 100644 --- a/lib/spack/spack/cmd/md5.py +++ b/lib/spack/spack/cmd/md5.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py index e5b3b492b4d..bfc36c4107b 100644 --- a/lib/spack/spack/cmd/mirror.py +++ b/lib/spack/spack/cmd/mirror.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/module.py b/lib/spack/spack/cmd/module.py index f8253aad6f4..ed20ad40293 100644 --- a/lib/spack/spack/cmd/module.py +++ b/lib/spack/spack/cmd/module.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/patch.py b/lib/spack/spack/cmd/patch.py index dfe45b0494e..9c26f385fb6 100644 --- a/lib/spack/spack/cmd/patch.py +++ b/lib/spack/spack/cmd/patch.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/pkg.py b/lib/spack/spack/cmd/pkg.py index aca69e9c993..42fecf23dfd 100644 --- a/lib/spack/spack/cmd/pkg.py +++ b/lib/spack/spack/cmd/pkg.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/providers.py b/lib/spack/spack/cmd/providers.py index f30c28a951d..51566eb26d5 100644 --- a/lib/spack/spack/cmd/providers.py +++ b/lib/spack/spack/cmd/providers.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/purge.py b/lib/spack/spack/cmd/purge.py index b7ebb0fc69e..ac2aa1c21f6 100644 --- a/lib/spack/spack/cmd/purge.py +++ b/lib/spack/spack/cmd/purge.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/pydoc.py b/lib/spack/spack/cmd/pydoc.py index c9003184c4e..657ee9f89ba 100644 --- a/lib/spack/spack/cmd/pydoc.py +++ b/lib/spack/spack/cmd/pydoc.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py index 3c4fbf9e87b..c0a056007a5 100644 --- a/lib/spack/spack/cmd/python.py +++ b/lib/spack/spack/cmd/python.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/reindex.py b/lib/spack/spack/cmd/reindex.py index dff127bc069..1fb9392c2fd 100644 --- a/lib/spack/spack/cmd/reindex.py +++ b/lib/spack/spack/cmd/reindex.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/repo.py b/lib/spack/spack/cmd/repo.py index 5beb0083e22..6dc8833f865 100644 --- a/lib/spack/spack/cmd/repo.py +++ b/lib/spack/spack/cmd/repo.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/restage.py b/lib/spack/spack/cmd/restage.py index 4cecf4b42e6..637ff95699b 100644 --- a/lib/spack/spack/cmd/restage.py +++ b/lib/spack/spack/cmd/restage.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/setup.py b/lib/spack/spack/cmd/setup.py index 79e7bca1ab0..8f5a4fd0156 100644 --- a/lib/spack/spack/cmd/setup.py +++ b/lib/spack/spack/cmd/setup.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index f4105900cb1..ee1ec882e20 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/stage.py b/lib/spack/spack/cmd/stage.py index a469cd896da..99c2db8a568 100644 --- a/lib/spack/spack/cmd/stage.py +++ b/lib/spack/spack/cmd/stage.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index f7ec6a10e0d..70aa1865af3 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index 6880409c56c..499521ede0d 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/unload.py b/lib/spack/spack/cmd/unload.py index 8a0511f64c5..e5bf8f093e8 100644 --- a/lib/spack/spack/cmd/unload.py +++ b/lib/spack/spack/cmd/unload.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/unuse.py b/lib/spack/spack/cmd/unuse.py index 77312d1204f..326553e0bdd 100644 --- a/lib/spack/spack/cmd/unuse.py +++ b/lib/spack/spack/cmd/unuse.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/url.py b/lib/spack/spack/cmd/url.py index 28118a178a2..49c29ff469e 100644 --- a/lib/spack/spack/cmd/url.py +++ b/lib/spack/spack/cmd/url.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/use.py b/lib/spack/spack/cmd/use.py index e67de3a8b30..da3ded0d5a8 100644 --- a/lib/spack/spack/cmd/use.py +++ b/lib/spack/spack/cmd/use.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/versions.py b/lib/spack/spack/cmd/versions.py index 446f0a876d4..0678fed8af0 100644 --- a/lib/spack/spack/cmd/versions.py +++ b/lib/spack/spack/cmd/versions.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/cmd/view.py b/lib/spack/spack/cmd/view.py index 8fb94d3f378..325fb0af960 100644 --- a/lib/spack/spack/cmd/view.py +++ b/lib/spack/spack/cmd/view.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index bfce31a9a38..c547275d6b6 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index 826e74bbbb4..53b2572ab9f 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compilers/cce.py b/lib/spack/spack/compilers/cce.py index 94956b9d836..936614efac5 100644 --- a/lib/spack/spack/compilers/cce.py +++ b/lib/spack/spack/compilers/cce.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compilers/clang.py b/lib/spack/spack/compilers/clang.py index f2f0883b205..dd26c5e13b0 100644 --- a/lib/spack/spack/compilers/clang.py +++ b/lib/spack/spack/compilers/clang.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compilers/gcc.py b/lib/spack/spack/compilers/gcc.py index 826ddbf432f..a6c91c6ed29 100644 --- a/lib/spack/spack/compilers/gcc.py +++ b/lib/spack/spack/compilers/gcc.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compilers/intel.py b/lib/spack/spack/compilers/intel.py index 8461753962f..fb286a69d75 100644 --- a/lib/spack/spack/compilers/intel.py +++ b/lib/spack/spack/compilers/intel.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compilers/nag.py b/lib/spack/spack/compilers/nag.py index c1da95a6c32..7fb8a23e96c 100644 --- a/lib/spack/spack/compilers/nag.py +++ b/lib/spack/spack/compilers/nag.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compilers/pgi.py b/lib/spack/spack/compilers/pgi.py index cfc3d8ea573..22260239541 100644 --- a/lib/spack/spack/compilers/pgi.py +++ b/lib/spack/spack/compilers/pgi.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compilers/xl.py b/lib/spack/spack/compilers/xl.py index 686807ae335..96e9e8b4ca6 100644 --- a/lib/spack/spack/compilers/xl.py +++ b/lib/spack/spack/compilers/xl.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/compilers/xl_r.py b/lib/spack/spack/compilers/xl_r.py index d08e700f420..dd6dc91aaee 100644 --- a/lib/spack/spack/compilers/xl_r.py +++ b/lib/spack/spack/compilers/xl_r.py @@ -8,7 +8,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index d7f21e8c81f..b9383460011 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index d0d6b6be2dd..d3a385ea800 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 123c3a89980..75862ff87c6 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 43ac71c6798..2b160bc8a34 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index e7c9d6c5907..5e9341ced96 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index 83a51394109..bb760bfd2f8 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/error.py b/lib/spack/spack/error.py index 09969b2b41d..7b86415202b 100644 --- a/lib/spack/spack/error.py +++ b/lib/spack/spack/error.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index 8dd3c2b36b4..baba038c6c4 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/file_cache.py b/lib/spack/spack/file_cache.py index 95a8bc7ce6f..f09be4ecd53 100644 --- a/lib/spack/spack/file_cache.py +++ b/lib/spack/spack/file_cache.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/graph.py b/lib/spack/spack/graph.py index 04e6cc7fca8..09c39e75f32 100644 --- a/lib/spack/spack/graph.py +++ b/lib/spack/spack/graph.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/hooks/__init__.py b/lib/spack/spack/hooks/__init__.py index 9ed04a4768e..1dce48fdf05 100644 --- a/lib/spack/spack/hooks/__init__.py +++ b/lib/spack/spack/hooks/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/hooks/case_consistency.py b/lib/spack/spack/hooks/case_consistency.py index 2b882916665..fcf9ee25885 100644 --- a/lib/spack/spack/hooks/case_consistency.py +++ b/lib/spack/spack/hooks/case_consistency.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/hooks/extensions.py b/lib/spack/spack/hooks/extensions.py index 7d2a39e24f0..f915768dd03 100644 --- a/lib/spack/spack/hooks/extensions.py +++ b/lib/spack/spack/hooks/extensions.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/hooks/licensing.py b/lib/spack/spack/hooks/licensing.py index 85f7a96c317..b3b379c606e 100644 --- a/lib/spack/spack/hooks/licensing.py +++ b/lib/spack/spack/hooks/licensing.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/hooks/module_file_generation.py b/lib/spack/spack/hooks/module_file_generation.py index b02c2e871db..decec3438da 100644 --- a/lib/spack/spack/hooks/module_file_generation.py +++ b/lib/spack/spack/hooks/module_file_generation.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/hooks/sbang.py b/lib/spack/spack/hooks/sbang.py index 09691b3f0fb..e86f8260b8b 100644 --- a/lib/spack/spack/hooks/sbang.py +++ b/lib/spack/spack/hooks/sbang.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/hooks/yaml_version_check.py b/lib/spack/spack/hooks/yaml_version_check.py index a4b38198bc9..7264ee1e6f4 100644 --- a/lib/spack/spack/hooks/yaml_version_check.py +++ b/lib/spack/spack/hooks/yaml_version_check.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 543d871f429..3ae8403bcf3 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 1c0618e6e08..9b9f816db44 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index 8c702f11115..f23baa72044 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/multimethod.py b/lib/spack/spack/multimethod.py index 67737c8bedd..9b4c481326b 100644 --- a/lib/spack/spack/multimethod.py +++ b/lib/spack/spack/multimethod.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/operating_systems/__init__.py b/lib/spack/spack/operating_systems/__init__.py index ed1ec23bcab..445b6fdbd71 100644 --- a/lib/spack/spack/operating_systems/__init__.py +++ b/lib/spack/spack/operating_systems/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/operating_systems/cnk.py b/lib/spack/spack/operating_systems/cnk.py index 7e02fdd5b2a..abd252ddcb4 100644 --- a/lib/spack/spack/operating_systems/cnk.py +++ b/lib/spack/spack/operating_systems/cnk.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/operating_systems/cnl.py b/lib/spack/spack/operating_systems/cnl.py index 95f23a076ee..61d50b40113 100644 --- a/lib/spack/spack/operating_systems/cnl.py +++ b/lib/spack/spack/operating_systems/cnl.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/operating_systems/linux_distro.py b/lib/spack/spack/operating_systems/linux_distro.py index fb2797fd363..0e97317b1b2 100644 --- a/lib/spack/spack/operating_systems/linux_distro.py +++ b/lib/spack/spack/operating_systems/linux_distro.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/operating_systems/mac_os.py b/lib/spack/spack/operating_systems/mac_os.py index a75ce8a946c..ab1eb6a64b8 100644 --- a/lib/spack/spack/operating_systems/mac_os.py +++ b/lib/spack/spack/operating_systems/mac_os.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 90e55e2ce03..d6029d46b10 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py index f9c4ced97e7..2e70a3b7dcb 100644 --- a/lib/spack/spack/package_prefs.py +++ b/lib/spack/spack/package_prefs.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/package_test.py b/lib/spack/spack/package_test.py index fa424287f33..3e04125e78f 100644 --- a/lib/spack/spack/package_test.py +++ b/lib/spack/spack/package_test.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/parse.py b/lib/spack/spack/parse.py index 880bb09b4eb..3df268d2593 100644 --- a/lib/spack/spack/parse.py +++ b/lib/spack/spack/parse.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/patch.py b/lib/spack/spack/patch.py index ee837483192..78bb15f41c7 100644 --- a/lib/spack/spack/patch.py +++ b/lib/spack/spack/patch.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/platforms/__init__.py b/lib/spack/spack/platforms/__init__.py index ed1ec23bcab..445b6fdbd71 100644 --- a/lib/spack/spack/platforms/__init__.py +++ b/lib/spack/spack/platforms/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/platforms/bgq.py b/lib/spack/spack/platforms/bgq.py index 8ff33dd4181..5978f20acfd 100644 --- a/lib/spack/spack/platforms/bgq.py +++ b/lib/spack/spack/platforms/bgq.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/platforms/cray.py b/lib/spack/spack/platforms/cray.py index 76f7e596740..9a7301d1f8f 100644 --- a/lib/spack/spack/platforms/cray.py +++ b/lib/spack/spack/platforms/cray.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/platforms/darwin.py b/lib/spack/spack/platforms/darwin.py index 3f6dc77655c..f33b2688338 100644 --- a/lib/spack/spack/platforms/darwin.py +++ b/lib/spack/spack/platforms/darwin.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/platforms/linux.py b/lib/spack/spack/platforms/linux.py index d7cdd643c0d..ffbe32ddeb1 100644 --- a/lib/spack/spack/platforms/linux.py +++ b/lib/spack/spack/platforms/linux.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/platforms/test.py b/lib/spack/spack/platforms/test.py index a40e1f3b448..d299508c971 100644 --- a/lib/spack/spack/platforms/test.py +++ b/lib/spack/spack/platforms/test.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/provider_index.py b/lib/spack/spack/provider_index.py index 8d64d100b13..9e6d53e8ac8 100644 --- a/lib/spack/spack/provider_index.py +++ b/lib/spack/spack/provider_index.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/repository.py b/lib/spack/spack/repository.py index 3e43cce781d..0a6a774315a 100644 --- a/lib/spack/spack/repository.py +++ b/lib/spack/spack/repository.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/resource.py b/lib/spack/spack/resource.py index 1d4d448298e..be36216e9d7 100644 --- a/lib/spack/spack/resource.py +++ b/lib/spack/spack/resource.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/schema/__init__.py b/lib/spack/spack/schema/__init__.py index de45ea921f4..e793ae73760 100644 --- a/lib/spack/spack/schema/__init__.py +++ b/lib/spack/spack/schema/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/schema/compilers.py b/lib/spack/spack/schema/compilers.py index 282eddf91b3..8ddba1fb22d 100644 --- a/lib/spack/spack/schema/compilers.py +++ b/lib/spack/spack/schema/compilers.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/schema/config.py b/lib/spack/spack/schema/config.py index 6c655db9154..abcb8d6051f 100644 --- a/lib/spack/spack/schema/config.py +++ b/lib/spack/spack/schema/config.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/schema/mirrors.py b/lib/spack/spack/schema/mirrors.py index 60b865bb42f..db3d1163db4 100644 --- a/lib/spack/spack/schema/mirrors.py +++ b/lib/spack/spack/schema/mirrors.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/schema/modules.py b/lib/spack/spack/schema/modules.py index 2059e14fa6a..4f7cedf53f7 100644 --- a/lib/spack/spack/schema/modules.py +++ b/lib/spack/spack/schema/modules.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/schema/packages.py b/lib/spack/spack/schema/packages.py index bf5648b1b76..8662a43a846 100644 --- a/lib/spack/spack/schema/packages.py +++ b/lib/spack/spack/schema/packages.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/schema/repos.py b/lib/spack/spack/schema/repos.py index c7a3495ae19..a1899419895 100644 --- a/lib/spack/spack/schema/repos.py +++ b/lib/spack/spack/schema/repos.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index b4b80dab6fb..db8dcf61a86 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 086c4c90f55..09f18f7d67d 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/store.py b/lib/spack/spack/store.py index 4a5c8d18a75..f30e06849a0 100644 --- a/lib/spack/spack/store.py +++ b/lib/spack/spack/store.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/__init__.py b/lib/spack/spack/test/__init__.py index ed1ec23bcab..445b6fdbd71 100644 --- a/lib/spack/spack/test/__init__.py +++ b/lib/spack/spack/test/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/architecture.py b/lib/spack/spack/test/architecture.py index f658b1951f6..70cdc626855 100644 --- a/lib/spack/spack/test/architecture.py +++ b/lib/spack/spack/test/architecture.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/build_system_guess.py b/lib/spack/spack/test/build_system_guess.py index 73b619cb225..733173e3fc9 100644 --- a/lib/spack/spack/test/build_system_guess.py +++ b/lib/spack/spack/test/build_system_guess.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/build_systems.py b/lib/spack/spack/test/build_systems.py index 8e771c8a682..3b93ed006d4 100644 --- a/lib/spack/spack/test/build_systems.py +++ b/lib/spack/spack/test/build_systems.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cc.py b/lib/spack/spack/test/cc.py index 74b6b316548..4b01fa34992 100644 --- a/lib/spack/spack/test/cc.py +++ b/lib/spack/spack/test/cc.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/__init__.py b/lib/spack/spack/test/cmd/__init__.py index ed1ec23bcab..445b6fdbd71 100644 --- a/lib/spack/spack/test/cmd/__init__.py +++ b/lib/spack/spack/test/cmd/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py index dcd123d46eb..b082b71c061 100644 --- a/lib/spack/spack/test/cmd/find.py +++ b/lib/spack/spack/test/cmd/find.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/flake8.py b/lib/spack/spack/test/cmd/flake8.py index f0fc339f8b9..65f9e509ba0 100644 --- a/lib/spack/spack/test/cmd/flake8.py +++ b/lib/spack/spack/test/cmd/flake8.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/gpg.py b/lib/spack/spack/test/cmd/gpg.py index e4dbb681a6c..189c827d050 100644 --- a/lib/spack/spack/test/cmd/gpg.py +++ b/lib/spack/spack/test/cmd/gpg.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index b57d39b4414..7f9db1baa2e 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/module.py b/lib/spack/spack/test/cmd/module.py index 03ce1ef206b..8d15afdd0c7 100644 --- a/lib/spack/spack/test/cmd/module.py +++ b/lib/spack/spack/test/cmd/module.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/python.py b/lib/spack/spack/test/cmd/python.py index 5dc82bd90e8..5ad8456e49c 100644 --- a/lib/spack/spack/test/cmd/python.py +++ b/lib/spack/spack/test/cmd/python.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/test_compiler_cmd.py b/lib/spack/spack/test/cmd/test_compiler_cmd.py index b046cdb9228..39898980d9b 100644 --- a/lib/spack/spack/test/cmd/test_compiler_cmd.py +++ b/lib/spack/spack/test/cmd/test_compiler_cmd.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/uninstall.py b/lib/spack/spack/test/cmd/uninstall.py index 5765f4613d9..a47c76715bf 100644 --- a/lib/spack/spack/test/cmd/uninstall.py +++ b/lib/spack/spack/test/cmd/uninstall.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/cmd/url.py b/lib/spack/spack/test/cmd/url.py index 3bc0bc78204..ae585b328ff 100644 --- a/lib/spack/spack/test/cmd/url.py +++ b/lib/spack/spack/test/cmd/url.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/compilers.py b/lib/spack/spack/test/compilers.py index bc21ec886ee..1bb6b41ffc2 100644 --- a/lib/spack/spack/test/compilers.py +++ b/lib/spack/spack/test/compilers.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 1b659cb091b..414b0fab848 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py index 0b9f7a0046d..5e880bc4d64 100644 --- a/lib/spack/spack/test/concretize_preferences.py +++ b/lib/spack/spack/test/concretize_preferences.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/config.py b/lib/spack/spack/test/config.py index ed8f78ceb49..2363754a003 100644 --- a/lib/spack/spack/test/config.py +++ b/lib/spack/spack/test/config.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index 19e78440907..c23fb466a52 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/data/sourceme_first.sh b/lib/spack/spack/test/data/sourceme_first.sh index ee21fabbd50..8fcec2fa3a5 100644 --- a/lib/spack/spack/test/data/sourceme_first.sh +++ b/lib/spack/spack/test/data/sourceme_first.sh @@ -9,7 +9,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/data/sourceme_parameters.sh b/lib/spack/spack/test/data/sourceme_parameters.sh index 2ee0cc87bd9..5f76c624359 100644 --- a/lib/spack/spack/test/data/sourceme_parameters.sh +++ b/lib/spack/spack/test/data/sourceme_parameters.sh @@ -9,7 +9,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/data/sourceme_second.sh b/lib/spack/spack/test/data/sourceme_second.sh index 2269225e45f..07c814740e0 100644 --- a/lib/spack/spack/test/data/sourceme_second.sh +++ b/lib/spack/spack/test/data/sourceme_second.sh @@ -9,7 +9,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/data/sourceme_unicode.sh b/lib/spack/spack/test/data/sourceme_unicode.sh index f01f6a49271..0080ee7337f 100644 --- a/lib/spack/spack/test/data/sourceme_unicode.sh +++ b/lib/spack/spack/test/data/sourceme_unicode.sh @@ -9,7 +9,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index 6f8a2ef5d28..19a7141fa39 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/directory_layout.py b/lib/spack/spack/test/directory_layout.py index d1365c0e763..3119f0ebed7 100644 --- a/lib/spack/spack/test/directory_layout.py +++ b/lib/spack/spack/test/directory_layout.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/environment.py b/lib/spack/spack/test/environment.py index cdc2e680851..671d6ee6c9e 100644 --- a/lib/spack/spack/test/environment.py +++ b/lib/spack/spack/test/environment.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/file_cache.py b/lib/spack/spack/test/file_cache.py index af52380e340..6f0020f042e 100644 --- a/lib/spack/spack/test/file_cache.py +++ b/lib/spack/spack/test/file_cache.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/file_list.py b/lib/spack/spack/test/file_list.py index 10c86d0d089..f9ae3315978 100644 --- a/lib/spack/spack/test/file_list.py +++ b/lib/spack/spack/test/file_list.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/git_fetch.py b/lib/spack/spack/test/git_fetch.py index 093f0a70536..098115371f6 100644 --- a/lib/spack/spack/test/git_fetch.py +++ b/lib/spack/spack/test/git_fetch.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/graph.py b/lib/spack/spack/test/graph.py index 46dd4f1bc6c..420c8f1180c 100644 --- a/lib/spack/spack/test/graph.py +++ b/lib/spack/spack/test/graph.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/hg_fetch.py b/lib/spack/spack/test/hg_fetch.py index c0318c58ff1..ff1ed8862ff 100644 --- a/lib/spack/spack/test/hg_fetch.py +++ b/lib/spack/spack/test/hg_fetch.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py index 13d3e2ee945..3a934d5ea2d 100644 --- a/lib/spack/spack/test/install.py +++ b/lib/spack/spack/test/install.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/link_tree.py b/lib/spack/spack/test/link_tree.py index 9fb4e8216e2..ae293b6e671 100644 --- a/lib/spack/spack/test/link_tree.py +++ b/lib/spack/spack/test/link_tree.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/lock.py b/lib/spack/spack/test/lock.py index 214797c1f6c..5a4c3073f52 100644 --- a/lib/spack/spack/test/lock.py +++ b/lib/spack/spack/test/lock.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/make_executable.py b/lib/spack/spack/test/make_executable.py index 1b3f384a8b8..8eb5057fb76 100644 --- a/lib/spack/spack/test/make_executable.py +++ b/lib/spack/spack/test/make_executable.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py index 21dbb8f4f62..16ea04434dc 100644 --- a/lib/spack/spack/test/mirror.py +++ b/lib/spack/spack/test/mirror.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/module_parsing.py b/lib/spack/spack/test/module_parsing.py index 6ddb9d2dbf3..d3069158343 100644 --- a/lib/spack/spack/test/module_parsing.py +++ b/lib/spack/spack/test/module_parsing.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/modules.py b/lib/spack/spack/test/modules.py index e8ebebf7368..bd37196f2a2 100644 --- a/lib/spack/spack/test/modules.py +++ b/lib/spack/spack/test/modules.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/multimethod.py b/lib/spack/spack/test/multimethod.py index 003936a77a9..404bfe5c8b3 100644 --- a/lib/spack/spack/test/multimethod.py +++ b/lib/spack/spack/test/multimethod.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/namespace_trie.py b/lib/spack/spack/test/namespace_trie.py index 35ded3b7ee3..62812856a9d 100644 --- a/lib/spack/spack/test/namespace_trie.py +++ b/lib/spack/spack/test/namespace_trie.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/optional_deps.py b/lib/spack/spack/test/optional_deps.py index d2b8c3e3acd..db2267f0474 100644 --- a/lib/spack/spack/test/optional_deps.py +++ b/lib/spack/spack/test/optional_deps.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/package_sanity.py b/lib/spack/spack/test/package_sanity.py index c1902413ea8..e8cc9571da7 100644 --- a/lib/spack/spack/test/package_sanity.py +++ b/lib/spack/spack/test/package_sanity.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py index 8ae2effc381..681060aad3b 100644 --- a/lib/spack/spack/test/packages.py +++ b/lib/spack/spack/test/packages.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/pattern.py b/lib/spack/spack/test/pattern.py index bd752065636..e4475546ae0 100644 --- a/lib/spack/spack/test/pattern.py +++ b/lib/spack/spack/test/pattern.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/provider_index.py b/lib/spack/spack/test/provider_index.py index 69a5c3cd404..08abea857de 100644 --- a/lib/spack/spack/test/provider_index.py +++ b/lib/spack/spack/test/provider_index.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/python_version.py b/lib/spack/spack/test/python_version.py index 35b6ad7da7d..55372c5fa2d 100644 --- a/lib/spack/spack/test/python_version.py +++ b/lib/spack/spack/test/python_version.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/sbang.py b/lib/spack/spack/test/sbang.py index b1e2da3c3b3..c0831a4e2d6 100644 --- a/lib/spack/spack/test/sbang.py +++ b/lib/spack/spack/test/sbang.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/spack_yaml.py b/lib/spack/spack/test/spack_yaml.py index 53649eb1ec9..742d934e764 100644 --- a/lib/spack/spack/test/spack_yaml.py +++ b/lib/spack/spack/test/spack_yaml.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index af6a4efd953..07a9b72e091 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 4b21e8d0e13..1623133ef35 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/spec_syntax.py b/lib/spack/spack/test/spec_syntax.py index 906aa77bb2e..5d1ace6b864 100644 --- a/lib/spack/spack/test/spec_syntax.py +++ b/lib/spack/spack/test/spec_syntax.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/spec_yaml.py b/lib/spack/spack/test/spec_yaml.py index 866cdebd26f..52007383c67 100644 --- a/lib/spack/spack/test/spec_yaml.py +++ b/lib/spack/spack/test/spec_yaml.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/stage.py b/lib/spack/spack/test/stage.py index 5b4c46e0bf8..62605452c68 100644 --- a/lib/spack/spack/test/stage.py +++ b/lib/spack/spack/test/stage.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/svn_fetch.py b/lib/spack/spack/test/svn_fetch.py index 1a7cc3ecd18..bef5db76dec 100644 --- a/lib/spack/spack/test/svn_fetch.py +++ b/lib/spack/spack/test/svn_fetch.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/url_fetch.py b/lib/spack/spack/test/url_fetch.py index c9299f45a1b..ff9f96070cf 100644 --- a/lib/spack/spack/test/url_fetch.py +++ b/lib/spack/spack/test/url_fetch.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index 5489cc8d26d..5b24821a28d 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/url_substitution.py b/lib/spack/spack/test/url_substitution.py index 61bd178db87..1a54af1e3c7 100644 --- a/lib/spack/spack/test/url_substitution.py +++ b/lib/spack/spack/test/url_substitution.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/variant.py b/lib/spack/spack/test/variant.py index 565b6dac863..6fb08bff13a 100644 --- a/lib/spack/spack/test/variant.py +++ b/lib/spack/spack/test/variant.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/versions.py b/lib/spack/spack/test/versions.py index 71ea3af9e91..3b04e1d4aa4 100644 --- a/lib/spack/spack/test/versions.py +++ b/lib/spack/spack/test/versions.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/test/web.py b/lib/spack/spack/test/web.py index 9fa95a8d187..d50e0e3d545 100644 --- a/lib/spack/spack/test/web.py +++ b/lib/spack/spack/test/web.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index f20ca1f9181..88557596fda 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/__init__.py b/lib/spack/spack/util/__init__.py index ed1ec23bcab..445b6fdbd71 100644 --- a/lib/spack/spack/util/__init__.py +++ b/lib/spack/spack/util/__init__.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/compression.py b/lib/spack/spack/util/compression.py index caec70064d6..bfff66fb07c 100644 --- a/lib/spack/spack/util/compression.py +++ b/lib/spack/spack/util/compression.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/crypto.py b/lib/spack/spack/util/crypto.py index f0d48702a10..65ffa409630 100644 --- a/lib/spack/spack/util/crypto.py +++ b/lib/spack/spack/util/crypto.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/debug.py b/lib/spack/spack/util/debug.py index cf485a611d1..2b7e540fd3c 100644 --- a/lib/spack/spack/util/debug.py +++ b/lib/spack/spack/util/debug.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/environment.py b/lib/spack/spack/util/environment.py index 934a9993273..6bd5c61e79e 100644 --- a/lib/spack/spack/util/environment.py +++ b/lib/spack/spack/util/environment.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 4222a48b82f..584e224db79 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/gpg.py b/lib/spack/spack/util/gpg.py index ccaf33519b8..ebb14a71f6c 100644 --- a/lib/spack/spack/util/gpg.py +++ b/lib/spack/spack/util/gpg.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/module_cmd.py b/lib/spack/spack/util/module_cmd.py index bdd84637571..4de3fb051e8 100644 --- a/lib/spack/spack/util/module_cmd.py +++ b/lib/spack/spack/util/module_cmd.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/multiproc.py b/lib/spack/spack/util/multiproc.py index f465a3dbdc2..559ed19eeca 100644 --- a/lib/spack/spack/util/multiproc.py +++ b/lib/spack/spack/util/multiproc.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/naming.py b/lib/spack/spack/util/naming.py index e70b0a6ce05..d7ff9205599 100644 --- a/lib/spack/spack/util/naming.py +++ b/lib/spack/spack/util/naming.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/path.py b/lib/spack/spack/util/path.py index 7235f6b7563..0edab60f21c 100644 --- a/lib/spack/spack/util/path.py +++ b/lib/spack/spack/util/path.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/pattern.py b/lib/spack/spack/util/pattern.py index bebca1f4197..7400ba73aad 100644 --- a/lib/spack/spack/util/pattern.py +++ b/lib/spack/spack/util/pattern.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/prefix.py b/lib/spack/spack/util/prefix.py index ca880c53b75..8ce9836c667 100644 --- a/lib/spack/spack/util/prefix.py +++ b/lib/spack/spack/util/prefix.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/spack_json.py b/lib/spack/spack/util/spack_json.py index 82fa7008211..50d3f7005dd 100644 --- a/lib/spack/spack/util/spack_json.py +++ b/lib/spack/spack/util/spack_json.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/spack_yaml.py b/lib/spack/spack/util/spack_yaml.py index 65330043927..58e82f6508d 100644 --- a/lib/spack/spack/util/spack_yaml.py +++ b/lib/spack/spack/util/spack_yaml.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/string.py b/lib/spack/spack/util/string.py index dae7afbf46a..9f3fd63702b 100644 --- a/lib/spack/spack/util/string.py +++ b/lib/spack/spack/util/string.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index f803c6cea34..e7e6f80ec8a 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index 2acea30ddd5..1361fb5152f 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 1c931ae90ac..10fac49e9d5 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/share/spack/setup-env.csh b/share/spack/setup-env.csh index 8bb08dafde8..7d933315a6c 100755 --- a/share/spack/setup-env.csh +++ b/share/spack/setup-env.csh @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index a67ae04b245..5c1558f7fce 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 818f4d8acfa..d9ae65b8b5e 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/a/package.py b/var/spack/repos/builtin.mock/packages/a/package.py index e39ad13bd1b..59d8b9e330e 100644 --- a/var/spack/repos/builtin.mock/packages/a/package.py +++ b/var/spack/repos/builtin.mock/packages/a/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/b/package.py b/var/spack/repos/builtin.mock/packages/b/package.py index 5729f24e79b..f89481d70b3 100644 --- a/var/spack/repos/builtin.mock/packages/b/package.py +++ b/var/spack/repos/builtin.mock/packages/b/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/boost/package.py b/var/spack/repos/builtin.mock/packages/boost/package.py index 5d86c4559f8..60cc915e2e6 100644 --- a/var/spack/repos/builtin.mock/packages/boost/package.py +++ b/var/spack/repos/builtin.mock/packages/boost/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/c/package.py b/var/spack/repos/builtin.mock/packages/c/package.py index 80777a05bb1..1037861b938 100644 --- a/var/spack/repos/builtin.mock/packages/c/package.py +++ b/var/spack/repos/builtin.mock/packages/c/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/callpath/package.py b/var/spack/repos/builtin.mock/packages/callpath/package.py index c00f4088662..40c8565ab6e 100644 --- a/var/spack/repos/builtin.mock/packages/callpath/package.py +++ b/var/spack/repos/builtin.mock/packages/callpath/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/canfail/package.py b/var/spack/repos/builtin.mock/packages/canfail/package.py index 18def385621..5b4135b33f6 100644 --- a/var/spack/repos/builtin.mock/packages/canfail/package.py +++ b/var/spack/repos/builtin.mock/packages/canfail/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/cmake-client/package.py b/var/spack/repos/builtin.mock/packages/cmake-client/package.py index e82d2cd781c..8b094224875 100644 --- a/var/spack/repos/builtin.mock/packages/cmake-client/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake-client/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/cmake/package.py b/var/spack/repos/builtin.mock/packages/cmake/package.py index c8b6464e69c..8dc1397fc87 100644 --- a/var/spack/repos/builtin.mock/packages/cmake/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/conflict-parent/package.py b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py index 37805537a29..a5865a90e36 100644 --- a/var/spack/repos/builtin.mock/packages/conflict-parent/package.py +++ b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/conflict/package.py b/var/spack/repos/builtin.mock/packages/conflict/package.py index a6ba4b5c58c..e13b34dcc5c 100644 --- a/var/spack/repos/builtin.mock/packages/conflict/package.py +++ b/var/spack/repos/builtin.mock/packages/conflict/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/develop-test/package.py b/var/spack/repos/builtin.mock/packages/develop-test/package.py index 0c693c60fb1..b9c9dad8523 100644 --- a/var/spack/repos/builtin.mock/packages/develop-test/package.py +++ b/var/spack/repos/builtin.mock/packages/develop-test/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/direct-mpich/package.py b/var/spack/repos/builtin.mock/packages/direct-mpich/package.py index f38589ad4d6..4c02338bc27 100644 --- a/var/spack/repos/builtin.mock/packages/direct-mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/direct-mpich/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py index 0c9fc1164a1..1b7ba0e2d7d 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py index 40b65266d42..6096d552d85 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py index 7b6e4abe5fd..6b77ec5a0a5 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond/package.py index 0b0f300b357..19530360ad3 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtbuild1/package.py b/var/spack/repos/builtin.mock/packages/dtbuild1/package.py index 8d3b28b539a..7416718ce85 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtbuild2/package.py b/var/spack/repos/builtin.mock/packages/dtbuild2/package.py index 9ea65735ff3..5f22364447a 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtbuild3/package.py b/var/spack/repos/builtin.mock/packages/dtbuild3/package.py index 261c69e01ea..070dac9d454 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild3/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtlink1/package.py b/var/spack/repos/builtin.mock/packages/dtlink1/package.py index 0269e08b65c..4cd5b24394d 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtlink2/package.py b/var/spack/repos/builtin.mock/packages/dtlink2/package.py index ad55c5ad48e..a34317c3643 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtlink3/package.py b/var/spack/repos/builtin.mock/packages/dtlink3/package.py index 2b425103bd8..433ceeeec22 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink3/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtlink4/package.py b/var/spack/repos/builtin.mock/packages/dtlink4/package.py index d7af5ecbfcb..f694b7882f3 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink4/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtlink5/package.py b/var/spack/repos/builtin.mock/packages/dtlink5/package.py index a9a22734cda..f03556a428c 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink5/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink5/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtrun1/package.py b/var/spack/repos/builtin.mock/packages/dtrun1/package.py index af9539ba687..a0a29804dbe 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtrun2/package.py b/var/spack/repos/builtin.mock/packages/dtrun2/package.py index a6cf0110b3d..15bfa4aed7f 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtrun3/package.py b/var/spack/repos/builtin.mock/packages/dtrun3/package.py index 426320c2473..e4519286b51 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun3/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dttop/package.py b/var/spack/repos/builtin.mock/packages/dttop/package.py index 99c86523e13..be29daeb30e 100644 --- a/var/spack/repos/builtin.mock/packages/dttop/package.py +++ b/var/spack/repos/builtin.mock/packages/dttop/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dtuse/package.py b/var/spack/repos/builtin.mock/packages/dtuse/package.py index c77d700b98b..8c2a85c1268 100644 --- a/var/spack/repos/builtin.mock/packages/dtuse/package.py +++ b/var/spack/repos/builtin.mock/packages/dtuse/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/dyninst/package.py b/var/spack/repos/builtin.mock/packages/dyninst/package.py index daf1b82ec67..009fdb7c2c7 100644 --- a/var/spack/repos/builtin.mock/packages/dyninst/package.py +++ b/var/spack/repos/builtin.mock/packages/dyninst/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/e/package.py b/var/spack/repos/builtin.mock/packages/e/package.py index c7640075631..6edc27f903c 100644 --- a/var/spack/repos/builtin.mock/packages/e/package.py +++ b/var/spack/repos/builtin.mock/packages/e/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/extendee/package.py b/var/spack/repos/builtin.mock/packages/extendee/package.py index f86bcf7de5a..fc2ae16ae6f 100644 --- a/var/spack/repos/builtin.mock/packages/extendee/package.py +++ b/var/spack/repos/builtin.mock/packages/extendee/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/extension1/package.py b/var/spack/repos/builtin.mock/packages/extension1/package.py index d3babc6ce40..ea07e081197 100644 --- a/var/spack/repos/builtin.mock/packages/extension1/package.py +++ b/var/spack/repos/builtin.mock/packages/extension1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/extension2/package.py b/var/spack/repos/builtin.mock/packages/extension2/package.py index fcb23ab8ede..ab959a20a85 100644 --- a/var/spack/repos/builtin.mock/packages/extension2/package.py +++ b/var/spack/repos/builtin.mock/packages/extension2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/externalmodule/package.py b/var/spack/repos/builtin.mock/packages/externalmodule/package.py index f7c9b056a45..1fc59f67bc2 100644 --- a/var/spack/repos/builtin.mock/packages/externalmodule/package.py +++ b/var/spack/repos/builtin.mock/packages/externalmodule/package.py @@ -8,7 +8,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/externalprereq/package.py b/var/spack/repos/builtin.mock/packages/externalprereq/package.py index 226742f2cb1..caf44e1ba86 100644 --- a/var/spack/repos/builtin.mock/packages/externalprereq/package.py +++ b/var/spack/repos/builtin.mock/packages/externalprereq/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/externaltest/package.py b/var/spack/repos/builtin.mock/packages/externaltest/package.py index 252c42556ee..bbf47cedfdb 100644 --- a/var/spack/repos/builtin.mock/packages/externaltest/package.py +++ b/var/spack/repos/builtin.mock/packages/externaltest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/externaltool/package.py b/var/spack/repos/builtin.mock/packages/externaltool/package.py index d2daddd350b..925188a6461 100644 --- a/var/spack/repos/builtin.mock/packages/externaltool/package.py +++ b/var/spack/repos/builtin.mock/packages/externaltool/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/externalvirtual/package.py b/var/spack/repos/builtin.mock/packages/externalvirtual/package.py index 6310a17bc94..292ff9de418 100644 --- a/var/spack/repos/builtin.mock/packages/externalvirtual/package.py +++ b/var/spack/repos/builtin.mock/packages/externalvirtual/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/failing-build/package.py b/var/spack/repos/builtin.mock/packages/failing-build/package.py index a36553992e8..d7d16db78e6 100644 --- a/var/spack/repos/builtin.mock/packages/failing-build/package.py +++ b/var/spack/repos/builtin.mock/packages/failing-build/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/fake/package.py b/var/spack/repos/builtin.mock/packages/fake/package.py index b83eec74703..e1cc33dbf29 100644 --- a/var/spack/repos/builtin.mock/packages/fake/package.py +++ b/var/spack/repos/builtin.mock/packages/fake/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/flake8/package.py b/var/spack/repos/builtin.mock/packages/flake8/package.py index 22598bead14..db425e82ee9 100644 --- a/var/spack/repos/builtin.mock/packages/flake8/package.py +++ b/var/spack/repos/builtin.mock/packages/flake8/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/git-test/package.py b/var/spack/repos/builtin.mock/packages/git-test/package.py index 730e71ac6b3..83b94c0d65d 100644 --- a/var/spack/repos/builtin.mock/packages/git-test/package.py +++ b/var/spack/repos/builtin.mock/packages/git-test/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/hg-test/package.py b/var/spack/repos/builtin.mock/packages/hg-test/package.py index 70a9b7f2c76..50f6fef0a61 100644 --- a/var/spack/repos/builtin.mock/packages/hg-test/package.py +++ b/var/spack/repos/builtin.mock/packages/hg-test/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/hypre/package.py b/var/spack/repos/builtin.mock/packages/hypre/package.py index b9e31b09dc0..a620b1b14c5 100644 --- a/var/spack/repos/builtin.mock/packages/hypre/package.py +++ b/var/spack/repos/builtin.mock/packages/hypre/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py b/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py index 77b8022b1c4..1a56a260f3c 100644 --- a/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/libdwarf/package.py b/var/spack/repos/builtin.mock/packages/libdwarf/package.py index 0fcbe4a62e8..10d6fa8e888 100644 --- a/var/spack/repos/builtin.mock/packages/libdwarf/package.py +++ b/var/spack/repos/builtin.mock/packages/libdwarf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/libelf/package.py b/var/spack/repos/builtin.mock/packages/libelf/package.py index 90d00ad339f..3a2fe603efe 100644 --- a/var/spack/repos/builtin.mock/packages/libelf/package.py +++ b/var/spack/repos/builtin.mock/packages/libelf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/mpich/package.py b/var/spack/repos/builtin.mock/packages/mpich/package.py index 936127398c5..28d7b57f2df 100644 --- a/var/spack/repos/builtin.mock/packages/mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/mpich/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/mpich2/package.py b/var/spack/repos/builtin.mock/packages/mpich2/package.py index c92b4ba43a8..bdb5f914c9a 100644 --- a/var/spack/repos/builtin.mock/packages/mpich2/package.py +++ b/var/spack/repos/builtin.mock/packages/mpich2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/mpileaks/package.py b/var/spack/repos/builtin.mock/packages/mpileaks/package.py index c84fdf22381..31cf0bd2b92 100644 --- a/var/spack/repos/builtin.mock/packages/mpileaks/package.py +++ b/var/spack/repos/builtin.mock/packages/mpileaks/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py b/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py index 5f85dec9b52..a2425eaaa1b 100644 --- a/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py +++ b/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/multimethod-base/package.py b/var/spack/repos/builtin.mock/packages/multimethod-base/package.py index bd3b29c5eea..68b4ca51d36 100644 --- a/var/spack/repos/builtin.mock/packages/multimethod-base/package.py +++ b/var/spack/repos/builtin.mock/packages/multimethod-base/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/multimethod/package.py b/var/spack/repos/builtin.mock/packages/multimethod/package.py index c0e347bc932..fa8d4b0342e 100644 --- a/var/spack/repos/builtin.mock/packages/multimethod/package.py +++ b/var/spack/repos/builtin.mock/packages/multimethod/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py index 13c3b02e775..f20bf7c3698 100644 --- a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py +++ b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/netlib-blas/package.py b/var/spack/repos/builtin.mock/packages/netlib-blas/package.py index 0a5b1d0e6a8..a1f3cfcb2b3 100644 --- a/var/spack/repos/builtin.mock/packages/netlib-blas/package.py +++ b/var/spack/repos/builtin.mock/packages/netlib-blas/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py b/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py index 755d3001a4a..820a6b681e5 100644 --- a/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py b/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py index 0f14fbaa61e..5e470816417 100644 --- a/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/openblas/package.py b/var/spack/repos/builtin.mock/packages/openblas/package.py index f6cdeeea499..58c6ec78d2b 100644 --- a/var/spack/repos/builtin.mock/packages/openblas/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py index 337f54e24e0..5838ffb7929 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py index 2904b3782d8..51b7fa028ac 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py index 2c07e61769e..165adec23a7 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/othervirtual/package.py b/var/spack/repos/builtin.mock/packages/othervirtual/package.py index 83bc07df98a..5b019cfdb23 100644 --- a/var/spack/repos/builtin.mock/packages/othervirtual/package.py +++ b/var/spack/repos/builtin.mock/packages/othervirtual/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/python/package.py b/var/spack/repos/builtin.mock/packages/python/package.py index a5290161ad9..da33e66f877 100644 --- a/var/spack/repos/builtin.mock/packages/python/package.py +++ b/var/spack/repos/builtin.mock/packages/python/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/svn-test/package.py b/var/spack/repos/builtin.mock/packages/svn-test/package.py index 01d0929c284..a24057f0894 100644 --- a/var/spack/repos/builtin.mock/packages/svn-test/package.py +++ b/var/spack/repos/builtin.mock/packages/svn-test/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py b/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py index 2129d9788bb..58c52ec8920 100644 --- a/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py +++ b/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/url-test/package.py b/var/spack/repos/builtin.mock/packages/url-test/package.py index a1f9af7d7d4..b23c4f65c2d 100644 --- a/var/spack/repos/builtin.mock/packages/url-test/package.py +++ b/var/spack/repos/builtin.mock/packages/url-test/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin.mock/packages/zmpi/package.py b/var/spack/repos/builtin.mock/packages/zmpi/package.py index b6a5b33011c..1e5b0a6706b 100644 --- a/var/spack/repos/builtin.mock/packages/zmpi/package.py +++ b/var/spack/repos/builtin.mock/packages/zmpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/abinit/package.py b/var/spack/repos/builtin/packages/abinit/package.py index d73b89ea696..66157b35460 100644 --- a/var/spack/repos/builtin/packages/abinit/package.py +++ b/var/spack/repos/builtin/packages/abinit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/abyss/package.py b/var/spack/repos/builtin/packages/abyss/package.py index 9f4a31a47e6..e8e0fb4d45f 100644 --- a/var/spack/repos/builtin/packages/abyss/package.py +++ b/var/spack/repos/builtin/packages/abyss/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ack/package.py b/var/spack/repos/builtin/packages/ack/package.py index b377c30fe98..7a81177814f 100644 --- a/var/spack/repos/builtin/packages/ack/package.py +++ b/var/spack/repos/builtin/packages/ack/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/activeharmony/package.py b/var/spack/repos/builtin/packages/activeharmony/package.py index 6a4e67a1ca6..25720e8bcbf 100644 --- a/var/spack/repos/builtin/packages/activeharmony/package.py +++ b/var/spack/repos/builtin/packages/activeharmony/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/adept-utils/package.py b/var/spack/repos/builtin/packages/adept-utils/package.py index 1a6998fd964..609dff2fe77 100644 --- a/var/spack/repos/builtin/packages/adept-utils/package.py +++ b/var/spack/repos/builtin/packages/adept-utils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 7d660390acd..2d7b9e2997a 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/adlbx/package.py b/var/spack/repos/builtin/packages/adlbx/package.py index ad54320007e..6793d68c338 100644 --- a/var/spack/repos/builtin/packages/adlbx/package.py +++ b/var/spack/repos/builtin/packages/adlbx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/adol-c/package.py b/var/spack/repos/builtin/packages/adol-c/package.py index 954de6fb4a1..5de1a31b878 100644 --- a/var/spack/repos/builtin/packages/adol-c/package.py +++ b/var/spack/repos/builtin/packages/adol-c/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/allinea-forge/package.py b/var/spack/repos/builtin/packages/allinea-forge/package.py index ac60762cc37..766a28a0e02 100644 --- a/var/spack/repos/builtin/packages/allinea-forge/package.py +++ b/var/spack/repos/builtin/packages/allinea-forge/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/allinea-reports/package.py b/var/spack/repos/builtin/packages/allinea-reports/package.py index 13863c271d5..70452290ee9 100644 --- a/var/spack/repos/builtin/packages/allinea-reports/package.py +++ b/var/spack/repos/builtin/packages/allinea-reports/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/alquimia/package.py b/var/spack/repos/builtin/packages/alquimia/package.py index 9e35aa9e15b..b8d3f608406 100644 --- a/var/spack/repos/builtin/packages/alquimia/package.py +++ b/var/spack/repos/builtin/packages/alquimia/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index 0147ffb69d6..a13200b3e05 100644 --- a/var/spack/repos/builtin/packages/amrex/package.py +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/andi/package.py b/var/spack/repos/builtin/packages/andi/package.py index 0d48ad69afb..092f5021ccf 100644 --- a/var/spack/repos/builtin/packages/andi/package.py +++ b/var/spack/repos/builtin/packages/andi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ant/package.py b/var/spack/repos/builtin/packages/ant/package.py index cbd05c7dec1..b2fb6476941 100644 --- a/var/spack/repos/builtin/packages/ant/package.py +++ b/var/spack/repos/builtin/packages/ant/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/antlr/package.py b/var/spack/repos/builtin/packages/antlr/package.py index 88653a8ea91..e6332d20b35 100644 --- a/var/spack/repos/builtin/packages/antlr/package.py +++ b/var/spack/repos/builtin/packages/antlr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ape/package.py b/var/spack/repos/builtin/packages/ape/package.py index 7e283290800..05a08257a1f 100644 --- a/var/spack/repos/builtin/packages/ape/package.py +++ b/var/spack/repos/builtin/packages/ape/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/apex/package.py b/var/spack/repos/builtin/packages/apex/package.py index 832e10a1ec7..55e22342b1d 100644 --- a/var/spack/repos/builtin/packages/apex/package.py +++ b/var/spack/repos/builtin/packages/apex/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/applewmproto/package.py b/var/spack/repos/builtin/packages/applewmproto/package.py index 41d7c4c10a9..805eeb33cca 100644 --- a/var/spack/repos/builtin/packages/applewmproto/package.py +++ b/var/spack/repos/builtin/packages/applewmproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/appres/package.py b/var/spack/repos/builtin/packages/appres/package.py index ff13937a0e6..e98004ce9a7 100644 --- a/var/spack/repos/builtin/packages/appres/package.py +++ b/var/spack/repos/builtin/packages/appres/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/apr-util/package.py b/var/spack/repos/builtin/packages/apr-util/package.py index 88d86ddd657..4b63e416006 100644 --- a/var/spack/repos/builtin/packages/apr-util/package.py +++ b/var/spack/repos/builtin/packages/apr-util/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/apr/package.py b/var/spack/repos/builtin/packages/apr/package.py index 0cd51f52e36..53a3c1e59b9 100644 --- a/var/spack/repos/builtin/packages/apr/package.py +++ b/var/spack/repos/builtin/packages/apr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/archer/package.py b/var/spack/repos/builtin/packages/archer/package.py index 247743ed0db..9c577e65170 100644 --- a/var/spack/repos/builtin/packages/archer/package.py +++ b/var/spack/repos/builtin/packages/archer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/argtable/package.py b/var/spack/repos/builtin/packages/argtable/package.py index 8e1bec15f9a..a7ffb886dac 100644 --- a/var/spack/repos/builtin/packages/argtable/package.py +++ b/var/spack/repos/builtin/packages/argtable/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index 0729afd8c87..90fc78d8c32 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py index 5da29828b29..6b6f6271c4a 100644 --- a/var/spack/repos/builtin/packages/arpack-ng/package.py +++ b/var/spack/repos/builtin/packages/arpack-ng/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/arpack/package.py b/var/spack/repos/builtin/packages/arpack/package.py index 91b5f06a4a5..831a379fcee 100644 --- a/var/spack/repos/builtin/packages/arpack/package.py +++ b/var/spack/repos/builtin/packages/arpack/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/asciidoc/package.py b/var/spack/repos/builtin/packages/asciidoc/package.py index 428bb7d645c..9d8de2b7632 100644 --- a/var/spack/repos/builtin/packages/asciidoc/package.py +++ b/var/spack/repos/builtin/packages/asciidoc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/astra/package.py b/var/spack/repos/builtin/packages/astra/package.py index e32e70cada2..1358657f83e 100644 --- a/var/spack/repos/builtin/packages/astra/package.py +++ b/var/spack/repos/builtin/packages/astra/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/astyle/package.py b/var/spack/repos/builtin/packages/astyle/package.py index 7eeb68cdf81..a6ab9fffc65 100644 --- a/var/spack/repos/builtin/packages/astyle/package.py +++ b/var/spack/repos/builtin/packages/astyle/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py index 8b6a51c52f7..1cccca26686 100644 --- a/var/spack/repos/builtin/packages/atk/package.py +++ b/var/spack/repos/builtin/packages/atk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/atlas/package.py b/var/spack/repos/builtin/packages/atlas/package.py index 525701c57bb..af2d0ff1112 100644 --- a/var/spack/repos/builtin/packages/atlas/package.py +++ b/var/spack/repos/builtin/packages/atlas/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/atompaw/package.py b/var/spack/repos/builtin/packages/atompaw/package.py index 987eb86e302..016681bf497 100644 --- a/var/spack/repos/builtin/packages/atompaw/package.py +++ b/var/spack/repos/builtin/packages/atompaw/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/atop/package.py b/var/spack/repos/builtin/packages/atop/package.py index 7a34d129f7b..396220962c1 100644 --- a/var/spack/repos/builtin/packages/atop/package.py +++ b/var/spack/repos/builtin/packages/atop/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/autoconf/package.py b/var/spack/repos/builtin/packages/autoconf/package.py index 694622fe806..9d7aed4c00d 100644 --- a/var/spack/repos/builtin/packages/autoconf/package.py +++ b/var/spack/repos/builtin/packages/autoconf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/autogen/package.py b/var/spack/repos/builtin/packages/autogen/package.py index e79af636b57..39fc6a4cc65 100644 --- a/var/spack/repos/builtin/packages/autogen/package.py +++ b/var/spack/repos/builtin/packages/autogen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/automaded/package.py b/var/spack/repos/builtin/packages/automaded/package.py index 7e586b29918..1edeecf2450 100644 --- a/var/spack/repos/builtin/packages/automaded/package.py +++ b/var/spack/repos/builtin/packages/automaded/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/automake/package.py b/var/spack/repos/builtin/packages/automake/package.py index 4f022e5cad0..4a38712db96 100644 --- a/var/spack/repos/builtin/packages/automake/package.py +++ b/var/spack/repos/builtin/packages/automake/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bamtools/package.py b/var/spack/repos/builtin/packages/bamtools/package.py index 79e71cc0f26..f29af2618d7 100644 --- a/var/spack/repos/builtin/packages/bamtools/package.py +++ b/var/spack/repos/builtin/packages/bamtools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bamutil/package.py b/var/spack/repos/builtin/packages/bamutil/package.py index 89aaa0e9ac3..164e0438de6 100644 --- a/var/spack/repos/builtin/packages/bamutil/package.py +++ b/var/spack/repos/builtin/packages/bamutil/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bash-completion/package.py b/var/spack/repos/builtin/packages/bash-completion/package.py index 0bd4d7c294a..680ac71ad18 100644 --- a/var/spack/repos/builtin/packages/bash-completion/package.py +++ b/var/spack/repos/builtin/packages/bash-completion/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bash/package.py b/var/spack/repos/builtin/packages/bash/package.py index 17159989d0c..86675fc4bff 100644 --- a/var/spack/repos/builtin/packages/bash/package.py +++ b/var/spack/repos/builtin/packages/bash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bats/package.py b/var/spack/repos/builtin/packages/bats/package.py index e68dd7a48d9..bcbb55bf167 100644 --- a/var/spack/repos/builtin/packages/bats/package.py +++ b/var/spack/repos/builtin/packages/bats/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index 0e0f99966a1..17b7992a1b7 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bbcp/package.py b/var/spack/repos/builtin/packages/bbcp/package.py index 5d5e64a390a..76aef3d20cb 100644 --- a/var/spack/repos/builtin/packages/bbcp/package.py +++ b/var/spack/repos/builtin/packages/bbcp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bcftools/package.py b/var/spack/repos/builtin/packages/bcftools/package.py index b9954c328a5..6a276709ef6 100644 --- a/var/spack/repos/builtin/packages/bcftools/package.py +++ b/var/spack/repos/builtin/packages/bcftools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/package.py b/var/spack/repos/builtin/packages/bcl2fastq2/package.py index 2aff74b8a8e..1a7fff360c1 100644 --- a/var/spack/repos/builtin/packages/bcl2fastq2/package.py +++ b/var/spack/repos/builtin/packages/bcl2fastq2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bdftopcf/package.py b/var/spack/repos/builtin/packages/bdftopcf/package.py index b6ddd044181..68590c5a08a 100644 --- a/var/spack/repos/builtin/packages/bdftopcf/package.py +++ b/var/spack/repos/builtin/packages/bdftopcf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bdw-gc/package.py b/var/spack/repos/builtin/packages/bdw-gc/package.py index 9282f566be2..a0606e78b17 100644 --- a/var/spack/repos/builtin/packages/bdw-gc/package.py +++ b/var/spack/repos/builtin/packages/bdw-gc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bear/package.py b/var/spack/repos/builtin/packages/bear/package.py index 8c8eb87fb38..7078931c594 100644 --- a/var/spack/repos/builtin/packages/bear/package.py +++ b/var/spack/repos/builtin/packages/bear/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bedtools2/package.py b/var/spack/repos/builtin/packages/bedtools2/package.py index 46f3185154e..a16f0cb203b 100644 --- a/var/spack/repos/builtin/packages/bedtools2/package.py +++ b/var/spack/repos/builtin/packages/bedtools2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/beforelight/package.py b/var/spack/repos/builtin/packages/beforelight/package.py index 3c0cbcf3cb9..51341e6998e 100644 --- a/var/spack/repos/builtin/packages/beforelight/package.py +++ b/var/spack/repos/builtin/packages/beforelight/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py index 9c74be8d1e3..9e2009750d3 100644 --- a/var/spack/repos/builtin/packages/benchmark/package.py +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bertini/package.py b/var/spack/repos/builtin/packages/bertini/package.py index c6d169fbcc7..4e1ac87e579 100644 --- a/var/spack/repos/builtin/packages/bertini/package.py +++ b/var/spack/repos/builtin/packages/bertini/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bib2xhtml/package.py b/var/spack/repos/builtin/packages/bib2xhtml/package.py index 56038eea18f..99bd1ce4c9b 100644 --- a/var/spack/repos/builtin/packages/bib2xhtml/package.py +++ b/var/spack/repos/builtin/packages/bib2xhtml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bigreqsproto/package.py b/var/spack/repos/builtin/packages/bigreqsproto/package.py index f2542d921e2..4fdfe1e7f2e 100644 --- a/var/spack/repos/builtin/packages/bigreqsproto/package.py +++ b/var/spack/repos/builtin/packages/bigreqsproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index 41a83125197..abfe33df9cf 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index e9bfa32b391..10a8967178b 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bitmap/package.py b/var/spack/repos/builtin/packages/bitmap/package.py index 80bc496013f..c656ab31dfd 100644 --- a/var/spack/repos/builtin/packages/bitmap/package.py +++ b/var/spack/repos/builtin/packages/bitmap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/blast-plus/package.py b/var/spack/repos/builtin/packages/blast-plus/package.py index 3faf852739f..23c47bcec9a 100644 --- a/var/spack/repos/builtin/packages/blast-plus/package.py +++ b/var/spack/repos/builtin/packages/blast-plus/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/blat/package.py b/var/spack/repos/builtin/packages/blat/package.py index 8a9cce50c16..6d55f14f1e3 100644 --- a/var/spack/repos/builtin/packages/blat/package.py +++ b/var/spack/repos/builtin/packages/blat/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,7 +26,7 @@ class Blat(Package): - """BLAT (BLAST-like alignment tool) is a pairwise sequence + """BLAT (BLAST-like alignment tool) is a pairwise sequence alignment algorithm.""" homepage = "https://genome.ucsc.edu/FAQ/FAQblat.html" diff --git a/var/spack/repos/builtin/packages/blaze/package.py b/var/spack/repos/builtin/packages/blaze/package.py index ccc62f60895..509f6ab9869 100644 --- a/var/spack/repos/builtin/packages/blaze/package.py +++ b/var/spack/repos/builtin/packages/blaze/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -33,7 +33,7 @@ class Blaze(Package): domain-specific language with HPC-grade performance, making it one of the most intuitive and fastest C++ math libraries available. """ - + homepage = "https://bitbucket.org/blaze-lib/blaze/overview" url = "https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.1.tar.gz" diff --git a/var/spack/repos/builtin/packages/bliss/package.py b/var/spack/repos/builtin/packages/bliss/package.py index a81a8068076..9abb7143a2e 100644 --- a/var/spack/repos/builtin/packages/bliss/package.py +++ b/var/spack/repos/builtin/packages/bliss/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/blitz/package.py b/var/spack/repos/builtin/packages/blitz/package.py index d6fd31d6371..7fc7e64e762 100644 --- a/var/spack/repos/builtin/packages/blitz/package.py +++ b/var/spack/repos/builtin/packages/blitz/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bml/package.py b/var/spack/repos/builtin/packages/bml/package.py index e881a0e93c3..87dc1c9e80e 100644 --- a/var/spack/repos/builtin/packages/bml/package.py +++ b/var/spack/repos/builtin/packages/bml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 4076b61ed8c..cf63b229c0a 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/boostmplcartesianproduct/package.py b/var/spack/repos/builtin/packages/boostmplcartesianproduct/package.py index 2744183fed0..c64cb9a0e02 100644 --- a/var/spack/repos/builtin/packages/boostmplcartesianproduct/package.py +++ b/var/spack/repos/builtin/packages/boostmplcartesianproduct/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bowtie/package.py b/var/spack/repos/builtin/packages/bowtie/package.py index 57c867a06d7..05f9140edbb 100644 --- a/var/spack/repos/builtin/packages/bowtie/package.py +++ b/var/spack/repos/builtin/packages/bowtie/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bowtie2/package.py b/var/spack/repos/builtin/packages/bowtie2/package.py index 8d541b15c36..564e2d27f80 100644 --- a/var/spack/repos/builtin/packages/bowtie2/package.py +++ b/var/spack/repos/builtin/packages/bowtie2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/boxlib/package.py b/var/spack/repos/builtin/packages/boxlib/package.py index dd23c05fc31..75030e925c8 100644 --- a/var/spack/repos/builtin/packages/boxlib/package.py +++ b/var/spack/repos/builtin/packages/boxlib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bpp-core/package.py b/var/spack/repos/builtin/packages/bpp-core/package.py index f716a2ee05d..e7cc1abf29f 100644 --- a/var/spack/repos/builtin/packages/bpp-core/package.py +++ b/var/spack/repos/builtin/packages/bpp-core/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bpp-phyl/package.py b/var/spack/repos/builtin/packages/bpp-phyl/package.py index 4ff77f1540c..4d73d6bd599 100644 --- a/var/spack/repos/builtin/packages/bpp-phyl/package.py +++ b/var/spack/repos/builtin/packages/bpp-phyl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bpp-seq/package.py b/var/spack/repos/builtin/packages/bpp-seq/package.py index 15c99da2b10..6e1f06a64b8 100644 --- a/var/spack/repos/builtin/packages/bpp-seq/package.py +++ b/var/spack/repos/builtin/packages/bpp-seq/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bpp-suite/package.py b/var/spack/repos/builtin/packages/bpp-suite/package.py index d15030622e1..8223c40275c 100644 --- a/var/spack/repos/builtin/packages/bpp-suite/package.py +++ b/var/spack/repos/builtin/packages/bpp-suite/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/brigand/package.py b/var/spack/repos/builtin/packages/brigand/package.py index d9f01283e04..ff379e096bc 100644 --- a/var/spack/repos/builtin/packages/brigand/package.py +++ b/var/spack/repos/builtin/packages/brigand/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bwa/package.py b/var/spack/repos/builtin/packages/bwa/package.py index 6b326ae6fe5..0b3ac66b3e0 100644 --- a/var/spack/repos/builtin/packages/bwa/package.py +++ b/var/spack/repos/builtin/packages/bwa/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/bzip2/package.py b/var/spack/repos/builtin/packages/bzip2/package.py index 741c6302cb6..532c670a0b0 100644 --- a/var/spack/repos/builtin/packages/bzip2/package.py +++ b/var/spack/repos/builtin/packages/bzip2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/c-blosc/package.py b/var/spack/repos/builtin/packages/c-blosc/package.py index 8bb0e295afb..186f314f1ef 100644 --- a/var/spack/repos/builtin/packages/c-blosc/package.py +++ b/var/spack/repos/builtin/packages/c-blosc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index ba01c25a6e4..4e2ef26dbb4 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cairo/package.py b/var/spack/repos/builtin/packages/cairo/package.py index a7e0d150b82..f02c26a8f1d 100644 --- a/var/spack/repos/builtin/packages/cairo/package.py +++ b/var/spack/repos/builtin/packages/cairo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index 2350880d225..7758b20328b 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/callpath/package.py b/var/spack/repos/builtin/packages/callpath/package.py index 27a04393f58..9ded62e5c5d 100644 --- a/var/spack/repos/builtin/packages/callpath/package.py +++ b/var/spack/repos/builtin/packages/callpath/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py index aa7c7dc98c7..e92c5b5b438 100644 --- a/var/spack/repos/builtin/packages/cantera/package.py +++ b/var/spack/repos/builtin/packages/cantera/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cask/package.py b/var/spack/repos/builtin/packages/cask/package.py index b48365b61d2..e259dae8c2c 100644 --- a/var/spack/repos/builtin/packages/cask/package.py +++ b/var/spack/repos/builtin/packages/cask/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/catch/package.py b/var/spack/repos/builtin/packages/catch/package.py index f439d3d8c26..f65f7aeb256 100644 --- a/var/spack/repos/builtin/packages/catch/package.py +++ b/var/spack/repos/builtin/packages/catch/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cbench/package.py b/var/spack/repos/builtin/packages/cbench/package.py index 4ce2cd53948..f2cf386a294 100644 --- a/var/spack/repos/builtin/packages/cbench/package.py +++ b/var/spack/repos/builtin/packages/cbench/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cblas/package.py b/var/spack/repos/builtin/packages/cblas/package.py index 08281413078..2ac5f820ec0 100644 --- a/var/spack/repos/builtin/packages/cblas/package.py +++ b/var/spack/repos/builtin/packages/cblas/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py index 3d8572232c2..9b4439f6b68 100644 --- a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py +++ b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cbtf-krell/package.py b/var/spack/repos/builtin/packages/cbtf-krell/package.py index 3f36942e9a4..0114ad4e4a1 100644 --- a/var/spack/repos/builtin/packages/cbtf-krell/package.py +++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cbtf-lanl/package.py b/var/spack/repos/builtin/packages/cbtf-lanl/package.py index 1545c7bf8b6..a2a258be3ab 100644 --- a/var/spack/repos/builtin/packages/cbtf-lanl/package.py +++ b/var/spack/repos/builtin/packages/cbtf-lanl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cbtf/package.py b/var/spack/repos/builtin/packages/cbtf/package.py index 7c9626c90e4..a9b141985f7 100644 --- a/var/spack/repos/builtin/packages/cbtf/package.py +++ b/var/spack/repos/builtin/packages/cbtf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ccache/package.py b/var/spack/repos/builtin/packages/ccache/package.py index 1b4019dc870..78a70599133 100644 --- a/var/spack/repos/builtin/packages/ccache/package.py +++ b/var/spack/repos/builtin/packages/ccache/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cctools/package.py b/var/spack/repos/builtin/packages/cctools/package.py index 165d684a9ff..ad9e3763c23 100644 --- a/var/spack/repos/builtin/packages/cctools/package.py +++ b/var/spack/repos/builtin/packages/cctools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cdd/package.py b/var/spack/repos/builtin/packages/cdd/package.py index 96414bc54b6..4f4d59785e0 100644 --- a/var/spack/repos/builtin/packages/cdd/package.py +++ b/var/spack/repos/builtin/packages/cdd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cddlib/package.py b/var/spack/repos/builtin/packages/cddlib/package.py index 002c3025998..7c38abd28d0 100644 --- a/var/spack/repos/builtin/packages/cddlib/package.py +++ b/var/spack/repos/builtin/packages/cddlib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index 3cee41b299e..898f7ff1b8c 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cereal/package.py b/var/spack/repos/builtin/packages/cereal/package.py index 7f1f103a94f..22da01e789d 100644 --- a/var/spack/repos/builtin/packages/cereal/package.py +++ b/var/spack/repos/builtin/packages/cereal/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cfitsio/package.py b/var/spack/repos/builtin/packages/cfitsio/package.py index b382f87f5b1..40c85413c72 100644 --- a/var/spack/repos/builtin/packages/cfitsio/package.py +++ b/var/spack/repos/builtin/packages/cfitsio/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index 60762006f94..235d02ccde5 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cgm/package.py b/var/spack/repos/builtin/packages/cgm/package.py index 336cea8867c..80e47cbd27c 100644 --- a/var/spack/repos/builtin/packages/cgm/package.py +++ b/var/spack/repos/builtin/packages/cgm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cgns/package.py b/var/spack/repos/builtin/packages/cgns/package.py index ba3fd7f8211..24f932a8d07 100644 --- a/var/spack/repos/builtin/packages/cgns/package.py +++ b/var/spack/repos/builtin/packages/cgns/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/charm/package.py b/var/spack/repos/builtin/packages/charm/package.py index 9f08d820d22..fd869f4c60f 100644 --- a/var/spack/repos/builtin/packages/charm/package.py +++ b/var/spack/repos/builtin/packages/charm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/chombo/package.py b/var/spack/repos/builtin/packages/chombo/package.py index 1ae50e6bc07..3b3cb1e6240 100644 --- a/var/spack/repos/builtin/packages/chombo/package.py +++ b/var/spack/repos/builtin/packages/chombo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cityhash/package.py b/var/spack/repos/builtin/packages/cityhash/package.py index b98f39a3360..4564d495318 100644 --- a/var/spack/repos/builtin/packages/cityhash/package.py +++ b/var/spack/repos/builtin/packages/cityhash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cleverleaf/package.py b/var/spack/repos/builtin/packages/cleverleaf/package.py index 3bd1f0b5d06..6ce9f51111e 100644 --- a/var/spack/repos/builtin/packages/cleverleaf/package.py +++ b/var/spack/repos/builtin/packages/cleverleaf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py index 02a9da9e271..063188b4194 100644 --- a/var/spack/repos/builtin/packages/clhep/package.py +++ b/var/spack/repos/builtin/packages/clhep/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cloog/package.py b/var/spack/repos/builtin/packages/cloog/package.py index a979ae83fc7..601806d204d 100644 --- a/var/spack/repos/builtin/packages/cloog/package.py +++ b/var/spack/repos/builtin/packages/cloog/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/clustalo/package.py b/var/spack/repos/builtin/packages/clustalo/package.py index 9e985f0cd7a..d46b7d467c0 100644 --- a/var/spack/repos/builtin/packages/clustalo/package.py +++ b/var/spack/repos/builtin/packages/clustalo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/clustalw/package.py b/var/spack/repos/builtin/packages/clustalw/package.py index 97f193c628b..959a11963b6 100644 --- a/var/spack/repos/builtin/packages/clustalw/package.py +++ b/var/spack/repos/builtin/packages/clustalw/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 70d6c14351a..05ba0e8131c 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cmocka/package.py b/var/spack/repos/builtin/packages/cmocka/package.py index c82c38a46a1..b0d9414ac64 100644 --- a/var/spack/repos/builtin/packages/cmocka/package.py +++ b/var/spack/repos/builtin/packages/cmocka/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cmor/package.py b/var/spack/repos/builtin/packages/cmor/package.py index 2dcd1c5ba17..8c858756726 100644 --- a/var/spack/repos/builtin/packages/cmor/package.py +++ b/var/spack/repos/builtin/packages/cmor/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cnmem/package.py b/var/spack/repos/builtin/packages/cnmem/package.py index 0c620239529..cdbd0c86d48 100644 --- a/var/spack/repos/builtin/packages/cnmem/package.py +++ b/var/spack/repos/builtin/packages/cnmem/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cntk/package.py b/var/spack/repos/builtin/packages/cntk/package.py index 025498fa8a1..d58165379c8 100644 --- a/var/spack/repos/builtin/packages/cntk/package.py +++ b/var/spack/repos/builtin/packages/cntk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cntk1bitsgd/package.py b/var/spack/repos/builtin/packages/cntk1bitsgd/package.py index 7cc3c7030a4..e6faddf276b 100644 --- a/var/spack/repos/builtin/packages/cntk1bitsgd/package.py +++ b/var/spack/repos/builtin/packages/cntk1bitsgd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/coinhsl/package.py b/var/spack/repos/builtin/packages/coinhsl/package.py index 87d866ec584..4af87380b6f 100644 --- a/var/spack/repos/builtin/packages/coinhsl/package.py +++ b/var/spack/repos/builtin/packages/coinhsl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/compiz/package.py b/var/spack/repos/builtin/packages/compiz/package.py index 92820db10df..19ceb8f65a4 100644 --- a/var/spack/repos/builtin/packages/compiz/package.py +++ b/var/spack/repos/builtin/packages/compiz/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/compositeproto/package.py b/var/spack/repos/builtin/packages/compositeproto/package.py index 3d445bd7e8c..8ba249536cf 100644 --- a/var/spack/repos/builtin/packages/compositeproto/package.py +++ b/var/spack/repos/builtin/packages/compositeproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/conduit/package.py b/var/spack/repos/builtin/packages/conduit/package.py index d97c6534e45..f59d1835b52 100644 --- a/var/spack/repos/builtin/packages/conduit/package.py +++ b/var/spack/repos/builtin/packages/conduit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/constype/package.py b/var/spack/repos/builtin/packages/constype/package.py index 3a62e897272..4efcb5bcd0a 100644 --- a/var/spack/repos/builtin/packages/constype/package.py +++ b/var/spack/repos/builtin/packages/constype/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/converge/package.py b/var/spack/repos/builtin/packages/converge/package.py index a6c3b5091d6..96b6c24a0a5 100644 --- a/var/spack/repos/builtin/packages/converge/package.py +++ b/var/spack/repos/builtin/packages/converge/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/coreutils/package.py b/var/spack/repos/builtin/packages/coreutils/package.py index 7999eb3cf05..beea64a5ee6 100644 --- a/var/spack/repos/builtin/packages/coreutils/package.py +++ b/var/spack/repos/builtin/packages/coreutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cosmomc/package.py b/var/spack/repos/builtin/packages/cosmomc/package.py index e04965b25ce..acbaa82202f 100644 --- a/var/spack/repos/builtin/packages/cosmomc/package.py +++ b/var/spack/repos/builtin/packages/cosmomc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 2a41de54e0b..ca4c783142b 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cppad/package.py b/var/spack/repos/builtin/packages/cppad/package.py index c13c2c5be98..11e0dda2d29 100644 --- a/var/spack/repos/builtin/packages/cppad/package.py +++ b/var/spack/repos/builtin/packages/cppad/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cppcheck/package.py b/var/spack/repos/builtin/packages/cppcheck/package.py index 3bf6a46feca..cbdfc0ef0d7 100644 --- a/var/spack/repos/builtin/packages/cppcheck/package.py +++ b/var/spack/repos/builtin/packages/cppcheck/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cpprestsdk/package.py b/var/spack/repos/builtin/packages/cpprestsdk/package.py index 60952035631..6cb378a2f37 100644 --- a/var/spack/repos/builtin/packages/cpprestsdk/package.py +++ b/var/spack/repos/builtin/packages/cpprestsdk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cppunit/package.py b/var/spack/repos/builtin/packages/cppunit/package.py index 78956798b5d..283175e0bd3 100644 --- a/var/spack/repos/builtin/packages/cppunit/package.py +++ b/var/spack/repos/builtin/packages/cppunit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cram/package.py b/var/spack/repos/builtin/packages/cram/package.py index bef26cdcbd0..f0c33ae2c69 100644 --- a/var/spack/repos/builtin/packages/cram/package.py +++ b/var/spack/repos/builtin/packages/cram/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cryptopp/package.py b/var/spack/repos/builtin/packages/cryptopp/package.py index 142bd4f2538..7ba7a87a0dc 100644 --- a/var/spack/repos/builtin/packages/cryptopp/package.py +++ b/var/spack/repos/builtin/packages/cryptopp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cscope/package.py b/var/spack/repos/builtin/packages/cscope/package.py index 8f7ebd5cd7d..bbd93976c6c 100644 --- a/var/spack/repos/builtin/packages/cscope/package.py +++ b/var/spack/repos/builtin/packages/cscope/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cub/package.py b/var/spack/repos/builtin/packages/cub/package.py index 1c9da5c1885..b868410587f 100644 --- a/var/spack/repos/builtin/packages/cub/package.py +++ b/var/spack/repos/builtin/packages/cub/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cube/package.py b/var/spack/repos/builtin/packages/cube/package.py index 7164aefce7d..f1533a9bd39 100644 --- a/var/spack/repos/builtin/packages/cube/package.py +++ b/var/spack/repos/builtin/packages/cube/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cuda-memtest/package.py b/var/spack/repos/builtin/packages/cuda-memtest/package.py index a11e288b697..16d68d1a19d 100644 --- a/var/spack/repos/builtin/packages/cuda-memtest/package.py +++ b/var/spack/repos/builtin/packages/cuda-memtest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index eabb5a846c2..fd59bbe485b 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cudnn/package.py b/var/spack/repos/builtin/packages/cudnn/package.py index 4340591c16b..dcb26af73d0 100644 --- a/var/spack/repos/builtin/packages/cudnn/package.py +++ b/var/spack/repos/builtin/packages/cudnn/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 6f8a3e8625b..56cc27de643 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/cvs/package.py b/var/spack/repos/builtin/packages/cvs/package.py index e84c1ed92fe..e0a5cfdd88f 100644 --- a/var/spack/repos/builtin/packages/cvs/package.py +++ b/var/spack/repos/builtin/packages/cvs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/czmq/package.py b/var/spack/repos/builtin/packages/czmq/package.py index c5803fb3ad6..dba2871c4df 100644 --- a/var/spack/repos/builtin/packages/czmq/package.py +++ b/var/spack/repos/builtin/packages/czmq/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dakota/package.py b/var/spack/repos/builtin/packages/dakota/package.py index c40229f83be..fc8f478bf3e 100644 --- a/var/spack/repos/builtin/packages/dakota/package.py +++ b/var/spack/repos/builtin/packages/dakota/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/damageproto/package.py b/var/spack/repos/builtin/packages/damageproto/package.py index 22eeeeddcb8..8092a33ba5e 100644 --- a/var/spack/repos/builtin/packages/damageproto/package.py +++ b/var/spack/repos/builtin/packages/damageproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/damselfly/package.py b/var/spack/repos/builtin/packages/damselfly/package.py index a37728c92b1..e78bb21f44d 100644 --- a/var/spack/repos/builtin/packages/damselfly/package.py +++ b/var/spack/repos/builtin/packages/damselfly/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/darshan-runtime/package.py b/var/spack/repos/builtin/packages/darshan-runtime/package.py index 93b2744e194..e18ad1de98f 100644 --- a/var/spack/repos/builtin/packages/darshan-runtime/package.py +++ b/var/spack/repos/builtin/packages/darshan-runtime/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/darshan-util/package.py b/var/spack/repos/builtin/packages/darshan-util/package.py index 2a970fa95f7..968ad669f0e 100644 --- a/var/spack/repos/builtin/packages/darshan-util/package.py +++ b/var/spack/repos/builtin/packages/darshan-util/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dash/package.py b/var/spack/repos/builtin/packages/dash/package.py index 823c14a7475..3d9b6c823d6 100644 --- a/var/spack/repos/builtin/packages/dash/package.py +++ b/var/spack/repos/builtin/packages/dash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/datamash/package.py b/var/spack/repos/builtin/packages/datamash/package.py index a11b156c469..422920ec862 100644 --- a/var/spack/repos/builtin/packages/datamash/package.py +++ b/var/spack/repos/builtin/packages/datamash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dbus/package.py b/var/spack/repos/builtin/packages/dbus/package.py index fdca68f53f2..44f68683187 100644 --- a/var/spack/repos/builtin/packages/dbus/package.py +++ b/var/spack/repos/builtin/packages/dbus/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 0148fae7a27..51d851b9b1b 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dejagnu/package.py b/var/spack/repos/builtin/packages/dejagnu/package.py index 0ea4aa260a4..73b97aaa525 100644 --- a/var/spack/repos/builtin/packages/dejagnu/package.py +++ b/var/spack/repos/builtin/packages/dejagnu/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dia/package.py b/var/spack/repos/builtin/packages/dia/package.py index d04cce27dcd..ec1583bd260 100644 --- a/var/spack/repos/builtin/packages/dia/package.py +++ b/var/spack/repos/builtin/packages/dia/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/direnv/package.py b/var/spack/repos/builtin/packages/direnv/package.py index 336ea9f9074..e1fbd861dc8 100644 --- a/var/spack/repos/builtin/packages/direnv/package.py +++ b/var/spack/repos/builtin/packages/direnv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dmxproto/package.py b/var/spack/repos/builtin/packages/dmxproto/package.py index 7aa02511911..2483ccac95f 100644 --- a/var/spack/repos/builtin/packages/dmxproto/package.py +++ b/var/spack/repos/builtin/packages/dmxproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/docbook-xml/package.py b/var/spack/repos/builtin/packages/docbook-xml/package.py index cff971f373c..65dd37ceaeb 100644 --- a/var/spack/repos/builtin/packages/docbook-xml/package.py +++ b/var/spack/repos/builtin/packages/docbook-xml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/docbook-xsl/package.py b/var/spack/repos/builtin/packages/docbook-xsl/package.py index 2554e4d7bf1..3ff1aebab04 100644 --- a/var/spack/repos/builtin/packages/docbook-xsl/package.py +++ b/var/spack/repos/builtin/packages/docbook-xsl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dos2unix/package.py b/var/spack/repos/builtin/packages/dos2unix/package.py index 4005eb48a04..a76cff21b23 100644 --- a/var/spack/repos/builtin/packages/dos2unix/package.py +++ b/var/spack/repos/builtin/packages/dos2unix/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/double-conversion/package.py b/var/spack/repos/builtin/packages/double-conversion/package.py index 52fa5fc9a1f..be4dccdff69 100644 --- a/var/spack/repos/builtin/packages/double-conversion/package.py +++ b/var/spack/repos/builtin/packages/double-conversion/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/doxygen/package.py b/var/spack/repos/builtin/packages/doxygen/package.py index 560e6aa95f8..61740fe91a2 100644 --- a/var/spack/repos/builtin/packages/doxygen/package.py +++ b/var/spack/repos/builtin/packages/doxygen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dri2proto/package.py b/var/spack/repos/builtin/packages/dri2proto/package.py index 4c906013b4a..2ccbbd209fb 100644 --- a/var/spack/repos/builtin/packages/dri2proto/package.py +++ b/var/spack/repos/builtin/packages/dri2proto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dri3proto/package.py b/var/spack/repos/builtin/packages/dri3proto/package.py index be8b521aae8..60a5d5de6c8 100644 --- a/var/spack/repos/builtin/packages/dri3proto/package.py +++ b/var/spack/repos/builtin/packages/dri3proto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dtcmp/package.py b/var/spack/repos/builtin/packages/dtcmp/package.py index e59e246d47d..b8aaa07b65c 100644 --- a/var/spack/repos/builtin/packages/dtcmp/package.py +++ b/var/spack/repos/builtin/packages/dtcmp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 8f9a2ffb4ad..752c01787e7 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/easybuild/package.py b/var/spack/repos/builtin/packages/easybuild/package.py index 156601ed656..fb4b53ad848 100644 --- a/var/spack/repos/builtin/packages/easybuild/package.py +++ b/var/spack/repos/builtin/packages/easybuild/package.py @@ -5,7 +5,7 @@ # Created by Kenneth Hoste, kenneth.hoste@gmail.com # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/eccodes/package.py b/var/spack/repos/builtin/packages/eccodes/package.py index 709315e4b4c..137f445c690 100644 --- a/var/spack/repos/builtin/packages/eccodes/package.py +++ b/var/spack/repos/builtin/packages/eccodes/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/editres/package.py b/var/spack/repos/builtin/packages/editres/package.py index d1823ec6fdf..2cbb4053e66 100644 --- a/var/spack/repos/builtin/packages/editres/package.py +++ b/var/spack/repos/builtin/packages/editres/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index 07277fc3e31..0aefe416e36 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index 0021c7832bb..d86ee985f76 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index 2594d73c37e..b49ac4a53b8 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/elk/package.py b/var/spack/repos/builtin/packages/elk/package.py index 23948a1a065..63893fad697 100644 --- a/var/spack/repos/builtin/packages/elk/package.py +++ b/var/spack/repos/builtin/packages/elk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py index 403e48f2cbf..85d1706b2b2 100644 --- a/var/spack/repos/builtin/packages/elpa/package.py +++ b/var/spack/repos/builtin/packages/elpa/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py index 195cb1281f6..ff941455788 100644 --- a/var/spack/repos/builtin/packages/emacs/package.py +++ b/var/spack/repos/builtin/packages/emacs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/encodings/package.py b/var/spack/repos/builtin/packages/encodings/package.py index 67b21a6e073..de6e8913b82 100644 --- a/var/spack/repos/builtin/packages/encodings/package.py +++ b/var/spack/repos/builtin/packages/encodings/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/environment-modules/package.py b/var/spack/repos/builtin/packages/environment-modules/package.py index 11ddb12876a..293816734fc 100644 --- a/var/spack/repos/builtin/packages/environment-modules/package.py +++ b/var/spack/repos/builtin/packages/environment-modules/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/es/package.py b/var/spack/repos/builtin/packages/es/package.py index 3ca39c74a21..3db13d7f7a3 100644 --- a/var/spack/repos/builtin/packages/es/package.py +++ b/var/spack/repos/builtin/packages/es/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index 9c8b9d2c2e5..0866dacdb6f 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/espresso/package.py b/var/spack/repos/builtin/packages/espresso/package.py index b53374fa9e1..b77e14ec768 100644 --- a/var/spack/repos/builtin/packages/espresso/package.py +++ b/var/spack/repos/builtin/packages/espresso/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/espressopp/package.py b/var/spack/repos/builtin/packages/espressopp/package.py index 61aad512dc2..e71291bec86 100644 --- a/var/spack/repos/builtin/packages/espressopp/package.py +++ b/var/spack/repos/builtin/packages/espressopp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/etsf-io/package.py b/var/spack/repos/builtin/packages/etsf-io/package.py index c1e6f2ededa..89ba87c81e4 100644 --- a/var/spack/repos/builtin/packages/etsf-io/package.py +++ b/var/spack/repos/builtin/packages/etsf-io/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/everytrace-example/package.py b/var/spack/repos/builtin/packages/everytrace-example/package.py index 17a7ed8658e..08d3b2fa67b 100644 --- a/var/spack/repos/builtin/packages/everytrace-example/package.py +++ b/var/spack/repos/builtin/packages/everytrace-example/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/everytrace/package.py b/var/spack/repos/builtin/packages/everytrace/package.py index 11d2a66bf46..413bf2a9444 100644 --- a/var/spack/repos/builtin/packages/everytrace/package.py +++ b/var/spack/repos/builtin/packages/everytrace/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/evieext/package.py b/var/spack/repos/builtin/packages/evieext/package.py index 8814ae31c00..30ae66c33a2 100644 --- a/var/spack/repos/builtin/packages/evieext/package.py +++ b/var/spack/repos/builtin/packages/evieext/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/exmcutils/package.py b/var/spack/repos/builtin/packages/exmcutils/package.py index 73f3df3c9b5..85d30c48c23 100644 --- a/var/spack/repos/builtin/packages/exmcutils/package.py +++ b/var/spack/repos/builtin/packages/exmcutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/exodusii/package.py b/var/spack/repos/builtin/packages/exodusii/package.py index 67024673b23..84f2b498434 100644 --- a/var/spack/repos/builtin/packages/exodusii/package.py +++ b/var/spack/repos/builtin/packages/exodusii/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/exonerate/package.py b/var/spack/repos/builtin/packages/exonerate/package.py index 2615d859d62..3821617a700 100644 --- a/var/spack/repos/builtin/packages/exonerate/package.py +++ b/var/spack/repos/builtin/packages/exonerate/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index 13ac816ea58..8f85c2914be 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/expect/package.py b/var/spack/repos/builtin/packages/expect/package.py index a8ea99a8ae2..fa89a64c9c4 100644 --- a/var/spack/repos/builtin/packages/expect/package.py +++ b/var/spack/repos/builtin/packages/expect/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index 5a596ab9f78..b68276bae46 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/exuberant-ctags/package.py b/var/spack/repos/builtin/packages/exuberant-ctags/package.py index 5d1c1eafc6a..80868508090 100644 --- a/var/spack/repos/builtin/packages/exuberant-ctags/package.py +++ b/var/spack/repos/builtin/packages/exuberant-ctags/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/f90cache/package.py b/var/spack/repos/builtin/packages/f90cache/package.py index 1aae152b3e1..566e7ca6260 100644 --- a/var/spack/repos/builtin/packages/f90cache/package.py +++ b/var/spack/repos/builtin/packages/f90cache/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/farmhash/package.py b/var/spack/repos/builtin/packages/farmhash/package.py index 13ed781d17b..90b0cf256f4 100644 --- a/var/spack/repos/builtin/packages/farmhash/package.py +++ b/var/spack/repos/builtin/packages/farmhash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fastmath/package.py b/var/spack/repos/builtin/packages/fastmath/package.py index cae9b10ae48..1a483057d3b 100644 --- a/var/spack/repos/builtin/packages/fastmath/package.py +++ b/var/spack/repos/builtin/packages/fastmath/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fastqc/package.py b/var/spack/repos/builtin/packages/fastqc/package.py index 21b607c90ab..ae06252fc11 100644 --- a/var/spack/repos/builtin/packages/fastqc/package.py +++ b/var/spack/repos/builtin/packages/fastqc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fastx-toolkit/package.py b/var/spack/repos/builtin/packages/fastx-toolkit/package.py index fed54b9b366..7e06ba89eab 100644 --- a/var/spack/repos/builtin/packages/fastx-toolkit/package.py +++ b/var/spack/repos/builtin/packages/fastx-toolkit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fenics/package.py b/var/spack/repos/builtin/packages/fenics/package.py index 1db9614dc28..34afa0d609c 100644 --- a/var/spack/repos/builtin/packages/fenics/package.py +++ b/var/spack/repos/builtin/packages/fenics/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py index 4dcff54b8f0..f2a32fdd700 100644 --- a/var/spack/repos/builtin/packages/ferret/package.py +++ b/var/spack/repos/builtin/packages/ferret/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ffmpeg/package.py b/var/spack/repos/builtin/packages/ffmpeg/package.py index 810a7b52cc9..80017f5eb6c 100644 --- a/var/spack/repos/builtin/packages/ffmpeg/package.py +++ b/var/spack/repos/builtin/packages/ffmpeg/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -40,8 +40,8 @@ class Ffmpeg(AutotoolsPackage): def configure_args(self): spec = self.spec config_args = ['--enable-pic'] - + if '+shared' in spec: - config_args.append('--enable-shared') - + config_args.append('--enable-shared') + return config_args diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index ce454095817..82f49e7ca2f 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/findutils/package.py b/var/spack/repos/builtin/packages/findutils/package.py index f436e53d1ab..74237bc6be5 100644 --- a/var/spack/repos/builtin/packages/findutils/package.py +++ b/var/spack/repos/builtin/packages/findutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fio/package.py b/var/spack/repos/builtin/packages/fio/package.py index 09554968ef4..0b99ff9cd37 100644 --- a/var/spack/repos/builtin/packages/fio/package.py +++ b/var/spack/repos/builtin/packages/fio/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fish/package.py b/var/spack/repos/builtin/packages/fish/package.py index 715d4797e33..474b31d005d 100644 --- a/var/spack/repos/builtin/packages/fish/package.py +++ b/var/spack/repos/builtin/packages/fish/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fixesproto/package.py b/var/spack/repos/builtin/packages/fixesproto/package.py index 934848727fb..b3fb0a872b8 100644 --- a/var/spack/repos/builtin/packages/fixesproto/package.py +++ b/var/spack/repos/builtin/packages/fixesproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/flac/package.py b/var/spack/repos/builtin/packages/flac/package.py index 022273ed16a..54584224e34 100644 --- a/var/spack/repos/builtin/packages/flac/package.py +++ b/var/spack/repos/builtin/packages/flac/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/flann/package.py b/var/spack/repos/builtin/packages/flann/package.py index bb7af21fa96..6505a643d5f 100644 --- a/var/spack/repos/builtin/packages/flann/package.py +++ b/var/spack/repos/builtin/packages/flann/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/flash/package.py b/var/spack/repos/builtin/packages/flash/package.py index 3c1b82eb586..7f4cd8e27da 100644 --- a/var/spack/repos/builtin/packages/flash/package.py +++ b/var/spack/repos/builtin/packages/flash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/flecsale/package.py b/var/spack/repos/builtin/packages/flecsale/package.py index eafc1b7998f..b22c553d2ab 100644 --- a/var/spack/repos/builtin/packages/flecsale/package.py +++ b/var/spack/repos/builtin/packages/flecsale/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/flecsi/package.py b/var/spack/repos/builtin/packages/flecsi/package.py index 24c3e6b4d72..5c0f51b2d18 100644 --- a/var/spack/repos/builtin/packages/flecsi/package.py +++ b/var/spack/repos/builtin/packages/flecsi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py index eda45c28a68..0d720d307cf 100644 --- a/var/spack/repos/builtin/packages/flex/package.py +++ b/var/spack/repos/builtin/packages/flex/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/flint/package.py b/var/spack/repos/builtin/packages/flint/package.py index c39b17db2c6..641b96ace4d 100644 --- a/var/spack/repos/builtin/packages/flint/package.py +++ b/var/spack/repos/builtin/packages/flint/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fltk/package.py b/var/spack/repos/builtin/packages/fltk/package.py index f29b64b02b2..95ec9780247 100644 --- a/var/spack/repos/builtin/packages/fltk/package.py +++ b/var/spack/repos/builtin/packages/fltk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/flux/package.py b/var/spack/repos/builtin/packages/flux/package.py index 6f368fbef46..4c80fb1dcca 100644 --- a/var/spack/repos/builtin/packages/flux/package.py +++ b/var/spack/repos/builtin/packages/flux/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/foam-extend/package.py b/var/spack/repos/builtin/packages/foam-extend/package.py index d417ef8cf33..91837af7205 100644 --- a/var/spack/repos/builtin/packages/foam-extend/package.py +++ b/var/spack/repos/builtin/packages/foam-extend/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # License # ------- diff --git a/var/spack/repos/builtin/packages/folly/package.py b/var/spack/repos/builtin/packages/folly/package.py index bf9eb1cbd05..13b03de39b8 100644 --- a/var/spack/repos/builtin/packages/folly/package.py +++ b/var/spack/repos/builtin/packages/folly/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-adobe-100dpi/package.py b/var/spack/repos/builtin/packages/font-adobe-100dpi/package.py index bde6f352da6..c39b6d3ef21 100644 --- a/var/spack/repos/builtin/packages/font-adobe-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-100dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-adobe-75dpi/package.py b/var/spack/repos/builtin/packages/font-adobe-75dpi/package.py index 380fcf363e4..9da16e57129 100644 --- a/var/spack/repos/builtin/packages/font-adobe-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-75dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-adobe-utopia-100dpi/package.py b/var/spack/repos/builtin/packages/font-adobe-utopia-100dpi/package.py index 9782d259b5f..c2c4bb36469 100644 --- a/var/spack/repos/builtin/packages/font-adobe-utopia-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-utopia-100dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-adobe-utopia-75dpi/package.py b/var/spack/repos/builtin/packages/font-adobe-utopia-75dpi/package.py index 9b687a7814e..300d299d69c 100644 --- a/var/spack/repos/builtin/packages/font-adobe-utopia-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-utopia-75dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-adobe-utopia-type1/package.py b/var/spack/repos/builtin/packages/font-adobe-utopia-type1/package.py index 14004e98833..2d5f4745ce1 100644 --- a/var/spack/repos/builtin/packages/font-adobe-utopia-type1/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-utopia-type1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-alias/package.py b/var/spack/repos/builtin/packages/font-alias/package.py index eb8c79fe2a6..4a75c7b7319 100644 --- a/var/spack/repos/builtin/packages/font-alias/package.py +++ b/var/spack/repos/builtin/packages/font-alias/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-arabic-misc/package.py b/var/spack/repos/builtin/packages/font-arabic-misc/package.py index 8307d58d6e5..f34109c4915 100644 --- a/var/spack/repos/builtin/packages/font-arabic-misc/package.py +++ b/var/spack/repos/builtin/packages/font-arabic-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bh-100dpi/package.py b/var/spack/repos/builtin/packages/font-bh-100dpi/package.py index 1d488a6cd9d..23305a489be 100644 --- a/var/spack/repos/builtin/packages/font-bh-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bh-100dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bh-75dpi/package.py b/var/spack/repos/builtin/packages/font-bh-75dpi/package.py index 22420dd8873..18d2726de2f 100644 --- a/var/spack/repos/builtin/packages/font-bh-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bh-75dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-100dpi/package.py b/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-100dpi/package.py index 173195a5572..5eb2fbb3784 100644 --- a/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-100dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-75dpi/package.py b/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-75dpi/package.py index 9066823bc36..4db1ec4978e 100644 --- a/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-75dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bh-ttf/package.py b/var/spack/repos/builtin/packages/font-bh-ttf/package.py index a10b88d355e..f571700b29b 100644 --- a/var/spack/repos/builtin/packages/font-bh-ttf/package.py +++ b/var/spack/repos/builtin/packages/font-bh-ttf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bh-type1/package.py b/var/spack/repos/builtin/packages/font-bh-type1/package.py index fffc2e40953..60d41103a3e 100644 --- a/var/spack/repos/builtin/packages/font-bh-type1/package.py +++ b/var/spack/repos/builtin/packages/font-bh-type1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bitstream-100dpi/package.py b/var/spack/repos/builtin/packages/font-bitstream-100dpi/package.py index e8e11ae6273..495c371d0d8 100644 --- a/var/spack/repos/builtin/packages/font-bitstream-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bitstream-100dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bitstream-75dpi/package.py b/var/spack/repos/builtin/packages/font-bitstream-75dpi/package.py index 5dd033964ba..fd57c53d4fc 100644 --- a/var/spack/repos/builtin/packages/font-bitstream-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bitstream-75dpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bitstream-speedo/package.py b/var/spack/repos/builtin/packages/font-bitstream-speedo/package.py index e746f241df3..040632a4c2d 100644 --- a/var/spack/repos/builtin/packages/font-bitstream-speedo/package.py +++ b/var/spack/repos/builtin/packages/font-bitstream-speedo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-bitstream-type1/package.py b/var/spack/repos/builtin/packages/font-bitstream-type1/package.py index 65289685c39..c8d26b3e03d 100644 --- a/var/spack/repos/builtin/packages/font-bitstream-type1/package.py +++ b/var/spack/repos/builtin/packages/font-bitstream-type1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-cronyx-cyrillic/package.py b/var/spack/repos/builtin/packages/font-cronyx-cyrillic/package.py index 07e1330fe65..b1c65250b4e 100644 --- a/var/spack/repos/builtin/packages/font-cronyx-cyrillic/package.py +++ b/var/spack/repos/builtin/packages/font-cronyx-cyrillic/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-cursor-misc/package.py b/var/spack/repos/builtin/packages/font-cursor-misc/package.py index 6fddc015e30..f96ec0f7134 100644 --- a/var/spack/repos/builtin/packages/font-cursor-misc/package.py +++ b/var/spack/repos/builtin/packages/font-cursor-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-daewoo-misc/package.py b/var/spack/repos/builtin/packages/font-daewoo-misc/package.py index 3dd3b59b143..2b092259acd 100644 --- a/var/spack/repos/builtin/packages/font-daewoo-misc/package.py +++ b/var/spack/repos/builtin/packages/font-daewoo-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-dec-misc/package.py b/var/spack/repos/builtin/packages/font-dec-misc/package.py index 035ae3eb15f..1537e6f5695 100644 --- a/var/spack/repos/builtin/packages/font-dec-misc/package.py +++ b/var/spack/repos/builtin/packages/font-dec-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-ibm-type1/package.py b/var/spack/repos/builtin/packages/font-ibm-type1/package.py index 34bbe85cfb5..3b51051a4a7 100644 --- a/var/spack/repos/builtin/packages/font-ibm-type1/package.py +++ b/var/spack/repos/builtin/packages/font-ibm-type1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-isas-misc/package.py b/var/spack/repos/builtin/packages/font-isas-misc/package.py index b0575f8ffc7..b12a01a14ab 100644 --- a/var/spack/repos/builtin/packages/font-isas-misc/package.py +++ b/var/spack/repos/builtin/packages/font-isas-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-jis-misc/package.py b/var/spack/repos/builtin/packages/font-jis-misc/package.py index a5bee3fe31e..5d347231dba 100644 --- a/var/spack/repos/builtin/packages/font-jis-misc/package.py +++ b/var/spack/repos/builtin/packages/font-jis-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-micro-misc/package.py b/var/spack/repos/builtin/packages/font-micro-misc/package.py index 930a299beb5..206bf596a21 100644 --- a/var/spack/repos/builtin/packages/font-micro-misc/package.py +++ b/var/spack/repos/builtin/packages/font-micro-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-misc-cyrillic/package.py b/var/spack/repos/builtin/packages/font-misc-cyrillic/package.py index 4d25552732e..6cef5977786 100644 --- a/var/spack/repos/builtin/packages/font-misc-cyrillic/package.py +++ b/var/spack/repos/builtin/packages/font-misc-cyrillic/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-misc-ethiopic/package.py b/var/spack/repos/builtin/packages/font-misc-ethiopic/package.py index 6ccdc4e4820..66bca90d9bf 100644 --- a/var/spack/repos/builtin/packages/font-misc-ethiopic/package.py +++ b/var/spack/repos/builtin/packages/font-misc-ethiopic/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-misc-meltho/package.py b/var/spack/repos/builtin/packages/font-misc-meltho/package.py index eda84e2b321..2c936787650 100644 --- a/var/spack/repos/builtin/packages/font-misc-meltho/package.py +++ b/var/spack/repos/builtin/packages/font-misc-meltho/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-misc-misc/package.py b/var/spack/repos/builtin/packages/font-misc-misc/package.py index c960d18b393..79ce98c2c1b 100644 --- a/var/spack/repos/builtin/packages/font-misc-misc/package.py +++ b/var/spack/repos/builtin/packages/font-misc-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-mutt-misc/package.py b/var/spack/repos/builtin/packages/font-mutt-misc/package.py index a5d4cae0605..39c3e256bdb 100644 --- a/var/spack/repos/builtin/packages/font-mutt-misc/package.py +++ b/var/spack/repos/builtin/packages/font-mutt-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-schumacher-misc/package.py b/var/spack/repos/builtin/packages/font-schumacher-misc/package.py index 193fa2691e6..d209c0d734f 100644 --- a/var/spack/repos/builtin/packages/font-schumacher-misc/package.py +++ b/var/spack/repos/builtin/packages/font-schumacher-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-screen-cyrillic/package.py b/var/spack/repos/builtin/packages/font-screen-cyrillic/package.py index 5914a3c9de8..66db505a10c 100644 --- a/var/spack/repos/builtin/packages/font-screen-cyrillic/package.py +++ b/var/spack/repos/builtin/packages/font-screen-cyrillic/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-sony-misc/package.py b/var/spack/repos/builtin/packages/font-sony-misc/package.py index 145ee20971e..792b7556d80 100644 --- a/var/spack/repos/builtin/packages/font-sony-misc/package.py +++ b/var/spack/repos/builtin/packages/font-sony-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-sun-misc/package.py b/var/spack/repos/builtin/packages/font-sun-misc/package.py index dcf5b9e2178..3fe3dfb511d 100644 --- a/var/spack/repos/builtin/packages/font-sun-misc/package.py +++ b/var/spack/repos/builtin/packages/font-sun-misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-util/package.py b/var/spack/repos/builtin/packages/font-util/package.py index 03a466d00aa..5aac7cd59ed 100644 --- a/var/spack/repos/builtin/packages/font-util/package.py +++ b/var/spack/repos/builtin/packages/font-util/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-winitzki-cyrillic/package.py b/var/spack/repos/builtin/packages/font-winitzki-cyrillic/package.py index 0af366c7423..1ee6210641b 100644 --- a/var/spack/repos/builtin/packages/font-winitzki-cyrillic/package.py +++ b/var/spack/repos/builtin/packages/font-winitzki-cyrillic/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/font-xfree86-type1/package.py b/var/spack/repos/builtin/packages/font-xfree86-type1/package.py index dceac106a94..b20c1c4194d 100644 --- a/var/spack/repos/builtin/packages/font-xfree86-type1/package.py +++ b/var/spack/repos/builtin/packages/font-xfree86-type1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fontcacheproto/package.py b/var/spack/repos/builtin/packages/fontcacheproto/package.py index f793aba9cf1..d385ab353df 100644 --- a/var/spack/repos/builtin/packages/fontcacheproto/package.py +++ b/var/spack/repos/builtin/packages/fontcacheproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py index 9f0fc2b7951..e7d1068496e 100644 --- a/var/spack/repos/builtin/packages/fontconfig/package.py +++ b/var/spack/repos/builtin/packages/fontconfig/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fontsproto/package.py b/var/spack/repos/builtin/packages/fontsproto/package.py index 03e825c2f75..e584a81ce9d 100644 --- a/var/spack/repos/builtin/packages/fontsproto/package.py +++ b/var/spack/repos/builtin/packages/fontsproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fonttosfnt/package.py b/var/spack/repos/builtin/packages/fonttosfnt/package.py index e8cc3a6f6f4..37f2dfe923a 100644 --- a/var/spack/repos/builtin/packages/fonttosfnt/package.py +++ b/var/spack/repos/builtin/packages/fonttosfnt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/freetype/package.py b/var/spack/repos/builtin/packages/freetype/package.py index f574677af97..9d3211f83b6 100644 --- a/var/spack/repos/builtin/packages/freetype/package.py +++ b/var/spack/repos/builtin/packages/freetype/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fslsfonts/package.py b/var/spack/repos/builtin/packages/fslsfonts/package.py index 2becf5a346e..febba4d6f86 100644 --- a/var/spack/repos/builtin/packages/fslsfonts/package.py +++ b/var/spack/repos/builtin/packages/fslsfonts/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/fstobdf/package.py b/var/spack/repos/builtin/packages/fstobdf/package.py index 7b2d433ef2a..5fd3ba837f2 100644 --- a/var/spack/repos/builtin/packages/fstobdf/package.py +++ b/var/spack/repos/builtin/packages/fstobdf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/funhpc/package.py b/var/spack/repos/builtin/packages/funhpc/package.py index d676e978107..3526118c9ec 100644 --- a/var/spack/repos/builtin/packages/funhpc/package.py +++ b/var/spack/repos/builtin/packages/funhpc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gasnet/package.py b/var/spack/repos/builtin/packages/gasnet/package.py index 452704075ef..a27cf25dd6e 100644 --- a/var/spack/repos/builtin/packages/gasnet/package.py +++ b/var/spack/repos/builtin/packages/gasnet/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gawk/package.py b/var/spack/repos/builtin/packages/gawk/package.py index 431e21d6aeb..bb331527e60 100644 --- a/var/spack/repos/builtin/packages/gawk/package.py +++ b/var/spack/repos/builtin/packages/gawk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gbenchmark/package.py b/var/spack/repos/builtin/packages/gbenchmark/package.py index a25ddd7a4da..591a5403f0d 100644 --- a/var/spack/repos/builtin/packages/gbenchmark/package.py +++ b/var/spack/repos/builtin/packages/gbenchmark/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 5560e36457a..7fa9b81dded 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gccmakedep/package.py b/var/spack/repos/builtin/packages/gccmakedep/package.py index 1e082bb0505..a3af53be2d1 100644 --- a/var/spack/repos/builtin/packages/gccmakedep/package.py +++ b/var/spack/repos/builtin/packages/gccmakedep/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gccxml/package.py b/var/spack/repos/builtin/packages/gccxml/package.py index ec8363a7ca5..8b5bdc7e0fe 100644 --- a/var/spack/repos/builtin/packages/gccxml/package.py +++ b/var/spack/repos/builtin/packages/gccxml/package.py @@ -4,7 +4,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gconf/package.py b/var/spack/repos/builtin/packages/gconf/package.py index 65023017840..5bd0c9c37bf 100644 --- a/var/spack/repos/builtin/packages/gconf/package.py +++ b/var/spack/repos/builtin/packages/gconf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index 1b9a4f08182..9d0c7cf4e0b 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index d502d2449d4..36c1af35fee 100644 --- a/var/spack/repos/builtin/packages/gdb/package.py +++ b/var/spack/repos/builtin/packages/gdb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gdbm/package.py b/var/spack/repos/builtin/packages/gdbm/package.py index b3e405d0ba2..488ca4702b9 100644 --- a/var/spack/repos/builtin/packages/gdbm/package.py +++ b/var/spack/repos/builtin/packages/gdbm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index 6b9328e45dc..b3f881cc856 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index c940c254bcc..cb04d674812 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gemmlowp/package.py b/var/spack/repos/builtin/packages/gemmlowp/package.py index 3cc4a1135f2..98bb69b1ba2 100644 --- a/var/spack/repos/builtin/packages/gemmlowp/package.py +++ b/var/spack/repos/builtin/packages/gemmlowp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/geos/package.py b/var/spack/repos/builtin/packages/geos/package.py index 2419eed0389..bbd712fa2d2 100644 --- a/var/spack/repos/builtin/packages/geos/package.py +++ b/var/spack/repos/builtin/packages/geos/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gettext/package.py b/var/spack/repos/builtin/packages/gettext/package.py index efb9c3c0886..7fff4219524 100644 --- a/var/spack/repos/builtin/packages/gettext/package.py +++ b/var/spack/repos/builtin/packages/gettext/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gflags/package.py b/var/spack/repos/builtin/packages/gflags/package.py index 7e04c9b682e..57a01f8c78c 100644 --- a/var/spack/repos/builtin/packages/gflags/package.py +++ b/var/spack/repos/builtin/packages/gflags/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ghostscript-fonts/package.py b/var/spack/repos/builtin/packages/ghostscript-fonts/package.py index 86c937d5554..69b1194322e 100644 --- a/var/spack/repos/builtin/packages/ghostscript-fonts/package.py +++ b/var/spack/repos/builtin/packages/ghostscript-fonts/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ghostscript/package.py b/var/spack/repos/builtin/packages/ghostscript/package.py index 255abaa6bd7..8463dcea0ec 100644 --- a/var/spack/repos/builtin/packages/ghostscript/package.py +++ b/var/spack/repos/builtin/packages/ghostscript/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/giflib/package.py b/var/spack/repos/builtin/packages/giflib/package.py index feca5b046bb..50077c93f66 100644 --- a/var/spack/repos/builtin/packages/giflib/package.py +++ b/var/spack/repos/builtin/packages/giflib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/git-lfs/package.py b/var/spack/repos/builtin/packages/git-lfs/package.py index 14f8cbe0d35..5711366ea0c 100644 --- a/var/spack/repos/builtin/packages/git-lfs/package.py +++ b/var/spack/repos/builtin/packages/git-lfs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index ca34969bfe5..847eff62f3c 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gl2ps/package.py b/var/spack/repos/builtin/packages/gl2ps/package.py index 606e97e27b4..eff64025527 100644 --- a/var/spack/repos/builtin/packages/gl2ps/package.py +++ b/var/spack/repos/builtin/packages/gl2ps/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/glew/package.py b/var/spack/repos/builtin/packages/glew/package.py index 5df7c8642fb..68ca924de60 100644 --- a/var/spack/repos/builtin/packages/glew/package.py +++ b/var/spack/repos/builtin/packages/glew/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index 83099fa1507..b4b888a487a 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/glm/package.py b/var/spack/repos/builtin/packages/glm/package.py index c565b3cae76..9825cbdb943 100644 --- a/var/spack/repos/builtin/packages/glm/package.py +++ b/var/spack/repos/builtin/packages/glm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/global/package.py b/var/spack/repos/builtin/packages/global/package.py index fedf41c829f..a137dd7dd3f 100644 --- a/var/spack/repos/builtin/packages/global/package.py +++ b/var/spack/repos/builtin/packages/global/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/globalarrays/package.py b/var/spack/repos/builtin/packages/globalarrays/package.py index bce1a8f37ab..19af1b63019 100644 --- a/var/spack/repos/builtin/packages/globalarrays/package.py +++ b/var/spack/repos/builtin/packages/globalarrays/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -56,5 +56,5 @@ def cmake_args(self): '-DCMAKE_Fortran_COMPILER=%s' % self.compiler.f77, '-DCMAKE_Fortran_FLAGS=-qzerosize' ]) - + return options diff --git a/var/spack/repos/builtin/packages/globus-toolkit/package.py b/var/spack/repos/builtin/packages/globus-toolkit/package.py index 5cdc0689a77..856223ee74c 100644 --- a/var/spack/repos/builtin/packages/globus-toolkit/package.py +++ b/var/spack/repos/builtin/packages/globus-toolkit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/glog/package.py b/var/spack/repos/builtin/packages/glog/package.py index 3ea17d2f0c2..551f36037af 100644 --- a/var/spack/repos/builtin/packages/glog/package.py +++ b/var/spack/repos/builtin/packages/glog/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/glpk/package.py b/var/spack/repos/builtin/packages/glpk/package.py index da3ccdeef1e..15941b42119 100644 --- a/var/spack/repos/builtin/packages/glpk/package.py +++ b/var/spack/repos/builtin/packages/glpk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/glproto/package.py b/var/spack/repos/builtin/packages/glproto/package.py index 8a5eaef660d..7013baff38c 100644 --- a/var/spack/repos/builtin/packages/glproto/package.py +++ b/var/spack/repos/builtin/packages/glproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gmake/package.py b/var/spack/repos/builtin/packages/gmake/package.py index ed89a46758a..5bb4fdb2aac 100644 --- a/var/spack/repos/builtin/packages/gmake/package.py +++ b/var/spack/repos/builtin/packages/gmake/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gmime/package.py b/var/spack/repos/builtin/packages/gmime/package.py index 93d0a710219..1882fad2e78 100644 --- a/var/spack/repos/builtin/packages/gmime/package.py +++ b/var/spack/repos/builtin/packages/gmime/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gmp/package.py b/var/spack/repos/builtin/packages/gmp/package.py index 023ecd6069a..b7a9fa74cff 100644 --- a/var/spack/repos/builtin/packages/gmp/package.py +++ b/var/spack/repos/builtin/packages/gmp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py index 80598bff837..3c9eff5619f 100644 --- a/var/spack/repos/builtin/packages/gmsh/package.py +++ b/var/spack/repos/builtin/packages/gmsh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gnat/package.py b/var/spack/repos/builtin/packages/gnat/package.py index b0ecbc7f5f0..e6fb814c087 100644 --- a/var/spack/repos/builtin/packages/gnat/package.py +++ b/var/spack/repos/builtin/packages/gnat/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gnu-prolog/package.py b/var/spack/repos/builtin/packages/gnu-prolog/package.py index 1e0487c6541..4300d581d2f 100644 --- a/var/spack/repos/builtin/packages/gnu-prolog/package.py +++ b/var/spack/repos/builtin/packages/gnu-prolog/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gnupg/package.py b/var/spack/repos/builtin/packages/gnupg/package.py index 0239c15d0e7..51987e2dd82 100644 --- a/var/spack/repos/builtin/packages/gnupg/package.py +++ b/var/spack/repos/builtin/packages/gnupg/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gnuplot/package.py b/var/spack/repos/builtin/packages/gnuplot/package.py index c2ac6d1ba82..c5d8f315c5c 100644 --- a/var/spack/repos/builtin/packages/gnuplot/package.py +++ b/var/spack/repos/builtin/packages/gnuplot/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index bef2433ed2b..9dfb0713fd7 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/go-bootstrap/package.py b/var/spack/repos/builtin/packages/go-bootstrap/package.py index 43409610e8f..7a353086161 100644 --- a/var/spack/repos/builtin/packages/go-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/go-bootstrap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 05a903ea749..9d6ea49dd80 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index 55ea0369a4f..44078d059e2 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py index 44a96bc170b..517655fced3 100644 --- a/var/spack/repos/builtin/packages/googletest/package.py +++ b/var/spack/repos/builtin/packages/googletest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gource/package.py b/var/spack/repos/builtin/packages/gource/package.py index 7d12697d63c..5118169c7cc 100644 --- a/var/spack/repos/builtin/packages/gource/package.py +++ b/var/spack/repos/builtin/packages/gource/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gperf/package.py b/var/spack/repos/builtin/packages/gperf/package.py index e7dffa017a6..7e19221e407 100644 --- a/var/spack/repos/builtin/packages/gperf/package.py +++ b/var/spack/repos/builtin/packages/gperf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gperftools/package.py b/var/spack/repos/builtin/packages/gperftools/package.py index 300e0ae7659..1c208595ad6 100644 --- a/var/spack/repos/builtin/packages/gperftools/package.py +++ b/var/spack/repos/builtin/packages/gperftools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/grackle/package.py b/var/spack/repos/builtin/packages/grackle/package.py index 7e3777158fd..02f6f176113 100644 --- a/var/spack/repos/builtin/packages/grackle/package.py +++ b/var/spack/repos/builtin/packages/grackle/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gradle/package.py b/var/spack/repos/builtin/packages/gradle/package.py index a5622e70e94..d39ba5e685b 100644 --- a/var/spack/repos/builtin/packages/gradle/package.py +++ b/var/spack/repos/builtin/packages/gradle/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -27,11 +27,11 @@ class Gradle(Package): - """Gradle is an open source build automation system that builds - upon the concepts of Apache Ant and Apache Maven and introduces - a Groovy-based domain-specific language (DSL) instead of the XML + """Gradle is an open source build automation system that builds + upon the concepts of Apache Ant and Apache Maven and introduces + a Groovy-based domain-specific language (DSL) instead of the XML form used by Apache Maven for declaring the project configuration. - Gradle uses a directed acyclic graph ("DAG") to determine the + Gradle uses a directed acyclic graph ("DAG") to determine the order in which tasks can be run.""" homepage = "https://gradle.org" diff --git a/var/spack/repos/builtin/packages/grandr/package.py b/var/spack/repos/builtin/packages/grandr/package.py index dd56426ef84..e8910b519e4 100644 --- a/var/spack/repos/builtin/packages/grandr/package.py +++ b/var/spack/repos/builtin/packages/grandr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/graphlib/package.py b/var/spack/repos/builtin/packages/graphlib/package.py index 1e0eb2bf3bb..0ed50001f63 100644 --- a/var/spack/repos/builtin/packages/graphlib/package.py +++ b/var/spack/repos/builtin/packages/graphlib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py index 9a0337e656f..9efbc85789c 100644 --- a/var/spack/repos/builtin/packages/graphviz/package.py +++ b/var/spack/repos/builtin/packages/graphviz/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/grib-api/package.py b/var/spack/repos/builtin/packages/grib-api/package.py index 704ac7bd589..9597964c947 100644 --- a/var/spack/repos/builtin/packages/grib-api/package.py +++ b/var/spack/repos/builtin/packages/grib-api/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 424c098733d..97fd569d1ff 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gsl/package.py b/var/spack/repos/builtin/packages/gsl/package.py index f13a9a66e82..4c95612d6d9 100644 --- a/var/spack/repos/builtin/packages/gsl/package.py +++ b/var/spack/repos/builtin/packages/gsl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index ac34eeebcb9..1b85bb0a4c3 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/gts/package.py b/var/spack/repos/builtin/packages/gts/package.py index ea9443fb9d5..adac0e1d058 100644 --- a/var/spack/repos/builtin/packages/gts/package.py +++ b/var/spack/repos/builtin/packages/gts/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/guile/package.py b/var/spack/repos/builtin/packages/guile/package.py index 90847a0088f..ff3ca84b008 100644 --- a/var/spack/repos/builtin/packages/guile/package.py +++ b/var/spack/repos/builtin/packages/guile/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/h5hut/package.py b/var/spack/repos/builtin/packages/h5hut/package.py index b12549df0da..5b0a9fa5a2f 100644 --- a/var/spack/repos/builtin/packages/h5hut/package.py +++ b/var/spack/repos/builtin/packages/h5hut/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/h5part/package.py b/var/spack/repos/builtin/packages/h5part/package.py index 3ff407accd8..71c569d3799 100644 --- a/var/spack/repos/builtin/packages/h5part/package.py +++ b/var/spack/repos/builtin/packages/h5part/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/h5utils/package.py b/var/spack/repos/builtin/packages/h5utils/package.py index 2a51ca22f22..0ed9516f34f 100644 --- a/var/spack/repos/builtin/packages/h5utils/package.py +++ b/var/spack/repos/builtin/packages/h5utils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/h5z-zfp/package.py b/var/spack/repos/builtin/packages/h5z-zfp/package.py index b98823a1bdf..0063c2fd37d 100644 --- a/var/spack/repos/builtin/packages/h5z-zfp/package.py +++ b/var/spack/repos/builtin/packages/h5z-zfp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hadoop/package.py b/var/spack/repos/builtin/packages/hadoop/package.py index a87b19a8cc8..4981a0bb58e 100644 --- a/var/spack/repos/builtin/packages/hadoop/package.py +++ b/var/spack/repos/builtin/packages/hadoop/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py index 0ae8e21e1b1..5323607fb8e 100644 --- a/var/spack/repos/builtin/packages/harfbuzz/package.py +++ b/var/spack/repos/builtin/packages/harfbuzz/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/harminv/package.py b/var/spack/repos/builtin/packages/harminv/package.py index 67baf42b5d8..d96e31b3c37 100644 --- a/var/spack/repos/builtin/packages/harminv/package.py +++ b/var/spack/repos/builtin/packages/harminv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hdf/package.py b/var/spack/repos/builtin/packages/hdf/package.py index 2554bd0f96e..3944f91124b 100644 --- a/var/spack/repos/builtin/packages/hdf/package.py +++ b/var/spack/repos/builtin/packages/hdf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index 288f9581347..95d37cc02f0 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 2f2f0161773..782b7c32cf9 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/help2man/package.py b/var/spack/repos/builtin/packages/help2man/package.py index 506b1c1465a..d4a8ba9fe4b 100644 --- a/var/spack/repos/builtin/packages/help2man/package.py +++ b/var/spack/repos/builtin/packages/help2man/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hepmc/package.py b/var/spack/repos/builtin/packages/hepmc/package.py index ab80dcf6bab..dfad9adb489 100644 --- a/var/spack/repos/builtin/packages/hepmc/package.py +++ b/var/spack/repos/builtin/packages/hepmc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/heppdt/package.py b/var/spack/repos/builtin/packages/heppdt/package.py index 65946fb1028..4a534a8c8a6 100644 --- a/var/spack/repos/builtin/packages/heppdt/package.py +++ b/var/spack/repos/builtin/packages/heppdt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/highfive/package.py b/var/spack/repos/builtin/packages/highfive/package.py index 3ee9cfeba0e..2a071d7958d 100644 --- a/var/spack/repos/builtin/packages/highfive/package.py +++ b/var/spack/repos/builtin/packages/highfive/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/highwayhash/package.py b/var/spack/repos/builtin/packages/highwayhash/package.py index 8abc1cab86d..031f526cdb9 100644 --- a/var/spack/repos/builtin/packages/highwayhash/package.py +++ b/var/spack/repos/builtin/packages/highwayhash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hmmer/package.py b/var/spack/repos/builtin/packages/hmmer/package.py index 6a236e9fc91..6f152d85d61 100644 --- a/var/spack/repos/builtin/packages/hmmer/package.py +++ b/var/spack/repos/builtin/packages/hmmer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hoomd-blue/package.py b/var/spack/repos/builtin/packages/hoomd-blue/package.py index bc1ffd4d5b7..9c1ad387b2b 100644 --- a/var/spack/repos/builtin/packages/hoomd-blue/package.py +++ b/var/spack/repos/builtin/packages/hoomd-blue/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py b/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py index 86d95a1e219..dfc45296424 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index b6e03627dec..8239f51a0b5 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hpl/package.py b/var/spack/repos/builtin/packages/hpl/package.py index 166e3d8d589..460f131e6ae 100644 --- a/var/spack/repos/builtin/packages/hpl/package.py +++ b/var/spack/repos/builtin/packages/hpl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hpx5/package.py b/var/spack/repos/builtin/packages/hpx5/package.py index 55f253f4672..12e5c800160 100644 --- a/var/spack/repos/builtin/packages/hpx5/package.py +++ b/var/spack/repos/builtin/packages/hpx5/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hsakmt/package.py b/var/spack/repos/builtin/packages/hsakmt/package.py index 534d5e4c84c..2adb852a606 100644 --- a/var/spack/repos/builtin/packages/hsakmt/package.py +++ b/var/spack/repos/builtin/packages/hsakmt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hstr/package.py b/var/spack/repos/builtin/packages/hstr/package.py index 0efae70d874..ce0650e5e8b 100644 --- a/var/spack/repos/builtin/packages/hstr/package.py +++ b/var/spack/repos/builtin/packages/hstr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/htop/package.py b/var/spack/repos/builtin/packages/htop/package.py index 45dc6f31320..d88a6fe3c9e 100644 --- a/var/spack/repos/builtin/packages/htop/package.py +++ b/var/spack/repos/builtin/packages/htop/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/htslib/package.py b/var/spack/repos/builtin/packages/htslib/package.py index 8914a5c1e9b..4c033c4272b 100644 --- a/var/spack/repos/builtin/packages/htslib/package.py +++ b/var/spack/repos/builtin/packages/htslib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/httpie/package.py b/var/spack/repos/builtin/packages/httpie/package.py index 0981dc2d3d8..8068ffc9b56 100644 --- a/var/spack/repos/builtin/packages/httpie/package.py +++ b/var/spack/repos/builtin/packages/httpie/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -42,6 +42,6 @@ class Httpie(PythonPackage): depends_on('py-pysocks', type=('build', 'run'), when="+socks") # Concretization problem breaks this. Unconditional for now... # https://github.com/LLNL/spack/issues/3628 - # depends_on('py-argparse@1.2.1:', type=('build', 'run'), + # depends_on('py-argparse@1.2.1:', type=('build', 'run'), # when='^python@:2.6,3.0:3.1') depends_on('py-argparse@1.2.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/hub/package.py b/var/spack/repos/builtin/packages/hub/package.py index 5d7c0828972..c038a677615 100644 --- a/var/spack/repos/builtin/packages/hub/package.py +++ b/var/spack/repos/builtin/packages/hub/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hunspell/package.py b/var/spack/repos/builtin/packages/hunspell/package.py index 4e4cdce9487..15c1079e4d9 100644 --- a/var/spack/repos/builtin/packages/hunspell/package.py +++ b/var/spack/repos/builtin/packages/hunspell/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index b2db0b3b38c..f7ccaa4f386 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hydra/package.py b/var/spack/repos/builtin/packages/hydra/package.py index fd894b68ee1..1c1632d4184 100644 --- a/var/spack/repos/builtin/packages/hydra/package.py +++ b/var/spack/repos/builtin/packages/hydra/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index 9af1fecd8c0..8dca02d4dd6 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ibmisc/package.py b/var/spack/repos/builtin/packages/ibmisc/package.py index 181ae6d92b5..8640e5d3c5b 100644 --- a/var/spack/repos/builtin/packages/ibmisc/package.py +++ b/var/spack/repos/builtin/packages/ibmisc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/iceauth/package.py b/var/spack/repos/builtin/packages/iceauth/package.py index 6af0d0b4bb3..bd2493347b0 100644 --- a/var/spack/repos/builtin/packages/iceauth/package.py +++ b/var/spack/repos/builtin/packages/iceauth/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/icet/package.py b/var/spack/repos/builtin/packages/icet/package.py index ca3251ac404..126375c6c2a 100644 --- a/var/spack/repos/builtin/packages/icet/package.py +++ b/var/spack/repos/builtin/packages/icet/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ico/package.py b/var/spack/repos/builtin/packages/ico/package.py index 2163e8566e9..a81f004a2ec 100644 --- a/var/spack/repos/builtin/packages/ico/package.py +++ b/var/spack/repos/builtin/packages/ico/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/icu4c/package.py b/var/spack/repos/builtin/packages/icu4c/package.py index 5b69dfea0fd..f5f75931b61 100644 --- a/var/spack/repos/builtin/packages/icu4c/package.py +++ b/var/spack/repos/builtin/packages/icu4c/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/id3lib/package.py b/var/spack/repos/builtin/packages/id3lib/package.py index 0e8a40394f5..65030085de9 100644 --- a/var/spack/repos/builtin/packages/id3lib/package.py +++ b/var/spack/repos/builtin/packages/id3lib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ilmbase/package.py b/var/spack/repos/builtin/packages/ilmbase/package.py index 7f478f23415..23e77ccfa34 100644 --- a/var/spack/repos/builtin/packages/ilmbase/package.py +++ b/var/spack/repos/builtin/packages/ilmbase/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/image-magick/package.py b/var/spack/repos/builtin/packages/image-magick/package.py index 8d0804ecc94..77f7f795e7b 100644 --- a/var/spack/repos/builtin/packages/image-magick/package.py +++ b/var/spack/repos/builtin/packages/image-magick/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/imake/package.py b/var/spack/repos/builtin/packages/imake/package.py index b15a019156a..23dbd45723e 100644 --- a/var/spack/repos/builtin/packages/imake/package.py +++ b/var/spack/repos/builtin/packages/imake/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/inputproto/package.py b/var/spack/repos/builtin/packages/inputproto/package.py index 220c314ac60..b2ece2fb14c 100644 --- a/var/spack/repos/builtin/packages/inputproto/package.py +++ b/var/spack/repos/builtin/packages/inputproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/intel-daal/package.py b/var/spack/repos/builtin/packages/intel-daal/package.py index 9ccd291bcc7..7fb6371e7e5 100644 --- a/var/spack/repos/builtin/packages/intel-daal/package.py +++ b/var/spack/repos/builtin/packages/intel-daal/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py index 53a6a04e3f8..004d91e7de1 100644 --- a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py +++ b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/intel-ipp/package.py b/var/spack/repos/builtin/packages/intel-ipp/package.py index 3c247e94c71..c9cfa609c88 100644 --- a/var/spack/repos/builtin/packages/intel-ipp/package.py +++ b/var/spack/repos/builtin/packages/intel-ipp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 0cce184e471..e1b4049ef82 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py index 75aa5257aa9..d0167552b05 100644 --- a/var/spack/repos/builtin/packages/intel-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-mpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as 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 a1b59563baf..01bdf29bb24 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index 74ff4ca3258..e013811f664 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/intltool/package.py b/var/spack/repos/builtin/packages/intltool/package.py index a9e3a8a0625..c54cae1323e 100644 --- a/var/spack/repos/builtin/packages/intltool/package.py +++ b/var/spack/repos/builtin/packages/intltool/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ior/package.py b/var/spack/repos/builtin/packages/ior/package.py index 04e32d88871..ef5fa5b7be2 100644 --- a/var/spack/repos/builtin/packages/ior/package.py +++ b/var/spack/repos/builtin/packages/ior/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/iozone/package.py b/var/spack/repos/builtin/packages/iozone/package.py index 530c609f0d8..9278b881b0d 100644 --- a/var/spack/repos/builtin/packages/iozone/package.py +++ b/var/spack/repos/builtin/packages/iozone/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ipopt/package.py b/var/spack/repos/builtin/packages/ipopt/package.py index d5bc0b21a4f..77faeb80518 100644 --- a/var/spack/repos/builtin/packages/ipopt/package.py +++ b/var/spack/repos/builtin/packages/ipopt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/isaac-server/package.py b/var/spack/repos/builtin/packages/isaac-server/package.py index c88a465e21e..75e80959ac7 100644 --- a/var/spack/repos/builtin/packages/isaac-server/package.py +++ b/var/spack/repos/builtin/packages/isaac-server/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/isaac/package.py b/var/spack/repos/builtin/packages/isaac/package.py index 390006174e8..e54e00630bb 100644 --- a/var/spack/repos/builtin/packages/isaac/package.py +++ b/var/spack/repos/builtin/packages/isaac/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/isl/package.py b/var/spack/repos/builtin/packages/isl/package.py index 530864d4d37..bc7c240e1d8 100644 --- a/var/spack/repos/builtin/packages/isl/package.py +++ b/var/spack/repos/builtin/packages/isl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/itstool/package.py b/var/spack/repos/builtin/packages/itstool/package.py index c78e7404991..3aa28850060 100644 --- a/var/spack/repos/builtin/packages/itstool/package.py +++ b/var/spack/repos/builtin/packages/itstool/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/jansson/package.py b/var/spack/repos/builtin/packages/jansson/package.py index e6100607aaf..f6c9d8b799c 100644 --- a/var/spack/repos/builtin/packages/jansson/package.py +++ b/var/spack/repos/builtin/packages/jansson/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/jasper/package.py b/var/spack/repos/builtin/packages/jasper/package.py index d4bb00b39e7..ed188ca9227 100644 --- a/var/spack/repos/builtin/packages/jasper/package.py +++ b/var/spack/repos/builtin/packages/jasper/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index 9939772f470..a018529baef 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/jemalloc/package.py b/var/spack/repos/builtin/packages/jemalloc/package.py index 2f1354d1b25..82f0fbc9988 100644 --- a/var/spack/repos/builtin/packages/jemalloc/package.py +++ b/var/spack/repos/builtin/packages/jemalloc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/jmol/package.py b/var/spack/repos/builtin/packages/jmol/package.py index ec58fa844a6..3529515d3f4 100644 --- a/var/spack/repos/builtin/packages/jmol/package.py +++ b/var/spack/repos/builtin/packages/jmol/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/jpeg/package.py b/var/spack/repos/builtin/packages/jpeg/package.py index 5c45a2889c2..babb6e5f82d 100644 --- a/var/spack/repos/builtin/packages/jpeg/package.py +++ b/var/spack/repos/builtin/packages/jpeg/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/jq/package.py b/var/spack/repos/builtin/packages/jq/package.py index 28e1c4dcfb4..06abcd461fc 100644 --- a/var/spack/repos/builtin/packages/jq/package.py +++ b/var/spack/repos/builtin/packages/jq/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/json-c/package.py b/var/spack/repos/builtin/packages/json-c/package.py index d5ec92f2bd3..986538c4458 100644 --- a/var/spack/repos/builtin/packages/json-c/package.py +++ b/var/spack/repos/builtin/packages/json-c/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/jsoncpp/package.py b/var/spack/repos/builtin/packages/jsoncpp/package.py index 5169b338eed..d21b9482643 100644 --- a/var/spack/repos/builtin/packages/jsoncpp/package.py +++ b/var/spack/repos/builtin/packages/jsoncpp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/judy/package.py b/var/spack/repos/builtin/packages/judy/package.py index ddcec05c226..7e62ca3e995 100644 --- a/var/spack/repos/builtin/packages/judy/package.py +++ b/var/spack/repos/builtin/packages/judy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index ad44d026192..61ffd2efc6c 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/kaldi/package.py b/var/spack/repos/builtin/packages/kaldi/package.py index d2344d28388..c149c944cee 100644 --- a/var/spack/repos/builtin/packages/kaldi/package.py +++ b/var/spack/repos/builtin/packages/kaldi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/kbproto/package.py b/var/spack/repos/builtin/packages/kbproto/package.py index aaf4c9e1d1a..9a141cc7f30 100644 --- a/var/spack/repos/builtin/packages/kbproto/package.py +++ b/var/spack/repos/builtin/packages/kbproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/kdiff3/package.py b/var/spack/repos/builtin/packages/kdiff3/package.py index 48f4b9c3799..f03d9d00b9e 100644 --- a/var/spack/repos/builtin/packages/kdiff3/package.py +++ b/var/spack/repos/builtin/packages/kdiff3/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/kealib/package.py b/var/spack/repos/builtin/packages/kealib/package.py index 5346fc8cb98..b417c6be78f 100644 --- a/var/spack/repos/builtin/packages/kealib/package.py +++ b/var/spack/repos/builtin/packages/kealib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 00eadfa5482..2a82a4c5d64 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/kripke/package.py b/var/spack/repos/builtin/packages/kripke/package.py index cf8d2b7e391..1be19448a9b 100644 --- a/var/spack/repos/builtin/packages/kripke/package.py +++ b/var/spack/repos/builtin/packages/kripke/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 6c80873f14b..c1909451d10 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -8,7 +8,7 @@ # # For details, see https://github.com/llnl/spack # -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as # published by the Free Software Foundation) version 2.1, February 1999. diff --git a/var/spack/repos/builtin/packages/launchmon/package.py b/var/spack/repos/builtin/packages/launchmon/package.py index c7b44e35dfb..7362a68050c 100644 --- a/var/spack/repos/builtin/packages/launchmon/package.py +++ b/var/spack/repos/builtin/packages/launchmon/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index 38839c9bf0f..b79f9244c98 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lbxproxy/package.py b/var/spack/repos/builtin/packages/lbxproxy/package.py index 3895134a7ca..b7c65d72c05 100644 --- a/var/spack/repos/builtin/packages/lbxproxy/package.py +++ b/var/spack/repos/builtin/packages/lbxproxy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lcms/package.py b/var/spack/repos/builtin/packages/lcms/package.py index 5025e68c4a7..a7b8f86d5fe 100644 --- a/var/spack/repos/builtin/packages/lcms/package.py +++ b/var/spack/repos/builtin/packages/lcms/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py index 783bd417a05..79a1ee533d6 100644 --- a/var/spack/repos/builtin/packages/legion/package.py +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/leveldb/package.py b/var/spack/repos/builtin/packages/leveldb/package.py index 7d2c470b60c..ec52161b647 100644 --- a/var/spack/repos/builtin/packages/leveldb/package.py +++ b/var/spack/repos/builtin/packages/leveldb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libaio/package.py b/var/spack/repos/builtin/packages/libaio/package.py index c34ac13e609..e7f2a7487b0 100644 --- a/var/spack/repos/builtin/packages/libaio/package.py +++ b/var/spack/repos/builtin/packages/libaio/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libapplewm/package.py b/var/spack/repos/builtin/packages/libapplewm/package.py index 35091985e37..053555b5728 100644 --- a/var/spack/repos/builtin/packages/libapplewm/package.py +++ b/var/spack/repos/builtin/packages/libapplewm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py index 0edb3521d12..cc99e77278a 100644 --- a/var/spack/repos/builtin/packages/libarchive/package.py +++ b/var/spack/repos/builtin/packages/libarchive/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libassuan/package.py b/var/spack/repos/builtin/packages/libassuan/package.py index 9c53bd5e4b2..53a3bc69e5d 100644 --- a/var/spack/repos/builtin/packages/libassuan/package.py +++ b/var/spack/repos/builtin/packages/libassuan/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libatomic-ops/package.py b/var/spack/repos/builtin/packages/libatomic-ops/package.py index 74f95079e1a..56005092121 100644 --- a/var/spack/repos/builtin/packages/libatomic-ops/package.py +++ b/var/spack/repos/builtin/packages/libatomic-ops/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libbson/package.py b/var/spack/repos/builtin/packages/libbson/package.py index 4f5b9011e9f..1eaa1c9b78c 100644 --- a/var/spack/repos/builtin/packages/libbson/package.py +++ b/var/spack/repos/builtin/packages/libbson/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libcanberra/package.py b/var/spack/repos/builtin/packages/libcanberra/package.py index dfeb5c9c3e9..840cdc4de30 100644 --- a/var/spack/repos/builtin/packages/libcanberra/package.py +++ b/var/spack/repos/builtin/packages/libcanberra/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libcap/package.py b/var/spack/repos/builtin/packages/libcap/package.py index a0e3065c882..b5b25069a3b 100644 --- a/var/spack/repos/builtin/packages/libcap/package.py +++ b/var/spack/repos/builtin/packages/libcap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libcerf/package.py b/var/spack/repos/builtin/packages/libcerf/package.py index 82637431d64..8d75ab3a28c 100644 --- a/var/spack/repos/builtin/packages/libcerf/package.py +++ b/var/spack/repos/builtin/packages/libcerf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libcircle/package.py b/var/spack/repos/builtin/packages/libcircle/package.py index e1063292190..ec9eb762383 100644 --- a/var/spack/repos/builtin/packages/libcircle/package.py +++ b/var/spack/repos/builtin/packages/libcircle/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libconfig/package.py b/var/spack/repos/builtin/packages/libconfig/package.py index 54aeec5b2f5..76bf314f092 100644 --- a/var/spack/repos/builtin/packages/libconfig/package.py +++ b/var/spack/repos/builtin/packages/libconfig/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libctl/package.py b/var/spack/repos/builtin/packages/libctl/package.py index 7357939c1b2..1364b5de0ec 100644 --- a/var/spack/repos/builtin/packages/libctl/package.py +++ b/var/spack/repos/builtin/packages/libctl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libdivsufsort/package.py b/var/spack/repos/builtin/packages/libdivsufsort/package.py index 88355f87255..df51b7c37e8 100644 --- a/var/spack/repos/builtin/packages/libdivsufsort/package.py +++ b/var/spack/repos/builtin/packages/libdivsufsort/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libdmx/package.py b/var/spack/repos/builtin/packages/libdmx/package.py index 2aeb5b9fbb3..5c4106ca64a 100644 --- a/var/spack/repos/builtin/packages/libdmx/package.py +++ b/var/spack/repos/builtin/packages/libdmx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libdrm/package.py b/var/spack/repos/builtin/packages/libdrm/package.py index 781e7928846..00422b44170 100644 --- a/var/spack/repos/builtin/packages/libdrm/package.py +++ b/var/spack/repos/builtin/packages/libdrm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libdwarf/package.py b/var/spack/repos/builtin/packages/libdwarf/package.py index 153b243e989..32144e96ba5 100644 --- a/var/spack/repos/builtin/packages/libdwarf/package.py +++ b/var/spack/repos/builtin/packages/libdwarf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -52,11 +52,9 @@ class Libdwarf(Package): parallel = False - def patch(self): filter_file(r'^typedef struct Elf Elf;$', '', 'libdwarf/libdwarf.h.in') - def install(self, spec, prefix): # elfutils contains a dwarf.h that conflicts with libdwarf's diff --git a/var/spack/repos/builtin/packages/libedit/package.py b/var/spack/repos/builtin/packages/libedit/package.py index 8b09436921f..4fd61ec6c86 100644 --- a/var/spack/repos/builtin/packages/libedit/package.py +++ b/var/spack/repos/builtin/packages/libedit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libelf/package.py b/var/spack/repos/builtin/packages/libelf/package.py index 68db7b99c25..965c6110492 100644 --- a/var/spack/repos/builtin/packages/libelf/package.py +++ b/var/spack/repos/builtin/packages/libelf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libemos/package.py b/var/spack/repos/builtin/packages/libemos/package.py index 9670e7529e8..371a8437b73 100644 --- a/var/spack/repos/builtin/packages/libemos/package.py +++ b/var/spack/repos/builtin/packages/libemos/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libepoxy/package.py b/var/spack/repos/builtin/packages/libepoxy/package.py index 32c95fdda42..705d82890a6 100644 --- a/var/spack/repos/builtin/packages/libepoxy/package.py +++ b/var/spack/repos/builtin/packages/libepoxy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libevent/package.py b/var/spack/repos/builtin/packages/libevent/package.py index f06c46a7159..93711491fae 100644 --- a/var/spack/repos/builtin/packages/libevent/package.py +++ b/var/spack/repos/builtin/packages/libevent/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libffi/package.py b/var/spack/repos/builtin/packages/libffi/package.py index 79ba50d77a2..67369447c96 100644 --- a/var/spack/repos/builtin/packages/libffi/package.py +++ b/var/spack/repos/builtin/packages/libffi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libfontenc/package.py b/var/spack/repos/builtin/packages/libfontenc/package.py index 945f74ccad3..d80c5bde6ed 100644 --- a/var/spack/repos/builtin/packages/libfontenc/package.py +++ b/var/spack/repos/builtin/packages/libfontenc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libfs/package.py b/var/spack/repos/builtin/packages/libfs/package.py index 96cb396b0ae..462d925a359 100644 --- a/var/spack/repos/builtin/packages/libfs/package.py +++ b/var/spack/repos/builtin/packages/libfs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libgcrypt/package.py b/var/spack/repos/builtin/packages/libgcrypt/package.py index b196adc18b9..31ab85c0eef 100644 --- a/var/spack/repos/builtin/packages/libgcrypt/package.py +++ b/var/spack/repos/builtin/packages/libgcrypt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py index d3cb549f4c6..6f6c43d9f00 100644 --- a/var/spack/repos/builtin/packages/libgd/package.py +++ b/var/spack/repos/builtin/packages/libgd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libgit2/package.py b/var/spack/repos/builtin/packages/libgit2/package.py index d3163e39230..ae53612ce61 100644 --- a/var/spack/repos/builtin/packages/libgit2/package.py +++ b/var/spack/repos/builtin/packages/libgit2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libgpg-error/package.py b/var/spack/repos/builtin/packages/libgpg-error/package.py index e0565f2c4cf..3d12c235d3e 100644 --- a/var/spack/repos/builtin/packages/libgpg-error/package.py +++ b/var/spack/repos/builtin/packages/libgpg-error/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libgpuarray/package.py b/var/spack/repos/builtin/packages/libgpuarray/package.py index 73cbc333853..0c42e90f16c 100644 --- a/var/spack/repos/builtin/packages/libgpuarray/package.py +++ b/var/spack/repos/builtin/packages/libgpuarray/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libgtextutils/package.py b/var/spack/repos/builtin/packages/libgtextutils/package.py index adecc6c7f72..830e441316d 100644 --- a/var/spack/repos/builtin/packages/libgtextutils/package.py +++ b/var/spack/repos/builtin/packages/libgtextutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libharu/package.py b/var/spack/repos/builtin/packages/libharu/package.py index 54477fc7b5b..a262a0badcf 100644 --- a/var/spack/repos/builtin/packages/libharu/package.py +++ b/var/spack/repos/builtin/packages/libharu/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libhio/package.py b/var/spack/repos/builtin/packages/libhio/package.py index d26811daf77..12ef32cd90d 100644 --- a/var/spack/repos/builtin/packages/libhio/package.py +++ b/var/spack/repos/builtin/packages/libhio/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libice/package.py b/var/spack/repos/builtin/packages/libice/package.py index 36436df501c..b11bca16b47 100644 --- a/var/spack/repos/builtin/packages/libice/package.py +++ b/var/spack/repos/builtin/packages/libice/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py index 571088c562e..4bc2f526493 100644 --- a/var/spack/repos/builtin/packages/libiconv/package.py +++ b/var/spack/repos/builtin/packages/libiconv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py index 569aa68b68a..3853d2c57f7 100644 --- a/var/spack/repos/builtin/packages/libint/package.py +++ b/var/spack/repos/builtin/packages/libint/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py index 8b9413bc86b..3573390b7d9 100644 --- a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py +++ b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libksba/package.py b/var/spack/repos/builtin/packages/libksba/package.py index ab9bcedc27e..b796e7a5628 100644 --- a/var/spack/repos/builtin/packages/libksba/package.py +++ b/var/spack/repos/builtin/packages/libksba/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/liblbxutil/package.py b/var/spack/repos/builtin/packages/liblbxutil/package.py index fe1be09cf97..0cd4c5767bd 100644 --- a/var/spack/repos/builtin/packages/liblbxutil/package.py +++ b/var/spack/repos/builtin/packages/liblbxutil/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libmatheval/package.py b/var/spack/repos/builtin/packages/libmatheval/package.py index 7af0a2e52a1..a13c9000de0 100644 --- a/var/spack/repos/builtin/packages/libmatheval/package.py +++ b/var/spack/repos/builtin/packages/libmatheval/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libmesh/package.py b/var/spack/repos/builtin/packages/libmesh/package.py index 6ceef8dbf63..5cad209597d 100644 --- a/var/spack/repos/builtin/packages/libmesh/package.py +++ b/var/spack/repos/builtin/packages/libmesh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libmng/package.py b/var/spack/repos/builtin/packages/libmng/package.py index f1c451902c1..dca8c03aa06 100644 --- a/var/spack/repos/builtin/packages/libmng/package.py +++ b/var/spack/repos/builtin/packages/libmng/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libmongoc/package.py b/var/spack/repos/builtin/packages/libmongoc/package.py index c7a53a4a42c..57854d7ae8a 100644 --- a/var/spack/repos/builtin/packages/libmongoc/package.py +++ b/var/spack/repos/builtin/packages/libmongoc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libmonitor/package.py b/var/spack/repos/builtin/packages/libmonitor/package.py index 26a87c78fa4..42410de82d0 100644 --- a/var/spack/repos/builtin/packages/libmonitor/package.py +++ b/var/spack/repos/builtin/packages/libmonitor/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libnbc/package.py b/var/spack/repos/builtin/packages/libnbc/package.py index e135fa6835e..0fdd0d92348 100644 --- a/var/spack/repos/builtin/packages/libnbc/package.py +++ b/var/spack/repos/builtin/packages/libnbc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libogg/package.py b/var/spack/repos/builtin/packages/libogg/package.py index bb80764b7cd..2b53900f49e 100644 --- a/var/spack/repos/builtin/packages/libogg/package.py +++ b/var/spack/repos/builtin/packages/libogg/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/liboldx/package.py b/var/spack/repos/builtin/packages/liboldx/package.py index 1bec00bfe37..d89af8d70f0 100644 --- a/var/spack/repos/builtin/packages/liboldx/package.py +++ b/var/spack/repos/builtin/packages/liboldx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libpciaccess/package.py b/var/spack/repos/builtin/packages/libpciaccess/package.py index ec75c0993be..7cbeebd2fc0 100644 --- a/var/spack/repos/builtin/packages/libpciaccess/package.py +++ b/var/spack/repos/builtin/packages/libpciaccess/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libpfm4/package.py b/var/spack/repos/builtin/packages/libpfm4/package.py index c7463afeeb8..858a68b953e 100644 --- a/var/spack/repos/builtin/packages/libpfm4/package.py +++ b/var/spack/repos/builtin/packages/libpfm4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libpng/package.py b/var/spack/repos/builtin/packages/libpng/package.py index d4141851ae8..a78f9648413 100644 --- a/var/spack/repos/builtin/packages/libpng/package.py +++ b/var/spack/repos/builtin/packages/libpng/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libpsl/package.py b/var/spack/repos/builtin/packages/libpsl/package.py index 3a545f6f180..b3c029b78c6 100644 --- a/var/spack/repos/builtin/packages/libpsl/package.py +++ b/var/spack/repos/builtin/packages/libpsl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libpthread-stubs/package.py b/var/spack/repos/builtin/packages/libpthread-stubs/package.py index d1dab82e705..536f80471d3 100644 --- a/var/spack/repos/builtin/packages/libpthread-stubs/package.py +++ b/var/spack/repos/builtin/packages/libpthread-stubs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libquo/package.py b/var/spack/repos/builtin/packages/libquo/package.py index 76a508f9c61..653e0334599 100644 --- a/var/spack/repos/builtin/packages/libquo/package.py +++ b/var/spack/repos/builtin/packages/libquo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libsigsegv/package.py b/var/spack/repos/builtin/packages/libsigsegv/package.py index 8104de6072d..67a94b28959 100644 --- a/var/spack/repos/builtin/packages/libsigsegv/package.py +++ b/var/spack/repos/builtin/packages/libsigsegv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libsm/package.py b/var/spack/repos/builtin/packages/libsm/package.py index 9479da07d7a..2a8be064867 100644 --- a/var/spack/repos/builtin/packages/libsm/package.py +++ b/var/spack/repos/builtin/packages/libsm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libsodium/package.py b/var/spack/repos/builtin/packages/libsodium/package.py index 6d21d65345d..d8d6b4d7bb1 100644 --- a/var/spack/repos/builtin/packages/libsodium/package.py +++ b/var/spack/repos/builtin/packages/libsodium/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libspatialindex/package.py b/var/spack/repos/builtin/packages/libspatialindex/package.py index 5dd839a7c37..7790c8dab2f 100644 --- a/var/spack/repos/builtin/packages/libspatialindex/package.py +++ b/var/spack/repos/builtin/packages/libspatialindex/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libsplash/package.py b/var/spack/repos/builtin/packages/libsplash/package.py index 61ead25177b..2a0d2dfb095 100644 --- a/var/spack/repos/builtin/packages/libsplash/package.py +++ b/var/spack/repos/builtin/packages/libsplash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libssh2/package.py b/var/spack/repos/builtin/packages/libssh2/package.py index 2c582b477e6..c5978f06889 100644 --- a/var/spack/repos/builtin/packages/libssh2/package.py +++ b/var/spack/repos/builtin/packages/libssh2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -32,7 +32,7 @@ class Libssh2(CMakePackage): url = "https://www.libssh2.org/download/libssh2-1.7.0.tar.gz" version('1.7.0', 'b01662a210e94cccf2f76094db7dac5c') - version('1.4.3', '071004c60c5d6f90354ad1b701013a0b') # CentOS7 + version('1.4.3', '071004c60c5d6f90354ad1b701013a0b') # CentOS7 variant('shared', default=True, description="Build shared libraries") diff --git a/var/spack/repos/builtin/packages/libtermkey/package.py b/var/spack/repos/builtin/packages/libtermkey/package.py index 359e0772843..40a17c1c3e9 100644 --- a/var/spack/repos/builtin/packages/libtermkey/package.py +++ b/var/spack/repos/builtin/packages/libtermkey/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libtiff/package.py b/var/spack/repos/builtin/packages/libtiff/package.py index de5b577c471..2fcccad7398 100644 --- a/var/spack/repos/builtin/packages/libtiff/package.py +++ b/var/spack/repos/builtin/packages/libtiff/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libtool/package.py b/var/spack/repos/builtin/packages/libtool/package.py index f0a7de37981..662859d52ef 100644 --- a/var/spack/repos/builtin/packages/libtool/package.py +++ b/var/spack/repos/builtin/packages/libtool/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libunistring/package.py b/var/spack/repos/builtin/packages/libunistring/package.py index 1037a0ed3f9..296788a2c32 100644 --- a/var/spack/repos/builtin/packages/libunistring/package.py +++ b/var/spack/repos/builtin/packages/libunistring/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py index 1e727f84f37..79e5d35061b 100644 --- a/var/spack/repos/builtin/packages/libunwind/package.py +++ b/var/spack/repos/builtin/packages/libunwind/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libuuid/package.py b/var/spack/repos/builtin/packages/libuuid/package.py index 31f109cba3b..b7eefdb1f08 100644 --- a/var/spack/repos/builtin/packages/libuuid/package.py +++ b/var/spack/repos/builtin/packages/libuuid/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libuv/package.py b/var/spack/repos/builtin/packages/libuv/package.py index 2f303280daf..784034d96c8 100644 --- a/var/spack/repos/builtin/packages/libuv/package.py +++ b/var/spack/repos/builtin/packages/libuv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libvorbis/package.py b/var/spack/repos/builtin/packages/libvorbis/package.py index e716abe46dc..2e25a5c2308 100644 --- a/var/spack/repos/builtin/packages/libvorbis/package.py +++ b/var/spack/repos/builtin/packages/libvorbis/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libvterm/package.py b/var/spack/repos/builtin/packages/libvterm/package.py index 2e1ef99b98e..651b59be534 100644 --- a/var/spack/repos/builtin/packages/libvterm/package.py +++ b/var/spack/repos/builtin/packages/libvterm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libwebsockets/package.py b/var/spack/repos/builtin/packages/libwebsockets/package.py index 3ce58a4c369..d74ff722731 100644 --- a/var/spack/repos/builtin/packages/libwebsockets/package.py +++ b/var/spack/repos/builtin/packages/libwebsockets/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libwindowswm/package.py b/var/spack/repos/builtin/packages/libwindowswm/package.py index 5b331f428cb..82cc3f84b02 100644 --- a/var/spack/repos/builtin/packages/libwindowswm/package.py +++ b/var/spack/repos/builtin/packages/libwindowswm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libx11/package.py b/var/spack/repos/builtin/packages/libx11/package.py index 4df1ef07ce3..74f9618212b 100644 --- a/var/spack/repos/builtin/packages/libx11/package.py +++ b/var/spack/repos/builtin/packages/libx11/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxau/package.py b/var/spack/repos/builtin/packages/libxau/package.py index bf4e9f5e4eb..546f25171e6 100644 --- a/var/spack/repos/builtin/packages/libxau/package.py +++ b/var/spack/repos/builtin/packages/libxau/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxaw/package.py b/var/spack/repos/builtin/packages/libxaw/package.py index f3779be7ed3..a160444b388 100644 --- a/var/spack/repos/builtin/packages/libxaw/package.py +++ b/var/spack/repos/builtin/packages/libxaw/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxaw3d/package.py b/var/spack/repos/builtin/packages/libxaw3d/package.py index 0e350aa2ce3..aa76aef6749 100644 --- a/var/spack/repos/builtin/packages/libxaw3d/package.py +++ b/var/spack/repos/builtin/packages/libxaw3d/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py index ab9f75eac42..f018bacfa3e 100644 --- a/var/spack/repos/builtin/packages/libxc/package.py +++ b/var/spack/repos/builtin/packages/libxc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxcb/package.py b/var/spack/repos/builtin/packages/libxcb/package.py index 3c77e045b7f..73a3f718c60 100644 --- a/var/spack/repos/builtin/packages/libxcb/package.py +++ b/var/spack/repos/builtin/packages/libxcb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxcomposite/package.py b/var/spack/repos/builtin/packages/libxcomposite/package.py index 30d3a4c0cae..c540c35f26a 100644 --- a/var/spack/repos/builtin/packages/libxcomposite/package.py +++ b/var/spack/repos/builtin/packages/libxcomposite/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxcursor/package.py b/var/spack/repos/builtin/packages/libxcursor/package.py index ee5065bfa4f..1c931b4d726 100644 --- a/var/spack/repos/builtin/packages/libxcursor/package.py +++ b/var/spack/repos/builtin/packages/libxcursor/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxdamage/package.py b/var/spack/repos/builtin/packages/libxdamage/package.py index 4eca877421f..95f6dd498ed 100644 --- a/var/spack/repos/builtin/packages/libxdamage/package.py +++ b/var/spack/repos/builtin/packages/libxdamage/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxdmcp/package.py b/var/spack/repos/builtin/packages/libxdmcp/package.py index 7c4fd068f0d..9ff35638f31 100644 --- a/var/spack/repos/builtin/packages/libxdmcp/package.py +++ b/var/spack/repos/builtin/packages/libxdmcp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxevie/package.py b/var/spack/repos/builtin/packages/libxevie/package.py index 7435027b48b..8c9e0049de6 100644 --- a/var/spack/repos/builtin/packages/libxevie/package.py +++ b/var/spack/repos/builtin/packages/libxevie/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxext/package.py b/var/spack/repos/builtin/packages/libxext/package.py index 528f00cc357..36c712b1535 100644 --- a/var/spack/repos/builtin/packages/libxext/package.py +++ b/var/spack/repos/builtin/packages/libxext/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxfixes/package.py b/var/spack/repos/builtin/packages/libxfixes/package.py index 6add3bb56d9..87e037286e6 100644 --- a/var/spack/repos/builtin/packages/libxfixes/package.py +++ b/var/spack/repos/builtin/packages/libxfixes/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxfont/package.py b/var/spack/repos/builtin/packages/libxfont/package.py index 7538c34f078..eee73dde014 100644 --- a/var/spack/repos/builtin/packages/libxfont/package.py +++ b/var/spack/repos/builtin/packages/libxfont/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxfont2/package.py b/var/spack/repos/builtin/packages/libxfont2/package.py index bc1dc06dd03..9b4e7e463d1 100644 --- a/var/spack/repos/builtin/packages/libxfont2/package.py +++ b/var/spack/repos/builtin/packages/libxfont2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxfontcache/package.py b/var/spack/repos/builtin/packages/libxfontcache/package.py index c4a4d5675a8..ad4bfceb77c 100644 --- a/var/spack/repos/builtin/packages/libxfontcache/package.py +++ b/var/spack/repos/builtin/packages/libxfontcache/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxft/package.py b/var/spack/repos/builtin/packages/libxft/package.py index 8385b4168a6..405c29883c1 100644 --- a/var/spack/repos/builtin/packages/libxft/package.py +++ b/var/spack/repos/builtin/packages/libxft/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxi/package.py b/var/spack/repos/builtin/packages/libxi/package.py index 5334ef9044c..c6821c00aa2 100644 --- a/var/spack/repos/builtin/packages/libxi/package.py +++ b/var/spack/repos/builtin/packages/libxi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxinerama/package.py b/var/spack/repos/builtin/packages/libxinerama/package.py index 9e3633629a5..2deb6df2f2b 100644 --- a/var/spack/repos/builtin/packages/libxinerama/package.py +++ b/var/spack/repos/builtin/packages/libxinerama/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxkbfile/package.py b/var/spack/repos/builtin/packages/libxkbfile/package.py index daafa8dd654..5a15ebe7a4e 100644 --- a/var/spack/repos/builtin/packages/libxkbfile/package.py +++ b/var/spack/repos/builtin/packages/libxkbfile/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxkbui/package.py b/var/spack/repos/builtin/packages/libxkbui/package.py index b6a40b656d2..47827831111 100644 --- a/var/spack/repos/builtin/packages/libxkbui/package.py +++ b/var/spack/repos/builtin/packages/libxkbui/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index 6a9e6e65100..f3601aa2b5e 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxmu/package.py b/var/spack/repos/builtin/packages/libxmu/package.py index 937cf750133..a18cf345636 100644 --- a/var/spack/repos/builtin/packages/libxmu/package.py +++ b/var/spack/repos/builtin/packages/libxmu/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxp/package.py b/var/spack/repos/builtin/packages/libxp/package.py index 95d4bfa2f80..bf405e9acee 100644 --- a/var/spack/repos/builtin/packages/libxp/package.py +++ b/var/spack/repos/builtin/packages/libxp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxpm/package.py b/var/spack/repos/builtin/packages/libxpm/package.py index b0a00cdb7ed..09d0b0ec617 100644 --- a/var/spack/repos/builtin/packages/libxpm/package.py +++ b/var/spack/repos/builtin/packages/libxpm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxpresent/package.py b/var/spack/repos/builtin/packages/libxpresent/package.py index 5237b164a0f..eb2e037af2e 100644 --- a/var/spack/repos/builtin/packages/libxpresent/package.py +++ b/var/spack/repos/builtin/packages/libxpresent/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxprintapputil/package.py b/var/spack/repos/builtin/packages/libxprintapputil/package.py index ef1963c3006..4a5b7f29a93 100644 --- a/var/spack/repos/builtin/packages/libxprintapputil/package.py +++ b/var/spack/repos/builtin/packages/libxprintapputil/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxprintutil/package.py b/var/spack/repos/builtin/packages/libxprintutil/package.py index b55123a3979..d464c430a4a 100644 --- a/var/spack/repos/builtin/packages/libxprintutil/package.py +++ b/var/spack/repos/builtin/packages/libxprintutil/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxrandr/package.py b/var/spack/repos/builtin/packages/libxrandr/package.py index 773be3ab8bf..a9709ff90ca 100644 --- a/var/spack/repos/builtin/packages/libxrandr/package.py +++ b/var/spack/repos/builtin/packages/libxrandr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxrender/package.py b/var/spack/repos/builtin/packages/libxrender/package.py index 1775dd83b3b..9ef9e1a78a8 100644 --- a/var/spack/repos/builtin/packages/libxrender/package.py +++ b/var/spack/repos/builtin/packages/libxrender/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxres/package.py b/var/spack/repos/builtin/packages/libxres/package.py index c8a77403466..f6593fad0bb 100644 --- a/var/spack/repos/builtin/packages/libxres/package.py +++ b/var/spack/repos/builtin/packages/libxres/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxscrnsaver/package.py b/var/spack/repos/builtin/packages/libxscrnsaver/package.py index 14f3aa0f04c..97b293796f6 100644 --- a/var/spack/repos/builtin/packages/libxscrnsaver/package.py +++ b/var/spack/repos/builtin/packages/libxscrnsaver/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxshmfence/package.py b/var/spack/repos/builtin/packages/libxshmfence/package.py index 63604865bde..c8b2e60a7cd 100644 --- a/var/spack/repos/builtin/packages/libxshmfence/package.py +++ b/var/spack/repos/builtin/packages/libxshmfence/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxslt/package.py b/var/spack/repos/builtin/packages/libxslt/package.py index 3396f10242d..53c04385080 100644 --- a/var/spack/repos/builtin/packages/libxslt/package.py +++ b/var/spack/repos/builtin/packages/libxslt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py index eb9bf123509..4901f539f32 100644 --- a/var/spack/repos/builtin/packages/libxsmm/package.py +++ b/var/spack/repos/builtin/packages/libxsmm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxstream/package.py b/var/spack/repos/builtin/packages/libxstream/package.py index 0996e6b9e80..ab0c07edbea 100644 --- a/var/spack/repos/builtin/packages/libxstream/package.py +++ b/var/spack/repos/builtin/packages/libxstream/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxt/package.py b/var/spack/repos/builtin/packages/libxt/package.py index 1bab6854d95..0dbe2dc45e0 100644 --- a/var/spack/repos/builtin/packages/libxt/package.py +++ b/var/spack/repos/builtin/packages/libxt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxtrap/package.py b/var/spack/repos/builtin/packages/libxtrap/package.py index 2b22fb1679c..e678b3ae1d8 100644 --- a/var/spack/repos/builtin/packages/libxtrap/package.py +++ b/var/spack/repos/builtin/packages/libxtrap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxtst/package.py b/var/spack/repos/builtin/packages/libxtst/package.py index aaff481afc4..c815af7d2c2 100644 --- a/var/spack/repos/builtin/packages/libxtst/package.py +++ b/var/spack/repos/builtin/packages/libxtst/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxv/package.py b/var/spack/repos/builtin/packages/libxv/package.py index 2662da86474..220171ef3b0 100644 --- a/var/spack/repos/builtin/packages/libxv/package.py +++ b/var/spack/repos/builtin/packages/libxv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxvmc/package.py b/var/spack/repos/builtin/packages/libxvmc/package.py index 8492f660a40..6ce97ed625e 100644 --- a/var/spack/repos/builtin/packages/libxvmc/package.py +++ b/var/spack/repos/builtin/packages/libxvmc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxxf86dga/package.py b/var/spack/repos/builtin/packages/libxxf86dga/package.py index 501a40705fd..4650264aed8 100644 --- a/var/spack/repos/builtin/packages/libxxf86dga/package.py +++ b/var/spack/repos/builtin/packages/libxxf86dga/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxxf86misc/package.py b/var/spack/repos/builtin/packages/libxxf86misc/package.py index 8e6f743183d..5a6c1f33f69 100644 --- a/var/spack/repos/builtin/packages/libxxf86misc/package.py +++ b/var/spack/repos/builtin/packages/libxxf86misc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libxxf86vm/package.py b/var/spack/repos/builtin/packages/libxxf86vm/package.py index 6f91c62a2d2..b85eb07862a 100644 --- a/var/spack/repos/builtin/packages/libxxf86vm/package.py +++ b/var/spack/repos/builtin/packages/libxxf86vm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/libzip/package.py b/var/spack/repos/builtin/packages/libzip/package.py index e3dc9ab2bbe..073b8df36f2 100644 --- a/var/spack/repos/builtin/packages/libzip/package.py +++ b/var/spack/repos/builtin/packages/libzip/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py index 8d1687a11ab..70cde61edfb 100644 --- a/var/spack/repos/builtin/packages/likwid/package.py +++ b/var/spack/repos/builtin/packages/likwid/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/linux-headers/package.py b/var/spack/repos/builtin/packages/linux-headers/package.py index 6acb0d6dc18..b996192e675 100644 --- a/var/spack/repos/builtin/packages/linux-headers/package.py +++ b/var/spack/repos/builtin/packages/linux-headers/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/listres/package.py b/var/spack/repos/builtin/packages/listres/package.py index 3727ddc0b49..c654945728b 100644 --- a/var/spack/repos/builtin/packages/listres/package.py +++ b/var/spack/repos/builtin/packages/listres/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/llvm-lld/package.py b/var/spack/repos/builtin/packages/llvm-lld/package.py index 6a167cca33c..4624451e69b 100644 --- a/var/spack/repos/builtin/packages/llvm-lld/package.py +++ b/var/spack/repos/builtin/packages/llvm-lld/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py index 7cc42e0f282..3479b08bc5d 100644 --- a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py +++ b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -40,7 +40,7 @@ class LlvmOpenmpOmpt(Package): # align-to-tr-rebased branch version('3.9.2b', git='https://github.com/OpenMPToolsInterface/LLVM-openmp.git', - commit='982a08bcf3df9fb5afc04ac3bada47f19cc4e3d3') + commit='982a08bcf3df9fb5afc04ac3bada47f19cc4e3d3') depends_on('cmake', type='build') depends_on('llvm') diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 868e3367787..1f88d948820 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lmdb/package.py b/var/spack/repos/builtin/packages/lmdb/package.py index 8c6c23d8dcb..5a0aef35a4a 100644 --- a/var/spack/repos/builtin/packages/lmdb/package.py +++ b/var/spack/repos/builtin/packages/lmdb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 89a5ba34122..08a01647a4a 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lndir/package.py b/var/spack/repos/builtin/packages/lndir/package.py index ce3a199fe2a..51b0a09228d 100644 --- a/var/spack/repos/builtin/packages/lndir/package.py +++ b/var/spack/repos/builtin/packages/lndir/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/log4cxx/package.py b/var/spack/repos/builtin/packages/log4cxx/package.py index b6611544dff..14715f36cfd 100644 --- a/var/spack/repos/builtin/packages/log4cxx/package.py +++ b/var/spack/repos/builtin/packages/log4cxx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lrslib/package.py b/var/spack/repos/builtin/packages/lrslib/package.py index 3825867bb66..19e44b911f6 100644 --- a/var/spack/repos/builtin/packages/lrslib/package.py +++ b/var/spack/repos/builtin/packages/lrslib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lrzip/package.py b/var/spack/repos/builtin/packages/lrzip/package.py index 42542acfdbf..73941adf8d1 100644 --- a/var/spack/repos/builtin/packages/lrzip/package.py +++ b/var/spack/repos/builtin/packages/lrzip/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lua-jit/package.py b/var/spack/repos/builtin/packages/lua-jit/package.py index 5f7de8ff06b..c32226dd12f 100644 --- a/var/spack/repos/builtin/packages/lua-jit/package.py +++ b/var/spack/repos/builtin/packages/lua-jit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lua-luafilesystem/package.py b/var/spack/repos/builtin/packages/lua-luafilesystem/package.py index 7a5c90f36f0..806d0d2cd7f 100644 --- a/var/spack/repos/builtin/packages/lua-luafilesystem/package.py +++ b/var/spack/repos/builtin/packages/lua-luafilesystem/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lua-luaposix/package.py b/var/spack/repos/builtin/packages/lua-luaposix/package.py index 3803a938c84..120a871e265 100644 --- a/var/spack/repos/builtin/packages/lua-luaposix/package.py +++ b/var/spack/repos/builtin/packages/lua-luaposix/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index b0d8b699433..0680e1a3b50 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/luit/package.py b/var/spack/repos/builtin/packages/luit/package.py index 54fd740bdc3..b016d0eaa7a 100644 --- a/var/spack/repos/builtin/packages/luit/package.py +++ b/var/spack/repos/builtin/packages/luit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lulesh/package.py b/var/spack/repos/builtin/packages/lulesh/package.py index e880d4fa143..6a07976377e 100644 --- a/var/spack/repos/builtin/packages/lulesh/package.py +++ b/var/spack/repos/builtin/packages/lulesh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lwgrp/package.py b/var/spack/repos/builtin/packages/lwgrp/package.py index 169f7540be8..de446930988 100644 --- a/var/spack/repos/builtin/packages/lwgrp/package.py +++ b/var/spack/repos/builtin/packages/lwgrp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lwm2/package.py b/var/spack/repos/builtin/packages/lwm2/package.py index 03cb6342716..d96a9e1c0d9 100644 --- a/var/spack/repos/builtin/packages/lwm2/package.py +++ b/var/spack/repos/builtin/packages/lwm2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lz4/package.py b/var/spack/repos/builtin/packages/lz4/package.py index 85299419196..c7a46be3ff8 100644 --- a/var/spack/repos/builtin/packages/lz4/package.py +++ b/var/spack/repos/builtin/packages/lz4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lzma/package.py b/var/spack/repos/builtin/packages/lzma/package.py index 3eb97a2d9f0..577f35e4cfe 100644 --- a/var/spack/repos/builtin/packages/lzma/package.py +++ b/var/spack/repos/builtin/packages/lzma/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/lzo/package.py b/var/spack/repos/builtin/packages/lzo/package.py index e9c98842f4e..98cbadbfb74 100644 --- a/var/spack/repos/builtin/packages/lzo/package.py +++ b/var/spack/repos/builtin/packages/lzo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index 33929eea6f2..c01828d720f 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mad-numdiff/package.py b/var/spack/repos/builtin/packages/mad-numdiff/package.py index 45252b2a965..4d0c9c1ef73 100644 --- a/var/spack/repos/builtin/packages/mad-numdiff/package.py +++ b/var/spack/repos/builtin/packages/mad-numdiff/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mafft/package.py b/var/spack/repos/builtin/packages/mafft/package.py index 131b8c58f9d..47d05af711a 100644 --- a/var/spack/repos/builtin/packages/mafft/package.py +++ b/var/spack/repos/builtin/packages/mafft/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index 1b3e3e87bf8..d69dedf3eaf 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py index c45974c7c64..74f265e329d 100644 --- a/var/spack/repos/builtin/packages/magma/package.py +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/makedepend/package.py b/var/spack/repos/builtin/packages/makedepend/package.py index 68be988d82f..e1b254be1ce 100644 --- a/var/spack/repos/builtin/packages/makedepend/package.py +++ b/var/spack/repos/builtin/packages/makedepend/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mallocmc/package.py b/var/spack/repos/builtin/packages/mallocmc/package.py index 0e533b3e10d..3134a3c1e69 100644 --- a/var/spack/repos/builtin/packages/mallocmc/package.py +++ b/var/spack/repos/builtin/packages/mallocmc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mariadb/package.py b/var/spack/repos/builtin/packages/mariadb/package.py index 6313d100528..6374fdb8d37 100644 --- a/var/spack/repos/builtin/packages/mariadb/package.py +++ b/var/spack/repos/builtin/packages/mariadb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/matio/package.py b/var/spack/repos/builtin/packages/matio/package.py index 3c48b8f3fc0..eb8c517e635 100644 --- a/var/spack/repos/builtin/packages/matio/package.py +++ b/var/spack/repos/builtin/packages/matio/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -39,7 +39,6 @@ class Matio(AutotoolsPackage): description='support for version 7.3 mat files via hdf5') variant("shared", default=True, description='Enables the build of shared libraries.') - depends_on("zlib", when="+zlib") depends_on("hdf5", when="+hdf5") diff --git a/var/spack/repos/builtin/packages/matlab/package.py b/var/spack/repos/builtin/packages/matlab/package.py index 589116b08b7..4d2b91546ef 100644 --- a/var/spack/repos/builtin/packages/matlab/package.py +++ b/var/spack/repos/builtin/packages/matlab/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/maven/package.py b/var/spack/repos/builtin/packages/maven/package.py index 60c9e387cbb..347f05a7644 100644 --- a/var/spack/repos/builtin/packages/maven/package.py +++ b/var/spack/repos/builtin/packages/maven/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mawk/package.py b/var/spack/repos/builtin/packages/mawk/package.py index d13bbe0f7b9..872fcbe1011 100644 --- a/var/spack/repos/builtin/packages/mawk/package.py +++ b/var/spack/repos/builtin/packages/mawk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py index 493ea59f0b4..b93b82abd0f 100644 --- a/var/spack/repos/builtin/packages/mbedtls/package.py +++ b/var/spack/repos/builtin/packages/mbedtls/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mdtest/package.py b/var/spack/repos/builtin/packages/mdtest/package.py index 06f3949bbe0..a77494b9b63 100644 --- a/var/spack/repos/builtin/packages/mdtest/package.py +++ b/var/spack/repos/builtin/packages/mdtest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,8 +26,8 @@ class Mdtest(Package): - """mdtest is an MPI-coordinated metadata benchmark test - that performs open/stat/close operations on files + """mdtest is an MPI-coordinated metadata benchmark test + that performs open/stat/close operations on files and directories and then reports the performance.""" homepage = "https://github.com/LLNL/mdtest" diff --git a/var/spack/repos/builtin/packages/meep/package.py b/var/spack/repos/builtin/packages/meep/package.py index f64edd767b0..f99e1506a34 100644 --- a/var/spack/repos/builtin/packages/meep/package.py +++ b/var/spack/repos/builtin/packages/meep/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/memaxes/package.py b/var/spack/repos/builtin/packages/memaxes/package.py index ffad1677889..f426309b99d 100644 --- a/var/spack/repos/builtin/packages/memaxes/package.py +++ b/var/spack/repos/builtin/packages/memaxes/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/meme/package.py b/var/spack/repos/builtin/packages/meme/package.py index 87174c391e9..05e88fec8b9 100644 --- a/var/spack/repos/builtin/packages/meme/package.py +++ b/var/spack/repos/builtin/packages/meme/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mercurial/package.py b/var/spack/repos/builtin/packages/mercurial/package.py index b383560cfe8..1cfb4f59c9b 100644 --- a/var/spack/repos/builtin/packages/mercurial/package.py +++ b/var/spack/repos/builtin/packages/mercurial/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mesa-glu/package.py b/var/spack/repos/builtin/packages/mesa-glu/package.py index ecc60b61350..cb2f12ad437 100644 --- a/var/spack/repos/builtin/packages/mesa-glu/package.py +++ b/var/spack/repos/builtin/packages/mesa-glu/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index 0c7aed7fca1..22439c46d3a 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mesquite/package.py b/var/spack/repos/builtin/packages/mesquite/package.py index d67d8aaac40..fd18d4ddae7 100644 --- a/var/spack/repos/builtin/packages/mesquite/package.py +++ b/var/spack/repos/builtin/packages/mesquite/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index 3b904dd0155..2f450951e3a 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index 8f6f3a78555..2848d77887f 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/miniconda2/package.py b/var/spack/repos/builtin/packages/miniconda2/package.py index 52fc2a2f668..aed9f8e08c1 100644 --- a/var/spack/repos/builtin/packages/miniconda2/package.py +++ b/var/spack/repos/builtin/packages/miniconda2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/miniconda3/package.py b/var/spack/repos/builtin/packages/miniconda3/package.py index bf9905c312f..bbe7df3acd8 100644 --- a/var/spack/repos/builtin/packages/miniconda3/package.py +++ b/var/spack/repos/builtin/packages/miniconda3/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mitos/package.py b/var/spack/repos/builtin/packages/mitos/package.py index 4ccddb35927..0e87f7c3764 100644 --- a/var/spack/repos/builtin/packages/mitos/package.py +++ b/var/spack/repos/builtin/packages/mitos/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mkfontdir/package.py b/var/spack/repos/builtin/packages/mkfontdir/package.py index 1a43a028a86..40a22d2d4d8 100644 --- a/var/spack/repos/builtin/packages/mkfontdir/package.py +++ b/var/spack/repos/builtin/packages/mkfontdir/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mkfontscale/package.py b/var/spack/repos/builtin/packages/mkfontscale/package.py index 397ba03a629..d2114c4dc56 100644 --- a/var/spack/repos/builtin/packages/mkfontscale/package.py +++ b/var/spack/repos/builtin/packages/mkfontscale/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/moab/package.py b/var/spack/repos/builtin/packages/moab/package.py index f46aaabf0bb..4798f842f07 100644 --- a/var/spack/repos/builtin/packages/moab/package.py +++ b/var/spack/repos/builtin/packages/moab/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mono/package.py b/var/spack/repos/builtin/packages/mono/package.py index 4a2692262b1..a63ab9d6227 100644 --- a/var/spack/repos/builtin/packages/mono/package.py +++ b/var/spack/repos/builtin/packages/mono/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mosh/package.py b/var/spack/repos/builtin/packages/mosh/package.py index dd0b914cb6f..2fb1fd5e99e 100644 --- a/var/spack/repos/builtin/packages/mosh/package.py +++ b/var/spack/repos/builtin/packages/mosh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mozjs/package.py b/var/spack/repos/builtin/packages/mozjs/package.py index 26d3a42b3e4..6fbb8133ce6 100644 --- a/var/spack/repos/builtin/packages/mozjs/package.py +++ b/var/spack/repos/builtin/packages/mozjs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mpc/package.py b/var/spack/repos/builtin/packages/mpc/package.py index 8a807399e8a..5996b424b37 100644 --- a/var/spack/repos/builtin/packages/mpc/package.py +++ b/var/spack/repos/builtin/packages/mpc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mpe2/package.py b/var/spack/repos/builtin/packages/mpe2/package.py index 78201281bb0..aa897f34fd0 100644 --- a/var/spack/repos/builtin/packages/mpe2/package.py +++ b/var/spack/repos/builtin/packages/mpe2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mpfr/package.py b/var/spack/repos/builtin/packages/mpfr/package.py index 2d88fa1522e..c809b6bbb49 100644 --- a/var/spack/repos/builtin/packages/mpfr/package.py +++ b/var/spack/repos/builtin/packages/mpfr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mpibash/package.py b/var/spack/repos/builtin/packages/mpibash/package.py index f3feaaaa426..cfa8f305025 100644 --- a/var/spack/repos/builtin/packages/mpibash/package.py +++ b/var/spack/repos/builtin/packages/mpibash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index c22f92cf385..f61a160d98f 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mpifileutils/package.py b/var/spack/repos/builtin/packages/mpifileutils/package.py index 102a1e9ff99..03ec613e0bd 100644 --- a/var/spack/repos/builtin/packages/mpifileutils/package.py +++ b/var/spack/repos/builtin/packages/mpifileutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mpileaks/package.py b/var/spack/repos/builtin/packages/mpileaks/package.py index ec4e9b30ccd..d212019ddd5 100644 --- a/var/spack/repos/builtin/packages/mpileaks/package.py +++ b/var/spack/repos/builtin/packages/mpileaks/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mpip/package.py b/var/spack/repos/builtin/packages/mpip/package.py index 235c66c882e..f75df37278d 100644 --- a/var/spack/repos/builtin/packages/mpip/package.py +++ b/var/spack/repos/builtin/packages/mpip/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mpir/package.py b/var/spack/repos/builtin/packages/mpir/package.py index b939a690b2d..033bbcd925e 100644 --- a/var/spack/repos/builtin/packages/mpir/package.py +++ b/var/spack/repos/builtin/packages/mpir/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mrnet/package.py b/var/spack/repos/builtin/packages/mrnet/package.py index 81938827f1f..46e00fea580 100644 --- a/var/spack/repos/builtin/packages/mrnet/package.py +++ b/var/spack/repos/builtin/packages/mrnet/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/msgpack-c/package.py b/var/spack/repos/builtin/packages/msgpack-c/package.py index 9a726e23564..5771fba86d5 100644 --- a/var/spack/repos/builtin/packages/msgpack-c/package.py +++ b/var/spack/repos/builtin/packages/msgpack-c/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/multiverso/package.py b/var/spack/repos/builtin/packages/multiverso/package.py index 15372029051..285f53ef3c6 100644 --- a/var/spack/repos/builtin/packages/multiverso/package.py +++ b/var/spack/repos/builtin/packages/multiverso/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mummer/package.py b/var/spack/repos/builtin/packages/mummer/package.py index b8cd61531c7..72450db5373 100644 --- a/var/spack/repos/builtin/packages/mummer/package.py +++ b/var/spack/repos/builtin/packages/mummer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index 55aac441f02..9d74ec4b6f0 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/munge/package.py b/var/spack/repos/builtin/packages/munge/package.py index 38dbfa1cc17..f26a041f068 100644 --- a/var/spack/repos/builtin/packages/munge/package.py +++ b/var/spack/repos/builtin/packages/munge/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/muparser/package.py b/var/spack/repos/builtin/packages/muparser/package.py index 1373c8cd7b3..7c63973006c 100644 --- a/var/spack/repos/builtin/packages/muparser/package.py +++ b/var/spack/repos/builtin/packages/muparser/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/muster/package.py b/var/spack/repos/builtin/packages/muster/package.py index 81817e48dc0..bcc68ade274 100644 --- a/var/spack/repos/builtin/packages/muster/package.py +++ b/var/spack/repos/builtin/packages/muster/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 91b151516d5..7a3d8f1e02a 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index ef05b85da07..c0ff5f6cd94 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nag/package.py b/var/spack/repos/builtin/packages/nag/package.py index f2dd5cc95bc..d5dd8feb2d9 100644 --- a/var/spack/repos/builtin/packages/nag/package.py +++ b/var/spack/repos/builtin/packages/nag/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nalu/package.py b/var/spack/repos/builtin/packages/nalu/package.py index ed3785c5c70..fc6d79e9ea0 100644 --- a/var/spack/repos/builtin/packages/nalu/package.py +++ b/var/spack/repos/builtin/packages/nalu/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/namd/package.py b/var/spack/repos/builtin/packages/namd/package.py index 160d508004f..d7f77835a8a 100644 --- a/var/spack/repos/builtin/packages/namd/package.py +++ b/var/spack/repos/builtin/packages/namd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nano/package.py b/var/spack/repos/builtin/packages/nano/package.py index 49415bb7ef0..3eef97039cf 100644 --- a/var/spack/repos/builtin/packages/nano/package.py +++ b/var/spack/repos/builtin/packages/nano/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nasm/package.py b/var/spack/repos/builtin/packages/nasm/package.py index 979d002b4cf..73a4e43a4fe 100644 --- a/var/spack/repos/builtin/packages/nasm/package.py +++ b/var/spack/repos/builtin/packages/nasm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nauty/package.py b/var/spack/repos/builtin/packages/nauty/package.py index 0d5eed251be..11c7945f39b 100644 --- a/var/spack/repos/builtin/packages/nauty/package.py +++ b/var/spack/repos/builtin/packages/nauty/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nccl/package.py b/var/spack/repos/builtin/packages/nccl/package.py index 52be43aa25e..409a2709713 100644 --- a/var/spack/repos/builtin/packages/nccl/package.py +++ b/var/spack/repos/builtin/packages/nccl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nccmp/package.py b/var/spack/repos/builtin/packages/nccmp/package.py index d59ca093813..16a74678570 100644 --- a/var/spack/repos/builtin/packages/nccmp/package.py +++ b/var/spack/repos/builtin/packages/nccmp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ncdu/package.py b/var/spack/repos/builtin/packages/ncdu/package.py index 0842a592cc0..9adacc0f317 100644 --- a/var/spack/repos/builtin/packages/ncdu/package.py +++ b/var/spack/repos/builtin/packages/ncdu/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ncftp/package.py b/var/spack/repos/builtin/packages/ncftp/package.py index 8b515af242d..626045a19c3 100644 --- a/var/spack/repos/builtin/packages/ncftp/package.py +++ b/var/spack/repos/builtin/packages/ncftp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,7 +26,7 @@ class Ncftp(AutotoolsPackage): - """NcFTP Client is a set of application programs implementing the + """NcFTP Client is a set of application programs implementing the File Transfer Protocol.""" homepage = "http://www.ncftp.com/" diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index 01e49f24f72..21d9a0ca885 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index aeccee7a74f..9a96685d54b 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index bf3c3d596b0..6754a372cd4 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py index ecd733ccea2..a9a33421a1e 100644 --- a/var/spack/repos/builtin/packages/ncview/package.py +++ b/var/spack/repos/builtin/packages/ncview/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ndiff/package.py b/var/spack/repos/builtin/packages/ndiff/package.py index dc41add03f1..66bf6d6994f 100644 --- a/var/spack/repos/builtin/packages/ndiff/package.py +++ b/var/spack/repos/builtin/packages/ndiff/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/netcdf-cxx/package.py b/var/spack/repos/builtin/packages/netcdf-cxx/package.py index 2ad710fc45d..120fa07a4cb 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py index 36ab8766b92..2493a3e908e 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py index 3f6a5bbf042..8c2d1670007 100644 --- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py +++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py index f3f0ed59a6d..262036d7710 100644 --- a/var/spack/repos/builtin/packages/netcdf/package.py +++ b/var/spack/repos/builtin/packages/netcdf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/netgauge/package.py b/var/spack/repos/builtin/packages/netgauge/package.py index e7e669410ba..b1880733c9c 100644 --- a/var/spack/repos/builtin/packages/netgauge/package.py +++ b/var/spack/repos/builtin/packages/netgauge/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py index fa11ae63671..f1274b5c293 100644 --- a/var/spack/repos/builtin/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py index e860926f967..d6419b744e0 100644 --- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py index fd410d51023..83cbcb80dc6 100644 --- a/var/spack/repos/builtin/packages/nettle/package.py +++ b/var/spack/repos/builtin/packages/nettle/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index 850775ceee5..a44df66b074 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nfft/package.py b/var/spack/repos/builtin/packages/nfft/package.py index daedcff22f7..771ed36cb20 100644 --- a/var/spack/repos/builtin/packages/nfft/package.py +++ b/var/spack/repos/builtin/packages/nfft/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nginx/package.py b/var/spack/repos/builtin/packages/nginx/package.py index 1ab2f276957..a18ad9b2937 100644 --- a/var/spack/repos/builtin/packages/nginx/package.py +++ b/var/spack/repos/builtin/packages/nginx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ninja/package.py b/var/spack/repos/builtin/packages/ninja/package.py index 87da2913fd8..28aa36c465b 100644 --- a/var/spack/repos/builtin/packages/ninja/package.py +++ b/var/spack/repos/builtin/packages/ninja/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nmap/package.py b/var/spack/repos/builtin/packages/nmap/package.py index f4576cde538..20204c0b06f 100644 --- a/var/spack/repos/builtin/packages/nmap/package.py +++ b/var/spack/repos/builtin/packages/nmap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,8 +26,8 @@ class Nmap(AutotoolsPackage): - """Nmap ("Network Mapper") is a free and open source (license) - utility for network discovery and security auditing. + """Nmap ("Network Mapper") is a free and open source (license) + utility for network discovery and security auditing. It also provides ncat an updated nc""" homepage = "https://nmap.org" diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index 208ba5e15df..5a8772fbf84 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/notmuch/package.py b/var/spack/repos/builtin/packages/notmuch/package.py index fea7cd89207..0462867f540 100644 --- a/var/spack/repos/builtin/packages/notmuch/package.py +++ b/var/spack/repos/builtin/packages/notmuch/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,8 +26,8 @@ class Notmuch(AutotoolsPackage): - """Notmuch is a mail indexer. - + """Notmuch is a mail indexer. + Essentially, is a very thin front end on top of xapian. """ diff --git a/var/spack/repos/builtin/packages/npb/package.py b/var/spack/repos/builtin/packages/npb/package.py index a6e428b3444..26d46c30902 100644 --- a/var/spack/repos/builtin/packages/npb/package.py +++ b/var/spack/repos/builtin/packages/npb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/npm/package.py b/var/spack/repos/builtin/packages/npm/package.py index 6196da42e32..8e252e7b651 100644 --- a/var/spack/repos/builtin/packages/npm/package.py +++ b/var/spack/repos/builtin/packages/npm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/npth/package.py b/var/spack/repos/builtin/packages/npth/package.py index ac4264036cb..fa166a45c16 100644 --- a/var/spack/repos/builtin/packages/npth/package.py +++ b/var/spack/repos/builtin/packages/npth/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nspr/package.py b/var/spack/repos/builtin/packages/nspr/package.py index 482a11ab052..bda5db551b7 100644 --- a/var/spack/repos/builtin/packages/nspr/package.py +++ b/var/spack/repos/builtin/packages/nspr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/numdiff/package.py b/var/spack/repos/builtin/packages/numdiff/package.py index 6b8266eaa13..d9d2bc88cd7 100644 --- a/var/spack/repos/builtin/packages/numdiff/package.py +++ b/var/spack/repos/builtin/packages/numdiff/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 10c5ec5701d..f526dcda887 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ocaml/package.py b/var/spack/repos/builtin/packages/ocaml/package.py index 75c19ec7c61..dc1c0dde200 100644 --- a/var/spack/repos/builtin/packages/ocaml/package.py +++ b/var/spack/repos/builtin/packages/ocaml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -38,6 +38,6 @@ class Ocaml(Package): def install(self, spec, prefix): configure('-prefix', '{0}'.format(prefix)) - + make('world.opt') make('install') diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py index 8a452392626..9f7fd8eef7e 100644 --- a/var/spack/repos/builtin/packages/oce/package.py +++ b/var/spack/repos/builtin/packages/oce/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/oclock/package.py b/var/spack/repos/builtin/packages/oclock/package.py index ec656b23f12..3db0d63bbeb 100644 --- a/var/spack/repos/builtin/packages/oclock/package.py +++ b/var/spack/repos/builtin/packages/oclock/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/octave-splines/package.py b/var/spack/repos/builtin/packages/octave-splines/package.py index 11c9cc5ba7e..51de0858ab4 100644 --- a/var/spack/repos/builtin/packages/octave-splines/package.py +++ b/var/spack/repos/builtin/packages/octave-splines/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index b02ed336133..f18be0186f9 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py index 14255a0b19f..9e70699d844 100644 --- a/var/spack/repos/builtin/packages/octopus/package.py +++ b/var/spack/repos/builtin/packages/octopus/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ompss/package.py b/var/spack/repos/builtin/packages/ompss/package.py index 02925974ea4..cf03bc6fdef 100644 --- a/var/spack/repos/builtin/packages/ompss/package.py +++ b/var/spack/repos/builtin/packages/ompss/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ompt-openmp/package.py b/var/spack/repos/builtin/packages/ompt-openmp/package.py index 40159e4c6c9..daa3fed670e 100644 --- a/var/spack/repos/builtin/packages/ompt-openmp/package.py +++ b/var/spack/repos/builtin/packages/ompt-openmp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/oniguruma/package.py b/var/spack/repos/builtin/packages/oniguruma/package.py index 8a5b8005b6e..4a9bc7c12b1 100644 --- a/var/spack/repos/builtin/packages/oniguruma/package.py +++ b/var/spack/repos/builtin/packages/oniguruma/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ont-albacore/package.py b/var/spack/repos/builtin/packages/ont-albacore/package.py index c4ec25d62a0..a0f4506a4d3 100644 --- a/var/spack/repos/builtin/packages/ont-albacore/package.py +++ b/var/spack/repos/builtin/packages/ont-albacore/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/opari2/package.py b/var/spack/repos/builtin/packages/opari2/package.py index cbe515ffe9c..bd79943c64e 100644 --- a/var/spack/repos/builtin/packages/opari2/package.py +++ b/var/spack/repos/builtin/packages/opari2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openbabel/package.py b/var/spack/repos/builtin/packages/openbabel/package.py index 014d1183f35..e67785eca83 100644 --- a/var/spack/repos/builtin/packages/openbabel/package.py +++ b/var/spack/repos/builtin/packages/openbabel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 5353bdcc48c..d79e2c27f8d 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/opencoarrays/package.py b/var/spack/repos/builtin/packages/opencoarrays/package.py index 22d2152495f..0449155bc7f 100644 --- a/var/spack/repos/builtin/packages/opencoarrays/package.py +++ b/var/spack/repos/builtin/packages/opencoarrays/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index 162939167cc..09fa68b9c05 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openexr/package.py b/var/spack/repos/builtin/packages/openexr/package.py index 3619bd063ca..b82a305b180 100644 --- a/var/spack/repos/builtin/packages/openexr/package.py +++ b/var/spack/repos/builtin/packages/openexr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openfoam-com/package.py b/var/spack/repos/builtin/packages/openfoam-com/package.py index c6dd6dbe9ad..ce7be181b5f 100644 --- a/var/spack/repos/builtin/packages/openfoam-com/package.py +++ b/var/spack/repos/builtin/packages/openfoam-com/package.py @@ -6,7 +6,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for the LLNL notice and the LGPL. +# Please also see the NOTICE and LICENSE files for the LLNL notice and LGPL. # # License # ------- diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py index 02c27a0db5b..017f6cc2327 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/package.py +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -6,7 +6,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for the LLNL notice and the LGPL. +# Please also see the NOTICE and LICENSE files for the LLNL notice and LGPL. # # License # ------- diff --git a/var/spack/repos/builtin/packages/openfst/package.py b/var/spack/repos/builtin/packages/openfst/package.py index 7a555f5b4c6..f6fa7b5e565 100644 --- a/var/spack/repos/builtin/packages/openfst/package.py +++ b/var/spack/repos/builtin/packages/openfst/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openjpeg/package.py b/var/spack/repos/builtin/packages/openjpeg/package.py index b22de4452aa..977a7b687bc 100644 --- a/var/spack/repos/builtin/packages/openjpeg/package.py +++ b/var/spack/repos/builtin/packages/openjpeg/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 345f9c34f39..e685cfce88f 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openscenegraph/package.py b/var/spack/repos/builtin/packages/openscenegraph/package.py index 565941ff0e9..28a7187da82 100644 --- a/var/spack/repos/builtin/packages/openscenegraph/package.py +++ b/var/spack/repos/builtin/packages/openscenegraph/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 6ad28ce3b76..7b1c66e5d13 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openssh/package.py b/var/spack/repos/builtin/packages/openssh/package.py index e2416535277..5fd2c87cd2f 100644 --- a/var/spack/repos/builtin/packages/openssh/package.py +++ b/var/spack/repos/builtin/packages/openssh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 67f978e80c1..35b8c4b0306 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/opium/package.py b/var/spack/repos/builtin/packages/opium/package.py index 4c50bcfaf29..2080fdb9d89 100644 --- a/var/spack/repos/builtin/packages/opium/package.py +++ b/var/spack/repos/builtin/packages/opium/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/opus/package.py b/var/spack/repos/builtin/packages/opus/package.py index e1061dfdcfb..6c579bca689 100644 --- a/var/spack/repos/builtin/packages/opus/package.py +++ b/var/spack/repos/builtin/packages/opus/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py index 161ba6254ae..44c396e508d 100644 --- a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py +++ b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/otf/package.py b/var/spack/repos/builtin/packages/otf/package.py index 39eb5a85aae..6ac85f4b107 100644 --- a/var/spack/repos/builtin/packages/otf/package.py +++ b/var/spack/repos/builtin/packages/otf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/otf2/package.py b/var/spack/repos/builtin/packages/otf2/package.py index 3a52d16fa6a..5b78ae935b7 100644 --- a/var/spack/repos/builtin/packages/otf2/package.py +++ b/var/spack/repos/builtin/packages/otf2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/p4est/package.py b/var/spack/repos/builtin/packages/p4est/package.py index ef3f2f54d19..cc8a7bd353f 100644 --- a/var/spack/repos/builtin/packages/p4est/package.py +++ b/var/spack/repos/builtin/packages/p4est/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pagmo/package.py b/var/spack/repos/builtin/packages/pagmo/package.py index eeeb437db7f..bb6136c6ec3 100644 --- a/var/spack/repos/builtin/packages/pagmo/package.py +++ b/var/spack/repos/builtin/packages/pagmo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/panda/package.py b/var/spack/repos/builtin/packages/panda/package.py index fb14bd56435..7e5f7710d2d 100644 --- a/var/spack/repos/builtin/packages/panda/package.py +++ b/var/spack/repos/builtin/packages/panda/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index 6b97bd641e6..a95eecf041b 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py index 115f1604b77..8b0707b6631 100644 --- a/var/spack/repos/builtin/packages/papi/package.py +++ b/var/spack/repos/builtin/packages/papi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/paradiseo/package.py b/var/spack/repos/builtin/packages/paradiseo/package.py index 97ea19bc877..4b9bad0f3e7 100644 --- a/var/spack/repos/builtin/packages/paradiseo/package.py +++ b/var/spack/repos/builtin/packages/paradiseo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py index 43f93db0c6d..6d222174408 100644 --- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py +++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/parallel/package.py b/var/spack/repos/builtin/packages/parallel/package.py index 11e9497288a..5dfcc1b06f8 100644 --- a/var/spack/repos/builtin/packages/parallel/package.py +++ b/var/spack/repos/builtin/packages/parallel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/paraver/package.py b/var/spack/repos/builtin/packages/paraver/package.py index d7fe2152c39..a3847dc94d7 100644 --- a/var/spack/repos/builtin/packages/paraver/package.py +++ b/var/spack/repos/builtin/packages/paraver/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index cb5acf0e236..fb491f58e2f 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py index c66829f94e4..d7079d0468d 100644 --- a/var/spack/repos/builtin/packages/parmetis/package.py +++ b/var/spack/repos/builtin/packages/parmetis/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/parmgridgen/package.py b/var/spack/repos/builtin/packages/parmgridgen/package.py index eaab9b0b87e..50eca810535 100644 --- a/var/spack/repos/builtin/packages/parmgridgen/package.py +++ b/var/spack/repos/builtin/packages/parmgridgen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/parpack/package.py b/var/spack/repos/builtin/packages/parpack/package.py index 84bc88b3b03..f3420cbb7a5 100644 --- a/var/spack/repos/builtin/packages/parpack/package.py +++ b/var/spack/repos/builtin/packages/parpack/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/patch/package.py b/var/spack/repos/builtin/packages/patch/package.py index 3bdaf8c3bde..1b0e6389a63 100644 --- a/var/spack/repos/builtin/packages/patch/package.py +++ b/var/spack/repos/builtin/packages/patch/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/patchelf/package.py b/var/spack/repos/builtin/packages/patchelf/package.py index d36366f5575..c25361b76e9 100644 --- a/var/spack/repos/builtin/packages/patchelf/package.py +++ b/var/spack/repos/builtin/packages/patchelf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pax-utils/package.py b/var/spack/repos/builtin/packages/pax-utils/package.py index 3c0b81034ea..2bed52fb0e5 100644 --- a/var/spack/repos/builtin/packages/pax-utils/package.py +++ b/var/spack/repos/builtin/packages/pax-utils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pcre/package.py b/var/spack/repos/builtin/packages/pcre/package.py index 581dfe531e0..15c5b9854c9 100644 --- a/var/spack/repos/builtin/packages/pcre/package.py +++ b/var/spack/repos/builtin/packages/pcre/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pcre2/package.py b/var/spack/repos/builtin/packages/pcre2/package.py index 5fb582cab0c..07b2a9085b0 100644 --- a/var/spack/repos/builtin/packages/pcre2/package.py +++ b/var/spack/repos/builtin/packages/pcre2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pdsh/package.py b/var/spack/repos/builtin/packages/pdsh/package.py index b54afca6fc8..3d0d265409b 100644 --- a/var/spack/repos/builtin/packages/pdsh/package.py +++ b/var/spack/repos/builtin/packages/pdsh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index 1012911cd5f..42cdfbc41b5 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pegtl/package.py b/var/spack/repos/builtin/packages/pegtl/package.py index 7bbea542ad1..46b65c666d4 100644 --- a/var/spack/repos/builtin/packages/pegtl/package.py +++ b/var/spack/repos/builtin/packages/pegtl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/perl-dbi/package.py b/var/spack/repos/builtin/packages/perl-dbi/package.py index d1c6a11fb4e..d9de80edd05 100644 --- a/var/spack/repos/builtin/packages/perl-dbi/package.py +++ b/var/spack/repos/builtin/packages/perl-dbi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py b/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py index b675212395a..f8bc19cf354 100644 --- a/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py +++ b/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/perl-module-build/package.py b/var/spack/repos/builtin/packages/perl-module-build/package.py index cccc5d7b5ad..11f55806475 100644 --- a/var/spack/repos/builtin/packages/perl-module-build/package.py +++ b/var/spack/repos/builtin/packages/perl-module-build/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/perl-term-readkey/package.py b/var/spack/repos/builtin/packages/perl-term-readkey/package.py index b9ab06dce1a..51599011fad 100644 --- a/var/spack/repos/builtin/packages/perl-term-readkey/package.py +++ b/var/spack/repos/builtin/packages/perl-term-readkey/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/perl-xml-parser/package.py b/var/spack/repos/builtin/packages/perl-xml-parser/package.py index 23e1af9213b..c8981e7d39e 100644 --- a/var/spack/repos/builtin/packages/perl-xml-parser/package.py +++ b/var/spack/repos/builtin/packages/perl-xml-parser/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 95b2ae8726a..d9952cc936d 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index c379365dcb7..1002211810d 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pexsi/package.py b/var/spack/repos/builtin/packages/pexsi/package.py index 04d22c4da8f..0d4496c1047 100644 --- a/var/spack/repos/builtin/packages/pexsi/package.py +++ b/var/spack/repos/builtin/packages/pexsi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pfft/package.py b/var/spack/repos/builtin/packages/pfft/package.py index 3d05a834e93..a89a199efbc 100644 --- a/var/spack/repos/builtin/packages/pfft/package.py +++ b/var/spack/repos/builtin/packages/pfft/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pflotran/package.py b/var/spack/repos/builtin/packages/pflotran/package.py index b7e623cb053..e18e6a7ea0b 100644 --- a/var/spack/repos/builtin/packages/pflotran/package.py +++ b/var/spack/repos/builtin/packages/pflotran/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py index 4a9295249c7..e1c9b0130bb 100644 --- a/var/spack/repos/builtin/packages/pgi/package.py +++ b/var/spack/repos/builtin/packages/pgi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/phasta/package.py b/var/spack/repos/builtin/packages/phasta/package.py index e5e794bcfae..aa472147061 100644 --- a/var/spack/repos/builtin/packages/phasta/package.py +++ b/var/spack/repos/builtin/packages/phasta/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/picard/package.py b/var/spack/repos/builtin/packages/picard/package.py index 0a52db42642..3705c13f755 100644 --- a/var/spack/repos/builtin/packages/picard/package.py +++ b/var/spack/repos/builtin/packages/picard/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pidx/package.py b/var/spack/repos/builtin/packages/pidx/package.py index e19bb9e470b..f79ff7eec4b 100644 --- a/var/spack/repos/builtin/packages/pidx/package.py +++ b/var/spack/repos/builtin/packages/pidx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pigz/package.py b/var/spack/repos/builtin/packages/pigz/package.py index 7ba120417a0..e9fe482c516 100644 --- a/var/spack/repos/builtin/packages/pigz/package.py +++ b/var/spack/repos/builtin/packages/pigz/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,7 +26,7 @@ class Pigz(MakefilePackage): - """A parallel implementation of gzip for modern multi-processor, + """A parallel implementation of gzip for modern multi-processor, multi-core machines.""" homepage = "http://zlib.net/pigz/" diff --git a/var/spack/repos/builtin/packages/piranha/package.py b/var/spack/repos/builtin/packages/piranha/package.py index dbf949f000c..8d684ce2772 100644 --- a/var/spack/repos/builtin/packages/piranha/package.py +++ b/var/spack/repos/builtin/packages/piranha/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py index 4d5bd4767ac..fa01d21acb2 100644 --- a/var/spack/repos/builtin/packages/pixman/package.py +++ b/var/spack/repos/builtin/packages/pixman/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py index 2e23aae3fe1..dfb6608cf36 100644 --- a/var/spack/repos/builtin/packages/pkg-config/package.py +++ b/var/spack/repos/builtin/packages/pkg-config/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/planck-likelihood/package.py b/var/spack/repos/builtin/packages/planck-likelihood/package.py index 8d7b9c5e34d..9f66b9b41c8 100644 --- a/var/spack/repos/builtin/packages/planck-likelihood/package.py +++ b/var/spack/repos/builtin/packages/planck-likelihood/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index 5b22fdb4ea9..fb655a9949a 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pmgr-collective/package.py b/var/spack/repos/builtin/packages/pmgr-collective/package.py index f6466a7954a..0ba1cc5fd52 100644 --- a/var/spack/repos/builtin/packages/pmgr-collective/package.py +++ b/var/spack/repos/builtin/packages/pmgr-collective/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pnfft/package.py b/var/spack/repos/builtin/packages/pnfft/package.py index 3e56b9be4ef..7bb74859d64 100644 --- a/var/spack/repos/builtin/packages/pnfft/package.py +++ b/var/spack/repos/builtin/packages/pnfft/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pngwriter/package.py b/var/spack/repos/builtin/packages/pngwriter/package.py index ef3e28aded0..664421ceab7 100644 --- a/var/spack/repos/builtin/packages/pngwriter/package.py +++ b/var/spack/repos/builtin/packages/pngwriter/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py index 8becd9e9f73..33273ea9e6d 100644 --- a/var/spack/repos/builtin/packages/pocl/package.py +++ b/var/spack/repos/builtin/packages/pocl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/polymake/package.py b/var/spack/repos/builtin/packages/polymake/package.py index c0bb9082aec..693eac28954 100644 --- a/var/spack/repos/builtin/packages/polymake/package.py +++ b/var/spack/repos/builtin/packages/polymake/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/porta/package.py b/var/spack/repos/builtin/packages/porta/package.py index b620daf78f5..b2b7076be35 100644 --- a/var/spack/repos/builtin/packages/porta/package.py +++ b/var/spack/repos/builtin/packages/porta/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/portage/package.py b/var/spack/repos/builtin/packages/portage/package.py index 51166b97a31..92e42665523 100644 --- a/var/spack/repos/builtin/packages/portage/package.py +++ b/var/spack/repos/builtin/packages/portage/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/postgresql/package.py b/var/spack/repos/builtin/packages/postgresql/package.py index f8a28945381..4142dda185c 100644 --- a/var/spack/repos/builtin/packages/postgresql/package.py +++ b/var/spack/repos/builtin/packages/postgresql/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ppl/package.py b/var/spack/repos/builtin/packages/ppl/package.py index 73404103f08..e059ee26d83 100644 --- a/var/spack/repos/builtin/packages/ppl/package.py +++ b/var/spack/repos/builtin/packages/ppl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/prank/package.py b/var/spack/repos/builtin/packages/prank/package.py index 09b73e795f0..7f8fe95634f 100644 --- a/var/spack/repos/builtin/packages/prank/package.py +++ b/var/spack/repos/builtin/packages/prank/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/presentproto/package.py b/var/spack/repos/builtin/packages/presentproto/package.py index 32560ade65c..d6da6d6beaa 100644 --- a/var/spack/repos/builtin/packages/presentproto/package.py +++ b/var/spack/repos/builtin/packages/presentproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/printproto/package.py b/var/spack/repos/builtin/packages/printproto/package.py index 0f905c3172f..66f978c89fa 100644 --- a/var/spack/repos/builtin/packages/printproto/package.py +++ b/var/spack/repos/builtin/packages/printproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/proj/package.py b/var/spack/repos/builtin/packages/proj/package.py index 3008baa690e..85bbf02ac61 100644 --- a/var/spack/repos/builtin/packages/proj/package.py +++ b/var/spack/repos/builtin/packages/proj/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index 0a073b837a9..50b190f70ea 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/proxymngr/package.py b/var/spack/repos/builtin/packages/proxymngr/package.py index 896f2d00b74..e7a2a70dc4f 100644 --- a/var/spack/repos/builtin/packages/proxymngr/package.py +++ b/var/spack/repos/builtin/packages/proxymngr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pruners-ninja/package.py b/var/spack/repos/builtin/packages/pruners-ninja/package.py index effbd979c37..660512380b3 100644 --- a/var/spack/repos/builtin/packages/pruners-ninja/package.py +++ b/var/spack/repos/builtin/packages/pruners-ninja/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/psi4/package.py b/var/spack/repos/builtin/packages/psi4/package.py index 976b5d3c4ea..41633ffceb0 100644 --- a/var/spack/repos/builtin/packages/psi4/package.py +++ b/var/spack/repos/builtin/packages/psi4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pstreams/package.py b/var/spack/repos/builtin/packages/pstreams/package.py index 30e9fccb107..be684a3b29b 100644 --- a/var/spack/repos/builtin/packages/pstreams/package.py +++ b/var/spack/repos/builtin/packages/pstreams/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pugixml/package.py b/var/spack/repos/builtin/packages/pugixml/package.py index f7872bf68fa..8d720e271e0 100644 --- a/var/spack/repos/builtin/packages/pugixml/package.py +++ b/var/spack/repos/builtin/packages/pugixml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pumi/package.py b/var/spack/repos/builtin/packages/pumi/package.py index 40d37c6ce66..909dc855828 100644 --- a/var/spack/repos/builtin/packages/pumi/package.py +++ b/var/spack/repos/builtin/packages/pumi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/pvm/package.py b/var/spack/repos/builtin/packages/pvm/package.py index 79aed3431dd..ecbb4d21bd5 100644 --- a/var/spack/repos/builtin/packages/pvm/package.py +++ b/var/spack/repos/builtin/packages/pvm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-3to2/package.py b/var/spack/repos/builtin/packages/py-3to2/package.py index 80b95fcbfd3..e1d939d4749 100644 --- a/var/spack/repos/builtin/packages/py-3to2/package.py +++ b/var/spack/repos/builtin/packages/py-3to2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-4suite-xml/package.py b/var/spack/repos/builtin/packages/py-4suite-xml/package.py index 759f87c0639..05c7d775ecb 100644 --- a/var/spack/repos/builtin/packages/py-4suite-xml/package.py +++ b/var/spack/repos/builtin/packages/py-4suite-xml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-abipy/package.py b/var/spack/repos/builtin/packages/py-abipy/package.py index d113512f50f..b43491b52f8 100644 --- a/var/spack/repos/builtin/packages/py-abipy/package.py +++ b/var/spack/repos/builtin/packages/py-abipy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-alabaster/package.py b/var/spack/repos/builtin/packages/py-alabaster/package.py index ae082de17f6..39645a02e37 100644 --- a/var/spack/repos/builtin/packages/py-alabaster/package.py +++ b/var/spack/repos/builtin/packages/py-alabaster/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-apache-libcloud/package.py b/var/spack/repos/builtin/packages/py-apache-libcloud/package.py index 1f265370f66..bf2f309cff3 100644 --- a/var/spack/repos/builtin/packages/py-apache-libcloud/package.py +++ b/var/spack/repos/builtin/packages/py-apache-libcloud/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-appdirs/package.py b/var/spack/repos/builtin/packages/py-appdirs/package.py index 802d59b99b7..487ef261fe3 100644 --- a/var/spack/repos/builtin/packages/py-appdirs/package.py +++ b/var/spack/repos/builtin/packages/py-appdirs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-appnope/package.py b/var/spack/repos/builtin/packages/py-appnope/package.py index 59dac3a8b37..49d3b2796d2 100644 --- a/var/spack/repos/builtin/packages/py-appnope/package.py +++ b/var/spack/repos/builtin/packages/py-appnope/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-apscheduler/package.py b/var/spack/repos/builtin/packages/py-apscheduler/package.py index 96b3e0d474e..163783be126 100644 --- a/var/spack/repos/builtin/packages/py-apscheduler/package.py +++ b/var/spack/repos/builtin/packages/py-apscheduler/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-argcomplete/package.py b/var/spack/repos/builtin/packages/py-argcomplete/package.py index 585540f23bf..ff35e98d80a 100644 --- a/var/spack/repos/builtin/packages/py-argcomplete/package.py +++ b/var/spack/repos/builtin/packages/py-argcomplete/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-argparse/package.py b/var/spack/repos/builtin/packages/py-argparse/package.py index ea34f5c2fe3..94041c1c7ff 100644 --- a/var/spack/repos/builtin/packages/py-argparse/package.py +++ b/var/spack/repos/builtin/packages/py-argparse/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ase/package.py b/var/spack/repos/builtin/packages/py-ase/package.py index 8800826ce53..46175e8a726 100644 --- a/var/spack/repos/builtin/packages/py-ase/package.py +++ b/var/spack/repos/builtin/packages/py-ase/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-asn1crypto/package.py b/var/spack/repos/builtin/packages/py-asn1crypto/package.py index 838a8a41826..9e72f29c36b 100644 --- a/var/spack/repos/builtin/packages/py-asn1crypto/package.py +++ b/var/spack/repos/builtin/packages/py-asn1crypto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-astroid/package.py b/var/spack/repos/builtin/packages/py-astroid/package.py index f275813d86c..9ccbff61775 100644 --- a/var/spack/repos/builtin/packages/py-astroid/package.py +++ b/var/spack/repos/builtin/packages/py-astroid/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-astropy/package.py b/var/spack/repos/builtin/packages/py-astropy/package.py index d8c262cfdd5..27358c94670 100644 --- a/var/spack/repos/builtin/packages/py-astropy/package.py +++ b/var/spack/repos/builtin/packages/py-astropy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-attrs/package.py b/var/spack/repos/builtin/packages/py-attrs/package.py index b99b55da065..bc9a557a520 100644 --- a/var/spack/repos/builtin/packages/py-attrs/package.py +++ b/var/spack/repos/builtin/packages/py-attrs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-autopep8/package.py b/var/spack/repos/builtin/packages/py-autopep8/package.py index 25698bc880f..7db3658c027 100644 --- a/var/spack/repos/builtin/packages/py-autopep8/package.py +++ b/var/spack/repos/builtin/packages/py-autopep8/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-babel/package.py b/var/spack/repos/builtin/packages/py-babel/package.py index d9ab3bc494a..4b9f6c74621 100644 --- a/var/spack/repos/builtin/packages/py-babel/package.py +++ b/var/spack/repos/builtin/packages/py-babel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-backports-abc/package.py b/var/spack/repos/builtin/packages/py-backports-abc/package.py index 7d062bff6ae..6bdfd99eff1 100644 --- a/var/spack/repos/builtin/packages/py-backports-abc/package.py +++ b/var/spack/repos/builtin/packages/py-backports-abc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py b/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py index adadad76bd3..5abe2d58cfa 100644 --- a/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py +++ b/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py b/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py index 2c2caaed613..994729081fe 100644 --- a/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py +++ b/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-basemap/package.py b/var/spack/repos/builtin/packages/py-basemap/package.py index 723adacff8e..fd1d0c6092d 100644 --- a/var/spack/repos/builtin/packages/py-basemap/package.py +++ b/var/spack/repos/builtin/packages/py-basemap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py b/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py index f97c01dcede..740c7530931 100644 --- a/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py +++ b/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-binwalk/package.py b/var/spack/repos/builtin/packages/py-binwalk/package.py index b9002749675..a27c3462c0a 100644 --- a/var/spack/repos/builtin/packages/py-binwalk/package.py +++ b/var/spack/repos/builtin/packages/py-binwalk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-biopython/package.py b/var/spack/repos/builtin/packages/py-biopython/package.py index 3411e244f9c..1c8c613002e 100644 --- a/var/spack/repos/builtin/packages/py-biopython/package.py +++ b/var/spack/repos/builtin/packages/py-biopython/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-bleach/package.py b/var/spack/repos/builtin/packages/py-bleach/package.py index bb9c4e9398d..628b58cd0cd 100644 --- a/var/spack/repos/builtin/packages/py-bleach/package.py +++ b/var/spack/repos/builtin/packages/py-bleach/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-blessings/package.py b/var/spack/repos/builtin/packages/py-blessings/package.py index b38f34b4123..39c6c16da12 100644 --- a/var/spack/repos/builtin/packages/py-blessings/package.py +++ b/var/spack/repos/builtin/packages/py-blessings/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-bokeh/package.py b/var/spack/repos/builtin/packages/py-bokeh/package.py index 2394b376d50..04f0b844222 100644 --- a/var/spack/repos/builtin/packages/py-bokeh/package.py +++ b/var/spack/repos/builtin/packages/py-bokeh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-boltons/package.py b/var/spack/repos/builtin/packages/py-boltons/package.py index da86792f8d5..e5e371db394 100644 --- a/var/spack/repos/builtin/packages/py-boltons/package.py +++ b/var/spack/repos/builtin/packages/py-boltons/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-bottleneck/package.py b/var/spack/repos/builtin/packages/py-bottleneck/package.py index c8040761252..99177ef98a4 100644 --- a/var/spack/repos/builtin/packages/py-bottleneck/package.py +++ b/var/spack/repos/builtin/packages/py-bottleneck/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-brian/package.py b/var/spack/repos/builtin/packages/py-brian/package.py index e3046c939a3..aff3c4da1fa 100644 --- a/var/spack/repos/builtin/packages/py-brian/package.py +++ b/var/spack/repos/builtin/packages/py-brian/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-brian2/package.py b/var/spack/repos/builtin/packages/py-brian2/package.py index c3582a516d6..35b5bb59b9f 100644 --- a/var/spack/repos/builtin/packages/py-brian2/package.py +++ b/var/spack/repos/builtin/packages/py-brian2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-cclib/package.py b/var/spack/repos/builtin/packages/py-cclib/package.py index b59376d7b8b..fd1decfed83 100644 --- a/var/spack/repos/builtin/packages/py-cclib/package.py +++ b/var/spack/repos/builtin/packages/py-cclib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-cdat-lite/package.py b/var/spack/repos/builtin/packages/py-cdat-lite/package.py index 2006c0eadd2..cec2ce1fbc3 100644 --- a/var/spack/repos/builtin/packages/py-cdat-lite/package.py +++ b/var/spack/repos/builtin/packages/py-cdat-lite/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-cdo/package.py b/var/spack/repos/builtin/packages/py-cdo/package.py index 2bf4a2623cb..a843d067221 100644 --- a/var/spack/repos/builtin/packages/py-cdo/package.py +++ b/var/spack/repos/builtin/packages/py-cdo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-certifi/package.py b/var/spack/repos/builtin/packages/py-certifi/package.py index 7d8095f3f9f..ec2db8cf628 100644 --- a/var/spack/repos/builtin/packages/py-certifi/package.py +++ b/var/spack/repos/builtin/packages/py-certifi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-cffi/package.py b/var/spack/repos/builtin/packages/py-cffi/package.py index 4d1f6ee5adb..ca37b77446f 100644 --- a/var/spack/repos/builtin/packages/py-cffi/package.py +++ b/var/spack/repos/builtin/packages/py-cffi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-chardet/package.py b/var/spack/repos/builtin/packages/py-chardet/package.py index 82e6df80ea0..3276ed42bbc 100644 --- a/var/spack/repos/builtin/packages/py-chardet/package.py +++ b/var/spack/repos/builtin/packages/py-chardet/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-click/package.py b/var/spack/repos/builtin/packages/py-click/package.py index 6645134f480..2fabfb9fcf6 100644 --- a/var/spack/repos/builtin/packages/py-click/package.py +++ b/var/spack/repos/builtin/packages/py-click/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-colorama/package.py b/var/spack/repos/builtin/packages/py-colorama/package.py index 82938cfdb52..f8ebfd70b26 100644 --- a/var/spack/repos/builtin/packages/py-colorama/package.py +++ b/var/spack/repos/builtin/packages/py-colorama/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-configparser/package.py b/var/spack/repos/builtin/packages/py-configparser/package.py index a489c893273..f728d41e747 100644 --- a/var/spack/repos/builtin/packages/py-configparser/package.py +++ b/var/spack/repos/builtin/packages/py-configparser/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-counter/package.py b/var/spack/repos/builtin/packages/py-counter/package.py index 9be0edd8399..c36007800d9 100644 --- a/var/spack/repos/builtin/packages/py-counter/package.py +++ b/var/spack/repos/builtin/packages/py-counter/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-coverage/package.py b/var/spack/repos/builtin/packages/py-coverage/package.py index c55b4373fc4..596ae268c9e 100644 --- a/var/spack/repos/builtin/packages/py-coverage/package.py +++ b/var/spack/repos/builtin/packages/py-coverage/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-cpuinfo/package.py b/var/spack/repos/builtin/packages/py-cpuinfo/package.py index bc517624eb0..fddd648b471 100644 --- a/var/spack/repos/builtin/packages/py-cpuinfo/package.py +++ b/var/spack/repos/builtin/packages/py-cpuinfo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-cryptography/package.py b/var/spack/repos/builtin/packages/py-cryptography/package.py index 93531acc21b..4a0d5a30fcd 100644 --- a/var/spack/repos/builtin/packages/py-cryptography/package.py +++ b/var/spack/repos/builtin/packages/py-cryptography/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-csvkit/package.py b/var/spack/repos/builtin/packages/py-csvkit/package.py index 5e18f5f8b27..a1bf48ca926 100644 --- a/var/spack/repos/builtin/packages/py-csvkit/package.py +++ b/var/spack/repos/builtin/packages/py-csvkit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-current/package.py b/var/spack/repos/builtin/packages/py-current/package.py index 8f28c320172..d710a31a7c4 100644 --- a/var/spack/repos/builtin/packages/py-current/package.py +++ b/var/spack/repos/builtin/packages/py-current/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-cutadapt/package.py b/var/spack/repos/builtin/packages/py-cutadapt/package.py index 30c6c4332fa..f81f6d62c19 100644 --- a/var/spack/repos/builtin/packages/py-cutadapt/package.py +++ b/var/spack/repos/builtin/packages/py-cutadapt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-cycler/package.py b/var/spack/repos/builtin/packages/py-cycler/package.py index f2b2a150185..ee18fc1214a 100644 --- a/var/spack/repos/builtin/packages/py-cycler/package.py +++ b/var/spack/repos/builtin/packages/py-cycler/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-cython/package.py b/var/spack/repos/builtin/packages/py-cython/package.py index c84728cf3ea..f372e90e190 100644 --- a/var/spack/repos/builtin/packages/py-cython/package.py +++ b/var/spack/repos/builtin/packages/py-cython/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-dask/package.py b/var/spack/repos/builtin/packages/py-dask/package.py index 4113c2ac0bb..61415059956 100644 --- a/var/spack/repos/builtin/packages/py-dask/package.py +++ b/var/spack/repos/builtin/packages/py-dask/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-dateutil/package.py b/var/spack/repos/builtin/packages/py-dateutil/package.py index 3ab5ad029c4..08d43a0ad07 100644 --- a/var/spack/repos/builtin/packages/py-dateutil/package.py +++ b/var/spack/repos/builtin/packages/py-dateutil/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-dbf/package.py b/var/spack/repos/builtin/packages/py-dbf/package.py index 56403405e8e..a5c20d62a1c 100644 --- a/var/spack/repos/builtin/packages/py-dbf/package.py +++ b/var/spack/repos/builtin/packages/py-dbf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-decorator/package.py b/var/spack/repos/builtin/packages/py-decorator/package.py index e5734866ec4..b30de062467 100644 --- a/var/spack/repos/builtin/packages/py-decorator/package.py +++ b/var/spack/repos/builtin/packages/py-decorator/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-dev/package.py b/var/spack/repos/builtin/packages/py-dev/package.py index 449ed7dd80c..6ebcb211de6 100644 --- a/var/spack/repos/builtin/packages/py-dev/package.py +++ b/var/spack/repos/builtin/packages/py-dev/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-dill/package.py b/var/spack/repos/builtin/packages/py-dill/package.py index 7ef166feeb9..d574f9df194 100644 --- a/var/spack/repos/builtin/packages/py-dill/package.py +++ b/var/spack/repos/builtin/packages/py-dill/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-docutils/package.py b/var/spack/repos/builtin/packages/py-docutils/package.py index 76a723e34dc..c05100b324c 100644 --- a/var/spack/repos/builtin/packages/py-docutils/package.py +++ b/var/spack/repos/builtin/packages/py-docutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-doxypy/package.py b/var/spack/repos/builtin/packages/py-doxypy/package.py index dcfe6b3b88f..91f42249163 100644 --- a/var/spack/repos/builtin/packages/py-doxypy/package.py +++ b/var/spack/repos/builtin/packages/py-doxypy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-doxypypy/package.py b/var/spack/repos/builtin/packages/py-doxypypy/package.py index 7d22fe1c650..cdb8f07f86b 100644 --- a/var/spack/repos/builtin/packages/py-doxypypy/package.py +++ b/var/spack/repos/builtin/packages/py-doxypypy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-dryscrape/package.py b/var/spack/repos/builtin/packages/py-dryscrape/package.py index e3dd3506a2b..00fd1e79192 100644 --- a/var/spack/repos/builtin/packages/py-dryscrape/package.py +++ b/var/spack/repos/builtin/packages/py-dryscrape/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-dxchange/package.py b/var/spack/repos/builtin/packages/py-dxchange/package.py index b981960438a..b273beb8b45 100644 --- a/var/spack/repos/builtin/packages/py-dxchange/package.py +++ b/var/spack/repos/builtin/packages/py-dxchange/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-dxfile/package.py b/var/spack/repos/builtin/packages/py-dxfile/package.py index ed8cc0b6318..43398b2e9c8 100644 --- a/var/spack/repos/builtin/packages/py-dxfile/package.py +++ b/var/spack/repos/builtin/packages/py-dxfile/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py b/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py index 0f1aa923ec9..d8b6b8a887a 100644 --- a/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py +++ b/var/spack/repos/builtin/packages/py-easybuild-easyblocks/package.py @@ -5,7 +5,7 @@ # Created by Kenneth Hoste, kenneth.hoste@gmail.com # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py b/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py index 16315577317..c1c51280cf6 100644 --- a/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py +++ b/var/spack/repos/builtin/packages/py-easybuild-easyconfigs/package.py @@ -5,7 +5,7 @@ # Created by Kenneth Hoste, kenneth.hoste@gmail.com # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py index 7b3bfa5e49b..5d37c3c84c5 100644 --- a/var/spack/repos/builtin/packages/py-easybuild-framework/package.py +++ b/var/spack/repos/builtin/packages/py-easybuild-framework/package.py @@ -5,7 +5,7 @@ # Created by Kenneth Hoste, kenneth.hoste@gmail.com # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-edffile/package.py b/var/spack/repos/builtin/packages/py-edffile/package.py index 878387a8ee0..28e8fa3746d 100644 --- a/var/spack/repos/builtin/packages/py-edffile/package.py +++ b/var/spack/repos/builtin/packages/py-edffile/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-elasticsearch/package.py b/var/spack/repos/builtin/packages/py-elasticsearch/package.py index 823d3cc741b..645c0bbe596 100644 --- a/var/spack/repos/builtin/packages/py-elasticsearch/package.py +++ b/var/spack/repos/builtin/packages/py-elasticsearch/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-elephant/package.py b/var/spack/repos/builtin/packages/py-elephant/package.py index eee222e19a7..5a690e3b9fb 100644 --- a/var/spack/repos/builtin/packages/py-elephant/package.py +++ b/var/spack/repos/builtin/packages/py-elephant/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-emcee/package.py b/var/spack/repos/builtin/packages/py-emcee/package.py index 65fa67eb34c..2410244919d 100644 --- a/var/spack/repos/builtin/packages/py-emcee/package.py +++ b/var/spack/repos/builtin/packages/py-emcee/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-entrypoints/package.py b/var/spack/repos/builtin/packages/py-entrypoints/package.py index 2c5082ffd14..f93092b3179 100644 --- a/var/spack/repos/builtin/packages/py-entrypoints/package.py +++ b/var/spack/repos/builtin/packages/py-entrypoints/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-enum34/package.py b/var/spack/repos/builtin/packages/py-enum34/package.py index 572734a895d..9f9e05bd7ce 100644 --- a/var/spack/repos/builtin/packages/py-enum34/package.py +++ b/var/spack/repos/builtin/packages/py-enum34/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-epydoc/package.py b/var/spack/repos/builtin/packages/py-epydoc/package.py index e13d431f914..93a6018acbe 100644 --- a/var/spack/repos/builtin/packages/py-epydoc/package.py +++ b/var/spack/repos/builtin/packages/py-epydoc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-et-xmlfile/package.py b/var/spack/repos/builtin/packages/py-et-xmlfile/package.py index eccb9417019..565440158eb 100644 --- a/var/spack/repos/builtin/packages/py-et-xmlfile/package.py +++ b/var/spack/repos/builtin/packages/py-et-xmlfile/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-fasteners/package.py b/var/spack/repos/builtin/packages/py-fasteners/package.py index a5805b755d4..ae496b42dc2 100644 --- a/var/spack/repos/builtin/packages/py-fasteners/package.py +++ b/var/spack/repos/builtin/packages/py-fasteners/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-fiscalyear/package.py b/var/spack/repos/builtin/packages/py-fiscalyear/package.py index 2c9cc771c2f..866067e1b35 100644 --- a/var/spack/repos/builtin/packages/py-fiscalyear/package.py +++ b/var/spack/repos/builtin/packages/py-fiscalyear/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-flake8/package.py b/var/spack/repos/builtin/packages/py-flake8/package.py index fdaed8c3945..eb99ab3a1d4 100644 --- a/var/spack/repos/builtin/packages/py-flake8/package.py +++ b/var/spack/repos/builtin/packages/py-flake8/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-flask/package.py b/var/spack/repos/builtin/packages/py-flask/package.py index 15f668642cc..b489ce131ec 100644 --- a/var/spack/repos/builtin/packages/py-flask/package.py +++ b/var/spack/repos/builtin/packages/py-flask/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-flexx/package.py b/var/spack/repos/builtin/packages/py-flexx/package.py index 6e6fbad4b3c..43103311995 100644 --- a/var/spack/repos/builtin/packages/py-flexx/package.py +++ b/var/spack/repos/builtin/packages/py-flexx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-funcsigs/package.py b/var/spack/repos/builtin/packages/py-funcsigs/package.py index ea8b71f25f0..7d173842d1e 100644 --- a/var/spack/repos/builtin/packages/py-funcsigs/package.py +++ b/var/spack/repos/builtin/packages/py-funcsigs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-functools32/package.py b/var/spack/repos/builtin/packages/py-functools32/package.py index f2fb0df555f..a01b022df51 100644 --- a/var/spack/repos/builtin/packages/py-functools32/package.py +++ b/var/spack/repos/builtin/packages/py-functools32/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-future/package.py b/var/spack/repos/builtin/packages/py-future/package.py index 6c41fd70706..25c3e186492 100644 --- a/var/spack/repos/builtin/packages/py-future/package.py +++ b/var/spack/repos/builtin/packages/py-future/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-futures/package.py b/var/spack/repos/builtin/packages/py-futures/package.py index c6c1d8134fa..7d78f3f875e 100644 --- a/var/spack/repos/builtin/packages/py-futures/package.py +++ b/var/spack/repos/builtin/packages/py-futures/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-genders/package.py b/var/spack/repos/builtin/packages/py-genders/package.py index 2123f4eb3fc..2acc438c6f8 100644 --- a/var/spack/repos/builtin/packages/py-genders/package.py +++ b/var/spack/repos/builtin/packages/py-genders/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-genshi/package.py b/var/spack/repos/builtin/packages/py-genshi/package.py index 462dbfe802c..4d721ae74c3 100644 --- a/var/spack/repos/builtin/packages/py-genshi/package.py +++ b/var/spack/repos/builtin/packages/py-genshi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-git-review/package.py b/var/spack/repos/builtin/packages/py-git-review/package.py index 6e6ebbbdafe..8987b1c3026 100644 --- a/var/spack/repos/builtin/packages/py-git-review/package.py +++ b/var/spack/repos/builtin/packages/py-git-review/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-git2/package.py b/var/spack/repos/builtin/packages/py-git2/package.py index a750ecae0e0..5adafe1f965 100644 --- a/var/spack/repos/builtin/packages/py-git2/package.py +++ b/var/spack/repos/builtin/packages/py-git2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-gnuplot/package.py b/var/spack/repos/builtin/packages/py-gnuplot/package.py index a23aa2585f1..fe1c48fe882 100644 --- a/var/spack/repos/builtin/packages/py-gnuplot/package.py +++ b/var/spack/repos/builtin/packages/py-gnuplot/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-griddataformats/package.py b/var/spack/repos/builtin/packages/py-griddataformats/package.py index ee77959e964..81ef3b9ddac 100644 --- a/var/spack/repos/builtin/packages/py-griddataformats/package.py +++ b/var/spack/repos/builtin/packages/py-griddataformats/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-guidata/package.py b/var/spack/repos/builtin/packages/py-guidata/package.py index 57863de39c7..ad960bb5d0a 100644 --- a/var/spack/repos/builtin/packages/py-guidata/package.py +++ b/var/spack/repos/builtin/packages/py-guidata/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-guiqwt/package.py b/var/spack/repos/builtin/packages/py-guiqwt/package.py index 8422ff51972..585c5f4598e 100644 --- a/var/spack/repos/builtin/packages/py-guiqwt/package.py +++ b/var/spack/repos/builtin/packages/py-guiqwt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index 34ef7b121ce..9838f56db5f 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-html2text/package.py b/var/spack/repos/builtin/packages/py-html2text/package.py index 32341f328a5..7ea6dc59212 100644 --- a/var/spack/repos/builtin/packages/py-html2text/package.py +++ b/var/spack/repos/builtin/packages/py-html2text/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-html5lib/package.py b/var/spack/repos/builtin/packages/py-html5lib/package.py index 9a8664fe43c..05a5f5ceeac 100644 --- a/var/spack/repos/builtin/packages/py-html5lib/package.py +++ b/var/spack/repos/builtin/packages/py-html5lib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-httpbin/package.py b/var/spack/repos/builtin/packages/py-httpbin/package.py index 70557ca8406..0d426c5e2cc 100644 --- a/var/spack/repos/builtin/packages/py-httpbin/package.py +++ b/var/spack/repos/builtin/packages/py-httpbin/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-hypothesis/package.py b/var/spack/repos/builtin/packages/py-hypothesis/package.py index 866d151f3e7..d2bcfed2f2b 100644 --- a/var/spack/repos/builtin/packages/py-hypothesis/package.py +++ b/var/spack/repos/builtin/packages/py-hypothesis/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-idna/package.py b/var/spack/repos/builtin/packages/py-idna/package.py index 5a191430f2b..aa8c230bf74 100644 --- a/var/spack/repos/builtin/packages/py-idna/package.py +++ b/var/spack/repos/builtin/packages/py-idna/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-imagesize/package.py b/var/spack/repos/builtin/packages/py-imagesize/package.py index 44491f79f09..3c8de20db02 100644 --- a/var/spack/repos/builtin/packages/py-imagesize/package.py +++ b/var/spack/repos/builtin/packages/py-imagesize/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-iminuit/package.py b/var/spack/repos/builtin/packages/py-iminuit/package.py index 0b93a0f2b89..b4b51f67f0a 100644 --- a/var/spack/repos/builtin/packages/py-iminuit/package.py +++ b/var/spack/repos/builtin/packages/py-iminuit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-importlib/package.py b/var/spack/repos/builtin/packages/py-importlib/package.py index 8d16c6b80aa..3375cc98539 100644 --- a/var/spack/repos/builtin/packages/py-importlib/package.py +++ b/var/spack/repos/builtin/packages/py-importlib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ipaddress/package.py b/var/spack/repos/builtin/packages/py-ipaddress/package.py index 5e088ed75e3..d7a7e69e7f4 100644 --- a/var/spack/repos/builtin/packages/py-ipaddress/package.py +++ b/var/spack/repos/builtin/packages/py-ipaddress/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ipdb/package.py b/var/spack/repos/builtin/packages/py-ipdb/package.py index 67a9231ca53..8c6598d109e 100644 --- a/var/spack/repos/builtin/packages/py-ipdb/package.py +++ b/var/spack/repos/builtin/packages/py-ipdb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ipykernel/package.py b/var/spack/repos/builtin/packages/py-ipykernel/package.py index ff68f09fff2..943db24cee7 100644 --- a/var/spack/repos/builtin/packages/py-ipykernel/package.py +++ b/var/spack/repos/builtin/packages/py-ipykernel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ipython-genutils/package.py b/var/spack/repos/builtin/packages/py-ipython-genutils/package.py index 55496e1eb9f..d72d2ff5158 100644 --- a/var/spack/repos/builtin/packages/py-ipython-genutils/package.py +++ b/var/spack/repos/builtin/packages/py-ipython-genutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py index f559c163aba..16da6027e47 100644 --- a/var/spack/repos/builtin/packages/py-ipython/package.py +++ b/var/spack/repos/builtin/packages/py-ipython/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ipywidgets/package.py b/var/spack/repos/builtin/packages/py-ipywidgets/package.py index 03b0c8bfcff..496477ba8af 100644 --- a/var/spack/repos/builtin/packages/py-ipywidgets/package.py +++ b/var/spack/repos/builtin/packages/py-ipywidgets/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-itsdangerous/package.py b/var/spack/repos/builtin/packages/py-itsdangerous/package.py index 82e66c2eebc..a693c341aed 100644 --- a/var/spack/repos/builtin/packages/py-itsdangerous/package.py +++ b/var/spack/repos/builtin/packages/py-itsdangerous/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-jdcal/package.py b/var/spack/repos/builtin/packages/py-jdcal/package.py index 5eb2e57d823..b4e08ca77f1 100644 --- a/var/spack/repos/builtin/packages/py-jdcal/package.py +++ b/var/spack/repos/builtin/packages/py-jdcal/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-jedi/package.py b/var/spack/repos/builtin/packages/py-jedi/package.py index 81f83f9ab76..c90c77ee68e 100644 --- a/var/spack/repos/builtin/packages/py-jedi/package.py +++ b/var/spack/repos/builtin/packages/py-jedi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-jinja2/package.py b/var/spack/repos/builtin/packages/py-jinja2/package.py index 36439d1d36a..31180594dec 100644 --- a/var/spack/repos/builtin/packages/py-jinja2/package.py +++ b/var/spack/repos/builtin/packages/py-jinja2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-joblib/package.py b/var/spack/repos/builtin/packages/py-joblib/package.py index 75ebae68048..50e10663a77 100644 --- a/var/spack/repos/builtin/packages/py-joblib/package.py +++ b/var/spack/repos/builtin/packages/py-joblib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-jpype/package.py b/var/spack/repos/builtin/packages/py-jpype/package.py index 3c20c813f8e..b82a43ca2ff 100644 --- a/var/spack/repos/builtin/packages/py-jpype/package.py +++ b/var/spack/repos/builtin/packages/py-jpype/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-jsonschema/package.py b/var/spack/repos/builtin/packages/py-jsonschema/package.py index b1a0ac6606c..8a69361bab1 100644 --- a/var/spack/repos/builtin/packages/py-jsonschema/package.py +++ b/var/spack/repos/builtin/packages/py-jsonschema/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-junit-xml/package.py b/var/spack/repos/builtin/packages/py-junit-xml/package.py index 887193e347b..3c21b5056b2 100644 --- a/var/spack/repos/builtin/packages/py-junit-xml/package.py +++ b/var/spack/repos/builtin/packages/py-junit-xml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-jupyter-client/package.py b/var/spack/repos/builtin/packages/py-jupyter-client/package.py index 2d89616afde..8fc9a12445c 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-client/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-client/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-jupyter-console/package.py b/var/spack/repos/builtin/packages/py-jupyter-console/package.py index 6ed49b72c9e..bd039a765c4 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-console/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-console/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-jupyter-core/package.py b/var/spack/repos/builtin/packages/py-jupyter-core/package.py index a3d2bee1a90..547133a3450 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-core/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-core/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py b/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py index b82f8b2787f..2f0f9e977dc 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py index 1ca706b20eb..9c1e639667c 100644 --- a/var/spack/repos/builtin/packages/py-keras/package.py +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-latexcodec/package.py b/var/spack/repos/builtin/packages/py-latexcodec/package.py index bdc96d2c68b..2f9ef632207 100644 --- a/var/spack/repos/builtin/packages/py-latexcodec/package.py +++ b/var/spack/repos/builtin/packages/py-latexcodec/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-lazy/package.py b/var/spack/repos/builtin/packages/py-lazy/package.py index 7dd8775f8aa..e1946dc9c8d 100644 --- a/var/spack/repos/builtin/packages/py-lazy/package.py +++ b/var/spack/repos/builtin/packages/py-lazy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-lazyarray/package.py b/var/spack/repos/builtin/packages/py-lazyarray/package.py index 8dcc999f62d..2af26242432 100644 --- a/var/spack/repos/builtin/packages/py-lazyarray/package.py +++ b/var/spack/repos/builtin/packages/py-lazyarray/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-libconf/package.py b/var/spack/repos/builtin/packages/py-libconf/package.py index d43479d9ef3..f5beae266b7 100644 --- a/var/spack/repos/builtin/packages/py-libconf/package.py +++ b/var/spack/repos/builtin/packages/py-libconf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-lit/package.py b/var/spack/repos/builtin/packages/py-lit/package.py index 238d1b15001..711986ae3f7 100644 --- a/var/spack/repos/builtin/packages/py-lit/package.py +++ b/var/spack/repos/builtin/packages/py-lit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-lmfit/package.py b/var/spack/repos/builtin/packages/py-lmfit/package.py index 460c68573da..7d07a8e0399 100644 --- a/var/spack/repos/builtin/packages/py-lmfit/package.py +++ b/var/spack/repos/builtin/packages/py-lmfit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-lockfile/package.py b/var/spack/repos/builtin/packages/py-lockfile/package.py index 1e57e6a1d7d..12f606588d6 100644 --- a/var/spack/repos/builtin/packages/py-lockfile/package.py +++ b/var/spack/repos/builtin/packages/py-lockfile/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-logilab-common/package.py b/var/spack/repos/builtin/packages/py-logilab-common/package.py index 4c20885760f..ab71df76890 100644 --- a/var/spack/repos/builtin/packages/py-logilab-common/package.py +++ b/var/spack/repos/builtin/packages/py-logilab-common/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-lxml/package.py b/var/spack/repos/builtin/packages/py-lxml/package.py index fe63f876394..9299d5c8776 100644 --- a/var/spack/repos/builtin/packages/py-lxml/package.py +++ b/var/spack/repos/builtin/packages/py-lxml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-macs2/package.py b/var/spack/repos/builtin/packages/py-macs2/package.py index 42318faa2a0..d4bfd1b0f47 100644 --- a/var/spack/repos/builtin/packages/py-macs2/package.py +++ b/var/spack/repos/builtin/packages/py-macs2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mako/package.py b/var/spack/repos/builtin/packages/py-mako/package.py index 0707d0b12fa..b1ea98d9636 100644 --- a/var/spack/repos/builtin/packages/py-mako/package.py +++ b/var/spack/repos/builtin/packages/py-mako/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-markdown/package.py b/var/spack/repos/builtin/packages/py-markdown/package.py index 1c9be594ae8..71831ccb997 100644 --- a/var/spack/repos/builtin/packages/py-markdown/package.py +++ b/var/spack/repos/builtin/packages/py-markdown/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-markupsafe/package.py b/var/spack/repos/builtin/packages/py-markupsafe/package.py index 6c8af74a9f0..95c6a115c38 100644 --- a/var/spack/repos/builtin/packages/py-markupsafe/package.py +++ b/var/spack/repos/builtin/packages/py-markupsafe/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 24dfab5c928..ec5e33b45fa 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mccabe/package.py b/var/spack/repos/builtin/packages/py-mccabe/package.py index c413193cdc6..87a90278814 100644 --- a/var/spack/repos/builtin/packages/py-mccabe/package.py +++ b/var/spack/repos/builtin/packages/py-mccabe/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mdanalysis/package.py b/var/spack/repos/builtin/packages/py-mdanalysis/package.py index 9f96b048365..6d6f9455008 100644 --- a/var/spack/repos/builtin/packages/py-mdanalysis/package.py +++ b/var/spack/repos/builtin/packages/py-mdanalysis/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-meep/package.py b/var/spack/repos/builtin/packages/py-meep/package.py index 64ca4e25d93..ef50cf3f3a5 100644 --- a/var/spack/repos/builtin/packages/py-meep/package.py +++ b/var/spack/repos/builtin/packages/py-meep/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mistune/package.py b/var/spack/repos/builtin/packages/py-mistune/package.py index cc859d4b787..a10f0b5024d 100644 --- a/var/spack/repos/builtin/packages/py-mistune/package.py +++ b/var/spack/repos/builtin/packages/py-mistune/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mock/package.py b/var/spack/repos/builtin/packages/py-mock/package.py index 0ea571080a6..f5653117d9f 100644 --- a/var/spack/repos/builtin/packages/py-mock/package.py +++ b/var/spack/repos/builtin/packages/py-mock/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mongo/package.py b/var/spack/repos/builtin/packages/py-mongo/package.py index e5f1debbd0a..90fec7bc617 100644 --- a/var/spack/repos/builtin/packages/py-mongo/package.py +++ b/var/spack/repos/builtin/packages/py-mongo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-monotonic/package.py b/var/spack/repos/builtin/packages/py-monotonic/package.py index b02f954ccc9..3567c70db17 100644 --- a/var/spack/repos/builtin/packages/py-monotonic/package.py +++ b/var/spack/repos/builtin/packages/py-monotonic/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-monty/package.py b/var/spack/repos/builtin/packages/py-monty/package.py index 19057d51d39..49937244500 100644 --- a/var/spack/repos/builtin/packages/py-monty/package.py +++ b/var/spack/repos/builtin/packages/py-monty/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mpi4py/package.py b/var/spack/repos/builtin/packages/py-mpi4py/package.py index 7f8dc6b9860..a2ca9d83d8a 100644 --- a/var/spack/repos/builtin/packages/py-mpi4py/package.py +++ b/var/spack/repos/builtin/packages/py-mpi4py/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mpmath/package.py b/var/spack/repos/builtin/packages/py-mpmath/package.py index d379e0bd036..7b57ec4d739 100644 --- a/var/spack/repos/builtin/packages/py-mpmath/package.py +++ b/var/spack/repos/builtin/packages/py-mpmath/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-multiprocess/package.py b/var/spack/repos/builtin/packages/py-multiprocess/package.py index fc4576a538f..8e64a2a9291 100644 --- a/var/spack/repos/builtin/packages/py-multiprocess/package.py +++ b/var/spack/repos/builtin/packages/py-multiprocess/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mx/package.py b/var/spack/repos/builtin/packages/py-mx/package.py index 9af74555b14..98b5d316cd6 100644 --- a/var/spack/repos/builtin/packages/py-mx/package.py +++ b/var/spack/repos/builtin/packages/py-mx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-myhdl/package.py b/var/spack/repos/builtin/packages/py-myhdl/package.py index cf4936a3f93..ee8f8377d61 100644 --- a/var/spack/repos/builtin/packages/py-myhdl/package.py +++ b/var/spack/repos/builtin/packages/py-myhdl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-mysqldb1/package.py b/var/spack/repos/builtin/packages/py-mysqldb1/package.py index 8fd794aadb3..b24ace3f796 100644 --- a/var/spack/repos/builtin/packages/py-mysqldb1/package.py +++ b/var/spack/repos/builtin/packages/py-mysqldb1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-nbconvert/package.py b/var/spack/repos/builtin/packages/py-nbconvert/package.py index 27a8259c298..4b46ae664f6 100644 --- a/var/spack/repos/builtin/packages/py-nbconvert/package.py +++ b/var/spack/repos/builtin/packages/py-nbconvert/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-nbformat/package.py b/var/spack/repos/builtin/packages/py-nbformat/package.py index e3180965354..d6006a1db45 100644 --- a/var/spack/repos/builtin/packages/py-nbformat/package.py +++ b/var/spack/repos/builtin/packages/py-nbformat/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-neo/package.py b/var/spack/repos/builtin/packages/py-neo/package.py index b7a5180add7..a4b9c8eb835 100644 --- a/var/spack/repos/builtin/packages/py-neo/package.py +++ b/var/spack/repos/builtin/packages/py-neo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,8 +26,8 @@ class PyNeo(PythonPackage): - """Neo is a package for representing electrophysiology data in Python, - together with support for reading a wide range of neurophysiology + """Neo is a package for representing electrophysiology data in Python, + together with support for reading a wide range of neurophysiology file formats""" homepage = "http://neuralensemble.org/neo" diff --git a/var/spack/repos/builtin/packages/py-nestle/package.py b/var/spack/repos/builtin/packages/py-nestle/package.py index 22dc9debe1e..1c5864ed91e 100644 --- a/var/spack/repos/builtin/packages/py-nestle/package.py +++ b/var/spack/repos/builtin/packages/py-nestle/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-netcdf4/package.py b/var/spack/repos/builtin/packages/py-netcdf4/package.py index e49cc5410b8..a27ea515807 100644 --- a/var/spack/repos/builtin/packages/py-netcdf4/package.py +++ b/var/spack/repos/builtin/packages/py-netcdf4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-netifaces/package.py b/var/spack/repos/builtin/packages/py-netifaces/package.py index 3229af495ff..6a069ae11e4 100644 --- a/var/spack/repos/builtin/packages/py-netifaces/package.py +++ b/var/spack/repos/builtin/packages/py-netifaces/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-networkx/package.py b/var/spack/repos/builtin/packages/py-networkx/package.py index 6eca70c15ca..6ddff5988f2 100644 --- a/var/spack/repos/builtin/packages/py-networkx/package.py +++ b/var/spack/repos/builtin/packages/py-networkx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-nose/package.py b/var/spack/repos/builtin/packages/py-nose/package.py index f3f08029a47..6876620e246 100644 --- a/var/spack/repos/builtin/packages/py-nose/package.py +++ b/var/spack/repos/builtin/packages/py-nose/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-nosexcover/package.py b/var/spack/repos/builtin/packages/py-nosexcover/package.py index 277070b0d93..5ec76bc1949 100644 --- a/var/spack/repos/builtin/packages/py-nosexcover/package.py +++ b/var/spack/repos/builtin/packages/py-nosexcover/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-numexpr/package.py b/var/spack/repos/builtin/packages/py-numexpr/package.py index ee89820f5b4..57250b645bc 100644 --- a/var/spack/repos/builtin/packages/py-numexpr/package.py +++ b/var/spack/repos/builtin/packages/py-numexpr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index c713162e9c5..4eac983706d 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-numpydoc/package.py b/var/spack/repos/builtin/packages/py-numpydoc/package.py index 70f7a603a97..2052ecad241 100644 --- a/var/spack/repos/builtin/packages/py-numpydoc/package.py +++ b/var/spack/repos/builtin/packages/py-numpydoc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py b/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py index d6aea1f5ece..18ef2f59b78 100644 --- a/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py +++ b/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-openpyxl/package.py b/var/spack/repos/builtin/packages/py-openpyxl/package.py index 04d4a51f6d3..6ccb5f211d5 100644 --- a/var/spack/repos/builtin/packages/py-openpyxl/package.py +++ b/var/spack/repos/builtin/packages/py-openpyxl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ordereddict/package.py b/var/spack/repos/builtin/packages/py-ordereddict/package.py index 29d57862372..586cfa425b2 100644 --- a/var/spack/repos/builtin/packages/py-ordereddict/package.py +++ b/var/spack/repos/builtin/packages/py-ordereddict/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-oset/package.py b/var/spack/repos/builtin/packages/py-oset/package.py index 54627323b59..50428fdd0e6 100644 --- a/var/spack/repos/builtin/packages/py-oset/package.py +++ b/var/spack/repos/builtin/packages/py-oset/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-packaging/package.py b/var/spack/repos/builtin/packages/py-packaging/package.py index 4ee97a507ac..ec165f72b9a 100644 --- a/var/spack/repos/builtin/packages/py-packaging/package.py +++ b/var/spack/repos/builtin/packages/py-packaging/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-palettable/package.py b/var/spack/repos/builtin/packages/py-palettable/package.py index b432d4ee288..7fa6358d181 100644 --- a/var/spack/repos/builtin/packages/py-palettable/package.py +++ b/var/spack/repos/builtin/packages/py-palettable/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py index 65e70e0f5e4..e8283c90eb7 100644 --- a/var/spack/repos/builtin/packages/py-pandas/package.py +++ b/var/spack/repos/builtin/packages/py-pandas/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-paramiko/package.py b/var/spack/repos/builtin/packages/py-paramiko/package.py index 94ddb85ec26..033145c0e0a 100644 --- a/var/spack/repos/builtin/packages/py-paramiko/package.py +++ b/var/spack/repos/builtin/packages/py-paramiko/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pathlib2/package.py b/var/spack/repos/builtin/packages/py-pathlib2/package.py index 5cfc66e8712..6fdb105c1cb 100644 --- a/var/spack/repos/builtin/packages/py-pathlib2/package.py +++ b/var/spack/repos/builtin/packages/py-pathlib2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pathos/package.py b/var/spack/repos/builtin/packages/py-pathos/package.py index 172abdc725e..e48b20929c3 100644 --- a/var/spack/repos/builtin/packages/py-pathos/package.py +++ b/var/spack/repos/builtin/packages/py-pathos/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pathspec/package.py b/var/spack/repos/builtin/packages/py-pathspec/package.py index e5030abc703..e9ff10b1095 100644 --- a/var/spack/repos/builtin/packages/py-pathspec/package.py +++ b/var/spack/repos/builtin/packages/py-pathspec/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-patsy/package.py b/var/spack/repos/builtin/packages/py-patsy/package.py index 27be8bb41f4..4ebfe697f09 100644 --- a/var/spack/repos/builtin/packages/py-patsy/package.py +++ b/var/spack/repos/builtin/packages/py-patsy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pbr/package.py b/var/spack/repos/builtin/packages/py-pbr/package.py index 7036ffee8a8..e8dcae13536 100644 --- a/var/spack/repos/builtin/packages/py-pbr/package.py +++ b/var/spack/repos/builtin/packages/py-pbr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-periodictable/package.py b/var/spack/repos/builtin/packages/py-periodictable/package.py index ed1b97f1fee..84d6479fc4e 100644 --- a/var/spack/repos/builtin/packages/py-periodictable/package.py +++ b/var/spack/repos/builtin/packages/py-periodictable/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-petsc4py/package.py b/var/spack/repos/builtin/packages/py-petsc4py/package.py index d2b1d30ff1f..888890037cb 100644 --- a/var/spack/repos/builtin/packages/py-petsc4py/package.py +++ b/var/spack/repos/builtin/packages/py-petsc4py/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pexpect/package.py b/var/spack/repos/builtin/packages/py-pexpect/package.py index 5c194c44b63..6ce99cc7d04 100644 --- a/var/spack/repos/builtin/packages/py-pexpect/package.py +++ b/var/spack/repos/builtin/packages/py-pexpect/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-phonopy/package.py b/var/spack/repos/builtin/packages/py-phonopy/package.py index b7f1003e282..852f6bd0b44 100644 --- a/var/spack/repos/builtin/packages/py-phonopy/package.py +++ b/var/spack/repos/builtin/packages/py-phonopy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pickleshare/package.py b/var/spack/repos/builtin/packages/py-pickleshare/package.py index 9bf9ff63fbc..dde89ce6f82 100644 --- a/var/spack/repos/builtin/packages/py-pickleshare/package.py +++ b/var/spack/repos/builtin/packages/py-pickleshare/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pil/package.py b/var/spack/repos/builtin/packages/py-pil/package.py index fb14fb9b272..ce65d1ef778 100644 --- a/var/spack/repos/builtin/packages/py-pil/package.py +++ b/var/spack/repos/builtin/packages/py-pil/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index 6d35957819c..656c9a15f2c 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index 616884ea0d0..6cfeae82885 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pkgconfig/package.py b/var/spack/repos/builtin/packages/py-pkgconfig/package.py index 87c5b1dac26..5d6af2b8e16 100644 --- a/var/spack/repos/builtin/packages/py-pkgconfig/package.py +++ b/var/spack/repos/builtin/packages/py-pkgconfig/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ply/package.py b/var/spack/repos/builtin/packages/py-ply/package.py index f5a1e537e25..f023b7ca79a 100644 --- a/var/spack/repos/builtin/packages/py-ply/package.py +++ b/var/spack/repos/builtin/packages/py-ply/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pmw/package.py b/var/spack/repos/builtin/packages/py-pmw/package.py index 3293d94cd61..e7317bae0cd 100644 --- a/var/spack/repos/builtin/packages/py-pmw/package.py +++ b/var/spack/repos/builtin/packages/py-pmw/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pox/package.py b/var/spack/repos/builtin/packages/py-pox/package.py index 3c22c73b850..946a6fae0f4 100644 --- a/var/spack/repos/builtin/packages/py-pox/package.py +++ b/var/spack/repos/builtin/packages/py-pox/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ppft/package.py b/var/spack/repos/builtin/packages/py-ppft/package.py index a07aaf6d919..07681c57e2b 100644 --- a/var/spack/repos/builtin/packages/py-ppft/package.py +++ b/var/spack/repos/builtin/packages/py-ppft/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-prettytable/package.py b/var/spack/repos/builtin/packages/py-prettytable/package.py index 2203f68af08..12bf2e7cfa3 100644 --- a/var/spack/repos/builtin/packages/py-prettytable/package.py +++ b/var/spack/repos/builtin/packages/py-prettytable/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-proj/package.py b/var/spack/repos/builtin/packages/py-proj/package.py index cf230eb49fd..649fa40f5c2 100644 --- a/var/spack/repos/builtin/packages/py-proj/package.py +++ b/var/spack/repos/builtin/packages/py-proj/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py b/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py index da48cb932f7..35500c833b1 100644 --- a/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py +++ b/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-protobuf/package.py b/var/spack/repos/builtin/packages/py-protobuf/package.py index 4cdb3801a52..3d474586fbe 100644 --- a/var/spack/repos/builtin/packages/py-protobuf/package.py +++ b/var/spack/repos/builtin/packages/py-protobuf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-psutil/package.py b/var/spack/repos/builtin/packages/py-psutil/package.py index 539f0bdbd7f..f7b96da772c 100644 --- a/var/spack/repos/builtin/packages/py-psutil/package.py +++ b/var/spack/repos/builtin/packages/py-psutil/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ptyprocess/package.py b/var/spack/repos/builtin/packages/py-ptyprocess/package.py index 346b3fd26bb..cdd51057962 100644 --- a/var/spack/repos/builtin/packages/py-ptyprocess/package.py +++ b/var/spack/repos/builtin/packages/py-ptyprocess/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pudb/package.py b/var/spack/repos/builtin/packages/py-pudb/package.py index ea06dc0c93d..2ee28865d49 100644 --- a/var/spack/repos/builtin/packages/py-pudb/package.py +++ b/var/spack/repos/builtin/packages/py-pudb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-py/package.py b/var/spack/repos/builtin/packages/py-py/package.py index 1bba4b7252a..28d9ed75ac6 100644 --- a/var/spack/repos/builtin/packages/py-py/package.py +++ b/var/spack/repos/builtin/packages/py-py/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-py2cairo/package.py b/var/spack/repos/builtin/packages/py-py2cairo/package.py index 2eacf540c94..9bd3f9a9b17 100644 --- a/var/spack/repos/builtin/packages/py-py2cairo/package.py +++ b/var/spack/repos/builtin/packages/py-py2cairo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-py2neo/package.py b/var/spack/repos/builtin/packages/py-py2neo/package.py index 1db080ac97e..9c2ef0e8d7e 100644 --- a/var/spack/repos/builtin/packages/py-py2neo/package.py +++ b/var/spack/repos/builtin/packages/py-py2neo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-py4j/package.py b/var/spack/repos/builtin/packages/py-py4j/package.py index 3fb4b2f79f8..cdb3b4db0af 100644 --- a/var/spack/repos/builtin/packages/py-py4j/package.py +++ b/var/spack/repos/builtin/packages/py-py4j/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyasn1/package.py b/var/spack/repos/builtin/packages/py-pyasn1/package.py index 885ef06389c..666a20f758e 100644 --- a/var/spack/repos/builtin/packages/py-pyasn1/package.py +++ b/var/spack/repos/builtin/packages/py-pyasn1/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py index ee154d27488..d0b75be3a51 100644 --- a/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py +++ b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pybtex/package.py b/var/spack/repos/builtin/packages/py-pybtex/package.py index 99a0f5dfdc3..bcdbc61ca46 100644 --- a/var/spack/repos/builtin/packages/py-pybtex/package.py +++ b/var/spack/repos/builtin/packages/py-pybtex/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pychecker/package.py b/var/spack/repos/builtin/packages/py-pychecker/package.py index de09b380c91..8dcb6ee15d0 100644 --- a/var/spack/repos/builtin/packages/py-pychecker/package.py +++ b/var/spack/repos/builtin/packages/py-pychecker/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pycodestyle/package.py b/var/spack/repos/builtin/packages/py-pycodestyle/package.py index 3e668a2704a..4f69e749e94 100644 --- a/var/spack/repos/builtin/packages/py-pycodestyle/package.py +++ b/var/spack/repos/builtin/packages/py-pycodestyle/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pycparser/package.py b/var/spack/repos/builtin/packages/py-pycparser/package.py index a2c00fe33a4..d950d1578d9 100644 --- a/var/spack/repos/builtin/packages/py-pycparser/package.py +++ b/var/spack/repos/builtin/packages/py-pycparser/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pycrypto/package.py b/var/spack/repos/builtin/packages/py-pycrypto/package.py index e791d38cf12..65d78dc75dc 100644 --- a/var/spack/repos/builtin/packages/py-pycrypto/package.py +++ b/var/spack/repos/builtin/packages/py-pycrypto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pycurl/package.py b/var/spack/repos/builtin/packages/py-pycurl/package.py index f08509b3329..91a1648d3b5 100644 --- a/var/spack/repos/builtin/packages/py-pycurl/package.py +++ b/var/spack/repos/builtin/packages/py-pycurl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pydatalog/package.py b/var/spack/repos/builtin/packages/py-pydatalog/package.py index 600a34cdfc3..6a51f5dc20e 100644 --- a/var/spack/repos/builtin/packages/py-pydatalog/package.py +++ b/var/spack/repos/builtin/packages/py-pydatalog/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pydispatcher/package.py b/var/spack/repos/builtin/packages/py-pydispatcher/package.py index 198f6319aca..7f6e9b493e0 100644 --- a/var/spack/repos/builtin/packages/py-pydispatcher/package.py +++ b/var/spack/repos/builtin/packages/py-pydispatcher/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pydot/package.py b/var/spack/repos/builtin/packages/py-pydot/package.py index 844840a6064..f843bcbe2ba 100644 --- a/var/spack/repos/builtin/packages/py-pydot/package.py +++ b/var/spack/repos/builtin/packages/py-pydot/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyelftools/package.py b/var/spack/repos/builtin/packages/py-pyelftools/package.py index d586f14f0d0..23c8b4ef904 100644 --- a/var/spack/repos/builtin/packages/py-pyelftools/package.py +++ b/var/spack/repos/builtin/packages/py-pyelftools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyfftw/package.py b/var/spack/repos/builtin/packages/py-pyfftw/package.py index d26f2756c86..c9f32f57ff6 100644 --- a/var/spack/repos/builtin/packages/py-pyfftw/package.py +++ b/var/spack/repos/builtin/packages/py-pyfftw/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyflakes/package.py b/var/spack/repos/builtin/packages/py-pyflakes/package.py index 53674bb6e45..e816f1b992d 100644 --- a/var/spack/repos/builtin/packages/py-pyflakes/package.py +++ b/var/spack/repos/builtin/packages/py-pyflakes/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pygments/package.py b/var/spack/repos/builtin/packages/py-pygments/package.py index 771245cc109..e814589cc5e 100644 --- a/var/spack/repos/builtin/packages/py-pygments/package.py +++ b/var/spack/repos/builtin/packages/py-pygments/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pygobject/package.py b/var/spack/repos/builtin/packages/py-pygobject/package.py index 4cb6d6ccb06..10b9b5ecea5 100644 --- a/var/spack/repos/builtin/packages/py-pygobject/package.py +++ b/var/spack/repos/builtin/packages/py-pygobject/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pygtk/package.py b/var/spack/repos/builtin/packages/py-pygtk/package.py index 5d34a3cc86f..57f422437aa 100644 --- a/var/spack/repos/builtin/packages/py-pygtk/package.py +++ b/var/spack/repos/builtin/packages/py-pygtk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pylint/package.py b/var/spack/repos/builtin/packages/py-pylint/package.py index b825ed68dc8..4df0e09c9f5 100644 --- a/var/spack/repos/builtin/packages/py-pylint/package.py +++ b/var/spack/repos/builtin/packages/py-pylint/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pymatgen/package.py b/var/spack/repos/builtin/packages/py-pymatgen/package.py index 0ea4907b1b1..d9444100840 100644 --- a/var/spack/repos/builtin/packages/py-pymatgen/package.py +++ b/var/spack/repos/builtin/packages/py-pymatgen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyminifier/package.py b/var/spack/repos/builtin/packages/py-pyminifier/package.py index 8562a7a4728..d085d49ea71 100644 --- a/var/spack/repos/builtin/packages/py-pyminifier/package.py +++ b/var/spack/repos/builtin/packages/py-pyminifier/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pympler/package.py b/var/spack/repos/builtin/packages/py-pympler/package.py index 51c77f117db..9ca0ddc0cf4 100644 --- a/var/spack/repos/builtin/packages/py-pympler/package.py +++ b/var/spack/repos/builtin/packages/py-pympler/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pynn/package.py b/var/spack/repos/builtin/packages/py-pynn/package.py index ffe0ea64af0..420c2d238bc 100644 --- a/var/spack/repos/builtin/packages/py-pynn/package.py +++ b/var/spack/repos/builtin/packages/py-pynn/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pypar/package.py b/var/spack/repos/builtin/packages/py-pypar/package.py index c95698d83d3..8c848261744 100644 --- a/var/spack/repos/builtin/packages/py-pypar/package.py +++ b/var/spack/repos/builtin/packages/py-pypar/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyparsing/package.py b/var/spack/repos/builtin/packages/py-pyparsing/package.py index 9baca31e917..ae4f3a3d9f5 100644 --- a/var/spack/repos/builtin/packages/py-pyparsing/package.py +++ b/var/spack/repos/builtin/packages/py-pyparsing/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyprof2html/package.py b/var/spack/repos/builtin/packages/py-pyprof2html/package.py index 19e3967e350..0014d6127af 100644 --- a/var/spack/repos/builtin/packages/py-pyprof2html/package.py +++ b/var/spack/repos/builtin/packages/py-pyprof2html/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyqt/package.py b/var/spack/repos/builtin/packages/py-pyqt/package.py index e1e87880e0f..3aed68f8456 100644 --- a/var/spack/repos/builtin/packages/py-pyqt/package.py +++ b/var/spack/repos/builtin/packages/py-pyqt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyserial/package.py b/var/spack/repos/builtin/packages/py-pyserial/package.py index 98ecd8bffd2..e2ba88d660c 100644 --- a/var/spack/repos/builtin/packages/py-pyserial/package.py +++ b/var/spack/repos/builtin/packages/py-pyserial/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyside/package.py b/var/spack/repos/builtin/packages/py-pyside/package.py index 961aef78646..7735fc28df6 100644 --- a/var/spack/repos/builtin/packages/py-pyside/package.py +++ b/var/spack/repos/builtin/packages/py-pyside/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pysocks/package.py b/var/spack/repos/builtin/packages/py-pysocks/package.py index 603799c4468..6d0ff52400b 100644 --- a/var/spack/repos/builtin/packages/py-pysocks/package.py +++ b/var/spack/repos/builtin/packages/py-pysocks/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pytables/package.py b/var/spack/repos/builtin/packages/py-pytables/package.py index 3d9bfb2c2fc..00fd9309beb 100644 --- a/var/spack/repos/builtin/packages/py-pytables/package.py +++ b/var/spack/repos/builtin/packages/py-pytables/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pytest-cov/package.py b/var/spack/repos/builtin/packages/py-pytest-cov/package.py index f40fc7872ed..3a7496f7668 100644 --- a/var/spack/repos/builtin/packages/py-pytest-cov/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-cov/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -29,7 +29,7 @@ class PyPytestCov(PythonPackage): """Pytest plugin for measuring coverage.""" homepage = "https://github.com/pytest-dev/pytest-cov" - url = "https://pypi.io/packages/source/p/pytest-cov/pytest-cov-2.3.1.tar.gz" + url = "https://pypi.io/packages/source/p/pytest-cov/pytest-cov-2.3.1.tar.gz" version('2.3.1', '8e7475454313a035d08f387ee6d725cb') diff --git a/var/spack/repos/builtin/packages/py-pytest-flake8/package.py b/var/spack/repos/builtin/packages/py-pytest-flake8/package.py index 8a3ee5bb4a2..8299fd7dc98 100644 --- a/var/spack/repos/builtin/packages/py-pytest-flake8/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-flake8/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py b/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py index 2eb498987df..74e0b9e9336 100644 --- a/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pytest-mock/package.py b/var/spack/repos/builtin/packages/py-pytest-mock/package.py index 354b799e923..9cd84a01c38 100644 --- a/var/spack/repos/builtin/packages/py-pytest-mock/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-mock/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pytest-runner/package.py b/var/spack/repos/builtin/packages/py-pytest-runner/package.py index 02ef5dc09db..114a9dcd13a 100644 --- a/var/spack/repos/builtin/packages/py-pytest-runner/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-runner/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pytest/package.py b/var/spack/repos/builtin/packages/py-pytest/package.py index c1c4ee534c6..965cb26a8dd 100644 --- a/var/spack/repos/builtin/packages/py-pytest/package.py +++ b/var/spack/repos/builtin/packages/py-pytest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-python-daemon/package.py b/var/spack/repos/builtin/packages/py-python-daemon/package.py index 9ed085f0310..3e61231c8e9 100644 --- a/var/spack/repos/builtin/packages/py-python-daemon/package.py +++ b/var/spack/repos/builtin/packages/py-python-daemon/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-python-gitlab/package.py b/var/spack/repos/builtin/packages/py-python-gitlab/package.py index 24feb1c5fa2..79a5f82fbff 100644 --- a/var/spack/repos/builtin/packages/py-python-gitlab/package.py +++ b/var/spack/repos/builtin/packages/py-python-gitlab/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pythonqwt/package.py b/var/spack/repos/builtin/packages/py-pythonqwt/package.py index 22ede1f8684..fd4f2825cb2 100644 --- a/var/spack/repos/builtin/packages/py-pythonqwt/package.py +++ b/var/spack/repos/builtin/packages/py-pythonqwt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pytz/package.py b/var/spack/repos/builtin/packages/py-pytz/package.py index 6289651a290..0bcadd82386 100644 --- a/var/spack/repos/builtin/packages/py-pytz/package.py +++ b/var/spack/repos/builtin/packages/py-pytz/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pywavelets/package.py b/var/spack/repos/builtin/packages/py-pywavelets/package.py index 8dbb5977028..ffe1d5364c6 100644 --- a/var/spack/repos/builtin/packages/py-pywavelets/package.py +++ b/var/spack/repos/builtin/packages/py-pywavelets/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-pyyaml/package.py b/var/spack/repos/builtin/packages/py-pyyaml/package.py index 94d8fdd0e6e..def71814e3a 100644 --- a/var/spack/repos/builtin/packages/py-pyyaml/package.py +++ b/var/spack/repos/builtin/packages/py-pyyaml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-qtawesome/package.py b/var/spack/repos/builtin/packages/py-qtawesome/package.py index 72fb53e3df7..abaabc45f41 100644 --- a/var/spack/repos/builtin/packages/py-qtawesome/package.py +++ b/var/spack/repos/builtin/packages/py-qtawesome/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-qtconsole/package.py b/var/spack/repos/builtin/packages/py-qtconsole/package.py index 0fba2499882..6fde8783b67 100644 --- a/var/spack/repos/builtin/packages/py-qtconsole/package.py +++ b/var/spack/repos/builtin/packages/py-qtconsole/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-qtpy/package.py b/var/spack/repos/builtin/packages/py-qtpy/package.py index aeaf012999c..4471e33a585 100644 --- a/var/spack/repos/builtin/packages/py-qtpy/package.py +++ b/var/spack/repos/builtin/packages/py-qtpy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-quantities/package.py b/var/spack/repos/builtin/packages/py-quantities/package.py index 617415e8394..c74e897805a 100644 --- a/var/spack/repos/builtin/packages/py-quantities/package.py +++ b/var/spack/repos/builtin/packages/py-quantities/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-radical-utils/package.py b/var/spack/repos/builtin/packages/py-radical-utils/package.py index fc3d8452b4d..97dd700f745 100644 --- a/var/spack/repos/builtin/packages/py-radical-utils/package.py +++ b/var/spack/repos/builtin/packages/py-radical-utils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-ranger/package.py b/var/spack/repos/builtin/packages/py-ranger/package.py index ecd4146280e..c5fee4e8faf 100644 --- a/var/spack/repos/builtin/packages/py-ranger/package.py +++ b/var/spack/repos/builtin/packages/py-ranger/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-readme-renderer/package.py b/var/spack/repos/builtin/packages/py-readme-renderer/package.py index 19fd0c3810e..e090d6a6bd6 100644 --- a/var/spack/repos/builtin/packages/py-readme-renderer/package.py +++ b/var/spack/repos/builtin/packages/py-readme-renderer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-requests/package.py b/var/spack/repos/builtin/packages/py-requests/package.py index 419883eefd3..065d22b4360 100644 --- a/var/spack/repos/builtin/packages/py-requests/package.py +++ b/var/spack/repos/builtin/packages/py-requests/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-restview/package.py b/var/spack/repos/builtin/packages/py-restview/package.py index 2105224aea8..d9536500038 100644 --- a/var/spack/repos/builtin/packages/py-restview/package.py +++ b/var/spack/repos/builtin/packages/py-restview/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-rope/package.py b/var/spack/repos/builtin/packages/py-rope/package.py index 2fd7a588a0d..4138096d730 100644 --- a/var/spack/repos/builtin/packages/py-rope/package.py +++ b/var/spack/repos/builtin/packages/py-rope/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-rpy2/package.py b/var/spack/repos/builtin/packages/py-rpy2/package.py index 284a41894a2..aa3ac66775d 100644 --- a/var/spack/repos/builtin/packages/py-rpy2/package.py +++ b/var/spack/repos/builtin/packages/py-rpy2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-rsa/package.py b/var/spack/repos/builtin/packages/py-rsa/package.py index 0821df1390d..4b58a286bdd 100644 --- a/var/spack/repos/builtin/packages/py-rsa/package.py +++ b/var/spack/repos/builtin/packages/py-rsa/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-rtree/package.py b/var/spack/repos/builtin/packages/py-rtree/package.py index a3604b467d2..3eeb6c01d1d 100644 --- a/var/spack/repos/builtin/packages/py-rtree/package.py +++ b/var/spack/repos/builtin/packages/py-rtree/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-saga-python/package.py b/var/spack/repos/builtin/packages/py-saga-python/package.py index 48f6237b6e2..0b2cd60d892 100644 --- a/var/spack/repos/builtin/packages/py-saga-python/package.py +++ b/var/spack/repos/builtin/packages/py-saga-python/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-scientificpython/package.py b/var/spack/repos/builtin/packages/py-scientificpython/package.py index 0fb3524c0c3..0478438ad41 100644 --- a/var/spack/repos/builtin/packages/py-scientificpython/package.py +++ b/var/spack/repos/builtin/packages/py-scientificpython/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-scikit-image/package.py b/var/spack/repos/builtin/packages/py-scikit-image/package.py index d05341f9ebe..5ca6e3ebf00 100644 --- a/var/spack/repos/builtin/packages/py-scikit-image/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-image/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py index d3221a9eecf..9817ff815b4 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index c3ca24291f0..919b7508a63 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-seaborn/package.py b/var/spack/repos/builtin/packages/py-seaborn/package.py index 3171ed2e21c..26c76b7aa9a 100644 --- a/var/spack/repos/builtin/packages/py-seaborn/package.py +++ b/var/spack/repos/builtin/packages/py-seaborn/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index e87349f918f..768dd3b5f77 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sh/package.py b/var/spack/repos/builtin/packages/py-sh/package.py index c089cddf0c5..60154de923b 100644 --- a/var/spack/repos/builtin/packages/py-sh/package.py +++ b/var/spack/repos/builtin/packages/py-sh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-shiboken/package.py b/var/spack/repos/builtin/packages/py-shiboken/package.py index 3ad51d5fc56..c04f8a2755c 100644 --- a/var/spack/repos/builtin/packages/py-shiboken/package.py +++ b/var/spack/repos/builtin/packages/py-shiboken/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-simplegeneric/package.py b/var/spack/repos/builtin/packages/py-simplegeneric/package.py index 3881f8bc885..c6db610ec43 100644 --- a/var/spack/repos/builtin/packages/py-simplegeneric/package.py +++ b/var/spack/repos/builtin/packages/py-simplegeneric/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-simplejson/package.py b/var/spack/repos/builtin/packages/py-simplejson/package.py index 29c792b8a44..81fc5859675 100644 --- a/var/spack/repos/builtin/packages/py-simplejson/package.py +++ b/var/spack/repos/builtin/packages/py-simplejson/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-singledispatch/package.py b/var/spack/repos/builtin/packages/py-singledispatch/package.py index 999cfde8252..08e86a24aa9 100644 --- a/var/spack/repos/builtin/packages/py-singledispatch/package.py +++ b/var/spack/repos/builtin/packages/py-singledispatch/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sip/package.py b/var/spack/repos/builtin/packages/py-sip/package.py index 9d97f084331..4243cefce0f 100644 --- a/var/spack/repos/builtin/packages/py-sip/package.py +++ b/var/spack/repos/builtin/packages/py-sip/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-six/package.py b/var/spack/repos/builtin/packages/py-six/package.py index 47a53438b58..767d43b3bae 100644 --- a/var/spack/repos/builtin/packages/py-six/package.py +++ b/var/spack/repos/builtin/packages/py-six/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-slepc4py/package.py b/var/spack/repos/builtin/packages/py-slepc4py/package.py index f02a2f2ba96..8c1a5c026ff 100644 --- a/var/spack/repos/builtin/packages/py-slepc4py/package.py +++ b/var/spack/repos/builtin/packages/py-slepc4py/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -35,4 +35,4 @@ class PySlepc4py(PythonPackage): depends_on('py-setuptools', type='build') depends_on('py-petsc4py', type=('build', 'run')) - depends_on('slepc') \ No newline at end of file + depends_on('slepc') diff --git a/var/spack/repos/builtin/packages/py-sncosmo/package.py b/var/spack/repos/builtin/packages/py-sncosmo/package.py index 998fb2ce1e1..c2ff03c1a9d 100644 --- a/var/spack/repos/builtin/packages/py-sncosmo/package.py +++ b/var/spack/repos/builtin/packages/py-sncosmo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-snowballstemmer/package.py b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py index dc8bbbef086..fa6a19a01f4 100644 --- a/var/spack/repos/builtin/packages/py-snowballstemmer/package.py +++ b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-spefile/package.py b/var/spack/repos/builtin/packages/py-spefile/package.py index d35cfae2034..4ae57f64ec1 100644 --- a/var/spack/repos/builtin/packages/py-spefile/package.py +++ b/var/spack/repos/builtin/packages/py-spefile/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-spglib/package.py b/var/spack/repos/builtin/packages/py-spglib/package.py index 3d73b3e8914..e463970febf 100644 --- a/var/spack/repos/builtin/packages/py-spglib/package.py +++ b/var/spack/repos/builtin/packages/py-spglib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py index bcc68cbc646..bcdc5fa9342 100644 --- a/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py index 886b47e8148..7166caef793 100644 --- a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py index 89b199dd81a..ba4c4badcc8 100644 --- a/var/spack/repos/builtin/packages/py-sphinx/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py index 53011ee215f..d186c09b8f1 100644 --- a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py index 6255d3e4f06..a52565107f1 100644 --- a/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py index 65e751bd583..884f8c27a35 100644 --- a/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-spyder/package.py b/var/spack/repos/builtin/packages/py-spyder/package.py index 51169e8ee4b..67194f31b1b 100644 --- a/var/spack/repos/builtin/packages/py-spyder/package.py +++ b/var/spack/repos/builtin/packages/py-spyder/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-spykeutils/package.py b/var/spack/repos/builtin/packages/py-spykeutils/package.py index 2aa0cabe462..3c715071f57 100644 --- a/var/spack/repos/builtin/packages/py-spykeutils/package.py +++ b/var/spack/repos/builtin/packages/py-spykeutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py index f8221058a08..81ea2790abd 100644 --- a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py +++ b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-statsmodels/package.py b/var/spack/repos/builtin/packages/py-statsmodels/package.py index 794f0691bbf..9cef776e6df 100644 --- a/var/spack/repos/builtin/packages/py-statsmodels/package.py +++ b/var/spack/repos/builtin/packages/py-statsmodels/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-storm/package.py b/var/spack/repos/builtin/packages/py-storm/package.py index a6c29004145..1205b2a9cca 100644 --- a/var/spack/repos/builtin/packages/py-storm/package.py +++ b/var/spack/repos/builtin/packages/py-storm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-subprocess32/package.py b/var/spack/repos/builtin/packages/py-subprocess32/package.py index 35d11e1bee5..5ed2027452b 100644 --- a/var/spack/repos/builtin/packages/py-subprocess32/package.py +++ b/var/spack/repos/builtin/packages/py-subprocess32/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-symengine/package.py b/var/spack/repos/builtin/packages/py-symengine/package.py index bc48785e367..97c51d00b83 100644 --- a/var/spack/repos/builtin/packages/py-symengine/package.py +++ b/var/spack/repos/builtin/packages/py-symengine/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-symfit/package.py b/var/spack/repos/builtin/packages/py-symfit/package.py index 98c2e93c664..cbc30acf65a 100644 --- a/var/spack/repos/builtin/packages/py-symfit/package.py +++ b/var/spack/repos/builtin/packages/py-symfit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-sympy/package.py b/var/spack/repos/builtin/packages/py-sympy/package.py index c47007be9fc..8f82bcc009f 100644 --- a/var/spack/repos/builtin/packages/py-sympy/package.py +++ b/var/spack/repos/builtin/packages/py-sympy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-tabulate/package.py b/var/spack/repos/builtin/packages/py-tabulate/package.py index b0ad7da9b00..d33ca7b785c 100644 --- a/var/spack/repos/builtin/packages/py-tabulate/package.py +++ b/var/spack/repos/builtin/packages/py-tabulate/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-tappy/package.py b/var/spack/repos/builtin/packages/py-tappy/package.py index 840d88e869d..1f7b94cbe29 100644 --- a/var/spack/repos/builtin/packages/py-tappy/package.py +++ b/var/spack/repos/builtin/packages/py-tappy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-terminado/package.py b/var/spack/repos/builtin/packages/py-terminado/package.py index 5dfd9b9068c..483a3f472e3 100644 --- a/var/spack/repos/builtin/packages/py-terminado/package.py +++ b/var/spack/repos/builtin/packages/py-terminado/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-theano/package.py b/var/spack/repos/builtin/packages/py-theano/package.py index 72bab1ce093..e1bbb136d05 100644 --- a/var/spack/repos/builtin/packages/py-theano/package.py +++ b/var/spack/repos/builtin/packages/py-theano/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-tifffile/package.py b/var/spack/repos/builtin/packages/py-tifffile/package.py index 87383fdbfd4..ef70e2ae694 100644 --- a/var/spack/repos/builtin/packages/py-tifffile/package.py +++ b/var/spack/repos/builtin/packages/py-tifffile/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-tornado/package.py b/var/spack/repos/builtin/packages/py-tornado/package.py index eb9c6609473..0ec044ad549 100644 --- a/var/spack/repos/builtin/packages/py-tornado/package.py +++ b/var/spack/repos/builtin/packages/py-tornado/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-tqdm/package.py b/var/spack/repos/builtin/packages/py-tqdm/package.py index ba49800adab..2ca30c8e144 100644 --- a/var/spack/repos/builtin/packages/py-tqdm/package.py +++ b/var/spack/repos/builtin/packages/py-tqdm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-traitlets/package.py b/var/spack/repos/builtin/packages/py-traitlets/package.py index 78d19e3cbf8..10ff5a6e384 100644 --- a/var/spack/repos/builtin/packages/py-traitlets/package.py +++ b/var/spack/repos/builtin/packages/py-traitlets/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-tuiview/package.py b/var/spack/repos/builtin/packages/py-tuiview/package.py index 93726cf0047..32166e67404 100644 --- a/var/spack/repos/builtin/packages/py-tuiview/package.py +++ b/var/spack/repos/builtin/packages/py-tuiview/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-twisted/package.py b/var/spack/repos/builtin/packages/py-twisted/package.py index e558adbc7f7..0beb3f436ba 100644 --- a/var/spack/repos/builtin/packages/py-twisted/package.py +++ b/var/spack/repos/builtin/packages/py-twisted/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-typing/package.py b/var/spack/repos/builtin/packages/py-typing/package.py index 4b1d1645203..52f5fa05b00 100644 --- a/var/spack/repos/builtin/packages/py-typing/package.py +++ b/var/spack/repos/builtin/packages/py-typing/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-tzlocal/package.py b/var/spack/repos/builtin/packages/py-tzlocal/package.py index d17fd62a526..e4c085f1ce8 100644 --- a/var/spack/repos/builtin/packages/py-tzlocal/package.py +++ b/var/spack/repos/builtin/packages/py-tzlocal/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-unittest2/package.py b/var/spack/repos/builtin/packages/py-unittest2/package.py index ff11ce05cd7..609688f8a1a 100644 --- a/var/spack/repos/builtin/packages/py-unittest2/package.py +++ b/var/spack/repos/builtin/packages/py-unittest2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-unittest2py3k/package.py b/var/spack/repos/builtin/packages/py-unittest2py3k/package.py index 03134acfcd3..d48ddc8a548 100644 --- a/var/spack/repos/builtin/packages/py-unittest2py3k/package.py +++ b/var/spack/repos/builtin/packages/py-unittest2py3k/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-urllib3/package.py b/var/spack/repos/builtin/packages/py-urllib3/package.py index bf56ca96ada..5c56de76156 100644 --- a/var/spack/repos/builtin/packages/py-urllib3/package.py +++ b/var/spack/repos/builtin/packages/py-urllib3/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-urwid/package.py b/var/spack/repos/builtin/packages/py-urwid/package.py index 8e33d2bef2e..ea39b890846 100644 --- a/var/spack/repos/builtin/packages/py-urwid/package.py +++ b/var/spack/repos/builtin/packages/py-urwid/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-vcversioner/package.py b/var/spack/repos/builtin/packages/py-vcversioner/package.py index 81e4f7bdda6..daa2d3caf25 100644 --- a/var/spack/repos/builtin/packages/py-vcversioner/package.py +++ b/var/spack/repos/builtin/packages/py-vcversioner/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-virtualenv/package.py b/var/spack/repos/builtin/packages/py-virtualenv/package.py index a19559ddbc1..7c9f4a7af3b 100644 --- a/var/spack/repos/builtin/packages/py-virtualenv/package.py +++ b/var/spack/repos/builtin/packages/py-virtualenv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-vsc-base/package.py b/var/spack/repos/builtin/packages/py-vsc-base/package.py index e5e23b0015f..3ccfda84665 100644 --- a/var/spack/repos/builtin/packages/py-vsc-base/package.py +++ b/var/spack/repos/builtin/packages/py-vsc-base/package.py @@ -6,7 +6,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-vsc-install/package.py b/var/spack/repos/builtin/packages/py-vsc-install/package.py index 452bf97992e..dc0af99fecb 100644 --- a/var/spack/repos/builtin/packages/py-vsc-install/package.py +++ b/var/spack/repos/builtin/packages/py-vsc-install/package.py @@ -5,7 +5,7 @@ # Created by Kenneth Hoste, kenneth.hoste@gmail.com # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-wcsaxes/package.py b/var/spack/repos/builtin/packages/py-wcsaxes/package.py index 1973fda8ec9..70cb81e8964 100644 --- a/var/spack/repos/builtin/packages/py-wcsaxes/package.py +++ b/var/spack/repos/builtin/packages/py-wcsaxes/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-wcwidth/package.py b/var/spack/repos/builtin/packages/py-wcwidth/package.py index c4846e2ee75..a5339b7f609 100644 --- a/var/spack/repos/builtin/packages/py-wcwidth/package.py +++ b/var/spack/repos/builtin/packages/py-wcwidth/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-webkit-server/package.py b/var/spack/repos/builtin/packages/py-webkit-server/package.py index 8393ddabbfd..1c3d42dc068 100644 --- a/var/spack/repos/builtin/packages/py-webkit-server/package.py +++ b/var/spack/repos/builtin/packages/py-webkit-server/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-werkzeug/package.py b/var/spack/repos/builtin/packages/py-werkzeug/package.py index f563b9ce193..a712cc84f29 100644 --- a/var/spack/repos/builtin/packages/py-werkzeug/package.py +++ b/var/spack/repos/builtin/packages/py-werkzeug/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py index b199f990c76..67719322447 100644 --- a/var/spack/repos/builtin/packages/py-wheel/package.py +++ b/var/spack/repos/builtin/packages/py-wheel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py index 57864e307ae..86465235d1d 100644 --- a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py +++ b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-wrapt/package.py b/var/spack/repos/builtin/packages/py-wrapt/package.py index 65d0f3fc11b..8b792a16ec4 100644 --- a/var/spack/repos/builtin/packages/py-wrapt/package.py +++ b/var/spack/repos/builtin/packages/py-wrapt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-xarray/package.py b/var/spack/repos/builtin/packages/py-xarray/package.py index 4f29d6c91ee..436f1f87d0e 100644 --- a/var/spack/repos/builtin/packages/py-xarray/package.py +++ b/var/spack/repos/builtin/packages/py-xarray/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-xlrd/package.py b/var/spack/repos/builtin/packages/py-xlrd/package.py index bbd2f57b070..af8dec00da2 100644 --- a/var/spack/repos/builtin/packages/py-xlrd/package.py +++ b/var/spack/repos/builtin/packages/py-xlrd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-xmlrunner/package.py b/var/spack/repos/builtin/packages/py-xmlrunner/package.py index 90978830be7..73fabe6242e 100644 --- a/var/spack/repos/builtin/packages/py-xmlrunner/package.py +++ b/var/spack/repos/builtin/packages/py-xmlrunner/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-xopen/package.py b/var/spack/repos/builtin/packages/py-xopen/package.py index 0137bc476f4..c98ee00b1a6 100644 --- a/var/spack/repos/builtin/packages/py-xopen/package.py +++ b/var/spack/repos/builtin/packages/py-xopen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-xpyb/package.py b/var/spack/repos/builtin/packages/py-xpyb/package.py index 136da54dcf3..b9099daa712 100644 --- a/var/spack/repos/builtin/packages/py-xpyb/package.py +++ b/var/spack/repos/builtin/packages/py-xpyb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py b/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py index 3c10c179d1b..6b04d18521b 100644 --- a/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py +++ b/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-yapf/package.py b/var/spack/repos/builtin/packages/py-yapf/package.py index 5f5d32e3d00..84a21bcc595 100644 --- a/var/spack/repos/builtin/packages/py-yapf/package.py +++ b/var/spack/repos/builtin/packages/py-yapf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index bc21aa90cc5..4575de0371d 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/py-zmq/package.py b/var/spack/repos/builtin/packages/py-zmq/package.py index 7779029fcd6..deddb77b956 100644 --- a/var/spack/repos/builtin/packages/py-zmq/package.py +++ b/var/spack/repos/builtin/packages/py-zmq/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index e7dede8ecc2..2420190f565 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/qbank/package.py b/var/spack/repos/builtin/packages/qbank/package.py index 976bda8fbd6..a503ace3459 100644 --- a/var/spack/repos/builtin/packages/qbank/package.py +++ b/var/spack/repos/builtin/packages/qbank/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/qhull/package.py b/var/spack/repos/builtin/packages/qhull/package.py index 4456c16bd2b..308b0521fa2 100644 --- a/var/spack/repos/builtin/packages/qhull/package.py +++ b/var/spack/repos/builtin/packages/qhull/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/qrupdate/package.py b/var/spack/repos/builtin/packages/qrupdate/package.py index f6b4c80cf43..5398592d225 100644 --- a/var/spack/repos/builtin/packages/qrupdate/package.py +++ b/var/spack/repos/builtin/packages/qrupdate/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/qt-creator/package.py b/var/spack/repos/builtin/packages/qt-creator/package.py index abd619530f4..a3f50004ae1 100644 --- a/var/spack/repos/builtin/packages/qt-creator/package.py +++ b/var/spack/repos/builtin/packages/qt-creator/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 8a6220f7571..088ac5d763f 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/qthreads/package.py b/var/spack/repos/builtin/packages/qthreads/package.py index 085ce7d8b0b..a4be2072c58 100644 --- a/var/spack/repos/builtin/packages/qthreads/package.py +++ b/var/spack/repos/builtin/packages/qthreads/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-abind/package.py b/var/spack/repos/builtin/packages/r-abind/package.py index 52815298cf3..5b63f7b7feb 100644 --- a/var/spack/repos/builtin/packages/r-abind/package.py +++ b/var/spack/repos/builtin/packages/r-abind/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-adabag/package.py b/var/spack/repos/builtin/packages/r-adabag/package.py index a2bc90a690e..87fc37362d9 100644 --- a/var/spack/repos/builtin/packages/r-adabag/package.py +++ b/var/spack/repos/builtin/packages/r-adabag/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ade4/package.py b/var/spack/repos/builtin/packages/r-ade4/package.py index 9583db2f24b..2951703c65f 100644 --- a/var/spack/repos/builtin/packages/r-ade4/package.py +++ b/var/spack/repos/builtin/packages/r-ade4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-adegenet/package.py b/var/spack/repos/builtin/packages/r-adegenet/package.py index 47347b6897b..e7e7c408e7b 100644 --- a/var/spack/repos/builtin/packages/r-adegenet/package.py +++ b/var/spack/repos/builtin/packages/r-adegenet/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ape/package.py b/var/spack/repos/builtin/packages/r-ape/package.py index 314f9b0c4dd..9830a0e35d6 100644 --- a/var/spack/repos/builtin/packages/r-ape/package.py +++ b/var/spack/repos/builtin/packages/r-ape/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-assertthat/package.py b/var/spack/repos/builtin/packages/r-assertthat/package.py index f4935eaf08e..d9b6eccbbc1 100644 --- a/var/spack/repos/builtin/packages/r-assertthat/package.py +++ b/var/spack/repos/builtin/packages/r-assertthat/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-base64enc/package.py b/var/spack/repos/builtin/packages/r-base64enc/package.py index 1d189fac5f4..6e3ac59d7f9 100644 --- a/var/spack/repos/builtin/packages/r-base64enc/package.py +++ b/var/spack/repos/builtin/packages/r-base64enc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-bh/package.py b/var/spack/repos/builtin/packages/r-bh/package.py index 44f2442cabf..3cdac25f0d7 100644 --- a/var/spack/repos/builtin/packages/r-bh/package.py +++ b/var/spack/repos/builtin/packages/r-bh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-biocgenerics/package.py b/var/spack/repos/builtin/packages/r-biocgenerics/package.py index 654e7f1b2ae..f8c0294b22d 100644 --- a/var/spack/repos/builtin/packages/r-biocgenerics/package.py +++ b/var/spack/repos/builtin/packages/r-biocgenerics/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-biocinstaller/package.py b/var/spack/repos/builtin/packages/r-biocinstaller/package.py index c145de688cc..fbde6a26f6c 100644 --- a/var/spack/repos/builtin/packages/r-biocinstaller/package.py +++ b/var/spack/repos/builtin/packages/r-biocinstaller/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-bitops/package.py b/var/spack/repos/builtin/packages/r-bitops/package.py index 2b40e8c4d8a..c9b2d6af019 100644 --- a/var/spack/repos/builtin/packages/r-bitops/package.py +++ b/var/spack/repos/builtin/packages/r-bitops/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-boot/package.py b/var/spack/repos/builtin/packages/r-boot/package.py index 27ae21c2b81..50a057bcbb0 100644 --- a/var/spack/repos/builtin/packages/r-boot/package.py +++ b/var/spack/repos/builtin/packages/r-boot/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-brew/package.py b/var/spack/repos/builtin/packages/r-brew/package.py index f4aea091728..c9e42339c3f 100644 --- a/var/spack/repos/builtin/packages/r-brew/package.py +++ b/var/spack/repos/builtin/packages/r-brew/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-c50/package.py b/var/spack/repos/builtin/packages/r-c50/package.py index 323f8efbea4..fbffd61d38f 100644 --- a/var/spack/repos/builtin/packages/r-c50/package.py +++ b/var/spack/repos/builtin/packages/r-c50/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-car/package.py b/var/spack/repos/builtin/packages/r-car/package.py index 2fa7380ca3f..5bd107d2d2e 100644 --- a/var/spack/repos/builtin/packages/r-car/package.py +++ b/var/spack/repos/builtin/packages/r-car/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-caret/package.py b/var/spack/repos/builtin/packages/r-caret/package.py index a20a5c2280e..92b6ef28d8a 100644 --- a/var/spack/repos/builtin/packages/r-caret/package.py +++ b/var/spack/repos/builtin/packages/r-caret/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-catools/package.py b/var/spack/repos/builtin/packages/r-catools/package.py index 78165c59b47..6867af0e893 100644 --- a/var/spack/repos/builtin/packages/r-catools/package.py +++ b/var/spack/repos/builtin/packages/r-catools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-checkpoint/package.py b/var/spack/repos/builtin/packages/r-checkpoint/package.py index 299051ddbba..78c0d55975c 100644 --- a/var/spack/repos/builtin/packages/r-checkpoint/package.py +++ b/var/spack/repos/builtin/packages/r-checkpoint/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-chron/package.py b/var/spack/repos/builtin/packages/r-chron/package.py index 00d08070ee2..a86dd10eef3 100644 --- a/var/spack/repos/builtin/packages/r-chron/package.py +++ b/var/spack/repos/builtin/packages/r-chron/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-class/package.py b/var/spack/repos/builtin/packages/r-class/package.py index 238e7543985..feb1951f62d 100644 --- a/var/spack/repos/builtin/packages/r-class/package.py +++ b/var/spack/repos/builtin/packages/r-class/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-cluster/package.py b/var/spack/repos/builtin/packages/r-cluster/package.py index b5b8544710e..680982d86da 100644 --- a/var/spack/repos/builtin/packages/r-cluster/package.py +++ b/var/spack/repos/builtin/packages/r-cluster/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-coda/package.py b/var/spack/repos/builtin/packages/r-coda/package.py index 9645aab046b..a0fe4eef5cd 100644 --- a/var/spack/repos/builtin/packages/r-coda/package.py +++ b/var/spack/repos/builtin/packages/r-coda/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-codetools/package.py b/var/spack/repos/builtin/packages/r-codetools/package.py index 07c9b442fdb..157aeb80de5 100644 --- a/var/spack/repos/builtin/packages/r-codetools/package.py +++ b/var/spack/repos/builtin/packages/r-codetools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-coin/package.py b/var/spack/repos/builtin/packages/r-coin/package.py index b2208f5c15a..7ab7a3fdaed 100644 --- a/var/spack/repos/builtin/packages/r-coin/package.py +++ b/var/spack/repos/builtin/packages/r-coin/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-colorspace/package.py b/var/spack/repos/builtin/packages/r-colorspace/package.py index c5c022e6abe..8c16c6ba623 100644 --- a/var/spack/repos/builtin/packages/r-colorspace/package.py +++ b/var/spack/repos/builtin/packages/r-colorspace/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-corrplot/package.py b/var/spack/repos/builtin/packages/r-corrplot/package.py index bc7b7f7cdee..1fdaf194db0 100644 --- a/var/spack/repos/builtin/packages/r-corrplot/package.py +++ b/var/spack/repos/builtin/packages/r-corrplot/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-crayon/package.py b/var/spack/repos/builtin/packages/r-crayon/package.py index 99c0d248ea6..d40942e8870 100644 --- a/var/spack/repos/builtin/packages/r-crayon/package.py +++ b/var/spack/repos/builtin/packages/r-crayon/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-cubature/package.py b/var/spack/repos/builtin/packages/r-cubature/package.py index 747e5e9e1ff..3f436ef847d 100644 --- a/var/spack/repos/builtin/packages/r-cubature/package.py +++ b/var/spack/repos/builtin/packages/r-cubature/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-cubist/package.py b/var/spack/repos/builtin/packages/r-cubist/package.py index 6e1d8d10cc9..9c50c57c384 100644 --- a/var/spack/repos/builtin/packages/r-cubist/package.py +++ b/var/spack/repos/builtin/packages/r-cubist/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-curl/package.py b/var/spack/repos/builtin/packages/r-curl/package.py index 076872acc78..91bd22e2679 100644 --- a/var/spack/repos/builtin/packages/r-curl/package.py +++ b/var/spack/repos/builtin/packages/r-curl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-data-table/package.py b/var/spack/repos/builtin/packages/r-data-table/package.py index c6f45ba5bf0..db761305993 100644 --- a/var/spack/repos/builtin/packages/r-data-table/package.py +++ b/var/spack/repos/builtin/packages/r-data-table/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-dbi/package.py b/var/spack/repos/builtin/packages/r-dbi/package.py index 256d638812c..06477a7bb60 100644 --- a/var/spack/repos/builtin/packages/r-dbi/package.py +++ b/var/spack/repos/builtin/packages/r-dbi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-deldir/package.py b/var/spack/repos/builtin/packages/r-deldir/package.py index 3e3d556a179..1bc83412417 100644 --- a/var/spack/repos/builtin/packages/r-deldir/package.py +++ b/var/spack/repos/builtin/packages/r-deldir/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-dendextend/package.py b/var/spack/repos/builtin/packages/r-dendextend/package.py index c30491ef67f..33a4fb95633 100644 --- a/var/spack/repos/builtin/packages/r-dendextend/package.py +++ b/var/spack/repos/builtin/packages/r-dendextend/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-deoptim/package.py b/var/spack/repos/builtin/packages/r-deoptim/package.py index 521c5e7a4b7..5c55bcc1605 100644 --- a/var/spack/repos/builtin/packages/r-deoptim/package.py +++ b/var/spack/repos/builtin/packages/r-deoptim/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-deoptimr/package.py b/var/spack/repos/builtin/packages/r-deoptimr/package.py index 758b10f9e40..fa028e5fbf0 100644 --- a/var/spack/repos/builtin/packages/r-deoptimr/package.py +++ b/var/spack/repos/builtin/packages/r-deoptimr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-devtools/package.py b/var/spack/repos/builtin/packages/r-devtools/package.py index f5e395c7159..ed5515185fc 100644 --- a/var/spack/repos/builtin/packages/r-devtools/package.py +++ b/var/spack/repos/builtin/packages/r-devtools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-diagrammer/package.py b/var/spack/repos/builtin/packages/r-diagrammer/package.py index 8db0ab37367..ada1cb27766 100644 --- a/var/spack/repos/builtin/packages/r-diagrammer/package.py +++ b/var/spack/repos/builtin/packages/r-diagrammer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-dichromat/package.py b/var/spack/repos/builtin/packages/r-dichromat/package.py index 57942674f24..0c51cc89474 100644 --- a/var/spack/repos/builtin/packages/r-dichromat/package.py +++ b/var/spack/repos/builtin/packages/r-dichromat/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-digest/package.py b/var/spack/repos/builtin/packages/r-digest/package.py index 8919af2f5a5..9f68dec3582 100644 --- a/var/spack/repos/builtin/packages/r-digest/package.py +++ b/var/spack/repos/builtin/packages/r-digest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-diptest/package.py b/var/spack/repos/builtin/packages/r-diptest/package.py index e64a490710c..aca82156b80 100644 --- a/var/spack/repos/builtin/packages/r-diptest/package.py +++ b/var/spack/repos/builtin/packages/r-diptest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-domc/package.py b/var/spack/repos/builtin/packages/r-domc/package.py index 163004f4a52..51e174185bf 100644 --- a/var/spack/repos/builtin/packages/r-domc/package.py +++ b/var/spack/repos/builtin/packages/r-domc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-doparallel/package.py b/var/spack/repos/builtin/packages/r-doparallel/package.py index 04d9bd06a7c..83e7c98476b 100644 --- a/var/spack/repos/builtin/packages/r-doparallel/package.py +++ b/var/spack/repos/builtin/packages/r-doparallel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-dplyr/package.py b/var/spack/repos/builtin/packages/r-dplyr/package.py index 682753cc63f..bb05d9cea45 100644 --- a/var/spack/repos/builtin/packages/r-dplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dplyr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-dt/package.py b/var/spack/repos/builtin/packages/r-dt/package.py index 85e6fee8374..473d5e1be51 100644 --- a/var/spack/repos/builtin/packages/r-dt/package.py +++ b/var/spack/repos/builtin/packages/r-dt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-dygraphs/package.py b/var/spack/repos/builtin/packages/r-dygraphs/package.py index d9e66d86f72..63304451b64 100644 --- a/var/spack/repos/builtin/packages/r-dygraphs/package.py +++ b/var/spack/repos/builtin/packages/r-dygraphs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-e1071/package.py b/var/spack/repos/builtin/packages/r-e1071/package.py index 545909bf28e..19dd5b54661 100644 --- a/var/spack/repos/builtin/packages/r-e1071/package.py +++ b/var/spack/repos/builtin/packages/r-e1071/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ellipse/package.py b/var/spack/repos/builtin/packages/r-ellipse/package.py index e106a4322d5..686da16b0bb 100644 --- a/var/spack/repos/builtin/packages/r-ellipse/package.py +++ b/var/spack/repos/builtin/packages/r-ellipse/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ergm/package.py b/var/spack/repos/builtin/packages/r-ergm/package.py index 06e3a0379a2..ae254dca433 100644 --- a/var/spack/repos/builtin/packages/r-ergm/package.py +++ b/var/spack/repos/builtin/packages/r-ergm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-evaluate/package.py b/var/spack/repos/builtin/packages/r-evaluate/package.py index ba0a9d5d159..6bb5ed8e95a 100644 --- a/var/spack/repos/builtin/packages/r-evaluate/package.py +++ b/var/spack/repos/builtin/packages/r-evaluate/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-expm/package.py b/var/spack/repos/builtin/packages/r-expm/package.py index e2ad5794415..f819a07641f 100644 --- a/var/spack/repos/builtin/packages/r-expm/package.py +++ b/var/spack/repos/builtin/packages/r-expm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-factoextra/package.py b/var/spack/repos/builtin/packages/r-factoextra/package.py index 00052e61a5c..ed42193f92e 100644 --- a/var/spack/repos/builtin/packages/r-factoextra/package.py +++ b/var/spack/repos/builtin/packages/r-factoextra/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-factominer/package.py b/var/spack/repos/builtin/packages/r-factominer/package.py index 078caf42802..de5668b3117 100644 --- a/var/spack/repos/builtin/packages/r-factominer/package.py +++ b/var/spack/repos/builtin/packages/r-factominer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-filehash/package.py b/var/spack/repos/builtin/packages/r-filehash/package.py index 9f67ecad37a..4dcd3df5a32 100644 --- a/var/spack/repos/builtin/packages/r-filehash/package.py +++ b/var/spack/repos/builtin/packages/r-filehash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-flashclust/package.py b/var/spack/repos/builtin/packages/r-flashclust/package.py index a5adeb5016e..4edb9df8442 100644 --- a/var/spack/repos/builtin/packages/r-flashclust/package.py +++ b/var/spack/repos/builtin/packages/r-flashclust/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-flexmix/package.py b/var/spack/repos/builtin/packages/r-flexmix/package.py index 715a7107437..65a3a9dc177 100644 --- a/var/spack/repos/builtin/packages/r-flexmix/package.py +++ b/var/spack/repos/builtin/packages/r-flexmix/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-foreach/package.py b/var/spack/repos/builtin/packages/r-foreach/package.py index 527cd5a1102..166a9f20cb3 100644 --- a/var/spack/repos/builtin/packages/r-foreach/package.py +++ b/var/spack/repos/builtin/packages/r-foreach/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-foreign/package.py b/var/spack/repos/builtin/packages/r-foreign/package.py index a3549068dcb..45845234e08 100644 --- a/var/spack/repos/builtin/packages/r-foreign/package.py +++ b/var/spack/repos/builtin/packages/r-foreign/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-formatr/package.py b/var/spack/repos/builtin/packages/r-formatr/package.py index 814e83ffac9..d1609ad7185 100644 --- a/var/spack/repos/builtin/packages/r-formatr/package.py +++ b/var/spack/repos/builtin/packages/r-formatr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-formula/package.py b/var/spack/repos/builtin/packages/r-formula/package.py index 2381f5a115d..5d7b7119ddb 100644 --- a/var/spack/repos/builtin/packages/r-formula/package.py +++ b/var/spack/repos/builtin/packages/r-formula/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-fpc/package.py b/var/spack/repos/builtin/packages/r-fpc/package.py index 675e3b7c962..e8fff8c0670 100644 --- a/var/spack/repos/builtin/packages/r-fpc/package.py +++ b/var/spack/repos/builtin/packages/r-fpc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-gdata/package.py b/var/spack/repos/builtin/packages/r-gdata/package.py index b68a8b91c24..79ea4baeff2 100644 --- a/var/spack/repos/builtin/packages/r-gdata/package.py +++ b/var/spack/repos/builtin/packages/r-gdata/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-geosphere/package.py b/var/spack/repos/builtin/packages/r-geosphere/package.py index 93f56a2873c..a338d4b112f 100644 --- a/var/spack/repos/builtin/packages/r-geosphere/package.py +++ b/var/spack/repos/builtin/packages/r-geosphere/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ggmap/package.py b/var/spack/repos/builtin/packages/r-ggmap/package.py index 40b81aef31e..b7cb033d6fa 100644 --- a/var/spack/repos/builtin/packages/r-ggmap/package.py +++ b/var/spack/repos/builtin/packages/r-ggmap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ggplot2/package.py b/var/spack/repos/builtin/packages/r-ggplot2/package.py index da514768fcf..c8ee8acea69 100644 --- a/var/spack/repos/builtin/packages/r-ggplot2/package.py +++ b/var/spack/repos/builtin/packages/r-ggplot2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ggpubr/package.py b/var/spack/repos/builtin/packages/r-ggpubr/package.py index 538a0f5d33e..bdf8774e285 100644 --- a/var/spack/repos/builtin/packages/r-ggpubr/package.py +++ b/var/spack/repos/builtin/packages/r-ggpubr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ggrepel/package.py b/var/spack/repos/builtin/packages/r-ggrepel/package.py index 8bda46f3980..52baa0b0777 100644 --- a/var/spack/repos/builtin/packages/r-ggrepel/package.py +++ b/var/spack/repos/builtin/packages/r-ggrepel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ggsci/package.py b/var/spack/repos/builtin/packages/r-ggsci/package.py index 53726771638..8df9c21de85 100644 --- a/var/spack/repos/builtin/packages/r-ggsci/package.py +++ b/var/spack/repos/builtin/packages/r-ggsci/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ggvis/package.py b/var/spack/repos/builtin/packages/r-ggvis/package.py index 14d65a02238..d527d2a93a0 100644 --- a/var/spack/repos/builtin/packages/r-ggvis/package.py +++ b/var/spack/repos/builtin/packages/r-ggvis/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-gistr/package.py b/var/spack/repos/builtin/packages/r-gistr/package.py index 644d6f12d0a..d8e89722e97 100644 --- a/var/spack/repos/builtin/packages/r-gistr/package.py +++ b/var/spack/repos/builtin/packages/r-gistr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-git2r/package.py b/var/spack/repos/builtin/packages/r-git2r/package.py index 2bfb2eee79e..3612d6ebb52 100644 --- a/var/spack/repos/builtin/packages/r-git2r/package.py +++ b/var/spack/repos/builtin/packages/r-git2r/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-glmnet/package.py b/var/spack/repos/builtin/packages/r-glmnet/package.py index 6922fc2aaa1..8f9793ec318 100644 --- a/var/spack/repos/builtin/packages/r-glmnet/package.py +++ b/var/spack/repos/builtin/packages/r-glmnet/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-gmodels/package.py b/var/spack/repos/builtin/packages/r-gmodels/package.py index 44fcfe0ee99..c703c2a5214 100644 --- a/var/spack/repos/builtin/packages/r-gmodels/package.py +++ b/var/spack/repos/builtin/packages/r-gmodels/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-gmp/package.py b/var/spack/repos/builtin/packages/r-gmp/package.py index 89194084733..12eb85e5cc0 100644 --- a/var/spack/repos/builtin/packages/r-gmp/package.py +++ b/var/spack/repos/builtin/packages/r-gmp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-googlevis/package.py b/var/spack/repos/builtin/packages/r-googlevis/package.py index 2d090025cca..95101c3d06f 100644 --- a/var/spack/repos/builtin/packages/r-googlevis/package.py +++ b/var/spack/repos/builtin/packages/r-googlevis/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-gridbase/package.py b/var/spack/repos/builtin/packages/r-gridbase/package.py index 829a394d33c..ab9d7ad834a 100644 --- a/var/spack/repos/builtin/packages/r-gridbase/package.py +++ b/var/spack/repos/builtin/packages/r-gridbase/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-gridextra/package.py b/var/spack/repos/builtin/packages/r-gridextra/package.py index 790e7254ee6..9ae3af3026b 100644 --- a/var/spack/repos/builtin/packages/r-gridextra/package.py +++ b/var/spack/repos/builtin/packages/r-gridextra/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-gtable/package.py b/var/spack/repos/builtin/packages/r-gtable/package.py index d47ec281a9e..2bb1c713e71 100644 --- a/var/spack/repos/builtin/packages/r-gtable/package.py +++ b/var/spack/repos/builtin/packages/r-gtable/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-gtools/package.py b/var/spack/repos/builtin/packages/r-gtools/package.py index df047b6c941..3e6f5949d22 100644 --- a/var/spack/repos/builtin/packages/r-gtools/package.py +++ b/var/spack/repos/builtin/packages/r-gtools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-hexbin/package.py b/var/spack/repos/builtin/packages/r-hexbin/package.py index 21ae867da22..018d5e24ce5 100644 --- a/var/spack/repos/builtin/packages/r-hexbin/package.py +++ b/var/spack/repos/builtin/packages/r-hexbin/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-highr/package.py b/var/spack/repos/builtin/packages/r-highr/package.py index 616bab728b5..0fa7a850dfa 100644 --- a/var/spack/repos/builtin/packages/r-highr/package.py +++ b/var/spack/repos/builtin/packages/r-highr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-htmltools/package.py b/var/spack/repos/builtin/packages/r-htmltools/package.py index e6c5294c186..c679c51b0ec 100644 --- a/var/spack/repos/builtin/packages/r-htmltools/package.py +++ b/var/spack/repos/builtin/packages/r-htmltools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py index ad08721f657..bf624e7639f 100644 --- a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py +++ b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-httpuv/package.py b/var/spack/repos/builtin/packages/r-httpuv/package.py index aa8b7743831..93d8508300a 100644 --- a/var/spack/repos/builtin/packages/r-httpuv/package.py +++ b/var/spack/repos/builtin/packages/r-httpuv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-httr/package.py b/var/spack/repos/builtin/packages/r-httr/package.py index ec01bc0c662..e976a30f7cd 100644 --- a/var/spack/repos/builtin/packages/r-httr/package.py +++ b/var/spack/repos/builtin/packages/r-httr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-igraph/package.py b/var/spack/repos/builtin/packages/r-igraph/package.py index 77bda4a3a08..0e8177d84ed 100644 --- a/var/spack/repos/builtin/packages/r-igraph/package.py +++ b/var/spack/repos/builtin/packages/r-igraph/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-influencer/package.py b/var/spack/repos/builtin/packages/r-influencer/package.py index bbfed54e251..ca17e900d92 100644 --- a/var/spack/repos/builtin/packages/r-influencer/package.py +++ b/var/spack/repos/builtin/packages/r-influencer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-inline/package.py b/var/spack/repos/builtin/packages/r-inline/package.py index 9040d0fbccd..3ddd145cae8 100644 --- a/var/spack/repos/builtin/packages/r-inline/package.py +++ b/var/spack/repos/builtin/packages/r-inline/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ipred/package.py b/var/spack/repos/builtin/packages/r-ipred/package.py index f504528c677..c3aa0e0d403 100644 --- a/var/spack/repos/builtin/packages/r-ipred/package.py +++ b/var/spack/repos/builtin/packages/r-ipred/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-irdisplay/package.py b/var/spack/repos/builtin/packages/r-irdisplay/package.py index f02c00d8ba3..1896eccf6d1 100644 --- a/var/spack/repos/builtin/packages/r-irdisplay/package.py +++ b/var/spack/repos/builtin/packages/r-irdisplay/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-irkernel/package.py b/var/spack/repos/builtin/packages/r-irkernel/package.py index e69b77f9f01..1ea52dedad1 100644 --- a/var/spack/repos/builtin/packages/r-irkernel/package.py +++ b/var/spack/repos/builtin/packages/r-irkernel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-irlba/package.py b/var/spack/repos/builtin/packages/r-irlba/package.py index 4ed3fe5b390..aea557cd3f9 100644 --- a/var/spack/repos/builtin/packages/r-irlba/package.py +++ b/var/spack/repos/builtin/packages/r-irlba/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-iterators/package.py b/var/spack/repos/builtin/packages/r-iterators/package.py index bc9a8c67268..6561a471f09 100644 --- a/var/spack/repos/builtin/packages/r-iterators/package.py +++ b/var/spack/repos/builtin/packages/r-iterators/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-jpeg/package.py b/var/spack/repos/builtin/packages/r-jpeg/package.py index 643b510f056..13a96d50e29 100644 --- a/var/spack/repos/builtin/packages/r-jpeg/package.py +++ b/var/spack/repos/builtin/packages/r-jpeg/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-jsonlite/package.py b/var/spack/repos/builtin/packages/r-jsonlite/package.py index 34c0c88c87b..364966c9c16 100644 --- a/var/spack/repos/builtin/packages/r-jsonlite/package.py +++ b/var/spack/repos/builtin/packages/r-jsonlite/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-kernlab/package.py b/var/spack/repos/builtin/packages/r-kernlab/package.py index 7d3079a2103..fc336e6c8c2 100644 --- a/var/spack/repos/builtin/packages/r-kernlab/package.py +++ b/var/spack/repos/builtin/packages/r-kernlab/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-kernsmooth/package.py b/var/spack/repos/builtin/packages/r-kernsmooth/package.py index 59479a5ef9d..e72c2999199 100644 --- a/var/spack/repos/builtin/packages/r-kernsmooth/package.py +++ b/var/spack/repos/builtin/packages/r-kernsmooth/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-kknn/package.py b/var/spack/repos/builtin/packages/r-kknn/package.py index c12a359b142..27824c7fdb6 100644 --- a/var/spack/repos/builtin/packages/r-kknn/package.py +++ b/var/spack/repos/builtin/packages/r-kknn/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-knitr/package.py b/var/spack/repos/builtin/packages/r-knitr/package.py index 5d604252f8c..71e95b49f2e 100644 --- a/var/spack/repos/builtin/packages/r-knitr/package.py +++ b/var/spack/repos/builtin/packages/r-knitr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-labeling/package.py b/var/spack/repos/builtin/packages/r-labeling/package.py index 41ac015977c..7a57909787d 100644 --- a/var/spack/repos/builtin/packages/r-labeling/package.py +++ b/var/spack/repos/builtin/packages/r-labeling/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-laplacesdemon/package.py b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py index c2755a49207..61aca6b9d8b 100644 --- a/var/spack/repos/builtin/packages/r-laplacesdemon/package.py +++ b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-lattice/package.py b/var/spack/repos/builtin/packages/r-lattice/package.py index 7837bac1b4d..faefc2de0f2 100644 --- a/var/spack/repos/builtin/packages/r-lattice/package.py +++ b/var/spack/repos/builtin/packages/r-lattice/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-lava/package.py b/var/spack/repos/builtin/packages/r-lava/package.py index f4c85a57ad3..e3aef589b25 100644 --- a/var/spack/repos/builtin/packages/r-lava/package.py +++ b/var/spack/repos/builtin/packages/r-lava/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-lazyeval/package.py b/var/spack/repos/builtin/packages/r-lazyeval/package.py index 72b73f9e0a5..a48a06f38fb 100644 --- a/var/spack/repos/builtin/packages/r-lazyeval/package.py +++ b/var/spack/repos/builtin/packages/r-lazyeval/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-leaflet/package.py b/var/spack/repos/builtin/packages/r-leaflet/package.py index c309c92de9b..b7f39992bd2 100644 --- a/var/spack/repos/builtin/packages/r-leaflet/package.py +++ b/var/spack/repos/builtin/packages/r-leaflet/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-leaps/package.py b/var/spack/repos/builtin/packages/r-leaps/package.py index 3afc27e6ddc..9ac7875b375 100644 --- a/var/spack/repos/builtin/packages/r-leaps/package.py +++ b/var/spack/repos/builtin/packages/r-leaps/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-learnbayes/package.py b/var/spack/repos/builtin/packages/r-learnbayes/package.py index c6b276c863a..d4a6fa42fac 100644 --- a/var/spack/repos/builtin/packages/r-learnbayes/package.py +++ b/var/spack/repos/builtin/packages/r-learnbayes/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-lme4/package.py b/var/spack/repos/builtin/packages/r-lme4/package.py index e71da3ad813..c06e319273b 100644 --- a/var/spack/repos/builtin/packages/r-lme4/package.py +++ b/var/spack/repos/builtin/packages/r-lme4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-lmtest/package.py b/var/spack/repos/builtin/packages/r-lmtest/package.py index 7967f386159..27fe98f0f82 100644 --- a/var/spack/repos/builtin/packages/r-lmtest/package.py +++ b/var/spack/repos/builtin/packages/r-lmtest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-lpsolve/package.py b/var/spack/repos/builtin/packages/r-lpsolve/package.py index 65570e2873f..5f694f6f6db 100644 --- a/var/spack/repos/builtin/packages/r-lpsolve/package.py +++ b/var/spack/repos/builtin/packages/r-lpsolve/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-lubridate/package.py b/var/spack/repos/builtin/packages/r-lubridate/package.py index ad64ce0c390..5e2f6f0d059 100644 --- a/var/spack/repos/builtin/packages/r-lubridate/package.py +++ b/var/spack/repos/builtin/packages/r-lubridate/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-magic/package.py b/var/spack/repos/builtin/packages/r-magic/package.py index 4e2c3bb1936..3844584c680 100644 --- a/var/spack/repos/builtin/packages/r-magic/package.py +++ b/var/spack/repos/builtin/packages/r-magic/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-magrittr/package.py b/var/spack/repos/builtin/packages/r-magrittr/package.py index a01b601a3cd..33cc9b178ce 100644 --- a/var/spack/repos/builtin/packages/r-magrittr/package.py +++ b/var/spack/repos/builtin/packages/r-magrittr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-mapproj/package.py b/var/spack/repos/builtin/packages/r-mapproj/package.py index 711c3dfb075..590ff0c9bdd 100644 --- a/var/spack/repos/builtin/packages/r-mapproj/package.py +++ b/var/spack/repos/builtin/packages/r-mapproj/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-maps/package.py b/var/spack/repos/builtin/packages/r-maps/package.py index 0f327db31ef..9c526c80df5 100644 --- a/var/spack/repos/builtin/packages/r-maps/package.py +++ b/var/spack/repos/builtin/packages/r-maps/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-maptools/package.py b/var/spack/repos/builtin/packages/r-maptools/package.py index f2894568d06..217af815412 100644 --- a/var/spack/repos/builtin/packages/r-maptools/package.py +++ b/var/spack/repos/builtin/packages/r-maptools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-markdown/package.py b/var/spack/repos/builtin/packages/r-markdown/package.py index f843e64bc72..e44d67aa337 100644 --- a/var/spack/repos/builtin/packages/r-markdown/package.py +++ b/var/spack/repos/builtin/packages/r-markdown/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-mass/package.py b/var/spack/repos/builtin/packages/r-mass/package.py index 56a000968d8..873376c26f5 100644 --- a/var/spack/repos/builtin/packages/r-mass/package.py +++ b/var/spack/repos/builtin/packages/r-mass/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-matrix/package.py b/var/spack/repos/builtin/packages/r-matrix/package.py index d2f14df0633..7f30d584460 100644 --- a/var/spack/repos/builtin/packages/r-matrix/package.py +++ b/var/spack/repos/builtin/packages/r-matrix/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-matrixmodels/package.py b/var/spack/repos/builtin/packages/r-matrixmodels/package.py index 2391da8ad71..1707453552b 100644 --- a/var/spack/repos/builtin/packages/r-matrixmodels/package.py +++ b/var/spack/repos/builtin/packages/r-matrixmodels/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-mclust/package.py b/var/spack/repos/builtin/packages/r-mclust/package.py index 308afd5952d..9c5f3dd4b0d 100644 --- a/var/spack/repos/builtin/packages/r-mclust/package.py +++ b/var/spack/repos/builtin/packages/r-mclust/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-mda/package.py b/var/spack/repos/builtin/packages/r-mda/package.py index 5c39cc78587..079c2a1a5af 100644 --- a/var/spack/repos/builtin/packages/r-mda/package.py +++ b/var/spack/repos/builtin/packages/r-mda/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-memoise/package.py b/var/spack/repos/builtin/packages/r-memoise/package.py index 9cabadb2828..9c507391dac 100644 --- a/var/spack/repos/builtin/packages/r-memoise/package.py +++ b/var/spack/repos/builtin/packages/r-memoise/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-mgcv/package.py b/var/spack/repos/builtin/packages/r-mgcv/package.py index bdf6fe3a891..3a879971ffe 100644 --- a/var/spack/repos/builtin/packages/r-mgcv/package.py +++ b/var/spack/repos/builtin/packages/r-mgcv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-mime/package.py b/var/spack/repos/builtin/packages/r-mime/package.py index aa6e51c18bd..db490bd24db 100644 --- a/var/spack/repos/builtin/packages/r-mime/package.py +++ b/var/spack/repos/builtin/packages/r-mime/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-minqa/package.py b/var/spack/repos/builtin/packages/r-minqa/package.py index afd5c371320..47fa0620ce8 100644 --- a/var/spack/repos/builtin/packages/r-minqa/package.py +++ b/var/spack/repos/builtin/packages/r-minqa/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-mlbench/package.py b/var/spack/repos/builtin/packages/r-mlbench/package.py index 8ab4c89058c..98366d9fa80 100644 --- a/var/spack/repos/builtin/packages/r-mlbench/package.py +++ b/var/spack/repos/builtin/packages/r-mlbench/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-modelmetrics/package.py b/var/spack/repos/builtin/packages/r-modelmetrics/package.py index 03ae0ca6f7d..99cb924433e 100644 --- a/var/spack/repos/builtin/packages/r-modelmetrics/package.py +++ b/var/spack/repos/builtin/packages/r-modelmetrics/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-modeltools/package.py b/var/spack/repos/builtin/packages/r-modeltools/package.py index 2d80652f8c7..a77bb048050 100644 --- a/var/spack/repos/builtin/packages/r-modeltools/package.py +++ b/var/spack/repos/builtin/packages/r-modeltools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-multcomp/package.py b/var/spack/repos/builtin/packages/r-multcomp/package.py index ab77b6024d8..acaba46b513 100644 --- a/var/spack/repos/builtin/packages/r-multcomp/package.py +++ b/var/spack/repos/builtin/packages/r-multcomp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-munsell/package.py b/var/spack/repos/builtin/packages/r-munsell/package.py index fe43d4c7461..fa635782e19 100644 --- a/var/spack/repos/builtin/packages/r-munsell/package.py +++ b/var/spack/repos/builtin/packages/r-munsell/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-mvtnorm/package.py b/var/spack/repos/builtin/packages/r-mvtnorm/package.py index 3c79b05691c..31933e70a34 100644 --- a/var/spack/repos/builtin/packages/r-mvtnorm/package.py +++ b/var/spack/repos/builtin/packages/r-mvtnorm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ncdf4/package.py b/var/spack/repos/builtin/packages/r-ncdf4/package.py index 299bf0b108f..31b2f4f2ee7 100644 --- a/var/spack/repos/builtin/packages/r-ncdf4/package.py +++ b/var/spack/repos/builtin/packages/r-ncdf4/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-network/package.py b/var/spack/repos/builtin/packages/r-network/package.py index acf0e9a0e91..c561cb19322 100644 --- a/var/spack/repos/builtin/packages/r-network/package.py +++ b/var/spack/repos/builtin/packages/r-network/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-networkd3/package.py b/var/spack/repos/builtin/packages/r-networkd3/package.py index 2c70b454385..68501bba524 100644 --- a/var/spack/repos/builtin/packages/r-networkd3/package.py +++ b/var/spack/repos/builtin/packages/r-networkd3/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-nlme/package.py b/var/spack/repos/builtin/packages/r-nlme/package.py index 0c619e5f9d2..68f4a7d74e1 100644 --- a/var/spack/repos/builtin/packages/r-nlme/package.py +++ b/var/spack/repos/builtin/packages/r-nlme/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-nloptr/package.py b/var/spack/repos/builtin/packages/r-nloptr/package.py index 2512cca6958..edf19e653f5 100644 --- a/var/spack/repos/builtin/packages/r-nloptr/package.py +++ b/var/spack/repos/builtin/packages/r-nloptr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-nmf/package.py b/var/spack/repos/builtin/packages/r-nmf/package.py index a0385d4ce23..5911652edac 100644 --- a/var/spack/repos/builtin/packages/r-nmf/package.py +++ b/var/spack/repos/builtin/packages/r-nmf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-nnet/package.py b/var/spack/repos/builtin/packages/r-nnet/package.py index 6a7651a51ee..75b9be602df 100644 --- a/var/spack/repos/builtin/packages/r-nnet/package.py +++ b/var/spack/repos/builtin/packages/r-nnet/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-np/package.py b/var/spack/repos/builtin/packages/r-np/package.py index a010d37af9f..4f45314f0bc 100644 --- a/var/spack/repos/builtin/packages/r-np/package.py +++ b/var/spack/repos/builtin/packages/r-np/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-numderiv/package.py b/var/spack/repos/builtin/packages/r-numderiv/package.py index 1323e537ae0..a6a5b0bcc16 100644 --- a/var/spack/repos/builtin/packages/r-numderiv/package.py +++ b/var/spack/repos/builtin/packages/r-numderiv/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-openssl/package.py b/var/spack/repos/builtin/packages/r-openssl/package.py index 8989fcf14ce..ae5eca3f5a2 100644 --- a/var/spack/repos/builtin/packages/r-openssl/package.py +++ b/var/spack/repos/builtin/packages/r-openssl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-packrat/package.py b/var/spack/repos/builtin/packages/r-packrat/package.py index e0f8c0ec4e2..123ceb5caaa 100644 --- a/var/spack/repos/builtin/packages/r-packrat/package.py +++ b/var/spack/repos/builtin/packages/r-packrat/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-pacman/package.py b/var/spack/repos/builtin/packages/r-pacman/package.py index 3112e9ef196..41c9efbc5c6 100644 --- a/var/spack/repos/builtin/packages/r-pacman/package.py +++ b/var/spack/repos/builtin/packages/r-pacman/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-party/package.py b/var/spack/repos/builtin/packages/r-party/package.py index ee006ec710c..d0b39a681e5 100644 --- a/var/spack/repos/builtin/packages/r-party/package.py +++ b/var/spack/repos/builtin/packages/r-party/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-partykit/package.py b/var/spack/repos/builtin/packages/r-partykit/package.py index 5c056e7b719..188507e44da 100644 --- a/var/spack/repos/builtin/packages/r-partykit/package.py +++ b/var/spack/repos/builtin/packages/r-partykit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-pbdzmq/package.py b/var/spack/repos/builtin/packages/r-pbdzmq/package.py index ee85dfe3a44..42f7f193510 100644 --- a/var/spack/repos/builtin/packages/r-pbdzmq/package.py +++ b/var/spack/repos/builtin/packages/r-pbdzmq/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-pbkrtest/package.py b/var/spack/repos/builtin/packages/r-pbkrtest/package.py index 8278f672180..41971003db6 100644 --- a/var/spack/repos/builtin/packages/r-pbkrtest/package.py +++ b/var/spack/repos/builtin/packages/r-pbkrtest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-permute/package.py b/var/spack/repos/builtin/packages/r-permute/package.py index 8dbc5a82bed..25a3161713a 100644 --- a/var/spack/repos/builtin/packages/r-permute/package.py +++ b/var/spack/repos/builtin/packages/r-permute/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-pkgmaker/package.py b/var/spack/repos/builtin/packages/r-pkgmaker/package.py index 2692d491b48..a1ea734f1d5 100644 --- a/var/spack/repos/builtin/packages/r-pkgmaker/package.py +++ b/var/spack/repos/builtin/packages/r-pkgmaker/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-plotrix/package.py b/var/spack/repos/builtin/packages/r-plotrix/package.py index 9740c70594d..0fcb7c29afa 100644 --- a/var/spack/repos/builtin/packages/r-plotrix/package.py +++ b/var/spack/repos/builtin/packages/r-plotrix/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-pls/package.py b/var/spack/repos/builtin/packages/r-pls/package.py index c75048962e3..cf9c763959a 100644 --- a/var/spack/repos/builtin/packages/r-pls/package.py +++ b/var/spack/repos/builtin/packages/r-pls/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-plyr/package.py b/var/spack/repos/builtin/packages/r-plyr/package.py index f9f8176c647..eef6e9fd0f0 100644 --- a/var/spack/repos/builtin/packages/r-plyr/package.py +++ b/var/spack/repos/builtin/packages/r-plyr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-png/package.py b/var/spack/repos/builtin/packages/r-png/package.py index 9808e3e3a50..9fdfbec533b 100644 --- a/var/spack/repos/builtin/packages/r-png/package.py +++ b/var/spack/repos/builtin/packages/r-png/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-prabclus/package.py b/var/spack/repos/builtin/packages/r-prabclus/package.py index 1dd42ffae42..3ef75d85fc1 100644 --- a/var/spack/repos/builtin/packages/r-prabclus/package.py +++ b/var/spack/repos/builtin/packages/r-prabclus/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-praise/package.py b/var/spack/repos/builtin/packages/r-praise/package.py index ff23594af99..05650efc478 100644 --- a/var/spack/repos/builtin/packages/r-praise/package.py +++ b/var/spack/repos/builtin/packages/r-praise/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-prodlim/package.py b/var/spack/repos/builtin/packages/r-prodlim/package.py index 44f03e789ad..34634839ba0 100644 --- a/var/spack/repos/builtin/packages/r-prodlim/package.py +++ b/var/spack/repos/builtin/packages/r-prodlim/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-proto/package.py b/var/spack/repos/builtin/packages/r-proto/package.py index f4b6c2f8099..efb90b99148 100644 --- a/var/spack/repos/builtin/packages/r-proto/package.py +++ b/var/spack/repos/builtin/packages/r-proto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-pryr/package.py b/var/spack/repos/builtin/packages/r-pryr/package.py index 673060c7798..cae4a8af8e7 100644 --- a/var/spack/repos/builtin/packages/r-pryr/package.py +++ b/var/spack/repos/builtin/packages/r-pryr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-quadprog/package.py b/var/spack/repos/builtin/packages/r-quadprog/package.py index b72a7f92605..ff4fa300eba 100644 --- a/var/spack/repos/builtin/packages/r-quadprog/package.py +++ b/var/spack/repos/builtin/packages/r-quadprog/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-quantmod/package.py b/var/spack/repos/builtin/packages/r-quantmod/package.py index 8a9755cc4e9..b52bc8a57a2 100644 --- a/var/spack/repos/builtin/packages/r-quantmod/package.py +++ b/var/spack/repos/builtin/packages/r-quantmod/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-quantreg/package.py b/var/spack/repos/builtin/packages/r-quantreg/package.py index 011c4a1c4ea..3d9a04c2902 100644 --- a/var/spack/repos/builtin/packages/r-quantreg/package.py +++ b/var/spack/repos/builtin/packages/r-quantreg/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-r6/package.py b/var/spack/repos/builtin/packages/r-r6/package.py index 9930b751b27..01a2feda214 100644 --- a/var/spack/repos/builtin/packages/r-r6/package.py +++ b/var/spack/repos/builtin/packages/r-r6/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-randomforest/package.py b/var/spack/repos/builtin/packages/r-randomforest/package.py index 6df372e6f35..85d74734865 100644 --- a/var/spack/repos/builtin/packages/r-randomforest/package.py +++ b/var/spack/repos/builtin/packages/r-randomforest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-raster/package.py b/var/spack/repos/builtin/packages/r-raster/package.py index 2bcdfe33ec5..73a1b38b5a4 100644 --- a/var/spack/repos/builtin/packages/r-raster/package.py +++ b/var/spack/repos/builtin/packages/r-raster/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rbokeh/package.py b/var/spack/repos/builtin/packages/r-rbokeh/package.py index f90ea20fbfd..12173b3077b 100644 --- a/var/spack/repos/builtin/packages/r-rbokeh/package.py +++ b/var/spack/repos/builtin/packages/r-rbokeh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py b/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py index d123f536dee..c6b888d6d6f 100644 --- a/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py +++ b/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rcpp/package.py b/var/spack/repos/builtin/packages/r-rcpp/package.py index 1f85226975a..f89a3785246 100644 --- a/var/spack/repos/builtin/packages/r-rcpp/package.py +++ b/var/spack/repos/builtin/packages/r-rcpp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rcppeigen/package.py b/var/spack/repos/builtin/packages/r-rcppeigen/package.py index e5db4ac0f68..de604f8322f 100644 --- a/var/spack/repos/builtin/packages/r-rcppeigen/package.py +++ b/var/spack/repos/builtin/packages/r-rcppeigen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-registry/package.py b/var/spack/repos/builtin/packages/r-registry/package.py index 618ab003853..db1a3697392 100644 --- a/var/spack/repos/builtin/packages/r-registry/package.py +++ b/var/spack/repos/builtin/packages/r-registry/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-repr/package.py b/var/spack/repos/builtin/packages/r-repr/package.py index 67804a7b4f4..c42bea87df6 100644 --- a/var/spack/repos/builtin/packages/r-repr/package.py +++ b/var/spack/repos/builtin/packages/r-repr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-reshape2/package.py b/var/spack/repos/builtin/packages/r-reshape2/package.py index 208cc4d576f..1b53e94e806 100644 --- a/var/spack/repos/builtin/packages/r-reshape2/package.py +++ b/var/spack/repos/builtin/packages/r-reshape2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rgl/package.py b/var/spack/repos/builtin/packages/r-rgl/package.py index d3b65adbaff..099702e2edc 100644 --- a/var/spack/repos/builtin/packages/r-rgl/package.py +++ b/var/spack/repos/builtin/packages/r-rgl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py index b505249f59b..cfe19257fbe 100644 --- a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py +++ b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rinside/package.py b/var/spack/repos/builtin/packages/r-rinside/package.py index 11a254a1623..759910a8592 100644 --- a/var/spack/repos/builtin/packages/r-rinside/package.py +++ b/var/spack/repos/builtin/packages/r-rinside/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rjava/package.py b/var/spack/repos/builtin/packages/r-rjava/package.py index 26502134c1c..7baab54baa8 100644 --- a/var/spack/repos/builtin/packages/r-rjava/package.py +++ b/var/spack/repos/builtin/packages/r-rjava/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rjson/package.py b/var/spack/repos/builtin/packages/r-rjson/package.py index 5db82ed44aa..1fbf94ccbfe 100644 --- a/var/spack/repos/builtin/packages/r-rjson/package.py +++ b/var/spack/repos/builtin/packages/r-rjson/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rjsonio/package.py b/var/spack/repos/builtin/packages/r-rjsonio/package.py index 5cf23bc973c..c57846395e9 100644 --- a/var/spack/repos/builtin/packages/r-rjsonio/package.py +++ b/var/spack/repos/builtin/packages/r-rjsonio/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rmarkdown/package.py b/var/spack/repos/builtin/packages/r-rmarkdown/package.py index 09328f7684b..6e1c25ef64f 100644 --- a/var/spack/repos/builtin/packages/r-rmarkdown/package.py +++ b/var/spack/repos/builtin/packages/r-rmarkdown/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rminer/package.py b/var/spack/repos/builtin/packages/r-rminer/package.py index 4a50994db5e..b86948b3bc1 100644 --- a/var/spack/repos/builtin/packages/r-rminer/package.py +++ b/var/spack/repos/builtin/packages/r-rminer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rmpfr/package.py b/var/spack/repos/builtin/packages/r-rmpfr/package.py index cda1bdd1350..ae419592e33 100644 --- a/var/spack/repos/builtin/packages/r-rmpfr/package.py +++ b/var/spack/repos/builtin/packages/r-rmpfr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rmpi/package.py b/var/spack/repos/builtin/packages/r-rmpi/package.py index d1844776e03..5f8dac889b0 100644 --- a/var/spack/repos/builtin/packages/r-rmpi/package.py +++ b/var/spack/repos/builtin/packages/r-rmpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rmysql/package.py b/var/spack/repos/builtin/packages/r-rmysql/package.py index c0248e73493..5d7be1aff84 100644 --- a/var/spack/repos/builtin/packages/r-rmysql/package.py +++ b/var/spack/repos/builtin/packages/r-rmysql/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rngtools/package.py b/var/spack/repos/builtin/packages/r-rngtools/package.py index 4d26350cc45..1f55311e976 100644 --- a/var/spack/repos/builtin/packages/r-rngtools/package.py +++ b/var/spack/repos/builtin/packages/r-rngtools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-robustbase/package.py b/var/spack/repos/builtin/packages/r-robustbase/package.py index 1b7db70fbee..43e66028212 100644 --- a/var/spack/repos/builtin/packages/r-robustbase/package.py +++ b/var/spack/repos/builtin/packages/r-robustbase/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rodbc/package.py b/var/spack/repos/builtin/packages/r-rodbc/package.py index c48455b91c4..cfd7470a76d 100644 --- a/var/spack/repos/builtin/packages/r-rodbc/package.py +++ b/var/spack/repos/builtin/packages/r-rodbc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-roxygen2/package.py b/var/spack/repos/builtin/packages/r-roxygen2/package.py index 10b876d6869..0e23c835224 100644 --- a/var/spack/repos/builtin/packages/r-roxygen2/package.py +++ b/var/spack/repos/builtin/packages/r-roxygen2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rpart-plot/package.py b/var/spack/repos/builtin/packages/r-rpart-plot/package.py index 64559f93035..c17761f7643 100644 --- a/var/spack/repos/builtin/packages/r-rpart-plot/package.py +++ b/var/spack/repos/builtin/packages/r-rpart-plot/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rpart/package.py b/var/spack/repos/builtin/packages/r-rpart/package.py index df8e33414a3..ea857ad926c 100644 --- a/var/spack/repos/builtin/packages/r-rpart/package.py +++ b/var/spack/repos/builtin/packages/r-rpart/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rpostgresql/package.py b/var/spack/repos/builtin/packages/r-rpostgresql/package.py index 80331755ac8..351b23a16ef 100644 --- a/var/spack/repos/builtin/packages/r-rpostgresql/package.py +++ b/var/spack/repos/builtin/packages/r-rpostgresql/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rsnns/package.py b/var/spack/repos/builtin/packages/r-rsnns/package.py index 0359102983b..b56bde343f0 100644 --- a/var/spack/repos/builtin/packages/r-rsnns/package.py +++ b/var/spack/repos/builtin/packages/r-rsnns/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rsqlite/package.py b/var/spack/repos/builtin/packages/r-rsqlite/package.py index 218d7e589f8..ebdc91ba7dc 100644 --- a/var/spack/repos/builtin/packages/r-rsqlite/package.py +++ b/var/spack/repos/builtin/packages/r-rsqlite/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rstan/package.py b/var/spack/repos/builtin/packages/r-rstan/package.py index 0283c34d324..daea44437ec 100644 --- a/var/spack/repos/builtin/packages/r-rstan/package.py +++ b/var/spack/repos/builtin/packages/r-rstan/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rstudioapi/package.py b/var/spack/repos/builtin/packages/r-rstudioapi/package.py index acf391d1365..923fe4b716c 100644 --- a/var/spack/repos/builtin/packages/r-rstudioapi/package.py +++ b/var/spack/repos/builtin/packages/r-rstudioapi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-rzmq/package.py b/var/spack/repos/builtin/packages/r-rzmq/package.py index 9142c66055b..e4c0e95f44f 100644 --- a/var/spack/repos/builtin/packages/r-rzmq/package.py +++ b/var/spack/repos/builtin/packages/r-rzmq/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-sandwich/package.py b/var/spack/repos/builtin/packages/r-sandwich/package.py index 2b04a2f675c..3ab36537c1c 100644 --- a/var/spack/repos/builtin/packages/r-sandwich/package.py +++ b/var/spack/repos/builtin/packages/r-sandwich/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-scales/package.py b/var/spack/repos/builtin/packages/r-scales/package.py index ec7f82af375..4e513bc2c0b 100644 --- a/var/spack/repos/builtin/packages/r-scales/package.py +++ b/var/spack/repos/builtin/packages/r-scales/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py index 51c3b44e1c2..ac3a9dc8ccf 100644 --- a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py +++ b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-segmented/package.py b/var/spack/repos/builtin/packages/r-segmented/package.py index 415e5a4f724..bc3b02e3c08 100644 --- a/var/spack/repos/builtin/packages/r-segmented/package.py +++ b/var/spack/repos/builtin/packages/r-segmented/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-seqinr/package.py b/var/spack/repos/builtin/packages/r-seqinr/package.py index d9157a77fc1..3b3dbdf871a 100644 --- a/var/spack/repos/builtin/packages/r-seqinr/package.py +++ b/var/spack/repos/builtin/packages/r-seqinr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-shiny/package.py b/var/spack/repos/builtin/packages/r-shiny/package.py index dd0ce0192da..763551049b7 100644 --- a/var/spack/repos/builtin/packages/r-shiny/package.py +++ b/var/spack/repos/builtin/packages/r-shiny/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-snow/package.py b/var/spack/repos/builtin/packages/r-snow/package.py index 6070e4a8826..d19847a8a18 100644 --- a/var/spack/repos/builtin/packages/r-snow/package.py +++ b/var/spack/repos/builtin/packages/r-snow/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-sp/package.py b/var/spack/repos/builtin/packages/r-sp/package.py index 66a213133c7..bbb7752f604 100644 --- a/var/spack/repos/builtin/packages/r-sp/package.py +++ b/var/spack/repos/builtin/packages/r-sp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-sparsem/package.py b/var/spack/repos/builtin/packages/r-sparsem/package.py index 49f4f03f04e..7ac268ff8de 100644 --- a/var/spack/repos/builtin/packages/r-sparsem/package.py +++ b/var/spack/repos/builtin/packages/r-sparsem/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-spdep/package.py b/var/spack/repos/builtin/packages/r-spdep/package.py index eb31f64d5d2..1362a671c06 100644 --- a/var/spack/repos/builtin/packages/r-spdep/package.py +++ b/var/spack/repos/builtin/packages/r-spdep/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-stanheaders/package.py b/var/spack/repos/builtin/packages/r-stanheaders/package.py index 1f7e59064d1..4060a10efd5 100644 --- a/var/spack/repos/builtin/packages/r-stanheaders/package.py +++ b/var/spack/repos/builtin/packages/r-stanheaders/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-statnet-common/package.py b/var/spack/repos/builtin/packages/r-statnet-common/package.py index 25c014790ac..b3dd2569c8d 100644 --- a/var/spack/repos/builtin/packages/r-statnet-common/package.py +++ b/var/spack/repos/builtin/packages/r-statnet-common/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-stringi/package.py b/var/spack/repos/builtin/packages/r-stringi/package.py index 15b89fe64e1..a6e52b5690f 100644 --- a/var/spack/repos/builtin/packages/r-stringi/package.py +++ b/var/spack/repos/builtin/packages/r-stringi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-stringr/package.py b/var/spack/repos/builtin/packages/r-stringr/package.py index e14616cc200..e3c3f4c7c98 100644 --- a/var/spack/repos/builtin/packages/r-stringr/package.py +++ b/var/spack/repos/builtin/packages/r-stringr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-strucchange/package.py b/var/spack/repos/builtin/packages/r-strucchange/package.py index 651e8aee4ee..40f699b0221 100644 --- a/var/spack/repos/builtin/packages/r-strucchange/package.py +++ b/var/spack/repos/builtin/packages/r-strucchange/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-survey/package.py b/var/spack/repos/builtin/packages/r-survey/package.py index b13dbe3f7e0..816371ff15a 100644 --- a/var/spack/repos/builtin/packages/r-survey/package.py +++ b/var/spack/repos/builtin/packages/r-survey/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-survival/package.py b/var/spack/repos/builtin/packages/r-survival/package.py index 62477d53143..0ac191e9abb 100644 --- a/var/spack/repos/builtin/packages/r-survival/package.py +++ b/var/spack/repos/builtin/packages/r-survival/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-tarifx/package.py b/var/spack/repos/builtin/packages/r-tarifx/package.py index f935989a38f..401fe48950c 100644 --- a/var/spack/repos/builtin/packages/r-tarifx/package.py +++ b/var/spack/repos/builtin/packages/r-tarifx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-testit/package.py b/var/spack/repos/builtin/packages/r-testit/package.py index 39bd69ca38a..274f8d265db 100644 --- a/var/spack/repos/builtin/packages/r-testit/package.py +++ b/var/spack/repos/builtin/packages/r-testit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-testthat/package.py b/var/spack/repos/builtin/packages/r-testthat/package.py index 87cdb93ed47..d021e31c6e8 100644 --- a/var/spack/repos/builtin/packages/r-testthat/package.py +++ b/var/spack/repos/builtin/packages/r-testthat/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-th-data/package.py b/var/spack/repos/builtin/packages/r-th-data/package.py index 39eed23fc70..161024ce36b 100644 --- a/var/spack/repos/builtin/packages/r-th-data/package.py +++ b/var/spack/repos/builtin/packages/r-th-data/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-threejs/package.py b/var/spack/repos/builtin/packages/r-threejs/package.py index c318b0c4350..f8e3ada3cf1 100644 --- a/var/spack/repos/builtin/packages/r-threejs/package.py +++ b/var/spack/repos/builtin/packages/r-threejs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-tibble/package.py b/var/spack/repos/builtin/packages/r-tibble/package.py index 50d75bae96a..54b8703c135 100644 --- a/var/spack/repos/builtin/packages/r-tibble/package.py +++ b/var/spack/repos/builtin/packages/r-tibble/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-tidyr/package.py b/var/spack/repos/builtin/packages/r-tidyr/package.py index e4334bac118..45b8f0240e3 100644 --- a/var/spack/repos/builtin/packages/r-tidyr/package.py +++ b/var/spack/repos/builtin/packages/r-tidyr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-trimcluster/package.py b/var/spack/repos/builtin/packages/r-trimcluster/package.py index bb64a9c5dfb..883b2295360 100644 --- a/var/spack/repos/builtin/packages/r-trimcluster/package.py +++ b/var/spack/repos/builtin/packages/r-trimcluster/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-trust/package.py b/var/spack/repos/builtin/packages/r-trust/package.py index 1fe6676b8f6..99f3ee0c3ed 100644 --- a/var/spack/repos/builtin/packages/r-trust/package.py +++ b/var/spack/repos/builtin/packages/r-trust/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-ttr/package.py b/var/spack/repos/builtin/packages/r-ttr/package.py index 1db3f3c10cf..bcce612acef 100644 --- a/var/spack/repos/builtin/packages/r-ttr/package.py +++ b/var/spack/repos/builtin/packages/r-ttr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-uuid/package.py b/var/spack/repos/builtin/packages/r-uuid/package.py index 638f493ace4..7d42c95e89c 100644 --- a/var/spack/repos/builtin/packages/r-uuid/package.py +++ b/var/spack/repos/builtin/packages/r-uuid/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-vcd/package.py b/var/spack/repos/builtin/packages/r-vcd/package.py index 7f785f81584..9b65117a419 100644 --- a/var/spack/repos/builtin/packages/r-vcd/package.py +++ b/var/spack/repos/builtin/packages/r-vcd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-vegan/package.py b/var/spack/repos/builtin/packages/r-vegan/package.py index bd1134e8bef..6816660ffe6 100644 --- a/var/spack/repos/builtin/packages/r-vegan/package.py +++ b/var/spack/repos/builtin/packages/r-vegan/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-viridis/package.py b/var/spack/repos/builtin/packages/r-viridis/package.py index bb0ac670a63..ed9ad5ab6a8 100644 --- a/var/spack/repos/builtin/packages/r-viridis/package.py +++ b/var/spack/repos/builtin/packages/r-viridis/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-viridislite/package.py b/var/spack/repos/builtin/packages/r-viridislite/package.py index e1e4f50d1c3..885e673d562 100644 --- a/var/spack/repos/builtin/packages/r-viridislite/package.py +++ b/var/spack/repos/builtin/packages/r-viridislite/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-visnetwork/package.py b/var/spack/repos/builtin/packages/r-visnetwork/package.py index 6618bf8b076..2b2921df810 100644 --- a/var/spack/repos/builtin/packages/r-visnetwork/package.py +++ b/var/spack/repos/builtin/packages/r-visnetwork/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-whisker/package.py b/var/spack/repos/builtin/packages/r-whisker/package.py index 44b8c6fc08b..cff466f287c 100644 --- a/var/spack/repos/builtin/packages/r-whisker/package.py +++ b/var/spack/repos/builtin/packages/r-whisker/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-withr/package.py b/var/spack/repos/builtin/packages/r-withr/package.py index f9de7d42cd0..4491a8fd367 100644 --- a/var/spack/repos/builtin/packages/r-withr/package.py +++ b/var/spack/repos/builtin/packages/r-withr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-xgboost/package.py b/var/spack/repos/builtin/packages/r-xgboost/package.py index eb6dacab345..45504c89b93 100644 --- a/var/spack/repos/builtin/packages/r-xgboost/package.py +++ b/var/spack/repos/builtin/packages/r-xgboost/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-xlconnect/package.py b/var/spack/repos/builtin/packages/r-xlconnect/package.py index 5f23a9e2754..d580faace75 100644 --- a/var/spack/repos/builtin/packages/r-xlconnect/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnect/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-xlconnectjars/package.py b/var/spack/repos/builtin/packages/r-xlconnectjars/package.py index 1e8b0b4f69e..a618ad71573 100644 --- a/var/spack/repos/builtin/packages/r-xlconnectjars/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnectjars/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-xlsx/package.py b/var/spack/repos/builtin/packages/r-xlsx/package.py index 35c8d35d95b..c3506b43d4c 100644 --- a/var/spack/repos/builtin/packages/r-xlsx/package.py +++ b/var/spack/repos/builtin/packages/r-xlsx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-xlsxjars/package.py b/var/spack/repos/builtin/packages/r-xlsxjars/package.py index 8d351d69b62..b0b6b91868d 100644 --- a/var/spack/repos/builtin/packages/r-xlsxjars/package.py +++ b/var/spack/repos/builtin/packages/r-xlsxjars/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-xml/package.py b/var/spack/repos/builtin/packages/r-xml/package.py index 9ec3d8cf1e1..5704a64aed3 100644 --- a/var/spack/repos/builtin/packages/r-xml/package.py +++ b/var/spack/repos/builtin/packages/r-xml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-xtable/package.py b/var/spack/repos/builtin/packages/r-xtable/package.py index 462a97b451f..1ec138c14cf 100644 --- a/var/spack/repos/builtin/packages/r-xtable/package.py +++ b/var/spack/repos/builtin/packages/r-xtable/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-xts/package.py b/var/spack/repos/builtin/packages/r-xts/package.py index a3a4ce7f587..b0ab027206b 100644 --- a/var/spack/repos/builtin/packages/r-xts/package.py +++ b/var/spack/repos/builtin/packages/r-xts/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-yaml/package.py b/var/spack/repos/builtin/packages/r-yaml/package.py index 79cc0b392f5..d4f096109f4 100644 --- a/var/spack/repos/builtin/packages/r-yaml/package.py +++ b/var/spack/repos/builtin/packages/r-yaml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r-zoo/package.py b/var/spack/repos/builtin/packages/r-zoo/package.py index 0012a2d29a4..bda4fd6cf94 100644 --- a/var/spack/repos/builtin/packages/r-zoo/package.py +++ b/var/spack/repos/builtin/packages/r-zoo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 5c092e30e5e..a5e89cdfc1c 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index dccf9a581c3..b01f9570fe4 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/random123/package.py b/var/spack/repos/builtin/packages/random123/package.py index 1ee51bb107a..2aedf9aa63c 100644 --- a/var/spack/repos/builtin/packages/random123/package.py +++ b/var/spack/repos/builtin/packages/random123/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/randrproto/package.py b/var/spack/repos/builtin/packages/randrproto/package.py index ff336204486..87c6d1ad815 100644 --- a/var/spack/repos/builtin/packages/randrproto/package.py +++ b/var/spack/repos/builtin/packages/randrproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ravel/package.py b/var/spack/repos/builtin/packages/ravel/package.py index 4f4f2b2e10a..5875312a7b5 100644 --- a/var/spack/repos/builtin/packages/ravel/package.py +++ b/var/spack/repos/builtin/packages/ravel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/readline/package.py b/var/spack/repos/builtin/packages/readline/package.py index e6476d39c36..31320bf6666 100644 --- a/var/spack/repos/builtin/packages/readline/package.py +++ b/var/spack/repos/builtin/packages/readline/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/recordproto/package.py b/var/spack/repos/builtin/packages/recordproto/package.py index b38eeae0790..27042e7b03d 100644 --- a/var/spack/repos/builtin/packages/recordproto/package.py +++ b/var/spack/repos/builtin/packages/recordproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/relion/package.py b/var/spack/repos/builtin/packages/relion/package.py index cd45a148905..dfb93cd9434 100644 --- a/var/spack/repos/builtin/packages/relion/package.py +++ b/var/spack/repos/builtin/packages/relion/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rempi/package.py b/var/spack/repos/builtin/packages/rempi/package.py index d93dbfa7227..48ff14468ae 100644 --- a/var/spack/repos/builtin/packages/rempi/package.py +++ b/var/spack/repos/builtin/packages/rempi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rename/package.py b/var/spack/repos/builtin/packages/rename/package.py index 3538fd21cc4..9970a1a51c0 100644 --- a/var/spack/repos/builtin/packages/rename/package.py +++ b/var/spack/repos/builtin/packages/rename/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rendercheck/package.py b/var/spack/repos/builtin/packages/rendercheck/package.py index f53925fe287..894329dbe94 100644 --- a/var/spack/repos/builtin/packages/rendercheck/package.py +++ b/var/spack/repos/builtin/packages/rendercheck/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/renderproto/package.py b/var/spack/repos/builtin/packages/renderproto/package.py index 81348d7347e..687acf16759 100644 --- a/var/spack/repos/builtin/packages/renderproto/package.py +++ b/var/spack/repos/builtin/packages/renderproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/resourceproto/package.py b/var/spack/repos/builtin/packages/resourceproto/package.py index 11e143b5fc3..67e0bad922b 100644 --- a/var/spack/repos/builtin/packages/resourceproto/package.py +++ b/var/spack/repos/builtin/packages/resourceproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rgb/package.py b/var/spack/repos/builtin/packages/rgb/package.py index 985b90449d5..75d483172d0 100644 --- a/var/spack/repos/builtin/packages/rgb/package.py +++ b/var/spack/repos/builtin/packages/rgb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rockstar/package.py b/var/spack/repos/builtin/packages/rockstar/package.py index 5903b2c18bb..9cb92d0f8de 100644 --- a/var/spack/repos/builtin/packages/rockstar/package.py +++ b/var/spack/repos/builtin/packages/rockstar/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index ca77b8fba5d..b5f6ce89fe9 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py index ed8cca40ad2..0e2265f571c 100644 --- a/var/spack/repos/builtin/packages/rose/package.py +++ b/var/spack/repos/builtin/packages/rose/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rstart/package.py b/var/spack/repos/builtin/packages/rstart/package.py index 198c9c8be52..ff43120daf3 100644 --- a/var/spack/repos/builtin/packages/rstart/package.py +++ b/var/spack/repos/builtin/packages/rstart/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rsync/package.py b/var/spack/repos/builtin/packages/rsync/package.py index 2c21262b39e..de51073287d 100644 --- a/var/spack/repos/builtin/packages/rsync/package.py +++ b/var/spack/repos/builtin/packages/rsync/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/ruby/package.py b/var/spack/repos/builtin/packages/ruby/package.py index 728362a18c3..d3cc4db319f 100644 --- a/var/spack/repos/builtin/packages/ruby/package.py +++ b/var/spack/repos/builtin/packages/ruby/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rust-bindgen/package.py b/var/spack/repos/builtin/packages/rust-bindgen/package.py index 00ccbb71cf2..9db050425eb 100644 --- a/var/spack/repos/builtin/packages/rust-bindgen/package.py +++ b/var/spack/repos/builtin/packages/rust-bindgen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/rust/package.py b/var/spack/repos/builtin/packages/rust/package.py index 4d0e7f52cf0..44e7218ab45 100644 --- a/var/spack/repos/builtin/packages/rust/package.py +++ b/var/spack/repos/builtin/packages/rust/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/samrai/package.py b/var/spack/repos/builtin/packages/samrai/package.py index 5100d71583e..c624a75a475 100644 --- a/var/spack/repos/builtin/packages/samrai/package.py +++ b/var/spack/repos/builtin/packages/samrai/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/samtools/package.py b/var/spack/repos/builtin/packages/samtools/package.py index 915b25b61b8..173fd7e7727 100644 --- a/var/spack/repos/builtin/packages/samtools/package.py +++ b/var/spack/repos/builtin/packages/samtools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sas/package.py b/var/spack/repos/builtin/packages/sas/package.py index 685e4202bfb..5a7f1de1d5d 100644 --- a/var/spack/repos/builtin/packages/sas/package.py +++ b/var/spack/repos/builtin/packages/sas/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/saws/package.py b/var/spack/repos/builtin/packages/saws/package.py index 7549a94b91c..047f24f447f 100644 --- a/var/spack/repos/builtin/packages/saws/package.py +++ b/var/spack/repos/builtin/packages/saws/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,9 +26,9 @@ class Saws(AutotoolsPackage): - """The Scientific Application Web server (SAWs) turns any C or C++ - scientific or engineering application code into a webserver, - allowing one to examine (and even modify) the state of the + """The Scientific Application Web server (SAWs) turns any C or C++ + scientific or engineering application code into a webserver, + allowing one to examine (and even modify) the state of the simulation with any browser from anywhere.""" homepage = "https://bitbucket.org/saws/saws/wiki/Home" diff --git a/var/spack/repos/builtin/packages/sbt/package.py b/var/spack/repos/builtin/packages/sbt/package.py index 977939c9dff..27be7cc54c2 100644 --- a/var/spack/repos/builtin/packages/sbt/package.py +++ b/var/spack/repos/builtin/packages/sbt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/scala/package.py b/var/spack/repos/builtin/packages/scala/package.py index 3f83cc44e26..dd1ab78f6b9 100644 --- a/var/spack/repos/builtin/packages/scala/package.py +++ b/var/spack/repos/builtin/packages/scala/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/scalasca/package.py b/var/spack/repos/builtin/packages/scalasca/package.py index 5b1ca12665a..276cdf05a56 100644 --- a/var/spack/repos/builtin/packages/scalasca/package.py +++ b/var/spack/repos/builtin/packages/scalasca/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/scons/package.py b/var/spack/repos/builtin/packages/scons/package.py index 54f894da6fe..5bf35c071c5 100644 --- a/var/spack/repos/builtin/packages/scons/package.py +++ b/var/spack/repos/builtin/packages/scons/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/scorec-core/package.py b/var/spack/repos/builtin/packages/scorec-core/package.py index f8605e9859c..dd143fc1181 100644 --- a/var/spack/repos/builtin/packages/scorec-core/package.py +++ b/var/spack/repos/builtin/packages/scorec-core/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index 288a0a0cd11..d164c38f54a 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index 6129db104ae..ab768767f9a 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/scr/package.py b/var/spack/repos/builtin/packages/scr/package.py index 2b01c60b3e5..f8fe72f1108 100644 --- a/var/spack/repos/builtin/packages/scr/package.py +++ b/var/spack/repos/builtin/packages/scr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/screen/package.py b/var/spack/repos/builtin/packages/screen/package.py index 542612f2075..997220eb378 100644 --- a/var/spack/repos/builtin/packages/screen/package.py +++ b/var/spack/repos/builtin/packages/screen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/scripts/package.py b/var/spack/repos/builtin/packages/scripts/package.py index 4bdf63e70ad..2f12bf217cb 100644 --- a/var/spack/repos/builtin/packages/scripts/package.py +++ b/var/spack/repos/builtin/packages/scripts/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/scrnsaverproto/package.py b/var/spack/repos/builtin/packages/scrnsaverproto/package.py index c849d127135..767566cc032 100644 --- a/var/spack/repos/builtin/packages/scrnsaverproto/package.py +++ b/var/spack/repos/builtin/packages/scrnsaverproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sctk/package.py b/var/spack/repos/builtin/packages/sctk/package.py index 680a202d7b8..8c3734f6230 100644 --- a/var/spack/repos/builtin/packages/sctk/package.py +++ b/var/spack/repos/builtin/packages/sctk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -27,10 +27,10 @@ class Sctk(Package): - """The NIST Scoring Toolkit (SCTK) is a collection of software tools - designed to score benchmark test evaluations of Automatic Speech - Recognition (ASR) Systems. The toolkit is currently used by NIST, - benchmark test participants, and reserchers worldwide to as a + """The NIST Scoring Toolkit (SCTK) is a collection of software tools + designed to score benchmark test evaluations of Automatic Speech + Recognition (ASR) Systems. The toolkit is currently used by NIST, + benchmark test participants, and reserchers worldwide to as a common scoring engine.""" homepage = "https://www.nist.gov/itl/iad/mig/tools" diff --git a/var/spack/repos/builtin/packages/sdl2-image/package.py b/var/spack/repos/builtin/packages/sdl2-image/package.py index 6e953a14514..5caba819b29 100644 --- a/var/spack/repos/builtin/packages/sdl2-image/package.py +++ b/var/spack/repos/builtin/packages/sdl2-image/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sdl2/package.py b/var/spack/repos/builtin/packages/sdl2/package.py index 98f8861feda..e841cd4da43 100644 --- a/var/spack/repos/builtin/packages/sdl2/package.py +++ b/var/spack/repos/builtin/packages/sdl2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sed/package.py b/var/spack/repos/builtin/packages/sed/package.py index 57e00f4e77b..3e59841579a 100644 --- a/var/spack/repos/builtin/packages/sed/package.py +++ b/var/spack/repos/builtin/packages/sed/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/seqtk/package.py b/var/spack/repos/builtin/packages/seqtk/package.py index ca168c176cb..466ec805356 100644 --- a/var/spack/repos/builtin/packages/seqtk/package.py +++ b/var/spack/repos/builtin/packages/seqtk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/serf/package.py b/var/spack/repos/builtin/packages/serf/package.py index ebca74a3ab8..3d8e2285481 100644 --- a/var/spack/repos/builtin/packages/serf/package.py +++ b/var/spack/repos/builtin/packages/serf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sessreg/package.py b/var/spack/repos/builtin/packages/sessreg/package.py index d50e65f4b03..a5bfd177c99 100644 --- a/var/spack/repos/builtin/packages/sessreg/package.py +++ b/var/spack/repos/builtin/packages/sessreg/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/setxkbmap/package.py b/var/spack/repos/builtin/packages/setxkbmap/package.py index 2c0f4380e30..7b28d55f1b1 100644 --- a/var/spack/repos/builtin/packages/setxkbmap/package.py +++ b/var/spack/repos/builtin/packages/setxkbmap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sga/package.py b/var/spack/repos/builtin/packages/sga/package.py index 41e1830de15..e8581781ff9 100644 --- a/var/spack/repos/builtin/packages/sga/package.py +++ b/var/spack/repos/builtin/packages/sga/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -27,7 +27,7 @@ class Sga(AutotoolsPackage): """SGA is a de novo genome assembler based on the concept of string graphs. - The major goal of SGA is to be very memory efficient, which is achieved + The major goal of SGA is to be very memory efficient, which is achieved by using a compressed representation of DNA sequence reads.""" homepage = "https://www.msi.umn.edu/sw/sga" diff --git a/var/spack/repos/builtin/packages/shiny-server/package.py b/var/spack/repos/builtin/packages/shiny-server/package.py index a3a2b2b1600..90b297327e1 100644 --- a/var/spack/repos/builtin/packages/shiny-server/package.py +++ b/var/spack/repos/builtin/packages/shiny-server/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/showfont/package.py b/var/spack/repos/builtin/packages/showfont/package.py index 2dd83603118..7f75ef8c534 100644 --- a/var/spack/repos/builtin/packages/showfont/package.py +++ b/var/spack/repos/builtin/packages/showfont/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index eca5d1a6056..75060d488eb 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/simul/package.py b/var/spack/repos/builtin/packages/simul/package.py index 67ee61e4165..2fb8f1b70d2 100644 --- a/var/spack/repos/builtin/packages/simul/package.py +++ b/var/spack/repos/builtin/packages/simul/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,7 +26,7 @@ class Simul(Package): - """simul is an MPI coordinated test of parallel + """simul is an MPI coordinated test of parallel filesystem system calls and library functions. """ homepage = "https://github.com/LLNL/simul" diff --git a/var/spack/repos/builtin/packages/simulationio/package.py b/var/spack/repos/builtin/packages/simulationio/package.py index 7e97c1e4ba8..46ec5e5abbc 100644 --- a/var/spack/repos/builtin/packages/simulationio/package.py +++ b/var/spack/repos/builtin/packages/simulationio/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 2e5bd086929..934b173b2d9 100644 --- a/var/spack/repos/builtin/packages/slepc/package.py +++ b/var/spack/repos/builtin/packages/slepc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/smproxy/package.py b/var/spack/repos/builtin/packages/smproxy/package.py index f7c7ebfe990..bead0b37de2 100644 --- a/var/spack/repos/builtin/packages/smproxy/package.py +++ b/var/spack/repos/builtin/packages/smproxy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/snakemake/package.py b/var/spack/repos/builtin/packages/snakemake/package.py index 0970b88f9cd..ed79e6002c0 100644 --- a/var/spack/repos/builtin/packages/snakemake/package.py +++ b/var/spack/repos/builtin/packages/snakemake/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/snappy/package.py b/var/spack/repos/builtin/packages/snappy/package.py index c7b8118a248..bba05844e92 100644 --- a/var/spack/repos/builtin/packages/snappy/package.py +++ b/var/spack/repos/builtin/packages/snappy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sowing/package.py b/var/spack/repos/builtin/packages/sowing/package.py index 5dc23579b80..3f0b76078c1 100644 --- a/var/spack/repos/builtin/packages/sowing/package.py +++ b/var/spack/repos/builtin/packages/sowing/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sox/package.py b/var/spack/repos/builtin/packages/sox/package.py index fc36a767aea..21e755c1967 100644 --- a/var/spack/repos/builtin/packages/sox/package.py +++ b/var/spack/repos/builtin/packages/sox/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py index 52eb5d72892..c625f6b82ab 100644 --- a/var/spack/repos/builtin/packages/spark/package.py +++ b/var/spack/repos/builtin/packages/spark/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sparsehash/package.py b/var/spack/repos/builtin/packages/sparsehash/package.py index 6216987bce1..864c5ffce82 100644 --- a/var/spack/repos/builtin/packages/sparsehash/package.py +++ b/var/spack/repos/builtin/packages/sparsehash/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/spdlog/package.py b/var/spack/repos/builtin/packages/spdlog/package.py index f9520219a34..a5a5612ae9f 100644 --- a/var/spack/repos/builtin/packages/spdlog/package.py +++ b/var/spack/repos/builtin/packages/spdlog/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/spectrum-mpi/package.py b/var/spack/repos/builtin/packages/spectrum-mpi/package.py index d743f4874ad..1daa4b917a7 100644 --- a/var/spack/repos/builtin/packages/spectrum-mpi/package.py +++ b/var/spack/repos/builtin/packages/spectrum-mpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/speex/package.py b/var/spack/repos/builtin/packages/speex/package.py index b8850e801f8..6cac86f20dd 100644 --- a/var/spack/repos/builtin/packages/speex/package.py +++ b/var/spack/repos/builtin/packages/speex/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,7 +26,7 @@ class Speex(AutotoolsPackage): - """Speex is an Open Source/Free Software patent-free + """Speex is an Open Source/Free Software patent-free audio compression format designed for speech.""" homepage = "https://speex.org" diff --git a/var/spack/repos/builtin/packages/sph2pipe/package.py b/var/spack/repos/builtin/packages/sph2pipe/package.py index 445f2849026..c89a16c9026 100644 --- a/var/spack/repos/builtin/packages/sph2pipe/package.py +++ b/var/spack/repos/builtin/packages/sph2pipe/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/spherepack/package.py b/var/spack/repos/builtin/packages/spherepack/package.py index d85b8dc6127..12c274774c8 100644 --- a/var/spack/repos/builtin/packages/spherepack/package.py +++ b/var/spack/repos/builtin/packages/spherepack/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/spindle/package.py b/var/spack/repos/builtin/packages/spindle/package.py index ec996140b12..673cc5ebbe5 100644 --- a/var/spack/repos/builtin/packages/spindle/package.py +++ b/var/spack/repos/builtin/packages/spindle/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/spot/package.py b/var/spack/repos/builtin/packages/spot/package.py index 24787e3adc0..1dc26a4e7c6 100644 --- a/var/spack/repos/builtin/packages/spot/package.py +++ b/var/spack/repos/builtin/packages/spot/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py index c12e937af90..56062c14726 100644 --- a/var/spack/repos/builtin/packages/sqlite/package.py +++ b/var/spack/repos/builtin/packages/sqlite/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sst-dumpi/package.py b/var/spack/repos/builtin/packages/sst-dumpi/package.py index edb18588093..537d0f5e14b 100644 --- a/var/spack/repos/builtin/packages/sst-dumpi/package.py +++ b/var/spack/repos/builtin/packages/sst-dumpi/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sst-macro/package.py b/var/spack/repos/builtin/packages/sst-macro/package.py index 1fb927b5998..3fd1a7489d3 100644 --- a/var/spack/repos/builtin/packages/sst-macro/package.py +++ b/var/spack/repos/builtin/packages/sst-macro/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/staden-io-lib/package.py b/var/spack/repos/builtin/packages/staden-io-lib/package.py index 31f9693e285..c69b3192521 100644 --- a/var/spack/repos/builtin/packages/staden-io-lib/package.py +++ b/var/spack/repos/builtin/packages/staden-io-lib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as @@ -26,7 +26,7 @@ class StadenIoLib(AutotoolsPackage): - """Io_lib is a library for reading/writing various bioinformatics + """Io_lib is a library for reading/writing various bioinformatics file formats.""" homepage = "http://staden.sourceforge.net/" diff --git a/var/spack/repos/builtin/packages/star-ccm-plus/package.py b/var/spack/repos/builtin/packages/star-ccm-plus/package.py index 4197aec339c..35fa9629c47 100644 --- a/var/spack/repos/builtin/packages/star-ccm-plus/package.py +++ b/var/spack/repos/builtin/packages/star-ccm-plus/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/star/package.py b/var/spack/repos/builtin/packages/star/package.py index a70dfb00bbc..e06ed646dfe 100644 --- a/var/spack/repos/builtin/packages/star/package.py +++ b/var/spack/repos/builtin/packages/star/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index 59d110330a9..eedb2fe314c 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/stc/package.py b/var/spack/repos/builtin/packages/stc/package.py index d8daa4e20e1..7365943a14c 100644 --- a/var/spack/repos/builtin/packages/stc/package.py +++ b/var/spack/repos/builtin/packages/stc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/stream/package.py b/var/spack/repos/builtin/packages/stream/package.py index 7e240713566..c98ecc9c399 100644 --- a/var/spack/repos/builtin/packages/stream/package.py +++ b/var/spack/repos/builtin/packages/stream/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/stress/package.py b/var/spack/repos/builtin/packages/stress/package.py index 81bf2bd9a47..acdcf262d19 100644 --- a/var/spack/repos/builtin/packages/stress/package.py +++ b/var/spack/repos/builtin/packages/stress/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sublime-text/package.py b/var/spack/repos/builtin/packages/sublime-text/package.py index 1cfb117a051..3d7fb65005d 100644 --- a/var/spack/repos/builtin/packages/sublime-text/package.py +++ b/var/spack/repos/builtin/packages/sublime-text/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py index 628dd26d246..eb39c8299d2 100644 --- a/var/spack/repos/builtin/packages/subversion/package.py +++ b/var/spack/repos/builtin/packages/subversion/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index 74b8c53bec8..e64be9730b1 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index cb12a410f4a..98e2f8f0099 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index 7f7a0f4db0a..f535252b8a4 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/superlu-mt/package.py b/var/spack/repos/builtin/packages/superlu-mt/package.py index fd6091a0f0b..a4adff7c301 100644 --- a/var/spack/repos/builtin/packages/superlu-mt/package.py +++ b/var/spack/repos/builtin/packages/superlu-mt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py index 8e7303d6c87..7cdf4315fc9 100644 --- a/var/spack/repos/builtin/packages/superlu/package.py +++ b/var/spack/repos/builtin/packages/superlu/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/swiftsim/package.py b/var/spack/repos/builtin/packages/swiftsim/package.py index 2ebdc1fdcbe..19860d1ec01 100644 --- a/var/spack/repos/builtin/packages/swiftsim/package.py +++ b/var/spack/repos/builtin/packages/swiftsim/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/swig/package.py b/var/spack/repos/builtin/packages/swig/package.py index 4d3a8724839..4f197a838e8 100644 --- a/var/spack/repos/builtin/packages/swig/package.py +++ b/var/spack/repos/builtin/packages/swig/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/symengine/package.py b/var/spack/repos/builtin/packages/symengine/package.py index 04625283204..50dd335ac70 100644 --- a/var/spack/repos/builtin/packages/symengine/package.py +++ b/var/spack/repos/builtin/packages/symengine/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sympol/package.py b/var/spack/repos/builtin/packages/sympol/package.py index 7ce4995f03c..6385bd09da5 100644 --- a/var/spack/repos/builtin/packages/sympol/package.py +++ b/var/spack/repos/builtin/packages/sympol/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py index 5ac870c8ba7..36bcdf1cfc9 100644 --- a/var/spack/repos/builtin/packages/sz/package.py +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/szip/package.py b/var/spack/repos/builtin/packages/szip/package.py index 91934f7d039..176006e70f0 100644 --- a/var/spack/repos/builtin/packages/szip/package.py +++ b/var/spack/repos/builtin/packages/szip/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/talloc/package.py b/var/spack/repos/builtin/packages/talloc/package.py index 502057b3e9c..bd3d066adab 100644 --- a/var/spack/repos/builtin/packages/talloc/package.py +++ b/var/spack/repos/builtin/packages/talloc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tar/package.py b/var/spack/repos/builtin/packages/tar/package.py index cabd422c0d3..16e7920d54d 100644 --- a/var/spack/repos/builtin/packages/tar/package.py +++ b/var/spack/repos/builtin/packages/tar/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/task/package.py b/var/spack/repos/builtin/packages/task/package.py index 785023fd03c..ac34bedd932 100644 --- a/var/spack/repos/builtin/packages/task/package.py +++ b/var/spack/repos/builtin/packages/task/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/taskd/package.py b/var/spack/repos/builtin/packages/taskd/package.py index bfe77aaa5c4..b14a507424b 100644 --- a/var/spack/repos/builtin/packages/taskd/package.py +++ b/var/spack/repos/builtin/packages/taskd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index 991841f137b..f9e2dea56e0 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tbb/package.py b/var/spack/repos/builtin/packages/tbb/package.py index 518d7a86bd2..a23ac23983f 100644 --- a/var/spack/repos/builtin/packages/tbb/package.py +++ b/var/spack/repos/builtin/packages/tbb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index 8ddfc903b3c..ea2b55573c0 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tetgen/package.py b/var/spack/repos/builtin/packages/tetgen/package.py index 2ccc9504e20..c887c7c8f58 100644 --- a/var/spack/repos/builtin/packages/tetgen/package.py +++ b/var/spack/repos/builtin/packages/tetgen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tethex/package.py b/var/spack/repos/builtin/packages/tethex/package.py index 624942498e2..d5d4ba891b3 100644 --- a/var/spack/repos/builtin/packages/tethex/package.py +++ b/var/spack/repos/builtin/packages/tethex/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/texinfo/package.py b/var/spack/repos/builtin/packages/texinfo/package.py index e4fbc372355..e633cd6ac36 100644 --- a/var/spack/repos/builtin/packages/texinfo/package.py +++ b/var/spack/repos/builtin/packages/texinfo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/texlive/package.py b/var/spack/repos/builtin/packages/texlive/package.py index 3cfab6304da..58859d5ebb4 100644 --- a/var/spack/repos/builtin/packages/texlive/package.py +++ b/var/spack/repos/builtin/packages/texlive/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/the-platinum-searcher/package.py b/var/spack/repos/builtin/packages/the-platinum-searcher/package.py index eeddf194ea6..b8d99fcf776 100644 --- a/var/spack/repos/builtin/packages/the-platinum-searcher/package.py +++ b/var/spack/repos/builtin/packages/the-platinum-searcher/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/the-silver-searcher/package.py b/var/spack/repos/builtin/packages/the-silver-searcher/package.py index 9721554663f..236d1f88f4d 100644 --- a/var/spack/repos/builtin/packages/the-silver-searcher/package.py +++ b/var/spack/repos/builtin/packages/the-silver-searcher/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py index 755f7a80b9b..306f8d9de5d 100644 --- a/var/spack/repos/builtin/packages/thrift/package.py +++ b/var/spack/repos/builtin/packages/thrift/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tinyxml/package.py b/var/spack/repos/builtin/packages/tinyxml/package.py index 45970ca4f83..70dfb552f92 100644 --- a/var/spack/repos/builtin/packages/tinyxml/package.py +++ b/var/spack/repos/builtin/packages/tinyxml/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tinyxml2/package.py b/var/spack/repos/builtin/packages/tinyxml2/package.py index d36bb5fa9b1..f39ca8b7af0 100644 --- a/var/spack/repos/builtin/packages/tinyxml2/package.py +++ b/var/spack/repos/builtin/packages/tinyxml2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tk/package.py b/var/spack/repos/builtin/packages/tk/package.py index fdcb29a785d..69ea8a6a006 100644 --- a/var/spack/repos/builtin/packages/tk/package.py +++ b/var/spack/repos/builtin/packages/tk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tmux/package.py b/var/spack/repos/builtin/packages/tmux/package.py index 76778d1f5e5..63d6c943b8e 100644 --- a/var/spack/repos/builtin/packages/tmux/package.py +++ b/var/spack/repos/builtin/packages/tmux/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tmuxinator/package.py b/var/spack/repos/builtin/packages/tmuxinator/package.py index 66da4006f24..2078187189e 100644 --- a/var/spack/repos/builtin/packages/tmuxinator/package.py +++ b/var/spack/repos/builtin/packages/tmuxinator/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/transset/package.py b/var/spack/repos/builtin/packages/transset/package.py index 27f3a2f8823..7f93754263b 100644 --- a/var/spack/repos/builtin/packages/transset/package.py +++ b/var/spack/repos/builtin/packages/transset/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/trapproto/package.py b/var/spack/repos/builtin/packages/trapproto/package.py index 879ac569dfb..5433fc97f7d 100644 --- a/var/spack/repos/builtin/packages/trapproto/package.py +++ b/var/spack/repos/builtin/packages/trapproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tree/package.py b/var/spack/repos/builtin/packages/tree/package.py index 795f8c997e7..19979124ba7 100644 --- a/var/spack/repos/builtin/packages/tree/package.py +++ b/var/spack/repos/builtin/packages/tree/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/triangle/package.py b/var/spack/repos/builtin/packages/triangle/package.py index f4ee9ca1c9a..c7cfa3a60e3 100644 --- a/var/spack/repos/builtin/packages/triangle/package.py +++ b/var/spack/repos/builtin/packages/triangle/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index f28eb36a50c..5012683879f 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/trimmomatic/package.py b/var/spack/repos/builtin/packages/trimmomatic/package.py index 1694dbad70b..54c80d2ba06 100644 --- a/var/spack/repos/builtin/packages/trimmomatic/package.py +++ b/var/spack/repos/builtin/packages/trimmomatic/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/turbine/package.py b/var/spack/repos/builtin/packages/turbine/package.py index ed5c4d1000e..6de98eef16c 100644 --- a/var/spack/repos/builtin/packages/turbine/package.py +++ b/var/spack/repos/builtin/packages/turbine/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/turbomole/package.py b/var/spack/repos/builtin/packages/turbomole/package.py index cf14259da4f..9eb9af6ff1f 100644 --- a/var/spack/repos/builtin/packages/turbomole/package.py +++ b/var/spack/repos/builtin/packages/turbomole/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/tut/package.py b/var/spack/repos/builtin/packages/tut/package.py index 6c6c6bdb27d..72ca2e1ff43 100644 --- a/var/spack/repos/builtin/packages/tut/package.py +++ b/var/spack/repos/builtin/packages/tut/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/twm/package.py b/var/spack/repos/builtin/packages/twm/package.py index a1a221b969e..22ef5787506 100644 --- a/var/spack/repos/builtin/packages/twm/package.py +++ b/var/spack/repos/builtin/packages/twm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/uberftp/package.py b/var/spack/repos/builtin/packages/uberftp/package.py index f9d0174b78a..6cb17c417a8 100644 --- a/var/spack/repos/builtin/packages/uberftp/package.py +++ b/var/spack/repos/builtin/packages/uberftp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/udunits2/package.py b/var/spack/repos/builtin/packages/udunits2/package.py index 6df1f1e8d29..ad16fb04fb9 100644 --- a/var/spack/repos/builtin/packages/udunits2/package.py +++ b/var/spack/repos/builtin/packages/udunits2/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/uncrustify/package.py b/var/spack/repos/builtin/packages/uncrustify/package.py index 7e4b3bd24d0..20c26ed29f9 100644 --- a/var/spack/repos/builtin/packages/uncrustify/package.py +++ b/var/spack/repos/builtin/packages/uncrustify/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/unibilium/package.py b/var/spack/repos/builtin/packages/unibilium/package.py index 943e4737e17..2a5ce7f2675 100644 --- a/var/spack/repos/builtin/packages/unibilium/package.py +++ b/var/spack/repos/builtin/packages/unibilium/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/unison/package.py b/var/spack/repos/builtin/packages/unison/package.py index aa890ea8696..70420a38d4f 100644 --- a/var/spack/repos/builtin/packages/unison/package.py +++ b/var/spack/repos/builtin/packages/unison/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/units/package.py b/var/spack/repos/builtin/packages/units/package.py index 2c62d48b942..e2a12bf57cd 100644 --- a/var/spack/repos/builtin/packages/units/package.py +++ b/var/spack/repos/builtin/packages/units/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/unixodbc/package.py b/var/spack/repos/builtin/packages/unixodbc/package.py index 8ce11d27ddf..df7c80b2bdf 100644 --- a/var/spack/repos/builtin/packages/unixodbc/package.py +++ b/var/spack/repos/builtin/packages/unixodbc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/util-linux/package.py b/var/spack/repos/builtin/packages/util-linux/package.py index 7ca694c5da5..018ce1993df 100644 --- a/var/spack/repos/builtin/packages/util-linux/package.py +++ b/var/spack/repos/builtin/packages/util-linux/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/util-macros/package.py b/var/spack/repos/builtin/packages/util-macros/package.py index 1d7515b4cf5..10decd35f69 100644 --- a/var/spack/repos/builtin/packages/util-macros/package.py +++ b/var/spack/repos/builtin/packages/util-macros/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/uuid/package.py b/var/spack/repos/builtin/packages/uuid/package.py index 5bcf59d9bfe..2d92e257e88 100644 --- a/var/spack/repos/builtin/packages/uuid/package.py +++ b/var/spack/repos/builtin/packages/uuid/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/valgrind/package.py b/var/spack/repos/builtin/packages/valgrind/package.py index ccc5c74a590..05efd67a3c9 100644 --- a/var/spack/repos/builtin/packages/valgrind/package.py +++ b/var/spack/repos/builtin/packages/valgrind/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/vampirtrace/package.py b/var/spack/repos/builtin/packages/vampirtrace/package.py index b4e86a82ccb..dc4841f2bad 100644 --- a/var/spack/repos/builtin/packages/vampirtrace/package.py +++ b/var/spack/repos/builtin/packages/vampirtrace/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/vc/package.py b/var/spack/repos/builtin/packages/vc/package.py index ee64cc16969..e41a385947c 100644 --- a/var/spack/repos/builtin/packages/vc/package.py +++ b/var/spack/repos/builtin/packages/vc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/vcftools/package.py b/var/spack/repos/builtin/packages/vcftools/package.py index 3f2f01dbff1..f84ea1ed7c0 100644 --- a/var/spack/repos/builtin/packages/vcftools/package.py +++ b/var/spack/repos/builtin/packages/vcftools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/vcsh/package.py b/var/spack/repos/builtin/packages/vcsh/package.py index 8b067582e6a..e09833d5e19 100644 --- a/var/spack/repos/builtin/packages/vcsh/package.py +++ b/var/spack/repos/builtin/packages/vcsh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/vdt/package.py b/var/spack/repos/builtin/packages/vdt/package.py index d90b1abdf07..df214655061 100644 --- a/var/spack/repos/builtin/packages/vdt/package.py +++ b/var/spack/repos/builtin/packages/vdt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index 988542e4d45..d514f13c174 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/veclibfort/package.py b/var/spack/repos/builtin/packages/veclibfort/package.py index c02299d97c4..ed11439b9ff 100644 --- a/var/spack/repos/builtin/packages/veclibfort/package.py +++ b/var/spack/repos/builtin/packages/veclibfort/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/videoproto/package.py b/var/spack/repos/builtin/packages/videoproto/package.py index d1495fe33da..c63d0e32911 100644 --- a/var/spack/repos/builtin/packages/videoproto/package.py +++ b/var/spack/repos/builtin/packages/videoproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/viewres/package.py b/var/spack/repos/builtin/packages/viewres/package.py index 9e6daafc8b3..2ab28c832a2 100644 --- a/var/spack/repos/builtin/packages/viewres/package.py +++ b/var/spack/repos/builtin/packages/viewres/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index 5a854c144c6..623f54b5d33 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/virtualgl/package.py b/var/spack/repos/builtin/packages/virtualgl/package.py index 744c6da56f0..d2ea587fb0b 100644 --- a/var/spack/repos/builtin/packages/virtualgl/package.py +++ b/var/spack/repos/builtin/packages/virtualgl/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index 2a735404a71..17efe0eb80e 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/vizglow/package.py b/var/spack/repos/builtin/packages/vizglow/package.py index 42e3e23aced..d153edcc9aa 100644 --- a/var/spack/repos/builtin/packages/vizglow/package.py +++ b/var/spack/repos/builtin/packages/vizglow/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/voropp/package.py b/var/spack/repos/builtin/packages/voropp/package.py index 0fc84ef252b..d44347b87f2 100644 --- a/var/spack/repos/builtin/packages/voropp/package.py +++ b/var/spack/repos/builtin/packages/voropp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/votca-csg/package.py b/var/spack/repos/builtin/packages/votca-csg/package.py index 4c3d992cfb4..6756d0427b7 100644 --- a/var/spack/repos/builtin/packages/votca-csg/package.py +++ b/var/spack/repos/builtin/packages/votca-csg/package.py @@ -6,7 +6,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/votca-ctp/package.py b/var/spack/repos/builtin/packages/votca-ctp/package.py index 41735b60718..81586b18e64 100644 --- a/var/spack/repos/builtin/packages/votca-ctp/package.py +++ b/var/spack/repos/builtin/packages/votca-ctp/package.py @@ -6,7 +6,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/votca-moo/package.py b/var/spack/repos/builtin/packages/votca-moo/package.py index 788fc1ad947..a596ba1c9c4 100644 --- a/var/spack/repos/builtin/packages/votca-moo/package.py +++ b/var/spack/repos/builtin/packages/votca-moo/package.py @@ -6,7 +6,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/votca-tools/package.py b/var/spack/repos/builtin/packages/votca-tools/package.py index 736ab0fa4ef..39055c45a3e 100644 --- a/var/spack/repos/builtin/packages/votca-tools/package.py +++ b/var/spack/repos/builtin/packages/votca-tools/package.py @@ -6,7 +6,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index dafeae6dbb4..fed631efe9b 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/wannier90/package.py b/var/spack/repos/builtin/packages/wannier90/package.py index 25d238dd642..d7d2a929cb3 100644 --- a/var/spack/repos/builtin/packages/wannier90/package.py +++ b/var/spack/repos/builtin/packages/wannier90/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/wget/package.py b/var/spack/repos/builtin/packages/wget/package.py index 276e51c3884..f852f4e9f08 100644 --- a/var/spack/repos/builtin/packages/wget/package.py +++ b/var/spack/repos/builtin/packages/wget/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/windowswmproto/package.py b/var/spack/repos/builtin/packages/windowswmproto/package.py index 9341cbd22c7..d5045f16ab1 100644 --- a/var/spack/repos/builtin/packages/windowswmproto/package.py +++ b/var/spack/repos/builtin/packages/windowswmproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/wt/package.py b/var/spack/repos/builtin/packages/wt/package.py index 91e80394f5e..7e422ff2678 100644 --- a/var/spack/repos/builtin/packages/wt/package.py +++ b/var/spack/repos/builtin/packages/wt/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/wx/package.py b/var/spack/repos/builtin/packages/wx/package.py index 3111a8c4b45..c3439087785 100644 --- a/var/spack/repos/builtin/packages/wx/package.py +++ b/var/spack/repos/builtin/packages/wx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/wxpropgrid/package.py b/var/spack/repos/builtin/packages/wxpropgrid/package.py index cc9ff445d6b..989c3ef002a 100644 --- a/var/spack/repos/builtin/packages/wxpropgrid/package.py +++ b/var/spack/repos/builtin/packages/wxpropgrid/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/x11perf/package.py b/var/spack/repos/builtin/packages/x11perf/package.py index 89936e77f54..944acab645c 100644 --- a/var/spack/repos/builtin/packages/x11perf/package.py +++ b/var/spack/repos/builtin/packages/x11perf/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xapian-core/package.py b/var/spack/repos/builtin/packages/xapian-core/package.py index 9c2e4a55ee5..82a8fac8abf 100644 --- a/var/spack/repos/builtin/packages/xapian-core/package.py +++ b/var/spack/repos/builtin/packages/xapian-core/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xauth/package.py b/var/spack/repos/builtin/packages/xauth/package.py index fa172b5dc02..85256a22453 100644 --- a/var/spack/repos/builtin/packages/xauth/package.py +++ b/var/spack/repos/builtin/packages/xauth/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xbacklight/package.py b/var/spack/repos/builtin/packages/xbacklight/package.py index da9ab8f3bd1..1695ebdfe82 100644 --- a/var/spack/repos/builtin/packages/xbacklight/package.py +++ b/var/spack/repos/builtin/packages/xbacklight/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xbiff/package.py b/var/spack/repos/builtin/packages/xbiff/package.py index 29bd9086d8b..5b1a05afb4b 100644 --- a/var/spack/repos/builtin/packages/xbiff/package.py +++ b/var/spack/repos/builtin/packages/xbiff/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xbitmaps/package.py b/var/spack/repos/builtin/packages/xbitmaps/package.py index 6fcaf1240d4..15cfbadc4b3 100644 --- a/var/spack/repos/builtin/packages/xbitmaps/package.py +++ b/var/spack/repos/builtin/packages/xbitmaps/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcalc/package.py b/var/spack/repos/builtin/packages/xcalc/package.py index 7b4717db65a..10c472f86c7 100644 --- a/var/spack/repos/builtin/packages/xcalc/package.py +++ b/var/spack/repos/builtin/packages/xcalc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcb-demo/package.py b/var/spack/repos/builtin/packages/xcb-demo/package.py index 6c3ccfa8aaa..95f7eecdc2a 100644 --- a/var/spack/repos/builtin/packages/xcb-demo/package.py +++ b/var/spack/repos/builtin/packages/xcb-demo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcb-proto/package.py b/var/spack/repos/builtin/packages/xcb-proto/package.py index 11e99c1d286..314a07af3f8 100644 --- a/var/spack/repos/builtin/packages/xcb-proto/package.py +++ b/var/spack/repos/builtin/packages/xcb-proto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcb-util-cursor/package.py b/var/spack/repos/builtin/packages/xcb-util-cursor/package.py index 83ae52ae934..5d9cb5db954 100644 --- a/var/spack/repos/builtin/packages/xcb-util-cursor/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-cursor/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcb-util-errors/package.py b/var/spack/repos/builtin/packages/xcb-util-errors/package.py index f7c950841d5..f3b1c21ce26 100644 --- a/var/spack/repos/builtin/packages/xcb-util-errors/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-errors/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcb-util-image/package.py b/var/spack/repos/builtin/packages/xcb-util-image/package.py index 58a5f82d181..76cb6074d76 100644 --- a/var/spack/repos/builtin/packages/xcb-util-image/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-image/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py b/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py index 026ac2a129d..525e5e34277 100644 --- a/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py b/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py index aa4db331128..4b97eb1312f 100644 --- a/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcb-util-wm/package.py b/var/spack/repos/builtin/packages/xcb-util-wm/package.py index c5dfe65423b..b55457b7031 100644 --- a/var/spack/repos/builtin/packages/xcb-util-wm/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-wm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcb-util/package.py b/var/spack/repos/builtin/packages/xcb-util/package.py index 6dcfbb64473..0096e226b52 100644 --- a/var/spack/repos/builtin/packages/xcb-util/package.py +++ b/var/spack/repos/builtin/packages/xcb-util/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xclipboard/package.py b/var/spack/repos/builtin/packages/xclipboard/package.py index 309a09bd762..6e3173078a8 100644 --- a/var/spack/repos/builtin/packages/xclipboard/package.py +++ b/var/spack/repos/builtin/packages/xclipboard/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xclock/package.py b/var/spack/repos/builtin/packages/xclock/package.py index 0ec33e78de7..45d12d169c2 100644 --- a/var/spack/repos/builtin/packages/xclock/package.py +++ b/var/spack/repos/builtin/packages/xclock/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcmiscproto/package.py b/var/spack/repos/builtin/packages/xcmiscproto/package.py index c31b19f04be..050a02fe42e 100644 --- a/var/spack/repos/builtin/packages/xcmiscproto/package.py +++ b/var/spack/repos/builtin/packages/xcmiscproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcmsdb/package.py b/var/spack/repos/builtin/packages/xcmsdb/package.py index 74e1f6267f0..cfa6cf9b120 100644 --- a/var/spack/repos/builtin/packages/xcmsdb/package.py +++ b/var/spack/repos/builtin/packages/xcmsdb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcompmgr/package.py b/var/spack/repos/builtin/packages/xcompmgr/package.py index 1c0771e38dd..e0fb1296925 100644 --- a/var/spack/repos/builtin/packages/xcompmgr/package.py +++ b/var/spack/repos/builtin/packages/xcompmgr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xconsole/package.py b/var/spack/repos/builtin/packages/xconsole/package.py index eabd5a48eda..3261df3e2a8 100644 --- a/var/spack/repos/builtin/packages/xconsole/package.py +++ b/var/spack/repos/builtin/packages/xconsole/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcursor-themes/package.py b/var/spack/repos/builtin/packages/xcursor-themes/package.py index 7c38c9999cc..046b217de5d 100644 --- a/var/spack/repos/builtin/packages/xcursor-themes/package.py +++ b/var/spack/repos/builtin/packages/xcursor-themes/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xcursorgen/package.py b/var/spack/repos/builtin/packages/xcursorgen/package.py index 8098723fc8e..d9229aba773 100644 --- a/var/spack/repos/builtin/packages/xcursorgen/package.py +++ b/var/spack/repos/builtin/packages/xcursorgen/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xdbedizzy/package.py b/var/spack/repos/builtin/packages/xdbedizzy/package.py index 61ad98dc617..ee77adad2e0 100644 --- a/var/spack/repos/builtin/packages/xdbedizzy/package.py +++ b/var/spack/repos/builtin/packages/xdbedizzy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xditview/package.py b/var/spack/repos/builtin/packages/xditview/package.py index 4f5384b81c9..81566abdc9b 100644 --- a/var/spack/repos/builtin/packages/xditview/package.py +++ b/var/spack/repos/builtin/packages/xditview/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xdm/package.py b/var/spack/repos/builtin/packages/xdm/package.py index 384077e5568..07e31c000bf 100644 --- a/var/spack/repos/builtin/packages/xdm/package.py +++ b/var/spack/repos/builtin/packages/xdm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xdpyinfo/package.py b/var/spack/repos/builtin/packages/xdpyinfo/package.py index f3838999eb6..cd5b32a689e 100644 --- a/var/spack/repos/builtin/packages/xdpyinfo/package.py +++ b/var/spack/repos/builtin/packages/xdpyinfo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xdriinfo/package.py b/var/spack/repos/builtin/packages/xdriinfo/package.py index 9545f7707d9..79f693dc4b6 100644 --- a/var/spack/repos/builtin/packages/xdriinfo/package.py +++ b/var/spack/repos/builtin/packages/xdriinfo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xedit/package.py b/var/spack/repos/builtin/packages/xedit/package.py index 73aca40a3b4..acb44faf74e 100644 --- a/var/spack/repos/builtin/packages/xedit/package.py +++ b/var/spack/repos/builtin/packages/xedit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py index bd28a9eec6c..3b8e512c177 100644 --- a/var/spack/repos/builtin/packages/xerces-c/package.py +++ b/var/spack/repos/builtin/packages/xerces-c/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xev/package.py b/var/spack/repos/builtin/packages/xev/package.py index 79ff7b08a72..ddfd72e4c79 100644 --- a/var/spack/repos/builtin/packages/xev/package.py +++ b/var/spack/repos/builtin/packages/xev/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xextproto/package.py b/var/spack/repos/builtin/packages/xextproto/package.py index 012a023e720..a6de568f61d 100644 --- a/var/spack/repos/builtin/packages/xextproto/package.py +++ b/var/spack/repos/builtin/packages/xextproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xeyes/package.py b/var/spack/repos/builtin/packages/xeyes/package.py index 599b08544b1..28b3e1d624e 100644 --- a/var/spack/repos/builtin/packages/xeyes/package.py +++ b/var/spack/repos/builtin/packages/xeyes/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py index 5a2e10a7ba6..620d7f014c6 100644 --- a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py +++ b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xf86dga/package.py b/var/spack/repos/builtin/packages/xf86dga/package.py index 1bd2feaaa38..84c194e236b 100644 --- a/var/spack/repos/builtin/packages/xf86dga/package.py +++ b/var/spack/repos/builtin/packages/xf86dga/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xf86dgaproto/package.py b/var/spack/repos/builtin/packages/xf86dgaproto/package.py index 3c92582a3a3..e07da8cd2d7 100644 --- a/var/spack/repos/builtin/packages/xf86dgaproto/package.py +++ b/var/spack/repos/builtin/packages/xf86dgaproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xf86driproto/package.py b/var/spack/repos/builtin/packages/xf86driproto/package.py index 8378eb9e5e9..5c10143e434 100644 --- a/var/spack/repos/builtin/packages/xf86driproto/package.py +++ b/var/spack/repos/builtin/packages/xf86driproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xf86miscproto/package.py b/var/spack/repos/builtin/packages/xf86miscproto/package.py index 4368eed3265..9e6231b344b 100644 --- a/var/spack/repos/builtin/packages/xf86miscproto/package.py +++ b/var/spack/repos/builtin/packages/xf86miscproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xf86rushproto/package.py b/var/spack/repos/builtin/packages/xf86rushproto/package.py index 05b9afa40a1..0e5d8d935ae 100644 --- a/var/spack/repos/builtin/packages/xf86rushproto/package.py +++ b/var/spack/repos/builtin/packages/xf86rushproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py index aaf1db44729..20238e3c279 100644 --- a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py +++ b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xfd/package.py b/var/spack/repos/builtin/packages/xfd/package.py index b7d1282b278..b55b90752ac 100644 --- a/var/spack/repos/builtin/packages/xfd/package.py +++ b/var/spack/repos/builtin/packages/xfd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xfindproxy/package.py b/var/spack/repos/builtin/packages/xfindproxy/package.py index af767be8a1a..3cdcd5069ab 100644 --- a/var/spack/repos/builtin/packages/xfindproxy/package.py +++ b/var/spack/repos/builtin/packages/xfindproxy/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xfontsel/package.py b/var/spack/repos/builtin/packages/xfontsel/package.py index ca14f1460c1..c8fa0ef95b9 100644 --- a/var/spack/repos/builtin/packages/xfontsel/package.py +++ b/var/spack/repos/builtin/packages/xfontsel/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xfs/package.py b/var/spack/repos/builtin/packages/xfs/package.py index e5a71e4a278..ecc94d4835d 100644 --- a/var/spack/repos/builtin/packages/xfs/package.py +++ b/var/spack/repos/builtin/packages/xfs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xfsinfo/package.py b/var/spack/repos/builtin/packages/xfsinfo/package.py index 9913537995e..8f6bdae9cc8 100644 --- a/var/spack/repos/builtin/packages/xfsinfo/package.py +++ b/var/spack/repos/builtin/packages/xfsinfo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xfwp/package.py b/var/spack/repos/builtin/packages/xfwp/package.py index c199b50f6cf..38bbf8342b5 100644 --- a/var/spack/repos/builtin/packages/xfwp/package.py +++ b/var/spack/repos/builtin/packages/xfwp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xgamma/package.py b/var/spack/repos/builtin/packages/xgamma/package.py index 845f2a54e36..9ec71186084 100644 --- a/var/spack/repos/builtin/packages/xgamma/package.py +++ b/var/spack/repos/builtin/packages/xgamma/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xgc/package.py b/var/spack/repos/builtin/packages/xgc/package.py index 23ba36809e5..3592bc923fe 100644 --- a/var/spack/repos/builtin/packages/xgc/package.py +++ b/var/spack/repos/builtin/packages/xgc/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xhost/package.py b/var/spack/repos/builtin/packages/xhost/package.py index 3928593611d..21accc52846 100644 --- a/var/spack/repos/builtin/packages/xhost/package.py +++ b/var/spack/repos/builtin/packages/xhost/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xineramaproto/package.py b/var/spack/repos/builtin/packages/xineramaproto/package.py index 0a3374b1b6c..003e365a904 100644 --- a/var/spack/repos/builtin/packages/xineramaproto/package.py +++ b/var/spack/repos/builtin/packages/xineramaproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xinit/package.py b/var/spack/repos/builtin/packages/xinit/package.py index 8bf7227cc8f..376978683ff 100644 --- a/var/spack/repos/builtin/packages/xinit/package.py +++ b/var/spack/repos/builtin/packages/xinit/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xinput/package.py b/var/spack/repos/builtin/packages/xinput/package.py index b512d864958..7c6f82afdf5 100644 --- a/var/spack/repos/builtin/packages/xinput/package.py +++ b/var/spack/repos/builtin/packages/xinput/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xkbcomp/package.py b/var/spack/repos/builtin/packages/xkbcomp/package.py index 315c49a22d2..398742d7e54 100644 --- a/var/spack/repos/builtin/packages/xkbcomp/package.py +++ b/var/spack/repos/builtin/packages/xkbcomp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xkbdata/package.py b/var/spack/repos/builtin/packages/xkbdata/package.py index c67e047d71c..96cf29b500b 100644 --- a/var/spack/repos/builtin/packages/xkbdata/package.py +++ b/var/spack/repos/builtin/packages/xkbdata/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xkbevd/package.py b/var/spack/repos/builtin/packages/xkbevd/package.py index 8793a3a38bd..66c8f3b8112 100644 --- a/var/spack/repos/builtin/packages/xkbevd/package.py +++ b/var/spack/repos/builtin/packages/xkbevd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xkbprint/package.py b/var/spack/repos/builtin/packages/xkbprint/package.py index 100d4e44361..2b93582d3e7 100644 --- a/var/spack/repos/builtin/packages/xkbprint/package.py +++ b/var/spack/repos/builtin/packages/xkbprint/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xkbutils/package.py b/var/spack/repos/builtin/packages/xkbutils/package.py index eef24a01455..45d966f26ea 100644 --- a/var/spack/repos/builtin/packages/xkbutils/package.py +++ b/var/spack/repos/builtin/packages/xkbutils/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xkeyboard-config/package.py b/var/spack/repos/builtin/packages/xkeyboard-config/package.py index d7ae34e1e63..e1f2753275a 100644 --- a/var/spack/repos/builtin/packages/xkeyboard-config/package.py +++ b/var/spack/repos/builtin/packages/xkeyboard-config/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xkill/package.py b/var/spack/repos/builtin/packages/xkill/package.py index e73fa3b9a29..6afbf5a6805 100644 --- a/var/spack/repos/builtin/packages/xkill/package.py +++ b/var/spack/repos/builtin/packages/xkill/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xload/package.py b/var/spack/repos/builtin/packages/xload/package.py index 412c0aa0c43..b71986db1ae 100644 --- a/var/spack/repos/builtin/packages/xload/package.py +++ b/var/spack/repos/builtin/packages/xload/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xlogo/package.py b/var/spack/repos/builtin/packages/xlogo/package.py index 8e1250cc69c..6522d4f514d 100644 --- a/var/spack/repos/builtin/packages/xlogo/package.py +++ b/var/spack/repos/builtin/packages/xlogo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xlsatoms/package.py b/var/spack/repos/builtin/packages/xlsatoms/package.py index 5f0dc8adc7c..a1a8257dc12 100644 --- a/var/spack/repos/builtin/packages/xlsatoms/package.py +++ b/var/spack/repos/builtin/packages/xlsatoms/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xlsclients/package.py b/var/spack/repos/builtin/packages/xlsclients/package.py index fb232a1d0f5..124c876a0a6 100644 --- a/var/spack/repos/builtin/packages/xlsclients/package.py +++ b/var/spack/repos/builtin/packages/xlsclients/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xlsfonts/package.py b/var/spack/repos/builtin/packages/xlsfonts/package.py index 61696a5010f..7267692b984 100644 --- a/var/spack/repos/builtin/packages/xlsfonts/package.py +++ b/var/spack/repos/builtin/packages/xlsfonts/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xmag/package.py b/var/spack/repos/builtin/packages/xmag/package.py index 65eb9e636be..c2d135eec01 100644 --- a/var/spack/repos/builtin/packages/xmag/package.py +++ b/var/spack/repos/builtin/packages/xmag/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xman/package.py b/var/spack/repos/builtin/packages/xman/package.py index 0a3bf893eee..c59ced19a6c 100644 --- a/var/spack/repos/builtin/packages/xman/package.py +++ b/var/spack/repos/builtin/packages/xman/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xmessage/package.py b/var/spack/repos/builtin/packages/xmessage/package.py index 7481713c1b0..55461933bcc 100644 --- a/var/spack/repos/builtin/packages/xmessage/package.py +++ b/var/spack/repos/builtin/packages/xmessage/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xmh/package.py b/var/spack/repos/builtin/packages/xmh/package.py index 1c7bc8a3469..35798f8846d 100644 --- a/var/spack/repos/builtin/packages/xmh/package.py +++ b/var/spack/repos/builtin/packages/xmh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xmlto/package.py b/var/spack/repos/builtin/packages/xmlto/package.py index 35f41d72e93..de4a8985b07 100644 --- a/var/spack/repos/builtin/packages/xmlto/package.py +++ b/var/spack/repos/builtin/packages/xmlto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xmodmap/package.py b/var/spack/repos/builtin/packages/xmodmap/package.py index 323a16cbe8b..727cebc5634 100644 --- a/var/spack/repos/builtin/packages/xmodmap/package.py +++ b/var/spack/repos/builtin/packages/xmodmap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xmore/package.py b/var/spack/repos/builtin/packages/xmore/package.py index bb1f0ada276..e1da468d3eb 100644 --- a/var/spack/repos/builtin/packages/xmore/package.py +++ b/var/spack/repos/builtin/packages/xmore/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xorg-cf-files/package.py b/var/spack/repos/builtin/packages/xorg-cf-files/package.py index a203911d0eb..3fd9cb45b93 100644 --- a/var/spack/repos/builtin/packages/xorg-cf-files/package.py +++ b/var/spack/repos/builtin/packages/xorg-cf-files/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xorg-docs/package.py b/var/spack/repos/builtin/packages/xorg-docs/package.py index 7bee98859da..1f81642c8b1 100644 --- a/var/spack/repos/builtin/packages/xorg-docs/package.py +++ b/var/spack/repos/builtin/packages/xorg-docs/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xorg-gtest/package.py b/var/spack/repos/builtin/packages/xorg-gtest/package.py index ede26149e1f..2774027e3f4 100644 --- a/var/spack/repos/builtin/packages/xorg-gtest/package.py +++ b/var/spack/repos/builtin/packages/xorg-gtest/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xorg-server/package.py b/var/spack/repos/builtin/packages/xorg-server/package.py index fcc4918a02c..8c5f1473e90 100644 --- a/var/spack/repos/builtin/packages/xorg-server/package.py +++ b/var/spack/repos/builtin/packages/xorg-server/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py index c9a5d4fd80f..4c8f4d0ec12 100644 --- a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py +++ b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xphelloworld/package.py b/var/spack/repos/builtin/packages/xphelloworld/package.py index ce593e746bf..61a158cc413 100644 --- a/var/spack/repos/builtin/packages/xphelloworld/package.py +++ b/var/spack/repos/builtin/packages/xphelloworld/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xplsprinters/package.py b/var/spack/repos/builtin/packages/xplsprinters/package.py index b8fdb084721..02bddf08775 100644 --- a/var/spack/repos/builtin/packages/xplsprinters/package.py +++ b/var/spack/repos/builtin/packages/xplsprinters/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xpr/package.py b/var/spack/repos/builtin/packages/xpr/package.py index 6e933e0994e..49606476702 100644 --- a/var/spack/repos/builtin/packages/xpr/package.py +++ b/var/spack/repos/builtin/packages/xpr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py index 3f7de96c123..3a0efd00c40 100644 --- a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py +++ b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xprop/package.py b/var/spack/repos/builtin/packages/xprop/package.py index ece50c92052..0cd9b92040e 100644 --- a/var/spack/repos/builtin/packages/xprop/package.py +++ b/var/spack/repos/builtin/packages/xprop/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xproto/package.py b/var/spack/repos/builtin/packages/xproto/package.py index 31e2baffaca..de91cf0c953 100644 --- a/var/spack/repos/builtin/packages/xproto/package.py +++ b/var/spack/repos/builtin/packages/xproto/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py index cec6a13f5f8..f4eb75ca28c 100644 --- a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py +++ b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xqilla/package.py b/var/spack/repos/builtin/packages/xqilla/package.py index b9790e33f04..5cb346cc1d8 100644 --- a/var/spack/repos/builtin/packages/xqilla/package.py +++ b/var/spack/repos/builtin/packages/xqilla/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xrandr/package.py b/var/spack/repos/builtin/packages/xrandr/package.py index 6fdc4da4feb..c33f0a227f8 100644 --- a/var/spack/repos/builtin/packages/xrandr/package.py +++ b/var/spack/repos/builtin/packages/xrandr/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xrdb/package.py b/var/spack/repos/builtin/packages/xrdb/package.py index c0374e7056d..3c6452476fc 100644 --- a/var/spack/repos/builtin/packages/xrdb/package.py +++ b/var/spack/repos/builtin/packages/xrdb/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xrefresh/package.py b/var/spack/repos/builtin/packages/xrefresh/package.py index 3a2c47b0865..ef929f325f8 100644 --- a/var/spack/repos/builtin/packages/xrefresh/package.py +++ b/var/spack/repos/builtin/packages/xrefresh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xrootd/package.py b/var/spack/repos/builtin/packages/xrootd/package.py index 47e5afba26f..d377c689689 100644 --- a/var/spack/repos/builtin/packages/xrootd/package.py +++ b/var/spack/repos/builtin/packages/xrootd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xrx/package.py b/var/spack/repos/builtin/packages/xrx/package.py index eae7b76768f..af832f80a03 100644 --- a/var/spack/repos/builtin/packages/xrx/package.py +++ b/var/spack/repos/builtin/packages/xrx/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xscope/package.py b/var/spack/repos/builtin/packages/xscope/package.py index 04f00a5f5d2..7b3b9104159 100644 --- a/var/spack/repos/builtin/packages/xscope/package.py +++ b/var/spack/repos/builtin/packages/xscope/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py index 735aedbe457..583de80f3a7 100644 --- a/var/spack/repos/builtin/packages/xsdk/package.py +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xsdktrilinos/package.py b/var/spack/repos/builtin/packages/xsdktrilinos/package.py index 7af6cd73a76..0d70baabcd1 100644 --- a/var/spack/repos/builtin/packages/xsdktrilinos/package.py +++ b/var/spack/repos/builtin/packages/xsdktrilinos/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xset/package.py b/var/spack/repos/builtin/packages/xset/package.py index 5ca84431fd6..e0d8b9fdee9 100644 --- a/var/spack/repos/builtin/packages/xset/package.py +++ b/var/spack/repos/builtin/packages/xset/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xsetmode/package.py b/var/spack/repos/builtin/packages/xsetmode/package.py index 8d39de26a45..36e4c520214 100644 --- a/var/spack/repos/builtin/packages/xsetmode/package.py +++ b/var/spack/repos/builtin/packages/xsetmode/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xsetpointer/package.py b/var/spack/repos/builtin/packages/xsetpointer/package.py index 194ef186ae2..d2e27810a5c 100644 --- a/var/spack/repos/builtin/packages/xsetpointer/package.py +++ b/var/spack/repos/builtin/packages/xsetpointer/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xsetroot/package.py b/var/spack/repos/builtin/packages/xsetroot/package.py index 8be0625ff1a..1a9bcd141e4 100644 --- a/var/spack/repos/builtin/packages/xsetroot/package.py +++ b/var/spack/repos/builtin/packages/xsetroot/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xsm/package.py b/var/spack/repos/builtin/packages/xsm/package.py index 4d91dae1422..eb22f4ff646 100644 --- a/var/spack/repos/builtin/packages/xsm/package.py +++ b/var/spack/repos/builtin/packages/xsm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xstdcmap/package.py b/var/spack/repos/builtin/packages/xstdcmap/package.py index 8c3a081ae76..b2b1592b84b 100644 --- a/var/spack/repos/builtin/packages/xstdcmap/package.py +++ b/var/spack/repos/builtin/packages/xstdcmap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xterm/package.py b/var/spack/repos/builtin/packages/xterm/package.py index f4212021e95..70208d05c86 100644 --- a/var/spack/repos/builtin/packages/xterm/package.py +++ b/var/spack/repos/builtin/packages/xterm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xtrans/package.py b/var/spack/repos/builtin/packages/xtrans/package.py index 62f74b8cec0..c2b032564a7 100644 --- a/var/spack/repos/builtin/packages/xtrans/package.py +++ b/var/spack/repos/builtin/packages/xtrans/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xtrap/package.py b/var/spack/repos/builtin/packages/xtrap/package.py index 4a899b5111b..499d56f48e5 100644 --- a/var/spack/repos/builtin/packages/xtrap/package.py +++ b/var/spack/repos/builtin/packages/xtrap/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xts/package.py b/var/spack/repos/builtin/packages/xts/package.py index 9dd3e4a05ce..727991b78dd 100644 --- a/var/spack/repos/builtin/packages/xts/package.py +++ b/var/spack/repos/builtin/packages/xts/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xvidtune/package.py b/var/spack/repos/builtin/packages/xvidtune/package.py index 42dbc23aa00..fd3cdb7f8c4 100644 --- a/var/spack/repos/builtin/packages/xvidtune/package.py +++ b/var/spack/repos/builtin/packages/xvidtune/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xvinfo/package.py b/var/spack/repos/builtin/packages/xvinfo/package.py index f7a275f452f..04efb4549cc 100644 --- a/var/spack/repos/builtin/packages/xvinfo/package.py +++ b/var/spack/repos/builtin/packages/xvinfo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xwd/package.py b/var/spack/repos/builtin/packages/xwd/package.py index 9016e17915c..a93e54fb93a 100644 --- a/var/spack/repos/builtin/packages/xwd/package.py +++ b/var/spack/repos/builtin/packages/xwd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xwininfo/package.py b/var/spack/repos/builtin/packages/xwininfo/package.py index 61aa86bf461..4fe2e5b8c3f 100644 --- a/var/spack/repos/builtin/packages/xwininfo/package.py +++ b/var/spack/repos/builtin/packages/xwininfo/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xwud/package.py b/var/spack/repos/builtin/packages/xwud/package.py index 9294156e161..2635f9d1712 100644 --- a/var/spack/repos/builtin/packages/xwud/package.py +++ b/var/spack/repos/builtin/packages/xwud/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/xz/package.py b/var/spack/repos/builtin/packages/xz/package.py index 839f5130582..9da2eac2014 100644 --- a/var/spack/repos/builtin/packages/xz/package.py +++ b/var/spack/repos/builtin/packages/xz/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py index 21400c2cfd8..e537af6b414 100644 --- a/var/spack/repos/builtin/packages/yaml-cpp/package.py +++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/yasm/package.py b/var/spack/repos/builtin/packages/yasm/package.py index e42ea6a5a77..07173cc0fb0 100644 --- a/var/spack/repos/builtin/packages/yasm/package.py +++ b/var/spack/repos/builtin/packages/yasm/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/yorick/package.py b/var/spack/repos/builtin/packages/yorick/package.py index 9cbd417e4ea..3052730985c 100644 --- a/var/spack/repos/builtin/packages/yorick/package.py +++ b/var/spack/repos/builtin/packages/yorick/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/z3/package.py b/var/spack/repos/builtin/packages/z3/package.py index d2f8fb9d7a8..d6cd94a53a1 100644 --- a/var/spack/repos/builtin/packages/z3/package.py +++ b/var/spack/repos/builtin/packages/z3/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/zeromq/package.py b/var/spack/repos/builtin/packages/zeromq/package.py index 938bb857fb4..680d67c7b00 100644 --- a/var/spack/repos/builtin/packages/zeromq/package.py +++ b/var/spack/repos/builtin/packages/zeromq/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/zfp/package.py b/var/spack/repos/builtin/packages/zfp/package.py index 93d71bd4701..b51426347f6 100644 --- a/var/spack/repos/builtin/packages/zfp/package.py +++ b/var/spack/repos/builtin/packages/zfp/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/zip/package.py b/var/spack/repos/builtin/packages/zip/package.py index a84d4ed27c6..3787df320a3 100644 --- a/var/spack/repos/builtin/packages/zip/package.py +++ b/var/spack/repos/builtin/packages/zip/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 8971cc0b1b1..0d9822f287a 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py index b6720b7b1e9..008bea9c276 100644 --- a/var/spack/repos/builtin/packages/zoltan/package.py +++ b/var/spack/repos/builtin/packages/zoltan/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py index 5c73b224c72..24bb9ec8968 100644 --- a/var/spack/repos/builtin/packages/zsh/package.py +++ b/var/spack/repos/builtin/packages/zsh/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as diff --git a/var/spack/repos/builtin/packages/zstd/package.py b/var/spack/repos/builtin/packages/zstd/package.py index e5e34591f77..7cd5d6785d7 100644 --- a/var/spack/repos/builtin/packages/zstd/package.py +++ b/var/spack/repos/builtin/packages/zstd/package.py @@ -7,7 +7,7 @@ # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack -# Please also see the LICENSE file for our notice and the LGPL. +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License (as From e5ce7b163954843cf7247e2902535ab837aea320 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 25 Jun 2017 00:39:31 -0500 Subject: [PATCH 1128/2394] Allow arbitrary Prefix attributes (#4591) * Allow arbitrary Prefix attributes * Test attribute type as well * Flake8 fixes * Remove __new__ method * Fewer uses of join_path in the docs --- lib/spack/docs/packaging_guide.rst | 82 ++++++++++--------- lib/spack/spack/package.py | 2 +- lib/spack/spack/test/util/prefix.py | 66 +++++++++++++++ lib/spack/spack/util/prefix.py | 81 +++++------------- .../repos/builtin/packages/bwa/package.py | 4 +- .../repos/builtin/packages/git/package.py | 6 +- .../builtin/packages/libdwarf/package.py | 4 +- .../builtin/packages/mercurial/package.py | 14 ++-- .../repos/builtin/packages/pigz/package.py | 4 +- .../repos/builtin/packages/scotch/package.py | 2 +- 10 files changed, 148 insertions(+), 117 deletions(-) create mode 100644 lib/spack/spack/test/util/prefix.py diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index bf6f3f3cf96..ecc3f588302 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2408,15 +2408,21 @@ is handy when a package supports additional variants like Blas and Lapack libraries ^^^^^^^^^^^^^^^^^^^^^^^^^ -Different packages provide implementation of ``Blas`` and ``Lapack`` +Multiple packages provide implementations of ``Blas`` and ``Lapack`` routines. The names of the resulting static and/or shared libraries differ from package to package. In order to make the ``install()`` method independent of the choice of ``Blas`` implementation, each package which provides it sets up ``self.spec.blas_libs`` to point to the correct ``Blas`` libraries. The same applies to packages which provide ``Lapack``. Package developers are advised to use these variables, for -example ``spec['blas'].blas_libs.joined()`` instead of hard-coding -``join_path(spec['blas'].prefix.lib, 'libopenblas.so')``. +example ``spec['blas'].blas_libs.joined()`` instead of hard-coding them: + +.. code-block:: python + + if 'openblas' in spec: + libs = join_path(spec['blas'].prefix.lib, 'libopenblas.so') + elif 'intel-mkl' in spec: + ... .. _prefix-objects: @@ -2430,7 +2436,7 @@ e.g.: .. code-block:: python - configure('--prefix=' + prefix) + configure('--prefix={0}'.format(prefix)) For the most part, prefix objects behave exactly like strings. For packages that do not have their own install target, or for those that @@ -2451,29 +2457,27 @@ yourself, e.g.: mkdirp(prefix.lib) install('libfoo.a', prefix.lib) -Most of the standard UNIX directory names are attributes on the -``prefix`` object. Here is a full list: - ========================= ================================================ - Prefix Attribute Location - ========================= ================================================ - ``prefix.bin`` ``$prefix/bin`` - ``prefix.sbin`` ``$prefix/sbin`` - ``prefix.etc`` ``$prefix/etc`` - ``prefix.include`` ``$prefix/include`` - ``prefix.lib`` ``$prefix/lib`` - ``prefix.lib64`` ``$prefix/lib64`` - ``prefix.libexec`` ``$prefix/libexec`` - ``prefix.share`` ``$prefix/share`` - ``prefix.doc`` ``$prefix/doc`` - ``prefix.info`` ``$prefix/info`` +Attributes of this object are created on the fly when you request them, +so any of the following will work: - ``prefix.man`` ``$prefix/man`` - ``prefix.man[1-8]`` ``$prefix/man/man[1-8]`` +====================== ======================= +Prefix Attribute Location +====================== ======================= +``prefix.bin`` ``$prefix/bin`` +``prefix.lib64`` ``$prefix/lib64`` +``prefix.share.man`` ``$prefix/share/man`` +``prefix.foo.bar.baz`` ``$prefix/foo/bar/baz`` +====================== ======================= + +Of course, this only works if your file or directory is a valid Python +variable name. If your file or directory contains dashes or dots, use +``join_path`` instead: + +.. code-block:: python + + join_path(prefix.lib, 'libz.a') - ``prefix.share_man`` ``$prefix/share/man`` - ``prefix.share_man[1-8]`` ``$prefix/share/man[1-8]`` - ========================= ================================================ .. _spec-objects: @@ -2572,23 +2576,25 @@ of its dependencies satisfy the provided spec. Accessing Dependencies ^^^^^^^^^^^^^^^^^^^^^^ -You may need to get at some file or binary that's in the prefix of one -of your dependencies. You can do that by sub-scripting the spec: +You may need to get at some file or binary that's in the installation +prefix of one of your dependencies. You can do that by sub-scripting +the spec: .. code-block:: python - my_mpi = spec['mpi'] + spec['mpi'] The value in the brackets needs to be some package name, and spec needs to depend on that package, or the operation will fail. For example, the above code will fail if the ``spec`` doesn't depend on -``mpi``. The value returned and assigned to ``my_mpi``, is itself -just another ``Spec`` object, so you can do all the same things you -would do with the package's own spec: +``mpi``. The value returned is itself just another ``Spec`` object, +so you can do all the same things you would do with the package's +own spec: .. code-block:: python - mpicc = join_path(my_mpi.prefix.bin, 'mpicc') + spec['mpi'].prefix.bin + spec['mpi'].version .. _multimethods: @@ -3086,7 +3092,7 @@ Filtering functions .. code-block:: python filter_file(r'#!/usr/bin/perl', - '#!/usr/bin/env perl', join_path(prefix.bin, 'bib2xhtml')) + '#!/usr/bin/env perl', prefix.bin.bib2xhtml) #. Switching the compilers used by ``mpich``'s MPI wrapper scripts from ``cc``, etc. to the compilers used by the Spack build: @@ -3094,10 +3100,10 @@ Filtering functions .. code-block:: python filter_file('CC="cc"', 'CC="%s"' % self.compiler.cc, - join_path(prefix.bin, 'mpicc')) + prefix.bin.mpicc) filter_file('CXX="c++"', 'CXX="%s"' % self.compiler.cxx, - join_path(prefix.bin, 'mpicxx')) + prefix.bin.mpicxx) :py:func:`change_sed_delimiter(old_delim, new_delim, *filenames) ` Some packages, like TAU, have a build system that can't install @@ -3134,12 +3140,10 @@ File functions .. code-block:: python - install('my-header.h', join_path(prefix.include)) + install('my-header.h', prefix.include) -:py:func:`join_path(prefix, *args) ` - Like ``os.path.join``, this joins paths using the OS path separator. - However, this version allows an arbitrary number of arguments, so - you can string together many path components. +:py:func:`join_path(*paths) ` + An alias for ``os.path.join``. This joins paths using the OS path separator. :py:func:`mkdirp(*paths) ` Create each of the directories in ``paths``, creating any parent diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index d6029d46b10..dc23f6351f3 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1045,7 +1045,7 @@ def do_fake_install(self): touch(join_path(self.prefix.lib, library_name + dso_suffix)) touch(join_path(self.prefix.lib, library_name + '.a')) - mkdirp(self.prefix.man1) + mkdirp(self.prefix.man.man1) packages_dir = spack.store.layout.build_packages_path(self.spec) dump_packages(self.spec, packages_dir) diff --git a/lib/spack/spack/test/util/prefix.py b/lib/spack/spack/test/util/prefix.py new file mode 100644 index 00000000000..8e8f7c84f97 --- /dev/null +++ b/lib/spack/spack/test/util/prefix.py @@ -0,0 +1,66 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +"""Tests various features of :py:class:`spack.util.prefix.Prefix`""" + +from spack.util.prefix import Prefix + + +def test_prefix_attributes(): + """Test normal prefix attributes like ``prefix.bin``""" + prefix = Prefix('/usr') + + assert prefix.bin == '/usr/bin' + assert prefix.lib == '/usr/lib' + assert prefix.include == '/usr/include' + + +def test_multilevel_attributes(): + """Test attributes of attributes, like ``prefix.share.man``""" + prefix = Prefix('/usr/') + + assert prefix.share.man == '/usr/share/man' + assert prefix.man.man8 == '/usr/man/man8' + assert prefix.foo.bar.baz == '/usr/foo/bar/baz' + + share = prefix.share + + assert isinstance(share, Prefix) + assert share.man == '/usr/share/man' + + +def test_string_like_behavior(): + """Test string-like behavior of the prefix object""" + prefix = Prefix('/usr') + + assert prefix == '/usr' + assert isinstance(prefix, str) + + assert prefix + '/bin' == '/usr/bin' + assert '--prefix=%s' % prefix == '--prefix=/usr' + assert '--prefix={0}'.format(prefix) == '--prefix=/usr' + + assert prefix.find('u', 1) + assert prefix.upper() == '/USR' + assert prefix.lstrip('/') == 'usr' diff --git a/lib/spack/spack/util/prefix.py b/lib/spack/spack/util/prefix.py index 8ce9836c667..479956b1c56 100644 --- a/lib/spack/spack/util/prefix.py +++ b/lib/spack/spack/util/prefix.py @@ -23,74 +23,35 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## """ -This file contains utilities to help with installing packages. +This file contains utilities for managing the installation prefix of a package. """ -from llnl.util.filesystem import join_path +import os class Prefix(str): """This class represents an installation prefix, but provides useful - attributes for referring to directories inside the prefix. + attributes for referring to directories inside the prefix. - For example, you can do something like this:: + Attributes of this object are created on the fly when you request them, + so any of the following is valid: - prefix = Prefix('/usr') - print(prefix.lib) - print(prefix.lib64) - print(prefix.bin) - print(prefix.share) - print(prefix.man4) + >>> prefix = Prefix('/usr') + >>> prefix.bin + /usr/bin + >>> prefix.lib64 + /usr/lib64 + >>> prefix.share.man + /usr/share/man + >>> prefix.foo.bar.baz + /usr/foo/bar/baz - This program would print: + Prefix objects behave identically to strings. In fact, they + subclass ``str``. So operators like ``+`` are legal:: - /usr/lib - /usr/lib64 - /usr/bin - /usr/share - /usr/share/man/man4 + print('foobar ' + prefix) - Prefix objects behave identically to strings. In fact, they - subclass str. So operators like + are legal: - - print("foobar " + prefix) - - This prints 'foobar /usr". All of this is meant to make custom - installs easy. + This prints ``foobar /usr``. All of this is meant to make custom + installs easy. """ - - def __new__(cls, path): - s = super(Prefix, cls).__new__(cls, path) - s.bin = join_path(s, 'bin') - s.bin64 = join_path(s, 'bin64') - s.sbin = join_path(s, 'sbin') - s.etc = join_path(s, 'etc') - s.include = join_path(s, 'include') - s.include64 = join_path(s, 'include64') - s.lib = join_path(s, 'lib') - s.lib64 = join_path(s, 'lib64') - s.libexec = join_path(s, 'libexec') - s.share = join_path(s, 'share') - s.doc = join_path(s.share, 'doc') - s.info = join_path(s.share, 'info') - - s.man = join_path(s, 'man') - s.man1 = join_path(s.man, 'man1') - s.man2 = join_path(s.man, 'man2') - s.man3 = join_path(s.man, 'man3') - s.man4 = join_path(s.man, 'man4') - s.man5 = join_path(s.man, 'man5') - s.man6 = join_path(s.man, 'man6') - s.man7 = join_path(s.man, 'man7') - s.man8 = join_path(s.man, 'man8') - - s.share_man = join_path(s.share, 'man') - s.share_man1 = join_path(s.share_man, 'man1') - s.share_man2 = join_path(s.share_man, 'man2') - s.share_man3 = join_path(s.share_man, 'man3') - s.share_man4 = join_path(s.share_man, 'man4') - s.share_man5 = join_path(s.share_man, 'man5') - s.share_man6 = join_path(s.share_man, 'man6') - s.share_man7 = join_path(s.share_man, 'man7') - s.share_man8 = join_path(s.share_man, 'man8') - - return s + def __getattr__(self, attr): + return Prefix(os.path.join(self, attr)) diff --git a/var/spack/repos/builtin/packages/bwa/package.py b/var/spack/repos/builtin/packages/bwa/package.py index 0b3ac66b3e0..c4cd0d66650 100644 --- a/var/spack/repos/builtin/packages/bwa/package.py +++ b/var/spack/repos/builtin/packages/bwa/package.py @@ -51,5 +51,5 @@ def install(self, spec, prefix): mkdirp(prefix.doc) install('README.md', prefix.doc) install('NEWS.md', prefix.doc) - mkdirp(prefix.man1) - install('bwa.1', prefix.man1) + mkdirp(prefix.man.man1) + install('bwa.1', prefix.man.man1) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index 847eff62f3c..f01cc37d7b7 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -186,6 +186,6 @@ def install_manpages(self): prefix = self.prefix with working_dir('git-manpages'): - install_tree('man1', prefix.share_man1) - install_tree('man5', prefix.share_man5) - install_tree('man7', prefix.share_man7) + install_tree('man1', prefix.share.man.man1) + install_tree('man5', prefix.share.man.man5) + install_tree('man7', prefix.share.man.man7) diff --git a/var/spack/repos/builtin/packages/libdwarf/package.py b/var/spack/repos/builtin/packages/libdwarf/package.py index 32144e96ba5..cb672dddc4b 100644 --- a/var/spack/repos/builtin/packages/libdwarf/package.py +++ b/var/spack/repos/builtin/packages/libdwarf/package.py @@ -68,7 +68,7 @@ def install(self, spec, prefix): make.add_default_arg('ARFLAGS=rcs') # Dwarf doesn't provide an install, so we have to do it. - mkdirp(prefix.bin, prefix.include, prefix.lib, prefix.man1) + mkdirp(prefix.bin, prefix.include, prefix.lib, prefix.man.man1) with working_dir('libdwarf'): extra_config_args = [] @@ -101,4 +101,4 @@ def install(self, spec, prefix): install('dwarfdump', prefix.bin) install('dwarfdump.conf', prefix.lib) - install('dwarfdump.1', prefix.man1) + install('dwarfdump.1', prefix.man.man1) diff --git a/var/spack/repos/builtin/packages/mercurial/package.py b/var/spack/repos/builtin/packages/mercurial/package.py index 1cfb4f59c9b..b6da9e6ea9b 100644 --- a/var/spack/repos/builtin/packages/mercurial/package.py +++ b/var/spack/repos/builtin/packages/mercurial/package.py @@ -57,14 +57,14 @@ def post_install(self): prefix = self.prefix # Install man pages - mkdirp(prefix.man1) - mkdirp(prefix.man5) - mkdirp(prefix.man8) + mkdirp(prefix.man.man1) + mkdirp(prefix.man.man5) + mkdirp(prefix.man.man8) with working_dir('doc'): - install('hg.1', prefix.man1) - install('hgignore.5', prefix.man5) - install('hgrc.5', prefix.man5) - install('hg-ssh.8', prefix.man8) + install('hg.1', prefix.man.man1) + install('hgignore.5', prefix.man.man5) + install('hgrc.5', prefix.man.man5) + install('hg-ssh.8', prefix.man.man8) # Install completion scripts contrib = join_path(prefix, 'contrib') diff --git a/var/spack/repos/builtin/packages/pigz/package.py b/var/spack/repos/builtin/packages/pigz/package.py index e9fe482c516..36afbaa9bf3 100644 --- a/var/spack/repos/builtin/packages/pigz/package.py +++ b/var/spack/repos/builtin/packages/pigz/package.py @@ -41,6 +41,6 @@ def build(self, spec, prefix): def install(self, spec, prefix): mkdirp(prefix.bin) - mkdirp(prefix.man1) + mkdirp(prefix.man.man1) install('pigz', "%s/pigz" % prefix.bin) - install('pigz.1', "%s/pigz.1" % prefix.man1) + install('pigz.1', "%s/pigz.1" % prefix.man.man1) diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index ab768767f9a..b1aaad0eb60 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -249,4 +249,4 @@ def install(self, spec, prefix): install_tree('bin', prefix.bin) install_tree('lib', prefix.lib) install_tree('include', prefix.include) - install_tree('man/man1', prefix.share_man1) + install_tree('man/man1', prefix.share.man.man1) From 1d82ccd25c3ed82617efca82d1261ada8c310055 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sun, 25 Jun 2017 14:09:47 +0200 Subject: [PATCH 1129/2394] Update libbson and libmongoc to 1.6.3 (#4599) --- var/spack/repos/builtin/packages/libbson/package.py | 3 ++- var/spack/repos/builtin/packages/libmongoc/package.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libbson/package.py b/var/spack/repos/builtin/packages/libbson/package.py index 1eaa1c9b78c..f78ff4544ad 100644 --- a/var/spack/repos/builtin/packages/libbson/package.py +++ b/var/spack/repos/builtin/packages/libbson/package.py @@ -30,8 +30,9 @@ class Libbson(AutotoolsPackage): parsing, and iterating BSON documents.""" homepage = "https://github.com/mongodb/libbson" - url = "https://github.com/mongodb/libbson/releases/download/1.6.2/libbson-1.6.2.tar.gz" + url = "https://github.com/mongodb/libbson/releases/download/1.6.3/libbson-1.6.3.tar.gz" + version('1.6.3', 'b7bdb314197106fcfb4af105a582d343') version('1.6.2', 'c128a2ae3e35295e1176465be60f19db') version('1.6.1', '4d6779451bc5764a7d4982c01e7bd8c2') diff --git a/var/spack/repos/builtin/packages/libmongoc/package.py b/var/spack/repos/builtin/packages/libmongoc/package.py index 57854d7ae8a..0fc6bd632d0 100644 --- a/var/spack/repos/builtin/packages/libmongoc/package.py +++ b/var/spack/repos/builtin/packages/libmongoc/package.py @@ -29,8 +29,9 @@ class Libmongoc(AutotoolsPackage): """libmongoc is a client library written in C for MongoDB.""" homepage = "https://github.com/mongodb/mongo-c-driver" - url = "https://github.com/mongodb/mongo-c-driver/releases/download/1.6.2/mongo-c-driver-1.6.2.tar.gz" + url = "https://github.com/mongodb/mongo-c-driver/releases/download/1.6.3/mongo-c-driver-1.6.3.tar.gz" + version('1.6.3', '0193610cf1d98aae7008f272a1000972') version('1.6.2', 'aac86df153282cda1e4905cca181631a') version('1.6.1', '826946de9a15f7f453aefecdc76b1c0d') From ad1382e66491a1e9340e506c85a5f195c9c30a5b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 25 Jun 2017 22:42:38 -0500 Subject: [PATCH 1130/2394] Don't immediately raise an error when an editor is not found (#4587) * Don't immediately raise an error when an editor is not found * If no editor is found, raise an error only if we try to use it. --- lib/spack/spack/__init__.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 1f583fff61e..e77a0c75cdf 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -223,12 +223,13 @@ else: editor = which('vim', 'vi', 'emacs', 'nano') +# If there is no editor, only raise an error if we actually try to use it. if not editor: - default = default_editors[0] - msg = 'Default text editor, {0}, not found.\n'.format(default) - msg += 'Please set the EDITOR environment variable to your preferred ' - msg += 'text editor, or install {0}.'.format(default) - raise EnvironmentError(msg) + def editor_not_found(*args, **kwargs): + raise EnvironmentError( + 'No text editor found! Please set the EDITOR environment variable ' + 'to your preferred text editor.') + editor = editor_not_found from spack.package import \ install_dependency_symlinks, flatten_dependencies, \ From 767cdf98d33cbc32c7725f84d2c2cc07fe0e828a Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Mon, 26 Jun 2017 15:58:02 +0100 Subject: [PATCH 1131/2394] Cleanup some depends_on flex for scotch and things depending on scotch (#4600) (#4601) - The buggy flex-2.6.2 was blacklisted in the corresponding flex package, but now also removed the md5sum to avoid suggesting that this version should be revived. The 2.6.3 has similar problems (at least for scotch), but 2.6.4 seems to work. - Rejig flex restriction for scotch to exclude 2.6.2-2.6.3 only. Since flex-2.6.4 appears to be okay again, we can remove the flex version restriction that trickled through into the openfoam packages as a consequent of an spack spec bug. - Make flex a build dependency for the openfoam packages (seems to have been an earlier oversight). --- var/spack/repos/builtin/packages/flex/package.py | 3 +-- var/spack/repos/builtin/packages/foam-extend/package.py | 2 +- var/spack/repos/builtin/packages/openfoam-com/package.py | 2 +- var/spack/repos/builtin/packages/openfoam-org/package.py | 2 +- var/spack/repos/builtin/packages/scotch/package.py | 3 ++- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py index 0d720d307cf..67185695863 100644 --- a/var/spack/repos/builtin/packages/flex/package.py +++ b/var/spack/repos/builtin/packages/flex/package.py @@ -34,9 +34,8 @@ class Flex(AutotoolsPackage): version('2.6.4', '2882e3179748cc9f9c23ec593d6adc8d') version('2.6.3', 'a5f65570cd9107ec8a8ec88f17b31bb1') - # Problematic version: + # Avoid flex '2.6.2' (major bug) # See issue #2554; https://github.com/westes/flex/issues/113 - # version('2.6.2', 'cc6d76c333db7653d5caf423a3335239') version('2.6.1', '05bcd8fb629e0ae130311e8a6106fa82') version('2.6.0', '760be2ee9433e822b6eb65318311c19d') version('2.5.39', '5865e76ac69c05699f476515592750d7') diff --git a/var/spack/repos/builtin/packages/foam-extend/package.py b/var/spack/repos/builtin/packages/foam-extend/package.py index 91837af7205..a6776b182f2 100644 --- a/var/spack/repos/builtin/packages/foam-extend/package.py +++ b/var/spack/repos/builtin/packages/foam-extend/package.py @@ -100,7 +100,7 @@ class FoamExtend(Package): depends_on('mpi') depends_on('python') depends_on('zlib') - depends_on('flex@:2.6.1') # <- restriction due to scotch + depends_on('flex', type='build') depends_on('cmake', type='build') depends_on('scotch~metis', when='~ptscotch+scotch') diff --git a/var/spack/repos/builtin/packages/openfoam-com/package.py b/var/spack/repos/builtin/packages/openfoam-com/package.py index ce7be181b5f..9e930535a01 100644 --- a/var/spack/repos/builtin/packages/openfoam-com/package.py +++ b/var/spack/repos/builtin/packages/openfoam-com/package.py @@ -291,7 +291,7 @@ class OpenfoamCom(Package): depends_on('fftw') depends_on('boost') depends_on('cgal') - depends_on('flex@:2.6.1') # <- restriction due to scotch + depends_on('flex', type='build') depends_on('cmake', type='build') # Require scotch with ptscotch - corresponds to standard OpenFOAM setup diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py index 017f6cc2327..a31cc2e2107 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/package.py +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -91,7 +91,7 @@ class OpenfoamOrg(Package): provides('openfoam') depends_on('mpi') depends_on('zlib') - depends_on('flex@:2.6.1') # <- restriction due to scotch + depends_on('flex', type='build') depends_on('cmake', type='build') # Require scotch with ptscotch - corresponds to standard OpenFOAM setup diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index b1aaad0eb60..c776e8560d5 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -51,7 +51,8 @@ class Scotch(Package): variant('int64', default=False, description='Use int64_t for SCOTCH_Num typedef') - depends_on('flex@:2.6.1', type='build') + # Does not build with flex 2.6.[23] + depends_on('flex@:2.6.1,2.6.4:', type='build') depends_on('bison', type='build') depends_on('mpi', when='+mpi') depends_on('zlib', when='+compression') From 575ee414136f2264446b6d0260c09699cb5f4f8a Mon Sep 17 00:00:00 2001 From: Lynn Garren Date: Mon, 26 Jun 2017 16:04:36 -0500 Subject: [PATCH 1132/2394] update for clhep (#4588) * adding clhep 2.3.4.4, etc and modernizing package.py * add remaining 2.3.x.y clhep releases * setting list_depth to 1 is sufficient * remove whitespace --- .../repos/builtin/packages/clhep/package.py | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py index 063188b4194..4d8fd14f3ba 100644 --- a/var/spack/repos/builtin/packages/clhep/package.py +++ b/var/spack/repos/builtin/packages/clhep/package.py @@ -26,13 +26,23 @@ from spack import * -class Clhep(Package): +class Clhep(CMakePackage): """CLHEP is a C++ Class Library for High Energy Physics. """ homepage = "http://proj-clhep.web.cern.ch/proj-clhep/" url = "http://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/tarFiles/clhep-2.2.0.5.tgz" - list_url = "https://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/" + list_url = "https://proj-clhep.web.cern.ch/proj-clhep/" + list_depth = 1 + version('2.3.4.4', '8b8a33d0d19213b60d6c22ce5fc93761') + version('2.3.4.3', '6941279f70d69492fff1aa955f3f2562') + version('2.3.4.2', '1e7a9046c9ad0b347d6812f8031191da') + version('2.3.4.1', '5ae85571ff3d8b2c481c3f95ea89b751') + version('2.3.4.0', 'dd899d0791a823221927f97edf190348') + version('2.3.3.2', '8b9f8d7f4dccec6d058b3a078f66b6a3') + version('2.3.3.1', '456ef9d262ef4e776af984bfbe2f48c7') + version('2.3.3.0', '3637eaa6750606e589e52c9e155a382e') version('2.3.2.2', '567b304b0fa017e1e9fbf199f456ebe9') + version('2.3.2.1', '064903cb5c23b54f520d04ca6230b901') version('2.3.1.1', '16efca7641bc118c9d217cc96fe90bf5') version('2.3.1.0', 'b084934fc26a4182a08c09c292e19161') version('2.3.0.0', 'a00399a2ca867f2be902c22fc71d7e2e') @@ -53,12 +63,19 @@ def patch(self): '%s/%s/CLHEP/CMakeLists.txt' % (self.stage.path, self.spec.version)) - def install(self, spec, prefix): - # Handle debug - # Pull out the BUILD_TYPE so we can change it (Release is default) - cmake_args = [arg for arg in std_cmake_args if 'BUILD_TYPE' not in arg] - build_type = 'Debug' if '+debug' in spec else 'MinSizeRel' - cmake_args.extend(['-DCMAKE_BUILD_TYPE=' + build_type]) + root_cmakelists_dir = '../CLHEP' + + def build_type(self): + spec = self.spec + + if '+debug' in spec: + return 'Debug' + else: + return 'MinSizeRel' + + def cmake_args(self): + spec = self.spec + cmake_args = [] if '+cxx11' in spec: env['CXXFLAGS'] = self.compiler.cxx11_flag @@ -70,12 +87,4 @@ def install(self, spec, prefix): cmake_args.append('-DCLHEP_BUILD_CXXSTD=' + self.compiler.cxx14_flag) - # Note that the tar file is unusual in that there's a - # CLHEP directory (addtional layer) - cmake_args.append("../CLHEP") - - # Run cmake in a build directory - with working_dir('build', create=True): - cmake(*cmake_args) - make() - make("install") + return cmake_args From 351f0e2e16ebd52ef349d3538ebf485697883515 Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Mon, 26 Jun 2017 17:05:15 -0400 Subject: [PATCH 1133/2394] added py-multiqc and dependencies (#4381) * added py-multiqc and dependencies * added requested changes per #4381 * added colormath dependency per https://github.com/jsvine/spectra/blob/master/requirements.txt * py-multiqc changes * py-multiqc does not need colormath - spectra does --- .../builtin/packages/py-colormath/package.py | 38 +++++++++++++++ .../builtin/packages/py-lzstring/package.py | 37 ++++++++++++++ .../builtin/packages/py-multiqc/package.py | 48 +++++++++++++++++++ .../builtin/packages/py-spectra/package.py | 37 ++++++++++++++ 4 files changed, 160 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-colormath/package.py create mode 100644 var/spack/repos/builtin/packages/py-lzstring/package.py create mode 100644 var/spack/repos/builtin/packages/py-multiqc/package.py create mode 100644 var/spack/repos/builtin/packages/py-spectra/package.py diff --git a/var/spack/repos/builtin/packages/py-colormath/package.py b/var/spack/repos/builtin/packages/py-colormath/package.py new file mode 100644 index 00000000000..578673a7095 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-colormath/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyColormath(PythonPackage): + """Color math and conversion library.""" + + homepage = "https://pypi.python.org/pypi/colormath/2.1.1" + url = "https://pypi.io/packages/source/c/colormath/colormath-2.1.1.tar.gz" + + version('2.1.1', '10a0fb17e3c24363d0e1a3f2dccaa33b') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-networkx', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-lzstring/package.py b/var/spack/repos/builtin/packages/py-lzstring/package.py new file mode 100644 index 00000000000..75f0f606dff --- /dev/null +++ b/var/spack/repos/builtin/packages/py-lzstring/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyLzstring(PythonPackage): + """lz-string for python.""" + + homepage = "https://github.com/gkovacs/lz-string-python" + url = "https://pypi.io/packages/source/l/lzstring/lzstring-1.0.3.tar.gz" + + version('1.0.3', '1c636543484629020a26432740f81443') + + depends_on('py-setuptools', type='build') + depends_on('py-future', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-multiqc/package.py b/var/spack/repos/builtin/packages/py-multiqc/package.py new file mode 100644 index 00000000000..c0eb702974f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-multiqc/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyMultiqc(PythonPackage): + """MultiQC is a tool to aggregate bioinformatics results across many + samples into a single report. It is written in Python and contains modules + for a large number of common bioinformatics tools.""" + + homepage = "https://multiqc.info" + url = "https://pypi.io/packages/source/m/multiqc/multiqc-1.0.tar.gz" + + version('1.0', '0b7310b3f75595e5be8099fbed2d2515') + + depends_on('python@2.7:') + depends_on('py-setuptools', type='build') + depends_on('py-click', type=('build', 'run')) + depends_on('py-jinja2@2.9:', type=('build', 'run')) + depends_on('py-lzstring', type=('build', 'run')) + depends_on('py-future@0.14.1:', type=('build', 'run')) + depends_on('py-spectra', type=('build', 'run')) + depends_on('py-matplotlib', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-pyyaml', type=('build', 'run')) + depends_on('py-simplejson', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-spectra/package.py b/var/spack/repos/builtin/packages/py-spectra/package.py new file mode 100644 index 00000000000..acb2643698f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-spectra/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PySpectra(PythonPackage): + """Color scales and color conversion made easy for Python.""" + + homepage = "https://pypi.python.org/pypi/spectra/0.0.8" + url = "https://pypi.io/packages/source/s/spectra/spectra-0.0.8.tar.gz" + + version('0.0.8', '83020b29e584389f24c7720f38f0136c') + + depends_on('py-setuptools', type='build') + depends_on('py-colormath', type=('build', 'run')) From 051d15f7772b7b2add1c5dc638bc4f87b75a5eba Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 27 Jun 2017 12:34:52 +0100 Subject: [PATCH 1134/2394] BUG: inconsistent -fPIC causes adios/mxml linkage problem (fix #4605) (#4606) - Thanks to pointer from @adamjstewart - can avoid this either by avoiding an external mxml dependency, or by making certain that they both use consistent code generation. The adios package uses '-fPIC' for python linkage and this seems to require the same for mxml too. If the adios-internal version of mxml is used, it has the same flags for both. --- var/spack/repos/builtin/packages/mxml/package.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index c0ff5f6cd94..e8b87e52c13 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -48,5 +48,9 @@ def url_for_version(self, version): return 'https://github.com/michaelrsweet/mxml/releases/download/release-{0}/mxml-{0}.tar.gz'.format(version) def configure_args(self): - # Default is non-shared, but avoid any future surprises - return ['--disable-shared'] + return [ + # ADIOS build with -fPIC, so we need it too (avoid linkage issue) + 'CFLAGS=-fPIC', + # Default is non-shared, but avoid any future surprises + '--disable-shared', + ] From 77218b1c8d722e5b8480053161698dcc5a2aa09d Mon Sep 17 00:00:00 2001 From: serbanmaerean Date: Tue, 27 Jun 2017 07:40:38 -0400 Subject: [PATCH 1135/2394] Fix xl/trilinos (#4607) * Added magma package * Incorporated Serban's change * fix-xl/trilinos: add -qfixed to Fortran flags in seacas package * fix-xl/trilinos: fixed spack flake8 errors --- var/spack/repos/builtin/packages/trilinos/package.py | 2 ++ .../repos/builtin/packages/trilinos/xlf_seacas.patch | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 var/spack/repos/builtin/packages/trilinos/xlf_seacas.patch diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 5012683879f..161b2ed52a4 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -197,6 +197,8 @@ class Trilinos(CMakePackage): depends_on('swig', when='+python') patch('umfpack_from_suitesparse.patch', when='@11.14.1:12.8.1') + patch('xlf_seacas.patch', when='@12.10.1%xl') + patch('xlf_seacas.patch', when='@12.10.1%xl_r') def url_for_version(self, version): url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz" diff --git a/var/spack/repos/builtin/packages/trilinos/xlf_seacas.patch b/var/spack/repos/builtin/packages/trilinos/xlf_seacas.patch new file mode 100644 index 00000000000..04e84d93fbf --- /dev/null +++ b/var/spack/repos/builtin/packages/trilinos/xlf_seacas.patch @@ -0,0 +1,12 @@ +--- a/packages/seacas/cmake/FortranSettings.cmake 2017-06-26 15:28:54.660570160 -0400 ++++ b/pacakges/seacas/cmake/FortranSettings.cmake 2017-06-26 15:28:05.650565259 -0400 +@@ -7,7 +7,7 @@ + IF ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU") + SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fcray-pointer -fdefault-real-8 -fdefault-integer-8 -fno-range-check") + ELSEIF ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "XL") +- SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -WF,-D__XLF__ -qintsize=8 -qrealsize=8") ++ SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qfixed -WF,-D__XLF__ -qintsize=8 -qrealsize=8") + ELSE() + SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -i8") + ENDIF() + From 7b0d295a4ce86175503f2713e032e8caaefdb3aa Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Tue, 27 Jun 2017 14:53:58 -0400 Subject: [PATCH 1136/2394] Added STAR-Fusion (#4380) * added perl-star-fusion and perl-intervaltree * added perl-star-fusion and all dependencies * changes * made changes as requested to perl-star-fusion dependencies * changed perl-intervaltree dependency * changes to star fusion * now using perl properly --- .../builtin/packages/perl-dbfile/package.py | 41 +++++++++++++ .../packages/perl-intervaltree/package.py | 37 ++++++++++++ .../packages/perl-star-fusion/package.py | 59 +++++++++++++++++++ .../packages/perl-uri-escape/package.py | 39 ++++++++++++ 4 files changed, 176 insertions(+) create mode 100644 var/spack/repos/builtin/packages/perl-dbfile/package.py create mode 100644 var/spack/repos/builtin/packages/perl-intervaltree/package.py create mode 100644 var/spack/repos/builtin/packages/perl-star-fusion/package.py create mode 100644 var/spack/repos/builtin/packages/perl-uri-escape/package.py diff --git a/var/spack/repos/builtin/packages/perl-dbfile/package.py b/var/spack/repos/builtin/packages/perl-dbfile/package.py new file mode 100644 index 00000000000..7445d6e63ab --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-dbfile/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PerlDbfile(PerlPackage): + """DB_File is a module which allows Perl programs to make use of the + facilities provided by Berkeley DB version 1.x (if you have a newer version + of DB, see "Using DB_File with Berkeley DB version 2 or greater"). + It is assumed that you have a copy of the Berkeley DB manual pages at hand + when reading this documentation. The interface defined here mirrors the + Berkeley DB interface closely.""" + + homepage = "https://metacpan.org/pod/DB_File" + url = "https://cpan.metacpan.org/authors/id/P/PM/PMQS/DB_File-1.840.tar.gz" + + version('1.840', '8a2e98d457a216840ac893913c24141e') + + depends_on('perl-extutils-makemaker', type='build') diff --git a/var/spack/repos/builtin/packages/perl-intervaltree/package.py b/var/spack/repos/builtin/packages/perl-intervaltree/package.py new file mode 100644 index 00000000000..bcf1204c538 --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-intervaltree/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PerlIntervaltree(PerlPackage): + """Set::IntervalTree uses Interval Trees to store and efficiently look up + ranges using a range-based lookup.""" + + homepage = "https://metacpan.org/release/Set-IntervalTree" + url = "https://cpan.metacpan.org/authors/id/B/BE/BENBOOTH/Set-IntervalTree-0.10.tar.gz" + + version('0.10', '42efe9369f1b30e7fd04e10c07226b06') + + depends_on('perl-extutils-makemaker', type='build') diff --git a/var/spack/repos/builtin/packages/perl-star-fusion/package.py b/var/spack/repos/builtin/packages/perl-star-fusion/package.py new file mode 100644 index 00000000000..65d673bf3ba --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-star-fusion/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from glob import glob + + +class PerlStarFusion(Package): + """STAR-Fusion is a component of the Trinity Cancer Transcriptome Analysis + Toolkit (CTAT). STAR-Fusion uses the STAR aligner to identify candidate + fusion transcripts supported by Illumina reads. STAR-Fusion further + processes the output generated by the STAR aligner to map junction reads + and spanning reads to a reference annotation set.""" + + homepage = "https://github.com/STAR-Fusion/STAR-Fusion" + url = "https://github.com/STAR-Fusion/STAR-Fusion.git" + + version('master', git='https://github.com/STAR-Fusion/STAR-Fusion.git', commit='a16a0a8') + + extends('perl') + + depends_on('star', type=('build', 'run')) + depends_on('perl', type=('build', 'run')) + depends_on('perl-intervaltree', type=('build', 'run')) + depends_on('perl-dbi', type=('build', 'run')) + depends_on('perl-dbfile', type=('build', 'run')) + depends_on('perl-uri-escape', type=('build', 'run')) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('STAR-Fusion', prefix.bin) + mkdirp(perl_lib_dir) + with working_dir('PerlLib'): + for pm in glob("*.pm"): + install(pm, perl_lib_dir) + with working_dir('util'): + for files in glob("*"): + install(files, prefix.bin) diff --git a/var/spack/repos/builtin/packages/perl-uri-escape/package.py b/var/spack/repos/builtin/packages/perl-uri-escape/package.py new file mode 100644 index 00000000000..ffeb06f979b --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-uri-escape/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PerlUriEscape(PerlPackage): + """This module provides functions to percent-encode and percent-decode URI + strings as defined by RFC 3986. Percent-encoding URI's is informally called + "URI escaping". This is the terminology used by this module, which predates + the formalization of the terms by the RFC by several years.""" + + homepage = "https://metacpan.org/pod/URI::Escape" + url = "https://cpan.metacpan.org/authors/id/E/ET/ETHER/URI-1.71.tar.gz" + + version('1.71', '247c3da29a794f72730e01aa5a715daf') + + depends_on('perl-extutils-makemaker', type='build') From b1861b29efe929c81aacbf8848ddd7d309c00e18 Mon Sep 17 00:00:00 2001 From: becker33 Date: Tue, 27 Jun 2017 12:27:16 -0700 Subject: [PATCH 1137/2394] Added install option to read spec from file (#4611) --- lib/spack/spack/cmd/install.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index ec24ed9c625..9f35837220a 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -77,6 +77,9 @@ def setup_parser(subparser): subparser.add_argument( '--fake', action='store_true', dest='fake', help="fake install. just remove prefix and create a fake file") + subparser.add_argument( + '-f', '--file', action='store_true', dest='file', + help="install from file. Read specs to install from .yaml files") cd_group = subparser.add_mutually_exclusive_group() arguments.add_common_arguments(cd_group, ['clean', 'dirty']) @@ -320,7 +323,13 @@ def install(parser, args, **kwargs): }) # Spec from cli - specs = spack.cmd.parse_specs(args.package, concretize=True) + specs = [] + if args.file: + for file in args.package: + with open(file, 'r') as f: + specs.append(spack.spec.Spec.from_yaml(f)) + else: + specs = spack.cmd.parse_specs(args.package, concretize=True) if len(specs) == 0: tty.error('The `spack install` command requires a spec to install.') From 8f9f0ab8ec4180d570e94d988b6fe5d15ea9a223 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 28 Jun 2017 05:35:55 -0600 Subject: [PATCH 1138/2394] vpic: new package (#4624) --- .../repos/builtin/packages/vpic/package.py | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vpic/package.py diff --git a/var/spack/repos/builtin/packages/vpic/package.py b/var/spack/repos/builtin/packages/vpic/package.py new file mode 100644 index 00000000000..e24aa9e5306 --- /dev/null +++ b/var/spack/repos/builtin/packages/vpic/package.py @@ -0,0 +1,58 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Vpic(CMakePackage): + """VPIC is a general purpose particle-in-cell simulation code for modeling + kinetic plasmas in one, two, or three spatial dimensions. It employs a + second-order, explicit, leapfrog algorithm to update charged particle + positions and velocities in order to solve the relativistic kinetic + equation for each species in the plasma, along with a full Maxwell + description for the electric and magnetic fields evolved via a second- + order finite-difference-time-domain (FDTD) solve. + """ + homepage = "https://github.com/lanl/vpic" + url = "https://github.com/lanl/vpic/tarball/v1.0" + + version('develop', git='https://github.com/lanl/vpic', branch='master', submodules=True) + + variant('debug', default=False, description='Build debug version') + + depends_on("cmake@3.1:", type='build') + depends_on('mpi') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' + + def cmake_args(self): + options = ['-DENABLE_INTEGRATED_TESTS=ON', '-DENABLE_UNIT_TESTS=ON'] + + return options From 158f99f9ad51714059cc1c5ec2e21c77ab045f71 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Wed, 28 Jun 2017 05:41:04 -0600 Subject: [PATCH 1139/2394] Return an error exit code if spack cd does not succeed. (#4623) * Return an error exit code if spack cd does not succeed. * Reducing amount of return statements in spack cd exit code. --- share/spack/setup-env.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 5c1558f7fce..232d8241705 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -92,6 +92,8 @@ function spack { LOC="$(spack location $_sp_arg "$@")" if [[ -d "$LOC" ]] ; then cd "$LOC" + else + return 1 fi fi return From ddb0704028a7a895f7fe1b10de8b3e906ead67da Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 28 Jun 2017 09:13:49 -0600 Subject: [PATCH 1140/2394] pegtl: version bump (#4621) * pegtl: version bump * pegtl: added 2.1.4 * pegtl: reorder versions * pegtl: fix flake8 --- .../repos/builtin/packages/pegtl/package.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/pegtl/package.py b/var/spack/repos/builtin/packages/pegtl/package.py index 46b65c666d4..85a008a1199 100644 --- a/var/spack/repos/builtin/packages/pegtl/package.py +++ b/var/spack/repos/builtin/packages/pegtl/package.py @@ -27,7 +27,7 @@ # package has a Makefile, but only to build examples -class Pegtl(Package): +class Pegtl(CMakePackage): """The Parsing Expression Grammar Template Library (PEGTL) is a zero-dependency C++11 header-only library for creating parsers according to a Parsing Expression Grammar (PEG). @@ -36,9 +36,15 @@ class Pegtl(Package): homepage = "https://github.com/taocpp/PEGTL" url = "https://github.com/taocpp/PEGTL/tarball/1.3.1" - version('1.3.1', '11efc4beac8f4f5153466d56074e9f0c') + version('develop', git='https://github.com/taocpp/PEGTL', branch='master') + version('2.1.4', 'e5288b6968e6e910287fce93dc5557bf') + version('2.0.0', 'c772828e7188459338a920c21f9896db') - def install(self, spec, prefix): - mkdirp(prefix.include) - install_tree('pegtl', join_path(prefix.include, 'pegtl')) - install('pegtl.hh', prefix.include) + variant('debug', default=False, description='Build debug version') + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' From 6480e382173e689ea734525827c683c57596ebf9 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 28 Jun 2017 10:15:00 -0500 Subject: [PATCH 1141/2394] angsd: adding package angsd (#4620) --- .../repos/builtin/packages/angsd/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/angsd/package.py diff --git a/var/spack/repos/builtin/packages/angsd/package.py b/var/spack/repos/builtin/packages/angsd/package.py new file mode 100644 index 00000000000..21ad31c957a --- /dev/null +++ b/var/spack/repos/builtin/packages/angsd/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Angsd(MakefilePackage): + """Angsd is a program for analysing NGS data. The software can handle a + number of different input types from mapped reads to imputed genotype + probabilities. Most methods take genotype uncertainty into account + instead of basing the analysis on called genotypes. This is especially + useful for low and medium depth data.""" + + homepage = "https://github.com/ANGSD/angsd" + url = "https://github.com/ANGSD/angsd/archive/0.919.tar.gz" + + version('0.919', '79d342f49c24ac00d35934f2617048d4') + + depends_on('htslib') + + def setup_environment(self, spack_env, run_env): + run_env.set('R_LIBS', prefix.R) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('angsd', join_path(prefix.bin)) + install_tree('R', prefix.R) + install_tree('RES', prefix.RES) + install_tree('scripts', prefix.scripts) From 6ff7dde9a50270a4efa22c937e3a083a419ed514 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 28 Jun 2017 08:17:17 -0700 Subject: [PATCH 1142/2394] Add package for ngmlr (#4618) Minimally tested on CentOS 7. --- .../repos/builtin/packages/ngmlr/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ngmlr/package.py diff --git a/var/spack/repos/builtin/packages/ngmlr/package.py b/var/spack/repos/builtin/packages/ngmlr/package.py new file mode 100644 index 00000000000..91780c2b056 --- /dev/null +++ b/var/spack/repos/builtin/packages/ngmlr/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Ngmlr(CMakePackage): + """Ngmlr is a long-read mapper designed to align PacBilo or Oxford + Nanopore to a reference genome with a focus on reads that span + structural variations.""" + + homepage = "https://github.com/philres/ngmlr" + url = "https://github.com/philres/ngmlr/archive/v0.2.5.tar.gz" + + version('0.2.5', '1b2b1aaeb6a3accc8b9f3e5c29e77037') From e98662959ed201d0a2540a4d506cb92e7b2b9ad9 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 28 Jun 2017 10:17:45 -0500 Subject: [PATCH 1143/2394] beast2: adding new package beast2 (#4617) --- .../repos/builtin/packages/beast2/package.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 var/spack/repos/builtin/packages/beast2/package.py diff --git a/var/spack/repos/builtin/packages/beast2/package.py b/var/spack/repos/builtin/packages/beast2/package.py new file mode 100644 index 00000000000..ceeb94ab7f3 --- /dev/null +++ b/var/spack/repos/builtin/packages/beast2/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Beast2(Package): + """BEAST is a cross-platform program for Bayesian inference using MCMC + of molecular sequences. It is entirely orientated towards rooted, + time-measured phylogenies inferred using strict or relaxed molecular + clock models. It can be used as a method of reconstructing phylogenies + but is also a framework for testing evolutionary hypotheses without + conditioning on a single tree topology.""" + + homepage = "http://beast2.org/" + url = "https://github.com/CompEvol/beast2/releases/download/v2.4.6/BEAST.v2.4.6.Linux.tgz" + + version('2.4.6', 'b446f4ab121df9b991f7bb7ec94c8217') + + depends_on('jdk') + + def setup_environment(self, spack_env, run_env): + run_env.set('BEAST', self.prefix) + + def install(self, spec, prefix): + install_tree('bin', prefix.bin) + install_tree('examples', join_path(self.prefix, 'examples')) + install_tree('images', join_path(self.prefix, 'images')) + install_tree('lib', prefix.lib) + install_tree('templates', join_path(self.prefix, 'templates')) From d24e4e311a60b3d114d225374a53cf3466405c04 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 28 Jun 2017 08:47:48 -0700 Subject: [PATCH 1144/2394] Add package for muscle (#4616) * Add package for muscle Minimally tested on CentOS7. * Convert to MakefilePackage Do it the easy way... --- .../repos/builtin/packages/muscle/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/muscle/package.py diff --git a/var/spack/repos/builtin/packages/muscle/package.py b/var/spack/repos/builtin/packages/muscle/package.py new file mode 100644 index 00000000000..c8237826a24 --- /dev/null +++ b/var/spack/repos/builtin/packages/muscle/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Muscle(MakefilePackage): + """MUSCLE is one of the best-performing multiple alignment programs + according to published benchmark tests, with accuracy and speed + that are consistently better than CLUSTALW.""" + + homepage = "http://drive5.com/muscle/" + url = "http://www.drive5.com/muscle/muscle_src_3.8.1551.tar.gz" + + version('3.8.1551', '1b7c9661f275a82d3cf708f923736bf8') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('muscle', prefix.bin) From 00ec64150eddeed83cf91f18a45ac0586ba112bc Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 28 Jun 2017 08:48:21 -0700 Subject: [PATCH 1145/2394] Add package for primer3 (#4615) * Add package for primer3 Built and mildly tested on CentOS 7. * Convert to MakefilePackage I always forget about this... * Set build_directory the easy way Life's not always complicated. Don't go out of my way to make it so.... * Fix Flake8 issue --- .../repos/builtin/packages/primer3/package.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/primer3/package.py diff --git a/var/spack/repos/builtin/packages/primer3/package.py b/var/spack/repos/builtin/packages/primer3/package.py new file mode 100644 index 00000000000..fbed680b331 --- /dev/null +++ b/var/spack/repos/builtin/packages/primer3/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Primer3(MakefilePackage): + """Primer3 is a widely used program for designing PCR primers + (PCR = "Polymerase Chain Reaction"). PCR is an essential and + ubiquitous tool in genetics and molecular biology. Primer3 + can also design hybridization probes and sequencing primers.""" + + homepage = "http://primer3.sourceforge.net/" + url = "https://sourceforge.net/projects/primer3/files/primer3/2.3.7/primer3-2.3.7.tar.gz/download" + + version('2.3.7', 'c6b89067bf465e62b6b1fd830b5b4418') + + build_directory = 'src' + + def install(self, spec, prefix): + with working_dir(self.build_directory): + mkdirp(prefix.bin) + for binary in ('primer3_core', 'ntdpal', 'oligotm', + 'long_seq_tm_test'): + install(binary, prefix.bin) From cd1322b2c96f141a68180b052a63df9b3d756cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kyle=20Fernandes=2C=20n=C3=A9=20Jacobs?= Date: Wed, 28 Jun 2017 17:32:25 +0100 Subject: [PATCH 1146/2394] Update intel-parallel-studio and intel packages (#4628) --- .../packages/intel-parallel-studio/package.py | 12 ++++++------ var/spack/repos/builtin/packages/intel/package.py | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) 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 01bdf29bb24..531b29b986e 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -35,12 +35,12 @@ class IntelParallelStudio(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" - version('professional.2017.4', '669b45b8dc9826ba018966367b802f98', - url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11481/parallel_studio_xe_2017_update4.tgz') - version('cluster.2017.4', '669b45b8dc9826ba018966367b802f98', - url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11481/parallel_studio_xe_2017_update4.tgz') - version('composer.2017.4', '3cd2a5763bf2ebe97889a067a1a7c800', - url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11485/parallel_studio_xe_2017_update4_composer_edition.tgz') + version('professional.2017.4', '27398416078e1e4005afced3e9a6df7e', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11537/parallel_studio_xe_2017_update4.tgz') + version('cluster.2017.4', '27398416078e1e4005afced3e9a6df7e', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11537/parallel_studio_xe_2017_update4.tgz') + version('composer.2017.4', 'd03d351809e182c481dc65e07376d9a2', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11541/parallel_studio_xe_2017_update4_composer_edition.tgz') version('professional.2017.3', '691874735458d3e88fe0bcca4438b2a9', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11460/parallel_studio_xe_2017_update3.tgz') version('cluster.2017.3', '691874735458d3e88fe0bcca4438b2a9', diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index e013811f664..70c8453d498 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -122,8 +122,8 @@ class Intel(IntelInstaller): homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" - version('17.0.4', '3cd2a5763bf2ebe97889a067a1a7c800', - url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11485/parallel_studio_xe_2017_update4_composer_edition.tgz') + version('17.0.4', 'd03d351809e182c481dc65e07376d9a2', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11541/parallel_studio_xe_2017_update4_composer_edition.tgz') version('17.0.3', '52344df122c17ddff3687f84ceb21623', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11464/parallel_studio_xe_2017_update3_composer_edition.tgz') version('17.0.2', '2891ab1ece43eb61b6ab892f07c47f01', From 898c7f8838bc78b8d9679dfd9ff32eb575766e91 Mon Sep 17 00:00:00 2001 From: EmreAtes Date: Wed, 28 Jun 2017 19:24:29 +0200 Subject: [PATCH 1147/2394] add mpi to providers to remove virtual package error (#4608) --- lib/spack/docs/getting_started.rst | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index eaa92db6944..ef0f25cb042 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -1149,10 +1149,13 @@ Here's an example of an external configuration for cray modules: .. code-block:: yaml packages: - mpi: + mpich: modules: mpich@7.3.1%gcc@5.2.0 arch=cray_xc-haswell-CNL10: cray-mpich mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-haswell-CNL10: cray-mpich + all: + providers: + mpi: [mpich] This tells Spack that for whatever package that depends on mpi, load the cray-mpich module into the environment. You can then be able to use whatever @@ -1169,7 +1172,7 @@ Here is an example of a full packages.yaml used at NERSC .. code-block:: yaml packages: - mpi: + mpich: modules: mpich@7.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-mpich mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-SuSE11-ivybridge: cray-mpich @@ -1186,6 +1189,8 @@ Here is an example of a full packages.yaml used at NERSC buildable: False all: compiler: [gcc@5.2.0, intel@16.0.0.109] + providers: + mpi: [mpich] Here we tell spack that whenever we want to build with gcc use version 5.2.0 or if we want to build with intel compilers, use version 16.0.0.109. We add a spec From e5c665600cc0fccafaea9eec074660e477910542 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 28 Jun 2017 19:15:43 +0100 Subject: [PATCH 1148/2394] new package for KaHIP (#4613) --- .../repos/builtin/packages/kahip/package.py | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 var/spack/repos/builtin/packages/kahip/package.py diff --git a/var/spack/repos/builtin/packages/kahip/package.py b/var/spack/repos/builtin/packages/kahip/package.py new file mode 100644 index 00000000000..2bc127a4c29 --- /dev/null +++ b/var/spack/repos/builtin/packages/kahip/package.py @@ -0,0 +1,80 @@ +############################################################################## +# Copyright (c) 2017 Christian Schulz +# Karlsruhe Institute of Technology (KIT), Karlsruhe, Germany +# +# This file is released as part of Spack under the LGPL license +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE file for the LLNL notice and LGPL. +# +# License +# ------- +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + +import os +import re + + +class Kahip(Package): + """KaHIP - Karlsruhe High Quality Partitioning - is a family of graph + partitioning programs. It includes KaFFPa (Karlsruhe Fast Flow + Partitioner), which is a multilevel graph partitioning algorithm, + in its variants Strong, Eco and Fast, KaFFPaE (KaFFPaEvolutionary) + which is a parallel evolutionary algorithm that uses KaFFPa to + provide combine and mutation operations, as well as KaBaPE which + extends the evolutionary algorithm. Moreover, specialized + techniques are included to partition road networks (Buffoon), to + output a vertex separator from a given partition or techniques + geared towards efficient partitioning of social networks. + """ + + homepage = 'http://algo2.iti.kit.edu/documents/kahip/index.html' + url = 'http://algo2.iti.kit.edu/schulz/software_releases/KaHIP_2.00.tar.gz' + + version('develop', git='https://github.com/schulzchristian/KaHIP.git') + version('2.00', '9daeda32f43c90570ed436d5d93c8a872b1a14d8') + + depends_on('argtable') + depends_on('mpi') # Note: upstream package only tested on openmpi + depends_on('scons', type='build') + + phases = ['build', 'install'] + + # + # - End of definitions / setup - + # + + def build(self, spec, prefix): + """Build using the KaHIP compile.sh script. Uses scons internally.""" + builder = Executable('./compile.sh') + builder() + + def install(self, spec, prefix): + """Install under the prefix""" + # Ugly: all files land under 'deploy' and we need to disentangle them + mkdirp(prefix.bin) + mkdirp(prefix.include) + mkdirp(prefix.lib) + + with working_dir('deploy'): + for f in os.listdir('.'): + if re.match(r'.*\.(a|so|dylib)$', f): + install(f, prefix.lib) + elif re.match(r'.*\.h$', f): + install(f, prefix.include) + else: + install(f, prefix.bin) From 6550aeeafcacad6bba5e4b44e130fd3b40e42bdd Mon Sep 17 00:00:00 2001 From: Darach Golden Date: Wed, 28 Jun 2017 19:22:18 +0100 Subject: [PATCH 1149/2394] Requested changes related to mumps compilation (#4614) * * add mpii* wrappers for use with intel compilers * in mumps package, scotch is compiled without metis option when ptscotch variant is selected. This removes confusion over which metis.h to use * for intel mkl, add SPACK_COMPILER_EXTRA_RPATHS ending in 'intel64' * scotch lib requires libz when compression is turned on. This caused a link issue on some Ubuntu distributions (not redhat). Change Scotch package to add -lz when needed * * intel-mkl append to SPACK_COMPILER_EXTRA_RPATHS rather than setting * use more concise method to obtain libz libraries for scotch * remove changes to intel mpi * remove commented out depends_on * fix flake8 errors --- var/spack/repos/builtin/packages/intel-mkl/package.py | 2 ++ var/spack/repos/builtin/packages/mumps/package.py | 4 ++-- var/spack/repos/builtin/packages/scotch/package.py | 7 ++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index e1b4049ef82..4eaf50dea55 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -142,6 +142,8 @@ def install(self, spec, prefix): 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) + spack_env.append_path('SPACK_COMPILER_EXTRA_RPATHS', + join_path(self.prefix.lib, 'intel64')) def setup_environment(self, spack_env, run_env): run_env.set('MKLROOT', self.prefix) diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index 9d74ec4b6f0..60a46723c4c 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -61,7 +61,7 @@ class Mumps(Package): variant('shared', default=True, description='Build shared libraries') depends_on('scotch + esmumps', when='~ptscotch+scotch') - depends_on('scotch + esmumps + mpi', when='+ptscotch') + depends_on('scotch + esmumps ~ metis + mpi', when='+ptscotch') depends_on('metis@5:', when='+metis') depends_on('parmetis', when="+parmetis") depends_on('blas') @@ -160,7 +160,7 @@ def write_makefile_inc(self): 'FC = {0}'.format(self.spec['mpi'].mpifc), "SCALAP = %s" % scalapack.ld_flags, "MUMPS_TYPE = par"]) - if (self.spec.satisfies('%xl_r' or '%xl')) and self.spec.satisfies('^spectrum-mpi'): # noqa + if (self.spec.satisfies('%xl_r' or '%xl')) and self.spec.satisfies('^spectrum-mpi'): # noqa makefile_conf.extend( ['FL = {0}'.format(self.spec['mpi'].mpicc)]) else: diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index c776e8560d5..8071a9765fa 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -81,6 +81,7 @@ def libs(self): shared = '+shared' in self.spec libraries = ['libscotch', 'libscotcherr'] + zlibs = [] if '+mpi' in self.spec: libraries = ['libptscotch', 'libptscotcherr'] + libraries @@ -89,9 +90,13 @@ def libs(self): elif '~mpi+esmumps' in self.spec: libraries = ['libesmumps'] + libraries - return find_libraries( + scotchlibs = find_libraries( libraries, root=self.prefix, recurse=True, shared=shared ) + if '+compression' in self.spec: + zlibs = self.spec['zlib'].libs + + return scotchlibs + zlibs def patch(self): self.configure() From d354289b9cf24bcb8b842bea9e18c59ff2f33d94 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 28 Jun 2017 14:14:12 -0500 Subject: [PATCH 1150/2394] New package allpaths-lg (#4632) * allpathslg: adding package. compiler specs iffy, will fix * allpaths-lg: adding new package * allpaths-lg: fixing conflicts --- .../builtin/packages/allpaths-lg/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/allpaths-lg/package.py diff --git a/var/spack/repos/builtin/packages/allpaths-lg/package.py b/var/spack/repos/builtin/packages/allpaths-lg/package.py new file mode 100644 index 00000000000..cba8002d15f --- /dev/null +++ b/var/spack/repos/builtin/packages/allpaths-lg/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class AllpathsLg(AutotoolsPackage): + """ALLPATHS-LG is our original short read assembler and it works on both + small and large (mammalian size) genomes.""" + + homepage = "http://www.broadinstitute.org/software/allpaths-lg/blog/" + url = "ftp://ftp.broadinstitute.org/pub/crd/ALLPATHS/Release-LG/latest_source_code/LATEST_VERSION.tar.gz" + + version('52488', 'bde9008e236d87708a48eb83af6d6d5b') + + # compiles with gcc 4.7.0 to 4.9.4) + conflicts('%gcc@:4.6.4,5.1.0:') + conflicts('%cce') + conflicts('%clang') + conflicts('%intel') + conflicts('%nag') + conflicts('%pgi') + conflicts('%xl') + conflicts('%xl_r') From dd4fa07de9ac50eab807f3cdb192078fc272e4f9 Mon Sep 17 00:00:00 2001 From: Thierry Date: Wed, 28 Jun 2017 12:14:24 -0700 Subject: [PATCH 1151/2394] make yorick extendable. See plugins on D Munro github. (#4631) --- var/spack/repos/builtin/packages/yorick/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/yorick/package.py b/var/spack/repos/builtin/packages/yorick/package.py index 3052730985c..6facdfd9fb6 100644 --- a/var/spack/repos/builtin/packages/yorick/package.py +++ b/var/spack/repos/builtin/packages/yorick/package.py @@ -51,6 +51,8 @@ class Yorick(Package): depends_on('libx11', when='+X') + extendable = True + def url_for_version(self, version): url = "https://github.com/dhmunro/yorick/archive/y_{0}.tar.gz" return url.format(version.underscored) From bdb859f1e1eb3895a1e7bbfc39dd0a7424ac2af8 Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Thu, 29 Jun 2017 07:42:43 -0400 Subject: [PATCH 1152/2394] added albacore 1.2.4 (#4637) --- var/spack/repos/builtin/packages/ont-albacore/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ont-albacore/package.py b/var/spack/repos/builtin/packages/ont-albacore/package.py index a0f4506a4d3..27c66e8684c 100644 --- a/var/spack/repos/builtin/packages/ont-albacore/package.py +++ b/var/spack/repos/builtin/packages/ont-albacore/package.py @@ -33,8 +33,9 @@ class OntAlbacore(Package): kits and Flow Cells.""" homepage = "https://nanoporetech.com" - url = "https://mirror.oxfordnanoportal.com/software/analysis/ont_albacore-1.1.0-cp35-cp35m-manylinux1_x86_64.whl" + url = "https://mirror.oxfordnanoportal.com/software/analysis/ont_albacore-1.2.4-cp35-cp35m-manylinux1_x86_64.whl" + version('1.2.4', '559640bec4693af12e4d923e8d77adf6', expand=False) version('1.1.0', 'fab4502ea1bad99d813aa2629e03e83d', expand=False) extends('python') From c416983e5fc3e00cbc710b06d3ad3684567b6010 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 29 Jun 2017 07:27:18 -0700 Subject: [PATCH 1153/2394] Add package for lftp (#4634) * Add package for lftp * Avoid expensive list processing --- .../repos/builtin/packages/lftp/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/lftp/package.py diff --git a/var/spack/repos/builtin/packages/lftp/package.py b/var/spack/repos/builtin/packages/lftp/package.py new file mode 100644 index 00000000000..c369a918637 --- /dev/null +++ b/var/spack/repos/builtin/packages/lftp/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Lftp(AutotoolsPackage): + """LFTP is a sophisticated file transfer program supporting a number + of network protocols (ftp, http, sftp, fish, torrent).""" + + homepage = "http://lftp.yar.ru/" + url = "http://lftp.yar.ru/ftp/lftp-4.7.7.tar.gz" + + version('4.7.7', 'ddc71b3b11a1af465e829075ae14b3ff') + + depends_on('expat') + depends_on('libiconv') + depends_on('ncurses') + depends_on('openssl') + depends_on('readline') + depends_on('zlib') + + def configure_args(self): + return [ + '--with-expat={0}'.format(self.spec['expat'].prefix), + '--with-libiconv={0}'.format(self.spec['libiconv'].prefix), + '--with-openssl={0}'.format(self.spec['openssl'].prefix), + '--with-readline={0}'.format(self.spec['readline'].prefix), + '--with-zlib={0}'.format(self.spec['zlib'].prefix), + '--disable-dependency-tracking', + ] From 7d59197b7b056ce4525b3faccdcaa7f06519c886 Mon Sep 17 00:00:00 2001 From: Douglas Duckworth Date: Thu, 29 Jun 2017 14:42:56 -0400 Subject: [PATCH 1154/2394] added numpy 1.13 - modified albacore to use 1.13 (#4639) * albacore 1.24 requires numpy 1.13 - added numpy 1.13 * added numpy 1.13 --- var/spack/repos/builtin/packages/ont-albacore/package.py | 2 +- var/spack/repos/builtin/packages/py-numpy/package.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ont-albacore/package.py b/var/spack/repos/builtin/packages/ont-albacore/package.py index 27c66e8684c..812bd3294db 100644 --- a/var/spack/repos/builtin/packages/ont-albacore/package.py +++ b/var/spack/repos/builtin/packages/ont-albacore/package.py @@ -41,7 +41,7 @@ class OntAlbacore(Package): depends_on('python@3.5.0:3.5.999', type=('build', 'run')) depends_on('py-setuptools', type=('build', 'run')) - depends_on('py-numpy', type=('build', 'run')) + depends_on('py-numpy@1.13.0', type=('build', 'run')) depends_on('py-dateutil', type=('build', 'run')) depends_on('py-h5py', type=('build', 'run')) depends_on('py-ont-fast5-api', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 4eac983706d..177a55fd1d4 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -48,6 +48,8 @@ class PyNumpy(PythonPackage): # FIXME: numpy._build_utils and numpy.core.code_generators failed to import # FIXME: Is this expected? + version('1.13.0', 'fd044f0b8079abeaf5e6d2e93b2c1d03', + url="https://pypi.io/packages/source/n/numpy/numpy-1.13.0.zip") version('1.12.1', 'c75b072a984028ac746a6a332c209a91', url="https://pypi.io/packages/source/n/numpy/numpy-1.12.1.zip") version('1.12.0', '33e5a84579f31829bbbba084fe0a4300', From 35488e04a0d6beeb14c25fe8f779fdc2f7f2cc76 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 29 Jun 2017 13:38:12 -0700 Subject: [PATCH 1155/2394] Helper script support JAVA_{ARGS,OPTS} (#4640) Make it possible to pass addition arguments to the JVM. Apparently there are two vars and they are [commonly *both* used][1]. Go figure. [1]: https://stackoverflow.com/questions/23507639/is-it-same-mean-java-args-and-java-opts --- var/spack/repos/builtin/packages/trimmomatic/trimmomatic.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/trimmomatic/trimmomatic.sh b/var/spack/repos/builtin/packages/trimmomatic/trimmomatic.sh index 55068f6a078..88990aa3ec8 100644 --- a/var/spack/repos/builtin/packages/trimmomatic/trimmomatic.sh +++ b/var/spack/repos/builtin/packages/trimmomatic/trimmomatic.sh @@ -1,3 +1,3 @@ #!/bin/sh # convenience wrapper for the trimmomatic.jar file -java -jar trimmomatic.jar "$@" +java $JAVA_ARGS $JAVA_OPTS -jar trimmomatic.jar "$@" From 9933d759ac2c2d68235b52c02416750dacb9d5e1 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 29 Jun 2017 21:38:47 -0500 Subject: [PATCH 1156/2394] Update hdfgroup packages to new URL structure (#4643) * Update hdfgroup packages to new URL structure * Update docs now that HDF5 URL isn't that complicated --- lib/spack/docs/packaging_guide.rst | 30 +++++++------- .../repos/builtin/packages/hdf/package.py | 25 +++++------- .../repos/builtin/packages/hdf5/package.py | 40 +++++-------------- .../repos/builtin/packages/openmpi/package.py | 4 +- .../repos/builtin/packages/szip/package.py | 19 +++++---- 5 files changed, 49 insertions(+), 69 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index ecc3f588302..cdf4cc7e3ba 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -443,26 +443,31 @@ Version URLs By default, each version's URL is extrapolated from the ``url`` field in the package. For example, Spack is smart enough to download version ``8.2.1.`` of the ``Foo`` package above from -``http://example.com/foo-8.2.1.tar.gz``. +http://example.com/foo-8.2.1.tar.gz. If the URL is particularly complicated or changes based on the release, you can override the default URL generation algorithm by defining your -own ``url_for_version()`` function. For example, the developers of HDF5 -keep changing the archive layout, so the ``url_for_version()`` function -looks like: +own ``url_for_version()`` function. For example, the download URL for +OpenMPI contains the major.minor version in one spot and the +major.minor.patch version in another: -.. literalinclude:: ../../../var/spack/repos/builtin/packages/hdf5/package.py - :pyobject: Hdf5.url_for_version +https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.bz2 -With the use of this ``url_for_version()``, Spack knows to download HDF5 ``1.8.16`` -from ``http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.16/src/hdf5-1.8.16.tar.gz`` -but download HDF5 ``1.10.0`` from ``http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.0/src/hdf5-1.10.0.tar.gz``. +In order to handle this, you can define a ``url_for_version()`` function +like so: -You'll notice that HDF5's ``url_for_version()`` function makes use of a special +.. literalinclude:: ../../../var/spack/repos/builtin/packages/openmpi/package.py + :pyobject: Openmpi.url_for_version + +With the use of this ``url_for_version()``, Spack knows to download OpenMPI ``2.1.1`` +from http://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.bz2 +but download OpenMPI ``1.10.7`` from http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.7.tar.bz2. + +You'll notice that OpenMPI's ``url_for_version()`` function makes use of a special ``Version`` function called ``up_to()``. When you call ``version.up_to(2)`` on a version like ``1.10.0``, it returns ``1.10``. ``version.up_to(1)`` would return ``1``. This can be very useful for packages that place all ``X.Y.*`` versions in -a single directory and then places all ``X.Y.Z`` versions in a subdirectory. +a single directory and then places all ``X.Y.Z`` versions in a sub-directory. There are a few ``Version`` properties you should be aware of. We generally prefer numeric versions to be separated by dots for uniformity, but not all @@ -493,9 +498,6 @@ of its versions, you can add an explicit URL for a particular version: version('8.2.1', '4136d7b4c04df68b686570afa26988ac', url='http://example.com/foo-8.2.1-special-version.tar.gz') -This is common for Python packages that download from PyPi. Since newer -download URLs often contain a unique hash for each version, there is no -way to guess the URL systematically. When you supply a custom URL for a version, Spack uses that URL *verbatim* and does not perform extrapolation. diff --git a/var/spack/repos/builtin/packages/hdf/package.py b/var/spack/repos/builtin/packages/hdf/package.py index 3944f91124b..6c0974994b6 100644 --- a/var/spack/repos/builtin/packages/hdf/package.py +++ b/var/spack/repos/builtin/packages/hdf/package.py @@ -25,15 +25,16 @@ from spack import * -class Hdf(Package): +class Hdf(AutotoolsPackage): """HDF4 (also known as HDF) is a library and multi-object file format for storing and managing data between machines.""" - homepage = "https://www.hdfgroup.org/products/hdf4/" - url = "https://www.hdfgroup.org/ftp/HDF/releases/HDF4.2.11/src/hdf-4.2.11.tar.gz" - list_url = "https://www.hdfgroup.org/ftp/HDF/releases/" - list_depth = 3 + homepage = "https://support.hdfgroup.org/products/hdf4/" + url = "https://support.hdfgroup.org/ftp/HDF/releases/HDF4.2.13/src/hdf-4.2.13.tar.gz" + list_url = "https://support.hdfgroup.org/ftp/HDF/releases" + list_depth = 2 + version('4.2.13', 'a6aa950b3fce5162b96496d8ea0b82bf') version('4.2.12', '79fd1454c899c05e34a3da0456ab0c1c') version('4.2.11', '063f9928f3a19cc21367b71c3b8bbf19') @@ -46,10 +47,11 @@ class Hdf(Package): depends_on('bison', type='build') depends_on('flex', type='build') - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec + config_args = [ 'CFLAGS=-fPIC', - '--prefix={0}'.format(prefix), '--with-jpeg={0}'.format(spec['jpeg'].prefix), '--with-zlib={0}'.format(spec['zlib'].prefix), '--disable-netcdf', # must be disabled to build NetCDF with HDF4 @@ -65,11 +67,4 @@ def install(self, spec, prefix): else: config_args.append('--without-szlib') - configure(*config_args) - - make() - - if self.run_tests: - make('check') - - make('install') + return config_args diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 782b7c32cf9..cf8f00d7974 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -32,19 +32,16 @@ class Hdf5(AutotoolsPackage): flexible and efficient I/O and for high volume and complex data. """ - homepage = "http://www.hdfgroup.org/HDF5/" - url = "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.13/src/hdf5-1.8.13.tar.gz" - list_url = "http://www.hdfgroup.org/ftp/HDF5/releases" + homepage = "https://support.hdfgroup.org/HDF5/" + url = "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.1/src/hdf5-1.10.1.tar.gz" + list_url = "https://support.hdfgroup.org/ftp/HDF5/releases" list_depth = 3 version('1.10.1', '43a2f9466702fb1db31df98ae6677f15') version('1.10.0-patch1', '9180ff0ef8dc2ef3f61bd37a7404f295') version('1.10.0', 'bdc935337ee8282579cd6bc4270ad199') - version('1.8.18', 'dd2148b740713ca0295442ec683d7b1c', - # The link for the latest version differs from the links for - # the previous releases. Do not forget to remove this once - # the version 1.8.18 is not the latest one for the 1.8.* branch. - url='http://hdfgroup.org/ftp/HDF5/current18/src/hdf5-1.8.18.tar.gz') + version('1.8.19', '7f568e2464d4ab0a74d16b23956d900b') + version('1.8.18', 'dd2148b740713ca0295442ec683d7b1c') version('1.8.17', '7d572f8f3b798a628b8245af0391a0ca') version('1.8.16', 'b8ed9a36ae142317f88b0c7ef4b9c618') version('1.8.15', '03cccb5b33dbe975fdcd8ae9dc021f24') @@ -77,6 +74,10 @@ class Hdf5(AutotoolsPackage): conflicts('+threadsafe', when='+cxx') conflicts('+threadsafe', when='+fortran') + def url_for_version(self, version): + url = "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-{0}/hdf5-{1}/src/hdf5-{1}.tar.gz" + return url.format(version.up_to(2), version) + @property def libs(self): """HDF5 can be queried for the following parameters: @@ -279,26 +280,3 @@ def check_install(self): print('-' * 80) raise RuntimeError("HDF5 install check failed") shutil.rmtree(checkdir) - - def url_for_version(self, version): - # If we have a specific URL for this version, return it. - version_urls = self.version_urls() - if version in version_urls: - return version_urls[version] - - base_url = "http://www.hdfgroup.org/ftp/HDF5/releases" - - if version == Version("1.2.2"): - return "{0}/hdf5-{1}.tar.gz".format(base_url, version) - elif version < Version("1.6.6"): - return "{0}/hdf5-{1}/hdf5-{2}.tar.gz".format( - base_url, version.up_to(2), version) - elif version < Version("1.7"): - return "{0}/hdf5-{1}/hdf5-{2}/src/hdf5-{2}.tar.gz".format( - base_url, version.up_to(2), version) - elif version < Version("1.10"): - return "{0}/hdf5-{1}/src/hdf5-{1}.tar.gz".format( - base_url, version) - else: - return "{0}/hdf5-{1}/hdf5-{2}/src/hdf5-{2}.tar.gz".format( - base_url, version.up_to(2), version) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index e685cfce88f..85c99889da8 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -198,8 +198,8 @@ class Openmpi(AutotoolsPackage): conflicts('fabrics=mxm', when='@:1.5.3') # MXM support was added in 1.5.4 def url_for_version(self, version): - return "http://www.open-mpi.org/software/ompi/v%s/downloads/openmpi-%s.tar.bz2" % ( - version.up_to(2), version) + url = "http://www.open-mpi.org/software/ompi/v{0}/downloads/openmpi-{1}.tar.bz2" + return url.format(version.up_to(2), version) @property def libs(self): diff --git a/var/spack/repos/builtin/packages/szip/package.py b/var/spack/repos/builtin/packages/szip/package.py index 176006e70f0..28cc005f0c8 100644 --- a/var/spack/repos/builtin/packages/szip/package.py +++ b/var/spack/repos/builtin/packages/szip/package.py @@ -33,13 +33,18 @@ class Szip(AutotoolsPackage): provided with HDF software products. """ - homepage = "https://www.hdfgroup.org/doc_resource/SZIP/" - url = "http://www.hdfgroup.org/ftp/lib-external/szip/2.1/src/szip-2.1.tar.gz" + homepage = "https://support.hdfgroup.org/doc_resource/SZIP/" + url = "https://support.hdfgroup.org/ftp/lib-external/szip/2.1.1/src/szip-2.1.1.tar.gz" + list_url = "https://support.hdfgroup.org/ftp/lib-external/szip" + list_depth = 2 - version('2.1', '902f831bcefb69c6b635374424acbead') + version('2.1.1', 'dd579cf0f26d44afd10a0ad7291fc282') + version('2.1', '902f831bcefb69c6b635374424acbead') def configure_args(self): - return ['--enable-production', - '--enable-shared', - '--enable-static', - '--enable-encoding'] + return [ + '--enable-production', + '--enable-shared', + '--enable-static', + '--enable-encoding', + ] From cabcfb032fac4bbe9548fbfdfa763cad7ed635ad Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 30 Jun 2017 12:48:43 +0100 Subject: [PATCH 1157/2394] update libdrm version (fixes #4645) (#4646) --- var/spack/repos/builtin/packages/libdrm/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/libdrm/package.py b/var/spack/repos/builtin/packages/libdrm/package.py index 00422b44170..b0715e2dbaa 100644 --- a/var/spack/repos/builtin/packages/libdrm/package.py +++ b/var/spack/repos/builtin/packages/libdrm/package.py @@ -27,13 +27,13 @@ class Libdrm(Package): - """A userspace library for accessing the DRM, direct - rendering manager, on Linux, BSD and other operating - systems that support the ioctl interface.""" + """A userspace library for accessing the DRM, direct rendering manager, + on Linux, BSD and other systems supporting the ioctl interface.""" homepage = "http://dri.freedesktop.org/libdrm/" url = "http://dri.freedesktop.org/libdrm/libdrm-2.4.59.tar.gz" + version('2.4.81', 'dc575dd661a082390e9f1366ca5734b0') version('2.4.75', '743c16109d91a2539dfc9cc56130d695') version('2.4.70', 'a8c275bce5f3d71a5ca25e8fb60df084') version('2.4.59', '105ac7af1afcd742d402ca7b4eb168b6') From 2e6a735b0043bebe8c6ff88f21c1bb2de0063135 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Fri, 30 Jun 2017 18:51:07 +0200 Subject: [PATCH 1158/2394] mvapich2: Fix mpifort wrapper (#4650) --- var/spack/repos/builtin/packages/mvapich2/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 7a3d8f1e02a..b20bf76e934 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -235,6 +235,7 @@ def filter_compilers(self): mpicxx = join_path(bin, 'mpicxx') mpif77 = join_path(bin, 'mpif77') mpif90 = join_path(bin, 'mpif90') + mpifort = join_path(bin, 'mpifort') # Substitute Spack compile wrappers for the real # underlying compiler @@ -243,8 +244,9 @@ def filter_compilers(self): filter_file(env['CXX'], self.compiler.cxx, mpicxx, **kwargs) filter_file(env['F77'], self.compiler.f77, mpif77, **kwargs) filter_file(env['FC'], self.compiler.fc, mpif90, **kwargs) + filter_file(env['FC'], self.compiler.fc, mpifort, **kwargs) # Remove this linking flag if present # (it turns RPATH into RUNPATH) - for wrapper in (mpicc, mpicxx, mpif77, mpif90): + for wrapper in (mpicc, mpicxx, mpif77, mpif90, mpifort): filter_file('-Wl,--enable-new-dtags', '', wrapper, **kwargs) From 4dc79f9efba8f0ca8a3fc091a4a573bc3f87b7d4 Mon Sep 17 00:00:00 2001 From: Adam Moody Date: Fri, 30 Jun 2017 09:53:47 -0700 Subject: [PATCH 1159/2394] mpifileutils: update to v0.7 (#4642) * mpifileutils: update to v0.7 * mpifileutils: disable --enable-experimental in v0.6 and earlier * mpifileutils: list newest version first, avoid experimental switch unless at v0.7 or later --- .../builtin/packages/mpifileutils/package.py | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/mpifileutils/package.py b/var/spack/repos/builtin/packages/mpifileutils/package.py index 03ec613e0bd..21b600f99b9 100644 --- a/var/spack/repos/builtin/packages/mpifileutils/package.py +++ b/var/spack/repos/builtin/packages/mpifileutils/package.py @@ -38,6 +38,7 @@ class Mpifileutils(AutotoolsPackage): homepage = "https://github.com/hpc/mpifileutils" url = "https://github.com/hpc/mpifileutils/releases/download/v0.6/mpifileutils-0.6.tar.gz" + version('0.7', 'c081f7f72c4521dddccdcf9e087c5a2b') version('0.6', '620bcc4966907481f1b1a965b28fc9bf') depends_on('mpi') @@ -52,10 +53,11 @@ class Mpifileutils(AutotoolsPackage): variant('lustre', default=False, description="Enable optimizations and features for Lustre") - # install experimental tools - # (coming with v0.7) - # variant('experimental', default=False, - # description="Install experimental tools") + variant('experimental', default=False, + description="Install experimental tools") + + # --enable-experimental fails with v0.6 and earlier + conflicts('+experimental', when='@:0.6') def configure_args(self): args = [] @@ -65,11 +67,11 @@ def configure_args(self): else: args.append('--disable-lustre') - # coming with v0.7 - # if '+experimental' in self.spec: - # args.append('--enable-experimental') - # else: - # args.append('--disable-experimental') + if self.spec.satisfies('@0.7:'): + if '+experimental' in self.spec: + args.append('--enable-experimental') + else: + args.append('--disable-experimental') return args From a9c83d64f06470f753a3969c1980f57a514d71d0 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 1 Jul 2017 16:16:49 +0200 Subject: [PATCH 1160/2394] qt: Update to 5.9.1 (#4661) 5.9.0 fails to build with disabled OpenGL. --- var/spack/repos/builtin/packages/qt/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 088ac5d763f..551f87b5d78 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -36,6 +36,7 @@ class Qt(Package): list_url = 'http://download.qt.io/archive/qt/' list_depth = 3 + version('5.9.1', '77b4af61c49a09833d4df824c806acaf') version('5.9.0', '9c8bc8b828c2b56721980368266df9d9') version('5.8.0', 'a9f2494f75f966e2f22358ec367d8f41') version('5.7.1', '031fb3fd0c3cc0f1082644492683f18d') From a3765d8a23a70aaf8f69983e90305e9e2d067ca5 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 1 Jul 2017 19:12:29 +0200 Subject: [PATCH 1161/2394] shared-mime-info: Depend on pkg-config (#4663) --- var/spack/repos/builtin/packages/shared-mime-info/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/shared-mime-info/package.py b/var/spack/repos/builtin/packages/shared-mime-info/package.py index b7d9deb5f7e..ef920c797b7 100644 --- a/var/spack/repos/builtin/packages/shared-mime-info/package.py +++ b/var/spack/repos/builtin/packages/shared-mime-info/package.py @@ -39,6 +39,7 @@ class SharedMimeInfo(AutotoolsPackage): depends_on('glib') depends_on('libxml2') depends_on('intltool', type='build') + depends_on('pkg-config@0.9.0:', type='build') def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.prepend_path("XDG_DATA_DIRS", From 51ee9a1a6b6869e496a72c0e1effab2927ae2365 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sun, 2 Jul 2017 15:02:27 +0200 Subject: [PATCH 1162/2394] Update go and go-bootstrap (#4664) * go-bootstrap: Update to 1.4-bootstrap-20170531 Clean up empty patch method. * go: Update to 1.8.3 --- var/spack/repos/builtin/packages/go-bootstrap/package.py | 8 +++----- var/spack/repos/builtin/packages/go/package.py | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/go-bootstrap/package.py b/var/spack/repos/builtin/packages/go-bootstrap/package.py index 7a353086161..74cdbf348de 100644 --- a/var/spack/repos/builtin/packages/go-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/go-bootstrap/package.py @@ -46,10 +46,12 @@ class GoBootstrap(Package): # See: https://golang.org/doc/install/source#go14 and # https://github.com/golang/go/issues/17545 and # https://github.com/golang/go/issues/16352 + version('1.4-bootstrap-20170531', 'd2cc61cb9f829b3510ee39c0c5568014', + url='https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz') version('1.4-bootstrap-20161024', '76e42c8152e8560ded880a6d1d1f53cb', url='https://storage.googleapis.com/golang/go1.4-bootstrap-20161024.tar.gz') - provides('golang@:1.4-bootstrap-20161024') + provides('golang@:1.4-bootstrap-20170531') depends_on('git', type=('build', 'link', 'run')) @@ -65,10 +67,6 @@ def patch(self): r'# \1\2\3', ) - @when('@1.5.0:') # noqa: F811 - def patch(self): - pass - def install(self, spec, prefix): env['CGO_ENABLED'] = '0' bash = which('bash') diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 9d6ea49dd80..ffbc123d896 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -56,6 +56,7 @@ class Go(Package): extendable = True + version('1.8.3', '64e9380e07bba907e26a00cf5fcbe77e') version('1.8.1', '409dd21e7347dd1ea9efe64a700073cc') version('1.8', '7743960c968760437b6e39093cfe6f67') version('1.7.5', '506de2d870409e9003e1440bcfeb3a65') From a88e93852dd6660a2c03c87e4b4b7d7852312aca Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sun, 2 Jul 2017 15:05:09 +0200 Subject: [PATCH 1163/2394] antlr: Use official sources (#4662) The tarball used until now is not available anymore. --- .../repos/builtin/packages/antlr/gcc.patch | 15 +++++++++++++ .../repos/builtin/packages/antlr/package.py | 21 ++++++------------- 2 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 var/spack/repos/builtin/packages/antlr/gcc.patch diff --git a/var/spack/repos/builtin/packages/antlr/gcc.patch b/var/spack/repos/builtin/packages/antlr/gcc.patch new file mode 100644 index 00000000000..40de6b7861f --- /dev/null +++ b/var/spack/repos/builtin/packages/antlr/gcc.patch @@ -0,0 +1,15 @@ +Description: Adds missing includes to fix FTBFS. + +Index: antlr-2.7.7/lib/cpp/antlr/CharScanner.hpp +=================================================================== +--- antlr-2.7.7.orig/lib/cpp/antlr/CharScanner.hpp 2006-11-01 22:37:17.000000000 +0100 ++++ antlr-2.7.7/lib/cpp/antlr/CharScanner.hpp 2009-01-15 20:47:53.000000000 +0100 +@@ -17,6 +17,8 @@ + #else + #include + #endif ++#include ++#include + + #if ( _MSC_VER == 1200 ) + // VC6 seems to need this diff --git a/var/spack/repos/builtin/packages/antlr/package.py b/var/spack/repos/builtin/packages/antlr/package.py index e6332d20b35..4de61e6b10f 100644 --- a/var/spack/repos/builtin/packages/antlr/package.py +++ b/var/spack/repos/builtin/packages/antlr/package.py @@ -32,22 +32,13 @@ class Antlr(AutotoolsPackage): frameworks. From a grammar, ANTLR generates a parser that can build and walk parse trees.""" - homepage = "http://www.antlr.org" - url = "https://github.com/antlr/antlr/tarball/v2.7.7" + homepage = "http://www.antlr2.org/" + url = "http://www.antlr2.org/download/antlr-2.7.7.tar.gz" - # Notes from http://nco.sourceforge.net/#bld - # The first steps to build (i.e., compile, for the most part) NCO from - # source code are to install the pre-requisites: ANTLR version 2.7.7 - # (like this one not version 3.x or 4.x!) (required for ncap2)... ANTLR - # binaries from major distributions are pre-built with the source patch - # necessary to allow NCO to link to ANTLR... The ANTLR source file - # CharScanner.hpp must include this line: #include or else - # ncap2 will not compile (this tarball is already patched). - version('2.7.7', '914865e853fe8e1e61a9f23d045cb4ab', - # Patched version as described above - url='http://dust.ess.uci.edu/tmp/antlr-2.7.7.tar.gz') - # Unpatched version - # url='http://dust.ess.uci.edu/nco/antlr-2.7.7.tar.gz') + version('2.7.7', '01cc9a2a454dd33dcd8c856ec89af090') + + # Fixes build with recent versions of GCC + patch('gcc.patch') variant('cxx', default=True, description='Enable ANTLR for C++') variant('java', default=False, description='Enable ANTLR for Java') From 77527ce1ae305a966ea0d202ac71454c13ce79fa Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Sun, 2 Jul 2017 09:05:47 -0400 Subject: [PATCH 1164/2394] Trilinos: add ForTrilinos resource (#4660) --- var/spack/repos/builtin/packages/trilinos/package.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 161b2ed52a4..3c9940792d2 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -147,12 +147,24 @@ class Trilinos(CMakePackage): description='Compile with explicit instantiation for complex') variant('dtk', default=False, description='Enable DataTransferKit') + variant('fortrilinos', default=False, + description='Enable ForTrilinos') + resource(name='dtk', git='https://github.com/ornl-cees/DataTransferKit', tag='master', placement='DataTransferKit', when='+dtk') + resource(name='fortrilinos', + git='https://github.com/trilinos/ForTrilinos', + tag='develop', + placement='packages/ForTrilinos', + when='+fortrilinos') + conflicts('+dtk', when='~tpetra') + conflicts('+fortrilinos', when='~fortran') + conflicts('+fortrilinos', when='@:99') + conflicts('+fortrilinos', when='@master') # ###################### Dependencies ########################## From 182554520f68a742f3c2fb15f7121e1faf583aaa Mon Sep 17 00:00:00 2001 From: Barry Smith Date: Sun, 2 Jul 2017 08:09:05 -0500 Subject: [PATCH 1165/2394] PETSc requires metis build with compatible numerical precision (#4654) Commit-type: bug-fix, portability-fix Funded-by: IDEAS Project: xSDK Time: .4 hours Reported-by: Stanislav Y Sergienko --- var/spack/repos/builtin/packages/petsc/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 1002211810d..d4ea674577d 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -100,8 +100,10 @@ class Petsc(Package): # Other dependencies depends_on('boost', when='@:3.5+boost') - depends_on('metis@5:~int64', when='+metis~int64') - depends_on('metis@5:+int64', when='+metis+int64') + depends_on('metis@5:~int64+real64', when='+metis~int64+double') + depends_on('metis@5:+int64', when='+metis+int64~double') + depends_on('metis@5:~int64+real64', when='+metis~int64+double') + depends_on('metis@5:+int64', when='+metis+int64~double') depends_on('hdf5+mpi', when='+hdf5+mpi') depends_on('parmetis', when='+metis+mpi') From f6e2320ef07c6b2a30c4d725e598cb70fafafde1 Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Sun, 2 Jul 2017 14:26:23 +0100 Subject: [PATCH 1166/2394] Apply patch to allow users to change path of lock file (#4649) See - https://github.com/Microsoft/CNTK/issues/62 --- .../builtin/packages/cntk/lock-file.patch | 20 +++++++++++++++++++ .../repos/builtin/packages/cntk/package.py | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cntk/lock-file.patch diff --git a/var/spack/repos/builtin/packages/cntk/lock-file.patch b/var/spack/repos/builtin/packages/cntk/lock-file.patch new file mode 100644 index 00000000000..0e0a7811e71 --- /dev/null +++ b/var/spack/repos/builtin/packages/cntk/lock-file.patch @@ -0,0 +1,20 @@ +diff --git a/Source/Common/CrossProcessMutex.h b/Source/Common/CrossProcessMutex.h +index 2f3ce70..f0fcd42 100644 +--- a/Source/Common/CrossProcessMutex.h ++++ b/Source/Common/CrossProcessMutex.h +@@ -127,9 +127,13 @@ class CrossProcessMutex + + public: + CrossProcessMutex(const std::string& name) +- : m_fd(-1), +- m_fileName("/var/lock/" + name) ++ : m_fd(-1) + { ++ const char * const envLockDir = getenv("CNTK_LOCK_DIR"); ++ if (envLockDir != NULL) ++ m_fileName = envLockDir + ('/' + name); ++ else ++ m_fileName = "/var/lock/" + name; + } + + // Acquires the mutex. If 'wait' is true and mutex is acquired by someone else then diff --git a/var/spack/repos/builtin/packages/cntk/package.py b/var/spack/repos/builtin/packages/cntk/package.py index d58165379c8..dfc515730b8 100644 --- a/var/spack/repos/builtin/packages/cntk/package.py +++ b/var/spack/repos/builtin/packages/cntk/package.py @@ -64,6 +64,8 @@ class Cntk(Package): patch('build.patch') # Patch to fix BLAS inconsistency between CNTK and KaldiReader patch('kaldireader-openblas.patch') + # Patch to change behaviour of lock file - https://github.com/Microsoft/CNTK/issues/62 + patch('lock-file.patch') def install(self, spec, prefix): args = [] From 245eee7a563931e839946cc2282c6b2af21fd1e1 Mon Sep 17 00:00:00 2001 From: Levi Baber Date: Sun, 2 Jul 2017 06:31:17 -0700 Subject: [PATCH 1167/2394] sabre (#4619) * sabre initial commit, works but test does not * removing test until I have time to fix it * sabre: fixing flake8 errors * sabre: changing to MakefilePackage --- .../repos/builtin/packages/sabre/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sabre/package.py diff --git a/var/spack/repos/builtin/packages/sabre/package.py b/var/spack/repos/builtin/packages/sabre/package.py new file mode 100644 index 00000000000..ecee1012f59 --- /dev/null +++ b/var/spack/repos/builtin/packages/sabre/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Sabre(MakefilePackage): + """Sabre is a tool that will demultiplex barcoded reads into separate + files. It will work on both single-end and paired-end data in fastq + format. It simply compares the provided barcodes with each read and + separates the read into its appropriate barcode file, after stripping + the barcode from the read (and also stripping the quality values of + the barcode bases). If a read does not have a recognized barcode, + then it is put into the unknown file. + """ + + homepage = "https://github.com/najoshi/sabre" + url = "https://github.com/najoshi/sabre" + + version('2013-09-27', git='https://github.com/najoshi/sabre.git', commit='039a55e500ba07b7e6432ea6ec2ddcfb3471d949') + + depends_on('zlib') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('sabre', prefix.bin) From 76b9563dc3f33356dc44217732ad2be3038f67fd Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Mon, 3 Jul 2017 23:54:50 +0100 Subject: [PATCH 1168/2394] new OpenFOAM June 2017 release: OpenFOAM-v1706 (#4652) - renamed develop version from 'plus' to 'develop' - patches now prefixed by corresponding OpenFOAM version number. This makes it easier to sort and see what old/junk exists. - remove MPI_BUFFER_SIZEk env variable (for all openfoam variants). The OpenFOAM shell setup addresses this and there is no reason to pollute the module environment at this stage. --- .../builtin/packages/foam-extend/package.py | 1 - ...openfoam-bin-1612.patch => 1612-bin.patch} | 0 ...foam-build-1612.patch => 1612-build.patch} | 0 ...openfoam-etc-1612.patch => 1612-etc.patch} | 0 ...lib-1612.patch => 1612-mgridgen-lib.patch} | 0 ...openfoam-mpi-1612.patch => 1612-mpi.patch} | 0 ...1612.patch => 1612-scotch-metis-lib.patch} | 0 ...enfoam-site-1612.patch => 1612-site.patch} | 0 ...n-lib-1612.patch => 1612-zoltan-lib.patch} | 0 ...am-site-plus.patch => openfoam-site.patch} | 0 .../builtin/packages/openfoam-com/package.py | 42 +++++++++++-------- .../{openfoam-etc-41.patch => 41-etc.patch} | 0 .../{openfoam-site-41.patch => 41-site.patch} | 0 .../builtin/packages/openfoam-org/package.py | 5 +-- 14 files changed, 26 insertions(+), 22 deletions(-) rename var/spack/repos/builtin/packages/openfoam-com/{openfoam-bin-1612.patch => 1612-bin.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-com/{openfoam-build-1612.patch => 1612-build.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-com/{openfoam-etc-1612.patch => 1612-etc.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-com/{mgridgen-lib-1612.patch => 1612-mgridgen-lib.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-com/{openfoam-mpi-1612.patch => 1612-mpi.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-com/{scotch-metis-lib-1612.patch => 1612-scotch-metis-lib.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-com/{openfoam-site-1612.patch => 1612-site.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-com/{zoltan-lib-1612.patch => 1612-zoltan-lib.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-com/{openfoam-site-plus.patch => openfoam-site.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-org/{openfoam-etc-41.patch => 41-etc.patch} (100%) rename var/spack/repos/builtin/packages/openfoam-org/{openfoam-site-41.patch => 41-site.patch} (100%) diff --git a/var/spack/repos/builtin/packages/foam-extend/package.py b/var/spack/repos/builtin/packages/foam-extend/package.py index a6776b182f2..9e4a6c4d0b4 100644 --- a/var/spack/repos/builtin/packages/foam-extend/package.py +++ b/var/spack/repos/builtin/packages/foam-extend/package.py @@ -143,7 +143,6 @@ def setup_environment(self, spack_env, run_env): run_env.set('WM_PROJECT_DIR', self.projectdir) for d in ['wmake', self.archbin]: # bin already added automatically run_env.prepend_path('PATH', join_path(self.projectdir, d)) - run_env.set('MPI_BUFFER_SIZE', "20000000") def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """Provide location of the OpenFOAM project. diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-bin-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-bin.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-com/openfoam-bin-1612.patch rename to var/spack/repos/builtin/packages/openfoam-com/1612-bin.patch diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-build-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-build.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-com/openfoam-build-1612.patch rename to var/spack/repos/builtin/packages/openfoam-com/1612-build.patch diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-etc-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-etc.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-com/openfoam-etc-1612.patch rename to var/spack/repos/builtin/packages/openfoam-com/1612-etc.patch diff --git a/var/spack/repos/builtin/packages/openfoam-com/mgridgen-lib-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-mgridgen-lib.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-com/mgridgen-lib-1612.patch rename to var/spack/repos/builtin/packages/openfoam-com/1612-mgridgen-lib.patch diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-mpi-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-mpi.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-com/openfoam-mpi-1612.patch rename to var/spack/repos/builtin/packages/openfoam-com/1612-mpi.patch diff --git a/var/spack/repos/builtin/packages/openfoam-com/scotch-metis-lib-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-scotch-metis-lib.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-com/scotch-metis-lib-1612.patch rename to var/spack/repos/builtin/packages/openfoam-com/1612-scotch-metis-lib.patch diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-site-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-site.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-com/openfoam-site-1612.patch rename to var/spack/repos/builtin/packages/openfoam-com/1612-site.patch diff --git a/var/spack/repos/builtin/packages/openfoam-com/zoltan-lib-1612.patch b/var/spack/repos/builtin/packages/openfoam-com/1612-zoltan-lib.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-com/zoltan-lib-1612.patch rename to var/spack/repos/builtin/packages/openfoam-com/1612-zoltan-lib.patch diff --git a/var/spack/repos/builtin/packages/openfoam-com/openfoam-site-plus.patch b/var/spack/repos/builtin/packages/openfoam-com/openfoam-site.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-com/openfoam-site-plus.patch rename to var/spack/repos/builtin/packages/openfoam-com/openfoam-site.patch diff --git a/var/spack/repos/builtin/packages/openfoam-com/package.py b/var/spack/repos/builtin/packages/openfoam-com/package.py index 9e930535a01..0e2c0275d38 100644 --- a/var/spack/repos/builtin/packages/openfoam-com/package.py +++ b/var/spack/repos/builtin/packages/openfoam-com/package.py @@ -54,6 +54,9 @@ # - Combining +zoltan with +int64 has not been tested, but probably won't work. # - Combining +mgridgen with +int64 or +float32 probably won't work. # +# The spack 'develop' version of openfoam-com retains the upstream +# WM_PROJECT_VERSION=plus naming internally. +# ############################################################################## from spack import * from spack.environment import * @@ -258,12 +261,14 @@ class OpenfoamCom(Package): """ homepage = "http://www.openfoam.com/" - baseurl = "https://sourceforge.net/projects/openfoamplus/files" + baseurl = "https://sourceforge.net/projects/openfoamplus/files/" + gitrepo = "https://develop.openfoam.com/Development/OpenFOAM-plus.git" + version('1706', '630d30770f7b54d6809efbf94b7d7c8f', + url=baseurl + 'v1706/OpenFOAM-v1706.tgz') version('1612', 'ca02c491369150ab127cbb88ec60fbdf', - url=baseurl + '/v1612+/OpenFOAM-v1612+.tgz') - version('plus', branch='develop', # Note: needs user credentials - git='https://develop.openfoam.com/Development/OpenFOAM-plus.git') + url=baseurl + 'v1612+/OpenFOAM-v1612+.tgz') + version('develop', branch='develop', git=gitrepo) # Needs credentials variant('int64', default=False, description='Compile with 64-bit label') @@ -309,27 +314,29 @@ class OpenfoamCom(Package): # Workaround: use preferred variants "+plugins +qt" in # ~/.spack/packages.yaml + # 1706 ok with newer paraview but avoid pv-5.2, pv-5.3 readers + depends_on('paraview@5.4:', when='@1706:+paraview') # 1612 plugins need older paraview - # The native reader in paraview 5.2 is broken, so start after that depends_on('paraview@:5.0.1', when='@1612+paraview') - depends_on('paraview@5.3:', when='@1706:+paraview') - depends_on('paraview@5.3:', when='@plus+paraview') # General patches common = ['spack-Allwmake', 'README-spack'] assets = [] # Version-specific patches - patch('openfoam-bin-1612.patch', when='@1612') - patch('openfoam-etc-1612.patch', when='@1612') - patch('openfoam-site-1612.patch', when='@1612') - patch('openfoam-mpi-1612.patch', when='@1612') - patch('openfoam-build-1612.patch', when='@1612') - patch('mgridgen-lib-1612.patch', when='@1612') - patch('scotch-metis-lib-1612.patch', when='@1612') - patch('zoltan-lib-1612.patch', when='@1612') + patch('1612-bin.patch', when='@1612') + patch('1612-build.patch', when='@1612') + patch('1612-etc.patch', when='@1612') + patch('1612-site.patch', when='@1612') + patch('1612-mpi.patch', when='@1612') + patch('1612-mgridgen-lib.patch', when='@1612') + patch('1612-scotch-metis-lib.patch', when='@1612') + patch('1612-zoltan-lib.patch', when='@1612') - patch('openfoam-site-plus.patch', when='@plus') + # This patch is reasonably version-invariant + # 1) default site directly under WM_PROJECT_DIR + # 2) no FOAM_EXT_LIBBIN required + patch('openfoam-site.patch', when='@1706:') # Some user config settings # default: 'compile-option': 'RpathOpt', @@ -349,7 +356,7 @@ class OpenfoamCom(Package): etc_config = {} phases = ['configure', 'build', 'install'] - build_script = './spack-Allwmake' # <- Added by patch() method. + build_script = './spack-Allwmake' # From patch() method. # # - End of definitions / setup - @@ -360,7 +367,6 @@ def setup_environment(self, spack_env, run_env): run_env.set('WM_PROJECT_DIR', self.projectdir) for d in ['wmake', self.archbin]: # bin already added automatically run_env.prepend_path('PATH', join_path(self.projectdir, d)) - run_env.set('MPI_BUFFER_SIZE', "20000000") def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """Provide location of the OpenFOAM project. diff --git a/var/spack/repos/builtin/packages/openfoam-org/openfoam-etc-41.patch b/var/spack/repos/builtin/packages/openfoam-org/41-etc.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-org/openfoam-etc-41.patch rename to var/spack/repos/builtin/packages/openfoam-org/41-etc.patch diff --git a/var/spack/repos/builtin/packages/openfoam-org/openfoam-site-41.patch b/var/spack/repos/builtin/packages/openfoam-org/41-site.patch similarity index 100% rename from var/spack/repos/builtin/packages/openfoam-org/openfoam-site-41.patch rename to var/spack/repos/builtin/packages/openfoam-org/41-site.patch diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py index a31cc2e2107..bc0658597ab 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/package.py +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -103,8 +103,8 @@ class OpenfoamOrg(Package): assets = ['bin/foamEtcFile'] # Version-specific patches - patch('openfoam-etc-41.patch', when='@4.1') - patch('openfoam-site-41.patch', when='@4.1') + patch('41-etc.patch', when='@4.1') + patch('41-site.patch', when='@4.1') # Some user config settings config = { @@ -134,7 +134,6 @@ def setup_environment(self, spack_env, run_env): run_env.set('WM_PROJECT_DIR', self.projectdir) for d in ['wmake', self.archbin]: # bin already added automatically run_env.prepend_path('PATH', join_path(self.projectdir, d)) - run_env.set('MPI_BUFFER_SIZE', "20000000") def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """Provide location of the OpenFOAM project. From f49f7b5bc54614c3d2fd49f5418f6c619424cce5 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 4 Jul 2017 00:00:59 +0100 Subject: [PATCH 1169/2394] add openfoam community packages for adiosWrite (#3726) --- .../packages/of-adios-write/package.py | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 var/spack/repos/builtin/packages/of-adios-write/package.py diff --git a/var/spack/repos/builtin/packages/of-adios-write/package.py b/var/spack/repos/builtin/packages/of-adios-write/package.py new file mode 100644 index 00000000000..cd25fbe654b --- /dev/null +++ b/var/spack/repos/builtin/packages/of-adios-write/package.py @@ -0,0 +1,136 @@ +############################################################################## +# Copyright (c) 2017 Mark Olesen, OpenCFD Ltd. +# +# This file was authored by Mark Olesen +# and is released as part of spack under the LGPL license. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for the LLNL notice and LGPL. +# +# License +# ------- +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Legal Notice +# ------------ +# OPENFOAM is a trademark owned by OpenCFD Ltd +# (producer and distributor of the OpenFOAM software via www.openfoam.com). +# The trademark information must remain visible and unadulterated in this +# file and via the "spack info" and comply with the term set by +# http://openfoam.com/legal/trademark-policy.php +# +# This file is not part of OpenFOAM, nor does it constitute a component of an +# OpenFOAM distribution. +# +############################################################################## +from spack import * +from spack.environment import * +import llnl.util.tty as tty + +import os +from spack.pkg.builtin.openfoam_com import * + + +class OfAdiosWrite(Package): + """adios-write supplies additional libraries and function objects + for reading/writing OpenFOAM data with ADIOS. + This offering is part of the community repository supported by OpenCFD Ltd, + producer and distributor of the OpenFOAM software via www.openfoam.com, + and owner of the OPENFOAM trademark. + OpenCFD Ltd has been developing and releasing OpenFOAM since its debut + in 2004. + """ + + # Currently only via git, but with some branches corresponding to main + # OpenFOAM releases. + homepage = "https://develop.openfoam.com/Community/feature-adiosWrite/" + gitrepo = "https://develop.openfoam.com/Community/feature-adiosWrite.git" + + version('develop', branch='develop', git=gitrepo) + version('1706', branch='v1706', git=gitrepo) + version('1612', branch='v1612', git=gitrepo) + + variant('source', default=True, description='Install library source') + + depends_on('openfoam-com@develop+source', when='@develop') + depends_on('openfoam-com@1706+source', when='@1706') + depends_on('openfoam-com@1612+source', when='@1612') + depends_on('adios') + + # General patches + common = ['change-userdir.sh', 'spack-derived-Allwmake'] + assets = [] + + build_script = './spack-derived-Allwmake' + build_userdir = 'spack-userdir' # Build user APPBIN, LIBBIN into here + + phases = ['configure', 'build', 'install'] + + # + # - End of definitions / setup - + # + + def patch(self): + """Copy additional files or other patching.""" + add_extra_files(self, self.common, self.assets) + # Emit openfoam version immediately, if we resolved the wrong version + # it takes a very long time to rebuild! + tty.info('Build for ' + self.spec['openfoam'].format('$_$@$%@+$+')) + + def configure(self, spec, prefix): + """Generate spack-config.sh file.""" + # Local tweaks + config = join_path(self.stage.source_path, 'spack-config.sh') + with open(config, 'w') as out: + out.write( + """# Local tweaks for building +# Location of adios from spack +export ADIOS_ARCH_PATH={adios_dir} + +# Local build (for user appbin, libbin) +. ./change-userdir.sh $PWD/{user_dir} +# +""" + .format( + adios_dir=spec['adios'].prefix, + user_dir=self.build_userdir)) + + def build(self, spec, prefix): + """Build with Allwmake script, wrapped to source environment first.""" + args = [] + if self.parallel: # Parallel build? - pass via environment + os.environ['WM_NCOMPPROCS'] = str(make_jobs) + builder = Executable(self.build_script) + builder(*args) + + def install(self, spec, prefix): + """Install under the prefix directory""" + + for f in ['README.md', 'Issues.txt']: + if os.path.isfile(f): + install(f, join_path(self.prefix, f)) + + dirs = ['doc', 'etc', 'tutorials'] + if '+source' in spec: + dirs.append('src') + + for d in dirs: + install_tree(d, join_path(self.prefix, d)) + + # Place directly under 'lib' (no bin) + for d in ['lib']: + install_tree( + join_path(self.build_userdir, d), + join_path(self.prefix, d)) From 81d696cc66dfaef3a9f8e001cb892dffbfa906bf Mon Sep 17 00:00:00 2001 From: Kshitij Mehta Date: Mon, 3 Jul 2017 21:10:06 -0400 Subject: [PATCH 1170/2394] mpix-launch-swift: MPIX_Launch library tailored to work using swift-t (#4656) --- .../packages/mpix-launch-swift/package.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mpix-launch-swift/package.py diff --git a/var/spack/repos/builtin/packages/mpix-launch-swift/package.py b/var/spack/repos/builtin/packages/mpix-launch-swift/package.py new file mode 100644 index 00000000000..72e93b79921 --- /dev/null +++ b/var/spack/repos/builtin/packages/mpix-launch-swift/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree + + +class MpixLaunchSwift(Package): + """Library that allows a child MPI application to be launched + inside a subset of processes in a parent MPI application. + """ + + homepage = "https://bitbucket.org/kshitijvmehta/mpix_launch_swift" + url = "https://kshitijvmehta@bitbucket.org/kshitijvmehta/mpix_launch_swift.git" + + version('develop', git='https://kshitijvmehta@bitbucket.org/kshitijvmehta/mpix_launch_swift.git', + branch='envs') + + depends_on('stc') + depends_on('tcl') + depends_on('mpi') + depends_on('swig', type='build') + + def install(self, spec, prefix): + make() + copy_tree('.', prefix) From 326e2f7f667f81c296de95a39bf72e1cadbe997a Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 2 Jul 2017 17:47:36 -0700 Subject: [PATCH 1171/2394] Ported lock test to pytest. --- lib/spack/spack/test/lock.py | 1033 +++++++++++++++++++--------------- 1 file changed, 572 insertions(+), 461 deletions(-) diff --git a/lib/spack/spack/test/lock.py b/lib/spack/spack/test/lock.py index 5a4c3073f52..7cf45710164 100644 --- a/lib/spack/spack/test/lock.py +++ b/lib/spack/spack/test/lock.py @@ -27,561 +27,672 @@ """ import os import shutil +import functools import tempfile -import unittest +import traceback from multiprocessing import Process -from llnl.util.filesystem import join_path, touch +import pytest + +from llnl.util.filesystem import join_path, touch, mkdirp from llnl.util.lock import * from spack.util.multiproc import Barrier + # This is the longest a failed test will take, as the barriers will # time out and raise an exception. barrier_timeout = 5 -class LockTest(unittest.TestCase): +@pytest.fixture() +def lock_path(): + tempdir = tempfile.mkdtemp() + lock_file = join_path(tempdir, 'lockfile') + yield lock_file + shutil.rmtree(tempdir) - def setUp(self): - self.tempdir = tempfile.mkdtemp() - self.lock_path = join_path(self.tempdir, 'lockfile') - def tearDown(self): - shutil.rmtree(self.tempdir, ignore_errors=True) +def multiproc_test(*functions): + """Order some processes using simple barrier synchronization.""" + b = Barrier(len(functions), timeout=barrier_timeout) + procs = [Process(target=f, args=(b,)) for f in functions] - def multiproc_test(self, *functions): - """Order some processes using simple barrier synchronization.""" - b = Barrier(len(functions), timeout=barrier_timeout) - procs = [Process(target=f, args=(b,)) for f in functions] + for p in procs: + p.start() - for p in procs: - p.start() + for p in procs: + p.join() + assert p.exitcode == 0 - for p in procs: - p.join() - self.assertEqual(p.exitcode, 0) - # - # Process snippets below can be composed into tests. - # - def acquire_write(self, start=0, length=0): - def fn(barrier): - lock = Lock(self.lock_path, start, length) - lock.acquire_write() # grab exclusive lock - barrier.wait() - barrier.wait() # hold the lock until timeout in other procs. - return fn +# +# Process snippets below can be composed into tests. +# +def acquire_write(lock_path, start=0, length=0): + def fn(barrier): + lock = Lock(lock_path, start, length) + lock.acquire_write() # grab exclusive lock + barrier.wait() + barrier.wait() # hold the lock until timeout in other procs. + return fn - def acquire_read(self, start=0, length=0): - def fn(barrier): - lock = Lock(self.lock_path, start, length) - lock.acquire_read() # grab shared lock - barrier.wait() - barrier.wait() # hold the lock until timeout in other procs. - return fn - def timeout_write(self, start=0, length=0): - def fn(barrier): - lock = Lock(self.lock_path, start, length) - barrier.wait() # wait for lock acquire in first process - self.assertRaises(LockError, lock.acquire_write, 0.1) - barrier.wait() - return fn +def acquire_read(lock_path, start=0, length=0): + def fn(barrier): + lock = Lock(lock_path, start, length) + lock.acquire_read() # grab shared lock + barrier.wait() + barrier.wait() # hold the lock until timeout in other procs. + return fn - def timeout_read(self, start=0, length=0): - def fn(barrier): - lock = Lock(self.lock_path, start, length) - barrier.wait() # wait for lock acquire in first process - self.assertRaises(LockError, lock.acquire_read, 0.1) - barrier.wait() - return fn - # - # Test that exclusive locks on other processes time out when an - # exclusive lock is held. - # - def test_write_lock_timeout_on_write(self): - self.multiproc_test(self.acquire_write(), self.timeout_write()) +def timeout_write(lock_path, start=0, length=0): + def fn(barrier): + lock = Lock(lock_path, start, length) + barrier.wait() # wait for lock acquire in first process + with pytest.raises(LockError): + lock.acquire_write(0.1) + barrier.wait() + return fn - def test_write_lock_timeout_on_write_2(self): - self.multiproc_test( - self.acquire_write(), self.timeout_write(), self.timeout_write()) - def test_write_lock_timeout_on_write_3(self): - self.multiproc_test( - self.acquire_write(), self.timeout_write(), self.timeout_write(), - self.timeout_write()) +def timeout_read(lock_path, start=0, length=0): + def fn(barrier): + lock = Lock(lock_path, start, length) + barrier.wait() # wait for lock acquire in first process + with pytest.raises(LockError): + lock.acquire_read(0.1) + barrier.wait() + return fn - def test_write_lock_timeout_on_write_ranges(self): - self.multiproc_test( - self.acquire_write(0, 1), self.timeout_write(0, 1)) - def test_write_lock_timeout_on_write_ranges_2(self): - self.multiproc_test( - self.acquire_write(0, 64), self.acquire_write(65, 1), - self.timeout_write(0, 1), self.timeout_write(63, 1)) +# +# Test that exclusive locks on other processes time out when an +# exclusive lock is held. +# +def test_write_lock_timeout_on_write(lock_path): + multiproc_test(acquire_write(lock_path), timeout_write(lock_path)) - def test_write_lock_timeout_on_write_ranges_3(self): - self.multiproc_test( - self.acquire_write(0, 1), self.acquire_write(1, 1), - self.timeout_write(), self.timeout_write(), self.timeout_write()) - def test_write_lock_timeout_on_write_ranges_4(self): - self.multiproc_test( - self.acquire_write(0, 1), self.acquire_write(1, 1), - self.acquire_write(2, 456), self.acquire_write(500, 64), - self.timeout_write(), self.timeout_write(), self.timeout_write()) +def test_write_lock_timeout_on_write_2(lock_path): + multiproc_test( + acquire_write(lock_path), + timeout_write(lock_path), + timeout_write(lock_path)) - # - # Test that shared locks on other processes time out when an - # exclusive lock is held. - # - def test_read_lock_timeout_on_write(self): - self.multiproc_test(self.acquire_write(), self.timeout_read()) - def test_read_lock_timeout_on_write_2(self): - self.multiproc_test( - self.acquire_write(), self.timeout_read(), self.timeout_read()) +def test_write_lock_timeout_on_write_3(lock_path): + multiproc_test( + acquire_write(lock_path), + timeout_write(lock_path), + timeout_write(lock_path), + timeout_write(lock_path)) - def test_read_lock_timeout_on_write_3(self): - self.multiproc_test( - self.acquire_write(), self.timeout_read(), self.timeout_read(), - self.timeout_read()) - def test_read_lock_timeout_on_write_ranges(self): - """small write lock, read whole file.""" - self.multiproc_test(self.acquire_write(0, 1), self.timeout_read()) +def test_write_lock_timeout_on_write_ranges(lock_path): + multiproc_test( + acquire_write(lock_path, 0, 1), + timeout_write(lock_path, 0, 1)) - def test_read_lock_timeout_on_write_ranges_2(self): - """small write lock, small read lock""" - self.multiproc_test(self.acquire_write(0, 1), self.timeout_read(0, 1)) - def test_read_lock_timeout_on_write_ranges_3(self): - """two write locks, overlapping read locks""" - self.multiproc_test( - self.acquire_write(0, 1), self.acquire_write(64, 128), - self.timeout_read(0, 1), self.timeout_read(128, 256)) +def test_write_lock_timeout_on_write_ranges_2(lock_path): + multiproc_test( + acquire_write(lock_path, 0, 64), + acquire_write(lock_path, 65, 1), + timeout_write(lock_path, 0, 1), + timeout_write(lock_path, 63, 1)) - # - # Test that exclusive locks time out when shared locks are held. - # - def test_write_lock_timeout_on_read(self): - self.multiproc_test(self.acquire_read(), self.timeout_write()) - def test_write_lock_timeout_on_read_2(self): - self.multiproc_test( - self.acquire_read(), self.timeout_write(), self.timeout_write()) +def test_write_lock_timeout_on_write_ranges_3(lock_path): + multiproc_test( + acquire_write(lock_path, 0, 1), + acquire_write(lock_path, 1, 1), + timeout_write(lock_path), + timeout_write(lock_path), + timeout_write(lock_path)) - def test_write_lock_timeout_on_read_3(self): - self.multiproc_test( - self.acquire_read(), self.timeout_write(), self.timeout_write(), - self.timeout_write()) - def test_write_lock_timeout_on_read_ranges(self): - self.multiproc_test(self.acquire_read(0, 1), self.timeout_write()) +def test_write_lock_timeout_on_write_ranges_4(lock_path): + multiproc_test( + acquire_write(lock_path, 0, 1), + acquire_write(lock_path, 1, 1), + acquire_write(lock_path, 2, 456), + acquire_write(lock_path, 500, 64), + timeout_write(lock_path), + timeout_write(lock_path), + timeout_write(lock_path)) - def test_write_lock_timeout_on_read_ranges_2(self): - self.multiproc_test(self.acquire_read(0, 1), self.timeout_write(0, 1)) - def test_write_lock_timeout_on_read_ranges_3(self): - self.multiproc_test( - self.acquire_read(0, 1), self.acquire_read(10, 1), - self.timeout_write(0, 1), self.timeout_write(10, 1)) +# +# Test that shared locks on other processes time out when an +# exclusive lock is held. +# +def test_read_lock_timeout_on_write(lock_path): + multiproc_test( + acquire_write(lock_path), + timeout_read(lock_path)) - def test_write_lock_timeout_on_read_ranges_4(self): - self.multiproc_test( - self.acquire_read(0, 64), - self.timeout_write(10, 1), self.timeout_write(32, 1)) - def test_write_lock_timeout_on_read_ranges_5(self): - self.multiproc_test( - self.acquire_read(64, 128), - self.timeout_write(65, 1), self.timeout_write(127, 1), - self.timeout_write(90, 10)) +def test_read_lock_timeout_on_write_2(lock_path): + multiproc_test( + acquire_write(lock_path), + timeout_read(lock_path), + timeout_read(lock_path)) - # - # Test that exclusive locks time while lots of shared locks are held. - # - def test_write_lock_timeout_with_multiple_readers_2_1(self): - self.multiproc_test( - self.acquire_read(), self.acquire_read(), self.timeout_write()) - def test_write_lock_timeout_with_multiple_readers_2_2(self): - self.multiproc_test( - self.acquire_read(), self.acquire_read(), self.timeout_write(), - self.timeout_write()) +def test_read_lock_timeout_on_write_3(lock_path): + multiproc_test( + acquire_write(lock_path), + timeout_read(lock_path), + timeout_read(lock_path), + timeout_read(lock_path)) - def test_write_lock_timeout_with_multiple_readers_3_1(self): - self.multiproc_test( - self.acquire_read(), self.acquire_read(), self.acquire_read(), - self.timeout_write()) - def test_write_lock_timeout_with_multiple_readers_3_2(self): - self.multiproc_test( - self.acquire_read(), self.acquire_read(), self.acquire_read(), - self.timeout_write(), self.timeout_write()) +def test_read_lock_timeout_on_write_ranges(lock_path): + """small write lock, read whole file.""" + multiproc_test( + acquire_write(lock_path, 0, 1), + timeout_read(lock_path)) - def test_write_lock_timeout_with_multiple_readers_2_1_ranges(self): - self.multiproc_test( - self.acquire_read(0, 10), self.acquire_read(5, 10), - self.timeout_write(5, 5)) - def test_write_lock_timeout_with_multiple_readers_2_3_ranges(self): - self.multiproc_test( - self.acquire_read(0, 10), self.acquire_read(5, 15), - self.timeout_write(0, 1), self.timeout_write(11, 3), - self.timeout_write(7, 1)) +def test_read_lock_timeout_on_write_ranges_2(lock_path): + """small write lock, small read lock""" + multiproc_test( + acquire_write(lock_path, 0, 1), + timeout_read(lock_path, 0, 1)) - def test_write_lock_timeout_with_multiple_readers_3_1_ranges(self): - self.multiproc_test( - self.acquire_read(0, 5), self.acquire_read(5, 5), - self.acquire_read(10, 5), - self.timeout_write(0, 15)) - def test_write_lock_timeout_with_multiple_readers_3_2_ranges(self): - self.multiproc_test( - self.acquire_read(0, 5), self.acquire_read(5, 5), - self.acquire_read(10, 5), - self.timeout_write(3, 10), self.timeout_write(5, 1)) +def test_read_lock_timeout_on_write_ranges_3(lock_path): + """two write locks, overlapping read locks""" + multiproc_test( + acquire_write(lock_path, 0, 1), + acquire_write(lock_path, 64, 128), + timeout_read(lock_path, 0, 1), + timeout_read(lock_path, 128, 256)) - # - # Test that read can be upgraded to write. - # - def test_upgrade_read_to_write(self): - # ensure lock file exists the first time, so we open it read-only - # to begin wtih. - touch(self.lock_path) - lock = Lock(self.lock_path) - self.assertTrue(lock._reads == 0) - self.assertTrue(lock._writes == 0) +# +# Test that exclusive locks time out when shared locks are held. +# +def test_write_lock_timeout_on_read(lock_path): + multiproc_test( + acquire_read(lock_path), + timeout_write(lock_path)) - lock.acquire_read() - self.assertTrue(lock._reads == 1) - self.assertTrue(lock._writes == 0) - self.assertTrue(lock._file.mode == 'r+') + +def test_write_lock_timeout_on_read_2(lock_path): + multiproc_test( + acquire_read(lock_path), + timeout_write(lock_path), + timeout_write(lock_path)) + + +def test_write_lock_timeout_on_read_3(lock_path): + multiproc_test( + acquire_read(lock_path), + timeout_write(lock_path), + timeout_write(lock_path), + timeout_write(lock_path)) + + +def test_write_lock_timeout_on_read_ranges(lock_path): + multiproc_test( + acquire_read(lock_path, 0, 1), + timeout_write(lock_path)) + + +def test_write_lock_timeout_on_read_ranges_2(lock_path): + multiproc_test( + acquire_read(lock_path, 0, 1), + timeout_write(lock_path, 0, 1)) + + +def test_write_lock_timeout_on_read_ranges_3(lock_path): + multiproc_test( + acquire_read(lock_path, 0, 1), + acquire_read(lock_path, 10, 1), + timeout_write(lock_path, 0, 1), + timeout_write(lock_path, 10, 1)) + + +def test_write_lock_timeout_on_read_ranges_4(lock_path): + multiproc_test( + acquire_read(lock_path, 0, 64), + timeout_write(lock_path, 10, 1), timeout_write(lock_path, 32, 1)) + + +def test_write_lock_timeout_on_read_ranges_5(lock_path): + multiproc_test( + acquire_read(lock_path, 64, 128), + timeout_write(lock_path, 65, 1), + timeout_write(lock_path, 127, 1), + timeout_write(lock_path, 90, 10)) + +# +# Test that exclusive locks time while lots of shared locks are held. +# +def test_write_lock_timeout_with_multiple_readers_2_1(lock_path): + multiproc_test( + acquire_read(lock_path), + acquire_read(lock_path), + timeout_write(lock_path)) + + +def test_write_lock_timeout_with_multiple_readers_2_2(lock_path): + multiproc_test( + acquire_read(lock_path), + acquire_read(lock_path), + timeout_write(lock_path), + timeout_write(lock_path)) + + +def test_write_lock_timeout_with_multiple_readers_3_1(lock_path): + multiproc_test( + acquire_read(lock_path), + acquire_read(lock_path), + acquire_read(lock_path), + timeout_write(lock_path)) + + +def test_write_lock_timeout_with_multiple_readers_3_2(lock_path): + multiproc_test( + acquire_read(lock_path), + acquire_read(lock_path), + acquire_read(lock_path), + timeout_write(lock_path), + timeout_write(lock_path)) + + +def test_write_lock_timeout_with_multiple_readers_2_1_ranges(lock_path): + multiproc_test( + acquire_read(lock_path, 0, 10), + acquire_read(lock_path, 0.5, 10), + timeout_write(lock_path, 5, 5)) + + +def test_write_lock_timeout_with_multiple_readers_2_3_ranges(lock_path): + multiproc_test( + acquire_read(lock_path, 0, 10), + acquire_read(lock_path, 5, 15), + timeout_write(lock_path, 0, 1), + timeout_write(lock_path, 11, 3), + timeout_write(lock_path, 7, 1)) + + +def test_write_lock_timeout_with_multiple_readers_3_1_ranges(lock_path): + multiproc_test( + acquire_read(lock_path, 0, 5), + acquire_read(lock_path, 5, 5), + acquire_read(lock_path, 10, 5), + timeout_write(lock_path, 0, 15)) + + +def test_write_lock_timeout_with_multiple_readers_3_2_ranges(lock_path): + multiproc_test( + acquire_read(lock_path, 0, 5), + acquire_read(lock_path, 5, 5), + acquire_read(lock_path, 10, 5), + timeout_write(lock_path, 3, 10), + timeout_write(lock_path, 5, 1)) + + +# +# Test that read can be upgraded to write. +# +def test_upgrade_read_to_write(lock_path): + # ensure lock file exists the first time, so we open it read-only + # to begin wtih. + touch(lock_path) + + lock = Lock(lock_path) + assert lock._reads == 0 + assert lock._writes == 0 + + lock.acquire_read() + assert lock._reads == 1 + assert lock._writes == 0 + assert lock._file.mode == 'r+' + + lock.acquire_write() + assert lock._reads == 1 + assert lock._writes == 1 + assert lock._file.mode == 'r+' + + lock.release_write() + assert lock._reads == 1 + assert lock._writes == 0 + assert lock._file.mode == 'r+' + + lock.release_read() + assert lock._reads == 0 + assert lock._writes == 0 + assert lock._file is None + +# +# Test that read-only file can be read-locked but not write-locked. +# +def test_upgrade_read_to_write_fails_with_readonly_file(lock_path): + # ensure lock file exists the first time, so we open it read-only + # to begin wtih. + touch(lock_path) + os.chmod(lock_path, 0o444) + + lock = Lock(lock_path) + assert lock._reads == 0 + assert lock._writes == 0 + + lock.acquire_read() + assert lock._reads == 1 + assert lock._writes == 0 + assert lock._file.mode == 'r' + + with pytest.raises(LockError): + lock.acquire_write() + +# +# Longer test case that ensures locks are reusable. Ordering is +# enforced by barriers throughout -- steps are shown with numbers. +# +def test_complex_acquire_and_release_chain(lock_path): + def p1(barrier): + lock = Lock(lock_path) lock.acquire_write() - self.assertTrue(lock._reads == 1) - self.assertTrue(lock._writes == 1) - self.assertTrue(lock._file.mode == 'r+') - - lock.release_write() - self.assertTrue(lock._reads == 1) - self.assertTrue(lock._writes == 0) - self.assertTrue(lock._file.mode == 'r+') - + barrier.wait() # ---------------------------------------- 1 + # others test timeout + barrier.wait() # ---------------------------------------- 2 + lock.release_write() # release and others acquire read + barrier.wait() # ---------------------------------------- 3 + with pytest.raises(LockError): + lock.acquire_write(0.1) + lock.acquire_read() + barrier.wait() # ---------------------------------------- 4 lock.release_read() - self.assertTrue(lock._reads == 0) - self.assertTrue(lock._writes == 0) - self.assertTrue(lock._file is None) + barrier.wait() # ---------------------------------------- 5 - # - # Test that read-only file can be read-locked but not write-locked. - # - def test_upgrade_read_to_write_fails_with_readonly_file(self): - # ensure lock file exists the first time, so we open it read-only - # to begin wtih. - touch(self.lock_path) - os.chmod(self.lock_path, 0o444) + # p2 upgrades read to write + barrier.wait() # ---------------------------------------- 6 + with pytest.raises(LockError): + lock.acquire_write(0.1) + with pytest.raises(LockError): + lock.acquire_read(0.1) + barrier.wait() # ---------------------------------------- 7 + # p2 releases write and read + barrier.wait() # ---------------------------------------- 8 - lock = Lock(self.lock_path) - self.assertTrue(lock._reads == 0) - self.assertTrue(lock._writes == 0) + # p3 acquires read + barrier.wait() # ---------------------------------------- 9 + # p3 upgrades read to write + barrier.wait() # ---------------------------------------- 10 + with pytest.raises(LockError): + lock.acquire_write(0.1) + with pytest.raises(LockError): + lock.acquire_read(0.1) + barrier.wait() # ---------------------------------------- 11 + # p3 releases locks + barrier.wait() # ---------------------------------------- 12 + lock.acquire_read() + barrier.wait() # ---------------------------------------- 13 + lock.release_read() + + def p2(barrier): + lock = Lock(lock_path) + + # p1 acquires write + barrier.wait() # ---------------------------------------- 1 + with pytest.raises(LockError): + lock.acquire_write(0.1) + with pytest.raises(LockError): + lock.acquire_read(0.1) + barrier.wait() # ---------------------------------------- 2 + lock.acquire_read() + barrier.wait() # ---------------------------------------- 3 + # p1 tests shared read + barrier.wait() # ---------------------------------------- 4 + # others release reads + barrier.wait() # ---------------------------------------- 5 + + lock.acquire_write() # upgrade read to write + barrier.wait() # ---------------------------------------- 6 + # others test timeout + barrier.wait() # ---------------------------------------- 7 + lock.release_write() # release read AND write (need both) + lock.release_read() + barrier.wait() # ---------------------------------------- 8 + + # p3 acquires read + barrier.wait() # ---------------------------------------- 9 + # p3 upgrades read to write + barrier.wait() # ---------------------------------------- 10 + with pytest.raises(LockError): + lock.acquire_write(0.1) + with pytest.raises(LockError): + lock.acquire_read(0.1) + barrier.wait() # ---------------------------------------- 11 + # p3 releases locks + barrier.wait() # ---------------------------------------- 12 + lock.acquire_read() + barrier.wait() # ---------------------------------------- 13 + lock.release_read() + + def p3(barrier): + lock = Lock(lock_path) + + # p1 acquires write + barrier.wait() # ---------------------------------------- 1 + with pytest.raises(LockError): + lock.acquire_write(0.1) + with pytest.raises(LockError): + lock.acquire_read(0.1) + barrier.wait() # ---------------------------------------- 2 + lock.acquire_read() + barrier.wait() # ---------------------------------------- 3 + # p1 tests shared read + barrier.wait() # ---------------------------------------- 4 + lock.release_read() + barrier.wait() # ---------------------------------------- 5 + + # p2 upgrades read to write + barrier.wait() # ---------------------------------------- 6 + with pytest.raises(LockError): + lock.acquire_write(0.1) + with pytest.raises(LockError): + lock.acquire_read(0.1) + barrier.wait() # ---------------------------------------- 7 + # p2 releases write & read + barrier.wait() # ---------------------------------------- 8 lock.acquire_read() - self.assertTrue(lock._reads == 1) - self.assertTrue(lock._writes == 0) - self.assertTrue(lock._file.mode == 'r') + barrier.wait() # ---------------------------------------- 9 + lock.acquire_write() + barrier.wait() # ---------------------------------------- 10 + # others test timeout + barrier.wait() # ---------------------------------------- 11 + lock.release_read() # release read AND write in opposite + lock.release_write() # order from before on p2 + barrier.wait() # ---------------------------------------- 12 + lock.acquire_read() + barrier.wait() # ---------------------------------------- 13 + lock.release_read() - self.assertRaises(LockError, lock.acquire_write) + multiproc_test(p1, p2, p3) - # - # Longer test case that ensures locks are reusable. Ordering is - # enforced by barriers throughout -- steps are shown with numbers. - # - def test_complex_acquire_and_release_chain(self): - def p1(barrier): - lock = Lock(self.lock_path) +def test_transaction(lock_path): + def enter_fn(): + vals['entered'] = True - lock.acquire_write() - barrier.wait() # ---------------------------------------- 1 - # others test timeout - barrier.wait() # ---------------------------------------- 2 - lock.release_write() # release and others acquire read - barrier.wait() # ---------------------------------------- 3 - self.assertRaises(LockError, lock.acquire_write, 0.1) - lock.acquire_read() - barrier.wait() # ---------------------------------------- 4 - lock.release_read() - barrier.wait() # ---------------------------------------- 5 + def exit_fn(t, v, tb): + vals['exited'] = True + vals['exception'] = (t or v or tb) - # p2 upgrades read to write - barrier.wait() # ---------------------------------------- 6 - self.assertRaises(LockError, lock.acquire_write, 0.1) - self.assertRaises(LockError, lock.acquire_read, 0.1) - barrier.wait() # ---------------------------------------- 7 - # p2 releases write and read - barrier.wait() # ---------------------------------------- 8 + lock = Lock(lock_path) + vals = {'entered': False, 'exited': False, 'exception': False} + with ReadTransaction(lock, enter_fn, exit_fn): + pass - # p3 acquires read - barrier.wait() # ---------------------------------------- 9 - # p3 upgrades read to write - barrier.wait() # ---------------------------------------- 10 - self.assertRaises(LockError, lock.acquire_write, 0.1) - self.assertRaises(LockError, lock.acquire_read, 0.1) - barrier.wait() # ---------------------------------------- 11 - # p3 releases locks - barrier.wait() # ---------------------------------------- 12 - lock.acquire_read() - barrier.wait() # ---------------------------------------- 13 - lock.release_read() + assert vals['entered'] + assert vals['exited'] + assert not vals['exception'] - def p2(barrier): - lock = Lock(self.lock_path) + vals = {'entered': False, 'exited': False, 'exception': False} + with WriteTransaction(lock, enter_fn, exit_fn): + pass - # p1 acquires write - barrier.wait() # ---------------------------------------- 1 - self.assertRaises(LockError, lock.acquire_write, 0.1) - self.assertRaises(LockError, lock.acquire_read, 0.1) - barrier.wait() # ---------------------------------------- 2 - lock.acquire_read() - barrier.wait() # ---------------------------------------- 3 - # p1 tests shared read - barrier.wait() # ---------------------------------------- 4 - # others release reads - barrier.wait() # ---------------------------------------- 5 + assert vals['entered'] + assert vals['exited'] + assert not vals['exception'] - lock.acquire_write() # upgrade read to write - barrier.wait() # ---------------------------------------- 6 - # others test timeout - barrier.wait() # ---------------------------------------- 7 - lock.release_write() # release read AND write (need both) - lock.release_read() - barrier.wait() # ---------------------------------------- 8 +def test_transaction_with_exception(lock_path): + def enter_fn(): + vals['entered'] = True - # p3 acquires read - barrier.wait() # ---------------------------------------- 9 - # p3 upgrades read to write - barrier.wait() # ---------------------------------------- 10 - self.assertRaises(LockError, lock.acquire_write, 0.1) - self.assertRaises(LockError, lock.acquire_read, 0.1) - barrier.wait() # ---------------------------------------- 11 - # p3 releases locks - barrier.wait() # ---------------------------------------- 12 - lock.acquire_read() - barrier.wait() # ---------------------------------------- 13 - lock.release_read() + def exit_fn(t, v, tb): + vals['exited'] = True + vals['exception'] = (t or v or tb) - def p3(barrier): - lock = Lock(self.lock_path) + lock = Lock(lock_path) - # p1 acquires write - barrier.wait() # ---------------------------------------- 1 - self.assertRaises(LockError, lock.acquire_write, 0.1) - self.assertRaises(LockError, lock.acquire_read, 0.1) - barrier.wait() # ---------------------------------------- 2 - lock.acquire_read() - barrier.wait() # ---------------------------------------- 3 - # p1 tests shared read - barrier.wait() # ---------------------------------------- 4 - lock.release_read() - barrier.wait() # ---------------------------------------- 5 - - # p2 upgrades read to write - barrier.wait() # ---------------------------------------- 6 - self.assertRaises(LockError, lock.acquire_write, 0.1) - self.assertRaises(LockError, lock.acquire_read, 0.1) - barrier.wait() # ---------------------------------------- 7 - # p2 releases write & read - barrier.wait() # ---------------------------------------- 8 - - lock.acquire_read() - barrier.wait() # ---------------------------------------- 9 - lock.acquire_write() - barrier.wait() # ---------------------------------------- 10 - # others test timeout - barrier.wait() # ---------------------------------------- 11 - lock.release_read() # release read AND write in opposite - lock.release_write() # order from before on p2 - barrier.wait() # ---------------------------------------- 12 - lock.acquire_read() - barrier.wait() # ---------------------------------------- 13 - lock.release_read() - - self.multiproc_test(p1, p2, p3) - - def test_transaction(self): - def enter_fn(): - vals['entered'] = True - - def exit_fn(t, v, tb): - vals['exited'] = True - vals['exception'] = (t or v or tb) - - lock = Lock(self.lock_path) - vals = {'entered': False, 'exited': False, 'exception': False} + def do_read_with_exception(): with ReadTransaction(lock, enter_fn, exit_fn): - pass + raise Exception() - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertFalse(vals['exception']) - - vals = {'entered': False, 'exited': False, 'exception': False} + def do_write_with_exception(): with WriteTransaction(lock, enter_fn, exit_fn): - pass + raise Exception() - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertFalse(vals['exception']) + vals = {'entered': False, 'exited': False, 'exception': False} + with pytest.raises(Exception): + do_read_with_exception() + assert vals['entered'] + assert vals['exited'] + assert vals['exception'] - def test_transaction_with_exception(self): - def enter_fn(): + vals = {'entered': False, 'exited': False, 'exception': False} + with pytest.raises(Exception): + do_write_with_exception() + assert vals['entered'] + assert vals['exited'] + assert vals['exception'] + +def test_transaction_with_context_manager(lock_path): + class TestContextManager(object): + + def __enter__(self): vals['entered'] = True - def exit_fn(t, v, tb): + def __exit__(self, t, v, tb): vals['exited'] = True vals['exception'] = (t or v or tb) - lock = Lock(self.lock_path) + def exit_fn(t, v, tb): + vals['exited_fn'] = True + vals['exception_fn'] = (t or v or tb) - def do_read_with_exception(): - with ReadTransaction(lock, enter_fn, exit_fn): - raise Exception() + lock = Lock(lock_path) - def do_write_with_exception(): - with WriteTransaction(lock, enter_fn, exit_fn): - raise Exception() + vals = {'entered': False, 'exited': False, 'exited_fn': False, + 'exception': False, 'exception_fn': False} + with ReadTransaction(lock, TestContextManager, exit_fn): + pass - vals = {'entered': False, 'exited': False, 'exception': False} - self.assertRaises(Exception, do_read_with_exception) - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertTrue(vals['exception']) + assert vals['entered'] + assert vals['exited'] + assert not vals['exception'] + assert vals['exited_fn'] + assert not vals['exception_fn'] - vals = {'entered': False, 'exited': False, 'exception': False} - self.assertRaises(Exception, do_write_with_exception) - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertTrue(vals['exception']) + vals = {'entered': False, 'exited': False, 'exited_fn': False, + 'exception': False, 'exception_fn': False} + with ReadTransaction(lock, TestContextManager): + pass - def test_transaction_with_context_manager(self): - class TestContextManager(object): + assert vals['entered'] + assert vals['exited'] + assert not vals['exception'] + assert not vals['exited_fn'] + assert not vals['exception_fn'] - def __enter__(self): - vals['entered'] = True + vals = {'entered': False, 'exited': False, 'exited_fn': False, + 'exception': False, 'exception_fn': False} + with WriteTransaction(lock, TestContextManager, exit_fn): + pass - def __exit__(self, t, v, tb): - vals['exited'] = True - vals['exception'] = (t or v or tb) + assert vals['entered'] + assert vals['exited'] + assert not vals['exception'] + assert vals['exited_fn'] + assert not vals['exception_fn'] - def exit_fn(t, v, tb): - vals['exited_fn'] = True - vals['exception_fn'] = (t or v or tb) + vals = {'entered': False, 'exited': False, 'exited_fn': False, + 'exception': False, 'exception_fn': False} + with WriteTransaction(lock, TestContextManager): + pass - lock = Lock(self.lock_path) + assert vals['entered'] + assert vals['exited'] + assert not vals['exception'] + assert not vals['exited_fn'] + assert not vals['exception_fn'] - vals = {'entered': False, 'exited': False, 'exited_fn': False, - 'exception': False, 'exception_fn': False} +def test_transaction_with_context_manager_and_exception(lock_path): + class TestContextManager(object): + def __enter__(self): + vals['entered'] = True + + def __exit__(self, t, v, tb): + vals['exited'] = True + vals['exception'] = (t or v or tb) + + def exit_fn(t, v, tb): + vals['exited_fn'] = True + vals['exception_fn'] = (t or v or tb) + + lock = Lock(lock_path) + + def do_read_with_exception(exit_fn): with ReadTransaction(lock, TestContextManager, exit_fn): - pass + raise Exception() - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertFalse(vals['exception']) - self.assertTrue(vals['exited_fn']) - self.assertFalse(vals['exception_fn']) - - vals = {'entered': False, 'exited': False, 'exited_fn': False, - 'exception': False, 'exception_fn': False} - with ReadTransaction(lock, TestContextManager): - pass - - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertFalse(vals['exception']) - self.assertFalse(vals['exited_fn']) - self.assertFalse(vals['exception_fn']) - - vals = {'entered': False, 'exited': False, 'exited_fn': False, - 'exception': False, 'exception_fn': False} + def do_write_with_exception(exit_fn): with WriteTransaction(lock, TestContextManager, exit_fn): - pass + raise Exception() - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertFalse(vals['exception']) - self.assertTrue(vals['exited_fn']) - self.assertFalse(vals['exception_fn']) + vals = {'entered': False, 'exited': False, 'exited_fn': False, + 'exception': False, 'exception_fn': False} + with pytest.raises(Exception): + do_read_with_exception(exit_fn) + assert vals['entered'] + assert vals['exited'] + assert vals['exception'] + assert vals['exited_fn'] + assert vals['exception_fn'] - vals = {'entered': False, 'exited': False, 'exited_fn': False, - 'exception': False, 'exception_fn': False} - with WriteTransaction(lock, TestContextManager): - pass + vals = {'entered': False, 'exited': False, 'exited_fn': False, + 'exception': False, 'exception_fn': False} + with pytest.raises(Exception): + do_read_with_exception(None) + assert vals['entered'] + assert vals['exited'] + assert vals['exception'] + assert not vals['exited_fn'] + assert not vals['exception_fn'] - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertFalse(vals['exception']) - self.assertFalse(vals['exited_fn']) - self.assertFalse(vals['exception_fn']) + vals = {'entered': False, 'exited': False, 'exited_fn': False, + 'exception': False, 'exception_fn': False} + with pytest.raises(Exception): + do_write_with_exception(exit_fn) + assert vals['entered'] + assert vals['exited'] + assert vals['exception'] + assert vals['exited_fn'] + assert vals['exception_fn'] - def test_transaction_with_context_manager_and_exception(self): - class TestContextManager(object): - - def __enter__(self): - vals['entered'] = True - - def __exit__(self, t, v, tb): - vals['exited'] = True - vals['exception'] = (t or v or tb) - - def exit_fn(t, v, tb): - vals['exited_fn'] = True - vals['exception_fn'] = (t or v or tb) - - lock = Lock(self.lock_path) - - def do_read_with_exception(exit_fn): - with ReadTransaction(lock, TestContextManager, exit_fn): - raise Exception() - - def do_write_with_exception(exit_fn): - with WriteTransaction(lock, TestContextManager, exit_fn): - raise Exception() - - vals = {'entered': False, 'exited': False, 'exited_fn': False, - 'exception': False, 'exception_fn': False} - self.assertRaises(Exception, do_read_with_exception, exit_fn) - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertTrue(vals['exception']) - self.assertTrue(vals['exited_fn']) - self.assertTrue(vals['exception_fn']) - - vals = {'entered': False, 'exited': False, 'exited_fn': False, - 'exception': False, 'exception_fn': False} - self.assertRaises(Exception, do_read_with_exception, None) - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertTrue(vals['exception']) - self.assertFalse(vals['exited_fn']) - self.assertFalse(vals['exception_fn']) - - vals = {'entered': False, 'exited': False, 'exited_fn': False, - 'exception': False, 'exception_fn': False} - self.assertRaises(Exception, do_write_with_exception, exit_fn) - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertTrue(vals['exception']) - self.assertTrue(vals['exited_fn']) - self.assertTrue(vals['exception_fn']) - - vals = {'entered': False, 'exited': False, 'exited_fn': False, - 'exception': False, 'exception_fn': False} - self.assertRaises(Exception, do_write_with_exception, None) - self.assertTrue(vals['entered']) - self.assertTrue(vals['exited']) - self.assertTrue(vals['exception']) - self.assertFalse(vals['exited_fn']) - self.assertFalse(vals['exception_fn']) + vals = {'entered': False, 'exited': False, 'exited_fn': False, + 'exception': False, 'exception_fn': False} + with pytest.raises(Exception): + do_write_with_exception(None) + assert vals['entered'] + assert vals['exited'] + assert vals['exception'] + assert not vals['exited_fn'] + assert not vals['exception_fn'] From bd7a591df17c38d6ce9f51e092364a98ed4c1d7b Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 2 Jul 2017 17:49:08 -0700 Subject: [PATCH 1172/2394] Make filesytem more resilient to concurrent updates. - Uses O_CREAT for touch (for guaranteed atomic open on NFS, multi-node) - Ignore concurrent create errors in mkdirp --- lib/spack/llnl/util/filesystem.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 88e000b6d3c..7a9fb7b8ac9 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -251,7 +251,11 @@ def mkdirp(*paths): """Creates a directory, as well as parent directories if needed.""" for path in paths: if not os.path.exists(path): - os.makedirs(path) + try: + os.makedirs(path) + except OSError as e: + if e.errno != errno.EEXIST or not os.path.isdir(path): + raise e elif not os.path.isdir(path): raise OSError(errno.EEXIST, "File already exists", path) @@ -291,8 +295,14 @@ def hide_files(*file_list): def touch(path): """Creates an empty file at the specified path.""" - with open(path, 'a'): + perms = (os.O_WRONLY | os.O_CREAT | os.O_NONBLOCK | os.O_NOCTTY) + fd = None + try: + fd = os.open(path, perms) os.utime(path, None) + finally: + if fd is not None: + os.close(fd) def touchp(path): From b4d1654e68880a6c917f8c8e07e6ac2edb6d70ea Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 3 Jul 2017 17:30:18 -0700 Subject: [PATCH 1173/2394] Parametrized lock test and make it work with MPI - Lock test can be run either as a node-local test or as an MPI test. - Lock test is now parametrized by filesystem, so you can test the locking capabilities of your NFS, Lustre, or GPFS filesystem. See docs for details. --- lib/spack/llnl/util/lock.py | 9 +- lib/spack/spack/test/lock.py | 292 +++++++++++++++++++++++++++++------ 2 files changed, 255 insertions(+), 46 deletions(-) diff --git a/lib/spack/llnl/util/lock.py b/lib/spack/llnl/util/lock.py index 2cab436e2d3..55837c371ee 100644 --- a/lib/spack/llnl/util/lock.py +++ b/lib/spack/llnl/util/lock.py @@ -127,8 +127,9 @@ def _lock(self, op, timeout=_default_timeout): return - except IOError as error: - if error.errno == errno.EAGAIN or error.errno == errno.EACCES: + except IOError as e: + if e.errno in (errno.EAGAIN, errno.EACCES): + # EAGAIN and EACCES == locked by another process pass else: raise @@ -197,6 +198,8 @@ def acquire_read(self, timeout=_default_timeout): tty.debug('READ LOCK: {0.path}[{0._start}:{0._length}] [Acquiring]' .format(self)) self._lock(fcntl.LOCK_SH, timeout=timeout) # can raise LockError. + tty.debug('READ LOCK: {0.path}[{0._start}:{0._length}] [Acquired]' + .format(self)) self._reads += 1 return True else: @@ -219,6 +222,8 @@ def acquire_write(self, timeout=_default_timeout): 'WRITE LOCK: {0.path}[{0._start}:{0._length}] [Acquiring]' .format(self)) self._lock(fcntl.LOCK_EX, timeout=timeout) # can raise LockError. + tty.debug('WRITE LOCK: {0.path}[{0._start}:{0._length}] [Acquired]' + .format(self)) self._writes += 1 return True else: diff --git a/lib/spack/spack/test/lock.py b/lib/spack/spack/test/lock.py index 7cf45710164..347b72b575f 100644 --- a/lib/spack/spack/test/lock.py +++ b/lib/spack/spack/test/lock.py @@ -22,37 +22,178 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -""" -These tests ensure that our lock works correctly. +"""These tests ensure that our lock works correctly. + +This can be run in two ways. + +First, it can be run as a node-local test, with a typical invocation like +this:: + + spack test lock + +You can *also* run it as an MPI program, which allows you to test locks +across nodes. So, e.g., you can run the test like this:: + + mpirun -n 7 spack test lock + +And it will test locking correctness among MPI processes. Ideally, you +want the MPI processes to span across multiple nodes, so, e.g., for SLURM +you might do this:: + + srun -N 7 -n 7 -m cyclic spack test lock + +You can use this to test whether your shared filesystem properly supports +POSIX reader-writer locking with byte ranges through fcntl. + +If you want to test on multiple filesystems, you can modify the +``locations`` list below. By default it looks like this:: + + locations = [ + tempfile.gettempdir(), # standard tmp directory (potentially local) + '/nfs/tmp2/%u', # NFS tmp mount + '/p/lscratch*/%u' # Lustre scratch mount + ] + +Add names and paths for your preferred filesystem mounts to test on them; +the tests are parametrized to run on all the filesystems listed in this +dict. Note that 'tmp' will be skipped for MPI testing, as it is often a +node-local filesystem, and multi-node tests will fail if the locks aren't +actually on a shared filesystem. + """ import os import shutil -import functools import tempfile import traceback +import glob +import getpass +from contextlib import contextmanager from multiprocessing import Process import pytest -from llnl.util.filesystem import join_path, touch, mkdirp +from llnl.util.filesystem import join_path, touch from llnl.util.lock import * from spack.util.multiproc import Barrier -# This is the longest a failed test will take, as the barriers will -# time out and raise an exception. +# +# This test can be run with MPI. MPI is "enabled" if we can import +# mpi4py and the number of total MPI processes is greater than 1. +# Otherwise it just runs as a node-local test. +# +# NOTE: MPI mode is different from node-local mode in that node-local +# mode will spawn its own test processes, while MPI mode assumes you've +# run this script as a SPMD application. In MPI mode, no additional +# processes are spawned, and you need to ensure that you mpirun the +# script with enough processes for all the multiproc_test cases below. +# +# If you don't run with enough processes, tests that require more +# processes than you currently have will be skipped. +# +mpi = False +comm = None +try: + from mpi4py import MPI + comm = MPI.COMM_WORLD + if comm.size > 1: + mpi = True +except: + pass + + +"""This is a list of filesystem locations to test locks in. Paths are +expanded so that %u is replaced with the current username. '~' is also +legal and will be expanded to the user's home directory. + +Tests are skipped for directories that don't exist, so you'll need to +update this with the locations of NFS, Lustre, and other mounts on your +system. +""" +locations = [ + tempfile.gettempdir(), + os.path.join('/nfs/tmp2/', getpass.getuser()), + os.path.join('/p/lscratch*/', getpass.getuser()), +] + +"""This is the longest a failed multiproc test will take. +Barriers will time out and raise an exception after this interval. +In MPI mode, barriers don't time out (they hang). See mpi_multiproc_test. +""" barrier_timeout = 5 +"""This is the lock timeout for expected failures. +This may need to be higher for some filesystems.""" +lock_fail_timeout = 0.1 -@pytest.fixture() -def lock_path(): - tempdir = tempfile.mkdtemp() - lock_file = join_path(tempdir, 'lockfile') + +@contextmanager +def read_only(path): + orginal_mode = os.stat(path).st_mode + os.chmod(path, 0o444) + yield + os.chmod(path, orginal_mode) + + +@pytest.fixture(scope='session', params=locations) +def lock_test_directory(request): + """This fixture causes tests to be executed for many different mounts. + + See the ``locations`` dict above for details. + """ + return request.param + + +@pytest.fixture(scope='session') +def lock_dir(lock_test_directory): + parent = next((p for p in glob.glob(lock_test_directory) + if os.path.exists(p) and os.access(p, os.W_OK)), None) + if not parent: + # Skip filesystems that don't exist or aren't writable + pytest.skip("requires filesystem: '%s'" % lock_test_directory) + elif mpi and parent == tempfile.gettempdir(): + # Skip local tmp test for MPI runs + pytest.skip("skipping local tmp directory for MPI test.") + + tempdir = None + if not mpi or comm.rank == 0: + tempdir = tempfile.mkdtemp(dir=parent) + if mpi: + tempdir = comm.bcast(tempdir) + + yield tempdir + + if mpi: + # rank 0 may get here before others, in which case it'll try to + # remove the directory while other processes try to re-create the + # lock. This will give errno 39: directory not empty. Use a + # barrier to ensure everyone is done first. + comm.barrier() + + if not mpi or comm.rank == 0: + shutil.rmtree(tempdir) + + +@pytest.fixture +def private_lock_path(lock_dir): + """In MPI mode, this is a private lock for each rank in a multiproc test. + + For other modes, it is the same as a shared lock. + """ + lock_file = join_path(lock_dir, 'lockfile') + if mpi: + lock_file += '.%s' % comm.rank yield lock_file - shutil.rmtree(tempdir) -def multiproc_test(*functions): +@pytest.fixture +def lock_path(lock_dir): + """This lock is shared among all processes in a multiproc test.""" + lock_file = join_path(lock_dir, 'lockfile') + yield lock_file + + +def local_multiproc_test(*functions): """Order some processes using simple barrier synchronization.""" b = Barrier(len(functions), timeout=barrier_timeout) procs = [Process(target=f, args=(b,)) for f in functions] @@ -65,6 +206,52 @@ def multiproc_test(*functions): assert p.exitcode == 0 +def mpi_multiproc_test(*functions): + """SPMD version of multiproc test. + + This needs to be run like so: + + srun spack test lock + + Each process executes its corresponding function. This is different + from ``multiproc_test`` above, which spawns the processes. This will + skip tests if there are too few processes to run them. + """ + procs = len(functions) + if procs > comm.size: + pytest.skip("requires at least %d MPI processes" % procs) + + comm.Barrier() # barrier before each MPI test + + include = comm.rank < len(functions) + subcomm = comm.Split(include) + + class subcomm_barrier(object): + """Stand-in for multiproc barrier for MPI-parallel jobs.""" + def wait(self): + subcomm.Barrier() + + if include: + try: + functions[subcomm.rank](subcomm_barrier()) + except: + # aborting is the best we can do for MPI tests without + # hanging, since we're using MPI barriers. This will fail + # early and it loses the nice pytest output, but at least it + # gets use a stacktrace on the processes that failed. + traceback.print_exc() + comm.Abort() + subcomm.Free() + + comm.Barrier() # barrier after each MPI test. + + +"""``multiproc_test()`` should be called by tests below. +``multiproc_test()`` will work for either MPI runs or for local runs. +""" +multiproc_test = mpi_multiproc_test if mpi else local_multiproc_test + + # # Process snippets below can be composed into tests. # @@ -91,7 +278,7 @@ def fn(barrier): lock = Lock(lock_path, start, length) barrier.wait() # wait for lock acquire in first process with pytest.raises(LockError): - lock.acquire_write(0.1) + lock.acquire_write(lock_fail_timeout) barrier.wait() return fn @@ -101,7 +288,7 @@ def fn(barrier): lock = Lock(lock_path, start, length) barrier.wait() # wait for lock acquire in first process with pytest.raises(LockError): - lock.acquire_read(0.1) + lock.acquire_read(lock_fail_timeout) barrier.wait() return fn @@ -111,7 +298,9 @@ def fn(barrier): # exclusive lock is held. # def test_write_lock_timeout_on_write(lock_path): - multiproc_test(acquire_write(lock_path), timeout_write(lock_path)) + multiproc_test( + acquire_write(lock_path), + timeout_write(lock_path)) def test_write_lock_timeout_on_write_2(lock_path): @@ -258,7 +447,8 @@ def test_write_lock_timeout_on_read_ranges_3(lock_path): def test_write_lock_timeout_on_read_ranges_4(lock_path): multiproc_test( acquire_read(lock_path, 0, 64), - timeout_write(lock_path, 10, 1), timeout_write(lock_path, 32, 1)) + timeout_write(lock_path, 10, 1), + timeout_write(lock_path, 32, 1)) def test_write_lock_timeout_on_read_ranges_5(lock_path): @@ -268,6 +458,7 @@ def test_write_lock_timeout_on_read_ranges_5(lock_path): timeout_write(lock_path, 127, 1), timeout_write(lock_path, 90, 10)) + # # Test that exclusive locks time while lots of shared locks are held. # @@ -339,12 +530,19 @@ def test_write_lock_timeout_with_multiple_readers_3_2_ranges(lock_path): # # Test that read can be upgraded to write. # -def test_upgrade_read_to_write(lock_path): +def test_upgrade_read_to_write(private_lock_path): + """Test that a read lock can be upgraded to a write lock. + + Note that to upgrade a read lock to a write lock, you have the be the + only holder of a read lock. Client code needs to coordinate that for + shared locks. For this test, we use a private lock just to test that an + upgrade is possible. + """ # ensure lock file exists the first time, so we open it read-only # to begin wtih. - touch(lock_path) + touch(private_lock_path) - lock = Lock(lock_path) + lock = Lock(private_lock_path) assert lock._reads == 0 assert lock._writes == 0 @@ -368,26 +566,28 @@ def test_upgrade_read_to_write(lock_path): assert lock._writes == 0 assert lock._file is None + # # Test that read-only file can be read-locked but not write-locked. # -def test_upgrade_read_to_write_fails_with_readonly_file(lock_path): +def test_upgrade_read_to_write_fails_with_readonly_file(private_lock_path): # ensure lock file exists the first time, so we open it read-only # to begin wtih. - touch(lock_path) - os.chmod(lock_path, 0o444) + touch(private_lock_path) - lock = Lock(lock_path) - assert lock._reads == 0 - assert lock._writes == 0 + with read_only(private_lock_path): + lock = Lock(private_lock_path) + assert lock._reads == 0 + assert lock._writes == 0 - lock.acquire_read() - assert lock._reads == 1 - assert lock._writes == 0 - assert lock._file.mode == 'r' + lock.acquire_read() + assert lock._reads == 1 + assert lock._writes == 0 + assert lock._file.mode == 'r' + + with pytest.raises(LockError): + lock.acquire_write() - with pytest.raises(LockError): - lock.acquire_write() # # Longer test case that ensures locks are reusable. Ordering is @@ -404,7 +604,7 @@ def p1(barrier): lock.release_write() # release and others acquire read barrier.wait() # ---------------------------------------- 3 with pytest.raises(LockError): - lock.acquire_write(0.1) + lock.acquire_write(lock_fail_timeout) lock.acquire_read() barrier.wait() # ---------------------------------------- 4 lock.release_read() @@ -413,9 +613,9 @@ def p1(barrier): # p2 upgrades read to write barrier.wait() # ---------------------------------------- 6 with pytest.raises(LockError): - lock.acquire_write(0.1) + lock.acquire_write(lock_fail_timeout) with pytest.raises(LockError): - lock.acquire_read(0.1) + lock.acquire_read(lock_fail_timeout) barrier.wait() # ---------------------------------------- 7 # p2 releases write and read barrier.wait() # ---------------------------------------- 8 @@ -425,9 +625,9 @@ def p1(barrier): # p3 upgrades read to write barrier.wait() # ---------------------------------------- 10 with pytest.raises(LockError): - lock.acquire_write(0.1) + lock.acquire_write(lock_fail_timeout) with pytest.raises(LockError): - lock.acquire_read(0.1) + lock.acquire_read(lock_fail_timeout) barrier.wait() # ---------------------------------------- 11 # p3 releases locks barrier.wait() # ---------------------------------------- 12 @@ -441,9 +641,9 @@ def p2(barrier): # p1 acquires write barrier.wait() # ---------------------------------------- 1 with pytest.raises(LockError): - lock.acquire_write(0.1) + lock.acquire_write(lock_fail_timeout) with pytest.raises(LockError): - lock.acquire_read(0.1) + lock.acquire_read(lock_fail_timeout) barrier.wait() # ---------------------------------------- 2 lock.acquire_read() barrier.wait() # ---------------------------------------- 3 @@ -465,9 +665,9 @@ def p2(barrier): # p3 upgrades read to write barrier.wait() # ---------------------------------------- 10 with pytest.raises(LockError): - lock.acquire_write(0.1) + lock.acquire_write(lock_fail_timeout) with pytest.raises(LockError): - lock.acquire_read(0.1) + lock.acquire_read(lock_fail_timeout) barrier.wait() # ---------------------------------------- 11 # p3 releases locks barrier.wait() # ---------------------------------------- 12 @@ -481,9 +681,9 @@ def p3(barrier): # p1 acquires write barrier.wait() # ---------------------------------------- 1 with pytest.raises(LockError): - lock.acquire_write(0.1) + lock.acquire_write(lock_fail_timeout) with pytest.raises(LockError): - lock.acquire_read(0.1) + lock.acquire_read(lock_fail_timeout) barrier.wait() # ---------------------------------------- 2 lock.acquire_read() barrier.wait() # ---------------------------------------- 3 @@ -495,9 +695,9 @@ def p3(barrier): # p2 upgrades read to write barrier.wait() # ---------------------------------------- 6 with pytest.raises(LockError): - lock.acquire_write(0.1) + lock.acquire_write(lock_fail_timeout) with pytest.raises(LockError): - lock.acquire_read(0.1) + lock.acquire_read(lock_fail_timeout) barrier.wait() # ---------------------------------------- 7 # p2 releases write & read barrier.wait() # ---------------------------------------- 8 @@ -517,6 +717,7 @@ def p3(barrier): multiproc_test(p1, p2, p3) + def test_transaction(lock_path): def enter_fn(): vals['entered'] = True @@ -542,6 +743,7 @@ def exit_fn(t, v, tb): assert vals['exited'] assert not vals['exception'] + def test_transaction_with_exception(lock_path): def enter_fn(): vals['entered'] = True @@ -574,6 +776,7 @@ def do_write_with_exception(): assert vals['exited'] assert vals['exception'] + def test_transaction_with_context_manager(lock_path): class TestContextManager(object): @@ -634,6 +837,7 @@ def exit_fn(t, v, tb): assert not vals['exited_fn'] assert not vals['exception_fn'] + def test_transaction_with_context_manager_and_exception(lock_path): class TestContextManager(object): def __enter__(self): From 58915e6e7fba65c4148b28c1280595b6727d1cfb Mon Sep 17 00:00:00 2001 From: Philip Davis Date: Tue, 4 Jul 2017 14:56:33 -0400 Subject: [PATCH 1174/2394] New package: DataSpaces (#4651) * Dataspaces spack package, hard-wired for ubuntu VM * Initial commit of dataspaces spack package * Made changes and additions necessary to install on Cori and Titan * Added temp 1.6.2.1 for testing * Updated tar file for 1.6.2 * Fixed formatting * Set the type of build dependencies * Changed the way autogen.sh is called for compatibility * Use append instead of extend to add configure flags * Various syntax fixes * Switched string checking to method for compatibility Now using the six library for Python 3 compatibility. Thanks @adamjstewart * Made MPI variant default --- .../builtin/packages/dataspaces/package.py | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 var/spack/repos/builtin/packages/dataspaces/package.py diff --git a/var/spack/repos/builtin/packages/dataspaces/package.py b/var/spack/repos/builtin/packages/dataspaces/package.py new file mode 100644 index 00000000000..860866f81ea --- /dev/null +++ b/var/spack/repos/builtin/packages/dataspaces/package.py @@ -0,0 +1,91 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. + +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * +import six + + +def is_string(x): + """validate a string""" + try: + return isinstance(x, six.string_types) + except ValueError: + return False + + +class Dataspaces(AutotoolsPackage): + """an extreme scale data management framework.""" + + homepage = "http://www.dataspaces.org" + url = "http://personal.cac.rutgers.edu/TASSL/projects/data/downloads/dataspaces-1.6.2.tar.gz" + + version('develop', git='https://github.com/melrom/dataspaces.git', + branch='master') + version('1.6.2', '73caa4920b6f2c0c6d6cb87640ff04be') + + variant('dimes', + default=False, + description='enabled DIMES transport mode') + variant('cray-drc', + default=False, + description='using Cray Dynamic Credentials library') + variant('gni-cookie', + default='0x5420000', + description='Cray UGNI communication token', + values=is_string) + variant('ptag', + default='250', + description='Cray UGNI protection tag', + values=is_string) + variant('mpi', + default=True, + description='Use MPI for collective communication') + + depends_on('m4', type='build') + depends_on('automake', type='build') + depends_on('autoconf', type='build') + depends_on('libtool', type='build') + depends_on('mpi', when='+mpi') + + def autoreconf(spec, prefix, self): + bash = which('bash') + bash('./autogen.sh') + + def configure_args(self): + args = [] + cookie = self.spec.variants['gni-cookie'].value + ptag = self.spec.variants['ptag'].value + if self.spec.satisfies('+dimes'): + args.append('--enable-dimes') + if self.spec.satisfies('+cray-drc'): + args.append('--enable-drc') + else: + args.append('--with-gni-cookie=%s' % cookie) + args.append('--with-gni-ptag=%s' % ptag) + if self.spec.satisfies('+mpi'): + args.append('CC=%s' % self.spec['mpi'].mpicc) + args.append('FC=%s' % self.spec['mpi'].mpifc) + return args From e3bd6e3d930a58bb65a4bd4c00d5ac4f7e58d5b5 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Wed, 5 Jul 2017 15:44:07 +0200 Subject: [PATCH 1175/2394] gcc: Add version 6.4.0 (#4673) --- var/spack/repos/builtin/packages/gcc/package.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 7fa9b81dded..b8d504a1d88 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -41,6 +41,7 @@ class Gcc(AutotoolsPackage): list_depth = 1 version('7.1.0', '6bf56a2bca9dac9dbbf8e8d1036964a8') + version('6.4.0', '11ba51a0cfb8471927f387c8895fe232') version('6.3.0', '677a7623c7ef6ab99881bc4e048debb6') version('6.2.0', '9768625159663b300ae4de2f4745fcc4') version('6.1.0', '8fb6cb98b8459f5863328380fbf06bd1') @@ -153,6 +154,15 @@ class Gcc(AutotoolsPackage): build_directory = 'spack-build' + def url_for_version(self, version): + url = 'http://ftp.gnu.org/gnu/gcc/gcc-{0}/gcc-{0}.tar.{1}' + suffix = 'bz2' + + if version >= Version('6.4.0') and version < Version('7.1.0'): + suffix = 'xz' + + return url.format(version, suffix) + def patch(self): spec = self.spec prefix = self.spec.prefix From f403117f7152b97068188edaedee09d979d4b4c5 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 5 Jul 2017 16:19:39 +0200 Subject: [PATCH 1176/2394] libint: factored parts of configure_args into their own functions (#4211) * libint: factored parts of configure_args into their own functions * libint: added -xSSE2, as suggested by @lee218llnl --- .../repos/builtin/packages/libint/package.py | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py index 3853d2c57f7..d267a8ea880 100644 --- a/var/spack/repos/builtin/packages/libint/package.py +++ b/var/spack/repos/builtin/packages/libint/package.py @@ -61,19 +61,31 @@ def autoreconf(self, spec, prefix): aclocal('-I', 'lib/autoconf') autoconf() + @property + def optflags(self): + flags = '-O2' + + # Optimizations for the Intel compiler, suggested by CP2K + if '%intel' in self.spec: + # -xSSE2 will make it usable on old architecture + flags += ' -xSSE2 -xAVX -axCORE-AVX2 -ipo' + + return flags + + def setup_environment(self, build_env, run_env): + # Set optimization flags + build_env.set('CFLAGS', self.optflags) + build_env.set('CXXFLAGS', self.optflags) + + # Change AR to xiar if we compile with Intel and we + # find the executable + if '%intel' in self.spec and which('xiar'): + build_env.set('AR', 'xiar') + def configure_args(self): config_args = ['--enable-shared'] - - # Optimizations for the Intel compiler, suggested by CP2K - optflags = '-O2' - if self.compiler.name == 'intel': - optflags += ' -xAVX -axCORE-AVX2 -ipo' - if which('xiar'): - env['AR'] = 'xiar' - - env['CFLAGS'] = optflags - env['CXXFLAGS'] = optflags + optflags = self.optflags # Optimization flag names have changed in libint 2 if self.version < Version('2.0.0'): From 09681f721d001aef742136da1ba884eaac260084 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 5 Jul 2017 13:30:40 -0500 Subject: [PATCH 1177/2394] Package ampliconnoise (#4676) * ampliconnoise: new package * ampliconnoise: fixed installation * ampliconnoise: fixing install again --- .../builtin/packages/ampliconnoise/package.py | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ampliconnoise/package.py diff --git a/var/spack/repos/builtin/packages/ampliconnoise/package.py b/var/spack/repos/builtin/packages/ampliconnoise/package.py new file mode 100644 index 00000000000..7051ae0008b --- /dev/null +++ b/var/spack/repos/builtin/packages/ampliconnoise/package.py @@ -0,0 +1,67 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Ampliconnoise(MakefilePackage): + """AmpliconNoise is a collection of programs for the removal of noise + from 454 sequenced PCR amplicons.""" + + homepage = "https://code.google.com/archive/p/ampliconnoise/" + url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ampliconnoise/AmpliconNoiseV1.29.tar.gz" + + version('1.29', 'd6723e6f9cc71d7eb6f1a65ba4643aac') + + depends_on('mpi@2:') + depends_on('gsl') + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PATH', self.prefix.Scripts) + run_env.set('PYRO_LOOKUP_FILE', join_path(self.prefix, 'Data', + 'LookUp_E123.dat')) + run_env.set('SEQ_LOOKUP_FILE', join_path(self.prefix, 'Data', + 'Tran.dat')) + + def install(self, spec, prefix): + make('install') + install_tree('bin', prefix.bin) + install_tree('Data', prefix.Data) + install_tree('FastaUnique', prefix.FastaUnique) + install_tree('FCluster', prefix.FCluster) + install_tree('NDist', prefix.NDist) + install_tree('Perseus', prefix.Perseus) + install_tree('PerseusD', prefix.PerseusD) + install_tree('PyroDist', prefix.PyroDist) + install_tree('PyroNoise', prefix.PyroNoise) + install_tree('PyroNoiseM', prefix.PyroNoiseM) + install_tree('Scripts', prefix.Scripts) + install_tree('SeqDist', prefix.SeqDist) + install_tree('SeqNoise', prefix.SeqNoise) + install_tree('SplitClusterClust', prefix.SplitClusterClust) + install_tree('SplitClusterEven', prefix.SplitClusterEven) + install_tree('Test', prefix.Test) + install_tree('TestFLX', prefix.TestFLX) + install_tree('TestTitanium', prefix.TestTitanium) + install_tree('TestTitaniumFast', prefix.TestTitaniumFast) From bf195cd8b981b6b03c181450d12b8f3addc28a6c Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Wed, 5 Jul 2017 20:31:26 +0200 Subject: [PATCH 1178/2394] Fix for building osu-micro-benchmarks on OS X (librt not avaialble/required) (#4675) * Fix for building osu-micro-benchmarks on OS X (librt not available/required) * Fixed typo and replaced extend by append --- .../repos/builtin/packages/osu-micro-benchmarks/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py index 44c396e508d..f6d49d74e7d 100644 --- a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py +++ b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys class OsuMicroBenchmarks(Package): @@ -46,7 +47,6 @@ def install(self, spec, prefix): config_args = [ 'CC=%s' % spec['mpi'].prefix.bin + '/mpicc', 'CXX=%s' % spec['mpi'].prefix.bin + '/mpicxx', - 'LDFLAGS=-lrt', '--prefix=%s' % prefix ] @@ -56,6 +56,10 @@ def install(self, spec, prefix): '--with-cuda=%s' % spec['cuda'].prefix, ]) + # librt not available on darwin (and not required) + if not sys.platform == 'darwin': + config_args.append('LDFLAGS=-lrt') + configure(*config_args) make() From 4beb76daf63ea957d552027f57fb0ce2894cd4eb Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 5 Jul 2017 14:09:01 -0500 Subject: [PATCH 1179/2394] New package bucky (#4677) --- .../repos/builtin/packages/bucky/package.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 var/spack/repos/builtin/packages/bucky/package.py diff --git a/var/spack/repos/builtin/packages/bucky/package.py b/var/spack/repos/builtin/packages/bucky/package.py new file mode 100644 index 00000000000..d74e8784e58 --- /dev/null +++ b/var/spack/repos/builtin/packages/bucky/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Bucky(MakefilePackage): + """BUCKy is a free program to combine molecular data from multiple loci. + BUCKy estimates the dominant history of sampled individuals, and how + much of the genome supports each relationship, using Bayesian + concordance analysis.""" + + homepage = "http://www.stat.wisc.edu/~ane/bucky/index.html" + url = "http://dstats.net/download/http://www.stat.wisc.edu/~ane/bucky/v1.4/bucky-1.4.4.tgz" + + version('1.4.4', 'f0c910dd1d411d112637826519943a6d') + + # Compilation requires gcc + conflicts('%cce') + conflicts('%clang') + conflicts('%intel') + conflicts('%nag') + conflicts('%pgi') + conflicts('%xl') + conflicts('%xl_r') + + build_directory = 'src' + + def install(self, spec, prefix): + with working_dir('src'): + mkdirp(prefix.bin) + install('bucky', prefix.bin) + install('mbsum', prefix.bin) + install_tree('data', prefix.data) + install_tree('doc', prefix.doc) + install_tree('scripts', prefix.scripts) From df99fb4980fca8c801cb4b636df1a51cd0361ab2 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 5 Jul 2017 19:33:43 -0500 Subject: [PATCH 1180/2394] New package butter (#4679) * butter: new package * butter: fixed dependency type --- .../repos/builtin/packages/butter/package.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/butter/package.py diff --git a/var/spack/repos/builtin/packages/butter/package.py b/var/spack/repos/builtin/packages/butter/package.py new file mode 100644 index 00000000000..4bd1607097f --- /dev/null +++ b/var/spack/repos/builtin/packages/butter/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Butter(Package): + """butter: Bowtie UTilizing iTerative placEment of Repetitive small rnas. + A wrapper for bowtie to produce small RNA-seq alignments where + multimapped small RNAs tend to be placed near regions of confidently + high density.""" + + homepage = "https://github.com/MikeAxtell/butter" + url = "https://github.com/MikeAxtell/butter/archive/v0.3.3.tar.gz" + + version('0.3.3', '806ff3cb7afc1d8b75126404056c629d') + + depends_on('perl', type=('build', 'run')) + depends_on('samtools') + depends_on('bowtie') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('butter', prefix.bin) + install('bam2wig', prefix.bin) From c3d0911cf65fd9dfa3d816e92022d3680f5afb68 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 6 Jul 2017 10:10:25 -0500 Subject: [PATCH 1181/2394] cdbfasta: new package (#4681) --- .../builtin/packages/cdbfasta/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cdbfasta/package.py diff --git a/var/spack/repos/builtin/packages/cdbfasta/package.py b/var/spack/repos/builtin/packages/cdbfasta/package.py new file mode 100644 index 00000000000..9fa0c624425 --- /dev/null +++ b/var/spack/repos/builtin/packages/cdbfasta/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cdbfasta(MakefilePackage): + """Fast indexing and retrieval of fasta records from flat file databases""" + + homepage = "https://github.com/gpertea/cdbfasta" + url = "https://github.com/gpertea/cdbfasta" + + version('2017-03-16', git='https://github.com/gpertea/cdbfasta.git', commit='b3e481fe02dfbc767a3842bcb1b687c60376a5e8') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('cdbfasta', prefix.bin) + install('cdbyank', prefix.bin) From b749986dcc0d31efa37a96d6c5d76acdc4b732e4 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Thu, 6 Jul 2017 20:23:11 +0200 Subject: [PATCH 1182/2394] Isaac 1.3.1: New version (#4685) adds a new release of isaac. (1.3.0 forgot to bump the internal version number in include macros) --- var/spack/repos/builtin/packages/isaac/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/isaac/package.py b/var/spack/repos/builtin/packages/isaac/package.py index e54e00630bb..33546d19b0e 100644 --- a/var/spack/repos/builtin/packages/isaac/package.py +++ b/var/spack/repos/builtin/packages/isaac/package.py @@ -39,6 +39,7 @@ def root_cmakelists_dir(self): git='https://github.com/ComputationalRadiationPhysics/isaac.git') version('master', branch='master', git='https://github.com/ComputationalRadiationPhysics/isaac.git') + version('1.3.1', '7fe075f9af68d05355eaba0e224f20ca') version('1.3.0', 'c8a794da9bb998ef0e75449bfece1a12') variant('cuda', default=True, From 8fe51b3ffc717a5ce00a69c8758e29c991865b6c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 6 Jul 2017 11:33:57 -0700 Subject: [PATCH 1183/2394] Make vcftools actually install its libraries (#4682) The vcftools package was installing its Perl libraries into a directory in the staging directory named 'lib', instead of installing them into `prefix.lib` where they should have been because the value passed to the configure script was wrong. The result was that any attempt to run one of the scripts in the package failed with something like: > Can't locate VcfStats.pm in @INC (you may need to install the > VcfStats module) [...] This fix provides the correct information in `configure_args`. Tested lightly on CentOS 7. --- var/spack/repos/builtin/packages/vcftools/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/vcftools/package.py b/var/spack/repos/builtin/packages/vcftools/package.py index f84ea1ed7c0..bb2721e3534 100644 --- a/var/spack/repos/builtin/packages/vcftools/package.py +++ b/var/spack/repos/builtin/packages/vcftools/package.py @@ -45,7 +45,7 @@ class Vcftools(AutotoolsPackage): # this needs to be in sync with what setup_environment adds to # PERL5LIB below def configure_args(self): - return ['--with-pmdir=lib'] + return ['--with-pmdir={0}'.format(self.prefix.lib)] @run_before('install') def filter_sbang(self): @@ -72,4 +72,4 @@ def filter_sbang(self): filter_file(match, substitute, *files, **kwargs) def setup_environment(self, spack_env, run_env): - run_env.prepend_path('PERL5LIB', join_path(self.prefix, 'lib')) + run_env.prepend_path('PERL5LIB', self.prefix.lib) From e003e2f78b9e71b6315a657f9ce10a978a00cfc5 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 6 Jul 2017 13:34:40 -0500 Subject: [PATCH 1184/2394] cap3: new package (#4680) * cap3: new package * cap3: removing boilerplate * cap3: fixed version and added doc --- .../repos/builtin/packages/cap3/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cap3/package.py diff --git a/var/spack/repos/builtin/packages/cap3/package.py b/var/spack/repos/builtin/packages/cap3/package.py new file mode 100644 index 00000000000..8f4a180cbd0 --- /dev/null +++ b/var/spack/repos/builtin/packages/cap3/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cap3(Package): + """CAP3 is DNA Sequence Assembly Program""" + + homepage = "http://seq.cs.iastate.edu/" + url = "http://seq.cs.iastate.edu/CAP3/cap3.linux.x86_64.tar" + + version('2015-02-11', '5393d937978ecc5f18fcb741140e1f02', + url='http://seq.cs.iastate.edu/CAP3/cap3.linux.x86_64.tar') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('cap3', prefix.bin) + install('formcon', prefix.bin) + mkdirp(prefix.doc) + install('doc', prefix.doc) + install('aceform', prefix.doc) From 28cb1e43790ab1d7103e9a7705dfafa923c8977b Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Thu, 6 Jul 2017 21:07:54 -0700 Subject: [PATCH 1185/2394] patch config.guess after autoreconf step (#4604) --- lib/spack/spack/build_systems/autotools.py | 27 ++++++++-------------- 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index 4378d7aa589..84f019f1b34 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -95,10 +95,15 @@ class AutotoolsPackage(PackageBase): #: Options to be passed to autoreconf when using the default implementation autoreconf_extra_args = [] + @run_after('autoreconf') def _do_patch_config_guess(self): """Some packages ship with an older config.guess and need to have this updated when installed on a newer architecture.""" + if not self.patch_config_guess or not self.spec.satisfies( + 'arch=linux-rhel7-ppc64le' + ): + return my_config_guess = None config_guess = None if os.path.exists('config.guess'): @@ -120,11 +125,11 @@ def _do_patch_config_guess(self): try: check_call([my_config_guess], stdout=PIPE, stderr=PIPE) # The package's config.guess already runs OK, so just use it - return True + return except Exception: pass else: - return True + return # Look for a spack-installed automake package if 'automake' in self.spec: @@ -149,11 +154,11 @@ def _do_patch_config_guess(self): mod = stat(my_config_guess).st_mode & 0o777 | S_IWUSR os.chmod(my_config_guess, mod) shutil.copyfile(config_guess, my_config_guess) - return True + return except Exception: pass - return False + raise RuntimeError('Failed to find suitable config.guess') @property def configure_directory(self): @@ -176,20 +181,6 @@ def build_directory(self): """Override to provide another place to build the package""" return self.configure_directory - def patch(self): - """Patches config.guess if - :py:attr:``~.AutotoolsPackage.patch_config_guess`` is True - - :raise RuntimeError: if something goes wrong when patching - ``config.guess`` - """ - - if self.patch_config_guess and self.spec.satisfies( - 'arch=linux-rhel7-ppc64le' - ): - if not self._do_patch_config_guess(): - raise RuntimeError('Failed to find suitable config.guess') - @run_before('autoreconf') def delete_configure_to_force_update(self): if self.force_autoreconf: From 396e76eb7ce7b03eeba130efd3e3e5b182b8ab9d Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Fri, 7 Jul 2017 10:46:35 +0200 Subject: [PATCH 1186/2394] New Packages: gearshifft, clFFT (#4560) Adds the `gearshifft` package, a benchmark suite for heterogeneous implementations of FFTs. Adds clFFT, a software library containing FFT functions written in OpenCL. see: https://github.com/clMathLibraries/clFFT --- .../repos/builtin/packages/clfft/package.py | 55 ++++++++++++++ .../builtin/packages/gearshifft/package.py | 74 +++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 var/spack/repos/builtin/packages/clfft/package.py create mode 100644 var/spack/repos/builtin/packages/gearshifft/package.py diff --git a/var/spack/repos/builtin/packages/clfft/package.py b/var/spack/repos/builtin/packages/clfft/package.py new file mode 100644 index 00000000000..271d5c389af --- /dev/null +++ b/var/spack/repos/builtin/packages/clfft/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Clfft(CMakePackage): + """a software library containing FFT functions written in OpenCL""" + + homepage = "https://github.com/clMathLibraries/clFFT" + url = "https://github.com/clMathLibraries/clFFT/archive/v2.12.2.tar.gz" + + @property + def root_cmakelists_dir(self): + return join_path(self.stage.source_path, 'src') + + version('2.12.2', '9104d85f9f2f3c58dd8efc0e4b06496f') + + variant('client', default=True, + description='build client and callback client') + + depends_on('opencl@1.2:') + depends_on('boost@1.33.0:', when='+client') + + def cmake_args(self): + spec = self.spec + + args = [ + '-DBUILD_CLIENT:BOOL={0}'.format(( + 'ON' if '+client' in spec else 'OFF')), + '-DBUILD_CALLBACK_CLIENT:BOOL={0}'.format(( + 'ON' if '+client' in spec else 'OFF')) + ] + return args diff --git a/var/spack/repos/builtin/packages/gearshifft/package.py b/var/spack/repos/builtin/packages/gearshifft/package.py new file mode 100644 index 00000000000..b68be4a7db6 --- /dev/null +++ b/var/spack/repos/builtin/packages/gearshifft/package.py @@ -0,0 +1,74 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Gearshifft(CMakePackage): + """Benchmark Suite for Heterogenuous FFT Implementations""" + + homepage = "https://github.com/mpicbg-scicomp/gearshifft" + url = "https://github.com/mpicbg-scicomp/gearshifft/archive/v0.2.0.tar.gz" + + version('0.2.1-lw', 'c3208b767b24255b488a83e5d9e517ea') + + variant('cufft', default=True, + description='Compile gearshifft_cufft') + # variant('clfft', default=True, + # description='Compile gearshifft_clfft') + variant('fftw', default=True, + description='Compile gearshifft_fftw') + variant('openmp', default=True, + description='use OpenMP parallel fftw libraries') + # variant('hcfft', default=True, + # description='Not implemented yet') + + # depends_on C++14 compiler, e.g. GCC 5.0+ + depends_on('cmake@2.8.0:', type='build') + depends_on('boost@1.56.0:') + depends_on('cuda@8.0:', when='+cufft') + # depends_on('opencl@1.2:', when='+clfft') + # depends_on('clfft@2.12.0:', when='+clfft') + depends_on('fftw@3.3.4:~mpi~openmp', when='+fftw~openmp') + depends_on('fftw@3.3.4:~mpi+openmp', when='+fftw+openmp') + + def cmake_args(self): + spec = self.spec + + args = [ + '-DGEARSHIFFT_HCFFT:BOOL=OFF', + '-DGEARSHIFFT_FFTW_PTHREADS:BOOL=ON', + '-DGEARSHIFFT_CLFFT:BOOL=OFF' + ] + args.extend([ + '-DGEARSHIFFT_FFTW:BOOL={0}'.format(( + 'ON' if '+fftw' in spec else 'OFF')), + '-DGEARSHIFFT_FFTW_OPENMP:BOOL={0}'.format(( + 'ON' if '+openmp' in spec else 'OFF')), + '-DGEARSHIFFT_CUFFT:BOOL={0}'.format(( + 'ON' if '+cufft' in spec else 'OFF')) + # '-DGEARSHIFFT_CLFFT:BOOL={0}'.format(( + # 'ON' if '+clfft' in spec else 'OFF')) + ]) + return args From d64405a30fd533c45e5d72bdec555a4925108a89 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 7 Jul 2017 03:47:26 -0500 Subject: [PATCH 1187/2394] emboss: new package (#4691) --- .../repos/builtin/packages/emboss/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/emboss/package.py diff --git a/var/spack/repos/builtin/packages/emboss/package.py b/var/spack/repos/builtin/packages/emboss/package.py new file mode 100644 index 00000000000..d21f86a7b5d --- /dev/null +++ b/var/spack/repos/builtin/packages/emboss/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Emboss(AutotoolsPackage): + """EMBOSS is a free Open Source software analysis package specially + developed for the needs of the molecular biology (e.g. EMBnet) user + community""" + + homepage = "http://emboss.sourceforge.net/" + url = "ftp://emboss.open-bio.org/pub/EMBOSS/EMBOSS-6.6.0.tar.gz" + + version('6.6.0', 'cc3fca80cb0618deb10fa0d29fe90e4b') + + depends_on('libxpm') + depends_on('libgd') + depends_on('postgresql') From 46e3c2b2745e3e2e5b70d67d43898a30c0b4d875 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Fri, 7 Jul 2017 10:51:09 +0200 Subject: [PATCH 1188/2394] Isaac Server 1.3.1: New version (#4689) adds a new release of isaac-server. --- var/spack/repos/builtin/packages/isaac-server/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/isaac-server/package.py b/var/spack/repos/builtin/packages/isaac-server/package.py index 75e80959ac7..64575077231 100644 --- a/var/spack/repos/builtin/packages/isaac-server/package.py +++ b/var/spack/repos/builtin/packages/isaac-server/package.py @@ -39,6 +39,7 @@ def root_cmakelists_dir(self): git='https://github.com/ComputationalRadiationPhysics/isaac.git') version('master', branch='master', git='https://github.com/ComputationalRadiationPhysics/isaac.git') + version('1.3.1', '7fe075f9af68d05355eaba0e224f20ca') version('1.3.0', 'c8a794da9bb998ef0e75449bfece1a12') # variant('gstreamer', default=False, description= \ From 60a8b68a7e254ef67674fc9711910eb5a4eaa7a2 Mon Sep 17 00:00:00 2001 From: homerdin Date: Fri, 7 Jul 2017 03:54:34 -0500 Subject: [PATCH 1189/2394] Added TeaLeaf Package (#4683) --- .../repos/builtin/packages/tealeaf/package.py | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 var/spack/repos/builtin/packages/tealeaf/package.py diff --git a/var/spack/repos/builtin/packages/tealeaf/package.py b/var/spack/repos/builtin/packages/tealeaf/package.py new file mode 100644 index 00000000000..e8d60b4448b --- /dev/null +++ b/var/spack/repos/builtin/packages/tealeaf/package.py @@ -0,0 +1,77 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 glob + +from spack import * + + +class Tealeaf(MakefilePackage): + """Proxy Application. TeaLeaf is a mini-app that solves + the linear heat conduction equation on a spatially decomposed + regularly grid using a 5 point stencil with implicit solvers. + """ + + homepage = "http://uk-mac.github.io/TeaLeaf/" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/TeaLeaf/TeaLeaf-1.0.tar.gz" + + tags = ['proxy-app'] + + version('1.0', '02a907281ad2d09e70ca0a17551c6d79') + + depends_on('mpi') + + @property + def build_targets(self): + targets = [ + '--directory=TeaLeaf_ref', + 'MPI_COMPILER={0}'.format(self.spec['mpi'].mpifc), + 'C_MPI_COMPILER={0}'.format(self.spec['mpi'].mpicc), + ] + + if '%gcc' in self.spec: + targets.append('COMPILER=GNU') + elif '%cce' in self.spec: + targets.append('COMPILER=CRAY') + elif '%intel' in self.spec: + targets.append('COMPILER=INTEL') + elif '%pgi' in self.spec: + targets.append('COMPILER=PGI') + elif '%xl' in self.spec: + targets.append('COMPILER=XL') + + return targets + + def install(self, spec, prefix): + # Manual Installation + mkdirp(prefix.bin) + mkdirp(prefix.doc.tests) + + install('README.md', prefix.doc) + install('TeaLeaf_ref/tea_leaf', prefix.bin) + install('TeaLeaf_ref/tea.in', prefix.bin) + + for f in glob.glob('TeaLeaf_ref/*.in'): + install(f, prefix.doc.tests) From 1886b0b3701cecd729e650b3fd7e2e43c3ef617e Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 7 Jul 2017 03:11:53 -0600 Subject: [PATCH 1190/2394] New package: quinoa (#4686) --- .../repos/builtin/packages/quinoa/package.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 var/spack/repos/builtin/packages/quinoa/package.py diff --git a/var/spack/repos/builtin/packages/quinoa/package.py b/var/spack/repos/builtin/packages/quinoa/package.py new file mode 100644 index 00000000000..e65d3477596 --- /dev/null +++ b/var/spack/repos/builtin/packages/quinoa/package.py @@ -0,0 +1,65 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Quinoa(CMakePackage): + """Quinoa is a set of computational tools that enables research and + numerical analysis in fluid dynamics. At this time it is a test-bed + to experiment with various algorithms using fully asynchronous runtime + systems. + """ + + homepage = "http://quinoacomputing.org" + url = "https://github.com/quinoacomputing/quinoa/tarball/quinoa_v0.1" + + version('develop', git='https://github.com/quinoacomputing/quinoa', branch='master') + + variant('debug', default=False, description='Build debug version') + + depends_on('hdf5+mpi') + depends_on("charm backend=mpi") + depends_on("trilinos+exodus") + depends_on("boost") + depends_on("hypre~internal-superlu") + depends_on("random123") + depends_on("netlib-lapack+lapacke") + depends_on("mad-numdiff") + depends_on("h5part") + depends_on("boostmplcartesianproduct") + depends_on("tut") + depends_on("pugixml") + depends_on("pstreams") + depends_on("pegtl") + + root_cmakelists_dir = '../src' + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' From 56b959501aac18b18abf713c122132d065e849fa Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 7 Jul 2017 16:53:15 -0500 Subject: [PATCH 1191/2394] fastx-toolkit: solving gcc conflict (#4696) --- var/spack/repos/builtin/packages/fastx-toolkit/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/fastx-toolkit/package.py b/var/spack/repos/builtin/packages/fastx-toolkit/package.py index 7e06ba89eab..4f40ffe64ea 100644 --- a/var/spack/repos/builtin/packages/fastx-toolkit/package.py +++ b/var/spack/repos/builtin/packages/fastx-toolkit/package.py @@ -35,3 +35,5 @@ class FastxToolkit(AutotoolsPackage): version('0.0.14', 'bf1993c898626bb147de3d6695c20b40') depends_on('libgtextutils') + + conflicts('%gcc@7.1.0:') From efecefd4dd2483b350b496e0c192772dbc992f92 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 7 Jul 2017 20:15:38 -0700 Subject: [PATCH 1192/2394] Add a package for tophat (#4698) Lightly tested on CentOS 7. --- .../repos/builtin/packages/tophat/package.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/tophat/package.py diff --git a/var/spack/repos/builtin/packages/tophat/package.py b/var/spack/repos/builtin/packages/tophat/package.py new file mode 100644 index 00000000000..116db56b32f --- /dev/null +++ b/var/spack/repos/builtin/packages/tophat/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Tophat(AutotoolsPackage): + """Spliced read mapper for RNA-Seq.""" + + homepage = "http://ccb.jhu.edu/software/tophat/index.shtml" + url = "https://github.com/infphilo/tophat/archive/v2.1.1.tar.gz" + + version('2.1.1', 'ffd18de2f893a95eb7e9d0c5283d241f') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + depends_on('boost@1.47:') + depends_on('bowtie2', type='run') + + parallel = False + + def configure_args(self): + return ["--with-boost={0}".format(self.spec['boost'].prefix)] From 72aa99cb245afa8c0b6a3cf6fb7dcc6b46dd5f03 Mon Sep 17 00:00:00 2001 From: Mike DePaulo Date: Fri, 7 Jul 2017 23:17:52 -0400 Subject: [PATCH 1193/2394] GCC: Add strip variant to reduce installation size (#4670) * gcc: Add strip variant * gcc: Fix strip variant description being too long --- var/spack/repos/builtin/packages/gcc/package.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index b8d504a1d88..e9b9c93dd64 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -74,6 +74,9 @@ class Gcc(AutotoolsPackage): variant('piclibs', default=False, description='Build PIC versions of libgfortran.a and libstdc++.a') + variant('strip', + default=False, + description='Strip executables to reduce installation size') # https://gcc.gnu.org/install/prerequisites.html depends_on('gmp@4.3.2:') @@ -246,6 +249,12 @@ def build_targets(self): return ['bootstrap'] return [] + @property + def install_targets(self): + if '+strip' in self.spec: + return ['install-strip'] + return ['install'] + @property def spec_dir(self): # e.g. lib/gcc/x86_64-unknown-linux-gnu/4.9.2 From 1abf31d3fa84747d05131e8c376f0d8f4c55d873 Mon Sep 17 00:00:00 2001 From: EmreAtes Date: Sun, 9 Jul 2017 16:05:11 +0200 Subject: [PATCH 1194/2394] New package: CoMD (#4697) * New package: comd * Avoid re-defining build --- .../repos/builtin/packages/comd/package.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 var/spack/repos/builtin/packages/comd/package.py diff --git a/var/spack/repos/builtin/packages/comd/package.py b/var/spack/repos/builtin/packages/comd/package.py new file mode 100644 index 00000000000..e033e724b4f --- /dev/null +++ b/var/spack/repos/builtin/packages/comd/package.py @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 shutil +from spack import * + + +class Comd(MakefilePackage): + """CoMD is a reference implementation of classical molecular dynamics + algorithms and workloads as used in materials science. It is created and + maintained by The Exascale Co-Design Center for Materials in Extreme + Environments (ExMatEx). The code is intended to serve as a vehicle for + co-design by allowing others to extend and/or reimplement it as needed to + test performance of new architectures, programming models, etc. New + versions of CoMD will be released to incorporate the lessons learned from + the co-design process.""" + + homepage = "http://exmatex.github.io/CoMD/" + + version('master', git='https://github.com/exmatex/CoMD.git', + branch='master') + + depends_on('mpi') + + build_directory = 'src-mpi' + + def edit(self, spec, prefix): + with working_dir('src-mpi'): + filter_file(r'^CC\s*=.*', 'CC = %s' % self.spec['mpi'].mpicc, + 'Makefile.vanilla') + shutil.move('Makefile.vanilla', 'Makefile') + + def install(self, spec, prefix): + shutil.move('bin', prefix) From c80bca00ff9522e60112eb52cf0012439062022d Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 10 Jul 2017 12:26:03 -0500 Subject: [PATCH 1195/2394] ea-utils: new package (#4690) * ea-utils: new package * ea-utils: simplifying self.spec.prefix * ea-utils: added comment about perl * ea-utils: fixing flake8 error --- .../builtin/packages/ea-utils/package.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ea-utils/package.py diff --git a/var/spack/repos/builtin/packages/ea-utils/package.py b/var/spack/repos/builtin/packages/ea-utils/package.py new file mode 100644 index 00000000000..296b05eaf2f --- /dev/null +++ b/var/spack/repos/builtin/packages/ea-utils/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class EaUtils(MakefilePackage): + """Command-line tools for processing biological sequencing data. Barcode + demultiplexing, adapter trimming, etc. Primarily written to support an + Illumina based pipeline - but should work with any FASTQs.""" + + homepage = "http://expressionanalysis.github.io/ea-utils/" + url = "https://github.com/ExpressionAnalysis/ea-utils/archive/1.04.807.tar.gz" + + version('1.04.807', '5972b9f712920603b7527f46c0063a09') + + depends_on('subversion') + depends_on('zlib') + depends_on('gsl') + depends_on('bamtools') + # perl module required for make check, which is included in the default + # target + depends_on('perl', type='build') + + build_directory = 'clipper' + + def edit(self, spec, prefix): + with working_dir('clipper'): + makefile = FileFilter('Makefile') + makefile.filter('/usr', prefix) From 1f9d6927b746961ccfa28e7a9c90524bcb5516b4 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 10 Jul 2017 12:28:51 -0500 Subject: [PATCH 1196/2394] csdp: new pacakge (#4700) --- .../repos/builtin/packages/csdp/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/csdp/package.py diff --git a/var/spack/repos/builtin/packages/csdp/package.py b/var/spack/repos/builtin/packages/csdp/package.py new file mode 100644 index 00000000000..e459df00541 --- /dev/null +++ b/var/spack/repos/builtin/packages/csdp/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Csdp(MakefilePackage): + """CSDP is a library of routines that implements a predictor corrector + variant of the semidefinite programming algorithm of Helmberg, Rendl, + Vanderbei, and Wolkowicz""" + + homepage = "https://projects.coin-or.org/Csdp" + url = "http://www.coin-or.org/download/source/Csdp/Csdp-6.1.1.tgz" + + version('6.1.1', '8388e8988e337bb5c1291068828de801') + + depends_on('atlas') + + def edit(self, spec, prefix): + mkdirp(prefix.bin) + makefile = FileFilter('Makefile') + makefile.filter('/usr/local/bin', prefix.bin) From 02258056fd890c0fda40c0eba2c6a6cd7572f28e Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 10 Jul 2017 12:29:59 -0500 Subject: [PATCH 1197/2394] exabayes: new pacakge (#4695) * exabayes: new pacakge * exabayes: added configure arg * exabayes: adding comments regarding compilers --- .../builtin/packages/exabayes/package.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 var/spack/repos/builtin/packages/exabayes/package.py diff --git a/var/spack/repos/builtin/packages/exabayes/package.py b/var/spack/repos/builtin/packages/exabayes/package.py new file mode 100644 index 00000000000..85148474a22 --- /dev/null +++ b/var/spack/repos/builtin/packages/exabayes/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Exabayes(AutotoolsPackage): + """ExaBayes is a software package for Bayesian tree inference. It is + particularly suitable for large-scale analyses on computer clusters.""" + + homepage = "https://sco.h-its.org/exelixis/web/software/exabayes/" + url = "https://sco.h-its.org/exelixis/resource/download/software/exabayes-1.5.tar.gz" + + version('1.5', '6a734777b8f8eff0a520306500c8c419') + + variant('mpi', default=True, description='Enable MPI parallel support') + + depends_on('mpi', when='+mpi') + + # ExaBayes manual states the program succesfully compiles with GCC, version + # 4.6 or greater, and Clang, version 3.2 or greater. The build fails when + # GCC 7.1.0 is used. + conflicts('%gcc@:4.5.4, 7.1.0:') + conflicts('%clang@:3.1') + conflicts('^intel-mpi', when='+mpi') + conflicts('^intel-parallel-studio+mpi', when='+mpi') + conflicts('^mvapich2', when='+mpi') + conflicts('^spectrum-mpi', when='+mpi') + + def configure_args(self): + args = [] + if '+mpi' in self.spec: + args.append('--enable-mpi') + else: + args.append('--disable-mpi') + return args From c908ccecdced892b8a1a26d50c06f56bec0e7e75 Mon Sep 17 00:00:00 2001 From: homerdin Date: Mon, 10 Jul 2017 12:31:23 -0500 Subject: [PATCH 1198/2394] New Package: MiniAero (#4694) --- .../builtin/packages/miniaero/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/miniaero/package.py diff --git a/var/spack/repos/builtin/packages/miniaero/package.py b/var/spack/repos/builtin/packages/miniaero/package.py new file mode 100644 index 00000000000..471ecb9d0f5 --- /dev/null +++ b/var/spack/repos/builtin/packages/miniaero/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Miniaero(MakefilePackage): + """Proxy Application. MiniAero is a mini-application for the evaulation + of programming models and hardware for next generation platforms. + """ + + homepage = "http://mantevo.org" + url = "https://github.com/Mantevo/miniAero.git" + + tags = ['proxy-app'] + + version('2016-11-11', git='https://github.com/Mantevo/miniAero.git', + commit='f46d135479a5be19ec5d146ccaf0e581aeff4596') + + depends_on('kokkos') + + @property + def build_targets(self): + targets = [ + '--directory=kokkos', + 'CXX=c++', + 'KOKKOS_PATH={0}'.format(self.spec['kokkos'].prefix) + ] + + return targets + + def install(self, spec, prefix): + # Manual Installation + mkdirp(prefix.bin) + mkdirp(prefix.doc) + + install('kokkos/miniAero.host', prefix.bin) + install('kokkos/README', prefix.doc) + install('kokkos/tests/3D_Sod_Serial/miniaero.inp', prefix.bin) + install_tree('kokkos/tests', prefix.doc.tests) From 45e731d574b83e6f4cc35ee7e55e4cba0e061bfe Mon Sep 17 00:00:00 2001 From: homerdin Date: Mon, 10 Jul 2017 12:31:41 -0500 Subject: [PATCH 1199/2394] New Package: HPCCG (#4693) * New Package: HPCCG * Moved Run Script Install Location --- .../repos/builtin/packages/hpccg/package.py | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hpccg/package.py diff --git a/var/spack/repos/builtin/packages/hpccg/package.py b/var/spack/repos/builtin/packages/hpccg/package.py new file mode 100644 index 00000000000..7e9514ce0bb --- /dev/null +++ b/var/spack/repos/builtin/packages/hpccg/package.py @@ -0,0 +1,77 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Hpccg(MakefilePackage): + """Proxy Application. Intended to be the 'best approximation + to an unstructured implicit finite element or finite volume + application in 800 lines or fewer.' + """ + + homepage = "https://mantevo.org/about/applications/" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/HPCCG/HPCCG-1.0.tar.gz" + + tags = ['proxy-app'] + + version('1.0', '2e99da1a89de5ef0844da5e6ffbf39dc') + + variant('mpi', default=True, description='Build with MPI support') + variant('openmp', default=True, description='Build with OpenMP support') + + # Optional dependencies + depends_on('mpi', when='+mpi') + + @property + def build_targets(self): + targets = [] + + if '+mpi' in self.spec: + targets.append('CXX={0}'.format(self.spec['mpi'].mpicxx)) + targets.append('LINKER={0}'.format(self.spec['mpi'].mpicxx)) + targets.append('USE_MPI=-DUSING_MPI') + else: + targets.append('CXX=c++') + targets.append('LINKER=c++') + + if '+openmp' in self.spec: + targets.append('USE_OMP=-DUSING_OMP') + targets.append('OMP_FLAGS={0}'.format(self.compiler.openmp_flag)) + + # Remove Compiler Specific Optimization Flags + if '%gcc' not in self.spec: + targets.append('CPP_OPT_FLAGS=') + + return targets + + def install(self, spec, prefix): + # Manual installation + mkdirp(prefix.bin) + mkdirp(prefix.doc) + + install('test_HPCCG', prefix.bin) + install('README', prefix.doc) + install('weakScalingRunScript', prefix.bin) + install('strongScalingRunScript', prefix.bin) From 5bad9dfeacb76825e39b182c54fc0f9f4eb815bf Mon Sep 17 00:00:00 2001 From: homerdin Date: Mon, 10 Jul 2017 18:30:08 -0500 Subject: [PATCH 1200/2394] New Package: MiniAMR (#4701) * New Package: MiniAMR * Removed empty braces string formatting --- .../repos/builtin/packages/miniamr/package.py | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 var/spack/repos/builtin/packages/miniamr/package.py diff --git a/var/spack/repos/builtin/packages/miniamr/package.py b/var/spack/repos/builtin/packages/miniamr/package.py new file mode 100644 index 00000000000..7dc138ed449 --- /dev/null +++ b/var/spack/repos/builtin/packages/miniamr/package.py @@ -0,0 +1,70 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Miniamr(MakefilePackage): + """Proxy Application. 3D stencil calculation with + Adaptive Mesh Refinement (AMR) + """ + + homepage = "https://mantevo.org" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniAMR/miniAMR_1.0_all.tgz" + + tags = ['proxy-app'] + + version('1.0', '812e5aaaab99689a4e9381a3bbd718a6') + + variant('mpi', default=True, description='Build with MPI support') + + depends_on('mpi', when="+mpi") + + @property + def build_targets(self): + targets = [] + if '+mpi' in self.spec: + targets.append('CC={0}'.format(self.spec['mpi'].mpicc)) + targets.append('LDLIBS=-lm') + targets.append('--file=Makefile.mpi') + targets.append('--directory=miniAMR_ref') + else: + targets.append('--file=Makefile.serial') + targets.append('--directory=miniAMR_serial') + + return targets + + def install(self, spec, prefix): + # Manual installation + mkdir(prefix.bin) + mkdir(prefix.doc) + + if '+mpi' in spec: + install('miniAMR_ref/miniAMR.x', prefix.bin) + else: + install('miniAMR_serial/miniAMR.x', prefix.bin) + + # Install Support Documents + install('miniAMR_ref/README', prefix.doc) From 143d50ab677f2aa0319123027df3e67036b9f399 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 10 Jul 2017 18:30:24 -0500 Subject: [PATCH 1201/2394] fseq: new package (#4702) * fseq: new package * fseq: fixed dependency type --- .../repos/builtin/packages/fseq/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/fseq/package.py diff --git a/var/spack/repos/builtin/packages/fseq/package.py b/var/spack/repos/builtin/packages/fseq/package.py new file mode 100644 index 00000000000..b0d17eb69ee --- /dev/null +++ b/var/spack/repos/builtin/packages/fseq/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Fseq(Package): + """F-Seq: A Feature Density Estimator for High-Throughput Sequence Tags""" + + homepage = "http://fureylab.web.unc.edu/software/fseq/" + url = "http://fureylab.med.unc.edu/fseq/fseq_1.84.tgz" + + version('1.84', 'f9124ad0f45c60f3a7eb74dde8c945b9') + + depends_on('jdk', type=('build', 'run')) + + def install(self, spec, prefix): + install_tree('bin', prefix.bin) + install_tree('lib', prefix.lib) + install('mapviewToBed.pl', prefix.bin) From 3566966d4769dff87eca778a06c6a37e8e080e1a Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 11 Jul 2017 07:49:00 -0500 Subject: [PATCH 1202/2394] genometools: new package (#4706) * genometools: new package * genometools: fixing perl dependency type --- .../builtin/packages/genometools/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/genometools/package.py diff --git a/var/spack/repos/builtin/packages/genometools/package.py b/var/spack/repos/builtin/packages/genometools/package.py new file mode 100644 index 00000000000..afb45bdd84d --- /dev/null +++ b/var/spack/repos/builtin/packages/genometools/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################# +from spack import * + + +class Genometools(MakefilePackage): + """genometools is a free collection of bioinformatics tools (in the realm + of genome informatics) combined into a single binary named gt.""" + + homepage = "http://genometools.org/" + url = "http://genometools.org/pub/genometools-1.5.9.tar.gz" + + version('1.5.9', 'e400d69092f9f13db09b33f9dea39d2e') + + depends_on('perl', type=('build', 'run')) + depends_on('cairo') + depends_on('pango') + + # build fails with gcc 7" + conflicts('%gcc@7.1.0:') + + def install(self, spec, prefix): + make('install', 'prefix=%s' % prefix) From ff906faf9a67d33a5d15be829988ebd5de189ba4 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 11 Jul 2017 22:48:31 -0700 Subject: [PATCH 1203/2394] Typo: submdoules -> submodules (#4716) --- lib/spack/docs/packaging_guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index cdf4cc7e3ba..540d2a9e4ec 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -925,7 +925,7 @@ Submodules .. code-block:: python version('1.0.1', git='https://github.com/example-project/example.git', - tag='v1.0.1', submdoules=True) + tag='v1.0.1', submodules=True) .. _github-fetch: From a95f40f18ef75ff3d78d43d15509e4ce018be89f Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 11 Jul 2017 23:54:27 -0600 Subject: [PATCH 1204/2394] hpx: added new package (#4709) --- .../repos/builtin/packages/hpx/package.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hpx/package.py diff --git a/var/spack/repos/builtin/packages/hpx/package.py b/var/spack/repos/builtin/packages/hpx/package.py new file mode 100644 index 00000000000..ef7b347426c --- /dev/null +++ b/var/spack/repos/builtin/packages/hpx/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Hpx(CMakePackage): + """C++ runtime system for parallel and distributed applications.""" + + homepage = "http://stellar.cct.lsu.edu/tag/hpx/" + url = "http://stellar.cct.lsu.edu/files/hpx_1.0.0.tar.gz" + + version('1.0.0', '4983e7c6402417ec794d40343e36e417') + + depends_on('boost@1.55.0:') + depends_on('hwloc@1.6:') + + def cmake_args(self): + args = ['-DHPX_BUILD_EXAMPLES=OFF', '-DHPX_MALLOC=system'] + return args + + def build_type(self): + spec = self.spec + if '+debug' in spec: + return 'Debug' + else: + return 'Release' From 8873fc3a2024677d7970d248825e9c8ba080f985 Mon Sep 17 00:00:00 2001 From: kansakar Date: Wed, 12 Jul 2017 11:23:00 -0500 Subject: [PATCH 1205/2394] Jags: Adding jags defination --- .../repos/builtin/packages/jags/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/jags/package.py diff --git a/var/spack/repos/builtin/packages/jags/package.py b/var/spack/repos/builtin/packages/jags/package.py new file mode 100644 index 00000000000..7aa15c876cc --- /dev/null +++ b/var/spack/repos/builtin/packages/jags/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Jags(AutotoolsPackage): + """JAGS is Just Another Gibbs Sampler. It is a program for analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) simulation not wholly unlike BUGS""" + + homepage = "http://mcmc-jags.sourceforge.net/" + url = "https://downloads.sourceforge.net/project/mcmc-jags/JAGS/4.x/Source/JAGS-4.2.0.tar.gz" + + version('4.2.0', '9e521b3cfb23d3290a8c6bc0b79bf426') + + depends_on('m4', type='build') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + + depends_on('atlas') From d930c8d01abef0c772f1f4e2e0dc19ca88903290 Mon Sep 17 00:00:00 2001 From: Alen Kansakar Date: Wed, 12 Jul 2017 11:31:27 -0500 Subject: [PATCH 1206/2394] Jags: Fixing problems found by flack8 --- var/spack/repos/builtin/packages/jags/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/jags/package.py b/var/spack/repos/builtin/packages/jags/package.py index 7aa15c876cc..95d25a1caf0 100644 --- a/var/spack/repos/builtin/packages/jags/package.py +++ b/var/spack/repos/builtin/packages/jags/package.py @@ -27,10 +27,12 @@ class Jags(AutotoolsPackage): - """JAGS is Just Another Gibbs Sampler. It is a program for analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) simulation not wholly unlike BUGS""" + """JAGS is Just Another Gibbs Sampler. It is a program for analysis of + Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) + simulation not wholly unlike BUGS""" homepage = "http://mcmc-jags.sourceforge.net/" - url = "https://downloads.sourceforge.net/project/mcmc-jags/JAGS/4.x/Source/JAGS-4.2.0.tar.gz" + url = "https://downloads.sourceforge.net/project/mcmc-jags/JAGS/4.x/Source/JAGS-4.2.0.tar.gz" version('4.2.0', '9e521b3cfb23d3290a8c6bc0b79bf426') From 6ce33d7773cb65b0664a67b409e718eaa1b2e06d Mon Sep 17 00:00:00 2001 From: Alen Kansakar Date: Wed, 12 Jul 2017 14:52:54 -0500 Subject: [PATCH 1207/2394] Jags: Changing depends on to only include lapack --- var/spack/repos/builtin/packages/jags/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/jags/package.py b/var/spack/repos/builtin/packages/jags/package.py index 95d25a1caf0..07d7d5efe2f 100644 --- a/var/spack/repos/builtin/packages/jags/package.py +++ b/var/spack/repos/builtin/packages/jags/package.py @@ -41,4 +41,4 @@ class Jags(AutotoolsPackage): depends_on('automake', type='build') depends_on('libtool', type='build') - depends_on('atlas') + depends_on('netlib-lapack') From 5ac2020c988d5c2b2f74328d141c872df656136b Mon Sep 17 00:00:00 2001 From: Akhil Reddy Patlolla Date: Thu, 13 Jul 2017 07:30:01 -0500 Subject: [PATCH 1208/2394] Added ASPA Proxy App (#4743) --- .../repos/builtin/packages/aspa/package.py | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 var/spack/repos/builtin/packages/aspa/package.py diff --git a/var/spack/repos/builtin/packages/aspa/package.py b/var/spack/repos/builtin/packages/aspa/package.py new file mode 100644 index 00000000000..863c8a29806 --- /dev/null +++ b/var/spack/repos/builtin/packages/aspa/package.py @@ -0,0 +1,72 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob + + +class Aspa(MakefilePackage): + """A fundamental premise in ExMatEx is that scale-bridging performed in + heterogeneous MPMD materials science simulations will place important + demands upon the exascale ecosystem that need to be identified and + quantified. + tags = proxy-app + """ + tags = ['proxy-app'] + homepage = "http://www.exmatex.org/aspa.html" + url = "https://github.com/exmatex/ASPA/archive/master.tar.gz" + + version('master', git='https://github.com/exmatex/ASPA.git', + description='master') + variant('mpi', default=True, description='Build with MPI Support') + + depends_on('lapack') + depends_on('blas') + depends_on('mpi', when='+mpi') + depends_on('hdf5') + + @property + def build_targets(self): + targets = [ + '--directory=exec', + '--file=Makefile', + 'LIBS={0} {1} {2}'.format(self.spec['lapack'].libs.ld_flags, + self.spec['blas'].libs.ld_flags, + self.spec['hdf5'].libs.ld_flags), + 'CXX={0}'.format(self.spec['mpi'].mpicxx) + ] + return targets + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.doc) + mkdirp(prefix.input) + install('exec/aspa', prefix.bin) + install('exec/README', prefix.doc) + install('exec/aspa.inp', prefix.input) + install('exec/kriging_model_centers.txt', prefix.input) + install('exec/point_data.txt', prefix.input) + install('exec/value_data.txt', prefix.input) + for files in glob.glob('doc/*.*'): + install(files, prefix.doc) \ No newline at end of file From 1ecb389dcbd768db85619adbf849139fbe7e191c Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 13 Jul 2017 07:44:44 -0500 Subject: [PATCH 1209/2394] mitofates: new package and dependency libsvm (#4741) --- .../repos/builtin/packages/libsvm/package.py | 43 +++++++++++++++++++ .../builtin/packages/mitofates/package.py | 41 ++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libsvm/package.py create mode 100644 var/spack/repos/builtin/packages/mitofates/package.py diff --git a/var/spack/repos/builtin/packages/libsvm/package.py b/var/spack/repos/builtin/packages/libsvm/package.py new file mode 100644 index 00000000000..3a52d4f3efe --- /dev/null +++ b/var/spack/repos/builtin/packages/libsvm/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libsvm(MakefilePackage): + """Libsvm is a simple, easy-to-use, and efficient software for SVM + classification and regression.""" + + homepage = "https://www.csie.ntu.edu.tw/~cjlin/libsvm/" + url = "https://github.com/cjlin1/libsvm/archive/v322.tar.gz" + + version('322', 'd9617d29efad013573f63ca9a517f490') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.lib) + install('svm-predict', prefix.bin) + install('svm-scale', prefix.bin) + install('svm-train', prefix.bin) + install('svm.o', prefix.lib) diff --git a/var/spack/repos/builtin/packages/mitofates/package.py b/var/spack/repos/builtin/packages/mitofates/package.py new file mode 100644 index 00000000000..0ca4ae58f29 --- /dev/null +++ b/var/spack/repos/builtin/packages/mitofates/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mitofates(Package): + """MitoFates predicts mitochondrial presequence, a cleavable localization + signal located in N-terminal, and its cleaved position.""" + + homepage = "http://mitf.cbrc.jp/MitoFates/cgi-bin/top.cgi" + url = "http://mitf.cbrc.jp/MitoFates/program/MitoFates_1.2.tar.gz" + + version('1.2', 'aaac42a8e8c7318a4abde9df3a4b72d1') + + depends_on('libsvm') + + def install(self, spec, prefix): + install_tree('bin', prefix.bin) + install('MitoFates.pl', prefix) From 92e6616a8ab9a579aa9feee79809113228ec5c91 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 13 Jul 2017 14:51:45 +0200 Subject: [PATCH 1210/2394] dealii: workaround for concretization bug (#4735) * dealii: workaround for concretization bug * trilinos: add Anasazi which got disabled recently --- var/spack/repos/builtin/packages/dealii/package.py | 4 ++-- var/spack/repos/builtin/packages/trilinos/package.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 51d851b9b1b..ba1f8960108 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -113,8 +113,8 @@ class Dealii(CMakePackage): depends_on("hdf5+mpi", when='+hdf5+mpi') # FIXME: concretizer bug. The two lines mimic what comes from PETSc # but we should not need it - depends_on("metis@5:+int64", when='+metis+int64') - depends_on("metis@5:~int64", when='+metis~int64') + depends_on("metis@5:+int64+real64", when='+metis+int64') + depends_on("metis@5:~int64+real64", when='+metis~int64') depends_on("netcdf+mpi", when="+netcdf+mpi") depends_on("netcdf-cxx", when='+netcdf+mpi') depends_on("oce", when='+oce') diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 3c9940792d2..f3d1f611117 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -123,6 +123,8 @@ class Trilinos(CMakePackage): description='Compile with Amesos') variant('amesos2', default=True, description='Compile with Amesos2') + variant('anasazi', default=True, + description='Compile with Anasazi') variant('ifpack', default=True, description='Compile with Ifpack') variant('ifpack2', default=True, @@ -305,6 +307,8 @@ def cmake_args(self): 'ON' if '+gtest' in spec else 'OFF'), '-DTrilinos_ENABLE_Teuchos:BOOL=%s' % ( 'ON' if '+teuchos' in spec else 'OFF'), + '-DTrilinos_ENABLE_Anasazi:BOOL=%s' % ( + 'ON' if '+anasazi' in spec else 'OFF'), ]) if '+xsdkflags' in spec: From c7af89d8fc9dca4b9b35546f2ce765a3604ed1d7 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 13 Jul 2017 08:03:26 -0500 Subject: [PATCH 1211/2394] mcl: new package (#4732) --- .../repos/builtin/packages/mcl/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mcl/package.py diff --git a/var/spack/repos/builtin/packages/mcl/package.py b/var/spack/repos/builtin/packages/mcl/package.py new file mode 100644 index 00000000000..af3116313e4 --- /dev/null +++ b/var/spack/repos/builtin/packages/mcl/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mcl(AutotoolsPackage): + """The MCL algorithm is short for the Markov Cluster Algorithm, a fast + and scalable unsupervised cluster algorithm for graphs (also known + as networks) based on simulation of (stochastic) flow in graphs.""" + + homepage = "https://www.micans.org/mcl/index.html" + url = "https://www.micans.org/mcl/src/mcl-14-137.tar.gz" + + version('14-137', 'bc8740456cf51019d0a9ac5eba665bb5') From adcaa82b889da50012ddeb9661c73e441461abb8 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 13 Jul 2017 06:08:36 -0700 Subject: [PATCH 1212/2394] Add package for daligner (#4734) --- .../builtin/packages/daligner/package.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 var/spack/repos/builtin/packages/daligner/package.py diff --git a/var/spack/repos/builtin/packages/daligner/package.py b/var/spack/repos/builtin/packages/daligner/package.py new file mode 100644 index 00000000000..e6be60264c1 --- /dev/null +++ b/var/spack/repos/builtin/packages/daligner/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Daligner(MakefilePackage): + """Daligner: The Dazzler "Overlap" Module.""" + + homepage = "https://github.com/thegenemyers/DALIGNER" + url = "https://github.com/thegenemyers/DALIGNER/archive/V1.0.tar.gz" + + version('1.0', 'f1b4c396ae062caa4c0e6423ba0725ef') + + def edit(self, spec, prefix): + makefile = FileFilter('Makefile') + kwargs = {'ignore_absent': False, 'backup': False, 'string': True} + makefile.filter('cp $(ALL) ~/bin', + 'cp $(ALL) {0}'.format(prefix.bin), + **kwargs) + # He changed the Makefile in commit dae119. + # You'll need this instead if/when he cuts a new release + # or if you try to build from the tip of master. + # makefile.filter('DEST_DIR = .*', + # 'DEST_DIR = {0}'.format(prefix.bin)) + # or pass DEST_DIR in to the make + + @run_before('install') + def make_prefix_dot_bin(self): + mkdir(prefix.bin) From e257ea59c2f64463aeef8ec779fc9e2332b7cc38 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 13 Jul 2017 08:09:23 -0500 Subject: [PATCH 1213/2394] maverick: new package (#4731) --- .../builtin/packages/maverick/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/maverick/package.py diff --git a/var/spack/repos/builtin/packages/maverick/package.py b/var/spack/repos/builtin/packages/maverick/package.py new file mode 100644 index 00000000000..b480e5fc483 --- /dev/null +++ b/var/spack/repos/builtin/packages/maverick/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Maverick(MakefilePackage): + """MavericK is a program for inferring population structure on the basis + of genetic information.""" + + homepage = "https://github.com/bobverity/MavericK" + url = "https://github.com/bobverity/MavericK/archive/v1.0.4.tar.gz" + + version('1.0.4', '0c17c9a73fd0ac0aef17339173ddedc2') + + conflicts('%gcc@:6.0') + conflicts('%cce') + conflicts('%clang') + conflicts('%intel') + conflicts('%nag') + conflicts('%pgi') + conflicts('%xl') + conflicts('%xl_r') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('MavericK', prefix.bin) From 4cbe1b338fbe5ddd04f4bc49e8eeef9a1e822535 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 13 Jul 2017 08:26:17 -0500 Subject: [PATCH 1214/2394] last: new package (#4729) --- .../repos/builtin/packages/last/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/last/package.py diff --git a/var/spack/repos/builtin/packages/last/package.py b/var/spack/repos/builtin/packages/last/package.py new file mode 100644 index 00000000000..49d561f89b2 --- /dev/null +++ b/var/spack/repos/builtin/packages/last/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Last(MakefilePackage): + """LAST finds similar regions between sequences, and aligns them. It is + designed for comparing large datasets to each other (e.g. vertebrate + genomes and/or large numbers of DNA reads).""" + + homepage = "http://last.cbrc.jp/" + url = "http://last.cbrc.jp/last-869.zip" + + version('869', '12dced14418fb924a1b0604593274973') + + def install(self, spec, prefix): + make('install', 'prefix=%s' % prefix) From c104fa233af5de80bd5429cc33aa0e42bf4d0002 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 13 Jul 2017 08:32:55 -0500 Subject: [PATCH 1215/2394] infernal: new package (#4724) --- .../builtin/packages/infernal/package.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 var/spack/repos/builtin/packages/infernal/package.py diff --git a/var/spack/repos/builtin/packages/infernal/package.py b/var/spack/repos/builtin/packages/infernal/package.py new file mode 100644 index 00000000000..8719d0a2279 --- /dev/null +++ b/var/spack/repos/builtin/packages/infernal/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Infernal(AutotoolsPackage): + """Infernal (INFERence of RNA ALignment) is for searching DNA sequence + databases for RNA structure and sequence similarities. It is an + implementation of a special case of profile stochastic context-free + grammars called covariance models (CMs).""" + + homepage = "http://eddylab.org/infernal/" + url = "http://eddylab.org/infernal/infernal-1.1.2.tar.gz" + + version('1.1.2', 'a73e6bbab0c4b79af2cc4c0aabb8accc') + + variant('mpi', default=False, description='Enable MPI parallel support') + + depends_on('mpi', when='+mpi') + + def configure_args(self): + args = [] + if '+mpi' in self.spec: + args.append('--enable-mpi') + else: + args.append('--disable-mpi') + return args From bde58a319b5837bf24cc6d2cc4fec5a2e597a854 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 13 Jul 2017 08:35:22 -0500 Subject: [PATCH 1216/2394] idba: new package (#4722) --- .../repos/builtin/packages/idba/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/idba/package.py diff --git a/var/spack/repos/builtin/packages/idba/package.py b/var/spack/repos/builtin/packages/idba/package.py new file mode 100644 index 00000000000..25a3e029aa1 --- /dev/null +++ b/var/spack/repos/builtin/packages/idba/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Idba(AutotoolsPackage): + """IDBA is a practical iterative De Bruijn Graph De Novo Assembler for + sequence assembly in bioinfomatics.""" + + homepage = "http://i.cs.hku.hk/~alse/hkubrg/projects/idba/" + url = "https://github.com/loneknightpy/idba/archive/1.1.3.tar.gz" + + version('1.1.3', '303d9b4af7a7498b56ac9698028b4e15') + + depends_on('m4', type='build') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + + conflicts('%cce') + conflicts('%clang') + conflicts('%intel') + conflicts('%nag') + conflicts('%pgi') + conflicts('%xl') + conflicts('%xl_r') From 47fe9e7aad850bf2d650b33e5faa32cb7fe312a4 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 13 Jul 2017 08:14:15 -0600 Subject: [PATCH 1217/2394] Adding OpenMP variant to Trilinos. Also building NetCDF with PNetCDF directly, for Trilinos. (#4687) * Adding OpenMP variant to Trilinos. Also building NetCDF with PNetCDF in Trilinos when necessary. * Adding runtime error for PNetCDF variant in Trilinos when necessary. Omitting unnecessary openmp variant for Trilinos in Nalu. * Changing variant checks to conflicts statements. * Adding comments to Trilinos package. --- .../builtin/packages/trilinos/package.py | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index f3d1f611117..74022f08331 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -151,6 +151,8 @@ class Trilinos(CMakePackage): description='Enable DataTransferKit') variant('fortrilinos', default=False, description='Enable ForTrilinos') + variant('openmp', default=False, + description='Enable OpenMP') resource(name='dtk', git='https://github.com/ornl-cees/DataTransferKit', @@ -167,6 +169,13 @@ class Trilinos(CMakePackage): conflicts('+fortrilinos', when='~fortran') conflicts('+fortrilinos', when='@:99') conflicts('+fortrilinos', when='@master') + # Can only use one type of SuperLU + conflicts('+superlu-dist', when='+superlu') + # For Trilinos v11 we need to force SuperLUDist=OFF, since only the + # deprecated SuperLUDist v3.3 together with an Amesos patch is working. + conflicts('+superlu-dist', when='@:11.14.3') + # PnetCDF was only added after v12.10.1 + conflicts('+pnetcdf', when='@:12.10.1') # ###################### Dependencies ########################## @@ -183,9 +192,9 @@ class Trilinos(CMakePackage): # MPI related dependencies depends_on('mpi') - depends_on('netcdf+mpi') - depends_on('parallel-netcdf', when="+pnetcdf@master") - depends_on('parallel-netcdf', when="+pnetcdf@12.10.2:") + depends_on('netcdf+mpi', when="~pnetcdf") + depends_on('netcdf+mpi+parallel-netcdf', when="+pnetcdf@master") + depends_on('netcdf+mpi+parallel-netcdf', when="+pnetcdf@12.10.2:") depends_on('parmetis', when='+metis') # Trilinos' Tribits config system is limited which makes it very tricky to # link Amesos with static MUMPS, see @@ -218,23 +227,8 @@ def url_for_version(self, version): url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz" return url.format(version.dashed) - # check that the combination of variants makes sense - def variants_check(self): - if ('+superlu-dist' in self.spec and - self.spec.satisfies('@11.14.1:11.14.3')): - # For Trilinos v11 we need to force SuperLUDist=OFF, since only the - # deprecated SuperLUDist v3.3 together with an Amesos patch is - # working. - raise RuntimeError('The superlu-dist variant can only be used' + - ' with Trilinos @12.0.1:') - if '+superlu-dist' in self.spec and '+superlu' in self.spec: - # Only choose one type of superlu - raise RuntimeError('The superlu-dist and superlu variant' + - ' cannot be used together') - def cmake_args(self): spec = self.spec - self.variants_check() cxx_flags = [] options = [] @@ -346,7 +340,8 @@ def cmake_args(self): '-DTrilinos_ENABLE_SEACASEpu:BOOL=ON', '-DTrilinos_ENABLE_SEACASExodiff:BOOL=ON', '-DTrilinos_ENABLE_SEACASNemspread:BOOL=ON', - '-DTrilinos_ENABLE_SEACASNemslice:BOOL=ON' + '-DTrilinos_ENABLE_SEACASNemslice:BOOL=ON', + '-DTrilinos_ENABLE_SEACASIoss:BOOL=ON' ]) else: options.extend([ @@ -527,6 +522,17 @@ def cmake_args(self): # ################# Miscellaneous Stuff ###################### + # OpenMP + if '+openmp' in spec: + options.extend([ + '-DTrilinos_ENABLE_OpenMP:BOOL=ON', + '-DKokkos_ENABLE_OpenMP:BOOL=ON' + ]) + if '+tpetra' in spec: + options.extend([ + '-DTpetra_INST_OPENMP:BOOL=ON' + ]) + # Fortran lib if '+fortran' in spec: if spec.satisfies('%gcc') or spec.satisfies('%clang'): From d68aa0386830dd000d831f7b3f147776860ab806 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 13 Jul 2017 09:21:37 -0500 Subject: [PATCH 1218/2394] graphmap: new package (#4707) --- .../builtin/packages/graphmap/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/graphmap/package.py diff --git a/var/spack/repos/builtin/packages/graphmap/package.py b/var/spack/repos/builtin/packages/graphmap/package.py new file mode 100644 index 00000000000..954fc7622a9 --- /dev/null +++ b/var/spack/repos/builtin/packages/graphmap/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Graphmap(MakefilePackage): + """A highly sensitive and accurate mapper for long, error-prone reads""" + + homepage = "https://github.com/isovic/graphmap" + url = "https://github.com/isovic/graphmap/archive/v0.3.0.tar.gz" + + version('0.3.0', git='https://github.com/isovic/graphmap.git', commit='eb8c75d68b03be95464318afa69b645a59f8f6b7') + + def edit(self, spec, prefix): + mkdirp(prefix.bin) + makefile = FileFilter('Makefile') + makefile.filter('/usr/bin/graphmap', prefix.bin.graphmap) + + def build(self, spec, prefix): + make('modules') + make() From 34aea1328af8a00a221e03601a9db21aea0d82f3 Mon Sep 17 00:00:00 2001 From: homerdin Date: Thu, 13 Jul 2017 09:22:45 -0500 Subject: [PATCH 1219/2394] New Package: CloverLeaf3D (#4705) * New Package: CloverLeaf3D * Fixed Flake8 Mistake * Removed unnecessary check --- .../builtin/packages/cloverleaf3d/package.py | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cloverleaf3d/package.py diff --git a/var/spack/repos/builtin/packages/cloverleaf3d/package.py b/var/spack/repos/builtin/packages/cloverleaf3d/package.py new file mode 100644 index 00000000000..5616912255b --- /dev/null +++ b/var/spack/repos/builtin/packages/cloverleaf3d/package.py @@ -0,0 +1,93 @@ +############################################################################# +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 glob + +from spack import * + + +class Cloverleaf3d(MakefilePackage): + """Proxy Application. CloverLeaf3D is 3D version of the + CloverLeaf mini-app. CloverLeaf is a mini-app that solves + the compressible Euler equations on a Cartesian grid, + using an explicit, second-order accurate method. + """ + + homepage = "http://uk-mac.github.io/CloverLeaf3D/" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/CloverLeaf3D/CloverLeaf3D-1.0.tar.gz" + + tags = ['proxy-app'] + + version('1.0', '2e86cadd7612487f9da4ddeb1a6de939') + + variant('openacc', default=False, description='Enable OpenACC Support') + + depends_on('mpi') + + @property + def type_of_build(self): + build = 'ref' + + if '+openacc' in self.spec: + build = 'OpenACC' + + return build + + @property + def build_targets(self): + targets = [ + 'MPI_COMPILER={0}'.format(self.spec['mpi'].mpifc), + 'C_MPI_COMPILER={0}'.format(self.spec['mpi'].mpicc), + '--directory=CloverLeaf3D_{0}'.format(self.type_of_build) + ] + + if '%gcc' in self.spec: + targets.append('COMPILER=GNU') + elif '%cce' in self.spec: + targets.append('COMPILER=CRAY') + elif '%intel' in self.spec: + targets.append('COMPILER=INTEL') + elif '%pgi' in self.spec: + targets.append('COMPILER=PGI') + elif '%xl' in self.spec: + targets.append('COMPILER=XLF') + + return targets + + def install(self, spec, prefix): + # Manual Installation + mkdirp(prefix.bin) + mkdirp(prefix.doc.samples) + + install('README.md', prefix.doc) + + install('CloverLeaf3D_{0}/clover_leaf'.format(self.type_of_build), + prefix.bin) + install('CloverLeaf3D_{0}/clover.in'.format(self.type_of_build), + prefix.bin) + + for f in glob.glob( + 'CloverLeaf3D_{0}/*.in'.format(self.type_of_build)): + install(f, prefix.doc.samples) From 29fd8961794df3bf3c526739ed81704cac4d8e14 Mon Sep 17 00:00:00 2001 From: Alen Kansakar Date: Thu, 13 Jul 2017 09:48:30 -0500 Subject: [PATCH 1220/2394] jags: Adding atlas as it depends on atlas --- var/spack/repos/builtin/packages/jags/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/jags/package.py b/var/spack/repos/builtin/packages/jags/package.py index 07d7d5efe2f..95d25a1caf0 100644 --- a/var/spack/repos/builtin/packages/jags/package.py +++ b/var/spack/repos/builtin/packages/jags/package.py @@ -41,4 +41,4 @@ class Jags(AutotoolsPackage): depends_on('automake', type='build') depends_on('libtool', type='build') - depends_on('netlib-lapack') + depends_on('atlas') From 3eedbd7c4ecac9573a799947ffd679cd04cc1051 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 13 Jul 2017 22:02:08 -0500 Subject: [PATCH 1221/2394] py-deeptools: new package and dependencies (#4717) * py-deeptools: new package and dependencies * py-deeptools: fixing python things * missed a fix --- .../builtin/packages/bcftools/package.py | 2 + .../builtin/packages/py-deeptools/package.py | 45 +++++++++++++++++++ .../builtin/packages/py-py2bit/package.py | 36 +++++++++++++++ .../builtin/packages/py-pybigwig/package.py | 37 +++++++++++++++ .../builtin/packages/py-pysam/package.py | 39 ++++++++++++++++ 5 files changed, 159 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-deeptools/package.py create mode 100644 var/spack/repos/builtin/packages/py-py2bit/package.py create mode 100644 var/spack/repos/builtin/packages/py-pybigwig/package.py create mode 100644 var/spack/repos/builtin/packages/py-pysam/package.py diff --git a/var/spack/repos/builtin/packages/bcftools/package.py b/var/spack/repos/builtin/packages/bcftools/package.py index 6a276709ef6..6555692fab2 100644 --- a/var/spack/repos/builtin/packages/bcftools/package.py +++ b/var/spack/repos/builtin/packages/bcftools/package.py @@ -39,6 +39,8 @@ class Bcftools(Package): depends_on('zlib') depends_on('bzip2', when="@1.4:") + # build fails without xz + depends_on('xz', when="@1.4") def install(self, spec, prefix): make("prefix=%s" % prefix, "all") diff --git a/var/spack/repos/builtin/packages/py-deeptools/package.py b/var/spack/repos/builtin/packages/py-deeptools/package.py new file mode 100644 index 00000000000..e4e1ec25837 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-deeptools/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyDeeptools(PythonPackage): + """deepTools addresses the challenge of handling the large amounts of data + that are now routinely generated from DNA sequencing centers.""" + + homepage = "https://pypi.io/packages/source/d/deepTools" + url = "https://pypi.io/packages/source/d/deepTools/deepTools-2.5.2.tar.gz" + + version('2.5.2', 'ba8a44c128c6bb1ed4ebdb20bf9ae9c2') + + depends_on('python@2.7:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-numpy@1.9.0:', type=('build', 'run')) + depends_on('py-scipy@0.17.0:', type=('build', 'run')) + depends_on('py-py2bit@0.2.0:', type=('build', 'run')) + depends_on('py-pybigwig@0.2.1:', type=('build', 'run')) + depends_on('py-pysam@0.8.2:', type=('build', 'run')) + depends_on('py-matplotlib@1.4.0:', type=('build', 'run')) + depends_on('py-numpydoc@0.5:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-py2bit/package.py b/var/spack/repos/builtin/packages/py-py2bit/package.py new file mode 100644 index 00000000000..d48fb7e9b99 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-py2bit/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPy2bit(PythonPackage): + """A package for accessing 2bit files using lib2bit.""" + + homepage = "https://pypi.python.org/pypi/py2bit" + url = "https://pypi.io/packages/source/p/py2bit/py2bit-0.2.1.tar.gz" + + version('0.2.1', 'eaf5b1c80a0bbf0b35af1f002f83a556') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pybigwig/package.py b/var/spack/repos/builtin/packages/py-pybigwig/package.py new file mode 100644 index 00000000000..4d96ba58c0a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pybigwig/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPybigwig(PythonPackage): + """A package for accessing bigWig files using libBigWig.""" + + homepage = "https://pypi.python.org/pypi/pyBigWig" + url = "https://pypi.io/packages/source/p/pyBigWig/pyBigWig-0.3.4.tar.gz" + + version('0.3.4', '8e0a91e26e87eeaa071408a3a749bfa9') + + depends_on('py-setuptools', type='build') + depends_on('curl', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pysam/package.py b/var/spack/repos/builtin/packages/py-pysam/package.py new file mode 100644 index 00000000000..cf470ea5643 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pysam/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPysam(PythonPackage): + """A python module for reading, manipulating and writing genomic data + sets.""" + + homepage = "https://pypi.python.org/pypi/pysam" + url = "https://pypi.io/packages/source/p/pysam/pysam-0.11.2.2.tar.gz" + + version('0.11.2.2', '56230cd5f55b503845915b76c22d620a') + + depends_on('py-setuptools', type='build') + depends_on('py-cython@0.21:', type='build') + depends_on('bcftools') From f63cdc7b612b5d8e060cd3bd54f1850d4e656bbe Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Thu, 13 Jul 2017 22:07:22 -0500 Subject: [PATCH 1222/2394] Add two python packages for editing mach-O headers. (#4725) * Add two python packages for editing mach-O headers. Much faster than calling otool and install_name_tool directly * remove non-overriding function * autopep8 --- .../builtin/packages/py-macholib/package.py | 36 ++++++++++++++++++ .../builtin/packages/py-machotools/package.py | 37 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-macholib/package.py create mode 100644 var/spack/repos/builtin/packages/py-machotools/package.py diff --git a/var/spack/repos/builtin/packages/py-macholib/package.py b/var/spack/repos/builtin/packages/py-macholib/package.py new file mode 100644 index 00000000000..80d9ee4a535 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-macholib/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyMacholib(PythonPackage): + """Python package for Mach-O header analysis and editing""" + + homepage = "https://pypi.python.org/pypi/macholib" + url = "https://pypi.io/packages/source/m/macholib/macholib-1.8.tar.gz" + + version('1.8', '65af8f20dada7bdb2a142afbec51330e') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-machotools/package.py b/var/spack/repos/builtin/packages/py-machotools/package.py new file mode 100644 index 00000000000..ec0e1f364c0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-machotools/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyMachotools(PythonPackage): + """Python package for editing Mach-O headers using macholib""" + + homepage = "https://pypi.python.org/pypi/machotools" + url = "https://pypi.io/packages/source/m/machotools/machotools-0.2.0.tar.gz" + + version('0.2.0', 'bcc68332c4a80b4f84ec9c8083465416') + + depends_on('py-setuptools', type='build') + depends_on('py-macholib', type=('build', 'run')) From dfd56da358f4863af37c3406853169f2a9368833 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Thu, 13 Jul 2017 22:21:30 -0500 Subject: [PATCH 1223/2394] New Package:XSBench (#4751) * New Package:XSBench * minor changes * replaced extend() with append() * addressed comment. * removed tags as per PR# 4749 --- .../repos/builtin/packages/xsbench/package.py | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 var/spack/repos/builtin/packages/xsbench/package.py diff --git a/var/spack/repos/builtin/packages/xsbench/package.py b/var/spack/repos/builtin/packages/xsbench/package.py new file mode 100644 index 00000000000..6cf5e04d772 --- /dev/null +++ b/var/spack/repos/builtin/packages/xsbench/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Xsbench(MakefilePackage): + """XSBench is a mini-app representing a key computational + kernel of the Monte Carlo neutronics application OpenMC. + A full explanation of the theory and purpose of XSBench + is provided in docs/XSBench_Theory.pdf.""" + + homepage = "https://github.com/ANL-CESAR/XSBench/" + url = "https://github.com/ANL-CESAR/XSBench/archive/v13.tar.gz" + + version('13', '72a92232d2f5777fb52f5ea4082aff37') + + variant('mpi', default=False, description='Build with MPI support') + + depends_on('mpi', when='+mpi') + + @property + def build_targets(self): + + targets = [ + '--directory=src', + ] + + if '+mpi' in self.spec: + targets.append('MPI=yes') + targets.append('CC={0}'.format(self.spec['mpi'].mpicc)) + + return targets + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('src/XSBench', prefix.bin) From d929ea8102bf9d5e7f2ffdd794cb9546511270ba Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 14 Jul 2017 15:00:28 +0200 Subject: [PATCH 1224/2394] slepc: fix download url (#4763) --- var/spack/repos/builtin/packages/slepc/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 934b173b2d9..2b4b03147d4 100644 --- a/var/spack/repos/builtin/packages/slepc/package.py +++ b/var/spack/repos/builtin/packages/slepc/package.py @@ -32,7 +32,7 @@ class Slepc(Package): """ homepage = "http://www.grycap.upv.es/slepc" - url = "http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz" + url = "http://slepc.upv.es/download/distrib/slepc-3.6.2.tar.gz" version('3.7.4', '2fb782844e3bc265a8d181c3c3e2632a4ca073111c874c654f1365d33ca2eb8a') version('3.7.3', '3ef9bcc645a10c1779d56b3500472ceb66df692e389d635087d30e7c46424df9') From 0d8b126d66308610d6f17be4f560cbee2551438c Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Fri, 14 Jul 2017 17:28:15 +0200 Subject: [PATCH 1225/2394] libwebsockets: new versions (#4764) * libwebsockets: new versions both new versions fix a nasty bug leading to a hanging connection on connect. * ISAAC Server: Fix libwebsockets ISAAC server did hang in docker containers due to a bug in libwebsockets. --- var/spack/repos/builtin/packages/isaac-server/package.py | 2 +- var/spack/repos/builtin/packages/libwebsockets/package.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/isaac-server/package.py b/var/spack/repos/builtin/packages/isaac-server/package.py index 64575077231..c13a1d8aec5 100644 --- a/var/spack/repos/builtin/packages/isaac-server/package.py +++ b/var/spack/repos/builtin/packages/isaac-server/package.py @@ -49,5 +49,5 @@ def root_cmakelists_dir(self): depends_on('libjpeg-turbo', type='link') depends_on('jansson', type='link') depends_on('boost@1.56:', type='link') - depends_on('libwebsockets', type='link') + depends_on('libwebsockets@2.1.1:', type='link') # depends_on('gstreamer@1.0', when='+gstreamer') diff --git a/var/spack/repos/builtin/packages/libwebsockets/package.py b/var/spack/repos/builtin/packages/libwebsockets/package.py index d74ff722731..b840c9d0f00 100644 --- a/var/spack/repos/builtin/packages/libwebsockets/package.py +++ b/var/spack/repos/builtin/packages/libwebsockets/package.py @@ -31,6 +31,8 @@ class Libwebsockets(CMakePackage): homepage = "https://github.com/warmcat/libwebsockets" url = "https://github.com/warmcat/libwebsockets/archive/v2.1.0.tar.gz" + version('2.2.1', '1f641cde2ab3687db3d553f68fe0f620') + version('2.1.1', '674684ffb90d4a0bcf7a075eb7b90192') version('2.1.0', '4df3be57dee43aeebd54a3ed56568f50') version('2.0.3', 'a025156d606d90579e65d53ccd062a94') version('1.7.9', '7b3692ead5ae00fd0e1d56c080170f07') From b3692d14fdc164912c9d0587620d4d99ea2a4a57 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Fri, 14 Jul 2017 12:37:52 -0500 Subject: [PATCH 1226/2394] New Package: EBMS (#4749) --- .../repos/builtin/packages/ebms/package.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ebms/package.py diff --git a/var/spack/repos/builtin/packages/ebms/package.py b/var/spack/repos/builtin/packages/ebms/package.py new file mode 100644 index 00000000000..2e80572bd02 --- /dev/null +++ b/var/spack/repos/builtin/packages/ebms/package.py @@ -0,0 +1,46 @@ +############################################################################# +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Ebms(MakefilePackage): + """This is a miniapp for the Energy Banding Monte Carlo (EBMC) + neutron transportation simulation code. It is adapted from a + similar miniapp provided by Andrew Siegel, whose algorithm is + described in [1], where only one process in a compute node + is used, and the compute nodes are divided into memory nodes + and tracking nodes. Memory nodes do not participate in particle + tracking. Obviously, there is a lot of resource waste in this design.""" + + homepage = "https://github.com/ANL-CESAR/EBMS" + url = "https://github.com/ANL-CESAR/EBMS/archive/master.tar.gz" + + version('develop', git='https://github.com/ANL-CESAR/EBMS.git') + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('ebmc-iallgather', prefix.bin) + install('ebmc-rget', prefix.bin) From 76d95b1798c77491b3f85c431c2ed37e50b7a20c Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Fri, 14 Jul 2017 12:40:18 -0500 Subject: [PATCH 1227/2394] New Package: Nekbone. (#4748) --- .../repos/builtin/packages/nekbone/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nekbone/package.py diff --git a/var/spack/repos/builtin/packages/nekbone/package.py b/var/spack/repos/builtin/packages/nekbone/package.py new file mode 100644 index 00000000000..ec6cc0b38b6 --- /dev/null +++ b/var/spack/repos/builtin/packages/nekbone/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Nekbone(Package): + """NEK5000 emulation software called NEKbone. Nekbone captures the basic + structure and user interface of the extensive Nek5000 software. + Nek5000 is a high order, incompressible Navier-Stokes solver based on + the spectral element method.""" + + homepage = "https://github.com/ANL-CESAR/" + url = "https://github.com/ANL-CESAR/nekbone.git" + + version('develop', git='https://github.com/ANL-CESAR/nekbone.git') + + def install(self, spec, prefix): + + working_dirs = ['example1', 'example2', 'example3', 'nek_comm', + 'nek_delay', 'nek_mgrid'] + mkdir(prefix.bin) + + for wdir in working_dirs: + with working_dir('test/' + wdir): + makenek = Executable('./makenek') + path = join_path(prefix.bin, wdir) + makenek('ex1', '../../src') + mkdir(path) + install('nekbone', path) + install('nekpmpi', path) From c78ee4a733202ab45affaa9211e7fdd8f4c31b99 Mon Sep 17 00:00:00 2001 From: homerdin Date: Fri, 14 Jul 2017 15:46:20 -0500 Subject: [PATCH 1228/2394] Package/cloverleaf (#4759) * New Package: CloverLeaf * Removed Tag and Added Documentation * Corrected Dependencies and Variant Values --- .../builtin/packages/cloverleaf/package.py | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cloverleaf/package.py diff --git a/var/spack/repos/builtin/packages/cloverleaf/package.py b/var/spack/repos/builtin/packages/cloverleaf/package.py new file mode 100644 index 00000000000..cd152acb6b8 --- /dev/null +++ b/var/spack/repos/builtin/packages/cloverleaf/package.py @@ -0,0 +1,108 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 glob + +from spack import * + + +class Cloverleaf(MakefilePackage): + """Proxy Application. CloverLeaf is a miniapp that solves the + compressible Euler equations on a Cartesian grid, + using an explicit, second-order accurate method. + """ + + homepage = "http://uk-mac.github.io/CloverLeaf" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/CloverLeaf/CloverLeaf-1.1.tar.gz" + + version('1.1', '65652b30a64eb237ec844a6fdd4cd518') + + variant('build', default='ref', description='Type of Parallelism Build', + values=('cuda', 'mpi_only', 'openacc_cray', + 'openmp_only', 'ref', 'serial')) + + depends_on('mpi', when='build=cuda') + depends_on('mpi', when='build=mpi_only') + depends_on('mpi', when='build=openacc_cray') + depends_on('mpi', when='build=ref') + depends_on('cuda', when='build=cuda') + + @property + def type_of_build(self): + build = 'ref' + + if 'build=cuda' in self.spec: + build = 'CUDA' + elif 'build=mpi_only' in self.spec: + build = 'MPI' + elif 'build=openacc_cray' in self.spec: + build = 'OpenACC_CRAY' + elif 'build=openmp_only' in self.spec: + build = 'OpenMP' + elif 'build=serial' in self.spec: + build = 'Serial' + + return build + + @property + def build_targets(self): + targets = ['--directory=CloverLeaf_{0}'.format(self.type_of_build)] + + if 'mpi' in self.spec: + targets.append('MPI_COMPILER={0}'.format(self.spec['mpi'].mpifc)) + targets.append('C_MPI_COMPILER={0}'.format(self.spec['mpi'].mpicc)) + else: + targets.append('MPI_COMPILER=f90') + targets.append('C_MPI_COMPILER=cc') + + if '%gcc' in self.spec: + targets.append('COMPILER=GNU') + elif '%cce' in self.spec: + targets.append('COMPILER=CRAY') + elif '%intel' in self.spec: + targets.append('COMPILER=INTEL') + elif '%pgi' in self.spec: + targets.append('COMPILER=PGI') + elif '%xl' in self.spec: + targets.append('COMPILER=XLF') + + return targets + + def install(self, spec, prefix): + # Manual Installation + mkdirp(prefix.bin) + mkdirp(prefix.doc.tests) + + install('README.md', prefix.doc) + install('documentation.txt', prefix.doc) + + install('CloverLeaf_{0}/clover_leaf'.format(self.type_of_build), + prefix.bin) + install('CloverLeaf_{0}/clover.in'.format(self.type_of_build), + prefix.bin) + + for f in glob.glob( + 'CloverLeaf_{0}/*.in'.format(self.type_of_build)): + install(f, prefix.doc.tests) From 1e205c09d88a4c8ca0a4a84b8d65d9d2ca2279d7 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 14 Jul 2017 15:48:30 -0500 Subject: [PATCH 1229/2394] hybpiper: new package (#4720) * hybpiper: new package and spades dependency * hybpiper: making flkae8 happy * hybpiper: fixing dependency errors * fixing python dep type * removing cmake from spade dependencies --- .../builtin/packages/hybpiper/package.py | 59 +++++++++++++++++++ .../repos/builtin/packages/spades/package.py | 45 ++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hybpiper/package.py create mode 100644 var/spack/repos/builtin/packages/spades/package.py diff --git a/var/spack/repos/builtin/packages/hybpiper/package.py b/var/spack/repos/builtin/packages/hybpiper/package.py new file mode 100644 index 00000000000..a9e49cef908 --- /dev/null +++ b/var/spack/repos/builtin/packages/hybpiper/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob +import os + + +class Hybpiper(Package): + """HybPiper was designed for targeted sequence capture, in which DNA + sequencing libraries are enriched for gene regions of interest, + especially for phylogenetics. HybPiper is a suite of Python scripts + that wrap and connect bioinformatics tools in order to extract target + sequences from high-throughput DNA sequencing reads""" + + homepage = "https://github.com/mossmatters/HybPiper" + url = "https://github.com/mossmatters/HybPiper/archive/v1.2.0.tar.gz" + + version('1.2.0', '0ad78e9ca5e3f23ae0eb6236b07e1780') + + depends_on('python@2.7:', type=('build', 'run')) + depends_on('py-biopython', type=('build', 'run')) + depends_on('exonerate') + depends_on('blast-plus') + depends_on('spades') + depends_on('parallel') + depends_on('bwa') + depends_on('samtools') + + def setup_envionment(self, spack_env, run_env): + run_env.set('HYBPIPER_HOME', prefix) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + files = glob.iglob("*.py") + for file in files: + if os.path.isfile(file): + install(file, prefix.bin) diff --git a/var/spack/repos/builtin/packages/spades/package.py b/var/spack/repos/builtin/packages/spades/package.py new file mode 100644 index 00000000000..c7e4469f5ec --- /dev/null +++ b/var/spack/repos/builtin/packages/spades/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Spades(CMakePackage): + """SPAdes - St. Petersburg genome assembler - is intended for both + standard isolates and single-cell MDA bacteria assemblies.""" + + homepage = "http://cab.spbu.ru/software/spades/" + url = "http://cab.spbu.ru/files/release3.10.1/SPAdes-3.10.1.tar.gz" + + version('3.10.1', 'dcab7d145af81b59cc867562f27536c3') + + depends_on('python', type=('build', 'run')) + depends_on('zlib') + depends_on('bzip2') + + conflicts('%gcc@7.1.0:') + + @property + def root_cmakelists_dir(self): + return join_path(self.stage.source_path, 'src') From ea8c05b263d826d0f4f2ad5fe7a6a782c1d1ebb8 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 14 Jul 2017 13:49:02 -0700 Subject: [PATCH 1230/2394] Add package for Sniffles (#4719) * Add package for Sniffles * Wire up a manual install step The cmake infra doesn't install anything, so do it by hand. The binaries land in a location that embeds the version... --- .../builtin/packages/sniffles/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sniffles/package.py diff --git a/var/spack/repos/builtin/packages/sniffles/package.py b/var/spack/repos/builtin/packages/sniffles/package.py new file mode 100644 index 00000000000..9d890b03dfb --- /dev/null +++ b/var/spack/repos/builtin/packages/sniffles/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Sniffles(CMakePackage): + """Structural variation caller using third generation sequencing.""" + + homepage = "https://github.com/fritzsedlazeck/Sniffles/wiki" + url = "https://github.com/fritzsedlazeck/Sniffles/archive/v1.0.5.tar.gz" + + version('1.0.5', 'c2f2350d00418ba4d82c074e7f0b1832') + + # the build process doesn't actually install anything, do it by hand + def install(self, spec, prefix): + mkdir(prefix.bin) + src = "bin/sniffles-core-{0}".format(spec.version.dotted) + binaries = ['sniffles', 'sniffles-debug'] + for b in binaries: + install(join_path(src, b), join_path(prefix.bin, b)) From 88cb8b493b5a5816f501f480e8e6612289565fae Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 14 Jul 2017 13:49:46 -0700 Subject: [PATCH 1231/2394] Add package for freebayes (#4718) * Add package for freebayes * Don't include url, must use git info. * Fix flake8 complaints --- .../builtin/packages/freebayes/package.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 var/spack/repos/builtin/packages/freebayes/package.py diff --git a/var/spack/repos/builtin/packages/freebayes/package.py b/var/spack/repos/builtin/packages/freebayes/package.py new file mode 100644 index 00000000000..9fb7fd11614 --- /dev/null +++ b/var/spack/repos/builtin/packages/freebayes/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Freebayes(MakefilePackage): + """Bayesian haplotype-based genetic polymorphism discovery and + genotyping.""" + + homepage = "https://github.com/ekg/freebayes" + + version('1.1.0', git='https://github.com/ekg/freebayes.git', + commit='39e5e4bcb801556141f2da36aba1df5c5c60701f', + submodules=True) + + depends_on('cmake', type='build') + depends_on('zlib') + + parallel = False + + def edit(self, spec, prefix): + makefile = FileFilter('Makefile') + b = prefix.bin + makefile.filter('cp bin/freebayes bin/bamleftalign /usr/local/bin/', + 'cp bin/freebayes bin/bamleftalign {0}'.format(b)) + + @run_before('install') + def make_prefix_dot_bin(self): + mkdir(prefix.bin) From f5f37845d611b3c88fd74a892d5543c629f391ad Mon Sep 17 00:00:00 2001 From: homerdin Date: Fri, 14 Jul 2017 15:54:31 -0500 Subject: [PATCH 1232/2394] New Package: Pathfinder (#4714) * New Package: Pathfinder * Added index for String format * Changed to make Makefile edit more specific * Make Flake8 Happy * Removed unneeded conversion --- .../builtin/packages/pathfinder/package.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pathfinder/package.py diff --git a/var/spack/repos/builtin/packages/pathfinder/package.py b/var/spack/repos/builtin/packages/pathfinder/package.py new file mode 100644 index 00000000000..85432ffd491 --- /dev/null +++ b/var/spack/repos/builtin/packages/pathfinder/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Pathfinder(MakefilePackage): + """Proxy Application. Signature search.""" + + homepage = "https://mantevo.org/packages/" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/PathFinder/PathFinder_1.0.0.tgz" + + tags = ['proxy-app'] + + version('1.0.0', '374269e8d42c305eda3e392444e22dde') + + build_targets = ['--directory=PathFinder_ref', 'CC=cc'] + + def edit(self, spec, prefix): + makefile = FileFilter('PathFinder_ref/Makefile') + makefile.filter('-fopenmp', self.compiler.openmp_flag) + + def install(self, spec, prefix): + # Manual installation + mkdirp(prefix.bin) + mkdirp(prefix.doc) + + install('PathFinder_ref/PathFinder.x', prefix.bin) + install('PathFinder_ref/MicroTestData.adj_list', prefix.bin) + install('README', prefix.doc) + + install_tree('generatedData/', prefix.doc.generatedData) + install_tree('scaleData/', prefix.doc.scaleData) From 31503cb058f28088c3f4031c30ff59fe8046dbe0 Mon Sep 17 00:00:00 2001 From: Kshitij Mehta Date: Fri, 14 Jul 2017 16:54:57 -0400 Subject: [PATCH 1233/2394] Savanna (#4713) * savanna: Runtime framework for online workflow management from the ECP CODAR project * savanna: added version 0.5 * savanna: Copying the package contents to prefix as part of installation * savanna: Doing submodules=true for git checkout of develop version * savanna: removed dependency on adios@develop. depends on adios * Savanna: Converted package to MakefilePackage --- .../repos/builtin/packages/savanna/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/savanna/package.py diff --git a/var/spack/repos/builtin/packages/savanna/package.py b/var/spack/repos/builtin/packages/savanna/package.py new file mode 100644 index 00000000000..1459ce5443e --- /dev/null +++ b/var/spack/repos/builtin/packages/savanna/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree + + +class Savanna(MakefilePackage): + """CODARcode Savanna runtime framework for high performance, + workflow management using Swift/T and ADIOS. + """ + + homepage = "https://github.com/CODARcode/savanna" + url = "https://github.com/CODARcode/savanna/archive/v0.5.tar.gz" + + version('develop', git='https://github.com/CODARcode/savanna.git', + branch='master', submodules=True) + version('0.5', '3f13adf29ec30f4acb2ba3fa07ed12b2') + + variant('tau', default=False, description='Enable TAU profiling support') + + depends_on('mpi') + depends_on('stc') + depends_on('adios +staging') + depends_on('mpix-launch-swift') + depends_on('tau', when='+tau') + + def install(self, spec, prefix): + copy_tree('.', prefix) From 246c07f864d2db571f7e3ab55e875a4e75b93281 Mon Sep 17 00:00:00 2001 From: homerdin Date: Fri, 14 Jul 2017 15:55:51 -0500 Subject: [PATCH 1234/2394] New Package: miniFE (#4712) * New Package: miniFE * Removed extra property, using variant value directly --- .../repos/builtin/packages/minife/package.py | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 var/spack/repos/builtin/packages/minife/package.py diff --git a/var/spack/repos/builtin/packages/minife/package.py b/var/spack/repos/builtin/packages/minife/package.py new file mode 100644 index 00000000000..ced755d112f --- /dev/null +++ b/var/spack/repos/builtin/packages/minife/package.py @@ -0,0 +1,80 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 tarfile + +from spack import * + + +class Minife(MakefilePackage): + """Proxy Application. MiniFE is an proxy application + for unstructured implicit finite element codes. + """ + + homepage = "https://mantevo.org/" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniFE/miniFE-2.0.1.tgz" + + tags = ['proxy-app'] + + version('2.0.1', '3113d7c8fc01495d08552672b0dbd015') + + variant('build', default='ref', description='Type of Parallelism', + values=('ref', 'openmp_ref', 'qthreads', 'kokkos')) + + depends_on('mpi') + depends_on('qthreads', when='build=qthreads') + + @property + def build_version(self): + return self.version.up_to(2) + + @property + def build_targets(self): + targets = [ + '--directory=miniFE-{0}_{1}/src'.format( + self.build_version, self.spec.variants['build'].value), + 'CXX={0}'.format(self.spec['mpi'].mpicxx), + 'CC={0}'.format(self.spec['mpi'].mpicc) + ] + + return targets + + def edit(self, spec, prefix): + inner_tar = tarfile.open(name='miniFE-{0}_{1}.tgz'.format( + self.build_version, + self.spec.variants['build'].value)) + inner_tar.extractall() + + makefile = FileFilter('miniFE-{0}_{1}/src/Makefile'.format( + self.build_version, + self.spec.variants['build'].value)) + + makefile.filter('-fopenmp', self.compiler.openmp_flag, string=True) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('miniFE-{0}_{1}/src/miniFE.x'.format( + self.build_version, self.spec.variants['build'].value), + prefix.bin) From 8bd22c3294b0157782139dc8a53859ba93923fed Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sat, 15 Jul 2017 09:05:51 -0700 Subject: [PATCH 1235/2394] Add package for Somatic Sniper (#4778) Lightly tested on CentOS 7. --- .../packages/somatic-sniper/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/somatic-sniper/package.py diff --git a/var/spack/repos/builtin/packages/somatic-sniper/package.py b/var/spack/repos/builtin/packages/somatic-sniper/package.py new file mode 100644 index 00000000000..1f2b4b470a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/somatic-sniper/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class SomaticSniper(CMakePackage): + """A tool to call somatic single nucleotide variants.""" + + homepage = "http://gmt.genome.wustl.edu/packages/somatic-sniper" + url = "https://github.com/genome/somatic-sniper/archive/v1.0.5.0.tar.gz" + + version('1.0.5.0', '64bc2b001c9a8089f2a05900f8a0abfe') + + parallel = False From 8e6d7f117aa1e5f2e53bd2598a35a327d83b2cea Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sat, 15 Jul 2017 09:06:43 -0700 Subject: [PATCH 1236/2394] Add package for MuSE (#4779) --- .../repos/builtin/packages/muse/package.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/muse/package.py diff --git a/var/spack/repos/builtin/packages/muse/package.py b/var/spack/repos/builtin/packages/muse/package.py new file mode 100644 index 00000000000..54dcdf9d154 --- /dev/null +++ b/var/spack/repos/builtin/packages/muse/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Muse(MakefilePackage): + """Somatic point mutation caller.""" + + homepage = "http://bioinformatics.mdanderson.org/main/MuSE" + url = "https://github.com/danielfan/MuSE/archive/v1.0-rc.tar.gz" + + version('1.0-rc', 'c63fdb48c041f6f9545879f1a7e4da58') + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('MuSE', prefix.bin.MuSE) From ad2a22fa0124a9d824479303e3d38b33d9c8946c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sat, 15 Jul 2017 09:08:36 -0700 Subject: [PATCH 1237/2394] Add package for r-ada, update r-rpart version (#4772) * Add package for r-ada, update r-rpart version Adds a package for r-ada. Update the version for r-rpart because the previous version is no longer at that URL. The previous version *is* in the Archive, but list_url does not seem to be able to find it. * Clean up FIXMEs (blush) --- .../repos/builtin/packages/r-ada/package.py | 37 +++++++++++++++++++ .../repos/builtin/packages/r-rpart/package.py | 2 + 2 files changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/r-ada/package.py diff --git a/var/spack/repos/builtin/packages/r-ada/package.py b/var/spack/repos/builtin/packages/r-ada/package.py new file mode 100644 index 00000000000..27b1f8c95a2 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ada/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RAda(RPackage): + """Performs discrete, real, and gentle boost under both exponential + and logistic loss on a given data set.""" + + homepage = "https://cran.r-project.org/web/packages/ada/index.html" + url = "https://cran.r-project.org/src/contrib/ada_2.0-5.tar.gz" + + version('2.0-5', '25ac0dc2650fba9e19f3d15c7c6721c1') + + depends_on('r-rpart', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rpart/package.py b/var/spack/repos/builtin/packages/r-rpart/package.py index ea857ad926c..9d2ed2df4dd 100644 --- a/var/spack/repos/builtin/packages/r-rpart/package.py +++ b/var/spack/repos/builtin/packages/r-rpart/package.py @@ -31,7 +31,9 @@ class RRpart(RPackage): homepage = "https://cran.r-project.org/package=rpart" url = "https://cran.r-project.org/src/contrib/rpart_4.1-10.tar.gz" + list_url = "https://cran.r-project.org/src/contrib/Archive/rpart" + version('4.1-11', 'f77b37cddf7e9a7b5993a52a750b8817') version('4.1-10', '15873cded4feb3ef44d63580ba3ca46e') depends_on('r@2.15.0:') From 89ef576ba4e707eef653c670b32fa40d862e79ec Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sat, 15 Jul 2017 09:11:54 -0700 Subject: [PATCH 1238/2394] Add package for the Python regex library (#4771) Lightly tested on CentOS 7 with `python@2.7.13` and `python@3.6.0`. --- .../builtin/packages/py-regex/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-regex/package.py diff --git a/var/spack/repos/builtin/packages/py-regex/package.py b/var/spack/repos/builtin/packages/py-regex/package.py new file mode 100644 index 00000000000..a13dd019193 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-regex/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyRegex(PythonPackage): + """Alternative regular expression module, to replace re.""" + + homepage = "https://pypi.python.org/pypi/regex/" + url = "https://pypi.io/packages/source/r/regex/regex-2017.07.11.tar.gz" + + version('2017.07.11', '95f81ebb5273c7ad9a0c4d1ac5a94eb4') + + depends_on('py-setuptools', type='build') From 7e32756fceec665199242830493bfd12d3c23458 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Sat, 15 Jul 2017 12:03:55 -0500 Subject: [PATCH 1239/2394] orfm: new package (#4769) --- .../repos/builtin/packages/orfm/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/orfm/package.py diff --git a/var/spack/repos/builtin/packages/orfm/package.py b/var/spack/repos/builtin/packages/orfm/package.py new file mode 100644 index 00000000000..11ff3c4c7b0 --- /dev/null +++ b/var/spack/repos/builtin/packages/orfm/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Orfm(AutotoolsPackage): + """A simple and not slow open reading frame (ORF) caller. No bells or + whistles like frameshift detection, just a straightforward goal of + returning a FASTA file of open reading frames over a certain length + from a FASTA/Q file of nucleotide sequences.""" + + homepage = "https://github.com/wwood/OrfM" + url = "https://github.com/wwood/OrfM/releases/download/v0.7.1/orfm-0.7.1.tar.gz" + + version('0.7.1', 'fcf18283a028cea2af90663a76a73a2a') From febf41e0e2ced27e6ea78cef731840e57cf83c88 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 17 Jul 2017 15:40:22 +0200 Subject: [PATCH 1240/2394] pkg-config: aclocal env (#4736) Always sets the `pkg-config` environment hint for autotools. Required dependency for `autoreconf` of ZeroMQ when build from source (e.g. v4.2.2) via autotools in `autogen.sh` step for `autoreconf`. --- .../repos/builtin/packages/pkg-config/package.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py index dfb6608cf36..39306e33cd8 100644 --- a/var/spack/repos/builtin/packages/pkg-config/package.py +++ b/var/spack/repos/builtin/packages/pkg-config/package.py @@ -44,15 +44,18 @@ class PkgConfig(AutotoolsPackage): parallel = False - @when('platform=cray') def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """spack built pkg-config on cray's requires adding /usr/local/ and /usr/lib64/ to PKG_CONFIG_PATH in order to access cray '.pc' - files.""" - spack_env.append_path('PKG_CONFIG_PATH', '/usr/lib64/pkgconfig') - spack_env.append_path('PKG_CONFIG_PATH', '/usr/local/lib64/pkgconfig') + files. + Adds the ACLOCAL path for autotools.""" spack_env.append_path('ACLOCAL_PATH', join_path(self.prefix.share, 'aclocal')) + if 'platform=cray' in self.spec: + spack_env.append_path('PKG_CONFIG_PATH', + '/usr/lib64/pkgconfig') + spack_env.append_path('PKG_CONFIG_PATH', + '/usr/local/lib64/pkgconfig') def configure_args(self): config_args = ['--enable-shared'] From c110d03f95214613b40bf00634b865f427f6b71d Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 17 Jul 2017 15:40:48 +0200 Subject: [PATCH 1241/2394] ZeroMQ: 4.2.2 & develop (#4785) The 4.X branches are now on the homepage, so we take the GitHub release artifact (careful: take their upload, not the automatic tarball). Adds a development version of ZeroMQ. Requires a autogen run, as for all their unreleased versions, and the pkg-config fix in #4736 --- var/spack/repos/builtin/packages/zeromq/package.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/var/spack/repos/builtin/packages/zeromq/package.py b/var/spack/repos/builtin/packages/zeromq/package.py index 680d67c7b00..945459b9481 100644 --- a/var/spack/repos/builtin/packages/zeromq/package.py +++ b/var/spack/repos/builtin/packages/zeromq/package.py @@ -30,6 +30,10 @@ class Zeromq(AutotoolsPackage): homepage = "http://zguide.zeromq.org/" url = "http://download.zeromq.org/zeromq-4.1.2.tar.gz" + version('develop', branch='master', + git='https://github.com/zeromq/libzmq.git') + version('4.2.2', '52499909b29604c1e47a86f1cb6a9115', + url='https://github.com/zeromq/libzmq/releases/download/v4.2.2/zeromq-4.2.2.tar.gz') version('4.1.4', 'a611ecc93fffeb6d058c0e6edf4ad4fb') version('4.1.2', '159c0c56a895472f02668e692d122685') version('4.1.1', '0a4b44aa085644f25c177f79dc13f253') @@ -40,6 +44,16 @@ class Zeromq(AutotoolsPackage): depends_on("libsodium") depends_on("libsodium@:1.0.3", when='@:4.1.2') + depends_on('autoconf', type='build', when='@develop') + depends_on('automake', type='build', when='@develop') + depends_on('libtool', type='build', when='@develop') + depends_on('pkg-config', type='build', when='@develop') + + @when('@develop') + def autoreconf(self, spec, prefix): + bash = which('bash') + bash('./autogen.sh') + def configure_args(self): config_args = ['--with-libsodium'] if 'clang' in self.compiler.cc: From f43e4890db70f15375ee2c1764ec99311cb906c6 Mon Sep 17 00:00:00 2001 From: homerdin Date: Mon, 17 Jul 2017 09:13:46 -0500 Subject: [PATCH 1242/2394] Package/minighost (#4773) * New Package: miniGhost * Fixed empty string formatting --- .../builtin/packages/minighost/package.py | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 var/spack/repos/builtin/packages/minighost/package.py diff --git a/var/spack/repos/builtin/packages/minighost/package.py b/var/spack/repos/builtin/packages/minighost/package.py new file mode 100644 index 00000000000..a1d62052ac8 --- /dev/null +++ b/var/spack/repos/builtin/packages/minighost/package.py @@ -0,0 +1,94 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 tarfile + +from spack import * + + +class Minighost(MakefilePackage): + """Proxy Application. A Finite Difference proxy + application which implements a difference stencil + across a homogenous three dimensional domain. + """ + + homepage = "http://mantevo.org" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniGhost/miniGhost_1.0.1.tar.gz" + + version('1.0.1', '2a4ac4383e9be00f87b6067c3cfe6463') + + variant('mpi', default=True, description='Enable MPI Support') + + depends_on('mpi', when='+mpi') + + parallel = False + + @property + def build_targets(self): + targets = ['--directory=miniGhost_ref'] + + if '+mpi' in self.spec: + targets.append('PROTOCOL=-D_MG_MPI') + targets.append('FC={0}'.format(self.spec['mpi'].mpif77)) + targets.append('CC={0}'.format(self.spec['mpi'].mpicc)) + targets.append( + 'LIBS=-lm -lgfortran -lmpi_usempi -lmpi_mpifh -lmpi') + else: + targets.append('PROTOCOL=-D_MG_SERIAL') + targets.append('FC=f77') + targets.append('CC=cc') + targets.append('LIBS=-lm -lgfortran') + + if '%gcc' in self.spec: + targets.append('COMPILER_SUITE=gnu') + elif '%cce' in self.spec: + targets.append('COMPILER_SUITE=cray') + elif '%intel' in self.spec: + targets.append('COMPILER_SUITE=intel') + elif '%pgi' in self.spec: + targets.append('COMPILER_SUITE=pgi') + + return targets + + def edit(self, spec, prefix): + inner_tar = tarfile.open( + 'miniGhost_ref_{0}.tar.gz'.format(self.version.up_to(3))) + inner_tar.extractall() + + def install(self, spec, prefix): + # Manual Installation + mkdirp(prefix.bin) + mkdirp(prefix.doc) + + install('miniGhost_ref/miniGhost.x', prefix.bin) + install('miniGhost_ref/default-settings.h', prefix.bin) + + if '+mpi' in spec: + install('miniGhost_ref/runtest.mpi', prefix.bin) + install('miniGhost_ref/runtest.mpi.ds', prefix.bin) + else: + install('miniGhost_ref/runtest.serial', prefix.bin) + + install('README', prefix.doc) From 62f5eafc5522255fc57c04f27cb54095041aff63 Mon Sep 17 00:00:00 2001 From: homerdin Date: Mon, 17 Jul 2017 09:15:15 -0500 Subject: [PATCH 1243/2394] New Package: miniSMAC2D (#4767) --- .../builtin/packages/minismac2d/package.py | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 var/spack/repos/builtin/packages/minismac2d/package.py diff --git a/var/spack/repos/builtin/packages/minismac2d/package.py b/var/spack/repos/builtin/packages/minismac2d/package.py new file mode 100644 index 00000000000..687ea744556 --- /dev/null +++ b/var/spack/repos/builtin/packages/minismac2d/package.py @@ -0,0 +1,78 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Minismac2d(MakefilePackage): + """Proxy Application. Solves the finite-differenced 2D incompressible + Navier-Stokes equations with Spalart-Allmaras one-equation + turbulence model on a structured body conforming grid. + """ + + homepage = "http://mantevo.org" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniSMAC2D/miniSMAC2D-2.0.tgz" + + version('2.0', '1bb1a52cea21bc9162bf7a71a6ddf37d') + + depends_on('mpi') + + parallel = False + + @property + def build_targets(self): + targets = [ + 'CPP=cpp', + 'FC={0}'.format(self.spec['mpi'].mpifc), + 'LD={0}'.format(self.spec['mpi'].mpifc), + 'MPIDIR=-I{0}/include'.format(self.spec['mpi'].prefix), + 'CPPFLAGS=-P -traditional -DD_PRECISION', + 'FFLAGS=-O3 -c -g -DD_PRECISION', + 'LDFLAGS=-O3', + '--file=Makefile_mpi_only' + ] + + return targets + + def edit(self, spec, prefix): + # Editing input file to point to installed data files + param_file = FileFilter('smac2d.in') + param_file.filter('bcmain_directory=.*', "bcmain_directory='.'") + param_file.filter('bcmain_filename=.*', + "bcmain_filename='bcmain.dat_original_119x31'") + param_file.filter('xygrid_directory=.*', "xygrid_directory='.'") + param_file.filter('xygrid_filename=.*', + "xygrid_filename='xy.dat_original_119x31'") + + def install(self, spec, prefix): + # Manual Installation + mkdirp(prefix.bin) + mkdirp(prefix.doc) + + install('smac2d_mpi_only', prefix.bin) + install('bcmain.dat_original_119x31', prefix.bin) + install('xy.dat_original_119x31', prefix.bin) + install('smac2d.in', prefix.bin) + install('README.txt', prefix.doc) From 990d60d3400b672a630a42653b2f61c07e46271a Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 17 Jul 2017 09:20:49 -0500 Subject: [PATCH 1244/2394] mrbayes: new package (#4757) * mrbayes: new package * fixing beagle version * fixing typos * fixing libbeagle dependency types --- .../builtin/packages/libbeagle/package.py | 47 ++++++++++++ .../repos/builtin/packages/mrbayes/package.py | 72 +++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libbeagle/package.py create mode 100644 var/spack/repos/builtin/packages/mrbayes/package.py diff --git a/var/spack/repos/builtin/packages/libbeagle/package.py b/var/spack/repos/builtin/packages/libbeagle/package.py new file mode 100644 index 00000000000..f459c5f738a --- /dev/null +++ b/var/spack/repos/builtin/packages/libbeagle/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libbeagle(AutotoolsPackage): + """Beagle performs genotype calling, genotype phasing, imputation of + ungenotyped markers, and identity-by-descent segment detection.""" + + homepage = "https://github.com/beagle-dev/beagle-lib" + url = "https://github.com/beagle-dev/beagle-lib/archive/beagle_release_2_1_2.tar.gz" + + version('2.1.2', '1107614e86f652f8ee45c1c92f2af3d4') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + depends_on('subversion', type='build') + depends_on('pkg-config', type='build') + + def url_for_version(self, version): + url = "https://github.com/beagle-dev/beagle-lib/archive/beagle_release_{0}.tar.gz" + return url.format(version.underscored) diff --git a/var/spack/repos/builtin/packages/mrbayes/package.py b/var/spack/repos/builtin/packages/mrbayes/package.py new file mode 100644 index 00000000000..05038b69314 --- /dev/null +++ b/var/spack/repos/builtin/packages/mrbayes/package.py @@ -0,0 +1,72 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mrbayes(AutotoolsPackage): + """MrBayes is a program for Bayesian inference and model choice across a + wide range of phylogenetic and evolutionary models. MrBayes uses Markov + chain Monte Carlo (MCMC) methods to estimate the posterior distribution + of model parameters.""" + + homepage = "http://mrbayes.sourceforge.net" + url = "https://downloads.sourceforge.net/project/mrbayes/mrbayes/3.2.6/mrbayes-3.2.6.tar.gz" + + version('3.2.6', '95f9822f24be47b976bf87540b55d1fe') + + variant('mpi', default=True, description='Enable MPI parallel support') + variant('beagle', default=True, description='Enable BEAGLE library for speed benefits') + variant('sse', default=True, description='Enable SSE in order to substantially speed up execution') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + depends_on('libbeagle', when='+beagle') + depends_on('mpi', when='+mpi') + + configure_directory = 'src' + + def configure_args(self): + args = [] + if '~beagle' in self.spec: + args.append('--with-beagle=no') + else: + args.append('--with-beagle=%s' % self.spec['libbeagle'].prefix) + if '~sse' in self.spec: + args.append('--enable-sse=no') + else: + args.append('--enable-sse=yes') + if '~mpi' in self.spec: + args.append('--enable-mpi=no') + else: + args.append('--enable-mpi=yes') + return args + + def install(self, spec, prefix): + mkdirp(prefix.bin) + with working_dir('src'): + install('mb', prefix.bin) From 9c9f0c9612d3fe2c160e82d6c99a4b9d3b97b2af Mon Sep 17 00:00:00 2001 From: Kshitij Mehta Date: Mon, 17 Jul 2017 10:33:57 -0400 Subject: [PATCH 1245/2394] codar-cheetah: Experimentation harness from the ECP CODAR project (#4658) * codar-cheetah: Experimentation harness from the ECP CODAR project * codar-cheetah: conforming to flake8 --- .../builtin/packages/codar-cheetah/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/codar-cheetah/package.py diff --git a/var/spack/repos/builtin/packages/codar-cheetah/package.py b/var/spack/repos/builtin/packages/codar-cheetah/package.py new file mode 100644 index 00000000000..393d6c7c213 --- /dev/null +++ b/var/spack/repos/builtin/packages/codar-cheetah/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from distutils.dir_util import copy_tree + + +class CodarCheetah(Package): + """CODAR Cheetah: + The CODAR Experiment Harness for Exascale science applications. + """ + + homepage = "https://github.com/CODARcode/cheetah" + url = "https://github.com/CODARcode/cheetah/releases/tag/v0.1.tar.gz" + + version('0.1', '6918021f74fa7a2f1de26c0bb31a63ef') + version('develop', git='https://github.com/CODARcode/cheetah.git', + branch='master') + + depends_on('python@3:', type=('build', 'run')) + depends_on('savanna') + + def install(self, spec, prefix): + copy_tree('.', prefix) From 2bf140601b3f5ccbe2c0a70ed6740209971392c5 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 17 Jul 2017 12:02:17 -0500 Subject: [PATCH 1246/2394] bsseeker2: new package (#4770) --- .../builtin/packages/bsseeker2/package.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 var/spack/repos/builtin/packages/bsseeker2/package.py diff --git a/var/spack/repos/builtin/packages/bsseeker2/package.py b/var/spack/repos/builtin/packages/bsseeker2/package.py new file mode 100644 index 00000000000..aca1e70b012 --- /dev/null +++ b/var/spack/repos/builtin/packages/bsseeker2/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Bsseeker2(Package): + """A versatile aligning pipeline for bisulfite sequencing data.""" + + homepage = "http://pellegrini.mcdb.ucla.edu/BS_Seeker2" + url = "https://github.com/BSSeeker/BSseeker2/archive/v2.1.2.tar.gz" + + version('2.1.2', '5f7f0ef4071711e56b59c5c16b7f34a7') + + depends_on('python@2.6:2.999', type=('build', 'run')) + depends_on('py-pysam', type=('build', 'run')) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('Antisense.py', prefix.bin) + install_tree('bs_index', prefix.bin.bs_index) + install('bs_seeker2-build.py', prefix.bin) + install_tree('bs_utils', prefix.bin.bs_utils) + install_tree('galaxy', prefix.bin.galaxy) + install_tree('bs_align', prefix.bin.bs_align) + install('bs_seeker2-align.py', prefix.bin) + install('bs_seeker2-call_methylation.py', prefix.bin) + install('FilterReads.py', prefix.bin) From 6dcbc30a2cbdc7a159776757ce6f7997ab7ad943 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 17 Jul 2017 21:39:09 +0200 Subject: [PATCH 1247/2394] qhull: fix to work around a known issue of the library with intel compiler (#4648) --- .../repos/builtin/packages/qhull/package.py | 2 ++ .../qhull/qhull-unused-intel-17.02.patch | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 var/spack/repos/builtin/packages/qhull/qhull-unused-intel-17.02.patch diff --git a/var/spack/repos/builtin/packages/qhull/package.py b/var/spack/repos/builtin/packages/qhull/package.py index 308b0521fa2..aaad704d66b 100644 --- a/var/spack/repos/builtin/packages/qhull/package.py +++ b/var/spack/repos/builtin/packages/qhull/package.py @@ -43,4 +43,6 @@ class Qhull(CMakePackage): version('2012.1', 'd0f978c0d8dfb2e919caefa56ea2953c', url="http://www.qhull.org/download/qhull-2012.1-src.tgz") + patch('qhull-unused-intel-17.02.patch', when='@2015.2') + depends_on('cmake@2.6:', type='build') diff --git a/var/spack/repos/builtin/packages/qhull/qhull-unused-intel-17.02.patch b/var/spack/repos/builtin/packages/qhull/qhull-unused-intel-17.02.patch new file mode 100644 index 00000000000..70eb3bd722c --- /dev/null +++ b/var/spack/repos/builtin/packages/qhull/qhull-unused-intel-17.02.patch @@ -0,0 +1,18 @@ +--- a/src/libqhull_r/qhull_ra.h 2017-06-30 14:24:52.252635925 +0200 ++++ b/src/libqhull_r/qhull_ra.h 2017-06-30 14:25:27.356635296 +0200 +@@ -101,13 +101,8 @@ + + */ + +-#if defined(__cplusplus) && defined(__INTEL_COMPILER) && !defined(QHULL_OS_WIN) +-template +-inline void qhullUnused(T &x) { (void)x; } +-# define QHULL_UNUSED(x) qhullUnused(x); +-#else +-# define QHULL_UNUSED(x) (void)x; +-#endif ++#define QHULL_UNUSED(x) (void)x; ++ + + /***** -libqhull_r.c prototypes (alphabetical after qhull) ********************/ + From 9872fe980b1c0dc7b455d2cb9cb70ed304a1c6a7 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 17 Jul 2017 15:49:26 -0500 Subject: [PATCH 1248/2394] partitionfidner: new package (#4791) --- .../packages/partitionfinder/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/partitionfinder/package.py diff --git a/var/spack/repos/builtin/packages/partitionfinder/package.py b/var/spack/repos/builtin/packages/partitionfinder/package.py new file mode 100644 index 00000000000..523550a64b7 --- /dev/null +++ b/var/spack/repos/builtin/packages/partitionfinder/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Partitionfinder(Package): + """PartitionFinder is free open source software to select best-fit + partitioning schemes and models of molecular evolution for + phylogenetic analyses.""" + + homepage = "https://github.com/brettc/partitionfinder" + url = "https://github.com/brettc/partitionfinder/archive/v2.1.1.tar.gz" + + version('2.1.1', 'b1b6539f93146c69b967cf92459ae28a') + + depends_on('python@2.7.10:2.999', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-pandas', type=('build', 'run')) + depends_on('py-pytables', type=('build', 'run')) + depends_on('py-pyparsing', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-scikit-learn', type=('build', 'run')) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install_tree('partfinder', prefix.partfinder) + install_tree('timings', prefix.timings) + install('PartitionFinderMorphology.py', prefix.bin) + install('PartitionFinderProtein.py', prefix.bin) + install('PartitionFinder.py', prefix.bin) From 7c1ce6e2061bbd37660688137d993d4786a2af48 Mon Sep 17 00:00:00 2001 From: homerdin Date: Mon, 17 Jul 2017 15:50:31 -0500 Subject: [PATCH 1249/2394] Package/minixyce (#4789) * New Package: miniXyce * Removed Tag --- .../builtin/packages/minixyce/package.py | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 var/spack/repos/builtin/packages/minixyce/package.py diff --git a/var/spack/repos/builtin/packages/minixyce/package.py b/var/spack/repos/builtin/packages/minixyce/package.py new file mode 100644 index 00000000000..718a195d27c --- /dev/null +++ b/var/spack/repos/builtin/packages/minixyce/package.py @@ -0,0 +1,78 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Minixyce(MakefilePackage): + """Proxy Application. A portable proxy of some of the key + capabilities in the electrical modeling Xyce. + """ + + homepage = "https://mantevo.org" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniXyce/miniXyce_1.0.tar.gz" + + version('1.0', '6fc0e5a561af0b8ff581d9f704194133') + + variant('mpi', default=True, description='Build with MPI Support') + + depends_on('mpi', when='+mpi') + + @property + def build_targets(self): + targets = [] + + if '+mpi' in self.spec: + targets.append('CXX={0}'.format(self.spec['mpi'].mpicxx)) + targets.append('LINKER={0}'.format(self.spec['mpi'].mpicxx)) + targets.append('USE_MPI=-DHAVE_MPI -DMPICH_IGNORE_CXX_SEEK') + else: + targets.append('CXX=c++') + targets.append('LINKER=c++') + targets.append('USE_MPI=') + + # Remove Compiler Specific Optimization Flags + if '%gcc' not in self.spec: + targets.append('CPP_OPT_FLAGS=') + + return targets + + def build(self, spec, prefix): + with working_dir('miniXyce_ref'): + # Call Script Targets First to Generate Needed Files + make('generate_info') + make('common_files') + make(*self.build_targets) + + def install(self, spec, prefix): + # Manual Installation + mkdirp(prefix.bin) + mkdirp(prefix.doc) + + install('miniXyce_ref/miniXyce.x', prefix.bin) + install('miniXyce_ref/default_params.txt', prefix.bin) + install('README', prefix.doc) + + install_tree('miniXyce_ref/tests/', prefix.doc.tests) From da61455cc3a627f64b83a8fed8083662dd3dcdbc Mon Sep 17 00:00:00 2001 From: Adam Fidel Date: Tue, 18 Jul 2017 04:10:39 -0500 Subject: [PATCH 1250/2394] New Package: tig (#4794) --- .../repos/builtin/packages/tig/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/tig/package.py diff --git a/var/spack/repos/builtin/packages/tig/package.py b/var/spack/repos/builtin/packages/tig/package.py new file mode 100644 index 00000000000..da8482a21af --- /dev/null +++ b/var/spack/repos/builtin/packages/tig/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Tig(AutotoolsPackage): + """Text-mode interface for git""" + + homepage = "https://jonas.github.io/tig/" + url = "https://github.com/jonas/tig/releases/download/tig-2.2.2/tig-2.2.2.tar.gz" + + version('2.2.2', '3b4a9f0fd8d18c1039863e6c4ace6e46') + + depends_on('ncurses') From 07d82422b8fa6cecb56c2b849d0ce138e3654526 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 18 Jul 2017 04:13:17 -0500 Subject: [PATCH 1251/2394] pcma: new package (#4793) --- .../repos/builtin/packages/pcma/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pcma/package.py diff --git a/var/spack/repos/builtin/packages/pcma/package.py b/var/spack/repos/builtin/packages/pcma/package.py new file mode 100644 index 00000000000..944c1ac37bb --- /dev/null +++ b/var/spack/repos/builtin/packages/pcma/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Pcma(MakefilePackage): + """PCMA is a progressive multiple sequence alignment program that combines + two different alignment strategies.""" + + homepage = "http://prodata.swmed.edu/pcma/pcma.php" + url = "http://prodata.swmed.edu/download/pub/PCMA/pcma.tar.gz" + + version('2.0', 'e78449b2f6b0e90348a0a6747d266f9b') + + def edit(self, spec, prefix): + makefile = FileFilter('makefile') + makefile.filter('gcc', spack_cc) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('pcma', prefix.bin) From 870062076fe9fdffa58f59b891ae2be56601c63f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Tue, 18 Jul 2017 19:04:49 +0800 Subject: [PATCH 1252/2394] Add version 3.4.1 for r. (#4799) --- var/spack/repos/builtin/packages/r/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index a5e89cdfc1c..e884283ce27 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -40,6 +40,7 @@ class R(AutotoolsPackage): extendable = True + version('3.4.1', '3a79c01dc0527c62e80ffb1c489297ea') version('3.4.0', '75083c23d507b9c16d5c6afbd7a827e7') version('3.3.3', '0ac211ec15e813a24f8f4a5a634029a4') version('3.3.2', '2437014ef40641cdc9673e89c040b7a8') From c597bdb284e2f0646ea405f4e65320b58329a8a2 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Tue, 18 Jul 2017 07:40:41 -0700 Subject: [PATCH 1253/2394] somatic-sniper depends_in('curses') (#4796) somatic-sniper installs its own copy of samtools, which needs curses. I'm not sure why I didn't stumble on this in my dev environment, but I just stumbled over it in a standalone build. --- var/spack/repos/builtin/packages/somatic-sniper/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/somatic-sniper/package.py b/var/spack/repos/builtin/packages/somatic-sniper/package.py index 1f2b4b470a7..4d5a17bcce0 100644 --- a/var/spack/repos/builtin/packages/somatic-sniper/package.py +++ b/var/spack/repos/builtin/packages/somatic-sniper/package.py @@ -33,4 +33,6 @@ class SomaticSniper(CMakePackage): version('1.0.5.0', '64bc2b001c9a8089f2a05900f8a0abfe') + depends_on('ncurses') + parallel = False From 6b2d75a0a6cf23e685d65a7d1c09ecba6c358275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Wed, 19 Jul 2017 00:22:14 +0800 Subject: [PATCH 1254/2394] Repalce ftp:// with http:// for gdbm, mesa-glu and udunits2. (#4798) --- var/spack/repos/builtin/packages/gdbm/package.py | 2 +- var/spack/repos/builtin/packages/mesa-glu/package.py | 2 +- var/spack/repos/builtin/packages/udunits2/package.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/gdbm/package.py b/var/spack/repos/builtin/packages/gdbm/package.py index 488ca4702b9..fea4aa4b151 100644 --- a/var/spack/repos/builtin/packages/gdbm/package.py +++ b/var/spack/repos/builtin/packages/gdbm/package.py @@ -33,7 +33,7 @@ class Gdbm(AutotoolsPackage): manipulate a hashed database.""" homepage = "http://www.gnu.org.ua/software/gdbm/gdbm.html" - url = "ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.13.tar.gz" + url = "http://ftp.gnu.org/gnu/gdbm/gdbm-1.13.tar.gz" version('1.13', '8929dcda2a8de3fd2367bdbf66769376') version('1.12', '9ce96ff4c99e74295ea19040931c8fb9') diff --git a/var/spack/repos/builtin/packages/mesa-glu/package.py b/var/spack/repos/builtin/packages/mesa-glu/package.py index cb2f12ad437..54ad8992ec8 100644 --- a/var/spack/repos/builtin/packages/mesa-glu/package.py +++ b/var/spack/repos/builtin/packages/mesa-glu/package.py @@ -30,7 +30,7 @@ class MesaGlu(AutotoolsPackage): """This package provides the Mesa OpenGL Utility library.""" homepage = "https://www.mesa3d.org" - url = "ftp://ftp.freedesktop.org/pub/mesa/glu/glu-9.0.0.tar.gz" + url = "https://www.mesa3d.org/archive/glu/glu-9.0.0.tar.gz" version('9.0.0', 'bbc57d4fe3bd3fb095bdbef6fcb977c4') diff --git a/var/spack/repos/builtin/packages/udunits2/package.py b/var/spack/repos/builtin/packages/udunits2/package.py index ad16fb04fb9..26586749928 100644 --- a/var/spack/repos/builtin/packages/udunits2/package.py +++ b/var/spack/repos/builtin/packages/udunits2/package.py @@ -29,7 +29,7 @@ class Udunits2(AutotoolsPackage): """Automated units conversion""" homepage = "http://www.unidata.ucar.edu/software/udunits" - url = "ftp://ftp.unidata.ucar.edu/pub/udunits/udunits-2.2.24.tar.gz" + url = "https://www.gfd-dennou.org/arch/ucar/unidata/pub/udunits/udunits-2.2.24.tar.gz" version('2.2.24', '898b90dc1890f172c493406d0f26f531') version('2.2.23', '9f66006accecd621a4c3eda4ba9fa7c9') From 5a1ee2257534497e7e436fa72f94da6e4e0e03e7 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 18 Jul 2017 18:53:35 +0200 Subject: [PATCH 1255/2394] package: removed default no-op patch (#4103) * package: removed default no-op patch fixes #4085 * do_patch: handles NoSuchMethodError nicely --- lib/spack/spack/package.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index dc23f6351f3..1223fce178c 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -58,6 +58,7 @@ import spack.repository import spack.url import spack.util.web +import spack.multimethod from llnl.util.filesystem import * from llnl.util.lang import * @@ -939,10 +940,6 @@ def do_stage(self, mirror_only=False): self.stage.expand_archive() self.stage.chdir_to_source() - def patch(self): - """Default patch implementation is a no-op.""" - pass - def do_patch(self): """Calls do_stage(), then applied patches to the expanded tarball if they haven't been applied already.""" @@ -1003,6 +1000,10 @@ def do_patch(self): self.patch() tty.msg("Ran patch() for %s" % self.name) patched = True + except spack.multimethod.NoSuchMethodError: + # We are running a multimethod without a default case. + # If there's no default it means we don't need to patch. + tty.msg("No patches needed for %s" % self.name) except: tty.msg("patch() function failed for %s" % self.name) touch(bad_file) From 1215c3b20c28edfb8bcb21ad764b0940fa78e268 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 18 Jul 2017 11:58:19 -0500 Subject: [PATCH 1256/2394] Change path to CMakeLists.txt to be relative to root, not pwd (#4420) * Change path to CMakeLists.txt to be relative to root, not pwd * Changes requested during code review * Revert back to old naming of root_cmakelists_dir * Make relative directory more clear in docs * Revert change causing build_type AttributeError * Fix forgotten abs_path var * Update CLHEP with new relative path * Update more packages with new root_cmakelists_dir syntax --- lib/spack/spack/build_systems/cmake.py | 13 +++++++++---- .../repos/builtin/packages/bcl2fastq2/package.py | 2 +- var/spack/repos/builtin/packages/clfft/package.py | 6 ++---- var/spack/repos/builtin/packages/clhep/package.py | 2 +- .../repos/builtin/packages/cpprestsdk/package.py | 2 +- .../repos/builtin/packages/isaac-server/package.py | 6 ++---- var/spack/repos/builtin/packages/isaac/package.py | 6 ++---- var/spack/repos/builtin/packages/quinoa/package.py | 2 +- var/spack/repos/builtin/packages/spades/package.py | 4 +--- 9 files changed, 20 insertions(+), 23 deletions(-) diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index 4435a995fcb..240c8a8b188 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -24,6 +24,7 @@ ############################################################################## import inspect +import os import platform import spack.build_environment @@ -84,9 +85,12 @@ def build_type(self): @property def root_cmakelists_dir(self): - """Returns the location of the root CMakeLists.txt + """The relative path to the directory containing CMakeLists.txt - :return: directory containing the root CMakeLists.txt + This path is relative to the root of the extracted tarball, + not to the ``build_directory``. Defaults to the current directory. + + :return: directory containing CMakeLists.txt """ return self.stage.source_path @@ -143,8 +147,9 @@ def cmake_args(self): def cmake(self, spec, prefix): """Runs ``cmake`` in the build directory""" - options = [self.root_cmakelists_dir] + self.std_cmake_args + \ - self.cmake_args() + options = [os.path.abspath(self.root_cmakelists_dir)] + options += self.std_cmake_args + options += self.cmake_args() with working_dir(self.build_directory, create=True): inspect.getmodule(self).cmake(*options) diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/package.py b/var/spack/repos/builtin/packages/bcl2fastq2/package.py index 1a7fff360c1..7af1815757f 100644 --- a/var/spack/repos/builtin/packages/bcl2fastq2/package.py +++ b/var/spack/repos/builtin/packages/bcl2fastq2/package.py @@ -59,7 +59,7 @@ class Bcl2fastq2(Package): # libexslt bits. patch('cxxConfigure-cmake.patch') - root_cmakelists_dir = '../src' + root_cmakelists_dir = 'src' def url_for_version(self, version): url = "https://support.illumina.com/content/dam/illumina-support/documents/downloads/software/bcl2fastq/bcl2fastq2-v{0}-tar.zip" diff --git a/var/spack/repos/builtin/packages/clfft/package.py b/var/spack/repos/builtin/packages/clfft/package.py index 271d5c389af..5a03a3b07fb 100644 --- a/var/spack/repos/builtin/packages/clfft/package.py +++ b/var/spack/repos/builtin/packages/clfft/package.py @@ -31,10 +31,6 @@ class Clfft(CMakePackage): homepage = "https://github.com/clMathLibraries/clFFT" url = "https://github.com/clMathLibraries/clFFT/archive/v2.12.2.tar.gz" - @property - def root_cmakelists_dir(self): - return join_path(self.stage.source_path, 'src') - version('2.12.2', '9104d85f9f2f3c58dd8efc0e4b06496f') variant('client', default=True, @@ -43,6 +39,8 @@ def root_cmakelists_dir(self): depends_on('opencl@1.2:') depends_on('boost@1.33.0:', when='+client') + root_cmakelists_dir = 'src' + def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py index 4d8fd14f3ba..e9bf85c97f4 100644 --- a/var/spack/repos/builtin/packages/clhep/package.py +++ b/var/spack/repos/builtin/packages/clhep/package.py @@ -63,7 +63,7 @@ def patch(self): '%s/%s/CLHEP/CMakeLists.txt' % (self.stage.path, self.spec.version)) - root_cmakelists_dir = '../CLHEP' + root_cmakelists_dir = 'CLHEP' def build_type(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/cpprestsdk/package.py b/var/spack/repos/builtin/packages/cpprestsdk/package.py index 6cb378a2f37..b5d96ff4802 100644 --- a/var/spack/repos/builtin/packages/cpprestsdk/package.py +++ b/var/spack/repos/builtin/packages/cpprestsdk/package.py @@ -38,4 +38,4 @@ class Cpprestsdk(CMakePackage): depends_on('boost') - root_cmakelists_dir = '../Release' + root_cmakelists_dir = 'Release' diff --git a/var/spack/repos/builtin/packages/isaac-server/package.py b/var/spack/repos/builtin/packages/isaac-server/package.py index c13a1d8aec5..baa79cf6733 100644 --- a/var/spack/repos/builtin/packages/isaac-server/package.py +++ b/var/spack/repos/builtin/packages/isaac-server/package.py @@ -31,10 +31,6 @@ class IsaacServer(CMakePackage): homepage = "http://computationalradiationphysics.github.io/isaac/" url = "https://github.com/ComputationalRadiationPhysics/isaac/archive/v1.3.0.tar.gz" - @property - def root_cmakelists_dir(self): - return join_path(self.stage.source_path, 'server') - version('develop', branch='dev', git='https://github.com/ComputationalRadiationPhysics/isaac.git') version('master', branch='master', @@ -51,3 +47,5 @@ def root_cmakelists_dir(self): depends_on('boost@1.56:', type='link') depends_on('libwebsockets@2.1.1:', type='link') # depends_on('gstreamer@1.0', when='+gstreamer') + + root_cmakelists_dir = 'server' diff --git a/var/spack/repos/builtin/packages/isaac/package.py b/var/spack/repos/builtin/packages/isaac/package.py index 33546d19b0e..a06a782e468 100644 --- a/var/spack/repos/builtin/packages/isaac/package.py +++ b/var/spack/repos/builtin/packages/isaac/package.py @@ -31,10 +31,6 @@ class Isaac(CMakePackage): homepage = "http://computationalradiationphysics.github.io/isaac/" url = "https://github.com/ComputationalRadiationPhysics/isaac/archive/v1.3.0.tar.gz" - @property - def root_cmakelists_dir(self): - return join_path(self.stage.source_path, 'lib') - version('develop', branch='dev', git='https://github.com/ComputationalRadiationPhysics/isaac.git') version('master', branch='master', @@ -55,3 +51,5 @@ def root_cmakelists_dir(self): # depends_on('alpaka', when='+alpaka') depends_on('icet', type='link') depends_on('mpi', type='link') + + root_cmakelists_dir = 'lib' diff --git a/var/spack/repos/builtin/packages/quinoa/package.py b/var/spack/repos/builtin/packages/quinoa/package.py index e65d3477596..eb41bb8b371 100644 --- a/var/spack/repos/builtin/packages/quinoa/package.py +++ b/var/spack/repos/builtin/packages/quinoa/package.py @@ -55,7 +55,7 @@ class Quinoa(CMakePackage): depends_on("pstreams") depends_on("pegtl") - root_cmakelists_dir = '../src' + root_cmakelists_dir = 'src' def build_type(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/spades/package.py b/var/spack/repos/builtin/packages/spades/package.py index c7e4469f5ec..443436d3aea 100644 --- a/var/spack/repos/builtin/packages/spades/package.py +++ b/var/spack/repos/builtin/packages/spades/package.py @@ -40,6 +40,4 @@ class Spades(CMakePackage): conflicts('%gcc@7.1.0:') - @property - def root_cmakelists_dir(self): - return join_path(self.stage.source_path, 'src') + root_cmakelists_dir = 'src' From d2a63d55fa714588360936f54bcf9cf7cd1d75c7 Mon Sep 17 00:00:00 2001 From: becker33 Date: Tue, 18 Jul 2017 10:03:15 -0700 Subject: [PATCH 1257/2394] Open ended variants (#4746) * Change directives to allow open-ended variants more easily * make None default to open-ended --- lib/spack/spack/directives.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 2b160bc8a34..52e4b83dceb 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -372,7 +372,7 @@ def variant( name, default=None, description='', - values=(True, False), + values=None, multi=False, validator=None ): @@ -394,6 +394,12 @@ def variant( logic. It receives a tuple of values and should raise an instance of SpackError if the group doesn't meet the additional constraints """ + if values is None: + if default in (True, False) or (type(default) is str and + default.upper() in ('TRUE', 'FALSE')): + values = (True, False) + else: + values = lambda x: True if default is None: default = False if values == (True, False) else '' From e291f59ea3c1623a9e671fa7e10c78f5161eec70 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Tue, 18 Jul 2017 13:42:11 -0500 Subject: [PATCH 1258/2394] New Package: OpenMC (#4790) * New Package: OpenMC * comments addressed. * comments addressed. * changed 'os.makedirs' to 'mkdirp' * flake 8 fix. --- .../repos/builtin/packages/openmc/package.py | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 var/spack/repos/builtin/packages/openmc/package.py diff --git a/var/spack/repos/builtin/packages/openmc/package.py b/var/spack/repos/builtin/packages/openmc/package.py new file mode 100644 index 00000000000..e6d32767fd9 --- /dev/null +++ b/var/spack/repos/builtin/packages/openmc/package.py @@ -0,0 +1,89 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Openmc(MakefilePackage): + """The OpenMC project aims to provide a fully-featured Monte Carlo particle + transport code based on modern methods. It is a constructive solid + geometry, continuous-energy transport code that uses ACE format cross + sections. The project started under the Computational Reactor Physics + Group at MIT.""" + + homepage = "https://github.com/ANL-CESAR/" + url = "https://github.com/ANL-CESAR/openmc.git" + + tags = ['proxy-app'] + + version('develop', git='https://github.com/ANL-CESAR/openmc.git') + + build_directory = 'src' + + @property + def build_targets(self): + + targets = [] + + if self.compiler.name == 'gcc': + targets.append('COMPILER=gnu') + targets.append('MACHINE=UNKNOWN') + if self.compiler.name == 'intel': + targets.append('COMPILER=intel') + if self.compiler.name == 'pgi': + targets.append('COMPILER=pgi') + if self.compiler.name == 'xl': + targets.append('COMPILER=ibm') + if self.compiler.name == 'cce': + targets.append('COMPILER=cray') + + return targets + + def install(self, spec, prefix): + with working_dir('src'): + pth_st_cmp = join_path(prefix.bin, 'statepoint_cmp') + pth_st_histogram = join_path(prefix.bin, 'statepoint_histogram') + pth_st_meshpoint = join_path(prefix.bin, 'statepoint_meshpoint') + pth_openmc = join_path(prefix, 'share/man/man1/openmc.1') + pth_copyright = join_path(prefix, 'share/doc/openmc/copyright') + mkdir(prefix.bin) + mkdirp(pth_st_cmp) + mkdirp(pth_st_histogram) + mkdirp(pth_st_meshpoint) + mkdirp(pth_openmc) + mkdirp(pth_copyright) + + install('openmc', prefix.bin) + install('utils/statepoint_cmp.py', pth_st_cmp) + install('utils/statepoint_histogram.py', + pth_st_histogram) + install('utils/statepoint_meshplot.py', + pth_st_meshpoint) + install('man/man1/openmc.1', pth_openmc) + install('LICENSE', pth_copyright) + install_tree('docs/', prefix.docs) + install_tree('examples/', prefix.examples) + install_tree('data/', prefix.data) + install_tree('tests/', prefix.tests) From 68a8f63569a295a26c9ebc3ddda9a4f1f183e78f Mon Sep 17 00:00:00 2001 From: homerdin Date: Tue, 18 Jul 2017 13:42:57 -0500 Subject: [PATCH 1259/2394] Package/minimd (#4788) * New Package: miniMD * Minor Changes * Corrected Dependency * Renamed Executable * Change to use build directory directly --- .../repos/builtin/packages/minimd/package.py | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 var/spack/repos/builtin/packages/minimd/package.py diff --git a/var/spack/repos/builtin/packages/minimd/package.py b/var/spack/repos/builtin/packages/minimd/package.py new file mode 100644 index 00000000000..ec090038862 --- /dev/null +++ b/var/spack/repos/builtin/packages/minimd/package.py @@ -0,0 +1,74 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 glob +import tarfile + +from spack import * + + +class Minimd(MakefilePackage): + """Proxy Application. A simple proxy for the force computations + in a typical molecular dynamics applications. + """ + + homepage = "http://mantevo.org" + url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniMD/miniMD_1.2.tgz" + + version('1.2', '893ef1ca5062e32b43a8d11bcfe1a056') + + depends_on('mpi') + + build_directory = 'miniMD_ref' + + @property + def build_targets(self): + targets = [ + 'LINK={0}'.format(self.spec['mpi'].mpicxx), + 'CC={0}'.format(self.spec['mpi'].mpicxx), + 'CCFLAGS={0} -DMPICH_IGNORE_CXX_SEEK -DNOCHUNK'.format( + self.compiler.openmp_flag), + 'EXE=miniMD_mpi', + 'openmpi' + ] + + return targets + + def edit(self, spec, prefix): + inner_tar = tarfile.open(name='miniMD_{0}_ref.tgz'.format( + self.version.up_to(2))) + inner_tar.extractall() + + def install(self, spec, prefix): + # Manual Installation + mkdirp(prefix.bin) + mkdirp(prefix.doc) + + install('miniMD_ref/miniMD_mpi', prefix.bin) + install('miniMD_ref/in.lj.miniMD', prefix.bin) + install('miniMD_ref/README', prefix.doc) + + for f in glob.glob('miniMD_ref/in.*'): + install(f, prefix.doc) From 0e28afef1e5632419b4516f62c42015b5cac5d6c Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 18 Jul 2017 13:43:42 -0500 Subject: [PATCH 1260/2394] raxml: new package (#4777) * raxml: new package * changed compiler variable * removing if statement regarding intel compiler --- .../repos/builtin/packages/raxml/package.py | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 var/spack/repos/builtin/packages/raxml/package.py diff --git a/var/spack/repos/builtin/packages/raxml/package.py b/var/spack/repos/builtin/packages/raxml/package.py new file mode 100644 index 00000000000..198347b0c19 --- /dev/null +++ b/var/spack/repos/builtin/packages/raxml/package.py @@ -0,0 +1,107 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob + + +class Raxml(Package): + """RAxML (Randomized Axelerated Maximum Likelihood) is a program for + sequential and parallel Maximum Likelihood based inference of large + phylogenetic trees.""" + + homepage = "https://sco.h-its.org/exelixis/web/software/raxml" + url = "https://github.com/stamatak/standard-RAxML/archive/v8.2.11.tar.gz" + + version('8.2.11', '6bd5c4e1f93003ccf13c9b59a5d080ab') + + variant('mpi', default=True, description='Enable MPI parallel support') + variant('pthreads', default=False, description='Enable pthreads version') + variant('sse', default=True, description='Enable SSE in order to substantially speed up execution') + variant('avx', default=False, description='Enable AVX in order to substantially speed up execution') + + depends_on('mpi', when='+mpi') + + # Compiles with either GCC or ICC. + conflicts('%cce') + conflicts('%clang') + conflicts('%nag') + conflicts('%pgi') + conflicts('%xl') + conflicts('%xl_r') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + files = glob.iglob("Makefile.*") + for file in files: + makefile = FileFilter(file) + makefile.filter('gcc', spack_cc) + + if '+mpi' and '+avx' and '+pthreads' in spec: + make('-f', 'Makefile.AVX.HYBRID.gcc') + install('raxmlHPC-HYBRID-AVX', prefix.bin) + + elif '+mpi' and '+sse' and '+pthreads' in spec: + make('-f', 'Makefile.SSE3.HYBRID.gcc') + install('raxmlHPC-HYBRID-SSE3', prefix.bin) + + elif '+mpi' and '+pthreads' in spec: + make('-f', 'Makefile.HYBRID.gcc') + install('raxmlHPC-HYBRID', prefix.bin) + + elif '+mpi' and '+avx' in spec: + make('-f', 'Makefile.AVX.MPI.gcc') + install('raxmlHPC-MPI-AVX', prefix.bin) + + elif '+mpi' and '+sse' in spec: + make('-f', 'Makefile.SSE3.MPI.gcc') + install('raxmlHPC-MPI-SSE3', prefix.bin) + + elif '+mpi' in spec: + make('-f', 'Makefile.MPI.gcc') + install('raxmlHPC-MPI', prefix.bin) + + elif '+pthreads' and '+avx' in spec: + make('-f', 'Makefile.AVX.PTHREADS.gcc') + install('raxmlHPC-PTHREADS-AVX', prefix.bin) + + elif '+pthreads' and '+sse' in spec: + make('-f', 'Makefile.SSE3.PTHREADS.gcc') + install('raxmlHPC-PTHREADS-SSE3', prefix.bin) + + elif '+pthreads' in spec: + make('-f', 'Makefile.PTHREADS.gcc') + install('raxmlHPC-PTHREADS', prefix.bin) + + elif '+sse' in spec: + make('-f', 'Makefile.SSE3.gcc') + install('raxmlHPC-SSE3', prefix.bin) + + elif '+avx' in spec: + make('-f', 'Makefile.AVX.gcc') + install('raxmlHPC-AVX', prefix.bin) + + else: + make('-f', 'Makefile.gcc') + install('raxmlHPC', prefix.bin) From 904f6f0572ca01eadeda8f54a4052b047b1a840a Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Tue, 18 Jul 2017 12:45:43 -0600 Subject: [PATCH 1261/2394] Adding a bit more Mellanox MXM capability to OpenMPI. (#4762) --- .../repos/builtin/packages/openmpi/package.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 85c99889da8..30a70d948f8 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -52,6 +52,18 @@ def _verbs_dir(): return None +def _mxm_dir(): + """Look for default directory where the Mellanox package is + installed. Return None if not found. + """ + # Only using default directory; make this more flexible in the future + path = "/opt/mellanox/mxm" + if os.path.isdir(path): + return path + else: + return None + + class Openmpi(AutotoolsPackage): """The Open MPI Project is an open source Message Passing Interface implementation that is developed and maintained by a consortium @@ -251,6 +263,17 @@ def with_or_without_verbs(self, activated): line += '={0}'.format(path) return line + def with_or_without_mxm(self, activated): + opt = 'mxm' + # If the option has not been activated return --without-mxm + if not activated: + return '--without-{0}'.format(opt) + line = '--with-{0}'.format(opt) + path = _mxm_dir() + if (path is not None): + line += '={0}'.format(path) + return line + @run_before('autoreconf') def die_without_fortran(self): # Until we can pass variants such as +fortran through virtual From 3e72263d79bfe20271e1f0377c4c0047f33ef1a8 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 18 Jul 2017 13:49:18 -0500 Subject: [PATCH 1262/2394] New package busco (#4678) * busco: new package * busco: fixing fussy paths * removing paths, probably was a problem with our module setup * fixed dep type --- .../repos/builtin/packages/busco/package.py | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 var/spack/repos/builtin/packages/busco/package.py diff --git a/var/spack/repos/builtin/packages/busco/package.py b/var/spack/repos/builtin/packages/busco/package.py new file mode 100644 index 00000000000..ad0f06ca916 --- /dev/null +++ b/var/spack/repos/builtin/packages/busco/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Busco(PythonPackage): + """Assesses genome assembly and annotation completeness with Benchmarking + Universal Single-Copy Orthologs""" + + homepage = "http://busco.ezlab.org/" + url = "https://gitlab.com/ezlab/busco" + + version('3.0.1', git='https://gitlab.com/ezlab/busco.git', commit='078252e00399550d7b0e8941cd4d986c8e868a83') + version('2.0.1', git='https://gitlab.com/ezlab/busco.git', commit='89aa1ab2527f03a87a214ca90a504ad236582a11') + + depends_on('python', type=('build', 'run')) + depends_on('blast-plus') + depends_on('hmmer') + depends_on('augustus') + + def build(self, spec, prefix): + if self.spec.satisfies('@2.0.1'): + pass + + def install(self, spec, prefix): + if self.spec.satisfies('@3.0.1'): + with working_dir('scripts'): + mkdirp(prefix.bin) + install('generate_plot.py', prefix.bin) + install('run_BUSCO.py', prefix.bin) + install_tree('config', prefix.config) + args = self.install_args(spec, prefix) + self.setup_py('install', *args) + if self.spec.satisfies('@2.0.1'): + mkdirp(prefix.bin) + install('BUSCO.py', prefix.bin) + install('BUSCO_plot.py', prefix.bin) From 748221840a197e122e900c934516a08b260d4f6e Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 18 Jul 2017 16:35:33 -0500 Subject: [PATCH 1263/2394] price: new package (#4810) --- .../repos/builtin/packages/price/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/price/package.py diff --git a/var/spack/repos/builtin/packages/price/package.py b/var/spack/repos/builtin/packages/price/package.py new file mode 100644 index 00000000000..df674f4f6eb --- /dev/null +++ b/var/spack/repos/builtin/packages/price/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Price(MakefilePackage): + """PRICE (Paired-Read Iterative Contig Extension): a de novo genome + assembler implemented in C++.""" + + homepage = "http://derisilab.ucsf.edu/software/price/" + url = "http://derisilab.ucsf.edu/software/price/PriceSource140408.tar.gz" + + version('140408', '2880274a514c34b812718b13a620813e') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('PriceTI', prefix.bin) + install('PriceSeqFilter', prefix.bin) From 78c11320d61c752198418f2be4fc18f0a9ef3c89 Mon Sep 17 00:00:00 2001 From: jiseung Date: Tue, 18 Jul 2017 16:37:47 -0500 Subject: [PATCH 1264/2394] new package to be added: NuT (#4760) * new package to be added: NuT * removed cmake_args() and made other changes as suggested * Added setup_environment() * PEP8 compliant * edited version name, build_targets, and files/directories to install * corrected executable directory * compiler dependencies based on version --- .../repos/builtin/packages/nut/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nut/package.py diff --git a/var/spack/repos/builtin/packages/nut/package.py b/var/spack/repos/builtin/packages/nut/package.py new file mode 100644 index 00000000000..561e52f1a59 --- /dev/null +++ b/var/spack/repos/builtin/packages/nut/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Nut(CMakePackage): + """NuT is Monte Carlo code for neutrino transport and + is a C++ analog to the Haskell McPhD code. + NuT is principally aimed at exploring on-node parallelism + and performance issues.""" + + homepage = "https://github.com/lanl/NuT" + url = "https://github.com/lanl/NuT.git" + tags = ['proxy-app'] + + version( + 'serial', git='https://github.com/lanl/NuT.git', + branch='master') + version( + 'openmp', git='https://github.com/lanl/NuT.git', + branch='openmp') + + depends_on('random123') + + # serial must be built with clang + conflicts('%gcc', when='@serial') + conflicts('%intel', when='@serial') + conflicts('%pgi', when='@serial') + conflicts('%xl', when='@serial') + conflicts('%nag', when='@serial') + + def setup_environment(self, spack_env, run_env): + spack_env.set('RANDOM123_DIR', self.spec['random123'].prefix) + + build_targets = ['VERBOSE=on'] + + def install(self, spec, prefix): + install('README.md', prefix) + mkdirp(prefix.bin) + install('spack-build/test/nut_unittests', prefix.bin) From e2485efb940ece8f73de5452bea9e45ab0f49237 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 18 Jul 2017 19:36:48 -0500 Subject: [PATCH 1265/2394] poamsa: new package (#4808) * poamsa: new package * fixed version specs --- .../repos/builtin/packages/poamsa/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/poamsa/package.py diff --git a/var/spack/repos/builtin/packages/poamsa/package.py b/var/spack/repos/builtin/packages/poamsa/package.py new file mode 100644 index 00000000000..3148a10bbd2 --- /dev/null +++ b/var/spack/repos/builtin/packages/poamsa/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Poamsa(MakefilePackage): + """POA is Partial Order Alignment, a fast program for multiple sequence + alignment in bioinformatics. Its advantages are speed, scalability, + sensitivity, and the superior ability to handle branching / indels + in the alignment.""" + + homepage = "https://sourceforge.net/projects/poamsa" + url = "https://downloads.sourceforge.net/project/poamsa/poamsa/2.0/poaV2.tar.gz" + + version('2.0', '9e2eb270d4867114406f53dab1311b2b') + + def url_for_version(self, version): + url = "https://downloads.sourceforge.net/project/poamsa/poamsa/{0}/poaV{1}.tar.gz" + return url.format(version.dotted, version.up_to(1)) + + def build(self, spec, prefix): + make('poa') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.lib) + install('poa', prefix.bin) + install('liblpo.a', prefix.lib) From 2bd8d7a36ab97987a3a91beee600b51d267f8839 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 18 Jul 2017 19:37:12 -0500 Subject: [PATCH 1266/2394] Always install xproto in serial (#4809) --- var/spack/repos/builtin/packages/xproto/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/xproto/package.py b/var/spack/repos/builtin/packages/xproto/package.py index de91cf0c953..2bb1df326cf 100644 --- a/var/spack/repos/builtin/packages/xproto/package.py +++ b/var/spack/repos/builtin/packages/xproto/package.py @@ -43,3 +43,8 @@ class Xproto(AutotoolsPackage): depends_on('pkg-config@0.9.0:', type='build') depends_on('util-macros', type='build') + + def install(self, spec, prefix): + # Installation fails in parallel + # See https://github.com/LLNL/spack/issues/4805 + make('install', parallel=False) From b41184920070f6b95fdd333ec04a0198c3c157d3 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Tue, 18 Jul 2017 17:37:40 -0700 Subject: [PATCH 1267/2394] Misc python updates (#4807) * updated py-pylint version * setuptools required at runtime for pkg_resources * fixed url for updated pylint --- var/spack/repos/builtin/packages/py-pylint/package.py | 5 +++-- var/spack/repos/builtin/packages/py-theano/package.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-pylint/package.py b/var/spack/repos/builtin/packages/py-pylint/package.py index 4df0e09c9f5..a2515294108 100644 --- a/var/spack/repos/builtin/packages/py-pylint/package.py +++ b/var/spack/repos/builtin/packages/py-pylint/package.py @@ -28,10 +28,11 @@ class PyPylint(PythonPackage): """array processing for numbers, strings, records, and objects.""" homepage = "https://pypi.python.org/pypi/pylint" - url = "https://pypi.python.org/packages/source/p/pylint/pylint-1.4.1.tar.gz" + url = "https://pypi.io/packages/source/p/pylint/pylint-1.7.2.tar.gz" - version('1.4.1', 'df7c679bdcce5019389038847e4de622') + version('1.7.2', '27ee752cdcfacb05bf4940947e6b35c6') version('1.4.3', '5924c1c7ca5ca23647812f5971d0ea44') + version('1.4.1', 'df7c679bdcce5019389038847e4de622') extends('python', ignore=r'bin/pytest') depends_on('py-six', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-theano/package.py b/var/spack/repos/builtin/packages/py-theano/package.py index e1bbb136d05..22faa20744b 100644 --- a/var/spack/repos/builtin/packages/py-theano/package.py +++ b/var/spack/repos/builtin/packages/py-theano/package.py @@ -39,7 +39,7 @@ class PyTheano(PythonPackage): depends_on('python@2.6:2.8,3.3:') - depends_on('py-setuptools', type='build') + depends_on('py-setuptools', type=('build', 'run')) depends_on('py-scipy@0.11:', type=('build', 'run')) depends_on('py-numpy@1.7.1:', type=('build', 'run')) depends_on('py-six@1.9.0:', type=('build', 'run')) From d1c199e15d59c4e8a6d1cb9eb825f153b7735390 Mon Sep 17 00:00:00 2001 From: jiseung Date: Tue, 18 Jul 2017 22:48:21 -0500 Subject: [PATCH 1268/2394] new package: SMC (#4817) * new package: SMC * removed template and added proxy-app tag * added comp variant in edit() * edited comp variant in edit() --- .../repos/builtin/packages/smc/package.py | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 var/spack/repos/builtin/packages/smc/package.py diff --git a/var/spack/repos/builtin/packages/smc/package.py b/var/spack/repos/builtin/packages/smc/package.py new file mode 100644 index 00000000000..a58c5e171a6 --- /dev/null +++ b/var/spack/repos/builtin/packages/smc/package.py @@ -0,0 +1,80 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob + + +class Smc(MakefilePackage): + """A minimalist high-order finite difference algorithm + for combustion problems. It includes core discretizations + for advection, diffusive transport and chemical kinetics. + The models for computing diffusive transport coefficients + have been replaced by a simplified approximation + but the full structure of the discretization of + the diffusive terms have been preserved.""" + + homepage = "https://ccse.lbl.gov/ExaCT/index.html" + url = "https://ccse.lbl.gov/ExaCT/SMC.tar.gz" + tags = ['proxy-app'] + + version('master', '94a4ea94abbc5e61397c2a4d1fb56ed6') + + variant( + 'mpi', default=True, + description='Build with MPI support') + variant( + 'openmp', default=True, + description='Build with OpenMP support') + variant( + 'debug', default=False, + description='Build with debugging') +# variant( +# 'mic', default=False, +# description='Compile for Intel Xeon Phi') + variant( + 'k_use_automatic', default=True, + description='Some arrays in kernels.F90 will be automatic') + + depends_on('mpi', when='+mpi') + depends_on('gmake', type='build') + + def edit(self, spec, prefix): + makefile = FileFilter('GNUmakefile') + if '~mpi' in spec: + makefile.filter('MPI := t', '#') + if '~openmp' in spec: + makefile.filter('OMP := t', '#') + if '+debug' in spec: + makefile.filter('NDEBUG :=', '#') + if '~k_use_automatic' in spec: + makefile.filter('K_U.*:= t', '#') + if self.compiler.name == 'intel': + makefile.filter('COMP := .*', 'COMP := Intel') + + def install(self, spec, prefix): + files = glob.glob(join_path(self.build_directory, '*.exe')) + for f in files: + install(f, prefix) + install('inputs_SMC', prefix) From 5fc0243d3598f6e0f6b3206ccfb91012675c8c41 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 18 Jul 2017 22:48:39 -0500 Subject: [PATCH 1269/2394] Improve version detection of release versions (#4816) --- lib/spack/spack/test/url_parse.py | 2 ++ lib/spack/spack/url.py | 1 + 2 files changed, 3 insertions(+) diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index 5b24821a28d..6789bc0aa3a 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -57,6 +57,8 @@ ('gromacs-4.6.1-tar', 'gromacs-4.6.1'), # Download type - sh ('Miniconda2-4.3.11-Linux-x86_64.sh', 'Miniconda2-4.3.11'), + # Download version - release + ('v1.0.4-release', 'v1.0.4'), # Download version - stable ('libevent-2.0.21-stable', 'libevent-2.0.21'), # Download version - final diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 88557596fda..d29ce3d07f8 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -183,6 +183,7 @@ def strip_version_suffixes(path): 'sh', # Download version + 'release', 'stable', '[Ff]inal', 'rel', From 6e2eb839433c5f28807dab73c32676c844f21101 Mon Sep 17 00:00:00 2001 From: Kshitij Mehta Date: Tue, 18 Jul 2017 23:49:51 -0400 Subject: [PATCH 1270/2394] codar-cheetah: URL fix (#4815) --- var/spack/repos/builtin/packages/codar-cheetah/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/codar-cheetah/package.py b/var/spack/repos/builtin/packages/codar-cheetah/package.py index 393d6c7c213..b70c929ca8e 100644 --- a/var/spack/repos/builtin/packages/codar-cheetah/package.py +++ b/var/spack/repos/builtin/packages/codar-cheetah/package.py @@ -32,7 +32,7 @@ class CodarCheetah(Package): """ homepage = "https://github.com/CODARcode/cheetah" - url = "https://github.com/CODARcode/cheetah/releases/tag/v0.1.tar.gz" + url = "https://github.com/CODARcode/cheetah/archive/v0.1.tar.gz" version('0.1', '6918021f74fa7a2f1de26c0bb31a63ef') version('develop', git='https://github.com/CODARcode/cheetah.git', From 45a7e8bb12cd840f5998c4ebb1b449183e50af47 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Wed, 19 Jul 2017 08:46:42 -0500 Subject: [PATCH 1271/2394] New Package: SimpleMOC (#4742) * New Package SimpleMOC * addressed comments * removed tags as per PR# 4749 * flake8 fix. * travis fix. * added proxy app tags to description. * added mpi and openmpi depedency. * removed openmpi depdedency. * addressed comments. * adding openmp flag conditionally. * flake 8 fix for tabs. --- .../builtin/packages/simplemoc/package.py | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 var/spack/repos/builtin/packages/simplemoc/package.py diff --git a/var/spack/repos/builtin/packages/simplemoc/package.py b/var/spack/repos/builtin/packages/simplemoc/package.py new file mode 100644 index 00000000000..04722158004 --- /dev/null +++ b/var/spack/repos/builtin/packages/simplemoc/package.py @@ -0,0 +1,68 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Simplemoc(MakefilePackage): + """The purpose of this mini-app is to demonstrate the performance + characterterics and viability of the Method of Characteristics (MOC) + for 3D neutron transport calculations in the context of full scale + light water reactor simulation.""" + + homepage = "https://github.com/ANL-CESAR/SimpleMOC/" + url = "https://github.com/ANL-CESAR/SimpleMOC/archive/master.tar.gz" + + version('1.0', 'd8827221a4ae76e9766a32e16d143e60') + + tags = ['proxy-app'] + + variant('mpi', default=True, description='Build with MPI support') + + depends_on('mpi', when='+mpi') + + build_directory = 'src' + + @property + def build_targets(self): + + targets = [] + + cflags = '-std=gnu99' + ldflags = '-lm' + + if self.compiler.name == 'gcc' or self.compiler.name == 'intel': + cflags += ' ' + self.compiler.openmp_flag + if '+mpi' in self.spec: + targets.append('CC={0}'.format(self.spec['mpi'].mpicc)) + + targets.append('CFLAGS={0}'.format(cflags)) + targets.append('LDFLAGS={0}'.format(ldflags)) + + return targets + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('src/SimpleMOC', prefix.bin) From e3e8893ed9c183678b68ab9228e01a808f86b465 Mon Sep 17 00:00:00 2001 From: jiseung Date: Wed, 19 Jul 2017 08:48:03 -0500 Subject: [PATCH 1272/2394] new package: CLAMR (#4728) * new package: CLAMR * changed from bool variants to single value variants and corresponding logic in build_type and cmake_args * lowercase variant values * updated conditionals for variants * adjusted url and docstring --- .../repos/builtin/packages/clamr/package.py | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 var/spack/repos/builtin/packages/clamr/package.py diff --git a/var/spack/repos/builtin/packages/clamr/package.py b/var/spack/repos/builtin/packages/clamr/package.py new file mode 100644 index 00000000000..c45069d39f5 --- /dev/null +++ b/var/spack/repos/builtin/packages/clamr/package.py @@ -0,0 +1,91 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Clamr(CMakePackage): + """The CLAMR code is a cell-based adaptive mesh refinement (AMR) + mini-app developed as a testbed for hybrid algorithm development + using MPI and OpenCL GPU code. + """ + + homepage = "https://github.com/lanl/CLAMR" + url = "https://github.com/lanl/CLAMR.git" + tags = ['proxy-app'] + + version('master', git='https://github.com/lanl/CLAMR.git') + + variant( + 'graphics', default='opengl', + values=('opengl', 'mpe', 'none'), + description='Build with specified graphics support') + variant( + 'build', default='relwithdebinfo', + values=('debug', 'release', 'relwithdebinfo'), + description='Build type') + variant( + 'precision', default='mixed', + values=('single', 'mixed', 'full'), + description='single, mixed, or full double precision values') + + depends_on('mpi') + depends_on('mpe', when='graphics=mpe') + + def build_type(self): + spec = self.spec + if 'build=debug' in spec: + return 'Debug' + elif 'build=release' in spec: + return 'Release' + else: + return 'RelWithDebInfo' + + def cmake_args(self): + spec = self.spec + cmake_args = [] + if 'graphics=none' in spec: + cmake_args.append('-DGRAPHICS_TYPE=None') + elif 'graphics=mpe' in spec: + cmake_args.append('-DGRAPHICS_TYPE=MPE') + else: + cmake_args.append('-DGRAPHICS_TYPE=OpenGL') + + if 'precision=full' in spec: + cmake_args.append('-DPRECISION_TYPE=full_precision') + elif 'precision=single' in spec: + cmake_args.append('-DPRECISION_TYPE=minimum_precision') + else: + cmake_args.append('-DPRECISION_TYPE=mixed_precision') + + # if MIC, then -DMIC_NATIVE=yes + return cmake_args + + def install(self, spec, prefix): + install('README', prefix) + install('LICENSE', prefix) + install_tree('docs', join_path(prefix, 'docs')) + install_tree('tests', join_path(prefix, 'tests')) + with working_dir(self.build_directory): + make('install') From 716512959831d5f5b91bbd1ed78f4f9108c4794a Mon Sep 17 00:00:00 2001 From: Akhil Reddy Patlolla Date: Wed, 19 Jul 2017 08:48:41 -0500 Subject: [PATCH 1273/2394] Added Proxy App CoHMM (#4727) * Added Proxy App CoSP2 * Added Proxy App CoHMM * Updated PATH cohmm * Chages Fixing Minor issues * Minor Fix git add cohmm/package.py * Updated * Resolved TAG Conflict * Updated based on the codecov failure --- .../repos/builtin/packages/cohmm/package.py | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cohmm/package.py diff --git a/var/spack/repos/builtin/packages/cohmm/package.py b/var/spack/repos/builtin/packages/cohmm/package.py new file mode 100644 index 00000000000..2e033c45947 --- /dev/null +++ b/var/spack/repos/builtin/packages/cohmm/package.py @@ -0,0 +1,61 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob + + +class Cohmm(MakefilePackage): + """An anticipated important use-case for next-generation supercomputing + is multiscale modeling, in which continuum equations for large-scale + material deformation are augmented with high-fidelity, fine-scale + simulations that provide constitutive data on demand. + """ + tags = ['proxy-app'] + + homepage = "http://www.exmatex.org/cohmm.html" + url = "https://github.com/exmatex/CoHMM/archive/sad.tar.gz" + + version('develop', git='https://github.com/exmatex/CoHMM.git', + branch='sad') + + variant('openmp', default=True, description='Build with OpenMP Support') + variant('gnuplot', default=True, description='Enable gnu plot Support') + depends_on('gnuplot', when='+gnuplot') + + def edit(self, spec, prefix): + if '+openmp' in spec: + filter_file('DO_OPENMP = O.*', 'DO_OPENMP = ON', 'Makefile') + if '+gnuplot' in spec: + filter_file('DO_GNUPLOT = O.*', 'DO_GNUPLOT = ON', 'Makefile') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.input) + mkdirp(prefix.doc) + install('cohmm', prefix.bin) + install('README.md', prefix.doc) + install('LICENSE.md', prefix.doc) + for files in glob.glob('input/*.*'): + install(files, prefix.input) \ No newline at end of file From a6cac6ac9925b816e73b32b7263d03bd42853a1e Mon Sep 17 00:00:00 2001 From: Akhil Reddy Patlolla Date: Wed, 19 Jul 2017 08:49:29 -0500 Subject: [PATCH 1274/2394] Added Proxy App CoSP2 (#4726) * Added Proxy App CoSP2 * Updated the PATH * Updated MPI Fix * Fixed Issues * Fixed Issues with compiler and Flake8 * Enhanced block of code. * Intended --- .../repos/builtin/packages/cosp2/package.py | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cosp2/package.py diff --git a/var/spack/repos/builtin/packages/cosp2/package.py b/var/spack/repos/builtin/packages/cosp2/package.py new file mode 100644 index 00000000000..3ed89d5a19a --- /dev/null +++ b/var/spack/repos/builtin/packages/cosp2/package.py @@ -0,0 +1,74 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import shutil + + +class Cosp2(MakefilePackage): + """Proxy Application. CoSP2 represents a sparse linear algebra + parallel algorithm for calculating the density matrix in electronic + tructure theory. The algorithm is based on a recursive second-order + Fermi-Operator expansion method (SP2) and is tailored for density + functional based tight-binding calculations of non-metallic systems. + """ + + tags = ['proxy-app'] + + homepage = "http://www.exmatex.org/cosp2.html" + url = "https://github.com/exmatex/CoSP2/archive/master.tar.gz" + + version('master', git='https://github.com/exmatex/CoSP2.git', + description='master') + + variant('double', default=True, + description='Build with double precision.') + variant('mpi', default=True, description='Build with MPI Support') + + depends_on('mpi', when='+mpi') + + build_directory = 'src-mpi' + + def edit(self, spec, prefix): + cc = spack_cc + + if '+mpi' in spec: + cc = spec['mpi'].mpicc + + with working_dir(self.build_directory): + makefile = FileFilter('Makefile.vanilla') + makefile.filter(r'^CC\s*=.*', 'CC = {0}'.format(cc)) + + if '+double' in spec: + filter_file('DOUBLE_PRECISION = O.*', 'DOUBLE_PRECISION = OFF', + 'Makefile.vanilla') + shutil.copy('Makefile.vanilla', 'Makefile') + + def install(self, spec, prefix): + install_tree('bin/', prefix.bin) + install_tree('examples/', prefix.examples) + install_tree('doc/', prefix.doc) + install('src-mpi/Doxyfile', prefix.doc) + install('README.md', prefix.doc) + install('LICENSE.md', prefix.doc) \ No newline at end of file From 60cffbb9d0ed484cf88ddfbf9009c95fc1e23bdb Mon Sep 17 00:00:00 2001 From: jiseung Date: Wed, 19 Jul 2017 08:50:53 -0500 Subject: [PATCH 1275/2394] new package PENNANT added (#4708) * new package PENNANT * made adjustments based on comments * edited logic for mpi variant * replaced with 'else' * prefix.bin instead of 'bin' --- .../repos/builtin/packages/pennant/package.py | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pennant/package.py diff --git a/var/spack/repos/builtin/packages/pennant/package.py b/var/spack/repos/builtin/packages/pennant/package.py new file mode 100644 index 00000000000..b8e71c7f316 --- /dev/null +++ b/var/spack/repos/builtin/packages/pennant/package.py @@ -0,0 +1,99 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Pennant(MakefilePackage): + """PENNANT is an unstructured mesh physics mini-app designed + for advanced architecture research. It contains mesh data + structures and a few physics algorithms adapted + from the LANL rad-hydro code FLAG, and gives a sample of + the typical memory access patterns of FLAG. + """ + + homepage = "https://github.com/lanl/PENNANT" + url = "https://github.com/lanl/PENNANT/archive/pennant_v0.9.tar.gz" + tags = ['proxy-app'] + + version('0.9', '4f21ba3836b2721436277308c2e33f45') + version('0.8', 'a1afff4914fef8140c3024a02d7c993c') + version('0.7', 'd642a030d5388f65f799504803794a4e') + version('0.6', '8ab2d4b47ec9870643bfe6f262cd47a4') + version('0.5', '534547878c698b9926e2886c74e10831') + version('0.4', '0f67d8da0a92bd42d92a4823d3e4dbe1') + + variant('mpi', default=True, description='Build with MPI support') + variant('openmp', default=True, description='Build with OpenMP support') + variant('debug', default=False, description='Enable debug') + + depends_on('mpi', when='+mpi') + + def edit(self, spec, prefix): + makefile = FileFilter('Makefile') + debug = '-g' + opt = '-O3' + + if self.compiler.name == 'intel': + opt += ' -fast -fno-alias' + if self.compiler.name == 'pgi': + opt += ' -fastsse' + + makefile.filter( + 'CXXFLAGS_DEBUG .*', + 'CXXFLAGS_DEBUG := {0}'.format(debug)) + makefile.filter( + 'CXXFLAGS_OPT .*', + 'CXXFLAGS_OPT := {0}'.format(opt)) + makefile.filter( + 'CXXFLAGS_OPENMP .*', + 'CXXFLAGS_OPENMP := {0}'.format(self.compiler.openmp_flag)) + + if '+mpi' in spec: + makefile.filter( + 'CXX .*', + 'CXX := {0}'.format(spec['mpi'].mpicxx)) + else: + makefile.filter('-DUSE_MPI', '#') + makefile.filter('CXX .*', 'CXX := c++') + + if '+openmp' not in spec: + makefile.filter('.*CXXFLAGS_OPENMP.*', '#') + + if '+debug' in spec: + makefile.filter( + '.*(CXXFLAGS_OPT).*', + 'CXXFLAGS := $(CXXFLAGS_DEBUG)') + + def install(self, spec, prefix): + + def install_dir(dirname): + install_tree(dirname, join_path(prefix, dirname)) + + mkdirp(prefix.bin) + install('build/pennant', prefix.bin) + install_dir('doc') + install_dir('test') + install('LICENSE', prefix) + install('README', prefix) From 1b0d2888bbfffefcda7eb1ffa6e46af9bd652858 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Wed, 19 Jul 2017 17:04:17 -0500 Subject: [PATCH 1276/2394] Package/xsbench (#4822) * removed the tags as per comment in PR# 4749 * addressed above comments * changed fortran compiler. * added proxy application tags. * added tags by removing them from description. * addressed comments * used join_path instead of path concat. * added tags and other minor changes. * removed tags from description. --- .../repos/builtin/packages/xsbench/package.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/xsbench/package.py b/var/spack/repos/builtin/packages/xsbench/package.py index 6cf5e04d772..db84ec5b3d2 100644 --- a/var/spack/repos/builtin/packages/xsbench/package.py +++ b/var/spack/repos/builtin/packages/xsbench/package.py @@ -35,23 +35,29 @@ class Xsbench(MakefilePackage): homepage = "https://github.com/ANL-CESAR/XSBench/" url = "https://github.com/ANL-CESAR/XSBench/archive/v13.tar.gz" + tags = ['proxy-app'] + version('13', '72a92232d2f5777fb52f5ea4082aff37') variant('mpi', default=False, description='Build with MPI support') depends_on('mpi', when='+mpi') + build_directory = 'src' + @property def build_targets(self): - targets = [ - '--directory=src', - ] + targets = [] + cflags = '-std=gnu99' if '+mpi' in self.spec: - targets.append('MPI=yes') targets.append('CC={0}'.format(self.spec['mpi'].mpicc)) + cflags += ' ' + self.compiler.openmp_flag + targets.append('CFLAGS={0}'.format(cflags)) + targets.append('LDFLAGS=-lm') + return targets def install(self, spec, prefix): From 301b457de339b1e795d95a6d328d373568462569 Mon Sep 17 00:00:00 2001 From: jiseung Date: Wed, 19 Jul 2017 17:04:53 -0500 Subject: [PATCH 1277/2394] new package: amr-exp-parabolic (#4821) * new package: amr-exp-parabolic * removed boilerplate and added tag --- .../packages/amr-exp-parabolic/package.py | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 var/spack/repos/builtin/packages/amr-exp-parabolic/package.py diff --git a/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py b/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py new file mode 100644 index 00000000000..dcb85a55907 --- /dev/null +++ b/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py @@ -0,0 +1,78 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob + + +class AmrExpParabolic(MakefilePackage): + """Simplified block-structured adaptive mesh refinement algorithm + in two and three dimensions with subcycling in time. + The algorithm solves a linear advection diffusion equation + with a simple numerical method. This proxy app is intended to + capture the communication pattern of an explicit AMR algorithm + but does not represent an accurate characterization of + floating point effort or + relative costs of communication to computation.""" + + homepage = "https://ccse.lbl.gov/ExaCT/index.html" + url = "https://ccse.lbl.gov/ExaCT/AMR_Exp_Parabolic.tgz" + tags = ['proxy-app'] + + version( + 'release', '330604d9cc755dad8a2cdfaa7ff8f6a4', + url='https://ccse.lbl.gov/ExaCT/AMR_Exp_Parabolic.tgz') + + variant( + 'debug', default=False, description='Turn on debugging') + variant( + 'mpi', default=True, description='Build with MPI support') + variant( + 'openmp', default=False, + description='Build with OpenMP support') + variant( + 'prof', default=False, description='Use profiler') + + depends_on('mpi', when='+mpi') + depends_on('gmake', type='build') + + build_directory = 'MiniApps/AMR_Adv_Diff_F90' + + def edit(self, spec, prefix): + with working_dir(self.build_directory): + makefile = FileFilter('GNUmakefile') + if '+debug' in spec: + makefile.filter('NDEBUG.*:= t', '#') + if '~mpi' in spec: + makefile.filter('MPI.*:= t', '#') + if '+openmp' in spec: + makefile.filter('OMP.*:=', 'OMP := t') + if '+prof' in spec: + makefile.filter('PROF.*:=', 'PROF := t') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + files = glob.glob(join_path(self.build_directory, '*.exe')) + for f in files: + install(f, prefix.bin) From 9ae36849afbffca6c25bc93fbc27381c1f48403a Mon Sep 17 00:00:00 2001 From: jiseung Date: Wed, 19 Jul 2017 17:05:19 -0500 Subject: [PATCH 1278/2394] new package: cns-nospec (#4806) * new package: cns-nospec * made changes as suggested and added proxy-app tag * updated edit() * adjusted logic for '+debug' --- .../builtin/packages/cns-nospec/package.py | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cns-nospec/package.py diff --git a/var/spack/repos/builtin/packages/cns-nospec/package.py b/var/spack/repos/builtin/packages/cns-nospec/package.py new file mode 100644 index 00000000000..c702a0a92b9 --- /dev/null +++ b/var/spack/repos/builtin/packages/cns-nospec/package.py @@ -0,0 +1,67 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob + + +class CnsNospec(MakefilePackage): + """A simple, explicit, stencil-based test code for integrating + the compressible Navier-Stokes equations. The code uses + 8th order finite differences in space and a 3rd order, + low-storage TVD RK algorithm in time.""" + + homepage = "https://ccse.lbl.gov/ExaCT/index.html" + url = "https://ccse.lbl.gov/ExaCT/CNS_Nospec.tgz" + tags = ['proxy-app'] + + version('master', '14ff5be62539d829b30b17281688ee3f') + + variant('mpi', default=True, description='Build with MPI support') + variant('debug', default=False, description='Build with debugging') + variant('omp', default=False, description='Build with OpenMP support') + variant('prof', default=False, description='Build with profiling') + + depends_on('mpi', when='+mpi') + depends_on('gmake', type='build') + + build_directory = 'MiniApps/CNS_NoSpec' + + def edit(self, spec, prefix): + with working_dir(self.build_directory): + makefile = FileFilter('GNUmakefile') + if '+mpi' in spec: + makefile.filter('MPI .*', 'MPI := t') + if '+debug' in spec: + makefile.filter('NDEBUG.*', '#') + if '+omp' in spec: + makefile.filter('OMP.*', 'OMP := t') + if '+prof' in spec: + makefile.filter('PROF.*', 'PROF := t') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + files = glob.glob(join_path(self.build_directory, '*.exe')) + for f in files: + install(f, prefix.bin) From bdcd63ed70fee6300951a2af444e643837d3942f Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Wed, 19 Jul 2017 19:03:53 -0500 Subject: [PATCH 1279/2394] Add tags to nekbone package (#4825) --- var/spack/repos/builtin/packages/nekbone/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/nekbone/package.py b/var/spack/repos/builtin/packages/nekbone/package.py index ec6cc0b38b6..7d2b61f038c 100644 --- a/var/spack/repos/builtin/packages/nekbone/package.py +++ b/var/spack/repos/builtin/packages/nekbone/package.py @@ -22,6 +22,7 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## + from spack import * @@ -34,6 +35,8 @@ class Nekbone(Package): homepage = "https://github.com/ANL-CESAR/" url = "https://github.com/ANL-CESAR/nekbone.git" + tags = ['proxy-app'] + version('develop', git='https://github.com/ANL-CESAR/nekbone.git') def install(self, spec, prefix): From 9df9a809a873805c013daf7851b6e9ef03794e70 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Wed, 19 Jul 2017 19:04:48 -0500 Subject: [PATCH 1280/2394] Add MPI support and tags to embs package (#4824) --- .../repos/builtin/packages/ebms/package.py | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ebms/package.py b/var/spack/repos/builtin/packages/ebms/package.py index 2e80572bd02..db3970814f4 100644 --- a/var/spack/repos/builtin/packages/ebms/package.py +++ b/var/spack/repos/builtin/packages/ebms/package.py @@ -33,14 +33,37 @@ class Ebms(MakefilePackage): described in [1], where only one process in a compute node is used, and the compute nodes are divided into memory nodes and tracking nodes. Memory nodes do not participate in particle - tracking. Obviously, there is a lot of resource waste in this design.""" + tracking. Obviously, there is a lot of resource waste in this design. + """ homepage = "https://github.com/ANL-CESAR/EBMS" url = "https://github.com/ANL-CESAR/EBMS/archive/master.tar.gz" version('develop', git='https://github.com/ANL-CESAR/EBMS.git') + variant('mpi', default=True, description='Build with MPI support') + + depends_on('mpi', when='+mpi') + + tags = ['proxy-app'] + + @property + def build_targets(self): + + targets = [] + + cflags = '-g -O3 -std=gnu99' + + if '+mpi' in self.spec: + targets.append('CC={0}'.format(self.spec['mpi'].mpicc)) + + targets.append('CFLAGS={0}'.format(cflags)) + + return targets + def install(self, spec, prefix): mkdir(prefix.bin) install('ebmc-iallgather', prefix.bin) install('ebmc-rget', prefix.bin) + install_tree('run', join_path(prefix, 'run')) + install_tree('inputs', join_path(prefix, 'inputs')) From acca75b36807c164568d726e39b77839e00c52b6 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 19 Jul 2017 19:49:15 -0700 Subject: [PATCH 1281/2394] Add info for zsh@5.3.1 (#4827) --- var/spack/repos/builtin/packages/zsh/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py index 24bb9ec8968..7a298d16b51 100644 --- a/var/spack/repos/builtin/packages/zsh/package.py +++ b/var/spack/repos/builtin/packages/zsh/package.py @@ -34,6 +34,7 @@ class Zsh(AutotoolsPackage): homepage = "http://www.zsh.org" url = "http://downloads.sourceforge.net/project/zsh/zsh/5.1.1/zsh-5.1.1.tar.gz" + version('5.3.1', checksum='d583fbca0c2410bf9542ce8a651c26ca') version('5.1.1', checksum='8ba28a9ef82e40c3a271602f18343b2f') depends_on("pcre") From f962aba6ce85ba001bbe20f6f849478fdb9370c5 Mon Sep 17 00:00:00 2001 From: becker33 Date: Wed, 19 Jul 2017 20:12:00 -0700 Subject: [PATCH 1282/2394] Allow packages to control handling of compiler flags (#4421) * Initial work on flag trapping using functions called _handler and default_flag_handler * Update packages so they do not obliterate flags * Added append to EnvironmentModifications class * changed EnvironmentModifications to have append_flags method * changed flag_val to be a tuple * Increased test coverage * added documentation of flag handling --- lib/spack/docs/packaging_guide.rst | 88 +++++++++++++++++++ lib/spack/spack/build_environment.py | 13 +++ lib/spack/spack/build_systems/autotools.py | 23 +++++ lib/spack/spack/build_systems/cmake.py | 9 ++ lib/spack/spack/environment.py | 23 +++++ lib/spack/spack/test/environment.py | 13 +++ .../repos/builtin/packages/clhep/package.py | 10 ++- .../repos/builtin/packages/elpa/package.py | 4 +- .../repos/builtin/packages/ferret/package.py | 7 +- .../repos/builtin/packages/git/package.py | 2 +- .../repos/builtin/packages/libint/package.py | 1 + .../repos/builtin/packages/libxc/package.py | 11 ++- .../repos/builtin/packages/libxpm/package.py | 2 +- .../builtin/packages/llvm-lld/package.py | 5 +- .../repos/builtin/packages/llvm/package.py | 2 +- .../repos/builtin/packages/zlib/package.py | 2 +- 16 files changed, 203 insertions(+), 12 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 540d2a9e4ec..b90a0eea177 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2390,6 +2390,94 @@ build system. Compiler flags ^^^^^^^^^^^^^^ +Compiler flags set by the user through the Spec object can be passed to +the build in one of two ways. For packages inheriting from the +``CmakePackage`` or ``AutotoolsPackage`` classes, the build environment +passes those flags to the relevant environment variables (``CFLAGS``, +``CXXFLAGS``, etc) that are respected by the build system. For all other +packages, the default behavior is to inject the flags directly into the +compiler commands using Spack's compiler wrappers. + +Individual packages can override the default behavior for the flag +handling. Packages can define a ``default_flag_handler`` method that +applies to all sets of flags handled by Spack, or may define +individual methods ``cflags_handler``, ``cxxflags_handler``, +etc. Spack will apply the individual method for a flag set if it +exists, otherwise the ``default_flag_handler`` method if it exists, +and fall back on the default for that package class if neither exists. + +These methods are defined on the package class, and take two +parameters in addition to the packages itself. The ``env`` parameter +is an ``EnvironmentModifications`` object that can be used to change +the build environment. The ``flag_val`` parameter is a tuple. Its +first entry is the name of the flag (``cflags``, ``cxxflags``, etc.) +and its second entry is a list of the values for that flag. + +There are three primary idioms that can be combined to create whatever +behavior the package requires. + +1. The default behavior for packages inheriting from +``AutotoolsPackage`` or ``CmakePackage``. + +.. code-block:: python + + def default_flag_handler(self, env, flag_val): + env.append_flags(flag_val[0].upper(), ' '.join(flag_val[1])) + return [] + +2. The default behavior for other packages + +.. code-block:: python + + def default_flag_handler(self, env, flag_val): + return flag_val[1] + + +3. Packages may have additional flags to add to the build. These flags +can be added to either idiom above. For example: + +.. code-block:: python + + def default_flag_handler(self, env, flag_val): + flags = flag_val[1] + flags.append('-flag') + return flags + +or + +.. code-block:: python + + def default_flag_handler(self, env, flag_val): + env.append_flags(flag_val[0].upper(), ' '.join(flag_val[1])) + env.append_flags(flag_val[0].upper(), '-flag') + return [] + +Packages may also opt for methods that include aspects of any of the +idioms above. E.g. + +.. code-block:: python + + def default_flag_handler(self, env, flag_val): + flags = [] + if len(flag_val[1]) > 3: + env.append_flags(flag_val[0].upper(), ' '.join(flag_val[1][3:])) + flags = flag_val[1][:3] + else: + flags = flag_val[1] + flags.append('-flag') + return flags + +Because these methods can pass values through environment variables, +it is important not to override these variables unnecessarily in other +package methods. In the ``setup_environment`` and +``setup_dependent_environment`` methods, use the ``append_flags`` +method of the ``EnvironmentModifications`` class to append values to a +list of flags whenever there is no good reason to override the +existing value. In the ``install`` method and other methods that can +operate on the build environment directly through the ``env`` +variable, test for environment variable existance before overriding +values to add compiler flags. + In rare circumstances such as compiling and running small unit tests, a package developer may need to know what are the appropriate compiler flags to enable features like ``OpenMP``, ``c++11``, ``c++14`` and diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 49fecdb59cd..571f0f8c49a 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -467,6 +467,19 @@ def setup_package(pkg, dirty=False): for s in pkg.spec.traverse(): s.package.spec = s + # Trap spack-tracked compiler flags as appropriate. + # Must be before set_compiler_environment_variables + # Current implementation of default flag handler relies on this being + # the first thing to affect the spack_env (so there is no appending), or + # on no other build_environment methods trying to affect these variables + # (CFLAGS, CXXFLAGS, etc). Currently both are true, either is sufficient. + for flag in spack.spec.FlagMap.valid_compiler_flags(): + trap_func = getattr(pkg, flag + '_handler', + getattr(pkg, 'default_flag_handler', + lambda x, y: y[1])) + flag_val = pkg.spec.compiler_flags[flag] + pkg.spec.compiler_flags[flag] = trap_func(spack_env, (flag, flag_val)) + set_compiler_environment_variables(pkg, spack_env) set_build_environment_variables(pkg, spack_env, dirty) pkg.architecture.platform.setup_platform_environment(pkg, spack_env) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index 84f019f1b34..1ef38ddc2db 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -181,6 +181,29 @@ def build_directory(self): """Override to provide another place to build the package""" return self.configure_directory + def default_flag_handler(self, spack_env, flag_val): + # Relies on being the first thing that can affect the spack_env + # EnvironmentModification after it is instantiated or no other + # method trying to affect these variables. Currently both are true + # flag_val is a tuple (flag, value_list). + spack_env.set(flag_val[0].upper(), + ' '.join(flag_val[1])) + return [] + + def patch(self): + """Patches config.guess if + :py:attr:``~.AutotoolsPackage.patch_config_guess`` is True + + :raise RuntimeError: if something goes wrong when patching + ``config.guess`` + """ + + if self.patch_config_guess and self.spec.satisfies( + 'arch=linux-rhel7-ppc64le' + ): + if not self._do_patch_config_guess(): + raise RuntimeError('Failed to find suitable config.guess') + @run_before('autoreconf') def delete_configure_to_force_update(self): if self.force_autoreconf: diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index 240c8a8b188..b339858348b 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -132,6 +132,15 @@ def build_directory(self): """ return join_path(self.stage.source_path, 'spack-build') + def default_flag_handler(self, spack_env, flag_val): + # Relies on being the first thing that can affect the spack_env + # EnvironmentModification after it is instantiated or no other + # method trying to affect these variables. Currently both are true + # flag_val is a tuple (flag, value_list) + spack_env.set(flag_val[0].upper(), + ' '.join(flag_val[1])) + return [] + def cmake_args(self): """Produces a list containing all the arguments that must be passed to cmake, except: diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index bb760bfd2f8..ff278dd6b68 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -63,6 +63,15 @@ def execute(self): os.environ[self.name] = str(self.value) +class AppendFlagsEnv(NameValueModifier): + + def execute(self): + if self.name in os.environ and os.environ[self.name]: + os.environ[self.name] += self.separator + str(self.value) + else: + os.environ[self.name] = str(self.value) + + class UnsetEnv(NameModifier): def execute(self): @@ -171,6 +180,20 @@ def set(self, name, value, **kwargs): item = SetEnv(name, value, **kwargs) self.env_modifications.append(item) + def append_flags(self, name, value, sep=' ', **kwargs): + """ + Stores in the current object a request to append to an env variable + + Args: + name: name of the environment variable to be appended to + value: value to append to the environment variable + Appends with spaces separating different additions to the variable + """ + kwargs.update(self._get_outside_caller_attributes()) + kwargs.update({'separator': sep}) + item = AppendFlagsEnv(name, value, **kwargs) + self.env_modifications.append(item) + def unset(self, name, **kwargs): """ Stores in the current object a request to unset an environment variable diff --git a/lib/spack/spack/test/environment.py b/lib/spack/spack/test/environment.py index 671d6ee6c9e..7f3b7bf2bde 100644 --- a/lib/spack/spack/test/environment.py +++ b/lib/spack/spack/test/environment.py @@ -110,6 +110,19 @@ def test_set(env): assert str(3) == os.environ['B'] +def test_append_flags(env): + """Tests appending to a value in the environment.""" + + # Store a couple of commands + env.append_flags('APPEND_TO_ME', 'flag1') + env.append_flags('APPEND_TO_ME', 'flag2') + + # ... execute the commands + env.apply_modifications() + + assert 'flag1 flag2' == os.environ['APPEND_TO_ME'] + + def test_unset(env): """Tests unsetting values in the environment.""" diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py index e9bf85c97f4..7120fffac6c 100644 --- a/var/spack/repos/builtin/packages/clhep/package.py +++ b/var/spack/repos/builtin/packages/clhep/package.py @@ -78,12 +78,18 @@ def cmake_args(self): cmake_args = [] if '+cxx11' in spec: - env['CXXFLAGS'] = self.compiler.cxx11_flag + if 'CXXFLAGS' in env and env['CXXFLAGS']: + env['CXXFLAGS'] += ' ' + self.compiler.cxx11_flag + else: + env['CXXFLAGS'] = self.compiler.cxx11_flag cmake_args.append('-DCLHEP_BUILD_CXXSTD=' + self.compiler.cxx11_flag) if '+cxx14' in spec: - env['CXXFLAGS'] = self.compiler.cxx14_flag + if 'CXXFLAGS' in env and env['CXXFLAGS']: + env['CXXFLAGS'] += ' ' + self.compiler.cxx14_flag + else: + env['CXXFLAGS'] = self.compiler.cxx14_flag cmake_args.append('-DCLHEP_BUILD_CXXSTD=' + self.compiler.cxx14_flag) diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py index 85d1706b2b2..61e957c0c96 100644 --- a/var/spack/repos/builtin/packages/elpa/package.py +++ b/var/spack/repos/builtin/packages/elpa/package.py @@ -71,8 +71,8 @@ def setup_environment(self, spack_env, run_env): spack_env.set('FC', spec['mpi'].mpifc) spack_env.set('CXX', spec['mpi'].mpicxx) - spack_env.set('LDFLAGS', spec['lapack'].libs.search_flags) - spack_env.set('LIBS', spec['lapack'].libs.link_flags) + spack_env.append_flags('LDFLAGS', spec['lapack'].libs.search_flags) + spack_env.append_flags('LIBS', spec['lapack'].libs.link_flags) spack_env.set('SCALAPACK_LDFLAGS', spec['scalapack'].libs.joined()) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py index f2a32fdd700..6a4c0902f68 100644 --- a/var/spack/repos/builtin/packages/ferret/package.py +++ b/var/spack/repos/builtin/packages/ferret/package.py @@ -98,7 +98,12 @@ def install(self, spec, prefix): ln('-sf', libz_prefix + '/lib', libz_prefix + '/lib64') - os.environ['LDFLAGS'] = '-lquadmath' + + if 'LDFLAGS' in env and env['LDFLAGS']: + env['LDFLAGS'] += ' ' + '-lquadmath' + else: + env['LDFLAGS'] = '-lquadmath' + with working_dir('FERRET', create=False): os.environ['LD_X11'] = '-L/usr/lib/X11 -lX11' os.environ['HOSTTYPE'] = 'x86_64-linux' diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index f01cc37d7b7..9dc9e460afb 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -155,7 +155,7 @@ class Git(AutotoolsPackage): depends_on('m4', type='build') def setup_environment(self, spack_env, run_env): - spack_env.set('LDFLAGS', '-L{0} -lintl'.format( + spack_env.append_flags('LDFLAGS', '-L{0} -lintl'.format( self.spec['gettext'].prefix.lib)) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py index d267a8ea880..34600e742a4 100644 --- a/var/spack/repos/builtin/packages/libint/package.py +++ b/var/spack/repos/builtin/packages/libint/package.py @@ -85,6 +85,7 @@ def setup_environment(self, build_env, run_env): def configure_args(self): config_args = ['--enable-shared'] + optflags = self.optflags # Optimization flag names have changed in libint 2 diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py index f018bacfa3e..e2fe25c455e 100644 --- a/var/spack/repos/builtin/packages/libxc/package.py +++ b/var/spack/repos/builtin/packages/libxc/package.py @@ -71,8 +71,15 @@ def install(self, spec, prefix): if which('xiar'): env['AR'] = 'xiar' - env['CFLAGS'] = optflags - env['FCFLAGS'] = optflags + if 'CFLAGS' in env and env['CFLAGS']: + env['CFLAGS'] += ' ' + optflags + else: + env['CFLAGS'] = optflags + + if 'FCFLAGS' in env and env['FCFLAGS']: + env['FCFLAGS'] += ' ' + optflags + else: + env['FCFLAGS'] = optflags configure('--prefix={0}'.format(prefix), '--enable-shared') diff --git a/var/spack/repos/builtin/packages/libxpm/package.py b/var/spack/repos/builtin/packages/libxpm/package.py index 09d0b0ec617..40234b1b2d1 100644 --- a/var/spack/repos/builtin/packages/libxpm/package.py +++ b/var/spack/repos/builtin/packages/libxpm/package.py @@ -46,5 +46,5 @@ class Libxpm(AutotoolsPackage): depends_on('util-macros', type='build') def setup_environment(self, spack_env, run_env): - spack_env.set('LDFLAGS', '-L{0} -lintl'.format( + spack_env.append_flags('LDFLAGS', '-L{0} -lintl'.format( self.spec['gettext'].prefix.lib)) diff --git a/var/spack/repos/builtin/packages/llvm-lld/package.py b/var/spack/repos/builtin/packages/llvm-lld/package.py index 4624451e69b..0ebe2e6b895 100644 --- a/var/spack/repos/builtin/packages/llvm-lld/package.py +++ b/var/spack/repos/builtin/packages/llvm-lld/package.py @@ -38,7 +38,10 @@ class LlvmLld(Package): depends_on('cmake', type='build') def install(self, spec, prefix): - env['CXXFLAGS'] = self.compiler.cxx11_flag + if 'CXXFLAGS' in env and env['CXXFLAGS']: + env['CXXFLAGS'] += ' ' + self.compiler.cxx11_flag + else: + env['CXXFLAGS'] = self.compiler.cxx11_flag with working_dir('spack-build', create=True): cmake('..', diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 1f88d948820..fc8823f1a81 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -325,7 +325,7 @@ class Llvm(CMakePackage): conflicts('+lldb', when='~clang') def setup_environment(self, spack_env, run_env): - spack_env.set('CXXFLAGS', self.compiler.cxx11_flag) + spack_env.append_flags('CXXFLAGS', self.compiler.cxx11_flag) def build_type(self): if '+debug' in self.spec: diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 0d9822f287a..30fcef95e18 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -57,7 +57,7 @@ def libs(self): def setup_environment(self, spack_env, run_env): if '+pic' in self.spec: - spack_env.set('CFLAGS', self.compiler.pic_flag) + spack_env.append_flags('CFLAGS', self.compiler.pic_flag) def install(self, spec, prefix): config_args = [] From 16fbd0fc41e6268d46ba1ccc0ab6e46a184af09b Mon Sep 17 00:00:00 2001 From: jiseung Date: Thu, 20 Jul 2017 13:15:43 -0500 Subject: [PATCH 1283/2394] new package:SNAP (#4826) --- .../repos/builtin/packages/snap/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/snap/package.py diff --git a/var/spack/repos/builtin/packages/snap/package.py b/var/spack/repos/builtin/packages/snap/package.py new file mode 100644 index 00000000000..325ff214a08 --- /dev/null +++ b/var/spack/repos/builtin/packages/snap/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Snap(MakefilePackage): + """SNAP serves as a proxy application to model + the performance of a modern discrete ordinates + neutral particle transport application. + SNAP may be considered an update to Sweep3D, + intended for hybrid computing architectures. + It is modeled off the Los Alamos National Laboratory code PARTISN.""" + + homepage = "https://github.com/lanl/SNAP" + url = "" + tags = ['proxy-app'] + + version('master', git='https://github.com/lanl/SNAP.git') + + variant('openmp', default=False, description='Build with OpenMP support') + variant('opt', default=True, description='Build with debugging') + variant('mpi', default=True, description='Build with MPI support') + + depends_on('mpi', when='+mpi') + + build_directory = 'src' + + def edit(self, spec, prefix): + with working_dir(self.build_directory): + makefile = FileFilter('Makefile') + if '~opt' in spec: + makefile.filter('OPT = yes', 'OPT = no') + if '~mpi' in spec: + makefile.filter('MPI = yes', 'MPI = no') + if '~openmp' in spec: + makefile.filter('OPENMP = yes', 'OPENMP = no') + + def install(self, spec, prefix): + install('README.md', prefix) + install_tree('qasnap', prefix.qasnap) From 5f0e1514acb5bb89728c53955968709ce7a7fed6 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 20 Jul 2017 13:16:32 -0500 Subject: [PATCH 1284/2394] kentutils: new pacakge (#4831) --- .../builtin/packages/kentutils/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/kentutils/package.py diff --git a/var/spack/repos/builtin/packages/kentutils/package.py b/var/spack/repos/builtin/packages/kentutils/package.py new file mode 100644 index 00000000000..65d46f563d9 --- /dev/null +++ b/var/spack/repos/builtin/packages/kentutils/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Kentutils(MakefilePackage): + """Jim Kent command line bioinformatic utilities""" + + homepage = "https://github.com/ENCODE-DCC/kentUtils" + url = "https://github.com/ENCODE-DCC/kentUtils" + + version('302.1', git='https://github.com/ENCODE-DCC/kentUtils.git', commit='d8376c5d52a161f2267346ed3dc94b5dce74c2f9') + + depends_on('libpng') + depends_on('openssl') + + # Actually depends on mysql, but mariadb works for now until mysql is + # available + depends_on('mariadb') + + conflicts('%cce') + conflicts('%clang') + conflicts('%intel') + conflicts('%nag') + conflicts('%pgi') + conflicts('%xl') + conflicts('%xl_r') + + def install(self, spec, prefix): + install_tree('bin', prefix.bin) From 5173a8bef909bab3b1f525929db0ba637037c9b1 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Thu, 20 Jul 2017 13:25:57 -0500 Subject: [PATCH 1285/2394] Spack updates to three Krell packages (#4765) * Update the krell institute products to use the latest features of spack for building on cluster platforms. * Address travis error messages and resubmit the pull request. * Update the contents of openspeedshop package.py so it passes the flake8 tests. * Fix flake8 error-whitespack issue in mrnet package.py file. * Add updates based on spack reviewer feedback. * More fixes based on comments from reviewers. Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH. * More review related changes. Update MPIOption.append lines and take out xercesc references. * Create a base options function for common openspeedshop base cmake options to reduce redundencies. * Add libxml2+python depends on to get around issues with the libxml2 package file. * Using boost over 1.60.0 causes compile errors. This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build. * Fix bad syntax in specifying the boost version range. * Update the version numbers for the krell institute components and tools: cbtf and openspeedshop. * Do not build glib for qt3, it is not needed and causes build problems at this time anyway. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Trim comments to fit more concisely. * Fix tabs versus spaces and swap if and else clause check from a negative to a positive check. * Fix issues with the cbtf-argonavis build, update to use dyninst-9.3.2, fixes to openspeedshop package build. * Fix issues with the cbtf-argonavis package.py files related to comments. * Add changes for changing the krell packages from Package to CMakePackage. * Add better changes for changing the krell packages from Package to CMakePackage. * Add more modifications for changing the krell packages from Package to CMakePackage. * Add additional modifications for changing the krell packages from Package to CMakePackage and fixing Travis erros * Fix new travis errors. * Fix new travis errors. * Add more changes for PR 4765. * Add more refinements to the conversion from Package to CMakePackage. * Fix new travis errors. * Add dependencies for MPI to be passed to cbtf-krell, so it can build the MPI collectors requested by the builder of openspeedshop. * Remove extra unnecessary routine to adjust build arguments. Fix if-else clause issue. * Fix more flake issues caused by last changes. --- .../packages/cbtf-argonavis/package.py | 97 ++---- .../builtin/packages/cbtf-krell/package.py | 187 ++--------- .../builtin/packages/cbtf-lanl/package.py | 81 ++--- .../repos/builtin/packages/cbtf/package.py | 123 +++---- .../builtin/packages/openspeedshop/package.py | 300 +++++++----------- 5 files changed, 236 insertions(+), 552 deletions(-) diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py index 9b4439f6b68..2c1c6636393 100644 --- a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py +++ b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## ########################################################################## -# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. +# Copyright (c) 2015-2017 Krell Institute. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software @@ -43,17 +43,13 @@ from spack import * -class CbtfArgonavis(Package): +class CbtfArgonavis(CMakePackage): """CBTF Argo Navis project contains the CUDA collector and supporting libraries that was done as a result of a DOE SBIR grant. """ homepage = "http://sourceforge.net/p/cbtf/wiki/Home/" - # Mirror access template example - # url = "file:/home/jeg/OpenSpeedShop_ROOT/SOURCES/cbtf-argonavis-1.6.tar.gz" - # version('1.6', '0fafa0008478405c2c2319450f174ed4') - version('1.8', branch='master', git='https://github.com/OpenSpeedShop/cbtf-argonavis.git') @@ -67,73 +63,30 @@ class CbtfArgonavis(Package): parallel = False - def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): - # Sets build type parameters into cmakeOptions the options that will - # enable the cbtf-krell built type settings + build_directory = 'build_cbtf_argonavis' + def build_type(self): + return 'None' + + def cmake_args(self): + spec = self.spec compile_flags = "-O2 -g" - BuildTypeOptions = [] - # Set CMAKE_BUILD_TYPE to what cbtf-krell wants it to be, not the - # stdcmakeargs - for word in cmakeOptions[:]: - if word.startswith('-DCMAKE_BUILD_TYPE'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_CXX_FLAGS'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_C_FLAGS'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_VERBOSE_MAKEFILE'): - cmakeOptions.remove(word) - BuildTypeOptions.extend([ - '-DCMAKE_VERBOSE_MAKEFILE=ON', - '-DCMAKE_BUILD_TYPE=None', + cmake_args = [ '-DCMAKE_CXX_FLAGS=%s' % compile_flags, - '-DCMAKE_C_FLAGS=%s' % compile_flags - ]) + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DCUDA_DIR=%s' % spec['cuda'].prefix, + '-DCUDA_INSTALL_PATH=%s' % spec['cuda'].prefix, + '-DCUDA_TOOLKIT_ROOT_DIR=%s' % spec['cuda'].prefix, + '-DCUPTI_DIR=%s' % spec['cuda'].prefix.extras.CUPTI, + '-DCUPTI_ROOT=%s' % spec['cuda'].prefix.extras.CUPTI, + '-DPAPI_ROOT=%s' % spec['papi'].prefix, + '-DCBTF_DIR=%s' % spec['cbtf'].prefix, + '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, + '-DBOOST_ROOT=%s' % spec['boost'].prefix, + '-DBoost_DIR=%s' % spec['boost'].prefix, + '-DBOOST_LIBRARYDIR=%s' % spec['boost'].prefix.lib, + '-DMRNET_DIR=%s' % spec['mrnet'].prefix, + '-DBoost_NO_SYSTEM_PATHS=ON'] - cmakeOptions.extend(BuildTypeOptions) - - def install(self, spec, prefix): - - # Look for package installation information in the cbtf and cbtf-krell - # prefixes - cmake_prefix_path = join_path( - spec['cbtf'].prefix) + ':' + join_path(spec['cbtf-krell'].prefix) - - with working_dir('CUDA'): - with working_dir('build', create=True): - - cmakeOptions = [] - cmakeOptions.extend( - ['-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path, - '-DCUDA_DIR=%s' % spec['cuda'].prefix, - '-DCUDA_INSTALL_PATH=%s' % spec['cuda'].prefix, - '-DCUDA_TOOLKIT_ROOT_DIR=%s' % spec['cuda'].prefix, - '-DCUPTI_DIR=%s' % join_path( - spec['cuda'].prefix + '/extras/CUPTI'), - '-DCUPTI_ROOT=%s' % join_path( - spec['cuda'].prefix + '/extras/CUPTI'), - '-DPAPI_ROOT=%s' % spec['papi'].prefix, - '-DCBTF_DIR=%s' % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, - '-DBOOST_ROOT=%s' % spec['boost'].prefix, - '-DBoost_DIR=%s' % spec['boost'].prefix, - '-DBOOST_LIBRARYDIR=%s' % spec['boost'].prefix.lib, - '-DMRNET_DIR=%s' % spec['mrnet'].prefix, - '-DBoost_NO_SYSTEM_PATHS=ON']) - - # Add in the standard cmake arguments - cmakeOptions.extend(std_cmake_args) - - # Adjust the standard cmake arguments to what we want the build - # type, etc to be - self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) - - # Invoke cmake - cmake('..', *cmakeOptions) - - make("clean") - make() - make("install") + return cmake_args diff --git a/var/spack/repos/builtin/packages/cbtf-krell/package.py b/var/spack/repos/builtin/packages/cbtf-krell/package.py index 0114ad4e4a1..a90ea74f9d0 100644 --- a/var/spack/repos/builtin/packages/cbtf-krell/package.py +++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## ########################################################################## -# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. +# Copyright (c) 2015-2017 Krell Institute. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software @@ -43,7 +43,7 @@ from spack import * -class CbtfKrell(Package): +class CbtfKrell(CMakePackage): """CBTF Krell project contains the Krell Institute contributions to the CBTF project. These contributions include many performance data collectors and support libraries as well as some example tools @@ -52,10 +52,6 @@ class CbtfKrell(Package): """ homepage = "http://sourceforge.net/p/cbtf/wiki/Home/" - # optional mirror access template - # url = "file:/home/jeg/cbtf-krell-1.6.tar.gz" - # version('1.6', 'edeb61cd488f16e7b124f77db9ce762d') - version('1.8', branch='master', git='https://github.com/OpenSpeedShop/cbtf-krell.git') @@ -81,7 +77,7 @@ class CbtfKrell(Package): # collectionTool depends_on("boost@1.50.0:1.59.0") - depends_on("dyninst@9.2.0") + depends_on("dyninst@9.3.2") depends_on("mrnet@5.0.1:+lwthreads") depends_on("xerces-c@3.1.1:") @@ -104,31 +100,7 @@ class CbtfKrell(Package): parallel = False - def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): - # Sets build type parameters into cmakeOptions the options that will - # enable the cbtf-krell built type settings - - compile_flags = "-O2 -g" - BuildTypeOptions = [] - # Set CMAKE_BUILD_TYPE to what cbtf-krell wants it to be, not the - # stdcmakeargs - for word in cmakeOptions[:]: - if word.startswith('-DCMAKE_BUILD_TYPE'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_CXX_FLAGS'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_C_FLAGS'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_VERBOSE_MAKEFILE'): - cmakeOptions.remove(word) - BuildTypeOptions.extend([ - '-DCMAKE_VERBOSE_MAKEFILE=ON', - '-DCMAKE_BUILD_TYPE=None', - '-DCMAKE_CXX_FLAGS=%s' % compile_flags, - '-DCMAKE_C_FLAGS=%s' % compile_flags - ]) - - cmakeOptions.extend(BuildTypeOptions) + build_directory = 'build_cbtf_krell' def set_mpi_cmakeOptions(self, spec, cmakeOptions): # Appends to cmakeOptions the options that will enable the appropriate @@ -157,135 +129,30 @@ def set_mpi_cmakeOptions(self, spec, cmakeOptions): cmakeOptions.extend(MPIOptions) - def install(self, spec, prefix): + def build_type(self): + return 'None' + + def cmake_args(self): + spec = self.spec + + compile_flags = "-O2 -g" # Add in paths for finding package config files that tell us # where to find these packages - # cmake_prefix_path = \ - # join_path(spec['cbtf'].prefix) + ':' + \ - # join_path(spec['dyninst'].prefix) - # '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path + cmake_args = [ + '-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DCBTF_DIR=%s' % spec['cbtf'].prefix, + '-DBINUTILS_DIR=%s' % spec['binutils'].prefix, + '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, + '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix, + '-DPAPI_DIR=%s' % spec['papi'].prefix, + '-DBOOST_DIR=%s' % spec['boost'].prefix, + '-DMRNET_DIR=%s' % spec['mrnet'].prefix, + '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, + '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix] - # Build cbtf-krell with cmake - with working_dir('build_cbtf_krell', create=True): - cmakeOptions = [] - cmakeOptions.extend( - ['-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DCBTF_DIR=%s' % spec['cbtf'].prefix, - '-DBINUTILS_DIR=%s' % spec['binutils'].prefix, - '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, - '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix, - '-DPAPI_DIR=%s' % spec['papi'].prefix, - '-DBOOST_DIR=%s' % spec['boost'].prefix, - '-DMRNET_DIR=%s' % spec['mrnet'].prefix, - '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, - '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix]) + # Add any MPI implementations coming from variant settings + self.set_mpi_cmakeOptions(spec, cmake_args) - # Add any MPI implementations coming from variant settings - self.set_mpi_cmakeOptions(spec, cmakeOptions) - - # Add in the standard cmake arguments - cmakeOptions.extend(std_cmake_args) - - # Adjust the standard cmake arguments to what we want the build - # type, etc to be - self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) - - # Invoke cmake - cmake('..', *cmakeOptions) - - make("clean") - make() - make("install") - - # if '+cray' in spec: - # if 'cray' in self.spec.architecture: - # if '+runtime' in spec: - # with working_dir('build_cbtf_cray_runtime', create=True): - # python_vers='%d.%d' % spec['python'].version[:2] - # cmake .. \ - # -DCMAKE_BUILD_TYPE=Debug \ - # -DTARGET_OS="cray" \ - # -DRUNTIME_ONLY="true" \ - # -DCMAKE_INSTALL_PREFIX=${CBTF_KRELL_PREFIX} \ - # -DCMAKE_PREFIX_PATH=${CBTF_ROOT} \ - # -DCBTF_DIR=${CBTF_ROOT} \ - # -DBOOST_ROOT=${BOOST_INSTALL_PREFIX} \ - # -DXERCESC_DIR=${XERCESC_INSTALL_PREFIX} \ - # -DBINUTILS_DIR=${KRELL_ROOT} \ - # -DLIBMONITOR_DIR=${KRELL_ROOT_COMPUTE} \ - # -DLIBUNWIND_DIR=${KRELL_ROOT_COMPUTE} \ - # -DPAPI_DIR=${PAPI_ROOT} \ - # -DDYNINST_DIR=${DYNINST_CN_ROOT} \ - # -DMRNET_DIR=${MRNET_INSTALL_PREFIX} \ - # -DMPICH2_DIR=/opt/cray/mpt/7.0.1/gni/mpich2-gnu/48 - # else: - # with working_dir('build_cbtf_cray_frontend', create=True): - # python_vers='%d.%d' % spec['python'].version[:2] - # cmake .. \ - # -DCMAKE_BUILD_TYPE=Debug \ - # -DCMAKE_INSTALL_PREFIX=${CBTF_KRELL_PREFIX} \ - # -DCMAKE_PREFIX_PATH=${CBTF_ROOT} \ - # -DCBTF_DIR=${CBTF_ROOT} \ - # -DRUNTIME_TARGET_OS="cray" \ - # -DCBTF_KRELL_CN_RUNTIME_DIR=${CBTF_KRELL_CN_RUNTIME_ROOT} \ - # -DCBTF_CN_RUNTIME_DIR=${CBTF_CN_RUNTIME_ROOT} \ - # -DLIBMONITOR_CN_RUNTIME_DIR=${LIBMONITOR_CN_ROOT} \ - # -DLIBUNWIND_CN_RUNTIME_DIR=${LIBUNWIND_CN_ROOT} \ - # -DPAPI_CN_RUNTIME_DIR=${PAPI_CN_ROOT} \ - # -DXERCESC_CN_RUNTIME_DIR=/${XERCESC_CN_ROOT} \ - # -DMRNET_CN_RUNTIME_DIR=${MRNET_CN_ROOT} \ - # -DBOOST_CN_RUNTIME_DIR=${BOOST_CN_ROOT} \ - # -DDYNINST_CN_RUNTIME_DIR=${DYNINST_CN_ROOT} \ - # -DBOOST_ROOT=/${KRELL_ROOT} \ - # -DXERCESC_DIR=/${KRELL_ROOT} \ - # -DBINUTILS_DIR=/${KRELL_ROOT} \ - # -DLIBMONITOR_DIR=${KRELL_ROOT} \ - # -DLIBUNWIND_DIR=${KRELL_ROOT} \ - # -DPAPI_DIR=${PAPI_ROOT} \ - # -DDYNINST_DIR=${KRELL_ROOT} \ - # -DMRNET_DIR=${KRELL_ROOT} \ - # -DMPICH2_DIR=/opt/cray/mpt/7.0.1/gni/mpich2-gnu/48 - # fi -# -# make("clean") -# make() -# make("install") -# -# elif '+mic' in spec: -# if '+runtime' in spec: -# with working_dir('build_cbtf_mic_runtime', create=True): -# python_vers='%d.%d' % spec['python'].version[:2] -# cmake .. \ -# -# else: -# with working_dir('build_cbtf_cray_frontend', create=True): -# python_vers='%d.%d' % spec['python'].version[:2] -# cmake .. \ -# fi -# -# else: -# # Build cbtf-krell with cmake -# with working_dir('build_cbtf_krell', create=True): -# cmake('..', -# '-DCMAKE_BUILD_TYPE=Debug', -# '-DCMAKE_INSTALL_PREFIX=%s' % prefix, -# '-DCBTF_DIR=%s' % spec['cbtf'].prefix, -# '-DBINUTILS_DIR=%s' % spec['binutils'].prefix, -# '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, -# '-DLIBUNWIND_DIR=%s'% spec['libunwind'].prefix, -# '-DPAPI_DIR=%s' % spec['papi'].prefix, -# '-DBOOST_DIR=%s' % spec['boost'].prefix, -# '-DMRNET_DIR=%s' % spec['mrnet'].prefix, -# '-DDYNINST_DIR=%s' % spec['dyninst'].prefix, -# '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, -# '-DOPENMPI_DIR=%s' % openmpi_prefix_path, -# '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path, -# *std_cmake_args) -# -# make("clean") -# make() -# make("install") -# -# fi -# + return cmake_args diff --git a/var/spack/repos/builtin/packages/cbtf-lanl/package.py b/var/spack/repos/builtin/packages/cbtf-lanl/package.py index a2a258be3ab..6ffca1f8b16 100644 --- a/var/spack/repos/builtin/packages/cbtf-lanl/package.py +++ b/var/spack/repos/builtin/packages/cbtf-lanl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## ########################################################################## -# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. +# Copyright (c) 2015-2017 Krell Institute. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software @@ -43,15 +43,11 @@ from spack import * -class CbtfLanl(Package): +class CbtfLanl(CMakePackage): """CBTF LANL project contains a memory tool and data center type system command monitoring tool.""" homepage = "http://sourceforge.net/p/cbtf/wiki/Home/" - # Mirror access template example - # url = "file:/g/g24/jeg/cbtf-lanl-1.6.tar.gz" - # version('1.6', 'c3f78f967b0a42c6734ce4be0e602426') - version('1.8', branch='master', git='http://git.code.sf.net/p/cbtf-lanl/cbtf-lanl') @@ -64,61 +60,24 @@ class CbtfLanl(Package): parallel = False - def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): - # Sets build type parameters into cmakeOptions the options that will - # enable the cbtf-krell built type settings + build_directory = 'build_cbtf_lanl' + def build_type(self): + return 'None' + + def cmake_args(self): + + spec = self.spec compile_flags = "-O2 -g" - BuildTypeOptions = [] - # Set CMAKE_BUILD_TYPE to what cbtf-krell wants it to be, not the - # stdcmakeargs - for word in cmakeOptions[:]: - if word.startswith('-DCMAKE_BUILD_TYPE'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_CXX_FLAGS'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_C_FLAGS'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_VERBOSE_MAKEFILE'): - cmakeOptions.remove(word) - BuildTypeOptions.extend([ - '-DCMAKE_VERBOSE_MAKEFILE=ON', - '-DCMAKE_BUILD_TYPE=None', - '-DCMAKE_CXX_FLAGS=%s' % compile_flags, - '-DCMAKE_C_FLAGS=%s' % compile_flags - ]) - cmakeOptions.extend(BuildTypeOptions) + cmake_args = [ + '-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DCBTF_DIR=%s' % spec['cbtf'].prefix, + '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, + '-DMRNET_DIR=%s' % spec['mrnet'].prefix, + '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, + '-DCMAKE_MODULE_PATH=%s' % join_path( + prefix.share, 'KrellInstitute', 'cmake')] - def install(self, spec, prefix): - - # Add in paths for finding package config files that tell us where to - # find these packages - cmake_prefix_path = join_path( - spec['cbtf'].prefix) + ':' + join_path(spec['cbtf-krell'].prefix) - - with working_dir('build', create=True): - cmakeOptions = [] - cmakeOptions.extend( - ['-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DCBTF_DIR=%s' % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, - '-DMRNET_DIR=%s' % spec['mrnet'].prefix, - '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, - '-DCMAKE_PREFIX_PATH=%s' % cmake_prefix_path, - '-DCMAKE_MODULE_PATH=%s' % join_path( - prefix.share, 'KrellInstitute', 'cmake')]) - - # Add in the standard cmake arguments - cmakeOptions.extend(std_cmake_args) - - # Adjust the standard cmake arguments to what we want the build - # type, etc to be - self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) - - # Invoke cmake - cmake('..', *cmakeOptions) - - make("clean") - make() - make("install") + return cmake_args diff --git a/var/spack/repos/builtin/packages/cbtf/package.py b/var/spack/repos/builtin/packages/cbtf/package.py index a9b141985f7..68e2b7d0a22 100644 --- a/var/spack/repos/builtin/packages/cbtf/package.py +++ b/var/spack/repos/builtin/packages/cbtf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## ########################################################################## -# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. +# Copyright (c) 2015-2017 Krell Institute. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software @@ -43,7 +43,7 @@ from spack import * -class Cbtf(Package): +class Cbtf(CMakePackage): """CBTF project contains the base code for CBTF that supports creating components, component networks and the support to connect these components and component networks into sequential and distributed @@ -52,10 +52,6 @@ class Cbtf(Package): """ homepage = "http://sourceforge.net/p/cbtf/wiki/Home" - # Mirror access template example - # url = "file:/home/jeg/cbtf-1.6.tar.gz" - # version('1.6', 'c1ef4e5aa4e470dffb042abdba0b9987') - # Use when the git repository is available version('1.8', branch='master', git='https://github.com/OpenSpeedShop/cbtf.git') @@ -72,82 +68,45 @@ class Cbtf(Package): parallel = False - def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): - # Sets build type parameters into cmakeOptions the options that will - # enable the cbtf-krell built type settings + build_directory = 'build_cbtf' + + def build_type(self): + return 'None' + + def cmake_args(self): + + spec = self.spec + + # Boost_NO_SYSTEM_PATHS Set to TRUE to suppress searching + # in system paths (or other locations outside of BOOST_ROOT + # or BOOST_INCLUDEDIR). Useful when specifying BOOST_ROOT. + # Defaults to OFF. compile_flags = "-O2 -g" - BuildTypeOptions = [] - # Set CMAKE_BUILD_TYPE to what cbtf-krell wants it to be, not the - # stdcmakeargs - for word in cmakeOptions[:]: - if word.startswith('-DCMAKE_BUILD_TYPE'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_CXX_FLAGS'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_C_FLAGS'): - cmakeOptions.remove(word) - BuildTypeOptions.extend([ - '-DCMAKE_BUILD_TYPE=None', - '-DCMAKE_CXX_FLAGS=%s' % compile_flags, - '-DCMAKE_C_FLAGS=%s' % compile_flags - ]) - cmakeOptions.extend(BuildTypeOptions) + if '+runtime' in spec: + # Install message tag include file for use in Intel MIC + # cbtf-krell build + # FIXME + cmake_args = [ + '-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DRUNTIME_ONLY=TRUE', + '-DBoost_NO_SYSTEM_PATHS=TRUE', + '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, + '-DBOOST_ROOT=%s' % spec['boost'].prefix, + '-DMRNET_DIR=%s' % spec['mrnet'].prefix, + '-DCMAKE_MODULE_PATH=%s' % join_path( + prefix.share, 'KrellInstitute', 'cmake')] + else: + cmake_args = [ + '-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DBoost_NO_SYSTEM_PATHS=TRUE', + '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, + '-DBOOST_ROOT=%s' % spec['boost'].prefix, + '-DMRNET_DIR=%s' % spec['mrnet'].prefix, + '-DCMAKE_MODULE_PATH=%s' % join_path( + prefix.share, 'KrellInstitute', 'cmake')] - def install(self, spec, prefix): - with working_dir('build', create=True): - - # Boost_NO_SYSTEM_PATHS Set to TRUE to suppress searching - # in system paths (or other locations outside of BOOST_ROOT - # or BOOST_INCLUDEDIR). Useful when specifying BOOST_ROOT. - # Defaults to OFF. - - if '+runtime' in spec: - # Install message tag include file for use in Intel MIC - # cbtf-krell build - # FIXME - cmakeOptions = [] - cmakeOptions.extend( - ['-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DBoost_NO_SYSTEM_PATHS=TRUE', - '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, - '-DBOOST_ROOT=%s' % spec['boost'].prefix, - '-DMRNET_DIR=%s' % spec['mrnet'].prefix, - '-DCMAKE_MODULE_PATH=%s' % join_path( - prefix.share, 'KrellInstitute', 'cmake')]) - - # Add in the standard cmake arguments - cmakeOptions.extend(std_cmake_args) - - # Adjust the standard cmake arguments to what we want the build - # type, etc to be - self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) - - # Invoke cmake - cmake('..', *cmakeOptions) - - else: - cmakeOptions = [] - cmakeOptions.extend( - ['-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DBoost_NO_SYSTEM_PATHS=TRUE', - '-DXERCESC_DIR=%s' % spec['xerces-c'].prefix, - '-DBOOST_ROOT=%s' % spec['boost'].prefix, - '-DMRNET_DIR=%s' % spec['mrnet'].prefix, - '-DCMAKE_MODULE_PATH=%s' % join_path( - prefix.share, 'KrellInstitute', 'cmake')]) - - # Add in the standard cmake arguments - cmakeOptions.extend(std_cmake_args) - - # Adjust the standard cmake arguments to what we want the build - # type, etc to be - self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) - - # Invoke cmake - cmake('..', *cmakeOptions) - - make("clean") - make() - make("install") + return cmake_args diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 7b1c66e5d13..2acb44ad02b 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -23,7 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## ############################################################################## -# Copyright (c) 2015-2016 Krell Institute. All Rights Reserved. +# Copyright (c) 2015-2017 Krell Institute. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free @@ -45,7 +45,7 @@ import os.path -class Openspeedshop(Package): +class Openspeedshop(CMakePackage): """OpenSpeedShop is a community effort by The Krell Institute with current direct funding from DOEs NNSA. It builds on top of a broad list of community infrastructures, most notably Dyninst @@ -61,17 +61,11 @@ class Openspeedshop(Package): homepage = "http://www.openspeedshop.org" url = "https://github.com/OpenSpeedShop" - version('2.2', '16cb051179c2038de4e8a845edf1d573') + # Use when the git repository is available version('2.3', branch='master', git='https://github.com/OpenSpeedShop/openspeedshop.git') - # Optional mirror template - # url = "file:/home/jeg/OpenSpeedShop_ROOT/SOURCES/openspeedshop-2.3.tar.gz" - # version('2.3', '517a7798507241ad8abd8b0626a4d2cf') - - parallel = False - variant('offline', default=False, description="build with offline instrumentor enabled.") variant('cbtf', default=True, @@ -83,8 +77,9 @@ class Openspeedshop(Package): to point to target build.") variant('cuda', default=False, description="build with cuda packages included.") - variant('ptgf', default=False, - description="build with the PTGF based gui package enabled.") + variant('useqt4gui', default=False, + description="build with Qt4/Qt5 based gui package enabled. \ + Do not build older Qt3 gui") variant('rtfe', default=False, description="build for clusters heterogeneous processors \ on fe/be nodes.") @@ -115,15 +110,13 @@ class Openspeedshop(Package): depends_on("bison", type='build') depends_on("flex", type='build') depends_on("binutils@2.24+krellpatch", type='build') - # TODO: when using dyninst@9.3.0:, we will need to use elf - # depends_on("elf", type="link") - depends_on("libelf") + depends_on("elf", type="link") depends_on("libdwarf") depends_on("sqlite") depends_on("boost@1.50.0:1.59.0") - depends_on("dyninst@9.2.0") + depends_on("dyninst@9.3.2") depends_on("libxml2+python") - depends_on("qt@3.3.8b+krellpatch") + depends_on("qt@3.3.8b+krellpatch", when='~useqt4gui') # Dependencies only for the openspeedshop offline package. depends_on("libunwind", when='+offline') @@ -138,30 +131,124 @@ class Openspeedshop(Package): # Dependencies only for the openspeedshop cbtf package. depends_on("cbtf", when='+cbtf') - depends_on("cbtf-krell", when='+cbtf') + depends_on('cbtf-krell+mpich', when='+cbtf+mpich') + depends_on('cbtf-krell+mpich2', when='+cbtf+mpich2') + depends_on('cbtf-krell+mpt', when='+cbtf+mpt') + depends_on('cbtf-krell+mvapich', when='+cbtf+mvapich') + depends_on('cbtf-krell+mvapich2', when='+cbtf+mvapich2') + depends_on('cbtf-krell+openmpi', when='+cbtf+openmpi') depends_on("cbtf-argonavis", when='+cbtf+cuda') depends_on("mrnet@5.0.1:+lwthreads", when='+cbtf') - def adjustBuildTypeParams_cmakeOptions(self, spec, cmakeOptions): - # Sets build type parameters into cmakeOptions the - # options that will enable the cbtf-krell built type settings + parallel = False + build_directory = 'build_openspeedshop' + + def build_type(self): + return 'None' + + def cmake_args(self): + spec = self.spec compile_flags = "-O2 -g" - BuildTypeOptions = [] - # Set CMAKE_BUILD_TYPE to what cbtf-krell wants it - # to be, not the stdcmakeargs - for word in cmakeOptions[:]: - if word.startswith('-DCMAKE_BUILD_TYPE'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_CXX_FLAGS'): - cmakeOptions.remove(word) - if word.startswith('-DCMAKE_C_FLAGS'): - cmakeOptions.remove(word) - BuildTypeOptions.extend(['-DCMAKE_BUILD_TYPE=None', - '-DCMAKE_CXX_FLAGS=%s' % compile_flags, - '-DCMAKE_C_FLAGS=%s' % compile_flags]) - cmakeOptions.extend(BuildTypeOptions) + if '+offline' in spec: + instrumentor_setting = "offline" + if '+runtime' in spec: + + cmake_args = [ + '-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DINSTRUMENTOR=%s' % instrumentor_setting, + '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, + '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix, + '-DPAPI_DIR=%s' % spec['papi'].prefix] + + # Add any MPI implementations coming from variant settings + self.set_mpi_cmakeOptions(spec, cmake_args) + + else: + cmake_args = [] + + # Appends base options to cmake_args + self.set_defaultbase_cmakeOptions(spec, cmake_args) + + cmake_args.extend( + ['-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DINSTRUMENTOR=%s' + % instrumentor_setting, + '-DLIBMONITOR_DIR=%s' + % spec['libmonitor'].prefix, + '-DLIBUNWIND_DIR=%s' + % spec['libunwind'].prefix, + '-DPAPI_DIR=%s' + % spec['papi'].prefix, + '-DSQLITE3_DIR=%s' + % spec['sqlite'].prefix, + '-DQTLIB_DIR=%s' + % spec['qt'].prefix]) + + # Add any MPI implementations coming from variant settings + self.set_mpi_cmakeOptions(spec, cmake_args) + + elif '+cbtf' in spec: + instrumentor_setting = "cbtf" + + if '+runtime' in spec: + + # Appends base options to cmake_args + self.set_defaultbase_cmakeOptions(spec, cmake_args) + + cmake_args.extend( + ['-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DINSTRUMENTOR=%s' + % instrumentor_setting, + '-DCBTF_DIR=%s' + % spec['cbtf'].prefix, + '-DCBTF_KRELL_DIR=%s' + % spec['cbtf-krell'].prefix, + '-DMRNET_DIR=%s' + % spec['mrnet'].prefix]) + + else: + cmake_args = [] + + # Appends base options to cmake_args + self.set_defaultbase_cmakeOptions(spec, cmake_args) + + if '+useqt4gui' in self.spec: + cmake_args.extend( + ['-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DINSTRUMENTOR=%s' + % instrumentor_setting, + '-DSQLITE3_DIR=%s' + % spec['sqlite'].prefix, + '-DCBTF_DIR=%s' + % spec['cbtf'].prefix, + '-DCBTF_KRELL_DIR=%s' + % spec['cbtf-krell'].prefix, + '-DMRNET_DIR=%s' + % spec['mrnet'].prefix]) + else: + cmake_args.extend( + ['-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DINSTRUMENTOR=%s' + % instrumentor_setting, + '-DSQLITE3_DIR=%s' + % spec['sqlite'].prefix, + '-DCBTF_DIR=%s' + % spec['cbtf'].prefix, + '-DCBTF_KRELL_DIR=%s' + % spec['cbtf-krell'].prefix, + '-DQTLIB_DIR=%s' + % spec['qt'].prefix, + '-DMRNET_DIR=%s' + % spec['mrnet'].prefix]) + + return cmake_args def set_defaultbase_cmakeOptions(self, spec, cmakeOptions): # Appends to cmakeOptions the options that will enable @@ -174,7 +261,7 @@ def set_defaultbase_cmakeOptions(self, spec, cmakeOptions): BaseOptions = [] BaseOptions.append('-DBINUTILS_DIR=%s' % spec['binutils'].prefix) - BaseOptions.append('-DLIBELF_DIR=%s' % spec['libelf'].prefix) + BaseOptions.append('-DLIBELF_DIR=%s' % spec['elf'].prefix) BaseOptions.append('-DLIBDWARF_DIR=%s' % spec['libdwarf'].prefix) BaseOptions.append('-DPYTHON_EXECUTABLE=%s' % python_exe) BaseOptions.append('-DPYTHON_INCLUDE_DIR=%s' % python_include) @@ -273,144 +360,3 @@ def setup_environment(self, spack_env, run_env): run_env.set('OPENSS_MPI_IMPLEMENTATION', 'mvapich2') if '+openmpi' in self.spec: run_env.set('OPENSS_MPI_IMPLEMENTATION', 'openmpi') - - def install(self, spec, prefix): - - if '+offline' in spec: - instrumentor_setting = "offline" - if '+runtime' in spec: - with working_dir('build_runtime', create=True): - - cmakeOptions = [] - cmakeOptions.extend([ - '-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '-DINSTRUMENTOR=%s' % instrumentor_setting, - '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, - '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix, - '-DPAPI_DIR=%s' % spec['papi'].prefix]) - - # Add any MPI implementations coming from variant settings - self.set_mpi_cmakeOptions(spec, cmakeOptions) - cmakeOptions.extend(std_cmake_args) - - # Adjust the build options to the favored - # ones for this build - self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) - - cmake('..', *cmakeOptions) - - make("clean") - make() - make("install") - else: - cmake_prefix_path = join_path(spec['dyninst'].prefix) - with working_dir('build', create=True): - cmakeOptions = [] - - # Appends base options to cmakeOptions - self.set_defaultbase_cmakeOptions(spec, cmakeOptions) - - cmakeOptions.extend( - ['-DCMAKE_INSTALL_PREFIX=%s' - % prefix, - '-DCMAKE_PREFIX_PATH=%s' - % cmake_prefix_path, - '-DINSTRUMENTOR=%s' - % instrumentor_setting, - '-DLIBMONITOR_DIR=%s' - % spec['libmonitor'].prefix, - '-DLIBUNWIND_DIR=%s' - % spec['libunwind'].prefix, - '-DPAPI_DIR=%s' - % spec['papi'].prefix, - '-DSQLITE3_DIR=%s' - % spec['sqlite'].prefix, - '-DQTLIB_DIR=%s' - % spec['qt'].prefix]) - - # Add any MPI implementations coming from variant settings - self.set_mpi_cmakeOptions(spec, cmakeOptions) - cmakeOptions.extend(std_cmake_args) - - # Adjust the build options to the favored - # ones for this build - self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) - - cmake('..', *cmakeOptions) - - make("clean") - make() - make("install") - - elif '+cbtf' in spec: - instrumentor_setting = "cbtf" - # resolve_symbols = "symtabapi" - cmake_prefix_path = join_path(spec['cbtf'].prefix) \ - + ':' + join_path(spec['cbtf-krell'].prefix)\ - + ':' + join_path(spec['dyninst'].prefix) - - if '+runtime' in spec: - with working_dir('build_cbtf_runtime', create=True): - cmakeOptions = [] - - # Appends base options to cmakeOptions - self.set_defaultbase_cmakeOptions(spec, cmakeOptions) - - cmakeOptions.extend( - ['-DCMAKE_INSTALL_PREFIX=%s' - % prefix, - '-DCMAKE_PREFIX_PATH=%s' - % cmake_prefix_path, - '-DINSTRUMENTOR=%s' - % instrumentor_setting, - '-DCBTF_DIR=%s' - % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' - % spec['cbtf-krell'].prefix, - '-DMRNET_DIR=%s' - % spec['mrnet'].prefix]) - - # Adjust the build options to the - # favored ones for this build - self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) - - cmake('..', *cmakeOptions) - - make("clean") - make() - make("install") - - else: - with working_dir('build_cbtf', create=True): - cmakeOptions = [] - - # Appends base options to cmakeOptions - self.set_defaultbase_cmakeOptions(spec, cmakeOptions) - - cmakeOptions.extend( - ['-DCMAKE_INSTALL_PREFIX=%s' - % prefix, - '-DCMAKE_PREFIX_PATH=%s' - % cmake_prefix_path, - '-DINSTRUMENTOR=%s' - % instrumentor_setting, - '-DSQLITE3_DIR=%s' - % spec['sqlite'].prefix, - '-DCBTF_DIR=%s' - % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' - % spec['cbtf-krell'].prefix, - '-DQTLIB_DIR=%s' - % spec['qt'].prefix, - '-DMRNET_DIR=%s' - % spec['mrnet'].prefix]) - - # Adjust the build options to the favored - # ones for this build - self.adjustBuildTypeParams_cmakeOptions(spec, cmakeOptions) - - cmake('..', *cmakeOptions) - - make("clean") - make() - make("install") From b39e6c6fd0a9878633dc1053b7f5fb1018d6b551 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Thu, 20 Jul 2017 13:26:31 -0500 Subject: [PATCH 1286/2394] New Package: SNbone. (#4754) * removed the tags as per comment in PR# 4749 * addressed above comments * changed fortran compiler. * added proxy application tags. * added tags by removing them from description. * addressed comments * used join_path instead of path concat. * addressed comments * removed string formatting for LDFLAGS. --- .../repos/builtin/packages/snbone/package.py | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 var/spack/repos/builtin/packages/snbone/package.py diff --git a/var/spack/repos/builtin/packages/snbone/package.py b/var/spack/repos/builtin/packages/snbone/package.py new file mode 100644 index 00000000000..b4d125a77ee --- /dev/null +++ b/var/spack/repos/builtin/packages/snbone/package.py @@ -0,0 +1,64 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Snbone(MakefilePackage): + """This application targets the primary computational solve burden of a SN, + continuous finite element based transport equation solver.""" + + homepage = "https://github.com/ANL-CESAR/" + url = "https://github.com/ANL-CESAR/SNbone.git" + + version('develop', git='https://github.com/ANL-CESAR/SNbone.git') + + tags = ['proxy-app'] + + depends_on('metis') + + def build(self, spec, prefix): + working_dirs = ['src_c', 'src_fortran', 'src_makemesh', + 'src_processmesh'] + for wdir in working_dirs: + with working_dir(wdir, create=False): + if self.compiler.name == 'gcc' and wdir == 'src_processmesh': + make('COMPILER=gfortran', 'METISLIB={0}' + .format(spec['metis'].prefix + '/lib/libmetis.so')) + elif self.compiler.name == 'intel': + make('COMPILER=intel', 'LDFLAGS=-lm') + else: + make('COMPILER=gfortran', 'LDFLAGS=-lm') + + def install(self, spec, prefix): + mkdirp(prefix.bin.C) + mkdirp(prefix.bin.Fortran) + mkdirp(prefix.bin.MakeMesh) + mkdirp(prefix.bin.ProcessMesh) + + install('src_c/SNaCFE.x', prefix.bin.C) + install('src_fortran/SNaCFE.x', prefix.bin.Fortran) + install('src_makemesh/makemesh.x', prefix.bin.MakeMesh) + install('src_processmesh/processmesh.x', prefix.bin.ProcessMesh) From 31425974b45c94111121218da46b782cebd5e8ab Mon Sep 17 00:00:00 2001 From: Kshitij Mehta Date: Thu, 20 Jul 2017 15:07:52 -0400 Subject: [PATCH 1287/2394] GTKorvo (#4657) * gtkorvo-atl: atl library from gtkorvo * gtkorvo-dill: dill library from gtkorvo * gtkorvo-cercs-env: cercs_env library from gtkorvo * gtkorvo-enet: Enet networking library from gtkorvo * libffs: FFS middleware communication library from GTKorvo * libevpath: EVPath high performance communication library from GTKorvo * gtkorvo-cercs-env: Added homepage and removed function configure_args * gtkorvo-cercs-env: Re-add of accidental removal of cmake_args function in previous commit * gtkorvo-enet: Removed configure_args since unused --- .../builtin/packages/gtkorvo-atl/package.py | 44 ++++++++++++++++ .../packages/gtkorvo-cercs-env/package.py | 41 +++++++++++++++ .../builtin/packages/gtkorvo-dill/package.py | 43 ++++++++++++++++ .../builtin/packages/gtkorvo-enet/package.py | 38 ++++++++++++++ .../builtin/packages/libevpath/package.py | 49 ++++++++++++++++++ .../repos/builtin/packages/libffs/package.py | 51 +++++++++++++++++++ 6 files changed, 266 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gtkorvo-atl/package.py create mode 100644 var/spack/repos/builtin/packages/gtkorvo-cercs-env/package.py create mode 100644 var/spack/repos/builtin/packages/gtkorvo-dill/package.py create mode 100644 var/spack/repos/builtin/packages/gtkorvo-enet/package.py create mode 100644 var/spack/repos/builtin/packages/libevpath/package.py create mode 100644 var/spack/repos/builtin/packages/libffs/package.py diff --git a/var/spack/repos/builtin/packages/gtkorvo-atl/package.py b/var/spack/repos/builtin/packages/gtkorvo-atl/package.py new file mode 100644 index 00000000000..2dc96ca1f19 --- /dev/null +++ b/var/spack/repos/builtin/packages/gtkorvo-atl/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class GtkorvoAtl(CMakePackage): + """Libatl provides a library for the creation and manipulation of + lists of name/value pairs using an efficient binary representation. + """ + + homepage = "https://github.com/GTkorvo/atl" + url = "https://github.com/GTkorvo/atl/archive/v2.1.tar.gz" + + version('develop', git='https://github.com/GTkorvo/atl.git', + branch='master') + version('2.1', 'b2324ff041bccba127330a0e1b241978') + + depends_on('gtkorvo-cercs-env') + + def cmake_args(self): + args = ["-DENABLE_TESTING=0", "-DENABLE_BUILD_STATIC=STATIC"] + return args diff --git a/var/spack/repos/builtin/packages/gtkorvo-cercs-env/package.py b/var/spack/repos/builtin/packages/gtkorvo-cercs-env/package.py new file mode 100644 index 00000000000..1287c1f91db --- /dev/null +++ b/var/spack/repos/builtin/packages/gtkorvo-cercs-env/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class GtkorvoCercsEnv(CMakePackage): + """A utility library used by some GTkorvo packages. + """ + + homepage = "https://github.com/GTkorvo/cercs_env" + url = "https://github.com/GTkorvo/cercs_env/archive/v1.0.tar.gz" + + version('develop', git='https://github.com/GTkorvo/cercs_env.git', + branch='master') + version('1.0', '08f0532d0c2f7bc9b53dfa7a1c40ea4d') + + def cmake_args(self): + args = ["-DENABLE_TESTING=0", "-DENABLE_SHARED_STATIC=STATIC"] + return args diff --git a/var/spack/repos/builtin/packages/gtkorvo-dill/package.py b/var/spack/repos/builtin/packages/gtkorvo-dill/package.py new file mode 100644 index 00000000000..f32539e43e6 --- /dev/null +++ b/var/spack/repos/builtin/packages/gtkorvo-dill/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class GtkorvoDill(CMakePackage): + """DILL provides instruction-level code generation, + register allocation and simple optimizations for generating + executable code directly into memory regions for immediate use. + """ + + homepage = "https://github.com/GTkorvo/dill" + url = "https://github.com/GTkorvo/dill/archive/v2.1.tar.gz" + + version('develop', git='https://github.com/GTkorvo/dill.git', + branch='master') + version('2.1', '14c835e79b66c9acd2beee01d56e6200') + + def cmake_args(self): + args = ["-DENABLE_TESTING=0", "-DBUILD_SHARED_STATIC=STATIC"] + return args diff --git a/var/spack/repos/builtin/packages/gtkorvo-enet/package.py b/var/spack/repos/builtin/packages/gtkorvo-enet/package.py new file mode 100644 index 00000000000..5c63a5ab232 --- /dev/null +++ b/var/spack/repos/builtin/packages/gtkorvo-enet/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class GtkorvoEnet(AutotoolsPackage): + """ENet reliable UDP networking library. + This is a downstream branch of lsalzman's ENet. + This version has expanded the client ID to handle more clients. + The original is at http://github.com/lsalzman/enet. + """ + + homepage = "http://www.github.com/GTkorvo/enet" + url = "https://github.com/GTkorvo/enet/archive/v1.3.13.tar.gz" + + version('1.3.13', '3490f924a4d421e4832e45850e6ec142') diff --git a/var/spack/repos/builtin/packages/libevpath/package.py b/var/spack/repos/builtin/packages/libevpath/package.py new file mode 100644 index 00000000000..40ed3eeb99d --- /dev/null +++ b/var/spack/repos/builtin/packages/libevpath/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libevpath(CMakePackage): + """EVpath is an event transport middleware layer designed to allow + for the easy implementation of overlay networks, with + active data processing, routing and management at all points + in the overlay. EVPath is designed for high performance systems. + """ + + homepage = "https://github.com/GTkorvo/evpath" + url = "https://github.com/GTkorvo/evpath/archive/v4.1.1.tar.gz" + + version('develop', git='https://github.com/GTkorvo/evpath.git', + branch='master') + version('4.2.1', 'f928dc0dee41668afc91634c7051ce1a') + version('4.1.2', '1a187f55431c991ae7040e3ff041d75c') + version('4.1.1', '65a8db820f396ff2926e3d31908d123d') + + depends_on('libffs') + + def cmake_args(self): + args = ["-DENABLE_TESTING=0", "-DTARGET_CNL=1", + "-DBUILD_SHARED_STATIC=STATIC"] + return args diff --git a/var/spack/repos/builtin/packages/libffs/package.py b/var/spack/repos/builtin/packages/libffs/package.py new file mode 100644 index 00000000000..9513e146bce --- /dev/null +++ b/var/spack/repos/builtin/packages/libffs/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libffs(CMakePackage): + """FFS is a middleware library for data communication, + including representation, processing and marshaling + that preserves the performance of traditional approaches + while relaxing the requirement of a priori knowledge + and providing complex run-time flexibility. + """ + + homepage = "http://www.cc.gatech.edu/systems/projects/FFS" + url = "https://github.com/GTkorvo/ffs/archive/v1.1.tar.gz" + + version('develop', git='https://github.com/GTkorvo/ffs.git', + branch='master') + version('1.1.1', 'aa1c8ad5cf35e8cf76735e3a60891509') + version('1.1', '561c6b3abc53e12b3c01192e8ef2ffbc') + + depends_on('gtkorvo-atl') + depends_on('gtkorvo-dill') + depends_on('gtkorvo-cercs-env') + + def cmake_args(self): + args = ["-DENABLE_TESTING=0", "-DTARGET_CNL=1", + "-DBUILD_SHARED_STATIC=STATIC"] + return args From 0ea2c7904a75290ce577588ed4539c8c532818f7 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Thu, 20 Jul 2017 20:12:05 +0100 Subject: [PATCH 1288/2394] add mesa +swrender variants (gallium software/off-screen rendering) (#4602) - +swrender variant lets you compile an off-screen only version for software rendering on clusters. - +swrender+llvm for using llvm for the software pipe - added newer versions (17.1 and 13.0) and corrected the url location to use the canonical location. --- .../repos/builtin/packages/mesa/package.py | 77 +++++++++++++++---- 1 file changed, 64 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index 22439c46d3a..de36acbb732 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -26,36 +26,87 @@ class Mesa(AutotoolsPackage): - """Mesa is an open-source implementation of the OpenGL - specification - a system for rendering interactive 3D graphics.""" + """Mesa is an open-source implementation of the OpenGL specification + - a system for rendering interactive 3D graphics.""" homepage = "http://www.mesa3d.org" - url = "http://ftp.iij.ad.jp/pub/X11/x.org/pub/mesa/12.0.3/mesa-12.0.3.tar.gz" + url = "https://mesa.freedesktop.org/archive/13.0.6/mesa-13.0.6.tar.xz" + list_url = "https://mesa.freedesktop.org/archive" + list_depth = 2 - version('12.0.3', '60c5f9897ddc38b46f8144c7366e84ad') + version('17.1.3', '1946a93d543bc219427e2bebe2ac4752') + version('13.0.6', '1e5a769bc6cfd839cf3febcb179c27cc') + version('12.0.6', '1a3d4fea0656c208db59289e4ed33b3f') + version('12.0.3', '1113699c714042d8c4df4766be8c57d8') + + variant('swrender', default=False, + description="Build with (gallium) software rendering.") + + variant('llvm', default=False, + description="Use llvm for rendering pipes.") # General dependencies depends_on('python@2.6.4:') depends_on('py-mako@0.3.4:', type=('build', 'run')) depends_on('flex@2.5.35:', type='build') depends_on('bison@2.4.1:', type='build') + depends_on('pkg-config@0.9.0:', type='build') + + # Off-screen with llvmpipe + # Note: there must be a better way of selecting the preferred llvm + depends_on('llvm+link_dylib', when='+llvm') # For DRI and hardware acceleration depends_on('libpthread-stubs') depends_on('libdrm') depends_on('openssl') depends_on('libxcb@1.9.3:') - depends_on('libxshmfence@1.1:') - depends_on('libx11') - depends_on('libxext') - depends_on('libxdamage') + depends_on('libxshmfence@1.1:', when='~swrender') + depends_on('libx11', when='~swrender') + depends_on('libxext', when='~swrender') + depends_on('libxdamage', when='~swrender') depends_on('libxfixes') + # depends_on('expat', when='~swrender') + depends_on('libelf', when='+llvm~swrender') - depends_on('glproto@1.4.14:', type='build') - depends_on('dri2proto@2.6:', type='build') - depends_on('dri3proto@1.0:', type='build') - depends_on('presentproto@1.0:', type='build') - depends_on('pkg-config@0.9.0:', type='build') + depends_on('glproto@1.4.14:', type='build', when='~swrender') + depends_on('dri2proto@2.6:', type='build', when='~swrender') + depends_on('dri3proto@1.0:', type='build', when='~swrender') + depends_on('presentproto@1.0:', type='build', when='~swrender') # TODO: Add package for systemd, provides libudev # Using the system package manager to install systemd didn't work for me + + def configure_args(self): + spec = self.spec + args = [] + drivers = [] + if '+swrender' in spec: + drivers = ['swrast'] + # Needs +llvm, but also C++14? -> drivers.append('swr') + args.extend([ + '--disable-dri', + '--disable-egl', + '--disable-gbm', + '--disable-gles1', + '--disable-glx', + '--disable-xvmc', + '--enable-texture-float', + '--enable-gallium-osmesa', + ]) + + if '+llvm' in spec: + if self.spec.version < Version('17'): + args.append('--enable-gallium-llvm') + else: + args.append('--enable-llvm') + if '+link_dylib' in self.spec['llvm']: + args.append('--enable-llvm-shared-libs') + else: + args.append('--disable-llvm-shared-libs') + args.append('--with-llvm-prefix=%s' % spec['llvm'].prefix) + + if drivers: + args.append('--with-gallium-drivers=' + ','.join(drivers)) + + return args From 78762628263015a901eccbcfd0b36626adf6aa91 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Fri, 21 Jul 2017 05:13:36 +1000 Subject: [PATCH 1289/2394] py-cdat-lite: ensure that RPATH includes netcdf (#4521) --- .../repos/builtin/packages/py-cdat-lite/package.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-cdat-lite/package.py b/var/spack/repos/builtin/packages/py-cdat-lite/package.py index cec2ce1fbc3..257abc33f88 100644 --- a/var/spack/repos/builtin/packages/py-cdat-lite/package.py +++ b/var/spack/repos/builtin/packages/py-cdat-lite/package.py @@ -40,3 +40,14 @@ class PyCdatLite(PythonPackage): depends_on("python@2.5:2.8", type=('build', 'run')) depends_on("py-numpy", type=('build', 'run')) depends_on('py-setuptools', type='build') + + phases = ['install'] + + def install(self, spec, prefix): + """Install everything from build directory.""" + install_args = self.install_args(spec, prefix) + # Combine all phases into a single setup.py command, + # otherwise extensions are rebuilt without rpath by install phase: + self.setup_py('build_ext', '--rpath=%s' % ":".join(self.rpath), + 'build_py', 'build_scripts', + 'install', *install_args) From 7afce8d8cc27747934c218eff2a389a65f98e966 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 21 Jul 2017 01:58:20 -0500 Subject: [PATCH 1290/2394] satsuma2: new package (#4838) --- .../builtin/packages/satsuma2/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/satsuma2/package.py diff --git a/var/spack/repos/builtin/packages/satsuma2/package.py b/var/spack/repos/builtin/packages/satsuma2/package.py new file mode 100644 index 00000000000..39abc714e0f --- /dev/null +++ b/var/spack/repos/builtin/packages/satsuma2/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Satsuma2(CMakePackage): + """Satsuma2 is an optimsed version of Satsuma, a tool to reliably align + large and complex DNA sequences providing maximum sensitivity (to find + all there is to find), specificity (to only find real homology) and + speed (to accomodate the billions of base pairs in vertebrate genomes). + """ + + homepage = "https://github.com/bioinfologics/satsuma2" + url = "https://github.com/bioinfologics/satsuma2" + + version('2016-11-22', git='https://github.com/bioinfologics/satsuma2.git', commit='da694aeecf352e344b790bea4a7aaa529f5b69e6') + + def install(self, spec, prefix): + install_tree(join_path('spack-build', 'bin'), prefix.bin) From 51ad3a622e3fa8a70fcd74cd8d7280ae383b9c9d Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 21 Jul 2017 02:17:55 -0500 Subject: [PATCH 1291/2394] salmon: new package (#4833) --- .../repos/builtin/packages/salmon/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/salmon/package.py diff --git a/var/spack/repos/builtin/packages/salmon/package.py b/var/spack/repos/builtin/packages/salmon/package.py new file mode 100644 index 00000000000..413eb9aebe4 --- /dev/null +++ b/var/spack/repos/builtin/packages/salmon/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Salmon(CMakePackage): + """Salmon is a tool for quantifying the expression of transcripts using + RNA-seq data.""" + + homepage = "http://combine-lab.github.io/salmon/" + url = "https://github.com/COMBINE-lab/salmon/archive/v0.8.2.tar.gz" + + version('0.8.2', 'ee512697bc44b13661a16d4e14cf0a00') + + depends_on('boost') + + def cmake_args(self): + args = ['-DBOOST_ROOT=%s' % self.spec['boost'].prefix] + return args From e864e3bb510321ab11f61cd365b98e5f0acbb4ae Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Fri, 21 Jul 2017 16:36:14 +0200 Subject: [PATCH 1292/2394] New Package: C-Ares (#4840) Adds the c-ares library, a C library for asynchronous DNS requests. Required for the google gRPC library. --- .../repos/builtin/packages/cares/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cares/package.py diff --git a/var/spack/repos/builtin/packages/cares/package.py b/var/spack/repos/builtin/packages/cares/package.py new file mode 100644 index 00000000000..2c944104fd9 --- /dev/null +++ b/var/spack/repos/builtin/packages/cares/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cares(CMakePackage): + """c-ares: A C library for asynchronous DNS requests""" + + homepage = "https://c-ares.haxx.se" + url = "https://github.com/c-ares/c-ares/archive/cares-1_13_0.tar.gz" + + version('develop', branch='master', + git='https://github.com/c-ares/c-ares.git') + + version('1.13.0', 'cdb21052a7eb85261da22f83c0654cfd') + + def url_for_version(self, version): + url = "https://github.com/c-ares/c-ares/archive/cares-{0}.tar.gz" + return url.format(version.underscored) From cf884900597d3c1a3c5f0c4c0521df3b0e273765 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 21 Jul 2017 14:25:02 -0500 Subject: [PATCH 1293/2394] sickle: new package (#4851) --- .../repos/builtin/packages/sickle/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sickle/package.py diff --git a/var/spack/repos/builtin/packages/sickle/package.py b/var/spack/repos/builtin/packages/sickle/package.py new file mode 100644 index 00000000000..eee50d39aaa --- /dev/null +++ b/var/spack/repos/builtin/packages/sickle/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Sickle(MakefilePackage): + """Sickle is a tool that uses sliding windows along with quality and + length thresholds to determine when quality is sufficiently low to trim + the 3'-end of reads and also determines when the quality is + sufficiently high enough to trim the 5'-end of reads.""" + + homepage = "https://github.com/najoshi/sickle" + url = "https://github.com/najoshi/sickle/archive/v1.33.tar.gz" + + version('1.33', '9e2ba812183e1515198c9e15c4cd2cd7') + + depends_on('zlib') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('sickle', prefix.bin) From 469e77068fbb93dc6d746b08a37c948f0687febc Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 21 Jul 2017 14:25:18 -0500 Subject: [PATCH 1294/2394] seqprep: new package (#4850) --- .../repos/builtin/packages/seqprep/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/seqprep/package.py diff --git a/var/spack/repos/builtin/packages/seqprep/package.py b/var/spack/repos/builtin/packages/seqprep/package.py new file mode 100644 index 00000000000..728b47167b9 --- /dev/null +++ b/var/spack/repos/builtin/packages/seqprep/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Seqprep(MakefilePackage): + """SeqPrep is a program to merge paired end Illumina reads that are + overlapping into a single longer read.""" + + homepage = "https://github.com/jstjohn/SeqPrep" + url = "https://github.com/jstjohn/SeqPrep/archive/v1.3.2.tar.gz" + + version('1.3.2', 'b6a4f5491dfdb0ce38bf791454151468') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('SeqPrep', prefix.bin) From 4164c5d5e66d81026a8977cae168ca068615cde6 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 21 Jul 2017 15:35:47 -0500 Subject: [PATCH 1295/2394] smalt: new package (#4853) --- .../repos/builtin/packages/smalt/package.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 var/spack/repos/builtin/packages/smalt/package.py diff --git a/var/spack/repos/builtin/packages/smalt/package.py b/var/spack/repos/builtin/packages/smalt/package.py new file mode 100644 index 00000000000..c19f3d040a8 --- /dev/null +++ b/var/spack/repos/builtin/packages/smalt/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Smalt(AutotoolsPackage): + """SMALT aligns DNA sequencing reads with a reference genome.""" + + homepage = "http://www.sanger.ac.uk/science/tools/smalt-0" + url = "https://downloads.sourceforge.net/project/smalt/smalt-0.7.6.tar.gz" + + version('0.7.6', 'c3215d70ba960c8fdc8e80191695c60b') From aa98e35e587ef0f920a503ac59549d47d04b6fac Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 21 Jul 2017 15:36:03 -0500 Subject: [PATCH 1296/2394] singularity: new package (#4852) --- .../builtin/packages/singularity/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/singularity/package.py diff --git a/var/spack/repos/builtin/packages/singularity/package.py b/var/spack/repos/builtin/packages/singularity/package.py new file mode 100644 index 00000000000..61acf56463c --- /dev/null +++ b/var/spack/repos/builtin/packages/singularity/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Singularity(AutotoolsPackage): + """Singularity is a container platform focused on supporting 'Mobility of + Compute'""" + + homepage = "http://singularity.lbl.gov/" + url = "https://github.com/singularityware/singularity/archive/2.3.1.tar.gz" + + version('2.3.1', '292ff7fe3db09c854b8accf42f763f62') + + depends_on('m4', type='build') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') From 37d69073828679ec9fd99a20dcdac4f7e89a634f Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 22 Jul 2017 00:12:17 +0200 Subject: [PATCH 1297/2394] lmdb: Update to 0.9.21 (#4830) Convert to MakefilePackage and add pkg-config file. --- .../repos/builtin/packages/lmdb/package.py | 56 +++++++++---------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/var/spack/repos/builtin/packages/lmdb/package.py b/var/spack/repos/builtin/packages/lmdb/package.py index 5a0aef35a4a..aae962db151 100644 --- a/var/spack/repos/builtin/packages/lmdb/package.py +++ b/var/spack/repos/builtin/packages/lmdb/package.py @@ -22,42 +22,40 @@ # 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 os from spack import * -class Lmdb(Package): - """Read-only mirror of official repo on openldap.org. Issues and - pull requests here are ignored. Use OpenLDAP ITS for issues. - http://www.openldap.org/software/repo.html""" +class Lmdb(MakefilePackage): + """Symas LMDB is an extraordinarily fast, memory-efficient database we + developed for the Symas OpenLDAP Project. With memory-mapped files, it + has the read performance of a pure in-memory database while retaining + the persistence of standard disk-based databases.""" - homepage = "http://www.openldap.org/software/repo.html" - url = "https://github.com/LMDB/lmdb/archive/LMDB_0.9.16.tar.gz" + homepage = "https://lmdb.tech/" + url = "https://github.com/LMDB/lmdb/archive/LMDB_0.9.21.tar.gz" + version('0.9.21', '41a4f7b63212a00e53fabd8159008201') version('0.9.16', '0de89730b8f3f5711c2b3a4ba517b648') - def install(self, spec, prefix): - os.chdir('libraries/liblmdb') + build_directory = 'libraries/liblmdb' - make() + @property + def install_targets(self): + return ['prefix={0}'.format(self.prefix), 'install'] - mkdirp(prefix.bin) - mkdirp(prefix + '/man/man1') - mkdirp(prefix.lib) - mkdirp(prefix.include) + @run_after('install') + def install_pkgconfig(self): + mkdirp(self.prefix.lib.pkgconfig) - bins = ['mdb_stat', 'mdb_copy', 'mdb_dump', 'mdb_load'] - for f in bins: - install(f, prefix.bin) - - mans = ['mdb_stat.1', 'mdb_copy.1', 'mdb_dump.1', 'mdb_load.1'] - for f in mans: - install(f, prefix + '/man/man1') - - libs = ['liblmdb.a', 'liblmdb.so'] - for f in libs: - install(f, prefix.lib) - - includes = ['lmdb.h'] - for f in includes: - install(f, prefix.include) + with open(join_path(self.prefix.lib.pkgconfig, 'lmdb.pc'), 'w') as f: + f.write('prefix={0}\n'.format(self.prefix)) + f.write('exec_prefix=${prefix}\n') + f.write('libdir={0}\n'.format(self.prefix.lib)) + f.write('includedir={0}\n'.format(self.prefix.include)) + f.write('\n') + f.write('Name: LMDB\n') + f.write('Description: Symas LMDB is an extraordinarily fast, ' + 'memory-efficient database.\n') + f.write('Version: {0}\n'.format(self.spec.version)) + f.write('Cflags: -I${includedir}\n') + f.write('Libs: -L${libdir} -llmdb\n') From 644f5b3229319bf8ac66167a380ae4a9e588c241 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Fri, 21 Jul 2017 15:57:12 -0700 Subject: [PATCH 1298/2394] added new pruners-ninja version (#4859) --- var/spack/repos/builtin/packages/pruners-ninja/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/pruners-ninja/package.py b/var/spack/repos/builtin/packages/pruners-ninja/package.py index 660512380b3..558f59342b4 100644 --- a/var/spack/repos/builtin/packages/pruners-ninja/package.py +++ b/var/spack/repos/builtin/packages/pruners-ninja/package.py @@ -31,6 +31,7 @@ class PrunersNinja(AutotoolsPackage): homepage = "https://github.com/PRUNERS/NINJA" url = "https://github.com/PRUNERS/NINJA/releases/download/v1.0.0/NINJA-1.0.0.tar.gz" + version("1.0.1", "f0728cad61d8f1f970dffb7bb430addb") version("1.0.0", "fee53c4712ac521ebec3cd8692e5185a") depends_on("mpi") From b56add1517b94b3263b7ee310fe6a36fca466cbd Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 21 Jul 2017 20:51:03 -0500 Subject: [PATCH 1299/2394] sortmerna: new package (#4866) --- .../builtin/packages/sortmerna/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sortmerna/package.py diff --git a/var/spack/repos/builtin/packages/sortmerna/package.py b/var/spack/repos/builtin/packages/sortmerna/package.py new file mode 100644 index 00000000000..fbf0f44ed8f --- /dev/null +++ b/var/spack/repos/builtin/packages/sortmerna/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Sortmerna(CMakePackage): + """SortMeRNA is a program tool for filtering, mapping and OTU-picking NGS + reads in metatranscriptomic and metagenomic data""" + + homepage = "https://github.com/biocore/sortmerna" + url = "https://github.com/biocore/sortmerna" + + version('2017-07-13', git='https://github.com/biocore/sortmerna.git', commit='8bde6fa113a5d99a23ae81b48eeea6760e966094') + + depends_on('zlib') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + with working_dir(join_path('spack-build', 'src', 'indexdb')): + install('indexdb', prefix.bin) + with working_dir(join_path('spack-build', 'src', 'sortmerna')): + install('sortmerna', prefix.bin) From cd9742a30b847a2b7244cd16b2edcd1884418e77 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 21 Jul 2017 20:51:39 -0500 Subject: [PATCH 1300/2394] revbayes: trying this again (#4861) --- .../builtin/packages/revbayes/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/revbayes/package.py diff --git a/var/spack/repos/builtin/packages/revbayes/package.py b/var/spack/repos/builtin/packages/revbayes/package.py new file mode 100644 index 00000000000..3498ddd9524 --- /dev/null +++ b/var/spack/repos/builtin/packages/revbayes/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Revbayes(CMakePackage): + """Bayesian phylogenetic inference using probabilistic graphical models + and an interpreted language.""" + + homepage = "https://revbayes.github.io" + url = "https://github.com/revbayes/revbayes/archive/v1.0.4-release.tar.gz" + + version('1.0.4', '5d6de96bcb3b2686b270856de3555a58') + + variant('mpi', default=True, description='Enable MPI parallel support') + + depends_on('boost') + depends_on('mpi', when='+mpi') + + conflicts('%gcc@7.1.0:') + + root_cmakelists_dir = 'projects/cmake/build' + + @run_before('cmake') + def regenerate(self): + with working_dir(join_path('projects', 'cmake')): + mkdirp('build') + edit = FileFilter('regenerate.sh') + edit.filter('boost="true"', 'boost="false"') + if '+mpi' in self.spec: + edit.filter('mpi="false"', 'mpi="true"') + regenerate = Executable('./regenerate.sh') + regenerate() + + def install(self, spec, prefix): + mkdirp(prefix.bin) + if '+mpi' in spec: + install('rb-mpi', prefix.bin) + else: + install('rb', prefix.bin) From e191ead9ac8baa4437c365231420775084819715 Mon Sep 17 00:00:00 2001 From: jiseung Date: Fri, 21 Jul 2017 20:52:09 -0500 Subject: [PATCH 1301/2394] new package: miniGMG (#4849) * new package: miniGMG * changed based on comments * removed cuda version --- .../repos/builtin/packages/minigmg/package.py | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 var/spack/repos/builtin/packages/minigmg/package.py diff --git a/var/spack/repos/builtin/packages/minigmg/package.py b/var/spack/repos/builtin/packages/minigmg/package.py new file mode 100644 index 00000000000..799fb1ee6f8 --- /dev/null +++ b/var/spack/repos/builtin/packages/minigmg/package.py @@ -0,0 +1,67 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob + + +class Minigmg(Package): + """miniGMG is a compact benchmark for understanding the performance + challenges associated with geometric multigrid solvers + found in applications built from AMR MG frameworks + like CHOMBO or BoxLib when running + on modern multi- and manycore-based supercomputers. + It includes both productive reference examples as well as + highly-optimized implementations for CPUs and GPUs. + It is sufficiently general that it has been used to evaluate + a broad range of research topics including PGAS programming models + and algorithmic tradeoffs inherit in multigrid. miniGMG was developed + under the CACHE Joint Math-CS Institute. + + Note, miniGMG code has been supersceded by HPGMG. """ + + homepage = "http://crd.lbl.gov/departments/computer-science/PAR/research/previous-projects/miniGMG/" + url = "http://crd.lbl.gov/assets/Uploads/FTG/Projects/miniGMG/miniGMG.tar.gz" + + version('master', '975a2a118403fc0024b5e04cef280e95') + + depends_on('mpi') + + phases = ['build', 'install'] + + def build(self, spec, prefix): + cc = Executable(spec['mpi'].mpicc) + cc('-O3', self.compiler.openmp_flag, 'miniGMG.c', + 'mg.c', 'box.c', 'solver.c', 'operators.ompif.c', 'timer.x86.c', + '-D__MPI', '-D__COLLABORATIVE_THREADING=6', + '-D__TEST_MG_CONVERGENCE', '-D__PRINT_NORM', '-D__USE_BICGSTAB', + '-o', 'run.miniGMG', '-lm') + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('run.miniGMG', prefix.bin) + mkdir(prefix.jobs) + files = glob.glob('job*') + for f in files: + install(f, prefix.jobs) From aa96e1671bb4cd62dce35240c9980c22acbf1d12 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 21 Jul 2017 21:40:31 -0500 Subject: [PATCH 1302/2394] sparta: new package (#4867) * sparta: new package * fixing homepage --- .../repos/builtin/packages/sparta/package.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sparta/package.py diff --git a/var/spack/repos/builtin/packages/sparta/package.py b/var/spack/repos/builtin/packages/sparta/package.py new file mode 100644 index 00000000000..361c0253e2a --- /dev/null +++ b/var/spack/repos/builtin/packages/sparta/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Sparta(Package): + """small RNA-PARE Target Analyzer (sPARTA) is a tool which utilizes + high-throughput sequencing to profile genome-wide cleavage + products.""" + + homepage = "https://github.com/atulkakrana/sPARTA.github" + url = "https://github.com/atulkakrana/sPARTA/archive/1.25.tar.gz" + + version('1.25', '50fda66bf860f63ae8aef5e8fb997a75') + + depends_on('bowtie2') + depends_on('python@3:', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('sPARTA.py', prefix.bin) + install('revFernoMap.py', prefix.bin) From c07d93a3e5101d72939ab0feb841a98b4bc36cb8 Mon Sep 17 00:00:00 2001 From: Kshitij Mehta Date: Sat, 22 Jul 2017 02:47:13 -0400 Subject: [PATCH 1303/2394] Savanna (#4856) Installing the stable version 0.5 through the checksummed tar.gz does not fetch the git submodule in the package. The submodule appears as an empty directory. Thus, clone the commit tagged as v0.5 using git to get around this issue * savanna: modified adios dependency spec * Replaced adios+staging with adios+flexpath+dataspaces * savanna: Enabling fortran support in adios by default * savanna: reverting to variant 'staging' for enabling all staging transports --- var/spack/repos/builtin/packages/savanna/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/savanna/package.py b/var/spack/repos/builtin/packages/savanna/package.py index 1459ce5443e..944c528bea3 100644 --- a/var/spack/repos/builtin/packages/savanna/package.py +++ b/var/spack/repos/builtin/packages/savanna/package.py @@ -36,13 +36,14 @@ class Savanna(MakefilePackage): version('develop', git='https://github.com/CODARcode/savanna.git', branch='master', submodules=True) - version('0.5', '3f13adf29ec30f4acb2ba3fa07ed12b2') + version('0.5', git='https://github.com/CODARcode/savanna.git', + tag='0.5', submodules=True) variant('tau', default=False, description='Enable TAU profiling support') depends_on('mpi') depends_on('stc') - depends_on('adios +staging') + depends_on('adios +fortran +staging') depends_on('mpix-launch-swift') depends_on('tau', when='+tau') From f159246d1d073ae7230b5412a4a2a20eac7f49c2 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 22 Jul 2017 21:27:54 -0700 Subject: [PATCH 1304/2394] Make testing spack commands simpler (#4868) Adds SpackCommand class allowing Spack commands to be easily in Python Example usage: from spack.main import SpackCommand info = SpackCommand('info') out, err = info('mpich') print(info.returncode) This allows easier testing of Spack commands. Also: * Simplify command tests * Simplify mocking in command tests. * Simplify module command test * Simplify python command test * Simplify uninstall command test * Simplify url command test * SpackCommand uses more compatible output redirection --- lib/spack/spack/cmd/__init__.py | 8 +- lib/spack/spack/main.py | 107 ++++++++- lib/spack/spack/test/cmd/gpg.py | 113 ++++------ lib/spack/spack/test/cmd/install.py | 207 +++--------------- lib/spack/spack/test/cmd/module.py | 5 + lib/spack/spack/test/cmd/python.py | 22 +- lib/spack/spack/test/cmd/uninstall.py | 33 +-- lib/spack/spack/test/cmd/url.py | 72 +++--- lib/spack/spack/test/conftest.py | 47 +++- lib/spack/spack/test/install.py | 70 +----- .../repos/builtin.mock/packages/a/package.py | 2 +- .../builtin.mock/packages/libdwarf/package.py | 2 +- .../builtin.mock/packages/libelf/package.py | 9 +- 13 files changed, 299 insertions(+), 398 deletions(-) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index f6910387344..edeaa677de6 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -75,7 +75,8 @@ def remove_options(parser, *options): break -def get_cmd_function_name(name): +def get_python_name(name): + """Commands can have '-' in their names, unlike Python identifiers.""" return name.replace("-", "_") @@ -89,7 +90,7 @@ def get_module(name): attr_setdefault(module, SETUP_PARSER, lambda *args: None) # null-op attr_setdefault(module, DESCRIPTION, "") - fn_name = get_cmd_function_name(name) + fn_name = get_python_name(name) if not hasattr(module, fn_name): tty.die("Command module %s (%s) must define function '%s'." % (module.__name__, module.__file__, fn_name)) @@ -99,7 +100,8 @@ def get_module(name): def get_command(name): """Imports the command's function from a module and returns it.""" - return getattr(get_module(name), get_cmd_function_name(name)) + python_name = get_python_name(name) + return getattr(get_module(python_name), python_name) def parse_specs(args, **kwargs): diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 3ae8403bcf3..2d5648f13e9 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -34,6 +34,7 @@ import inspect import pstats import argparse +import tempfile import llnl.util.tty as tty from llnl.util.tty.color import * @@ -236,10 +237,14 @@ def add_subcommand_group(title, commands): def add_command(self, name): """Add one subcommand to this parser.""" + # convert CLI command name to python module name + name = spack.cmd.get_python_name(name) + # lazily initialize any subparsers if not hasattr(self, 'subparsers'): # remove the dummy "command" argument. - self._remove_action(self._actions[-1]) + if self._actions[-1].dest == 'command': + self._remove_action(self._actions[-1]) self.subparsers = self.add_subparsers(metavar='COMMAND', dest="command") @@ -322,7 +327,7 @@ def setup_main_options(args): def allows_unknown_args(command): - """This is a basic argument injection test. + """Implements really simple argument injection for unknown arguments. Commands may add an optional argument called "unknown args" to indicate they can handle unknonwn args, and we'll pass the unknown @@ -334,7 +339,89 @@ def allows_unknown_args(command): return (argcount == 3 and varnames[2] == 'unknown_args') +def _invoke_spack_command(command, parser, args, unknown_args): + """Run a spack command *without* setting spack global options.""" + if allows_unknown_args(command): + return_val = command(parser, args, unknown_args) + else: + if unknown_args: + tty.die('unrecognized arguments: %s' % ' '.join(unknown_args)) + return_val = command(parser, args) + + # Allow commands to return and error code if they want + return 0 if return_val is None else return_val + + +class SpackCommand(object): + """Callable object that invokes a spack command (for testing). + + Example usage:: + + install = SpackCommand('install') + install('-v', 'mpich') + + Use this to invoke Spack commands directly from Python and check + their stdout and stderr. + """ + def __init__(self, command, fail_on_error=True): + """Create a new SpackCommand that invokes ``command`` when called.""" + self.parser = make_argument_parser() + self.parser.add_command(command) + self.command_name = command + self.command = spack.cmd.get_command(command) + self.fail_on_error = fail_on_error + + def __call__(self, *argv): + """Invoke this SpackCommand. + + Args: + argv (list of str): command line arguments. + + Returns: + (str, str): output and error as a strings + + On return, if ``fail_on_error`` is False, return value of comman + is set in ``returncode`` property. Otherwise, raise an error. + """ + args, unknown = self.parser.parse_known_args( + [self.command_name] + list(argv)) + + out, err = sys.stdout, sys.stderr + ofd, ofn = tempfile.mkstemp() + efd, efn = tempfile.mkstemp() + + try: + sys.stdout = open(ofn, 'w') + sys.stderr = open(efn, 'w') + self.returncode = _invoke_spack_command( + self.command, self.parser, args, unknown) + + except SystemExit as e: + self.returncode = e.code + + finally: + sys.stdout.flush() + sys.stdout.close() + sys.stderr.flush() + sys.stderr.close() + sys.stdout, sys.stderr = out, err + + return_out = open(ofn).read() + return_err = open(efn).read() + os.unlink(ofn) + os.unlink(efn) + + if self.fail_on_error and self.returncode != 0: + raise SpackCommandError( + "Command exited with code %d: %s(%s)" % ( + self.returncode, self.command_name, + ', '.join("'%s'" % a for a in argv))) + + return return_out, return_err + + def _main(command, parser, args, unknown_args): + """Run a spack command *and* set spack globaloptions.""" # many operations will fail without a working directory. set_working_dir() @@ -345,12 +432,7 @@ def _main(command, parser, args, unknown_args): # Now actually execute the command try: - if allows_unknown_args(command): - return_val = command(parser, args, unknown_args) - else: - if unknown_args: - tty.die('unrecognized arguments: %s' % ' '.join(unknown_args)) - return_val = command(parser, args) + return _invoke_spack_command(command, parser, args, unknown_args) except SpackError as e: e.die() # gracefully die on any SpackErrors except Exception as e: @@ -361,9 +443,6 @@ def _main(command, parser, args, unknown_args): sys.stderr.write('\n') tty.die("Keyboard interrupt.") - # Allow commands to return and error code if they want - return 0 if return_val is None else return_val - def _profile_wrapper(command, parser, args, unknown_args): import cProfile @@ -431,7 +510,7 @@ def main(argv=None): # Try to load the particular command the caller asked for. If there # is no module for it, just die. - command_name = args.command[0].replace('-', '_') + command_name = spack.cmd.get_python_name(args.command[0]) try: parser.add_command(command_name) except ImportError: @@ -465,3 +544,7 @@ def main(argv=None): except SystemExit as e: return e.code + + +class SpackCommandError(Exception): + """Raised when SpackCommand execution fails.""" diff --git a/lib/spack/spack/test/cmd/gpg.py b/lib/spack/spack/test/cmd/gpg.py index 189c827d050..97f7accd601 100644 --- a/lib/spack/spack/test/cmd/gpg.py +++ b/lib/spack/spack/test/cmd/gpg.py @@ -22,13 +22,12 @@ # 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 argparse import os import pytest import spack -import spack.cmd.gpg as gpg import spack.util.gpg as gpg_util +from spack.main import SpackCommand from spack.util.executable import ProcessError @@ -40,6 +39,19 @@ def testing_gpg_directory(tmpdir): gpg_util.GNUPGHOME = old_gpg_path +@pytest.fixture(scope='function') +def mock_gpg_config(): + orig_gpg_keys_path = spack.gpg_keys_path + spack.gpg_keys_path = spack.mock_gpg_keys_path + yield + spack.gpg_keys_path = orig_gpg_keys_path + + +@pytest.fixture(scope='function') +def gpg(): + return SpackCommand('gpg') + + def has_gnupg2(): try: gpg_util.Gpg.gpg()('--version', output=os.devnull) @@ -48,45 +60,31 @@ def has_gnupg2(): return False -@pytest.mark.usefixtures('testing_gpg_directory') +@pytest.mark.xfail # TODO: fix failing tests. @pytest.mark.skipif(not has_gnupg2(), reason='These tests require gnupg2') -def test_gpg(tmpdir): - parser = argparse.ArgumentParser() - gpg.setup_parser(parser) - +def test_gpg(gpg, tmpdir, testing_gpg_directory, mock_gpg_config): # Verify a file with an empty keyring. - args = parser.parse_args(['verify', os.path.join( - spack.mock_gpg_data_path, 'content.txt')]) with pytest.raises(ProcessError): - gpg.gpg(parser, args) + gpg('verify', os.path.join(spack.mock_gpg_data_path, 'content.txt')) # Import the default key. - args = parser.parse_args(['init']) - args.import_dir = spack.mock_gpg_keys_path - gpg.gpg(parser, args) + gpg('init') # List the keys. # TODO: Test the output here. - args = parser.parse_args(['list', '--trusted']) - gpg.gpg(parser, args) - args = parser.parse_args(['list', '--signing']) - gpg.gpg(parser, args) + gpg('list', '--trusted') + gpg('list', '--signing') # Verify the file now that the key has been trusted. - args = parser.parse_args(['verify', os.path.join( - spack.mock_gpg_data_path, 'content.txt')]) - gpg.gpg(parser, args) + gpg('verify', os.path.join(spack.mock_gpg_data_path, 'content.txt')) # Untrust the default key. - args = parser.parse_args(['untrust', 'Spack testing']) - gpg.gpg(parser, args) + gpg('untrust', 'Spack testing') # Now that the key is untrusted, verification should fail. - args = parser.parse_args(['verify', os.path.join( - spack.mock_gpg_data_path, 'content.txt')]) with pytest.raises(ProcessError): - gpg.gpg(parser, args) + gpg('verify', os.path.join(spack.mock_gpg_data_path, 'content.txt')) # Create a file to test signing. test_path = tmpdir.join('to-sign.txt') @@ -94,88 +92,71 @@ def test_gpg(tmpdir): fout.write('Test content for signing.\n') # Signing without a private key should fail. - args = parser.parse_args(['sign', str(test_path)]) with pytest.raises(RuntimeError) as exc_info: - gpg.gpg(parser, args) + gpg('sign', str(test_path)) assert exc_info.value.args[0] == 'no signing keys are available' # Create a key for use in the tests. keypath = tmpdir.join('testing-1.key') - args = parser.parse_args(['create', - '--comment', 'Spack testing key', - '--export', str(keypath), - 'Spack testing 1', - 'spack@googlegroups.com']) - gpg.gpg(parser, args) + gpg('create', + '--comment', 'Spack testing key', + '--export', str(keypath), + 'Spack testing 1', + 'spack@googlegroups.com') keyfp = gpg_util.Gpg.signing_keys()[0] # List the keys. # TODO: Test the output here. - args = parser.parse_args(['list', '--trusted']) - gpg.gpg(parser, args) - args = parser.parse_args(['list', '--signing']) - gpg.gpg(parser, args) + gpg('list', '--trusted') + gpg('list', '--signing') # Signing with the default (only) key. - args = parser.parse_args(['sign', str(test_path)]) - gpg.gpg(parser, args) + gpg('sign', str(test_path)) # Verify the file we just verified. - args = parser.parse_args(['verify', str(test_path)]) - gpg.gpg(parser, args) + gpg('verify', str(test_path)) # Export the key for future use. export_path = tmpdir.join('export.testing.key') - args = parser.parse_args(['export', str(export_path)]) - gpg.gpg(parser, args) + gpg('export', str(export_path)) # Create a second key for use in the tests. - args = parser.parse_args(['create', - '--comment', 'Spack testing key', - 'Spack testing 2', - 'spack@googlegroups.com']) - gpg.gpg(parser, args) + gpg('create', + '--comment', 'Spack testing key', + 'Spack testing 2', + 'spack@googlegroups.com') # List the keys. # TODO: Test the output here. - args = parser.parse_args(['list', '--trusted']) - gpg.gpg(parser, args) - args = parser.parse_args(['list', '--signing']) - gpg.gpg(parser, args) + gpg('list', '--trusted') + gpg('list', '--signing') test_path = tmpdir.join('to-sign-2.txt') with open(str(test_path), 'w+') as fout: fout.write('Test content for signing.\n') # Signing with multiple signing keys is ambiguous. - args = parser.parse_args(['sign', str(test_path)]) with pytest.raises(RuntimeError) as exc_info: - gpg.gpg(parser, args) + gpg('sign', str(test_path)) assert exc_info.value.args[0] == \ 'multiple signing keys are available; please choose one' # Signing with a specified key. - args = parser.parse_args(['sign', '--key', keyfp, str(test_path)]) - gpg.gpg(parser, args) + gpg('sign', '--key', keyfp, str(test_path)) # Untrusting signing keys needs a flag. - args = parser.parse_args(['untrust', 'Spack testing 1']) with pytest.raises(ProcessError): - gpg.gpg(parser, args) + gpg('untrust', 'Spack testing 1') # Untrust the key we created. - args = parser.parse_args(['untrust', '--signing', keyfp]) - gpg.gpg(parser, args) + gpg('untrust', '--signing', keyfp) # Verification should now fail. - args = parser.parse_args(['verify', str(test_path)]) with pytest.raises(ProcessError): - gpg.gpg(parser, args) + gpg('verify', str(test_path)) # Trust the exported key. - args = parser.parse_args(['trust', str(export_path)]) - gpg.gpg(parser, args) + gpg('trust', str(export_path)) # Verification should now succeed again. - args = parser.parse_args(['verify', str(test_path)]) - gpg.gpg(parser, args) + gpg('verify', str(test_path)) diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 7f9db1baa2e..951d9d85d70 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -22,194 +22,45 @@ # 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 argparse -import codecs -import collections -import contextlib -import unittest -from six import StringIO - -import llnl.util.filesystem -import spack -import spack.cmd -import spack.cmd.install as install - -FILE_REGISTRY = collections.defaultdict(StringIO) +from spack.main import SpackCommand -# Monkey-patch open to write module files to a StringIO instance -@contextlib.contextmanager -def mock_open(filename, mode, *args): - if not mode == 'wb': - message = 'test.test_install : unexpected opening mode for mock_open' - raise RuntimeError(message) - - FILE_REGISTRY[filename] = StringIO() - - try: - yield FILE_REGISTRY[filename] - finally: - handle = FILE_REGISTRY[filename] - FILE_REGISTRY[filename] = handle.getvalue() - handle.close() +install = SpackCommand('install') -class MockSpec(object): +def _install_package_and_dependency( + tmpdir, builtin_mock, mock_archive, mock_fetch, config, + install_mockery): - def __init__(self, name, version, hashStr=None): - self._dependencies = {} - self.name = name - self.version = version - self.hash = hashStr if hashStr else hash((name, version)) + tmpdir.chdir() + install('--log-format=junit', '--log-file=test.xml', 'libdwarf') - def _deptype_norm(self, deptype): - if deptype is None: - return spack.alldeps - # Force deptype to be a tuple so that we can do set intersections. - if isinstance(deptype, str): - return (deptype,) - return deptype + files = tmpdir.listdir() + filename = tmpdir.join('test.xml') + assert filename in files - def _find_deps(self, where, deptype): - deptype = self._deptype_norm(deptype) - - return [dep.spec - for dep in where.values() - if deptype and any(d in deptype for d in dep.deptypes)] - - def dependencies(self, deptype=None): - return self._find_deps(self._dependencies, deptype) - - def dependents(self, deptype=None): - return self._find_deps(self._dependents, deptype) - - def traverse(self, order=None): - for _, spec in self._dependencies.items(): - yield spec.spec - yield self - - def dag_hash(self): - return self.hash - - @property - def short_spec(self): - return '-'.join([self.name, str(self.version), str(self.hash)]) + content = filename.open().read() + assert 'tests="2"' in content + assert 'failures="0"' in content + assert 'errors="0"' in content -class MockPackage(object): +def test_install_package_already_installed( + tmpdir, builtin_mock, mock_archive, mock_fetch, config, + install_mockery): - def __init__(self, spec, buildLogPath): - self.name = spec.name - self.spec = spec - self.installed = False - self.build_log_path = buildLogPath + tmpdir.chdir() + install('libdwarf') + install('--log-format=junit', '--log-file=test.xml', 'libdwarf') - def do_install(self, *args, **kwargs): - for x in self.spec.dependencies(): - x.package.do_install(*args, **kwargs) - self.installed = True + files = tmpdir.listdir() + filename = tmpdir.join('test.xml') + assert filename in files + content = filename.open().read() + assert 'tests="2"' in content + assert 'failures="0"' in content + assert 'errors="0"' in content -class MockPackageDb(object): - - def __init__(self, init=None): - self.specToPkg = {} - if init: - self.specToPkg.update(init) - - def get(self, spec): - return self.specToPkg[spec] - - -def mock_fetch_log(path): - return [] - - -specX = MockSpec('X', '1.2.0') -specY = MockSpec('Y', '2.3.8') -specX._dependencies['Y'] = spack.spec.DependencySpec( - specX, specY, spack.alldeps) -pkgX = MockPackage(specX, 'logX') -pkgY = MockPackage(specY, 'logY') -specX.package = pkgX -specY.package = pkgY - - -# TODO: add test(s) where Y fails to install -class InstallTestJunitLog(unittest.TestCase): - """Tests test-install where X->Y""" - - def setUp(self): - super(InstallTestJunitLog, self).setUp() - install.PackageBase = MockPackage - # Monkey patch parse specs - - def monkey_parse_specs(x, concretize): - if x == ['X']: - return [specX] - elif x == ['Y']: - return [specY] - return [] - - self.parse_specs = spack.cmd.parse_specs - spack.cmd.parse_specs = monkey_parse_specs - - # Monkey patch os.mkdirp - self.mkdirp = llnl.util.filesystem.mkdirp - llnl.util.filesystem.mkdirp = lambda x: True - - # Monkey patch open - self.codecs_open = codecs.open - codecs.open = mock_open - - # Clean FILE_REGISTRY - FILE_REGISTRY.clear() - - pkgX.installed = False - pkgY.installed = False - - # Monkey patch pkgDb - self.saved_db = spack.repo - pkgDb = MockPackageDb({specX: pkgX, specY: pkgY}) - spack.repo = pkgDb - - def tearDown(self): - # Remove the monkey patched test_install.open - codecs.open = self.codecs_open - - # Remove the monkey patched os.mkdir - llnl.util.filesystem.mkdirp = self.mkdirp - del self.mkdirp - - # Remove the monkey patched parse_specs - spack.cmd.parse_specs = self.parse_specs - del self.parse_specs - super(InstallTestJunitLog, self).tearDown() - - spack.repo = self.saved_db - - def test_installing_both(self): - parser = argparse.ArgumentParser() - install.setup_parser(parser) - args = parser.parse_args(['--log-format=junit', 'X']) - install.install(parser, args) - self.assertEqual(len(FILE_REGISTRY), 1) - for _, content in FILE_REGISTRY.items(): - self.assertTrue('tests="2"' in content) - self.assertTrue('failures="0"' in content) - self.assertTrue('errors="0"' in content) - - def test_dependency_already_installed(self): - pkgX.installed = True - pkgY.installed = True - parser = argparse.ArgumentParser() - install.setup_parser(parser) - args = parser.parse_args(['--log-format=junit', 'X']) - install.install(parser, args) - self.assertEqual(len(FILE_REGISTRY), 1) - for _, content in FILE_REGISTRY.items(): - self.assertTrue('tests="2"' in content) - self.assertTrue('failures="0"' in content) - self.assertTrue('errors="0"' in content) - self.assertEqual( - sum('skipped' in line for line in content.split('\n')), 2) + skipped = [line for line in content.split('\n') if 'skipped' in line] + assert len(skipped) == 2 diff --git a/lib/spack/spack/test/cmd/module.py b/lib/spack/spack/test/cmd/module.py index 8d15afdd0c7..b8f24856be5 100644 --- a/lib/spack/spack/test/cmd/module.py +++ b/lib/spack/spack/test/cmd/module.py @@ -70,15 +70,20 @@ def test_remove_and_add_tcl(database, parser): # Remove existing modules [tcl] args = parser.parse_args(['rm', '-y', 'mpileaks']) module_files = _get_module_files(args) + for item in module_files: assert os.path.exists(item) + module.module(parser, args) + for item in module_files: assert not os.path.exists(item) # Add them back [tcl] args = parser.parse_args(['refresh', '-y', 'mpileaks']) + module.module(parser, args) + for item in module_files: assert os.path.exists(item) diff --git a/lib/spack/spack/test/cmd/python.py b/lib/spack/spack/test/cmd/python.py index 5ad8456e49c..5e3ea830538 100644 --- a/lib/spack/spack/test/cmd/python.py +++ b/lib/spack/spack/test/cmd/python.py @@ -22,22 +22,12 @@ # 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 argparse -import pytest +import spack +from spack.main import SpackCommand -from spack.cmd.python import * +python = SpackCommand('python') -@pytest.fixture(scope='module') -def parser(): - """Returns the parser for the ``python`` command""" - parser = argparse.ArgumentParser() - setup_parser(parser) - return parser - - -def test_python(parser): - args = parser.parse_args([ - '-c', 'import spack; print(spack.spack_version)' - ]) - python(parser, args) +def test_python(): + out, err = python('-c', 'import spack; print(spack.spack_version)') + assert out.strip() == str(spack.spack_version) diff --git a/lib/spack/spack/test/cmd/uninstall.py b/lib/spack/spack/test/cmd/uninstall.py index a47c76715bf..72dda23f93d 100644 --- a/lib/spack/spack/test/cmd/uninstall.py +++ b/lib/spack/spack/test/cmd/uninstall.py @@ -24,7 +24,9 @@ ############################################################################## import pytest import spack.store -import spack.cmd.uninstall +from spack.main import SpackCommand, SpackCommandError + +uninstall = SpackCommand('uninstall') class MockArgs(object): @@ -37,20 +39,21 @@ def __init__(self, packages, all=False, force=False, dependents=False): self.yes_to_all = True -def test_uninstall(database): - parser = None - uninstall = spack.cmd.uninstall.uninstall - # Multiple matches - args = MockArgs(['mpileaks']) - with pytest.raises(SystemExit): - uninstall(parser, args) - # Installed dependents - args = MockArgs(['libelf']) - with pytest.raises(SystemExit): - uninstall(parser, args) - # Recursive uninstall - args = MockArgs(['callpath'], all=True, dependents=True) - uninstall(parser, args) +def test_multiple_matches(database): + """Test unable to uninstall when multiple matches.""" + with pytest.raises(SpackCommandError): + uninstall('-y', 'mpileaks') + + +def test_installed_dependents(database): + """Test can't uninstall when ther are installed dependents.""" + with pytest.raises(SpackCommandError): + uninstall('-y', 'libelf') + + +def test_recursive_uninstall(database): + """Test recursive uninstall.""" + uninstall('-y', '-a', '--dependents', 'callpath') all_specs = spack.store.layout.all_specs() assert len(all_specs) == 8 diff --git a/lib/spack/spack/test/cmd/url.py b/lib/spack/spack/test/cmd/url.py index ae585b328ff..21f88e928bd 100644 --- a/lib/spack/spack/test/cmd/url.py +++ b/lib/spack/spack/test/cmd/url.py @@ -22,18 +22,13 @@ # 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 argparse +import re import pytest - +from spack.url import UndetectableVersionError +from spack.main import SpackCommand from spack.cmd.url import * - -@pytest.fixture(scope='module') -def parser(): - """Returns the parser for the ``url`` command""" - parser = argparse.ArgumentParser() - setup_parser(parser) - return parser +url = SpackCommand('url') class MyPackage: @@ -77,51 +72,64 @@ def test_version_parsed_correctly(): assert not version_parsed_correctly(MyPackage('', ['0.18.0']), 'oce-0.18.0') # noqa -def test_url_parse(parser): - args = parser.parse_args(['parse', 'http://zlib.net/fossils/zlib-1.2.10.tar.gz']) - url(parser, args) +def test_url_parse(): + url('parse', 'http://zlib.net/fossils/zlib-1.2.10.tar.gz') -@pytest.mark.xfail -def test_url_parse_xfail(parser): +def test_url_with_no_version_fails(): # No version in URL - args = parser.parse_args(['parse', 'http://www.netlib.org/voronoi/triangle.zip']) - url(parser, args) + with pytest.raises(UndetectableVersionError): + url('parse', 'http://www.netlib.org/voronoi/triangle.zip') -def test_url_list(parser): - args = parser.parse_args(['list']) - total_urls = url_list(args) +def test_url_list(): + out, err = url('list') + total_urls = len(out.split('\n')) # The following two options should not change the number of URLs printed. - args = parser.parse_args(['list', '--color', '--extrapolation']) - colored_urls = url_list(args) + out, err = url('list', '--color', '--extrapolation') + colored_urls = len(out.split('\n')) assert colored_urls == total_urls # The following options should print fewer URLs than the default. # If they print the same number of URLs, something is horribly broken. # If they say we missed 0 URLs, something is probably broken too. - args = parser.parse_args(['list', '--incorrect-name']) - incorrect_name_urls = url_list(args) + out, err = url('list', '--incorrect-name') + incorrect_name_urls = len(out.split('\n')) assert 0 < incorrect_name_urls < total_urls - args = parser.parse_args(['list', '--incorrect-version']) - incorrect_version_urls = url_list(args) + out, err = url('list', '--incorrect-version') + incorrect_version_urls = len(out.split('\n')) assert 0 < incorrect_version_urls < total_urls - args = parser.parse_args(['list', '--correct-name']) - correct_name_urls = url_list(args) + out, err = url('list', '--correct-name') + correct_name_urls = len(out.split('\n')) assert 0 < correct_name_urls < total_urls - args = parser.parse_args(['list', '--correct-version']) - correct_version_urls = url_list(args) + out, err = url('list', '--correct-version') + correct_version_urls = len(out.split('\n')) assert 0 < correct_version_urls < total_urls -def test_url_summary(parser): - args = parser.parse_args(['summary']) +def test_url_summary(): + """Test the URL summary command.""" + # test url_summary, the internal function that does the work (total_urls, correct_names, correct_versions, - name_count_dict, version_count_dict) = url_summary(args) + name_count_dict, version_count_dict) = url_summary(None) assert 0 < correct_names <= sum(name_count_dict.values()) <= total_urls # noqa assert 0 < correct_versions <= sum(version_count_dict.values()) <= total_urls # noqa + + # make sure it agrees with the actual command. + out, err = url('summary') + out_total_urls = int( + re.search(r'Total URLs found:\s*(\d+)', out).group(1)) + assert out_total_urls == total_urls + + out_correct_names = int( + re.search(r'Names correctly parsed:\s*(\d+)', out).group(1)) + assert out_correct_names == correct_names + + out_correct_versions = int( + re.search(r'Versions correctly parsed:\s*(\d+)', out).group(1)) + assert out_correct_versions == correct_versions diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index c23fb466a52..e0a745c7e95 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -35,16 +35,18 @@ import py import pytest + import spack import spack.architecture import spack.database import spack.directory_layout -import spack.fetch_strategy import spack.platforms.test import spack.repository import spack.stage import spack.util.executable import spack.util.pattern +from spack.package import PackageBase +from spack.fetch_strategy import * ########## @@ -78,12 +80,10 @@ def set_stage(self, stage): pass def fetch(self): - raise spack.fetch_strategy.FetchError( - 'Mock cache always fails for tests' - ) + raise FetchError('Mock cache always fails for tests') def __str__(self): - return "[mock fetcher]" + return "[mock fetch cache]" monkeypatch.setattr(spack, 'fetch_cache', MockCache()) @@ -287,6 +287,43 @@ def refresh_db_on_exit(database): yield database.refresh() + +@pytest.fixture() +def install_mockery(tmpdir, config, builtin_mock): + """Hooks a fake install directory and a fake db into Spack.""" + layout = spack.store.layout + db = spack.store.db + # Use a fake install directory to avoid conflicts bt/w + # installed pkgs and mock packages. + spack.store.layout = spack.directory_layout.YamlDirectoryLayout( + str(tmpdir)) + spack.store.db = spack.database.Database(str(tmpdir)) + # We use a fake package, so skip the checksum. + spack.do_checksum = False + yield + # Turn checksumming back on + spack.do_checksum = True + # Restore Spack's layout. + spack.store.layout = layout + spack.store.db = db + + +@pytest.fixture() +def mock_fetch(mock_archive): + """Fake the URL for a package so it downloads from a file.""" + fetcher = FetchStrategyComposite() + fetcher.append(URLFetchStrategy(mock_archive.url)) + + @property + def fake_fn(self): + return fetcher + + orig_fn = PackageBase.fetcher + PackageBase.fetcher = fake_fn + yield + PackageBase.fetcher = orig_fn + + ########## # Fake archives and repositories ########## diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py index 3a934d5ea2d..278b2efb706 100644 --- a/lib/spack/spack/test/install.py +++ b/lib/spack/spack/test/install.py @@ -22,45 +22,15 @@ # 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 os import pytest + import spack import spack.store -from spack.database import Database -from spack.directory_layout import YamlDirectoryLayout -from spack.fetch_strategy import URLFetchStrategy, FetchStrategyComposite from spack.spec import Spec -import os - -@pytest.fixture() -def install_mockery(tmpdir, config, builtin_mock): - """Hooks a fake install directory and a fake db into Spack.""" - layout = spack.store.layout - db = spack.store.db - # Use a fake install directory to avoid conflicts bt/w - # installed pkgs and mock packages. - spack.store.layout = YamlDirectoryLayout(str(tmpdir)) - spack.store.db = Database(str(tmpdir)) - # We use a fake package, so skip the checksum. - spack.do_checksum = False - yield - # Turn checksumming back on - spack.do_checksum = True - # Restore Spack's layout. - spack.store.layout = layout - spack.store.db = db - - -def fake_fetchify(url, pkg): - """Fake the URL for a package so it downloads from a file.""" - fetcher = FetchStrategyComposite() - fetcher.append(URLFetchStrategy(url)) - pkg.fetcher = fetcher - - -@pytest.mark.usefixtures('install_mockery') -def test_install_and_uninstall(mock_archive): +def test_install_and_uninstall(install_mockery, mock_fetch): # Get a basic concrete spec for the trivial install package. spec = Spec('trivial-install-test-package') spec.concretize() @@ -69,8 +39,6 @@ def test_install_and_uninstall(mock_archive): # Get the package pkg = spack.repo.get(spec) - fake_fetchify(mock_archive.url, pkg) - try: pkg.do_install() pkg.do_uninstall() @@ -114,12 +82,10 @@ def __getattr__(self, attr): return getattr(self.wrapped_stage, attr) -@pytest.mark.usefixtures('install_mockery') -def test_partial_install_delete_prefix_and_stage(mock_archive): +def test_partial_install_delete_prefix_and_stage(install_mockery, mock_fetch): spec = Spec('canfail') spec.concretize() pkg = spack.repo.get(spec) - fake_fetchify(mock_archive.url, pkg) remove_prefix = spack.package.Package.remove_prefix instance_rm_prefix = pkg.remove_prefix @@ -145,14 +111,12 @@ def test_partial_install_delete_prefix_and_stage(mock_archive): pass -@pytest.mark.usefixtures('install_mockery') -def test_partial_install_keep_prefix(mock_archive): +def test_partial_install_keep_prefix(install_mockery, mock_fetch): spec = Spec('canfail') spec.concretize() pkg = spack.repo.get(spec) # Normally the stage should start unset, but other tests set it pkg._stage = None - fake_fetchify(mock_archive.url, pkg) remove_prefix = spack.package.Package.remove_prefix try: # If remove_prefix is called at any point in this test, that is an @@ -175,12 +139,10 @@ def test_partial_install_keep_prefix(mock_archive): pass -@pytest.mark.usefixtures('install_mockery') -def test_second_install_no_overwrite_first(mock_archive): +def test_second_install_no_overwrite_first(install_mockery, mock_fetch): spec = Spec('canfail') spec.concretize() pkg = spack.repo.get(spec) - fake_fetchify(mock_archive.url, pkg) remove_prefix = spack.package.Package.remove_prefix try: spack.package.Package.remove_prefix = mock_remove_prefix @@ -198,28 +160,14 @@ def test_second_install_no_overwrite_first(mock_archive): pass -@pytest.mark.usefixtures('install_mockery') -def test_store(mock_archive): +def test_store(install_mockery, mock_fetch): spec = Spec('cmake-client').concretized() - - for s in spec.traverse(): - fake_fetchify(mock_archive.url, s.package) - pkg = spec.package - try: - pkg.do_install() - except Exception: - pkg.remove_prefix() - raise + pkg.do_install() -@pytest.mark.usefixtures('install_mockery') -def test_failing_build(mock_archive): +def test_failing_build(install_mockery, mock_fetch): spec = Spec('failing-build').concretized() - - for s in spec.traverse(): - fake_fetchify(mock_archive.url, s.package) - pkg = spec.package with pytest.raises(spack.build_environment.ChildError): pkg.do_install() diff --git a/var/spack/repos/builtin.mock/packages/a/package.py b/var/spack/repos/builtin.mock/packages/a/package.py index 59d8b9e330e..e2fa6c35b02 100644 --- a/var/spack/repos/builtin.mock/packages/a/package.py +++ b/var/spack/repos/builtin.mock/packages/a/package.py @@ -26,7 +26,7 @@ class A(AutotoolsPackage): - """Simple package with no dependencies""" + """Simple package with one optional dependency""" homepage = "http://www.example.com" url = "http://www.example.com/a-1.0.tar.gz" diff --git a/var/spack/repos/builtin.mock/packages/libdwarf/package.py b/var/spack/repos/builtin.mock/packages/libdwarf/package.py index 10d6fa8e888..0cdbaf2a332 100644 --- a/var/spack/repos/builtin.mock/packages/libdwarf/package.py +++ b/var/spack/repos/builtin.mock/packages/libdwarf/package.py @@ -41,4 +41,4 @@ class Libdwarf(Package): depends_on("libelf") def install(self, spec, prefix): - pass + touch(prefix.libdwarf) diff --git a/var/spack/repos/builtin.mock/packages/libelf/package.py b/var/spack/repos/builtin.mock/packages/libelf/package.py index 3a2fe603efe..03909630816 100644 --- a/var/spack/repos/builtin.mock/packages/libelf/package.py +++ b/var/spack/repos/builtin.mock/packages/libelf/package.py @@ -34,11 +34,4 @@ class Libelf(Package): version('0.8.10', '9db4d36c283d9790d8fa7df1f4d7b4d9') def install(self, spec, prefix): - configure("--prefix=%s" % prefix, - "--enable-shared", - "--disable-dependency-tracking", - "--disable-debug") - make() - - # The mkdir commands in libelf's intsall can fail in parallel - make("install", parallel=False) + touch(prefix.libelf) From 62b4087c09ea22e98d364f5cacc92c53794ac322 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Sun, 23 Jul 2017 16:35:16 +0200 Subject: [PATCH 1305/2394] gBenchmark: Development Package (#4847) * gBenchmark: Development Package Add the development version (master branch) of `gBenchmark` * gBenchmark: Remove Duplicate Remove duplicate `gbenchmark` library and keep its patch to remove the shipped -Werror --- .../builtin/packages/benchmark/package.py | 16 +++++- .../builtin/packages/gbenchmark/package.py | 50 ------------------- 2 files changed, 15 insertions(+), 51 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/gbenchmark/package.py diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py index 9e2009750d3..eecb9341d98 100644 --- a/var/spack/repos/builtin/packages/benchmark/package.py +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -22,7 +22,6 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## - from spack import * @@ -32,5 +31,20 @@ class Benchmark(CMakePackage): homepage = "https://github.com/google/benchmark" url = "https://github.com/google/benchmark/archive/v1.1.0.tar.gz" + version('develop', branch='master', + git='https://github.com/google/benchmark.git') + version('1.1.0', '66b2a23076cf70739525be0092fc3ae3') version('1.0.0', '1474ff826f8cd68067258db75a0835b8') + + def patch(self): + filter_file( + r'add_cxx_compiler_flag..fstrict.aliasing.', + r'##### add_cxx_compiler_flag(-fstrict-aliasing)', + 'CMakeLists.txt' + ) + filter_file( + r'add_cxx_compiler_flag..Werror', + r'##### add_cxx_compiler_flag(-Werror', + 'CMakeLists.txt' + ) diff --git a/var/spack/repos/builtin/packages/gbenchmark/package.py b/var/spack/repos/builtin/packages/gbenchmark/package.py deleted file mode 100644 index 591a5403f0d..00000000000 --- a/var/spack/repos/builtin/packages/gbenchmark/package.py +++ /dev/null @@ -1,50 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/spack -# Please also see the NOTICE and LICENSE files for our notice and the LGPL. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, February 1999. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -# conditions of the GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -############################################################################## -from spack import * - - -class Gbenchmark(CMakePackage): - """A microbenchmark support library""" - - homepage = "https://github.com/google/benchmark" - url = "https://github.com/google/benchmark/archive/v1.0.0.tar.gz" - - version('1.1.0', '8c539bbe2a212618fa87b6c38fba087100b6e4ae') - version('1.0.0', '4f778985dce02d2e63262e6f388a24b595254a93') - - def build_type(self): - return "Release" - - def patch(self): - filter_file( - r'add_cxx_compiler_flag..fstrict.aliasing.', - r'##### add_cxx_compiler_flag(-fstrict-aliasing)', - 'CMakeLists.txt' - ) - filter_file( - r'add_cxx_compiler_flag..Werror', - r'##### add_cxx_compiler_flag(-Werror', - 'CMakeLists.txt' - ) From 4044e9f91819ad2c7859781eb807fa16e0e0c7f3 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Mon, 24 Jul 2017 00:41:45 +1000 Subject: [PATCH 1306/2394] Perl - allow package activation without PERL5LIB variable (#4540) * perl: prepend default perl @INC path to support package activation * perl: remove stray comma from list of configure arguments * perl: final comma in configure arguments makes adding arguments safer This reverts commit fdc10cd611f525ebc31ca1953e048095b1c75350. * perl: add comment about modified @INC (thanks to George Hartzell) * perl: use self.prefix.lib and self.prefix.bin for clarity * perl: convert tabs added by editor to spaces for flake8 * perl: use new path syntax: prefix.lib.perl5 * perl: avoid line break before binary operator * perl: use compact spack syntax for perl executable --- .../repos/builtin/packages/perl/package.py | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index d9952cc936d..1e5e93a2f4d 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -93,6 +93,23 @@ def configure_args(self): '-Dloclibpth=' + self.spec['gdbm'].prefix.lib, ] + # Extensions are installed into their private tree via + # `INSTALL_BASE`/`--install_base` (see [1]) which results in a + # "predictable" installation tree that sadly does not match the + # Perl core's @INC structure. This means that when activation + # merges the extension into the extendee[2], the directory tree + # containing the extensions is not on @INC and the extensions can + # not be found. + # + # This bit prepends @INC with the directory that is used when + # extensions are activated [3]. + # + # [1] https://metacpan.org/pod/ExtUtils::MakeMaker#INSTALL_BASE + # [2] via the activate method in the PackageBase class + # [3] https://metacpan.org/pod/distribution/perl/INSTALL#APPLLIB_EXP + config_args.append('-Accflags=-DAPPLLIB_EXP=\\"' + + self.prefix.lib.perl5 + '\\"') + # Discussion of -fPIC for Intel at: # https://github.com/LLNL/spack/pull/3081 and # https://github.com/LLNL/spack/pull/4416 @@ -130,10 +147,6 @@ def install_cpanm(self): make() make('install') - def setup_environment(self, spack_env, run_env): - """Set PERL5LIB to support activation of Perl packages""" - run_env.set('PERL5LIB', join_path(self.prefix, 'lib', 'perl5')) - def setup_dependent_environment(self, spack_env, run_env, dependent_spec): """Set PATH and PERL5LIB to include the extension and any other perl extensions it depends on, @@ -143,8 +156,8 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): for d in dependent_spec.traverse( deptype=('build', 'run'), deptype_query='run'): if d.package.extends(self.spec): - perl_lib_dirs.append(join_path(d.prefix, 'lib', 'perl5')) - perl_bin_dirs.append(join_path(d.prefix, 'bin')) + perl_lib_dirs.append(d.prefix.lib.perl5) + perl_bin_dirs.append(d.prefix.bin) perl_bin_path = ':'.join(perl_bin_dirs) perl_lib_path = ':'.join(perl_lib_dirs) spack_env.prepend_path('PATH', perl_bin_path) @@ -159,10 +172,10 @@ def setup_dependent_package(self, module, dependent_spec): """ # perl extension builds can have a global perl executable function - module.perl = Executable(join_path(self.spec.prefix.bin, 'perl')) + module.perl = self.spec['perl'].command # Add variables for library directory - module.perl_lib_dir = join_path(dependent_spec.prefix, 'lib', 'perl5') + module.perl_lib_dir = dependent_spec.prefix.lib.perl5 # Make the site packages directory for extensions, # if it does not exist already. @@ -179,7 +192,7 @@ def filter_config_dot_pm(self): kwargs = {'ignore_absent': True, 'backup': False, 'string': False} # Find the actual path to the installed Config.pm file. - perl = Executable(join_path(prefix.bin, 'perl')) + perl = self.spec['perl'].command config_dot_pm = perl('-MModule::Loaded', '-MConfig', '-e', 'print is_loaded(Config)', output=str) From 1cdb3c61cae9d35fd9866e951c92235e6269a80f Mon Sep 17 00:00:00 2001 From: Stephen McDowell Date: Sun, 23 Jul 2017 10:44:12 -0400 Subject: [PATCH 1307/2394] fix sphinx dependencies, add v1.6.3 (#4870) --- .../repos/builtin/packages/py-sphinx/package.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py index ba4c4badcc8..1dbf581eb76 100644 --- a/var/spack/repos/builtin/packages/py-sphinx/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx/package.py @@ -40,6 +40,7 @@ class PySphinx(PythonPackage): 'sphinx.environment.collectors', 'sphinx.environment.adapters' ] + version('1.6.3', 'c5ad61f4e0974375ca2c2b58ef8d5411') version('1.6.1', '26cb1cdca7aa4afc8c925d926b6268e7') version('1.5.5', 'f9581b3556df9722143c47290273bcf8') version('1.4.5', '5c2cd2dac45dfa6123d067e32a89e89a') @@ -63,10 +64,20 @@ class PySphinx(PythonPackage): depends_on('py-alabaster@0.7.0:0.7.999', type=('build', 'run')) depends_on('py-imagesize', when='@1.4:', type=('build', 'run')) depends_on('py-requests@2.0.0:', type=('build', 'run')) - depends_on('py-typing', type=('build', 'run')) - depends_on('py-sphinxcontrib-websupport', type=('build', 'run')) depends_on('py-sphinx-rtd-theme@0.1:', type=('build', 'run')) # optional as of 1.4 + # Sphinx v1.6+ no longer includes websupport by default: + # http://www.sphinx-doc.org/en/stable/changes.html + depends_on('py-sphinxcontrib-websupport', when='@1.6:', + type=('build', 'run')) + # TODO: incorporate the proper dependencies when concretizer is capable + # Build dep for 1.6.1 all python (bug), see: + # https://github.com/sphinx-doc/sphinx/pull/3789 + # depends_on('py-typing', when='@1.6.1', type=('build', 'run')) + # depends_on('py-typing', when='@1.6.2:^python@2.7:3.4', + # type=('build', 'run')) + depends_on('py-typing', when='@1.6:', type=('build', 'run')) + # TODO: Add a 'test' deptype # depends_on('py-pytest', type='test') # depends_on('py-mock', type='test') From 8a06e3d867528cd9209bde336297a52b4fceeaa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Mon, 24 Jul 2017 01:18:05 +0800 Subject: [PATCH 1308/2394] Add cuda variant for mvapich2. (#4800) * Add cuda variant for mvapich2. * Disable cuda for mvapich2 by default. --- .../repos/builtin/packages/mvapich2/package.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index b20bf76e934..675731146eb 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -59,6 +59,9 @@ class Mvapich2(AutotoolsPackage): variant('debug', default=False, description='Enable debug info and error messages at run-time') + variant('cuda', default=False, + description='Enable CUDA extension') + # Accepted values are: # single - No threads (MPI_THREAD_SINGLE) # funneled - Only the main thread calls MPI (MPI_THREAD_FUNNELED) @@ -100,9 +103,9 @@ class Mvapich2(AutotoolsPackage): ) ) - # FIXME : CUDA support is missing - depends_on('bison') + depends_on('bison', type='build') depends_on('libpciaccess', when=(sys.platform != 'darwin')) + depends_on('cuda', when='+cuda') def url_for_version(self, version): base_url = "http://mvapich.cse.ohio-state.edu/download" @@ -217,6 +220,14 @@ def configure_args(self): else: args.append('--enable-fast=all') + if '+cuda' in self.spec: + args.extend([ + '--enable-cuda', + '--with-cuda={0}'.format(spec['cuda'].prefix) + ]) + else: + args.append('--disable-cuda') + args.extend(self.process_manager_options) args.extend(self.network_options) return args From df2fc25ddfeef564ae10bc8dc7f8c394591eed0c Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Mon, 24 Jul 2017 14:56:54 +0100 Subject: [PATCH 1309/2394] Add a py-theano version from git repo (#4871) --- var/spack/repos/builtin/packages/py-theano/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-theano/package.py b/var/spack/repos/builtin/packages/py-theano/package.py index 22faa20744b..0e1275700db 100644 --- a/var/spack/repos/builtin/packages/py-theano/package.py +++ b/var/spack/repos/builtin/packages/py-theano/package.py @@ -33,6 +33,7 @@ class PyTheano(PythonPackage): url = "https://pypi.io/packages/source/T/Theano/Theano-0.8.2.tar.gz" version('0.8.2', 'f2d0dfe7df141115201077cd933b2c52') + version('master', git='https://github.com/Theano/Theano.git', branch='master') variant('gpu', default=False, description='Builds with support for GPUs via CUDA and cuDNN') From 250ee413e9f37e36e91ccc5ffec8fb294faf1620 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 24 Jul 2017 15:02:13 -0500 Subject: [PATCH 1310/2394] Change Version formatting properties and functions to return Version objects (#4834) * Change version.up_to() to return Version() object * Add unit tests for Version.up_to() * Fix packages that expected up_to() to return a string * Ensure that up_to() preserves separator characters * Use version indexing instead of up_to * Make all Version formatting properties return Version objects * Update docs * Tests need to test string representation --- lib/spack/docs/packaging_guide.rst | 15 ++++ lib/spack/spack/test/versions.py | 56 +++++++++++-- lib/spack/spack/version.py | 82 ++++++++++++++++--- .../repos/builtin/packages/lua/package.py | 4 +- .../repos/builtin/packages/magics/package.py | 2 +- .../repos/builtin/packages/qt/package.py | 4 +- .../builtin/packages/sublime-text/package.py | 2 +- 7 files changed, 138 insertions(+), 27 deletions(-) diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index b90a0eea177..e4b10cdf536 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -490,6 +490,21 @@ version.joined 123 Python properties don't need parentheses. ``version.dashed`` is correct. ``version.dashed()`` is incorrect. +In addition, these version properties can be combined with ``up_to()``. +For example: + +.. code-block:: python + + >>> version = Version('1.2.3') + >>> version.up_to(2).dashed + Version('1-2') + >>> version.underscored.up_to(2) + Version('1_2') + + +As you can see, order is not important. Just keep in mind that ``up_to()`` and +the other version properties return ``Version`` objects, not strings. + If a URL cannot be derived systematically, or there is a special URL for one of its versions, you can add an explicit URL for a particular version: diff --git a/lib/spack/spack/test/versions.py b/lib/spack/spack/test/versions.py index 3b04e1d4aa4..72292e4dcd0 100644 --- a/lib/spack/spack/test/versions.py +++ b/lib/spack/spack/test/versions.py @@ -204,6 +204,8 @@ def test_underscores(): assert_ver_eq('2_0', '2_0') assert_ver_eq('2.0', '2_0') assert_ver_eq('2_0', '2.0') + assert_ver_eq('2-0', '2_0') + assert_ver_eq('2_0', '2-0') def test_rpm_oddities(): @@ -426,20 +428,56 @@ def test_satisfaction_with_lists(): def test_formatted_strings(): - versions = '1.2.3', '1_2_3', '1-2-3' + versions = ( + '1.2.3b', '1_2_3b', '1-2-3b', + '1.2-3b', '1.2_3b', '1-2.3b', + '1-2_3b', '1_2.3b', '1_2-3b' + ) for item in versions: v = Version(item) - assert v.dotted == '1.2.3' - assert v.dashed == '1-2-3' - assert v.underscored == '1_2_3' - assert v.joined == '123' + assert v.dotted.string == '1.2.3b' + assert v.dashed.string == '1-2-3b' + assert v.underscored.string == '1_2_3b' + assert v.joined.string == '123b' + + assert v.dotted.dashed.string == '1-2-3b' + assert v.dotted.underscored.string == '1_2_3b' + assert v.dotted.dotted.string == '1.2.3b' + assert v.dotted.joined.string == '123b' + + +def test_up_to(): + v = Version('1.23-4_5b') + + assert v.up_to(1).string == '1' + assert v.up_to(2).string == '1.23' + assert v.up_to(3).string == '1.23-4' + assert v.up_to(4).string == '1.23-4_5' + assert v.up_to(5).string == '1.23-4_5b' + + assert v.up_to(-1).string == '1.23-4_5' + assert v.up_to(-2).string == '1.23-4' + assert v.up_to(-3).string == '1.23' + assert v.up_to(-4).string == '1' + + assert v.up_to(2).dotted.string == '1.23' + assert v.up_to(2).dashed.string == '1-23' + assert v.up_to(2).underscored.string == '1_23' + assert v.up_to(2).joined.string == '123' + + assert v.dotted.up_to(2).string == '1.23' == v.up_to(2).dotted.string + assert v.dashed.up_to(2).string == '1-23' == v.up_to(2).dashed.string + assert v.underscored.up_to(2).string == '1_23' + assert v.up_to(2).underscored.string == '1_23' + + assert v.up_to(2).up_to(1).string == '1' def test_repr_and_str(): def check_repr_and_str(vrs): a = Version(vrs) - assert repr(a) == 'Version(\'' + vrs + '\')' + assert repr(a) == "Version('" + vrs + "')" b = eval(repr(a)) assert a == b assert str(a) == vrs @@ -457,17 +495,17 @@ def test_get_item(): b = a[0:2] assert isinstance(b, Version) assert b == Version('0.1') - assert repr(b) == 'Version(\'0.1\')' + assert repr(b) == "Version('0.1')" assert str(b) == '0.1' b = a[0:3] assert isinstance(b, Version) assert b == Version('0.1_2') - assert repr(b) == 'Version(\'0.1_2\')' + assert repr(b) == "Version('0.1_2')" assert str(b) == '0.1_2' b = a[1:] assert isinstance(b, Version) assert b == Version('1_2-3') - assert repr(b) == 'Version(\'1_2-3\')' + assert repr(b) == "Version('1_2-3')" assert str(b) == '1_2-3' # Raise TypeError on tuples with pytest.raises(TypeError): diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 10fac49e9d5..0d8520a0e0a 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -130,30 +130,90 @@ def __init__(self, string): self.version = tuple(int_if_int(seg) for seg in segments) # Store the separators from the original version string as well. - # last element of separators is '' - self.separators = tuple(re.split(segment_regex, string)[1:-1]) + self.separators = tuple(re.split(segment_regex, string)[1:]) @property def dotted(self): - return '.'.join(str(x) for x in self.version) + """The dotted representation of the version. + + Example: + >>> version = Version('1-2-3b') + >>> version.dotted + Version('1.2.3b') + + Returns: + Version: The version with separator characters replaced by dots + """ + return Version(self.string.replace('-', '.').replace('_', '.')) @property def underscored(self): - return '_'.join(str(x) for x in self.version) + """The underscored representation of the version. + + Example: + >>> version = Version('1.2.3b') + >>> version.underscored + Version('1_2_3b') + + Returns: + Version: The version with separator characters replaced by + underscores + """ + return Version(self.string.replace('.', '_').replace('-', '_')) @property def dashed(self): - return '-'.join(str(x) for x in self.version) + """The dashed representation of the version. + + Example: + >>> version = Version('1.2.3b') + >>> version.dashed + Version('1-2-3b') + + Returns: + Version: The version with separator characters replaced by dashes + """ + return Version(self.string.replace('.', '-').replace('_', '-')) @property def joined(self): - return ''.join(str(x) for x in self.version) + """The joined representation of the version. + + Example: + >>> version = Version('1.2.3b') + >>> version.joined + Version('123b') + + Returns: + Version: The version with separator characters removed + """ + return Version( + self.string.replace('.', '').replace('-', '').replace('_', '')) def up_to(self, index): - """Return a version string up to the specified component, exclusive. - e.g., if this is 10.8.2, self.up_to(2) will return '10.8'. + """The version up to the specified component. + + Examples: + >>> version = Version('1.23-4b') + >>> version.up_to(1) + Version('1') + >>> version.up_to(2) + Version('1.23') + >>> version.up_to(3) + Version('1.23-4') + >>> version.up_to(4) + Version('1.23-4b') + >>> version.up_to(-1) + Version('1.23-4') + >>> version.up_to(-2) + Version('1.23') + >>> version.up_to(-3) + Version('1') + + Returns: + Version: The first index components of the version """ - return '.'.join(str(x) for x in self[:index]) + return self[:index] def lowest(self): return self @@ -204,11 +264,9 @@ def __getitem__(self, idx): return self.version[idx] elif isinstance(idx, slice): - # Currently len(self.separators) == len(self.version) - 1 - extendend_separators = self.separators + ('',) string_arg = [] - pairs = zip(self.version[idx], extendend_separators[idx]) + pairs = zip(self.version[idx], self.separators[idx]) for token, sep in pairs: string_arg.append(str(token)) string_arg.append(str(sep)) diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index 0680e1a3b50..ecb2a8b5435 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -145,11 +145,11 @@ def setup_environment(self, spack_env, run_env): @property def lua_lib_dir(self): - return os.path.join('lib', 'lua', self.version.up_to(2)) + return os.path.join('lib', 'lua', str(self.version.up_to(2))) @property def lua_share_dir(self): - return os.path.join('share', 'lua', self.version.up_to(2)) + return os.path.join('share', 'lua', str(self.version.up_to(2))) def setup_dependent_package(self, module, dependent_spec): """ diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index d69dedf3eaf..33a6bb5640d 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -109,7 +109,7 @@ def install(self, spec, prefix): if '+metview' in spec: if '+qt' in spec: options.append('-DENABLE_METVIEW=ON') - if spec['qt'].version.up_to(1) == '5': + if spec['qt'].version[0] == 5: options.append('-DENABLE_QT5=ON') else: options.append('-DENABLE_METVIEW_NO_QT=ON') diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 551f87b5d78..89e821b68f8 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -131,9 +131,9 @@ def url_for_version(self, version): url = self.list_url if version >= Version('4.0'): - url += version.up_to(2) + '/' + url += str(version.up_to(2)) + '/' else: - url += version.up_to(1) + '/' + url += str(version.up_to(1)) + '/' if version >= Version('4.8'): url += str(version) + '/' diff --git a/var/spack/repos/builtin/packages/sublime-text/package.py b/var/spack/repos/builtin/packages/sublime-text/package.py index 3d7fb65005d..e7605b40be2 100644 --- a/var/spack/repos/builtin/packages/sublime-text/package.py +++ b/var/spack/repos/builtin/packages/sublime-text/package.py @@ -49,7 +49,7 @@ class SublimeText(Package): depends_on('libxau', type='run') def url_for_version(self, version): - if version.up_to(1) == '2': + if version[0] == 2: return "https://download.sublimetext.com/Sublime%20Text%20{0}%20x64.tar.bz2".format(version) else: return "https://download.sublimetext.com/sublime_text_3_build_{0}_x64.tar.bz2".format(version) From bd0699b02684cca0341c5899b4e72edd021f055c Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 24 Jul 2017 15:50:32 -0500 Subject: [PATCH 1311/2394] stringtie: new package (#4878) --- .../builtin/packages/stringtie/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/stringtie/package.py diff --git a/var/spack/repos/builtin/packages/stringtie/package.py b/var/spack/repos/builtin/packages/stringtie/package.py new file mode 100644 index 00000000000..9baf545a4c7 --- /dev/null +++ b/var/spack/repos/builtin/packages/stringtie/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Stringtie(MakefilePackage): + """StringTie is a fast and highly efficient assembler of RNA-Seq alignments + into potential transcripts.""" + + homepage = "https://ccb.jhu.edu/software/stringtie" + url = "https://github.com/gpertea/stringtie/archive/v1.3.3b.tar.gz" + + version('1.3.3b', '11a43260b18e4272182380e922445d88') + + depends_on('samtools') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('stringtie', prefix.bin) From 9aa374978762ea0b3f0880aff2166224bf57e135 Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Mon, 24 Jul 2017 15:50:44 -0500 Subject: [PATCH 1312/2394] added new version of cdo (#4877) --- var/spack/repos/builtin/packages/cdo/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index 898f7ff1b8c..938dcdfb8c4 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -34,6 +34,8 @@ class Cdo(Package): url = "https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz" list_url = "https://code.zmaw.de/projects/cdo/files" + version('1.8.2', '6a2e2f99b7c67ee9a512c40a8d4a7121', + url='https://code.zmaw.de/attachments/download/14686/cdo-1.8.2.tar.gz') version('1.7.2', 'f08e4ce8739a4f2b63fc81a24db3ee31', url='https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz') version('1.6.9', 'bf0997bf20e812f35e10188a930e24e2', From 0c96c330ec1281bbf8cc44fad922964448a8ddb0 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 24 Jul 2017 18:01:56 -0500 Subject: [PATCH 1313/2394] subread: new package (#4882) --- .../repos/builtin/packages/subread/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/subread/package.py diff --git a/var/spack/repos/builtin/packages/subread/package.py b/var/spack/repos/builtin/packages/subread/package.py new file mode 100644 index 00000000000..b09e3986024 --- /dev/null +++ b/var/spack/repos/builtin/packages/subread/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import sys + + +class Subread(MakefilePackage): + """The Subread software package is a tool kit for processing next-gen + sequencing data.""" + + homepage = "http://subread.sourceforge.net/" + url = "https://downloads.sourceforge.net/project/subread/subread-1.5.2/subread-1.5.2-source.tar.gz" + + version('1.5.2', '817d2a46d87fcef885c8832475b8b247') + + depends_on('zlib') + + def build(self, spec, prefix): + plat = sys.platform + with working_dir('src'): + if plat.startswith('linux'): + make('-f', 'Makefile.Linux') + elif plat.startswith('darwin'): + make('-f', 'Makefile.MacOS') + else: + raise InstallError("The communication mechanism %s is not" + "supported" % plat) + + def install(self, spec, prefix): + install_tree('bin', prefix.bin) From 8038945145d9e3777bbf48a37a65366b54263558 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 24 Jul 2017 18:02:20 -0500 Subject: [PATCH 1314/2394] structure: new package (#4879) * structure: new pacakge * fixing package structure (not a pun) --- .../builtin/packages/structure/package.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/structure/package.py diff --git a/var/spack/repos/builtin/packages/structure/package.py b/var/spack/repos/builtin/packages/structure/package.py new file mode 100644 index 00000000000..abe1ee76e88 --- /dev/null +++ b/var/spack/repos/builtin/packages/structure/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Structure(MakefilePackage): + """Structure is a free software package for using multi-locus genotype + data to investigate population structure.""" + + homepage = "http://web.stanford.edu/group/pritchardlab/structure.html" + url = "http://web.stanford.edu/group/pritchardlab/structure_software/release_versions/v2.3.4/structure_kernel_source.tar.gz" + + version('2.3.4', '4e0591678cdbfe79347d272b5dceeda1') + + depends_on('jdk', type=('build', 'run')) + + def url_for_version(self, version): + url = "http://web.stanford.edu/group/pritchardlab/structure_software/release_versions/v{0}/structure_kernel_source.tar.gz" + return url.format(version) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('structure', prefix.bin) + install('mainparams', prefix.bin) + install('extraparams', prefix.bin) From d2f08c95d9d7419d0da5667e149fb24eaa05a256 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 24 Jul 2017 19:49:59 -0500 Subject: [PATCH 1315/2394] swarm: new package (#4885) --- .../repos/builtin/packages/swarm/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/swarm/package.py diff --git a/var/spack/repos/builtin/packages/swarm/package.py b/var/spack/repos/builtin/packages/swarm/package.py new file mode 100644 index 00000000000..b752f523813 --- /dev/null +++ b/var/spack/repos/builtin/packages/swarm/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Swarm(MakefilePackage): + """A robust and fast clustering method for amplicon-based studies.""" + + homepage = "https://github.com/torognes/swarm" + url = "https://github.com/torognes/swarm/archive/v2.1.13.tar.gz" + + version('2.1.13', 'ab6aff0ba5d20a53b9f13f8f3d85839f') + + build_directory = 'src' + + def install(self, spec, prefix): + install_tree('bin', prefix.bin) + install_tree('scripts', prefix.scripts) + install_tree('man', prefix.share.man) From 07e60bc26bd9f12cff2fde93c31f4b6560614f96 Mon Sep 17 00:00:00 2001 From: Stas Sergienko Date: Mon, 24 Jul 2017 19:50:16 -0500 Subject: [PATCH 1316/2394] added new version of jdk 8u141-b15 (#4876) --- var/spack/repos/builtin/packages/jdk/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index a018529baef..249b03a74f8 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -48,6 +48,8 @@ class Jdk(Package): # For instructions on how to find the magic URL, see: # https://gist.github.com/P7h/9741922 # https://linuxconfig.org/how-to-install-java-se-development-kit-on-debian-linux + version('8u141-b15', '8cf4c4e00744bfafc023d770cb65328c', curl_options=curl_options, + url='http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz') version('8u131-b11', '75b2cb2249710d822a60f83e28860053', curl_options=curl_options, url='http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz') version('8u92-b14', '65a1cc17ea362453a6e0eb4f13be76e4', curl_options=curl_options) From 4237e5fffd71841b973f3a6b76604cc13fccc4cd Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 24 Jul 2017 19:50:40 -0500 Subject: [PATCH 1317/2394] stacks: new package (#4875) --- .../repos/builtin/packages/stacks/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/stacks/package.py diff --git a/var/spack/repos/builtin/packages/stacks/package.py b/var/spack/repos/builtin/packages/stacks/package.py new file mode 100644 index 00000000000..df0d486b0ba --- /dev/null +++ b/var/spack/repos/builtin/packages/stacks/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Stacks(AutotoolsPackage): + """Stacks is a software pipeline for building loci from short-read + sequences, such as those generated on the Illumina platform.""" + + homepage = "http://catchenlab.life.illinois.edu/stacks/" + url = "http://catchenlab.life.illinois.edu/stacks/source/stacks-1.46.tar.gz" + + version('1.46', '18b0568a4bba44fb4e5be0eb7ee2c08d') + + variant('sparsehash', default=True, description='Improve Stacks memory usage with SparseHash') + + depends_on('perl', type=('build', 'run')) + depends_on('sparsehash', when='+sparsehash') + + def configure_args(self): + args = [] + if '+sparsehash' in self.spec: + args.append('--enable-sparsehash') + else: + args.append('--disable-sparsehash') + return args From b0b86e5ffea5d11c75ae1946f23aa81ff899220c Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 25 Jul 2017 02:51:17 +0200 Subject: [PATCH 1318/2394] fix GobjectIntrospection on Darwin (#4872) * fix GobjectIntrospection on Darwin * minor --- .../repos/builtin/packages/gobject-introspection/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index 44078d059e2..26e5da3d568 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -46,6 +46,9 @@ class GobjectIntrospection(Package): depends_on("flex", type="build") depends_on("pkg-config@0.9.0:", type="build") + # GobjectIntrospection does not build with sed from darwin: + depends_on('sed', when='platform=darwin', type='build') + # This package creates several scripts from # toosl/g-ir-tool-template.in. In their original form these # scripts end up with a sbang line like From 2b792f943f25a827257933d3a9f1b84e48f88c1a Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Tue, 25 Jul 2017 13:53:33 +0100 Subject: [PATCH 1319/2394] Rename the gpu variant to cuda, this is to be consistent with other (#4890) packages. --- var/spack/repos/builtin/packages/caffe/package.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index 4e2ef26dbb4..021814c7fd6 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -39,7 +39,7 @@ class Caffe(CMakePackage): version('rc3', '84e39223115753b48312a8bf48c31f59') version('rc2', 'c331932e34b5e2f5022fcc34c419080f') - variant('gpu', default=False, + variant('cuda', default=False, description='Builds with support for GPUs via CUDA and cuDNN') variant('opencv', default=True, description='Build with OpenCV support') @@ -54,7 +54,7 @@ class Caffe(CMakePackage): depends_on('boost') depends_on('boost +python', when='+python') - depends_on('cuda', when='+gpu') + depends_on('cuda', when='+cuda') depends_on('blas') depends_on('protobuf') depends_on('glog') @@ -75,8 +75,8 @@ def cmake_args(self): spec = self.spec args = ['-DBLAS={0}'.format('open' if spec['blas'].name == 'openblas' else spec['blas'].name), - '-DCPU_ONLY=%s' % ('~gpu' in spec), - '-DUSE_CUDNN=%s' % ('+gpu' in spec), + '-DCPU_ONLY=%s' % ('~cuda' in spec), + '-DUSE_CUDNN=%s' % ('+cuda' in spec), '-DBUILD_python=%s' % ('+python' in spec), '-DBUILD_python_layer=%s' % ('+python' in spec), '-DBUILD_matlab=%s' % ('+matlab' in spec), From 1d1a0e3d630358e5479df0b7d74a857717deb864 Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Tue, 25 Jul 2017 13:55:02 +0100 Subject: [PATCH 1320/2394] Update zstd version (#4873) * Update zstd version * Change order of versions * Use MakefilePackage --- var/spack/repos/builtin/packages/zstd/package.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/zstd/package.py b/var/spack/repos/builtin/packages/zstd/package.py index 7cd5d6785d7..0551ff81631 100644 --- a/var/spack/repos/builtin/packages/zstd/package.py +++ b/var/spack/repos/builtin/packages/zstd/package.py @@ -25,7 +25,7 @@ from spack import * -class Zstd(Package): +class Zstd(MakefilePackage): """Zstandard, or zstd as short version, is a fast lossless compression algorithm, targeting real-time compression scenarios at zlib-level and better compression ratios.""" @@ -33,10 +33,8 @@ class Zstd(Package): homepage = "http://facebook.github.io/zstd/" url = "https://github.com/facebook/zstd/archive/v1.1.2.tar.gz" + version('1.3.0', '888660a850e33c2dcc7c4f9d0b04d347') version('1.1.2', '4c57a080d194bdaac83f2d3251fc7ffc') def install(self, spec, prefix): - make() - if self.run_tests: - make('test') make('install', 'PREFIX={0}'.format(prefix)) From 5184dda309412685bf990483eeac85a6c1822463 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 25 Jul 2017 08:04:25 -0500 Subject: [PATCH 1321/2394] sumaclust: new package (#4884) * sumaclust: new package * tweaking url and make specs --- .../builtin/packages/sumaclust/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sumaclust/package.py diff --git a/var/spack/repos/builtin/packages/sumaclust/package.py b/var/spack/repos/builtin/packages/sumaclust/package.py new file mode 100644 index 00000000000..b1d7a94c5a1 --- /dev/null +++ b/var/spack/repos/builtin/packages/sumaclust/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Sumaclust(MakefilePackage): + """Sumaclust aims to cluster sequences in a way that is fast and exact at + the same time.""" + + homepage = "https://git.metabarcoding.org/obitools/sumaclust" + + version('1.0.20', '31c7583fbe2e3345d5fe3e9431d9b30c', + url="https://git.metabarcoding.org/obitools/sumaclust/uploads/69f757c42f2cd45212c587e87c75a00f/sumaclust_v1.0.20.tar.gz") + + def build(self, spec, prefix): + make('CC={0}'.format(spack_cc)) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('sumaclust', prefix.bin) From 20ab66a2e9d05fad6646348d8cbf41301189dfe6 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 25 Jul 2017 13:02:08 -0500 Subject: [PATCH 1322/2394] tabix: new package (#4886) * tabix: new package * fixed docs location --- .../repos/builtin/packages/tabix/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/tabix/package.py diff --git a/var/spack/repos/builtin/packages/tabix/package.py b/var/spack/repos/builtin/packages/tabix/package.py new file mode 100644 index 00000000000..1e54dd4716b --- /dev/null +++ b/var/spack/repos/builtin/packages/tabix/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Tabix(MakefilePackage): + """Generic indexer for TAB-delimited genome position files""" + + homepage = "https://github.com/samtools/tabix" + url = "https://github.com/samtools/tabix" + + version('2013-12-16', git='https://github.com/samtools/tabix.git', commit='1ae158ac79b459f5feeed7490c67519b14ce9f35') + + depends_on('perl', type=('build', 'run')) + depends_on('python', type=('build', 'run')) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.share.man.man1) + install('tabix', prefix.bin) + install('bgzip', prefix.bin) + install('tabix.py', prefix.bin) + install('tabix.1', prefix.share.man.man1) + install('tabix.tex', prefix.share) + install('TabixReader.java', prefix.bin) + install('libtabix.a', prefix.lib) + install_tree('perl', prefix.perl) + install_tree('python', prefix.python) From 71991cd9c9c046e69ee4bcc478b2925dd4ded774 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 25 Jul 2017 13:18:34 -0500 Subject: [PATCH 1323/2394] cleaveland4: new package (#4894) * cleaveland4: new package * fixing return line in viennarna url_for_version --- .../builtin/packages/cleaveland4/package.py | 48 +++++++++++++ .../builtin/packages/perl-math-cdf/package.py | 35 ++++++++++ .../builtin/packages/viennarna/package.py | 67 +++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cleaveland4/package.py create mode 100644 var/spack/repos/builtin/packages/perl-math-cdf/package.py create mode 100644 var/spack/repos/builtin/packages/viennarna/package.py diff --git a/var/spack/repos/builtin/packages/cleaveland4/package.py b/var/spack/repos/builtin/packages/cleaveland4/package.py new file mode 100644 index 00000000000..505f800ac76 --- /dev/null +++ b/var/spack/repos/builtin/packages/cleaveland4/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cleaveland4(Package): + """CleaveLand4: Analysis of degradome data to find sliced miRNA and siRNA + targets""" + + homepage = "https://github.com/MikeAxtell/CleaveLand4" + url = "https://github.com/MikeAxtell/CleaveLand4/archive/v4.4.tar.gz" + + version('4.4', 'cf62a1de715a612fc8bd5a62364e69db') + + depends_on('perl', type=('build', 'run')) + depends_on('perl-math-cdf', type=('build', 'run')) + depends_on('bowtie') + depends_on('viennarna') + depends_on('r', type=('build', 'run')) + depends_on('samtools') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('CleaveLand4.pl', prefix.bin) + with working_dir('GSTAr_v1-0'): + install('GSTAr.pl', prefix.bin) diff --git a/var/spack/repos/builtin/packages/perl-math-cdf/package.py b/var/spack/repos/builtin/packages/perl-math-cdf/package.py new file mode 100644 index 00000000000..6d7d195dea6 --- /dev/null +++ b/var/spack/repos/builtin/packages/perl-math-cdf/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PerlMathCdf(PerlPackage): + """Generate probabilities and quantiles from several statistical + probability functions""" + + homepage = "http://search.cpan.org/~callahan/Math-CDF-0.1/CDF.pm" + url = "http://search.cpan.org/CPAN/authors/id/C/CA/CALLAHAN/Math-CDF-0.1.tar.gz" + + version('0.1', '7866c7b6b9d27f0ce4b7637334478ab7') diff --git a/var/spack/repos/builtin/packages/viennarna/package.py b/var/spack/repos/builtin/packages/viennarna/package.py new file mode 100644 index 00000000000..548aacb56f0 --- /dev/null +++ b/var/spack/repos/builtin/packages/viennarna/package.py @@ -0,0 +1,67 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Viennarna(AutotoolsPackage): + """The ViennaRNA Package consists of a C code library and several + stand-alone programs for the prediction and comparison of RNA secondary + structures.""" + + homepage = "https://www.tbi.univie.ac.at/RNA/" + url = "https://www.tbi.univie.ac.at/RNA/download/sourcecode/2_3_x/ViennaRNA-2.3.5.tar.gz" + + version('2.3.5', '4542120adae9b7abb605e2304c2a1326') + + variant('sse', default=True, description='Enable SSE in order to substantially speed up execution') + variant('perl', default=True, description='Build ViennaRNA with Perl interface') + variant('python', default=True, description='Build ViennaRNA with Python interface') + + depends_on('perl', type=('build', 'run')) + depends_on('python', type=('build', 'run')) + depends_on('libsvm') + depends_on('gsl') + + def url_for_version(self, version): + url = 'https://www.tbi.univie.ac.at/RNA/download/sourcecode/{0}_x/ViennaRNA-{1}.tar.gz' + return url.format(version.up_to(2).underscored, version) + + def configure_args(self): + args = [] + if '+sse' in self.spec: + args.append('--enable-sse') + else: + args.append('--disable-sse') + if '~python' in self.spec: + args.append('--without-python') + else: + args.append('--with-python') + if '~perl' in self.spec: + args.append('--without-perl') + else: + args.append('--with-perl') + if 'python@3:' in self.spec: + args.append('--with-python3') + return args From 42717bd8e844cc3dbde651cdda99827cf643a45f Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Tue, 25 Jul 2017 13:44:51 -0700 Subject: [PATCH 1324/2394] fix config.guess patch for ppc64le (#4858) * fix config.guess patch for ppc64le * explicit patch for config.guess not required --- lib/spack/spack/build_systems/autotools.py | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index 1ef38ddc2db..230e12e1f85 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -98,7 +98,9 @@ class AutotoolsPackage(PackageBase): @run_after('autoreconf') def _do_patch_config_guess(self): """Some packages ship with an older config.guess and need to have - this updated when installed on a newer architecture.""" + this updated when installed on a newer architecture. In particular, + config.guess fails for PPC64LE for version prior to a 2013-06-10 + build date (automake 1.13.4).""" if not self.patch_config_guess or not self.spec.satisfies( 'arch=linux-rhel7-ppc64le' @@ -190,20 +192,6 @@ def default_flag_handler(self, spack_env, flag_val): ' '.join(flag_val[1])) return [] - def patch(self): - """Patches config.guess if - :py:attr:``~.AutotoolsPackage.patch_config_guess`` is True - - :raise RuntimeError: if something goes wrong when patching - ``config.guess`` - """ - - if self.patch_config_guess and self.spec.satisfies( - 'arch=linux-rhel7-ppc64le' - ): - if not self._do_patch_config_guess(): - raise RuntimeError('Failed to find suitable config.guess') - @run_before('autoreconf') def delete_configure_to_force_update(self): if self.force_autoreconf: From 668233a81936e60a4327d4275cf978d831e364a8 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 25 Jul 2017 15:50:23 -0500 Subject: [PATCH 1325/2394] trimgalore: new package (#4899) --- .../builtin/packages/trimgalore/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/trimgalore/package.py diff --git a/var/spack/repos/builtin/packages/trimgalore/package.py b/var/spack/repos/builtin/packages/trimgalore/package.py new file mode 100644 index 00000000000..9dd8be11e95 --- /dev/null +++ b/var/spack/repos/builtin/packages/trimgalore/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Trimgalore(Package): + """Trim Galore! is a wrapper around Cutadapt and FastQC to consistently + apply adapter and quality trimming to FastQ files, with extra + functionality for RRBS data.""" + + homepage = "https://github.com/FelixKrueger/TrimGalore" + url = "https://github.com/FelixKrueger/TrimGalore/archive/0.4.4.tar.gz" + + version('0.4.4', 'aae1b807b48e38bae7074470203997bb') + + depends_on('perl', type=('build', 'run')) + depends_on('py-cutadapt', type=('build', 'run')) + depends_on('fastqc') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('trim_galore', prefix.bin) From 402233ecc8caa341c58c55b6d1437867d02a7cd9 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 25 Jul 2017 15:50:42 -0500 Subject: [PATCH 1326/2394] transposome: new package (#4896) --- .../builtin/packages/transposome/package.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 var/spack/repos/builtin/packages/transposome/package.py diff --git a/var/spack/repos/builtin/packages/transposome/package.py b/var/spack/repos/builtin/packages/transposome/package.py new file mode 100644 index 00000000000..01499290cfd --- /dev/null +++ b/var/spack/repos/builtin/packages/transposome/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Transposome(PerlPackage): + """A toolkit for annotation of transposable element families from + unassembled sequence reads.""" + + homepage = "https://sestaton.github.io/Transposome/" + url = "https://github.com/sestaton/Transposome/archive/v0.11.2.tar.gz" + + version('0.11.2', '157c1fc090b0aa30050d03df885dcde0') + + depends_on('blast-plus') From 6693dc1092d3809fc540b29732aed25b0be9fccc Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 25 Jul 2017 15:51:14 -0500 Subject: [PATCH 1327/2394] transdecoder: new package (#4895) * transdecoder: new package * fixed package structure --- .../builtin/packages/transdecoder/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/transdecoder/package.py diff --git a/var/spack/repos/builtin/packages/transdecoder/package.py b/var/spack/repos/builtin/packages/transdecoder/package.py new file mode 100644 index 00000000000..4c23afbf2a2 --- /dev/null +++ b/var/spack/repos/builtin/packages/transdecoder/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Transdecoder(MakefilePackage): + """TransDecoder identifies candidate coding regions within transcript + sequences, such as those generated by de novo RNA-Seq transcript + assembly using Trinity, or constructed based on RNA-Seq alignments to + the genome using Tophat and Cufflinks.""" + + homepage = "http://transdecoder.github.io/" + url = "https://github.com/TransDecoder/TransDecoder/archive/v3.0.1.tar.gz" + + version('3.0.1', 'f62b86a15fcb78b1dada9f80cc25f300') + + depends_on('perl', type=('build', 'run')) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('TransDecoder.LongOrfs', prefix) + install('TransDecoder.Predict', prefix) + install_tree('PerlLib', prefix.PerlLib) + install_tree('util', prefix.util) + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PATH', prefix.util.bin) + run_env.prepend_path('PATH', prefix) From 30f6d2ab9026fea79fb6623f80bf51a68df16818 Mon Sep 17 00:00:00 2001 From: becker33 Date: Tue, 25 Jul 2017 13:51:56 -0700 Subject: [PATCH 1328/2394] fix callpath bug (#4659) * fix callpath bug I found while testing env/cc * fix hanging indent for flake --- var/spack/repos/builtin/packages/callpath/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/callpath/package.py b/var/spack/repos/builtin/packages/callpath/package.py index 9ded62e5c5d..813e491dfdd 100644 --- a/var/spack/repos/builtin/packages/callpath/package.py +++ b/var/spack/repos/builtin/packages/callpath/package.py @@ -46,7 +46,9 @@ def install(self, spec, prefix): # TODO: offer options for the walker used. cmake_args = std_cmake_args if spec.satisfies("^dyninst@9.3.0:"): - cmake_args.append("-DCMAKE_CXX_FLAGS='-std=c++11 -fpermissive'") + std_flag = self.compiler.cxx11_flag + cmake_args.append("-DCMAKE_CXX_FLAGS='{0} -fpermissive'".format( + std_flag)) cmake('.', "-DCALLPATH_WALKER=dyninst", *cmake_args) make() make("install") From 4b996e9f499e801db4ce211be79ce56d2ce75678 Mon Sep 17 00:00:00 2001 From: Sam Bateman Date: Tue, 25 Jul 2017 17:08:34 -0500 Subject: [PATCH 1329/2394] tmux should not set PKG_CONFIG_PATH (#4901) * fixes #967 * Version bump to 0.9.1 - Bugfixes for spack find - 0.9.1 can read specs from current develop. * Don't assume spack is in the path when building docs. * Remove PKG_CONFIG_PATH from tmux configure * Change tmux to AutotoolsPackage * Correct link to libtinfo in tmux --- var/spack/repos/builtin/packages/tmux/package.py | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/tmux/package.py b/var/spack/repos/builtin/packages/tmux/package.py index 63d6c943b8e..a3a8e5ad891 100644 --- a/var/spack/repos/builtin/packages/tmux/package.py +++ b/var/spack/repos/builtin/packages/tmux/package.py @@ -25,7 +25,7 @@ from spack import * -class Tmux(Package): +class Tmux(AutotoolsPackage): """Tmux is a terminal multiplexer. What is a terminal multiplexer? It lets you switch easily between several @@ -45,15 +45,5 @@ class Tmux(Package): depends_on('libevent') depends_on('ncurses') - def install(self, spec, prefix): - pkg_config_path = ':'.join([ - spec['libevent'].prefix, - spec['ncurses'].prefix - ]) - - configure( - "--prefix=%s" % prefix, - "PKG_CONFIG_PATH=%s" % pkg_config_path) - - make() - make("install") + def configure_args(self): + return ['LIBTINFO_LIBS=-lncurses'] From 07aec4366fa8926ee896fdb2f0c5a68dad3267b5 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 25 Jul 2017 18:34:43 -0500 Subject: [PATCH 1330/2394] Add universal build_type variant to CMakePackage (#4797) * Add universal build_type variant to CMakePackage * Override build_type in some packages with different possible values * Remove reference to no longer existent debug variant * Update CBTF packages with new build_type variant * Keep note on build size of LLVM --- lib/spack/spack/build_systems/cmake.py | 23 +++++++------------ .../builtin/packages/alquimia/package.py | 6 ----- .../builtin/packages/benchmark/package.py | 5 ++++ .../repos/builtin/packages/bml/package.py | 9 -------- .../packages/cbtf-argonavis/package.py | 6 ++--- .../builtin/packages/cbtf-krell/package.py | 5 ++-- .../builtin/packages/cbtf-lanl/package.py | 6 ++--- .../repos/builtin/packages/cbtf/package.py | 5 ++-- .../repos/builtin/packages/clamr/package.py | 13 ----------- .../repos/builtin/packages/clhep/package.py | 9 -------- .../repos/builtin/packages/dealii/package.py | 7 +++--- .../repos/builtin/packages/eccodes/package.py | 3 +++ .../repos/builtin/packages/eigen/package.py | 12 +++------- .../builtin/packages/elemental/package.py | 14 +++-------- .../builtin/packages/espressopp/package.py | 8 ------- .../repos/builtin/packages/fenics/package.py | 10 ++++---- .../builtin/packages/flecsale/package.py | 8 ------- .../repos/builtin/packages/flecsi/package.py | 8 ------- .../repos/builtin/packages/geant4/package.py | 8 ------- .../repos/builtin/packages/gmsh/package.py | 5 ---- .../repos/builtin/packages/gromacs/package.py | 10 ++++---- .../repos/builtin/packages/hpx/package.py | 7 ------ .../repos/builtin/packages/lbann/package.py | 8 ------- .../repos/builtin/packages/legion/package.py | 8 ------- .../repos/builtin/packages/llvm/package.py | 14 ++++------- .../builtin/packages/mad-numdiff/package.py | 9 -------- .../repos/builtin/packages/nalu/package.py | 9 -------- .../builtin/packages/opencoarrays/package.py | 5 ++++ .../builtin/packages/openspeedshop/package.py | 5 ++-- .../repos/builtin/packages/pegtl/package.py | 9 -------- .../repos/builtin/packages/portage/package.py | 8 ------- .../repos/builtin/packages/quinoa/package.py | 9 -------- .../repos/builtin/packages/relion/package.py | 4 ++++ .../repos/builtin/packages/root/package.py | 6 ----- .../repos/builtin/packages/sas/package.py | 9 -------- .../builtin/packages/symengine/package.py | 8 +++---- .../builtin/packages/trilinos/package.py | 4 ---- .../repos/builtin/packages/vc/package.py | 12 ++++------ .../repos/builtin/packages/vecgeom/package.py | 9 -------- .../builtin/packages/votca-csg/package.py | 9 -------- .../builtin/packages/votca-ctp/package.py | 9 -------- .../builtin/packages/votca-moo/package.py | 9 -------- .../builtin/packages/votca-tools/package.py | 9 -------- .../builtin/packages/votca-xtp/package.py | 9 -------- .../repos/builtin/packages/vpic/package.py | 9 -------- .../builtin/packages/xsdktrilinos/package.py | 10 +++----- 46 files changed, 68 insertions(+), 319 deletions(-) diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index b339858348b..db3240e8a52 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -29,7 +29,7 @@ import spack.build_environment from llnl.util.filesystem import working_dir, join_path -from spack.directives import depends_on +from spack.directives import depends_on, variant from spack.package import PackageBase, run_after @@ -49,11 +49,6 @@ class CMakePackage(PackageBase): +-----------------------------------------------+--------------------+ | **Method** | **Purpose** | +===============================================+====================+ - | :py:meth:`~.CMakePackage.build_type` | Specify the value | - | | for the | - | | CMAKE_BUILD_TYPE | - | | variable | - +-----------------------------------------------+--------------------+ | :py:meth:`~.CMakePackage.root_cmakelists_dir` | Location of the | | | root CMakeLists.txt| +-----------------------------------------------+--------------------+ @@ -74,15 +69,13 @@ class CMakePackage(PackageBase): build_time_test_callbacks = ['check'] + # https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel')) + depends_on('cmake', type='build') - def build_type(self): - """Returns the correct value for the ``CMAKE_BUILD_TYPE`` variable - - :return: value for ``CMAKE_BUILD_TYPE`` - """ - return 'RelWithDebInfo' - @property def root_cmakelists_dir(self): """The relative path to the directory containing CMakeLists.txt @@ -108,8 +101,8 @@ def std_cmake_args(self): def _std_args(pkg): """Computes the standard cmake arguments for a generic package""" try: - build_type = pkg.build_type() - except AttributeError: + build_type = pkg.spec.variants['build_type'].value + except KeyError: build_type = 'RelWithDebInfo' args = ['-DCMAKE_INSTALL_PREFIX:PATH={0}'.format(pkg.prefix), diff --git a/var/spack/repos/builtin/packages/alquimia/package.py b/var/spack/repos/builtin/packages/alquimia/package.py index b8d3f608406..cadea3cb3ca 100644 --- a/var/spack/repos/builtin/packages/alquimia/package.py +++ b/var/spack/repos/builtin/packages/alquimia/package.py @@ -36,8 +36,6 @@ class Alquimia(CMakePackage): variant('shared', default=True, description='Enables the build of shared libraries') - variant('debug', default=False, - description='Builds a debug version of the libraries') depends_on('mpi') depends_on('hdf5') @@ -52,10 +50,6 @@ def cmake_args(self): options = ['-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc, '-DUSE_XSDK_DEFAULTS=YES', - '-DCMAKE_BUILD_TYPE:STRING=%s' % ( - 'DEBUG' if '+debug' in spec else 'RELEASE'), - '-DXSDK_ENABLE_DEBUG:STRING=%s' % ( - 'YES' if '+debug' in spec else 'NO'), '-DBUILD_SHARED_LIBS:BOOL=%s' % ( 'ON' if '+shared' in spec else 'OFF'), '-DTPL_ENABLE_MPI:BOOL=ON', diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py index eecb9341d98..4101b0e9e09 100644 --- a/var/spack/repos/builtin/packages/benchmark/package.py +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -37,6 +37,11 @@ class Benchmark(CMakePackage): version('1.1.0', '66b2a23076cf70739525be0092fc3ae3') version('1.0.0', '1474ff826f8cd68067258db75a0835b8') + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', + 'MinSizeRel', 'Coverage')) + def patch(self): filter_file( r'add_cxx_compiler_flag..fstrict.aliasing.', diff --git a/var/spack/repos/builtin/packages/bml/package.py b/var/spack/repos/builtin/packages/bml/package.py index 87dc1c9e80e..fe1e21a8de5 100644 --- a/var/spack/repos/builtin/packages/bml/package.py +++ b/var/spack/repos/builtin/packages/bml/package.py @@ -36,14 +36,5 @@ class Bml(CMakePackage): version('develop', git='https://github.com/qmmd/bml', branch='master') version('1.1.0', git='https://github.com/qmmd/bml', tag='v1.1.0') - variant('debug', default=False, description='Build debug version') - depends_on("blas") depends_on("lapack") - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py index 2c1c6636393..a13d79c9539 100644 --- a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py +++ b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py @@ -53,6 +53,9 @@ class CbtfArgonavis(CMakePackage): version('1.8', branch='master', git='https://github.com/OpenSpeedShop/cbtf-argonavis.git') + variant('build_type', default='None', values=('None'), + description='CMake build type') + depends_on("cmake@3.0.2:", type='build') depends_on("boost@1.50.0:1.59.0") depends_on("papi") @@ -65,9 +68,6 @@ class CbtfArgonavis(CMakePackage): build_directory = 'build_cbtf_argonavis' - def build_type(self): - return 'None' - def cmake_args(self): spec = self.spec compile_flags = "-O2 -g" diff --git a/var/spack/repos/builtin/packages/cbtf-krell/package.py b/var/spack/repos/builtin/packages/cbtf-krell/package.py index a90ea74f9d0..40fc932e8f3 100644 --- a/var/spack/repos/builtin/packages/cbtf-krell/package.py +++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py @@ -68,6 +68,8 @@ class CbtfKrell(CMakePackage): description="Build mpi experiment collector for mpich2 MPI.") variant('mpich', default=False, description="Build mpi experiment collector for mpich MPI.") + variant('build_type', default='None', values=('None'), + description='CMake build type') # Dependencies for cbtf-krell depends_on("cmake@3.0.2:", type='build') @@ -129,9 +131,6 @@ def set_mpi_cmakeOptions(self, spec, cmakeOptions): cmakeOptions.extend(MPIOptions) - def build_type(self): - return 'None' - def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/cbtf-lanl/package.py b/var/spack/repos/builtin/packages/cbtf-lanl/package.py index 6ffca1f8b16..b56265154c3 100644 --- a/var/spack/repos/builtin/packages/cbtf-lanl/package.py +++ b/var/spack/repos/builtin/packages/cbtf-lanl/package.py @@ -51,6 +51,9 @@ class CbtfLanl(CMakePackage): version('1.8', branch='master', git='http://git.code.sf.net/p/cbtf-lanl/cbtf-lanl') + variant('build_type', default='None', values=('None'), + description='CMake build type') + depends_on("cmake@3.0.2:", type='build') # Dependencies for cbtf-krell depends_on("mrnet@5.0.1:+lwthreads") @@ -62,9 +65,6 @@ class CbtfLanl(CMakePackage): build_directory = 'build_cbtf_lanl' - def build_type(self): - return 'None' - def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/cbtf/package.py b/var/spack/repos/builtin/packages/cbtf/package.py index 68e2b7d0a22..d972544f5ff 100644 --- a/var/spack/repos/builtin/packages/cbtf/package.py +++ b/var/spack/repos/builtin/packages/cbtf/package.py @@ -58,6 +58,8 @@ class Cbtf(CMakePackage): variant('runtime', default=False, description="build only the runtime libraries and collectors.") + variant('build_type', default='None', values=('None'), + description='CMake build type') depends_on("cmake@3.0.2:", type='build') depends_on("boost@1.50.0:1.59.0") @@ -70,9 +72,6 @@ class Cbtf(CMakePackage): build_directory = 'build_cbtf' - def build_type(self): - return 'None' - def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/clamr/package.py b/var/spack/repos/builtin/packages/clamr/package.py index c45069d39f5..d1eee12d1c0 100644 --- a/var/spack/repos/builtin/packages/clamr/package.py +++ b/var/spack/repos/builtin/packages/clamr/package.py @@ -41,10 +41,6 @@ class Clamr(CMakePackage): 'graphics', default='opengl', values=('opengl', 'mpe', 'none'), description='Build with specified graphics support') - variant( - 'build', default='relwithdebinfo', - values=('debug', 'release', 'relwithdebinfo'), - description='Build type') variant( 'precision', default='mixed', values=('single', 'mixed', 'full'), @@ -53,15 +49,6 @@ class Clamr(CMakePackage): depends_on('mpi') depends_on('mpe', when='graphics=mpe') - def build_type(self): - spec = self.spec - if 'build=debug' in spec: - return 'Debug' - elif 'build=release' in spec: - return 'Release' - else: - return 'RelWithDebInfo' - def cmake_args(self): spec = self.spec cmake_args = [] diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py index 7120fffac6c..2f4f5b1579c 100644 --- a/var/spack/repos/builtin/packages/clhep/package.py +++ b/var/spack/repos/builtin/packages/clhep/package.py @@ -50,7 +50,6 @@ class Clhep(CMakePackage): version('2.2.0.5', '1584e8ce6ebf395821aed377df315c7c') version('2.2.0.4', '71d2c7c2e39d86a0262e555148de01c1') - variant('debug', default=False, description="Switch to the debug version of CLHEP.") variant('cxx11', default=True, description="Compile using c++11 dialect.") variant('cxx14', default=False, description="Compile using c++14 dialect.") @@ -65,14 +64,6 @@ def patch(self): root_cmakelists_dir = 'CLHEP' - def build_type(self): - spec = self.spec - - if '+debug' in spec: - return 'Debug' - else: - return 'MinSizeRel' - def cmake_args(self): spec = self.spec cmake_args = [] diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index ba1f8960108..aa6a2be0b48 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -71,6 +71,9 @@ class Dealii(CMakePackage): description='Compile with 64 bit indices support') variant('optflags', default=False, description='Compile using additional optimization flags') + variant('build_type', default='DebugRelease', + description='The build type to build', + values=('Debug', 'Release', 'DebugRelease')) # required dependencies, light version depends_on("blas") @@ -136,10 +139,6 @@ class Dealii(CMakePackage): '+slepc', '+trilinos']: conflicts(p, when='~mpi') - def build_type(self): - # CMAKE_BUILD_TYPE should be DebugRelease | Debug | Release - return 'DebugRelease' - def cmake_args(self): spec = self.spec options = [] diff --git a/var/spack/repos/builtin/packages/eccodes/package.py b/var/spack/repos/builtin/packages/eccodes/package.py index 137f445c690..40539e19c92 100644 --- a/var/spack/repos/builtin/packages/eccodes/package.py +++ b/var/spack/repos/builtin/packages/eccodes/package.py @@ -50,6 +50,9 @@ class Eccodes(CMakePackage): description="Enable OpenMP threads") variant('memfs', default=False, description="Memory based access to definitions/samples") + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', 'Production')) depends_on('netcdf', when='+netcdf') depends_on('openjpeg', when='+jpeg') diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index 0aefe416e36..569af17c61d 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -40,9 +40,6 @@ class Eigen(CMakePackage): version('3.2.8', '64f4aef8012a424c7e079eaf0be71793ab9bc6e0') version('3.2.7', 'cc1bacbad97558b97da6b77c9644f184') - variant('debug', default=False, - description='Builds the library in debug mode') - variant('metis', default=True, description='Enables metis backend') variant('scotch', default=True, description='Enables scotch backend') variant('fftw', default=True, description='Enables FFTW backend') @@ -50,6 +47,9 @@ class Eigen(CMakePackage): description='Enables SuiteSparse support') variant('mpfr', default=True, description='Enables support for multi-precisions FP via mpfr') + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo')) # TODO : dependency on googlehash, superlu, adolc missing depends_on('metis@5:', when='+metis') @@ -58,9 +58,3 @@ class Eigen(CMakePackage): depends_on('suite-sparse', when='+suitesparse') depends_on('mpfr@2.3.0:', when='+mpfr') depends_on('gmp', when='+mpfr') - - def build_type(self): - if '+debug' in self.spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index d86ee985f76..e118bcbd447 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -36,8 +36,6 @@ class Elemental(CMakePackage): version('0.87.7', '6c1e7442021c59a36049e37ea69b8075') version('0.87.6', '9fd29783d45b0a0e27c0df85f548abe9') - variant('debug', default=False, - description='Builds a debug version of the libraries') variant('shared', default=True, description='Enables the build of shared libraries') variant('hybrid', default=True, @@ -61,6 +59,9 @@ class Elemental(CMakePackage): ' Requires local build of BLAS library.') variant('scalapack', default=False, description='Build with ScaLAPACK library') + variant('build_type', default='Release', + description='The build type to build', + values=('Debug', 'Release')) # Note that this forces us to use OpenBLAS until #1712 is fixed depends_on('blas', when='~openmp_blas ~int64_blas') @@ -85,15 +86,6 @@ def libs(self): 'libEl', root=self.prefix, shared=shared, recurse=True ) - def build_type(self): - """Returns the correct value for the ``CMAKE_BUILD_TYPE`` variable - :return: value for ``CMAKE_BUILD_TYPE`` - """ - if '+debug' in self.spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/espressopp/package.py b/var/spack/repos/builtin/packages/espressopp/package.py index e71291bec86..f1752b3b5eb 100644 --- a/var/spack/repos/builtin/packages/espressopp/package.py +++ b/var/spack/repos/builtin/packages/espressopp/package.py @@ -39,7 +39,6 @@ class Espressopp(CMakePackage): version('1.9.4.1', '0da74a6d4e1bfa6a2a24fca354245a4f') version('1.9.4', 'f2a27993a83547ad014335006eea74ea') - variant('debug', default=False, description='Build debug version') variant('ug', default=False, description='Build user guide') variant('pdf', default=False, description='Build user guide in pdf format') variant('dg', default=False, description='Build developer guide') @@ -60,13 +59,6 @@ class Espressopp(CMakePackage): depends_on("texlive", when="+pdf", type='build') depends_on("doxygen", when="+dg", type='build') - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): return ['-DEXTERNAL_MPI4PY=ON', '-DEXTERNAL_BOOST=ON'] diff --git a/var/spack/repos/builtin/packages/fenics/package.py b/var/spack/repos/builtin/packages/fenics/package.py index 34afa0d609c..5aa3b17d73b 100644 --- a/var/spack/repos/builtin/packages/fenics/package.py +++ b/var/spack/repos/builtin/packages/fenics/package.py @@ -55,10 +55,12 @@ class Fenics(CMakePackage): description='Enables the shared memory support') variant('shared', default=True, description='Enables the build of shared libraries') - variant('debug', default=False, - description='Builds a debug version of the libraries') variant('doc', default=False, description='Builds the documentation') + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', + 'MinSizeRel', 'Developer')) # not part of spack list for now # variant('petsc4py', default=True, description='Uses PETSc4py') @@ -144,11 +146,7 @@ def cmake_is_on(self, option): return 'ON' if option in self.spec else 'OFF' def cmake_args(self): - spec = self.spec - return [ - '-DCMAKE_BUILD_TYPE:STRING={0}'.format( - 'Debug' if '+debug' in spec else 'RelWithDebInfo'), '-DDOLFIN_ENABLE_DOCS:BOOL={0}'.format( self.cmake_is_on('+doc')), '-DBUILD_SHARED_LIBS:BOOL={0}'.format( diff --git a/var/spack/repos/builtin/packages/flecsale/package.py b/var/spack/repos/builtin/packages/flecsale/package.py index b22c553d2ab..828ff47d2fd 100644 --- a/var/spack/repos/builtin/packages/flecsale/package.py +++ b/var/spack/repos/builtin/packages/flecsale/package.py @@ -33,7 +33,6 @@ class Flecsale(CMakePackage): version('develop', git='https://github.com/laristra/flecsale', branch='master', submodules=True) - variant('debug', default=False, description='Build debug version') variant('mpi', default=True, description='Build on top of mpi conduit for mpi inoperability') @@ -43,13 +42,6 @@ class Flecsale(CMakePackage): depends_on("python") depends_on("openssl") - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): options = [ '-DENABLE_UNIT_TESTS=ON' diff --git a/var/spack/repos/builtin/packages/flecsi/package.py b/var/spack/repos/builtin/packages/flecsi/package.py index 5c0f51b2d18..3b079565cb6 100644 --- a/var/spack/repos/builtin/packages/flecsi/package.py +++ b/var/spack/repos/builtin/packages/flecsi/package.py @@ -41,7 +41,6 @@ class Flecsi(CMakePackage): version('develop', git='https://github.com/laristra/flecsi', branch='master', submodules=True) - variant('debug', default=False, description='Build debug version') variant('mpi', default=True, description='Build on top of mpi conduit for mpi inoperability') @@ -49,13 +48,6 @@ class Flecsi(CMakePackage): depends_on("legion+shared", when='~mpi') depends_on("legion+shared+mpi", when='+mpi') - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): options = ['-DENABLE_UNIT_TESTS=ON'] diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index cb04d674812..95d3eb9d551 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -41,7 +41,6 @@ class Geant4(CMakePackage): version('10.01.p03', '4fb4175cc0dabcd517443fbdccd97439') variant('qt', default=True, description='Enable Qt support') - variant('debug', default=False, description='Build debug version') depends_on('cmake@3.5:', type='build') @@ -54,13 +53,6 @@ class Geant4(CMakePackage): depends_on("xerces-c") depends_on("qt@4.8:", when="+qt") - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py index 3c9eff5619f..977bf6c3d67 100644 --- a/var/spack/repos/builtin/packages/gmsh/package.py +++ b/var/spack/repos/builtin/packages/gmsh/package.py @@ -46,8 +46,6 @@ class Gmsh(CMakePackage): variant('shared', default=True, description='Enables the build of shared libraries') - variant('debug', default=False, - description='Builds the library in debug mode') variant('mpi', default=True, description='Builds MPI support for parser and solver') variant('fltk', default=False, @@ -128,9 +126,6 @@ def cmake_args(self): # Builds and installs static library options.append('-DENABLE_BUILD_LIB:BOOL=ON') - if '+debug' in spec: - options.append('-DCMAKE_BUILD_TYPE:STRING=Debug') - if '+mpi' in spec: options.append('-DENABLE_MPI:BOOL=ON') diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 97fd569d1ff..ae17193139c 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -48,12 +48,15 @@ class Gromacs(CMakePackage): variant('mpi', default=True, description='Activate MPI support') variant('shared', default=True, description='Enables the build of shared libraries') - variant('debug', default=False, description='Enables debug mode') variant( 'double', default=False, description='Produces a double precision version of the executables') variant('plumed', default=False, description='Enable PLUMED support') variant('cuda', default=False, description='Enable CUDA support') + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel', + 'Reference', 'RelWithAssert', 'Profile')) depends_on('mpi', when='+mpi') depends_on('plumed+mpi', when='+plumed+mpi') @@ -79,11 +82,6 @@ def cmake_args(self): if '~shared' in self.spec: options.append('-DBUILD_SHARED_LIBS:BOOL=OFF') - if '+debug' in self.spec: - options.append('-DCMAKE_BUILD_TYPE:STRING=Debug') - else: - options.append('-DCMAKE_BUILD_TYPE:STRING=Release') - if '+cuda' in self.spec: options.append('-DGMX_GPU:BOOL=ON') options.append('-DCUDA_TOOLKIT_ROOT_DIR:STRING=' + diff --git a/var/spack/repos/builtin/packages/hpx/package.py b/var/spack/repos/builtin/packages/hpx/package.py index ef7b347426c..58644db11e7 100644 --- a/var/spack/repos/builtin/packages/hpx/package.py +++ b/var/spack/repos/builtin/packages/hpx/package.py @@ -40,10 +40,3 @@ class Hpx(CMakePackage): def cmake_args(self): args = ['-DHPX_BUILD_EXAMPLES=OFF', '-DHPX_MALLOC=system'] return args - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index b79f9244c98..fea19245503 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -36,24 +36,16 @@ class Lbann(CMakePackage): version('develop', git='https://github.com/LLNL/lbann.git', branch="develop") version('0.91', '83b0ec9cd0b7625d41dfb06d2abd4134') - variant('debug', default=False, description='Builds a debug version of the libraries') variant('gpu', default=False, description='Builds with support for GPUs via CUDA and cuDNN') variant('opencv', default=True, description='Builds with support for image processing routines with OpenCV') variant('seq_init', default=False, description='Force serial initialization of weight matrices.') depends_on('elemental +openmp_blas +scalapack +shared +int64') - depends_on('elemental +openmp_blas +scalapack +shared +int64 +debug', when='+debug') depends_on('cuda', when='+gpu') depends_on('mpi') depends_on('opencv@3.2.0', when='+opencv') depends_on('protobuf@3.0.2:') - def build_type(self): - if '+debug' in self.spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): spec = self.spec # Environment variables diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py index 79a1ee533d6..3bcd37e3068 100644 --- a/var/spack/repos/builtin/packages/legion/package.py +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -46,7 +46,6 @@ class Legion(CMakePackage): version('develop', git='https://github.com/StanfordLegion/legion', branch='master') version('17.02.0', '31ac3004e2fb0996764362d2b6f6844a') - variant('debug', default=False, description='Build debug version') variant('mpi', default=True, description='Build on top of mpi conduit for mpi inoperability') variant('shared', default=True, description='Build shared libraries') @@ -55,13 +54,6 @@ class Legion(CMakePackage): depends_on("gasnet", when='~mpi') depends_on("gasnet+mpi", when='+mpi') - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): options = [ '-DLegion_USE_GASNet=ON', diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index fc8823f1a81..64e50f0cfb7 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -43,10 +43,10 @@ class Llvm(CMakePackage): version('3.0', 'a8e5f5f1c1adebae7b4a654c376a6005', url='http://llvm.org/releases/3.0/llvm-3.0.tar.gz') - variant('debug', default=False, - description="Build a debug version of LLVM, this increases " - "binary size by an order of magnitude, make sure you have " - "20-30gb of space available to build this") + # NOTE: The debug version of LLVM is an order of magnitude larger than + # the release version, and may take up 20-30 GB of space. If you want + # to save space, build with `build_type=Release`. + variant('clang', default=True, description="Build the LLVM C/C++/Objective-C compiler frontend") variant('lldb', default=True, description="Build the LLVM debugger") @@ -327,12 +327,6 @@ class Llvm(CMakePackage): def setup_environment(self, spack_env, run_env): spack_env.append_flags('CXXFLAGS', self.compiler.cxx11_flag) - def build_type(self): - if '+debug' in self.spec: - return 'RelWithDebInfo' - else: - return 'Release' - def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/mad-numdiff/package.py b/var/spack/repos/builtin/packages/mad-numdiff/package.py index 4d0c9c1ef73..574ddf2be37 100644 --- a/var/spack/repos/builtin/packages/mad-numdiff/package.py +++ b/var/spack/repos/builtin/packages/mad-numdiff/package.py @@ -34,12 +34,3 @@ class MadNumdiff(CMakePackage): version('develop', git='https://github.com/quinoacomputing/ndiff', branch='master') version('20150724', '7723c0f2499aea8fd960377c5bed28d8') - - variant('debug', default=False, description='Build debug version') - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/nalu/package.py b/var/spack/repos/builtin/packages/nalu/package.py index fc6d79e9ea0..040144ff164 100644 --- a/var/spack/repos/builtin/packages/nalu/package.py +++ b/var/spack/repos/builtin/packages/nalu/package.py @@ -38,19 +38,10 @@ class Nalu(CMakePackage): version('master', git='https://github.com/NaluCFD/Nalu.git', branch='master') - variant('debug', default=False, - description='Builds a debug version') - # Currently Nalu only builds static libraries; To be fixed soon depends_on('yaml-cpp+fpic~shared') depends_on('trilinos~shared+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf@master') - def build_type(self): - if '+debug' in self.spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): spec = self.spec options = [] diff --git a/var/spack/repos/builtin/packages/opencoarrays/package.py b/var/spack/repos/builtin/packages/opencoarrays/package.py index 0449155bc7f..37ae236c0ad 100644 --- a/var/spack/repos/builtin/packages/opencoarrays/package.py +++ b/var/spack/repos/builtin/packages/opencoarrays/package.py @@ -42,6 +42,11 @@ class Opencoarrays(CMakePackage): version('1.7.4', '85ba87def461e3ff5a164de2e6482930') version('1.6.2', '5a4da993794f3e04ea7855a6678981ba') + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', + 'MinSizeRel', 'CodeCoverage')) + depends_on('mpi') def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 2acb44ad02b..f4c0029d726 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -83,6 +83,8 @@ class Openspeedshop(CMakePackage): variant('rtfe', default=False, description="build for clusters heterogeneous processors \ on fe/be nodes.") + variant('build_type', default='None', values=('None'), + description='CMake build type') # MPI variants variant('openmpi', default=False, @@ -144,9 +146,6 @@ class Openspeedshop(CMakePackage): build_directory = 'build_openspeedshop' - def build_type(self): - return 'None' - def cmake_args(self): spec = self.spec compile_flags = "-O2 -g" diff --git a/var/spack/repos/builtin/packages/pegtl/package.py b/var/spack/repos/builtin/packages/pegtl/package.py index 85a008a1199..f6848be725a 100644 --- a/var/spack/repos/builtin/packages/pegtl/package.py +++ b/var/spack/repos/builtin/packages/pegtl/package.py @@ -39,12 +39,3 @@ class Pegtl(CMakePackage): version('develop', git='https://github.com/taocpp/PEGTL', branch='master') version('2.1.4', 'e5288b6968e6e910287fce93dc5557bf') version('2.0.0', 'c772828e7188459338a920c21f9896db') - - variant('debug', default=False, description='Build debug version') - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/portage/package.py b/var/spack/repos/builtin/packages/portage/package.py index 92e42665523..0934076ab90 100644 --- a/var/spack/repos/builtin/packages/portage/package.py +++ b/var/spack/repos/builtin/packages/portage/package.py @@ -36,19 +36,11 @@ class Portage(CMakePackage): version('develop', git='https://github.com/laristra/portage', branch='master', submodules=True) - variant('debug', default=False, description='Build debug version') variant('mpi', default=True, description='Support MPI') depends_on("cmake@3.1:", type='build') depends_on('mpi', when='+mpi') - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): options = ['-DENABLE_UNIT_TESTS=ON', '-DENABLE_APP_TESTS=ON'] diff --git a/var/spack/repos/builtin/packages/quinoa/package.py b/var/spack/repos/builtin/packages/quinoa/package.py index eb41bb8b371..de04e6407cd 100644 --- a/var/spack/repos/builtin/packages/quinoa/package.py +++ b/var/spack/repos/builtin/packages/quinoa/package.py @@ -38,8 +38,6 @@ class Quinoa(CMakePackage): version('develop', git='https://github.com/quinoacomputing/quinoa', branch='master') - variant('debug', default=False, description='Build debug version') - depends_on('hdf5+mpi') depends_on("charm backend=mpi") depends_on("trilinos+exodus") @@ -56,10 +54,3 @@ class Quinoa(CMakePackage): depends_on("pegtl") root_cmakelists_dir = 'src' - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/relion/package.py b/var/spack/repos/builtin/packages/relion/package.py index dfb93cd9434..23b1834fbc7 100644 --- a/var/spack/repos/builtin/packages/relion/package.py +++ b/var/spack/repos/builtin/packages/relion/package.py @@ -40,6 +40,10 @@ class Relion(CMakePackage): variant('cuda', default=False, description="enable compute on gpu") variant('double', default=False, description="double precision (cpu) code") variant('double-gpu', default=False, description="double precision (gpu) code") + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', + 'Profiling', 'Benchmarking')) depends_on('mpi') depends_on('fftw+float+double') diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index b5f6ce89fe9..dfd7ba3e25a 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -99,12 +99,6 @@ class Root(CMakePackage): # See https://sft.its.cern.ch/jira/browse/ROOT-7517 conflicts('%intel') - def build_type(self): - if '+debug' in self.spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): args = [ '-Dcocoa=OFF', diff --git a/var/spack/repos/builtin/packages/sas/package.py b/var/spack/repos/builtin/packages/sas/package.py index 5a7f1de1d5d..050d6172d65 100644 --- a/var/spack/repos/builtin/packages/sas/package.py +++ b/var/spack/repos/builtin/packages/sas/package.py @@ -36,19 +36,10 @@ class Sas(CMakePackage): version('0.1.4', '20d7311258f2a59c9367ae1576c392b6') version('0.1.3', '1e6572afcc03318d16d7321d40eec0fd') - variant('debug', default=False, description='Build debug version') - depends_on('python@2.7:') depends_on('llvm@3.5:') depends_on('cmake@2.8:', type='build') - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): args = [ '-DLLVM_DEV_DIR=%s' % self.spec['llvm'].prefix diff --git a/var/spack/repos/builtin/packages/symengine/package.py b/var/spack/repos/builtin/packages/symengine/package.py index 50dd335ac70..a36cfc70b2b 100644 --- a/var/spack/repos/builtin/packages/symengine/package.py +++ b/var/spack/repos/builtin/packages/symengine/package.py @@ -55,6 +55,9 @@ class Symengine(CMakePackage): description='Enable thread safety option') variant('shared', default=True, description='Enables the build of shared libraries') + variant('build_type', default='Release', + description='The build type to build', + values=('Debug', 'Release')) # NOTE: mpir is a drop-in replacement for gmp # NOTE: [mpc,mpfr,flint,piranha] could also be built against mpir @@ -66,10 +69,6 @@ class Symengine(CMakePackage): depends_on('flint', when='+flint~boostmp') depends_on('piranha', when='+piranha~flint~boostmp') - def build_type(self): - # CMAKE_BUILD_TYPE should be Debug | Release - return 'Release' - def cmake_args(self): spec = self.spec options = [] @@ -77,7 +76,6 @@ def cmake_args(self): # See https://github.com/symengine/symengine/blob/master/README.md # for build options options.extend([ - '-DCMAKE_BUILD_TYPE=Release', '-DWITH_SYMENGINE_RCP:BOOL=ON', '-DWITH_SYMENGINE_THREAD_SAFE:BOOL=%s' % ( 'ON' if ('+thread_safe' or '+openmp') in spec else 'OFF'), diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 74022f08331..8566adc6491 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -93,8 +93,6 @@ class Trilinos(CMakePackage): description='Build python wrappers') variant('shared', default=True, description='Enables the build of shared libraries') - variant('debug', default=False, - description='Builds a debug version of the libraries') variant('boost', default=True, description='Compile with Boost') variant('tpetra', default=True, @@ -241,8 +239,6 @@ def cmake_args(self): '-DTrilinos_ENABLE_TESTS:BOOL=OFF', '-DTrilinos_ENABLE_EXAMPLES:BOOL=OFF', '-DTrilinos_ENABLE_CXX11:BOOL=ON', - '-DCMAKE_BUILD_TYPE:STRING=%s' % ( - 'DEBUG' if '+debug' in spec else 'RELEASE'), '-DBUILD_SHARED_LIBS:BOOL=%s' % ( 'ON' if '+shared' in spec else 'OFF'), diff --git a/var/spack/repos/builtin/packages/vc/package.py b/var/spack/repos/builtin/packages/vc/package.py index e41a385947c..67ced036b25 100644 --- a/var/spack/repos/builtin/packages/vc/package.py +++ b/var/spack/repos/builtin/packages/vc/package.py @@ -35,11 +35,7 @@ class Vc(CMakePackage): version('1.2.0', 'a5236df286b845d2fee5ef1e4d27549f') version('1.1.0', 'e354c1e3ea1d674b6f2af9c6fd230d81') - variant('debug', default=False) - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebug', + 'RelWithDebInfo', 'MinSizeRel')) diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index d514f13c174..9843840e5b0 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -36,17 +36,8 @@ class Vecgeom(CMakePackage): version('0.3.rc', git='https://gitlab.cern.ch/VecGeom/VecGeom.git', tag='v0.3.rc') - variant('debug', default=False, description='Build debug version') - depends_on('cmake@3.5:', type='build') - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): options = [ '-DBACKEND=Scalar', diff --git a/var/spack/repos/builtin/packages/votca-csg/package.py b/var/spack/repos/builtin/packages/votca-csg/package.py index 6756d0427b7..bd5879e68a0 100644 --- a/var/spack/repos/builtin/packages/votca-csg/package.py +++ b/var/spack/repos/builtin/packages/votca-csg/package.py @@ -39,16 +39,7 @@ class VotcaCsg(CMakePackage): version('develop', git='https://github.com/votca/csg', branch='master') version('1.4', 'd009e761e5e3afd51eed89c420610a67') - variant('debug', default=False, description='Build debug version') - depends_on("cmake@2.8:", type='build') depends_on("votca-tools@1.4:1.4.999", when='@1.4:1.4.999') depends_on("votca-tools@develop", when='@develop') depends_on("gromacs~mpi@5.1:") - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/votca-ctp/package.py b/var/spack/repos/builtin/packages/votca-ctp/package.py index 81586b18e64..8ace1804873 100644 --- a/var/spack/repos/builtin/packages/votca-ctp/package.py +++ b/var/spack/repos/builtin/packages/votca-ctp/package.py @@ -39,16 +39,7 @@ class VotcaCtp(CMakePackage): version('develop', git='https://github.com/votca/ctp', branch='master') - variant('debug', default=False, description='Build debug version') - depends_on("cmake@2.8:", type='build') depends_on("votca-tools@develop", when='@develop') depends_on("votca-csg@develop", when='@develop') depends_on("votca-moo@develop", when='@develop') - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/votca-moo/package.py b/var/spack/repos/builtin/packages/votca-moo/package.py index a596ba1c9c4..dfbef140eb1 100644 --- a/var/spack/repos/builtin/packages/votca-moo/package.py +++ b/var/spack/repos/builtin/packages/votca-moo/package.py @@ -39,14 +39,5 @@ class VotcaMoo(CMakePackage): version('develop', git='https://github.com/votca/moo', branch='master') - variant('debug', default=False, description='Build debug version') - depends_on("cmake@2.8:", type='build') depends_on("votca-tools@develop", when='@develop') - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/votca-tools/package.py b/var/spack/repos/builtin/packages/votca-tools/package.py index 39055c45a3e..d2acac87369 100644 --- a/var/spack/repos/builtin/packages/votca-tools/package.py +++ b/var/spack/repos/builtin/packages/votca-tools/package.py @@ -39,18 +39,9 @@ class VotcaTools(CMakePackage): version('develop', git='https://github.com/votca/tools', branch='master') version('1.4', 'cd47868e9f28e2c7b9d01f95aa0185ca') - variant('debug', default=False, description='Build debug version') - depends_on("cmake@2.8:", type='build') depends_on("expat") depends_on("fftw") depends_on("gsl") depends_on("boost") depends_on("sqlite") - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/votca-xtp/package.py b/var/spack/repos/builtin/packages/votca-xtp/package.py index 951df7b8c6a..80cd4802e38 100644 --- a/var/spack/repos/builtin/packages/votca-xtp/package.py +++ b/var/spack/repos/builtin/packages/votca-xtp/package.py @@ -39,17 +39,8 @@ class VotcaXtp(CMakePackage): version('develop', git='https://github.com/votca/xtp', branch='master') - variant('debug', default=False, description='Build debug version') - depends_on("cmake@2.8:", type='build') depends_on("votca-tools@develop", when='@develop') depends_on("votca-csg@develop", when='@develop') depends_on("votca-ctp@develop", when='@develop') depends_on("votca-moo@develop", when='@develop') - - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' diff --git a/var/spack/repos/builtin/packages/vpic/package.py b/var/spack/repos/builtin/packages/vpic/package.py index e24aa9e5306..43083d813e0 100644 --- a/var/spack/repos/builtin/packages/vpic/package.py +++ b/var/spack/repos/builtin/packages/vpic/package.py @@ -40,18 +40,9 @@ class Vpic(CMakePackage): version('develop', git='https://github.com/lanl/vpic', branch='master', submodules=True) - variant('debug', default=False, description='Build debug version') - depends_on("cmake@3.1:", type='build') depends_on('mpi') - def build_type(self): - spec = self.spec - if '+debug' in spec: - return 'Debug' - else: - return 'Release' - def cmake_args(self): options = ['-DENABLE_INTEGRATED_TESTS=ON', '-DENABLE_UNIT_TESTS=ON'] diff --git a/var/spack/repos/builtin/packages/xsdktrilinos/package.py b/var/spack/repos/builtin/packages/xsdktrilinos/package.py index 0d70baabcd1..cf3d425313c 100644 --- a/var/spack/repos/builtin/packages/xsdktrilinos/package.py +++ b/var/spack/repos/builtin/packages/xsdktrilinos/package.py @@ -45,20 +45,18 @@ class Xsdktrilinos(CMakePackage): description='Compile with PETSc solvers') variant('shared', default=True, description='Enables the build of shared libraries') - variant('debug', default=False, - description='Builds a debug version of the libraries') # MPI related dependencies depends_on('mpi') depends_on('hypre~internal-superlu', when='+hypre') depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0+hypre') - depends_on('hypre@develop~internal-superlu', when='@develop+hypre') + depends_on('hypre@develop~internal-superlu', when='@develop+hypre') depends_on('petsc@xsdk-0.2.0+mpi~complex', when='@xsdk-0.2.0+petsc') - depends_on('petsc@develop+mpi~complex', when='@develop+petsc') + depends_on('petsc@develop+mpi~complex', when='@develop+petsc') depends_on('trilinos@12.6.4', when='@12.6.4') depends_on('trilinos@12.8.1', when='@12.8.1') depends_on('trilinos@xsdk-0.2.0', when='@xsdk-0.2.0') - depends_on('trilinos@develop', when='@develop') + depends_on('trilinos@develop', when='@develop') def url_for_version(self, version): url = "https://github.com/trilinos/xSDKTrilinos/archive/trilinos-release-{0}.tar.gz" @@ -75,8 +73,6 @@ def cmake_args(self): '-DxSDKTrilinos_ENABLE_TESTS:BOOL=ON', '-DxSDKTrilinos_ENABLE_EXAMPLES:BOOL=ON', '-DTrilinos_INSTALL_DIR=%s' % spec['trilinos'].prefix, - '-DCMAKE_BUILD_TYPE:STRING=%s' % ( - 'DEBUG' if '+debug' in spec else 'RELEASE'), '-DBUILD_SHARED_LIBS:BOOL=%s' % ( 'ON' if '+shared' in spec else 'OFF'), '-DTPL_ENABLE_MPI:BOOL=ON', From b62f0962b0f4bf0d31c303789ead30e17a7aa72a Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 26 Jul 2017 10:14:55 -0500 Subject: [PATCH 1331/2394] shortstack: new package (#4905) --- .../builtin/packages/shortstack/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/shortstack/package.py diff --git a/var/spack/repos/builtin/packages/shortstack/package.py b/var/spack/repos/builtin/packages/shortstack/package.py new file mode 100644 index 00000000000..8feb6710139 --- /dev/null +++ b/var/spack/repos/builtin/packages/shortstack/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Shortstack(Package): + """ShortStack is a tool developed to process and analyze smallRNA-seq data + with respect to a reference genome, and output a comprehensive and + informative annotation of all discovered small RNA genes.""" + + homepage = "http://sites.psu.edu/axtell/software/shortstack/" + url = "https://github.com/MikeAxtell/ShortStack/archive/v3.8.3.tar.gz" + + version('3.8.3', '3f21f494f799039f3fa88ea343f2d20d') + + depends_on('perl', type=('build', 'run')) + depends_on('samtools') + depends_on('viennarna') + depends_on('bowtie') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('ShortStack', prefix.bin) From 4ab12fb503eb481957d778d56912aad8fb9c10b6 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Wed, 26 Jul 2017 14:27:29 -0500 Subject: [PATCH 1332/2394] added MPI dependency to Nekbone package (#4903) * removed the tags as per comment in PR# 4749 * addressed above comments * changed fortran compiler. * added proxy application tags. * added tags by removing them from description. * addressed comments * used join_path instead of path concat. * removed the tags as per comment in PR# 4749 * addressed above comments * changed fortran compiler. * added proxy application tags. * added tags by removing them from description. * addressed comments * used join_path instead of path concat. * added tags. * changes to use MPI as depedency. * removed MPI as variant. * changed pointer to filtered makenek file. * flake 8 fix. --- var/spack/repos/builtin/packages/nekbone/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/nekbone/package.py b/var/spack/repos/builtin/packages/nekbone/package.py index 7d2b61f038c..22d07661e5f 100644 --- a/var/spack/repos/builtin/packages/nekbone/package.py +++ b/var/spack/repos/builtin/packages/nekbone/package.py @@ -39,6 +39,8 @@ class Nekbone(Package): version('develop', git='https://github.com/ANL-CESAR/nekbone.git') + depends_on('mpi') + def install(self, spec, prefix): working_dirs = ['example1', 'example2', 'example3', 'nek_comm', @@ -47,6 +49,9 @@ def install(self, spec, prefix): for wdir in working_dirs: with working_dir('test/' + wdir): + makenec = FileFilter('makenek') + makenec.filter('CC.*', 'CC=' + self.spec['mpi'].mpicc) + makenec.filter('FF77.*', 'FF77=' + self.spec['mpi'].mpif77) makenek = Executable('./makenek') path = join_path(prefix.bin, wdir) makenek('ex1', '../../src') From 6e99e2c58e47315b8420d507266f7bf1483b25f2 Mon Sep 17 00:00:00 2001 From: Robert Pavel Date: Wed, 26 Jul 2017 16:42:26 -0600 Subject: [PATCH 1333/2394] Updated Namespace of BML Repository (#4910) --- var/spack/repos/builtin/packages/bml/package.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/bml/package.py b/var/spack/repos/builtin/packages/bml/package.py index fe1e21a8de5..68e62032e4c 100644 --- a/var/spack/repos/builtin/packages/bml/package.py +++ b/var/spack/repos/builtin/packages/bml/package.py @@ -30,11 +30,11 @@ class Bml(CMakePackage): formats (in dense and sparse) and their associated algorithms for basic matrix operations.""" - homepage = "https://github.com/qmmd/bml" - url = "https://github.com/qmmd/bml" + homepage = "https://github.com/lanl/bml" + url = "https://github.com/lanl/bml" - version('develop', git='https://github.com/qmmd/bml', branch='master') - version('1.1.0', git='https://github.com/qmmd/bml', tag='v1.1.0') + version('develop', git='https://github.com/lanl/bml', branch='master') + version('1.1.0', git='https://github.com/lanl/bml', tag='v1.1.0') depends_on("blas") depends_on("lapack") From b33f92da34ba122d24111a5d531e10e4d576d9ac Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 26 Jul 2017 17:43:54 -0500 Subject: [PATCH 1334/2394] Improve version detection for URLs with dynamic after version (#4902) --- lib/spack/spack/test/url_parse.py | 4 +++- lib/spack/spack/url.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index 6789bc0aa3a..41a2fda649d 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -107,7 +107,9 @@ # Combinations of multiple patterns - public ('dakota-6.3-public.src', 'dakota-6.3'), # Combinations of multiple patterns - universal - ('synergy-1.3.6p2-MacOSX-Universal', 'synergy-1.3.6p2') + ('synergy-1.3.6p2-MacOSX-Universal', 'synergy-1.3.6p2'), + # Combinations of multiple patterns - dynamic + ('snptest_v2.5.2_linux_x86_64_dynamic', 'snptest_v2.5.2'), ]) def test_url_strip_version_suffixes(url, expected): stripped = strip_version_suffixes(url) diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index d29ce3d07f8..e3da753a76a 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -177,6 +177,7 @@ def strip_version_suffixes(path): '[Uu]niversal', 'jar', 'complete', + 'dynamic', 'oss', 'gem', 'tar', From 70a089287ecb7ed5fe92784ed5045b7a15285d4c Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 26 Jul 2017 17:44:15 -0500 Subject: [PATCH 1335/2394] snptest: new package (#4900) * snptest: new package * fixed version things * fixed install phase --- .../repos/builtin/packages/snptest/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/snptest/package.py diff --git a/var/spack/repos/builtin/packages/snptest/package.py b/var/spack/repos/builtin/packages/snptest/package.py new file mode 100644 index 00000000000..a60a15d0548 --- /dev/null +++ b/var/spack/repos/builtin/packages/snptest/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Snptest(Package): + """SNPTEST is a program for the analysis of single SNP association in + genome-wide studies.""" + + homepage = "https://mathgen.stats.ox.ac.uk/genetics_software/snptest/snptest.html" + url = "http://www.well.ox.ac.uk/~gav/resources/snptest_v2.5.2_linux_x86_64_dynamic.tgz" + + version('2.5.2', 'e3f2cc0351f260cf29369dc4f79a660a') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('snptest_v{0}'.format(self.version), prefix.bin) From ddc1dcd084458ad6bd470b4ba6b30dc380d9ddb8 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 27 Jul 2017 15:51:39 +0200 Subject: [PATCH 1336/2394] openblas: add 0.2.20 (#4915) --- var/spack/repos/builtin/packages/openblas/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index d79e2c27f8d..5afbd1e325d 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -33,6 +33,7 @@ class Openblas(MakefilePackage): homepage = 'http://www.openblas.net' url = 'http://github.com/xianyi/OpenBLAS/archive/v0.2.19.tar.gz' + version('0.2.20', '48637eb29f5b492b91459175dcc574b1') version('0.2.19', '28c998054fd377279741c6f0b9ea7941') version('0.2.18', '805e7f660877d588ea7e3792cda2ee65') version('0.2.17', '664a12807f2a2a7cda4781e3ab2ae0e1') From 31a329d237b51638da16d4fd3641b5aad2af130e Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Thu, 27 Jul 2017 10:59:30 -0500 Subject: [PATCH 1337/2394] New Package: RSbench (#4752) * New Package: RSbench * minor change * removed tags as per PR# 4749 * addressed comments and added gcc compiler. * added proxy app tags to description. * removed setting CC to pgicc through spec. * removed compiler as depedency * removed pgi variant. * flake 8 fix. * added mpi depedency with pgi compiler * added pgi compiler * removed PGI compiler as depedency. * added tags and addressed other code formattings. * added tags and addressed other code formattings. * addressed comments. --- .../repos/builtin/packages/rsbench/package.py | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 var/spack/repos/builtin/packages/rsbench/package.py diff --git a/var/spack/repos/builtin/packages/rsbench/package.py b/var/spack/repos/builtin/packages/rsbench/package.py new file mode 100644 index 00000000000..7e4027d2d4e --- /dev/null +++ b/var/spack/repos/builtin/packages/rsbench/package.py @@ -0,0 +1,66 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Rsbench(MakefilePackage): + """A mini-app to represent the multipole resonance representation lookup + cross section algorithm.""" + + homepage = "https://github.com/ANL-CESAR/RSBench" + url = "https://github.com/ANL-CESAR/RSBench/archive/v2.tar.gz" + + version('2', '15a3ac5ea72529ac1ed9ed016ee68b4f') + version('0', '3427634dc5e7cd904d88f9955b371757') + + tags = ['proxy-app'] + + build_directory = 'src' + + @property + def build_targets(self): + targets = [] + + cflags = '-std=gnu99' + ldflags = '-lm' + + if self.compiler.name == 'gcc': + cflags += ' -ffast-math ' + elif self.compiler.name == 'intel': + cflags += ' -xhost -ansi-alias -no-prec-div ' + elif self.compiler.name == 'pgi': + cflags += ' -fastsse ' + + cflags += self.compiler.openmp_flag + + targets.append('CFLAGS={0}'.format(cflags)) + targets.append('LDFLAGS={0}'.format(ldflags)) + + return targets + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('src/rsbench', prefix.bin) From 99cac0bf94a16a82bd455bdcf1ab8f2a4a175949 Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Thu, 27 Jul 2017 11:06:44 -0500 Subject: [PATCH 1338/2394] Fix for Krell openspeedshop spack package bug. New multi-value variant for GUI build. (#4880) * Update the krell institute products to use the latest features of spack for building on cluster platforms. * Address travis error messages and resubmit the pull request. * Update the contents of openspeedshop package.py so it passes the flake8 tests. * Fix flake8 error-whitespack issue in mrnet package.py file. * Add updates based on spack reviewer feedback. * More fixes based on comments from reviewers. Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH. * More review related changes. Update MPIOption.append lines and take out xercesc references. * Create a base options function for common openspeedshop base cmake options to reduce redundencies. * Add libxml2+python depends on to get around issues with the libxml2 package file. * Using boost over 1.60.0 causes compile errors. This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build. * Fix bad syntax in specifying the boost version range. * Update the version numbers for the krell institute components and tools: cbtf and openspeedshop. * Do not build glib for qt3, it is not needed and causes build problems at this time anyway. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Trim comments to fit more concisely. * Fix tabs versus spaces and swap if and else clause check from a negative to a positive check. * Fix issues with the cbtf-argonavis build, update to use dyninst-9.3.2, fixes to openspeedshop package build. * Fix issues with the cbtf-argonavis package.py files related to comments. * Add changes for changing the krell packages from Package to CMakePackage. * Add better changes for changing the krell packages from Package to CMakePackage. * Add more modifications for changing the krell packages from Package to CMakePackage. * Add additional modifications for changing the krell packages from Package to CMakePackage and fixing Travis erros * Fix new travis errors. * Fix new travis errors. * Add more changes for PR 4765. * Add more refinements to the conversion from Package to CMakePackage. * Fix new travis errors. * Add dependencies for MPI to be passed to cbtf-krell, so it can build the MPI collectors requested by the builder of openspeedshop. * Remove extra unnecessary routine to adjust build arguments. Fix if-else clause issue. * Fix more flake issues caused by last changes. * Fix a bug where openspeedshop will not build when no mpi variants are specified. Also switch to a multiple level variant for building the gui(s). Use none, qt3, and qt4 as the variants with qt3 being the default. * Add fix for spack issue #4843, where LTDL include files were not found. * Add the build_type variant back into the openspeedshop package file. --- .../builtin/packages/openspeedshop/package.py | 96 ++++++++----------- 1 file changed, 39 insertions(+), 57 deletions(-) diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index f4c0029d726..95971af10e0 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -77,12 +77,11 @@ class Openspeedshop(CMakePackage): to point to target build.") variant('cuda', default=False, description="build with cuda packages included.") - variant('useqt4gui', default=False, - description="build with Qt4/Qt5 based gui package enabled. \ - Do not build older Qt3 gui") - variant('rtfe', default=False, - description="build for clusters heterogeneous processors \ - on fe/be nodes.") + + variant('gui', default='qt3', values=('none', 'qt3', 'qt4'), + description='Build or not build a GUI of choice' + ) + variant('build_type', default='None', values=('None'), description='CMake build type') @@ -109,6 +108,7 @@ class Openspeedshop(CMakePackage): depends_on("cmake@3.0.2:", type='build') # Dependencies for openspeedshop that are common to all # the variants of the OpenSpeedShop build + depends_on("libtool", type='build') depends_on("bison", type='build') depends_on("flex", type='build') depends_on("binutils@2.24+krellpatch", type='build') @@ -118,7 +118,9 @@ class Openspeedshop(CMakePackage): depends_on("boost@1.50.0:1.59.0") depends_on("dyninst@9.3.2") depends_on("libxml2+python") - depends_on("qt@3.3.8b+krellpatch", when='~useqt4gui') + depends_on("qt@3.3.8b+krellpatch", when='gui=qt3') + # Actively working on adding this gui package + # depends_on("cbtf-argonavis-gui", when='gui=qt4') # Dependencies only for the openspeedshop offline package. depends_on("libunwind", when='+offline') @@ -133,6 +135,7 @@ class Openspeedshop(CMakePackage): # Dependencies only for the openspeedshop cbtf package. depends_on("cbtf", when='+cbtf') + depends_on('cbtf-krell', when='+cbtf') depends_on('cbtf-krell+mpich', when='+cbtf+mpich') depends_on('cbtf-krell+mpich2', when='+cbtf+mpich2') depends_on('cbtf-krell+mpt', when='+cbtf+mpt') @@ -151,9 +154,9 @@ def cmake_args(self): compile_flags = "-O2 -g" if '+offline' in spec: + # Indicate building offline vers (writes rawdata files) instrumentor_setting = "offline" if '+runtime' in spec: - cmake_args = [ '-DCMAKE_CXX_FLAGS=%s' % compile_flags, '-DCMAKE_C_FLAGS=%s' % compile_flags, @@ -174,78 +177,57 @@ def cmake_args(self): cmake_args.extend( ['-DCMAKE_CXX_FLAGS=%s' % compile_flags, '-DCMAKE_C_FLAGS=%s' % compile_flags, - '-DINSTRUMENTOR=%s' - % instrumentor_setting, - '-DLIBMONITOR_DIR=%s' - % spec['libmonitor'].prefix, - '-DLIBUNWIND_DIR=%s' - % spec['libunwind'].prefix, - '-DPAPI_DIR=%s' - % spec['papi'].prefix, - '-DSQLITE3_DIR=%s' - % spec['sqlite'].prefix, - '-DQTLIB_DIR=%s' - % spec['qt'].prefix]) + '-DINSTRUMENTOR=%s' % instrumentor_setting, + '-DLIBMONITOR_DIR=%s' % spec['libmonitor'].prefix, + '-DLIBUNWIND_DIR=%s' % spec['libunwind'].prefix, + '-DPAPI_DIR=%s' % spec['papi'].prefix, + '-DSQLITE3_DIR=%s' % spec['sqlite'].prefix, + '-DQTLIB_DIR=%s' % spec['qt'].prefix]) # Add any MPI implementations coming from variant settings self.set_mpi_cmakeOptions(spec, cmake_args) elif '+cbtf' in spec: + # Indicate building cbtf vers (transfer rawdata files) instrumentor_setting = "cbtf" if '+runtime' in spec: - # Appends base options to cmake_args self.set_defaultbase_cmakeOptions(spec, cmake_args) cmake_args.extend( ['-DCMAKE_CXX_FLAGS=%s' % compile_flags, '-DCMAKE_C_FLAGS=%s' % compile_flags, - '-DINSTRUMENTOR=%s' - % instrumentor_setting, - '-DCBTF_DIR=%s' - % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' - % spec['cbtf-krell'].prefix, - '-DMRNET_DIR=%s' - % spec['mrnet'].prefix]) + '-DINSTRUMENTOR=%s' % instrumentor_setting, + '-DCBTF_DIR=%s' % spec['cbtf'].prefix, + '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, + '-DMRNET_DIR=%s' % spec['mrnet'].prefix]) else: cmake_args = [] # Appends base options to cmake_args self.set_defaultbase_cmakeOptions(spec, cmake_args) + guitype = self.spec.variants['gui'].value + cmake_args.extend( + ['-DCMAKE_CXX_FLAGS=%s' % compile_flags, + '-DCMAKE_C_FLAGS=%s' % compile_flags, + '-DINSTRUMENTOR=%s' % instrumentor_setting, + '-DSQLITE3_DIR=%s' % spec['sqlite'].prefix, + '-DCBTF_DIR=%s' % spec['cbtf'].prefix, + '-DCBTF_KRELL_DIR=%s' % spec['cbtf-krell'].prefix, + '-DMRNET_DIR=%s' % spec['mrnet'].prefix]) - if '+useqt4gui' in self.spec: + if guitype == 'none': cmake_args.extend( - ['-DCMAKE_CXX_FLAGS=%s' % compile_flags, - '-DCMAKE_C_FLAGS=%s' % compile_flags, - '-DINSTRUMENTOR=%s' - % instrumentor_setting, - '-DSQLITE3_DIR=%s' - % spec['sqlite'].prefix, - '-DCBTF_DIR=%s' - % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' - % spec['cbtf-krell'].prefix, - '-DMRNET_DIR=%s' - % spec['mrnet'].prefix]) - else: + ['-DBUILD_QT3_GUI=FALSE']) + elif guitype == 'qt4': cmake_args.extend( - ['-DCMAKE_CXX_FLAGS=%s' % compile_flags, - '-DCMAKE_C_FLAGS=%s' % compile_flags, - '-DINSTRUMENTOR=%s' - % instrumentor_setting, - '-DSQLITE3_DIR=%s' - % spec['sqlite'].prefix, - '-DCBTF_DIR=%s' - % spec['cbtf'].prefix, - '-DCBTF_KRELL_DIR=%s' - % spec['cbtf-krell'].prefix, - '-DQTLIB_DIR=%s' - % spec['qt'].prefix, - '-DMRNET_DIR=%s' - % spec['mrnet'].prefix]) + ['-DBUILD_QT3_GUI=FALSE']) + elif guitype == 'qt3': + cmake_args.extend( + ['-DQTLIB_DIR=%s' + % spec['qt'].prefix]) return cmake_args From ce601a9304885f64b77116cb3e7c6d89a8939ab3 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Thu, 27 Jul 2017 14:24:28 -0500 Subject: [PATCH 1339/2394] New Package: lcals (#4792) * New Pacakge: lcals * added logic for arch detection and compiler choice. * fixes for comments. * addressed comments. * removed LCALS_ARCH and added flags though spack. * addressed comments. * flake 8 fix. * reerted the changes along with comments. --- .../repos/builtin/packages/lcals/package.py | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 var/spack/repos/builtin/packages/lcals/package.py diff --git a/var/spack/repos/builtin/packages/lcals/package.py b/var/spack/repos/builtin/packages/lcals/package.py new file mode 100644 index 00000000000..c34907472a2 --- /dev/null +++ b/var/spack/repos/builtin/packages/lcals/package.py @@ -0,0 +1,122 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * +import platform + + +class Lcals(MakefilePackage): + """LCALS ("Livermore Compiler Analysis Loop Suite") is a collection of loop + kernels based, in part, on historical "Livermore Loops" benchmarks + (See the 1986 technical report: "The Livermore Fortran Kernels: + A Computer Test of the Numerical Performance Range", + by Frank H. McMahon, UCRL-53745.). The suite contains facilities to + generate timing statistics and reports.""" + + homepage = "https://codesign.llnl.gov/LCALS-downloads/" + url = "https://codesign.llnl.gov/LCALS-downloads/lcals-v1.0.2.tgz" + + tags = ['proxy-app'] + + version('1.0.2', '40c65a88f1df1436a2f72b7d3c986a21') + + variant( + 'microarch', + description='Micro arch: SSE, AVX, MIC.', + default='sse', + values=('sse', 'avx', 'MIC'), + ) + + @property + def build_targets(self): + + targets = [] + + cxxflags = '-std=c++0x ' + cxx_compile = '' + + microarch = self.spec.variants['microarch'].value + + arch = platform.machine() + + if microarch == 'MIC': + arch = 'MIC' + elif arch == 'x86_64' or arch == 'x86_32': + arch = 'x86' + elif arch != 'bgq': + raise InstallError('unknown architecture.') + + if self.compiler.name == 'intel': + if arch == 'MIC': + cxxflags += '-DLCALS_PLATFORM_X86_SSE -DLCALS_COMPILER_ICC ' + cxx_compile += '-g -O3 -mmic -vec-report3 ' + ' -inline-max-total-size=10000 -inline-forceinline -ansi-alias' + elif microarch == 'sse' and arch == 'x86': + cxxflags += '-DLCALS_PLATFORM_X86_SSE -DLCALS_COMPILER_ICC ' + cxx_compile += '-O3 -msse4.1 -inline-max-total-size=10000' + ' -inline-forceinline -ansi-alias -std=c++0x ' + elif microarch == 'avx' and arch == 'x86': + cxxflags += '-DLCALS_PLATFORM_X86_AVX -DLCALS_COMPILER_ICC ' + cxx_compile += '-O3 -mavx -inline-max-total-size=10000' + ' -inline-forceinline -ansi-alias -std=c++0x' + cxxflags += self.compiler.openmp_flag + elif self.compiler.name == 'gcc': + if arch == 'MIC' or (microarch == 'sse' and arch == 'x86'): + cxxflags += '-DLCALS_PLATFORM_X86_SSE -DLCALS_COMPILER_GNU ' + cxx_compile += '-Ofast -msse4.1 -finline-functions' + ' -finline-limit=10000 -std=c++11 ' + elif microarch == 'avx' and arch == 'x86': + cxxflags += '-DLCALS_PLATFORM_X86_AVX -DLCALS_COMPILER_GNU ' + cxx_compile += '-Ofast -mavx -finline-functions' + ' -finline-limit=10000 -std=c++11' + elif arch == 'bgq': + cxxflags += '-DLCALS_PLATFORM_BGQ -DLCALS_COMPILER_GNU ' + cxx_compile += '-O3 -finline-functions -finline-limit=10000' + ' -std=c++0x' + cxxflags += self.compiler.openmp_flag + elif self.compiler.name == 'xl' and arch == 'bgp': + if self.compiler.version == Version('9') and arch == 'bgp': + cxxflags += '-DLCALS_PLATFORM_BGP -DLCALS_COMPILER_XLC9 ' + cxx_compile += 'O3 -qarch=450d -qtune=450 -qalias=allp -qhot' + ' -qsmp=omp ' + elif self.compiler.version == Version('12') and arch == 'bgq': + cxxflags += '-DLCALS_PLATFORM_BGQ -DLCALS_COMPILER_XLC12 ' + cxx_compile += '-O3 -qarch=qp -qhot=novector -qsimd=auto' + ' -qlanglvl=extended0x -qnostrict -qinline=10000 -qsmp=omp ' + elif self.compiler.name == 'clang': + if arch == 'bgq': + cxxflags += '-DLCALS_PLATFORM_BGQ -DLCALS_COMPILER_CLANG ' + cxx_compile += '-O3 -finline-functions -ffast-math -std=c++0x' + + targets.append('LCALS_ARCH=') + cxx_compile += ' ' + cxxflags + targets.append('CXX_COMPILE={0} {1}'.format(spack_cxx, cxx_compile)) + + return targets + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('lcals.exe', prefix.bin) + install('lcalsversioninfo.txt', prefix) From 6bdc373100da03a775698f1cfdcdfd2fa401e88e Mon Sep 17 00:00:00 2001 From: Akhil Reddy Patlolla Date: Thu, 27 Jul 2017 15:56:59 -0500 Subject: [PATCH 1340/2394] Added Proxy App tag (#4917) * Added Proxy App tag * NO changes except proxy app tag --- var/spack/repos/builtin/packages/kripke/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/kripke/package.py b/var/spack/repos/builtin/packages/kripke/package.py index 1be19448a9b..9d630f12067 100644 --- a/var/spack/repos/builtin/packages/kripke/package.py +++ b/var/spack/repos/builtin/packages/kripke/package.py @@ -32,6 +32,7 @@ class Kripke(Package): homepage = "https://codesign.llnl.gov/kripke.php" url = "https://codesign.llnl.gov/downloads/kripke-openmp-1.1.tar.gz" + tags = ['proxy-app'] version('1.1', '7fe6f2b26ed983a6ce5495ab701f85bf') variant('mpi', default=True, description='Build with MPI.') From 78d7587c937b7bc711be0973a9f15a88b40446fa Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 27 Jul 2017 15:07:47 -0600 Subject: [PATCH 1341/2394] bml: fix homepage (#4918) --- var/spack/repos/builtin/packages/bml/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/bml/package.py b/var/spack/repos/builtin/packages/bml/package.py index 68e62032e4c..1c91b6fff25 100644 --- a/var/spack/repos/builtin/packages/bml/package.py +++ b/var/spack/repos/builtin/packages/bml/package.py @@ -30,7 +30,7 @@ class Bml(CMakePackage): formats (in dense and sparse) and their associated algorithms for basic matrix operations.""" - homepage = "https://github.com/lanl/bml" + homepage = "http://lanl.github.io/bml/" url = "https://github.com/lanl/bml" version('develop', git='https://github.com/lanl/bml', branch='master') From c5d2206206a77300515467dfcd9195a776b6bda6 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Thu, 27 Jul 2017 15:22:29 -0600 Subject: [PATCH 1342/2394] Adding QWT package. (#4911) * Adding QWT package. * Using builtin file filtering. * Formatting. --- .../repos/builtin/packages/qwt/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/qwt/package.py diff --git a/var/spack/repos/builtin/packages/qwt/package.py b/var/spack/repos/builtin/packages/qwt/package.py new file mode 100644 index 00000000000..111ba034c75 --- /dev/null +++ b/var/spack/repos/builtin/packages/qwt/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Qwt(Package): + """The Qwt library contains GUI Components and utility classes which are + primarily useful for programs with a technical background. Beside a + framework for 2D plots it provides scales, sliders, dials, compasses, + thermometers, wheels and knobs to control or display values, arrays, or + ranges of type double. + """ + homepage = "http://qwt.sourceforge.net/" + url = "https://downloads.sourceforge.net/project/qwt/qwt/5.2.2/qwt-5.2.2.tar.bz2" + + version('5.2.2', '70d77e4008a6cc86763737f0f24726ca') + + depends_on("qt") + + def install(self, spec, prefix): + + # Subvert hardcoded prefix + filter_file(r'/usr/local/qwt-\$\$VERSION', prefix, 'qwtconfig.pri') + + qmake = which('qmake') + qmake() + make() + make("install") From 92ea7c43375c3c25e712e0b7c3bc8e9dab02b832 Mon Sep 17 00:00:00 2001 From: sknigh Date: Fri, 28 Jul 2017 09:32:53 -0700 Subject: [PATCH 1343/2394] Fix for m4%clang (#4912) * Fix for m4%clang * Restricted condition to not subsitute rtlib on OSX --- var/spack/repos/builtin/packages/m4/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index c01828d720f..550e3067124 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -48,6 +48,9 @@ def configure_args(self): spec = self.spec args = ['--enable-c++'] + if spec.satisfies('%clang') and not spec.satisfies('platform=darwin'): + args.append('CFLAGS=-rtlib=compiler-rt') + if '+sigsegv' in spec: args.append('--with-libsigsegv-prefix={0}'.format( spec['libsigsegv'].prefix)) From f7c24289e58f729c6fda2ac75a4846518b01feae Mon Sep 17 00:00:00 2001 From: Robert Pavel Date: Fri, 28 Jul 2017 16:10:24 -0600 Subject: [PATCH 1344/2394] Initial Spackage for qmd-progress library (#4924) * Initial Spackage for qmd-progress library PROGRESS is a library is focused on the development of general solvers that are commonly used in quantum chemistry packages. * Removed LA-CC from description to fix formatting * Added Additional Formatting Requests Added requested formatting changes and also ensured that graphlib and mpi are disabled if not enabled --- .../builtin/packages/qmd-progress/package.py | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/qmd-progress/package.py diff --git a/var/spack/repos/builtin/packages/qmd-progress/package.py b/var/spack/repos/builtin/packages/qmd-progress/package.py new file mode 100644 index 00000000000..09bb45e1a90 --- /dev/null +++ b/var/spack/repos/builtin/packages/qmd-progress/package.py @@ -0,0 +1,62 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class QmdProgress(CMakePackage): + """PROGRESS: Parallel, Rapid O(N) and Graph-based Recursive Electronic + Structure Solver. + This library is focused on the development of general solvers that are + commonly used in quantum chemistry packages.""" + + homepage = "https://github.com/lanl/qmd-progress" + url = "https://github.com/lanl/qmd-progress" + + version('develop', git='https://github.com/lanl/qmd-progress', branch='master') + version('1.0.0', git='https://github.com/lanl/qmd-progress', tag='v1.0.0') + + variant('graphlib', default=False, description='Build with Metis Suppport') + variant('mpi', default=True, description='Build with MPI Support') + + depends_on('bml') + depends_on('mpi', when='+mpi') + depends_on('metis', when='+graphlib') + + def cmake_args(self): + spec = self.spec + args = ['-DCMAKE_Fortran_FLAGS=-ffree-line-length-none'] + if '+mpi' in spec: + args.append('-DPROGRESS_MPI=yes') + args.append('-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc) + args.append('-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx) + args.append('-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc) + else: + args.append('-DPROGRESS_MPI=no') + if '+graphlib' in spec: + args.append('-DPROGRESS_GRAPHLIB=yes') + else: + args.append('-DPROGRESS_GRAPHLIB=no') + + return args From 6d97397ab00d4b73334bb44fa9e5541a8998dde6 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 31 Jul 2017 17:06:17 +0200 Subject: [PATCH 1345/2394] gBenchmark: v1.2.0 (#4935) Adds a the latest version of gBenchmark, release 1.2.0. This is the first gBenchmark version with proper [CMake config package installs](https://github.com/google/benchmark/issues/363). This is important for dependencies building against it, such as gRPC. --- var/spack/repos/builtin/packages/benchmark/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py index 4101b0e9e09..3969781112c 100644 --- a/var/spack/repos/builtin/packages/benchmark/package.py +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -34,6 +34,9 @@ class Benchmark(CMakePackage): version('develop', branch='master', git='https://github.com/google/benchmark.git') + # first properly installed CMake config packages in + # 1.2.0 release: https://github.com/google/benchmark/issues/363 + version('1.2.0', '48d0b090cd7a84af2c4a28c8dc963c74') version('1.1.0', '66b2a23076cf70739525be0092fc3ae3') version('1.0.0', '1474ff826f8cd68067258db75a0835b8') From c126c5553c81c1ab150b4ccefd6cba7507f20530 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Mon, 31 Jul 2017 09:17:04 -0700 Subject: [PATCH 1346/2394] zsh: add variant that skips tcsetpgrp test (#4923) zsh's configure script fails if there's it tries to test for terminal functionality if there's not a terminal (e.g. in a Jenkins build). The configure script has a switch that asserts that tcsetpgrp works and thereby avoids running that test. This commit adds a variant that invokes that switch, defaulting to True. --- var/spack/repos/builtin/packages/zsh/package.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py index 7a298d16b51..72254183632 100644 --- a/var/spack/repos/builtin/packages/zsh/package.py +++ b/var/spack/repos/builtin/packages/zsh/package.py @@ -37,5 +37,21 @@ class Zsh(AutotoolsPackage): version('5.3.1', checksum='d583fbca0c2410bf9542ce8a651c26ca') version('5.1.1', checksum='8ba28a9ef82e40c3a271602f18343b2f') + # Testing for terminal related things causes failures in e.g. Jenkins. + # See e.g. https://www.zsh.org/mla/users/2003/msg00845.html, + # although the name of the option has evolved since then. + variant('skip-tcsetpgrp-test', default=True, + description="Skip configure's tcsetpgrp test") + depends_on("pcre") depends_on("ncurses") + + def configure_args(self): + if '+skip-tcsetpgrp-test' in self.spec: + # assert that we have a functional tcsetpgrp + args = ['--with-tcsetpgrp'] + else: + # let configure run it's test and see what's what + args = [] + + return args From a9efae271b74f13c406ea9e8cfd9fb745963a388 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 31 Jul 2017 12:35:48 -0500 Subject: [PATCH 1347/2394] Add latest version of apr (#4931) --- var/spack/repos/builtin/packages/apr/package.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/apr/package.py b/var/spack/repos/builtin/packages/apr/package.py index 53a3c1e59b9..45b000854ec 100644 --- a/var/spack/repos/builtin/packages/apr/package.py +++ b/var/spack/repos/builtin/packages/apr/package.py @@ -25,15 +25,11 @@ from spack import * -class Apr(Package): +class Apr(AutotoolsPackage): """Apache portable runtime.""" + homepage = 'https://apr.apache.org/' - url = 'http://archive.apache.org/dist/apr/apr-1.5.2.tar.gz' + url = 'http://archive.apache.org/dist/apr/apr-1.6.2.tar.gz' - version('1.5.2', '98492e965963f852ab29f9e61b2ad700') - - def install(self, spec, prefix): - options = ['--prefix=%s' % prefix] - configure(*options) - make() - make('install') + version('1.6.2', '8672e78514e3fcef2643127c524bf0f9') + version('1.5.2', '98492e965963f852ab29f9e61b2ad700') From 0aaab9bc8c361089c032c28f6a11b55fab06a020 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 31 Jul 2017 12:36:18 -0500 Subject: [PATCH 1348/2394] Add latest version of expat (#4930) --- var/spack/repos/builtin/packages/expat/package.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index 8f85c2914be..66b04419b04 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -27,7 +27,9 @@ class Expat(AutotoolsPackage): """Expat is an XML parser library written in C.""" - homepage = "http://expat.sourceforge.net/" - url = "http://downloads.sourceforge.net/project/expat/expat/2.2.0/expat-2.2.0.tar.bz2" + homepage = "http://expat.sourceforge.net/" + url = "https://sourceforge.net/projects/expat/files/expat/2.2.2/expat-2.2.2.tar.bz2" + + version('2.2.2', '1ede9a41223c78528b8c5d23e69a2667') version('2.2.0', '2f47841c829facb346eb6e3fab5212e2') From 1f5ca90929e16848cbe862780d9b2c1236c7d339 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 31 Jul 2017 12:44:33 -0500 Subject: [PATCH 1349/2394] Add missing dependencies to unixodbc (#4928) --- var/spack/repos/builtin/packages/unixodbc/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/unixodbc/package.py b/var/spack/repos/builtin/packages/unixodbc/package.py index df7c80b2bdf..a1ca765a569 100644 --- a/var/spack/repos/builtin/packages/unixodbc/package.py +++ b/var/spack/repos/builtin/packages/unixodbc/package.py @@ -34,3 +34,6 @@ class Unixodbc(AutotoolsPackage): url = "http://www.unixodbc.org/unixODBC-2.3.4.tar.gz" version('2.3.4', 'bd25d261ca1808c947cb687e2034be81') + + depends_on('libiconv') + depends_on('libtool') From 751f1d4fca666e27c426f49364d5e0a1f80db462 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 31 Jul 2017 19:54:06 +0200 Subject: [PATCH 1350/2394] ZeroMQ: C++ Headers (cppzmq) (#4841) Adds the cppzmq library, adding a C++ API to ZeroMQ (libzmq). In order to find the autotools-build libzmq, this requires the upcoming cppzmq release (or development branch). --- .../repos/builtin/packages/cppzmq/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cppzmq/package.py diff --git a/var/spack/repos/builtin/packages/cppzmq/package.py b/var/spack/repos/builtin/packages/cppzmq/package.py new file mode 100644 index 00000000000..3a51038b506 --- /dev/null +++ b/var/spack/repos/builtin/packages/cppzmq/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cppzmq(CMakePackage): + """C++ binding for 0MQ""" + + homepage = "http://www.zeromq.org" + url = "https://github.com/zeromq/cppzmq/archive/v4.2.2.tar.gz" + + version('develop', branch='master', + git='https://github.com/zeromq/cppzmq.git') + + version('4.2.2', 'bd809b47296e77fe9f192bd9dafd5cc3') + + depends_on('cmake@3.0.0:', type='build') + depends_on('zeromq@4.2.2') From f3c70c235c3a1ef12b3fc9f35458e42228231016 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 31 Jul 2017 12:57:56 -0500 Subject: [PATCH 1351/2394] Add latest version of SCons (#4929) --- var/spack/repos/builtin/packages/scons/package.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/scons/package.py b/var/spack/repos/builtin/packages/scons/package.py index 5bf35c071c5..6b65528f3c8 100644 --- a/var/spack/repos/builtin/packages/scons/package.py +++ b/var/spack/repos/builtin/packages/scons/package.py @@ -27,7 +27,12 @@ class Scons(PythonPackage): """SCons is a software construction tool""" - homepage = "http://scons.org" - url = "http://downloads.sourceforge.net/project/scons/scons/2.5.0/scons-2.5.0.tar.gz" - version('2.5.0', '9e00fa0df8f5ca5c5f5975b40e0ed354') + homepage = "http://scons.org" + url = "https://pypi.io/packages/source/s/scons/scons-2.5.1.tar.gz" + + version('2.5.1', '3eac81e5e8206304a9b4683c57665aa4') + version('2.5.0', 'bda5530a70a41a7831d83c8b191c021e') + + # Python 3 is not supported + depends_on('python@:2.8', type=('build', 'run')) From 1c7e5724d9ff90b27f31faffd712867520e400c6 Mon Sep 17 00:00:00 2001 From: paulhopkins Date: Mon, 31 Jul 2017 20:57:47 +0100 Subject: [PATCH 1352/2394] Add --color=[always|never|auto] argument; fix color when piping (#3013) * Disable spec colorization when redirecting stdout and add command line flag to re-enable * Add command line `--color` flag to control output colorization * Add options to `llnl.util.tty.color` to allow color to be auto/always/never * Add `Spec.cformat()` function to be used when `format()` should have auto-coloring --- lib/spack/llnl/util/tty/color.py | 60 ++++++++++++++++++++++++++--- lib/spack/spack/cmd/__init__.py | 12 +++--- lib/spack/spack/cmd/dependents.py | 2 +- lib/spack/spack/cmd/mirror.py | 2 +- lib/spack/spack/cmd/module.py | 5 ++- lib/spack/spack/cmd/spec.py | 3 +- lib/spack/spack/cmd/uninstall.py | 3 +- lib/spack/spack/database.py | 8 ++-- lib/spack/spack/directory_layout.py | 4 +- lib/spack/spack/main.py | 8 +++- lib/spack/spack/mirror.py | 8 ++-- lib/spack/spack/package.py | 12 +++--- lib/spack/spack/spec.py | 20 ++++++---- share/spack/spack-completion.bash | 3 +- 14 files changed, 105 insertions(+), 45 deletions(-) diff --git a/lib/spack/llnl/util/tty/color.py b/lib/spack/llnl/util/tty/color.py index fc3b697827e..a39b5b95f85 100644 --- a/lib/spack/llnl/util/tty/color.py +++ b/lib/spack/llnl/util/tty/color.py @@ -80,6 +80,7 @@ """ import re import sys +from contextlib import contextmanager class ColorParseError(Exception): @@ -107,15 +108,62 @@ def __init__(self, message): # Regex to be used for color formatting color_re = r'@(?:@|\.|([*_])?([a-zA-Z])?(?:{((?:[^}]|}})*)})?)' +# Mapping from color arguments to values for tty.set_color +color_when_values = { + 'always': True, + 'auto': None, + 'never': False +} -# Force color even if stdout is not a tty. -_force_color = False +# Force color; None: Only color if stdout is a tty +# True: Always colorize output, False: Never colorize output +_force_color = None + + +def _color_when_value(when): + """Raise a ValueError for an invalid color setting. + + Valid values are 'always', 'never', and 'auto', or equivalently, + True, False, and None. + """ + if when in color_when_values: + return color_when_values[when] + elif when not in color_when_values.values(): + raise ValueError('Invalid color setting: %s' % when) + return when + + +def get_color_when(): + """Return whether commands should print color or not.""" + if _force_color is not None: + return _force_color + return sys.stdout.isatty() + + +def set_color_when(when): + """Set when color should be applied. Options are: + + * True or 'always': always print color + * False or 'never': never print color + * None or 'auto': only print color if sys.stdout is a tty. + """ + global _force_color + _force_color = _color_when_value(when) + + +@contextmanager +def color_when(value): + """Context manager to temporarily use a particular color setting.""" + old_value = value + set_color(value) + yield + set_color(old_value) class match_to_ansi(object): def __init__(self, color=True): - self.color = color + self.color = _color_when_value(color) def escape(self, s): """Returns a TTY escape sequence for a color""" @@ -166,7 +214,7 @@ def colorize(string, **kwargs): color (bool): If False, output will be plain text without control codes, for output to non-console devices. """ - color = kwargs.get('color', True) + color = _color_when_value(kwargs.get('color', get_color_when())) return re.sub(color_re, match_to_ansi(color), string) @@ -188,7 +236,7 @@ def cwrite(string, stream=sys.stdout, color=None): then it will be set based on stream.isatty(). """ if color is None: - color = stream.isatty() or _force_color + color = get_color_when() stream.write(colorize(string, color=color)) @@ -217,7 +265,7 @@ def write(self, string, **kwargs): if raw: color = True else: - color = self._stream.isatty() or _force_color + color = get_color_when() raw_write(colorize(string, color=color)) def writelines(self, sequence, **kwargs): diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index edeaa677de6..b9b145d0b55 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -154,9 +154,8 @@ def disambiguate_spec(spec): elif len(matching_specs) > 1: args = ["%s matches multiple packages." % spec, "Matching packages:"] - color = sys.stdout.isatty() - args += [colorize(" @K{%s} " % s.dag_hash(7), color=color) + - s.format('$_$@$%@$=', color=color) for s in matching_specs] + args += [colorize(" @K{%s} " % s.dag_hash(7)) + + s.cformat('$_$@$%@$=') for s in matching_specs] args += ["Use a more specific spec."] tty.die(*args) @@ -200,7 +199,7 @@ def display_specs(specs, **kwargs): specs = index[(architecture, compiler)] specs.sort() - abbreviated = [s.format(format_string, color=True) for s in specs] + abbreviated = [s.cformat(format_string) for s in specs] if mode == 'paths': # Print one spec per line along with prefix path width = max(len(s) for s in abbreviated) @@ -215,7 +214,6 @@ def display_specs(specs, **kwargs): for spec in specs: print(spec.tree( format=format_string, - color=True, indent=4, prefix=(lambda s: gray_hash(s, hlen)) if hashes else None)) @@ -227,7 +225,7 @@ def fmt(s): string = "" if hashes: string += gray_hash(s, hlen) + ' ' - string += s.format('$-%s$@%s' % (nfmt, vfmt), color=True) + string += s.cformat('$-%s$@%s' % (nfmt, vfmt)) return string @@ -237,7 +235,7 @@ def fmt(s): for spec in specs: # Print the hash if necessary hsh = gray_hash(spec, hlen) + ' ' if hashes else '' - print(hsh + spec.format(format_string, color=True) + '\n') + print(hsh + spec.cformat(format_string) + '\n') else: raise ValueError( diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index c983dd79ceb..e8f8fc0d0b3 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -47,7 +47,7 @@ def dependents(parser, args): tty.die("spack dependents takes only one spec.") spec = spack.cmd.disambiguate_spec(specs[0]) - tty.msg("Dependents of %s" % spec.format('$_$@$%@$/', color=True)) + tty.msg("Dependents of %s" % spec.cformat('$_$@$%@$/')) deps = spack.store.db.installed_dependents(spec) if deps: spack.cmd.display_specs(deps) diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py index bfc36c4107b..b89ac4121d3 100644 --- a/lib/spack/spack/cmd/mirror.py +++ b/lib/spack/spack/cmd/mirror.py @@ -213,7 +213,7 @@ def mirror_create(args): " %-4d failed to fetch." % e) if error: tty.error("Failed downloads:") - colify(s.format("$_$@") for s in error) + colify(s.cformat("$_$@") for s in error) def mirror(parser, args): diff --git a/lib/spack/spack/cmd/module.py b/lib/spack/spack/cmd/module.py index ed20ad40293..d59d4433b7d 100644 --- a/lib/spack/spack/cmd/module.py +++ b/lib/spack/spack/cmd/module.py @@ -236,7 +236,8 @@ def refresh(mtype, specs, args): if len(writer_list) > 1: message += '\nfile: {0}\n'.format(filename) for x in writer_list: - message += 'spec: {0}\n'.format(x.spec.format(color=True)) + message += 'spec: {0}\n'.format(x.spec.format()) + tty.error(message) tty.error('Operation aborted') raise SystemExit(1) @@ -269,7 +270,7 @@ def module(parser, args): "and this is not allowed in this context") tty.error(message.format(query=constraint)) for s in specs: - sys.stderr.write(s.format(color=True) + '\n') + sys.stderr.write(s.cformat() + '\n') raise SystemExit(1) except NoMatch: message = ("the constraint '{query}' matches no package, " diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index ee1ec882e20..b4740b4eced 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -60,8 +60,7 @@ def setup_parser(subparser): def spec(parser, args): name_fmt = '$.' if args.namespaces else '$_' - kwargs = {'color': True, - 'cover': args.cover, + kwargs = {'cover': args.cover, 'format': name_fmt + '$@$%@+$+$=', 'hashes': args.long or args.very_long, 'hashlen': None if args.very_long else 7, diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index 499521ede0d..d4e88288d29 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -180,8 +180,7 @@ def get_uninstall_list(args): has_error = False if dependent_list and not args.dependents and not args.force: for spec, lst in dependent_list.items(): - tty.error('Will not uninstall {0}'.format( - spec.format("$_$@$%@$/", color=True))) + tty.error("Will not uninstall %s" % spec.cformat("$_$@$%@$/")) print('') print('The following packages depend on it:') spack.cmd.display_specs(lst, **display_args) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 75862ff87c6..569de40a940 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -288,7 +288,7 @@ def _assign_dependencies(self, hash_key, installs, data): if dhash not in data: tty.warn("Missing dependency not in database: ", "%s needs %s-%s" % ( - spec.format('$_$/'), dname, dhash[:7])) + spec.cformat('$_$/'), dname, dhash[:7])) continue child = data[dhash].spec @@ -440,8 +440,7 @@ def _read_suppress_error(): # just to be conservative in case a command like # "autoremove" is run by the user after a reindex. tty.debug( - 'RECONSTRUCTING FROM SPEC.YAML: {0}'.format(spec) - ) + 'RECONSTRUCTING FROM SPEC.YAML: {0}'.format(spec)) explicit = True if old_data is not None: old_info = old_data.get(spec.dag_hash()) @@ -467,8 +466,7 @@ def _read_suppress_error(): # installed compilers or externally installed # applications. tty.debug( - 'RECONSTRUCTING FROM OLD DB: {0}'.format(entry.spec) - ) + 'RECONSTRUCTING FROM OLD DB: {0}'.format(entry.spec)) try: layout = spack.store.layout if entry.spec.external: diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index 5e9341ced96..5b430224d65 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -168,7 +168,9 @@ def __init__(self, root, **kwargs): self.metadata_dir = kwargs.get('metadata_dir', '.spack') self.hash_len = kwargs.get('hash_len') self.path_scheme = kwargs.get('path_scheme') or ( - "${ARCHITECTURE}/${COMPILERNAME}-${COMPILERVER}/${PACKAGE}-${VERSION}-${HASH}") # NOQA: E501 + "${ARCHITECTURE}/" + "${COMPILERNAME}-${COMPILERVER}/" + "${PACKAGE}-${VERSION}-${HASH}") if self.hash_len is not None: if re.search('\${HASH:\d+}', self.path_scheme): raise InvalidDirectoryLayoutParametersError( diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 2d5648f13e9..ee74c915df1 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -58,7 +58,7 @@ # control top-level spack options shown in basic vs. advanced help options_by_level = { - 'short': 'hkV', + 'short': ['h', 'k', 'V', 'color'], 'long': 'all' } @@ -280,6 +280,9 @@ def make_argument_parser(): parser.add_argument('-h', '--help', action='store_true', help="show this help message and exit") + parser.add_argument('--color', action='store', default='auto', + choices=('always', 'never', 'auto'), + help="when to colorize output; default is auto") parser.add_argument('-d', '--debug', action='store_true', help="write out debug logs during compile") parser.add_argument('-D', '--pdb', action='store_true', @@ -325,6 +328,9 @@ def setup_main_options(args): tty.warn("You asked for --insecure. Will NOT check SSL certificates.") spack.insecure = True + # when to use color (takes always, auto, or never) + tty.color.set_color_when(args.color) + def allows_unknown_args(command): """Implements really simple argument injection for unknown arguments. diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 9b9f816db44..bfa7b858d28 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -224,14 +224,14 @@ def add_single_spec(spec, mirror_root, categories, **kwargs): # create a subdirectory for the current package@version archive_path = os.path.abspath(join_path( mirror_root, mirror_archive_path(spec, fetcher))) - name = spec.format("$_$@") + name = spec.cformat("$_$@") else: resource = stage.resource archive_path = os.path.abspath(join_path( mirror_root, mirror_archive_path(spec, fetcher, resource.name))) name = "{resource} ({pkg}).".format( - resource=resource.name, pkg=spec.format("$_$@")) + resource=resource.name, pkg=spec.cformat("$_$@")) subdir = os.path.dirname(archive_path) mkdirp(subdir) @@ -258,8 +258,8 @@ def add_single_spec(spec, mirror_root, categories, **kwargs): if spack.debug: sys.excepthook(*sys.exc_info()) else: - tty.warn("Error while fetching %s" - % spec.format('$_$@'), e.message) + tty.warn( + "Error while fetching %s" % spec.cformat('$_$@'), e.message) categories['error'].append(spec) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 1223fce178c..57298368738 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -905,7 +905,7 @@ def do_fetch(self, mirror_only=False): start_time = time.time() if spack.do_checksum and self.version not in self.versions: tty.warn("There is no checksum on file to fetch %s safely." % - self.spec.format('$_$@')) + self.spec.cformat('$_$@')) # Ask the user whether to skip the checksum if we're # interactive, but just fail if non-interactive. @@ -1649,8 +1649,9 @@ def do_activate(self, force=False): self.extendee_spec.package.activate(self, **self.extendee_args) spack.store.layout.add_extension(self.extendee_spec, self.spec) - tty.msg("Activated extension %s for %s" % - (self.spec.short_spec, self.extendee_spec.format("$_$@$+$%@"))) + tty.msg( + "Activated extension %s for %s" % + (self.spec.short_spec, self.extendee_spec.cformat("$_$@$+$%@"))) def dependency_activations(self): return (spec for spec in self.spec.traverse(root=False, deptype='run') @@ -1708,8 +1709,9 @@ def do_deactivate(self, **kwargs): spack.store.layout.remove_extension( self.extendee_spec, self.spec) - tty.msg("Deactivated extension %s for %s" % - (self.spec.short_spec, self.extendee_spec.format("$_$@$+$%@"))) + tty.msg( + "Deactivated extension %s for %s" % + (self.spec.short_spec, self.extendee_spec.cformat("$_$@$+$%@"))) def deactivate(self, extension, **kwargs): """Unlinks all files from extension out of this package's install dir. diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index db8dcf61a86..992930da656 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -108,6 +108,10 @@ from six import string_types from six import iteritems +from llnl.util.filesystem import find_headers, find_libraries, is_exe +from llnl.util.lang import * +from llnl.util.tty.color import * + import spack import spack.architecture import spack.compilers as compilers @@ -117,9 +121,6 @@ import spack.util.spack_json as sjson import spack.util.spack_yaml as syaml -from llnl.util.filesystem import find_headers, find_libraries, is_exe -from llnl.util.lang import * -from llnl.util.tty.color import * from spack.util.module_cmd import get_path_from_module, load_module from spack.error import SpecError, UnsatisfiableSpecError from spack.provider_index import ProviderIndex @@ -1363,9 +1364,8 @@ def short_spec(self): @property def cshort_spec(self): - """Returns a version of the spec with the dependencies hashed - instead of completely enumerated.""" - return self.format('$_$@$%@$+$=$/', color=True) + """Returns an auto-colorized version of ``self.short_spec``.""" + return self.cformat('$_$@$%@$+$=$/') @property def prefix(self): @@ -2852,6 +2852,12 @@ def write(s, c): result = out.getvalue() return result + def cformat(self, *args, **kwargs): + """Same as format, but color defaults to auto instead of False.""" + kwargs = kwargs.copy() + kwargs.setdefault('color', None) + return self.format(*args, **kwargs) + def dep_string(self): return ''.join("^" + dep.format() for dep in self.sorted_deps()) @@ -2882,7 +2888,7 @@ def _installed_explicitly(self): def tree(self, **kwargs): """Prints out this spec and its dependencies, tree-formatted with indentation.""" - color = kwargs.pop('color', False) + color = kwargs.pop('color', get_color_when()) depth = kwargs.pop('depth', False) hashes = kwargs.pop('hashes', False) hlen = kwargs.pop('hashlen', None) diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index d9ae65b8b5e..e60d587c188 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -115,7 +115,8 @@ function _spack { if $list_options then compgen -W "-h --help -d --debug -D --pdb -k --insecure -m --mock -p - --profile -v --verbose -s --stacktrace -V --version" -- "$cur" + --profile -v --verbose -s --stacktrace -V --version + --color --color=always --color=auto --color=never" -- "$cur" else compgen -W "$(_subcommands)" -- "$cur" fi From 69a6c8ef7880a12cf3300af45317fac94b374df1 Mon Sep 17 00:00:00 2001 From: scheibelp Date: Mon, 31 Jul 2017 13:11:08 -0700 Subject: [PATCH 1353/2394] Fix preference for X.Y version when mixed with X.Y.Z versions (#4922) For packages which contain a mix of versions with formats X.Y and X.Y.Z, if the user entered an X.Y version as a preference in packages.yaml, Spack would get confused and favor any version A.B.Z where X=A and Y=B. In the case where there is a mix of these version types, this commit updates preferences so Spack will favor an exact match. --- lib/spack/spack/package_prefs.py | 10 +++++- .../spack/test/concretize_preferences.py | 5 +++ .../packages/mixedversions/package.py | 36 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin.mock/packages/mixedversions/package.py diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py index 2e70a3b7dcb..56efb604b1f 100644 --- a/lib/spack/spack/package_prefs.py +++ b/lib/spack/spack/package_prefs.py @@ -112,9 +112,17 @@ def __call__(self, spec): # integer is the index of the first spec in order that satisfies # spec, or it's a number larger than any position in the order. - return next( + match_index = next( (i for i, s in enumerate(spec_order) if spec.satisfies(s)), len(spec_order)) + if match_index < len(spec_order) and spec_order[match_index] == spec: + # If this is called with multiple specs that all satisfy the same + # minimum index in spec_order, the one which matches that element + # of spec_order exactly is considered slightly better. Note + # that because this decreases the value by less than 1, it is not + # better than a match which occurs at an earlier index. + match_index -= 0.5 + return match_index @classproperty @classmethod diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py index 5e880bc4d64..45c037eec7a 100644 --- a/lib/spack/spack/test/concretize_preferences.py +++ b/lib/spack/spack/test/concretize_preferences.py @@ -102,6 +102,11 @@ def test_preferred_versions(self): spec = concretize('mpileaks') assert spec.version == spack.spec.Version('2.2') + def test_preferred_versions_mixed_version_types(self): + update_packages('mixedversions', 'version', ['2.0']) + spec = concretize('mixedversions') + assert spec.version == spack.spec.Version('2.0') + def test_preferred_providers(self): """Test preferred providers of virtual packages are applied correctly diff --git a/var/spack/repos/builtin.mock/packages/mixedversions/package.py b/var/spack/repos/builtin.mock/packages/mixedversions/package.py new file mode 100644 index 00000000000..5b56eb004db --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/mixedversions/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mixedversions(Package): + url = "http://www.fake-mixedversions.org/downloads/mixedversions-1.0.tar.gz" + + version('2.0.1', 'hashc') + version('2.0', 'hashb') + version('1.0.1', 'hasha') + + def install(self, spec, prefix): + pass From 82735deafd8baff0a7e2fd086c5c9fa601992447 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 31 Jul 2017 15:13:39 -0500 Subject: [PATCH 1354/2394] Clarify docs on using a hash in a spec (#4908) --- lib/spack/docs/basic_usage.rst | 43 ++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index f25247579b1..bb426b4378c 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -808,17 +808,46 @@ Specifying Specs by Hash ^^^^^^^^^^^^^^^^^^^^^^^^ Complicated specs can become cumbersome to enter on the command line, -especially when many of the qualifications are necessary to -distinguish between similar installs, for example when using the -``uninstall`` command. To avoid this, when referencing an existing spec, +especially when many of the qualifications are necessary to distinguish +between similar installs. To avoid this, when referencing an existing spec, Spack allows you to reference specs by their hash. We previously discussed the spec hash that Spack computes. In place of a spec in any command, substitute ``/`` where ```` is any amount from -the beginning of a spec hash. If the given spec hash is sufficient -to be unique, Spack will replace the reference with the spec to which -it refers. Otherwise, it will prompt for a more qualified hash. +the beginning of a spec hash. -Note that this will not work to reinstall a depencency uninstalled by +For example, lets say that you accidentally installed two different +``mvapich2`` installations. If you want to uninstall one of them but don't +know what the difference is, you can run: + +.. code-block:: console + + $ spack find --long mvapich2 + ==> 2 installed packages. + -- linux-centos7-x86_64 / gcc@6.3.0 ---------- + qmt35td mvapich2@2.2%gcc + er3die3 mvapich2@2.2%gcc + + +You can then uninstall the latter installation using: + +.. code-block:: console + + $ spack uninstall /er3die3 + + +Or, if you want to build with a specific installation as a dependency, +you can use: + +.. code-block:: console + + $ spack install trilinos ^/er3die3 + + +If the given spec hash is sufficiently long as to be unique, Spack will +replace the reference with the spec to which it refers. Otherwise, it will +prompt for a more qualified hash. + +Note that this will not work to reinstall a dependency uninstalled by ``spack uninstall --force``. .. _cmd-spack-providers: From 44653fa4884c754c7925d5e031fdb9b5f2eec232 Mon Sep 17 00:00:00 2001 From: Alicia Klinvex Date: Tue, 1 Aug 2017 13:05:15 -0400 Subject: [PATCH 1355/2394] Fix xsdk build broken by petsc and trilinos (#4893) * Fix xsdk build broken by petsc and trilinos See #4891 for details * Fix version conflict in trilinos package Trilinos version 11 may conflict with superlu-dist. The version "xsdk-0.2.0" was conflicting with superlu-dist, even though it shouldn't. I added a lower bound to the comparison to fix this problem. Thanks for the help @davydden! --- var/spack/repos/builtin/packages/trilinos/package.py | 2 +- var/spack/repos/builtin/packages/xsdk/package.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 8566adc6491..f69f5bcecb6 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -171,7 +171,7 @@ class Trilinos(CMakePackage): conflicts('+superlu-dist', when='+superlu') # For Trilinos v11 we need to force SuperLUDist=OFF, since only the # deprecated SuperLUDist v3.3 together with an Amesos patch is working. - conflicts('+superlu-dist', when='@:11.14.3') + conflicts('+superlu-dist', when='@11.4.1:11.14.3') # PnetCDF was only added after v12.10.1 conflicts('+pnetcdf', when='@:12.10.1') diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py index 583de80f3a7..4d27b5a79f2 100644 --- a/var/spack/repos/builtin/packages/xsdk/package.py +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -53,9 +53,9 @@ class Xsdk(Package): depends_on('trilinos@develop+xsdkflags+hypre+superlu-dist+metis+hdf5~mumps+boost~suite-sparse~tpetra~ifpack2~zoltan2~amesos2~exodus', when='@develop') - depends_on('petsc@xsdk-0.2.0+trilinos+mpi+hypre+superlu-dist+metis+hdf5~mumps~boost', + depends_on('petsc@xsdk-0.2.0+trilinos+mpi+hypre+superlu-dist+metis+hdf5~mumps~boost+double~int64', when='@xsdk-0.2.0') - depends_on('petsc@develop+trilinos+mpi+hypre+superlu-dist+metis+hdf5~mumps~boost', + depends_on('petsc@develop+trilinos+mpi+hypre+superlu-dist+metis+hdf5~mumps~boost+double~int64', when='@develop') depends_on('pflotran@xsdk-0.2.0', when='@xsdk-0.2.0') From f2ddcfac5f526c331185fb92fe9ce6dd85494c74 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 12 Jun 2017 01:07:29 -0700 Subject: [PATCH 1356/2394] Add --all argument to `spack dependents` --all causes spack dependents to list all possible dependents for a package, rather than actual dependents for an installed spec. --- lib/spack/spack/cmd/dependents.py | 62 ++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 6 deletions(-) diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index e8f8fc0d0b3..94b9ffd9c57 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -25,6 +25,7 @@ import argparse import llnl.util.tty as tty +from llnl.util.tty.colify import colify import spack import spack.store @@ -36,20 +37,69 @@ def setup_parser(subparser): + subparser.add_argument( + '-a', '--all', action='store_true', default=False, + help="List all potential dependents of the package instead of actual " + "dependents of an installed spec") subparser.add_argument( 'spec', nargs=argparse.REMAINDER, help="specs to list dependencies of") +def inverted_dag(): + """Returns inverted package DAG as adjacency lists.""" + dag = {} + for pkg in spack.repo.all_packages(): + dag.setdefault(pkg.name, set()) + for dep in pkg.dependencies: + deps = [dep] + + # expand virtuals if necessary + if spack.repo.is_virtual(dep): + deps = [s.name for s in spack.repo.providers_for(dep)] + + for d in deps: + dag.setdefault(d, set()).add(pkg.name) + return dag + + +def all_dependents(name, inverted_dag, dependents=None): + if dependents is None: + dependents = set() + + if name in dependents: + return set() + dependents.add(name) + + direct = inverted_dag[name] + for dname in direct: + all_dependents(dname, inverted_dag, dependents) + dependents.update(direct) + return dependents + + def dependents(parser, args): specs = spack.cmd.parse_specs(args.spec) if len(specs) != 1: tty.die("spack dependents takes only one spec.") - spec = spack.cmd.disambiguate_spec(specs[0]) - tty.msg("Dependents of %s" % spec.cformat('$_$@$%@$/')) - deps = spack.store.db.installed_dependents(spec) - if deps: - spack.cmd.display_specs(deps) + if args.all: + spec = specs[0] + idag = inverted_dag() + + dependents = all_dependents(spec.name, idag) + dependents.remove(spec.name) + if dependents: + colify(sorted(dependents)) + else: + print("No dependents") + else: - print("No dependents") + spec = spack.cmd.disambiguate_spec(specs[0]) + + tty.msg("Dependents of %s" % spec.cformat('$_$@$%@$/')) + deps = spack.store.db.installed_dependents(spec) + if deps: + spack.cmd.display_specs(deps) + else: + print("No dependents") From 43f576cf19c5fb3af83e39c21db802b2d2f254e8 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 17 Jun 2017 18:14:14 -0700 Subject: [PATCH 1357/2394] Remove unused code. --- lib/spack/spack/version.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 0d8520a0e0a..3414c9c8d9d 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -107,10 +107,6 @@ def coercing_method(a, b, *args, **kwargs): return coercing_method -def _numeric_lt(self0, other): - """Compares two versions, knowing they're both numeric""" - - class Version(object): """Class to represent versions""" From bd94a1706684e135af6b2d5bb62d35e8b8263e79 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 17 Jun 2017 15:47:59 +0200 Subject: [PATCH 1358/2394] Remove last vestiges of "special" deptypes. - Remove `special_types` dict in spec.py, as only 'all' is still used - Still allow 'all' to be used as a deptype - Simplify `canonical_deptype` function - Clean up args in spack graph - Add tests --- lib/spack/spack/cmd/graph.py | 3 +- lib/spack/spack/directives.py | 3 +- lib/spack/spack/spec.py | 41 ++++++------------------ lib/spack/spack/test/spec_dag.py | 53 +++++++++++++++++++++++++++++++- 4 files changed, 64 insertions(+), 36 deletions(-) diff --git a/lib/spack/spack/cmd/graph.py b/lib/spack/spack/cmd/graph.py index e42e355f8f3..e750e5a9594 100644 --- a/lib/spack/spack/cmd/graph.py +++ b/lib/spack/spack/cmd/graph.py @@ -90,7 +90,8 @@ def graph(parser, args): deptype = alldeps if args.deptype: deptype = tuple(args.deptype.split(',')) - validate_deptype(deptype) + if deptype == ('all',): + deptype = 'all' deptype = canonical_deptype(deptype) if args.dot: # Dot graph only if asked for. diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 52e4b83dceb..2e8b32e5afa 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -241,8 +241,7 @@ def _depends_on(pkg, spec, when=None, type=None): # but is most backwards-compatible. type = ('build', 'link') - if isinstance(type, str): - type = spack.spec.special_types.get(type, (type,)) + type = spack.spec.canonical_deptype(type) for deptype in type: if deptype not in spack.spec.alldeps: diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 992930da656..71d9f4aac1d 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -137,7 +137,6 @@ 'Spec', 'alldeps', 'canonical_deptype', - 'validate_deptype', 'parse', 'parse_anonymous_spec', 'SpecError', @@ -150,7 +149,6 @@ 'DuplicateArchitectureError', 'InconsistentSpecError', 'InvalidDependencyError', - 'InvalidDependencyTypeError', 'NoProviderError', 'MultipleProviderError', 'UnsatisfiableSpecError', @@ -197,44 +195,27 @@ every time we call str()""" _any_version = VersionList([':']) -# Special types of dependencies. +"""Types of dependencies that Spack understands.""" alldeps = ('build', 'link', 'run') -norun = ('link', 'build') -special_types = { - 'alldeps': alldeps, - 'all': alldeps, # allow "all" as string but not symbol. - 'norun': norun, -} - -legal_deps = tuple(special_types) + alldeps """Max integer helps avoid passing too large a value to cyaml.""" maxint = 2 ** (ctypes.sizeof(ctypes.c_int) * 8 - 1) - 1 -def validate_deptype(deptype): - if isinstance(deptype, str): - if deptype not in legal_deps: - raise InvalidDependencyTypeError( - "Invalid dependency type: %s" % deptype) - - elif isinstance(deptype, (list, tuple)): - for t in deptype: - validate_deptype(t) - - elif deptype is None: - raise InvalidDependencyTypeError("deptype cannot be None!") - - def canonical_deptype(deptype): - if deptype is None: + if deptype in (None, 'all', all): return alldeps elif isinstance(deptype, string_types): - return special_types.get(deptype, (deptype,)) + if deptype not in alldeps: + raise ValueError('Invalid dependency type: %s' % deptype) + return (deptype,) elif isinstance(deptype, (tuple, list)): - return (sum((canonical_deptype(d) for d in deptype), ())) + invalid = next((d for d in deptype if d not in alldeps), None) + if invalid: + raise ValueError('Invalid dependency type: %s' % invalid) + return tuple(sorted(deptype)) return deptype @@ -3338,10 +3319,6 @@ class InvalidDependencyError(SpecError): of the package.""" -class InvalidDependencyTypeError(SpecError): - """Raised when a dependency type is not a legal Spack dep type.""" - - class NoProviderError(SpecError): """Raised when there is no package that provides a particular virtual dependency. diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index 07a9b72e091..c82365ad11a 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -30,7 +30,7 @@ import spack.architecture import spack.package -from spack.spec import Spec +from spack.spec import Spec, canonical_deptype, alldeps def check_links(spec_to_check): @@ -737,3 +737,54 @@ def test_getitem_exceptional_paths(self): with pytest.raises(AttributeError): q.libs + + def test_canonical_deptype(self): + # special values + assert canonical_deptype(all) == alldeps + assert canonical_deptype('all') == alldeps + assert canonical_deptype(None) == alldeps + + # everything in alldeps is canonical + for v in alldeps: + assert canonical_deptype(v) == (v,) + + # tuples + assert canonical_deptype(('build',)) == ('build',) + assert canonical_deptype( + ('build', 'link', 'run')) == ('build', 'link', 'run') + assert canonical_deptype( + ('build', 'link')) == ('build', 'link') + assert canonical_deptype( + ('build', 'run')) == ('build', 'run') + + # lists + assert canonical_deptype( + ['build', 'link', 'run']) == ('build', 'link', 'run') + assert canonical_deptype( + ['build', 'link']) == ('build', 'link') + assert canonical_deptype( + ['build', 'run']) == ('build', 'run') + + # sorting + assert canonical_deptype( + ('run', 'build', 'link')) == ('build', 'link', 'run') + assert canonical_deptype( + ('run', 'link', 'build')) == ('build', 'link', 'run') + assert canonical_deptype( + ('run', 'link')) == ('link', 'run') + assert canonical_deptype( + ('link', 'build')) == ('build', 'link') + + # can't put 'all' in tuple or list + with pytest.raises(ValueError): + canonical_deptype(['all']) + with pytest.raises(ValueError): + canonical_deptype(('all',)) + + # invalid values + with pytest.raises(ValueError): + canonical_deptype('foo') + with pytest.raises(ValueError): + canonical_deptype(('foo', 'bar')) + with pytest.raises(ValueError): + canonical_deptype(('foo',)) From 6928cf7a68c72d01472a766669790b12425092ad Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 17 Jun 2017 16:05:12 +0200 Subject: [PATCH 1359/2394] spack dependents lists possible dependencies by default. --- lib/spack/spack/cmd/dependents.py | 62 ++++++++++++++++++------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index 94b9ffd9c57..0d470e7a898 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -38,16 +38,22 @@ def setup_parser(subparser): subparser.add_argument( - '-a', '--all', action='store_true', default=False, - help="List all potential dependents of the package instead of actual " - "dependents of an installed spec") + '-i', '--installed', action='store_true', default=False, + help="List installed dependents of an installed spec, " + "instead of possible dependents of a package.") subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="specs to list dependencies of") + help="spec to list dependents for") -def inverted_dag(): - """Returns inverted package DAG as adjacency lists.""" +def inverted_dependencies(): + """Iterate through all packages and return a dictionary mapping package + names to possible dependnecies. + + Virtual packages are included as sources, so that you can query + dependents of, e.g., `mpi`, but virtuals are not included as + actual dependents. + """ dag = {} for pkg in spack.repo.all_packages(): dag.setdefault(pkg.name, set()) @@ -56,24 +62,30 @@ def inverted_dag(): # expand virtuals if necessary if spack.repo.is_virtual(dep): - deps = [s.name for s in spack.repo.providers_for(dep)] + deps += [s.name for s in spack.repo.providers_for(dep)] for d in deps: dag.setdefault(d, set()).add(pkg.name) return dag -def all_dependents(name, inverted_dag, dependents=None): +def get_dependents(pkg_name, ideps, dependents=None): + """Get all dependents for a package. + + Args: + pkg_name (str): name of the package whose dependents should be returned + ideps (dict): dictionary of dependents, from inverted_dependencies() + """ if dependents is None: dependents = set() - if name in dependents: + if pkg_name in dependents: return set() - dependents.add(name) + dependents.add(pkg_name) - direct = inverted_dag[name] - for dname in direct: - all_dependents(dname, inverted_dag, dependents) + direct = ideps[pkg_name] + for dep_name in direct: + get_dependents(dep_name, ideps, dependents) dependents.update(direct) return dependents @@ -83,18 +95,7 @@ def dependents(parser, args): if len(specs) != 1: tty.die("spack dependents takes only one spec.") - if args.all: - spec = specs[0] - idag = inverted_dag() - - dependents = all_dependents(spec.name, idag) - dependents.remove(spec.name) - if dependents: - colify(sorted(dependents)) - else: - print("No dependents") - - else: + if args.installed: spec = spack.cmd.disambiguate_spec(specs[0]) tty.msg("Dependents of %s" % spec.cformat('$_$@$%@$/')) @@ -103,3 +104,14 @@ def dependents(parser, args): spack.cmd.display_specs(deps) else: print("No dependents") + + else: + spec = specs[0] + ideps = inverted_dependencies() + + dependents = get_dependents(spec.name, ideps) + dependents.remove(spec.name) + if dependents: + colify(sorted(dependents)) + else: + print("No dependents") From b9606e3157652b6fd65868afd44f6fc1fb02d204 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 17 Jun 2017 18:14:44 -0700 Subject: [PATCH 1360/2394] Add --transitive option to `spack dependents` --- lib/spack/spack/cmd/dependents.py | 17 +++++++++++------ lib/spack/spack/database.py | 9 +++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index 0d470e7a898..166f9e129c3 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -31,7 +31,7 @@ import spack.store import spack.cmd -description = "show installed packages that depend on another" +description = "show packages that depend on another" section = "basic" level = "long" @@ -41,9 +41,12 @@ def setup_parser(subparser): '-i', '--installed', action='store_true', default=False, help="List installed dependents of an installed spec, " "instead of possible dependents of a package.") + subparser.add_argument( + '-t', '--transitive', action='store_true', default=False, + help="Show all transitive dependents.") subparser.add_argument( 'spec', nargs=argparse.REMAINDER, - help="spec to list dependents for") + help="spec or package name") def inverted_dependencies(): @@ -69,12 +72,13 @@ def inverted_dependencies(): return dag -def get_dependents(pkg_name, ideps, dependents=None): +def get_dependents(pkg_name, ideps, transitive=False, dependents=None): """Get all dependents for a package. Args: pkg_name (str): name of the package whose dependents should be returned ideps (dict): dictionary of dependents, from inverted_dependencies() + transitive (bool, optional): return transitive dependents when True """ if dependents is None: dependents = set() @@ -84,8 +88,9 @@ def get_dependents(pkg_name, ideps, dependents=None): dependents.add(pkg_name) direct = ideps[pkg_name] - for dep_name in direct: - get_dependents(dep_name, ideps, dependents) + if transitive: + for dep_name in direct: + get_dependents(dep_name, ideps, transitive, dependents) dependents.update(direct) return dependents @@ -109,7 +114,7 @@ def dependents(parser, args): spec = specs[0] ideps = inverted_dependencies() - dependents = get_dependents(spec.name, ideps) + dependents = get_dependents(spec.name, ideps, args.transitive) dependents.remove(spec.name) if dependents: colify(sorted(dependents)) diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 569de40a940..862eb25e7ef 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -711,11 +711,16 @@ def remove(self, spec): return self._remove(spec) @_autospec - def installed_dependents(self, spec): + def installed_dependents(self, spec, transitive=True): """List the installed specs that depend on this one.""" dependents = set() for spec in self.query(spec): - for dependent in spec.traverse(direction='parents', root=False): + if transitive: + to_add = spec.traverse(direction='parents', root=False) + else: + to_add = spec.dependents() + + for dependent in to_add: dependents.add(dependent) return dependents From 36b3dd8cfe1b932bd60f13606e9bfe23d8d91ffd Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 5 Mar 2017 21:41:18 -0800 Subject: [PATCH 1361/2394] Package.possible_dependencies() descends into virtuals. --- lib/spack/spack/package.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 57298368738..ff8c629ee7d 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -601,10 +601,19 @@ def possible_dependencies(self, visited=None): visited.add(self.name) for name in self.dependencies: - if name not in visited and not spack.spec.Spec(name).virtual: + if name in visited: + continue + + spec = spack.spec.Spec(name) + if not spec.virtual: pkg = spack.repo.get(name) for name in pkg.possible_dependencies(visited): visited.add(name) + else: + for provider in spack.repo.providers_for(spec): + pkg = spack.repo.get(provider.name) + for name in pkg.possible_dependencies(visited): + visited.add(name) return visited From c8b2100630698a214f5787a3c51f44debfa23252 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 17 Jun 2017 19:20:05 -0700 Subject: [PATCH 1362/2394] Refactor installed_dependents -> installed_relatives --- lib/spack/spack/cmd/dependents.py | 6 +++--- lib/spack/spack/cmd/uninstall.py | 8 +++++--- lib/spack/spack/database.py | 32 +++++++++++++++++++++++-------- lib/spack/spack/package.py | 3 ++- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index 166f9e129c3..82a85e11806 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -45,8 +45,7 @@ def setup_parser(subparser): '-t', '--transitive', action='store_true', default=False, help="Show all transitive dependents.") subparser.add_argument( - 'spec', nargs=argparse.REMAINDER, - help="spec or package name") + 'spec', nargs=argparse.REMAINDER, help="spec or package name") def inverted_dependencies(): @@ -104,7 +103,8 @@ def dependents(parser, args): spec = spack.cmd.disambiguate_spec(specs[0]) tty.msg("Dependents of %s" % spec.cformat('$_$@$%@$/')) - deps = spack.store.db.installed_dependents(spec) + deps = spack.store.db.installed_relatives( + spec, 'parents', args.transitive) if deps: spack.cmd.display_specs(deps) else: diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index d4e88288d29..e95a5f34305 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -128,8 +128,8 @@ def installed_dependents(specs): """ dependents = {} for item in specs: - lst = [x for x in spack.store.db.installed_dependents(item) - if x not in specs] + installed = spack.store.db.installed_relatives(item, 'parents', True) + lst = [x for x in installed if x not in specs] if lst: lst = list(set(lst)) dependents[item] = lst @@ -157,7 +157,9 @@ def do_uninstall(specs, force): # Sort packages to be uninstalled by the number of installed dependents # This ensures we do things in the right order def num_installed_deps(pkg): - return len(spack.store.db.installed_dependents(pkg.spec)) + dependents = spack.store.db.installed_relatives( + pkg.spec, 'parents', True) + return len(dependents) packages.sort(key=num_installed_deps) for item in packages: diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 862eb25e7ef..6b54dc5939d 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -711,18 +711,34 @@ def remove(self, spec): return self._remove(spec) @_autospec - def installed_dependents(self, spec, transitive=True): - """List the installed specs that depend on this one.""" - dependents = set() + def installed_relatives(self, spec, direction='children', transitive=True): + """Return installed specs related to this one.""" + if direction not in ('parents', 'children'): + raise ValueError("Invalid direction: %s" % direction) + + relatives = set() for spec in self.query(spec): if transitive: - to_add = spec.traverse(direction='parents', root=False) - else: + to_add = spec.traverse(direction=direction, root=False) + elif direction == 'parents': to_add = spec.dependents() + else: # direction == 'children' + to_add = spec.dependencies() - for dependent in to_add: - dependents.add(dependent) - return dependents + for relative in to_add: + hash_key = relative.dag_hash() + if hash_key not in self._data: + reltype = ('Dependent' if direction == 'parents' + else 'Dependency') + tty.warn("Inconsistent state! %s %s of %s not in DB" + % (reltype, hash_key, spec.dag_hash())) + continue + + if not self._data[hash_key].installed: + continue + + relatives.add(relative) + return relatives @_autospec def installed_extensions_for(self, extendee_spec): diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index ff8c629ee7d..bdf56af6085 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1582,7 +1582,8 @@ def uninstall_by_spec(spec, force=False): raise InstallError(str(spec) + " is not installed.") if not force: - dependents = spack.store.db.installed_dependents(spec) + dependents = spack.store.db.installed_relatives( + spec, 'parents', True) if dependents: raise PackageStillNeededError(spec, dependents) From b575d008bd56c4a900824109a2952d28c1896563 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 30 Jul 2017 14:09:19 -0700 Subject: [PATCH 1363/2394] Fix issue with case check and `spack -m` --- lib/spack/spack/hooks/case_consistency.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/hooks/case_consistency.py b/lib/spack/spack/hooks/case_consistency.py index fcf9ee25885..f6246f6008c 100644 --- a/lib/spack/spack/hooks/case_consistency.py +++ b/lib/spack/spack/hooks/case_consistency.py @@ -39,7 +39,11 @@ def pre_run(): if platform.system() != "Darwin": return - git_case_consistency_check(spack.repo.get_repo('builtin').packages_path) + try: + repo = spack.repo.get_repo('builtin') + git_case_consistency_check(repo.packages_path) + except spack.repository.UnknownNamespaceError: + pass def git_case_consistency_check(path): From af3c794ab57c76dd995a0ddd5eab34d75c5df494 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 30 Jul 2017 14:10:19 -0700 Subject: [PATCH 1364/2394] document and make `display_specs` more versatile --- lib/spack/spack/cmd/__init__.py | 54 ++++++++++++++++++++++++++++----- lib/spack/spack/cmd/find.py | 8 +---- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index b9b145d0b55..5e4564b1e86 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -166,15 +166,55 @@ def gray_hash(spec, length): return colorize('@K{%s}' % spec.dag_hash(length)) -def display_specs(specs, **kwargs): - mode = kwargs.get('mode', 'short') - hashes = kwargs.get('long', False) - namespace = kwargs.get('namespace', False) - flags = kwargs.get('show_flags', False) - variants = kwargs.get('variants', False) +def display_specs(specs, args=None, **kwargs): + """Display human readable specs with customizable formatting. + + Prints the supplied specs to the screen, formatted according to the + arguments provided. + + Specs are grouped by architecture and compiler, and columnized if + possible. There are three possible "modes": + + * ``short`` (default): short specs with name and version, columnized + * ``paths``: Two columns: one for specs, one for paths + * ``deps``: Dependency-tree style, like ``spack spec``; can get long + + Options can add more information to the default display. Options can + be provided either as keyword arguments or as an argparse namespace. + Keyword arguments take precedence over settings in the argparse + namespace. + + Args: + specs (list of spack.spec.Spec): the specs to display + args (optional argparse.Namespace): namespace containing + formatting arguments + + Keyword Args: + mode (str): Either 'short', 'paths', or 'deps' + long (bool): Display short hashes with specs + very_long (bool): Display full hashes with specs (supersedes ``long``) + namespace (bool): Print namespaces along with names + show_flags (bool): Show compiler flags with specs + variants (bool): Show variants with specs + + """ + def get_arg(name, default=None): + """Prefer kwargs, then args, then default.""" + if name in kwargs: + return kwargs.get(name) + elif args is not None: + return getattr(args, name, default) + else: + return default + + mode = get_arg('mode', 'short') + hashes = get_arg('long', False) + namespace = get_arg('namespace', False) + flags = get_arg('show_flags', False) + variants = get_arg('variants', False) hlen = 7 - if kwargs.get('very_long', False): + if get_arg('very_long', False): hashes = True hlen = None diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index cbf91e4a8aa..bb8e2e5bcf2 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -128,10 +128,4 @@ def find(parser, args): if sys.stdout.isatty(): tty.msg("%d installed packages." % len(query_specs)) - display_specs(query_specs, - mode=args.mode, - long=args.long, - very_long=args.very_long, - show_flags=args.show_flags, - namespace=args.namespace, - variants=args.variants) + display_specs(query_specs, args) From b88f55e523590d33b03b0d90f2a2d0875f4c60cb Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 19 Jun 2017 00:51:34 -0700 Subject: [PATCH 1365/2394] Add `spack dependencies` command and tests for it and dependents. --- lib/spack/llnl/util/tty/color.py | 4 +- lib/spack/spack/cmd/dependencies.py | 87 ++++++++++++++++++++++++ lib/spack/spack/cmd/dependents.py | 2 +- lib/spack/spack/main.py | 5 +- lib/spack/spack/package.py | 27 +++++--- lib/spack/spack/test/cmd/dependencies.py | 77 +++++++++++++++++++++ lib/spack/spack/test/cmd/dependents.py | 74 ++++++++++++++++++++ 7 files changed, 261 insertions(+), 15 deletions(-) create mode 100644 lib/spack/spack/cmd/dependencies.py create mode 100644 lib/spack/spack/test/cmd/dependencies.py create mode 100644 lib/spack/spack/test/cmd/dependents.py diff --git a/lib/spack/llnl/util/tty/color.py b/lib/spack/llnl/util/tty/color.py index a39b5b95f85..1081acd0f17 100644 --- a/lib/spack/llnl/util/tty/color.py +++ b/lib/spack/llnl/util/tty/color.py @@ -155,9 +155,9 @@ def set_color_when(when): def color_when(value): """Context manager to temporarily use a particular color setting.""" old_value = value - set_color(value) + set_color_when(value) yield - set_color(old_value) + set_color_when(old_value) class match_to_ansi(object): diff --git a/lib/spack/spack/cmd/dependencies.py b/lib/spack/spack/cmd/dependencies.py new file mode 100644 index 00000000000..b35c324fc78 --- /dev/null +++ b/lib/spack/spack/cmd/dependencies.py @@ -0,0 +1,87 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 argparse + +import llnl.util.tty as tty +from llnl.util.tty.colify import colify + +import spack +import spack.store +import spack.cmd + +description = "show dependencies of a package" +section = "basic" +level = "long" + + +def setup_parser(subparser): + subparser.add_argument( + '-i', '--installed', action='store_true', default=False, + help="List installed dependencies of an installed spec, " + "instead of possible dependencies of a package.") + subparser.add_argument( + '-t', '--transitive', action='store_true', default=False, + help="Show all transitive dependencies.") + subparser.add_argument( + 'spec', nargs=argparse.REMAINDER, help="spec or package name") + + +def dependencies(parser, args): + specs = spack.cmd.parse_specs(args.spec) + if len(specs) != 1: + tty.die("spack dependencies takes only one spec.") + + if args.installed: + spec = spack.cmd.disambiguate_spec(specs[0]) + + tty.msg("Dependencies of %s" % spec.format('$_$@$%@$/', color=True)) + deps = spack.store.db.installed_relatives( + spec, 'children', args.transitive) + if deps: + spack.cmd.display_specs(deps, long=True) + else: + print("No dependencies") + + else: + spec = specs[0] + + if not spec.virtual: + packages = [spec.package] + else: + packages = [spack.repo.get(s.name) + for s in spack.repo.providers_for(spec)] + + dependencies = set() + for pkg in packages: + dependencies.update( + set(pkg.possible_dependencies(args.transitive))) + + if spec.name in dependencies: + dependencies.remove(spec.name) + + if dependencies: + colify(sorted(dependencies)) + else: + print("No dependencies") diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index 82a85e11806..3413ac3227c 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -106,7 +106,7 @@ def dependents(parser, args): deps = spack.store.db.installed_relatives( spec, 'parents', args.transitive) if deps: - spack.cmd.display_specs(deps) + spack.cmd.display_specs(deps, long=True) else: print("No dependents") diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index ee74c915df1..d10047e3259 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -377,12 +377,15 @@ def __init__(self, command, fail_on_error=True): self.command = spack.cmd.get_command(command) self.fail_on_error = fail_on_error - def __call__(self, *argv): + def __call__(self, *argv, **kwargs): """Invoke this SpackCommand. Args: argv (list of str): command line arguments. + Keyword Args: + color (optional bool): force-disable or force-enable color + Returns: (str, str): output and error as a strings diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index bdf56af6085..e8e741fefae 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -594,26 +594,31 @@ def __init__(self, spec): self.extra_args = {} - def possible_dependencies(self, visited=None): - """Return set of possible transitive dependencies of this package.""" + def possible_dependencies(self, transitive=True, visited=None): + """Return set of possible transitive dependencies of this package. + + Args: + transitive (bool): include all transitive dependencies if True, + only direct dependencies if False. + """ if visited is None: visited = set() visited.add(self.name) for name in self.dependencies: - if name in visited: - continue - spec = spack.spec.Spec(name) + if not spec.virtual: - pkg = spack.repo.get(name) - for name in pkg.possible_dependencies(visited): - visited.add(name) + visited.add(name) + if transitive: + pkg = spack.repo.get(name) + pkg.possible_dependencies(transitive, visited) else: for provider in spack.repo.providers_for(spec): - pkg = spack.repo.get(provider.name) - for name in pkg.possible_dependencies(visited): - visited.add(name) + visited.add(provider.name) + if transitive: + pkg = spack.repo.get(provider.name) + pkg.possible_dependencies(transitive, visited) return visited diff --git a/lib/spack/spack/test/cmd/dependencies.py b/lib/spack/spack/test/cmd/dependencies.py new file mode 100644 index 00000000000..e024fcc2e60 --- /dev/null +++ b/lib/spack/spack/test/cmd/dependencies.py @@ -0,0 +1,77 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 + +from llnl.util.tty.color import color_when + +import spack +from spack.main import SpackCommand + +dependencies = SpackCommand('dependencies') + +mpis = ['mpich', 'mpich2', 'multi-provider-mpi', 'zmpi'] +mpi_deps = ['fake'] + + +def test_immediate_dependencies(builtin_mock): + out, err = dependencies('mpileaks') + actual = set(re.split(r'\s+', out.strip())) + expected = set(['callpath'] + mpis) + assert expected == actual + + +def test_transitive_dependencies(builtin_mock): + out, err = dependencies('--transitive', 'mpileaks') + actual = set(re.split(r'\s+', out.strip())) + expected = set( + ['callpath', 'dyninst', 'libdwarf', 'libelf'] + mpis + mpi_deps) + assert expected == actual + + +def test_immediate_installed_dependencies(builtin_mock, database): + with color_when(False): + out, err = dependencies('--installed', 'mpileaks^mpich') + + lines = [l for l in out.strip().split('\n') if not l.startswith('--')] + hashes = set([re.split(r'\s+', l)[0] for l in lines]) + + expected = set([spack.store.db.query_one(s).dag_hash(7) + for s in ['mpich', 'callpath^mpich']]) + + assert expected == hashes + + +def test_transitive_installed_dependencies(builtin_mock, database): + with color_when(False): + out, err = dependencies('--installed', '--transitive', 'mpileaks^zmpi') + + lines = [l for l in out.strip().split('\n') if not l.startswith('--')] + hashes = set([re.split(r'\s+', l)[0] for l in lines]) + + expected = set([spack.store.db.query_one(s).dag_hash(7) + for s in ['zmpi', 'callpath^zmpi', 'fake', + 'dyninst', 'libdwarf', 'libelf']]) + + assert expected == hashes diff --git a/lib/spack/spack/test/cmd/dependents.py b/lib/spack/spack/test/cmd/dependents.py new file mode 100644 index 00000000000..69f57d88a33 --- /dev/null +++ b/lib/spack/spack/test/cmd/dependents.py @@ -0,0 +1,74 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 + +from llnl.util.tty.color import color_when + +import spack +from spack.main import SpackCommand + +dependents = SpackCommand('dependents') + + +def test_immediate_dependents(builtin_mock): + out, err = dependents('libelf') + actual = set(re.split(r'\s+', out.strip())) + assert actual == set(['dyninst', 'libdwarf']) + + +def test_transitive_dependents(builtin_mock): + out, err = dependents('--transitive', 'libelf') + actual = set(re.split(r'\s+', out.strip())) + assert actual == set( + ['callpath', 'dyninst', 'libdwarf', 'mpileaks', 'multivalue_variant']) + + +def test_immediate_installed_dependents(builtin_mock, database): + with color_when(False): + out, err = dependents('--installed', 'libelf') + + lines = [l for l in out.strip().split('\n') if not l.startswith('--')] + hashes = set([re.split(r'\s+', l)[0] for l in lines]) + + expected = set([spack.store.db.query_one(s).dag_hash(7) + for s in ['dyninst', 'libdwarf']]) + + libelf = spack.store.db.query_one('libelf') + expected = set([d.dag_hash(7) for d in libelf.dependents()]) + + assert expected == hashes + + +def test_transitive_installed_dependents(builtin_mock, database): + with color_when(False): + out, err = dependents('--installed', '--transitive', 'fake') + + lines = [l for l in out.strip().split('\n') if not l.startswith('--')] + hashes = set([re.split(r'\s+', l)[0] for l in lines]) + + expected = set([spack.store.db.query_one(s).dag_hash(7) + for s in ['zmpi', 'callpath^zmpi', 'mpileaks^zmpi']]) + + assert expected == hashes From 44ce0adbd5b0b0356b4fe0977dc627f589278291 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 31 Jul 2017 17:53:09 -0700 Subject: [PATCH 1366/2394] Fix color bug in Spec.format() introduced by #3013 --- lib/spack/spack/spec.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 71d9f4aac1d..54939d7a6b0 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2706,11 +2706,8 @@ def format(self, format_string='$_$@$%@+$+$=', **kwargs): named_str = fmt = '' def write(s, c): - if color: - f = color_formats[c] + cescape(s) + '@.' - cwrite(f, stream=out, color=color) - else: - out.write(s) + f = color_formats[c] + cescape(s) + '@.' + cwrite(f, stream=out, color=color) iterator = enumerate(format_string) for i, c in iterator: @@ -2802,7 +2799,7 @@ def write(s, c): write(fmt % str(self.variants), '+') elif named_str == 'ARCHITECTURE': if self.architecture and str(self.architecture): - write(fmt % str(self.architecture), ' arch=') + write(fmt % str(self.architecture), '=') elif named_str == 'SHA1': if self.dependencies: out.write(fmt % str(self.dag_hash(7))) From 269925f77539436045d8a1c2a7d8325d3e8d8c7f Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Wed, 2 Aug 2017 15:03:31 +0200 Subject: [PATCH 1367/2394] Protobuf: CMake (#4846) * Protobuf: CMake This rebuilds protobuf to be build with CMake, so cmake config packages are created and installed, too. Unfurtunately, this drops support for protobuf < 3. * Protobuf CMake: Add .pc files * libprotobuf.a: -fPIC * Protobuf: Minor Updates Updates from upstream review and planned patch inclusion. --- .../builtin/packages/protobuf/package.py | 28 +++++---- .../builtin/packages/protobuf/pkgconfig.patch | 58 +++++++++++++++++++ 2 files changed, 71 insertions(+), 15 deletions(-) create mode 100644 var/spack/repos/builtin/packages/protobuf/pkgconfig.patch diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index 50b190f70ea..4183330938a 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -25,31 +25,29 @@ from spack import * -class Protobuf(AutotoolsPackage): +class Protobuf(CMakePackage): """Google's data interchange format.""" homepage = "https://developers.google.com/protocol-buffers" url = "https://github.com/google/protobuf/archive/v3.2.0.tar.gz" + root_cmakelists_dir = "cmake" version('3.2.0', '61d899b8369781f6dd1e62370813392d') version('3.1.0', '14a532a7538551d5def317bfca41dace') version('3.0.2', '845b39e4b7681a2ddfd8c7f528299fbb') - version('2.5.0', '9c21577a03adc1879aba5b52d06e25cf') + # does not build with CMake: + # version('2.5.0', '9c21577a03adc1879aba5b52d06e25cf') - depends_on('automake', type='build') - depends_on('autoconf', type='build') - depends_on('libtool', type='build') - depends_on('m4', type='build') + depends_on('zlib') conflicts('%gcc@:4.6') # Requires c++11 - variant('shared', default=True, description='Build shared libraries.') + # first fixed in 3.4.0: https://github.com/google/protobuf/pull/3406 + patch('pkgconfig.patch', when='@:3.3.2') - def configure_args(self): - if '+shared' in self.spec: - return ['--enable-shared=yes', - '--enable-static=no'] - else: - return ['--enable-shared=no', - '--enable-static=yes', - '--with-pic=yes'] + def cmake_args(self): + args = [ + '-Dprotobuf_BUILD_TESTS:BOOL=OFF', + '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON' + ] + return args diff --git a/var/spack/repos/builtin/packages/protobuf/pkgconfig.patch b/var/spack/repos/builtin/packages/protobuf/pkgconfig.patch new file mode 100644 index 00000000000..a0e8b4b3b72 --- /dev/null +++ b/var/spack/repos/builtin/packages/protobuf/pkgconfig.patch @@ -0,0 +1,58 @@ +diff --git a/cmake/install.cmake b/cmake/install.cmake +index 28dc90d..441bf55 100644 +--- a/cmake/install.cmake ++++ b/cmake/install.cmake +@@ -1,5 +1,10 @@ + include(GNUInstallDirs) + ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/protobuf.pc.cmake ++ ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc @ONLY) ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/protobuf-lite.pc.cmake ++ ${CMAKE_CURRENT_BINARY_DIR}/protobuf-lite.pc @ONLY) ++ + foreach(_library + libprotobuf-lite + libprotobuf +@@ -17,6 +22,8 @@ endforeach() + install(TARGETS protoc EXPORT protobuf-targets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT protoc) + ++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc ${CMAKE_CURRENT_BINARY_DIR}/protobuf-lite.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") ++ + file(STRINGS extract_includes.bat.in _extract_strings + REGEX "^copy") + foreach(_extract_string ${_extract_strings}) +diff --git a/cmake/protobuf-lite.pc.cmake b/cmake/protobuf-lite.pc.cmake +new file mode 100644 +index 0000000..cbe5426 +--- /dev/null ++++ b/cmake/protobuf-lite.pc.cmake +@@ -0,0 +1,11 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++exec_prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ ++ ++Name: Protocol Buffers ++Description: Google's Data Interchange Format ++Version: @protobuf_VERSION@ ++Libs: -L${libdir} -lprotobuf-lite @CMAKE_THREAD_LIBS_INIT@ ++Cflags: -I${includedir} @CMAKE_THREAD_LIBS_INIT@ ++Conflicts: protobuf +diff --git a/cmake/protobuf.pc.cmake b/cmake/protobuf.pc.cmake +new file mode 100644 +index 0000000..2e30763 +--- /dev/null ++++ b/cmake/protobuf.pc.cmake +@@ -0,0 +1,11 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++exec_prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ ++ ++Name: Protocol Buffers ++Description: Google's Data Interchange Format ++Version: @protobuf_VERSION@ ++Libs: -L${libdir} -lprotobuf @CMAKE_THREAD_LIBS_INIT@ ++Cflags: -I${includedir} @CMAKE_THREAD_LIBS_INIT@ ++Conflicts: protobuf-lite From 963eb99b7f7306d69a755ddd50bd8b8fca0076c3 Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Thu, 3 Aug 2017 09:17:07 +0200 Subject: [PATCH 1368/2394] Account for hyphens in package names when searching for libraries. (#4948) --- lib/spack/spack/spec.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 54939d7a6b0..cbbd48d9fa5 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -802,7 +802,18 @@ def _libs_default_handler(descriptor, spec, cls): Raises: RuntimeError: If no libraries are found """ - name = 'lib' + spec.name + + # Variable 'name' is passed to function 'find_libraries', which supports + # glob characters. For example, we have a package with a name 'abc-abc'. + # Now, we don't know if the original name of the package is 'abc_abc' + # (and it generates a library 'libabc_abc.so') or 'abc-abc' (and it + # generates a library 'libabc-abc.so'). So, we tell the function + # 'find_libraries' to give us anything that matches 'libabc?abc' and it + # gives us either 'libabc-abc.so' or 'libabc_abc.so' (or an error) + # depending on which one exists (there is a possibility, of course, to + # get something like 'libabcXabc.so, but for now we consider this + # unlikely). + name = 'lib' + spec.name.replace('-', '?') if '+shared' in spec: libs = find_libraries( From 687904c7144418597ed04dfc793961ae347816a4 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 3 Aug 2017 09:32:44 -0700 Subject: [PATCH 1369/2394] New package for canu (#4937) * Add package for canu There's a top-level perl script, which is touched up to use a spack-built perl instead of `#!/usr/bin/env perl`. It's self-contained, it uses `FindBin` to locate it's libaries. * Add dependency on gnuplot I noticed a hidden mention of the use of gnuplot in the docs. This adds the dependency. * Tighten dependencies, flake8 cleanup gnuplot is a run dependency. jdk is a run dependency. perl is a run dependency. Make flake8 happy. --- .../repos/builtin/packages/canu/package.py | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 var/spack/repos/builtin/packages/canu/package.py diff --git a/var/spack/repos/builtin/packages/canu/package.py b/var/spack/repos/builtin/packages/canu/package.py new file mode 100644 index 00000000000..fd6acfec0f1 --- /dev/null +++ b/var/spack/repos/builtin/packages/canu/package.py @@ -0,0 +1,61 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Canu(MakefilePackage): + """A single molecule sequence assembler for genomes large and + small.""" + + homepage = "http://canu.readthedocs.io/" + url = "https://github.com/marbl/canu/archive/v1.5.tar.gz" + + version('1.5', '65df275baa28ecf11b15dfd7343361e3') + + depends_on('gnuplot', type='run') + depends_on('jdk', type='run') + depends_on('perl', type='run') + + build_directory = 'src' + + def patch(self): + # Use our perl, not whatever is in the environment + perl = self.spec['perl'].prefix.bin.perl + filter_file(r'^#!/usr/bin/env perl', + '#!{0}'.format(perl), + 'src/pipelines/canu.pl') + + def install(self, spec, prefix): + # replicate the Makefile logic here: + # https://github.com/marbl/canu/blob/master/src/Makefile#L344 + uname = which('uname') + ostype = uname(output=str).strip() + machinetype = uname('-m', output=str).strip() + if machinetype == 'x86_64': + machinetype = 'amd64' + target_dir = '{0}-{1}'.format(ostype, machinetype) + bin = join_path(target_dir, 'bin') + + install_tree(bin, prefix.bin) From d087eeacbd04a398903e1fdd0c294351d73a52c1 Mon Sep 17 00:00:00 2001 From: homerdin Date: Thu, 3 Aug 2017 12:13:44 -0500 Subject: [PATCH 1370/2394] CloverLeaf, miniGhost, miniMD, miniSMAC2D, miniXyce: Adding Tags (#4963) --- var/spack/repos/builtin/packages/cloverleaf/package.py | 2 ++ var/spack/repos/builtin/packages/minighost/package.py | 2 ++ var/spack/repos/builtin/packages/minimd/package.py | 2 ++ var/spack/repos/builtin/packages/minismac2d/package.py | 2 ++ var/spack/repos/builtin/packages/minixyce/package.py | 2 ++ 5 files changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/cloverleaf/package.py b/var/spack/repos/builtin/packages/cloverleaf/package.py index cd152acb6b8..bc54ef61eae 100644 --- a/var/spack/repos/builtin/packages/cloverleaf/package.py +++ b/var/spack/repos/builtin/packages/cloverleaf/package.py @@ -37,6 +37,8 @@ class Cloverleaf(MakefilePackage): homepage = "http://uk-mac.github.io/CloverLeaf" url = "http://mantevo.org/downloads/releaseTarballs/miniapps/CloverLeaf/CloverLeaf-1.1.tar.gz" + tags = ['proxy-app'] + version('1.1', '65652b30a64eb237ec844a6fdd4cd518') variant('build', default='ref', description='Type of Parallelism Build', diff --git a/var/spack/repos/builtin/packages/minighost/package.py b/var/spack/repos/builtin/packages/minighost/package.py index a1d62052ac8..59b0b33dc4c 100644 --- a/var/spack/repos/builtin/packages/minighost/package.py +++ b/var/spack/repos/builtin/packages/minighost/package.py @@ -37,6 +37,8 @@ class Minighost(MakefilePackage): homepage = "http://mantevo.org" url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniGhost/miniGhost_1.0.1.tar.gz" + tags = ['proxy-app'] + version('1.0.1', '2a4ac4383e9be00f87b6067c3cfe6463') variant('mpi', default=True, description='Enable MPI Support') diff --git a/var/spack/repos/builtin/packages/minimd/package.py b/var/spack/repos/builtin/packages/minimd/package.py index ec090038862..a8d72e70157 100644 --- a/var/spack/repos/builtin/packages/minimd/package.py +++ b/var/spack/repos/builtin/packages/minimd/package.py @@ -37,6 +37,8 @@ class Minimd(MakefilePackage): homepage = "http://mantevo.org" url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniMD/miniMD_1.2.tgz" + tags = ['proxy-app'] + version('1.2', '893ef1ca5062e32b43a8d11bcfe1a056') depends_on('mpi') diff --git a/var/spack/repos/builtin/packages/minismac2d/package.py b/var/spack/repos/builtin/packages/minismac2d/package.py index 687ea744556..b519128b19a 100644 --- a/var/spack/repos/builtin/packages/minismac2d/package.py +++ b/var/spack/repos/builtin/packages/minismac2d/package.py @@ -35,6 +35,8 @@ class Minismac2d(MakefilePackage): homepage = "http://mantevo.org" url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniSMAC2D/miniSMAC2D-2.0.tgz" + tags = ['proxy-app'] + version('2.0', '1bb1a52cea21bc9162bf7a71a6ddf37d') depends_on('mpi') diff --git a/var/spack/repos/builtin/packages/minixyce/package.py b/var/spack/repos/builtin/packages/minixyce/package.py index 718a195d27c..46d160d2da1 100644 --- a/var/spack/repos/builtin/packages/minixyce/package.py +++ b/var/spack/repos/builtin/packages/minixyce/package.py @@ -34,6 +34,8 @@ class Minixyce(MakefilePackage): homepage = "https://mantevo.org" url = "http://mantevo.org/downloads/releaseTarballs/miniapps/MiniXyce/miniXyce_1.0.tar.gz" + tags = ['proxy-app'] + version('1.0', '6fc0e5a561af0b8ff581d9f704194133') variant('mpi', default=True, description='Build with MPI Support') From 5ac10b90c532e075c7be4bfea477c6fe833ee7ff Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 3 Aug 2017 12:18:23 -0500 Subject: [PATCH 1371/2394] Add database support to apr-util package (#4932) --- .../builtin/packages/apr-util/package.py | 94 ++++++++++++++++--- 1 file changed, 82 insertions(+), 12 deletions(-) diff --git a/var/spack/repos/builtin/packages/apr-util/package.py b/var/spack/repos/builtin/packages/apr-util/package.py index 4b63e416006..6330daa4d7b 100644 --- a/var/spack/repos/builtin/packages/apr-util/package.py +++ b/var/spack/repos/builtin/packages/apr-util/package.py @@ -25,23 +25,93 @@ from spack import * -class AprUtil(Package): +class AprUtil(AutotoolsPackage): """Apache Portable Runtime Utility""" - homepage = 'https://apr.apache.org/' - url = 'http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz' - version('1.5.4', '866825c04da827c6e5f53daff5569f42') + homepage = 'https://apr.apache.org/' + url = 'http://archive.apache.org/dist/apr/apr-util-1.6.0.tar.gz' + + version('1.6.0', '3b03dbff60728a4f4c33f5d929e8b35a') + version('1.5.4', '866825c04da827c6e5f53daff5569f42') + + variant('crypto', default=True, description='Enable crypto support') + variant('gdbm', default=False, description='Enable GDBM support') + variant('pgsql', default=False, description='Enable PostgreSQL support') + variant('sqlite', default=False, description='Enable sqlite DBD driver') + variant('odbc', default=False, description='Enalbe ODBC support') depends_on('apr') depends_on('expat') + depends_on('libiconv') - def install(self, spec, prefix): + depends_on('openssl', when='+crypto') + depends_on('gdbm', when='+gdbm') + depends_on('postgresql', when='+pgsql') + depends_on('sqlite', when='+sqlite') + depends_on('unixodbc', when='+odbc') - # configure, build, install: - options = ['--prefix=%s' % prefix] - options.append('--with-apr=%s' % spec['apr'].prefix) - options.append('--with-expat=%s' % spec['expat'].prefix) + def configure_args(self): + spec = self.spec - configure(*options) - make() - make('install') + args = [ + '--with-apr={0}'.format(spec['apr'].prefix), + '--with-expat={0}'.format(spec['expat'].prefix), + '--with-iconv={0}'.format(spec['libiconv'].prefix), + # TODO: Add support for the following database managers + '--without-ndbm', + '--without-berkeley-db', + '--without-mysql', + '--without-oracle', + ] + + if '+crypto' in spec: + args.extend([ + '--with-crypto', + '--with-openssl={0}'.format(spec['openssl'].prefix), + ]) + else: + args.append('--without-crypto') + + if '+gdbm' in spec: + args.append('--with-gdbm={0}'.format(spec['gdbm'].prefix)) + else: + args.append('--without-gdbm') + + if '+pgsql' in spec: + args.append('--with-pgsql={0}'.format(spec['postgresql'].prefix)) + else: + args.append('--without-pgsql') + + if '+sqlite' in spec: + if spec.satisfies('^sqlite@3.0:3.999'): + args.extend([ + '--with-sqlite3={0}'.format(spec['sqlite'].prefix), + '--without-sqlite2', + ]) + elif spec.satisfies('^sqlite@2.0:2.999'): + args.extend([ + '--with-sqlite2={0}'.format(spec['sqlite'].prefix), + '--without-sqlite3', + ]) + else: + args.extend([ + '--without-sqlite2', + '--without-sqlite3', + ]) + + if '+odbc' in spec: + args.append('--with-odbc={0}'.format(spec['unixodbc'].prefix)) + else: + args.append('--without-odbc') + + return args + + def check(self): + # FIXME: Database driver tests fail, at least on macOS: + # + # Failed to load driver file apr_dbd_pgsql.so + # Failed to load driver file apr_dbd_sqlite3.so + # Failed to load driver file apr_dbd_odbc.so + + # Tests occassionally fail when run in parallel + make('check', parallel=False) From 36496b91740b2af0099dce6066722f763b38341f Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 3 Aug 2017 10:33:16 -0700 Subject: [PATCH 1372/2394] Fix crashes when running spack install under nohup (#4926) * Fix crashes when running spack install under nohup Fixes #4919 For reasons that I do not entire understand, duplicate_stream() throws an '[Errno 22] Invalid argument' exception when it tries to `os.fdopen()` the duplicated file descriptor generated by `os.dup(original.fileno())`. See spack/llnl/util/lang.py, line 394-ish. This happens when run under `nohup`, which supposedly has hooked `stdin` to `/dev/null`. It seems like opening and using `devnull` on the `input_stream` in this situation is a reasonable way to handle the problem. * Be more specific about error being handled. Only catch the specific error that happens when trying to dup the stdin that nohup provides. Catching e as a StandardErorr and then `type(e).__name__` tells me that it's an OSError. Printing e.errno tells me that it's 22 Double checking tells me that 22 is EINVAL. Phew. --- lib/spack/spack/build_environment.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 571f0f8c49a..e41edc14f86 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -54,6 +54,7 @@ import inspect import multiprocessing import os +import errno import shutil import sys import traceback @@ -577,8 +578,15 @@ def child_execution(child_connection, input_stream): parent_connection, child_connection = multiprocessing.Pipe() try: # Forward sys.stdin to be able to activate / deactivate - # verbosity pressing a key at run-time - input_stream = lang.duplicate_stream(sys.stdin) + # verbosity pressing a key at run-time. When sys.stdin can't + # be duplicated (e.g. running under nohup, which results in an + # '[Errno 22] Invalid argument') then just use os.devnull + try: + input_stream = lang.duplicate_stream(sys.stdin) + except OSError as e: + if e.errno == errno.EINVAL: + tty.debug("Using devnull as input_stream") + input_stream = open(os.devnull) p = multiprocessing.Process( target=child_execution, args=(child_connection, input_stream) From 4e269510c565ad7be52bd9c290af19c7115e67af Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 3 Aug 2017 14:24:51 -0500 Subject: [PATCH 1373/2394] Fix trailing whitespace at the end of headers.cpp_flags (#4957) --- lib/spack/llnl/util/filesystem.py | 93 +++++++++++++++++++++++++------ 1 file changed, 77 insertions(+), 16 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 7a9fb7b8ac9..bedc7c9de21 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -549,7 +549,7 @@ def find(root, files, recurse=True): if True descends top-down from the root. Defaults to True. Returns: - :func:`list`: The files that have been found + list of strings: The files that have been found """ if isinstance(files, six.string_types): files = [files] @@ -618,9 +618,14 @@ def directories(self): """Stable de-duplication of the directories where the files reside. >>> l = LibraryList(['/dir1/liba.a', '/dir2/libb.a', '/dir1/libc.a']) - >>> assert l.directories == ['/dir1', '/dir2'] + >>> l.directories + ['/dir1', '/dir2'] >>> h = HeaderList(['/dir1/a.h', '/dir1/b.h', '/dir2/c.h']) - >>> assert h.directories == ['/dir1', '/dir2'] + >>> h.directories + ['/dir1', '/dir2'] + + Returns: + list of strings: A list of directories """ return list(dedupe( os.path.dirname(x) for x in self.files if os.path.dirname(x) @@ -631,18 +636,27 @@ def basenames(self): """Stable de-duplication of the base-names in the list >>> l = LibraryList(['/dir1/liba.a', '/dir2/libb.a', '/dir3/liba.a']) - >>> assert l.basenames == ['liba.a', 'libb.a'] + >>> l.basenames + ['liba.a', 'libb.a'] >>> h = HeaderList(['/dir1/a.h', '/dir2/b.h', '/dir3/a.h']) - >>> assert h.basenames == ['a.h', 'b.h'] + >>> h.basenames + ['a.h', 'b.h'] + + Returns: + list of strings: A list of base-names """ return list(dedupe(os.path.basename(x) for x in self.files)) @property def names(self): - """Stable de-duplication of file names in the list + """Stable de-duplication of file names in the list without extensions >>> h = HeaderList(['/dir1/a.h', '/dir2/b.h', '/dir3/a.h']) - >>> assert h.names == ['a', 'b'] + >>> h.names + ['a', 'b'] + + Returns: + list of strings: A list of files without extensions """ return list(dedupe(x.split('.')[0] for x in self.basenames)) @@ -688,6 +702,11 @@ def __init__(self, files): @property def headers(self): + """Stable de-duplication of the headers. + + Returns: + list of strings: A list of header files + """ return self.files @property @@ -695,7 +714,11 @@ def include_flags(self): """Include flags >>> h = HeaderList(['/dir1/a.h', '/dir1/b.h', '/dir2/c.h']) - >>> assert h.cpp_flags == '-I/dir1 -I/dir2' + >>> h.include_flags + '-I/dir1 -I/dir2' + + Returns: + str: A joined list of include flags """ return ' '.join(['-I' + x for x in self.directories]) @@ -706,7 +729,11 @@ def macro_definitions(self): >>> h = HeaderList(['/dir1/a.h', '/dir1/b.h', '/dir2/c.h']) >>> h.add_macro('-DBOOST_LIB_NAME=boost_regex') >>> h.add_macro('-DBOOST_DYN_LINK') - >>> assert h.macro_definitions == '-DBOOST_LIB_NAME=boost_regex -DBOOST_DYN_LINK' # noqa + >>> h.macro_definitions + '-DBOOST_LIB_NAME=boost_regex -DBOOST_DYN_LINK' + + Returns: + str: A joined list of macro definitions """ return ' '.join(self._macro_definitions) @@ -715,13 +742,26 @@ def cpp_flags(self): """Include flags + macro definitions >>> h = HeaderList(['/dir1/a.h', '/dir1/b.h', '/dir2/c.h']) + >>> h.cpp_flags + '-I/dir1 -I/dir2' >>> h.add_macro('-DBOOST_DYN_LINK') - >>> assert h.macro_definitions == '-I/dir1 -I/dir2 -DBOOST_DYN_LINK' + >>> h.cpp_flags + '-I/dir1 -I/dir2 -DBOOST_DYN_LINK' + + Returns: + str: A joined list of include flags and macro definitions """ - return self.include_flags + ' ' + self.macro_definitions + cpp_flags = self.include_flags + if self.macro_definitions: + cpp_flags += ' ' + self.macro_definitions + return cpp_flags def add_macro(self, macro): - """Add a macro definition""" + """Add a macro definition + + Parameters: + macro (str): The macro to add + """ self._macro_definitions.append(macro) @@ -775,6 +815,11 @@ class LibraryList(FileList): @property def libraries(self): + """Stable de-duplication of library files. + + Returns: + list of strings: A list of library files + """ return self.files @property @@ -782,7 +827,11 @@ def names(self): """Stable de-duplication of library names in the list >>> l = LibraryList(['/dir1/liba.a', '/dir2/libb.a', '/dir3/liba.so']) - >>> assert l.names == ['a', 'b'] + >>> l.names + ['a', 'b'] + + Returns: + list of strings: A list of library names """ return list(dedupe(x.split('.')[0][3:] for x in self.basenames)) @@ -791,7 +840,11 @@ def search_flags(self): """Search flags for the libraries >>> l = LibraryList(['/dir1/liba.a', '/dir2/libb.a', '/dir1/liba.so']) - >>> assert l.search_flags == '-L/dir1 -L/dir2' + >>> l.search_flags + '-L/dir1 -L/dir2' + + Returns: + str: A joined list of search flags """ return ' '.join(['-L' + x for x in self.directories]) @@ -800,7 +853,11 @@ def link_flags(self): """Link flags for the libraries >>> l = LibraryList(['/dir1/liba.a', '/dir2/libb.a', '/dir1/liba.so']) - >>> assert l.search_flags == '-la -lb' + >>> l.link_flags + '-la -lb' + + Returns: + str: A joined list of link flags """ return ' '.join(['-l' + name for name in self.names]) @@ -809,7 +866,11 @@ def ld_flags(self): """Search flags + link flags >>> l = LibraryList(['/dir1/liba.a', '/dir2/libb.a', '/dir1/liba.so']) - >>> assert l.search_flags == '-L/dir1 -L/dir2 -la -lb' + >>> l.ld_flags + '-L/dir1 -L/dir2 -la -lb' + + Returns: + str: A joined list of search flags and link flags """ return self.search_flags + ' ' + self.link_flags From f24398cde6902ae7871d7bd1992a0e1a08c47ab0 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Thu, 3 Aug 2017 12:57:58 -0700 Subject: [PATCH 1374/2394] Add package for libbsd, add variant to expat for libbsd (#4945) * Add package for libbsd, add variant to expat for libbsd The recent expat release requires a high quality source of randomness. CentOS 7 does not seem to have one, but one is available in libbsd. This commit adds a package for libbsd and adds a variant to expat to use it (defaults to False). * Make libbsd default for newer, conflict for older Make the libbsd variant default to true. Conflict if you're asking for libbsd and an older version of expat. This means that in order to install an older version of expat you'll need to specify `~libbsd`. * Rework so that 2.2.0 and 2.2.2 work by default Get rid of the conflicts and use better constraints/tests in the `depends_on` and the `configure_args` bits. --- .../repos/builtin/packages/expat/package.py | 19 ++++++++++ .../repos/builtin/packages/libbsd/package.py | 38 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libbsd/package.py diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index 66b04419b04..091c1f462e7 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -31,5 +31,24 @@ class Expat(AutotoolsPackage): homepage = "http://expat.sourceforge.net/" url = "https://sourceforge.net/projects/expat/files/expat/2.2.2/expat-2.2.2.tar.bz2" + # Version 2.2.2 introduced a requirement for a high quality + # entropy source. "Older" linux systems (aka CentOS 7) do not + # support get_random so we'll provide a high quality source via + # libbsd. + # There's no need for it in earlier versions, so 'conflict' if + # someone's asking for an older version and also libbsd. + # In order to install an older version, you'll need to add + # `~libbsd`. + variant('libbsd', default=True, + description="Use libbsd (for high quality randomness)") + depends_on('libbsd', when="@2.2.1:+libbsd") + version('2.2.2', '1ede9a41223c78528b8c5d23e69a2667') version('2.2.0', '2f47841c829facb346eb6e3fab5212e2') + + def configure_args(self): + spec = self.spec + args = [] + if '+libbsd' in spec and '@2.2.1:' in spec: + args = ['--with-libbsd'] + return args diff --git a/var/spack/repos/builtin/packages/libbsd/package.py b/var/spack/repos/builtin/packages/libbsd/package.py new file mode 100644 index 00000000000..ab64c4babdc --- /dev/null +++ b/var/spack/repos/builtin/packages/libbsd/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libbsd(AutotoolsPackage): + """This library provides useful functions commonly found on BSD + systems, and lacking on others like GNU systems, thus making it easier + to port projects with strong BSD origins, without needing to embed the + same code over and over again on each project. + """ + + homepage = "https://libbsd.freedesktop.org/wiki/" + url = "https://libbsd.freedesktop.org/releases/libbsd-0.8.6.tar.xz" + + version('0.8.6', '4ab7bec639af17d0aacb50222b479110') From 8a7678cae07bd29180ac26aa4542c7d7fb8953f2 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Thu, 3 Aug 2017 23:35:28 +0200 Subject: [PATCH 1375/2394] Version: Dev -> Develop (#4947) Adjust the CRP packages with the properly defined version label "develop" which is now standardized in spack. --- var/spack/repos/builtin/packages/libsplash/package.py | 2 +- var/spack/repos/builtin/packages/mallocmc/package.py | 2 +- var/spack/repos/builtin/packages/pngwriter/package.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/libsplash/package.py b/var/spack/repos/builtin/packages/libsplash/package.py index 2a0d2dfb095..c2d8bc1881e 100644 --- a/var/spack/repos/builtin/packages/libsplash/package.py +++ b/var/spack/repos/builtin/packages/libsplash/package.py @@ -37,7 +37,7 @@ class Libsplash(CMakePackage): homepage = "https://github.com/ComputationalRadiationPhysics/libSplash" url = "https://github.com/ComputationalRadiationPhysics/libSplash/archive/v1.4.0.tar.gz" - version('dev', branch='dev', + version('develop', branch='dev', git='https://github.com/ComputationalRadiationPhysics/libSplash.git') version('master', branch='master', git='https://github.com/ComputationalRadiationPhysics/libSplash.git') diff --git a/var/spack/repos/builtin/packages/mallocmc/package.py b/var/spack/repos/builtin/packages/mallocmc/package.py index 3134a3c1e69..333aea20345 100644 --- a/var/spack/repos/builtin/packages/mallocmc/package.py +++ b/var/spack/repos/builtin/packages/mallocmc/package.py @@ -40,7 +40,7 @@ class Mallocmc(CMakePackage): homepage = "https://github.com/ComputationalRadiationPhysics/mallocMC" url = "https://github.com/ComputationalRadiationPhysics/mallocMC/archive/2.2.0crp.tar.gz" - version('dev', branch='dev', + version('develop', branch='dev', git='https://github.com/ComputationalRadiationPhysics/mallocMC.git') version('master', branch='master', git='https://github.com/ComputationalRadiationPhysics/mallocMC.git') diff --git a/var/spack/repos/builtin/packages/pngwriter/package.py b/var/spack/repos/builtin/packages/pngwriter/package.py index 664421ceab7..1f7c20575f7 100644 --- a/var/spack/repos/builtin/packages/pngwriter/package.py +++ b/var/spack/repos/builtin/packages/pngwriter/package.py @@ -38,7 +38,7 @@ class Pngwriter(CMakePackage): homepage = "http://pngwriter.sourceforge.net/" url = "https://github.com/pngwriter/pngwriter/archive/0.5.6.tar.gz" - version('dev', branch='dev', + version('develop', branch='dev', git='https://github.com/pngwriter/pngwriter.git') version('master', branch='master', git='https://github.com/pngwriter/pngwriter.git') From bb4692fdb6c2ac915098c3f51d2ba574d5641f15 Mon Sep 17 00:00:00 2001 From: Elsa Gonsiorowski Date: Thu, 3 Aug 2017 16:52:52 -0700 Subject: [PATCH 1376/2394] SCR CMake package (#3916) * SCR CMake package * Fix dtcmp variant description and set pdsh deptypes to build/run * added variants for system config file location * add variants for several scr cmake options * Added more variants for compile time options * Added libyogrt and made corrosponding changes to scr package. * Cleanup yogrt package now that Ive verified it works * Added description for libyogrt * upper case async api names * Make use of mv variants * fix pdsh package for scr * added IBM BBAPI as async option * update pdsh and scr to use static pdsh modules --- .../builtin/packages/libyogrt/package.py | 38 ++++++ .../repos/builtin/packages/pdsh/package.py | 12 ++ .../repos/builtin/packages/scr/package.py | 125 ++++++++++++++++-- 3 files changed, 162 insertions(+), 13 deletions(-) create mode 100644 var/spack/repos/builtin/packages/libyogrt/package.py diff --git a/var/spack/repos/builtin/packages/libyogrt/package.py b/var/spack/repos/builtin/packages/libyogrt/package.py new file mode 100644 index 00000000000..1ad98ebaa0e --- /dev/null +++ b/var/spack/repos/builtin/packages/libyogrt/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libyogrt(AutotoolsPackage): + """Your One Get Remaining Time Library.""" + + homepage = "https://github.com/LLNL/libyogrt" + url = "https://github.com/LLNL/libyogrt/archive/1.20-6.tar.gz" + + version('1.20-6', '478f27512842cc5f2b74a0c22b851f60') + version('1.20-5', 'd0fa6526fcd1f56ddb3d93f602ec72f7') + version('1.20-4', '092bea10de22c505ce92aa07001decbb') + version('1.20-3', 'd0507717009a5f8e2009e3b63594738f') + version('1.20-2', '780bda03268324f6b5f72631fff6e6cb') diff --git a/var/spack/repos/builtin/packages/pdsh/package.py b/var/spack/repos/builtin/packages/pdsh/package.py index 3d0d265409b..06457ba38cd 100644 --- a/var/spack/repos/builtin/packages/pdsh/package.py +++ b/var/spack/repos/builtin/packages/pdsh/package.py @@ -34,3 +34,15 @@ class Pdsh(AutotoolsPackage): url = "https://github.com/grondo/pdsh/archive/pdsh-2.31.tar.gz" version('2.31', 'cab34b0ca78f3cf596fd648b265223ed') + + variant('ssh', default=True, description="Build with ssh module") + + variant('static_modules', default=True, description="Build with static modules") + + def configure_args(self): + args = [] + if '+ssh' in self.spec: + args.append('--with-ssh') + if '+static_modules' in self.spec: + args.append('--enable-static-modules') + return args diff --git a/var/spack/repos/builtin/packages/scr/package.py b/var/spack/repos/builtin/packages/scr/package.py index f8fe72f1108..1ab117721c7 100644 --- a/var/spack/repos/builtin/packages/scr/package.py +++ b/var/spack/repos/builtin/packages/scr/package.py @@ -24,24 +24,123 @@ ############################################################################## from spack import * +import os +import shutil -class Scr(Package): + +class Scr(CMakePackage): """SCR caches checkpoint data in storage on the compute nodes of a Linux cluster to provide a fast, scalable checkpoint/restart capability for MPI codes""" - homepage = "https://computation.llnl.gov/project/scr/" + homepage = "http://computation.llnl.gov/projects/scalable-checkpoint-restart-for-mpi" - depends_on("mpi") -# depends_on("dtcmp") + # NOTE: scr-v1.1.8 is built with autotools and is not properly build here. + # scr-v1.1.8 will be deprecated with the upcoming release of v1.2.0 + # url = "https://github.com/LLNL/scr/releases/download/v1.1.8/scr-1.1.8.tar.gz" + # version('1.1.8', '6a0f11ad18e27fcfc00a271ff587b06e') - version('1.1-7', 'a5930e9ab27d1b7049447c2fd7734ebd', - url='http://downloads.sourceforge.net/project/scalablecr/releases/scr-1.1-7.tar.gz') - version('1.1.8', '6a0f11ad18e27fcfc00a271ff587b06e', - url='https://github.com/hpc/scr/releases/download/v1.1.8/scr-1.1.8.tar.gz') + version('master', git='https://github.com/llnl/scr.git', branch='master') - def install(self, spec, prefix): - configure("--prefix=" + prefix, - "--with-scr-config-file=" + prefix + "/etc/scr.conf") - make() - make("install") + depends_on('pdsh+static_modules', type=('build', 'run')) + depends_on('zlib') + depends_on('mpi') + + variant('dtcmp', default=True, + description="Build with DTCMP. " + "Necessary to enable user directory naming at runtime") + depends_on('dtcmp', when="+dtcmp") + + variant('libyogrt', default=True, + description="Build SCR with libyogrt for get_time_remaining.") + depends_on('libyogrt', when="+libyogrt") + + # MySQL not yet in spack + # variant('mysql', default=True, decription="MySQL database for logging") + # depends_on('mysql', when="+mysql") + + variant('scr_config', default='scr.conf', + description='Location for SCR to find its system config file. ' + 'May be either absolute or relative to the install prefix') + variant('copy_config', default=None, + description='Location from which to copy SCR system config file. ' + 'Must be an absolute path.') + + variant('fortran', default=True, + description="Build SCR with fortran bindings") + + variant('resource_manager', default='SLURM', + values=('SLURM', 'APRUN', 'PMIX', 'LSF', 'NONE'), + multi=False, + description="Resource manager for which to configure SCR.") + + variant('async_api', default='NONE', + values=('NONE', 'CRAY_DW', 'IBM_BBAPI', 'INTEL_CPPR'), + multi=False, + description="Asynchronous data transfer API to use with SCR.") + + variant('file_lock', default='FLOCK', + values=('FLOCK', 'FNCTL', 'NONE'), + multi=False, + description='File locking style for SCR.') + + variant('cache_base', default='/tmp', + description='Compile time default location for checkpoint cache.') + variant('cntl_base', default='/tmp', + description='Compile time default location for control directory.') + + def get_abs_path_rel_prefix(self, path): + # Return path if absolute, otherwise prepend prefix + if os.path.isabs(path): + return path + else: + return join_path(self.spec.prefix, path) + + def cmake_args(self): + spec = self.spec + args = [] + + args.append('-DENABLE_FORTRAN={0}'.format('+fortran' in spec)) + + conf_path = self.get_abs_path_rel_prefix( + self.spec.variants['scr_config'].value) + args.append('-DCMAKE_SCR_CONFIG_FILE={0}'.format(conf_path)) + + # We uppercase the values for these to avoid unnecessary user error. + args.append('-DSCR_RESOURCE_MANAGER={0}'.format( + spec.variants['resource_manager'].value.upper())) + + args.append('-DSCR_ASYNC_API={0}'.format( + spec.variants['async_api'].value.upper())) + + args.append('-DSCR_FILE_LOCK={0}'.format( + spec.variants['file_lock'].value.upper())) + + args.append('-DSCR_CACHE_BASE={0}'.format( + spec.variants['cache_base'].value)) + + args.append('-DSCR_CNTL_BASE={0}'.format( + spec.variants['cntl_base'].value)) + + args.append('-DWITH_PDSH_PREFIX={0}'.format(spec['pdsh'].prefix)) + + if "+dtcmp" in spec: + args.append('-DWITH_DTCMP_PREFIX={0}'.format(spec['dtcmp'].prefix)) + + if "+libyogrt" in spec: + args.append('-DWITH_YOGRT_PREFIX={0}'.format( + spec['libyogrt'].prefix)) + + # if "+mysql" in spec: + # args.append('-DWITH_MYSQL_PREFIX={0}'.format( + # spec['mysql'].prefix)) + + return args + + @run_after('install') + def copy_config(self): + spec = self.spec + if spec.variants['copy_config'].value: + dest_path = self.get_abs_path_rel_prefix( + spec.variants['scr_config'].value) + shutil.copyfile(spec.variants['copy_config'].value, dest_path) From 739bb9e5b78489e2c0d724be64fbc43e393df015 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 4 Aug 2017 08:17:28 -0500 Subject: [PATCH 1377/2394] Fix trilinos dependency on superlu-dist (#4968) --- var/spack/repos/builtin/packages/trilinos/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index f69f5bcecb6..9d9804cf9f6 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -203,8 +203,8 @@ class Trilinos(CMakePackage): # work at the end. But let's avoid all this by simply using shared libs depends_on('mumps@5.0:+mpi+shared', when='+mumps') depends_on('scalapack', when='+mumps') + depends_on('superlu-dist', when='+superlu-dist') depends_on('superlu-dist@:4.3', when='@:12.6.1+superlu-dist') - depends_on('superlu-dist', when='@12.6.2:+superlu-dist') depends_on('superlu-dist@develop', when='@develop+superlu-dist') depends_on('superlu-dist@xsdk-0.2.0', when='@xsdk-0.2.0+superlu-dist') depends_on('superlu+fpic@4.3', when='+superlu') From f8dfb6a4866179629b03b2c8796b69ef18ae45df Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Fri, 4 Aug 2017 16:34:58 +0200 Subject: [PATCH 1378/2394] OpenBLAS: one of the patches is not needed starting version 0.2.20. (#4971) --- var/spack/repos/builtin/packages/openblas/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 5afbd1e325d..1a4623ad7e8 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -57,7 +57,8 @@ class Openblas(MakefilePackage): patch('make.patch', when='@0.2.16:') # This patch is in a pull request to OpenBLAS that has not been handled # https://github.com/xianyi/OpenBLAS/pull/915 - patch('openblas_icc.patch', when='%intel') + # UPD: the patch has been merged starting version 0.2.20 + patch('openblas_icc.patch', when='@:0.2.19%intel') patch('openblas_icc_openmp.patch', when='%intel@16.0:') patch('openblas_icc_fortran.patch', when='%intel@16.0:') From 408dfc8e863c00f950d7b084dc92f3b912e03c03 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 4 Aug 2017 09:36:02 -0500 Subject: [PATCH 1379/2394] Qt: disable OpenGL support by default (#4962) * Qt: disable OpenGL support by default * Fix qt+opengl build --- var/spack/repos/builtin/packages/qt/package.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 89e821b68f8..e872a530135 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -53,8 +53,6 @@ class Qt(Package): # OpenSpeedShop project variant('krellpatch', default=False, description="Build with openspeedshop based patch.") - variant('mesa', default=False, - description="Depend on mesa.") variant('gtk', default=False, description="Build with gtkplus.") variant('webkit', default=False, @@ -65,7 +63,7 @@ class Qt(Package): description="Build with D-Bus support.") variant('phonon', default=False, description="Build with phonon support.") - variant('opengl', default=True, + variant('opengl', default=False, description="Build with OpenGL support.") patch('qt3krell.patch', when='@3.3.8b+krellpatch') @@ -109,7 +107,7 @@ class Qt(Package): depends_on("python", when='@5.7.0:', type='build') # OpenGL hardware acceleration - depends_on("mesa", when='@4:+mesa') + depends_on("mesa", when='@4:+opengl') depends_on("libxcb", when=sys.platform != 'darwin') depends_on("libx11", when=sys.platform != 'darwin') From f6c2adc0ada7c569234acf01ee5e3c602e945821 Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Fri, 4 Aug 2017 17:38:54 +0200 Subject: [PATCH 1380/2394] New package libaec: a BSD-licensed replacement for the szip library. (#4437) * Added package for 'libaec'. * New version for package 'libaec'. --- etc/spack/defaults/packages.yaml | 1 + .../repos/builtin/packages/libaec/package.py | 42 +++++++++++++++++++ .../packages/{szip => libszip}/package.py | 4 +- 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/libaec/package.py rename var/spack/repos/builtin/packages/{szip => libszip}/package.py (97%) diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index d04ce76e6b4..36c304d6bf8 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -31,3 +31,4 @@ packages: openfoam: [openfoam-com, openfoam-org, foam-extend] pil: [py-pillow] scalapack: [netlib-scalapack] + szip: [libszip, libaec] diff --git a/var/spack/repos/builtin/packages/libaec/package.py b/var/spack/repos/builtin/packages/libaec/package.py new file mode 100644 index 00000000000..18a54d3e770 --- /dev/null +++ b/var/spack/repos/builtin/packages/libaec/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libaec(CMakePackage): + """Libaec provides fast lossless compression of 1 up to 32 bit wide signed + or unsigned integers (samples). It implements Golomb-Rice compression + method under the BSD license and includes a free drop-in replacement for + the SZIP library.""" + + homepage = 'https://gitlab.dkrz.de/k202009/libaec' + + # We provide per version urls. + url = 'https://gitlab.dkrz.de/k202009/libaec/uploads/' + + provides('szip') + + version('1.0.1', 'cdf70e2b8f9153ee644710bb441f9e1e', url=url + '926fe2b181865e38a236ad12bf053cfa/libaec-1.0.1.tar.gz') + version('1.0.0', 'a848b4e397ed210313183a5e92592e42', url=url + '631e85bcf877c2dcaca9b2e6d6526339/libaec-1.0.0.tar.gz') diff --git a/var/spack/repos/builtin/packages/szip/package.py b/var/spack/repos/builtin/packages/libszip/package.py similarity index 97% rename from var/spack/repos/builtin/packages/szip/package.py rename to var/spack/repos/builtin/packages/libszip/package.py index 28cc005f0c8..838b81b63b7 100644 --- a/var/spack/repos/builtin/packages/szip/package.py +++ b/var/spack/repos/builtin/packages/libszip/package.py @@ -25,7 +25,7 @@ from spack import * -class Szip(AutotoolsPackage): +class Libszip(AutotoolsPackage): """Szip is an implementation of the extended-Rice lossless compression algorithm. @@ -38,6 +38,8 @@ class Szip(AutotoolsPackage): list_url = "https://support.hdfgroup.org/ftp/lib-external/szip" list_depth = 2 + provides('szip') + version('2.1.1', 'dd579cf0f26d44afd10a0ad7291fc282') version('2.1', '902f831bcefb69c6b635374424acbead') From 452f382293cffe6fbf134db13cb1420d11e93689 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 4 Aug 2017 10:46:07 -0500 Subject: [PATCH 1381/2394] Add a QMakePackage base class (#4925) * Add a QMakePackage base class * Fix sqlite linking bug in qt-creator * Add latest version of qt-creator * Add latest version of qwt * Use raw strings for regular expressions * Increase minimum required version of qt * Add comment about specific version of sqlite required * Fixes for latest version of qwt and qt-creator * Older versions of Qwt only work with older versions of Qt --- lib/spack/docs/packaging_guide.rst | 5 +- lib/spack/spack/__init__.py | 2 + lib/spack/spack/build_systems/qmake.py | 87 +++++++++++++++++++ lib/spack/spack/cmd/build.py | 1 + lib/spack/spack/cmd/configure.py | 1 + lib/spack/spack/cmd/create.py | 38 +++++--- lib/spack/spack/test/build_system_guess.py | 1 + .../builtin/packages/qt-creator/package.py | 34 +++++--- .../repos/builtin/packages/qwt/package.py | 21 +++-- .../repos/builtin/packages/sqlite/package.py | 4 + 10 files changed, 159 insertions(+), 35 deletions(-) create mode 100644 lib/spack/spack/build_systems/qmake.py diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index e4b10cdf536..5d7d69e3d73 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2118,7 +2118,10 @@ The classes that are currently provided by Spack are: | :py:class:`.CMakePackage` | Specialized class for packages | | | built using CMake | +-------------------------------+----------------------------------+ - | :py:class:`.WafPackage` | Specialize class for packages | + | :py:class:`.QMakePackage` | Specialized class for packages | + | | build using QMake | + +-------------------------------+----------------------------------+ + | :py:class:`.WafPackage` | Specialized class for packages | | | built using Waf | +-------------------------------+----------------------------------+ | :py:class:`.RPackage` | Specialized class for | diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index e77a0c75cdf..aca906f2e9d 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -172,6 +172,7 @@ from spack.build_systems.makefile import MakefilePackage from spack.build_systems.autotools import AutotoolsPackage from spack.build_systems.cmake import CMakePackage +from spack.build_systems.qmake import QMakePackage from spack.build_systems.waf import WafPackage from spack.build_systems.python import PythonPackage from spack.build_systems.r import RPackage @@ -185,6 +186,7 @@ 'MakefilePackage', 'AutotoolsPackage', 'CMakePackage', + 'QMakePackage', 'WafPackage', 'PythonPackage', 'RPackage', diff --git a/lib/spack/spack/build_systems/qmake.py b/lib/spack/spack/build_systems/qmake.py new file mode 100644 index 00000000000..c1a3193b7f8 --- /dev/null +++ b/lib/spack/spack/build_systems/qmake.py @@ -0,0 +1,87 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 inspect + +from spack.directives import depends_on +from spack.package import PackageBase, run_after + + +class QMakePackage(PackageBase): + """Specialized class for packages built using qmake. + + For more information on the qmake build system, see: + http://doc.qt.io/qt-5/qmake-manual.html + + This class provides three phases that can be overridden: + + 1. :py:meth:`~.QMakePackage.qmake` + 2. :py:meth:`~.QMakePackage.build` + 3. :py:meth:`~.QMakePackage.install` + + They all have sensible defaults and for many packages the only thing + necessary will be to override :py:meth:`~.QMakePackage.qmake_args`. + """ + #: Phases of a qmake package + phases = ['qmake', 'build', 'install'] + + #: This attribute is used in UI queries that need to know the build + #: system base class + build_system_class = 'QMakePackage' + + #: Callback names for build-time test + build_time_test_callbacks = ['check'] + + depends_on('qt', type='build') + + def qmake_args(self): + """Produces a list containing all the arguments that must be passed to + qmake + """ + return [] + + def qmake(self, spec, prefix): + """Run ``qmake`` to configure the project and generate a Makefile.""" + inspect.getmodule(self).qmake(*self.qmake_args()) + + def build(self, spec, prefix): + """Make the build targets""" + inspect.getmodule(self).make() + + def install(self, spec, prefix): + """Make the install targets""" + inspect.getmodule(self).make('install') + + # Tests + + def check(self): + """Searches the Makefile for a ``check:`` target and runs it if found. + """ + self._if_make_target_execute('check') + + run_after('build')(PackageBase._run_default_build_time_test_callbacks) + + # Check that self.prefix is there after installation + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/cmd/build.py b/lib/spack/spack/cmd/build.py index 413b73a08eb..8ecaca9c120 100644 --- a/lib/spack/spack/cmd/build.py +++ b/lib/spack/spack/cmd/build.py @@ -34,6 +34,7 @@ build_system_to_phase = { AutotoolsPackage: 'build', CMakePackage: 'build', + QMakePackage: 'build', WafPackage: 'build', PythonPackage: 'build', PerlPackage: 'build', diff --git a/lib/spack/spack/cmd/configure.py b/lib/spack/spack/cmd/configure.py index 4b590e6176d..562582fe097 100644 --- a/lib/spack/spack/cmd/configure.py +++ b/lib/spack/spack/cmd/configure.py @@ -38,6 +38,7 @@ build_system_to_phase = { AutotoolsPackage: 'configure', CMakePackage: 'cmake', + QMakePackage: 'qmake', WafPackage: 'configure', PerlPackage: 'configure', } diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 62de3e24e9c..239f75b996d 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -193,6 +193,18 @@ def cmake_args(self): return args""" +class QMakePackageTemplate(PackageTemplate): + """Provides appropriate overrides for QMake-based packages""" + + base_class_name = 'QMakePackage' + + body = """\ + def qmake_args(self): + # FIXME: If not needed delete this function + args = [] + return args""" + + class SconsPackageTemplate(PackageTemplate): """Provides appropriate overrides for SCons-based packages""" @@ -363,6 +375,7 @@ def edit(self, spec, prefix): 'autotools': AutotoolsPackageTemplate, 'autoreconf': AutoreconfPackageTemplate, 'cmake': CMakePackageTemplate, + 'qmake': QMakePackageTemplate, 'scons': SconsPackageTemplate, 'waf': WafPackageTemplate, 'bazel': BazelPackageTemplate, @@ -426,18 +439,19 @@ def __call__(self, stage, url): # uses. If the regular expression matches a file contained in the # archive, the corresponding build system is assumed. clues = [ - ('/configure$', 'autotools'), - ('/configure.(in|ac)$', 'autoreconf'), - ('/Makefile.am$', 'autoreconf'), - ('/CMakeLists.txt$', 'cmake'), - ('/SConstruct$', 'scons'), - ('/waf$', 'waf'), - ('/setup.py$', 'python'), - ('/NAMESPACE$', 'r'), - ('/WORKSPACE$', 'bazel'), - ('/Build.PL$', 'perlbuild'), - ('/Makefile.PL$', 'perlmake'), - ('/(GNU)?[Mm]akefile$', 'makefile'), + (r'/configure$', 'autotools'), + (r'/configure\.(in|ac)$', 'autoreconf'), + (r'/Makefile\.am$', 'autoreconf'), + (r'/CMakeLists\.txt$', 'cmake'), + (r'/SConstruct$', 'scons'), + (r'/waf$', 'waf'), + (r'/setup\.py$', 'python'), + (r'/NAMESPACE$', 'r'), + (r'/WORKSPACE$', 'bazel'), + (r'/Build\.PL$', 'perlbuild'), + (r'/Makefile\.PL$', 'perlmake'), + (r'/.*\.pro$', 'qmake'), + (r'/(GNU)?[Mm]akefile$', 'makefile'), ] # Peek inside the compressed file. diff --git a/lib/spack/spack/test/build_system_guess.py b/lib/spack/spack/test/build_system_guess.py index 733173e3fc9..54431e0020a 100644 --- a/lib/spack/spack/test/build_system_guess.py +++ b/lib/spack/spack/test/build_system_guess.py @@ -34,6 +34,7 @@ params=[ ('configure', 'autotools'), ('CMakeLists.txt', 'cmake'), + ('project.pro', 'qmake'), ('SConstruct', 'scons'), ('waf', 'waf'), ('setup.py', 'python'), diff --git a/var/spack/repos/builtin/packages/qt-creator/package.py b/var/spack/repos/builtin/packages/qt-creator/package.py index a3f50004ae1..4b3054b7b68 100644 --- a/var/spack/repos/builtin/packages/qt-creator/package.py +++ b/var/spack/repos/builtin/packages/qt-creator/package.py @@ -23,24 +23,36 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os -class QtCreator(Package): +class QtCreator(QMakePackage): """The Qt Creator IDE.""" homepage = 'https://www.qt.io/ide/' - url = 'http://download.qt.io/official_releases/qtcreator/4.1/4.1.0/qt-creator-opensource-src-4.1.0.tar.gz' + url = 'http://download.qt.io/official_releases/qtcreator/4.3/4.3.1/qt-creator-opensource-src-4.3.1.tar.gz' list_url = 'http://download.qt.io/official_releases/qtcreator/' list_depth = 2 - version('4.1.0', '657727e4209befa4bf5889dff62d9e0a') + version('4.3.1', '6769ea47f287e2d9e30ff92acb899eef') + version('4.1.0', '657727e4209befa4bf5889dff62d9e0a') - depends_on("qt") + depends_on('qt@5.6.0:+opengl') + # Qt Creator comes bundled with its own copy of sqlite. Qt has a build + # dependency on Python, which has a dependency on sqlite. If Python is + # built with a different version of sqlite than the bundled copy, it will + # cause symbol conflict. Force Spack to build with the same version of + # sqlite as the bundled copy. + depends_on('sqlite@3.8.10.2') - def install(self, spec, prefix): - os.environ['INSTALL_ROOT'] = self.prefix - qmake = which('qmake') - qmake('-r') - make() - make("install") + # Qt Creator 4.3.0+ requires a C++14 compiler + conflicts('%gcc@:4.8', when='@4.3.0:') + + def url_for_version(self, version): + url = 'http://download.qt.io/official_releases/qtcreator/{0}/{1}/qt-creator-opensource-src-{1}.tar.gz' + return url.format(version.up_to(2), version) + + def setup_environment(self, spack_env, run_env): + spack_env.set('INSTALL_ROOT', self.prefix) + + def qmake_args(self): + return ['-r'] diff --git a/var/spack/repos/builtin/packages/qwt/package.py b/var/spack/repos/builtin/packages/qwt/package.py index 111ba034c75..10ca44e1c3f 100644 --- a/var/spack/repos/builtin/packages/qwt/package.py +++ b/var/spack/repos/builtin/packages/qwt/package.py @@ -25,7 +25,7 @@ from spack import * -class Qwt(Package): +class Qwt(QMakePackage): """The Qwt library contains GUI Components and utility classes which are primarily useful for programs with a technical background. Beside a framework for 2D plots it provides scales, sliders, dials, compasses, @@ -33,18 +33,17 @@ class Qwt(Package): ranges of type double. """ homepage = "http://qwt.sourceforge.net/" - url = "https://downloads.sourceforge.net/project/qwt/qwt/5.2.2/qwt-5.2.2.tar.bz2" + url = "https://sourceforge.net/projects/qwt/files/qwt/6.1.3/qwt-6.1.3.tar.bz2" + version('6.1.3', '19d1f5fa5e22054d22ee3accc37c54ba') version('5.2.2', '70d77e4008a6cc86763737f0f24726ca') - depends_on("qt") - - def install(self, spec, prefix): + depends_on('qt+opengl') + # Qwt 6.1.1 and older use a constant that was removed in Qt 5.4 + # https://bugs.launchpad.net/ubuntu/+source/qwt-qt5/+bug/1485213 + depends_on('qt@:5.3', when='@:6.1.1') + def patch(self): # Subvert hardcoded prefix - filter_file(r'/usr/local/qwt-\$\$VERSION', prefix, 'qwtconfig.pri') - - qmake = which('qmake') - qmake() - make() - make("install") + filter_file(r'/usr/local/qwt-\$\$(QWT_)?VERSION.*', + self.prefix, 'qwtconfig.pri') diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py index 56062c14726..66b76e1be19 100644 --- a/var/spack/repos/builtin/packages/sqlite/package.py +++ b/var/spack/repos/builtin/packages/sqlite/package.py @@ -33,8 +33,12 @@ class Sqlite(AutotoolsPackage): """ homepage = "www.sqlite.org" + version('3.20.0', 'e262a28b73cc330e7e83520c8ce14e4d', + url='https://www.sqlite.org/2017/sqlite-autoconf-3200000.tar.gz') version('3.18.0', 'a6687a8ae1f66abc8df739aeadecfd0c', url='https://www.sqlite.org/2017/sqlite-autoconf-3180000.tar.gz') + version('3.8.10.2', 'a18bfc015cd49a1e7a961b7b77bc3b37', + url='https://www.sqlite.org/2015/sqlite-autoconf-3081002.tar.gz') version('3.8.5', '0544ef6d7afd8ca797935ccc2685a9ed', url='https://www.sqlite.org/2014/sqlite-autoconf-3080500.tar.gz') From 9be294de315e094b15865aad1a78e6433731f385 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 4 Aug 2017 18:21:43 +0200 Subject: [PATCH 1382/2394] Changed every 'fpic' variant to 'pic' (#4969) * Changed every 'fpic' variant to 'pic'. fixes #2463 Every variant that activates compilation of position independent code has been changed to 'pic'. Hardcoded compiler flags in packages have been substituted with `self.compiler.pic_flag`. * Changed literal uses of '-fpic' to 'self.compiler.pic_flag' --- var/spack/repos/builtin/packages/adios/package.py | 13 ++++++------- var/spack/repos/builtin/packages/arpack/package.py | 4 +++- .../repos/builtin/packages/cantera/package.py | 2 +- var/spack/repos/builtin/packages/hdf/package.py | 2 +- var/spack/repos/builtin/packages/lammps/package.py | 2 +- var/spack/repos/builtin/packages/metis/package.py | 4 ++-- var/spack/repos/builtin/packages/mxml/package.py | 2 +- var/spack/repos/builtin/packages/nalu/package.py | 2 +- var/spack/repos/builtin/packages/netcdf/package.py | 2 +- .../builtin/packages/netlib-scalapack/package.py | 10 +++++----- var/spack/repos/builtin/packages/otf2/package.py | 6 +++++- .../builtin/packages/parallel-netcdf/package.py | 14 ++++++++++---- .../repos/builtin/packages/parmgridgen/package.py | 4 ++-- var/spack/repos/builtin/packages/scorep/package.py | 5 ++++- var/spack/repos/builtin/packages/scotch/package.py | 8 +++++--- .../repos/builtin/packages/sundials/package.py | 4 ++-- .../repos/builtin/packages/superlu/package.py | 6 +++--- .../repos/builtin/packages/trilinos/package.py | 4 ++-- .../repos/builtin/packages/yaml-cpp/package.py | 4 ++-- var/spack/repos/builtin/packages/zoltan/package.py | 2 +- 20 files changed, 58 insertions(+), 42 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 2d7b9e2997a..5a7f4d91f52 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -103,13 +103,12 @@ def configure_args(self): spec = self.spec self.validate(spec) - extra_args = [] - - # required, otherwise building its python bindings on ADIOS will fail - extra_args.append("CFLAGS=-fPIC") - - # always build external MXML, even in ADIOS 1.10.0+ - extra_args.append('--with-mxml=%s' % spec['mxml'].prefix) + extra_args = [ + # required, otherwise building its python bindings will fail + 'CFLAGS={0}'.format(self.compiler.pic_flag), + # always build external MXML, even in ADIOS 1.10.0+ + '--with-mxml={0}'.format(spec['mxml'].prefix) + ] if '+shared' in spec: extra_args.append('--enable-shared') diff --git a/var/spack/repos/builtin/packages/arpack/package.py b/var/spack/repos/builtin/packages/arpack/package.py index 831a379fcee..67ab0502363 100644 --- a/var/spack/repos/builtin/packages/arpack/package.py +++ b/var/spack/repos/builtin/packages/arpack/package.py @@ -60,7 +60,9 @@ def patch(self): # Be sure to use the Spack compiler wrapper makefile.filter('^FC.*', 'FC = {0}'.format(os.environ['F77'])) - makefile.filter('^FFLAGS.*', 'FFLAGS = -O2 -g -fPIC') + makefile.filter( + '^FFLAGS.*', 'FFLAGS = -O2 -g {0}'.format(self.compiler.pic_flag) + ) if not which('ranlib'): makefile.filter('^RANLIB.*', 'RANLIB = touch') diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py index e92c5b5b438..5987f0865a8 100644 --- a/var/spack/repos/builtin/packages/cantera/package.py +++ b/var/spack/repos/builtin/packages/cantera/package.py @@ -78,7 +78,7 @@ def install(self, spec, prefix): 'CXX={0}'.format(os.environ['CXX']), 'F77={0}'.format(os.environ['F77']), 'FORTRAN={0}'.format(os.environ['FC']), - 'cc_flags=-fPIC', + 'cc_flags={0}'.format(self.compiler.pic_flag), # Allow Spack environment variables to propagate through to SCons 'env_vars=all' ] diff --git a/var/spack/repos/builtin/packages/hdf/package.py b/var/spack/repos/builtin/packages/hdf/package.py index 6c0974994b6..87309ed65e2 100644 --- a/var/spack/repos/builtin/packages/hdf/package.py +++ b/var/spack/repos/builtin/packages/hdf/package.py @@ -51,7 +51,7 @@ def configure_args(self): spec = self.spec config_args = [ - 'CFLAGS=-fPIC', + 'CFLAGS={0}'.format(self.compiler.pic_flag), '--with-jpeg={0}'.format(spec['jpeg'].prefix), '--with-zlib={0}'.format(spec['zlib'].prefix), '--disable-netcdf', # must be disabled to build NetCDF with HDF4 diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index c1909451d10..cfe5cfa4bb9 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -74,7 +74,7 @@ def edit(self, spec, prefix): config.append('CCFLAGS = -fopenmp') config.append('LINKFLAGS = -fopenmp $(OPTFLAGS)') - config.append('SHFLAGS = -fPIC') + config.append('SHFLAGS = {0}'.format(self.compiler.pic_flag)) config.append('DEPFLAGS = -M') config.append('LINK = c++') diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index 2f450951e3a..43feace9312 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -91,7 +91,7 @@ def install(self, spec, prefix): raise InstallError('METIS@:4 does not support the following ' 'variants: gdb, int64, real64.') - options = ['COPTIONS=-fPIC'] + options = ['COPTIONS={0}'.format(self.compiler.pic_flag)] if '+debug' in spec: options.append('OPTFLAGS=-g -O0') make(*options) @@ -119,7 +119,7 @@ def install(self, spec, prefix): install(sharefile, prefix.share) if '+shared' in spec: - shared_flags = ['-fPIC', '-shared'] + shared_flags = [self.compiler.pic_flag, '-shared'] if sys.platform == 'darwin': shared_suffix = 'dylib' shared_flags.extend(['-Wl,-all_load', 'libmetis.a']) diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index e8b87e52c13..da5ef6437b6 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -50,7 +50,7 @@ def url_for_version(self, version): def configure_args(self): return [ # ADIOS build with -fPIC, so we need it too (avoid linkage issue) - 'CFLAGS=-fPIC', + 'CFLAGS={0}'.format(self.compiler.pic_flag), # Default is non-shared, but avoid any future surprises '--disable-shared', ] diff --git a/var/spack/repos/builtin/packages/nalu/package.py b/var/spack/repos/builtin/packages/nalu/package.py index 040144ff164..3836c7a17f6 100644 --- a/var/spack/repos/builtin/packages/nalu/package.py +++ b/var/spack/repos/builtin/packages/nalu/package.py @@ -39,7 +39,7 @@ class Nalu(CMakePackage): git='https://github.com/NaluCFD/Nalu.git', branch='master') # Currently Nalu only builds static libraries; To be fixed soon - depends_on('yaml-cpp+fpic~shared') + depends_on('yaml-cpp+pic~shared') depends_on('trilinos~shared+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf@master') def cmake_args(self): diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py index 262036d7710..90dd4dd5d73 100644 --- a/var/spack/repos/builtin/packages/netcdf/package.py +++ b/var/spack/repos/builtin/packages/netcdf/package.py @@ -133,7 +133,7 @@ def configure_args(self): config_args.append('--disable-shared') # We don't have shared libraries but we still want it to be # possible to use this library in shared builds - CFLAGS.append('-fPIC') + CFLAGS.append(self.compiler.pic_flag) if '+dap' in spec: config_args.append('--enable-dap') diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py index d6419b744e0..6c6114f0115 100644 --- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py @@ -46,9 +46,9 @@ class NetlibScalapack(CMakePackage): description='Build the shared library version' ) variant( - 'fpic', + 'pic', default=False, - description='Build with -fpic compiler option' + description='Build position independent code' ) provides('scalapack') @@ -87,10 +87,10 @@ def cmake_args(self): '-DBLAS_LIBRARIES=%s' % (blas.joined(';')) ]) - if '+fpic' in spec: + if '+pic' in spec: options.extend([ - "-DCMAKE_C_FLAGS=-fPIC", - "-DCMAKE_Fortran_FLAGS=-fPIC" + "-DCMAKE_C_FLAGS=%s" % self.compiler.pic_flag, + "-DCMAKE_Fortran_FLAGS=%s" % self.compiler.pic_flag ]) return options diff --git a/var/spack/repos/builtin/packages/otf2/package.py b/var/spack/repos/builtin/packages/otf2/package.py index 5b78ae935b7..e89fc971d59 100644 --- a/var/spack/repos/builtin/packages/otf2/package.py +++ b/var/spack/repos/builtin/packages/otf2/package.py @@ -41,4 +41,8 @@ class Otf2(AutotoolsPackage): version('1.2.1', '8fb3e11fb7489896596ae2c7c83d7fc8') def configure_args(self): - return ["--enable-shared", "CFLAGS=-fPIC", "CXXFLAGS=-fPIC"] + return [ + '--enable-shared', + 'CFLAGS={0}'.format(self.compiler.pic_flag), + 'CXXFLAGS={0}'.format(self.compiler.pic_flag) + ] diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py index 6d222174408..757a336dd94 100644 --- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py +++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py @@ -40,7 +40,7 @@ class ParallelNetcdf(AutotoolsPackage): variant('cxx', default=True, description='Build the C++ Interface') variant('fortran', default=True, description='Build the Fortran Interface') - variant('fpic', default=True, + variant('pic', default=True, description='Produce position-independent code (for shared libs)') depends_on('mpi') @@ -53,12 +53,18 @@ def configure_args(self): spec = self.spec args = ['--with-mpi={0}'.format(spec['mpi'].prefix)] - args.append('SEQ_CC=%s' % spack_cc) + args.append('SEQ_CC={0}'.format(spack_cc)) + + if '+pic' in spec: + args.extend([ + 'CFLAGS={0}'.format(self.compiler.pic_flag), + 'CXXFLAGS={0}'.format(self.compiler.pic_flag), + 'FFLAGS={0}'.format(self.compiler.pic_flag) + ]) - if '+fpic' in spec: - args.extend(['CFLAGS=-fPIC', 'CXXFLAGS=-fPIC', 'FFLAGS=-fPIC']) if '~cxx' in spec: args.append('--disable-cxx') + if '~fortran' in spec: args.append('--disable-fortran') diff --git a/var/spack/repos/builtin/packages/parmgridgen/package.py b/var/spack/repos/builtin/packages/parmgridgen/package.py index 50eca810535..8630a139ec1 100644 --- a/var/spack/repos/builtin/packages/parmgridgen/package.py +++ b/var/spack/repos/builtin/packages/parmgridgen/package.py @@ -47,8 +47,8 @@ class Parmgridgen(Package): def install(self, spec, prefix): make_opts = [ 'make=make', - 'COPTIONS=-fPIC', - 'LDOPTIONS=-fPIC', + 'COPTIONS={0}'.format(self.compiler.pic_flag), + 'LDOPTIONS={0}'.format(self.compiler.pic_flag), 'CC={0}'.format(self.compiler.cc), 'LD={0}'.format(self.compiler.cc), 'LIBDIR=-L../..', diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index d164c38f54a..05482bd0c46 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -88,5 +88,8 @@ def configure_args(self): if '~shmem' in spec: config_args.append("--without-shmem") - config_args.extend(["CFLAGS=-fPIC", "CXXFLAGS=-fPIC"]) + config_args.extend([ + 'CFLAGS={0}'.format(self.compiler.pic_flag), + 'CXXFLAGS={0}'.format(self.compiler.pic_flag) + ]) return config_args diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index 8071a9765fa..b5903c27896 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -129,7 +129,9 @@ def configure(self): if self.spec.satisfies('platform=darwin'): makefile_inc.extend([ 'LIB = .dylib', - 'CLIBFLAGS = -dynamiclib -fPIC', + 'CLIBFLAGS = -dynamiclib {0}'.format( + self.compiler.pic_flag + ), 'RANLIB = echo', 'AR = $(CC)', 'ARFLAGS = -dynamiclib $(LDFLAGS) -Wl,-install_name -Wl,%s/$(notdir $@) -undefined dynamic_lookup -o ' % prefix.lib # noqa @@ -137,12 +139,12 @@ def configure(self): else: makefile_inc.extend([ 'LIB = .so', - 'CLIBFLAGS = -shared -fPIC', + 'CLIBFLAGS = -shared {0}'.format(self.compiler.pic_flag), 'RANLIB = echo', 'AR = $(CC)', 'ARFLAGS = -shared $(LDFLAGS) -o' ]) - cflags.append('-fPIC') + cflags.append(self.compiler.pic_flag) else: makefile_inc.extend([ 'LIB = .a', diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index 98e2f8f0099..18c3d409f84 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -58,8 +58,8 @@ def install(self, spec, prefix): cmake_args = std_cmake_args[:] cmake_args.extend([ '-DBUILD_SHARED_LIBS=ON', - '-DCMAKE_C_FLAGS=-fPIC', - '-DCMAKE_Fortran_FLAGS=-fPIC', + '-DCMAKE_C_FLAGS={0}'.format(self.compiler.pic_flag), + '-DCMAKE_Fortran_FLAGS={0}'.format(self.compiler.pic_flag), '-DEXAMPLES_ENABLE=ON', '-DEXAMPLES_INSTALL=ON', '-DFCMIX_ENABLE=ON' diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py index 7cdf4315fc9..c7ef1e3baeb 100644 --- a/var/spack/repos/builtin/packages/superlu/package.py +++ b/var/spack/repos/builtin/packages/superlu/package.py @@ -38,7 +38,7 @@ class Superlu(Package): version('5.2.1', '3a1a9bff20cb06b7d97c46d337504447') version('4.3', 'b72c6309f25e9660133007b82621ba7c') - variant('fpic', default=True, + variant('pic', default=True, description='Build with position independent code') depends_on('cmake', when='@5.2.1:', type='build') @@ -51,7 +51,7 @@ def install(self, spec, prefix): '-DBLAS_blas_LIBRARY={0}'.format(spec['blas'].libs.joined()) ] - if '+fpic' in spec: + if '+pic' in spec: cmake_args.extend([ '-DCMAKE_POSITION_INDEPENDENT_CODE=ON' ]) @@ -89,7 +89,7 @@ def install(self, spec, prefix): 'CDEFS = -DAdd_' ]) - if '+fpic' in spec: + if '+pic' in spec: config.extend([ # Use these lines instead when pic_flag capability arrives 'CFLAGS = -O3 {0}'.format(self.compiler.pic_flag), diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 9d9804cf9f6..f8181f77f98 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -177,7 +177,7 @@ class Trilinos(CMakePackage): # ###################### Dependencies ########################## - # Everything should be compiled with -fpic + # Everything should be compiled position independent (-fpic) depends_on('blas') depends_on('lapack') depends_on('boost', when='+boost') @@ -207,7 +207,7 @@ class Trilinos(CMakePackage): depends_on('superlu-dist@:4.3', when='@:12.6.1+superlu-dist') depends_on('superlu-dist@develop', when='@develop+superlu-dist') depends_on('superlu-dist@xsdk-0.2.0', when='@xsdk-0.2.0+superlu-dist') - depends_on('superlu+fpic@4.3', when='+superlu') + depends_on('superlu+pic@4.3', when='+superlu') # Trilinos can not be built against 64bit int hypre depends_on('hypre~internal-superlu~int64', when='+hypre') depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0+hypre') diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py index e537af6b414..59228ec4cb4 100644 --- a/var/spack/repos/builtin/packages/yaml-cpp/package.py +++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py @@ -36,7 +36,7 @@ class YamlCpp(CMakePackage): variant('shared', default=True, description='Enable build of shared libraries') - variant('fpic', default=True, + variant('pic', default=True, description='Build with position independent code') depends_on('boost', when='@:0.5.3') @@ -49,7 +49,7 @@ def cmake_args(self): '-DBUILD_SHARED_LIBS:BOOL=%s' % ( 'ON' if '+shared' in spec else 'OFF'), '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=%s' % ( - 'ON' if '+fpic' in spec else 'OFF'), + 'ON' if '+pic' in spec else 'OFF'), ]) return options diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py index 008bea9c276..6404cadbe13 100644 --- a/var/spack/repos/builtin/packages/zoltan/package.py +++ b/var/spack/repos/builtin/packages/zoltan/package.py @@ -76,7 +76,7 @@ def install(self, spec, prefix): if '+shared' in spec: config_args.append('RANLIB=echo') config_args.append('--with-ar=$(CXX) -shared $(LDFLAGS) -o') - config_cflags.append('-fPIC') + config_cflags.append(self.compiler.pic_flag) if spec.satisfies('%gcc'): config_args.append('--with-libs={0}'.format('-lgfortran')) From b8ed61cfea58c8cab5c86d6c0189512605890444 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 4 Aug 2017 14:53:05 -0500 Subject: [PATCH 1383/2394] Make CMake the default build system (#4862) --- lib/spack/spack/cmd/create.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 239f75b996d..d8507d11080 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -438,11 +438,13 @@ def __call__(self, stage, url): # A list of clues that give us an idea of the build system a package # uses. If the regular expression matches a file contained in the # archive, the corresponding build system is assumed. + # NOTE: Order is important here. If a package supports multiple + # build systems, we choose the first match in this list. clues = [ + (r'/CMakeLists\.txt$', 'cmake'), (r'/configure$', 'autotools'), (r'/configure\.(in|ac)$', 'autoreconf'), (r'/Makefile\.am$', 'autoreconf'), - (r'/CMakeLists\.txt$', 'cmake'), (r'/SConstruct$', 'scons'), (r'/waf$', 'waf'), (r'/setup\.py$', 'python'), From 7eb263effe3ac6f2f79e4f6c060b7ae96b7a9cc8 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Fri, 4 Aug 2017 16:52:10 -0500 Subject: [PATCH 1384/2394] Add a SConsPackage base class (#4936) * Add a SConsPackage base class * Make Matlab extendable * Most dependencies are actually required * Cantera requires older version of fmt --- lib/spack/docs/packaging_guide.rst | 3 + lib/spack/spack/__init__.py | 2 + lib/spack/spack/build_systems/scons.py | 92 ++++++++++++ lib/spack/spack/cmd/build.py | 1 + lib/spack/spack/cmd/create.py | 13 +- .../repos/builtin/packages/cantera/package.py | 141 ++++++++++-------- .../repos/builtin/packages/fmt/package.py | 47 ++++++ .../repos/builtin/packages/kahip/package.py | 22 ++- .../repos/builtin/packages/matlab/package.py | 2 + .../repos/builtin/packages/serf/package.py | 66 ++++++-- 10 files changed, 297 insertions(+), 92 deletions(-) create mode 100644 lib/spack/spack/build_systems/scons.py create mode 100644 var/spack/repos/builtin/packages/fmt/package.py diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 5d7d69e3d73..af3f7b408aa 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2121,6 +2121,9 @@ The classes that are currently provided by Spack are: | :py:class:`.QMakePackage` | Specialized class for packages | | | build using QMake | +-------------------------------+----------------------------------+ + | :py:class:`.SConsPackage` | Specialized class for packages | + | | built using SCons | + +-------------------------------+----------------------------------+ | :py:class:`.WafPackage` | Specialized class for packages | | | built using Waf | +-------------------------------+----------------------------------+ diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index aca906f2e9d..e8a010bb260 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -173,6 +173,7 @@ from spack.build_systems.autotools import AutotoolsPackage from spack.build_systems.cmake import CMakePackage from spack.build_systems.qmake import QMakePackage +from spack.build_systems.scons import SConsPackage from spack.build_systems.waf import WafPackage from spack.build_systems.python import PythonPackage from spack.build_systems.r import RPackage @@ -187,6 +188,7 @@ 'AutotoolsPackage', 'CMakePackage', 'QMakePackage', + 'SConsPackage', 'WafPackage', 'PythonPackage', 'RPackage', diff --git a/lib/spack/spack/build_systems/scons.py b/lib/spack/spack/build_systems/scons.py new file mode 100644 index 00000000000..694ed936cc1 --- /dev/null +++ b/lib/spack/spack/build_systems/scons.py @@ -0,0 +1,92 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 inspect + +from spack.directives import depends_on +from spack.package import PackageBase, run_after + + +class SConsPackage(PackageBase): + """Specialized class for packages built using SCons. + + See http://scons.org/documentation.html for more information. + + This class provides the following phases that can be overridden: + + 1. :py:meth:`~.SConsPackage.build` + 2. :py:meth:`~.SConsPackage.install` + + Packages that use SCons as a build system are less uniform than packages + that use other build systems. Developers can add custom subcommands or + variables that control the build. You will likely need to override + :py:meth:`~.SConsPackage.build_args` to pass the appropriate variables. + """ + #: Phases of a SCons package + phases = ['build', 'install'] + + #: To be used in UI queries that require to know which + #: build-system class we are using + build_system_class = 'SConsPackage' + + #: Callback names for build-time test + build_time_test_callbacks = ['test'] + + depends_on('scons', type='build') + + def build_args(self, spec, prefix): + """Arguments to pass to build.""" + return [] + + def build(self, spec, prefix): + """Build the package.""" + args = self.build_args(spec, prefix) + + inspect.getmodule(self).scons(*args) + + def install_args(self, spec, prefix): + """Arguments to pass to install.""" + return [] + + def install(self, spec, prefix): + """Install the package.""" + args = self.install_args(spec, prefix) + + inspect.getmodule(self).scons('install', *args) + + # Testing + + def test(self): + """Run unit tests after build. + + By default, does nothing. Override this if you want to + add package-specific tests. + """ + pass + + run_after('build')(PackageBase._run_default_build_time_test_callbacks) + + # Check that self.prefix is there after installation + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/cmd/build.py b/lib/spack/spack/cmd/build.py index 8ecaca9c120..a4821214d67 100644 --- a/lib/spack/spack/cmd/build.py +++ b/lib/spack/spack/cmd/build.py @@ -35,6 +35,7 @@ AutotoolsPackage: 'build', CMakePackage: 'build', QMakePackage: 'build', + SConsPackage: 'build', WafPackage: 'build', PythonPackage: 'build', PerlPackage: 'build', diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index d8507d11080..ca49eb03fa0 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -208,15 +208,14 @@ def qmake_args(self): class SconsPackageTemplate(PackageTemplate): """Provides appropriate overrides for SCons-based packages""" - dependencies = """\ - # FIXME: Add additional dependencies if required. - depends_on('scons', type='build')""" + base_class_name = 'SConsPackage' body = """\ - def install(self, spec, prefix): - # FIXME: Add logic to build and install here. - scons('prefix={0}'.format(prefix)) - scons('install')""" + def build_args(self, spec, prefix): + # FIXME: Add arguments to pass to build. + # FIXME: If not needed delete this function + args = [] + return args""" class WafPackageTemplate(PackageTemplate): diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py index 5987f0865a8..36c796e45d3 100644 --- a/var/spack/repos/builtin/packages/cantera/package.py +++ b/var/spack/repos/builtin/packages/cantera/package.py @@ -26,132 +26,147 @@ import os -class Cantera(Package): +class Cantera(SConsPackage): """Cantera is a suite of object-oriented software tools for problems involving chemical kinetics, thermodynamics, and/or transport processes.""" homepage = "http://www.cantera.org/docs/sphinx/html/index.html" - url = "https://github.com/Cantera/cantera/archive/v2.2.1.tar.gz" + url = "https://github.com/Cantera/cantera/archive/v2.3.0.tar.gz" + version('2.3.0', 'aebbd8d891cb1623604245398502b72e') version('2.2.1', '9d1919bdef39ddec54485fc8a741a3aa') - variant('lapack', default=True, - description='Build with external BLAS/LAPACK libraries') - variant('threadsafe', default=True, - description='Build threadsafe, requires Boost') - variant('sundials', default=True, - description='Build with external Sundials') variant('python', default=False, description='Build the Cantera Python module') variant('matlab', default=False, description='Build the Cantera Matlab toolbox') # Required dependencies - depends_on('scons', type='build') - - # Recommended dependencies - depends_on('blas', when='+lapack') - depends_on('lapack', when='+lapack') - depends_on('boost', when='+threadsafe') - depends_on('sundials', when='+sundials') # must be compiled with -fPIC + depends_on('fmt@3.0.0:3.0.2', when='@2.3.0:') + depends_on('googletest', when='@2.3.0:') + depends_on('eigen', when='@2.3.0:') + depends_on('boost') + depends_on('sundials') # must be compiled with -fPIC + depends_on('blas') + depends_on('lapack') # Python module dependencies extends('python', when='+python') + depends_on('py-cython', when='+python', type='build') depends_on('py-numpy', when='+python', type=('build', 'run')) depends_on('py-scipy', when='+python', type=('build', 'run')) - depends_on('py-cython', when='+python', type=('build', 'run')) depends_on('py-3to2', when='+python', type=('build', 'run')) # TODO: these "when" specs don't actually work # depends_on('py-unittest2', when='+python^python@2.6', type=('build', 'run')) # noqa # depends_on('py-unittest2py3k', when='+python^python@3.1', type=('build', 'run')) # noqa # Matlab toolbox dependencies - # TODO: add Matlab package - # TODO: allow packages to extend multiple other packages - # extends('matlab', when='+matlab') + extends('matlab', when='+matlab') - def install(self, spec, prefix): - # Required options - options = [ + def build_args(self, spec, prefix): + # Valid args can be found by running `scons help` + + # Required args + args = [ + 'build', 'prefix={0}'.format(prefix), - 'CC={0}'.format(os.environ['CC']), - 'CXX={0}'.format(os.environ['CXX']), - 'F77={0}'.format(os.environ['F77']), - 'FORTRAN={0}'.format(os.environ['FC']), + 'VERBOSE=yes', + 'CC={0}'.format(spack_cc), + 'CXX={0}'.format(spack_cxx), + 'FORTRAN={0}'.format(spack_fc), 'cc_flags={0}'.format(self.compiler.pic_flag), # Allow Spack environment variables to propagate through to SCons 'env_vars=all' ] - # BLAS/LAPACK support - if '+lapack' in spec: - lapack_blas = spec['lapack'].libs + spec['blas'].libs - options.extend([ - 'blas_lapack_libs={0}'.format(','.join(lapack_blas.names)), - 'blas_lapack_dir={0}'.format(spec['lapack'].prefix.lib) + if spec.satisfies('@:2.2.1'): + args.append('F77={0}'.format(spack_f77)) + + # fmt support + if spec.satisfies('@2.3.0:'): + args.append('system_fmt=y') + + # Googletest support + if spec.satisfies('@2.3.0:'): + args.append('system_googletest=y') + + # Eigen support + if spec.satisfies('@2.3.0:'): + args.extend([ + 'system_eigen=y', + 'extra_inc_dirs={0}'.format( + join_path(spec['eigen'].prefix.include, 'eigen{0}'.format( + spec['eigen'].version.up_to(1)))), ]) - # Threadsafe build, requires Boost - if '+threadsafe' in spec: - options.extend([ + # BLAS/LAPACK support + lapack_blas = spec['lapack'].libs + spec['blas'].libs + args.extend([ + 'blas_lapack_libs={0}'.format(','.join(lapack_blas.names)), + 'blas_lapack_dir={0}'.format(spec['lapack'].prefix.lib) + ]) + + # Boost support + if spec.satisfies('@2.3.0:'): + args.append('boost_inc_dir={0}'.format( + spec['boost'].prefix.include)) + else: + args.extend([ 'build_thread_safe=yes', 'boost_inc_dir={0}'.format(spec['boost'].prefix.include), - 'boost_lib_dir={0}'.format(spec['boost'].prefix.lib) + 'boost_lib_dir={0}'.format(spec['boost'].prefix.lib), ]) - else: - options.append('build_thread_safe=no') # Sundials support - if '+sundials' in spec: - options.extend([ - 'use_sundials=y', - 'sundials_include={0}'.format(spec['sundials'].prefix.include), - 'sundials_libdir={0}'.format(spec['sundials'].prefix.lib), - 'sundials_license={0}'.format( - join_path(spec['sundials'].prefix, 'LICENSE')) - ]) + if spec.satisfies('@2.3.0:'): + args.append('system_sundials=y') else: - options.append('use_sundials=n') + args.extend([ + 'use_sundials=y', + 'sundials_license={0}'.format( + spec['sundials'].prefix.LICENSE) + ]) + + args.extend([ + 'sundials_include={0}'.format(spec['sundials'].prefix.include), + 'sundials_libdir={0}'.format(spec['sundials'].prefix.lib), + ]) # Python module if '+python' in spec: - options.extend([ + args.extend([ 'python_package=full', 'python_cmd={0}'.format(spec['python'].command.path), - 'python_array_home={0}'.format(spec['py-numpy'].prefix) ]) - if spec['python'].satisfies('@3'): - options.extend([ + if spec['python'].satisfies('@3:'): + args.extend([ 'python3_package=y', 'python3_cmd={0}'.format(spec['python'].command.path), - 'python3_array_home={0}'.format(spec['py-numpy'].prefix) ]) else: - options.append('python3_package=n') + args.append('python3_package=n') else: - options.append('python_package=none') - options.append('python3_package=n') + args.append('python_package=none') + args.append('python3_package=n') # Matlab toolbox if '+matlab' in spec: - options.extend([ + args.extend([ 'matlab_toolbox=y', 'matlab_path={0}'.format(spec['matlab'].prefix) ]) else: - options.append('matlab_toolbox=n') + args.append('matlab_toolbox=n') - scons('build', *options) + return args - if '+python' in spec: + def test(self): + if '+python' in self.spec: # Tests will always fail if Python dependencies aren't built # In addition, 3 of the tests fail when run in parallel scons('test', parallel=False) - scons('install') - - self.filter_compilers() - + @run_after('install') def filter_compilers(self): """Run after install to tell the Makefile and SConstruct files to use the compilers that Spack built the package with. diff --git a/var/spack/repos/builtin/packages/fmt/package.py b/var/spack/repos/builtin/packages/fmt/package.py new file mode 100644 index 00000000000..eea62f2a6aa --- /dev/null +++ b/var/spack/repos/builtin/packages/fmt/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Fmt(CMakePackage): + """fmt (formerly cppformat) is an open-source formatting library. + It can be used as a safe alternative to printf or as a fast alternative + to C++ IOStreams.""" + + homepage = "http://fmtlib.net/latest/index.html" + url = "https://github.com/fmtlib/fmt/releases/download/4.0.0/fmt-4.0.0.zip" + + version('4.0.0', '605b5abee11b83195191234f4f414cf1') + version('3.0.2', 'b190a7b8f2a5e522ee70cf339a53d3b2') + version('3.0.1', '14505463b838befe1513b09cae112715') + version('3.0.0', 'c099561e70fa194bb03b3fd5de2d3fd0') + + depends_on('cmake@2.8.12:', type='build') + + def cmake_args(self): + return [ + '-DCMAKE_C_FLAGS={0}'.format(self.compiler.pic_flag), + '-DCMAKE_CXX_FLAGS={0}'.format(self.compiler.pic_flag), + ] diff --git a/var/spack/repos/builtin/packages/kahip/package.py b/var/spack/repos/builtin/packages/kahip/package.py index 2bc127a4c29..b02e6de8f41 100644 --- a/var/spack/repos/builtin/packages/kahip/package.py +++ b/var/spack/repos/builtin/packages/kahip/package.py @@ -29,7 +29,7 @@ import re -class Kahip(Package): +class Kahip(SConsPackage): """KaHIP - Karlsruhe High Quality Partitioning - is a family of graph partitioning programs. It includes KaFFPa (Karlsruhe Fast Flow Partitioner), which is a multilevel graph partitioning algorithm, @@ -46,17 +46,25 @@ class Kahip(Package): url = 'http://algo2.iti.kit.edu/schulz/software_releases/KaHIP_2.00.tar.gz' version('develop', git='https://github.com/schulzchristian/KaHIP.git') - version('2.00', '9daeda32f43c90570ed436d5d93c8a872b1a14d8') + version('2.00', '0a66b0a604ad72cfb7e3dce00e2c9fdfac82b855') depends_on('argtable') depends_on('mpi') # Note: upstream package only tested on openmpi - depends_on('scons', type='build') - phases = ['build', 'install'] + conflicts('%clang') - # - # - End of definitions / setup - - # + def patch(self): + """Internal compile.sh scripts hardcode number of cores to build with. + Filter these out so Spack can control it.""" + + files = [ + 'compile.sh', + 'parallel/modified_kahip/compile.sh', + 'parallel/parallel_src/compile.sh', + ] + + for f in files: + filter_file('NCORES=.*', 'NCORES={0}'.format(make_jobs), f) def build(self, spec, prefix): """Build using the KaHIP compile.sh script. Uses scons internally.""" diff --git a/var/spack/repos/builtin/packages/matlab/package.py b/var/spack/repos/builtin/packages/matlab/package.py index 4d2b91546ef..fbd272393ed 100644 --- a/var/spack/repos/builtin/packages/matlab/package.py +++ b/var/spack/repos/builtin/packages/matlab/package.py @@ -66,6 +66,8 @@ class Matlab(Package): license_vars = ['LM_LICENSE_FILE'] license_url = 'https://www.mathworks.com/help/install/index.html' + extendable = True + def url_for_version(self, version): return "file://{0}/matlab_{1}_glnxa64.zip".format(os.getcwd(), version) diff --git a/var/spack/repos/builtin/packages/serf/package.py b/var/spack/repos/builtin/packages/serf/package.py index 3d8e2285481..250a6f498fb 100644 --- a/var/spack/repos/builtin/packages/serf/package.py +++ b/var/spack/repos/builtin/packages/serf/package.py @@ -25,31 +25,67 @@ from spack import * -class Serf(Package): +class Serf(SConsPackage): """Apache Serf - a high performance C-based HTTP client library built upon the Apache Portable Runtime (APR) library""" homepage = 'https://serf.apache.org/' - url = 'https://archive.apache.org/dist/serf/serf-1.3.8.tar.bz2' + url = 'https://archive.apache.org/dist/serf/serf-1.3.9.tar.bz2' + version('1.3.9', '26015c63e3bbb108c1689bf2090e4c26351db674') version('1.3.8', '1d45425ca324336ce2f4ae7d7b4cfbc5567c5446') + variant('debug', default=False, + description='Enable debugging info and strict compile warnings') + + depends_on('scons@2.3.0:', type='build') + depends_on('apr') depends_on('apr-util') - depends_on('scons', type='build') - depends_on('expat') depends_on('openssl') depends_on('zlib') - def install(self, spec, prefix): - options = ['PREFIX=%s' % prefix] - options.append('APR=%s' % spec['apr'].prefix) - options.append('APU=%s' % spec['apr-util'].prefix) - options.append('OPENSSL=%s' % spec['openssl'].prefix) - options.append('LINKFLAGS=-L%s/lib -L%s/lib' % - (spec['expat'].prefix, spec['zlib'].prefix)) - options.append('CPPFLAGS=-I%s/include -I%s/include' % - (spec['expat'].prefix, spec['zlib'].prefix)) + def build_args(self, spec, prefix): + args = [ + 'PREFIX={0}'.format(prefix), + 'APR={0}'.format(spec['apr'].prefix), + 'APU={0}'.format(spec['apr-util'].prefix), + 'OPENSSL={0}'.format(spec['openssl'].prefix), + 'ZLIB={0}'.format(spec['zlib'].prefix), + ] - scons(*options) - scons('install') + if '+debug' in spec: + args.append('DEBUG=yes') + else: + args.append('DEBUG=no') + + # SCons doesn't pass Spack environment variables to the + # execution environment. Therefore, we can't use Spack's compiler + # wrappers. Use the actual compilers. SCons seems to RPATH things + # on its own anyway. + args.append('CC={0}'.format(self.compiler.cc)) + + return args + + def test(self): + # FIXME: Several test failures: + # + # There were 14 failures: + # 1) test_ssl_trust_rootca + # 2) test_ssl_certificate_chain_with_anchor + # 3) test_ssl_certificate_chain_all_from_server + # 4) test_ssl_no_servercert_callback_allok + # 5) test_ssl_large_response + # 6) test_ssl_large_request + # 7) test_ssl_client_certificate + # 8) test_ssl_future_server_cert + # 9) test_setup_ssltunnel + # 10) test_ssltunnel_basic_auth + # 11) test_ssltunnel_basic_auth_server_has_keepalive_off + # 12) test_ssltunnel_basic_auth_proxy_has_keepalive_off + # 13) test_ssltunnel_basic_auth_proxy_close_conn_on_200resp + # 14) test_ssltunnel_digest_auth + # + # These seem to be related to: + # https://groups.google.com/forum/#!topic/serf-dev/YEFTTdF1Qwc + scons('check') From 17cdb73be7a781b7ec49fa02703a0e324ee2eaba Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 5 Aug 2017 08:37:53 -0500 Subject: [PATCH 1385/2394] Add latest version of numpy and scipy (#4982) --- .../builtin/packages/py-numpy/package.py | 24 +++++++++---------- .../builtin/packages/py-scipy/package.py | 5 +++- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 177a55fd1d4..76ccb1a4a91 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -34,7 +34,7 @@ class PyNumpy(PythonPackage): number capabilities""" homepage = "http://www.numpy.org/" - url = "https://pypi.io/packages/source/n/numpy/numpy-1.9.1.tar.gz" + url = "https://pypi.io/packages/source/n/numpy/numpy-1.13.1.zip" install_time_test_callbacks = ['install_test', 'import_module_test'] @@ -48,18 +48,16 @@ class PyNumpy(PythonPackage): # FIXME: numpy._build_utils and numpy.core.code_generators failed to import # FIXME: Is this expected? - version('1.13.0', 'fd044f0b8079abeaf5e6d2e93b2c1d03', - url="https://pypi.io/packages/source/n/numpy/numpy-1.13.0.zip") - version('1.12.1', 'c75b072a984028ac746a6a332c209a91', - url="https://pypi.io/packages/source/n/numpy/numpy-1.12.1.zip") - version('1.12.0', '33e5a84579f31829bbbba084fe0a4300', - url="https://pypi.io/packages/source/n/numpy/numpy-1.12.0.zip") - version('1.11.2', '03bd7927c314c43780271bf1ab795ebc') - version('1.11.1', '2f44a895a8104ffac140c3a70edbd450') - version('1.11.0', 'bc56fb9fc2895aa4961802ffbdb31d0b') - version('1.10.4', 'aed294de0aa1ac7bd3f9745f4f1968ad') - version('1.9.2', 'a1ed53432dbcd256398898d35bc8e645') - version('1.9.1', '78842b73560ec378142665e712ae4ad9') + version('1.13.1', '2c3c0f4edf720c3a7b525dacc825b9ae') + version('1.13.0', 'fd044f0b8079abeaf5e6d2e93b2c1d03') + version('1.12.1', 'c75b072a984028ac746a6a332c209a91') + version('1.12.0', '33e5a84579f31829bbbba084fe0a4300') + version('1.11.2', '8308cc97be154d2f64a2387ea863c2ac') + version('1.11.1', '5caa3428b24aaa07e72c79d115140e46') + version('1.11.0', '19ce5c4eb16d663a0713daf0018a3021') + version('1.10.4', '510ffc322c635511e7be95d225b6bcbb') + version('1.9.2', 'e80c19d2fb25af576460bb7dac31c59a') + version('1.9.1', '223532d8e1bdaff5d30936439701d6e1') variant('blas', default=True, description='Build with BLAS support') variant('lapack', default=True, description='Build with LAPACK support') diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index 919b7508a63..6e2ef327e33 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -31,7 +31,7 @@ class PyScipy(PythonPackage): as routines for numerical integration and optimization.""" homepage = "http://www.scipy.org/" - url = "https://pypi.io/packages/source/s/scipy/scipy-0.18.1.tar.gz" + url = "https://pypi.io/packages/source/s/scipy/scipy-0.19.1.tar.gz" install_time_test_callbacks = ['install_test', 'import_module_test'] @@ -49,6 +49,9 @@ class PyScipy(PythonPackage): 'scipy.special._precompute' ] + # See https://github.com/LLNL/spack/issues/2737 + version('0.19.1', '6b4d91b62f1926282b127194a06b72b3', + url="https://pypi.io/packages/source/s/scipy/scipy-0.19.1.tar.gz") version('0.19.0', '91b8396231eec780222a57703d3ec550', url="https://pypi.io/packages/source/s/scipy/scipy-0.19.0.zip") version('0.18.1', '5fb5fb7ccb113ab3a039702b6c2f3327') From c7df12f69826448fd9af875e44348b8f8d0ff067 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 5 Aug 2017 10:15:18 -0500 Subject: [PATCH 1386/2394] Massive conversion from Package to CMakePackage (#4975) --- lib/spack/spack/build_environment.py | 1 + .../builtin/packages/adept-utils/package.py | 13 ++-- .../repos/builtin/packages/apex/package.py | 29 ++++----- .../repos/builtin/packages/archer/package.py | 29 ++++----- .../builtin/packages/armadillo/package.py | 16 ++--- .../builtin/packages/automaded/package.py | 10 ++- .../repos/builtin/packages/bear/package.py | 12 +--- .../builtin/packages/bpp-core/package.py | 10 ++- .../builtin/packages/bpp-phyl/package.py | 10 ++- .../repos/builtin/packages/bpp-seq/package.py | 10 ++- .../builtin/packages/bpp-suite/package.py | 9 +-- .../repos/builtin/packages/c-blosc/package.py | 26 +++++--- .../builtin/packages/callpath/package.py | 26 ++++---- .../repos/builtin/packages/cereal/package.py | 31 ++++------ .../repos/builtin/packages/cgal/package.py | 29 ++++----- .../repos/builtin/packages/cgns/package.py | 15 ++--- .../builtin/packages/cleverleaf/package.py | 15 ++--- .../repos/builtin/packages/cmocka/package.py | 14 ++--- .../repos/builtin/packages/cnmem/package.py | 7 +-- .../repos/builtin/packages/cram/package.py | 13 ++-- .../repos/builtin/packages/dakota/package.py | 32 ++++------ .../builtin/packages/damselfly/package.py | 10 +-- .../repos/builtin/packages/doxygen/package.py | 8 +-- .../repos/builtin/packages/gflags/package.py | 12 ++-- .../repos/builtin/packages/glm/package.py | 14 +---- .../builtin/packages/graphlib/package.py | 10 +-- .../builtin/packages/grib-api/package.py | 39 ++++++------ .../repos/builtin/packages/hepmc/package.py | 21 +++---- .../repos/builtin/packages/jsoncpp/package.py | 20 +++--- .../repos/builtin/packages/kealib/package.py | 21 +++---- .../repos/builtin/packages/kripke/package.py | 33 +++++----- .../repos/builtin/packages/libemos/package.py | 28 ++++----- .../builtin/packages/llvm-lld/package.py | 20 +++--- .../packages/llvm-openmp-ompt/package.py | 35 ++++++----- .../repos/builtin/packages/magics/package.py | 62 +++++++++---------- .../repos/builtin/packages/mariadb/package.py | 12 +--- .../repos/builtin/packages/mbedtls/package.py | 13 ++-- .../repos/builtin/packages/mitos/package.py | 10 +-- .../builtin/packages/msgpack-c/package.py | 10 +-- .../repos/builtin/packages/muster/package.py | 13 ++-- .../builtin/packages/ompt-openmp/package.py | 15 ++--- .../repos/builtin/packages/opencv/package.py | 43 +++++-------- .../packages/openscenegraph/package.py | 36 +++++------ .../repos/builtin/packages/panda/package.py | 12 +--- .../builtin/packages/paradiseo/package.py | 27 ++------ .../repos/builtin/packages/pidx/package.py | 12 +--- .../repos/builtin/packages/piranha/package.py | 25 ++------ .../repos/builtin/packages/psi4/package.py | 35 ++++------- .../repos/builtin/packages/raja/package.py | 8 +-- .../repos/builtin/packages/ravel/package.py | 8 +-- .../repos/builtin/packages/sdl2/package.py | 11 +--- .../repos/builtin/packages/sympol/package.py | 9 +-- .../repos/builtin/packages/task/package.py | 17 ++--- .../repos/builtin/packages/taskd/package.py | 16 ++--- .../repos/builtin/packages/tethex/package.py | 11 ++-- .../repos/builtin/packages/visit/package.py | 35 +++++------ .../repos/builtin/packages/xrootd/package.py | 19 +----- 57 files changed, 410 insertions(+), 677 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index e41edc14f86..34c9cd56d28 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -333,6 +333,7 @@ def set_module_variables_for_package(pkg, module): m.make = MakeExecutable('make', jobs) m.gmake = MakeExecutable('gmake', jobs) m.scons = MakeExecutable('scons', jobs) + m.ninja = MakeExecutable('ninja', jobs) # easy shortcut to os.environ m.env = os.environ diff --git a/var/spack/repos/builtin/packages/adept-utils/package.py b/var/spack/repos/builtin/packages/adept-utils/package.py index 609dff2fe77..ab1a4ca8615 100644 --- a/var/spack/repos/builtin/packages/adept-utils/package.py +++ b/var/spack/repos/builtin/packages/adept-utils/package.py @@ -25,7 +25,7 @@ from spack import * -class AdeptUtils(Package): +class AdeptUtils(CMakePackage): """Utility libraries for LLNL performance tools.""" homepage = "https://github.com/llnl/adept-utils" @@ -34,11 +34,6 @@ class AdeptUtils(Package): version('1.0.1', '731a310717adcb004d9d195130efee7d') version('1.0', '5c6cd9badce56c945ac8551e34804397') - depends_on("boost") - depends_on("mpi") - depends_on('cmake', type='build') - - def install(self, spec, prefix): - cmake(*std_cmake_args) - make() - make("install") + depends_on('boost') + depends_on('mpi') + depends_on('cmake@2.8:', type='build') diff --git a/var/spack/repos/builtin/packages/apex/package.py b/var/spack/repos/builtin/packages/apex/package.py index 55e22342b1d..4c1c0466ebf 100644 --- a/var/spack/repos/builtin/packages/apex/package.py +++ b/var/spack/repos/builtin/packages/apex/package.py @@ -23,10 +23,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -from spack.util.environment import * -class Apex(Package): +class Apex(CMakePackage): homepage = "http://github.com/khuck/xpress-apex" url = "http://github.com/khuck/xpress-apex/archive/v0.1.tar.gz" @@ -38,19 +37,13 @@ class Apex(Package): depends_on("activeharmony@4.5:") depends_on("ompt-openmp") - def install(self, spec, prefix): - - path = get_path("PATH") - path.remove(spec["binutils"].prefix.bin) - path_set("PATH", path) - with working_dir("build", create=True): - cmake('-DBOOST_ROOT=%s' % spec['boost'].prefix, - '-DUSE_BFD=TRUE', - '-DBFD_ROOT=%s' % spec['binutils'].prefix, - '-DUSE_ACTIVEHARMONY=TRUE', - '-DACTIVEHARMONY_ROOT=%s' % spec['activeharmony'].prefix, - '-DUSE_OMPT=TRUE', - '-DOMPT_ROOT=%s' % spec['ompt-openmp'].prefix, - '..', *std_cmake_args) - make() - make("install") + def cmake_args(self): + return [ + '-DBOOST_ROOT=%s' % spec['boost'].prefix, + '-DUSE_BFD=TRUE', + '-DBFD_ROOT=%s' % spec['binutils'].prefix, + '-DUSE_ACTIVEHARMONY=TRUE', + '-DACTIVEHARMONY_ROOT=%s' % spec['activeharmony'].prefix, + '-DUSE_OMPT=TRUE', + '-DOMPT_ROOT=%s' % spec['ompt-openmp'].prefix, + ] diff --git a/var/spack/repos/builtin/packages/archer/package.py b/var/spack/repos/builtin/packages/archer/package.py index 9c577e65170..f5c18a39883 100644 --- a/var/spack/repos/builtin/packages/archer/package.py +++ b/var/spack/repos/builtin/packages/archer/package.py @@ -26,7 +26,7 @@ from spack import * -class Archer(Package): +class Archer(CMakePackage): """ARCHER, a data race detection tool for large OpenMP applications.""" homepage = "https://github.com/PRUNERS/ARCHER" @@ -34,23 +34,24 @@ class Archer(Package): version('1.0.0', '790bfaf00b9f57490eb609ecabfe954a') - depends_on('cmake', type='build') + depends_on('cmake@3.4.3:', type='build') depends_on('llvm') depends_on('ninja', type='build') depends_on('llvm-openmp-ompt') - def install(self, spec, prefix): + def cmake_args(self): + return [ + '-G', 'Ninja', + '-DCMAKE_C_COMPILER=clang', + '-DCMAKE_CXX_COMPILER=clang++', + '-DOMP_PREFIX:PATH=%s' % spec['llvm-openmp-ompt'].prefix, + ] - with working_dir('spack-build', create=True): - cmake_args = std_cmake_args[:] - cmake_args.extend([ - '-G', 'Ninja', - '-DCMAKE_C_COMPILER=clang', - '-DCMAKE_CXX_COMPILER=clang++', - '-DOMP_PREFIX:PATH=%s' % spec['llvm-openmp-ompt'].prefix, - ]) - - cmake('..', *cmake_args) - ninja = Executable('ninja') + # TODO: Add better ninja support to CMakePackage + def build(self, spec, prefix): + with working_dir(self.build_directory): ninja() + + def install(self, spec, prefix): + with working_dir(self.build_directory): ninja('install') diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index 90fc78d8c32..a3c9c2bf3fb 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -25,7 +25,7 @@ from spack import * -class Armadillo(Package): +class Armadillo(CMakePackage): """Armadillo is a high quality linear algebra library (matrix maths) for the C++ language, aiming towards a good balance between speed and ease of use.""" @@ -40,19 +40,21 @@ class Armadillo(Package): variant('hdf5', default=False, description='Include HDF5 support') - depends_on('cmake@2.8:', type='build') + depends_on('cmake@2.8.12:', type='build') depends_on('arpack-ng') # old arpack causes undefined symbols depends_on('blas') depends_on('lapack') depends_on('superlu@5.2:') depends_on('hdf5', when='+hdf5') - def install(self, spec, prefix): + def cmake_args(self): + spec = self.spec + arpack = find_libraries('libarpack', root=spec[ 'arpack-ng'].prefix.lib, shared=True) superlu = find_libraries('libsuperlu', root=spec[ 'superlu'].prefix, shared=False, recurse=True) - cmake_args = [ + return [ # ARPACK support '-DARPACK_LIBRARY={0}'.format(arpack.joined()), # BLAS support @@ -65,9 +67,3 @@ def install(self, spec, prefix): # HDF5 support '-DDETECT_HDF5={0}'.format('ON' if '+hdf5' in spec else 'OFF') ] - - cmake_args.extend(std_cmake_args) - cmake('.', *cmake_args) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/automaded/package.py b/var/spack/repos/builtin/packages/automaded/package.py index 1edeecf2450..1d84a4f6f41 100644 --- a/var/spack/repos/builtin/packages/automaded/package.py +++ b/var/spack/repos/builtin/packages/automaded/package.py @@ -25,7 +25,7 @@ from spack import * -class Automaded(Package): +class Automaded(CMakePackage): """AutomaDeD (Automata-based Debugging for Dissimilar parallel tasks) is a tool for automatic diagnosis of performance and correctness problems in MPI applications. It creates @@ -45,9 +45,7 @@ class Automaded(Package): depends_on('mpi') depends_on('boost') depends_on('callpath') - depends_on('cmake', type='build') + depends_on('cmake@2.8:', type='build') - def install(self, spec, prefix): - cmake("-DSTATE_TRACKER_WITH_CALLPATH=ON", *std_cmake_args) - make() - make("install") + def cmake_args(self): + return ['-DSTATE_TRACKER_WITH_CALLPATH=ON'] diff --git a/var/spack/repos/builtin/packages/bear/package.py b/var/spack/repos/builtin/packages/bear/package.py index 7078931c594..eed95ebf890 100644 --- a/var/spack/repos/builtin/packages/bear/package.py +++ b/var/spack/repos/builtin/packages/bear/package.py @@ -25,7 +25,7 @@ from spack import * -class Bear(Package): +class Bear(CMakePackage): """Bear is a tool that generates a compilation database for clang tooling from non-cmake build systems.""" homepage = "https://github.com/rizsotto/Bear" @@ -34,11 +34,5 @@ class Bear(Package): version('2.2.0', '87250cc3a9a697e7d1e8972253a35259') version('2.0.4', 'fd8afb5e8e18f8737ba06f90bd77d011') - depends_on('cmake', type='build') - depends_on("python") - - def install(self, spec, prefix): - cmake('.', *std_cmake_args) - - make("all") - make("install") + depends_on('python') + depends_on('cmake@2.8:', type='build') diff --git a/var/spack/repos/builtin/packages/bpp-core/package.py b/var/spack/repos/builtin/packages/bpp-core/package.py index e7cc1abf29f..df2c09b3ae7 100644 --- a/var/spack/repos/builtin/packages/bpp-core/package.py +++ b/var/spack/repos/builtin/packages/bpp-core/package.py @@ -25,7 +25,7 @@ from spack import * -class BppCore(Package): +class BppCore(CMakePackage): """Bio++ core library.""" homepage = "http://biopp.univ-montp2.fr/wiki/index.php/Installation" @@ -33,9 +33,7 @@ class BppCore(Package): version('2.2.0', '5789ed2ae8687d13664140cd77203477') - depends_on('cmake', type='build') + depends_on('cmake@2.6:', type='build') - def install(self, spec, prefix): - cmake('-DBUILD_TESTING=FALSE', '.', *std_cmake_args) - make() - make('install') + def cmake_args(self): + return ['-DBUILD_TESTING=FALSE'] diff --git a/var/spack/repos/builtin/packages/bpp-phyl/package.py b/var/spack/repos/builtin/packages/bpp-phyl/package.py index 4d73d6bd599..1e1a2a393f5 100644 --- a/var/spack/repos/builtin/packages/bpp-phyl/package.py +++ b/var/spack/repos/builtin/packages/bpp-phyl/package.py @@ -25,7 +25,7 @@ from spack import * -class BppPhyl(Package): +class BppPhyl(CMakePackage): """Bio++ phylogeny library.""" homepage = "http://biopp.univ-montp2.fr/wiki/index.php/Installation" @@ -33,11 +33,9 @@ class BppPhyl(Package): version('2.2.0', '5c40667ec0bf37e0ecaba321be932770') - depends_on('cmake', type='build') + depends_on('cmake@2.6:', type='build') depends_on('bpp-core') depends_on('bpp-seq') - def install(self, spec, prefix): - cmake('-DBUILD_TESTING=FALSE', '.', *std_cmake_args) - make() - make('install') + def cmake_args(self): + return ['-DBUILD_TESTING=FALSE'] diff --git a/var/spack/repos/builtin/packages/bpp-seq/package.py b/var/spack/repos/builtin/packages/bpp-seq/package.py index 6e1f06a64b8..d89d029d260 100644 --- a/var/spack/repos/builtin/packages/bpp-seq/package.py +++ b/var/spack/repos/builtin/packages/bpp-seq/package.py @@ -25,7 +25,7 @@ from spack import * -class BppSeq(Package): +class BppSeq(CMakePackage): """Bio++ seq library.""" homepage = "http://biopp.univ-montp2.fr/wiki/index.php/Installation" @@ -33,10 +33,8 @@ class BppSeq(Package): version('2.2.0', '44adef0ff4d5ca4e69ccf258c9270633') - depends_on('cmake', type='build') + depends_on('cmake@2.6:', type='build') depends_on('bpp-core') - def install(self, spec, prefix): - cmake('-DBUILD_TESTING=FALSE', '.', *std_cmake_args) - make() - make('install') + def cmake_args(self): + return ['-DBUILD_TESTING=FALSE'] diff --git a/var/spack/repos/builtin/packages/bpp-suite/package.py b/var/spack/repos/builtin/packages/bpp-suite/package.py index 8223c40275c..f52f76b822a 100644 --- a/var/spack/repos/builtin/packages/bpp-suite/package.py +++ b/var/spack/repos/builtin/packages/bpp-suite/package.py @@ -25,7 +25,7 @@ from spack import * -class BppSuite(Package): +class BppSuite(CMakePackage): """BppSuite is a suite of ready-to-use programs for phylogenetic and sequence analysis.""" @@ -34,13 +34,8 @@ class BppSuite(Package): version('2.2.0', 'd8b29ad7ccf5bd3a7beb701350c9e2a4') - depends_on('cmake', type='build') + depends_on('cmake@2.6:', type='build') depends_on('texinfo', type='build') depends_on('bpp-core') depends_on('bpp-seq') depends_on('bpp-phyl') - - def install(self, spec, prefix): - cmake('.', *std_cmake_args) - make() - make('install') diff --git a/var/spack/repos/builtin/packages/c-blosc/package.py b/var/spack/repos/builtin/packages/c-blosc/package.py index 186f314f1ef..636657bf8d7 100644 --- a/var/spack/repos/builtin/packages/c-blosc/package.py +++ b/var/spack/repos/builtin/packages/c-blosc/package.py @@ -28,7 +28,7 @@ from spack import * -class CBlosc(Package): +class CBlosc(CMakePackage): """Blosc, an extremely fast, multi-threaded, meta-compressor library""" homepage = "http://www.blosc.org" url = "https://github.com/Blosc/c-blosc/archive/v1.11.1.tar.gz" @@ -42,15 +42,21 @@ class CBlosc(Package): variant('avx2', default=True, description='Enable AVX2 support') - depends_on("cmake", type='build') - depends_on("snappy") - depends_on("zlib") + depends_on('cmake@2.8.10:', type='build') + depends_on('snappy') + depends_on('zlib') - def install(self, spec, prefix): - avx2 = '-DDEACTIVATE_AVX2=%s' % ('ON' if '~avx2' in spec else 'OFF') - cmake('.', avx2, *std_cmake_args) + def cmake_args(self): + args = [] - make() - make("install") + if '+avx2' in self.spec: + args.append('-DDEACTIVATE_AVX2=OFF') + else: + args.append('-DDEACTIVATE_AVX2=ON') + + return args + + @run_after('install') + def darwin_fix(self): if sys.platform == 'darwin': - fix_darwin_install_name(prefix.lib) + fix_darwin_install_name(self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/callpath/package.py b/var/spack/repos/builtin/packages/callpath/package.py index 813e491dfdd..ef2058f5578 100644 --- a/var/spack/repos/builtin/packages/callpath/package.py +++ b/var/spack/repos/builtin/packages/callpath/package.py @@ -25,7 +25,7 @@ from spack import * -class Callpath(Package): +class Callpath(CMakePackage): """Library for representing callpaths consistently in distributed-memory performance tools.""" @@ -35,20 +35,20 @@ class Callpath(Package): version('1.0.2', 'b1994d5ee7c7db9d27586fc2dcf8f373') version('1.0.1', '0047983d2a52c5c335f8ba7f5bab2325') - depends_on("elf", type="link") - depends_on("libdwarf") - depends_on("dyninst") - depends_on("adept-utils") - depends_on("mpi") - depends_on('cmake', type='build') + depends_on('elf', type='link') + depends_on('libdwarf') + depends_on('dyninst') + depends_on('adept-utils') + depends_on('mpi') + depends_on('cmake@2.8:', type='build') - def install(self, spec, prefix): + def cmake_args(self): # TODO: offer options for the walker used. - cmake_args = std_cmake_args + args = ["-DCALLPATH_WALKER=dyninst"] + if spec.satisfies("^dyninst@9.3.0:"): std_flag = self.compiler.cxx11_flag - cmake_args.append("-DCMAKE_CXX_FLAGS='{0} -fpermissive'".format( + args.append("-DCMAKE_CXX_FLAGS='{0} -fpermissive'".format( std_flag)) - cmake('.', "-DCALLPATH_WALKER=dyninst", *cmake_args) - make() - make("install") + + return args diff --git a/var/spack/repos/builtin/packages/cereal/package.py b/var/spack/repos/builtin/packages/cereal/package.py index 22da01e789d..fc7aba49557 100644 --- a/var/spack/repos/builtin/packages/cereal/package.py +++ b/var/spack/repos/builtin/packages/cereal/package.py @@ -23,11 +23,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os -import shutil -class Cereal(Package): +class Cereal(CMakePackage): """cereal is a header-only C++11 serialization library. cereal takes arbitrary data types and reversibly turns them into different representations, such as compact binary encodings, XML, or @@ -54,25 +52,18 @@ class Cereal(Package): depends_on('cmake@2.6.2:', type='build') - def install(self, spec, prefix): + def patch(self): # Don't use -Werror filter_file(r'-Werror', '', 'CMakeLists.txt') - # configure + def cmake_args(self): # Boost is only used for self-tests, which we are not running (yet?) - cmake('.', - '-DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE', - '-DSKIP_PORTABILITY_TEST=TRUE', - *std_cmake_args) + return [ + '-DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE', + '-DSKIP_PORTABILITY_TEST=TRUE', + ] - # Build - make() - - # Install - shutil.rmtree(join_path(prefix, 'doc'), ignore_errors=True) - shutil.rmtree(join_path(prefix, 'include'), ignore_errors=True) - shutil.rmtree(join_path(prefix, 'lib'), ignore_errors=True) - shutil.copytree('doc', join_path(prefix, 'doc'), symlinks=True) - shutil.copytree('include', join_path(prefix, 'include'), symlinks=True) - # Create empty directory to avoid linker warnings later - os.mkdir(join_path(prefix, 'lib')) + def install(self, spec, prefix): + with working_dir(self.build_directory): + install_tree('doc', prefix.doc) + install_tree('include', prefix.include) diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index 235d02ccde5..381eb493e5d 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -25,7 +25,7 @@ from spack import * -class Cgal(Package): +class Cgal(CMakePackage): """The Computational Geometry Algorithms Library (CGAL) is a C++ library that aims to provide easy access to efficient and reliable algorithms in computational geometry. CGAL is used in various areas needing geometric @@ -42,8 +42,9 @@ class Cgal(Package): variant('shared', default=True, description='Enables the build of shared libraries') - variant('debug', default=False, - description='Builds a debug version of the libraries') + variant('build_type', default='Release', + description='The build type to build', + values=('Debug', 'Release')) # ---- See "7 CGAL Libraries" at: # http://doc.cgal.org/latest/Manual/installation.html @@ -58,6 +59,8 @@ class Cgal(Package): variant('demos', default=False, description='Build CGAL demos') + depends_on('cmake@2.8.11:', type='build') + # Essential Third Party Libraries depends_on('boost+thread+system') depends_on('gmp') @@ -82,18 +85,12 @@ class Cgal(Package): # depends_on('esbtl') # depends_on('intel-tbb') - # Build dependencies - depends_on('cmake', type='build') - - def install(self, spec, prefix): + def cmake_args(self): # Installation instructions: # http://doc.cgal.org/latest/Manual/installation.html + spec = self.spec - options = std_cmake_args + [ - # CGAL supports only Release and Debug build type. Any - # other build type will raise an error at configure time - '-DCMAKE_BUILD_TYPE:STRING=%s' % - ('Debug' if '+debug' in spec else 'Release'), + return [ '-DBUILD_SHARED_LIBS:BOOL=%s' % ('ON' if '+shared' in spec else 'OFF'), '-DWITH_CGAL_Core:BOOL=%s' % @@ -101,9 +98,5 @@ def install(self, spec, prefix): '-DWITH_CGAL_ImageIO:BOOL=%s' % ('YES' if '+imageio' in spec else 'NO'), '-DWITH_CGAL_Qt5:BOOL=%s' % - ('YES' if '+demos' in spec else 'NO')] - - with working_dir('spack-build', create=True): - cmake('..', *options) - make() - make('install') + ('YES' if '+demos' in spec else 'NO'), + ] diff --git a/var/spack/repos/builtin/packages/cgns/package.py b/var/spack/repos/builtin/packages/cgns/package.py index 24f932a8d07..e3a4f89ff68 100644 --- a/var/spack/repos/builtin/packages/cgns/package.py +++ b/var/spack/repos/builtin/packages/cgns/package.py @@ -25,7 +25,7 @@ from spack import * -class Cgns(Package): +class Cgns(CMakePackage): """The CFD General Notation System (CGNS) provides a general, portable, and extensible standard for the storage and retrieval of computational fluid dynamics (CFD) analysis data.""" @@ -37,11 +37,12 @@ class Cgns(Package): variant('hdf5', default=True, description='Enable HDF5 interface') - depends_on('cmake', type='build') + depends_on('cmake@2.8:', type='build') depends_on('hdf5', when='+hdf5') - def install(self, spec, prefix): - cmake_args = std_cmake_args[:] + def cmake_args(self): + spec = self.spec + cmake_args = [] if self.compiler.f77 and self.compiler.fc: cmake_args.append('-DCGNS_ENABLE_FORTRAN=ON') @@ -66,8 +67,4 @@ def install(self, spec, prefix): else: cmake_args.append('-DCGNS_ENABLE_HDF5=OFF') - with working_dir('spack-build', create=True): - cmake('..', *cmake_args) - - make() - make('install') + return cmake_args diff --git a/var/spack/repos/builtin/packages/cleverleaf/package.py b/var/spack/repos/builtin/packages/cleverleaf/package.py index 6ce9f51111e..62907533ace 100644 --- a/var/spack/repos/builtin/packages/cleverleaf/package.py +++ b/var/spack/repos/builtin/packages/cleverleaf/package.py @@ -25,7 +25,7 @@ from spack import * -class Cleverleaf(Package): +class Cleverleaf(CMakePackage): """CleverLeaf is a hydrodynamics mini-app that extends CloverLeaf with Adaptive Mesh Refinement using the SAMRAI toolkit from Lawrence Livermore National Laboratory. The primary goal of CleverLeaf is @@ -40,12 +40,7 @@ class Cleverleaf(Package): version('develop', git='https://github.com/UK-MAC/CleverLeaf_ref.git', branch='develop') - depends_on("samrai@3.8.0:") - depends_on("hdf5+mpi") - depends_on("boost") - depends_on('cmake', type='build') - - def install(self, spec, prefix): - cmake(*std_cmake_args) - make() - make("install") + depends_on('samrai@3.8.0:') + depends_on('hdf5+mpi') + depends_on('boost') + depends_on('cmake@3.1:', type='build') diff --git a/var/spack/repos/builtin/packages/cmocka/package.py b/var/spack/repos/builtin/packages/cmocka/package.py index b0d9414ac64..944295a036c 100644 --- a/var/spack/repos/builtin/packages/cmocka/package.py +++ b/var/spack/repos/builtin/packages/cmocka/package.py @@ -25,7 +25,7 @@ from spack import * -class Cmocka(Package): +class Cmocka(CMakePackage): """Unit-testing framework in pure C""" homepage = "https://cmocka.org/" url = "https://cmocka.org/files/1.1/cmocka-1.1.1.tar.xz" @@ -33,13 +33,7 @@ class Cmocka(Package): version('1.1.1', '6fbff4e42589566eda558db98b97623e') version('1.1.0', '59c9aa5735d9387fb591925ec53523ec') version('1.0.1', 'ed861e501a21a92b2af63e466df2015e') + + depends_on('cmake@2.6.0:', type='build') + parallel = False - - depends_on('cmake', type='build') - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('..', *std_cmake_args) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/cnmem/package.py b/var/spack/repos/builtin/packages/cnmem/package.py index cdbd0c86d48..fc4df89e091 100644 --- a/var/spack/repos/builtin/packages/cnmem/package.py +++ b/var/spack/repos/builtin/packages/cnmem/package.py @@ -25,13 +25,10 @@ from spack import * -class Cnmem(Package): +class Cnmem(CMakePackage): """CNMem mempool for CUDA devices""" homepage = "https://github.com/NVIDIA/cnmem" version('git', git='https://github.com/NVIDIA/cnmem.git', branch="master") - def install(self, spec, prefix): - cmake('.', *std_cmake_args) - make() - make('install') + depends_on('cmake@2.8.8:', type='build') diff --git a/var/spack/repos/builtin/packages/cram/package.py b/var/spack/repos/builtin/packages/cram/package.py index f0c33ae2c69..25427292cb2 100644 --- a/var/spack/repos/builtin/packages/cram/package.py +++ b/var/spack/repos/builtin/packages/cram/package.py @@ -25,18 +25,13 @@ from spack import * -class Cram(Package): +class Cram(CMakePackage): """Cram runs many small MPI jobs inside one large MPI job.""" homepage = "https://github.com/llnl/cram" url = "http://github.com/llnl/cram/archive/v1.0.1.tar.gz" version('1.0.1', 'c73711e945cf5dc603e44395f6647f5e') - extends('python') - depends_on("mpi") - depends_on('cmake', type='build') - - def install(self, spec, prefix): - cmake(".", *std_cmake_args) - make() - make("install") + extends('python@2.7:') + depends_on('mpi') + depends_on('cmake@2.8:', type='build') diff --git a/var/spack/repos/builtin/packages/dakota/package.py b/var/spack/repos/builtin/packages/dakota/package.py index fc8f478bf3e..ebc303a193e 100644 --- a/var/spack/repos/builtin/packages/dakota/package.py +++ b/var/spack/repos/builtin/packages/dakota/package.py @@ -25,7 +25,7 @@ from spack import * -class Dakota(Package): +class Dakota(CMakePackage): """The Dakota toolkit provides a flexible, extensible interface between analysis codes and iterative systems analysis methods. Dakota contains algorithms for: @@ -49,8 +49,6 @@ class Dakota(Package): version('6.3', '05a58d209fae604af234c894c3f73f6d') - variant('debug', default=False, - description='Builds a debug version of the libraries') variant('shared', default=True, description='Enables the build of shared libraries') variant('mpi', default=True, description='Activates MPI support') @@ -61,28 +59,20 @@ class Dakota(Package): depends_on('python') depends_on('boost') - depends_on('cmake', type='build') + depends_on('cmake@2.8.9:', type='build') - def install(self, spec, prefix): - options = [] - options.extend(std_cmake_args) + def cmake_args(self): + spec = self.spec - options.extend([ - '-DCMAKE_BUILD_TYPE:STRING=%s' % ( - 'Debug' if '+debug' in spec else 'Release'), + args = [ '-DBUILD_SHARED_LIBS:BOOL=%s' % ( - 'ON' if '+shared' in spec else 'OFF')]) + 'ON' if '+shared' in spec else 'OFF'), + ] if '+mpi' in spec: - options.extend([ + args.extend([ '-DDAKOTA_HAVE_MPI:BOOL=ON', - '-DMPI_CXX_COMPILER:STRING=%s' % join_path( - spec['mpi'].prefix.bin, 'mpicxx')]) + '-DMPI_CXX_COMPILER:STRING=%s' % join_path(spec['mpi'].mpicxx), + ]) - build_directory = join_path(self.stage.path, 'spack-build') - source_directory = self.stage.source_path - - with working_dir(build_directory, create=True): - cmake(source_directory, *options) - make() - make("install") + return args diff --git a/var/spack/repos/builtin/packages/damselfly/package.py b/var/spack/repos/builtin/packages/damselfly/package.py index e78bb21f44d..05cbee4a4e2 100644 --- a/var/spack/repos/builtin/packages/damselfly/package.py +++ b/var/spack/repos/builtin/packages/damselfly/package.py @@ -25,7 +25,7 @@ from spack import * -class Damselfly(Package): +class Damselfly(CMakePackage): """Damselfly is a model-based parallel network simulator.""" homepage = "https://github.com/llnl/damselfly" url = "https://github.com/llnl/damselfly" @@ -33,10 +33,4 @@ class Damselfly(Package): version('1.0', '05cf7e2d8ece4408c0f2abb7ab63fd74c0d62895', git='https://github.com/llnl/damselfly.git', tag='v1.0') - depends_on('cmake', type='build') - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('-DCMAKE_BUILD_TYPE=release', '..', *std_cmake_args) - make() - make('install') + depends_on('cmake@2.6:', type='build') diff --git a/var/spack/repos/builtin/packages/doxygen/package.py b/var/spack/repos/builtin/packages/doxygen/package.py index 61740fe91a2..7817c2a8d89 100644 --- a/var/spack/repos/builtin/packages/doxygen/package.py +++ b/var/spack/repos/builtin/packages/doxygen/package.py @@ -25,7 +25,7 @@ from spack import * -class Doxygen(Package): +class Doxygen(CMakePackage): """Doxygen is the de facto standard tool for generating documentation from annotated C++ sources, but it also supports other popular programming languages such as C, Objective-C, C#, PHP, Java, Python, IDL (Corba, @@ -49,9 +49,3 @@ class Doxygen(Package): # optional dependencies depends_on("graphviz", when="+graphviz", type='run') - - def install(self, spec, prefix): - cmake('.', *std_cmake_args) - - make() - make("install") diff --git a/var/spack/repos/builtin/packages/gflags/package.py b/var/spack/repos/builtin/packages/gflags/package.py index 57a01f8c78c..b96ee7a7066 100644 --- a/var/spack/repos/builtin/packages/gflags/package.py +++ b/var/spack/repos/builtin/packages/gflags/package.py @@ -25,7 +25,7 @@ from spack import * -class Gflags(Package): +class Gflags(CMakePackage): """The gflags package contains a C++ library that implements commandline flags processing. It includes built-in support for standard types such as string and the ability to define flags @@ -37,11 +37,7 @@ class Gflags(Package): version('2.1.2', 'ac432de923f9de1e9780b5254884599f') - depends_on('cmake', type='build') + depends_on('cmake@2.8.12:', type='build') - def install(self, spec, prefix): - cmake("-DCMAKE_INSTALL_PREFIX=" + prefix, - "-DBUILD_SHARED_LIBS=ON") - make() - make("test") - make("install") + def cmake_args(self): + return ['-DBUILD_SHARED_LIBS=ON'] diff --git a/var/spack/repos/builtin/packages/glm/package.py b/var/spack/repos/builtin/packages/glm/package.py index 9825cbdb943..507c9606e33 100644 --- a/var/spack/repos/builtin/packages/glm/package.py +++ b/var/spack/repos/builtin/packages/glm/package.py @@ -25,11 +25,9 @@ from spack import * -class Glm(Package): +class Glm(CMakePackage): """OpenGL Mathematics (GLM) is a header only C++ mathematics library for - graphics software based on the OpenGL Shading Language (GLSL) - specification. - + graphics software based on the OpenGL Shading Language (GLSL) specification """ homepage = "https://github.com/g-truc/glm" @@ -37,10 +35,4 @@ class Glm(Package): version('0.9.7.1', '61af6639cdf652d1cdd7117190afced8') - depends_on('cmake', type='build') - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('..', *std_cmake_args) - make() - make("install") + depends_on('cmake@2.6:', type='build') diff --git a/var/spack/repos/builtin/packages/graphlib/package.py b/var/spack/repos/builtin/packages/graphlib/package.py index 0ed50001f63..5d4582c365b 100644 --- a/var/spack/repos/builtin/packages/graphlib/package.py +++ b/var/spack/repos/builtin/packages/graphlib/package.py @@ -25,7 +25,7 @@ from spack import * -class Graphlib(Package): +class Graphlib(CMakePackage): """Library to create, manipulate, and export graphs Graphlib.""" homepage = "https://github.com/LLNL/graphlib" url = "https://github.com/LLNL/graphlib/archive/v2.0.0.tar.gz" @@ -33,10 +33,4 @@ class Graphlib(Package): version('2.0.0', '43c6df84f1d38ba5a5dce0ae19371a70') version('3.0.0', '625d199f97ab1b84cbc8daabcaee5e2a') - depends_on('cmake', type='build') - - def install(self, spec, prefix): - cmake(".", *std_cmake_args) - - make() - make("install") + depends_on('cmake@2.6:', type='build') diff --git a/var/spack/repos/builtin/packages/grib-api/package.py b/var/spack/repos/builtin/packages/grib-api/package.py index 9597964c947..d3f971d7371 100644 --- a/var/spack/repos/builtin/packages/grib-api/package.py +++ b/var/spack/repos/builtin/packages/grib-api/package.py @@ -25,7 +25,7 @@ from spack import * -class GribApi(Package): +class GribApi(CMakePackage): """The ECMWF GRIB API is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.""" @@ -40,42 +40,41 @@ class GribApi(Package): variant('netcdf', default=False, description='Enable netcdf encoding/decoding using netcdf library') variant('jpeg', default=True, description='Enable jpeg 2000 for grib 2 decoding/encoding') variant('png', default=False, description='Enable png for decoding/encoding') + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', 'Production')) - depends_on('cmake', type='build') depends_on('libpng', when='+png') depends_on('netcdf', when='+netcdf') depends_on('jasper', when='+jpeg') + depends_on('cmake@2.8.11:', type='build') - def install(self, spec, prefix): - options = [] - options.extend(std_cmake_args) - options.append('-DBUILD_SHARED_LIBS=BOTH') + def cmake_args(self): + spec = self.spec + args = ['-DBUILD_SHARED_LIBS=BOTH'] # We will add python support later. - options.append('-DENABLE_PYTHON=OFF') + args.append('-DENABLE_PYTHON=OFF') # Disable FORTRAN interface if we don't have it. if (self.compiler.f77 is None) or (self.compiler.fc is None): - options.append('-DENABLE_FORTRAN=OFF') + args.append('-DENABLE_FORTRAN=OFF') if '+netcdf' in spec: - options.append('-DENABLE_NETCDF=ON') - options.append('-DNETCDF_PATH=%s' % spec['netcdf'].prefix) + args.append('-DENABLE_NETCDF=ON') + args.append('-DNETCDF_PATH=%s' % spec['netcdf'].prefix) else: - options.append('-DENABLE_NETCDF=OFF') + args.append('-DENABLE_NETCDF=OFF') if '+jpeg' in spec: - options.append('-DENABLE_JPG=ON') - options.append('-DJASPER_PATH=%s' % spec['jasper'].prefix) + args.append('-DENABLE_JPG=ON') + args.append('-DJASPER_PATH=%s' % spec['jasper'].prefix) else: - options.append('-DENABLE_JPG=OFF') + args.append('-DENABLE_JPG=OFF') if '+png' in spec: - options.append('-DENABLE_PNG=ON') + args.append('-DENABLE_PNG=ON') else: - options.append('-DENABLE_PNG=OFF') + args.append('-DENABLE_PNG=OFF') - with working_dir('spack-build', create=True): - cmake('..', *options) - make() - make('install') + return args diff --git a/var/spack/repos/builtin/packages/hepmc/package.py b/var/spack/repos/builtin/packages/hepmc/package.py index dfad9adb489..711daa88f8d 100644 --- a/var/spack/repos/builtin/packages/hepmc/package.py +++ b/var/spack/repos/builtin/packages/hepmc/package.py @@ -26,7 +26,7 @@ from spack import * -class Hepmc(Package): +class Hepmc(CMakePackage): """The HepMC package is an object oriented, C++ event record for High Energy Physics Monte Carlo generators and simulation.""" @@ -39,17 +39,10 @@ class Hepmc(Package): version('2.06.06', '102e5503537a3ecd6ea6f466aa5bc4ae') version('2.06.05', '2a4a2a945adf26474b8bdccf4f881d9c') - depends_on("cmake", type='build') + depends_on('cmake@2.6:', type='build') - def install(self, spec, prefix): - build_directory = join_path(self.stage.path, 'spack-build') - source_directory = self.stage.source_path - options = [source_directory] - options.append('-Dmomentum:STRING=GEV') - options.append('-Dlength:STRING=MM') - options.extend(std_cmake_args) - - with working_dir(build_directory, create=True): - cmake(*options) - make() - make('install') + def cmake_args(self): + return [ + '-Dmomentum:STRING=GEV', + '-Dlength:STRING=MM', + ] diff --git a/var/spack/repos/builtin/packages/jsoncpp/package.py b/var/spack/repos/builtin/packages/jsoncpp/package.py index d21b9482643..1889bffc1ec 100644 --- a/var/spack/repos/builtin/packages/jsoncpp/package.py +++ b/var/spack/repos/builtin/packages/jsoncpp/package.py @@ -25,7 +25,7 @@ from spack import * -class Jsoncpp(Package): +class Jsoncpp(CMakePackage): """JsonCpp is a C++ library that allows manipulating JSON values, including serialization and deserialization to and from strings. It can also preserve existing comment in unserialization/serialization @@ -36,14 +36,14 @@ class Jsoncpp(Package): version('1.7.3', 'aff6bfb5b81d9a28785429faa45839c5') - depends_on('cmake', type='build') + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', + 'MinSizeRel', 'Coverage')) + + depends_on('cmake@3.1:', type='build') + # TODO: Add a 'test' deptype # depends_on('python', type='test') - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('..', '-DBUILD_SHARED_LIBS=ON', *std_cmake_args) - - make() - if self.run_tests: - make('test') # Python needed to run tests - make('install') + def cmake_args(self): + return ['-DBUILD_SHARED_LIBS=ON'] diff --git a/var/spack/repos/builtin/packages/kealib/package.py b/var/spack/repos/builtin/packages/kealib/package.py index b417c6be78f..6abc7c643f0 100644 --- a/var/spack/repos/builtin/packages/kealib/package.py +++ b/var/spack/repos/builtin/packages/kealib/package.py @@ -25,7 +25,7 @@ from spack import * -class Kealib(Package): +class Kealib(CMakePackage): """An HDF5 Based Raster File Format KEALib provides an implementation of the GDAL data model. @@ -46,16 +46,13 @@ class Kealib(Package): version('1.4.5', '112e9c42d980b2d2987a3c15d0833a5d') - depends_on("hdf5") + depends_on('hdf5') + depends_on('cmake@2.8.10:', type='build') - def install(self, spec, prefix): - with working_dir('trunk', create=False): - cmake_args = [] - cmake_args.append("-DCMAKE_INSTALL_PREFIX=%s" % prefix) - cmake_args.append("-DHDF5_INCLUDE_DIR=%s" % - spec['hdf5'].prefix.include) - cmake_args.append("-DHDF5_LIB_PATH=%s" % spec['hdf5'].prefix.lib) - cmake('.', *cmake_args) + root_cmakelists_dir = 'trunk' - make() - make("install") + def cmake_args(self): + return [ + '-DHDF5_INCLUDE_DIR=%s' % spec['hdf5'].prefix.include, + '-DHDF5_LIB_PATH=%s' % spec['hdf5'].prefix.lib, + ] diff --git a/var/spack/repos/builtin/packages/kripke/package.py b/var/spack/repos/builtin/packages/kripke/package.py index 9d630f12067..65f722feed5 100644 --- a/var/spack/repos/builtin/packages/kripke/package.py +++ b/var/spack/repos/builtin/packages/kripke/package.py @@ -25,7 +25,7 @@ from spack import * -class Kripke(Package): +class Kripke(CMakePackage): """Kripke is a simple, scalable, 3D Sn deterministic particle transport proxy/mini app. """ @@ -38,21 +38,20 @@ class Kripke(Package): variant('mpi', default=True, description='Build with MPI.') variant('openmp', default=True, description='Build with OpenMP enabled.') - depends_on('mpi', when="+mpi") + depends_on('mpi', when='+mpi') + depends_on('cmake@3.0:', type='build') + + def cmake_args(self): + def enabled(variant): + return (1 if variant in spec else 0) + + return [ + '-DENABLE_OPENMP=%d' % enabled('+openmp'), + '-DENABLE_MPI=%d' % enabled('+mpi'), + ] def install(self, spec, prefix): - with working_dir('build', create=True): - def enabled(variant): - return (1 if variant in spec else 0) - - cmake('-DCMAKE_INSTALL_PREFIX:PATH=.', - '-DENABLE_OPENMP=%d' % enabled('+openmp'), - '-DENABLE_MPI=%d' % enabled('+mpi'), - '..', - *std_cmake_args) - make() - - # Kripke does not provide install target, so we have to copy - # things into place. - mkdirp(prefix.bin) - install('kripke', prefix.bin) + # Kripke does not provide install target, so we have to copy + # things into place. + mkdirp(prefix.bin) + install('kripke', prefix.bin) diff --git a/var/spack/repos/builtin/packages/libemos/package.py b/var/spack/repos/builtin/packages/libemos/package.py index 371a8437b73..b8840e526d3 100644 --- a/var/spack/repos/builtin/packages/libemos/package.py +++ b/var/spack/repos/builtin/packages/libemos/package.py @@ -25,7 +25,7 @@ from spack import * -class Libemos(Package): +class Libemos(CMakePackage): """The Interpolation library (EMOSLIB) includes Interpolation software and BUFR & CREX encoding/decoding routines.""" @@ -37,27 +37,27 @@ class Libemos(Package): variant('eccodes', default=False, description="Use eccodes instead of grib-api for GRIB decoding") + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', 'Production')) - depends_on('cmake', type='build') depends_on('eccodes', when='+eccodes') depends_on('grib-api', when='~eccodes') depends_on('fftw+float+double') + depends_on('cmake@2.8.11:', type='build') - def install(self, spec, prefix): - options = [] - options.extend(std_cmake_args) + def cmake_args(self): + spec = self.spec + args = [] if spec.satisfies('+eccodes'): - options.append('-DENABLE_ECCODES=ON') - options.append('-DECCODES_PATH=%s' % spec['eccodes'].prefix) + args.append('-DENABLE_ECCODES=ON') + args.append('-DECCODES_PATH=%s' % spec['eccodes'].prefix) else: - options.append('-DENABLE_ECCODES=OFF') - options.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix) + args.append('-DENABLE_ECCODES=OFF') + args.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix) # To support long pathnames that spack generates - options.append('-DCMAKE_Fortran_FLAGS=-ffree-line-length-none') + args.append('-DCMAKE_Fortran_FLAGS=-ffree-line-length-none') - with working_dir('spack-build', create=True): - cmake('..', *options) - make() - make('install') + return args diff --git a/var/spack/repos/builtin/packages/llvm-lld/package.py b/var/spack/repos/builtin/packages/llvm-lld/package.py index 0ebe2e6b895..801c384c790 100644 --- a/var/spack/repos/builtin/packages/llvm-lld/package.py +++ b/var/spack/repos/builtin/packages/llvm-lld/package.py @@ -25,28 +25,24 @@ from spack import * -class LlvmLld(Package): +class LlvmLld(CMakePackage): """lld - The LLVM Linker lld is a new set of modular code for creating linker tools.""" homepage = "http://lld.llvm.org" url = "http://llvm.org/releases/3.4/lld-3.4.src.tar.gz" - depends_on('llvm') - version('3.4', '3b6a17e58c8416c869c14dd37682f78e') - depends_on('cmake', type='build') + depends_on('llvm') + depends_on('cmake@2.8:', type='build') - def install(self, spec, prefix): + def cmake_args(self): if 'CXXFLAGS' in env and env['CXXFLAGS']: env['CXXFLAGS'] += ' ' + self.compiler.cxx11_flag else: env['CXXFLAGS'] = self.compiler.cxx11_flag - with working_dir('spack-build', create=True): - cmake('..', - '-DLLD_PATH_TO_LLVM_BUILD=%s' % spec['llvm'].prefix, - '-DLLVM_MAIN_SRC_DIR=%s' % spec['llvm'].prefix, - *std_cmake_args) - make() - make("install") + return [ + '-DLLD_PATH_TO_LLVM_BUILD=%s' % spec['llvm'].prefix, + '-DLLVM_MAIN_SRC_DIR=%s' % spec['llvm'].prefix, + ] diff --git a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py index 3479b08bc5d..8039ec17170 100644 --- a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py +++ b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py @@ -26,7 +26,7 @@ from spack import * -class LlvmOpenmpOmpt(Package): +class LlvmOpenmpOmpt(CMakePackage): """The OpenMP subproject provides an OpenMP runtime for use with the OpenMP implementation in Clang. This branch includes experimental changes for OMPT, the OpenMP Tools interface""" @@ -42,25 +42,26 @@ class LlvmOpenmpOmpt(Package): git='https://github.com/OpenMPToolsInterface/LLVM-openmp.git', commit='982a08bcf3df9fb5afc04ac3bada47f19cc4e3d3') - depends_on('cmake', type='build') + depends_on('cmake@2.8:', type='build') depends_on('llvm') depends_on('ninja', type='build') - def install(self, spec, prefix): + def cmake_args(self): + return [ + '-G', 'Ninja', + '-DCMAKE_C_COMPILER=clang', + '-DCMAKE_CXX_COMPILER=clang++', + '-DCMAKE_BUILD_TYPE=Release', + '-DLIBOMP_OMPT_SUPPORT=on', + '-DLIBOMP_OMPT_BLAME=on', + '-DLIBOMP_OMPT_TRACE=on' + ] - with working_dir('spack-build', create=True): - cmake_args = std_cmake_args[:] - cmake_args.extend([ - '-G', 'Ninja', - '-DCMAKE_C_COMPILER=clang', - '-DCMAKE_CXX_COMPILER=clang++', - '-DCMAKE_BUILD_TYPE=Release', - '-DLIBOMP_OMPT_SUPPORT=on', - '-DLIBOMP_OMPT_BLAME=on', - '-DLIBOMP_OMPT_TRACE=on' - ]) - - cmake('..', *cmake_args) - ninja = Executable('ninja') + # TODO: Add better ninja support to CMakePackage + def build(self, spec, prefix): + with working_dir(self.build_directory): ninja() + + def install(self, spec, prefix): + with working_dir(self.build_directory): ninja('install') diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index 33a6bb5640d..4eac010c18f 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -26,7 +26,7 @@ import glob -class Magics(Package): +class Magics(CMakePackage): """Magics is the latest generation of the ECMWF's Meteorological plotting software MAGICS. Although completely redesigned in C++, it is intended to be as backwards-compatible as possible with the Fortran interface.""" @@ -52,8 +52,11 @@ class Magics(Package): variant('metview', default=False, description='Enable metview support') variant('qt', default=False, description='Enable metview support with qt') variant('eccodes', default=False, description='Use eccodes instead of grib-api') + variant('build_type', default='RelWithDebInfo', + description='The build type to build', + values=('Debug', 'Release', 'RelWithDebInfo', 'Production')) - depends_on('cmake', type='build') + depends_on('cmake@2.8.11:', type='build') depends_on('pkg-config', type='build') # Currently python is only necessary to run @@ -80,53 +83,50 @@ def patch(self): for pyfile in glob.glob('*/*.py'): filter_file('#!/usr/bin/python', '#!/usr/bin/env python', pyfile) - def install(self, spec, prefix): - options = [] - options.extend(std_cmake_args) - options.append('-DENABLE_ODB=OFF') - options.append('-DENABLE_PYTHON=OFF') - options.append('-DBOOST_ROOT=%s' % spec['boost'].prefix) - options.append('-DPROJ4_PATH=%s' % spec['proj'].prefix) - options.append('-DENABLE_TESTS=OFF') + def cmake_args(self): + args = [ + '-DENABLE_ODB=OFF', + '-DENABLE_PYTHON=OFF', + '-DBOOST_ROOT=%s' % spec['boost'].prefix, + '-DPROJ4_PATH=%s' % spec['proj'].prefix, + '-DENABLE_TESTS=OFF', + ] if '+bufr' in spec: - options.append('-DENABLE_BUFR=ON') - options.append('-DLIBEMOS_PATH=%s' % spec['libemos'].prefix) + args.append('-DENABLE_BUFR=ON') + args.append('-DLIBEMOS_PATH=%s' % spec['libemos'].prefix) else: - options.append('-DENABLE_BUFR=OFF') + args.append('-DENABLE_BUFR=OFF') if '+netcdf' in spec: - options.append('-DENABLE_NETCDF=ON') - options.append('-DNETCDF_PATH=%s' % spec['netcdf-cxx'].prefix) + args.append('-DENABLE_NETCDF=ON') + args.append('-DNETCDF_PATH=%s' % spec['netcdf-cxx'].prefix) else: - options.append('-DENABLE_NETCDF=OFF') + args.append('-DENABLE_NETCDF=OFF') if '+cairo' in spec: - options.append('-DENABLE_CAIRO=ON') + args.append('-DENABLE_CAIRO=ON') else: - options.append('-DENABLE_CAIRO=OFF') + args.append('-DENABLE_CAIRO=OFF') if '+metview' in spec: if '+qt' in spec: - options.append('-DENABLE_METVIEW=ON') + args.append('-DENABLE_METVIEW=ON') if spec['qt'].version[0] == 5: - options.append('-DENABLE_QT5=ON') + args.append('-DENABLE_QT5=ON') else: - options.append('-DENABLE_METVIEW_NO_QT=ON') + args.append('-DENABLE_METVIEW_NO_QT=ON') else: - options.append('-DENABLE_METVIEW=OFF') + args.append('-DENABLE_METVIEW=OFF') if '+eccodes' in spec: - options.append('-DENABLE_ECCODES=ON') - options.append('-DECCODES_PATH=%s' % spec['eccodes'].prefix) + args.append('-DENABLE_ECCODES=ON') + args.append('-DECCODES_PATH=%s' % spec['eccodes'].prefix) else: - options.append('-DENABLE_ECCODES=OFF') - options.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix) + args.append('-DENABLE_ECCODES=OFF') + args.append('-DGRIB_API_PATH=%s' % spec['grib-api'].prefix) if (self.compiler.f77 is None) or (self.compiler.fc is None): - options.append('-DENABLE_FORTRAN=OFF') + args.append('-DENABLE_FORTRAN=OFF') - with working_dir('spack-build', create=True): - cmake('..', *options) - make() - make('install') + return args diff --git a/var/spack/repos/builtin/packages/mariadb/package.py b/var/spack/repos/builtin/packages/mariadb/package.py index 6374fdb8d37..78332a05b4a 100644 --- a/var/spack/repos/builtin/packages/mariadb/package.py +++ b/var/spack/repos/builtin/packages/mariadb/package.py @@ -25,7 +25,7 @@ from spack import * -class Mariadb(Package): +class Mariadb(CMakePackage): """MariaDB turns data into structured information in a wide array of applications, ranging from banking to websites. It is an enhanced, drop-in replacement for MySQL. MariaDB is used because it is fast, scalable and @@ -45,18 +45,10 @@ class Mariadb(Package): 'operations in the mariadb client library.') depends_on('boost') - depends_on('cmake') + depends_on('cmake@2.6:', type='build') depends_on('jemalloc') depends_on('libaio') depends_on('libedit') depends_on('libevent', when='+nonblocking') depends_on('ncurses') depends_on('zlib') - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - - cmake('..', *std_cmake_args) - - make() - make('install') diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py index b93b82abd0f..09820321ded 100644 --- a/var/spack/repos/builtin/packages/mbedtls/package.py +++ b/var/spack/repos/builtin/packages/mbedtls/package.py @@ -25,7 +25,7 @@ from spack import * -class Mbedtls(Package): +class Mbedtls(CMakePackage): """mbed TLS (formerly known as PolarSSL) makes it trivially easy for developers to include cryptographic and SSL/TLS capabilities in their (embedded) products, facilitating this functionality with a @@ -42,10 +42,9 @@ class Mbedtls(Package): version('2.1.3', '7eb4cf1dfa68578a2c8dbd0b6fa752dd') version('1.3.16', '4144d7320c691f721aeb9e67a1bc38e0') - depends_on('cmake', type='build') + variant('build_type', default='Release', + description='The build type to build', + values=('Debug', 'Release', 'Coverage', 'ASan', 'ASanDbg', + 'MemSan', 'MemSanDbg', 'Check', 'CheckFull')) - def install(self, spec, prefix): - cmake('.', *std_cmake_args) - - make() - make("install") + depends_on('cmake@2.6:', type='build') diff --git a/var/spack/repos/builtin/packages/mitos/package.py b/var/spack/repos/builtin/packages/mitos/package.py index 0e87f7c3764..2c2177f9687 100644 --- a/var/spack/repos/builtin/packages/mitos/package.py +++ b/var/spack/repos/builtin/packages/mitos/package.py @@ -25,7 +25,7 @@ from spack import * -class Mitos(Package): +class Mitos(CMakePackage): """Mitos is a library and a tool for collecting sampled memory performance data to view with MemAxes""" @@ -40,10 +40,4 @@ class Mitos(Package): depends_on('dyninst@8.2.1:') depends_on('hwloc') depends_on('mpi') - depends_on('cmake', type='build') - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('..', *std_cmake_args) - make() - make("install") + depends_on('cmake@2.8:', type='build') diff --git a/var/spack/repos/builtin/packages/msgpack-c/package.py b/var/spack/repos/builtin/packages/msgpack-c/package.py index 5771fba86d5..a22fd0e3128 100644 --- a/var/spack/repos/builtin/packages/msgpack-c/package.py +++ b/var/spack/repos/builtin/packages/msgpack-c/package.py @@ -25,17 +25,11 @@ from spack import * -class MsgpackC(Package): +class MsgpackC(CMakePackage): """A small, fast binary interchange format convertible to/from JSON""" homepage = "http://www.msgpack.org" url = "https://github.com/msgpack/msgpack-c/archive/cpp-1.4.1.tar.gz" version('1.4.1', 'e2fd3a7419b9bc49e5017fdbefab87e0') - depends_on('cmake', type='build') - - def install(self, spec, prefix): - cmake('.', *std_cmake_args) - - make() - make("install") + depends_on('cmake@2.8.12:', type='build') diff --git a/var/spack/repos/builtin/packages/muster/package.py b/var/spack/repos/builtin/packages/muster/package.py index bcc68ade274..4f61938a804 100644 --- a/var/spack/repos/builtin/packages/muster/package.py +++ b/var/spack/repos/builtin/packages/muster/package.py @@ -25,7 +25,7 @@ from spack import * -class Muster(Package): +class Muster(CMakePackage): """The Muster library provides implementations of sequential and parallel K-Medoids clustering algorithms. It is intended as a general framework for parallel cluster analysis, particularly @@ -38,11 +38,6 @@ class Muster(Package): version('1.0.1', 'd709787db7e080447afb6571ac17723c') version('1.0', '2eec6979a4a36d3a65a792d12969be16') - depends_on("boost") - depends_on("mpi") - depends_on('cmake', type='build') - - def install(self, spec, prefix): - cmake(".", *std_cmake_args) - make() - make("install") + depends_on('boost') + depends_on('mpi') + depends_on('cmake@2.8:', type='build') diff --git a/var/spack/repos/builtin/packages/ompt-openmp/package.py b/var/spack/repos/builtin/packages/ompt-openmp/package.py index daa3fed670e..f751dedef08 100644 --- a/var/spack/repos/builtin/packages/ompt-openmp/package.py +++ b/var/spack/repos/builtin/packages/ompt-openmp/package.py @@ -25,7 +25,7 @@ from spack import * -class OmptOpenmp(Package): +class OmptOpenmp(CMakePackage): """LLVM/Clang OpenMP runtime with OMPT support. This is a fork of the OpenMPToolsInterface/LLVM-openmp fork of the official LLVM OpenMP mirror. This library provides a drop-in replacement of the OpenMP @@ -37,13 +37,8 @@ class OmptOpenmp(Package): version('0.1', '2334e6a84b52da41b27afd9831ed5370') - depends_on('cmake', type='build') + depends_on('cmake@2.8:', type='build') - def install(self, spec, prefix): - with working_dir("runtime/build", create=True): - cmake('-DCMAKE_C_COMPILER=%s' % self.compiler.cc, - '-DCMAKE_CXX_COMPILER=%s' % self.compiler.cxx, - '-DCMAKE_INSTALL_PREFIX=%s' % prefix, - '..', *std_cmake_args) - make() - make("install") + conflicts('%gcc@:4.7') + + root_cmakelists_dir = 'runtime' diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index 09fa68b9c05..e0743e17c66 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -25,7 +25,7 @@ from spack import * -class Opencv(Package): +class Opencv(CMakePackage): """OpenCV is released under a BSD license and hence it's free for both academic and commercial use. It has C++, C, Python and Java interfaces and supports Windows, Linux, Mac OS, iOS and Android. OpenCV was designed for @@ -47,8 +47,6 @@ class Opencv(Package): variant('shared', default=True, description='Enables the build of shared libraries') - variant('debug', default=False, - description='Builds a debug version of the libraries') variant('eigen', default=True, description='Activates support for eigen') variant('ipp', default=True, description='Activates support for IPP') @@ -62,7 +60,6 @@ class Opencv(Package): variant('java', default=False, description='Activates support for Java') - depends_on('cmake', type='build') depends_on('eigen', when='+eigen', type='build') depends_on('zlib') @@ -80,13 +77,10 @@ class Opencv(Package): extends('python', when='+python') - def install(self, spec, prefix): - cmake_options = [] - cmake_options.extend(std_cmake_args) + def cmake_args(self): + spec = self.spec - cmake_options.extend([ - '-DCMAKE_BUILD_TYPE:STRING={0}'.format(( - 'Debug' if '+debug' in spec else 'Release')), + args = [ '-DBUILD_SHARED_LIBS:BOOL={0}'.format(( 'ON' if '+shared' in spec else 'OFF')), '-DENABLE_PRECOMPILED_HEADERS:BOOL=OFF', @@ -100,11 +94,11 @@ def install(self, spec, prefix): 'ON' if '+vtk' in spec else 'OFF')), '-DBUILD_opencv_java:BOOL={0}'.format(( 'ON' if '+java' in spec else 'OFF')), - ]) + ] # Media I/O zlib = spec['zlib'] - cmake_options.extend([ + args.extend([ '-DZLIB_LIBRARY_{0}:FILEPATH={1}'.format(( 'DEBUG' if '+debug' in spec else 'RELEASE'), join_path(zlib.prefix.lib, @@ -113,7 +107,7 @@ def install(self, spec, prefix): ]) libpng = spec['libpng'] - cmake_options.extend([ + args.extend([ '-DPNG_LIBRARY_{0}:FILEPATH={1}'.format(( 'DEBUG' if '+debug' in spec else 'RELEASE'), join_path(libpng.prefix.lib, @@ -122,7 +116,7 @@ def install(self, spec, prefix): ]) libjpeg = spec['libjpeg-turbo'] - cmake_options.extend([ + args.extend([ '-DJPEG_LIBRARY:FILEPATH={0}'.format( join_path(libjpeg.prefix.lib, 'libjpeg.{0}'.format(dso_suffix))), @@ -130,7 +124,7 @@ def install(self, spec, prefix): ]) libtiff = spec['libtiff'] - cmake_options.extend([ + args.extend([ '-DTIFF_LIBRARY_{0}:FILEPATH={1}'.format(( 'DEBUG' if '+debug' in spec else 'RELEASE'), join_path(libtiff.prefix.lib, @@ -139,7 +133,7 @@ def install(self, spec, prefix): ]) jasper = spec['jasper'] - cmake_options.extend([ + args.extend([ '-DJASPER_LIBRARY_{0}:FILEPATH={1}'.format(( 'DEBUG' if '+debug' in spec else 'RELEASE'), join_path(jasper.prefix.lib, @@ -149,17 +143,17 @@ def install(self, spec, prefix): # GUI if '+gtk' not in spec: - cmake_options.extend([ + args.extend([ '-DWITH_GTK:BOOL=OFF', '-DWITH_GTK_2_X:BOOL=OFF' ]) elif '^gtkplus@3:' in spec: - cmake_options.extend([ + args.extend([ '-DWITH_GTK:BOOL=ON', '-DWITH_GTK_2_X:BOOL=OFF' ]) elif '^gtkplus@2:3' in spec: - cmake_options.extend([ + args.extend([ '-DWITH_GTK:BOOL=OFF', '-DWITH_GTK_2_X:BOOL=ON' ]) @@ -171,7 +165,7 @@ def install(self, spec, prefix): python_include_dir = spec['python'].headers.directories[0] if '^python@3:' in spec: - cmake_options.extend([ + args.extend([ '-DBUILD_opencv_python3=ON', '-DPYTHON3_EXECUTABLE={0}'.format(python_exe), '-DPYTHON3_LIBRARY={0}'.format(python_lib), @@ -179,7 +173,7 @@ def install(self, spec, prefix): '-DBUILD_opencv_python2=OFF', ]) elif '^python@2:3' in spec: - cmake_options.extend([ + args.extend([ '-DBUILD_opencv_python2=ON', '-DPYTHON2_EXECUTABLE={0}'.format(python_exe), '-DPYTHON2_LIBRARY={0}'.format(python_lib), @@ -187,12 +181,9 @@ def install(self, spec, prefix): '-DBUILD_opencv_python3=OFF', ]) else: - cmake_options.extend([ + args.extend([ '-DBUILD_opencv_python2=OFF', '-DBUILD_opencv_python3=OFF' ]) - with working_dir('spack_build', create=True): - cmake('..', *cmake_options) - make('VERBOSE=1') - make("install") + return args diff --git a/var/spack/repos/builtin/packages/openscenegraph/package.py b/var/spack/repos/builtin/packages/openscenegraph/package.py index 28a7187da82..e90d010e835 100644 --- a/var/spack/repos/builtin/packages/openscenegraph/package.py +++ b/var/spack/repos/builtin/packages/openscenegraph/package.py @@ -26,7 +26,7 @@ from spack import * -class Openscenegraph(Package): +class Openscenegraph(CMakePackage): """OpenSceneGraph is an open source, high performance 3D graphics toolkit that's used in a variety of visual simulation applications.""" @@ -36,42 +36,34 @@ class Openscenegraph(Package): version('3.2.3', '02ffdad7744c747d8fad0d7babb58427') version('3.1.5', '1c90b851b109849c985006486ef59822') - variant('debug', default=False, description='Builds a debug version of the library') variant('shared', default=True, description='Builds a shared version of the library') depends_on('cmake@2.8.7:', type='build') depends_on('qt@4:') depends_on('zlib') - def install(self, spec, prefix): - build_type = 'Debug' if '+debug' in spec else 'Release' + def cmake_args(self): + spec = self.spec + shared_status = 'ON' if '+shared' in spec else 'OFF' - cmake_args = std_cmake_args[:] - cmake_args.extend([ - '-DCMAKE_BUILD_TYPE={0}'.format(build_type), + args = [ '-DDYNAMIC_OPENSCENEGRAPH={0}'.format(shared_status), '-DDYNAMIC_OPENTHREADS={0}'.format(shared_status), - ]) + '-DZLIB_INCLUDE_DIR={0}'.format(spec['zlib'].prefix.include), + '-DZLIB_LIBRARY={0}/libz.{1}'.format(spec['zlib'].prefix.lib, + dso_suffix), + '-DBUILD_OSG_APPLICATIONS=OFF', + '-DOSG_NOTIFY_DISABLED=ON', + '-DLIB_POSTFIX=', + ] # NOTE: This is necessary in order to allow OpenSceneGraph to compile # despite containing a number of implicit bool to int conversions. if spec.satisfies('%gcc'): - cmake_args.extend([ + args.extend([ '-DCMAKE_C_FLAGS=-fpermissive', '-DCMAKE_CXX_FLAGS=-fpermissive', ]) - with working_dir('spack-build', create=True): - cmake( - '..', - '-DZLIB_INCLUDE_DIR={0}'.format(spec['zlib'].prefix.include), - '-DZLIB_LIBRARY={0}/libz.{1}'.format(spec['zlib'].prefix.lib, - dso_suffix), - '-DBUILD_OSG_APPLICATIONS=OFF', - '-DOSG_NOTIFY_DISABLED=ON', - '-DLIB_POSTFIX=', - *cmake_args - ) - make() - make('install') + return args diff --git a/var/spack/repos/builtin/packages/panda/package.py b/var/spack/repos/builtin/packages/panda/package.py index 7e5f7710d2d..5c905fb2d38 100644 --- a/var/spack/repos/builtin/packages/panda/package.py +++ b/var/spack/repos/builtin/packages/panda/package.py @@ -26,7 +26,7 @@ from spack import * -class Panda(Package): +class Panda(CMakePackage): """PANDA: Parallel AdjaceNcy Decomposition Algorithm""" homepage = "http://comopt.ifi.uni-heidelberg.de/software/PANDA/index.html" url = "http://comopt.ifi.uni-heidelberg.de/software/PANDA/downloads/panda-2016-03-07.tar" @@ -35,11 +35,5 @@ class Panda(Package): # Note: Panda can also be built without MPI support - depends_on("cmake", type="build") - depends_on("mpi") - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake("..", *std_cmake_args) - make() - make("install") + depends_on('cmake@2.6.4:', type='build') + depends_on('mpi') diff --git a/var/spack/repos/builtin/packages/paradiseo/package.py b/var/spack/repos/builtin/packages/paradiseo/package.py index 4b9bad0f3e7..fbcf8ca5e56 100644 --- a/var/spack/repos/builtin/packages/paradiseo/package.py +++ b/var/spack/repos/builtin/packages/paradiseo/package.py @@ -25,7 +25,7 @@ from spack import * -class Paradiseo(Package): +class Paradiseo(CMakePackage): """A C++ white-box object-oriented framework dedicated to the reusable design of metaheuristics.""" homepage = "http://paradiseo.gforge.inria.fr/" @@ -51,13 +51,11 @@ class Paradiseo(Package): description='Compile with (Experimental) EDO module') # variant('doc', default=False, description='Compile with documentation') - variant('debug', default=False, - description='Builds a debug version of the libraries') variant('openmp', default=False, description='Enable OpenMP support') variant('gnuplot', default=False, description='Enable GnuPlot support') # Required dependencies - depends_on("cmake", type='build') + depends_on("cmake@2.8:", type='build') # Optional dependencies depends_on("mpi", when="+mpi") @@ -73,13 +71,10 @@ class Paradiseo(Package): patch('fix_tests.patch') patch('fix_tutorials.patch') - def install(self, spec, prefix): - options = [] - options.extend(std_cmake_args) + def cmake_args(self): + spec = self.spec - options.extend([ - '-DCMAKE_BUILD_TYPE:STRING=%s' % ( - 'Debug' if '+debug' in spec else 'Release'), + return [ '-DINSTALL_TYPE:STRING=MIN', '-DMPI:BOOL=%s' % ('TRUE' if '+mpi' in spec else 'FALSE'), # Note: This requires a C++11 compatible compiler @@ -91,14 +86,4 @@ def install(self, spec, prefix): 'TRUE' if '+openmp' in spec else 'FALSE'), '-DENABLE_GNUPLOT:BOOL=%s' % ( 'TRUE' if '+gnuplot' in spec else 'FALSE') - ]) - - with working_dir('spack-build', create=True): - # Configure - cmake('..', *options) - - # Build, test and install - make("VERBOSE=1") - if self.run_tests: - make("test") - make("install") + ] diff --git a/var/spack/repos/builtin/packages/pidx/package.py b/var/spack/repos/builtin/packages/pidx/package.py index f79ff7eec4b..e4be597f0f5 100644 --- a/var/spack/repos/builtin/packages/pidx/package.py +++ b/var/spack/repos/builtin/packages/pidx/package.py @@ -25,7 +25,7 @@ from spack import * -class Pidx(Package): +class Pidx(CMakePackage): """PIDX Parallel I/O Library. PIDX is an efficient parallel I/O library that reads and writes @@ -37,11 +37,5 @@ class Pidx(Package): version('1.0', git='https://github.com/sci-visus/PIDX.git', commit='6afa1cf71d1c41263296dc049c8fabaf73c296da') - depends_on('cmake', type='build') - depends_on("mpi") - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('..', *std_cmake_args) - make() - make("install") + depends_on('cmake@2.8.4:', type='build') + depends_on('mpi') diff --git a/var/spack/repos/builtin/packages/piranha/package.py b/var/spack/repos/builtin/packages/piranha/package.py index 8d684ce2772..4bc4d5f8942 100644 --- a/var/spack/repos/builtin/packages/piranha/package.py +++ b/var/spack/repos/builtin/packages/piranha/package.py @@ -25,7 +25,7 @@ from spack import * -class Piranha(Package): +class Piranha(CMakePackage): """Piranha is a computer-algebra library for the symbolic manipulation of sparse multivariate polynomials and other closely-related symbolic objects (such as Poisson series).""" @@ -40,7 +40,7 @@ class Piranha(Package): description='Build the Python bindings') # Build dependencies - depends_on('cmake@3.0:', type='build') + depends_on('cmake@3.2.0:', type='build') extends('python', when='+pyranha') depends_on('python@2.6:', type='build', when='+pyranha') @@ -53,21 +53,8 @@ class Piranha(Package): depends_on('gmp') # mpir is a drop-in replacement for this depends_on('mpfr') # Could also be built against mpir - def install(self, spec, prefix): - options = [] - options.extend(std_cmake_args) - - # Python bindings - options.extend([ - '-DBUILD_PYRANHA=%s' % ( - 'ON' if '+python' in spec else 'OFF'), + def cmake_args(self): + return [ + '-DBUILD_PYRANHA=%s' % ('ON' if '+python' in self.spec else 'OFF'), '-DBUILD_TESTS:BOOL=ON', - ]) - - with working_dir('spack-build', create=True): - cmake('..', *options) - - make() - make('install') - if self.run_tests: - make('test') + ] diff --git a/var/spack/repos/builtin/packages/psi4/package.py b/var/spack/repos/builtin/packages/psi4/package.py index 41633ffceb0..3c50a8413c5 100644 --- a/var/spack/repos/builtin/packages/psi4/package.py +++ b/var/spack/repos/builtin/packages/psi4/package.py @@ -26,7 +26,7 @@ import os -class Psi4(Package): +class Psi4(CMakePackage): """Psi4 is an open-source suite of ab initio quantum chemistry programs designed for efficient, high-accuracy simulations of a variety of molecular properties.""" @@ -36,20 +36,16 @@ class Psi4(Package): version('0.5', '53041b8a9be3958384171d0d22f9fdd0') + variant('build_type', default='Release', + description='The build type to build', + values=('Debug', 'Release')) + # Required dependencies depends_on('blas') depends_on('lapack') - depends_on('boost' - '+chrono' - '+filesystem' - '+python' - '+regex' - '+serialization' - '+system' - '+timer' - '+thread') + depends_on('boost+chrono+filesystem+python+regex+serialization+system+timer+thread') depends_on('python') - depends_on('cmake', type='build') + depends_on('cmake@3.3:', type='build') depends_on('py-numpy', type=('build', 'run')) # Optional dependencies @@ -59,8 +55,10 @@ class Psi4(Package): # depends_on('pcm-solver') # depends_on('chemps2') - def install(self, spec, prefix): - cmake_args = [ + def cmake_args(self): + spec = self.spec + + return [ '-DBLAS_TYPE={0}'.format(spec['blas'].name.upper()), '-DBLAS_LIBRARIES={0}'.format(spec['blas'].libs.joined()), '-DLAPACK_TYPE={0}'.format(spec['lapack'].name.upper()), @@ -71,16 +69,7 @@ def install(self, spec, prefix): '-DENABLE_CHEMPS2=OFF' ] - cmake_args.extend(std_cmake_args) - - with working_dir('spack-build', create=True): - cmake('..', *cmake_args) - - make() - make('install') - - self.filter_compilers(spec, prefix) - + @run_after('install') def filter_compilers(self, spec, prefix): """Run after install to tell the configuration files to use the compilers that Spack built the package with. diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index b01f9570fe4..0fba029cab5 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -25,14 +25,10 @@ from spack import * -class Raja(Package): +class Raja(CMakePackage): """RAJA Parallel Framework.""" homepage = "http://software.llnl.gov/RAJA/" version('git', git='https://github.com/LLNL/RAJA.git', branch="master") - def install(self, spec, prefix): - with working_dir('build', create=True): - cmake('..', *std_cmake_args) - make() - make('install') + depends_on('cmake@3.3:', type='build') diff --git a/var/spack/repos/builtin/packages/ravel/package.py b/var/spack/repos/builtin/packages/ravel/package.py index 5875312a7b5..e7ba7abb4a4 100644 --- a/var/spack/repos/builtin/packages/ravel/package.py +++ b/var/spack/repos/builtin/packages/ravel/package.py @@ -25,7 +25,7 @@ from spack import * -class Ravel(Package): +class Ravel(CMakePackage): """Ravel is a parallel communication trace visualization tool that orders events according to logical time.""" @@ -41,7 +41,5 @@ class Ravel(Package): depends_on('otf2') depends_on('qt@5:') - def install(self, spec, prefix): - cmake('-Wno-dev', *std_cmake_args) - make() - make("install") + def cmake_args(self): + return ['-Wno-dev'] diff --git a/var/spack/repos/builtin/packages/sdl2/package.py b/var/spack/repos/builtin/packages/sdl2/package.py index e841cd4da43..bb7f46d0360 100644 --- a/var/spack/repos/builtin/packages/sdl2/package.py +++ b/var/spack/repos/builtin/packages/sdl2/package.py @@ -25,7 +25,7 @@ from spack import * -class Sdl2(Package): +class Sdl2(CMakePackage): """Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.""" @@ -35,11 +35,4 @@ class Sdl2(Package): version('2.0.5', 'd4055424d556b4a908aa76fad63abd3c') - depends_on('cmake', type='build') - - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('..', *std_cmake_args) - - make() - make('install') + depends_on('cmake@2.8.5:', type='build') diff --git a/var/spack/repos/builtin/packages/sympol/package.py b/var/spack/repos/builtin/packages/sympol/package.py index 6385bd09da5..3e129e68eb3 100644 --- a/var/spack/repos/builtin/packages/sympol/package.py +++ b/var/spack/repos/builtin/packages/sympol/package.py @@ -26,14 +26,14 @@ from spack import * -class Sympol(Package): +class Sympol(CMakePackage): """SymPol is a C++ tool to work with symmetric polyhedra""" homepage = "http://www.math.uni-rostock.de/~rehn/software/sympol.html" url = "http://www.math.uni-rostock.de/~rehn/software/sympol-0.1.8.tar.gz" version('0.1.8', '7cba1997f8532c754cb7259bf70caacb') - depends_on("cmake", type='build') + depends_on("cmake@2.6:", type="build") depends_on("bliss") depends_on("boost") @@ -41,8 +41,3 @@ class Sympol(Package): depends_on("lrslib") patch("lrs_mp_close.patch") - - def install(self, spec, prefix): - cmake(".", *std_cmake_args) - make() - make("install") diff --git a/var/spack/repos/builtin/packages/task/package.py b/var/spack/repos/builtin/packages/task/package.py index ac34bedd932..11cc280a9a7 100644 --- a/var/spack/repos/builtin/packages/task/package.py +++ b/var/spack/repos/builtin/packages/task/package.py @@ -25,22 +25,15 @@ from spack import * -class Task(Package): +class Task(CMakePackage): """Feature-rich console based todo list manager""" homepage = "http://www.taskwarrior.org" url = "http://taskwarrior.org/download/task-2.4.4.tar.gz" version('2.4.4', '517450c4a23a5842df3e9905b38801b3') - depends_on('cmake', type='build') - depends_on("gnutls") - depends_on("libuuid") - # depends_on("gcc@4.8:") + depends_on('cmake@2.8:', type='build') + depends_on('gnutls') + depends_on('libuuid') - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('-DCMAKE_BUILD_TYPE=release', - '..', - *std_cmake_args) - make() - make("install") + conflicts('%gcc@:4.7') diff --git a/var/spack/repos/builtin/packages/taskd/package.py b/var/spack/repos/builtin/packages/taskd/package.py index b14a507424b..9a9e2500113 100644 --- a/var/spack/repos/builtin/packages/taskd/package.py +++ b/var/spack/repos/builtin/packages/taskd/package.py @@ -25,7 +25,7 @@ from spack import * -class Taskd(Package): +class Taskd(CMakePackage): """TaskWarrior task synchronization daemon""" homepage = "http://www.taskwarrior.org" @@ -33,14 +33,8 @@ class Taskd(Package): version('1.1.0', 'ac855828c16f199bdbc45fbc227388d0') - depends_on('cmake', type='build') - depends_on("libuuid") - depends_on("gnutls") + depends_on('libuuid') + depends_on('gnutls') + depends_on('cmake@2.8:', type='build') - def install(self, spec, prefix): - with working_dir('spack-build', create=True): - cmake('-DCMAKE_BUILD_TYPE=release', - '..', - *std_cmake_args) - make() - make("install") + conflicts('%gcc@:4.7') diff --git a/var/spack/repos/builtin/packages/tethex/package.py b/var/spack/repos/builtin/packages/tethex/package.py index d5d4ba891b3..94296786619 100644 --- a/var/spack/repos/builtin/packages/tethex/package.py +++ b/var/spack/repos/builtin/packages/tethex/package.py @@ -25,7 +25,7 @@ from spack import * -class Tethex(Package): +class Tethex(CMakePackage): """Tethex is designed to convert triangular (in 2D) or tetrahedral (in 3D) Gmsh's mesh to quadrilateral or hexahedral one respectively. These meshes can be used in software packages working with hexahedrals only - for @@ -38,12 +38,13 @@ class Tethex(Package): version('0.0.7', '6c9e4a18a6637deb4400c6d77ec03184') version('develop', git='https://github.com/martemyev/tethex.git') - depends_on('cmake', type='build') + variant('build_type', default='Release', + description='The build type to build', + values=('Debug', 'Release')) + + depends_on('cmake@2.8:', type='build') def install(self, spec, prefix): - cmake('.') - make() - # install by hand mkdirp(prefix.bin) install('tethex', prefix.bin) diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index 17efe0eb80e..2c08c73a3c7 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -25,7 +25,7 @@ from spack import * -class Visit(Package): +class Visit(CMakePackage): """VisIt is an Open Source, interactive, scalable, visualization, animation and analysis tool.""" homepage = "https://wci.llnl.gov/simulation/computer-codes/visit/" @@ -36,29 +36,26 @@ class Visit(Package): version('2.10.2', '253de0837a9d69fb689befc98ea4d068') version('2.10.1', '3cbca162fdb0249f17c4456605c4211e') - depends_on('cmake', type='build') + depends_on('cmake@3.0:', type='build') depends_on('vtk@6.1.0~opengl2') depends_on('qt@4.8.6') depends_on('python') depends_on('silo+shared') depends_on('hdf5~mpi') - def install(self, spec, prefix): + root_cmakelists_dir = 'src' + + def cmake_args(self): + spec = self.spec qt_bin = spec['qt'].prefix.bin - with working_dir('spack-build', create=True): - cmake_args = std_cmake_args[:] - cmake_args.extend([ - '-DVTK_MAJOR_VERSION=6', - '-DVTK_MINOR_VERSION=1', - '-DVISIT_USE_GLEW=OFF', - '-DVISIT_LOC_QMAKE_EXE:FILEPATH={0}/qmake-qt4'.format(qt_bin), - '-DPYTHON_DIR:PATH={0}'.format(spec['python'].home), - '-DVISIT_SILO_DIR:PATH={0}'.format(spec['silo'].prefix), - '-DVISIT_HDF5_DIR:PATH={0}'.format(spec['hdf5'].prefix), - '-DVISIT_VTK_DIR:PATH={0}'.format(spec['vtk'].prefix), - ]) - - cmake(join_path('..', 'src'), *cmake_args) - make() - make('install') + return [ + '-DVTK_MAJOR_VERSION={0}'.format(spec['vtk'].version[0]), + '-DVTK_MINOR_VERSION={0}'.format(spec['vtk'].version[1]), + '-DVISIT_USE_GLEW=OFF', + '-DVISIT_LOC_QMAKE_EXE:FILEPATH={0}/qmake-qt4'.format(qt_bin), + '-DPYTHON_DIR:PATH={0}'.format(spec['python'].home), + '-DVISIT_SILO_DIR:PATH={0}'.format(spec['silo'].prefix), + '-DVISIT_HDF5_DIR:PATH={0}'.format(spec['hdf5'].prefix), + '-DVISIT_VTK_DIR:PATH={0}'.format(spec['vtk'].prefix), + ] diff --git a/var/spack/repos/builtin/packages/xrootd/package.py b/var/spack/repos/builtin/packages/xrootd/package.py index d377c689689..6388c006a7c 100644 --- a/var/spack/repos/builtin/packages/xrootd/package.py +++ b/var/spack/repos/builtin/packages/xrootd/package.py @@ -26,7 +26,7 @@ from spack import * -class Xrootd(Package): +class Xrootd(CMakePackage): """The XROOTD project aims at giving high performance, scalable fault tolerant access to data repositories of many kinds.""" homepage = "http://xrootd.org" @@ -38,19 +38,4 @@ class Xrootd(Package): version('4.4.0', '58f55e56801d3661d753ff5fd33dbcc9') version('4.3.0', '39c2fab9f632f35e12ff607ccaf9e16c') - depends_on('cmake', type='build') - - def install(self, spec, prefix): - options = [] - options.extend(std_cmake_args) - - build_directory = join_path(self.stage.path, 'spack-build') - source_directory = self.stage.source_path - - if '+debug' in spec: - options.append('-DCMAKE_BUILD_TYPE:STRING=Debug') - - with working_dir(build_directory, create=True): - cmake(source_directory, *options) - make() - make("install") + depends_on('cmake@2.6:', type='build') From a31ce17f0b08f2ca5eb9e14b571a8de2db69ab5b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 5 Aug 2017 10:15:47 -0500 Subject: [PATCH 1387/2394] Various fixes to package name URL parsing (#4978) --- lib/spack/spack/cmd/url.py | 2 ++ lib/spack/spack/test/url_parse.py | 2 ++ lib/spack/spack/url.py | 1 + 3 files changed, 5 insertions(+) diff --git a/lib/spack/spack/cmd/url.py b/lib/spack/spack/cmd/url.py index 49c29ff469e..633e345640b 100644 --- a/lib/spack/spack/cmd/url.py +++ b/lib/spack/spack/cmd/url.py @@ -334,6 +334,8 @@ def name_parsed_correctly(pkg, name): pkg_name = pkg_name[2:] elif pkg_name.startswith('py-'): pkg_name = pkg_name[3:] + elif pkg_name.startswith('perl-'): + pkg_name = pkg_name[5:] elif pkg_name.startswith('octave-'): pkg_name = pkg_name[7:] diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index 41a2fda649d..5749ff2d6e2 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -124,6 +124,8 @@ def test_url_strip_version_suffixes(url, expected): ('converge_install_2.3.16', '2.3.16', 'converge'), # Download type - src ('jpegsrc.v9b', '9b', 'jpeg'), + # Download type - archive + ('coinhsl-archive-2014.01.17', '2014.01.17', 'coinhsl'), # Download type - std ('ghostscript-fonts-std-8.11', '8.11', 'ghostscript-fonts'), # Download version - release diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index e3da753a76a..67a58cdd126 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -290,6 +290,7 @@ def strip_name_suffixes(path, version): 'install', 'src', '(open)?[Ss]ources?', + '[._-]archive', '[._-]std', # Download version From c54108cf6390402828ee9798630299457123ee87 Mon Sep 17 00:00:00 2001 From: "Kelly (KT) Thompson" Date: Sat, 5 Aug 2017 11:04:12 -0600 Subject: [PATCH 1388/2394] Moab depends on BLAS. (#4952) --- var/spack/repos/builtin/packages/moab/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/moab/package.py b/var/spack/repos/builtin/packages/moab/package.py index 4798f842f07..1bf81b34ead 100644 --- a/var/spack/repos/builtin/packages/moab/package.py +++ b/var/spack/repos/builtin/packages/moab/package.py @@ -49,7 +49,7 @@ class Moab(AutotoolsPackage): description='Required to enable the hdf5 (default I/O) format') variant('netcdf', default=False, description='Required to enable the ExodusII reader/writer.') - variant('pnetcdf', default=False, + variant('pnetcdf', default=False, description='Enable pnetcdf (AKA parallel-netcdf) support') variant('netcdf', default=False, description='Required to enable the ExodusII reader/writer.') @@ -57,7 +57,7 @@ class Moab(AutotoolsPackage): variant('cgm', default=False, description='Enable common geometric module') variant('metis', default=True, description='Enable metis link') variant('parmetis', default=True, description='Enable parmetis link') - variant('irel', default=False, description='Enable irel interface') + variant('irel', default=False, description='Enable irel interface') variant('fbigeom', default=False, description='Enable fbigeom interface') variant('coupler', default=True, description='Enable mbcoupler tool') @@ -79,6 +79,7 @@ class Moab(AutotoolsPackage): # depends_on('cgns', when='+cgns') # depends_on('vtk', when='+vtk') + depends_on('blas') depends_on('mpi', when='+mpi') depends_on('hdf5', when='+hdf5') depends_on('hdf5+mpi', when='+hdf5+mpi') From 50bf261197e6280f8bf134a1320a4066feb34c86 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Sat, 5 Aug 2017 19:05:38 +0200 Subject: [PATCH 1389/2394] Add ADIOS2 (#4944) Adds ADIOS2, the C++ Exascale HPC I/O rewrite of ORNL's ADIOS library. Currently, many variants (especially for data transforms such as compression) are not yet added. It already provides Python bindings. --- .../repos/builtin/packages/adios2/package.py | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 var/spack/repos/builtin/packages/adios2/package.py diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py new file mode 100644 index 00000000000..bda9bca9965 --- /dev/null +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -0,0 +1,118 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Adios2(CMakePackage): + """Next generation of ADIOS developed in the Exascale Computing Program""" + + homepage = "https://www.olcf.ornl.gov/center-projects/adios/" + url = "https://github.com/ornladios/ADIOS2/archive/v2.0.0.tar.gz" + + version('develop', branch='master', + git='https://github.com/ornladios/ADIOS2.git') + + version('2.0.0', '019115e5c6ac28bd0f4201f590f5d994') + + variant('shared', default=True, + description='Also build shared libraries') + variant('mpi', default=True, + description='Enable MPI') + # transforms (not yet implemented) + # variant('bzip2', default=True, + # description='Enable BZip2 compression') + # variant('zfp', default=True, + # description='Enable ZFP compression') + # transport engines + variant('dataman', default=True, + description='Enable the DataMan engine for WAN transports') + # currently required by DataMan, optional in the future + # variant('zeromq', default=False, + # description='Enable ZeroMQ for the DataMan engine') + variant('hdf5', default=False, + description='Enable the HDF5 engine') + variant('adios1', default=False, + description='Enable the ADIOS 1.x engine') + # language bindings + variant('python', default=True, + description='Enable the Python >= 2.7 bindings') + + # requires mature C++11 implementations + conflicts('%gcc@:4.7') + conflicts('%intel@:15') + conflicts('%pgi@:14') + + # DataMan needs dlopen + conflicts('+dataman', when='~shared') + + depends_on('cmake@3.5.0:', type='build') + + # contained in thirdparty/ + # depends_on('googletest') + # depends_on('pugixml') + # depends_on('kwsys') + # depends_on('nlohmannjson') + # depends_on('pybind11@2.1.1:', when='+python') + + depends_on('mpi', when='+mpi') + + depends_on('hdf5', when='+hdf5') + depends_on('hdf5+mpi', when='+hdf5+mpi') + depends_on('adios', when='+adios1') + depends_on('adios+mpi', when='+adios1+mpi') + + depends_on('bzip2', when='+bzip2') + depends_on('zfp', when='+zfp') + + extends('python', when='+python') + depends_on('python@2.7:', type=('build', 'run'), when='+python') + depends_on('py-numpy@1.6.1:', type=('build', 'run'), when='+python') + depends_on('py-mpi4py@2.0.0:', type=('build', 'run'), when='+mpi +python') + + def cmake_args(self): + spec = self.spec + + args = [ + '-DADIOS2_BUILD_SHARED_LIBS:BOOL={0}'.format(( + 'ON' if '+shared' in spec else 'OFF')), + '-DADIOS2_BUILD_TESTING=OFF', + '-DADIOS2_USE_MPI={0}'.format(( + 'ON' if '+mpi' in spec else 'OFF')), + '-DADIOS2_USE_BZip2={0}'.format(( + 'ON' if '+bzip2' in spec else 'OFF')), + '-DADIOS2_USE_ZFP={0}'.format(( + 'ON' if '+zfp' in spec else 'OFF')), + '-DADIOS2_USE_DataMan={0}'.format(( + 'ON' if '+dataman' in spec else 'OFF')), + '-DADIOS2_USE_ZeroMQ={0}'.format(( + 'ON' if '+dataman' in spec else 'OFF')), + '-DADIOS2_USE_HDF5={0}'.format(( + 'ON' if '+hdf5' in spec else 'OFF')), + '-DADIOS2_USE_ADIOS1={0}'.format(( + 'ON' if '+adios1' in spec else 'OFF')), + '-DADIOS2_USE_Python={0}'.format(( + 'ON' if '+python' in spec else 'OFF')) + ] + return args From ce6d3571612964a09fafb6dfb1dc0d91191a16eb Mon Sep 17 00:00:00 2001 From: Sam Bateman Date: Sat, 5 Aug 2017 12:06:46 -0500 Subject: [PATCH 1390/2394] Correct boost +mpi for Cray compiler wrappers (#4909) --- .../repos/builtin/packages/boost/package.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index cf63b229c0a..77538cf0006 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -207,8 +207,21 @@ def determine_bootstrap_options(self, spec, withLibs, options): spack_cxx)) if '+mpi' in spec: - f.write('using mpi : %s ;\n' % - join_path(spec['mpi'].prefix.bin, 'mpicxx')) + + # Use the correct mpi compiler. If the compiler options are + # empty or undefined, Boost will attempt to figure out the + # correct options by running "${mpicxx} -show" or something + # similar, but that doesn't work with the Cray compiler + # wrappers. Since Boost doesn't use the MPI C++ bindings, + # that can be used as a compiler option instead. + + mpi_line = 'using mpi : %s' % spec['mpi'].mpicxx + + if 'platform=cray' in spec: + mpi_line += ' : MPICH_SKIP_MPICXX' + + f.write(mpi_line + ' ;\n') + if '+python' in spec: f.write(self.bjam_python_line(spec)) From cf017baa8d9a7121731f13dd900a4929f32534c6 Mon Sep 17 00:00:00 2001 From: snehring Date: Sat, 5 Aug 2017 12:39:44 -0500 Subject: [PATCH 1391/2394] chlorop: new package (#4865) * chlorop: new package * chlorop: moving main script to bin and moving runtime tmp location. * chlorop: fixing flake8 error. * chlorop: cleaning up, removing CHLOROTMP, advising user to set it. * chlorop: removing unused import --- .../builtin/packages/chlorop/chlorop.patch | 36 +++++++++++++ .../repos/builtin/packages/chlorop/package.py | 53 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 var/spack/repos/builtin/packages/chlorop/chlorop.patch create mode 100644 var/spack/repos/builtin/packages/chlorop/package.py diff --git a/var/spack/repos/builtin/packages/chlorop/chlorop.patch b/var/spack/repos/builtin/packages/chlorop/chlorop.patch new file mode 100644 index 00000000000..6d49dc53d0f --- /dev/null +++ b/var/spack/repos/builtin/packages/chlorop/chlorop.patch @@ -0,0 +1,36 @@ +--- a/chlorop 2006-03-20 06:24:22.000000000 -0600 ++++ b/chlorop 2017-07-24 10:51:27.000366706 -0500 +@@ -9,8 +9,6 @@ + STARTDIR=`pwd` + + ### GENERAL SETTINGS, CUSTOMIZE +++++++++++++++++++++++++++++++++++++++++++++++ +-# Substitute your chosen location for ChloroP software: +-CHLOROP=/usr/cbs/packages/chlorop/currdist/chlorop-1.1 + + # Substitute paste: + PASTE=paste +@@ -43,7 +41,7 @@ + # other settings: + #CHLOROTMPNAME=res`date '+%y%m%d%H%M%S'`.$$ + CHLOROTMPNAME=res.$$ +-CHLOROTMP=tmp/$CHLOROTMPNAME ++CHLOROTMP=$CHLOROTMP/$CHLOROTMPNAME + SCRIPTS=bin + SYN=syn + ETC=etc +@@ -80,12 +78,12 @@ + ### get the infile ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + INFILE=$* + +-mkdir $CHLOROP/$CHLOROTMP || { echo Cannot create temporary directory; exit 1; } ++mkdir -p $CHLOROTMP || { echo Cannot create temporary directory; exit 1; } + + ### prepare input file in HOW and fasta format ++++++++++++++++++++++++++++++++ + $AWK -f $CHLOROP/$SCRIPTS/in2how+fasta.awk -v informat=$INFORMAT \ +- -v howout=$CHLOROP/$CHLOROTMP/infile.how \ +- -v fastaout=$CHLOROP/$CHLOROTMP/infile.fasta $INFILE ++ -v howout=$CHLOROTMP/infile.how \ ++ -v fastaout=$CHLOROTMP/infile.fasta $INFILE + INFILE=$CHLOROTMP/infile.how + + ### change to working directory +++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/var/spack/repos/builtin/packages/chlorop/package.py b/var/spack/repos/builtin/packages/chlorop/package.py new file mode 100644 index 00000000000..bd5ceda4f7e --- /dev/null +++ b/var/spack/repos/builtin/packages/chlorop/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import distutils.dir_util +import os + + +class Chlorop(Package): + """Chlorop predicts the presence of chloroplast transit peptides + in protein sequences and the location of potential cTP cleavage + sites. You will need to obtain the tarball by visiting the + URL and completing the form. You can then either run spack + install with the tarball in the directory, or add it to a + mirror. You will need to set the CHLOROTMP environment variable + to the full path of the directory you want chlorop to use as + a temporary directory.""" + + homepage = "http://www.cbs.dtu.dk/services/ChloroP/" + url = "file://{0}/chlorop-1.1.Linux.tar.gz".format(os.getcwd()) + + version('1.1', 'eb0ba6b28dfa735163ad5fc70e30139e46e33f6ae27f87666a7167a4ac5f71d9') + + depends_on('awk', type='run') + patch('chlorop.patch') + + def install(self, spec, prefix): + os.rename('chlorop', 'bin/chlorop') + distutils.dir_util.copy_tree(".", prefix) + + def setup_environment(self, spack_env, run_env): + run_env.set('CHLOROP', self.prefix) From 6485c3feb5ae69fd3001703290deaea3eb96ebb2 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Sat, 5 Aug 2017 12:42:33 -0500 Subject: [PATCH 1392/2394] snap-berkeley: new package (#4855) * snap: new package * changing name and adding stable release --- .../builtin/packages/snap-berkeley/package.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 var/spack/repos/builtin/packages/snap-berkeley/package.py diff --git a/var/spack/repos/builtin/packages/snap-berkeley/package.py b/var/spack/repos/builtin/packages/snap-berkeley/package.py new file mode 100644 index 00000000000..9bd9cd961cc --- /dev/null +++ b/var/spack/repos/builtin/packages/snap-berkeley/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class SnapBerkeley(MakefilePackage): + """SNAP is a fast and accurate aligner for short DNA reads. It is + optimized for modern read lengths of 100 bases or higher, and takes + advantage of these reads to align data quickly through a hash-based + indexing scheme.""" + + homepage = "http://snap.cs.berkeley.edu/" + url = "https://github.com/amplab/snap/archive/v1.0beta.18.tar.gz" + + version('1.0beta.18', '41e595fffa482e9eda1c3f69fb5dedeb') + version('0.15', 'a7d87cc822f052665a347ab0aa84d4de', preferred=True) + + depends_on('zlib') + + conflicts('%gcc@6:') + conflicts('%cce') + conflicts('%clang') + conflicts('%intel') + conflicts('%nag') + conflicts('%pgi') + conflicts('%xl') + conflicts('%xl_r') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + if self.spec.satisfies('@1.0beta.18:'): + install('snap-aligner', prefix.bin) + install('SNAPCommand', prefix.bin) + else: + install('snap', prefix.bin) From 41361cffea619c80300af0a371f3c682548b3771 Mon Sep 17 00:00:00 2001 From: Jia Li Date: Sat, 5 Aug 2017 13:56:04 -0400 Subject: [PATCH 1393/2394] Fixed OpenBLAS compilation error on POWER8 with GCC 7. (#4783) * Fixed compilation error on POWER8 with GCC 7. * Restrict patch to ppc64 with gcc. --- .../builtin/packages/openblas/package.py | 4 + .../builtin/packages/openblas/power8.patch | 7809 +++++++++++++++++ 2 files changed, 7813 insertions(+) create mode 100644 var/spack/repos/builtin/packages/openblas/power8.patch diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 1a4623ad7e8..7fe07a283e7 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -62,6 +62,10 @@ class Openblas(MakefilePackage): patch('openblas_icc_openmp.patch', when='%intel@16.0:') patch('openblas_icc_fortran.patch', when='%intel@16.0:') + # Fixes compilation error on POWER8 with GCC 7 + # https://github.com/xianyi/OpenBLAS/pull/1098 + patch('power8.patch', when='@0.2.18:0.2.19 %gcc@7.1.0: target=ppc64') + # Change file comments to work around clang 3.9 assembler bug # https://github.com/xianyi/OpenBLAS/pull/982 patch('openblas0.2.19.diff', when='@0.2.19') diff --git a/var/spack/repos/builtin/packages/openblas/power8.patch b/var/spack/repos/builtin/packages/openblas/power8.patch new file mode 100644 index 00000000000..b89c044c1b5 --- /dev/null +++ b/var/spack/repos/builtin/packages/openblas/power8.patch @@ -0,0 +1,7809 @@ +diff --git a/kernel/power/casum.c b/kernel/power/casum.c +index aeed0ca78..d1108581d 100644 +--- a/kernel/power/casum.c ++++ b/kernel/power/casum.c +@@ -53,7 +53,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_16 + +-static void casum_kernel_16(BLASLONG n, FLOAT *x1, FLOAT *svec) ++static FLOAT casum_kernel_16(BLASLONG n, FLOAT *x1) + { + + BLASLONG i=0; +@@ -92,11 +92,7 @@ static void casum_kernel_16(BLASLONG n, FLOAT *x1, FLOAT *svec) + + } + +- svec[0] = sum0+sum1+sum2+sum3; +- svec[1] = 0.0; +- svec[2] = 0.0; +- svec[3] = 0.0; +- ++ return sum0+sum1+sum2+sum3; + } + + #endif +@@ -106,7 +102,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) + BLASLONG i=0; + BLASLONG ip=0; + FLOAT sumf = 0.0; +- FLOAT svec[4] __attribute__ ((aligned (16)));; + BLASLONG n1; + BLASLONG inc_x2; + +@@ -119,8 +114,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) + if ( n1 > 0 ) + { + +- casum_kernel_16(n1, x, svec); +- sumf = svec[0] + svec[1]+svec[2]+svec[3]; ++ sumf = casum_kernel_16(n1, x); + i=n1; + ip = 2 * n1; + } +diff --git a/kernel/power/casum_microk_power8.c b/kernel/power/casum_microk_power8.c +index cb50234ce..38a114326 100644 +--- a/kernel/power/casum_microk_power8.c ++++ b/kernel/power/casum_microk_power8.c +@@ -34,144 +34,145 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **************************************************************************************/ + + #define HAVE_KERNEL_16 1 +-static void casum_kernel_16( BLASLONG n, FLOAT *x, FLOAT *svec) __attribute__ ((noinline)); + +-static void casum_kernel_16( BLASLONG n, FLOAT *x, FLOAT *svec) ++static float casum_kernel_16 (long n, float *x) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- +- "dcbt %2 , %4 \n\t" +- +- "xxlxor 32,32,32 \n\t" +- "xxlxor 33,33,33 \n\t" +- "xxlxor 34,34,34 \n\t" +- "xxlxor 35,35,35 \n\t" +- "xxlxor 36,36,36 \n\t" +- "xxlxor 37,37,37 \n\t" +- "xxlxor 38,38,38 \n\t" +- "xxlxor 39,39,39 \n\t" +- +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2 , %4 \n\t" +- +- "xvabssp 48, 40 \n\t" +- "xvabssp 49, 41 \n\t" +- "xvabssp 50, 42 \n\t" +- "xvabssp 51, 43 \n\t" +- +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- +- "xvabssp 52, 44 \n\t" +- "xvabssp 53, 45 \n\t" +- +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- +- "xvabssp 54, 46 \n\t" +- "xvabssp 55, 47 \n\t" +- +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- +- "xvaddsp 32, 32, 48 \n\t" +- "xvaddsp 33, 33, 49 \n\t" +- +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- "xvaddsp 34, 34, 50 \n\t" +- "xvaddsp 35, 35, 51 \n\t" +- "addi %2, %2, 128 \n\t" +- "xvaddsp 36, 36, 52 \n\t" +- "xvaddsp 37, 37, 53 \n\t" +- "addic. %0 , %0 , -16 \n\t" +- "xvaddsp 38, 38, 54 \n\t" +- "xvaddsp 39, 39, 55 \n\t" +- +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- +- "xvabssp 48, 40 \n\t" +- "xvabssp 49, 41 \n\t" +- "xvabssp 50, 42 \n\t" +- "xvabssp 51, 43 \n\t" +- "xvabssp 52, 44 \n\t" +- "xvabssp 53, 45 \n\t" +- "xvabssp 54, 46 \n\t" +- "xvabssp 55, 47 \n\t" +- +- "xvaddsp 32, 32, 48 \n\t" +- "xvaddsp 33, 33, 49 \n\t" +- "xvaddsp 34, 34, 50 \n\t" +- "xvaddsp 35, 35, 51 \n\t" +- "xvaddsp 36, 36, 52 \n\t" +- "xvaddsp 37, 37, 53 \n\t" +- "xvaddsp 38, 38, 54 \n\t" +- "xvaddsp 39, 39, 55 \n\t" +- +- "xvaddsp 32, 32, 33 \n\t" +- "xvaddsp 34, 34, 35 \n\t" +- "xvaddsp 36, 36, 37 \n\t" +- "xvaddsp 38, 38, 39 \n\t" +- +- "xvaddsp 32, 32, 34 \n\t" +- "xvaddsp 36, 36, 38 \n\t" +- +- "xvaddsp 32, 32, 36 \n\t" +- +- +- "stxvw4x 32, 0, %3 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (n), // 1 +- "r" (x1), // 2 +- "r" (svec), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2", "memory" +- ); +- +-} +- +- ++ float sum; ++ __vector float t0; ++ __vector float t1; ++ __vector float t2; ++ __vector float t3; ++ ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ ++ "xxlxor 32, 32, 32 \n\t" ++ "xxlxor 33, 33, 33 \n\t" ++ "xxlxor 34, 34, 34 \n\t" ++ "xxlxor 35, 35, 35 \n\t" ++ "xxlxor 36, 36, 36 \n\t" ++ "xxlxor 37, 37, 37 \n\t" ++ "xxlxor 38, 38, 38 \n\t" ++ "xxlxor 39, 39, 39 \n\t" ++ ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 41, %8, %2 \n\t" ++ "lxvw4x 42, %9, %2 \n\t" ++ "lxvw4x 43, %10, %2 \n\t" ++ "lxvw4x 44, %11, %2 \n\t" ++ "lxvw4x 45, %12, %2 \n\t" ++ "lxvw4x 46, %13, %2 \n\t" ++ "lxvw4x 47, %14, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvabssp 48, 40 \n\t" ++ "xvabssp 49, 41 \n\t" ++ "xvabssp 50, 42 \n\t" ++ "xvabssp 51, 43 \n\t" ++ ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 41, %8, %2 \n\t" ++ ++ "xvabssp %x3, 44 \n\t" ++ "xvabssp %x4, 45 \n\t" ++ ++ "lxvw4x 42, %9, %2 \n\t" ++ "lxvw4x 43, %10, %2 \n\t" ++ ++ "xvabssp %x5, 46 \n\t" ++ "xvabssp %x6, 47 \n\t" ++ ++ "lxvw4x 44, %11, %2 \n\t" ++ "lxvw4x 45, %12, %2 \n\t" ++ ++ "xvaddsp 32, 32, 48 \n\t" ++ "xvaddsp 33, 33, 49 \n\t" ++ ++ "lxvw4x 46, %13, %2 \n\t" ++ "lxvw4x 47, %14, %2 \n\t" ++ ++ "xvaddsp 34, 34, 50 \n\t" ++ "xvaddsp 35, 35, 51 \n\t" ++ "addi %2, %2, 128 \n\t" ++ "xvaddsp 36, 36, %x3 \n\t" ++ "xvaddsp 37, 37, %x4 \n\t" ++ "addic. %1, %1, -16 \n\t" ++ "xvaddsp 38, 38, %x5 \n\t" ++ "xvaddsp 39, 39, %x6 \n\t" ++ ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvabssp 48, 40 \n\t" ++ "xvabssp 49, 41 \n\t" ++ "xvabssp 50, 42 \n\t" ++ "xvabssp 51, 43 \n\t" ++ "xvabssp %x3, 44 \n\t" ++ "xvabssp %x4, 45 \n\t" ++ "xvabssp %x5, 46 \n\t" ++ "xvabssp %x6, 47 \n\t" ++ ++ "xvaddsp 32, 32, 48 \n\t" ++ "xvaddsp 33, 33, 49 \n\t" ++ "xvaddsp 34, 34, 50 \n\t" ++ "xvaddsp 35, 35, 51 \n\t" ++ "xvaddsp 36, 36, %x3 \n\t" ++ "xvaddsp 37, 37, %x4 \n\t" ++ "xvaddsp 38, 38, %x5 \n\t" ++ "xvaddsp 39, 39, %x6 \n\t" ++ ++ "xvaddsp 32, 32, 33 \n\t" ++ "xvaddsp 34, 34, 35 \n\t" ++ "xvaddsp 36, 36, 37 \n\t" ++ "xvaddsp 38, 38, 39 \n\t" ++ ++ "xvaddsp 32, 32, 34 \n\t" ++ "xvaddsp 36, 36, 38 \n\t" ++ ++ "xvaddsp 32, 32, 36 \n\t" ++ ++ "xxsldwi 33, 32, 32, 2 \n\t" ++ "xvaddsp 32, 32, 33 \n\t" ++ ++ "xxsldwi 33, 32, 32, 1 \n\t" ++ "xvaddsp 32, 32, 33 \n\t" ++ ++ "xscvspdp %0, 32 \n" ++ ++ "#n=%1 x=%3=%2 sum=%0 o16=%8 o32=%9 o48=%10 o64=%11 o80=%12 o96=%13 o112=%14\n" ++ "#t0=%x3 t1=%x4 t2=%x5 t3=%x6" ++ : ++ "=f" (sum), // 0 ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "=wa" (t0), // 3 ++ "=wa" (t1), // 4 ++ "=wa" (t2), // 5 ++ "=wa" (t3) // 6 ++ : ++ "m" (*x), ++ "b" (16), // 8 ++ "b" (32), // 9 ++ "b" (48), // 10 ++ "b" (64), // 11 ++ "b" (80), // 12 ++ "b" (96), // 13 ++ "b" (112) // 14 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++ ++ return sum; ++} +diff --git a/kernel/power/ccopy_microk_power8.c b/kernel/power/ccopy_microk_power8.c +index 95b3559ba..b2b1bead1 100644 +--- a/kernel/power/ccopy_microk_power8.c ++++ b/kernel/power/ccopy_microk_power8.c +@@ -35,140 +35,121 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_32 1 + +-static void ccopy_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) __attribute__ ((noinline)); +- +-static void ccopy_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) ++static void ccopy_kernel_32 (long n, float *x, float *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- BLASLONG pre = 384; +- BLASLONG alpha=0; +- +- __asm__ __volatile__ +- ( +- +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvw4x 50, 0, %2 \n\t" +- "lxvw4x 51, %5, %2 \n\t" +- "lxvw4x 52, %6, %2 \n\t" +- "lxvw4x 53, %7, %2 \n\t" +- "lxvw4x 54, %8, %2 \n\t" +- "lxvw4x 55, %9, %2 \n\t" +- "lxvw4x 56, %10, %2 \n\t" +- "lxvw4x 57, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "stxvw4x 40, 0, %1 \n\t" +- "stxvw4x 41, %5, %1 \n\t" +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "stxvw4x 42, %6, %1 \n\t" +- "stxvw4x 43, %7, %1 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "stxvw4x 44, %8, %1 \n\t" +- "stxvw4x 45, %9, %1 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "stxvw4x 46, %10, %1 \n\t" +- "stxvw4x 47, %11, %1 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "stxvw4x 50, 0, %1 \n\t" +- "stxvw4x 51, %5, %1 \n\t" +- "lxvw4x 50, 0, %2 \n\t" +- "lxvw4x 51, %5, %2 \n\t" +- "stxvw4x 52, %6, %1 \n\t" +- "stxvw4x 53, %7, %1 \n\t" +- "lxvw4x 52, %6, %2 \n\t" +- "lxvw4x 53, %7, %2 \n\t" +- "stxvw4x 54, %8, %1 \n\t" +- "stxvw4x 55, %9, %1 \n\t" +- "lxvw4x 54, %8, %2 \n\t" +- "lxvw4x 55, %9, %2 \n\t" +- "stxvw4x 56, %10, %1 \n\t" +- "stxvw4x 57, %11, %1 \n\t" +- "lxvw4x 56, %10, %2 \n\t" +- "lxvw4x 57, %11, %2 \n\t" +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "stxvw4x 40, 0, %1 \n\t" +- "stxvw4x 41, %5, %1 \n\t" +- "stxvw4x 42, %6, %1 \n\t" +- "stxvw4x 43, %7, %1 \n\t" +- "stxvw4x 44, %8, %1 \n\t" +- "stxvw4x 45, %9, %1 \n\t" +- "stxvw4x 46, %10, %1 \n\t" +- "stxvw4x 47, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "stxvw4x 50, 0, %1 \n\t" +- "stxvw4x 51, %5, %1 \n\t" +- "stxvw4x 52, %6, %1 \n\t" +- "stxvw4x 53, %7, %1 \n\t" +- "stxvw4x 54, %8, %1 \n\t" +- "stxvw4x 55, %9, %1 \n\t" +- "stxvw4x 56, %10, %1 \n\t" +- "stxvw4x 57, %11, %1 \n\t" +- +- +- : +- : +- "r" (i), // 0 +- "r" (y1), // 1 +- "r" (x1), // 2 +- "r" (alpha), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "memory" +- ); +- +-} +- +- ++ __asm__ ++ ( ++ "lxvw4x 32, 0, %2 \n\t" ++ "lxvw4x 33, %5, %2 \n\t" ++ "lxvw4x 34, %6, %2 \n\t" ++ "lxvw4x 35, %7, %2 \n\t" ++ "lxvw4x 36, %8, %2 \n\t" ++ "lxvw4x 37, %9, %2 \n\t" ++ "lxvw4x 38, %10, %2 \n\t" ++ "lxvw4x 39, %11, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 41, %5, %2 \n\t" ++ "lxvw4x 42, %6, %2 \n\t" ++ "lxvw4x 43, %7, %2 \n\t" ++ "lxvw4x 44, %8, %2 \n\t" ++ "lxvw4x 45, %9, %2 \n\t" ++ "lxvw4x 46, %10, %2 \n\t" ++ "lxvw4x 47, %11, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "stxvw4x 32, 0, %3 \n\t" ++ "stxvw4x 33, %5, %3 \n\t" ++ "lxvw4x 32, 0, %2 \n\t" ++ "lxvw4x 33, %5, %2 \n\t" ++ "stxvw4x 34, %6, %3 \n\t" ++ "stxvw4x 35, %7, %3 \n\t" ++ "lxvw4x 34, %6, %2 \n\t" ++ "lxvw4x 35, %7, %2 \n\t" ++ "stxvw4x 36, %8, %3 \n\t" ++ "stxvw4x 37, %9, %3 \n\t" ++ "lxvw4x 36, %8, %2 \n\t" ++ "lxvw4x 37, %9, %2 \n\t" ++ "stxvw4x 38, %10, %3 \n\t" ++ "stxvw4x 39, %11, %3 \n\t" ++ "lxvw4x 38, %10, %2 \n\t" ++ "lxvw4x 39, %11, %2 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ "addi %2, %2, 128 \n\t" ++ ++ "stxvw4x 40, 0, %3 \n\t" ++ "stxvw4x 41, %5, %3 \n\t" ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 41, %5, %2 \n\t" ++ "stxvw4x 42, %6, %3 \n\t" ++ "stxvw4x 43, %7, %3 \n\t" ++ "lxvw4x 42, %6, %2 \n\t" ++ "lxvw4x 43, %7, %2 \n\t" ++ "stxvw4x 44, %8, %3 \n\t" ++ "stxvw4x 45, %9, %3 \n\t" ++ "lxvw4x 44, %8, %2 \n\t" ++ "lxvw4x 45, %9, %2 \n\t" ++ "stxvw4x 46, %10, %3 \n\t" ++ "stxvw4x 47, %11, %3 \n\t" ++ "lxvw4x 46, %10, %2 \n\t" ++ "lxvw4x 47, %11, %2 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "stxvw4x 32, 0, %3 \n\t" ++ "stxvw4x 33, %5, %3 \n\t" ++ "stxvw4x 34, %6, %3 \n\t" ++ "stxvw4x 35, %7, %3 \n\t" ++ "stxvw4x 36, %8, %3 \n\t" ++ "stxvw4x 37, %9, %3 \n\t" ++ "stxvw4x 38, %10, %3 \n\t" ++ "stxvw4x 39, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvw4x 40, 0, %3 \n\t" ++ "stxvw4x 41, %5, %3 \n\t" ++ "stxvw4x 42, %6, %3 \n\t" ++ "stxvw4x 43, %7, %3 \n\t" ++ "stxvw4x 44, %8, %3 \n\t" ++ "stxvw4x 45, %9, %3 \n\t" ++ "stxvw4x 46, %10, %3 \n\t" ++ "stxvw4x 47, %11, %3 \n" ++ ++ "#n=%1 x=%4=%2 y=%0=%3 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11" ++ : ++ "=m" (*y), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+b" (y) // 3 ++ : ++ "m" (*x), ++ "b" (16), // 5 ++ "b" (32), // 6 ++ "b" (48), // 7 ++ "b" (64), // 8 ++ "b" (80), // 9 ++ "b" (96), // 10 ++ "b" (112) // 11 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47" ++ ); ++} +diff --git a/kernel/power/cswap_microk_power8.c b/kernel/power/cswap_microk_power8.c +index 90ab59c54..1dd03dc88 100644 +--- a/kernel/power/cswap_microk_power8.c ++++ b/kernel/power/cswap_microk_power8.c +@@ -35,146 +35,124 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_32 1 + +-static void cswap_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) __attribute__ ((noinline)); +- +-static void cswap_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) ++static void cswap_kernel_32 (long n, float *x, float *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- FLOAT *x2=x+1; +- FLOAT *y2=y+1; +- BLASLONG pre = 384; +- BLASLONG alpha=0; +- +- __asm__ __volatile__ +- ( +- +- "addi %3, %3, -4 \n\t" +- "addi %4, %4, -4 \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "lxvw4x 32, 0, %2 \n\t" +- "lxvw4x 33, %5, %2 \n\t" +- "lxvw4x 34, %6, %2 \n\t" +- "lxvw4x 35, %7, %2 \n\t" +- "lxvw4x 36, %8, %2 \n\t" +- "lxvw4x 37, %9, %2 \n\t" +- "lxvw4x 38, %10, %2 \n\t" +- "lxvw4x 39, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvw4x 48, 0, %1 \n\t" +- "lxvw4x 49, %5, %1 \n\t" +- "lxvw4x 50, %6, %1 \n\t" +- "lxvw4x 51, %7, %1 \n\t" +- "lxvw4x 52, %8, %1 \n\t" +- "lxvw4x 53, %9, %1 \n\t" +- "lxvw4x 54, %10, %1 \n\t" +- "lxvw4x 55, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "lxvw4x 56, 0, %1 \n\t" +- "lxvw4x 57, %5, %1 \n\t" +- "lxvw4x 58, %6, %1 \n\t" +- "lxvw4x 59, %7, %1 \n\t" +- "lxvw4x 60, %8, %1 \n\t" +- "lxvw4x 61, %9, %1 \n\t" +- "lxvw4x 62, %10, %1 \n\t" +- "lxvw4x 63, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "stxvw4x 32, 0, %3 \n\t" +- "stxvw4x 33, %5, %3 \n\t" +- "stxvw4x 34, %6, %3 \n\t" +- "stxvw4x 35, %7, %3 \n\t" +- "stxvw4x 36, %8, %3 \n\t" +- "stxvw4x 37, %9, %3 \n\t" +- "stxvw4x 38, %10, %3 \n\t" +- "stxvw4x 39, %11, %3 \n\t" +- +- "addi %3, %3, 128 \n\t" +- +- "stxvw4x 40, 0, %3 \n\t" +- "stxvw4x 41, %5, %3 \n\t" +- "stxvw4x 42, %6, %3 \n\t" +- "stxvw4x 43, %7, %3 \n\t" +- "stxvw4x 44, %8, %3 \n\t" +- "stxvw4x 45, %9, %3 \n\t" +- "stxvw4x 46, %10, %3 \n\t" +- "stxvw4x 47, %11, %3 \n\t" +- +- "addi %3, %3, 128 \n\t" +- +- "stxvw4x 48, 0, %4 \n\t" +- "stxvw4x 49, %5, %4 \n\t" +- "stxvw4x 50, %6, %4 \n\t" +- "stxvw4x 51, %7, %4 \n\t" +- "stxvw4x 52, %8, %4 \n\t" +- "stxvw4x 53, %9, %4 \n\t" +- "stxvw4x 54, %10, %4 \n\t" +- "stxvw4x 55, %11, %4 \n\t" +- +- "addi %4, %4, 128 \n\t" +- +- "stxvw4x 56, 0, %4 \n\t" +- "stxvw4x 57, %5, %4 \n\t" +- "stxvw4x 58, %6, %4 \n\t" +- "stxvw4x 59, %7, %4 \n\t" +- "stxvw4x 60, %8, %4 \n\t" +- "stxvw4x 61, %9, %4 \n\t" +- "stxvw4x 62, %10, %4 \n\t" +- "stxvw4x 63, %11, %4 \n\t" +- +- "addi %4, %4, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (y1), // 1 +- "r" (x1), // 2 +- "r" (y2), // 3 +- "r" (x2), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "%3", "%4", "memory" +- ); +- +-} +- +- ++ __asm__ ++ ( ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "lxvw4x 32, 0, %4 \n\t" ++ "lxvw4x 33, %5, %4 \n\t" ++ "lxvw4x 34, %6, %4 \n\t" ++ "lxvw4x 35, %7, %4 \n\t" ++ "lxvw4x 36, %8, %4 \n\t" ++ "lxvw4x 37, %9, %4 \n\t" ++ "lxvw4x 38, %10, %4 \n\t" ++ "lxvw4x 39, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ ++ "lxvw4x 40, 0, %4 \n\t" ++ "lxvw4x 41, %5, %4 \n\t" ++ "lxvw4x 42, %6, %4 \n\t" ++ "lxvw4x 43, %7, %4 \n\t" ++ "lxvw4x 44, %8, %4 \n\t" ++ "lxvw4x 45, %9, %4 \n\t" ++ "lxvw4x 46, %10, %4 \n\t" ++ "lxvw4x 47, %11, %4 \n\t" ++ ++ "addi %4, %4, -128 \n\t" ++ ++ "lxvw4x 48, 0, %3 \n\t" ++ "lxvw4x 49, %5, %3 \n\t" ++ "lxvw4x 50, %6, %3 \n\t" ++ "lxvw4x 51, %7, %3 \n\t" ++ "lxvw4x 0, %8, %3 \n\t" ++ "lxvw4x 1, %9, %3 \n\t" ++ "lxvw4x 2, %10, %3 \n\t" ++ "lxvw4x 3, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "lxvw4x 4, 0, %3 \n\t" ++ "lxvw4x 5, %5, %3 \n\t" ++ "lxvw4x 6, %6, %3 \n\t" ++ "lxvw4x 7, %7, %3 \n\t" ++ "lxvw4x 8, %8, %3 \n\t" ++ "lxvw4x 9, %9, %3 \n\t" ++ "lxvw4x 10, %10, %3 \n\t" ++ "lxvw4x 11, %11, %3 \n\t" ++ ++ "addi %3, %3, -128 \n\t" ++ ++ "stxvw4x 32, 0, %3 \n\t" ++ "stxvw4x 33, %5, %3 \n\t" ++ "stxvw4x 34, %6, %3 \n\t" ++ "stxvw4x 35, %7, %3 \n\t" ++ "stxvw4x 36, %8, %3 \n\t" ++ "stxvw4x 37, %9, %3 \n\t" ++ "stxvw4x 38, %10, %3 \n\t" ++ "stxvw4x 39, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvw4x 40, 0, %3 \n\t" ++ "stxvw4x 41, %5, %3 \n\t" ++ "stxvw4x 42, %6, %3 \n\t" ++ "stxvw4x 43, %7, %3 \n\t" ++ "stxvw4x 44, %8, %3 \n\t" ++ "stxvw4x 45, %9, %3 \n\t" ++ "stxvw4x 46, %10, %3 \n\t" ++ "stxvw4x 47, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvw4x 48, 0, %4 \n\t" ++ "stxvw4x 49, %5, %4 \n\t" ++ "stxvw4x 50, %6, %4 \n\t" ++ "stxvw4x 51, %7, %4 \n\t" ++ "stxvw4x 0, %8, %4 \n\t" ++ "stxvw4x 1, %9, %4 \n\t" ++ "stxvw4x 2, %10, %4 \n\t" ++ "stxvw4x 3, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ ++ "stxvw4x 4, 0, %4 \n\t" ++ "stxvw4x 5, %5, %4 \n\t" ++ "stxvw4x 6, %6, %4 \n\t" ++ "stxvw4x 7, %7, %4 \n\t" ++ "stxvw4x 8, %8, %4 \n\t" ++ "stxvw4x 9, %9, %4 \n\t" ++ "stxvw4x 10, %10, %4 \n\t" ++ "stxvw4x 11, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ ++ "addic. %2, %2, -32 \n\t" ++ "bgt 1b \n" ++ ++ "#n=%2 x=%0=%3 y=%1=%4 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11" ++ : ++ "+m" (*x), ++ "+m" (*y), ++ "+r" (n), // 2 ++ "+b" (x), // 3 ++ "+b" (y) // 4 ++ : ++ "b" (16), // 5 ++ "b" (32), // 6 ++ "b" (48), // 7 ++ "b" (64), // 8 ++ "b" (80), // 9 ++ "b" (96), // 10 ++ "b" (112) // 11 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51","vs0","vs1","vs2","vs3", ++ "vs4","vs5","vs6","vs7","vs8","vs9","vs10","vs11" ++ ); ++} +diff --git a/kernel/power/dasum.c b/kernel/power/dasum.c +index 77f5345ba..73962c2f2 100644 +--- a/kernel/power/dasum.c ++++ b/kernel/power/dasum.c +@@ -42,7 +42,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #else + +-#define ABS fabsf ++#error supports double only + + #endif + +@@ -53,7 +53,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_16 + +-static void dasum_kernel_16(BLASLONG n, FLOAT *x1, FLOAT *svec) ++static FLOAT dasum_kernel_16(BLASLONG n, FLOAT *x1) + { + + BLASLONG i=0; +@@ -92,9 +92,7 @@ static void dasum_kernel_16(BLASLONG n, FLOAT *x1, FLOAT *svec) + + } + +- svec[0] = sum0+sum1+sum2+sum3; +- svec[1] = 0.0; +- ++ return sum0+sum1+sum2+sum3; + } + + #endif +@@ -103,7 +101,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) + { + BLASLONG i=0; + FLOAT sumf = 0.0; +- FLOAT svec[2] __attribute__ ((aligned (16)));; + BLASLONG n1; + + if (n <= 0 || inc_x <= 0) return(sumf); +@@ -115,8 +112,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) + if ( n1 > 0 ) + { + +- dasum_kernel_16(n1, x, svec); +- sumf = svec[0] + svec[1]; ++ sumf = dasum_kernel_16(n1, x); + i=n1; + } + +diff --git a/kernel/power/dasum_microk_power8.c b/kernel/power/dasum_microk_power8.c +index cc38c4f7d..880d7d271 100644 +--- a/kernel/power/dasum_microk_power8.c ++++ b/kernel/power/dasum_microk_power8.c +@@ -34,144 +34,142 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **************************************************************************************/ + + #define HAVE_KERNEL_16 1 +-static void dasum_kernel_16( BLASLONG n, FLOAT *x, FLOAT *svec) __attribute__ ((noinline)); + +-static void dasum_kernel_16( BLASLONG n, FLOAT *x, FLOAT *svec) ++static double dasum_kernel_16 (long n, double *x) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- +- "dcbt %2 , %4 \n\t" +- +- "xxlxor 32,32,32 \n\t" +- "xxlxor 33,33,33 \n\t" +- "xxlxor 34,34,34 \n\t" +- "xxlxor 35,35,35 \n\t" +- "xxlxor 36,36,36 \n\t" +- "xxlxor 37,37,37 \n\t" +- "xxlxor 38,38,38 \n\t" +- "xxlxor 39,39,39 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2 , %4 \n\t" +- +- "xvabsdp 48, 40 \n\t" +- "xvabsdp 49, 41 \n\t" +- "xvabsdp 50, 42 \n\t" +- "xvabsdp 51, 43 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- +- "xvabsdp 52, 44 \n\t" +- "xvabsdp 53, 45 \n\t" +- +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- +- "xvabsdp 54, 46 \n\t" +- "xvabsdp 55, 47 \n\t" +- +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- +- "xvadddp 32, 32, 48 \n\t" +- "xvadddp 33, 33, 49 \n\t" +- +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "xvadddp 34, 34, 50 \n\t" +- "xvadddp 35, 35, 51 \n\t" +- "addi %2, %2, 128 \n\t" +- "xvadddp 36, 36, 52 \n\t" +- "xvadddp 37, 37, 53 \n\t" +- "addic. %0 , %0 , -16 \n\t" +- "xvadddp 38, 38, 54 \n\t" +- "xvadddp 39, 39, 55 \n\t" +- +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- +- "xvabsdp 48, 40 \n\t" +- "xvabsdp 49, 41 \n\t" +- "xvabsdp 50, 42 \n\t" +- "xvabsdp 51, 43 \n\t" +- "xvabsdp 52, 44 \n\t" +- "xvabsdp 53, 45 \n\t" +- "xvabsdp 54, 46 \n\t" +- "xvabsdp 55, 47 \n\t" +- +- "xvadddp 32, 32, 48 \n\t" +- "xvadddp 33, 33, 49 \n\t" +- "xvadddp 34, 34, 50 \n\t" +- "xvadddp 35, 35, 51 \n\t" +- "xvadddp 36, 36, 52 \n\t" +- "xvadddp 37, 37, 53 \n\t" +- "xvadddp 38, 38, 54 \n\t" +- "xvadddp 39, 39, 55 \n\t" +- +- "xvadddp 32, 32, 33 \n\t" +- "xvadddp 34, 34, 35 \n\t" +- "xvadddp 36, 36, 37 \n\t" +- "xvadddp 38, 38, 39 \n\t" +- +- "xvadddp 32, 32, 34 \n\t" +- "xvadddp 36, 36, 38 \n\t" +- +- "xvadddp 32, 32, 36 \n\t" +- +- +- "stxvd2x 32, 0, %3 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (n), // 1 +- "r" (x1), // 2 +- "r" (svec), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2", "memory" +- ); +- +-} ++ double sum; ++ __vector double t0; ++ __vector double t1; ++ __vector double t2; ++ __vector double t3; ++ ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ ++ "xxlxor 32, 32, 32 \n\t" ++ "xxlxor 33, 33, 33 \n\t" ++ "xxlxor 34, 34, 34 \n\t" ++ "xxlxor 35, 35, 35 \n\t" ++ "xxlxor 36, 36, 36 \n\t" ++ "xxlxor 37, 37, 37 \n\t" ++ "xxlxor 38, 38, 38 \n\t" ++ "xxlxor 39, 39, 39 \n\t" ++ ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 41, %8, %2 \n\t" ++ "lxvd2x 42, %9, %2 \n\t" ++ "lxvd2x 43, %10, %2 \n\t" ++ "lxvd2x 44, %11, %2 \n\t" ++ "lxvd2x 45, %12, %2 \n\t" ++ "lxvd2x 46, %13, %2 \n\t" ++ "lxvd2x 47, %14, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvabsdp 48, 40 \n\t" ++ "xvabsdp 49, 41 \n\t" ++ "xvabsdp 50, 42 \n\t" ++ "xvabsdp 51, 43 \n\t" ++ ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 41, %8, %2 \n\t" ++ ++ "xvabsdp %x3, 44 \n\t" ++ "xvabsdp %x4, 45 \n\t" ++ ++ "lxvd2x 42, %9, %2 \n\t" ++ "lxvd2x 43, %10, %2 \n\t" ++ ++ "xvabsdp %x5, 46 \n\t" ++ "xvabsdp %x6, 47 \n\t" ++ ++ "lxvd2x 44, %11, %2 \n\t" ++ "lxvd2x 45, %12, %2 \n\t" ++ ++ "xvadddp 32, 32, 48 \n\t" ++ "xvadddp 33, 33, 49 \n\t" ++ ++ "lxvd2x 46, %13, %2 \n\t" ++ "lxvd2x 47, %14, %2 \n\t" ++ ++ "xvadddp 34, 34, 50 \n\t" ++ "xvadddp 35, 35, 51 \n\t" ++ "addi %2, %2, 128 \n\t" ++ "xvadddp 36, 36, %x3 \n\t" ++ "xvadddp 37, 37, %x4 \n\t" ++ "addic. %1, %1, -16 \n\t" ++ "xvadddp 38, 38, %x5 \n\t" ++ "xvadddp 39, 39, %x6 \n\t" ++ ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvabsdp 48, 40 \n\t" ++ "xvabsdp 49, 41 \n\t" ++ "xvabsdp 50, 42 \n\t" ++ "xvabsdp 51, 43 \n\t" ++ "xvabsdp %x3, 44 \n\t" ++ "xvabsdp %x4, 45 \n\t" ++ "xvabsdp %x5, 46 \n\t" ++ "xvabsdp %x6, 47 \n\t" ++ ++ "xvadddp 32, 32, 48 \n\t" ++ "xvadddp 33, 33, 49 \n\t" ++ "xvadddp 34, 34, 50 \n\t" ++ "xvadddp 35, 35, 51 \n\t" ++ "xvadddp 36, 36, %x3 \n\t" ++ "xvadddp 37, 37, %x4 \n\t" ++ "xvadddp 38, 38, %x5 \n\t" ++ "xvadddp 39, 39, %x6 \n\t" ++ ++ "xvadddp 32, 32, 33 \n\t" ++ "xvadddp 34, 34, 35 \n\t" ++ "xvadddp 36, 36, 37 \n\t" ++ "xvadddp 38, 38, 39 \n\t" ++ ++ "xvadddp 32, 32, 34 \n\t" ++ "xvadddp 36, 36, 38 \n\t" ++ ++ "xvadddp 32, 32, 36 \n\t" ++ ++ "xxswapd 33, 32 \n\t" ++ "xsadddp %x0, 32, 33 \n" ++ ++ "#n=%1 x=%3=%2 sum=%0 o16=%8 o32=%9 o48=%10 o64=%11 o80=%12 o96=%13 o112=%14\n" ++ "#t0=%x3 t1=%x4 t2=%x5 t3=%x6" ++ : ++ "=d" (sum), // 0 ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "=wa" (t0), // 3 ++ "=wa" (t1), // 4 ++ "=wa" (t2), // 5 ++ "=wa" (t3) // 6 ++ : ++ "m" (*x), ++ "b" (16), // 8 ++ "b" (32), // 9 ++ "b" (48), // 10 ++ "b" (64), // 11 ++ "b" (80), // 12 ++ "b" (96), // 13 ++ "b" (112) // 14 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++ ++ return sum; ++} + + +diff --git a/kernel/power/daxpy.c b/kernel/power/daxpy.c +index 4365bd88d..df0572e8e 100644 +--- a/kernel/power/daxpy.c ++++ b/kernel/power/daxpy.c +@@ -43,21 +43,20 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_8 + +-static void daxpy_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) ++static void daxpy_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT alpha) + { + BLASLONG register i = 0; +- FLOAT a = *alpha; + + while(i < n) + { +- y[i] += a * x[i]; +- y[i+1] += a * x[i+1]; +- y[i+2] += a * x[i+2]; +- y[i+3] += a * x[i+3]; +- y[i+4] += a * x[i+4]; +- y[i+5] += a * x[i+5]; +- y[i+6] += a * x[i+6]; +- y[i+7] += a * x[i+7]; ++ y[i] += alpha * x[i]; ++ y[i+1] += alpha * x[i+1]; ++ y[i+2] += alpha * x[i+2]; ++ y[i+3] += alpha * x[i+3]; ++ y[i+4] += alpha * x[i+4]; ++ y[i+5] += alpha * x[i+5]; ++ y[i+6] += alpha * x[i+6]; ++ y[i+7] += alpha * x[i+7]; + i+=8 ; + + } +@@ -70,11 +69,6 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS + { + BLASLONG i=0; + BLASLONG ix=0,iy=0; +- FLOAT a2[4]; +- a2[0]=da; +- a2[1]=da; +- a2[2]=da; +- a2[3]=da; + + if ( n <= 0 ) return(0); + +@@ -84,7 +78,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS + BLASLONG n1 = n & -16; + + if ( n1 ) +- daxpy_kernel_8(n1, x, y , a2 ); ++ daxpy_kernel_8(n1, x, y, da); + + i = n1; + while(i < n) +diff --git a/kernel/power/daxpy_microk_power8.c b/kernel/power/daxpy_microk_power8.c +index bb3f73aca..fb714a3f9 100644 +--- a/kernel/power/daxpy_microk_power8.c ++++ b/kernel/power/daxpy_microk_power8.c +@@ -35,167 +35,183 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + #define HAVE_KERNEL_8 1 +-static void daxpy_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y , FLOAT *alpha) __attribute__ ((noinline)); + +-static void daxpy_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) ++static void daxpy_kernel_8 (long n, double *x, double *y, double alpha) + { ++ __vector double t0; ++ __vector double t1; ++ __vector double t2; ++ __vector double t3; ++ __vector double t4; ++ __vector double t5; ++ __vector double t6; ++ __vector double t7; ++ __vector double t8; ++ __vector double t9; ++ __vector double t10; ++ __vector double t11; ++ __vector double t12; ++ __vector double t13; ++ __vector double t14; ++ __vector double t15; ++ __vector double t16; + ++ __asm__ ++ ( ++ "xxspltd %x4, %x22, 0 \n\t" + +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- FLOAT *x1=x; +- FLOAT *y1=y; +- FLOAT *y2=y+1; +- BLASLONG pre = 384; ++ "dcbt 0, %2 \n\t" ++ "dcbt 0, %3 \n\t" + +- __asm__ __volatile__ +- ( ++ "lxvd2x %x5, 0, %2 \n\t" ++ "lxvd2x %x6, %23, %2 \n\t" ++ "lxvd2x %x7, %24, %2 \n\t" ++ "lxvd2x %x8, %25, %2 \n\t" + +- "lxsdx 33, %5, %4 \n\t" +- "xxspltd 32, 33, 0 \n\t" +- "addi %8, %8, -8 \n\t" ++ "lxvd2x %x13, 0, %3 \n\t" ++ "lxvd2x %x14, %23, %3 \n\t" ++ "lxvd2x %x15, %24, %3 \n\t" ++ "lxvd2x %x16, %25, %3 \n\t" + +- "dcbt %2, %9 \n\t" +- "dcbt %3, %9 \n\t" ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, 64 \n\t" + +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" ++ "lxvd2x %x9, 0, %2 \n\t" ++ "lxvd2x %x10, %23, %2 \n\t" ++ "lxvd2x %x11, %24, %2 \n\t" ++ "lxvd2x %x12, %25, %2 \n\t" + +- "lxvd2x 48, 0, %3 \n\t" +- "lxvd2x 49, %5, %3 \n\t" +- "lxvd2x 50, %6, %3 \n\t" +- "lxvd2x 51, %7, %3 \n\t" +- +- "addi %2, %2, 64 \n\t" +- "addi %3, %3, 64 \n\t" +- +- "lxvd2x 44, 0, %2 \n\t" +- "lxvd2x 45, %5, %2 \n\t" +- "lxvd2x 46, %6, %2 \n\t" +- "lxvd2x 47, %7, %2 \n\t" +- +- "lxvd2x 52, 0, %3 \n\t" +- "lxvd2x 53, %5, %3 \n\t" +- "lxvd2x 54, %6, %3 \n\t" +- "lxvd2x 55, %7, %3 \n\t" +- +- "addi %2, %2, 64 \n\t" +- "addi %3, %3, 64 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2, %9 \n\t" +- "dcbt %3, %9 \n\t" +- +- "xvmaddadp 48, 40, 32 \n\t" +- "xvmaddadp 49, 41, 32 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- +- "stxvd2x 48, 0, %8 \n\t" +- "stxvd2x 49, %5, %8 \n\t" +- +- "xvmaddadp 50, 42, 32 \n\t" +- "xvmaddadp 51, 43, 32 \n\t" +- +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- +- "stxvd2x 50, %6, %8 \n\t" +- "stxvd2x 51, %7, %8 \n\t" +- +- "lxvd2x 48, 0, %3 \n\t" +- "lxvd2x 49, %5, %3 \n\t" +- "lxvd2x 50, %6, %3 \n\t" +- "lxvd2x 51, %7, %3 \n\t" +- +- "addi %2, %2, 64 \n\t" +- "addi %8, %8, 64 \n\t" +- +- "xvmaddadp 52, 44, 32 \n\t" +- "addi %3, %3, 64 \n\t" +- "xvmaddadp 53, 45, 32 \n\t" +- +- "lxvd2x 44, 0, %2 \n\t" +- "lxvd2x 45, %5, %2 \n\t" +- +- "stxvd2x 52, 0, %8 \n\t" +- "stxvd2x 53, %5, %8 \n\t" +- +- "xvmaddadp 54, 46, 32 \n\t" +- "xvmaddadp 55, 47, 32 \n\t" +- +- "lxvd2x 46, %6, %2 \n\t" +- "lxvd2x 47, %7, %2 \n\t" +- +- "stxvd2x 54, %6, %8 \n\t" +- "stxvd2x 55, %7, %8 \n\t" +- +- "addi %2, %2, 64 \n\t" +- "addi %8, %8, 64 \n\t" +- +- "lxvd2x 52, 0, %3 \n\t" +- "lxvd2x 53, %5, %3 \n\t" +- "lxvd2x 54, %6, %3 \n\t" +- "lxvd2x 55, %7, %3 \n\t" +- +- "addi %3, %3, 64 \n\t" +- +- +- "addic. %0 , %0 , -16 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- +- "xvmaddadp 48, 40, 32 \n\t" +- "xvmaddadp 49, 41, 32 \n\t" +- "xvmaddadp 50, 42, 32 \n\t" +- "xvmaddadp 51, 43, 32 \n\t" +- +- "xvmaddadp 52, 44, 32 \n\t" +- "xvmaddadp 53, 45, 32 \n\t" +- "xvmaddadp 54, 46, 32 \n\t" +- "xvmaddadp 55, 47, 32 \n\t" +- +- "stxvd2x 48, 0, %8 \n\t" +- "stxvd2x 49, %5, %8 \n\t" +- "stxvd2x 50, %6, %8 \n\t" +- "stxvd2x 51, %7, %8 \n\t" +- +- "addi %8, %8, 64 \n\t" +- +- "stxvd2x 52, 0, %8 \n\t" +- "stxvd2x 53, %5, %8 \n\t" +- "stxvd2x 54, %6, %8 \n\t" +- "stxvd2x 55, %7, %8 \n\t" +- +- "addi %8, %8, 64 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (n), // 1 +- "r" (x1), // 2 +- "r" (y1), // 3 +- "r" (alpha), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (y2), // 8 +- "r" (pre) // 9 +- : "cr0", "%0", "%2" , "%3", "%8", "memory" +- ); +- +-} ++ "lxvd2x %x17, 0, %3 \n\t" ++ "lxvd2x %x18, %23, %3 \n\t" ++ "lxvd2x %x19, %24, %3 \n\t" ++ "lxvd2x %x20, %25, %3 \n\t" ++ ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, -64 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "ble 2f \n\t" ++ ++ ".align 5 \n" ++ "1: \n\t" ++ ++ "xvmaddadp %x13, %x5, %x4 \n\t" ++ "xvmaddadp %x14, %x6, %x4 \n\t" ++ ++ "lxvd2x %x5, 0, %2 \n\t" ++ "lxvd2x %x6, %23, %2 \n\t" ++ ++ "stxvd2x %x13, 0, %3 \n\t" ++ "stxvd2x %x14, %23, %3 \n\t" ++ ++ "xvmaddadp %x15, %x7, %x4 \n\t" ++ "xvmaddadp %x16, %x8, %x4 \n\t" ++ ++ "lxvd2x %x7, %24, %2 \n\t" ++ "lxvd2x %x8, %25, %2 \n\t" ++ ++ "stxvd2x %x15, %24, %3 \n\t" ++ "stxvd2x %x16, %25, %3 \n\t" ++ ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, 128 \n\t" ++ ++ "lxvd2x %x13, 0, %3 \n\t" ++ "lxvd2x %x14, %23, %3 \n\t" ++ "lxvd2x %x15, %24, %3 \n\t" ++ "lxvd2x %x16, %25, %3 \n\t" ++ ++ "addi %3, %3, -64 \n\t" ++ ++ "xvmaddadp %x17, %x9, %x4 \n\t" ++ "xvmaddadp %x18, %x10, %x4 \n\t" ++ ++ "lxvd2x %x9, 0, %2 \n\t" ++ "lxvd2x %x10, %23, %2 \n\t" ++ ++ "stxvd2x %x17, 0, %3 \n\t" ++ "stxvd2x %x18, %23, %3 \n\t" ++ ++ "xvmaddadp %x19, %x11, %x4 \n\t" ++ "xvmaddadp %x20, %x12, %x4 \n\t" ++ ++ "lxvd2x %x11, %24, %2 \n\t" ++ "lxvd2x %x12, %25, %2 \n\t" ++ ++ "stxvd2x %x19, %24, %3 \n\t" ++ "stxvd2x %x20, %25, %3 \n\t" ++ ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, 128 \n\t" ++ ++ "lxvd2x %x17, 0, %3 \n\t" ++ "lxvd2x %x18, %23, %3 \n\t" ++ "lxvd2x %x19, %24, %3 \n\t" ++ "lxvd2x %x20, %25, %3 \n\t" ++ ++ "addi %3, %3, -64 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmaddadp %x13, %x5, %x4 \n\t" ++ "xvmaddadp %x14, %x6, %x4 \n\t" ++ "xvmaddadp %x15, %x7, %x4 \n\t" ++ "xvmaddadp %x16, %x8, %x4 \n\t" ++ ++ "xvmaddadp %x17, %x9, %x4 \n\t" ++ "xvmaddadp %x18, %x10, %x4 \n\t" ++ "xvmaddadp %x19, %x11, %x4 \n\t" ++ "xvmaddadp %x20, %x12, %x4 \n\t" ++ ++ "stxvd2x %x13, 0, %3 \n\t" ++ "stxvd2x %x14, %23, %3 \n\t" ++ "stxvd2x %x15, %24, %3 \n\t" ++ "stxvd2x %x16, %25, %3 \n\t" ++ ++ "addi %3, %3, 64 \n\t" ++ ++ "stxvd2x %x17, 0, %3 \n\t" ++ "stxvd2x %x18, %23, %3 \n\t" ++ "stxvd2x %x19, %24, %3 \n\t" ++ "stxvd2x %x20, %25, %3 \n" ++ ++ "#n=%1 x=%21=%2 y=%0=%3 alpha=%22 o16=%23 o32=%24 o48=%25\n" ++ "#t0=%x4 t1=%x5 t2=%x6 t3=%x7 t4=%x8 t5=%x9 t6=%x10 t7=%x11 t8=%x12 t9=%x13 t10=%x14 t11=%x15 t12=%x16 t13=%x17 t14=%x18 t15=%x19 t16=%x20" ++ : ++ "+m" (*y), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+b" (y), // 3 ++ "=wa" (t0), // 4 ++ "=wa" (t1), // 5 ++ "=wa" (t2), // 6 ++ "=wa" (t3), // 7 ++ "=wa" (t4), // 8 ++ "=wa" (t5), // 9 ++ "=wa" (t6), // 10 ++ "=wa" (t7), // 11 ++ "=wa" (t8), // 12 ++ "=wa" (t9), // 13 ++ "=wa" (t10), // 14 ++ "=wa" (t11), // 15 ++ "=wa" (t12), // 16 ++ "=wa" (t13), // 17 ++ "=wa" (t14), // 18 ++ "=wa" (t15), // 19 ++ "=wa" (t16) // 20 ++ : ++ "m" (*x), ++ "d" (alpha), // 22 ++ "b" (16), // 23 ++ "b" (32), // 24 ++ "b" (48) // 25 ++ : ++ "cr0" ++ ); ++ ++} + + +diff --git a/kernel/power/dcopy_microk_power8.c b/kernel/power/dcopy_microk_power8.c +index 04f7db556..261dc04de 100644 +--- a/kernel/power/dcopy_microk_power8.c ++++ b/kernel/power/dcopy_microk_power8.c +@@ -35,140 +35,121 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_32 1 + +-static void dcopy_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) __attribute__ ((noinline)); +- +-static void dcopy_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) ++static void dcopy_kernel_32 (long n, double *x, double *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- BLASLONG pre = 384; +- BLASLONG alpha=0; +- +- __asm__ __volatile__ +- ( +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvd2x 50, 0, %2 \n\t" +- "lxvd2x 51, %5, %2 \n\t" +- "lxvd2x 52, %6, %2 \n\t" +- "lxvd2x 53, %7, %2 \n\t" +- "lxvd2x 54, %8, %2 \n\t" +- "lxvd2x 55, %9, %2 \n\t" +- "lxvd2x 56, %10, %2 \n\t" +- "lxvd2x 57, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "stxvd2x 40, 0, %1 \n\t" +- "stxvd2x 41, %5, %1 \n\t" +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "stxvd2x 42, %6, %1 \n\t" +- "stxvd2x 43, %7, %1 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "stxvd2x 44, %8, %1 \n\t" +- "stxvd2x 45, %9, %1 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "stxvd2x 46, %10, %1 \n\t" +- "stxvd2x 47, %11, %1 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "stxvd2x 50, 0, %1 \n\t" +- "stxvd2x 51, %5, %1 \n\t" +- "lxvd2x 50, 0, %2 \n\t" +- "lxvd2x 51, %5, %2 \n\t" +- "stxvd2x 52, %6, %1 \n\t" +- "stxvd2x 53, %7, %1 \n\t" +- "lxvd2x 52, %6, %2 \n\t" +- "lxvd2x 53, %7, %2 \n\t" +- "stxvd2x 54, %8, %1 \n\t" +- "stxvd2x 55, %9, %1 \n\t" +- "lxvd2x 54, %8, %2 \n\t" +- "lxvd2x 55, %9, %2 \n\t" +- "stxvd2x 56, %10, %1 \n\t" +- "stxvd2x 57, %11, %1 \n\t" +- "lxvd2x 56, %10, %2 \n\t" +- "lxvd2x 57, %11, %2 \n\t" +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "stxvd2x 40, 0, %1 \n\t" +- "stxvd2x 41, %5, %1 \n\t" +- "stxvd2x 42, %6, %1 \n\t" +- "stxvd2x 43, %7, %1 \n\t" +- "stxvd2x 44, %8, %1 \n\t" +- "stxvd2x 45, %9, %1 \n\t" +- "stxvd2x 46, %10, %1 \n\t" +- "stxvd2x 47, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "stxvd2x 50, 0, %1 \n\t" +- "stxvd2x 51, %5, %1 \n\t" +- "stxvd2x 52, %6, %1 \n\t" +- "stxvd2x 53, %7, %1 \n\t" +- "stxvd2x 54, %8, %1 \n\t" +- "stxvd2x 55, %9, %1 \n\t" +- "stxvd2x 56, %10, %1 \n\t" +- "stxvd2x 57, %11, %1 \n\t" +- +- +- : +- : +- "r" (i), // 0 +- "r" (y1), // 1 +- "r" (x1), // 2 +- "r" (alpha), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "memory" +- ); +- +-} +- +- ++ __asm__ ++ ( ++ "lxvd2x 32, 0, %2 \n\t" ++ "lxvd2x 33, %5, %2 \n\t" ++ "lxvd2x 34, %6, %2 \n\t" ++ "lxvd2x 35, %7, %2 \n\t" ++ "lxvd2x 36, %8, %2 \n\t" ++ "lxvd2x 37, %9, %2 \n\t" ++ "lxvd2x 38, %10, %2 \n\t" ++ "lxvd2x 39, %11, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 41, %5, %2 \n\t" ++ "lxvd2x 42, %6, %2 \n\t" ++ "lxvd2x 43, %7, %2 \n\t" ++ "lxvd2x 44, %8, %2 \n\t" ++ "lxvd2x 45, %9, %2 \n\t" ++ "lxvd2x 46, %10, %2 \n\t" ++ "lxvd2x 47, %11, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "stxvd2x 32, 0, %3 \n\t" ++ "stxvd2x 33, %5, %3 \n\t" ++ "lxvd2x 32, 0, %2 \n\t" ++ "lxvd2x 33, %5, %2 \n\t" ++ "stxvd2x 34, %6, %3 \n\t" ++ "stxvd2x 35, %7, %3 \n\t" ++ "lxvd2x 34, %6, %2 \n\t" ++ "lxvd2x 35, %7, %2 \n\t" ++ "stxvd2x 36, %8, %3 \n\t" ++ "stxvd2x 37, %9, %3 \n\t" ++ "lxvd2x 36, %8, %2 \n\t" ++ "lxvd2x 37, %9, %2 \n\t" ++ "stxvd2x 38, %10, %3 \n\t" ++ "stxvd2x 39, %11, %3 \n\t" ++ "lxvd2x 38, %10, %2 \n\t" ++ "lxvd2x 39, %11, %2 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ "addi %2, %2, 128 \n\t" ++ ++ "stxvd2x 40, 0, %3 \n\t" ++ "stxvd2x 41, %5, %3 \n\t" ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 41, %5, %2 \n\t" ++ "stxvd2x 42, %6, %3 \n\t" ++ "stxvd2x 43, %7, %3 \n\t" ++ "lxvd2x 42, %6, %2 \n\t" ++ "lxvd2x 43, %7, %2 \n\t" ++ "stxvd2x 44, %8, %3 \n\t" ++ "stxvd2x 45, %9, %3 \n\t" ++ "lxvd2x 44, %8, %2 \n\t" ++ "lxvd2x 45, %9, %2 \n\t" ++ "stxvd2x 46, %10, %3 \n\t" ++ "stxvd2x 47, %11, %3 \n\t" ++ "lxvd2x 46, %10, %2 \n\t" ++ "lxvd2x 47, %11, %2 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "stxvd2x 32, 0, %3 \n\t" ++ "stxvd2x 33, %5, %3 \n\t" ++ "stxvd2x 34, %6, %3 \n\t" ++ "stxvd2x 35, %7, %3 \n\t" ++ "stxvd2x 36, %8, %3 \n\t" ++ "stxvd2x 37, %9, %3 \n\t" ++ "stxvd2x 38, %10, %3 \n\t" ++ "stxvd2x 39, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvd2x 40, 0, %3 \n\t" ++ "stxvd2x 41, %5, %3 \n\t" ++ "stxvd2x 42, %6, %3 \n\t" ++ "stxvd2x 43, %7, %3 \n\t" ++ "stxvd2x 44, %8, %3 \n\t" ++ "stxvd2x 45, %9, %3 \n\t" ++ "stxvd2x 46, %10, %3 \n\t" ++ "stxvd2x 47, %11, %3 \n" ++ ++ "#n=%1 x=%4=%2 y=%0=%3 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11" ++ : ++ "=m" (*y), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+b" (y) // 3 ++ : ++ "m" (*x), ++ "b" (16), // 5 ++ "b" (32), // 6 ++ "b" (48), // 7 ++ "b" (64), // 8 ++ "b" (80), // 9 ++ "b" (96), // 10 ++ "b" (112) // 11 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47" ++ ); ++} +diff --git a/kernel/power/ddot.c b/kernel/power/ddot.c +index cef60a2e5..e43470e23 100644 +--- a/kernel/power/ddot.c ++++ b/kernel/power/ddot.c +@@ -43,7 +43,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_8 + +-static void ddot_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) ++static FLOAT ddot_kernel_8 (BLASLONG n, FLOAT *x, FLOAT *y) + { + BLASLONG register i = 0; + FLOAT dot = 0.0; +@@ -62,8 +62,7 @@ static void ddot_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) + i+=8 ; + + } +- *d += dot; +- ++ return dot; + } + + #endif +@@ -83,7 +82,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) + BLASLONG n1 = n & -16; + + if ( n1 ) +- ddot_kernel_8(n1, x, y , &dot ); ++ dot = ddot_kernel_8(n1, x, y); + + i = n1; + while(i < n) +diff --git a/kernel/power/ddot_microk_power8.c b/kernel/power/ddot_microk_power8.c +index b88049212..4e6bc29c9 100644 +--- a/kernel/power/ddot_microk_power8.c ++++ b/kernel/power/ddot_microk_power8.c +@@ -34,145 +34,138 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **************************************************************************************/ + + #define HAVE_KERNEL_8 1 +-static void ddot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y , FLOAT *dot) __attribute__ ((noinline)); + +-static void ddot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) ++static double ddot_kernel_8 (long n, double *x, double *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- "xxlxor 32,32,32 \n\t" +- "xxlxor 33,33,33 \n\t" +- "xxlxor 34,34,34 \n\t" +- "xxlxor 35,35,35 \n\t" +- "xxlxor 36,36,36 \n\t" +- "xxlxor 37,37,37 \n\t" +- "xxlxor 38,38,38 \n\t" +- "xxlxor 39,39,39 \n\t" +- +- "dcbt %2, %12 \n\t" +- "dcbt %3, %12 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 48, 0, %3 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 49, %5, %3 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 50, %6, %3 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 51, %7, %3 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 52, %8, %3 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 53, %9, %3 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 54, %10, %3 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- "lxvd2x 55, %11, %3 \n\t" +- +- "addi %2, %2, 128 \n\t" +- "addi %3, %3, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2, %12 \n\t" +- "dcbt %3, %12 \n\t" +- +- "xvmaddadp 32, 40, 48 \n\t" +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 48, 0, %3 \n\t" +- "xvmaddadp 33, 41, 49 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 49, %5, %3 \n\t" +- "xvmaddadp 34, 42, 50 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 50, %6, %3 \n\t" +- "xvmaddadp 35, 43, 51 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 51, %7, %3 \n\t" +- "xvmaddadp 36, 44, 52 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 52, %8, %3 \n\t" +- "xvmaddadp 37, 45, 53 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 53, %9, %3 \n\t" +- "xvmaddadp 38, 46, 54 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 54, %10, %3 \n\t" +- "xvmaddadp 39, 47, 55 \n\t" +- +- "lxvd2x 47, %11, %2 \n\t" +- "lxvd2x 55, %11, %3 \n\t" +- +- +- "addi %2, %2, 128 \n\t" +- "addi %3, %3, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "xvmaddadp 32, 40, 48 \n\t" +- "xvmaddadp 33, 41, 49 \n\t" +- "xvmaddadp 34, 42, 50 \n\t" +- "xvmaddadp 35, 43, 51 \n\t" +- "xvmaddadp 36, 44, 52 \n\t" +- "xvmaddadp 37, 45, 53 \n\t" +- "xvmaddadp 38, 46, 54 \n\t" +- "xvmaddadp 39, 47, 55 \n\t" +- +- "xvadddp 32, 32, 33 \n\t" +- "xvadddp 34, 34, 35 \n\t" +- "xvadddp 36, 36, 37 \n\t" +- "xvadddp 38, 38, 39 \n\t" +- +- "xvadddp 32, 32, 34 \n\t" +- "xvadddp 36, 36, 38 \n\t" +- +- "xvadddp 32, 32, 36 \n\t" +- +- "xxswapd 33, 32 \n\t" +- +- "xsadddp 32, 32, 33 \n\t" +- +- "stxsdx 32, 0, %4 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (n), // 1 +- "r" (x1), // 2 +- "r" (y1), // 3 +- "r" (dot), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112), // 11 +- "r" (pre) // 12 +- : "cr0", "%0", "%2" , "%3", "memory" +- ); +- +-} +- +- ++ double dot; ++ __vector double t0; ++ __vector double t1; ++ __vector double t2; ++ __vector double t3; ++ ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ "dcbt 0, %3 \n\t" ++ ++ "xxlxor 32, 32, 32 \n\t" ++ "xxlxor 33, 33, 33 \n\t" ++ "xxlxor 34, 34, 34 \n\t" ++ "xxlxor 35, 35, 35 \n\t" ++ "xxlxor 36, 36, 36 \n\t" ++ "xxlxor 37, 37, 37 \n\t" ++ "xxlxor 38, 38, 38 \n\t" ++ "xxlxor 39, 39, 39 \n\t" ++ ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 48, 0, %3 \n\t" ++ "lxvd2x 41, %10, %2 \n\t" ++ "lxvd2x 49, %10, %3 \n\t" ++ "lxvd2x 42, %11, %2 \n\t" ++ "lxvd2x 50, %11, %3 \n\t" ++ "lxvd2x 43, %12, %2 \n\t" ++ "lxvd2x 51, %12, %3 \n\t" ++ "lxvd2x 44, %13, %2 \n\t" ++ "lxvd2x %x4, %13, %3 \n\t" ++ "lxvd2x 45, %14, %2 \n\t" ++ "lxvd2x %x5, %14, %3 \n\t" ++ "lxvd2x 46, %15, %2 \n\t" ++ "lxvd2x %x6, %15, %3 \n\t" ++ "lxvd2x 47, %16, %2 \n\t" ++ "lxvd2x %x7, %16, %3 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ "addi %3, %3, 128 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvmaddadp 32, 40, 48 \n\t" ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 48, 0, %3 \n\t" ++ "xvmaddadp 33, 41, 49 \n\t" ++ "lxvd2x 41, %10, %2 \n\t" ++ "lxvd2x 49, %10, %3 \n\t" ++ "xvmaddadp 34, 42, 50 \n\t" ++ "lxvd2x 42, %11, %2 \n\t" ++ "lxvd2x 50, %11, %3 \n\t" ++ "xvmaddadp 35, 43, 51 \n\t" ++ "lxvd2x 43, %12, %2 \n\t" ++ "lxvd2x 51, %12, %3 \n\t" ++ "xvmaddadp 36, 44, %x4 \n\t" ++ "lxvd2x 44, %13, %2 \n\t" ++ "lxvd2x %x4, %13, %3 \n\t" ++ "xvmaddadp 37, 45, %x5 \n\t" ++ "lxvd2x 45, %14, %2 \n\t" ++ "lxvd2x %x5, %14, %3 \n\t" ++ "xvmaddadp 38, 46, %x6 \n\t" ++ "lxvd2x 46, %15, %2 \n\t" ++ "lxvd2x %x6, %15, %3 \n\t" ++ "xvmaddadp 39, 47, %x7 \n\t" ++ "lxvd2x 47, %16, %2 \n\t" ++ "lxvd2x %x7, %16, %3 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ "addi %3, %3, 128 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmaddadp 32, 40, 48 \n\t" ++ "xvmaddadp 33, 41, 49 \n\t" ++ "xvmaddadp 34, 42, 50 \n\t" ++ "xvmaddadp 35, 43, 51 \n\t" ++ "xvmaddadp 36, 44, %x4 \n\t" ++ "xvmaddadp 37, 45, %x5 \n\t" ++ "xvmaddadp 38, 46, %x6 \n\t" ++ "xvmaddadp 39, 47, %x7 \n\t" ++ ++ "xvadddp 32, 32, 33 \n\t" ++ "xvadddp 34, 34, 35 \n\t" ++ "xvadddp 36, 36, 37 \n\t" ++ "xvadddp 38, 38, 39 \n\t" ++ ++ "xvadddp 32, 32, 34 \n\t" ++ "xvadddp 36, 36, 38 \n\t" ++ ++ "xvadddp 32, 32, 36 \n\t" ++ ++ "xxswapd 33, 32 \n\t" ++ ++ "xsadddp %x0, 32, 33 \n" ++ ++ "#dot=%0 n=%1 x=%8=%2 y=%9=%3 o16=%10 o32=%11 o48=%12 o64=%13 o80=%14 o96=%15 o122=%16\n" ++ "#t0=%x4 t1=%x5 t2=%x6 t3=%x7" ++ : ++ "=d" (dot), // 0 ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+b" (y), // 3 ++ "=wa" (t0), // 4 ++ "=wa" (t1), // 5 ++ "=wa" (t2), // 6 ++ "=wa" (t3) // 7 ++ : ++ "m" (*x), ++ "m" (*y), ++ "b" (16), // 10 ++ "b" (32), // 11 ++ "b" (48), // 12 ++ "b" (64), // 13 ++ "b" (80), // 14 ++ "b" (96), // 15 ++ "b" (112) // 16 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++ ++ return dot; ++} +diff --git a/kernel/power/dgemv_n.c b/kernel/power/dgemv_n.c +index 812d09d15..57f9f9e72 100644 +--- a/kernel/power/dgemv_n.c ++++ b/kernel/power/dgemv_n.c +@@ -47,18 +47,18 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_4x4 + +-static void dgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *xo, FLOAT *y, FLOAT *alpha) ++static void dgemv_kernel_4x4(BLASLONG n, FLOAT *a_ptr, BLASLONG lda, FLOAT *xo, FLOAT *y, FLOAT alpha) + { + BLASLONG i; +- FLOAT *a0,*a1,*a2,*a3; + FLOAT x[4] __attribute__ ((aligned (16)));; +- a0 = ap[0]; +- a1 = ap[1]; +- a2 = ap[2]; +- a3 = ap[3]; ++ FLOAT *a0 = a_ptr; ++ FLOAT *a1 = a0 + lda; ++ FLOAT *a2 = a1 + lda; ++ FLOAT *a3 = a2 + lda; ++ + + for ( i=0; i<4; i++) +- x[i] = xo[i] * *alpha; ++ x[i] = xo[i] * alpha; + + for ( i=0; i< n; i+=4 ) + { +@@ -73,16 +73,13 @@ static void dgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *xo, FLOAT *y, FLOAT + + #ifndef HAVE_KERNEL_4x2 + +-static void dgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *xo, FLOAT *y, FLOAT *alpha) ++static void dgemv_kernel_4x2(BLASLONG n, FLOAT *a0, FLOAT *a1, FLOAT *xo, FLOAT *y, FLOAT alpha) + { + BLASLONG i; +- FLOAT *a0,*a1; + FLOAT x[4] __attribute__ ((aligned (16)));; +- a0 = ap[0]; +- a1 = ap[1]; + + for ( i=0; i<2; i++) +- x[i] = xo[i] * *alpha; ++ x[i] = xo[i] * alpha; + + for ( i=0; i< n; i+=4 ) + { +@@ -98,15 +95,13 @@ static void dgemv_kernel_4x2(BLASLONG n, FLOAT **ap, FLOAT *xo, FLOAT *y, FLOAT + + #ifndef HAVE_KERNEL_4x1 + +-static void dgemv_kernel_4x1(BLASLONG n, FLOAT *ap, FLOAT *xo, FLOAT *y, FLOAT *alpha) ++static void dgemv_kernel_4x1(BLASLONG n, FLOAT *a0, FLOAT *xo, FLOAT *y, FLOAT alpha) + { + BLASLONG i; +- FLOAT *a0; + FLOAT x[4] __attribute__ ((aligned (16)));; +- a0 = ap; + + for ( i=0; i<1; i++) +- x[i] = xo[i] * *alpha; ++ x[i] = xo[i] * alpha; + + for ( i=0; i< n; i+=4 ) + { +@@ -141,7 +136,6 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO + { + + BLASLONG i; +- BLASLONG j; + FLOAT *a_ptr; + FLOAT *x_ptr; + FLOAT *y_ptr; +@@ -151,13 +145,9 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO + BLASLONG m3; + BLASLONG n2; + BLASLONG lda4 = lda << 2; +- FLOAT *ap[4] __attribute__ ((aligned (16)));; + FLOAT xbuffer[8] __attribute__ ((aligned (16)));; +- FLOAT alpha_r[4] __attribute__ ((aligned (16)));; + FLOAT *ybuffer; + +- alpha_r[0] = alpha; +- + if ( m < 1 ) return(0); + if ( n < 1 ) return(0); + +@@ -187,11 +177,6 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO + a_ptr = a; + x_ptr = x; + +- ap[0] = a_ptr; +- ap[1] = a_ptr + lda; +- ap[2] = ap[1] + lda; +- ap[3] = ap[2] + lda; +- + if ( inc_y != 1 ) + memset(ybuffer,0,NB*8); + else +@@ -203,18 +188,14 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO + + for( i = 0; i < n1 ; i++) + { +- dgemv_kernel_4x4(NB,ap,x_ptr,ybuffer,alpha_r); +- ap[0] += lda4; +- ap[1] += lda4; +- ap[2] += lda4; +- ap[3] += lda4; ++ dgemv_kernel_4x4(NB,a_ptr,lda,x_ptr,ybuffer,alpha); + a_ptr += lda4; + x_ptr += 4; + } + + if ( n2 & 2 ) + { +- dgemv_kernel_4x2(NB,ap,x_ptr,ybuffer,alpha_r); ++ dgemv_kernel_4x2(NB,a_ptr,a_ptr+lda,x_ptr,ybuffer,alpha); + a_ptr += lda*2; + x_ptr += 2; + } +@@ -222,7 +203,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO + + if ( n2 & 1 ) + { +- dgemv_kernel_4x1(NB,a_ptr,x_ptr,ybuffer,alpha_r); ++ dgemv_kernel_4x1(NB,a_ptr,x_ptr,ybuffer,alpha); + a_ptr += lda; + x_ptr += 1; + +@@ -243,11 +224,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO + x_ptr += inc_x; + xbuffer[3] = x_ptr[0]; + x_ptr += inc_x; +- dgemv_kernel_4x4(NB,ap,xbuffer,ybuffer,alpha_r); +- ap[0] += lda4; +- ap[1] += lda4; +- ap[2] += lda4; +- ap[3] += lda4; ++ dgemv_kernel_4x4(NB,a_ptr,lda,xbuffer,ybuffer,alpha); + a_ptr += lda4; + } + +@@ -255,7 +232,7 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG dummy1, FLOAT alpha, FLOAT *a, BLASLO + { + xbuffer[0] = x_ptr[0]; + x_ptr += inc_x; +- dgemv_kernel_4x1(NB,a_ptr,xbuffer,ybuffer,alpha_r); ++ dgemv_kernel_4x1(NB,a_ptr,xbuffer,ybuffer,alpha); + a_ptr += lda; + + } +diff --git a/kernel/power/dgemv_n_microk_power8.c b/kernel/power/dgemv_n_microk_power8.c +index 9eabe555c..5b42bbb38 100644 +--- a/kernel/power/dgemv_n_microk_power8.c ++++ b/kernel/power/dgemv_n_microk_power8.c +@@ -35,267 +35,264 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_4x4 1 + +-static void dgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *xo, FLOAT *y, FLOAT *alpha) __attribute__ ((noinline)); +- +-static void dgemv_kernel_4x4(BLASLONG n, FLOAT **ap, FLOAT *xo, FLOAT *y, FLOAT *alpha) ++static void dgemv_kernel_4x4 (long n, double *ap, long lda, double *x, double *y, double alpha) + { +- BLASLONG i=n; +- BLASLONG o8 = 8; +- BLASLONG o16 = 16; +- BLASLONG o24 = 24; +- BLASLONG pre = 384; +- +- FLOAT *a0,*a1,*a2,*a3; +- FLOAT *y1=y+1; +- FLOAT x[4] __attribute__ ((aligned (16)));; +- a0 = ap[0]+1; +- a1 = ap[1]+1; +- a2 = ap[2]+1; +- a3 = ap[3]+1; +- +- x[0]=xo[0] * *alpha; +- x[1]=xo[1] * *alpha; +- x[2]=xo[2] * *alpha; +- x[3]=xo[3] * *alpha; ++ double *a0; ++ double *a1; ++ double *a2; ++ double *a3; ++ ++ __asm__ ++ ( ++ "lxvd2x 34, 0, %9 \n\t" // x0, x1 ++ "lxvd2x 35, %10, %9 \n\t" // x2, x3 ++ "xxspltd 32, %x8, 0 \n\t" // alpha, alpha ++ ++ "sldi %6, %4, 3 \n\t" // lda * sizeof (double) ++ ++ "xvmuldp 34, 34, 32 \n\t" // x0 * alpha, x1 * alpha ++ "xvmuldp 35, 35, 32 \n\t" // x2 * alpha, x3 * alpha ++ ++ "add %4, %3, %6 \n\t" // a1 = a0 + lda ++ "add %6, %6, %6 \n\t" // 2 * lda ++ ++ "xxspltd 32, 34, 0 \n\t" // x0 * alpha, x0 * alpha ++ "xxspltd 33, 34, 1 \n\t" // x1 * alpha, x1 * alpha ++ "xxspltd 34, 35, 0 \n\t" // x2 * alpha, x2 * alpha ++ "xxspltd 35, 35, 1 \n\t" // x3 * alpha, x3 * alpha ++ ++ "add %5, %3, %6 \n\t" // a2 = a0 + 2 * lda ++ "add %6, %4, %6 \n\t" // a3 = a1 + 2 * lda ++ ++ "dcbt 0, %3 \n\t" ++ "dcbt 0, %4 \n\t" ++ "dcbt 0, %5 \n\t" ++ "dcbt 0, %6 \n\t" + ++ "lxvd2x 40, 0, %3 \n\t" // a0[0], a0[1] ++ "lxvd2x 41, %10, %3 \n\t" // a0[2], a0[3] + +- __asm__ __volatile__ +- ( +- "lxvdsx 32, 0 , %1 \n\t" // x0 +- "lxvdsx 33,%3 , %1 \n\t" // x1 +- "lxvdsx 34,%4 , %1 \n\t" // x2 +- "lxvdsx 35,%5 , %1 \n\t" // x3 +- "addi %2 , %2 , -8 \n\t" +- "addi %6 , %6 , -8 \n\t" +- "addi %7 , %7 , -8 \n\t" +- "addi %8 , %8 , -8 \n\t" +- "addi %9 , %9 , -8 \n\t" +- +- "lxvd2x 48, 0, %6 \n\t" // a0[0], a0[1] +- "lxvd2x 49,%4, %6 \n\t" // a0[2], a0[3] +- +- "lxvd2x 50, 0, %7 \n\t" // a1[0], a1[1] +- "lxvd2x 51,%4, %7 \n\t" // a1[2], a1[3] ++ "lxvd2x 42, 0, %4 \n\t" // a1[0], a1[1] ++ "lxvd2x 43, %10, %4 \n\t" // a1[2], a1[3] + +- "lxvd2x 52, 0, %8 \n\t" // a2[0], a2[1] +- "lxvd2x 53,%4, %8 \n\t" // a2[2], a2[3] ++ "lxvd2x 44, 0, %5 \n\t" // a2[0], a2[1] ++ "lxvd2x 45, %10, %5 \n\t" // a2[2], a2[3] + +- "lxvd2x 54, 0, %9 \n\t" // a3[0], a3[1] +- "lxvd2x 55,%4, %9 \n\t" // a3[2], a3[3] ++ "lxvd2x 46, 0, %6 \n\t" // a3[0], a3[1] ++ "lxvd2x 47, %10, %6 \n\t" // a3[2], a3[3] + +- "addi %6, %6, 32 \n\t" +- "addi %7, %7, 32 \n\t" +- "addi %8, %8, 32 \n\t" +- "addi %9, %9, 32 \n\t" ++ "dcbt 0, %2 \n\t" + +- "addic. %0 , %0 , -4 \n\t" +- "ble 2f \n\t" ++ "addi %3, %3, 32 \n\t" ++ "addi %4, %4, 32 \n\t" ++ "addi %5, %5, 32 \n\t" ++ "addi %6, %6, 32 \n\t" + +- ".align 5 \n\t" +- "1: \n\t" ++ "addic. %1, %1, -4 \n\t" ++ "ble 2f \n\t" + +- "dcbt %2, %10 \n\t" ++ ".p2align 5 \n" ++ "1: \n\t" + +- "lxvd2x 40, 0, %2 \n\t" // y0, y1 +- "lxvd2x 41,%4, %2 \n\t" // y2, y3 +- +- "dcbt %6, %10 \n\t" +- "dcbt %7, %10 \n\t" +- "dcbt %8, %10 \n\t" +- "dcbt %9, %10 \n\t" ++ "lxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "lxvd2x 37, %10, %2 \n\t" // y2, y3 + +- "xvmaddadp 40, 48, 32 \n\t" +- "xvmaddadp 41, 49, 32 \n\t" ++ "xvmaddadp 36, 40, 32 \n\t" ++ "xvmaddadp 37, 41, 32 \n\t" + +- "lxvd2x 48, 0, %6 \n\t" // a0[0], a0[1] +- "lxvd2x 49,%4, %6 \n\t" // a0[2], a0[3] ++ "lxvd2x 40, 0, %3 \n\t" // a0[0], a0[1] ++ "lxvd2x 41, %10, %3 \n\t" // a0[2], a0[3] + +- "xvmaddadp 40, 50, 33 \n\t" +- "addi %6, %6, 32 \n\t" +- "xvmaddadp 41, 51, 33 \n\t" ++ "xvmaddadp 36, 42, 33 \n\t" ++ "addi %3, %3, 32 \n\t" ++ "xvmaddadp 37, 43, 33 \n\t" + +- "lxvd2x 50, 0, %7 \n\t" // a1[0], a1[1] +- "lxvd2x 51,%4, %7 \n\t" // a1[2], a1[3] ++ "lxvd2x 42, 0, %4 \n\t" // a1[0], a1[1] ++ "lxvd2x 43, %10, %4 \n\t" // a1[2], a1[3] + +- "xvmaddadp 40, 52, 34 \n\t" +- "addi %7, %7, 32 \n\t" +- "xvmaddadp 41, 53, 34 \n\t" ++ "xvmaddadp 36, 44, 34 \n\t" ++ "addi %4, %4, 32 \n\t" ++ "xvmaddadp 37, 45, 34 \n\t" + +- "lxvd2x 52, 0, %8 \n\t" // a2[0], a2[1] +- "lxvd2x 53,%4, %8 \n\t" // a2[2], a2[3] ++ "lxvd2x 44, 0, %5 \n\t" // a2[0], a2[1] ++ "lxvd2x 45, %10, %5 \n\t" // a2[2], a2[3] + +- "xvmaddadp 40, 54, 35 \n\t" +- "addi %8, %8, 32 \n\t" +- "xvmaddadp 41, 55, 35 \n\t" ++ "xvmaddadp 36, 46, 35 \n\t" ++ "addi %5, %5, 32 \n\t" ++ "xvmaddadp 37, 47, 35 \n\t" + +- "stxvd2x 40, 0, %2 \n\t" // y0, y1 +- "stxvd2x 41,%4, %2 \n\t" // y2, y3 ++ "stxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "stxvd2x 37, %10, %2 \n\t" // y2, y3 + +- "lxvd2x 54, 0, %9 \n\t" // a3[0], a3[1] +- "lxvd2x 55,%4, %9 \n\t" // a3[2], a3[3] ++ "lxvd2x 46, 0, %6 \n\t" // a3[0], a3[1] ++ "lxvd2x 47, %10, %6 \n\t" // a3[2], a3[3] + +- "addi %9, %9, 32 \n\t" +- "addi %2, %2, 32 \n\t" ++ "addi %6, %6, 32 \n\t" ++ "addi %2, %2, 32 \n\t" + +- "addic. %0 , %0 , -4 \n\t" +- "ble 2f \n\t" ++ "addic. %1, %1, -4 \n\t" ++ "ble 2f \n\t" + + +- "lxvd2x 40, 0, %2 \n\t" // y0, y1 +- "lxvd2x 41,%4, %2 \n\t" // y2, y3 +- +- "xvmaddadp 40, 48, 32 \n\t" +- "xvmaddadp 41, 49, 32 \n\t" ++ "lxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "lxvd2x 37, %10, %2 \n\t" // y2, y3 + +- "lxvd2x 48, 0, %6 \n\t" // a0[0], a0[1] +- "lxvd2x 49,%4, %6 \n\t" // a0[2], a0[3] ++ "xvmaddadp 36, 40, 32 \n\t" ++ "xvmaddadp 37, 41, 32 \n\t" + +- "xvmaddadp 40, 50, 33 \n\t" +- "addi %6, %6, 32 \n\t" +- "xvmaddadp 41, 51, 33 \n\t" ++ "lxvd2x 40, 0, %3 \n\t" // a0[0], a0[1] ++ "lxvd2x 41, %10, %3 \n\t" // a0[2], a0[3] + +- "lxvd2x 50, 0, %7 \n\t" // a1[0], a1[1] +- "lxvd2x 51,%4, %7 \n\t" // a1[2], a1[3] ++ "xvmaddadp 36, 42, 33 \n\t" ++ "addi %3, %3, 32 \n\t" ++ "xvmaddadp 37, 43, 33 \n\t" + +- "xvmaddadp 40, 52, 34 \n\t" +- "addi %7, %7, 32 \n\t" +- "xvmaddadp 41, 53, 34 \n\t" ++ "lxvd2x 42, 0, %4 \n\t" // a1[0], a1[1] ++ "lxvd2x 43, %10, %4 \n\t" // a1[2], a1[3] + +- "lxvd2x 52, 0, %8 \n\t" // a2[0], a2[1] +- "lxvd2x 53,%4, %8 \n\t" // a2[2], a2[3] ++ "xvmaddadp 36, 44, 34 \n\t" ++ "addi %4, %4, 32 \n\t" ++ "xvmaddadp 37, 45, 34 \n\t" + +- "xvmaddadp 40, 54, 35 \n\t" +- "addi %8, %8, 32 \n\t" +- "xvmaddadp 41, 55, 35 \n\t" ++ "lxvd2x 44, 0, %5 \n\t" // a2[0], a2[1] ++ "lxvd2x 45, %10, %5 \n\t" // a2[2], a2[3] + +- "stxvd2x 40, 0, %2 \n\t" // y0, y1 +- "stxvd2x 41,%4, %2 \n\t" // y2, y3 ++ "xvmaddadp 36, 46, 35 \n\t" ++ "addi %5, %5, 32 \n\t" ++ "xvmaddadp 37, 47, 35 \n\t" + +- "lxvd2x 54, 0, %9 \n\t" // a3[0], a3[1] +- "lxvd2x 55,%4, %9 \n\t" // a3[2], a3[3] ++ "stxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "stxvd2x 37, %10, %2 \n\t" // y2, y3 + +- "addi %9, %9, 32 \n\t" +- "addi %2, %2, 32 \n\t" ++ "lxvd2x 46, 0, %6 \n\t" // a3[0], a3[1] ++ "lxvd2x 47, %10, %6 \n\t" // a3[2], a3[3] + +- "addic. %0 , %0 , -4 \n\t" +- "ble 2f \n\t" ++ "addi %6, %6, 32 \n\t" ++ "addi %2, %2, 32 \n\t" + ++ "addic. %1, %1, -4 \n\t" ++ "ble 2f \n\t" + +- "lxvd2x 40, 0, %2 \n\t" // y0, y1 +- "lxvd2x 41,%4, %2 \n\t" // y2, y3 +- +- "xvmaddadp 40, 48, 32 \n\t" +- "xvmaddadp 41, 49, 32 \n\t" + +- "lxvd2x 48, 0, %6 \n\t" // a0[0], a0[1] +- "lxvd2x 49,%4, %6 \n\t" // a0[2], a0[3] ++ "lxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "lxvd2x 37, %10, %2 \n\t" // y2, y3 + +- "xvmaddadp 40, 50, 33 \n\t" +- "addi %6, %6, 32 \n\t" +- "xvmaddadp 41, 51, 33 \n\t" ++ "xvmaddadp 36, 40, 32 \n\t" ++ "xvmaddadp 37, 41, 32 \n\t" + +- "lxvd2x 50, 0, %7 \n\t" // a1[0], a1[1] +- "lxvd2x 51,%4, %7 \n\t" // a1[2], a1[3] ++ "lxvd2x 40, 0, %3 \n\t" // a0[0], a0[1] ++ "lxvd2x 41, %10, %3 \n\t" // a0[2], a0[3] + +- "xvmaddadp 40, 52, 34 \n\t" +- "addi %7, %7, 32 \n\t" +- "xvmaddadp 41, 53, 34 \n\t" ++ "xvmaddadp 36, 42, 33 \n\t" ++ "addi %3, %3, 32 \n\t" ++ "xvmaddadp 37, 43, 33 \n\t" + +- "lxvd2x 52, 0, %8 \n\t" // a2[0], a2[1] +- "lxvd2x 53,%4, %8 \n\t" // a2[2], a2[3] ++ "lxvd2x 42, 0, %4 \n\t" // a1[0], a1[1] ++ "lxvd2x 43, %10, %4 \n\t" // a1[2], a1[3] + +- "xvmaddadp 40, 54, 35 \n\t" +- "addi %8, %8, 32 \n\t" +- "xvmaddadp 41, 55, 35 \n\t" ++ "xvmaddadp 36, 44, 34 \n\t" ++ "addi %4, %4, 32 \n\t" ++ "xvmaddadp 37, 45, 34 \n\t" + +- "stxvd2x 40, 0, %2 \n\t" // y0, y1 +- "stxvd2x 41,%4, %2 \n\t" // y2, y3 ++ "lxvd2x 44, 0, %5 \n\t" // a2[0], a2[1] ++ "lxvd2x 45, %10, %5 \n\t" // a2[2], a2[3] + +- "lxvd2x 54, 0, %9 \n\t" // a3[0], a3[1] +- "lxvd2x 55,%4, %9 \n\t" // a3[2], a3[3] ++ "xvmaddadp 36, 46, 35 \n\t" ++ "addi %5, %5, 32 \n\t" ++ "xvmaddadp 37, 47, 35 \n\t" + +- "addi %9, %9, 32 \n\t" +- "addi %2, %2, 32 \n\t" ++ "stxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "stxvd2x 37, %10, %2 \n\t" // y2, y3 + +- "addic. %0 , %0 , -4 \n\t" +- "ble 2f \n\t" ++ "lxvd2x 46, 0, %6 \n\t" // a3[0], a3[1] ++ "lxvd2x 47, %10, %6 \n\t" // a3[2], a3[3] + ++ "addi %6, %6, 32 \n\t" ++ "addi %2, %2, 32 \n\t" + +- "lxvd2x 40, 0, %2 \n\t" // y0, y1 +- "lxvd2x 41,%4, %2 \n\t" // y2, y3 +- +- "xvmaddadp 40, 48, 32 \n\t" +- "xvmaddadp 41, 49, 32 \n\t" ++ "addic. %1, %1, -4 \n\t" ++ "ble 2f \n\t" + +- "lxvd2x 48, 0, %6 \n\t" // a0[0], a0[1] +- "lxvd2x 49,%4, %6 \n\t" // a0[2], a0[3] + +- "xvmaddadp 40, 50, 33 \n\t" +- "addi %6, %6, 32 \n\t" +- "xvmaddadp 41, 51, 33 \n\t" ++ "lxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "lxvd2x 37, %10, %2 \n\t" // y2, y3 + +- "lxvd2x 50, 0, %7 \n\t" // a1[0], a1[1] +- "lxvd2x 51,%4, %7 \n\t" // a1[2], a1[3] ++ "xvmaddadp 36, 40, 32 \n\t" ++ "xvmaddadp 37, 41, 32 \n\t" + +- "xvmaddadp 40, 52, 34 \n\t" +- "addi %7, %7, 32 \n\t" +- "xvmaddadp 41, 53, 34 \n\t" ++ "lxvd2x 40, 0, %3 \n\t" // a0[0], a0[1] ++ "lxvd2x 41, %10, %3 \n\t" // a0[2], a0[3] + +- "lxvd2x 52, 0, %8 \n\t" // a2[0], a2[1] +- "lxvd2x 53,%4, %8 \n\t" // a2[2], a2[3] ++ "xvmaddadp 36, 42, 33 \n\t" ++ "addi %3, %3, 32 \n\t" ++ "xvmaddadp 37, 43, 33 \n\t" + +- "xvmaddadp 40, 54, 35 \n\t" +- "addi %8, %8, 32 \n\t" +- "xvmaddadp 41, 55, 35 \n\t" ++ "lxvd2x 42, 0, %4 \n\t" // a1[0], a1[1] ++ "lxvd2x 43, %10, %4 \n\t" // a1[2], a1[3] + +- "stxvd2x 40, 0, %2 \n\t" // y0, y1 +- "stxvd2x 41,%4, %2 \n\t" // y2, y3 ++ "xvmaddadp 36, 44, 34 \n\t" ++ "addi %4, %4, 32 \n\t" ++ "xvmaddadp 37, 45, 34 \n\t" + +- "lxvd2x 54, 0, %9 \n\t" // a3[0], a3[1] +- "lxvd2x 55,%4, %9 \n\t" // a3[2], a3[3] ++ "lxvd2x 44, 0, %5 \n\t" // a2[0], a2[1] ++ "lxvd2x 45, %10, %5 \n\t" // a2[2], a2[3] + +- "addi %9, %9, 32 \n\t" +- "addi %2, %2, 32 \n\t" ++ "xvmaddadp 36, 46, 35 \n\t" ++ "addi %5, %5, 32 \n\t" ++ "xvmaddadp 37, 47, 35 \n\t" + +- "addic. %0 , %0 , -4 \n\t" +- "bgt 1b \n\t" ++ "stxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "stxvd2x 37, %10, %2 \n\t" // y2, y3 + +- "2: \n\t" ++ "lxvd2x 46, 0, %6 \n\t" // a3[0], a3[1] ++ "lxvd2x 47, %10, %6 \n\t" // a3[2], a3[3] + +- "lxvd2x 40, 0, %2 \n\t" // y0, y1 +- "lxvd2x 41,%4, %2 \n\t" // y2, y3 ++ "addi %6, %6, 32 \n\t" ++ "addi %2, %2, 32 \n\t" + +- "xvmaddadp 40, 48, 32 \n\t" +- "xvmaddadp 41, 49, 32 \n\t" ++ "addic. %1, %1, -4 \n\t" ++ "bgt 1b \n" + +- "xvmaddadp 40, 50, 33 \n\t" +- "xvmaddadp 41, 51, 33 \n\t" ++ "2: \n\t" + +- "xvmaddadp 40, 52, 34 \n\t" +- "xvmaddadp 41, 53, 34 \n\t" ++ "lxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "lxvd2x 37, %10, %2 \n\t" // y2, y3 + +- "xvmaddadp 40, 54, 35 \n\t" +- "xvmaddadp 41, 55, 35 \n\t" ++ "xvmaddadp 36, 40, 32 \n\t" ++ "xvmaddadp 37, 41, 32 \n\t" + +- "stxvd2x 40, 0, %2 \n\t" // y0, y1 +- "stxvd2x 41,%4, %2 \n\t" // y2, y3 ++ "xvmaddadp 36, 42, 33 \n\t" ++ "xvmaddadp 37, 43, 33 \n\t" + +- : +- : +- "r" (i), // 0 +- "r" (x), // 1 +- "r" (y1), // 2 +- "r" (o8), // 3 +- "r" (o16), // 4 +- "r" (o24), // 5 +- "r" (a0), // 6 +- "r" (a1), // 7 +- "r" (a2), // 8 +- "r" (a3), // 9 +- "r" (pre) // 10 +- : "cr0", "%0", "%2" , "%6", "%7", "%8", "%9", "memory" +- ); ++ "xvmaddadp 36, 44, 34 \n\t" ++ "xvmaddadp 37, 45, 34 \n\t" + +-} ++ "xvmaddadp 36, 46, 35 \n\t" ++ "xvmaddadp 37, 47, 35 \n\t" + ++ "stxvd2x 36, 0, %2 \n\t" // y0, y1 ++ "stxvd2x 37, %10, %2 \n" // y2, y3 + ++ "#n=%1 ap=%11 lda=%12 x=%7=%9 y=%0=%2 alpha=%8 o16=%10\n" ++ "#a0=%3 a1=%4 a2=%5 a3=%6" ++ : ++ "=m" (*y), ++ "+r" (n), // 1 ++ "+b" (y), // 2 ++ "=b" (a0), // 3 ++ "=b" (a1), // 4 ++ "=&b" (a2), // 5 ++ "=&b" (a3) // 6 ++ : ++ "m" (*x), ++ "d" (alpha), // 8 ++ "r" (x), // 9 ++ "b" (16), // 10 ++ "3" (ap), // 11 ++ "4" (lda) // 12 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47" ++ ); ++} +diff --git a/kernel/power/drot.c b/kernel/power/drot.c +index c93f69b12..3e107486f 100644 +--- a/kernel/power/drot.c ++++ b/kernel/power/drot.c +@@ -46,7 +46,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_16 + +-static void drot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) ++static void drot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT c, FLOAT s) + { + + BLASLONG i=0; +@@ -56,8 +56,6 @@ static void drot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) + FLOAT y00, y01, y02, y03; + FLOAT *x1=x; + FLOAT *y1=y; +- FLOAT c1=*c; +- FLOAT s1=*s; + + while ( i 0 ) + { +- c1[0]=c; +- c1[1]=c; +- c1[2]=c; +- c1[3]=c; +- s1[0]=s; +- s1[1]=s; +- s1[2]=s; +- s1[3]=s; +- drot_kernel_16(n1, x1, y1, c1, s1); ++ drot_kernel_16(n1, x1, y1, c, s); + i=n1; + } + +diff --git a/kernel/power/drot_microk_power8.c b/kernel/power/drot_microk_power8.c +index 4444ac7eb..016b7764d 100644 +--- a/kernel/power/drot_microk_power8.c ++++ b/kernel/power/drot_microk_power8.c +@@ -38,174 +38,176 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_16 1 + +-static void drot_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) __attribute__ ((noinline)); +- +-static void drot_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) ++static void drot_kernel_16 (long n, double *x, double *y, double c, double s) + { ++ __vector double t0; ++ __vector double t1; ++ __vector double t2; ++ __vector double t3; ++ __vector double t4; ++ __vector double t5; ++ __vector double t6; ++ __vector double t7; + ++ __asm__ ++ ( ++ "xxspltd 36, %x13, 0 \n\t" // load c to both dwords ++ "xxspltd 37, %x14, 0 \n\t" // load s to both dwords + +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- FLOAT *x1=x; +- FLOAT *y1=y; +- FLOAT *x2=x+1; +- FLOAT *y2=y+1; +- +- __asm__ __volatile__ +- ( +- +- "lxsdx 36 , %5, %3 \n\t" // load c +- "lxsdx 37 , %5, %4 \n\t" // load s +- "addi %8 , %8, -8 \n\t" +- "addi %9 , %9, -8 \n\t" +- +- "xxspltd 36 , 36, 0 \n\t" +- "xxspltd 37 , 37, 0 \n\t" +- +- "lxvd2x 32, 0, %1 \n\t" // load x +- "lxvd2x 33, %5, %1 \n\t" +- "lxvd2x 34, %6, %1 \n\t" +- "lxvd2x 35, %7, %1 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" // load y +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- +- "addi %1, %1, 64 \n\t" +- "addi %2, %2, 64 \n\t" +- +- "addic. %0 , %0 , -8 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "xvmuldp 48, 32, 36 \n\t" // c * x +- "xvmuldp 49, 33, 36 \n\t" +- "xvmuldp 50, 34, 36 \n\t" +- "xvmuldp 51, 35, 36 \n\t" +- +- "xvmuldp 56, 40, 36 \n\t" // c * y +- "xvmuldp 57, 41, 36 \n\t" +- "xvmuldp 58, 42, 36 \n\t" +- "xvmuldp 59, 43, 36 \n\t" +- +- "xvmuldp 52, 32, 37 \n\t" // s * x +- "xvmuldp 53, 33, 37 \n\t" +- +- "lxvd2x 32, 0, %1 \n\t" // load x +- "lxvd2x 33, %5, %1 \n\t" +- +- "xvmuldp 54, 34, 37 \n\t" +- "xvmuldp 55, 35, 37 \n\t" +- +- "lxvd2x 34, %6, %1 \n\t" +- "lxvd2x 35, %7, %1 \n\t" +- +- "xvmuldp 60, 40, 37 \n\t" // s * y +- "xvmuldp 61, 41, 37 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" // load y +- "lxvd2x 41, %5, %2 \n\t" +- +- "xvmuldp 62, 42, 37 \n\t" +- "xvmuldp 63, 43, 37 \n\t" +- +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- +- "xvadddp 48, 48 , 60 \n\t" // c * x + s * y +- "xvadddp 49, 49 , 61 \n\t" // c * x + s * y +- +- "addi %1, %1, 64 \n\t" +- "addi %2, %2, 64 \n\t" +- +- "xvadddp 50, 50 , 62 \n\t" // c * x + s * y +- "xvadddp 51, 51 , 63 \n\t" // c * x + s * y +- +- "xvsubdp 56, 56 , 52 \n\t" // c * y - s * x +- "xvsubdp 57, 57 , 53 \n\t" // c * y - s * x +- "xvsubdp 58, 58 , 54 \n\t" // c * y - s * x +- "xvsubdp 59, 59 , 55 \n\t" // c * y - s * x +- +- "stxvd2x 48, 0, %8 \n\t" // store x +- "stxvd2x 49, %5, %8 \n\t" +- "stxvd2x 50, %6, %8 \n\t" +- "stxvd2x 51, %7, %8 \n\t" +- +- "stxvd2x 56, 0, %9 \n\t" // store y +- "stxvd2x 57, %5, %9 \n\t" +- "stxvd2x 58, %6, %9 \n\t" +- "stxvd2x 59, %7, %9 \n\t" +- +- "addi %8, %8, 64 \n\t" +- "addi %9, %9, 64 \n\t" +- +- "addic. %0 , %0 , -8 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "xvmuldp 48, 32, 36 \n\t" // c * x +- "xvmuldp 49, 33, 36 \n\t" +- "xvmuldp 50, 34, 36 \n\t" +- "xvmuldp 51, 35, 36 \n\t" +- +- "xvmuldp 56, 40, 36 \n\t" // c * y +- "xvmuldp 57, 41, 36 \n\t" +- "xvmuldp 58, 42, 36 \n\t" +- "xvmuldp 59, 43, 36 \n\t" +- +- "xvmuldp 52, 32, 37 \n\t" // s * x +- "xvmuldp 53, 33, 37 \n\t" +- "xvmuldp 54, 34, 37 \n\t" +- "xvmuldp 55, 35, 37 \n\t" +- +- "xvmuldp 60, 40, 37 \n\t" // s * y +- "xvmuldp 61, 41, 37 \n\t" +- "xvmuldp 62, 42, 37 \n\t" +- "xvmuldp 63, 43, 37 \n\t" +- +- "xvadddp 48, 48 , 60 \n\t" // c * x + s * y +- "xvadddp 49, 49 , 61 \n\t" // c * x + s * y +- "xvadddp 50, 50 , 62 \n\t" // c * x + s * y +- "xvadddp 51, 51 , 63 \n\t" // c * x + s * y +- +- "xvsubdp 56, 56 , 52 \n\t" // c * y - s * x +- "xvsubdp 57, 57 , 53 \n\t" // c * y - s * x +- "xvsubdp 58, 58 , 54 \n\t" // c * y - s * x +- "xvsubdp 59, 59 , 55 \n\t" // c * y - s * x +- +- "stxvd2x 48, 0, %8 \n\t" // store x +- "stxvd2x 49, %5, %8 \n\t" +- "stxvd2x 50, %6, %8 \n\t" +- "stxvd2x 51, %7, %8 \n\t" ++ "lxvd2x 32, 0, %3 \n\t" // load x ++ "lxvd2x 33, %15, %3 \n\t" ++ "lxvd2x 34, %16, %3 \n\t" ++ "lxvd2x 35, %17, %3 \n\t" + +- "stxvd2x 56, 0, %9 \n\t" // store y +- "stxvd2x 57, %5, %9 \n\t" +- "stxvd2x 58, %6, %9 \n\t" +- "stxvd2x 59, %7, %9 \n\t" ++ "lxvd2x 48, 0, %4 \n\t" // load y ++ "lxvd2x 49, %15, %4 \n\t" ++ "lxvd2x 50, %16, %4 \n\t" ++ "lxvd2x 51, %17, %4 \n\t" + ++ "addi %3, %3, 64 \n\t" ++ "addi %4, %4, 64 \n\t" + ++ "addic. %2, %2, -8 \n\t" ++ "ble 2f \n\t" + +- : +- : +- "r" (i), // 0 +- "r" (x1), // 1 +- "r" (y1), // 2 +- "r" (c), // 3 +- "r" (s), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (x2), // 8 +- "r" (y2) // 9 +- : "cr0", "%0", "%1" , "%2", "%8", "%9", "memory" +- ); ++ ".p2align 5 \n" ++ "1: \n\t" + +-} ++ "xvmuldp 40, 32, 36 \n\t" // c * x ++ "xvmuldp 41, 33, 36 \n\t" ++ "xvmuldp 42, 34, 36 \n\t" ++ "xvmuldp 43, 35, 36 \n\t" + ++ "xvmuldp %x5, 48, 36 \n\t" // c * y ++ "xvmuldp %x6, 49, 36 \n\t" ++ "xvmuldp %x7, 50, 36 \n\t" ++ "xvmuldp %x8, 51, 36 \n\t" + ++ "xvmuldp 44, 32, 37 \n\t" // s * x ++ "xvmuldp 45, 33, 37 \n\t" ++ ++ "lxvd2x 32, 0, %3 \n\t" // load x ++ "lxvd2x 33, %15, %3 \n\t" ++ ++ "xvmuldp 46, 34, 37 \n\t" ++ "xvmuldp 47, 35, 37 \n\t" ++ ++ "lxvd2x 34, %16, %3 \n\t" ++ "lxvd2x 35, %17, %3 \n\t" ++ ++ "xvmuldp %x9, 48, 37 \n\t" // s * y ++ "xvmuldp %x10, 49, 37 \n\t" ++ ++ "lxvd2x 48, 0, %4 \n\t" // load y ++ "lxvd2x 49, %15, %4 \n\t" ++ ++ "xvmuldp %x11, 50, 37 \n\t" ++ "xvmuldp %x12, 51, 37 \n\t" ++ ++ "lxvd2x 50, %16, %4 \n\t" ++ "lxvd2x 51, %17, %4 \n\t" ++ ++ "xvadddp 40, 40, %x9 \n\t" // c * x + s * y ++ "xvadddp 41, 41, %x10 \n\t" // c * x + s * y ++ ++ "addi %3, %3, -64 \n\t" ++ "addi %4, %4, -64 \n\t" ++ ++ "xvadddp 42, 42, %x11 \n\t" // c * x + s * y ++ "xvadddp 43, 43, %x12 \n\t" // c * x + s * y ++ ++ "xvsubdp %x5, %x5, 44 \n\t" // c * y - s * x ++ "xvsubdp %x6, %x6, 45 \n\t" // c * y - s * x ++ "xvsubdp %x7, %x7, 46 \n\t" // c * y - s * x ++ "xvsubdp %x8, %x8, 47 \n\t" // c * y - s * x ++ ++ "stxvd2x 40, 0, %3 \n\t" // store x ++ "stxvd2x 41, %15, %3 \n\t" ++ "stxvd2x 42, %16, %3 \n\t" ++ "stxvd2x 43, %17, %3 \n\t" ++ ++ "stxvd2x %x5, 0, %4 \n\t" // store y ++ "stxvd2x %x6, %15, %4 \n\t" ++ "stxvd2x %x7, %16, %4 \n\t" ++ "stxvd2x %x8, %17, %4 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ "addi %4, %4, 128 \n\t" ++ ++ "addic. %2, %2, -8 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmuldp 40, 32, 36 \n\t" // c * x ++ "xvmuldp 41, 33, 36 \n\t" ++ "xvmuldp 42, 34, 36 \n\t" ++ "xvmuldp 43, 35, 36 \n\t" ++ ++ "xvmuldp %x5, 48, 36 \n\t" // c * y ++ "xvmuldp %x6, 49, 36 \n\t" ++ "xvmuldp %x7, 50, 36 \n\t" ++ "xvmuldp %x8, 51, 36 \n\t" ++ ++ "xvmuldp 44, 32, 37 \n\t" // s * x ++ "xvmuldp 45, 33, 37 \n\t" ++ "xvmuldp 46, 34, 37 \n\t" ++ "xvmuldp 47, 35, 37 \n\t" ++ ++ "xvmuldp %x9, 48, 37 \n\t" // s * y ++ "xvmuldp %x10, 49, 37 \n\t" ++ "xvmuldp %x11, 50, 37 \n\t" ++ "xvmuldp %x12, 51, 37 \n\t" ++ ++ "addi %3, %3, -64 \n\t" ++ "addi %4, %4, -64 \n\t" ++ ++ "xvadddp 40, 40, %x9 \n\t" // c * x + s * y ++ "xvadddp 41, 41, %x10 \n\t" // c * x + s * y ++ "xvadddp 42, 42, %x11 \n\t" // c * x + s * y ++ "xvadddp 43, 43, %x12 \n\t" // c * x + s * y ++ ++ "xvsubdp %x5, %x5, 44 \n\t" // c * y - s * x ++ "xvsubdp %x6, %x6, 45 \n\t" // c * y - s * x ++ "xvsubdp %x7, %x7, 46 \n\t" // c * y - s * x ++ "xvsubdp %x8, %x8, 47 \n\t" // c * y - s * x ++ ++ "stxvd2x 40, 0, %3 \n\t" // store x ++ "stxvd2x 41, %15, %3 \n\t" ++ "stxvd2x 42, %16, %3 \n\t" ++ "stxvd2x 43, %17, %3 \n\t" ++ ++ "stxvd2x %x5, 0, %4 \n\t" // store y ++ "stxvd2x %x6, %15, %4 \n\t" ++ "stxvd2x %x7, %16, %4 \n\t" ++ "stxvd2x %x8, %17, %4 \n" ++ ++ "#n=%2 x=%0=%3 y=%1=%4 c=%13 s=%14 o16=%15 o32=%16 o48=%17\n" ++ "#t0=%x5 t1=%x6 t2=%x7 t3=%x8 t4=%x9 t5=%x10 t6=%x11 t7=%x12" ++ : ++ "+m" (*x), ++ "+m" (*y), ++ "+r" (n), // 2 ++ "+b" (x), // 3 ++ "+b" (y), // 4 ++ "=wa" (t0), // 5 ++ "=wa" (t1), // 6 ++ "=wa" (t2), // 7 ++ "=wa" (t3), // 8 ++ "=wa" (t4), // 9 ++ "=wa" (t5), // 10 ++ "=wa" (t6), // 11 ++ "=wa" (t7) // 12 ++ : ++ "d" (c), // 13 ++ "d" (s), // 14 ++ "b" (16), // 15 ++ "b" (32), // 16 ++ "b" (48) // 17 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++} +diff --git a/kernel/power/dscal.c b/kernel/power/dscal.c +index c62a56315..f32dc4bad 100644 +--- a/kernel/power/dscal.c ++++ b/kernel/power/dscal.c +@@ -41,11 +41,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #if !defined(HAVE_KERNEL_8) + +-static void dscal_kernel_8( BLASLONG n, FLOAT *da , FLOAT *x ) ++static void dscal_kernel_8 (BLASLONG n, FLOAT *x, FLOAT alpha) + { + + BLASLONG i; +- FLOAT alpha = *da; + + for( i=0; i 0 ) + { +- FLOAT alpha[2]; +- alpha[0]=da; +- alpha[1]=da; +- dscal_kernel_8_zero(n1 , alpha , x); ++ dscal_kernel_8_zero(n1, x); + j=n1; + } + +@@ -123,10 +119,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS + BLASLONG n1 = n & -16; + if ( n1 > 0 ) + { +- FLOAT alpha[2]; +- alpha[0]=da; +- alpha[1]=da; +- dscal_kernel_8(n1 , alpha , x); ++ dscal_kernel_8(n1, x, da); + j=n1; + } + while(j < n) +diff --git a/kernel/power/dscal_microk_power8.c b/kernel/power/dscal_microk_power8.c +index d90c3d80c..04898eb3d 100644 +--- a/kernel/power/dscal_microk_power8.c ++++ b/kernel/power/dscal_microk_power8.c +@@ -35,185 +35,149 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_8 1 + +-static void dscal_kernel_8( BLASLONG n, FLOAT *alpha, FLOAT *x) __attribute__ ((noinline)); +- +-static void dscal_kernel_8( BLASLONG n, FLOAT *alpha, FLOAT *x) ++static void dscal_kernel_8 (long n, double *x, double alpha) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *x2=x+1; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- +- "lxsdx 33, 0, %3 \n\t" +- "xxspltd 32, 33, 0 \n\t" +- "addi %1, %1, -8 \n\t" +- +- "dcbt %2, %4 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2, %4 \n\t" +- +- "xvmuldp 48, 40, 32 \n\t" +- "xvmuldp 49, 41, 32 \n\t" +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "xvmuldp 50, 42, 32 \n\t" +- "xvmuldp 51, 43, 32 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "xvmuldp 52, 44, 32 \n\t" +- "xvmuldp 53, 45, 32 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "xvmuldp 54, 46, 32 \n\t" +- "xvmuldp 55, 47, 32 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "stxvd2x 48, 0, %1 \n\t" +- "stxvd2x 49, %5, %1 \n\t" +- "stxvd2x 50, %6, %1 \n\t" +- "stxvd2x 51, %7, %1 \n\t" +- "stxvd2x 52, %8, %1 \n\t" +- "stxvd2x 53, %9, %1 \n\t" +- "stxvd2x 54, %10, %1 \n\t" +- "stxvd2x 55, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "xvmuldp 48, 40, 32 \n\t" +- "xvmuldp 49, 41, 32 \n\t" +- "xvmuldp 50, 42, 32 \n\t" +- "xvmuldp 51, 43, 32 \n\t" +- "xvmuldp 52, 44, 32 \n\t" +- "xvmuldp 53, 45, 32 \n\t" +- "xvmuldp 54, 46, 32 \n\t" +- "xvmuldp 55, 47, 32 \n\t" +- +- "stxvd2x 48, 0, %1 \n\t" +- "stxvd2x 49, %5, %1 \n\t" +- "stxvd2x 50, %6, %1 \n\t" +- "stxvd2x 51, %7, %1 \n\t" +- "stxvd2x 52, %8, %1 \n\t" +- "stxvd2x 53, %9, %1 \n\t" +- "stxvd2x 54, %10, %1 \n\t" +- "stxvd2x 55, %11, %1 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (x2), // 1 +- "r" (x1), // 2 +- "r" (alpha), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "memory" +- ); +- +-} +- +- +-static void dscal_kernel_8_zero( BLASLONG n, FLOAT *alpha, FLOAT *x) __attribute__ ((noinline)); +- +-static void dscal_kernel_8_zero( BLASLONG n, FLOAT *alpha, FLOAT *x) ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ ++ "xxspltd %x3, %x3, 0 \n\t" ++ ++ "lxvd2x 32, 0, %2 \n\t" ++ "lxvd2x 33, %4, %2 \n\t" ++ "lxvd2x 34, %5, %2 \n\t" ++ "lxvd2x 35, %6, %2 \n\t" ++ "lxvd2x 36, %7, %2 \n\t" ++ "lxvd2x 37, %8, %2 \n\t" ++ "lxvd2x 38, %9, %2 \n\t" ++ "lxvd2x 39, %10, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvmuldp 40, 32, %x3 \n\t" ++ "xvmuldp 41, 33, %x3 \n\t" ++ "lxvd2x 32, 0, %2 \n\t" ++ "lxvd2x 33, %4, %2 \n\t" ++ "xvmuldp 42, 34, %x3 \n\t" ++ "xvmuldp 43, 35, %x3 \n\t" ++ "lxvd2x 34, %5, %2 \n\t" ++ "lxvd2x 35, %6, %2 \n\t" ++ "xvmuldp 44, 36, %x3 \n\t" ++ "xvmuldp 45, 37, %x3 \n\t" ++ "lxvd2x 36, %7, %2 \n\t" ++ "lxvd2x 37, %8, %2 \n\t" ++ "xvmuldp 46, 38, %x3 \n\t" ++ "xvmuldp 47, 39, %x3 \n\t" ++ "lxvd2x 38, %9, %2 \n\t" ++ "lxvd2x 39, %10, %2 \n\t" ++ ++ "addi %2, %2, -128 \n\t" ++ ++ "stxvd2x 40, 0, %2 \n\t" ++ "stxvd2x 41, %4, %2 \n\t" ++ "stxvd2x 42, %5, %2 \n\t" ++ "stxvd2x 43, %6, %2 \n\t" ++ "stxvd2x 44, %7, %2 \n\t" ++ "stxvd2x 45, %8, %2 \n\t" ++ "stxvd2x 46, %9, %2 \n\t" ++ "stxvd2x 47, %10, %2 \n\t" ++ ++ "addi %2, %2, 256 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmuldp 40, 32, %x3 \n\t" ++ "xvmuldp 41, 33, %x3 \n\t" ++ "xvmuldp 42, 34, %x3 \n\t" ++ "xvmuldp 43, 35, %x3 \n\t" ++ ++ "addi %2, %2, -128 \n\t" ++ ++ "xvmuldp 44, 36, %x3 \n\t" ++ "xvmuldp 45, 37, %x3 \n\t" ++ "xvmuldp 46, 38, %x3 \n\t" ++ "xvmuldp 47, 39, %x3 \n\t" ++ ++ "stxvd2x 40, 0, %2 \n\t" ++ "stxvd2x 41, %4, %2 \n\t" ++ "stxvd2x 42, %5, %2 \n\t" ++ "stxvd2x 43, %6, %2 \n\t" ++ "stxvd2x 44, %7, %2 \n\t" ++ "stxvd2x 45, %8, %2 \n\t" ++ "stxvd2x 46, %9, %2 \n\t" ++ "stxvd2x 47, %10, %2 \n" ++ ++ "#n=%1 alpha=%3 x=%0=%2 o16=%4 o32=%5 o48=%6 o64=%7 o80=%8 o96=%9 o112=%10" ++ : ++ "+m" (*x), ++ "+r" (n), // 1 ++ "+b" (x) // 2 ++ : ++ "d" (alpha), // 3 ++ "b" (16), // 4 ++ "b" (32), // 5 ++ "b" (48), // 6 ++ "b" (64), // 7 ++ "b" (80), // 8 ++ "b" (96), // 9 ++ "b" (112) // 10 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47" ++ ); ++} ++ ++ ++static void dscal_kernel_8_zero (long n, double *x) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *x2=x+1; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- +- "xxlxor 32 , 32 , 32 \n\t" +- "addi %1, %1, -8 \n\t" +- +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "stxvd2x 32, 0, %1 \n\t" +- "stxvd2x 32, %5, %1 \n\t" +- "stxvd2x 32, %6, %1 \n\t" +- "stxvd2x 32, %7, %1 \n\t" +- "stxvd2x 32, %8, %1 \n\t" +- "stxvd2x 32, %9, %1 \n\t" +- "stxvd2x 32, %10, %1 \n\t" +- "stxvd2x 32, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (x2), // 1 +- "r" (x1), // 2 +- "r" (alpha), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "memory" +- ); +- +-} +- +- ++ __vector double t0; ++ ++ __asm__ ++ ( ++ "xxlxor %x3, %x3, %x3 \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "stxvd2x %x3, 0, %2 \n\t" ++ "stxvd2x %x3, %4, %2 \n\t" ++ "stxvd2x %x3, %5, %2 \n\t" ++ "stxvd2x %x3, %6, %2 \n\t" ++ "stxvd2x %x3, %7, %2 \n\t" ++ "stxvd2x %x3, %8, %2 \n\t" ++ "stxvd2x %x3, %9, %2 \n\t" ++ "stxvd2x %x3, %10, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "bgt 1b \n" ++ ++ "#n=%1 x=%0=%2 t0=%x3 o16=%4 o32=%5 o48=%6 o64=%7 o80=%8 o96=%9 o112=%10" ++ : ++ "=m" (*x), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "=wa" (t0) // 3 ++ : ++ "b" (16), // 4 ++ "b" (32), // 5 ++ "b" (48), // 6 ++ "b" (64), // 7 ++ "b" (80), // 8 ++ "b" (96), // 9 ++ "b" (112) // 10 ++ : ++ "cr0" ++ ); ++} +diff --git a/kernel/power/dswap_microk_power8.c b/kernel/power/dswap_microk_power8.c +index 77747c3b9..31eff3449 100644 +--- a/kernel/power/dswap_microk_power8.c ++++ b/kernel/power/dswap_microk_power8.c +@@ -35,146 +35,124 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_32 1 + +-static void dswap_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) __attribute__ ((noinline)); +- +-static void dswap_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) ++static void dswap_kernel_32 (long n, double *x, double *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- FLOAT *x2=x+1; +- FLOAT *y2=y+1; +- BLASLONG pre = 384; +- BLASLONG alpha=0; +- +- __asm__ __volatile__ +- ( +- +- "addi %3, %3, -8 \n\t" +- "addi %4, %4, -8 \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "lxvd2x 32, 0, %2 \n\t" +- "lxvd2x 33, %5, %2 \n\t" +- "lxvd2x 34, %6, %2 \n\t" +- "lxvd2x 35, %7, %2 \n\t" +- "lxvd2x 36, %8, %2 \n\t" +- "lxvd2x 37, %9, %2 \n\t" +- "lxvd2x 38, %10, %2 \n\t" +- "lxvd2x 39, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvd2x 48, 0, %1 \n\t" +- "lxvd2x 49, %5, %1 \n\t" +- "lxvd2x 50, %6, %1 \n\t" +- "lxvd2x 51, %7, %1 \n\t" +- "lxvd2x 52, %8, %1 \n\t" +- "lxvd2x 53, %9, %1 \n\t" +- "lxvd2x 54, %10, %1 \n\t" +- "lxvd2x 55, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "lxvd2x 56, 0, %1 \n\t" +- "lxvd2x 57, %5, %1 \n\t" +- "lxvd2x 58, %6, %1 \n\t" +- "lxvd2x 59, %7, %1 \n\t" +- "lxvd2x 60, %8, %1 \n\t" +- "lxvd2x 61, %9, %1 \n\t" +- "lxvd2x 62, %10, %1 \n\t" +- "lxvd2x 63, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "stxvd2x 32, 0, %3 \n\t" +- "stxvd2x 33, %5, %3 \n\t" +- "stxvd2x 34, %6, %3 \n\t" +- "stxvd2x 35, %7, %3 \n\t" +- "stxvd2x 36, %8, %3 \n\t" +- "stxvd2x 37, %9, %3 \n\t" +- "stxvd2x 38, %10, %3 \n\t" +- "stxvd2x 39, %11, %3 \n\t" +- +- "addi %3, %3, 128 \n\t" +- +- "stxvd2x 40, 0, %3 \n\t" +- "stxvd2x 41, %5, %3 \n\t" +- "stxvd2x 42, %6, %3 \n\t" +- "stxvd2x 43, %7, %3 \n\t" +- "stxvd2x 44, %8, %3 \n\t" +- "stxvd2x 45, %9, %3 \n\t" +- "stxvd2x 46, %10, %3 \n\t" +- "stxvd2x 47, %11, %3 \n\t" +- +- "addi %3, %3, 128 \n\t" +- +- "stxvd2x 48, 0, %4 \n\t" +- "stxvd2x 49, %5, %4 \n\t" +- "stxvd2x 50, %6, %4 \n\t" +- "stxvd2x 51, %7, %4 \n\t" +- "stxvd2x 52, %8, %4 \n\t" +- "stxvd2x 53, %9, %4 \n\t" +- "stxvd2x 54, %10, %4 \n\t" +- "stxvd2x 55, %11, %4 \n\t" +- +- "addi %4, %4, 128 \n\t" +- +- "stxvd2x 56, 0, %4 \n\t" +- "stxvd2x 57, %5, %4 \n\t" +- "stxvd2x 58, %6, %4 \n\t" +- "stxvd2x 59, %7, %4 \n\t" +- "stxvd2x 60, %8, %4 \n\t" +- "stxvd2x 61, %9, %4 \n\t" +- "stxvd2x 62, %10, %4 \n\t" +- "stxvd2x 63, %11, %4 \n\t" +- +- "addi %4, %4, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (y1), // 1 +- "r" (x1), // 2 +- "r" (y2), // 3 +- "r" (x2), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "%3", "%4", "memory" +- ); +- +-} +- +- ++ __asm__ ++ ( ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "lxvd2x 32, 0, %4 \n\t" ++ "lxvd2x 33, %5, %4 \n\t" ++ "lxvd2x 34, %6, %4 \n\t" ++ "lxvd2x 35, %7, %4 \n\t" ++ "lxvd2x 36, %8, %4 \n\t" ++ "lxvd2x 37, %9, %4 \n\t" ++ "lxvd2x 38, %10, %4 \n\t" ++ "lxvd2x 39, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ ++ "lxvd2x 40, 0, %4 \n\t" ++ "lxvd2x 41, %5, %4 \n\t" ++ "lxvd2x 42, %6, %4 \n\t" ++ "lxvd2x 43, %7, %4 \n\t" ++ "lxvd2x 44, %8, %4 \n\t" ++ "lxvd2x 45, %9, %4 \n\t" ++ "lxvd2x 46, %10, %4 \n\t" ++ "lxvd2x 47, %11, %4 \n\t" ++ ++ "addi %4, %4, -128 \n\t" ++ ++ "lxvd2x 48, 0, %3 \n\t" ++ "lxvd2x 49, %5, %3 \n\t" ++ "lxvd2x 50, %6, %3 \n\t" ++ "lxvd2x 51, %7, %3 \n\t" ++ "lxvd2x 0, %8, %3 \n\t" ++ "lxvd2x 1, %9, %3 \n\t" ++ "lxvd2x 2, %10, %3 \n\t" ++ "lxvd2x 3, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "lxvd2x 4, 0, %3 \n\t" ++ "lxvd2x 5, %5, %3 \n\t" ++ "lxvd2x 6, %6, %3 \n\t" ++ "lxvd2x 7, %7, %3 \n\t" ++ "lxvd2x 8, %8, %3 \n\t" ++ "lxvd2x 9, %9, %3 \n\t" ++ "lxvd2x 10, %10, %3 \n\t" ++ "lxvd2x 11, %11, %3 \n\t" ++ ++ "addi %3, %3, -128 \n\t" ++ ++ "stxvd2x 32, 0, %3 \n\t" ++ "stxvd2x 33, %5, %3 \n\t" ++ "stxvd2x 34, %6, %3 \n\t" ++ "stxvd2x 35, %7, %3 \n\t" ++ "stxvd2x 36, %8, %3 \n\t" ++ "stxvd2x 37, %9, %3 \n\t" ++ "stxvd2x 38, %10, %3 \n\t" ++ "stxvd2x 39, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvd2x 40, 0, %3 \n\t" ++ "stxvd2x 41, %5, %3 \n\t" ++ "stxvd2x 42, %6, %3 \n\t" ++ "stxvd2x 43, %7, %3 \n\t" ++ "stxvd2x 44, %8, %3 \n\t" ++ "stxvd2x 45, %9, %3 \n\t" ++ "stxvd2x 46, %10, %3 \n\t" ++ "stxvd2x 47, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvd2x 48, 0, %4 \n\t" ++ "stxvd2x 49, %5, %4 \n\t" ++ "stxvd2x 50, %6, %4 \n\t" ++ "stxvd2x 51, %7, %4 \n\t" ++ "stxvd2x 0, %8, %4 \n\t" ++ "stxvd2x 1, %9, %4 \n\t" ++ "stxvd2x 2, %10, %4 \n\t" ++ "stxvd2x 3, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ ++ "stxvd2x 4, 0, %4 \n\t" ++ "stxvd2x 5, %5, %4 \n\t" ++ "stxvd2x 6, %6, %4 \n\t" ++ "stxvd2x 7, %7, %4 \n\t" ++ "stxvd2x 8, %8, %4 \n\t" ++ "stxvd2x 9, %9, %4 \n\t" ++ "stxvd2x 10, %10, %4 \n\t" ++ "stxvd2x 11, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ ++ "addic. %2, %2, -32 \n\t" ++ "bgt 1b \n" ++ ++ "#n=%2 x=%0=%3 y=%1=%4 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11" ++ : ++ "+m" (*x), ++ "+m" (*y), ++ "+r" (n), // 2 ++ "+b" (x), // 3 ++ "+b" (y) // 4 ++ : ++ "b" (16), // 5 ++ "b" (32), // 6 ++ "b" (48), // 7 ++ "b" (64), // 8 ++ "b" (80), // 9 ++ "b" (96), // 10 ++ "b" (112) // 11 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51","vs0","vs1","vs2","vs3", ++ "vs4","vs5","vs6","vs7","vs8","vs9","vs10","vs11" ++ ); ++} +diff --git a/kernel/power/sasum.c b/kernel/power/sasum.c +index 43311f2ba..fb10b1d27 100644 +--- a/kernel/power/sasum.c ++++ b/kernel/power/sasum.c +@@ -38,7 +38,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #if defined(DOUBLE) + +-#define ABS fabs ++#error supports float only + + #else + +@@ -53,7 +53,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_32 + +-static void sasum_kernel_32(BLASLONG n, FLOAT *x1, FLOAT *svec) ++static FLOAT sasum_kernel_32(BLASLONG n, FLOAT *x1) + { + + BLASLONG i=0; +@@ -92,11 +92,7 @@ static void sasum_kernel_32(BLASLONG n, FLOAT *x1, FLOAT *svec) + + } + +- svec[0] = sum0+sum1+sum2+sum3; +- svec[1] = 0.0; +- svec[2] = 0.0; +- svec[3] = 0.0; +- ++ return sum0+sum1+sum2+sum3; + } + + #endif +@@ -105,7 +101,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) + { + BLASLONG i=0; + FLOAT sumf = 0.0; +- FLOAT svec[4] __attribute__ ((aligned (16)));; + BLASLONG n1; + + if (n <= 0 || inc_x <= 0) return(sumf); +@@ -117,8 +112,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) + if ( n1 > 0 ) + { + +- sasum_kernel_32(n1, x, svec); +- sumf = svec[0] + svec[1]+svec[2]+svec[3]; ++ sumf = sasum_kernel_32(n1, x); + i=n1; + } + +diff --git a/kernel/power/sasum_microk_power8.c b/kernel/power/sasum_microk_power8.c +index 847fffe04..25a969d62 100644 +--- a/kernel/power/sasum_microk_power8.c ++++ b/kernel/power/sasum_microk_power8.c +@@ -34,144 +34,145 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **************************************************************************************/ + + #define HAVE_KERNEL_32 1 +-static void sasum_kernel_32( BLASLONG n, FLOAT *x, FLOAT *svec) __attribute__ ((noinline)); + +-static void sasum_kernel_32( BLASLONG n, FLOAT *x, FLOAT *svec) ++static float sasum_kernel_32 (long n, float *x) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- +- "dcbt %2 , %4 \n\t" +- +- "xxlxor 32,32,32 \n\t" +- "xxlxor 33,33,33 \n\t" +- "xxlxor 34,34,34 \n\t" +- "xxlxor 35,35,35 \n\t" +- "xxlxor 36,36,36 \n\t" +- "xxlxor 37,37,37 \n\t" +- "xxlxor 38,38,38 \n\t" +- "xxlxor 39,39,39 \n\t" +- +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2 , %4 \n\t" +- +- "xvabssp 48, 40 \n\t" +- "xvabssp 49, 41 \n\t" +- "xvabssp 50, 42 \n\t" +- "xvabssp 51, 43 \n\t" +- +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- +- "xvabssp 52, 44 \n\t" +- "xvabssp 53, 45 \n\t" +- +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- +- "xvabssp 54, 46 \n\t" +- "xvabssp 55, 47 \n\t" +- +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- +- "xvaddsp 32, 32, 48 \n\t" +- "xvaddsp 33, 33, 49 \n\t" +- +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- "xvaddsp 34, 34, 50 \n\t" +- "xvaddsp 35, 35, 51 \n\t" +- "addi %2, %2, 128 \n\t" +- "xvaddsp 36, 36, 52 \n\t" +- "xvaddsp 37, 37, 53 \n\t" +- "addic. %0 , %0 , -32 \n\t" +- "xvaddsp 38, 38, 54 \n\t" +- "xvaddsp 39, 39, 55 \n\t" +- +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- +- "xvabssp 48, 40 \n\t" +- "xvabssp 49, 41 \n\t" +- "xvabssp 50, 42 \n\t" +- "xvabssp 51, 43 \n\t" +- "xvabssp 52, 44 \n\t" +- "xvabssp 53, 45 \n\t" +- "xvabssp 54, 46 \n\t" +- "xvabssp 55, 47 \n\t" +- +- "xvaddsp 32, 32, 48 \n\t" +- "xvaddsp 33, 33, 49 \n\t" +- "xvaddsp 34, 34, 50 \n\t" +- "xvaddsp 35, 35, 51 \n\t" +- "xvaddsp 36, 36, 52 \n\t" +- "xvaddsp 37, 37, 53 \n\t" +- "xvaddsp 38, 38, 54 \n\t" +- "xvaddsp 39, 39, 55 \n\t" +- +- "xvaddsp 32, 32, 33 \n\t" +- "xvaddsp 34, 34, 35 \n\t" +- "xvaddsp 36, 36, 37 \n\t" +- "xvaddsp 38, 38, 39 \n\t" +- +- "xvaddsp 32, 32, 34 \n\t" +- "xvaddsp 36, 36, 38 \n\t" +- +- "xvaddsp 32, 32, 36 \n\t" +- +- +- "stxvw4x 32, 0, %3 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (n), // 1 +- "r" (x1), // 2 +- "r" (svec), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2", "memory" +- ); +- +-} +- +- ++ float sum; ++ __vector float t0; ++ __vector float t1; ++ __vector float t2; ++ __vector float t3; ++ ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ ++ "xxlxor 32, 32, 32 \n\t" ++ "xxlxor 33, 33, 33 \n\t" ++ "xxlxor 34, 34, 34 \n\t" ++ "xxlxor 35, 35, 35 \n\t" ++ "xxlxor 36, 36, 36 \n\t" ++ "xxlxor 37, 37, 37 \n\t" ++ "xxlxor 38, 38, 38 \n\t" ++ "xxlxor 39, 39, 39 \n\t" ++ ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 41, %8, %2 \n\t" ++ "lxvw4x 42, %9, %2 \n\t" ++ "lxvw4x 43, %10, %2 \n\t" ++ "lxvw4x 44, %11, %2 \n\t" ++ "lxvw4x 45, %12, %2 \n\t" ++ "lxvw4x 46, %13, %2 \n\t" ++ "lxvw4x 47, %14, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvabssp 48, 40 \n\t" ++ "xvabssp 49, 41 \n\t" ++ "xvabssp 50, 42 \n\t" ++ "xvabssp 51, 43 \n\t" ++ ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 41, %8, %2 \n\t" ++ ++ "xvabssp %x3, 44 \n\t" ++ "xvabssp %x4, 45 \n\t" ++ ++ "lxvw4x 42, %9, %2 \n\t" ++ "lxvw4x 43, %10, %2 \n\t" ++ ++ "xvabssp %x5, 46 \n\t" ++ "xvabssp %x6, 47 \n\t" ++ ++ "lxvw4x 44, %11, %2 \n\t" ++ "lxvw4x 45, %12, %2 \n\t" ++ ++ "xvaddsp 32, 32, 48 \n\t" ++ "xvaddsp 33, 33, 49 \n\t" ++ ++ "lxvw4x 46, %13, %2 \n\t" ++ "lxvw4x 47, %14, %2 \n\t" ++ ++ "xvaddsp 34, 34, 50 \n\t" ++ "xvaddsp 35, 35, 51 \n\t" ++ "addi %2, %2, 128 \n\t" ++ "xvaddsp 36, 36, %x3 \n\t" ++ "xvaddsp 37, 37, %x4 \n\t" ++ "addic. %1, %1, -32 \n\t" ++ "xvaddsp 38, 38, %x5 \n\t" ++ "xvaddsp 39, 39, %x6 \n\t" ++ ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvabssp 48, 40 \n\t" ++ "xvabssp 49, 41 \n\t" ++ "xvabssp 50, 42 \n\t" ++ "xvabssp 51, 43 \n\t" ++ "xvabssp %x3, 44 \n\t" ++ "xvabssp %x4, 45 \n\t" ++ "xvabssp %x5, 46 \n\t" ++ "xvabssp %x6, 47 \n\t" ++ ++ "xvaddsp 32, 32, 48 \n\t" ++ "xvaddsp 33, 33, 49 \n\t" ++ "xvaddsp 34, 34, 50 \n\t" ++ "xvaddsp 35, 35, 51 \n\t" ++ "xvaddsp 36, 36, %x3 \n\t" ++ "xvaddsp 37, 37, %x4 \n\t" ++ "xvaddsp 38, 38, %x5 \n\t" ++ "xvaddsp 39, 39, %x6 \n\t" ++ ++ "xvaddsp 32, 32, 33 \n\t" ++ "xvaddsp 34, 34, 35 \n\t" ++ "xvaddsp 36, 36, 37 \n\t" ++ "xvaddsp 38, 38, 39 \n\t" ++ ++ "xvaddsp 32, 32, 34 \n\t" ++ "xvaddsp 36, 36, 38 \n\t" ++ ++ "xvaddsp 32, 32, 36 \n\t" ++ ++ "xxsldwi 33, 32, 32, 2 \n\t" ++ "xvaddsp 32, 32, 33 \n\t" ++ ++ "xxsldwi 33, 32, 32, 1 \n\t" ++ "xvaddsp 32, 32, 33 \n\t" ++ ++ "xscvspdp %0, 32 \n" ++ ++ "#n=%1 x=%3=%2 sum=%0 o16=%8 o32=%9 o48=%10 o64=%11 o80=%12 o96=%13 o112=%14\n" ++ "#t0=%x3 t1=%x4 t2=%x5 t3=%x6" ++ : ++ "=f" (sum), // 0 ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "=wa" (t0), // 3 ++ "=wa" (t1), // 4 ++ "=wa" (t2), // 5 ++ "=wa" (t3) // 6 ++ : ++ "m" (*x), ++ "b" (16), // 8 ++ "b" (32), // 9 ++ "b" (48), // 10 ++ "b" (64), // 11 ++ "b" (80), // 12 ++ "b" (96), // 13 ++ "b" (112) // 14 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++ ++ return sum; ++} +diff --git a/kernel/power/scopy_microk_power8.c b/kernel/power/scopy_microk_power8.c +index 2e08e3561..444a6d4d5 100644 +--- a/kernel/power/scopy_microk_power8.c ++++ b/kernel/power/scopy_microk_power8.c +@@ -35,97 +35,78 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_32 1 + +-static void scopy_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) __attribute__ ((noinline)); +- +-static void scopy_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) ++static void scopy_kernel_32 (long n, float *x, float *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- BLASLONG pre = 384; +- BLASLONG alpha=0; +- +- __asm__ __volatile__ +- ( +- +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "stxvw4x 40, 0, %1 \n\t" +- "stxvw4x 41, %5, %1 \n\t" +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "stxvw4x 42, %6, %1 \n\t" +- "stxvw4x 43, %7, %1 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "stxvw4x 44, %8, %1 \n\t" +- "stxvw4x 45, %9, %1 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "stxvw4x 46, %10, %1 \n\t" +- "stxvw4x 47, %11, %1 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "stxvw4x 40, 0, %1 \n\t" +- "stxvw4x 41, %5, %1 \n\t" +- "stxvw4x 42, %6, %1 \n\t" +- "stxvw4x 43, %7, %1 \n\t" +- "stxvw4x 44, %8, %1 \n\t" +- "stxvw4x 45, %9, %1 \n\t" +- "stxvw4x 46, %10, %1 \n\t" +- "stxvw4x 47, %11, %1 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (y1), // 1 +- "r" (x1), // 2 +- "r" (alpha), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "memory" +- ); +- +-} +- +- ++ __asm__ ++ ( ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 41, %5, %2 \n\t" ++ "lxvw4x 42, %6, %2 \n\t" ++ "lxvw4x 43, %7, %2 \n\t" ++ "lxvw4x 44, %8, %2 \n\t" ++ "lxvw4x 45, %9, %2 \n\t" ++ "lxvw4x 46, %10, %2 \n\t" ++ "lxvw4x 47, %11, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "stxvw4x 40, 0, %3 \n\t" ++ "stxvw4x 41, %5, %3 \n\t" ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 41, %5, %2 \n\t" ++ "stxvw4x 42, %6, %3 \n\t" ++ "stxvw4x 43, %7, %3 \n\t" ++ "lxvw4x 42, %6, %2 \n\t" ++ "lxvw4x 43, %7, %2 \n\t" ++ "stxvw4x 44, %8, %3 \n\t" ++ "stxvw4x 45, %9, %3 \n\t" ++ "lxvw4x 44, %8, %2 \n\t" ++ "lxvw4x 45, %9, %2 \n\t" ++ "stxvw4x 46, %10, %3 \n\t" ++ "stxvw4x 47, %11, %3 \n\t" ++ "lxvw4x 46, %10, %2 \n\t" ++ "lxvw4x 47, %11, %2 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "stxvw4x 40, 0, %3 \n\t" ++ "stxvw4x 41, %5, %3 \n\t" ++ "stxvw4x 42, %6, %3 \n\t" ++ "stxvw4x 43, %7, %3 \n\t" ++ "stxvw4x 44, %8, %3 \n\t" ++ "stxvw4x 45, %9, %3 \n\t" ++ "stxvw4x 46, %10, %3 \n\t" ++ "stxvw4x 47, %11, %3 \n" ++ ++ "#n=%1 x=%4=%2 y=%0=%3 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11" ++ : ++ "=m" (*y), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+b" (y) // 3 ++ : ++ "m" (*x), ++ "b" (16), // 5 ++ "b" (32), // 6 ++ "b" (48), // 7 ++ "b" (64), // 8 ++ "b" (80), // 9 ++ "b" (96), // 10 ++ "b" (112) // 11 ++ : ++ "cr0", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47" ++ ); ++} +diff --git a/kernel/power/sdot.c b/kernel/power/sdot.c +index 52fb1fe24..31f473485 100644 +--- a/kernel/power/sdot.c ++++ b/kernel/power/sdot.c +@@ -42,7 +42,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_16 + +-static void sdot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) ++static FLOAT sdot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y) + { + BLASLONG register i = 0; + FLOAT dot = 0.0; +@@ -61,8 +61,7 @@ static void sdot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) + i+=8 ; + + } +- *d += dot; +- ++ return dot; + } + + #endif +@@ -82,8 +81,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) + BLASLONG n1 = n & -32; + + if ( n1 ) +- sdot_kernel_16(n1, x, y , &dot ); +- ++ dot = sdot_kernel_16(n1, x, y); + + i = n1; + while(i < n) +diff --git a/kernel/power/sdot_microk_power8.c b/kernel/power/sdot_microk_power8.c +index 6dd588acd..7f7ccfac3 100644 +--- a/kernel/power/sdot_microk_power8.c ++++ b/kernel/power/sdot_microk_power8.c +@@ -34,146 +34,142 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **************************************************************************************/ + + #define HAVE_KERNEL_16 1 +-static void sdot_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y , FLOAT *dot) __attribute__ ((noinline)); + +-static void sdot_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) ++static float sdot_kernel_16 (long n, float *x, float *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- BLASLONG pre = 384; +- FLOAT tempdot[4]; +- +- +- __asm__ __volatile__ +- ( +- "xxlxor 32,32,32 \n\t" +- "xxlxor 33,33,33 \n\t" +- "xxlxor 34,34,34 \n\t" +- "xxlxor 35,35,35 \n\t" +- "xxlxor 36,36,36 \n\t" +- "xxlxor 37,37,37 \n\t" +- "xxlxor 38,38,38 \n\t" +- "xxlxor 39,39,39 \n\t" +- +- "dcbt %2, %12 \n\t" +- "dcbt %3, %12 \n\t" +- +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 48, 0, %3 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "lxvw4x 49, %5, %3 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 50, %6, %3 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "lxvw4x 51, %7, %3 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 52, %8, %3 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "lxvw4x 53, %9, %3 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 54, %10, %3 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- "lxvw4x 55, %11, %3 \n\t" +- +- "addi %2, %2, 128 \n\t" +- "addi %3, %3, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2, %12 \n\t" +- "dcbt %3, %12 \n\t" +- +- "xvmaddasp 32, 40, 48 \n\t" +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 48, 0, %3 \n\t" +- "xvmaddasp 33, 41, 49 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "lxvw4x 49, %5, %3 \n\t" +- "xvmaddasp 34, 42, 50 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 50, %6, %3 \n\t" +- "xvmaddasp 35, 43, 51 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "lxvw4x 51, %7, %3 \n\t" +- "xvmaddasp 36, 44, 52 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 52, %8, %3 \n\t" +- "xvmaddasp 37, 45, 53 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "lxvw4x 53, %9, %3 \n\t" +- "xvmaddasp 38, 46, 54 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 54, %10, %3 \n\t" +- "xvmaddasp 39, 47, 55 \n\t" +- +- "lxvw4x 47, %11, %2 \n\t" +- "lxvw4x 55, %11, %3 \n\t" +- +- +- "addi %2, %2, 128 \n\t" +- "addi %3, %3, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "xvmaddasp 32, 40, 48 \n\t" +- "xvmaddasp 33, 41, 49 \n\t" +- "xvmaddasp 34, 42, 50 \n\t" +- "xvmaddasp 35, 43, 51 \n\t" +- "xvmaddasp 36, 44, 52 \n\t" +- "xvmaddasp 37, 45, 53 \n\t" +- "xvmaddasp 38, 46, 54 \n\t" +- "xvmaddasp 39, 47, 55 \n\t" +- +- "xvaddsp 32, 32 , 33 \n\t" +- "xvaddsp 34, 34 , 35 \n\t" +- "xvaddsp 36, 36 , 37 \n\t" +- "xvaddsp 38, 38 , 39 \n\t" +- +- "xvaddsp 32, 32 , 34 \n\t" +- "xvaddsp 36, 36 , 38 \n\t" +- +- "xvaddsp 32, 32 , 36 \n\t" +- +- "stxvw4x 32, 0 , %4 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (n), // 1 +- "r" (x1), // 2 +- "r" (y1), // 3 +- "r" (tempdot), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112), // 11 +- "r" (pre) // 12 +- : "cr0", "%0", "%2" , "%3", "memory" +- ); +- +- *dot = tempdot[0] + tempdot[1] + tempdot[2] + tempdot[3]; +- +- +-} +- +- ++ float dot; ++ __vector float t0; ++ __vector float t1; ++ __vector float t2; ++ __vector float t3; ++ ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ "dcbt 0, %3 \n\t" ++ ++ "xxlxor 32, 32, 32 \n\t" ++ "xxlxor 33, 33, 33 \n\t" ++ "xxlxor 34, 34, 34 \n\t" ++ "xxlxor 35, 35, 35 \n\t" ++ "xxlxor 36, 36, 36 \n\t" ++ "xxlxor 37, 37, 37 \n\t" ++ "xxlxor 38, 38, 38 \n\t" ++ "xxlxor 39, 39, 39 \n\t" ++ ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 48, 0, %3 \n\t" ++ "lxvw4x 41, %10, %2 \n\t" ++ "lxvw4x 49, %10, %3 \n\t" ++ "lxvw4x 42, %11, %2 \n\t" ++ "lxvw4x 50, %11, %3 \n\t" ++ "lxvw4x 43, %12, %2 \n\t" ++ "lxvw4x 51, %12, %3 \n\t" ++ "lxvw4x 44, %13, %2 \n\t" ++ "lxvw4x %x4, %13, %3 \n\t" ++ "lxvw4x 45, %14, %2 \n\t" ++ "lxvw4x %x5, %14, %3 \n\t" ++ "lxvw4x 46, %15, %2 \n\t" ++ "lxvw4x %x6, %15, %3 \n\t" ++ "lxvw4x 47, %16, %2 \n\t" ++ "lxvw4x %x7, %16, %3 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ "addi %3, %3, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvmaddasp 32, 40, 48 \n\t" ++ "lxvw4x 40, 0, %2 \n\t" ++ "lxvw4x 48, 0, %3 \n\t" ++ "xvmaddasp 33, 41, 49 \n\t" ++ "lxvw4x 41, %10, %2 \n\t" ++ "lxvw4x 49, %10, %3 \n\t" ++ "xvmaddasp 34, 42, 50 \n\t" ++ "lxvw4x 42, %11, %2 \n\t" ++ "lxvw4x 50, %11, %3 \n\t" ++ "xvmaddasp 35, 43, 51 \n\t" ++ "lxvw4x 43, %12, %2 \n\t" ++ "lxvw4x 51, %12, %3 \n\t" ++ "xvmaddasp 36, 44, %x4 \n\t" ++ "lxvw4x 44, %13, %2 \n\t" ++ "lxvw4x %x4, %13, %3 \n\t" ++ "xvmaddasp 37, 45, %x5 \n\t" ++ "lxvw4x 45, %14, %2 \n\t" ++ "lxvw4x %x5, %14, %3 \n\t" ++ "xvmaddasp 38, 46, %x6 \n\t" ++ "lxvw4x 46, %15, %2 \n\t" ++ "lxvw4x %x6, %15, %3 \n\t" ++ "xvmaddasp 39, 47, %x7 \n\t" ++ "lxvw4x 47, %16, %2 \n\t" ++ "lxvw4x %x7, %16, %3 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ "addi %3, %3, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmaddasp 32, 40, 48 \n\t" ++ "xvmaddasp 33, 41, 49 \n\t" ++ "xvmaddasp 34, 42, 50 \n\t" ++ "xvmaddasp 35, 43, 51 \n\t" ++ "xvmaddasp 36, 44, %x4 \n\t" ++ "xvmaddasp 37, 45, %x5 \n\t" ++ "xvmaddasp 38, 46, %x6 \n\t" ++ "xvmaddasp 39, 47, %x7 \n\t" ++ ++ "xvaddsp 32, 32, 33 \n\t" ++ "xvaddsp 34, 34, 35 \n\t" ++ "xvaddsp 36, 36, 37 \n\t" ++ "xvaddsp 38, 38, 39 \n\t" ++ ++ "xvaddsp 32, 32, 34 \n\t" ++ "xvaddsp 36, 36, 38 \n\t" ++ ++ "xvaddsp 32, 32, 36 \n\t" ++ ++ "xxsldwi 33, 32, 32, 2 \n\t" ++ "xvaddsp 32, 32, 33 \n\t" ++ ++ "xxsldwi 33, 32, 32, 1 \n\t" ++ "xvaddsp 32, 32, 33 \n\t" ++ ++ "xscvspdp %x0, 32 \n" ++ ++ "#dot=%0 n=%1 x=%8=%2 y=%9=%3 o16=%10 o32=%11 o48=%12 o64=%13 o80=%14 o96=%15 o122=%16\n" ++ "#t0=%x4 t1=%x5 t2=%x6 t3=%x7" ++ : ++ "=f" (dot), // 0 ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+b" (y), // 3 ++ "=wa" (t0), // 4 ++ "=wa" (t1), // 5 ++ "=wa" (t2), // 6 ++ "=wa" (t3) // 7 ++ : ++ "m" (*x), ++ "m" (*y), ++ "b" (16), // 10 ++ "b" (32), // 11 ++ "b" (48), // 12 ++ "b" (64), // 13 ++ "b" (80), // 14 ++ "b" (96), // 15 ++ "b" (112) // 16 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++ ++ return dot; ++} +diff --git a/kernel/power/srot.c b/kernel/power/srot.c +index d464846a4..d2910ff87 100644 +--- a/kernel/power/srot.c ++++ b/kernel/power/srot.c +@@ -46,7 +46,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_16 + +-static void srot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) ++static void srot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT c, FLOAT s) + { + + BLASLONG i=0; +@@ -56,8 +56,6 @@ static void srot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) + FLOAT y00, y01, y02, y03; + FLOAT *x1=x; + FLOAT *y1=y; +- FLOAT c1=*c; +- FLOAT s1=*s; + + while ( i 0 ) + { +- c1[0]=c; +- c1[1]=c; +- c1[2]=c; +- c1[3]=c; +- s1[0]=s; +- s1[1]=s; +- s1[2]=s; +- s1[3]=s; +- srot_kernel_16(n1, x1, y1, c1, s1); ++ srot_kernel_16(n1, x1, y1, c, s); + i=n1; + } + +diff --git a/kernel/power/srot_microk_power8.c b/kernel/power/srot_microk_power8.c +index ade65500f..0a18c16e0 100644 +--- a/kernel/power/srot_microk_power8.c ++++ b/kernel/power/srot_microk_power8.c +@@ -38,171 +38,179 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_16 1 + +-static void srot_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) __attribute__ ((noinline)); +- +-static void srot_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *c, FLOAT *s) ++static void srot_kernel_16 (long n, float *x, float *y, float c, float s) + { ++ __vector float t0; ++ __vector float t1; ++ __vector float t2; ++ __vector float t3; ++ __vector float t4; ++ __vector float t5; ++ __vector float t6; ++ __vector float t7; + ++ __asm__ ++ ( ++ "xscvdpspn 36, %x13 \n\t" // load c to all words ++ "xxspltw 36, 36, 0 \n\t" + +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- FLOAT *x1=x; +- FLOAT *y1=y; +- FLOAT *x2=x+1; +- FLOAT *y2=y+1; +- +- __asm__ __volatile__ +- ( +- +- "lxvw4x 36 , 0, %3 \n\t" // load c +- "lxvw4x 37 , 0, %4 \n\t" // load s +- "addi %8 , %8, -4 \n\t" +- "addi %9 , %9, -4 \n\t" +- +- "lxvw4x 32, 0, %1 \n\t" // load x +- "lxvw4x 33, %5, %1 \n\t" +- "lxvw4x 34, %6, %1 \n\t" +- "lxvw4x 35, %7, %1 \n\t" +- +- "lxvw4x 40, 0, %2 \n\t" // load y +- "lxvw4x 41, %5, %2 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- +- "addi %1, %1, 64 \n\t" +- "addi %2, %2, 64 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "xvmulsp 48, 32, 36 \n\t" // c * x +- "xvmulsp 49, 33, 36 \n\t" +- "xvmulsp 50, 34, 36 \n\t" +- "xvmulsp 51, 35, 36 \n\t" +- +- "xvmulsp 56, 40, 36 \n\t" // c * y +- "xvmulsp 57, 41, 36 \n\t" +- "xvmulsp 58, 42, 36 \n\t" +- "xvmulsp 59, 43, 36 \n\t" +- +- "xvmulsp 52, 32, 37 \n\t" // s * x +- "xvmulsp 53, 33, 37 \n\t" +- +- "lxvw4x 32, 0, %1 \n\t" // load x +- "lxvw4x 33, %5, %1 \n\t" +- +- "xvmulsp 54, 34, 37 \n\t" +- "xvmulsp 55, 35, 37 \n\t" +- +- "lxvw4x 34, %6, %1 \n\t" +- "lxvw4x 35, %7, %1 \n\t" +- +- "xvmulsp 60, 40, 37 \n\t" // s * y +- "xvmulsp 61, 41, 37 \n\t" +- +- "lxvw4x 40, 0, %2 \n\t" // load y +- "lxvw4x 41, %5, %2 \n\t" +- +- "xvmulsp 62, 42, 37 \n\t" +- "xvmulsp 63, 43, 37 \n\t" +- +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- +- "xvaddsp 48, 48 , 60 \n\t" // c * x + s * y +- "xvaddsp 49, 49 , 61 \n\t" // c * x + s * y +- +- "addi %1, %1, 64 \n\t" +- "addi %2, %2, 64 \n\t" +- +- "xvaddsp 50, 50 , 62 \n\t" // c * x + s * y +- "xvaddsp 51, 51 , 63 \n\t" // c * x + s * y +- +- "xvsubsp 56, 56 , 52 \n\t" // c * y - s * x +- "xvsubsp 57, 57 , 53 \n\t" // c * y - s * x +- "xvsubsp 58, 58 , 54 \n\t" // c * y - s * x +- "xvsubsp 59, 59 , 55 \n\t" // c * y - s * x +- +- "stxvw4x 48, 0, %8 \n\t" // store x +- "stxvw4x 49, %5, %8 \n\t" +- "stxvw4x 50, %6, %8 \n\t" +- "stxvw4x 51, %7, %8 \n\t" +- +- "stxvw4x 56, 0, %9 \n\t" // store y +- "stxvw4x 57, %5, %9 \n\t" +- "stxvw4x 58, %6, %9 \n\t" +- "stxvw4x 59, %7, %9 \n\t" +- +- "addi %8, %8, 64 \n\t" +- "addi %9, %9, 64 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "xvmulsp 48, 32, 36 \n\t" // c * x +- "xvmulsp 49, 33, 36 \n\t" +- "xvmulsp 50, 34, 36 \n\t" +- "xvmulsp 51, 35, 36 \n\t" +- +- "xvmulsp 56, 40, 36 \n\t" // c * y +- "xvmulsp 57, 41, 36 \n\t" +- "xvmulsp 58, 42, 36 \n\t" +- "xvmulsp 59, 43, 36 \n\t" +- +- "xvmulsp 52, 32, 37 \n\t" // s * x +- "xvmulsp 53, 33, 37 \n\t" +- "xvmulsp 54, 34, 37 \n\t" +- "xvmulsp 55, 35, 37 \n\t" +- +- "xvmulsp 60, 40, 37 \n\t" // s * y +- "xvmulsp 61, 41, 37 \n\t" +- "xvmulsp 62, 42, 37 \n\t" +- "xvmulsp 63, 43, 37 \n\t" +- +- "xvaddsp 48, 48 , 60 \n\t" // c * x + s * y +- "xvaddsp 49, 49 , 61 \n\t" // c * x + s * y +- "xvaddsp 50, 50 , 62 \n\t" // c * x + s * y +- "xvaddsp 51, 51 , 63 \n\t" // c * x + s * y +- +- "xvsubsp 56, 56 , 52 \n\t" // c * y - s * x +- "xvsubsp 57, 57 , 53 \n\t" // c * y - s * x +- "xvsubsp 58, 58 , 54 \n\t" // c * y - s * x +- "xvsubsp 59, 59 , 55 \n\t" // c * y - s * x ++ "xscvdpspn 37, %x14 \n\t" // load s to all words ++ "xxspltw 37, 37, 0 \n\t" + +- "stxvw4x 48, 0, %8 \n\t" // store x +- "stxvw4x 49, %5, %8 \n\t" +- "stxvw4x 50, %6, %8 \n\t" +- "stxvw4x 51, %7, %8 \n\t" ++ "lxvw4x 32, 0, %3 \n\t" // load x ++ "lxvw4x 33, %15, %3 \n\t" ++ "lxvw4x 34, %16, %3 \n\t" ++ "lxvw4x 35, %17, %3 \n\t" + +- "stxvw4x 56, 0, %9 \n\t" // store y +- "stxvw4x 57, %5, %9 \n\t" +- "stxvw4x 58, %6, %9 \n\t" +- "stxvw4x 59, %7, %9 \n\t" ++ "lxvw4x 48, 0, %4 \n\t" // load y ++ "lxvw4x 49, %15, %4 \n\t" ++ "lxvw4x 50, %16, %4 \n\t" ++ "lxvw4x 51, %17, %4 \n\t" + ++ "addi %3, %3, 64 \n\t" ++ "addi %4, %4, 64 \n\t" + ++ "addic. %2, %2, -16 \n\t" ++ "ble 2f \n\t" + +- : +- : +- "r" (i), // 0 +- "r" (x1), // 1 +- "r" (y1), // 2 +- "r" (c), // 3 +- "r" (s), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (x2), // 8 +- "r" (y2) // 9 +- : "cr0", "%0", "%1" , "%2", "%8", "%9", "memory" +- ); ++ ".p2align 5 \n" ++ "1: \n\t" + +-} ++ "xvmulsp 40, 32, 36 \n\t" // c * x ++ "xvmulsp 41, 33, 36 \n\t" ++ "xvmulsp 42, 34, 36 \n\t" ++ "xvmulsp 43, 35, 36 \n\t" + ++ "xvmulsp %x5, 48, 36 \n\t" // c * y ++ "xvmulsp %x6, 49, 36 \n\t" ++ "xvmulsp %x7, 50, 36 \n\t" ++ "xvmulsp %x8, 51, 36 \n\t" + ++ "xvmulsp 44, 32, 37 \n\t" // s * x ++ "xvmulsp 45, 33, 37 \n\t" ++ ++ "lxvw4x 32, 0, %3 \n\t" // load x ++ "lxvw4x 33, %15, %3 \n\t" ++ ++ "xvmulsp 46, 34, 37 \n\t" ++ "xvmulsp 47, 35, 37 \n\t" ++ ++ "lxvw4x 34, %16, %3 \n\t" ++ "lxvw4x 35, %17, %3 \n\t" ++ ++ "xvmulsp %x9, 48, 37 \n\t" // s * y ++ "xvmulsp %x10, 49, 37 \n\t" ++ ++ "lxvw4x 48, 0, %4 \n\t" // load y ++ "lxvw4x 49, %15, %4 \n\t" ++ ++ "xvmulsp %x11, 50, 37 \n\t" ++ "xvmulsp %x12, 51, 37 \n\t" ++ ++ "lxvw4x 50, %16, %4 \n\t" ++ "lxvw4x 51, %17, %4 \n\t" ++ ++ "xvaddsp 40, 40, %x9 \n\t" // c * x + s * y ++ "xvaddsp 41, 41, %x10 \n\t" // c * x + s * y ++ ++ "addi %3, %3, -64 \n\t" ++ "addi %4, %4, -64 \n\t" ++ ++ "xvaddsp 42, 42, %x11 \n\t" // c * x + s * y ++ "xvaddsp 43, 43, %x12 \n\t" // c * x + s * y ++ ++ "xvsubsp %x5, %x5, 44 \n\t" // c * y - s * x ++ "xvsubsp %x6, %x6, 45 \n\t" // c * y - s * x ++ "xvsubsp %x7, %x7, 46 \n\t" // c * y - s * x ++ "xvsubsp %x8, %x8, 47 \n\t" // c * y - s * x ++ ++ "stxvw4x 40, 0, %3 \n\t" // store x ++ "stxvw4x 41, %15, %3 \n\t" ++ "stxvw4x 42, %16, %3 \n\t" ++ "stxvw4x 43, %17, %3 \n\t" ++ ++ "stxvw4x %x5, 0, %4 \n\t" // store y ++ "stxvw4x %x6, %15, %4 \n\t" ++ "stxvw4x %x7, %16, %4 \n\t" ++ "stxvw4x %x8, %17, %4 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ "addi %4, %4, 128 \n\t" ++ ++ "addic. %2, %2, -16 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmulsp 40, 32, 36 \n\t" // c * x ++ "xvmulsp 41, 33, 36 \n\t" ++ "xvmulsp 42, 34, 36 \n\t" ++ "xvmulsp 43, 35, 36 \n\t" ++ ++ "xvmulsp %x5, 48, 36 \n\t" // c * y ++ "xvmulsp %x6, 49, 36 \n\t" ++ "xvmulsp %x7, 50, 36 \n\t" ++ "xvmulsp %x8, 51, 36 \n\t" ++ ++ "xvmulsp 44, 32, 37 \n\t" // s * x ++ "xvmulsp 45, 33, 37 \n\t" ++ "xvmulsp 46, 34, 37 \n\t" ++ "xvmulsp 47, 35, 37 \n\t" ++ ++ "xvmulsp %x9, 48, 37 \n\t" // s * y ++ "xvmulsp %x10, 49, 37 \n\t" ++ "xvmulsp %x11, 50, 37 \n\t" ++ "xvmulsp %x12, 51, 37 \n\t" ++ ++ "addi %3, %3, -64 \n\t" ++ "addi %4, %4, -64 \n\t" ++ ++ "xvaddsp 40, 40, %x9 \n\t" // c * x + s * y ++ "xvaddsp 41, 41, %x10 \n\t" // c * x + s * y ++ "xvaddsp 42, 42, %x11 \n\t" // c * x + s * y ++ "xvaddsp 43, 43, %x12 \n\t" // c * x + s * y ++ ++ "xvsubsp %x5, %x5, 44 \n\t" // c * y - s * x ++ "xvsubsp %x6, %x6, 45 \n\t" // c * y - s * x ++ "xvsubsp %x7, %x7, 46 \n\t" // c * y - s * x ++ "xvsubsp %x8, %x8, 47 \n\t" // c * y - s * x ++ ++ "stxvw4x 40, 0, %3 \n\t" // store x ++ "stxvw4x 41, %15, %3 \n\t" ++ "stxvw4x 42, %16, %3 \n\t" ++ "stxvw4x 43, %17, %3 \n\t" ++ ++ "stxvw4x %x5, 0, %4 \n\t" // store y ++ "stxvw4x %x6, %15, %4 \n\t" ++ "stxvw4x %x7, %16, %4 \n\t" ++ "stxvw4x %x8, %17, %4 \n" ++ ++ "#n=%2 x=%0=%3 y=%1=%4 c=%13 s=%14 o16=%15 o32=%16 o48=%17\n" ++ "#t0=%x5 t1=%x6 t2=%x7 t3=%x8 t4=%x9 t5=%x10 t6=%x11 t7=%x12" ++ : ++ "+m" (*x), ++ "+m" (*y), ++ "+r" (n), // 2 ++ "+b" (x), // 3 ++ "+b" (y), // 4 ++ "=wa" (t0), // 5 ++ "=wa" (t1), // 6 ++ "=wa" (t2), // 7 ++ "=wa" (t3), // 8 ++ "=wa" (t4), // 9 ++ "=wa" (t5), // 10 ++ "=wa" (t6), // 11 ++ "=wa" (t7) // 12 ++ : ++ "f" (c), // 13 ++ "f" (s), // 14 ++ "b" (16), // 15 ++ "b" (32), // 16 ++ "b" (48) // 17 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++} +diff --git a/kernel/power/sscal.c b/kernel/power/sscal.c +index c6ef5e969..bd5cdc43f 100644 +--- a/kernel/power/sscal.c ++++ b/kernel/power/sscal.c +@@ -42,11 +42,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #if !defined(HAVE_KERNEL_16) + +-static void sscal_kernel_16( BLASLONG n, FLOAT *da , FLOAT *x ) ++static void sscal_kernel_16 (BLASLONG n, FLOAT *x, FLOAT alpha) + { + + BLASLONG i; +- FLOAT alpha = *da; + + for( i=0; i 0 ) + { +- alpha[0]=da; +- alpha[1]=da; +- alpha[2]=da; +- alpha[3]=da; +- sscal_kernel_16_zero(n1 , alpha , x); ++ sscal_kernel_16_zero(n1, x); + j=n1; + } + +@@ -127,11 +121,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS + BLASLONG n1 = n & -32; + if ( n1 > 0 ) + { +- alpha[0]=da; +- alpha[1]=da; +- alpha[2]=da; +- alpha[3]=da; +- sscal_kernel_16(n1 , alpha , x); ++ sscal_kernel_16(n1, x, da); + j=n1; + } + while(j < n) +diff --git a/kernel/power/sscal_microk_power8.c b/kernel/power/sscal_microk_power8.c +index 963cec777..49862a329 100644 +--- a/kernel/power/sscal_microk_power8.c ++++ b/kernel/power/sscal_microk_power8.c +@@ -35,184 +35,150 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_16 1 + +-static void sscal_kernel_16( BLASLONG n, FLOAT *alpha, FLOAT *x) __attribute__ ((noinline)); +- +-static void sscal_kernel_16( BLASLONG n, FLOAT *alpha, FLOAT *x) ++static void sscal_kernel_16 (long n, float *x, float alpha) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *x2=x+1; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- +- "lxvw4x 32, 0, %3 \n\t" +- "addi %1, %1, -4 \n\t" +- +- "dcbt %2, %4 \n\t" +- +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2, %4 \n\t" +- +- "xvmulsp 48, 40, 32 \n\t" +- "xvmulsp 49, 41, 32 \n\t" +- "lxvw4x 40, 0, %2 \n\t" +- "lxvw4x 41, %5, %2 \n\t" +- "xvmulsp 50, 42, 32 \n\t" +- "xvmulsp 51, 43, 32 \n\t" +- "lxvw4x 42, %6, %2 \n\t" +- "lxvw4x 43, %7, %2 \n\t" +- "xvmulsp 52, 44, 32 \n\t" +- "xvmulsp 53, 45, 32 \n\t" +- "lxvw4x 44, %8, %2 \n\t" +- "lxvw4x 45, %9, %2 \n\t" +- "xvmulsp 54, 46, 32 \n\t" +- "xvmulsp 55, 47, 32 \n\t" +- "lxvw4x 46, %10, %2 \n\t" +- "lxvw4x 47, %11, %2 \n\t" +- +- "stxvw4x 48, 0, %1 \n\t" +- "stxvw4x 49, %5, %1 \n\t" +- "stxvw4x 50, %6, %1 \n\t" +- "stxvw4x 51, %7, %1 \n\t" +- "stxvw4x 52, %8, %1 \n\t" +- "stxvw4x 53, %9, %1 \n\t" +- "stxvw4x 54, %10, %1 \n\t" +- "stxvw4x 55, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "xvmulsp 48, 40, 32 \n\t" +- "xvmulsp 49, 41, 32 \n\t" +- "xvmulsp 50, 42, 32 \n\t" +- "xvmulsp 51, 43, 32 \n\t" +- "xvmulsp 52, 44, 32 \n\t" +- "xvmulsp 53, 45, 32 \n\t" +- "xvmulsp 54, 46, 32 \n\t" +- "xvmulsp 55, 47, 32 \n\t" +- +- "stxvw4x 48, 0, %1 \n\t" +- "stxvw4x 49, %5, %1 \n\t" +- "stxvw4x 50, %6, %1 \n\t" +- "stxvw4x 51, %7, %1 \n\t" +- "stxvw4x 52, %8, %1 \n\t" +- "stxvw4x 53, %9, %1 \n\t" +- "stxvw4x 54, %10, %1 \n\t" +- "stxvw4x 55, %11, %1 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (x2), // 1 +- "r" (x1), // 2 +- "r" (alpha), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "memory" +- ); +- +-} +- +- +-static void sscal_kernel_16_zero( BLASLONG n, FLOAT *alpha, FLOAT *x) __attribute__ ((noinline)); +- +-static void sscal_kernel_16_zero( BLASLONG n, FLOAT *alpha, FLOAT *x) ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ ++ "xscvdpspn %x3, %x3 \n\t" ++ "xxspltw %x3, %x3, 0 \n\t" ++ ++ "lxvw4x 32, 0, %2 \n\t" ++ "lxvw4x 33, %4, %2 \n\t" ++ "lxvw4x 34, %5, %2 \n\t" ++ "lxvw4x 35, %6, %2 \n\t" ++ "lxvw4x 36, %7, %2 \n\t" ++ "lxvw4x 37, %8, %2 \n\t" ++ "lxvw4x 38, %9, %2 \n\t" ++ "lxvw4x 39, %10, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvmulsp 40, 32, %x3 \n\t" ++ "xvmulsp 41, 33, %x3 \n\t" ++ "lxvw4x 32, 0, %2 \n\t" ++ "lxvw4x 33, %4, %2 \n\t" ++ "xvmulsp 42, 34, %x3 \n\t" ++ "xvmulsp 43, 35, %x3 \n\t" ++ "lxvw4x 34, %5, %2 \n\t" ++ "lxvw4x 35, %6, %2 \n\t" ++ "xvmulsp 44, 36, %x3 \n\t" ++ "xvmulsp 45, 37, %x3 \n\t" ++ "lxvw4x 36, %7, %2 \n\t" ++ "lxvw4x 37, %8, %2 \n\t" ++ "xvmulsp 46, 38, %x3 \n\t" ++ "xvmulsp 47, 39, %x3 \n\t" ++ "lxvw4x 38, %9, %2 \n\t" ++ "lxvw4x 39, %10, %2 \n\t" ++ ++ "addi %2, %2, -128 \n\t" ++ ++ "stxvw4x 40, 0, %2 \n\t" ++ "stxvw4x 41, %4, %2 \n\t" ++ "stxvw4x 42, %5, %2 \n\t" ++ "stxvw4x 43, %6, %2 \n\t" ++ "stxvw4x 44, %7, %2 \n\t" ++ "stxvw4x 45, %8, %2 \n\t" ++ "stxvw4x 46, %9, %2 \n\t" ++ "stxvw4x 47, %10, %2 \n\t" ++ ++ "addi %2, %2, 256 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmulsp 40, 32, %x3 \n\t" ++ "xvmulsp 41, 33, %x3 \n\t" ++ "xvmulsp 42, 34, %x3 \n\t" ++ "xvmulsp 43, 35, %x3 \n\t" ++ ++ "addi %2, %2, -128 \n\t" ++ ++ "xvmulsp 44, 36, %x3 \n\t" ++ "xvmulsp 45, 37, %x3 \n\t" ++ "xvmulsp 46, 38, %x3 \n\t" ++ "xvmulsp 47, 39, %x3 \n\t" ++ ++ "stxvw4x 40, 0, %2 \n\t" ++ "stxvw4x 41, %4, %2 \n\t" ++ "stxvw4x 42, %5, %2 \n\t" ++ "stxvw4x 43, %6, %2 \n\t" ++ "stxvw4x 44, %7, %2 \n\t" ++ "stxvw4x 45, %8, %2 \n\t" ++ "stxvw4x 46, %9, %2 \n\t" ++ "stxvw4x 47, %10, %2 \n" ++ ++ "#n=%1 alpha=%3 x=%0=%2 o16=%4 o32=%5 o48=%6 o64=%7 o80=%8 o96=%9 o112=%10" ++ : ++ "+m" (*x), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+f" (alpha) // 3 ++ : ++ "b" (16), // 4 ++ "b" (32), // 5 ++ "b" (48), // 6 ++ "b" (64), // 7 ++ "b" (80), // 8 ++ "b" (96), // 9 ++ "b" (112) // 10 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47" ++ ); ++} ++ ++ ++static void sscal_kernel_16_zero (long n, float *x) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *x2=x+1; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- +- "xxlxor 32 , 32 , 32 \n\t" +- "addi %1, %1, -4 \n\t" +- +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "stxvw4x 32, 0, %1 \n\t" +- "stxvw4x 32, %5, %1 \n\t" +- "stxvw4x 32, %6, %1 \n\t" +- "stxvw4x 32, %7, %1 \n\t" +- "stxvw4x 32, %8, %1 \n\t" +- "stxvw4x 32, %9, %1 \n\t" +- "stxvw4x 32, %10, %1 \n\t" +- "stxvw4x 32, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (x2), // 1 +- "r" (x1), // 2 +- "r" (alpha), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "memory" +- ); +- +-} +- +- ++ __vector float t0; ++ ++ __asm__ ++ ( ++ "xxlxor %x3, %x3, %x3 \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "stxvw4x %x3, 0, %2 \n\t" ++ "stxvw4x %x3, %4, %2 \n\t" ++ "stxvw4x %x3, %5, %2 \n\t" ++ "stxvw4x %x3, %6, %2 \n\t" ++ "stxvw4x %x3, %7, %2 \n\t" ++ "stxvw4x %x3, %8, %2 \n\t" ++ "stxvw4x %x3, %9, %2 \n\t" ++ "stxvw4x %x3, %10, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -32 \n\t" ++ "bgt 1b \n" ++ ++ "#n=%1 x=%0=%2 t0=%x3 o16=%4 o32=%5 o48=%6 o64=%7 o80=%8 o96=%9 o112=%10" ++ : ++ "=m" (*x), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "=wa" (t0) // 3 ++ : ++ "b" (16), // 4 ++ "b" (32), // 5 ++ "b" (48), // 6 ++ "b" (64), // 7 ++ "b" (80), // 8 ++ "b" (96), // 9 ++ "b" (112) // 10 ++ : ++ "cr0" ++ ); ++} +diff --git a/kernel/power/sswap_microk_power8.c b/kernel/power/sswap_microk_power8.c +index c48e743de..d44f16765 100644 +--- a/kernel/power/sswap_microk_power8.c ++++ b/kernel/power/sswap_microk_power8.c +@@ -35,102 +35,74 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_32 1 + +-static void sswap_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) __attribute__ ((noinline)); +- +-static void sswap_kernel_32( BLASLONG n, FLOAT *x, FLOAT *y) ++static void sswap_kernel_32 (long n, float *x, float *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- FLOAT *x2=x+1; +- FLOAT *y2=y+1; +- BLASLONG pre = 384; +- BLASLONG alpha=0; +- +- __asm__ __volatile__ +- ( +- +- "addi %3, %3, -4 \n\t" +- "addi %4, %4, -4 \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "lxvw4x 32, 0, %2 \n\t" +- "lxvw4x 33, %5, %2 \n\t" +- "lxvw4x 34, %6, %2 \n\t" +- "lxvw4x 35, %7, %2 \n\t" +- "lxvw4x 36, %8, %2 \n\t" +- "lxvw4x 37, %9, %2 \n\t" +- "lxvw4x 38, %10, %2 \n\t" +- "lxvw4x 39, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvw4x 48, 0, %1 \n\t" +- "lxvw4x 49, %5, %1 \n\t" +- "lxvw4x 50, %6, %1 \n\t" +- "lxvw4x 51, %7, %1 \n\t" +- "lxvw4x 52, %8, %1 \n\t" +- "lxvw4x 53, %9, %1 \n\t" +- "lxvw4x 54, %10, %1 \n\t" +- "lxvw4x 55, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "stxvw4x 32, 0, %3 \n\t" +- "stxvw4x 33, %5, %3 \n\t" +- "stxvw4x 34, %6, %3 \n\t" +- "stxvw4x 35, %7, %3 \n\t" +- "stxvw4x 36, %8, %3 \n\t" +- "stxvw4x 37, %9, %3 \n\t" +- "stxvw4x 38, %10, %3 \n\t" +- "stxvw4x 39, %11, %3 \n\t" +- +- "addi %3, %3, 128 \n\t" +- +- "stxvw4x 48, 0, %4 \n\t" +- "stxvw4x 49, %5, %4 \n\t" +- "stxvw4x 50, %6, %4 \n\t" +- "stxvw4x 51, %7, %4 \n\t" +- "stxvw4x 52, %8, %4 \n\t" +- "stxvw4x 53, %9, %4 \n\t" +- "stxvw4x 54, %10, %4 \n\t" +- "stxvw4x 55, %11, %4 \n\t" +- +- "addi %4, %4, 128 \n\t" +- +- "addic. %0 , %0 , -32 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (y1), // 1 +- "r" (x1), // 2 +- "r" (y2), // 3 +- "r" (x2), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "%3", "%4", "memory" +- ); +- +-} +- +- ++ __asm__ ++ ( ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "lxvw4x 32, 0, %4 \n\t" ++ "lxvw4x 33, %5, %4 \n\t" ++ "lxvw4x 34, %6, %4 \n\t" ++ "lxvw4x 35, %7, %4 \n\t" ++ "lxvw4x 36, %8, %4 \n\t" ++ "lxvw4x 37, %9, %4 \n\t" ++ "lxvw4x 38, %10, %4 \n\t" ++ "lxvw4x 39, %11, %4 \n\t" ++ ++ "lxvw4x 40, 0, %3 \n\t" ++ "lxvw4x 41, %5, %3 \n\t" ++ "lxvw4x 42, %6, %3 \n\t" ++ "lxvw4x 43, %7, %3 \n\t" ++ "lxvw4x 44, %8, %3 \n\t" ++ "lxvw4x 45, %9, %3 \n\t" ++ "lxvw4x 46, %10, %3 \n\t" ++ "lxvw4x 47, %11, %3 \n\t" ++ ++ "stxvw4x 32, 0, %3 \n\t" ++ "stxvw4x 33, %5, %3 \n\t" ++ "stxvw4x 34, %6, %3 \n\t" ++ "stxvw4x 35, %7, %3 \n\t" ++ "stxvw4x 36, %8, %3 \n\t" ++ "stxvw4x 37, %9, %3 \n\t" ++ "stxvw4x 38, %10, %3 \n\t" ++ "stxvw4x 39, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvw4x 40, 0, %4 \n\t" ++ "stxvw4x 41, %5, %4 \n\t" ++ "stxvw4x 42, %6, %4 \n\t" ++ "stxvw4x 43, %7, %4 \n\t" ++ "stxvw4x 44, %8, %4 \n\t" ++ "stxvw4x 45, %9, %4 \n\t" ++ "stxvw4x 46, %10, %4 \n\t" ++ "stxvw4x 47, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ ++ "addic. %2, %2, -32 \n\t" ++ "bgt 1b \n" ++ ++ "#n=%2 x=%0=%3 y=%1=%4 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11" ++ : ++ "+m" (*x), ++ "+m" (*y), ++ "+r" (n), // 2 ++ "+b" (x), // 3 ++ "+b" (y) // 4 ++ : ++ "b" (16), // 5 ++ "b" (32), // 6 ++ "b" (48), // 7 ++ "b" (64), // 8 ++ "b" (80), // 9 ++ "b" (96), // 10 ++ "b" (112) // 11 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47" ++ ); ++} +diff --git a/kernel/power/zasum.c b/kernel/power/zasum.c +index abd6ec08a..0b6b87d46 100644 +--- a/kernel/power/zasum.c ++++ b/kernel/power/zasum.c +@@ -53,7 +53,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_8 + +-static void zasum_kernel_8(BLASLONG n, FLOAT *x1, FLOAT *svec) ++static FLOAT zasum_kernel_8(BLASLONG n, FLOAT *x1) + { + + BLASLONG i=0; +@@ -92,9 +92,7 @@ static void zasum_kernel_8(BLASLONG n, FLOAT *x1, FLOAT *svec) + + } + +- svec[0] = sum0+sum1+sum2+sum3; +- svec[1] = 0.0; +- ++ return sum0+sum1+sum2+sum3; + } + + #endif +@@ -104,7 +102,6 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) + BLASLONG i=0; + BLASLONG ip=0; + FLOAT sumf = 0.0; +- FLOAT svec[2] __attribute__ ((aligned (16)));; + BLASLONG n1; + BLASLONG inc_x2; + +@@ -117,8 +114,7 @@ FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x) + if ( n1 > 0 ) + { + +- zasum_kernel_8(n1, x, svec); +- sumf = svec[0] + svec[1]; ++ sumf = zasum_kernel_8(n1, x); + i=n1; + ip=2*n1; + } +diff --git a/kernel/power/zasum_microk_power8.c b/kernel/power/zasum_microk_power8.c +index b9f6c0ac6..82366902d 100644 +--- a/kernel/power/zasum_microk_power8.c ++++ b/kernel/power/zasum_microk_power8.c +@@ -34,144 +34,140 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **************************************************************************************/ + + #define HAVE_KERNEL_8 1 +-static void zasum_kernel_8( BLASLONG n, FLOAT *x, FLOAT *svec) __attribute__ ((noinline)); + +-static void zasum_kernel_8( BLASLONG n, FLOAT *x, FLOAT *svec) ++static double zasum_kernel_8 (long n, double *x) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- +- "dcbt %2 , %4 \n\t" +- +- "xxlxor 32,32,32 \n\t" +- "xxlxor 33,33,33 \n\t" +- "xxlxor 34,34,34 \n\t" +- "xxlxor 35,35,35 \n\t" +- "xxlxor 36,36,36 \n\t" +- "xxlxor 37,37,37 \n\t" +- "xxlxor 38,38,38 \n\t" +- "xxlxor 39,39,39 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -8 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2 , %4 \n\t" +- +- "xvabsdp 48, 40 \n\t" +- "xvabsdp 49, 41 \n\t" +- "xvabsdp 50, 42 \n\t" +- "xvabsdp 51, 43 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- +- "xvabsdp 52, 44 \n\t" +- "xvabsdp 53, 45 \n\t" +- +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- +- "xvabsdp 54, 46 \n\t" +- "xvabsdp 55, 47 \n\t" +- +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- +- "xvadddp 32, 32, 48 \n\t" +- "xvadddp 33, 33, 49 \n\t" +- +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "xvadddp 34, 34, 50 \n\t" +- "xvadddp 35, 35, 51 \n\t" +- "addi %2, %2, 128 \n\t" +- "xvadddp 36, 36, 52 \n\t" +- "xvadddp 37, 37, 53 \n\t" +- "addic. %0 , %0 , -8 \n\t" +- "xvadddp 38, 38, 54 \n\t" +- "xvadddp 39, 39, 55 \n\t" +- +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- +- "xvabsdp 48, 40 \n\t" +- "xvabsdp 49, 41 \n\t" +- "xvabsdp 50, 42 \n\t" +- "xvabsdp 51, 43 \n\t" +- "xvabsdp 52, 44 \n\t" +- "xvabsdp 53, 45 \n\t" +- "xvabsdp 54, 46 \n\t" +- "xvabsdp 55, 47 \n\t" +- +- "xvadddp 32, 32, 48 \n\t" +- "xvadddp 33, 33, 49 \n\t" +- "xvadddp 34, 34, 50 \n\t" +- "xvadddp 35, 35, 51 \n\t" +- "xvadddp 36, 36, 52 \n\t" +- "xvadddp 37, 37, 53 \n\t" +- "xvadddp 38, 38, 54 \n\t" +- "xvadddp 39, 39, 55 \n\t" +- +- "xvadddp 32, 32, 33 \n\t" +- "xvadddp 34, 34, 35 \n\t" +- "xvadddp 36, 36, 37 \n\t" +- "xvadddp 38, 38, 39 \n\t" +- +- "xvadddp 32, 32, 34 \n\t" +- "xvadddp 36, 36, 38 \n\t" +- +- "xvadddp 32, 32, 36 \n\t" +- +- +- "stxvd2x 32, 0, %3 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (n), // 1 +- "r" (x1), // 2 +- "r" (svec), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2", "memory" +- ); +- +-} +- +- ++ double sum; ++ __vector double t0; ++ __vector double t1; ++ __vector double t2; ++ __vector double t3; ++ ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ ++ "xxlxor 32, 32, 32 \n\t" ++ "xxlxor 33, 33, 33 \n\t" ++ "xxlxor 34, 34, 34 \n\t" ++ "xxlxor 35, 35, 35 \n\t" ++ "xxlxor 36, 36, 36 \n\t" ++ "xxlxor 37, 37, 37 \n\t" ++ "xxlxor 38, 38, 38 \n\t" ++ "xxlxor 39, 39, 39 \n\t" ++ ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 41, %8, %2 \n\t" ++ "lxvd2x 42, %9, %2 \n\t" ++ "lxvd2x 43, %10, %2 \n\t" ++ "lxvd2x 44, %11, %2 \n\t" ++ "lxvd2x 45, %12, %2 \n\t" ++ "lxvd2x 46, %13, %2 \n\t" ++ "lxvd2x 47, %14, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -8 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvabsdp 48, 40 \n\t" ++ "xvabsdp 49, 41 \n\t" ++ "xvabsdp 50, 42 \n\t" ++ "xvabsdp 51, 43 \n\t" ++ ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 41, %8, %2 \n\t" ++ ++ "xvabsdp %x3, 44 \n\t" ++ "xvabsdp %x4, 45 \n\t" ++ ++ "lxvd2x 42, %9, %2 \n\t" ++ "lxvd2x 43, %10, %2 \n\t" ++ ++ "xvabsdp %x5, 46 \n\t" ++ "xvabsdp %x6, 47 \n\t" ++ ++ "lxvd2x 44, %11, %2 \n\t" ++ "lxvd2x 45, %12, %2 \n\t" ++ ++ "xvadddp 32, 32, 48 \n\t" ++ "xvadddp 33, 33, 49 \n\t" ++ ++ "lxvd2x 46, %13, %2 \n\t" ++ "lxvd2x 47, %14, %2 \n\t" ++ ++ "xvadddp 34, 34, 50 \n\t" ++ "xvadddp 35, 35, 51 \n\t" ++ "addi %2, %2, 128 \n\t" ++ "xvadddp 36, 36, %x3 \n\t" ++ "xvadddp 37, 37, %x4 \n\t" ++ "addic. %1, %1, -8 \n\t" ++ "xvadddp 38, 38, %x5 \n\t" ++ "xvadddp 39, 39, %x6 \n\t" ++ ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvabsdp 48, 40 \n\t" ++ "xvabsdp 49, 41 \n\t" ++ "xvabsdp 50, 42 \n\t" ++ "xvabsdp 51, 43 \n\t" ++ "xvabsdp %x3, 44 \n\t" ++ "xvabsdp %x4, 45 \n\t" ++ "xvabsdp %x5, 46 \n\t" ++ "xvabsdp %x6, 47 \n\t" ++ ++ "xvadddp 32, 32, 48 \n\t" ++ "xvadddp 33, 33, 49 \n\t" ++ "xvadddp 34, 34, 50 \n\t" ++ "xvadddp 35, 35, 51 \n\t" ++ "xvadddp 36, 36, %x3 \n\t" ++ "xvadddp 37, 37, %x4 \n\t" ++ "xvadddp 38, 38, %x5 \n\t" ++ "xvadddp 39, 39, %x6 \n\t" ++ ++ "xvadddp 32, 32, 33 \n\t" ++ "xvadddp 34, 34, 35 \n\t" ++ "xvadddp 36, 36, 37 \n\t" ++ "xvadddp 38, 38, 39 \n\t" ++ ++ "xvadddp 32, 32, 34 \n\t" ++ "xvadddp 36, 36, 38 \n\t" ++ ++ "xvadddp 32, 32, 36 \n\t" ++ ++ "xxswapd 33, 32 \n\t" ++ "xsadddp %x0, 32, 33 \n" ++ ++ "#n=%1 x=%3=%2 sum=%0 o16=%8 o32=%9 o48=%10 o64=%11 o80=%12 o96=%13 o112=%14\n" ++ "#t0=%x3 t1=%x4 t2=%x5 t3=%x6" ++ : ++ "=d" (sum), // 0 ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "=wa" (t0), // 3 ++ "=wa" (t1), // 4 ++ "=wa" (t2), // 5 ++ "=wa" (t3) // 6 ++ : ++ "m" (*x), ++ "b" (16), // 8 ++ "b" (32), // 9 ++ "b" (48), // 10 ++ "b" (64), // 11 ++ "b" (80), // 12 ++ "b" (96), // 13 ++ "b" (112) // 14 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++ ++ return sum; ++} +diff --git a/kernel/power/zaxpy.c b/kernel/power/zaxpy.c +index 0ee0c1bf9..dd7ab6c3c 100644 +--- a/kernel/power/zaxpy.c ++++ b/kernel/power/zaxpy.c +@@ -78,7 +78,6 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, + { + BLASLONG i=0; + BLASLONG ix=0,iy=0; +- FLOAT da[4]; + + if ( n <= 0 ) return(0); + +@@ -89,11 +88,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r, FLOAT da_i, + + if ( n1 ) + { +- da[0] = da_r; +- da[1] = da_r; +- da[2] = da_i; +- da[3] = da_i; +- zaxpy_kernel_4(n1, x, y , da ); ++ zaxpy_kernel_4 (n1, x, y, da_r, da_i); + ix = 2 * n1; + } + i = n1; +diff --git a/kernel/power/zaxpy_microk_power8.c b/kernel/power/zaxpy_microk_power8.c +index c8a529fd9..124614f62 100644 +--- a/kernel/power/zaxpy_microk_power8.c ++++ b/kernel/power/zaxpy_microk_power8.c +@@ -35,216 +35,225 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + #define HAVE_KERNEL_4 1 +-static void zaxpy_kernel_4( BLASLONG n, FLOAT *x, FLOAT *y , FLOAT *alpha) __attribute__ ((noinline)); +- +-static void zaxpy_kernel_4( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha) ++static void zaxpy_kernel_4 (long n, double *x, double *y, ++ double alpha_r, double alpha_i) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- FLOAT *x1=x; +- FLOAT *y1=y; +- FLOAT *y2=y+1; +- BLASLONG pre = 384; +- + #if !defined(CONJ) +- FLOAT mvec[2] = { -1.0, 1.0 }; ++ static const double mvec[2] = { -1.0, 1.0 }; + #else +- FLOAT mvec[2] = { 1.0, -1.0 }; ++ static const double mvec[2] = { 1.0, -1.0 }; + #endif +- +- +- __asm__ __volatile__ +- ( +- +- "lxsdx 34, 0 , %4 \n\t" // alpha_r +- "lxsdx 35, %5, %4 \n\t" // alpha_i +- "xxspltd 32, 34, 0 \n\t" +- "xxspltd 33, 35, 0 \n\t" +- +- "lxvd2x 36, 0, %9 \n\t" // mvec ++ const double *mvecp = mvec; ++ ++ __vector double t0; ++ __vector double t1; ++ __vector double t2; ++ __vector double t3; ++ __vector double t4; ++ __vector double t5; ++ __vector double t6; ++ __vector double t7; ++ __vector double t8; ++ __vector double t9; ++ __vector double t10; ++ __vector double t11; ++ long ytmp; ++ ++ __asm__ ++ ( ++ "xxspltd 32, %x19, 0 \n\t" // alpha_r ++ "xxspltd 33, %x20, 0 \n\t" // alpha_i ++ ++ "lxvd2x 36, 0, %21 \n\t" // mvec + + #if !defined(CONJ) +- "xvmuldp 33, 33 , 36 \n\t" // alpha_i * mvec ++ "xvmuldp 33, 33, 36 \n\t" // alpha_i * mvec + #else +- "xvmuldp 32, 32 , 36 \n\t" // alpha_r * mvec ++ "xvmuldp 32, 32, 36 \n\t" // alpha_r * mvec + #endif + +- "addi %8, %8, -8 \n\t" +- +- "dcbt %2, %10 \n\t" +- "dcbt %3, %10 \n\t" +- +- +- "lxvd2x 40, 0, %2 \n\t" // x0 +- "lxvd2x 41, %5, %2 \n\t" // x1 +- "lxvd2x 42, %6, %2 \n\t" // x2 +- "lxvd2x 43, %7, %2 \n\t" // x3 +- +- "lxvd2x 48, 0, %3 \n\t" // y0 +- "lxvd2x 49, %5, %3 \n\t" // y1 +- "lxvd2x 50, %6, %3 \n\t" // y2 +- "lxvd2x 51, %7, %3 \n\t" // y3 +- +- "xxswapd 56, 40 \n\t" // exchange real and imag part +- "xxswapd 57, 41 \n\t" // exchange real and imag part +- "xxswapd 58, 42 \n\t" // exchange real and imag part +- "xxswapd 59, 43 \n\t" // exchange real and imag part +- +- "addi %2, %2, 64 \n\t" +- "addi %3, %3, 64 \n\t" +- +- "lxvd2x 44, 0, %2 \n\t" // x4 +- "lxvd2x 45, %5, %2 \n\t" // x5 +- "lxvd2x 46, %6, %2 \n\t" // x6 +- "lxvd2x 47, %7, %2 \n\t" // x7 +- +- "lxvd2x 52, 0, %3 \n\t" // y4 +- "lxvd2x 53, %5, %3 \n\t" // y5 +- "lxvd2x 54, %6, %3 \n\t" // y6 +- "lxvd2x 55, %7, %3 \n\t" // y7 +- +- "xxswapd 60, 44 \n\t" // exchange real and imag part +- "xxswapd 61, 45 \n\t" // exchange real and imag part +- "xxswapd 62, 46 \n\t" // exchange real and imag part +- "xxswapd 63, 47 \n\t" // exchange real and imag part +- +- "addi %2, %2, 64 \n\t" +- "addi %3, %3, 64 \n\t" +- +- "addic. %0 , %0 , -8 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2, %10 \n\t" +- "dcbt %3, %10 \n\t" +- +- "xvmaddadp 48, 40, 32 \n\t" // alpha_r * x0_r , alpha_r * x0_i +- "xvmaddadp 49, 41, 32 \n\t" +- "lxvd2x 40, 0, %2 \n\t" // x0 +- "lxvd2x 41, %5, %2 \n\t" // x1 +- "xvmaddadp 50, 42, 32 \n\t" +- "xvmaddadp 51, 43, 32 \n\t" +- "lxvd2x 42, %6, %2 \n\t" // x2 +- "lxvd2x 43, %7, %2 \n\t" // x3 +- +- "xvmaddadp 52, 44, 32 \n\t" +- "addi %2, %2, 64 \n\t" +- "xvmaddadp 53, 45, 32 \n\t" +- "lxvd2x 44, 0, %2 \n\t" // x4 +- "lxvd2x 45, %5, %2 \n\t" // x5 +- "xvmaddadp 54, 46, 32 \n\t" +- "xvmaddadp 55, 47, 32 \n\t" +- "lxvd2x 46, %6, %2 \n\t" // x6 +- "lxvd2x 47, %7, %2 \n\t" // x7 +- +- "xvmaddadp 48, 56, 33 \n\t" // alpha_i * x0_i , alpha_i * x0_r +- "addi %2, %2, 64 \n\t" +- "xvmaddadp 49, 57, 33 \n\t" +- "xvmaddadp 50, 58, 33 \n\t" +- "xvmaddadp 51, 59, 33 \n\t" +- +- "xvmaddadp 52, 60, 33 \n\t" +- "xvmaddadp 53, 61, 33 \n\t" +- "xvmaddadp 54, 62, 33 \n\t" +- "xvmaddadp 55, 63, 33 \n\t" +- +- "stxvd2x 48, 0, %8 \n\t" +- "stxvd2x 49, %5, %8 \n\t" +- "stxvd2x 50, %6, %8 \n\t" +- "stxvd2x 51, %7, %8 \n\t" +- +- "addi %8, %8, 64 \n\t" +- +- "stxvd2x 52, 0, %8 \n\t" +- "stxvd2x 53, %5, %8 \n\t" +- "stxvd2x 54, %6, %8 \n\t" +- "stxvd2x 55, %7, %8 \n\t" +- +- "addi %8, %8, 64 \n\t" +- +- "xxswapd 56, 40 \n\t" // exchange real and imag part +- "xxswapd 57, 41 \n\t" // exchange real and imag part +- "lxvd2x 48, 0, %3 \n\t" // y0 +- "lxvd2x 49, %5, %3 \n\t" // y1 +- "xxswapd 58, 42 \n\t" // exchange real and imag part +- "xxswapd 59, 43 \n\t" // exchange real and imag part +- "lxvd2x 50, %6, %3 \n\t" // y2 +- "lxvd2x 51, %7, %3 \n\t" // y3 +- +- "xxswapd 60, 44 \n\t" // exchange real and imag part +- "addi %3, %3, 64 \n\t" +- "xxswapd 61, 45 \n\t" // exchange real and imag part +- "lxvd2x 52, 0, %3 \n\t" // y4 +- "lxvd2x 53, %5, %3 \n\t" // y5 +- "xxswapd 62, 46 \n\t" // exchange real and imag part +- "xxswapd 63, 47 \n\t" // exchange real and imag part +- "lxvd2x 54, %6, %3 \n\t" // y6 +- "lxvd2x 55, %7, %3 \n\t" // y7 +- +- "addi %3, %3, 64 \n\t" +- +- "addic. %0 , %0 , -8 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "xvmaddadp 48, 40, 32 \n\t" // alpha_r * x0_r , alpha_r * x0_i +- "xvmaddadp 49, 41, 32 \n\t" +- "xvmaddadp 50, 42, 32 \n\t" +- "xvmaddadp 51, 43, 32 \n\t" +- +- "xvmaddadp 52, 44, 32 \n\t" +- "xvmaddadp 53, 45, 32 \n\t" +- "xvmaddadp 54, 46, 32 \n\t" +- "xvmaddadp 55, 47, 32 \n\t" +- +- "xvmaddadp 48, 56, 33 \n\t" // alpha_i * x0_i , alpha_i * x0_r +- "xvmaddadp 49, 57, 33 \n\t" +- "xvmaddadp 50, 58, 33 \n\t" +- "xvmaddadp 51, 59, 33 \n\t" +- +- "xvmaddadp 52, 60, 33 \n\t" +- "xvmaddadp 53, 61, 33 \n\t" +- "xvmaddadp 54, 62, 33 \n\t" +- "xvmaddadp 55, 63, 33 \n\t" +- +- +- "stxvd2x 48, 0, %8 \n\t" +- "stxvd2x 49, %5, %8 \n\t" +- "stxvd2x 50, %6, %8 \n\t" +- "stxvd2x 51, %7, %8 \n\t" +- +- "addi %8, %8, 64 \n\t" +- +- "stxvd2x 52, 0, %8 \n\t" +- "stxvd2x 53, %5, %8 \n\t" +- "stxvd2x 54, %6, %8 \n\t" +- "stxvd2x 55, %7, %8 \n\t" +- +- "addi %8, %8, 64 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (n), // 1 +- "r" (x1), // 2 +- "r" (y1), // 3 +- "r" (alpha), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (y2), // 8 +- "r" (mvec), // 9 +- "r" (pre) // 10 +- : "cr0", "%0", "%2" , "%3", "%8", "memory" +- ); +- +-} +- +- ++ "mr %16, %3 \n\t" ++ "dcbt 0, %2 \n\t" ++ "dcbt 0, %3 \n\t" ++ ++ ++ "lxvd2x 40, 0, %2 \n\t" // x0 ++ "lxvd2x 41, %22, %2 \n\t" // x1 ++ "lxvd2x 42, %23, %2 \n\t" // x2 ++ "lxvd2x 43, %24, %2 \n\t" // x3 ++ ++ "lxvd2x 48, 0, %3 \n\t" // y0 ++ "lxvd2x 49, %22, %3 \n\t" // y1 ++ "lxvd2x 50, %23, %3 \n\t" // y2 ++ "lxvd2x 51, %24, %3 \n\t" // y3 ++ ++ "xxswapd %x8, 40 \n\t" // exchange real and imag part ++ "xxswapd %x9, 41 \n\t" // exchange real and imag part ++ "xxswapd %x10, 42 \n\t" // exchange real and imag part ++ "xxswapd %x11, 43 \n\t" // exchange real and imag part ++ ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, 64 \n\t" ++ ++ "lxvd2x 44, 0, %2 \n\t" // x4 ++ "lxvd2x 45, %22, %2 \n\t" // x5 ++ "lxvd2x 46, %23, %2 \n\t" // x6 ++ "lxvd2x 47, %24, %2 \n\t" // x7 ++ ++ "lxvd2x %x4, 0, %3 \n\t" // y4 ++ "lxvd2x %x5, %22, %3 \n\t" // y5 ++ "lxvd2x %x6, %23, %3 \n\t" // y6 ++ "lxvd2x %x7, %24, %3 \n\t" // y7 ++ ++ "xxswapd %x12, 44 \n\t" // exchange real and imag part ++ "xxswapd %x13, 45 \n\t" // exchange real and imag part ++ "xxswapd %x14, 46 \n\t" // exchange real and imag part ++ "xxswapd %x15, 47 \n\t" // exchange real and imag part ++ ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, 64 \n\t" ++ ++ "addic. %1, %1, -8 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvmaddadp 48, 40, 32 \n\t" // alpha_r * x0_r , alpha_r * x0_i ++ "xvmaddadp 49, 41, 32 \n\t" ++ "lxvd2x 40, 0, %2 \n\t" // x0 ++ "lxvd2x 41, %22, %2 \n\t" // x1 ++ "xvmaddadp 50, 42, 32 \n\t" ++ "xvmaddadp 51, 43, 32 \n\t" ++ "lxvd2x 42, %23, %2 \n\t" // x2 ++ "lxvd2x 43, %24, %2 \n\t" // x3 ++ ++ "xvmaddadp %x4, 44, 32 \n\t" ++ "addi %2, %2, 64 \n\t" ++ "xvmaddadp %x5, 45, 32 \n\t" ++ "lxvd2x 44, 0, %2 \n\t" // x4 ++ "lxvd2x 45, %22, %2 \n\t" // x5 ++ "xvmaddadp %x6, 46, 32 \n\t" ++ "xvmaddadp %x7, 47, 32 \n\t" ++ "lxvd2x 46, %23, %2 \n\t" // x6 ++ "lxvd2x 47, %24, %2 \n\t" // x7 ++ ++ "xvmaddadp 48, %x8, 33 \n\t" // alpha_i * x0_i , alpha_i * x0_r ++ "addi %2, %2, 64 \n\t" ++ "xvmaddadp 49, %x9, 33 \n\t" ++ "xvmaddadp 50, %x10, 33 \n\t" ++ "xvmaddadp 51, %x11, 33 \n\t" ++ ++ "xvmaddadp %x4, %x12, 33 \n\t" ++ "xvmaddadp %x5, %x13, 33 \n\t" ++ "xvmaddadp %x6, %x14, 33 \n\t" ++ "xvmaddadp %x7, %x15, 33 \n\t" ++ ++ "stxvd2x 48, 0, %16 \n\t" ++ "stxvd2x 49, %22, %16 \n\t" ++ "stxvd2x 50, %23, %16 \n\t" ++ "stxvd2x 51, %24, %16 \n\t" ++ ++ "addi %16, %16, 64 \n\t" ++ ++ "stxvd2x %x4, 0, %16 \n\t" ++ "stxvd2x %x5, %22, %16 \n\t" ++ "stxvd2x %x6, %23, %16 \n\t" ++ "stxvd2x %x7, %24, %16 \n\t" ++ ++ "addi %16, %16, 64 \n\t" ++ ++ "xxswapd %x8, 40 \n\t" // exchange real and imag part ++ "xxswapd %x9, 41 \n\t" // exchange real and imag part ++ "lxvd2x 48, 0, %3 \n\t" // y0 ++ "lxvd2x 49, %22, %3 \n\t" // y1 ++ "xxswapd %x10, 42 \n\t" // exchange real and imag part ++ "xxswapd %x11, 43 \n\t" // exchange real and imag part ++ "lxvd2x 50, %23, %3 \n\t" // y2 ++ "lxvd2x 51, %24, %3 \n\t" // y3 ++ ++ "xxswapd %x12, 44 \n\t" // exchange real and imag part ++ "addi %3, %3, 64 \n\t" ++ "xxswapd %x13, 45 \n\t" // exchange real and imag part ++ "lxvd2x %x4, 0, %3 \n\t" // y4 ++ "lxvd2x %x5, %22, %3 \n\t" // y5 ++ "xxswapd %x14, 46 \n\t" // exchange real and imag part ++ "xxswapd %x15, 47 \n\t" // exchange real and imag part ++ "lxvd2x %x6, %23, %3 \n\t" // y6 ++ "lxvd2x %x7, %24, %3 \n\t" // y7 ++ ++ "addi %3, %3, 64 \n\t" ++ ++ "addic. %1, %1, -8 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmaddadp 48, 40, 32 \n\t" // alpha_r * x0_r , alpha_r * x0_i ++ "xvmaddadp 49, 41, 32 \n\t" ++ "xvmaddadp 50, 42, 32 \n\t" ++ "xvmaddadp 51, 43, 32 \n\t" ++ ++ "xvmaddadp %x4, 44, 32 \n\t" ++ "xvmaddadp %x5, 45, 32 \n\t" ++ "xvmaddadp %x6, 46, 32 \n\t" ++ "xvmaddadp %x7, 47, 32 \n\t" ++ ++ "xvmaddadp 48, %x8, 33 \n\t" // alpha_i * x0_i , alpha_i * x0_r ++ "xvmaddadp 49, %x9, 33 \n\t" ++ "xvmaddadp 50, %x10, 33 \n\t" ++ "xvmaddadp 51, %x11, 33 \n\t" ++ ++ "xvmaddadp %x4, %x12, 33 \n\t" ++ "xvmaddadp %x5, %x13, 33 \n\t" ++ "xvmaddadp %x6, %x14, 33 \n\t" ++ "xvmaddadp %x7, %x15, 33 \n\t" ++ ++ "stxvd2x 48, 0, %16 \n\t" ++ "stxvd2x 49, %22, %16 \n\t" ++ "stxvd2x 50, %23, %16 \n\t" ++ "stxvd2x 51, %24, %16 \n\t" ++ ++ "addi %16, %16, 64 \n\t" ++ ++ "stxvd2x %x4, 0, %16 \n\t" ++ "stxvd2x %x5, %22, %16 \n\t" ++ "stxvd2x %x6, %23, %16 \n\t" ++ "stxvd2x %x7, %24, %16 \n" ++ ++ "#n=%1 x=%17=%2 y=%0=%3 alpha=(%19,%20) mvecp=%18=%16 o16=%22 o32=%23 o48=%24 ytmp=%16\n" ++ "#t0=%x4 t1=%x5 t2=%x6 t3=%x7 t4=%x8 t5=%x9 t6=%x10 t7=%x11 t8=%x12 t9=%x13 t10=%x14 t11=%x15" ++ : ++ "+m" (*y), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+b" (y), // 3 ++ "=wa" (t0), // 4 ++ "=wa" (t1), // 5 ++ "=wa" (t2), // 6 ++ "=wa" (t3), // 7 ++ "=wa" (t4), // 8 ++ "=wa" (t5), // 9 ++ "=wa" (t6), // 10 ++ "=wa" (t7), // 11 ++ "=wa" (t8), // 12 ++ "=wa" (t9), // 13 ++ "=wa" (t10), // 14 ++ "=wa" (t11), // 15 ++ "=b" (ytmp) // 16 ++ : ++ "m" (*x), ++ "m" (*mvecp), ++ "d" (alpha_r), // 19 ++ "d" (alpha_i), // 20 ++ "16" (mvecp), // 21 ++ "b" (16), // 22 ++ "b" (32), // 23 ++ "b" (48) // 24 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++} +diff --git a/kernel/power/zcopy_microk_power8.c b/kernel/power/zcopy_microk_power8.c +index 73abe084e..5ca34b633 100644 +--- a/kernel/power/zcopy_microk_power8.c ++++ b/kernel/power/zcopy_microk_power8.c +@@ -35,140 +35,121 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_16 1 + +-static void zcopy_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y) __attribute__ ((noinline)); +- +-static void zcopy_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y) ++static void zcopy_kernel_16 (long n, FLOAT *x, FLOAT *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- BLASLONG pre = 384; +- BLASLONG alpha=0; +- +- __asm__ __volatile__ +- ( +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvd2x 50, 0, %2 \n\t" +- "lxvd2x 51, %5, %2 \n\t" +- "lxvd2x 52, %6, %2 \n\t" +- "lxvd2x 53, %7, %2 \n\t" +- "lxvd2x 54, %8, %2 \n\t" +- "lxvd2x 55, %9, %2 \n\t" +- "lxvd2x 56, %10, %2 \n\t" +- "lxvd2x 57, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "stxvd2x 40, 0, %1 \n\t" +- "stxvd2x 41, %5, %1 \n\t" +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "stxvd2x 42, %6, %1 \n\t" +- "stxvd2x 43, %7, %1 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "stxvd2x 44, %8, %1 \n\t" +- "stxvd2x 45, %9, %1 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "stxvd2x 46, %10, %1 \n\t" +- "stxvd2x 47, %11, %1 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "stxvd2x 50, 0, %1 \n\t" +- "stxvd2x 51, %5, %1 \n\t" +- "lxvd2x 50, 0, %2 \n\t" +- "lxvd2x 51, %5, %2 \n\t" +- "stxvd2x 52, %6, %1 \n\t" +- "stxvd2x 53, %7, %1 \n\t" +- "lxvd2x 52, %6, %2 \n\t" +- "lxvd2x 53, %7, %2 \n\t" +- "stxvd2x 54, %8, %1 \n\t" +- "stxvd2x 55, %9, %1 \n\t" +- "lxvd2x 54, %8, %2 \n\t" +- "lxvd2x 55, %9, %2 \n\t" +- "stxvd2x 56, %10, %1 \n\t" +- "stxvd2x 57, %11, %1 \n\t" +- "lxvd2x 56, %10, %2 \n\t" +- "lxvd2x 57, %11, %2 \n\t" +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "stxvd2x 40, 0, %1 \n\t" +- "stxvd2x 41, %5, %1 \n\t" +- "stxvd2x 42, %6, %1 \n\t" +- "stxvd2x 43, %7, %1 \n\t" +- "stxvd2x 44, %8, %1 \n\t" +- "stxvd2x 45, %9, %1 \n\t" +- "stxvd2x 46, %10, %1 \n\t" +- "stxvd2x 47, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "stxvd2x 50, 0, %1 \n\t" +- "stxvd2x 51, %5, %1 \n\t" +- "stxvd2x 52, %6, %1 \n\t" +- "stxvd2x 53, %7, %1 \n\t" +- "stxvd2x 54, %8, %1 \n\t" +- "stxvd2x 55, %9, %1 \n\t" +- "stxvd2x 56, %10, %1 \n\t" +- "stxvd2x 57, %11, %1 \n\t" +- +- +- : +- : +- "r" (i), // 0 +- "r" (y1), // 1 +- "r" (x1), // 2 +- "r" (alpha), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "memory" +- ); +- +-} +- +- ++ __asm__ ++ ( ++ "lxvd2x 32, 0, %2 \n\t" ++ "lxvd2x 33, %5, %2 \n\t" ++ "lxvd2x 34, %6, %2 \n\t" ++ "lxvd2x 35, %7, %2 \n\t" ++ "lxvd2x 36, %8, %2 \n\t" ++ "lxvd2x 37, %9, %2 \n\t" ++ "lxvd2x 38, %10, %2 \n\t" ++ "lxvd2x 39, %11, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 41, %5, %2 \n\t" ++ "lxvd2x 42, %6, %2 \n\t" ++ "lxvd2x 43, %7, %2 \n\t" ++ "lxvd2x 44, %8, %2 \n\t" ++ "lxvd2x 45, %9, %2 \n\t" ++ "lxvd2x 46, %10, %2 \n\t" ++ "lxvd2x 47, %11, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "stxvd2x 32, 0, %3 \n\t" ++ "stxvd2x 33, %5, %3 \n\t" ++ "lxvd2x 32, 0, %2 \n\t" ++ "lxvd2x 33, %5, %2 \n\t" ++ "stxvd2x 34, %6, %3 \n\t" ++ "stxvd2x 35, %7, %3 \n\t" ++ "lxvd2x 34, %6, %2 \n\t" ++ "lxvd2x 35, %7, %2 \n\t" ++ "stxvd2x 36, %8, %3 \n\t" ++ "stxvd2x 37, %9, %3 \n\t" ++ "lxvd2x 36, %8, %2 \n\t" ++ "lxvd2x 37, %9, %2 \n\t" ++ "stxvd2x 38, %10, %3 \n\t" ++ "stxvd2x 39, %11, %3 \n\t" ++ "lxvd2x 38, %10, %2 \n\t" ++ "lxvd2x 39, %11, %2 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ "addi %2, %2, 128 \n\t" ++ ++ "stxvd2x 40, 0, %3 \n\t" ++ "stxvd2x 41, %5, %3 \n\t" ++ "lxvd2x 40, 0, %2 \n\t" ++ "lxvd2x 41, %5, %2 \n\t" ++ "stxvd2x 42, %6, %3 \n\t" ++ "stxvd2x 43, %7, %3 \n\t" ++ "lxvd2x 42, %6, %2 \n\t" ++ "lxvd2x 43, %7, %2 \n\t" ++ "stxvd2x 44, %8, %3 \n\t" ++ "stxvd2x 45, %9, %3 \n\t" ++ "lxvd2x 44, %8, %2 \n\t" ++ "lxvd2x 45, %9, %2 \n\t" ++ "stxvd2x 46, %10, %3 \n\t" ++ "stxvd2x 47, %11, %3 \n\t" ++ "lxvd2x 46, %10, %2 \n\t" ++ "lxvd2x 47, %11, %2 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -16 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "stxvd2x 32, 0, %3 \n\t" ++ "stxvd2x 33, %5, %3 \n\t" ++ "stxvd2x 34, %6, %3 \n\t" ++ "stxvd2x 35, %7, %3 \n\t" ++ "stxvd2x 36, %8, %3 \n\t" ++ "stxvd2x 37, %9, %3 \n\t" ++ "stxvd2x 38, %10, %3 \n\t" ++ "stxvd2x 39, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvd2x 40, 0, %3 \n\t" ++ "stxvd2x 41, %5, %3 \n\t" ++ "stxvd2x 42, %6, %3 \n\t" ++ "stxvd2x 43, %7, %3 \n\t" ++ "stxvd2x 44, %8, %3 \n\t" ++ "stxvd2x 45, %9, %3 \n\t" ++ "stxvd2x 46, %10, %3 \n\t" ++ "stxvd2x 47, %11, %3 \n" ++ ++ "#n=%1 x=%4=%2 y=%0=%3 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11" ++ : ++ "=m" (*y), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+b" (y) // 3 ++ : ++ "m" (*x), ++ "b" (16), // 5 ++ "b" (32), // 6 ++ "b" (48), // 7 ++ "b" (64), // 8 ++ "b" (80), // 9 ++ "b" (96), // 10 ++ "b" (112) // 11 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47" ++ ); ++} +diff --git a/kernel/power/zdot.c b/kernel/power/zdot.c +index bc1a95e22..b83f832b1 100644 +--- a/kernel/power/zdot.c ++++ b/kernel/power/zdot.c +@@ -43,8 +43,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_8 + +-static void zdot_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) __attribute__ ((noinline)); +- + static void zdot_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) + { + BLASLONG register i = 0; +diff --git a/kernel/power/zdot_microk_power8.c b/kernel/power/zdot_microk_power8.c +index 296d3d469..71078b66c 100644 +--- a/kernel/power/zdot_microk_power8.c ++++ b/kernel/power/zdot_microk_power8.c +@@ -34,186 +34,174 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + **************************************************************************************/ + + #define HAVE_KERNEL_8 1 +-static void zdot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y , FLOAT *dot) __attribute__ ((noinline)); + +-static void zdot_kernel_8( BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *dot) ++static void zdot_kernel_8 (long n, double *x, double *y, double *dot) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- FLOAT *x1=x; +- FLOAT *y1=y; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- "xxlxor 32,32,32 \n\t" +- "xxlxor 33,33,33 \n\t" +- "xxlxor 34,34,34 \n\t" +- "xxlxor 35,35,35 \n\t" +- "xxlxor 36,36,36 \n\t" +- "xxlxor 37,37,37 \n\t" +- "xxlxor 38,38,38 \n\t" +- "xxlxor 39,39,39 \n\t" +- +- "dcbt %2, %8 \n\t" +- "dcbt %3, %8 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" // x0_r, x0_i +- "lxvd2x 48, 0, %3 \n\t" // y0_r, y0_i +- "lxvd2x 41, %5, %2 \n\t" // x1_r, x1_i +- "lxvd2x 49, %5, %3 \n\t" // y1_r, y1_i +- "lxvd2x 42, %6, %2 \n\t" // x2_r, x2_i +- "lxvd2x 50, %6, %3 \n\t" // y2_r, y2_i +- "lxvd2x 43, %7, %2 \n\t" // x3_r, x3_i +- "lxvd2x 51, %7, %3 \n\t" // y3_r, y3_i +- +- "xxswapd 52,48 \n\t" // y0_i, y0_r +- "xxswapd 53,49 \n\t" // y1_i, y1_r +- "xxswapd 54,50 \n\t" // y2_i, y2_r +- "xxswapd 55,51 \n\t" // y3_i, y3_r +- +- "addi %2, %2, 64 \n\t" +- "addi %3, %3, 64 \n\t" +- +- +- "lxvd2x 44, 0, %2 \n\t" // x0_r, x0_i +- "lxvd2x 56, 0, %3 \n\t" // y0_r, y0_i +- "lxvd2x 45, %5, %2 \n\t" // x1_r, x1_i +- "lxvd2x 57, %5, %3 \n\t" // y1_r, y1_i +- "lxvd2x 46, %6, %2 \n\t" // x2_r, x2_i +- "lxvd2x 58, %6, %3 \n\t" // y2_r, y2_i +- "lxvd2x 47, %7, %2 \n\t" // x3_r, x3_i +- "lxvd2x 59, %7, %3 \n\t" // y3_r, y3_i +- +- "xxswapd 60,56 \n\t" // y0_i, y0_r +- "xxswapd 61,57 \n\t" // y1_i, y1_r +- "xxswapd 62,58 \n\t" // y2_i, y2_r +- "xxswapd 63,59 \n\t" // y3_i, y3_r +- +- "addi %2, %2, 64 \n\t" +- "addi %3, %3, 64 \n\t" +- +- "addic. %0 , %0 , -8 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2, %8 \n\t" +- "dcbt %3, %8 \n\t" +- +- "xvmaddadp 32, 40, 48 \n\t" // x0_r * y0_r , x0_i * y0_i +- "lxvd2x 48, 0, %3 \n\t" // y0_r, y0_i +- "xvmaddadp 34, 41, 49 \n\t" // x1_r * y1_r , x1_i * y1_i +- "lxvd2x 49, %5, %3 \n\t" // y1_r, y1_i +- +- "xvmaddadp 36, 42, 50 \n\t" // x2_r * y2_r , x2_i * y2_i +- "lxvd2x 50, %6, %3 \n\t" // y2_r, y2_i +- "xvmaddadp 38, 43, 51 \n\t" // x3_r * y3_r , x3_i * y3_i +- "lxvd2x 51, %7, %3 \n\t" // y3_r, y3_i +- +- "xvmaddadp 33, 40, 52 \n\t" // x0_r * y0_i , x0_i * y0_r +- "lxvd2x 40, 0, %2 \n\t" // x0_r, x0_i +- "xvmaddadp 35, 41, 53 \n\t" // x1_r * y1_i , x1_i * y1_r +- "lxvd2x 41, %5, %2 \n\t" // x1_r, x1_i +- +- "xvmaddadp 37, 42, 54 \n\t" // x2_r * y2_i , x2_i * y2_r +- "lxvd2x 42, %6, %2 \n\t" // x2_r, x2_i +- "xvmaddadp 39, 43, 55 \n\t" // x3_r * y3_i , x3_i * y3_r +- "lxvd2x 43, %7, %2 \n\t" // x3_r, x3_i +- +- "xxswapd 52,48 \n\t" // y0_i, y0_r +- "xxswapd 53,49 \n\t" // y1_i, y1_r +- +- "addi %2, %2, 64 \n\t" +- "addi %3, %3, 64 \n\t" +- +- "xxswapd 54,50 \n\t" // y2_i, y2_r +- "xxswapd 55,51 \n\t" // y3_i, y3_r +- +- "xvmaddadp 32, 44, 56 \n\t" // x0_r * y0_r , x0_i * y0_i +- "lxvd2x 56, 0, %3 \n\t" // y0_r, y0_i +- "xvmaddadp 34, 45, 57 \n\t" // x1_r * y1_r , x1_i * y1_i +- "lxvd2x 57, %5, %3 \n\t" // y1_r, y1_i +- "xvmaddadp 36, 46, 58 \n\t" // x2_r * y2_r , x2_i * y2_i +- "lxvd2x 58, %6, %3 \n\t" // y2_r, y2_i +- "xvmaddadp 38, 47, 59 \n\t" // x3_r * y3_r , x3_i * y3_i +- "lxvd2x 59, %7, %3 \n\t" // y3_r, y3_i +- +- "xvmaddadp 33, 44, 60 \n\t" // x0_r * y0_i , x0_i * y0_r +- "lxvd2x 44, 0, %2 \n\t" // x0_r, x0_i +- "xvmaddadp 35, 45, 61 \n\t" // x1_r * y1_i , x1_i * y1_r +- "lxvd2x 45, %5, %2 \n\t" // x1_r, x1_i +- "xvmaddadp 37, 46, 62 \n\t" // x2_r * y2_i , x2_i * y2_r +- "lxvd2x 46, %6, %2 \n\t" // x2_r, x2_i +- "xvmaddadp 39, 47, 63 \n\t" // x3_r * y3_i , x3_i * y3_r +- "lxvd2x 47, %7, %2 \n\t" // x3_r, x3_i +- +- "xxswapd 60,56 \n\t" // y0_i, y0_r +- "xxswapd 61,57 \n\t" // y1_i, y1_r +- +- "addi %2, %2, 64 \n\t" +- "addi %3, %3, 64 \n\t" +- +- "xxswapd 62,58 \n\t" // y2_i, y2_r +- "xxswapd 63,59 \n\t" // y3_i, y3_r +- +- "addic. %0 , %0 , -8 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "xvmaddadp 32, 40, 48 \n\t" // x0_r * y0_r , x0_i * y0_i +- "xvmaddadp 34, 41, 49 \n\t" // x1_r * y1_r , x1_i * y1_i +- "xvmaddadp 36, 42, 50 \n\t" // x2_r * y2_r , x2_i * y2_i +- "xvmaddadp 38, 43, 51 \n\t" // x3_r * y3_r , x3_i * y3_i +- +- "xvmaddadp 33, 40, 52 \n\t" // x0_r * y0_i , x0_i * y0_r +- "xvmaddadp 35, 41, 53 \n\t" // x1_r * y1_i , x1_i * y1_r +- "xvmaddadp 37, 42, 54 \n\t" // x2_r * y2_i , x2_i * y2_r +- "xvmaddadp 39, 43, 55 \n\t" // x3_r * y3_i , x3_i * y3_r +- +- "xvmaddadp 32, 44, 56 \n\t" // x0_r * y0_r , x0_i * y0_i +- "xvmaddadp 34, 45, 57 \n\t" // x1_r * y1_r , x1_i * y1_i +- "xvmaddadp 36, 46, 58 \n\t" // x2_r * y2_r , x2_i * y2_i +- "xvmaddadp 38, 47, 59 \n\t" // x3_r * y3_r , x3_i * y3_i +- +- "xvmaddadp 33, 44, 60 \n\t" // x0_r * y0_i , x0_i * y0_r +- "xvmaddadp 35, 45, 61 \n\t" // x1_r * y1_i , x1_i * y1_r +- "xvmaddadp 37, 46, 62 \n\t" // x2_r * y2_i , x2_i * y2_r +- "xvmaddadp 39, 47, 63 \n\t" // x3_r * y3_i , x3_i * y3_r +- +- +- "xvadddp 32, 32, 34 \n\t" +- "xvadddp 36, 36, 38 \n\t" +- +- "xvadddp 33, 33, 35 \n\t" +- "xvadddp 37, 37, 39 \n\t" +- +- "xvadddp 32, 32, 36 \n\t" +- "xvadddp 33, 33, 37 \n\t" +- +- "stxvd2x 32, 0, %4 \n\t" +- "stxvd2x 33, %5, %4 \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (n), // 1 +- "r" (x1), // 2 +- "r" (y1), // 3 +- "r" (dot), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (pre) // 8 +- : "cr0", "%0", "%2" , "%3", "memory" +- ); +- +-} +- +- ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ "dcbt 0, %3 \n\t" ++ ++ "xxlxor 32, 32, 32 \n\t" ++ "xxlxor 33, 33, 33 \n\t" ++ "xxlxor 34, 34, 34 \n\t" ++ "xxlxor 35, 35, 35 \n\t" ++ "xxlxor 36, 36, 36 \n\t" ++ "xxlxor 37, 37, 37 \n\t" ++ "xxlxor 38, 38, 38 \n\t" ++ "xxlxor 39, 39, 39 \n\t" ++ ++ "lxvd2x 40, 0, %2 \n\t" // x0_r, x0_i ++ "lxvd2x 48, 0, %3 \n\t" // y0_r, y0_i ++ "lxvd2x 41, %7, %2 \n\t" // x1_r, x1_i ++ "lxvd2x 49, %7, %3 \n\t" // y1_r, y1_i ++ "lxvd2x 42, %8, %2 \n\t" // x2_r, x2_i ++ "lxvd2x 50, %8, %3 \n\t" // y2_r, y2_i ++ "lxvd2x 43, %9, %2 \n\t" // x3_r, x3_i ++ "lxvd2x 51, %9, %3 \n\t" // y3_r, y3_i ++ ++ "xxswapd 0, 48 \n\t" // y0_i, y0_r ++ "xxswapd 1, 49 \n\t" // y1_i, y1_r ++ "xxswapd 2, 50 \n\t" // y2_i, y2_r ++ "xxswapd 3, 51 \n\t" // y3_i, y3_r ++ ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, 64 \n\t" ++ ++ "lxvd2x 44, 0, %2 \n\t" // x0_r, x0_i ++ "lxvd2x 4, 0, %3 \n\t" // y0_r, y0_i ++ "lxvd2x 45, %7, %2 \n\t" // x1_r, x1_i ++ "lxvd2x 5, %7, %3 \n\t" // y1_r, y1_i ++ "lxvd2x 46, %8, %2 \n\t" // x2_r, x2_i ++ "lxvd2x 6, %8, %3 \n\t" // y2_r, y2_i ++ "lxvd2x 47, %9, %2 \n\t" // x3_r, x3_i ++ "lxvd2x 7, %9, %3 \n\t" // y3_r, y3_i ++ ++ "xxswapd 8, 4 \n\t" // y0_i, y0_r ++ "xxswapd 9, 5 \n\t" // y1_i, y1_r ++ "xxswapd 10, 6 \n\t" // y2_i, y2_r ++ "xxswapd 11, 7 \n\t" // y3_i, y3_r ++ ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, 64 \n\t" ++ ++ "addic. %1, %1, -8 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvmaddadp 32, 40, 48 \n\t" // x0_r * y0_r , x0_i * y0_i ++ "lxvd2x 48, 0, %3 \n\t" // y0_r, y0_i ++ "xvmaddadp 34, 41, 49 \n\t" // x1_r * y1_r , x1_i * y1_i ++ "lxvd2x 49, %7, %3 \n\t" // y1_r, y1_i ++ ++ "xvmaddadp 36, 42, 50 \n\t" // x2_r * y2_r , x2_i * y2_i ++ "lxvd2x 50, %8, %3 \n\t" // y2_r, y2_i ++ "xvmaddadp 38, 43, 51 \n\t" // x3_r * y3_r , x3_i * y3_i ++ "lxvd2x 51, %9, %3 \n\t" // y3_r, y3_i ++ ++ "xvmaddadp 33, 40, 0 \n\t" // x0_r * y0_i , x0_i * y0_r ++ "lxvd2x 40, 0, %2 \n\t" // x0_r, x0_i ++ "xvmaddadp 35, 41, 1 \n\t" // x1_r * y1_i , x1_i * y1_r ++ "lxvd2x 41, %7, %2 \n\t" // x1_r, x1_i ++ ++ "xvmaddadp 37, 42, 2 \n\t" // x2_r * y2_i , x2_i * y2_r ++ "lxvd2x 42, %8, %2 \n\t" // x2_r, x2_i ++ "xvmaddadp 39, 43, 3 \n\t" // x3_r * y3_i , x3_i * y3_r ++ "lxvd2x 43, %9, %2 \n\t" // x3_r, x3_i ++ ++ "xxswapd 0,48 \n\t" // y0_i, y0_r ++ "xxswapd 1,49 \n\t" // y1_i, y1_r ++ ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, 64 \n\t" ++ ++ "xxswapd 2,50 \n\t" // y2_i, y2_r ++ "xxswapd 3,51 \n\t" // y3_i, y3_r ++ ++ "xvmaddadp 32, 44, 4 \n\t" // x0_r * y0_r , x0_i * y0_i ++ "lxvd2x 4, 0, %3 \n\t" // y0_r, y0_i ++ "xvmaddadp 34, 45, 5 \n\t" // x1_r * y1_r , x1_i * y1_i ++ "lxvd2x 5, %7, %3 \n\t" // y1_r, y1_i ++ "xvmaddadp 36, 46, 6 \n\t" // x2_r * y2_r , x2_i * y2_i ++ "lxvd2x 6, %8, %3 \n\t" // y2_r, y2_i ++ "xvmaddadp 38, 47, 7 \n\t" // x3_r * y3_r , x3_i * y3_i ++ "lxvd2x 7, %9, %3 \n\t" // y3_r, y3_i ++ ++ "xvmaddadp 33, 44, 8 \n\t" // x0_r * y0_i , x0_i * y0_r ++ "lxvd2x 44, 0, %2 \n\t" // x0_r, x0_i ++ "xvmaddadp 35, 45, 9 \n\t" // x1_r * y1_i , x1_i * y1_r ++ "lxvd2x 45, %7, %2 \n\t" // x1_r, x1_i ++ "xvmaddadp 37, 46, 10 \n\t" // x2_r * y2_i , x2_i * y2_r ++ "lxvd2x 46, %8, %2 \n\t" // x2_r, x2_i ++ "xvmaddadp 39, 47, 11 \n\t" // x3_r * y3_i , x3_i * y3_r ++ "lxvd2x 47, %9, %2 \n\t" // x3_r, x3_i ++ ++ "xxswapd 8,4 \n\t" // y0_i, y0_r ++ "xxswapd 9,5 \n\t" // y1_i, y1_r ++ ++ "addi %2, %2, 64 \n\t" ++ "addi %3, %3, 64 \n\t" ++ ++ "xxswapd 10,6 \n\t" // y2_i, y2_r ++ "xxswapd 11,7 \n\t" // y3_i, y3_r ++ ++ "addic. %1, %1, -8 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmaddadp 32, 40, 48 \n\t" // x0_r * y0_r , x0_i * y0_i ++ "xvmaddadp 34, 41, 49 \n\t" // x1_r * y1_r , x1_i * y1_i ++ "xvmaddadp 36, 42, 50 \n\t" // x2_r * y2_r , x2_i * y2_i ++ "xvmaddadp 38, 43, 51 \n\t" // x3_r * y3_r , x3_i * y3_i ++ ++ "xvmaddadp 33, 40, 0 \n\t" // x0_r * y0_i , x0_i * y0_r ++ "xvmaddadp 35, 41, 1 \n\t" // x1_r * y1_i , x1_i * y1_r ++ "xvmaddadp 37, 42, 2 \n\t" // x2_r * y2_i , x2_i * y2_r ++ "xvmaddadp 39, 43, 3 \n\t" // x3_r * y3_i , x3_i * y3_r ++ ++ "xvmaddadp 32, 44, 4 \n\t" // x0_r * y0_r , x0_i * y0_i ++ "xvmaddadp 34, 45, 5 \n\t" // x1_r * y1_r , x1_i * y1_i ++ "xvmaddadp 36, 46, 6 \n\t" // x2_r * y2_r , x2_i * y2_i ++ "xvmaddadp 38, 47, 7 \n\t" // x3_r * y3_r , x3_i * y3_i ++ ++ "xvmaddadp 33, 44, 8 \n\t" // x0_r * y0_i , x0_i * y0_r ++ "xvmaddadp 35, 45, 9 \n\t" // x1_r * y1_i , x1_i * y1_r ++ "xvmaddadp 37, 46, 10 \n\t" // x2_r * y2_i , x2_i * y2_r ++ "xvmaddadp 39, 47, 11 \n\t" // x3_r * y3_i , x3_i * y3_r ++ ++ "xvadddp 32, 32, 34 \n\t" ++ "xvadddp 36, 36, 38 \n\t" ++ ++ "xvadddp 33, 33, 35 \n\t" ++ "xvadddp 37, 37, 39 \n\t" ++ ++ "xvadddp 32, 32, 36 \n\t" ++ "xvadddp 33, 33, 37 \n\t" ++ ++ "stxvd2x 32, 0, %6 \n\t" ++ "stxvd2x 33, %7, %6 \n" ++ ++ "#n=%1 x=%4=%2 y=%5=%3 dot=%0=%6 o16=%7 o32=%8 o48=%9" ++ : ++ "=m" (*dot), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "+b" (y) // 3 ++ : ++ "m" (*x), ++ "m" (*y), ++ "b" (dot), // 6 ++ "b" (16), // 7 ++ "b" (32), // 8 ++ "b" (48) // 9 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51","vs0","vs1","vs2","vs3", ++ "vs4","vs5","vs6","vs7","vs8","vs9","vs10","vs11" ++ ); ++} +diff --git a/kernel/power/zscal.c b/kernel/power/zscal.c +index 410fc9840..14d677f24 100644 +--- a/kernel/power/zscal.c ++++ b/kernel/power/zscal.c +@@ -47,15 +47,15 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifndef HAVE_KERNEL_8 + +-static void zscal_kernel_8(BLASLONG n, FLOAT *x, FLOAT *alpha) ++static void zscal_kernel_8(BLASLONG n, FLOAT *x, FLOAT da_r, FLOAT da_i) + { + + BLASLONG i=0; + FLOAT *x1=x; +- FLOAT alpha_r1=alpha[0]; +- FLOAT alpha_r2=alpha[1]; +- FLOAT alpha_i1=alpha[2]; +- FLOAT alpha_i2=alpha[3]; ++ FLOAT alpha_r1=da_r; ++ FLOAT alpha_r2=da_r; ++ FLOAT alpha_i1=-da_i; ++ FLOAT alpha_i2=da_i; + FLOAT temp00, temp01, temp10, temp11, temp20, temp21, temp30, temp31; + FLOAT x0_r, x0_i, x1_r, x1_i, x2_r, x2_i, x3_r, x3_i; + +@@ -116,7 +116,6 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r,FLOAT da_i, F + BLASLONG inc_x2; + BLASLONG ip = 0; + FLOAT temp; +- FLOAT alpha[4] __attribute__ ((aligned (16)));; + BLASLONG n1; + + if ( n <= 0 ) +@@ -147,11 +146,7 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da_r,FLOAT da_i, F + n1 = n & -8; + if ( n1 > 0 ) + { +- alpha[0] = da_r; +- alpha[1] = da_r; +- alpha[2] = -da_i; +- alpha[3] = da_i; +- zscal_kernel_8(n1, x, alpha); ++ zscal_kernel_8(n1, x, da_r, da_i); + i=n1; + ip = n1 * 2; + +diff --git a/kernel/power/zscal_microk_power8.c b/kernel/power/zscal_microk_power8.c +index 5e09d8d79..aba9029a0 100644 +--- a/kernel/power/zscal_microk_power8.c ++++ b/kernel/power/zscal_microk_power8.c +@@ -38,187 +38,202 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_8 1 + +-static void zscal_kernel_8( BLASLONG n, FLOAT *x, FLOAT *alpha) __attribute__ ((noinline)); +- +-static void zscal_kernel_8( BLASLONG n, FLOAT *x, FLOAT *alpha) ++static void zscal_kernel_8 (long n, double *x, double alpha_r, double alpha_i) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *x2=x+1; +- BLASLONG pre = 384; +- +- __asm__ __volatile__ +- ( +- +- "lxvd2x 32, 0, %3 \n\t" // alpha_r , alpha_r +- "lxvd2x 33, %5, %3 \n\t" // -alpha_i , alpha_i +- "addi %1, %1, -8 \n\t" +- +- "dcbt %2, %4 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" // x0_r, x0_i +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -8 \n\t" +- "ble 2f \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "dcbt %2, %4 \n\t" +- +- "xvmuldp 48, 40, 32 \n\t" // x0_r * alpha_r, x0_i * alpha_r +- "xvmuldp 49, 41, 32 \n\t" +- "xvmuldp 50, 42, 32 \n\t" +- "xvmuldp 51, 43, 32 \n\t" +- "xvmuldp 52, 44, 32 \n\t" +- "xvmuldp 53, 45, 32 \n\t" +- "xvmuldp 54, 46, 32 \n\t" +- "xvmuldp 55, 47, 32 \n\t" +- +- "xxswapd 56, 40 \n\t" +- "xxswapd 57, 41 \n\t" +- "xxswapd 58, 42 \n\t" +- "xxswapd 59, 43 \n\t" +- "xxswapd 60, 44 \n\t" +- "xxswapd 61, 45 \n\t" +- "xxswapd 62, 46 \n\t" +- "xxswapd 63, 47 \n\t" +- +- "xvmuldp 56, 56, 33 \n\t" // x0_i * -alpha_i, x0_r * alpha_i +- "xvmuldp 57, 57, 33 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" // x0_r, x0_i +- "lxvd2x 41, %5, %2 \n\t" +- +- "xvmuldp 58, 58, 33 \n\t" +- "xvmuldp 59, 59, 33 \n\t" +- +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- +- "xvmuldp 60, 60, 33 \n\t" +- "xvmuldp 61, 61, 33 \n\t" +- +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- +- "xvmuldp 62, 62, 33 \n\t" +- "xvmuldp 63, 63, 33 \n\t" +- +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "xvadddp 48, 48 , 56 \n\t" +- "xvadddp 49, 49 , 57 \n\t" +- "xvadddp 50, 50 , 58 \n\t" +- "xvadddp 51, 51 , 59 \n\t" +- +- "stxvd2x 48, 0, %1 \n\t" +- "stxvd2x 49, %5, %1 \n\t" +- +- "xvadddp 52, 52 , 60 \n\t" +- "xvadddp 53, 53 , 61 \n\t" +- +- "stxvd2x 50, %6, %1 \n\t" +- "stxvd2x 51, %7, %1 \n\t" +- +- "xvadddp 54, 54 , 62 \n\t" +- "xvadddp 55, 55 , 63 \n\t" +- +- "stxvd2x 52, %8, %1 \n\t" +- "stxvd2x 53, %9, %1 \n\t" +- "stxvd2x 54, %10, %1 \n\t" +- "stxvd2x 55, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- "addi %2, %2, 128 \n\t" +- +- "addic. %0 , %0 , -8 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- "xvmuldp 48, 40, 32 \n\t" // x0_r * alpha_r, x0_i * alpha_r +- "xvmuldp 49, 41, 32 \n\t" +- "xvmuldp 50, 42, 32 \n\t" +- "xvmuldp 51, 43, 32 \n\t" +- "xvmuldp 52, 44, 32 \n\t" +- "xvmuldp 53, 45, 32 \n\t" +- "xvmuldp 54, 46, 32 \n\t" +- "xvmuldp 55, 47, 32 \n\t" +- +- "xxswapd 56, 40 \n\t" +- "xxswapd 57, 41 \n\t" +- "xxswapd 58, 42 \n\t" +- "xxswapd 59, 43 \n\t" +- "xxswapd 60, 44 \n\t" +- "xxswapd 61, 45 \n\t" +- "xxswapd 62, 46 \n\t" +- "xxswapd 63, 47 \n\t" +- +- "xvmuldp 56, 56, 33 \n\t" // x0_i * -alpha_i, x0_r * alpha_i +- "xvmuldp 57, 57, 33 \n\t" +- "xvmuldp 58, 58, 33 \n\t" +- "xvmuldp 59, 59, 33 \n\t" +- "xvmuldp 60, 60, 33 \n\t" +- "xvmuldp 61, 61, 33 \n\t" +- "xvmuldp 62, 62, 33 \n\t" +- "xvmuldp 63, 63, 33 \n\t" +- +- "xvadddp 48, 48 , 56 \n\t" +- "xvadddp 49, 49 , 57 \n\t" +- "xvadddp 50, 50 , 58 \n\t" +- "xvadddp 51, 51 , 59 \n\t" +- "xvadddp 52, 52 , 60 \n\t" +- "xvadddp 53, 53 , 61 \n\t" +- "xvadddp 54, 54 , 62 \n\t" +- "xvadddp 55, 55 , 63 \n\t" +- +- "stxvd2x 48, 0, %1 \n\t" +- "stxvd2x 49, %5, %1 \n\t" +- "stxvd2x 50, %6, %1 \n\t" +- "stxvd2x 51, %7, %1 \n\t" +- "stxvd2x 52, %8, %1 \n\t" +- "stxvd2x 53, %9, %1 \n\t" +- "stxvd2x 54, %10, %1 \n\t" +- "stxvd2x 55, %11, %1 \n\t" +- +- +- : +- : +- "r" (i), // 0 +- "r" (x2), // 1 +- "r" (x1), // 2 +- "r" (alpha), // 3 +- "r" (pre), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "memory" +- ); +- +-} +- +- ++ __vector double t0; ++ __vector double t1; ++ __vector double t2; ++ __vector double t3; ++ __vector double t4; ++ __vector double t5; ++ __vector double t6; ++ __vector double t7; ++ __vector double t8; ++ __vector double t9; ++ __vector double t10; ++ __vector double t11; ++ ++ __asm__ ++ ( ++ "dcbt 0, %2 \n\t" ++ ++ "xsnegdp 33, %x16 \n\t" // -alpha_i ++ "xxspltd 32, %x15, 0 \n\t" // alpha_r , alpha_r ++ "xxmrghd 33, 33, %x16 \n\t" // -alpha_i , alpha_i ++ ++ "lxvd2x 40, 0, %2 \n\t" // x0_r, x0_i ++ "lxvd2x 41, %17, %2 \n\t" ++ "lxvd2x 42, %18, %2 \n\t" ++ "lxvd2x 43, %19, %2 \n\t" ++ "lxvd2x 44, %20, %2 \n\t" ++ "lxvd2x 45, %21, %2 \n\t" ++ "lxvd2x 46, %22, %2 \n\t" ++ "lxvd2x 47, %23, %2 \n\t" ++ ++ "addi %2, %2, 128 \n\t" ++ ++ "addic. %1, %1, -8 \n\t" ++ "ble 2f \n\t" ++ ++ ".p2align 5 \n" ++ "1: \n\t" ++ ++ "xvmuldp 48, 40, 32 \n\t" // x0_r * alpha_r, x0_i * alpha_r ++ "xvmuldp 49, 41, 32 \n\t" ++ "xvmuldp 50, 42, 32 \n\t" ++ "xvmuldp 51, 43, 32 \n\t" ++ "xvmuldp %x3, 44, 32 \n\t" ++ "xvmuldp %x4, 45, 32 \n\t" ++ "xvmuldp %x5, 46, 32 \n\t" ++ "xvmuldp %x6, 47, 32 \n\t" ++ ++ "xxswapd %x7, 40 \n\t" ++ "xxswapd %x8, 41 \n\t" ++ "xxswapd %x9, 42 \n\t" ++ "xxswapd %x10, 43 \n\t" ++ "xxswapd %x11, 44 \n\t" ++ "xxswapd %x12, 45 \n\t" ++ "xxswapd %x13, 46 \n\t" ++ "xxswapd %x14, 47 \n\t" ++ ++ "xvmuldp %x7, %x7, 33 \n\t" // x0_i * -alpha_i, x0_r * alpha_i ++ "xvmuldp %x8, %x8, 33 \n\t" ++ ++ "lxvd2x 40, 0, %2 \n\t" // x0_r, x0_i ++ "lxvd2x 41, %17, %2 \n\t" ++ ++ "xvmuldp %x9, %x9, 33 \n\t" ++ "xvmuldp %x10, %x10, 33 \n\t" ++ ++ "lxvd2x 42, %18, %2 \n\t" ++ "lxvd2x 43, %19, %2 \n\t" ++ ++ "xvmuldp %x11, %x11, 33 \n\t" ++ "xvmuldp %x12, %x12, 33 \n\t" ++ ++ "lxvd2x 44, %20, %2 \n\t" ++ "lxvd2x 45, %21, %2 \n\t" ++ ++ "xvmuldp %x13, %x13, 33 \n\t" ++ "xvmuldp %x14, %x14, 33 \n\t" ++ ++ "lxvd2x 46, %22, %2 \n\t" ++ "lxvd2x 47, %23, %2 \n\t" ++ ++ "addi %2, %2, -128 \n\t" ++ ++ "xvadddp 48, 48, %x7 \n\t" ++ "xvadddp 49, 49, %x8 \n\t" ++ "xvadddp 50, 50, %x9 \n\t" ++ "xvadddp 51, 51, %x10 \n\t" ++ ++ "stxvd2x 48, 0, %2 \n\t" ++ "stxvd2x 49, %17, %2 \n\t" ++ ++ "xvadddp %x3, %x3, %x11 \n\t" ++ "xvadddp %x4, %x4, %x12 \n\t" ++ ++ "stxvd2x 50, %18, %2 \n\t" ++ "stxvd2x 51, %19, %2 \n\t" ++ ++ "xvadddp %x5, %x5, %x13 \n\t" ++ "xvadddp %x6, %x6, %x14 \n\t" ++ ++ "stxvd2x %x3, %20, %2 \n\t" ++ "stxvd2x %x4, %21, %2 \n\t" ++ "stxvd2x %x5, %22, %2 \n\t" ++ "stxvd2x %x6, %23, %2 \n\t" ++ ++ "addi %2, %2, 256 \n\t" ++ ++ "addic. %1, %1, -8 \n\t" ++ "bgt 1b \n" ++ ++ "2: \n\t" ++ ++ "xvmuldp 48, 40, 32 \n\t" // x0_r * alpha_r, x0_i * alpha_r ++ "xvmuldp 49, 41, 32 \n\t" ++ "xvmuldp 50, 42, 32 \n\t" ++ "xvmuldp 51, 43, 32 \n\t" ++ "xvmuldp %x3, 44, 32 \n\t" ++ "xvmuldp %x4, 45, 32 \n\t" ++ "xvmuldp %x5, 46, 32 \n\t" ++ "xvmuldp %x6, 47, 32 \n\t" ++ ++ "xxswapd %x7, 40 \n\t" ++ "xxswapd %x8, 41 \n\t" ++ "xxswapd %x9, 42 \n\t" ++ "xxswapd %x10, 43 \n\t" ++ "xxswapd %x11, 44 \n\t" ++ "xxswapd %x12, 45 \n\t" ++ "xxswapd %x13, 46 \n\t" ++ "xxswapd %x14, 47 \n\t" ++ ++ "addi %2, %2, -128 \n\t" ++ ++ "xvmuldp %x7, %x7, 33 \n\t" // x0_i * -alpha_i, x0_r * alpha_i ++ "xvmuldp %x8, %x8, 33 \n\t" ++ "xvmuldp %x9, %x9, 33 \n\t" ++ "xvmuldp %x10, %x10, 33 \n\t" ++ "xvmuldp %x11, %x11, 33 \n\t" ++ "xvmuldp %x12, %x12, 33 \n\t" ++ "xvmuldp %x13, %x13, 33 \n\t" ++ "xvmuldp %x14, %x14, 33 \n\t" ++ ++ "xvadddp 48, 48, %x7 \n\t" ++ "xvadddp 49, 49, %x8 \n\t" ++ "xvadddp 50, 50, %x9 \n\t" ++ "xvadddp 51, 51, %x10 \n\t" ++ ++ "stxvd2x 48, 0, %2 \n\t" ++ "stxvd2x 49, %17, %2 \n\t" ++ ++ "xvadddp %x3, %x3, %x11 \n\t" ++ "xvadddp %x4, %x4, %x12 \n\t" ++ ++ "stxvd2x 50, %18, %2 \n\t" ++ "stxvd2x 51, %19, %2 \n\t" ++ ++ "xvadddp %x5, %x5, %x13 \n\t" ++ "xvadddp %x6, %x6, %x14 \n\t" ++ ++ "stxvd2x %x3, %20, %2 \n\t" ++ "stxvd2x %x4, %21, %2 \n\t" ++ "stxvd2x %x5, %22, %2 \n\t" ++ "stxvd2x %x6, %23, %2 \n" ++ ++ "#n=%1 x=%0=%2 alpha=(%15,%16) o16=%17 o32=%18 o48=%19 o64=%20 o80=%21 o96=%22 o112=%23\n" ++ "#t0=%x3 t1=%x4 t2=%x5 t3=%x6 t4=%x7 t5=%x8 t6=%x9 t7=%x10 t8=%x11 t9=%x12 t10=%x13 t11=%x14" ++ : ++ "+m" (*x), ++ "+r" (n), // 1 ++ "+b" (x), // 2 ++ "=wa" (t0), // 3 ++ "=wa" (t1), // 4 ++ "=wa" (t2), // 5 ++ "=wa" (t3), // 6 ++ "=wa" (t4), // 7 ++ "=wa" (t5), // 8 ++ "=wa" (t6), // 9 ++ "=wa" (t7), // 10 ++ "=wa" (t8), // 11 ++ "=wa" (t9), // 12 ++ "=wa" (t10), // 13 ++ "=wa" (t11) // 14 ++ : ++ "d" (alpha_r), // 15 ++ "d" (alpha_i), // 16 ++ "b" (16), // 17 ++ "b" (32), // 18 ++ "b" (48), // 19 ++ "b" (64), // 20 ++ "b" (80), // 21 ++ "b" (96), // 22 ++ "b" (112) // 23 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51" ++ ); ++} +diff --git a/kernel/power/zswap_microk_power8.c b/kernel/power/zswap_microk_power8.c +index 9e5623752..54391ba5d 100644 +--- a/kernel/power/zswap_microk_power8.c ++++ b/kernel/power/zswap_microk_power8.c +@@ -35,146 +35,123 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #define HAVE_KERNEL_16 1 + +-static void zswap_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y) __attribute__ ((noinline)); +- +-static void zswap_kernel_16( BLASLONG n, FLOAT *x, FLOAT *y) ++static void ++zswap_kernel_16 (long n, double *x, double *y) + { +- +- +- BLASLONG i = n; +- BLASLONG o16 = 16; +- BLASLONG o32 = 32; +- BLASLONG o48 = 48; +- BLASLONG o64 = 64; +- BLASLONG o80 = 80; +- BLASLONG o96 = 96; +- BLASLONG o112 = 112; +- FLOAT *x1=x; +- FLOAT *y1=y; +- FLOAT *x2=x+1; +- FLOAT *y2=y+1; +- BLASLONG pre = 384; +- BLASLONG alpha=0; +- +- __asm__ __volatile__ +- ( +- +- "addi %3, %3, -8 \n\t" +- "addi %4, %4, -8 \n\t" +- +- ".align 5 \n\t" +- "1: \n\t" +- +- "lxvd2x 32, 0, %2 \n\t" +- "lxvd2x 33, %5, %2 \n\t" +- "lxvd2x 34, %6, %2 \n\t" +- "lxvd2x 35, %7, %2 \n\t" +- "lxvd2x 36, %8, %2 \n\t" +- "lxvd2x 37, %9, %2 \n\t" +- "lxvd2x 38, %10, %2 \n\t" +- "lxvd2x 39, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvd2x 40, 0, %2 \n\t" +- "lxvd2x 41, %5, %2 \n\t" +- "lxvd2x 42, %6, %2 \n\t" +- "lxvd2x 43, %7, %2 \n\t" +- "lxvd2x 44, %8, %2 \n\t" +- "lxvd2x 45, %9, %2 \n\t" +- "lxvd2x 46, %10, %2 \n\t" +- "lxvd2x 47, %11, %2 \n\t" +- +- "addi %2, %2, 128 \n\t" +- +- "lxvd2x 48, 0, %1 \n\t" +- "lxvd2x 49, %5, %1 \n\t" +- "lxvd2x 50, %6, %1 \n\t" +- "lxvd2x 51, %7, %1 \n\t" +- "lxvd2x 52, %8, %1 \n\t" +- "lxvd2x 53, %9, %1 \n\t" +- "lxvd2x 54, %10, %1 \n\t" +- "lxvd2x 55, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "lxvd2x 56, 0, %1 \n\t" +- "lxvd2x 57, %5, %1 \n\t" +- "lxvd2x 58, %6, %1 \n\t" +- "lxvd2x 59, %7, %1 \n\t" +- "lxvd2x 60, %8, %1 \n\t" +- "lxvd2x 61, %9, %1 \n\t" +- "lxvd2x 62, %10, %1 \n\t" +- "lxvd2x 63, %11, %1 \n\t" +- +- "addi %1, %1, 128 \n\t" +- +- "stxvd2x 32, 0, %3 \n\t" +- "stxvd2x 33, %5, %3 \n\t" +- "stxvd2x 34, %6, %3 \n\t" +- "stxvd2x 35, %7, %3 \n\t" +- "stxvd2x 36, %8, %3 \n\t" +- "stxvd2x 37, %9, %3 \n\t" +- "stxvd2x 38, %10, %3 \n\t" +- "stxvd2x 39, %11, %3 \n\t" +- +- "addi %3, %3, 128 \n\t" +- +- "stxvd2x 40, 0, %3 \n\t" +- "stxvd2x 41, %5, %3 \n\t" +- "stxvd2x 42, %6, %3 \n\t" +- "stxvd2x 43, %7, %3 \n\t" +- "stxvd2x 44, %8, %3 \n\t" +- "stxvd2x 45, %9, %3 \n\t" +- "stxvd2x 46, %10, %3 \n\t" +- "stxvd2x 47, %11, %3 \n\t" +- +- "addi %3, %3, 128 \n\t" +- +- "stxvd2x 48, 0, %4 \n\t" +- "stxvd2x 49, %5, %4 \n\t" +- "stxvd2x 50, %6, %4 \n\t" +- "stxvd2x 51, %7, %4 \n\t" +- "stxvd2x 52, %8, %4 \n\t" +- "stxvd2x 53, %9, %4 \n\t" +- "stxvd2x 54, %10, %4 \n\t" +- "stxvd2x 55, %11, %4 \n\t" +- +- "addi %4, %4, 128 \n\t" +- +- "stxvd2x 56, 0, %4 \n\t" +- "stxvd2x 57, %5, %4 \n\t" +- "stxvd2x 58, %6, %4 \n\t" +- "stxvd2x 59, %7, %4 \n\t" +- "stxvd2x 60, %8, %4 \n\t" +- "stxvd2x 61, %9, %4 \n\t" +- "stxvd2x 62, %10, %4 \n\t" +- "stxvd2x 63, %11, %4 \n\t" +- +- "addi %4, %4, 128 \n\t" +- +- "addic. %0 , %0 , -16 \n\t" +- "bgt 1b \n\t" +- +- "2: \n\t" +- +- : +- : +- "r" (i), // 0 +- "r" (y1), // 1 +- "r" (x1), // 2 +- "r" (y2), // 3 +- "r" (x2), // 4 +- "r" (o16), // 5 +- "r" (o32), // 6 +- "r" (o48), // 7 +- "r" (o64), // 8 +- "r" (o80), // 9 +- "r" (o96), // 10 +- "r" (o112) // 11 +- : "cr0", "%0", "%2" , "%1", "%3", "%4", "memory" +- ); +- +-} +- +- ++ __asm__ ++ ( ++ ".p2align 5 \n" ++ "1: \n\t" ++ "lxvd2x 32, 0, %4 \n\t" ++ "lxvd2x 33, %5, %4 \n\t" ++ "lxvd2x 34, %6, %4 \n\t" ++ "lxvd2x 35, %7, %4 \n\t" ++ "lxvd2x 36, %8, %4 \n\t" ++ "lxvd2x 37, %9, %4 \n\t" ++ "lxvd2x 38, %10, %4 \n\t" ++ "lxvd2x 39, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ ++ "lxvd2x 40, 0, %4 \n\t" ++ "lxvd2x 41, %5, %4 \n\t" ++ "lxvd2x 42, %6, %4 \n\t" ++ "lxvd2x 43, %7, %4 \n\t" ++ "lxvd2x 44, %8, %4 \n\t" ++ "lxvd2x 45, %9, %4 \n\t" ++ "lxvd2x 46, %10, %4 \n\t" ++ "lxvd2x 47, %11, %4 \n\t" ++ ++ "addi %4, %4, -128 \n\t" ++ ++ "lxvd2x 48, 0, %3 \n\t" ++ "lxvd2x 49, %5, %3 \n\t" ++ "lxvd2x 50, %6, %3 \n\t" ++ "lxvd2x 51, %7, %3 \n\t" ++ "lxvd2x 0, %8, %3 \n\t" ++ "lxvd2x 1, %9, %3 \n\t" ++ "lxvd2x 2, %10, %3 \n\t" ++ "lxvd2x 3, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "lxvd2x 4, 0, %3 \n\t" ++ "lxvd2x 5, %5, %3 \n\t" ++ "lxvd2x 6, %6, %3 \n\t" ++ "lxvd2x 7, %7, %3 \n\t" ++ "lxvd2x 8, %8, %3 \n\t" ++ "lxvd2x 9, %9, %3 \n\t" ++ "lxvd2x 10, %10, %3 \n\t" ++ "lxvd2x 11, %11, %3 \n\t" ++ ++ "addi %3, %3, -128 \n\t" ++ ++ "stxvd2x 32, 0, %3 \n\t" ++ "stxvd2x 33, %5, %3 \n\t" ++ "stxvd2x 34, %6, %3 \n\t" ++ "stxvd2x 35, %7, %3 \n\t" ++ "stxvd2x 36, %8, %3 \n\t" ++ "stxvd2x 37, %9, %3 \n\t" ++ "stxvd2x 38, %10, %3 \n\t" ++ "stxvd2x 39, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvd2x 40, 0, %3 \n\t" ++ "stxvd2x 41, %5, %3 \n\t" ++ "stxvd2x 42, %6, %3 \n\t" ++ "stxvd2x 43, %7, %3 \n\t" ++ "stxvd2x 44, %8, %3 \n\t" ++ "stxvd2x 45, %9, %3 \n\t" ++ "stxvd2x 46, %10, %3 \n\t" ++ "stxvd2x 47, %11, %3 \n\t" ++ ++ "addi %3, %3, 128 \n\t" ++ ++ "stxvd2x 48, 0, %4 \n\t" ++ "stxvd2x 49, %5, %4 \n\t" ++ "stxvd2x 50, %6, %4 \n\t" ++ "stxvd2x 51, %7, %4 \n\t" ++ "stxvd2x 0, %8, %4 \n\t" ++ "stxvd2x 1, %9, %4 \n\t" ++ "stxvd2x 2, %10, %4 \n\t" ++ "stxvd2x 3, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ ++ "stxvd2x 4, 0, %4 \n\t" ++ "stxvd2x 5, %5, %4 \n\t" ++ "stxvd2x 6, %6, %4 \n\t" ++ "stxvd2x 7, %7, %4 \n\t" ++ "stxvd2x 8, %8, %4 \n\t" ++ "stxvd2x 9, %9, %4 \n\t" ++ "stxvd2x 10, %10, %4 \n\t" ++ "stxvd2x 11, %11, %4 \n\t" ++ ++ "addi %4, %4, 128 \n\t" ++ "addic. %2, %2, -16 \n\t" ++ "bgt 1b \n" ++ ++ "#n=%2 x=%0=%3 y=%1=%4 o16=%5 o32=%6 o48=%7 o64=%8 o80=%9 o96=%10 o112=%11" ++ : ++ "+m" (*x), ++ "+m" (*y), ++ "+r" (n), // 2 ++ "+b" (x), // 3 ++ "+b" (y) // 4 ++ : ++ "b" (16), // 5 ++ "b" (32), // 6 ++ "b" (48), // 7 ++ "b" (64), // 8 ++ "b" (80), // 9 ++ "b" (96), // 10 ++ "b" (112) // 11 ++ : ++ "cr0", ++ "vs32","vs33","vs34","vs35","vs36","vs37","vs38","vs39", ++ "vs40","vs41","vs42","vs43","vs44","vs45","vs46","vs47", ++ "vs48","vs49","vs50","vs51","vs0","vs1","vs2","vs3", ++ "vs4","vs5","vs6","vs7","vs8","vs9","vs10","vs11" ++ ); ++} From 2a03585de63152150bc135f146ff0934c46a5a4e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 5 Aug 2017 13:18:19 -0500 Subject: [PATCH 1394/2394] gitignore everything in /etc/spack except /etc/spack/defaults (#4459) * gitignore everything in /etc/spack except /etc/spack/defaults * Don't ignore subsubdirectories of /etc/spack/defaults --- .gitignore | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 1a95d49377a..49bc74063ea 100644 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,9 @@ *~ .DS_Store .idea -/etc/spack/licenses -/etc/spack/*.yaml +# Ignore everything in /etc/spack except /etc/spack/defaults +/etc/spack/* +!/etc/spack/defaults /etc/spackconfig /share/spack/dotkit /share/spack/modules From 0117e1b76b8a727581c273b8106bb7a81827ef4f Mon Sep 17 00:00:00 2001 From: Abhinav Bhatele Date: Sat, 5 Aug 2017 11:32:40 -0700 Subject: [PATCH 1395/2394] add proxy-app tag to the lulesh package (#4951) --- var/spack/repos/builtin/packages/lulesh/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/lulesh/package.py b/var/spack/repos/builtin/packages/lulesh/package.py index 6a07976377e..94f3ad5b144 100644 --- a/var/spack/repos/builtin/packages/lulesh/package.py +++ b/var/spack/repos/builtin/packages/lulesh/package.py @@ -33,6 +33,7 @@ class Lulesh(Package): homepage = "https://codesign.llnl.gov/lulesh.php" url = "https://codesign.llnl.gov/lulesh/lulesh2.0.3.tgz" + tags = ['proxy-app'] version("2.0.3", "336644a8750f71c7c6b9d2960976e7aa") patch("remove_defaults.patch") From 9f6c9d8afaa6df40e28e6cd874b68588354be0fb Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Sat, 5 Aug 2017 19:33:07 +0100 Subject: [PATCH 1396/2394] Version: dev -> develop (for openfoam-org) (#4974) --- var/spack/repos/builtin/packages/openfoam-org/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py index bc0658597ab..98e1ba56029 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/package.py +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -79,7 +79,7 @@ class OpenfoamOrg(Package): version('4.1', '318a446c4ae6366c7296b61184acd37c', url=baseurl + '/OpenFOAM-4.x/archive/version-4.1.tar.gz') - version('dev', git='https://github.com/OpenFOAM/OpenFOAM-dev.git') + version('develop', git='https://github.com/OpenFOAM/OpenFOAM-dev.git') variant('int64', default=False, description='Compile with 64-bit label') From ab0ea3cec426984ab2e2630853966e589b270ae1 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sat, 5 Aug 2017 11:33:24 -0700 Subject: [PATCH 1397/2394] Fix libbsd's cdefs.h to be compatible with gcc 4.8.x (#4979) * Fix cdefs macro to be compatible with gcc 4.8.x See the discussion in #4945 (after the merge) for additional background. libbsd builds with gcc@5.4.0 on CentOS 7, but not with the system's gcc@4.8.5. Others have reported problems with gcc@4.8.3 on Fedora 19. The problem boils down to the lack of support for the clang extension `__has_include_next`. The immediate symptom seems to be the pre-processor using defining macro like this ``` ``` then then tripping over an expansion of it like this: ``` blah.h:13:23: error: missing binary operator before token "(" ``` This patch changes the macro definition to: ``` ``` which swallows the arguments with which the macro is invoked. The end result is that libbsd builds for me on CentOS 7 using the system compiler. * Apply this patch for any compiler version before 5 This includes subversions of 4, like 4.8.5. --- .../repos/builtin/packages/libbsd/cdefs.h.patch | 15 +++++++++++++++ .../repos/builtin/packages/libbsd/package.py | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libbsd/cdefs.h.patch diff --git a/var/spack/repos/builtin/packages/libbsd/cdefs.h.patch b/var/spack/repos/builtin/packages/libbsd/cdefs.h.patch new file mode 100644 index 00000000000..acd3843a063 --- /dev/null +++ b/var/spack/repos/builtin/packages/libbsd/cdefs.h.patch @@ -0,0 +1,15 @@ +--- a/nclude/bsd/sys/cdefs.h.orig 2017-08-04 16:34:56.404995800 -0700 ++++ b/include/bsd/sys/cdefs.h 2017-08-04 16:35:19.345043883 -0700 +@@ -25,10 +25,10 @@ + */ + + #ifndef __has_include +-#define __has_include 1 ++#define __has_include(X) 1 + #endif + #ifndef __has_include_next +-#define __has_include_next 1 ++#define __has_include_next(X) 1 + #endif + + #ifdef LIBBSD_OVERLAY diff --git a/var/spack/repos/builtin/packages/libbsd/package.py b/var/spack/repos/builtin/packages/libbsd/package.py index ab64c4babdc..1f0edc090bc 100644 --- a/var/spack/repos/builtin/packages/libbsd/package.py +++ b/var/spack/repos/builtin/packages/libbsd/package.py @@ -36,3 +36,5 @@ class Libbsd(AutotoolsPackage): url = "https://libbsd.freedesktop.org/releases/libbsd-0.8.6.tar.xz" version('0.8.6', '4ab7bec639af17d0aacb50222b479110') + + patch('cdefs.h.patch', when='%gcc@:4') From db74f4c3a154e8ce3ac289aca0f17f08c526de2b Mon Sep 17 00:00:00 2001 From: snehring Date: Sat, 5 Aug 2017 14:53:09 -0500 Subject: [PATCH 1398/2394] Add a new package for IcedTea (#4804) * alsa-lib: new package * cups: new package * icedtea: new package * icedtea: adding JAVA_HOME variable * alsa: removing placeholder * icedtea: typo fix * alsa: fixing formattting * icedtea: formatting fixes and cleanup * icedtea: additional cleanup * jdk: adding provides('java') to jdk, setting jdk to default java. * icedtea: adding jdk as a dependency * java: changing depends_on('jdk') and similar entries to depends_on('java') * icedtea: removing unused imports, trying to placate flake8. * fastqc: fixing flake8 error * bazel: fixing typo in java dependency * jdk: changing provides java to a range * icedtea: cleaning up. Splitting up checksums. * icedtea: jdk dependency is build only --- etc/spack/defaults/packages.yaml | 1 + .../builtin/packages/alsa-lib/package.py | 36 ++++ .../repos/builtin/packages/ant/package.py | 2 +- .../repos/builtin/packages/antlr/package.py | 2 +- .../repos/builtin/packages/bazel/package.py | 2 +- .../repos/builtin/packages/beast2/package.py | 2 +- .../repos/builtin/packages/cups/package.py | 44 +++++ .../repos/builtin/packages/fastqc/package.py | 5 +- .../repos/builtin/packages/fseq/package.py | 2 +- .../repos/builtin/packages/gradle/package.py | 2 +- .../builtin/packages/graphviz/package.py | 2 +- .../repos/builtin/packages/hadoop/package.py | 2 +- .../repos/builtin/packages/icedtea/package.py | 181 ++++++++++++++++++ .../repos/builtin/packages/jdk/package.py | 3 + .../repos/builtin/packages/jmol/package.py | 2 +- .../repos/builtin/packages/maven/package.py | 2 +- .../builtin/packages/nextflow/package.py | 2 +- .../repos/builtin/packages/octave/package.py | 8 +- .../repos/builtin/packages/opencv/package.py | 2 +- .../repos/builtin/packages/openmpi/package.py | 4 +- .../repos/builtin/packages/picard/package.py | 4 +- .../builtin/packages/py-jpype/package.py | 2 +- .../repos/builtin/packages/r-rjava/package.py | 2 +- var/spack/repos/builtin/packages/r/package.py | 2 +- .../repos/builtin/packages/rose/package.py | 2 +- .../repos/builtin/packages/sbt/package.py | 2 +- .../repos/builtin/packages/scala/package.py | 2 +- .../repos/builtin/packages/spark/package.py | 4 +- .../repos/builtin/packages/stc/package.py | 2 +- .../repos/builtin/packages/thrift/package.py | 4 +- .../builtin/packages/trimmomatic/package.py | 4 +- 31 files changed, 301 insertions(+), 35 deletions(-) create mode 100644 var/spack/repos/builtin/packages/alsa-lib/package.py create mode 100644 var/spack/repos/builtin/packages/cups/package.py create mode 100644 var/spack/repos/builtin/packages/icedtea/package.py diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index 36c304d6bf8..df785c5aa5e 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -23,6 +23,7 @@ packages: elf: [elfutils] golang: [gcc] ipp: [intel-parallel-studio+ipp] + java: [jdk] lapack: [openblas] mkl: [intel-parallel-studio+mkl] mpe: [mpe2] diff --git a/var/spack/repos/builtin/packages/alsa-lib/package.py b/var/spack/repos/builtin/packages/alsa-lib/package.py new file mode 100644 index 00000000000..8d92b398e89 --- /dev/null +++ b/var/spack/repos/builtin/packages/alsa-lib/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class AlsaLib(AutotoolsPackage): + """The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI + functionality to the Linux operating system. alsa-lib contains the user + space library that developers compile ALSA applications against.""" + + homepage = "https://www.alsa-project.org" + url = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.1.4.1.tar.bz2" + + version('1.1.4.1', '29fa3e69122d3cf3e8f0e01a0cb1d183') diff --git a/var/spack/repos/builtin/packages/ant/package.py b/var/spack/repos/builtin/packages/ant/package.py index b2fb6476941..a2ba25f3ac9 100644 --- a/var/spack/repos/builtin/packages/ant/package.py +++ b/var/spack/repos/builtin/packages/ant/package.py @@ -41,7 +41,7 @@ class Ant(Package): version('1.9.7', 'a2fd9458c76700b7be51ef12f07d4bb1') version('1.9.6', '29b7507c9053e301d2b85091f2aec6f0') - depends_on('jdk') + depends_on('java') def install(self, spec, prefix): env['ANT_HOME'] = self.prefix diff --git a/var/spack/repos/builtin/packages/antlr/package.py b/var/spack/repos/builtin/packages/antlr/package.py index 4de61e6b10f..b2e2b0a6a58 100644 --- a/var/spack/repos/builtin/packages/antlr/package.py +++ b/var/spack/repos/builtin/packages/antlr/package.py @@ -45,7 +45,7 @@ class Antlr(AutotoolsPackage): variant('python', default=False, description='Enable ANTLR for Python') extends('python', when='+python') - depends_on('jdk', type=('build', 'run'), when='+java') + depends_on('java', type=('build', 'run'), when='+java') def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index 17b7992a1b7..a9573dbe2b6 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -42,7 +42,7 @@ class Bazel(Package): version('0.2.2b', '75081804f073cbd194da1a07b16cba5f') version('0.2.2', '644bc4ea7f429d835e74f255dc1054e6') - depends_on('jdk@8:') + depends_on('java@8:') depends_on('zip') patch('fix_env_handling.patch') diff --git a/var/spack/repos/builtin/packages/beast2/package.py b/var/spack/repos/builtin/packages/beast2/package.py index ceeb94ab7f3..77acaa01f34 100644 --- a/var/spack/repos/builtin/packages/beast2/package.py +++ b/var/spack/repos/builtin/packages/beast2/package.py @@ -38,7 +38,7 @@ class Beast2(Package): version('2.4.6', 'b446f4ab121df9b991f7bb7ec94c8217') - depends_on('jdk') + depends_on('java') def setup_environment(self, spack_env, run_env): run_env.set('BEAST', self.prefix) diff --git a/var/spack/repos/builtin/packages/cups/package.py b/var/spack/repos/builtin/packages/cups/package.py new file mode 100644 index 00000000000..311e779b8c9 --- /dev/null +++ b/var/spack/repos/builtin/packages/cups/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cups(AutotoolsPackage): + """CUPS is the standards-based, open source printing system developed by + Apple Inc. for macOS and other UNIX-like operating systems. CUPS uses the + Internet Printing Protocol (IPP) to support printing to local and network + printers. This provides the core CUPS libraries, not a complete CUPS + install.""" + + homepage = "https://www.cups.org/" + url = "https://github.com/apple/cups/releases/download/v2.2.3/cups-2.2.3-source.tar.gz" + + version('2.2.3', '006a8156680a516e43c59034e31df8bf') + + depends_on('gnutls') + + def configure_args(self): + args = ['--enable-gnutls', '--with-components=core'] + return args diff --git a/var/spack/repos/builtin/packages/fastqc/package.py b/var/spack/repos/builtin/packages/fastqc/package.py index ae06252fc11..d4abd8acebf 100644 --- a/var/spack/repos/builtin/packages/fastqc/package.py +++ b/var/spack/repos/builtin/packages/fastqc/package.py @@ -36,7 +36,7 @@ class Fastqc(Package): version('0.11.5', '3524f101c0ab0bae77c7595983170a76') version('0.11.4', '104ff2e0e9aebf5bee1f6b068a059b0d') - depends_on('jdk', type='run') + depends_on('java', type='run') depends_on('perl') # for fastqc "script", any perl will do patch('fastqc.patch', level=0) @@ -58,4 +58,5 @@ def setup_environment(self, spack_env, run_env): """Add to the path; the package has a script at the top level. """ - run_env.prepend_path('PATH', join_path(self.spec['jdk'].prefix, 'bin')) + run_env.prepend_path('PATH', join_path(self.spec['java'].prefix, + 'bin')) diff --git a/var/spack/repos/builtin/packages/fseq/package.py b/var/spack/repos/builtin/packages/fseq/package.py index b0d17eb69ee..71f450ec420 100644 --- a/var/spack/repos/builtin/packages/fseq/package.py +++ b/var/spack/repos/builtin/packages/fseq/package.py @@ -33,7 +33,7 @@ class Fseq(Package): version('1.84', 'f9124ad0f45c60f3a7eb74dde8c945b9') - depends_on('jdk', type=('build', 'run')) + depends_on('java', type=('build', 'run')) def install(self, spec, prefix): install_tree('bin', prefix.bin) diff --git a/var/spack/repos/builtin/packages/gradle/package.py b/var/spack/repos/builtin/packages/gradle/package.py index d39ba5e685b..1eef10463e4 100644 --- a/var/spack/repos/builtin/packages/gradle/package.py +++ b/var/spack/repos/builtin/packages/gradle/package.py @@ -77,7 +77,7 @@ class Gradle(Package): version('0.8', '73a0ed51b6ec00a7d3a9d242d51aae60') version('0.7', 'a8417dbbd62f7013002cb55a44f12cc3') - depends_on('jdk') + depends_on('java') def install(self, spec, prefix): copy_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py index 9efbc85789c..2f39c8ce1f9 100644 --- a/var/spack/repos/builtin/packages/graphviz/package.py +++ b/var/spack/repos/builtin/packages/graphviz/package.py @@ -104,7 +104,7 @@ class Graphviz(AutotoolsPackage): depends_on('libtool') depends_on('pkg-config', type='build') - depends_on('jdk', when='+java') + depends_on('java', when='+java') depends_on('python@2:2.8', when='+python') def patch(self): diff --git a/var/spack/repos/builtin/packages/hadoop/package.py b/var/spack/repos/builtin/packages/hadoop/package.py index 4981a0bb58e..3aa632b9df0 100644 --- a/var/spack/repos/builtin/packages/hadoop/package.py +++ b/var/spack/repos/builtin/packages/hadoop/package.py @@ -36,7 +36,7 @@ class Hadoop(Package): version('2.6.4', '37019f13d7dcd819727be158440b9442') - depends_on('jdk', type='run') + depends_on('java', type='run') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/icedtea/package.py b/var/spack/repos/builtin/packages/icedtea/package.py new file mode 100644 index 00000000000..7fd096cc77b --- /dev/null +++ b/var/spack/repos/builtin/packages/icedtea/package.py @@ -0,0 +1,181 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class Icedtea(AutotoolsPackage): + """The IcedTea project provides a harness to build the source code from + http://openjdk.java.net using Free Software build tools and adds a number + of key features to the upstream OpenJDK codebase. IcedTea requires an + existing IcedTea or OpenJDK install to build.""" + + homepage = "http://icedtea.classpath.org/wiki/Main_Page" + url = "http://icedtea.wildebeest.org/download/source/icedtea-3.4.0.tar.gz" + + version('3.4.0', 'eba66765b92794495e16b83f23640872') + + provides('java@8', when='@3.4.0:3.99.99') + variant('X', default=False, description="Build with GUI support.") + variant('shenandoah', default=False, + description="Build with the shenandoah gc. Only for version 3+") + + depends_on('pkg-config@0.9.0:', type='build') + depends_on('gmake', type='build') + depends_on('cups') + depends_on('jdk', type='build') + # X11 deps required for building even when headless + depends_on('libx11', when='~X', type='build') + depends_on('xproto', when='~X', type='build') + depends_on('libxext', when='~X', type='build') + depends_on('libxtst', when='~X', type='build') + depends_on('libxi', when='~X', type='build') + depends_on('libxt', when='~X', type='build') + depends_on('libxinerama', when='~X', type='build') + depends_on('libxrender', when='~X', type='build') + depends_on('libxcomposite', when='~X', type='build') + depends_on('libxau', when='~X', type='build') + depends_on('libxdmcp', when='~X', type='build') + depends_on('gtkplus+X', when='~X', type='build') + + depends_on('libx11', when='+X') + depends_on('xproto', when='+X') + depends_on('libxext', when='+X') + depends_on('libxtst', when='+X') + depends_on('libxi', when='+X') + depends_on('libxt', when='+X') + depends_on('libxinerama', when='+X') + depends_on('libxrender', when='+X') + depends_on('libxcomposite', when='+X') + depends_on('libxau', when='+X') + depends_on('libxdmcp', when='+X') + depends_on('gtkplus+X', when='+X') + + depends_on('freetype@2:') + depends_on('wget', type='build') + depends_on('giflib') + depends_on('libpng') + depends_on('jpeg') + depends_on('lcms') + depends_on('zlib') + depends_on('alsa-lib') + + force_autoreconf = True + + resource(name='corba', placement='corba_src', + sha512=('f0579608ab1342df231c4542dab1c40e648cda8e9780ea584fd476' + '79b07c93508cbfa85f0406d8aa8b9d528fc5bd99c9d41469568fbec' + '41a6456a13d914ac71c'), + url='http://icedtea.wildebeest.org/download/drops/icedtea8/3.4.0/corba.tar.xz', + when='@3.4.0') + resource(name='hotspot', placement='hotspot_src', + sha512=('29bc953d283f0a0a464fa150e2c4d71b0adaa29da67246843d230f3' + '70b5a20227fb40ef6a7e3b93f10b0cdec18b0cd2bbbceeaea3c9db4' + 'd64c158cc23babbad2'), + url='http://icedtea.wildebeest.org/download/drops/icedtea8/3.4.0/hotspot.tar.xz', + when='@3.4.0') + resource(name='jaxp', placement='jaxp_src', + sha512=('ef3ed47815e6d15f40c5947fee1058c252ac673f70b6bf7c30505fa' + 'a12fa5cbab8168d816abe7791dc88acec457744883db4c0af23fb21' + '66bbb709e870685bcd'), + url='http://icedtea.wildebeest.org/download/drops/icedtea8/3.4.0/jaxp.tar.xz', + when='@3.4.0') + resource(name='jaxws', placement='jaxws_src', + sha512=('867cac2919e715190596ae4f73fa42c6cba839ba48ae940adcef20a' + 'bfb23ffeeaa2501c4aedc214b3595bc4e2a4eea9fa7e7cac62a3420' + 'a11fb30a1f7edc9254'), + url='http://icedtea.wildebeest.org/download/drops/icedtea8/3.4.0/jaxws.tar.xz', + when='@3.4.0') + resource(name='jdk', placement='jdk_src', + sha512=('180d7b4435e465d68ed0b420b42dddc598c872075e225b8885ae183' + '3fa4ab5034ce5083c4dfba516a21b2d472321b37a01ba92793e17c7' + '8e9fddb1e254f12065'), + url='http://icedtea.wildebeest.org/download/drops/icedtea8/3.4.0/jdk.tar.xz', + when='@3.4.0') + resource(name='langtools', placement='langtools_src', + sha512=('0663f40b07de88cd7939557bf7fdb92077d7ca2132e369caefa82db' + '887261ea02102864d33ec0fef3b2c80dd366d25dbc1a95144139498' + 'be581dfabe913e4312'), + url='http://icedtea.wildebeest.org/download/drops/icedtea8/3.4.0/langtools.tar.xz', + when='@3.4.0') + resource(name='openjdk', placement='openjdk_src', + sha512=('f3cca223bd39c0202dd1a65a38ca17024b6cb5c82d833946ec1b7d2' + '8d205833b4dd2dadde505a1c2384e3b28ff0d21a4f175e064b8ac82' + 'aa8a07508e53cdc722'), + url='http://icedtea.wildebeest.org/download/drops/icedtea8/3.4.0/openjdk.tar.xz', + when='@3.4.0') + resource(name='nashorn', placement='nashorn_src', + sha512=('79b5095bab447d1911696bc1e328fb72c08764c0139cab14a28c0f6' + 'c2e49a2d96bb06fbbb85523b2586672cb0f13709c3158823d5ac3f3' + 'fe3f0f88402d3cb246'), + url='http://icedtea.wildebeest.org/download/drops/icedtea8/3.4.0/nashorn.tar.xz', + when='@3.4.0') + resource(name='shenandoah', placement='shenandoah_src', + sha512=('0f085e87c63679314ef322b3f4b854792d46539d5530dd75a7fd45b' + '8b6d663f58469be2808ea5fb4bf31f6c5369cb78f28e1599f748e19' + '31ba7040136306eb20'), + url='http://icedtea.wildebeest.org/download/drops/icedtea8/3.4.0/shenandoah.tar.xz', + when='@3.4.0') + + def configure_args(self): + os.environ['POTENTIAL_CXX'] = os.environ['CXX'] + os.environ['POTENTIAL_CC'] = os.environ['CC'] + os.environ['WGET'] = self.spec['wget'].command.path + args = [] + if '~X' in self.spec: + args.append('--enable-headless') + if '+shenandoah' in self.spec: + args.append('--with-hotspot-build=shenandoah') + args.append('--with-hotspot-src-zip=' + self.stage[9].archive_file) + args.append('--with-hotspot-checksum=no') + else: + args.append('--with-hotspot-src-zip=' + self.stage[2].archive_file) + args.append('--with-hotspot-checksum=no') + args += [ + '--with-corba-src-zip=' + self.stage[1].archive_file, + '--with-cobra-checksum=no', + '--with-jaxp-src-zip=' + self.stage[3].archive_file, + '--with-jaxp-checksum=no', + '--with-jaxws-src-zip=' + self.stage[4].archive_file, + '--with-jaxws-checksum=no', + '--with-jdk-src-zip=' + self.stage[5].archive_file, + '--with-jdk-checksum=no', + '--with-langtools-src-zip=' + self.stage[6].archive_file, + '--with-langtools-checksum=no', + '--with-openjdk-src-zip=' + self.stage[7].archive_file, + '--with-openjdk-checksum=no', + '--with-nashorn-src-zip=' + self.stage[8].archive_file, + '--with-nashorn-checksum=no', '--disable-maintainer-mode' + '--disable-downloading', '--disable-system-pcsc', + '--disable-system-sctp', '--disable-system-kerberos', + '--with-jdk-home=' + self.spec['jdk'].prefix + ] + return args + + def setup_environment(self, spack_env, run_env): + run_env.set('JAVA_HOME', self.spec.prefix) + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + spack_env.set('JAVA_HOME', self.prefix) diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index 249b03a74f8..65dad76ce27 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -60,6 +60,9 @@ class Jdk(Package): # away you go. version('7u80-b0', '6152f8a7561acf795ca4701daa10a965') + provides('java@8', when='@8u0:8u999') + provides('java@7', when='@7u0:7u999') + def url_for_version(self, version): url = "http://download.oracle.com/otn-pub/java/jdk/{0}/jdk-{1}-linux-x64.tar.gz" version = str(version) diff --git a/var/spack/repos/builtin/packages/jmol/package.py b/var/spack/repos/builtin/packages/jmol/package.py index 3529515d3f4..f07e07f866b 100644 --- a/var/spack/repos/builtin/packages/jmol/package.py +++ b/var/spack/repos/builtin/packages/jmol/package.py @@ -35,7 +35,7 @@ class Jmol(Package): version('14.8.0', '3c9f4004b9e617ea3ea0b78ab32397ea') - depends_on('jdk', type='run') + depends_on('java', type='run') def install(self, spec, prefix): copy_tree('jmol-{0}'.format(self.version), prefix) diff --git a/var/spack/repos/builtin/packages/maven/package.py b/var/spack/repos/builtin/packages/maven/package.py index 347f05a7644..550ce467e25 100644 --- a/var/spack/repos/builtin/packages/maven/package.py +++ b/var/spack/repos/builtin/packages/maven/package.py @@ -34,7 +34,7 @@ class Maven(Package): version('3.3.9', '516923b3955b6035ba6b0a5b031fbd8b') - depends_on('jdk') + depends_on('java') def install(self, spec, prefix): # install pre-built distribution diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index a44df66b074..b9c52f34b79 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -40,7 +40,7 @@ class Nextflow(Package): version('0.17.3', '5df00105fb1ce6fd0ba019ae735d9617', expand=False) - depends_on('jdk') + depends_on('java') def install(self, spec, prefix): mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index f18be0186f9..29896172b15 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -93,7 +93,7 @@ class Octave(AutotoolsPackage): depends_on('gnuplot', when='+gnuplot') depends_on('image-magick', when='+magick') depends_on('hdf5', when='+hdf5') - depends_on('jdk', when='+jdk') # TODO: requires Java 6 ? + depends_on('java', when='+jdk') # TODO: requires Java 6 ? depends_on('llvm', when='+llvm') # depends_on('opengl', when='+opengl') # TODO: add package depends_on('qhull', when='+qhull') @@ -186,9 +186,9 @@ def configure_args(self): if '+jdk' in spec: config_args.extend([ - "--with-java-homedir=%s" % spec['jdk'].prefix, - "--with-java-includedir=%s" % spec['jdk'].prefix.include, - "--with-java-libdir=%s" % spec['jdk'].prefix.lib + "--with-java-homedir=%s" % spec['java'].prefix, + "--with-java-includedir=%s" % spec['java'].prefix.include, + "--with-java-libdir=%s" % spec['java'].prefix.lib ]) else: config_args.append("--disable-java") diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index e0743e17c66..33adadc15ed 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -72,7 +72,7 @@ class Opencv(CMakePackage): depends_on('gtkplus', when='+gtk') depends_on('vtk', when='+vtk') depends_on('qt', when='+qt') - depends_on('jdk', when='+java') + depends_on('java', when='+java') depends_on('py-numpy', when='+python', type=('build', 'run')) extends('python', when='+python') diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 30a70d948f8..7fc50928db1 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -201,7 +201,7 @@ class Openmpi(AutotoolsPackage): depends_on('hwloc') depends_on('hwloc +cuda', when='+cuda') - depends_on('jdk', when='+java') + depends_on('java', when='+java') depends_on('sqlite', when='+sqlite3@:1.11') conflicts('+cuda', when='@:1.6') # CUDA support was added in 1.7 @@ -308,7 +308,7 @@ def configure_args(self): config_args.extend([ '--enable-java', '--enable-mpi-java', - '--with-jdk-dir={0}'.format(spec['jdk'].prefix) + '--with-jdk-dir={0}'.format(spec['java'].prefix) ]) else: config_args.extend([ diff --git a/var/spack/repos/builtin/packages/picard/package.py b/var/spack/repos/builtin/packages/picard/package.py index 3705c13f755..f03561a5a7f 100644 --- a/var/spack/repos/builtin/packages/picard/package.py +++ b/var/spack/repos/builtin/packages/picard/package.py @@ -44,7 +44,7 @@ class Picard(Package): version('1.140', '308f95516d94c1f3273a4e7e2b315ec2', url='https://github.com/broadinstitute/picard/releases/download/1.140/picard-tools-1.140.zip') - depends_on('jdk@8:', type='run') + depends_on('java@8:', type='run') def install(self, spec, prefix): mkdirp(prefix.bin) @@ -63,7 +63,7 @@ def install(self, spec, prefix): # Munge the helper script to explicitly point to java and the # jar file. - java = join_path(self.spec['jdk'].prefix, 'bin', 'java') + java = join_path(self.spec['java'].prefix, 'bin', 'java') kwargs = {'ignore_absent': False, 'backup': False, 'string': False} filter_file('^java', java, script, **kwargs) filter_file('picard.jar', join_path(prefix.bin, 'picard.jar'), diff --git a/var/spack/repos/builtin/packages/py-jpype/package.py b/var/spack/repos/builtin/packages/py-jpype/package.py index b82a43ca2ff..b9117f75367 100644 --- a/var/spack/repos/builtin/packages/py-jpype/package.py +++ b/var/spack/repos/builtin/packages/py-jpype/package.py @@ -39,6 +39,6 @@ class PyJpype(PythonPackage): depends_on('python@2.6:') depends_on('py-setuptools', type='build') - depends_on('jdk', type=('build', 'run')) + depends_on('java', type=('build', 'run')) # extra requirements # depends_on('py-numpy@1.6:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rjava/package.py b/var/spack/repos/builtin/packages/r-rjava/package.py index 7baab54baa8..55d8282cd75 100644 --- a/var/spack/repos/builtin/packages/r-rjava/package.py +++ b/var/spack/repos/builtin/packages/r-rjava/package.py @@ -34,4 +34,4 @@ class RRjava(RPackage): version('0.9-8', '51ae0d690ceed056ebe7c4be71fc6c7a') - depends_on('jdk') + depends_on('java') diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index e884283ce27..886a238b064 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -84,7 +84,7 @@ class R(AutotoolsPackage): depends_on('libxt', when='+X') depends_on('curl') depends_on('pcre') - depends_on('jdk') + depends_on('java') patch('zlib.patch', when='@:3.3.2') diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py index 0e2265f571c..8ba397df557 100644 --- a/var/spack/repos/builtin/packages/rose/package.py +++ b/var/spack/repos/builtin/packages/rose/package.py @@ -60,7 +60,7 @@ class Rose(Package): variant('fortran', default=False, description='Enable fortran language support') variant('java', default=False, description='Enable java language support') - depends_on('jdk', when='+java') + depends_on('java', when='+java') variant('z3', default=False, description='Enable z3 theorem prover') depends_on('z3', when='+z3') diff --git a/var/spack/repos/builtin/packages/sbt/package.py b/var/spack/repos/builtin/packages/sbt/package.py index 27be7cc54c2..6747e51b3f9 100644 --- a/var/spack/repos/builtin/packages/sbt/package.py +++ b/var/spack/repos/builtin/packages/sbt/package.py @@ -34,7 +34,7 @@ class Sbt(Package): version('0.13.12', 'cec3071d46ef13334c8097cc3467ff28') - depends_on('jdk') + depends_on('java') def install(self, spec, prefix): shutil.copytree('bin', join_path(prefix, 'bin'), symlinks=True) diff --git a/var/spack/repos/builtin/packages/scala/package.py b/var/spack/repos/builtin/packages/scala/package.py index dd1ab78f6b9..35a49f6be57 100644 --- a/var/spack/repos/builtin/packages/scala/package.py +++ b/var/spack/repos/builtin/packages/scala/package.py @@ -40,7 +40,7 @@ class Scala(Package): version('2.11.11', '3f5b76001f60cbc31111ddb81de5ea07') version('2.20.6', 'd79dc9fdc627b73289306bdaec81ca98') - depends_on('jdk') + depends_on('java') def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py index c625f6b82ab..ddd825018e5 100644 --- a/var/spack/repos/builtin/packages/spark/package.py +++ b/var/spack/repos/builtin/packages/spark/package.py @@ -39,7 +39,7 @@ class Spark(Package): variant('hadoop', default=False, description='Build with Hadoop') - depends_on('jdk', type=('build', 'run')) + depends_on('java', type=('build', 'run')) depends_on('hadoop', when='+hadoop', type=('build', 'run')) version('2.1.0', '21d4471e78250775b1fa7c0e6c3a1326') @@ -68,7 +68,7 @@ def install_dir(dirname): @when('+hadoop') def setup_environment(self, spack_env, run_env): - env['JAVA_HOME'] = self.spec['jdk'].prefix + env['JAVA_HOME'] = self.spec['java'].prefix # spack_env.set('JAVA_HOME', self.spec['jdk'].prefix) hadoop = self.spec['hadoop'].command diff --git a/var/spack/repos/builtin/packages/stc/package.py b/var/spack/repos/builtin/packages/stc/package.py index 7365943a14c..24037676799 100644 --- a/var/spack/repos/builtin/packages/stc/package.py +++ b/var/spack/repos/builtin/packages/stc/package.py @@ -34,7 +34,7 @@ class Stc(AutotoolsPackage): version('0.7.3', '6bf769f406f6c33d1c134521373718d3') - depends_on('jdk') + depends_on('java') depends_on('ant') depends_on('turbine') diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py index 306f8d9de5d..598fd194d9b 100644 --- a/var/spack/repos/builtin/packages/thrift/package.py +++ b/var/spack/repos/builtin/packages/thrift/package.py @@ -46,7 +46,7 @@ class Thrift(Package): variant('python', default=True, description="Build support for python") - depends_on('jdk') + depends_on('java') depends_on('autoconf', type='build') depends_on('automake', type='build') depends_on('libtool', type='build') @@ -63,7 +63,7 @@ class Thrift(Package): def install(self, spec, prefix): env['PY_PREFIX'] = prefix - env['JAVA_HOME'] = spec['jdk'].prefix + env['JAVA_HOME'] = spec['java'].prefix # configure options options = ['--prefix=%s' % prefix] diff --git a/var/spack/repos/builtin/packages/trimmomatic/package.py b/var/spack/repos/builtin/packages/trimmomatic/package.py index 54c80d2ba06..42f0e689737 100644 --- a/var/spack/repos/builtin/packages/trimmomatic/package.py +++ b/var/spack/repos/builtin/packages/trimmomatic/package.py @@ -39,7 +39,7 @@ class Trimmomatic(Package): version('0.36', '8549130d86b6f0382b1a71a2eb45de39') version('0.33', '924fc8eb38fdff71740a0e05d32d6a2b') - depends_on('jdk@8:', type='run') + depends_on('java@8:', type='run') def install(self, spec, prefix): mkdirp(prefix.bin) @@ -58,7 +58,7 @@ def install(self, spec, prefix): # Munge the helper script to explicitly point to java and the # jar file. - java = join_path(self.spec['jdk'].prefix, 'bin', 'java') + java = join_path(self.spec['java'].prefix, 'bin', 'java') kwargs = {'ignore_absent': False, 'backup': False, 'string': False} filter_file('^java', java, script, **kwargs) filter_file('trimmomatic.jar', join_path(prefix.bin, jar_file), From 0acee2f4b191d3d18e5715bee3d61078e41b7034 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 5 Aug 2017 16:05:12 -0500 Subject: [PATCH 1399/2394] Add a new package for fastjar (#4983) --- .../repos/builtin/packages/fastjar/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/fastjar/package.py diff --git a/var/spack/repos/builtin/packages/fastjar/package.py b/var/spack/repos/builtin/packages/fastjar/package.py new file mode 100644 index 00000000000..86ad4b2d683 --- /dev/null +++ b/var/spack/repos/builtin/packages/fastjar/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Fastjar(AutotoolsPackage): + """Fastjar is a version of Sun's 'jar' utility, written entirely in C.""" + + homepage = "http://savannah.nongnu.org/projects/fastjar/" + url = "http://download.savannah.gnu.org/releases/fastjar/fastjar-0.98.tar.gz" + + version('0.98', 'd2d264d343d4d0e1575832cc1023c3bf') + + depends_on('zlib') From afc4f9c3c2d464b2e1e25ace359e230fbc24fd6a Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sun, 6 Aug 2017 11:45:00 -0500 Subject: [PATCH 1400/2394] Download from pypi.io, not pypi.python.org (#4981) --- .../repos/builtin/packages/py-3to2/package.py | 2 +- .../packages/py-apache-libcloud/package.py | 3 ++- .../builtin/packages/py-argcomplete/package.py | 2 +- .../builtin/packages/py-astropy/package.py | 2 +- .../builtin/packages/py-bleach/package.py | 2 +- .../builtin/packages/py-blessings/package.py | 2 +- .../builtin/packages/py-bottleneck/package.py | 2 +- .../builtin/packages/py-csvkit/package.py | 2 +- .../repos/builtin/packages/py-dask/package.py | 2 +- .../builtin/packages/py-dateutil/package.py | 2 +- .../repos/builtin/packages/py-dbf/package.py | 2 +- .../builtin/packages/py-decorator/package.py | 2 +- .../repos/builtin/packages/py-emcee/package.py | 2 +- .../builtin/packages/py-entrypoints/package.py | 18 ++---------------- .../builtin/packages/py-epydoc/package.py | 2 +- .../builtin/packages/py-funcsigs/package.py | 2 +- .../builtin/packages/py-functools32/package.py | 2 +- .../repos/builtin/packages/py-git2/package.py | 4 ++-- .../repos/builtin/packages/py-h5py/package.py | 2 +- .../builtin/packages/py-html5lib/package.py | 2 +- .../builtin/packages/py-iminuit/package.py | 2 +- .../builtin/packages/py-jsonschema/package.py | 2 +- .../repos/builtin/packages/py-lit/package.py | 2 +- .../builtin/packages/py-lockfile/package.py | 2 +- .../packages/py-logilab-common/package.py | 2 +- .../repos/builtin/packages/py-macs2/package.py | 2 +- .../repos/builtin/packages/py-mako/package.py | 2 +- .../repos/builtin/packages/py-mock/package.py | 2 +- .../builtin/packages/py-mpi4py/package.py | 2 +- .../builtin/packages/py-mpmath/package.py | 2 +- .../builtin/packages/py-nestle/package.py | 2 +- .../builtin/packages/py-networkx/package.py | 2 +- .../builtin/packages/py-numexpr/package.py | 5 ++--- .../builtin/packages/py-pathspec/package.py | 4 ++-- .../packages/py-periodictable/package.py | 2 +- .../builtin/packages/py-petsc4py/package.py | 4 ++-- .../builtin/packages/py-pillow/package.py | 2 +- .../repos/builtin/packages/py-pmw/package.py | 2 +- .../repos/builtin/packages/py-ppft/package.py | 2 +- .../builtin/packages/py-prettytable/package.py | 2 +- .../builtin/packages/py-protobuf/package.py | 2 +- .../builtin/packages/py-psutil/package.py | 2 +- .../builtin/packages/py-pycrypto/package.py | 2 +- .../builtin/packages/py-pycurl/package.py | 2 +- .../builtin/packages/py-pydatalog/package.py | 2 +- .../builtin/packages/py-pyelftools/package.py | 2 +- .../builtin/packages/py-pyside/package.py | 2 +- .../packages/py-python-daemon/package.py | 2 +- .../packages/py-readme-renderer/package.py | 2 +- .../builtin/packages/py-restview/package.py | 2 +- .../repos/builtin/packages/py-rpy2/package.py | 2 +- .../packages/py-scikit-image/package.py | 2 +- .../builtin/packages/py-shiboken/package.py | 2 +- .../builtin/packages/py-slepc4py/package.py | 2 +- .../builtin/packages/py-sncosmo/package.py | 2 +- .../builtin/packages/py-sqlalchemy/package.py | 2 +- .../repos/builtin/packages/py-sympy/package.py | 2 +- .../repos/builtin/packages/py-tappy/package.py | 2 +- .../builtin/packages/py-twisted/package.py | 2 +- .../builtin/packages/py-unittest2/package.py | 2 +- .../packages/py-unittest2py3k/package.py | 2 +- .../repos/builtin/packages/py-urwid/package.py | 2 +- .../builtin/packages/py-vcversioner/package.py | 2 +- .../repos/builtin/packages/py-xlrd/package.py | 2 +- 64 files changed, 70 insertions(+), 84 deletions(-) diff --git a/var/spack/repos/builtin/packages/py-3to2/package.py b/var/spack/repos/builtin/packages/py-3to2/package.py index e1d939d4749..cc2986a7b30 100644 --- a/var/spack/repos/builtin/packages/py-3to2/package.py +++ b/var/spack/repos/builtin/packages/py-3to2/package.py @@ -30,6 +30,6 @@ class Py3to2(PythonPackage): for Python version 3.x into Python version 2.x.""" homepage = "https://pypi.python.org/pypi/3to2" - url = "https://pypi.python.org/packages/source/3/3to2/3to2-1.1.1.zip" + url = "https://pypi.io/packages/source/3/3to2/3to2-1.1.1.zip" version('1.1.1', 'cbeed28e350dbdaef86111ace3052824') diff --git a/var/spack/repos/builtin/packages/py-apache-libcloud/package.py b/var/spack/repos/builtin/packages/py-apache-libcloud/package.py index bf2f309cff3..2498a469f10 100644 --- a/var/spack/repos/builtin/packages/py-apache-libcloud/package.py +++ b/var/spack/repos/builtin/packages/py-apache-libcloud/package.py @@ -29,7 +29,8 @@ class PyApacheLibcloud(PythonPackage): """Python library for multiple cloud provider APIs""" homepage = "http://libcloud.apache.org" + url = "https://pypi.io/packages/source/a/apache-libcloud/apache-libcloud-1.2.1.tar.gz" - version('1.2.1', '912e6fb1f2d13f7d3b58ee982b9f9d1f', url="https://pypi.python.org/packages/dd/b5/7b8b5796177345b6a7c1f3d4fda9fbbe9aeef000ac33f3aac06f176845d0/apache-libcloud-1.2.1.tar.gz") + version('1.2.1', '912e6fb1f2d13f7d3b58ee982b9f9d1f') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-argcomplete/package.py b/var/spack/repos/builtin/packages/py-argcomplete/package.py index ff35e98d80a..ba9b9600d36 100644 --- a/var/spack/repos/builtin/packages/py-argcomplete/package.py +++ b/var/spack/repos/builtin/packages/py-argcomplete/package.py @@ -29,7 +29,7 @@ class PyArgcomplete(PythonPackage): """Bash tab completion for argparse.""" homepage = "https://pypi.python.org/pypi/argcomplete" - url = "https://pypi.python.org/packages/source/a/argcomplete/argcomplete-1.1.1.tar.gz" + url = "https://pypi.io/packages/source/a/argcomplete/argcomplete-1.1.1.tar.gz" version('1.1.1', '89a3839096c9f991ad33828e72d21abf') diff --git a/var/spack/repos/builtin/packages/py-astropy/package.py b/var/spack/repos/builtin/packages/py-astropy/package.py index 27358c94670..d1d6fcc0e8d 100644 --- a/var/spack/repos/builtin/packages/py-astropy/package.py +++ b/var/spack/repos/builtin/packages/py-astropy/package.py @@ -31,7 +31,7 @@ class PyAstropy(PythonPackage): Python astronomy packages.""" homepage = 'http://www.astropy.org/' - url = 'https://pypi.python.org/packages/source/a/astropy/astropy-1.1.2.tar.gz' + url = 'https://pypi.io/packages/source/a/astropy/astropy-1.1.2.tar.gz' version('1.1.2', 'cbe32023b5b1177d1e2498a0d00cda51') version('1.1.post1', 'b52919f657a37d45cc45f5cb0f58c44d') diff --git a/var/spack/repos/builtin/packages/py-bleach/package.py b/var/spack/repos/builtin/packages/py-bleach/package.py index 628b58cd0cd..b469a12b607 100644 --- a/var/spack/repos/builtin/packages/py-bleach/package.py +++ b/var/spack/repos/builtin/packages/py-bleach/package.py @@ -29,7 +29,7 @@ class PyBleach(PythonPackage): """An easy whitelist-based HTML-sanitizing tool.""" homepage = "http://github.com/mozilla/bleach" - url = "https://pypi.python.org/packages/99/00/25a8fce4de102bf6e3cc76bc4ea60685b2fee33bde1b34830c70cacc26a7/bleach-1.5.0.tar.gz" + url = "https://pypi.io/packages/source/b/bleach/bleach-1.5.0.tar.gz" version('1.5.0', 'b663300efdf421b3b727b19d7be9c7e7') diff --git a/var/spack/repos/builtin/packages/py-blessings/package.py b/var/spack/repos/builtin/packages/py-blessings/package.py index 39c6c16da12..d4d509f205c 100644 --- a/var/spack/repos/builtin/packages/py-blessings/package.py +++ b/var/spack/repos/builtin/packages/py-blessings/package.py @@ -28,7 +28,7 @@ class PyBlessings(PythonPackage): """A nicer, kinder way to write to the terminal """ homepage = "https://github.com/erikrose/blessings" - url = "https://pypi.python.org/packages/source/b/blessings/blessings-1.6.tar.gz" + url = "https://pypi.io/packages/source/b/blessings/blessings-1.6.tar.gz" version('1.6', '4f552a8ebcd4982693c92571beb99394') diff --git a/var/spack/repos/builtin/packages/py-bottleneck/package.py b/var/spack/repos/builtin/packages/py-bottleneck/package.py index 99177ef98a4..d8958e12080 100644 --- a/var/spack/repos/builtin/packages/py-bottleneck/package.py +++ b/var/spack/repos/builtin/packages/py-bottleneck/package.py @@ -28,7 +28,7 @@ class PyBottleneck(PythonPackage): """A collection of fast NumPy array functions written in Cython.""" homepage = "https://pypi.python.org/pypi/Bottleneck/1.0.0" - url = "https://pypi.python.org/packages/source/B/Bottleneck/Bottleneck-1.0.0.tar.gz" + url = "https://pypi.io/packages/source/B/Bottleneck/Bottleneck-1.0.0.tar.gz" version('1.0.0', '380fa6f275bd24f27e7cf0e0d752f5d2') diff --git a/var/spack/repos/builtin/packages/py-csvkit/package.py b/var/spack/repos/builtin/packages/py-csvkit/package.py index a1bf48ca926..4a41241d80b 100644 --- a/var/spack/repos/builtin/packages/py-csvkit/package.py +++ b/var/spack/repos/builtin/packages/py-csvkit/package.py @@ -30,7 +30,7 @@ class PyCsvkit(PythonPackage): formats""" homepage = 'http://csvkit.rtfd.org/' - url = "https://pypi.python.org/packages/source/c/csvkit/csvkit-0.9.1.tar.gz" + url = "https://pypi.io/packages/source/c/csvkit/csvkit-0.9.1.tar.gz" version('0.9.1', '48d78920019d18846933ee969502fff6') diff --git a/var/spack/repos/builtin/packages/py-dask/package.py b/var/spack/repos/builtin/packages/py-dask/package.py index 61415059956..0b27ab80a54 100644 --- a/var/spack/repos/builtin/packages/py-dask/package.py +++ b/var/spack/repos/builtin/packages/py-dask/package.py @@ -28,7 +28,7 @@ class PyDask(PythonPackage): """Minimal task scheduling abstraction""" homepage = "https://github.com/dask/dask/" - url = "https://pypi.python.org/packages/source/d/dask/dask-0.8.1.tar.gz" + url = "https://pypi.io/packages/source/d/dask/dask-0.8.1.tar.gz" version('0.8.1', '5dd8e3a3823b3bc62c9a6d192e2cb5b4') diff --git a/var/spack/repos/builtin/packages/py-dateutil/package.py b/var/spack/repos/builtin/packages/py-dateutil/package.py index 08d43a0ad07..deeb3197f53 100644 --- a/var/spack/repos/builtin/packages/py-dateutil/package.py +++ b/var/spack/repos/builtin/packages/py-dateutil/package.py @@ -28,7 +28,7 @@ class PyDateutil(PythonPackage): """Extensions to the standard Python datetime module.""" homepage = "https://pypi.python.org/pypi/dateutil" - url = "https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.4.0.tar.gz" + url = "https://pypi.io/packages/source/p/python-dateutil/python-dateutil-2.4.0.tar.gz" version('2.4.0', '75714163bb96bedd07685cdb2071b8bc') version('2.4.2', '4ef68e1c485b09e9f034e10473e5add2') diff --git a/var/spack/repos/builtin/packages/py-dbf/package.py b/var/spack/repos/builtin/packages/py-dbf/package.py index a5c20d62a1c..c6b7ddfa999 100644 --- a/var/spack/repos/builtin/packages/py-dbf/package.py +++ b/var/spack/repos/builtin/packages/py-dbf/package.py @@ -30,6 +30,6 @@ class PyDbf(PythonPackage): .dbf files (including memos)""" homepage = 'https://pypi.python.org/pypi/dbf' - url = "https://pypi.python.org/packages/source/d/dbf/dbf-0.96.005.tar.gz" + url = "https://pypi.io/packages/source/d/dbf/dbf-0.96.005.tar.gz" version('0.96.005', 'bce1a1ed8b454a30606e7e18dd2f8277') diff --git a/var/spack/repos/builtin/packages/py-decorator/package.py b/var/spack/repos/builtin/packages/py-decorator/package.py index b30de062467..854fe55e524 100644 --- a/var/spack/repos/builtin/packages/py-decorator/package.py +++ b/var/spack/repos/builtin/packages/py-decorator/package.py @@ -30,7 +30,7 @@ class PyDecorator(PythonPackage): for the average programmer, and to popularize decorators by showing various non-trivial examples.""" homepage = "https://github.com/micheles/decorator" - url = "https://pypi.python.org/packages/source/d/decorator/decorator-4.0.9.tar.gz" + url = "https://pypi.io/packages/source/d/decorator/decorator-4.0.9.tar.gz" version('4.0.9', 'f12c5651ccd707e12a0abaa4f76cd69a') diff --git a/var/spack/repos/builtin/packages/py-emcee/package.py b/var/spack/repos/builtin/packages/py-emcee/package.py index 2410244919d..4b8a24c6732 100644 --- a/var/spack/repos/builtin/packages/py-emcee/package.py +++ b/var/spack/repos/builtin/packages/py-emcee/package.py @@ -30,7 +30,7 @@ class PyEmcee(PythonPackage): Affine Invariant Markov chain Monte Carlo (MCMC) Ensemble sampler.""" homepage = "http://dan.iel.fm/emcee/current/" - url = "https://pypi.python.org/packages/source/e/emcee/emcee-2.1.0.tar.gz" + url = "https://pypi.io/packages/source/e/emcee/emcee-2.1.0.tar.gz" version('2.1.0', 'c6b6fad05c824d40671d4a4fc58dfff7') diff --git a/var/spack/repos/builtin/packages/py-entrypoints/package.py b/var/spack/repos/builtin/packages/py-entrypoints/package.py index f93092b3179..1df5e8bdc14 100644 --- a/var/spack/repos/builtin/packages/py-entrypoints/package.py +++ b/var/spack/repos/builtin/packages/py-entrypoints/package.py @@ -23,31 +23,17 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -from spack.package import PackageBase class PyEntrypoints(PythonPackage): """Discover and load entry points from installed packages.""" homepage = "https://pypi.python.org/pypi/entrypoints" - url = "https://pypi.python.org/packages/f8/ad/0e77a853c745a15981ab51fa9a0cb4eca7a7a007b4c1970106ee6ba01e0c/entrypoints-0.2.2-py2.py3-none-any.whl" + url = "https://pypi.io/packages/source/e/entrypoints/entrypoints-0.2.3.tar.gz" import_modules = ['entrypoints'] - version('0.2.2', '73bd7ce92c19b25dc5a20aff41be996a', expand=False) + version('0.2.3', '0d3ad1b0130d91e3596ef3a59f25a56c') depends_on('python@2.7:', type=('build', 'run')) - - depends_on('py-pip', type='build') depends_on('py-configparser', when='^python@:2.8', type=('build', 'run')) - - phases = ['install'] - - def install(self, spec, prefix): - pip = which('pip') - pip('install', self.stage.archive_file, '--prefix={0}'.format(prefix)) - - run_after('install')(PackageBase._run_default_install_time_test_callbacks) - - # Check that self.prefix is there after installation - run_after('install')(PackageBase.sanity_check_prefix) diff --git a/var/spack/repos/builtin/packages/py-epydoc/package.py b/var/spack/repos/builtin/packages/py-epydoc/package.py index 93a6018acbe..c10ba2a6355 100644 --- a/var/spack/repos/builtin/packages/py-epydoc/package.py +++ b/var/spack/repos/builtin/packages/py-epydoc/package.py @@ -29,6 +29,6 @@ class PyEpydoc(PythonPackage): """Epydoc is a tool for generating API documentation documentation for Python modules, based on their docstrings.""" homepage = "https://pypi.python.org/pypi/epydoc" - url = "https://pypi.python.org/packages/source/e/epydoc/epydoc-3.0.1.tar.gz" + url = "https://pypi.io/packages/source/e/epydoc/epydoc-3.0.1.tar.gz" version('3.0.1', '36407974bd5da2af00bf90ca27feeb44') diff --git a/var/spack/repos/builtin/packages/py-funcsigs/package.py b/var/spack/repos/builtin/packages/py-funcsigs/package.py index 7d173842d1e..d51e797ac2c 100644 --- a/var/spack/repos/builtin/packages/py-funcsigs/package.py +++ b/var/spack/repos/builtin/packages/py-funcsigs/package.py @@ -28,7 +28,7 @@ class PyFuncsigs(PythonPackage): """Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2.""" homepage = "https://pypi.python.org/pypi/funcsigs" - url = "https://pypi.python.org/packages/source/f/funcsigs/funcsigs-0.4.tar.gz" + url = "https://pypi.io/packages/source/f/funcsigs/funcsigs-0.4.tar.gz" version('0.4', 'fb1d031f284233e09701f6db1281c2a5') diff --git a/var/spack/repos/builtin/packages/py-functools32/package.py b/var/spack/repos/builtin/packages/py-functools32/package.py index a01b022df51..658aab5b4e5 100644 --- a/var/spack/repos/builtin/packages/py-functools32/package.py +++ b/var/spack/repos/builtin/packages/py-functools32/package.py @@ -30,6 +30,6 @@ class PyFunctools32(PythonPackage): PyPy.""" homepage = "https://github.com/MiCHiLU/python-functools32" - url = "https://pypi.python.org/packages/source/f/functools32/functools32-3.2.3-2.tar.gz" + url = "https://pypi.io/packages/source/f/functools32/functools32-3.2.3-2.tar.gz" version('3.2.3-2', '09f24ffd9af9f6cd0f63cb9f4e23d4b2') diff --git a/var/spack/repos/builtin/packages/py-git2/package.py b/var/spack/repos/builtin/packages/py-git2/package.py index 5adafe1f965..d5b5bd28f07 100644 --- a/var/spack/repos/builtin/packages/py-git2/package.py +++ b/var/spack/repos/builtin/packages/py-git2/package.py @@ -31,9 +31,9 @@ class PyGit2(PythonPackage): """ homepage = "http://www.pygit2.org/" + url = "https://pypi.io/packages/source/p/pygit2/pygit2-0.24.1.tar.gz" - version('0.24.1', 'dd98b6a9fded731e36ca5a40484c8545', - url="https://pypi.python.org/packages/aa/56/84dcce942a48d4b7b970cfb7a779b8db1d904e5ec5f71e7a67a63a23a4e2/pygit2-0.24.1.tar.gz") + version('0.24.1', 'dd98b6a9fded731e36ca5a40484c8545') extends('python') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index 9838f56db5f..5a5c02338ca 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -30,7 +30,7 @@ class PyH5py(PythonPackage): HDF5 library from Python.""" homepage = "https://pypi.python.org/pypi/h5py" - url = "https://pypi.python.org/packages/source/h/h5py/h5py-2.4.0.tar.gz" + url = "https://pypi.io/packages/source/h/h5py/h5py-2.4.0.tar.gz" version('2.6.0', 'ec476211bd1de3f5ac150544189b0bf4') version('2.5.0', '6e4301b5ad5da0d51b0a1e5ac19e3b74') diff --git a/var/spack/repos/builtin/packages/py-html5lib/package.py b/var/spack/repos/builtin/packages/py-html5lib/package.py index 05a5f5ceeac..e219450f83d 100644 --- a/var/spack/repos/builtin/packages/py-html5lib/package.py +++ b/var/spack/repos/builtin/packages/py-html5lib/package.py @@ -29,7 +29,7 @@ class PyHtml5lib(PythonPackage): """HTML parser based on the WHATWG HTML specification.""" homepage = "https://github.com/html5lib/html5lib-python" - url = "https://pypi.python.org/packages/ae/ae/bcb60402c60932b32dfaf19bb53870b29eda2cd17551ba5639219fb5ebf9/html5lib-0.9999999.tar.gz" + url = "https://pypi.io/packages/source/h/html5lib/html5lib-0.9999999.tar.gz" version('0.9999999', 'ef43cb05e9e799f25d65d1135838a96f') diff --git a/var/spack/repos/builtin/packages/py-iminuit/package.py b/var/spack/repos/builtin/packages/py-iminuit/package.py index b4b51f67f0a..23961d31446 100644 --- a/var/spack/repos/builtin/packages/py-iminuit/package.py +++ b/var/spack/repos/builtin/packages/py-iminuit/package.py @@ -29,7 +29,7 @@ class PyIminuit(PythonPackage): """Interactive IPython-Friendly Minimizer based on SEAL Minuit2.""" homepage = "https://pypi.python.org/pypi/iminuit" - url = "https://pypi.python.org/packages/source/i/iminuit/iminuit-1.2.tar.gz" + url = "https://pypi.io/packages/source/i/iminuit/iminuit-1.2.tar.gz" version('1.2', '4701ec472cae42015e26251703e6e984') diff --git a/var/spack/repos/builtin/packages/py-jsonschema/package.py b/var/spack/repos/builtin/packages/py-jsonschema/package.py index 8a69361bab1..2a72c9492aa 100644 --- a/var/spack/repos/builtin/packages/py-jsonschema/package.py +++ b/var/spack/repos/builtin/packages/py-jsonschema/package.py @@ -29,7 +29,7 @@ class PyJsonschema(PythonPackage): """Jsonschema: An(other) implementation of JSON Schema for Python.""" homepage = "http://github.com/Julian/jsonschema" - url = "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-2.5.1.tar.gz" + url = "https://pypi.io/packages/source/j/jsonschema/jsonschema-2.5.1.tar.gz" version('2.5.1', '374e848fdb69a3ce8b7e778b47c30640') diff --git a/var/spack/repos/builtin/packages/py-lit/package.py b/var/spack/repos/builtin/packages/py-lit/package.py index 711986ae3f7..6d9dbf48303 100644 --- a/var/spack/repos/builtin/packages/py-lit/package.py +++ b/var/spack/repos/builtin/packages/py-lit/package.py @@ -32,7 +32,7 @@ class PyLit(PythonPackage): interface as possible.""" homepage = "https://pypi.python.org/pypi/lit" - url = "https://pypi.python.org/packages/5b/a0/dbed2c8dfb220eb9a5a893257223cd0ff791c0fbc34ce2f1a957fa4b6c6f/lit-0.5.0.tar.gz" + url = "https://pypi.io/packages/source/l/lit/lit-0.5.0.tar.gz" version('0.5.0', '8144660cc692be8fb903395a5f06564d') diff --git a/var/spack/repos/builtin/packages/py-lockfile/package.py b/var/spack/repos/builtin/packages/py-lockfile/package.py index 12f606588d6..a9963c340fa 100644 --- a/var/spack/repos/builtin/packages/py-lockfile/package.py +++ b/var/spack/repos/builtin/packages/py-lockfile/package.py @@ -37,7 +37,7 @@ class PyLockfile(PythonPackage): possibilities it provides than as production-quality code. """ homepage = "https://pypi.python.org/pypi/lockfile" - url = "https://pypi.python.org/packages/source/l/lockfile/lockfile-0.10.2.tar.gz" + url = "https://pypi.io/packages/source/l/lockfile/lockfile-0.10.2.tar.gz" version('0.10.2', '1aa6175a6d57f082cd12e7ac6102ab15') diff --git a/var/spack/repos/builtin/packages/py-logilab-common/package.py b/var/spack/repos/builtin/packages/py-logilab-common/package.py index ab71df76890..925c24a66be 100644 --- a/var/spack/repos/builtin/packages/py-logilab-common/package.py +++ b/var/spack/repos/builtin/packages/py-logilab-common/package.py @@ -28,7 +28,7 @@ class PyLogilabCommon(PythonPackage): """Common modules used by Logilab projects""" homepage = "https://www.logilab.org/project/logilab-common" - url = "https://pypi.python.org/packages/a7/31/1650d23e44794d46935d82b86e73454cc83b814cbe1365260ccce8a2f4c6/logilab-common-1.2.0.tar.gz" + url = "https://pypi.io/packages/source/l/logilab-common/logilab-common-1.2.0.tar.gz" version('1.2.0', 'f7b51351b7bfe052746fa04c03253c0b') diff --git a/var/spack/repos/builtin/packages/py-macs2/package.py b/var/spack/repos/builtin/packages/py-macs2/package.py index d4bfd1b0f47..8f6b4cb27ab 100644 --- a/var/spack/repos/builtin/packages/py-macs2/package.py +++ b/var/spack/repos/builtin/packages/py-macs2/package.py @@ -30,7 +30,7 @@ class PyMacs2(PythonPackage): """MACS2 Model-based Analysis of ChIP-Seq""" homepage = "https://github.com/taoliu/MACS" - url = "https://pypi.python.org/packages/9f/99/a8ac96b357f6b0a6f559fe0f5a81bcae12b98579551620ce07c5183aee2c/MACS2-2.1.1.20160309.tar.gz" + url = "https://pypi.io/packages/source/M/MACS2/MACS2-2.1.1.20160309.tar.gz" version('2.1.1.20160309', '2008ba838f83f34f8e0fddefe2a3a0159f4a740707c68058f815b31ddad53d26') diff --git a/var/spack/repos/builtin/packages/py-mako/package.py b/var/spack/repos/builtin/packages/py-mako/package.py index b1ea98d9636..481c36818bd 100644 --- a/var/spack/repos/builtin/packages/py-mako/package.py +++ b/var/spack/repos/builtin/packages/py-mako/package.py @@ -30,7 +30,7 @@ class PyMako(PythonPackage): ideas from the existing templating languages.""" homepage = "https://pypi.python.org/pypi/mako" - url = "https://pypi.python.org/packages/source/M/Mako/Mako-1.0.1.tar.gz" + url = "https://pypi.io/packages/source/M/Mako/Mako-1.0.1.tar.gz" version('1.0.4', 'c5fc31a323dd4990683d2f2da02d4e20') version('1.0.1', '9f0aafd177b039ef67b90ea350497a54') diff --git a/var/spack/repos/builtin/packages/py-mock/package.py b/var/spack/repos/builtin/packages/py-mock/package.py index f5653117d9f..abb8abc1255 100644 --- a/var/spack/repos/builtin/packages/py-mock/package.py +++ b/var/spack/repos/builtin/packages/py-mock/package.py @@ -31,7 +31,7 @@ class PyMock(PythonPackage): they have been used.""" homepage = "https://github.com/testing-cabal/mock" - url = "https://pypi.python.org/packages/source/m/mock/mock-1.3.0.tar.gz" + url = "https://pypi.io/packages/source/m/mock/mock-1.3.0.tar.gz" version('2.0.0', '0febfafd14330c9dcaa40de2d82d40ad') version('1.3.0', '73ee8a4afb3ff4da1b4afa287f39fdeb') diff --git a/var/spack/repos/builtin/packages/py-mpi4py/package.py b/var/spack/repos/builtin/packages/py-mpi4py/package.py index a2ca9d83d8a..0d57375787d 100644 --- a/var/spack/repos/builtin/packages/py-mpi4py/package.py +++ b/var/spack/repos/builtin/packages/py-mpi4py/package.py @@ -33,7 +33,7 @@ class PyMpi4py(PythonPackage): """ homepage = "https://pypi.python.org/pypi/mpi4py" - url = "https://pypi.python.org/packages/source/m/mpi4py/mpi4py-1.3.1.tar.gz" + url = "https://pypi.io/packages/source/m/mpi4py/mpi4py-1.3.1.tar.gz" version('2.0.0', '4f7d8126d7367c239fd67615680990e3') version('1.3.1', 'dbe9d22bdc8ed965c23a7ceb6f32fc3c') diff --git a/var/spack/repos/builtin/packages/py-mpmath/package.py b/var/spack/repos/builtin/packages/py-mpmath/package.py index 7b57ec4d739..aa004880168 100644 --- a/var/spack/repos/builtin/packages/py-mpmath/package.py +++ b/var/spack/repos/builtin/packages/py-mpmath/package.py @@ -28,6 +28,6 @@ class PyMpmath(PythonPackage): """A Python library for arbitrary-precision floating-point arithmetic.""" homepage = "http://mpmath.org" - url = "https://pypi.python.org/packages/source/m/mpmath/mpmath-all-0.19.tar.gz" + url = "https://pypi.io/packages/source/m/mpmath/mpmath-all-0.19.tar.gz" version('0.19', 'd1b7e19dd6830d0d7b5e1bc93d46c02c') diff --git a/var/spack/repos/builtin/packages/py-nestle/package.py b/var/spack/repos/builtin/packages/py-nestle/package.py index 1c5864ed91e..f3c5a888976 100644 --- a/var/spack/repos/builtin/packages/py-nestle/package.py +++ b/var/spack/repos/builtin/packages/py-nestle/package.py @@ -29,7 +29,7 @@ class PyNestle(PythonPackage): """Nested sampling algorithms for evaluating Bayesian evidence.""" homepage = "http://kbarbary.github.io/nestle/" - url = "https://pypi.python.org/packages/source/n/nestle/nestle-0.1.1.tar.gz" + url = "https://pypi.io/packages/source/n/nestle/nestle-0.1.1.tar.gz" version('0.1.1', '4875c0f9a0a8e263c1d7f5fa6ce604c5') diff --git a/var/spack/repos/builtin/packages/py-networkx/package.py b/var/spack/repos/builtin/packages/py-networkx/package.py index 6ddff5988f2..2bdf7410492 100644 --- a/var/spack/repos/builtin/packages/py-networkx/package.py +++ b/var/spack/repos/builtin/packages/py-networkx/package.py @@ -29,7 +29,7 @@ class PyNetworkx(PythonPackage): """NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.""" homepage = "http://networkx.github.io/" - url = "https://pypi.python.org/packages/source/n/networkx/networkx-1.11.tar.gz" + url = "https://pypi.io/packages/source/n/networkx/networkx-1.11.tar.gz" version('1.11', '6ef584a879e9163013e9a762e1cf7cd1') diff --git a/var/spack/repos/builtin/packages/py-numexpr/package.py b/var/spack/repos/builtin/packages/py-numexpr/package.py index 57250b645bc..58090ae6744 100644 --- a/var/spack/repos/builtin/packages/py-numexpr/package.py +++ b/var/spack/repos/builtin/packages/py-numexpr/package.py @@ -28,10 +28,9 @@ class PyNumexpr(PythonPackage): """Fast numerical expression evaluator for NumPy""" homepage = "https://pypi.python.org/pypi/numexpr" - url = "https://pypi.python.org/packages/source/n/numexpr/numexpr-2.4.6.tar.gz" + url = "https://pypi.io/packages/source/n/numexpr/numexpr-2.6.1.tar.gz" - version('2.6.1', '6365245705b446426df9543ad218dd8e', - url="https://pypi.python.org/packages/c6/f0/11628fa4d332d8fe9ab0ba8e9bfe0e065fb6b5324859171ee72d84e079c0/numexpr-2.6.1.tar.gz") + version('2.6.1', '6365245705b446426df9543ad218dd8e') version('2.5', '84f66cced45ba3e30dcf77a937763aaa') version('2.4.6', '17ac6fafc9ea1ce3eb970b9abccb4fbd') diff --git a/var/spack/repos/builtin/packages/py-pathspec/package.py b/var/spack/repos/builtin/packages/py-pathspec/package.py index e9ff10b1095..f939865367a 100644 --- a/var/spack/repos/builtin/packages/py-pathspec/package.py +++ b/var/spack/repos/builtin/packages/py-pathspec/package.py @@ -30,8 +30,8 @@ class PyPathspec(PythonPackage): making it easier to write, find and run tests.""" homepage = "https://pypi.python.org/pypi/pathspec" + url = "https://pypi.io/packages/source/p/pathspec/pathspec-0.3.4.tar.gz" - version('0.3.4', '2a4af9bf2dee98845d583ec61a00d05d', - url='https://pypi.python.org/packages/14/9d/c9d790d373d6f6938d793e9c549b87ad8670b6fa7fc6176485e6ef11c1a4/pathspec-0.3.4.tar.gz') + version('0.3.4', '2a4af9bf2dee98845d583ec61a00d05d') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-periodictable/package.py b/var/spack/repos/builtin/packages/py-periodictable/package.py index 84d6479fc4e..e7e67de871f 100644 --- a/var/spack/repos/builtin/packages/py-periodictable/package.py +++ b/var/spack/repos/builtin/packages/py-periodictable/package.py @@ -30,7 +30,7 @@ class PyPeriodictable(PythonPackage): making it easier to write, find and run tests.""" homepage = "https://pypi.python.org/pypi/periodictable" - url = "https://pypi.python.org/packages/source/p/periodictable/periodictable-1.4.1.tar.gz" + url = "https://pypi.io/packages/source/p/periodictable/periodictable-1.4.1.tar.gz" version('1.4.1', '7246b63cc0b6b1be6e86b6616f9e866e') diff --git a/var/spack/repos/builtin/packages/py-petsc4py/package.py b/var/spack/repos/builtin/packages/py-petsc4py/package.py index 888890037cb..8e2d56755dd 100644 --- a/var/spack/repos/builtin/packages/py-petsc4py/package.py +++ b/var/spack/repos/builtin/packages/py-petsc4py/package.py @@ -29,10 +29,10 @@ class PyPetsc4py(PythonPackage): """This package provides Python bindings for the PETSc package. """ homepage = "https://pypi.python.org/pypi/petsc4py" - url = "https://pypi.python.org/packages/b3/d5/84a71e3ccc13bf90b5055d264e5b256d161ae513392d0f28e8a7ac80d15c/petsc4py-3.7.0.tar.gz" + url = "https://pypi.io/packages/source/p/petsc4py/petsc4py-3.7.0.tar.gz" version('3.7.0', '816a20040a6a477bd637f397c9fb5b6d') depends_on('py-setuptools', type='build') depends_on('py-mpi4py', type=('build', 'run')) - depends_on('petsc+mpi') + depends_on('petsc+mpi') diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index 656c9a15f2c..ba6e7b9c675 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -33,7 +33,7 @@ class PyPillow(PythonPackage): capabilities.""" homepage = "https://python-pillow.org/" - url = "https://pypi.python.org/packages/source/P/Pillow/Pillow-3.0.0.tar.gz" + url = "https://pypi.io/packages/source/P/Pillow/Pillow-3.0.0.tar.gz" # TODO: This version should be deleted once the next release comes out. # TODO: It fixes a bug that prevented us from linking to Tk/Tcl. diff --git a/var/spack/repos/builtin/packages/py-pmw/package.py b/var/spack/repos/builtin/packages/py-pmw/package.py index e7317bae0cd..a0dd79b0e45 100644 --- a/var/spack/repos/builtin/packages/py-pmw/package.py +++ b/var/spack/repos/builtin/packages/py-pmw/package.py @@ -29,6 +29,6 @@ class PyPmw(PythonPackage): """Pmw is a toolkit for building high-level compound widgets, or megawidgets, constructed using other widgets as component parts.""" homepage = "https://pypi.python.org/pypi/Pmw" - url = "https://pypi.python.org/packages/source/P/Pmw/Pmw-2.0.0.tar.gz" + url = "https://pypi.io/packages/source/P/Pmw/Pmw-2.0.0.tar.gz" version('2.0.0', 'c7c3f26c4f5abaa99807edefee578fc0') diff --git a/var/spack/repos/builtin/packages/py-ppft/package.py b/var/spack/repos/builtin/packages/py-ppft/package.py index 07681c57e2b..da96ba458e7 100644 --- a/var/spack/repos/builtin/packages/py-ppft/package.py +++ b/var/spack/repos/builtin/packages/py-ppft/package.py @@ -29,7 +29,7 @@ class PyPpft(PythonPackage): """Distributed and parallel python """ homepage = "https://github.com/uqfoundation/ppft" - url = "https://pypi.org/packages/source/p/ppft/ppft-1.6.4.7.1.zip" + url = "https://pypi.io/packages/source/p/ppft/ppft-1.6.4.7.1.zip" version('1.6.4.7.1', '2b196a03bfbc102773f849c6b21e617b') version('1.6.4.6', 'e533432bfba4b5a523a07d58011df209') diff --git a/var/spack/repos/builtin/packages/py-prettytable/package.py b/var/spack/repos/builtin/packages/py-prettytable/package.py index 12bf2e7cfa3..53e1ec75b62 100644 --- a/var/spack/repos/builtin/packages/py-prettytable/package.py +++ b/var/spack/repos/builtin/packages/py-prettytable/package.py @@ -32,7 +32,7 @@ class PyPrettytable(PythonPackage): """ homepage = "https://code.google.com/archive/p/prettytable/" - url = "https://pypi.python.org/packages/e0/a1/36203205f77ccf98f3c6cf17cf068c972e6458d7e58509ca66da949ca347/prettytable-0.7.2.tar.gz" + url = "https://pypi.io/packages/source/p/prettytable/prettytable-0.7.2.tar.gz" version('0.7.2', 'a6b80afeef286ce66733d54a0296b13b') diff --git a/var/spack/repos/builtin/packages/py-protobuf/package.py b/var/spack/repos/builtin/packages/py-protobuf/package.py index 3d474586fbe..32421e959e9 100644 --- a/var/spack/repos/builtin/packages/py-protobuf/package.py +++ b/var/spack/repos/builtin/packages/py-protobuf/package.py @@ -34,7 +34,7 @@ class PyProtobuf(PythonPackage): and using a variety of languages.""" homepage = 'https://developers.google.com/protocol-buffers/' - url = 'https://pypi.python.org/packages/source/p/protobuf/protobuf-3.0.0b2.tar.gz' + url = 'https://pypi.io/packages/source/p/protobuf/protobuf-3.0.0b2.tar.gz' version('3.0.0b2', 'f0d3bd2394345a9af4a277cd0302ae83') version('2.6.1', '6bf843912193f70073db7f22e2ea55e2') diff --git a/var/spack/repos/builtin/packages/py-psutil/package.py b/var/spack/repos/builtin/packages/py-psutil/package.py index f7b96da772c..f1524e56c2d 100644 --- a/var/spack/repos/builtin/packages/py-psutil/package.py +++ b/var/spack/repos/builtin/packages/py-psutil/package.py @@ -31,7 +31,7 @@ class PyPsutil(PythonPackage): in Python.""" homepage = "https://pypi.python.org/pypi/psutil" - url = "https://pypi.python.org/packages/d9/c8/8c7a2ab8ec108ba9ab9a4762c5a0d67c283d41b13b5ce46be81fdcae3656/psutil-5.0.1.tar.gz" + url = "https://pypi.io/packages/source/p/psutil/psutil-5.0.1.tar.gz" version('5.0.1', '153dc8be94badc4072016ceeac7808dc') diff --git a/var/spack/repos/builtin/packages/py-pycrypto/package.py b/var/spack/repos/builtin/packages/py-pycrypto/package.py index 65d78dc75dc..0c24ceb2429 100644 --- a/var/spack/repos/builtin/packages/py-pycrypto/package.py +++ b/var/spack/repos/builtin/packages/py-pycrypto/package.py @@ -30,7 +30,7 @@ class PyPycrypto(PythonPackage): """The Python Cryptography Toolkit""" homepage = "https://www.dlitz.net/software/pycrypto/" - url = "https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz" + url = "https://pypi.io/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz" version('2.6.1', '55a61a054aa66812daf5161a0d5d7eda') diff --git a/var/spack/repos/builtin/packages/py-pycurl/package.py b/var/spack/repos/builtin/packages/py-pycurl/package.py index 91a1648d3b5..4d9164b2695 100644 --- a/var/spack/repos/builtin/packages/py-pycurl/package.py +++ b/var/spack/repos/builtin/packages/py-pycurl/package.py @@ -30,7 +30,7 @@ class PyPycurl(PythonPackage): objects identified by a URL from a Python program.""" homepage = "http://pycurl.io/" - url = "https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz" + url = "https://pypi.io/packages/source/p/pycurl/pycurl-7.43.0.tar.gz" version('7.43.0', 'c94bdba01da6004fa38325e9bd6b9760') diff --git a/var/spack/repos/builtin/packages/py-pydatalog/package.py b/var/spack/repos/builtin/packages/py-pydatalog/package.py index 6a51f5dc20e..270847f5dcf 100644 --- a/var/spack/repos/builtin/packages/py-pydatalog/package.py +++ b/var/spack/repos/builtin/packages/py-pydatalog/package.py @@ -28,6 +28,6 @@ class PyPydatalog(PythonPackage): """pyDatalog adds logic programming to Python.""" homepage = 'https://pypi.python.org/pypi/pyDatalog/' - url = 'https://pypi.python.org/packages/09/0b/2670eb9c0027aacfb5b5024ca75e5fee2f1261180ab8797108ffc941158a/pyDatalog-0.17.1.zip' + url = 'https://pypi.io/packages/source/p/pyDatalog/pyDatalog-0.17.1.zip' version('0.17.1', '6b2682301200068d208d6f2d01723939') diff --git a/var/spack/repos/builtin/packages/py-pyelftools/package.py b/var/spack/repos/builtin/packages/py-pyelftools/package.py index 23c8b4ef904..e1d074edae0 100644 --- a/var/spack/repos/builtin/packages/py-pyelftools/package.py +++ b/var/spack/repos/builtin/packages/py-pyelftools/package.py @@ -29,6 +29,6 @@ class PyPyelftools(PythonPackage): """A pure-Python library for parsing and analyzing ELF files and DWARF debugging information""" homepage = "https://pypi.python.org/pypi/pyelftools" - url = "https://pypi.python.org/packages/source/p/pyelftools/pyelftools-0.23.tar.gz" + url = "https://pypi.io/packages/source/p/pyelftools/pyelftools-0.23.tar.gz" version('0.23', 'aa7cefa8bd2f63d7b017440c9084f310') diff --git a/var/spack/repos/builtin/packages/py-pyside/package.py b/var/spack/repos/builtin/packages/py-pyside/package.py index 7735fc28df6..aff69b46d67 100644 --- a/var/spack/repos/builtin/packages/py-pyside/package.py +++ b/var/spack/repos/builtin/packages/py-pyside/package.py @@ -29,7 +29,7 @@ class PyPyside(PythonPackage): """Python bindings for Qt.""" homepage = "https://pypi.python.org/pypi/pyside" - url = "https://pypi.python.org/packages/source/P/PySide/PySide-1.2.2.tar.gz" + url = "https://pypi.io/packages/source/P/PySide/PySide-1.2.2.tar.gz" version('1.2.4', '3cb7174c13bd45e3e8f77638926cb8c0') # rpath problems version('1.2.2', 'c45bc400c8a86d6b35f34c29e379e44d', preferred=True) diff --git a/var/spack/repos/builtin/packages/py-python-daemon/package.py b/var/spack/repos/builtin/packages/py-python-daemon/package.py index 3e61231c8e9..858c57b7d97 100644 --- a/var/spack/repos/builtin/packages/py-python-daemon/package.py +++ b/var/spack/repos/builtin/packages/py-python-daemon/package.py @@ -38,7 +38,7 @@ class PyPythonDaemon(PythonPackage): to enter a daemon state. """ homepage = "https://pypi.python.org/pypi/python-daemon/" - url = "https://pypi.python.org/packages/source/p/python-daemon/python-daemon-2.0.5.tar.gz" + url = "https://pypi.io/packages/source/p/python-daemon/python-daemon-2.0.5.tar.gz" version('2.0.5', '73e7f49f525c51fa4a995aea4d80de41') diff --git a/var/spack/repos/builtin/packages/py-readme-renderer/package.py b/var/spack/repos/builtin/packages/py-readme-renderer/package.py index e090d6a6bd6..709851aed5b 100644 --- a/var/spack/repos/builtin/packages/py-readme-renderer/package.py +++ b/var/spack/repos/builtin/packages/py-readme-renderer/package.py @@ -30,7 +30,7 @@ class PyReadmeRenderer(PythonPackage): for Warehouse.""" homepage = "https://github.com/pypa/readme_renderer" - url = "https://pypi.python.org/packages/f2/6e/ef1bc3a24eb14e14574aba9dc1bd50bc9a5e7cc880e8ff9cadd385b4fb37/readme_renderer-16.0.tar.gz" + url = "https://pypi.io/packages/source/r/readme_renderer/readme_renderer-16.0.tar.gz" version('16.0', '70321cea986956bcf2deef9981569f39') diff --git a/var/spack/repos/builtin/packages/py-restview/package.py b/var/spack/repos/builtin/packages/py-restview/package.py index d9536500038..5ab66a9ba32 100644 --- a/var/spack/repos/builtin/packages/py-restview/package.py +++ b/var/spack/repos/builtin/packages/py-restview/package.py @@ -29,7 +29,7 @@ class PyRestview(PythonPackage): """A viewer for ReStructuredText documents that renders them on the fly.""" homepage = "https://mg.pov.lt/restview/" - url = "https://pypi.python.org/packages/source/r/restview/restview-2.6.1.tar.gz" + url = "https://pypi.io/packages/source/r/restview/restview-2.6.1.tar.gz" version('2.6.1', 'ac8b70e15b8f1732d1733d674813666b') diff --git a/var/spack/repos/builtin/packages/py-rpy2/package.py b/var/spack/repos/builtin/packages/py-rpy2/package.py index aa3ac66775d..a0d020f4279 100644 --- a/var/spack/repos/builtin/packages/py-rpy2/package.py +++ b/var/spack/repos/builtin/packages/py-rpy2/package.py @@ -33,7 +33,7 @@ class PyRpy2(PythonPackage): """ homepage = "https://pypi.python.org/pypi/rpy2" - url = "https://pypi.python.org/packages/source/r/rpy2/rpy2-2.5.4.tar.gz" + url = "https://pypi.io/packages/source/r/rpy2/rpy2-2.5.4.tar.gz" version('2.5.4', '115a20ac30883f096da2bdfcab55196d') version('2.5.6', 'a36e758b633ce6aec6a5f450bfee980f') diff --git a/var/spack/repos/builtin/packages/py-scikit-image/package.py b/var/spack/repos/builtin/packages/py-scikit-image/package.py index 5ca6e3ebf00..f164a3a25f7 100644 --- a/var/spack/repos/builtin/packages/py-scikit-image/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-image/package.py @@ -30,7 +30,7 @@ class PyScikitImage(PythonPackage): filtering, warping, color manipulation, object detection, etc.""" homepage = "http://scikit-image.org/" - url = "https://pypi.python.org/packages/source/s/scikit-image/scikit-image-0.12.3.tar.gz" + url = "https://pypi.io/packages/source/s/scikit-image/scikit-image-0.12.3.tar.gz" version('0.12.3', '04ea833383e0b6ad5f65da21292c25e1') diff --git a/var/spack/repos/builtin/packages/py-shiboken/package.py b/var/spack/repos/builtin/packages/py-shiboken/package.py index c04f8a2755c..2f6f40df3af 100644 --- a/var/spack/repos/builtin/packages/py-shiboken/package.py +++ b/var/spack/repos/builtin/packages/py-shiboken/package.py @@ -29,7 +29,7 @@ class PyShiboken(PythonPackage): """Shiboken generates bindings for C++ libraries using CPython.""" homepage = "https://shiboken.readthedocs.org/" - url = "https://pypi.python.org/packages/source/S/Shiboken/Shiboken-1.2.2.tar.gz" + url = "https://pypi.io/packages/source/S/Shiboken/Shiboken-1.2.2.tar.gz" version('1.2.2', '345cfebda221f525842e079a6141e555') diff --git a/var/spack/repos/builtin/packages/py-slepc4py/package.py b/var/spack/repos/builtin/packages/py-slepc4py/package.py index 8c1a5c026ff..35b7286b9d4 100644 --- a/var/spack/repos/builtin/packages/py-slepc4py/package.py +++ b/var/spack/repos/builtin/packages/py-slepc4py/package.py @@ -29,7 +29,7 @@ class PySlepc4py(PythonPackage): """This package provides Python bindings for the SLEPc package. """ homepage = "https://pypi.python.org/pypi/slepc4py" - url = "https://pypi.python.org/packages/b4/dd/116fbdf865f6f9eda779c5d31bc5b68f37ef3dd5dbfc3feb4aaba1565560/slepc4py-3.7.0.tar.gz" + url = "https://pypi.io/packages/source/s/slepc4py/slepc4py-3.7.0.tar.gz" version('3.7.0', 'c4775e88b0825c7313629c01de60ecb2') diff --git a/var/spack/repos/builtin/packages/py-sncosmo/package.py b/var/spack/repos/builtin/packages/py-sncosmo/package.py index c2ff03c1a9d..e5f5165fb29 100644 --- a/var/spack/repos/builtin/packages/py-sncosmo/package.py +++ b/var/spack/repos/builtin/packages/py-sncosmo/package.py @@ -30,7 +30,7 @@ class PySncosmo(PythonPackage): analysis.""" homepage = "http://sncosmo.readthedocs.io/" - url = "https://pypi.python.org/packages/source/s/sncosmo/sncosmo-1.2.0.tar.gz" + url = "https://pypi.io/packages/source/s/sncosmo/sncosmo-1.2.0.tar.gz" version('1.2.0', '028e6d1dc84ab1c17d2f3b6378b2cb1e') diff --git a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py index 81ea2790abd..12d868660ff 100644 --- a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py +++ b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py @@ -29,6 +29,6 @@ class PySqlalchemy(PythonPackage): """The Python SQL Toolkit and Object Relational Mapper""" homepage = 'http://www.sqlalchemy.org/' - url = "https://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-1.0.12.tar.gz" + url = "https://pypi.io/packages/source/S/SQLAlchemy/SQLAlchemy-1.0.12.tar.gz" version('1.0.12', '6d19ef29883bbebdcac6613cf391cac4') diff --git a/var/spack/repos/builtin/packages/py-sympy/package.py b/var/spack/repos/builtin/packages/py-sympy/package.py index 8f82bcc009f..8ab3e60a9b9 100644 --- a/var/spack/repos/builtin/packages/py-sympy/package.py +++ b/var/spack/repos/builtin/packages/py-sympy/package.py @@ -28,7 +28,7 @@ class PySympy(PythonPackage): """SymPy is a Python library for symbolic mathematics.""" homepage = "https://pypi.python.org/pypi/sympy" - url = "https://pypi.python.org/packages/source/s/sympy/sympy-0.7.6.tar.gz" + url = "https://pypi.io/packages/source/s/sympy/sympy-0.7.6.tar.gz" version('0.7.6', '3d04753974306d8a13830008e17babca') version('1.0', '43e797de799f00f9e8fd2307dba9fab1') diff --git a/var/spack/repos/builtin/packages/py-tappy/package.py b/var/spack/repos/builtin/packages/py-tappy/package.py index 1f7b94cbe29..36e22f71e15 100644 --- a/var/spack/repos/builtin/packages/py-tappy/package.py +++ b/var/spack/repos/builtin/packages/py-tappy/package.py @@ -29,7 +29,7 @@ class PyTappy(PythonPackage): """Python TAP interface module for unit tests""" homepage = "https://github.com/mblayman/tappy" # base https://pypi.python.org/pypi/cffi - url = "https://pypi.python.org/packages/source/t/tap.py/tap.py-1.6.tar.gz" + url = "https://pypi.io/packages/source/t/tap.py/tap.py-1.6.tar.gz" version('1.6', 'c8bdb93ad66e05f939905172a301bedf') diff --git a/var/spack/repos/builtin/packages/py-twisted/package.py b/var/spack/repos/builtin/packages/py-twisted/package.py index 0beb3f436ba..1184b49e3cb 100644 --- a/var/spack/repos/builtin/packages/py-twisted/package.py +++ b/var/spack/repos/builtin/packages/py-twisted/package.py @@ -28,7 +28,7 @@ class PyTwisted(PythonPackage): """An asynchronous networking framework written in Python""" homepage = "https://twistedmatrix.com/" - url = "https://pypi.python.org/packages/source/T/Twisted/Twisted-15.3.0.tar.bz2" + url = "https://pypi.io/packages/source/T/Twisted/Twisted-15.3.0.tar.bz2" version('15.4.0', '5337ffb6aeeff3790981a2cd56db9655') version('15.3.0', 'b58e83da2f00b3352afad74d0c5c4599') diff --git a/var/spack/repos/builtin/packages/py-unittest2/package.py b/var/spack/repos/builtin/packages/py-unittest2/package.py index 609688f8a1a..c0cdbf93392 100644 --- a/var/spack/repos/builtin/packages/py-unittest2/package.py +++ b/var/spack/repos/builtin/packages/py-unittest2/package.py @@ -30,7 +30,7 @@ class PyUnittest2(PythonPackage): testing framework in Python 2.7 and onwards.""" homepage = "https://pypi.python.org/pypi/unittest2" - url = "https://pypi.python.org/packages/source/u/unittest2/unittest2-1.1.0.tar.gz" + url = "https://pypi.io/packages/source/u/unittest2/unittest2-1.1.0.tar.gz" version('1.1.0', 'f72dae5d44f091df36b6b513305ea000') diff --git a/var/spack/repos/builtin/packages/py-unittest2py3k/package.py b/var/spack/repos/builtin/packages/py-unittest2py3k/package.py index d48ddc8a548..ea8a9927e59 100644 --- a/var/spack/repos/builtin/packages/py-unittest2py3k/package.py +++ b/var/spack/repos/builtin/packages/py-unittest2py3k/package.py @@ -31,7 +31,7 @@ class PyUnittest2py3k(PythonPackage): version of unittest2.""" homepage = "https://pypi.python.org/pypi/unittest2py3k" - url = "https://pypi.python.org/packages/source/u/unittest2py3k/unittest2py3k-0.5.1.tar.gz" + url = "https://pypi.io/packages/source/u/unittest2py3k/unittest2py3k-0.5.1.tar.gz" version('0.5.1', '8824ff92044310d9365f90d892bf0f09') diff --git a/var/spack/repos/builtin/packages/py-urwid/package.py b/var/spack/repos/builtin/packages/py-urwid/package.py index ea39b890846..4b662a0f1e3 100644 --- a/var/spack/repos/builtin/packages/py-urwid/package.py +++ b/var/spack/repos/builtin/packages/py-urwid/package.py @@ -28,7 +28,7 @@ class PyUrwid(PythonPackage): """A full-featured console UI library""" homepage = "http://urwid.org/" - url = "https://pypi.python.org/packages/source/u/urwid/urwid-1.3.0.tar.gz" + url = "https://pypi.io/packages/source/u/urwid/urwid-1.3.0.tar.gz" version('1.3.0', 'a989acd54f4ff1a554add464803a9175') diff --git a/var/spack/repos/builtin/packages/py-vcversioner/package.py b/var/spack/repos/builtin/packages/py-vcversioner/package.py index daa2d3caf25..33be558e3c6 100644 --- a/var/spack/repos/builtin/packages/py-vcversioner/package.py +++ b/var/spack/repos/builtin/packages/py-vcversioner/package.py @@ -29,7 +29,7 @@ class PyVcversioner(PythonPackage): """Vcversioner: Take version numbers from version control.""" homepage = "https://github.com/habnabit/vcversioner" - url = "https://pypi.python.org/packages/source/v/vcversioner/vcversioner-2.16.0.0.tar.gz" + url = "https://pypi.io/packages/source/v/vcversioner/vcversioner-2.16.0.0.tar.gz" version('2.16.0.0', 'aab6ef5e0cf8614a1b1140ed5b7f107d') diff --git a/var/spack/repos/builtin/packages/py-xlrd/package.py b/var/spack/repos/builtin/packages/py-xlrd/package.py index af8dec00da2..4bf87a46ca4 100644 --- a/var/spack/repos/builtin/packages/py-xlrd/package.py +++ b/var/spack/repos/builtin/packages/py-xlrd/package.py @@ -30,6 +30,6 @@ class PyXlrd(PythonPackage): spreadsheet files""" homepage = 'http://www.python-excel.org/' - url = "https://pypi.python.org/packages/source/x/xlrd/xlrd-0.9.4.tar.gz" + url = "https://pypi.io/packages/source/x/xlrd/xlrd-0.9.4.tar.gz" version('0.9.4', '911839f534d29fe04525ef8cd88fe865') From 0bd55cb8ce6350d8049023e4dc2c7cb68a77e443 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Sun, 6 Aug 2017 13:23:13 -0700 Subject: [PATCH 1401/2394] Limit make_jobs for boost < 1.59 (#4984) Earlier versions of boost had a fixed maximum number of jobs. 1.54 was 64, it bumped once or twice afterwards and in 1.59 [this commit][commit] it became dynamic. I need 1.54 for as a prereq for bcl2fastq but I can't build 1.54 on my 144 core build box. This fixes that. [commit]: https://github.com/boostorg/build/commit/316e26ca718afc65d6170029284521392524e4f8 --- var/spack/repos/builtin/packages/boost/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 77538cf0006..fc3b967fd1c 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -341,7 +341,11 @@ def install(self, spec, prefix): b2name = './b2' if spec.satisfies('@1.47:') else './bjam' b2 = Executable(b2name) - b2_options = ['-j', '%s' % make_jobs] + jobs = make_jobs + # in 1.59 max jobs became dynamic + if jobs > 64 and spec.satisfies('@:1.58'): + jobs = 64 + b2_options = ['-j', '%s' % jobs] threadingOpts = self.determine_b2_options(spec, b2_options) From c0e22049089de8552ce34a1bbedbba7ae487ca81 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 7 Aug 2017 12:01:50 -0500 Subject: [PATCH 1402/2394] velvet: new package (#4996) --- .../repos/builtin/packages/velvet/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/velvet/package.py diff --git a/var/spack/repos/builtin/packages/velvet/package.py b/var/spack/repos/builtin/packages/velvet/package.py new file mode 100644 index 00000000000..48e0e04d1aa --- /dev/null +++ b/var/spack/repos/builtin/packages/velvet/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Velvet(MakefilePackage): + """Velvet is a de novo genomic assembler specially designed for short read + sequencing technologies.""" + + homepage = "http://www.ebi.ac.uk/~zerbino/velvet/" + url = "http://www.ebi.ac.uk/~zerbino/velvet/velvet_1.2.10.tgz" + + version('1.2.10', '6e28c4b9bedc5f7ab2b947e7266a02f6') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('velvetg', prefix.bin) + install('velveth', prefix.bin) From 45c227c1a35ef335f04172d1eab174174504658d Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 7 Aug 2017 12:02:54 -0500 Subject: [PATCH 1403/2394] vsearch: new package (#4993) --- .../repos/builtin/packages/vsearch/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vsearch/package.py diff --git a/var/spack/repos/builtin/packages/vsearch/package.py b/var/spack/repos/builtin/packages/vsearch/package.py new file mode 100644 index 00000000000..07ed838654f --- /dev/null +++ b/var/spack/repos/builtin/packages/vsearch/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Vsearch(AutotoolsPackage): + """VSEARCH is a versatile open-source tool for metagenomics.""" + + homepage = "https://github.com/torognes/vsearch" + url = "https://github.com/torognes/vsearch/archive/v2.4.3.tar.gz" + + version('2.4.3', '8f57210fe447a781078fde06e6402650') + + depends_on('m4', type='build') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') From c53b1b9ad1488d217d013bf695bfc4c8a16da720 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 7 Aug 2017 12:04:20 -0500 Subject: [PATCH 1404/2394] rsem: new package (#4991) --- .../repos/builtin/packages/rsem/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/rsem/package.py diff --git a/var/spack/repos/builtin/packages/rsem/package.py b/var/spack/repos/builtin/packages/rsem/package.py new file mode 100644 index 00000000000..805a71e0d9c --- /dev/null +++ b/var/spack/repos/builtin/packages/rsem/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Rsem(MakefilePackage): + """RSEM is a software package for estimating gene and isoform expression + levels from RNA-Seq data.""" + + homepage = "http://deweylab.github.io/RSEM/" + url = "https://github.com/deweylab/RSEM/archive/v1.3.0.tar.gz" + + version('1.3.0', '9728161625d339d022130e2428604bf5') + + depends_on('r', type=('build', 'run')) + depends_on('perl', type=('build', 'run')) + depends_on('python', type=('build', 'run')) + depends_on('bowtie') + depends_on('bowtie2') + depends_on('star') + + def install(self, spec, prefix): + make('install', 'DESTDIR=%s' % prefix, 'prefix=') From 392603e90b6c34a0d53ec9276188134e50e59e6b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 7 Aug 2017 12:13:31 -0500 Subject: [PATCH 1405/2394] Make GCC binutils variant default to False (#4973) --- var/spack/repos/builtin/packages/gcc/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index e9b9c93dd64..0d31ef0dfc6 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -69,7 +69,7 @@ class Gcc(AutotoolsPackage): multi=True, description='Compilers and runtime libraries to build') variant('binutils', - default=sys.platform != 'darwin', + default=False, description='Build via binutils') variant('piclibs', default=False, From 5a94cee216d071b6232772b7db8adfdda89f8feb Mon Sep 17 00:00:00 2001 From: scheibelp Date: Mon, 7 Aug 2017 10:48:48 -0700 Subject: [PATCH 1406/2394] Variant satisfaction for indirect dependencies Fixes #4898 Constraints that were supposed to be conditionally activated for specified values of a single-valued variant were being activated unconditionally in the case that the variant was associated with an implicit dependency. For example if X->Y->Z and Y places a conditional constraint on Z for a given single-valued variant on Y, then it would have been applied unconditionally when concretizing X. --- lib/spack/spack/spec.py | 1 + lib/spack/spack/test/cmd/dependents.py | 3 +- lib/spack/spack/test/spec_semantics.py | 14 +++++++ .../repos/builtin.mock/packages/a/package.py | 1 + .../packages/multivalue_variant/package.py | 2 + .../singlevalue-variant-dependent/package.py | 39 +++++++++++++++++++ 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index cbbd48d9fa5..32e08d38964 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1879,6 +1879,7 @@ def _evaluate_dependency_conditions(self, name): pkg = spack.repo.get(self.fullname) conditions = pkg.dependencies[name] + substitute_abstract_variants(self) # evaluate when specs to figure out constraints on the dependency. dep = None for when_spec, dep_spec in conditions.items(): diff --git a/lib/spack/spack/test/cmd/dependents.py b/lib/spack/spack/test/cmd/dependents.py index 69f57d88a33..546d6d48c95 100644 --- a/lib/spack/spack/test/cmd/dependents.py +++ b/lib/spack/spack/test/cmd/dependents.py @@ -42,7 +42,8 @@ def test_transitive_dependents(builtin_mock): out, err = dependents('--transitive', 'libelf') actual = set(re.split(r'\s+', out.strip())) assert actual == set( - ['callpath', 'dyninst', 'libdwarf', 'mpileaks', 'multivalue_variant']) + ['callpath', 'dyninst', 'libdwarf', 'mpileaks', 'multivalue_variant', + 'singlevalue-variant-dependent']) def test_immediate_installed_dependents(builtin_mock, database): diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 1623133ef35..4ed7c635e95 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -307,6 +307,20 @@ def test_satisfies_single_valued_variant(self): # Check that conditional dependencies are treated correctly assert '^b' in a + def test_unsatisfied_single_valued_variant(self): + a = Spec('a foobar=baz') + a.concretize() + assert '^b' not in a + + mv = Spec('multivalue_variant') + mv.concretize() + assert 'a@1.0' not in mv + + def test_indirect_unsatisfied_single_valued_variant(self): + spec = Spec('singlevalue-variant-dependent') + spec.concretize() + assert 'a@1.0' not in spec + def test_unsatisfiable_multi_value_variant(self): # Semantics for a multi-valued variant is different diff --git a/var/spack/repos/builtin.mock/packages/a/package.py b/var/spack/repos/builtin.mock/packages/a/package.py index e2fa6c35b02..037b322f105 100644 --- a/var/spack/repos/builtin.mock/packages/a/package.py +++ b/var/spack/repos/builtin.mock/packages/a/package.py @@ -32,6 +32,7 @@ class A(AutotoolsPackage): url = "http://www.example.com/a-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') + version('2.0', '2.0_a_hash') variant( 'foo', diff --git a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py index f20bf7c3698..946b9893d8f 100644 --- a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py +++ b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py @@ -52,6 +52,8 @@ class MultivalueVariant(Package): depends_on('mpi') depends_on('callpath') + depends_on('a') + depends_on('a@1.0', when='fee=barbaz') def install(self, spec, prefix): pass diff --git a/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py new file mode 100644 index 00000000000..c6630927c7d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class SinglevalueVariantDependent(Package): + """Simple package with one optional dependency""" + + homepage = "http://www.example.com" + url = "http://www.example.com/archive-1.0.tar.gz" + + version('1.0', '0123456789abcdef0123456789abcdef') + + depends_on('multivalue_variant fee=baz') + + def install(self, spec, prefix): + pass From cf2a96a3f5586c1dc59452c07c14916a18ce6c0f Mon Sep 17 00:00:00 2001 From: jiseung Date: Mon, 7 Aug 2017 12:59:12 -0500 Subject: [PATCH 1407/2394] Packages/smc (#4999) * new package: SMC * removed template and added proxy-app tag * added comp variant in edit() * edited comp variant in edit() * move executable and input file into bin and install readme and license --- var/spack/repos/builtin/packages/smc/package.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/smc/package.py b/var/spack/repos/builtin/packages/smc/package.py index a58c5e171a6..402c892b0fd 100644 --- a/var/spack/repos/builtin/packages/smc/package.py +++ b/var/spack/repos/builtin/packages/smc/package.py @@ -74,7 +74,10 @@ def edit(self, spec, prefix): makefile.filter('COMP := .*', 'COMP := Intel') def install(self, spec, prefix): + mkdirp(prefix.bin) files = glob.glob(join_path(self.build_directory, '*.exe')) for f in files: - install(f, prefix) - install('inputs_SMC', prefix) + install(f, prefix.bin) + install('inputs_SMC', prefix.bin) + install('README', prefix) + install('BoxLib.license.txt', prefix) \ No newline at end of file From 8cbc7eeae456ab6eee2983c4787461a94f86810f Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 7 Aug 2017 20:32:09 +0200 Subject: [PATCH 1408/2394] Build Cube pckage with parallel make (only install phase serial) (#5001) --- var/spack/repos/builtin/packages/cube/package.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/cube/package.py b/var/spack/repos/builtin/packages/cube/package.py index f1533a9bd39..841f737e41f 100644 --- a/var/spack/repos/builtin/packages/cube/package.py +++ b/var/spack/repos/builtin/packages/cube/package.py @@ -36,9 +36,6 @@ class Cube(AutotoolsPackage): homepage = "http://www.scalasca.org/software/cube-4.x/download.html" url = "http://apps.fz-juelich.de/scalasca/releases/cube/4.2/dist/cube-4.2.3.tar.gz" - # Some versions fail with parallel builds/installs - parallel = False - version('4.3.5', 'e5dce986e3c6381ea3a5fcb66c553adc') version('4.3.4', '50f73060f55311cb12c5b3cb354d59fa') version('4.3.3', '07e109248ed8ffc7bdcce614264a2909') @@ -64,3 +61,6 @@ def configure_args(self): configure_args.append('--without-gui') return configure_args + + def install(self, spec, prefix): + make('install', parallel=False) From 755081968f8967a534b2e84757647e98c7b34b70 Mon Sep 17 00:00:00 2001 From: jiseung Date: Mon, 7 Aug 2017 13:38:17 -0500 Subject: [PATCH 1409/2394] Packages/cns nospec (#4998) * new package: cns-nospec * made changes as suggested and added proxy-app tag * updated edit() * adjusted logic for '+debug' * install readme and license * install readme and license --- var/spack/repos/builtin/packages/cns-nospec/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/cns-nospec/package.py b/var/spack/repos/builtin/packages/cns-nospec/package.py index c702a0a92b9..d5569bdb6ec 100644 --- a/var/spack/repos/builtin/packages/cns-nospec/package.py +++ b/var/spack/repos/builtin/packages/cns-nospec/package.py @@ -65,3 +65,5 @@ def install(self, spec, prefix): files = glob.glob(join_path(self.build_directory, '*.exe')) for f in files: install(f, prefix.bin) + install('README.txt', prefix) + install('license.txt', prefix) \ No newline at end of file From 8ca7c7700895032d7ec9fe728146e3ac0dbd0a64 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Mon, 7 Aug 2017 11:41:13 -0700 Subject: [PATCH 1410/2394] Elemental cublas (#4889) * Added a package for the MDAnalysis toolkit. * Added a patch that allows Elemental to use cuBLAS internally. * Added support for LBANN to use the new cuBLAS extension in Elemental. * Added a proper variant for when LBANN does not want to use cuBLAS in elemental. * Added a package for the cnpy project and used it in the lbann package. * Removed unnecessary comment lines. * Removed blank lines * Removed debug variant * Add support for libjpeg-turbo * Added additional variants for OpenCV features. Fixed bug when linking in TIFF support, where libtiff used the regular JPEG library and OpenCV used libjpeg-turbo. Now libtiff can use libjpeg-turbo. * Removed the variant for getting Elemental to use the cublas variant. Updated the requirements for OpenCV to add new options. * Fixed a flake8 error in OpenCV and added a path to find cnpy in lbann. * Fixed line too long flake8 error. * Added a flag to specify the datatype size in lbann and fixed a flake8 error. * Added a debug build variant using hte new build_type * Fixed flake8 * Fixed how the debug build is pushed to Elemental * Fixed a bug in the Elemental package where the blas search flags were being overridden by the blas link flags. Changed how the sequential initialization variant is implemented in LBANN. * Added support via a variant to explicitly use mkl or openblas. This helps work around variant forwarding problems. * Updated package files to address pull request comments. --- .../repos/builtin/packages/cnpy/package.py | 34 + .../packages/elemental/elemental_cublas.patch | 668 ++++++++++++++++++ .../builtin/packages/elemental/package.py | 20 +- .../repos/builtin/packages/lbann/package.py | 26 +- .../repos/builtin/packages/libtiff/package.py | 5 +- .../repos/builtin/packages/opencv/package.py | 93 ++- 6 files changed, 804 insertions(+), 42 deletions(-) create mode 100644 var/spack/repos/builtin/packages/cnpy/package.py create mode 100644 var/spack/repos/builtin/packages/elemental/elemental_cublas.patch diff --git a/var/spack/repos/builtin/packages/cnpy/package.py b/var/spack/repos/builtin/packages/cnpy/package.py new file mode 100644 index 00000000000..b62df10c2e6 --- /dev/null +++ b/var/spack/repos/builtin/packages/cnpy/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cnpy(CMakePackage): + """cnpy: library to read/write .npy and .npz files in C/C++.""" + + homepage = "https://github.com/rogersce/cnpy" + url = "https://github.com/rogersce/cnpy" + + version('master', git='https://github.com/rogersce/cnpy.git', branch="master") diff --git a/var/spack/repos/builtin/packages/elemental/elemental_cublas.patch b/var/spack/repos/builtin/packages/elemental/elemental_cublas.patch new file mode 100644 index 00000000000..9cf9b6e6b58 --- /dev/null +++ b/var/spack/repos/builtin/packages/elemental/elemental_cublas.patch @@ -0,0 +1,668 @@ +diff -Naur a/include/El/blas_like/level3.hpp b/include/El/blas_like/level3.hpp +--- a/include/El/blas_like/level3.hpp 2017-06-08 07:30:43.180249917 -0700 ++++ b/include/El/blas_like/level3.hpp 2017-06-08 07:35:27.325434602 -0700 +@@ -31,6 +31,10 @@ + } + using namespace GemmAlgorithmNS; + ++void GemmUseGPU(int min_M, int min_N, int min_K); ++ ++void GemmUseCPU(); ++ + template + void Gemm + ( Orientation orientA, Orientation orientB, +diff -Naur a/include/El/core/imports/blas.hpp b/include/El/core/imports/blas.hpp +--- a/include/El/core/imports/blas.hpp 2017-06-08 07:30:43.522016908 -0700 ++++ b/include/El/core/imports/blas.hpp 2017-06-08 07:35:06.834030908 -0700 +@@ -916,4 +916,63 @@ + } // namespace blas + } // namespace El + ++ ++#if defined(EL_USE_CUBLAS) ++ ++namespace El { ++ ++#ifdef EL_USE_64BIT_BLAS_INTS ++typedef long long int BlasInt; ++#else ++typedef int BlasInt; ++#endif ++ ++namespace cublas { ++ ++// NOTE: templated routines are custom and not wrappers ++ ++// Level 3 BLAS ++// ============ ++template ++void Gemm ++( char transA, char transB, BlasInt m, BlasInt n, BlasInt k, ++ const T& alpha, ++ const T* A, BlasInt ALDim, ++ const T* B, BlasInt BLDim, ++ const T& beta, ++ T* C, BlasInt CLDim ); ++ ++void Gemm ++( char transA, char transB, BlasInt m, BlasInt n, BlasInt k, ++ const float& alpha, ++ const float* A, BlasInt ALDim, ++ const float* B, BlasInt BLDim, ++ const float& beta, ++ float* C, BlasInt CLDim ); ++void Gemm ++( char transA, char transB, BlasInt m, BlasInt n, BlasInt k, ++ const double& alpha, ++ const double* A, BlasInt ALDim, ++ const double* B, BlasInt BLDim, ++ const double& beta, ++ double* C, BlasInt CLDim ); ++void Gemm ++( char transA, char transB, BlasInt m, BlasInt n, BlasInt k, ++ const scomplex& alpha, ++ const scomplex* A, BlasInt ALDim, ++ const scomplex* B, BlasInt BLDim, ++ const scomplex& beta, ++ scomplex* C, BlasInt CLDim ); ++void Gemm ++( char transA, char transB, BlasInt m, BlasInt n, BlasInt k, ++ const dcomplex& alpha, ++ const dcomplex* A, BlasInt ALDim, ++ const dcomplex* B, BlasInt BLDim, ++ const dcomplex& beta, ++ dcomplex* C, BlasInt CLDim ); ++ ++} // namespace cublas ++} // namespace El ++#endif ++ + #endif // ifndef EL_IMPORTS_BLAS_DECL_HPP +diff -Naur a/src/blas_like/level3/Gemm.cpp b/src/blas_like/level3/Gemm.cpp +--- a/src/blas_like/level3/Gemm.cpp 2017-06-08 07:30:44.307096427 -0700 ++++ b/src/blas_like/level3/Gemm.cpp 2017-06-08 07:34:23.062863489 -0700 +@@ -16,6 +16,20 @@ + + namespace El { + ++char gemm_cpu_gpu_switch = 'c'; ++int min_M = 0, min_N = 0, min_K = 0; ++ ++void GemmUseGPU(int _min_M, int _min_N, int _min_K) { ++ gemm_cpu_gpu_switch = 'g'; ++ min_M = _min_M; ++ min_N = _min_N; ++ min_K = _min_K; ++} ++ ++void GemmUseCPU() { ++ gemm_cpu_gpu_switch = 'c'; ++} ++ + template + void Gemm + ( Orientation orientA, Orientation orientB, +@@ -59,11 +73,30 @@ + const Int k = ( orientA == NORMAL ? A.Width() : A.Height() ); + if( k != 0 ) + { ++#if defined(EL_USE_CUBLAS) ++ if (gemm_cpu_gpu_switch == 'g' && ++ m >= min_M && ++ n >= min_N && ++ k >= min_K) { ++ cublas::Gemm ++ ( transA, transB, m, n, k, ++ alpha, A.LockedBuffer(), A.LDim(), ++ B.LockedBuffer(), B.LDim(), ++ beta, C.Buffer(), C.LDim() ); ++ } else { ++ blas::Gemm ++ ( transA, transB, m, n, k, ++ alpha, A.LockedBuffer(), A.LDim(), ++ B.LockedBuffer(), B.LDim(), ++ beta, C.Buffer(), C.LDim() ); ++ } ++#else + blas::Gemm + ( transA, transB, m, n, k, + alpha, A.LockedBuffer(), A.LDim(), + B.LockedBuffer(), B.LDim(), + beta, C.Buffer(), C.LDim() ); ++#endif + } + else + { +diff -Naur a/src/core/imports/blas/Gemm.hpp b/src/core/imports/blas/Gemm.hpp +--- a/src/core/imports/blas/Gemm.hpp 2017-06-08 07:30:45.090529967 -0700 ++++ b/src/core/imports/blas/Gemm.hpp 2017-06-08 07:34:46.503009958 -0700 +@@ -41,6 +41,12 @@ + + } // extern "C" + ++ ++#if defined(EL_USE_CUBLAS) ++#include ++#include ++#endif ++ + namespace El { + namespace blas { + +@@ -515,3 +521,515 @@ + + } // namespace blas + } // namespace El ++ ++ ++#if EL_USE_CUBLAS ++ ++#define USE_CUB 1 ++ ++namespace El { ++namespace cublas { ++ ++#if USE_CUB ++cub::CachingDeviceAllocator g_allocator(true); // Caching allocator for device memory ++#endif ++ ++template ++void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const T& alpha, ++ const T* A, BlasInt ALDim, ++ const T* B, BlasInt BLDim, ++ const T& beta, ++ T* C, BlasInt CLDim ) ++{ ++ // put something here ++ printf("integer version \n"); ++} ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const Int& alpha, ++ const Int* A, BlasInt ALDim, ++ const Int* B, BlasInt BLDim, ++ const Int& beta, ++ Int* C, BlasInt CLDim ); ++#ifdef EL_HAVE_QD ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const DoubleDouble& alpha, ++ const DoubleDouble* A, BlasInt ALDim, ++ const DoubleDouble* B, BlasInt BLDim, ++ const DoubleDouble& beta, ++ DoubleDouble* C, BlasInt CLDim ); ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const QuadDouble& alpha, ++ const QuadDouble* A, BlasInt ALDim, ++ const QuadDouble* B, BlasInt BLDim, ++ const QuadDouble& beta, ++ QuadDouble* C, BlasInt CLDim ); ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const Complex& alpha, ++ const Complex* A, BlasInt ALDim, ++ const Complex* B, BlasInt BLDim, ++ const Complex& beta, ++ Complex* C, BlasInt CLDim ); ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const Complex& alpha, ++ const Complex* A, BlasInt ALDim, ++ const Complex* B, BlasInt BLDim, ++ const Complex& beta, ++ Complex* C, BlasInt CLDim ); ++#endif ++#ifdef EL_HAVE_QUAD ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const Quad& alpha, ++ const Quad* A, BlasInt ALDim, ++ const Quad* B, BlasInt BLDim, ++ const Quad& beta, ++ Quad* C, BlasInt CLDim ); ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const Complex& alpha, ++ const Complex* A, BlasInt ALDim, ++ const Complex* B, BlasInt BLDim, ++ const Complex& beta, ++ Complex* C, BlasInt CLDim ); ++#endif ++#ifdef EL_HAVE_MPC ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const BigInt& alpha, ++ const BigInt* A, BlasInt ALDim, ++ const BigInt* B, BlasInt BLDim, ++ const BigInt& beta, ++ BigInt* C, BlasInt CLDim ); ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const BigFloat& alpha, ++ const BigFloat* A, BlasInt ALDim, ++ const BigFloat* B, BlasInt BLDim, ++ const BigFloat& beta, ++ BigFloat* C, BlasInt CLDim ); ++template void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const Complex& alpha, ++ const Complex* A, BlasInt ALDim, ++ const Complex* B, BlasInt BLDim, ++ const Complex& beta, ++ Complex* C, BlasInt CLDim ); ++#endif ++ ++void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const float& alpha, ++ const float* A, BlasInt ALDim, ++ const float* B, BlasInt BLDim, ++ const float& beta, ++ float* C, BlasInt CLDim ) ++{ ++ EL_DEBUG_CSE ++ EL_DEBUG_ONLY( ++ if( std::toupper(transA) == 'N' ) ++ { ++ if( ALDim < Max(m,1) ) ++ LogicError("ALDim was too small: ALDim=",ALDim,",m=",m); ++ } ++ else ++ { ++ if( ALDim < Max(k,1) ) ++ LogicError("ALDim was too small: ALDim=",ALDim,",k=",k); ++ } ++ ++ if( std::toupper(transB) == 'N' ) ++ { ++ if( BLDim < Max(k,1) ) ++ LogicError("BLDim was too small: BLDim=",BLDim,",k=",k); ++ } ++ else ++ { ++ if( BLDim < Max(n,1) ) ++ LogicError("BLDim was too small: BLDim=",BLDim,",n=",n); ++ } ++ ++ if( CLDim < Max(m,1) ) ++ LogicError("CLDim was too small: CLDim=",CLDim,",m=",m); ++ ) ++ const char fixedTransA = ( std::toupper(transA) == 'C' ? 'T' : transA ); ++ const char fixedTransB = ( std::toupper(transB) == 'C' ? 'T' : transB ); ++ ++ const mpi::Comm comm; ++ const Int commRank = mpi::Rank( comm ); ++ if (commRank == 0) { ++ //printf("calling cublas Sgemm: m %d n %d k %d\n", m, n, k); ++ } ++ ++ BlasInt rowA, colA, rowB, colB, rowC, colC; ++ // device memory size for A, B and C ++ BlasInt sizeA, sizeB, sizeC; ++ float *devA=NULL, *devB=NULL, *devC=NULL; ++ ++ rowA = fixedTransA == 'T' ? k : m; ++ colA = fixedTransA == 'T' ? m : k; ++ rowB = fixedTransB == 'T' ? n : k; ++ colB = fixedTransB == 'T' ? k : n; ++ rowC = m; ++ colC = n; ++ sizeA = rowA * colA; ++ sizeB = rowB * colB; ++ sizeC = rowC * colC; ++ ++ cublasStatus stat; ++ ++#if USE_CUB ++ CubDebugExit(g_allocator.DeviceAllocate((void**)&devA, ++ sizeof(float) * (sizeA+sizeB+sizeC) )); ++#else ++ stat = cublasAlloc(sizeA+sizeB+sizeC, sizeof(float), (void **) &devA); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("Alloc A,B,C error\n"); } ++#endif ++ ++ devB = devA + sizeA; ++ devC = devB + sizeB; ++ ++ // copy matrix A, B and C to device ++ stat = cublasSetMatrix(rowA, colA, sizeof(float), A, ALDim, devA, rowA); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix A error\n"); } ++ ++ stat = cublasSetMatrix(rowB, colB, sizeof(float), B, BLDim, devB, rowB); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix B error\n"); } ++ ++ if (beta != 0.0) ++ { ++ stat = cublasSetMatrix(rowC, colC, sizeof(float), C, CLDim, devC, rowC); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix C error\n"); } ++ } ++ ++ // cublasgemm ++ cublasSgemm ++ ( fixedTransA, fixedTransB, m, n, k, ++ alpha, devA, rowA, devB, rowB, beta, devC, rowC ); ++ ++ // copy matrix C to host ++ stat = cublasGetMatrix(rowC, colC, sizeof(float), devC, rowC, C, CLDim); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("GetMatrix C error\n"); } ++ ++ // free ++#if USE_CUB ++ CubDebugExit(g_allocator.DeviceFree(devA)); ++#else ++ cublasFree(devA); ++#endif ++ //printf("CUBLAS float done ...\n"); ++} ++ ++void Gemm ++( char transA, char transB, ++ BlasInt m, BlasInt n, BlasInt k, ++ const double& alpha, ++ const double* A, BlasInt ALDim, ++ const double* B, BlasInt BLDim, ++ const double& beta, ++ double* C, BlasInt CLDim ) ++{ ++ EL_DEBUG_CSE ++ EL_DEBUG_ONLY( ++ if( std::toupper(transA) == 'N' ) ++ { ++ if( ALDim < Max(m,1) ) ++ LogicError("ALDim was too small: ALDim=",ALDim,",m=",m); ++ } ++ else ++ { ++ if( ALDim < Max(k,1) ) ++ LogicError("ALDim was too small: ALDim=",ALDim,",k=",k); ++ } ++ ++ if( std::toupper(transB) == 'N' ) ++ { ++ if( BLDim < Max(k,1) ) ++ LogicError("BLDim was too small: BLDim=",BLDim,",k=",k); ++ } ++ else ++ { ++ if( BLDim < Max(n,1) ) ++ LogicError("BLDim was too small: BLDim=",BLDim,",n=",n); ++ } ++ ++ if( CLDim < Max(m,1) ) ++ LogicError("CLDim was too small: CLDim=",CLDim,",m=",m); ++ ) ++ const char fixedTransA = ( std::toupper(transA) == 'C' ? 'T' : transA ); ++ const char fixedTransB = ( std::toupper(transB) == 'C' ? 'T' : transB ); ++ ++ const mpi::Comm comm; ++ const Int commRank = mpi::Rank( comm ); ++ if (commRank == 0) { ++ //printf("calling cublas Dgemm: m %d n %d k %d\n", m, n, k); ++ } ++ ++ BlasInt rowA, colA, rowB, colB, rowC, colC; ++ // device memory size for A, B and C ++ BlasInt sizeA, sizeB, sizeC; ++ double *devA=NULL, *devB=NULL, *devC=NULL; ++ ++ rowA = fixedTransA == 'T' ? k : m; ++ colA = fixedTransA == 'T' ? m : k; ++ rowB = fixedTransB == 'T' ? n : k; ++ colB = fixedTransB == 'T' ? k : n; ++ rowC = m; ++ colC = n; ++ sizeA = rowA * colA; ++ sizeB = rowB * colB; ++ sizeC = rowC * colC; ++ ++ cublasStatus stat; ++ ++#if USE_CUB ++ CubDebugExit(g_allocator.DeviceAllocate((void**)&devA, ++ sizeof(double) * (sizeA+sizeB+sizeC) )); ++#else ++ stat = cublasAlloc(sizeA+sizeB+sizeC, sizeof(double), (void **) &devA); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("Alloc A,B,C error\n"); } ++#endif ++ ++ devB = devA + sizeA; ++ devC = devB + sizeB; ++ ++ // copy matrix A, B and C to device ++ stat = cublasSetMatrix(rowA, colA, sizeof(double), A, ALDim, devA, rowA); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix A error\n"); } ++ ++ stat = cublasSetMatrix(rowB, colB, sizeof(double), B, BLDim, devB, rowB); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix B error\n"); } ++ ++ if (beta != 0.0) ++ { ++ stat = cublasSetMatrix(rowC, colC, sizeof(double), C, CLDim, devC, rowC); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix C error\n"); } ++ } ++ ++ // cublasgemm ++ cublasDgemm ++ ( fixedTransA, fixedTransB, m, n, k, ++ alpha, devA, rowA, devB, rowB, beta, devC, rowC ); ++ ++ // copy matrix C to host ++ stat = cublasGetMatrix(rowC, colC, sizeof(double), devC, rowC, C, CLDim); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("GetMatrix C error\n"); } ++ ++ // free ++#if USE_CUB ++ CubDebugExit(g_allocator.DeviceFree(devA)); ++#else ++ cublasFree(devA); ++#endif ++ //printf("CUBLAS double done ...\n"); ++} ++ ++void Gemm ++( char transA, char transB, BlasInt m, BlasInt n, BlasInt k, ++ const scomplex& alpha, ++ const scomplex* A, BlasInt ALDim, ++ const scomplex* B, BlasInt BLDim, ++ const scomplex& beta, ++ scomplex* C, BlasInt CLDim ) ++{ ++ EL_DEBUG_CSE ++ EL_DEBUG_ONLY( ++ if( std::toupper(transA) == 'N' ) ++ { ++ if( ALDim < Max(m,1) ) ++ LogicError("ALDim was too small: ALDim=",ALDim,",m=",m); ++ } ++ else ++ { ++ if( ALDim < Max(k,1) ) ++ LogicError("ALDim was too small: ALDim=",ALDim,",k=",k); ++ } ++ ++ if( std::toupper(transB) == 'N' ) ++ { ++ if( BLDim < Max(k,1) ) ++ LogicError("BLDim was too small: BLDim=",BLDim,",k=",k); ++ } ++ else ++ { ++ if( BLDim < Max(n,1) ) ++ LogicError("BLDim was too small: BLDim=",BLDim,",n=",n); ++ } ++ ++ if( CLDim < Max(m,1) ) ++ LogicError("CLDim was too small: CLDim=",CLDim,",m=",m); ++ ) ++ ++ const char fixedTransA = transA; ++ const char fixedTransB = transB; ++ ++ const mpi::Comm comm; ++ const Int commRank = mpi::Rank( comm ); ++ if (commRank == 0) { ++ //printf("calling cublas Cgemm: m %d n %d k %d\n", m, n, k); ++ } ++ ++ BlasInt rowA, colA, rowB, colB, rowC, colC; ++ // device memory size for A, B and C ++ BlasInt sizeA, sizeB, sizeC; ++ cuComplex *devA=NULL, *devB=NULL, *devC=NULL; ++ ++ rowA = fixedTransA == 'T' ? k : m; ++ colA = fixedTransA == 'T' ? m : k; ++ rowB = fixedTransB == 'T' ? n : k; ++ colB = fixedTransB == 'T' ? k : n; ++ rowC = m; ++ colC = n; ++ sizeA = rowA * colA; ++ sizeB = rowB * colB; ++ sizeC = rowC * colC; ++ ++ cublasStatus stat; ++ stat = cublasAlloc(sizeA+sizeB+sizeC, sizeof(cuComplex), (void **) &devA); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("Alloc A,B,C error\n"); } ++ ++ devB = devA + sizeA; ++ devC = devB + sizeB; ++ ++ // copy matrix A, B and C to device ++ stat = cublasSetMatrix(rowA, colA, sizeof(cuComplex), A, ALDim, devA, rowA); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix A error\n"); } ++ ++ stat = cublasSetMatrix(rowB, colB, sizeof(cuComplex), B, BLDim, devB, rowB); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix B error\n"); } ++ ++ if (beta.real() != 0.0 || beta.imag() != 0.0) ++ { ++ stat = cublasSetMatrix(rowC, colC, sizeof(cuComplex), C, CLDim, devC, rowC); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix C error\n"); } ++ } ++ ++ // cublasgemm ++ cublasCgemm ++ ( fixedTransA, fixedTransB, m, n, k, ++ *((cuComplex*) &alpha), devA, rowA, devB, rowB, *((cuComplex*) &beta), devC, rowC ); ++ ++ // copy matrix C to host ++ stat = cublasGetMatrix(rowC, colC, sizeof(cuComplex), devC, rowC, C, CLDim); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("GetMatrix C error\n"); } ++ ++ // free ++ cublasFree(devA); ++} ++ ++void Gemm ++( char transA, char transB, BlasInt m, BlasInt n, BlasInt k, ++ const dcomplex& alpha, ++ const dcomplex* A, BlasInt ALDim, ++ const dcomplex* B, BlasInt BLDim, ++ const dcomplex& beta, ++ dcomplex* C, BlasInt CLDim ) ++{ ++ EL_DEBUG_CSE ++ EL_DEBUG_ONLY( ++ if( std::toupper(transA) == 'N' ) ++ { ++ if( ALDim < Max(m,1) ) ++ LogicError("ALDim was too small: ALDim=",ALDim,",m=",m); ++ } ++ else ++ { ++ if( ALDim < Max(k,1) ) ++ LogicError("ALDim was too small: ALDim=",ALDim,",k=",k); ++ } ++ ++ if( std::toupper(transB) == 'N' ) ++ { ++ if( BLDim < Max(k,1) ) ++ LogicError("BLDim was too small: BLDim=",BLDim,",k=",k); ++ } ++ else ++ { ++ if( BLDim < Max(n,1) ) ++ LogicError("BLDim was too small: BLDim=",BLDim,",n=",n); ++ } ++ ++ if( CLDim < Max(m,1) ) ++ LogicError("CLDim was too small: CLDim=",CLDim,",m=",m); ++ ) ++ ++ const char fixedTransA = transA; ++ const char fixedTransB = transB; ++ ++ const mpi::Comm comm; ++ const Int commRank = mpi::Rank( comm ); ++ if (commRank == 0) { ++ //printf("calling cublas Zgemm: m %d n %d k %d\n", m, n, k); ++ } ++ ++ BlasInt rowA, colA, rowB, colB, rowC, colC; ++ // device memory size for A, B and C ++ BlasInt sizeA, sizeB, sizeC; ++ cuDoubleComplex *devA=NULL, *devB=NULL, *devC=NULL; ++ ++ rowA = fixedTransA == 'T' ? k : m; ++ colA = fixedTransA == 'T' ? m : k; ++ rowB = fixedTransB == 'T' ? n : k; ++ colB = fixedTransB == 'T' ? k : n; ++ rowC = m; ++ colC = n; ++ sizeA = rowA * colA; ++ sizeB = rowB * colB; ++ sizeC = rowC * colC; ++ ++ cublasStatus stat; ++ stat = cublasAlloc(sizeA+sizeB+sizeC, sizeof(cuDoubleComplex), (void **) &devA); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("Alloc A,B,C error\n"); } ++ ++ devB = devA + sizeA; ++ devC = devB + sizeB; ++ ++ // copy matrix A, B and C to device ++ stat = cublasSetMatrix(rowA, colA, sizeof(cuDoubleComplex), A, ALDim, devA, rowA); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix A error\n"); } ++ ++ stat = cublasSetMatrix(rowB, colB, sizeof(cuDoubleComplex), B, BLDim, devB, rowB); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix B error\n"); } ++ ++ if (beta.real() != 0.0 || beta.imag() != 0.0) ++ { ++ stat = cublasSetMatrix(rowC, colC, sizeof(cuDoubleComplex), C, CLDim, devC, rowC); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("SetMatrix C error\n"); } ++ } ++ ++ cublasZgemm ++ ( fixedTransA, fixedTransB, m, n, k, ++ *((cuDoubleComplex*) &alpha), devA, rowA, devB, rowB, *((cuDoubleComplex*) &beta), ++ devC, rowC ); ++ ++ // copy matrix C to host ++ stat = cublasGetMatrix(rowC, colC, sizeof(cuDoubleComplex), devC, rowC, C, CLDim); ++ if (stat != CUBLAS_STATUS_SUCCESS) { RuntimeError("GetMatrix C error\n"); } ++ ++ // free ++ cublasFree(devA); ++} ++ ++} // namespace cublas ++} // namespace El ++ ++#endif ++ diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index e118bcbd447..50fb4f98295 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -33,6 +33,7 @@ class Elemental(CMakePackage): homepage = "http://libelemental.org" url = "https://github.com/elemental/Elemental/archive/v0.87.6.tar.gz" + version('master', git='https://github.com/elemental/Elemental.git', branch='master') version('0.87.7', '6c1e7442021c59a36049e37ea69b8075') version('0.87.6', '9fd29783d45b0a0e27c0df85f548abe9') @@ -52,6 +53,8 @@ class Elemental(CMakePackage): description='Enable quad precision') variant('int64', default=False, description='Use 64bit integers') + variant('cublas', default=False, + description='Enable cuBLAS for local BLAS operations') # When this variant is set remove the normal dependencies since # Elemental has to build BLAS and ScaLAPACK internally variant('int64_blas', default=False, @@ -62,15 +65,21 @@ class Elemental(CMakePackage): variant('build_type', default='Release', description='The build type to build', values=('Debug', 'Release')) + variant('blas', default='openblas', values=('openblas', 'mkl'), + description='Enable the use of OpenBlas/MKL') - # Note that this forces us to use OpenBLAS until #1712 is fixed + # Note that #1712 forces us to enumerate the different blas variants depends_on('blas', when='~openmp_blas ~int64_blas') # Hack to forward variant to openblas package # Allow Elemental to build internally when using 8-byte ints - depends_on('openblas +openmp', when='+openmp_blas ~int64_blas') + depends_on('openblas +openmp', when='blas=openblas +openmp_blas ~int64_blas') + + depends_on('intel-mkl', when="blas=mkl ~openmp_blas ~int64_blas") + depends_on('intel-mkl +openmp', when='blas=mkl +openmp_blas ~int64_blas') + depends_on('intel-mkl@2017.1 +openmp +ilp64', when='blas=mkl +openmp_blas +int64_blas') # Note that this forces us to use OpenBLAS until #1712 is fixed - depends_on('lapack', when='~openmp_blas') + depends_on('lapack', when='blas=openblas ~openmp_blas') depends_on('metis') depends_on('metis +int64', when='+int64') depends_on('mpi') @@ -79,6 +88,8 @@ class Elemental(CMakePackage): extends('python', when='+python') depends_on('python@:2.8', when='+python') + patch('elemental_cublas.patch', when='+cublas') + @property def libs(self): shared = True if '+shared' in self.spec else False @@ -126,8 +137,7 @@ def cmake_args(self): math_libs = spec['scalapack'].libs + math_libs args.extend([ - '-DMATH_LIBS:STRING={0}'.format(math_libs.search_flags), - '-DMATH_LIBS:STRING={0}'.format(math_libs.link_flags)]) + '-DMATH_LIBS:STRING={0}'.format(math_libs.ld_flags)]) if '+python' in spec: args.extend([ diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index fea19245503..a93b9b5b66b 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -39,37 +39,49 @@ class Lbann(CMakePackage): variant('gpu', default=False, description='Builds with support for GPUs via CUDA and cuDNN') variant('opencv', default=True, description='Builds with support for image processing routines with OpenCV') variant('seq_init', default=False, description='Force serial initialization of weight matrices.') + variant('dtype', default=4, description='Size (bits) of floating point representation for weights') + variant('build_type', default='Release', + description='The build type to build', + values=('Debug', 'Release')) depends_on('elemental +openmp_blas +scalapack +shared +int64') + depends_on('elemental +openmp_blas +scalapack +shared +int64 build_type=Debug', + when=('build_type=Debug')) depends_on('cuda', when='+gpu') depends_on('mpi') - depends_on('opencv@3.2.0', when='+opencv') + depends_on('opencv@3.2.0: +openmp +core +highgui +imgproc +jpeg +png +tiff +zlib', when='+opencv') depends_on('protobuf@3.0.2:') + depends_on('cnpy') def cmake_args(self): spec = self.spec # Environment variables CPPFLAGS = [] CPPFLAGS.append('-DLBANN_SET_EL_RNG') - if '~seq_init' in spec: - CPPFLAGS.append('-DLBANN_PARALLEL_RANDOM_MATRICES') + + CPPFLAGS.append('-DLBANN_DATATYPE={0}'.format( + int(spec.variants['dtype'].value))) args = [ '-DCMAKE_INSTALL_MESSAGE=LAZY', '-DCMAKE_CXX_FLAGS=%s' % ' '.join(CPPFLAGS), '-DWITH_CUDA:BOOL=%s' % ('+gpu' in spec), '-DWITH_CUDNN:BOOL=%s' % ('+gpu' in spec), + '-DELEMENTAL_USE_CUBLAS:BOOL=%s' % ( + '+cublas' in spec['elemental']), '-DWITH_TBINF=OFF', '-DWITH_VTUNE=OFF', - '-DElemental_DIR={0}'.format(self.spec['elemental'].prefix), + '-DElemental_DIR={0}'.format(spec['elemental'].prefix), + '-DCNPY_DIR={0}'.format(spec['cnpy'].prefix), '-DELEMENTAL_MATH_LIBS={0}'.format( - self.spec['elemental'].libs), + spec['elemental'].libs), + '-DSEQ_INIT:BOOL=%s' % ('+seq_init' in spec), '-DVERBOSE=0', '-DLBANN_HOME=.', '-DLBANN_VER=spack'] - if '+opencv' in self.spec: + if '+opencv' in spec: args.extend(['-DOpenCV_DIR:STRING={0}'.format( - self.spec['opencv'].prefix)]) + spec['opencv'].prefix)]) return args diff --git a/var/spack/repos/builtin/packages/libtiff/package.py b/var/spack/repos/builtin/packages/libtiff/package.py index 2fcccad7398..29db7b42d3d 100644 --- a/var/spack/repos/builtin/packages/libtiff/package.py +++ b/var/spack/repos/builtin/packages/libtiff/package.py @@ -35,6 +35,9 @@ class Libtiff(AutotoolsPackage): version('4.0.6', 'd1d2e940dea0b5ad435f21f03d96dd72') version('4.0.3', '051c1068e6a0627f461948c365290410') - depends_on('jpeg') + variant('turbo', default=False, description='use libjpeg-turbo') + + depends_on('jpeg', when='-turbo') + depends_on('libjpeg-turbo', when='+turbo') depends_on('zlib') depends_on('xz') diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index 33adadc15ed..f2bda99a012 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -42,8 +42,15 @@ class Opencv(CMakePackage): homepage = 'http://opencv.org/' url = 'https://github.com/Itseez/opencv/archive/3.1.0.tar.gz' - version('3.2.0', 'a43b65488124ba33dde195fea9041b70') - version('3.1.0', '70e1dd07f0aa06606f1bc0e3fa15abd3') + version('master', git="https://github.com/opencv/opencv.git", branch="master") + version('3.2.0', 'a43b65488124ba33dde195fea9041b70') + version('3.1.0', '70e1dd07f0aa06606f1bc0e3fa15abd3') + version('2.4.13.2', 'fe52791ce523681a67036def4c25261b') + version('2.4.13.1', 'f6d354500d5013e60dc0fc44b07a63d1') + version('2.4.13', '8feb45a71adad89b8017a777477c3eff') + version('2.4.12.3', '2496a4a4caf8fecfbfc294fbe6a814b0') + version('2.4.12.2', 'bc0c60c2ea1cf4078deef99569912fc7') + version('2.4.12.1', '7192f51434710904b5e3594872b897c3') variant('shared', default=True, description='Enables the build of shared libraries') @@ -59,13 +66,21 @@ class Opencv(CMakePackage): description='Enables the build of Python extensions') variant('java', default=False, description='Activates support for Java') + variant('openmp', default=False, description='Activates support for OpenMP threads') + variant('core', default=False, description='Include opencv_core module into the OpenCV build') + variant('highgui', default=False, description='Include opencv_highgui module into the OpenCV build') + variant('imgproc', default=False, description='Include opencv_imgproc module into the OpenCV build') + variant('jpeg', default=False, description='Include JPEG support') + variant('png', default=False, description='Include PNG support') + variant('tiff', default=False, description='Include TIFF support') + variant('zlib', default=False, description='Build zlib from source') depends_on('eigen', when='+eigen', type='build') - depends_on('zlib') - depends_on('libpng') - depends_on('libjpeg-turbo') - depends_on('libtiff') + depends_on('zlib', when='+zlib') + depends_on('libpng', when='+png') + depends_on('libjpeg-turbo', when='+jpeg') + depends_on('libtiff+turbo', when='+tiff') depends_on('jasper', when='+jasper') depends_on('cuda', when='+cuda') @@ -94,6 +109,22 @@ def cmake_args(self): 'ON' if '+vtk' in spec else 'OFF')), '-DBUILD_opencv_java:BOOL={0}'.format(( 'ON' if '+java' in spec else 'OFF')), + '-DBUILD_opencv_core:BOOL={0}'.format(( + 'ON' if '+core' in spec else 'OFF')), + '-DBUILD_opencv_highgui:BOOL={0}'.format(( + 'ON' if '+highgui' in spec else 'OFF')), + '-DBUILD_opencv_imgproc:BOOL={0}'.format(( + 'ON' if '+imgproc' in spec else 'OFF')), + '-DWITH_JPEG:BOOL={0}'.format(( + 'ON' if '+jpeg' in spec else 'OFF')), + '-DWITH_PNG:BOOL={0}'.format(( + 'ON' if '+png' in spec else 'OFF')), + '-DWITH_TIFF:BOOL={0}'.format(( + 'ON' if '+tiff' in spec else 'OFF')), + '-DWITH_ZLIB:BOOL={0}'.format(( + 'ON' if '+zlib' in spec else 'OFF')), + '-DWITH_OPENMP:BOOL={0}'.format(( + 'ON' if '+openmp' in spec else 'OFF')), ] # Media I/O @@ -115,31 +146,35 @@ def cmake_args(self): '-DPNG_INCLUDE_DIR:PATH={0}'.format(libpng.prefix.include) ]) - libjpeg = spec['libjpeg-turbo'] - args.extend([ - '-DJPEG_LIBRARY:FILEPATH={0}'.format( - join_path(libjpeg.prefix.lib, - 'libjpeg.{0}'.format(dso_suffix))), - '-DJPEG_INCLUDE_DIR:PATH={0}'.format(libjpeg.prefix.include) - ]) + if '+jpeg' in spec: + libjpeg = spec['libjpeg-turbo'] + cmake_options.extend([ + '-DBUILD_JPEG:BOOL=OFF', + '-DJPEG_LIBRARY:FILEPATH={0}'.format( + join_path(libjpeg.prefix.lib, + 'libjpeg.{0}'.format(dso_suffix))), + '-DJPEG_INCLUDE_DIR:PATH={0}'.format(libjpeg.prefix.include) + ]) - libtiff = spec['libtiff'] - args.extend([ - '-DTIFF_LIBRARY_{0}:FILEPATH={1}'.format(( - 'DEBUG' if '+debug' in spec else 'RELEASE'), - join_path(libtiff.prefix.lib, - 'libtiff.{0}'.format(dso_suffix))), - '-DTIFF_INCLUDE_DIR:PATH={0}'.format(libtiff.prefix.include) - ]) + if '+tiff' in spec: + libtiff = spec['libtiff'] + cmake_options.extend([ + '-DTIFF_LIBRARY_{0}:FILEPATH={1}'.format(( + 'DEBUG' if '+debug' in spec else 'RELEASE'), + join_path(libtiff.prefix.lib, + 'libtiff.{0}'.format(dso_suffix))), + '-DTIFF_INCLUDE_DIR:PATH={0}'.format(libtiff.prefix.include) + ]) - jasper = spec['jasper'] - args.extend([ - '-DJASPER_LIBRARY_{0}:FILEPATH={1}'.format(( - 'DEBUG' if '+debug' in spec else 'RELEASE'), - join_path(jasper.prefix.lib, - 'libjasper.{0}'.format(dso_suffix))), - '-DJASPER_INCLUDE_DIR:PATH={0}'.format(jasper.prefix.include) - ]) + if '+jasper' in spec: + jasper = spec['jasper'] + cmake_options.extend([ + '-DJASPER_LIBRARY_{0}:FILEPATH={1}'.format(( + 'DEBUG' if '+debug' in spec else 'RELEASE'), + join_path(jasper.prefix.lib, + 'libjasper.{0}'.format(dso_suffix))), + '-DJASPER_INCLUDE_DIR:PATH={0}'.format(jasper.prefix.include) + ]) # GUI if '+gtk' not in spec: From 629b17b36fc9ea8b83175bc571e0a006f558c01f Mon Sep 17 00:00:00 2001 From: jiseung Date: Mon, 7 Aug 2017 14:34:06 -0500 Subject: [PATCH 1411/2394] Packages/snap (#5000) * new package:SNAP * removed boilerplate * Delete .nfs00000000003a8b1700001358 * install another executable in bin and install readme * added quotes around README.md * moved readme to prefix --- var/spack/repos/builtin/packages/snap/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/snap/package.py b/var/spack/repos/builtin/packages/snap/package.py index 325ff214a08..2db4dc7afaa 100644 --- a/var/spack/repos/builtin/packages/snap/package.py +++ b/var/spack/repos/builtin/packages/snap/package.py @@ -58,5 +58,7 @@ def edit(self, spec, prefix): makefile.filter('OPENMP = yes', 'OPENMP = no') def install(self, spec, prefix): - install('README.md', prefix) + mkdirp(prefix.bin) + install('src/gsnap', prefix.bin) install_tree('qasnap', prefix.qasnap) + install('README.md', prefix) From a5e44504b048c991201d21c673bcaebb00317e88 Mon Sep 17 00:00:00 2001 From: Kshitij Mehta Date: Mon, 7 Aug 2017 15:34:33 -0400 Subject: [PATCH 1412/2394] Sz (#5003) * sz: update to v1.4.9.2 * sz: fixed incorrect url --- var/spack/repos/builtin/packages/sz/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py index 36bcdf1cfc9..d914b0226db 100644 --- a/var/spack/repos/builtin/packages/sz/package.py +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -30,11 +30,11 @@ class Sz(AutotoolsPackage): """Error-bounded Lossy Compressor for HPC Data.""" homepage = "https://collab.cels.anl.gov/display/ESR/SZ" - url = "http://www.mcs.anl.gov/~shdi/download/sz-1.4.9-beta.tar.gz" + url = "https://github.com/disheng222/SZ/archive/v1.4.9.2.tar.gz" version('develop', git='https://github.com/disheng222/SZ.git', branch='master') - version('1.4.9-beta', '8a00cddc39780c18d766215f69713f82') + version('1.4.9.2', '028ce90165b7a4c4051d4c0189f193c0') variant('fortran', default=False, description='Enable fortran compilation') From 13cd98ac4a93a392fa6325996ce851abfaf8a0b2 Mon Sep 17 00:00:00 2001 From: Kshitij Mehta Date: Mon, 7 Aug 2017 15:36:16 -0400 Subject: [PATCH 1413/2394] Adios (#4857) * adios: conform to pep8 * adios: added versions 1.11.0 and 1.12.0 * adios: added variant no_mpi to explicitly disable mpi support * adios: add new variant mxml adios v1.12.0 onwards contains an xml library built within. To build with an external mxml, a new variant must be used * adios: new variant for sz transform * adios: flexpath and dataspaces staging variants Two new variants for staging: flexpath and dataspaces. New variant 'staging' that will enable both * adios: dependency on libtool:2.4.2 since adios does not build with newer libtool 2.4.6 * adios: better description for variant no-mpi * adios: new variant for netcdf as requested by @mamelara from LBL * adios: renamed variant 'no_mpi' to 'serial' * adios: removed variant mxml * adios: corrected implementation of the mpi dependency, along with its relation with the 'serial' variant Added conflicts between 'serial' and other variants * adios: added 'else' clause when variants are not added * adios: replaced variant 'serial' with 'mpi' * adios: Added configure option to explicitly disable variants that are not enabled. * adios: setting default zfp to true * adios: fixed flake8 errors * adios: removed some old comments * adios: setting default sz to False. It is recommended to set default to False when dependency is on develop (sz@develop). * adios: removing dependency on develop for sz and setting default sz to true * adios: updated url to latest release. Just keeping it clean --- .../repos/builtin/packages/adios/package.py | 69 +++++++++++++++---- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 5a7f4d91f52..cebd90144f8 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -22,7 +22,6 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## - from spack import * @@ -34,11 +33,13 @@ class Adios(AutotoolsPackage): """ homepage = "http://www.olcf.ornl.gov/center-projects/adios/" - url = "https://github.com/ornladios/ADIOS/archive/v1.11.1.tar.gz" + url = "https://github.com/ornladios/ADIOS/archive/v1.12.0.tar.gz" version('develop', git='https://github.com/ornladios/ADIOS.git', branch='master') + version('1.12.0', '84a1c71b6698009224f6f748c5257fc9') version('1.11.1', '5639bfc235e50bf17ba9dafb14ea4185') + version('1.11.0', '5eead5b2ccf962f5e6d5f254d29d5238') version('1.10.0', 'eff450a4c0130479417cfd63186957f3') version('1.9.0', '310ff02388bbaa2b1c1710ee970b5678') @@ -55,29 +56,37 @@ class Adios(AutotoolsPackage): variant('zlib', default=True, description='Enable zlib transform support') variant('bzip2', default=False, description='Enable bzip2 transform support') variant('szip', default=False, description='Enable szip transform support') - variant('zfp', default=False, description='Enable ZFP transform support') + variant('zfp', default=True, description='Enable ZFP transform support') + variant('sz', default=True, description='Enable SZ transform support') # transports and serial file converters variant('hdf5', default=False, description='Enable parallel HDF5 transport and serial bp2h5 converter') - - # Lots of setting up here for this package - # module swap PrgEnv-intel PrgEnv-$COMP - # module load cray-hdf5/1.8.14 - # module load python/2.7.10 + variant('netcdf', default=False, description='Enable netcdf support') + variant('flexpath', default=False, description='Enable flexpath transport') + variant('dataspaces', default=False, description='Enable dataspaces transport') + variant('staging', default=False, description='Enable dataspaces and flexpath staging transports') depends_on('autoconf', type='build') depends_on('automake', type='build') - depends_on('libtool', type='build') + depends_on('libtool@:2.4.2', type='build') depends_on('python', type='build') depends_on('mpi', when='+mpi') - depends_on('mxml@2.9:') # optional transformations depends_on('zlib', when='+zlib') depends_on('bzip2', when='+bzip2') depends_on('szip', when='+szip') + depends_on('sz', when='+sz') depends_on('zfp@:0.5.0', when='+zfp') # optional transports & file converters depends_on('hdf5@1.8:+mpi', when='+hdf5') + depends_on('netcdf', when='+netcdf') + depends_on('libevpath', when='+flexpath') + depends_on('libevpath', when='+staging') + depends_on('dataspaces+mpi', when='+dataspaces') + depends_on('dataspaces+mpi', when='+staging') + + for p in ['+hdf5', '+netcdf', '+flexpath', '+dataspaces', '+staging']: + conflicts(p, when='~mpi') build_directory = 'spack-build' @@ -105,16 +114,16 @@ def configure_args(self): extra_args = [ # required, otherwise building its python bindings will fail - 'CFLAGS={0}'.format(self.compiler.pic_flag), - # always build external MXML, even in ADIOS 1.10.0+ - '--with-mxml={0}'.format(spec['mxml'].prefix) + 'CFLAGS={0}'.format(self.compiler.pic_flag) ] if '+shared' in spec: extra_args.append('--enable-shared') if '+mpi' in spec: - extra_args.append('--with-mpi') + extra_args.append('--with-mpi=%s' % spec['mpi'].prefix) + else: + extra_args.append('--without-mpi') if '+infiniband' in spec: extra_args.append('--with-infiniband') else: @@ -125,15 +134,47 @@ def configure_args(self): else: extra_args.append('--disable-fortran') + # Transforms if '+zlib' in spec: extra_args.append('--with-zlib=%s' % spec['zlib'].prefix) + else: + extra_args.append('--without-zlib') if '+bzip2' in spec: extra_args.append('--with-bzip2=%s' % spec['bzip2'].prefix) + else: + extra_args.append('--without-bzip2') if '+szip' in spec: extra_args.append('--with-szip=%s' % spec['szip'].prefix) + else: + extra_args.append('--without-szip') if '+zfp' in spec: extra_args.append('--with-zfp=%s' % spec['zfp'].prefix) + else: + extra_args.append('--without-zfp') + if '+sz' in spec: + extra_args.append('--with-sz=%s' % spec['sz'].prefix) + else: + extra_args.append('--without-sz') + + # External I/O libraries if '+hdf5' in spec: extra_args.append('--with-phdf5=%s' % spec['hdf5'].prefix) + else: + extra_args.append('--without-phdf5') + if '+netcdf' in spec: + extra_args.append('--with-netcdf=%s' % spec['netcdf'].prefix) + else: + extra_args.append('--without-netcdf') + + # Staging transports + if '+flexpath' in spec or '+staging' in spec: + extra_args.append('--with-flexpath=%s' % spec['libevpath'].prefix) + else: + extra_args.append('--without-flexpath') + if '+dataspaces' in spec or '+staging' in spec: + extra_args.append('--with-dataspaces=%s' + % spec['dataspaces'].prefix) + else: + extra_args.append('--without-dataspaces') return extra_args From f2871c7529e19318646bad3adbd4493298b3cf4b Mon Sep 17 00:00:00 2001 From: Kshitij Mehta Date: Mon, 7 Aug 2017 15:37:26 -0400 Subject: [PATCH 1414/2394] savanna depends on adios+sz (#4954) * savanna: explicitly adding variant sz to adios since it is no longer enabled by default in adios * savanna: removing +sz from adios as sz is now enabled in adios by default * savanna: explicitly specifying adios variants required by savanna --- var/spack/repos/builtin/packages/savanna/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/savanna/package.py b/var/spack/repos/builtin/packages/savanna/package.py index 944c528bea3..b7cd94ece0c 100644 --- a/var/spack/repos/builtin/packages/savanna/package.py +++ b/var/spack/repos/builtin/packages/savanna/package.py @@ -43,7 +43,7 @@ class Savanna(MakefilePackage): depends_on('mpi') depends_on('stc') - depends_on('adios +fortran +staging') + depends_on('adios +fortran +zlib +sz +zfp +staging') depends_on('mpix-launch-swift') depends_on('tau', when='+tau') From 82463f1fd622872b80f80a7c62728992d204b5cc Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 7 Aug 2017 21:56:47 +0200 Subject: [PATCH 1415/2394] Fix Scalasca build error: (#5004) Build system "usually" autodetects mpi library but this is not the case on many platforms. Provide mpi library name/version as part for configure args. --- var/spack/repos/builtin/packages/scalasca/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/scalasca/package.py b/var/spack/repos/builtin/packages/scalasca/package.py index 276cdf05a56..81c08802fa6 100644 --- a/var/spack/repos/builtin/packages/scalasca/package.py +++ b/var/spack/repos/builtin/packages/scalasca/package.py @@ -63,4 +63,9 @@ def configure_args(self): config_args.append("--with-cube=%s" % spec['cube'].prefix.bin) config_args.append("--with-otf2=%s" % spec['otf2'].prefix.bin) + if self.spec['mpi'].name == 'openmpi': + config_args.append("--with-mpi=openmpi") + elif self.spec.satisfies('^mpich@3:'): + config_args.append("--with-mpi=mpich3") + return config_args From 825c3c68a35f49d93ef753fe974d65ac7d1ed42a Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 7 Aug 2017 15:42:49 -0500 Subject: [PATCH 1416/2394] transabyss: new package (#4892) * transabyss: new package and dependencies * fixed build deps in igraph and version conflict spec in abyss * fixed versioning stuff and package structure * fixed dep type * fixing dep type for real this time --- .../repos/builtin/packages/abyss/package.py | 6 ++- .../repos/builtin/packages/igraph/package.py | 36 +++++++++++++++ .../builtin/packages/py-igraph/package.py | 38 ++++++++++++++++ .../builtin/packages/transabyss/package.py | 45 +++++++++++++++++++ 4 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin/packages/igraph/package.py create mode 100644 var/spack/repos/builtin/packages/py-igraph/package.py create mode 100644 var/spack/repos/builtin/packages/transabyss/package.py diff --git a/var/spack/repos/builtin/packages/abyss/package.py b/var/spack/repos/builtin/packages/abyss/package.py index e8e0fb4d45f..f3a9f27748d 100644 --- a/var/spack/repos/builtin/packages/abyss/package.py +++ b/var/spack/repos/builtin/packages/abyss/package.py @@ -31,12 +31,14 @@ class Abyss(AutotoolsPackage): is useful for assembling genomes up to 100 Mbases in size.""" homepage = "http://www.bcgsc.ca/platform/bioinfo/software/abyss" - url = "http://www.bcgsc.ca/platform/bioinfo/software/abyss/releases/2.0.2/abyss-2.0.2.tar.gz" + url = "https://github.com/bcgsc/abyss/archive/2.0.2.tar.gz" version('2.0.2', '1623f55ad7f4586e80f6e74b1f27c798') + version('1.5.2', '10d6d72d1a915e618d41a5cbbcf2364c') depends_on('mpi') - depends_on('boost@:1.50.0,1.53.0:') + depends_on('boost@:1.50.0,1.53.0:', when='@2.0.2:') + depends_on('boost@:1.50.0,1.53.0:1.59.0', when='@:1.5.2') depends_on('sparsehash') depends_on('sqlite') diff --git a/var/spack/repos/builtin/packages/igraph/package.py b/var/spack/repos/builtin/packages/igraph/package.py new file mode 100644 index 00000000000..030ef1f604d --- /dev/null +++ b/var/spack/repos/builtin/packages/igraph/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Igraph(AutotoolsPackage): + """igraph is a library for creating and manipulating graphs.""" + + homepage = "http://igraph.org/" + url = "https://github.com/igraph/igraph/releases/download/0.7.1/igraph-0.7.1.tar.gz" + + version('0.7.1', '4f6e7c16b45fce8ed423516a9786e4e8') + + depends_on('libxml2') diff --git a/var/spack/repos/builtin/packages/py-igraph/package.py b/var/spack/repos/builtin/packages/py-igraph/package.py new file mode 100644 index 00000000000..7d9c4086788 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-igraph/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyIgraph(PythonPackage): + """igraph is a collection of network analysis tools with the emphasis on + efficiency, portability and ease of use.""" + + homepage = "http://igraph.org/" + url = "http://igraph.org/nightly/get/python/python-igraph-0.7.0.tar.gz" + + version('0.7.0', '32a3238cb9041b1686d7d0ba152235bf') + + depends_on('py-setuptools', type='build') + depends_on('igraph') diff --git a/var/spack/repos/builtin/packages/transabyss/package.py b/var/spack/repos/builtin/packages/transabyss/package.py new file mode 100644 index 00000000000..10ee5088991 --- /dev/null +++ b/var/spack/repos/builtin/packages/transabyss/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Transabyss(Package): + """De novo assembly of RNAseq data using ABySS""" + + homepage = "http://www.bcgsc.ca/platform/bioinfo/software/trans-abyss" + url = "http://www.bcgsc.ca/platform/bioinfo/software/trans-abyss/releases/1.5.5/transabyss-1.5.5.zip" + + version('1.5.5', '9ebe0394243006f167135cac4df9bee6') + + depends_on('abyss@1.5.2') + depends_on('python@2.7.6:', type=('build', 'run')) + depends_on('py-igraph@0.7.0:', type=('build', 'run')) + depends_on('blat') + + def install(self, spec, prefix): + install('transabyss', prefix) + install('transabyss-merge', prefix) + install_tree('bin', prefix.bin) + install_tree('utilities', prefix.utilities) From f4dd90544794799f07db4955e17b11e27ef36a9f Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 7 Aug 2017 23:38:53 +0200 Subject: [PATCH 1417/2394] Fix build error with mpiP: (#5006) change dependency types to default (build/link) and provide mpi compiler as cc (fix #5005) --- var/spack/repos/builtin/packages/mpip/package.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/mpip/package.py b/var/spack/repos/builtin/packages/mpip/package.py index f75df37278d..4bc4b01ef06 100644 --- a/var/spack/repos/builtin/packages/mpip/package.py +++ b/var/spack/repos/builtin/packages/mpip/package.py @@ -33,10 +33,14 @@ class Mpip(AutotoolsPackage): version("3.4.1", "1168adc83777ac31d6ebd385823aabbd") - depends_on("libelf", type="build") - depends_on("libdwarf", type="build") - depends_on('libunwind', when=os.uname()[4] == "x86_64", type="build") - depends_on("mpi", type="build") + depends_on("libelf") + depends_on("libdwarf") + depends_on('libunwind', when=os.uname()[4] == "x86_64") + depends_on("mpi") def configure_args(self): - return ['--without-f77'] + config_args = ['--without-f77'] + config_args.append("--with-cc=%s" % self.spec['mpi'].mpicc) + config_args.append("--with-cxx=%s" % self.spec['mpi'].mpicxx) + + return config_args From a5b76d24cf44a9b60d53cd807ebbc93034674623 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Tue, 8 Aug 2017 00:03:51 +0200 Subject: [PATCH 1418/2394] Update openspeedshop and cbtf-krell to use latest binutils version (fix #4992) (#4997) --- .../binutils/binutilskrell-2.24.patch | 52 ------------------- .../builtin/packages/binutils/package.py | 5 -- .../builtin/packages/cbtf-krell/package.py | 2 +- .../builtin/packages/openspeedshop/package.py | 4 +- 4 files changed, 3 insertions(+), 60 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/binutils/binutilskrell-2.24.patch diff --git a/var/spack/repos/builtin/packages/binutils/binutilskrell-2.24.patch b/var/spack/repos/builtin/packages/binutils/binutilskrell-2.24.patch deleted file mode 100644 index f48291a6c91..00000000000 --- a/var/spack/repos/builtin/packages/binutils/binutilskrell-2.24.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- binutils-2.24/libiberty/Makefile.in 2013-11-04 10:33:40.000000000 -0500 -+++ binutils-2.24-fixes/libiberty/Makefile.in 2014-10-17 16:22:31.413655000 -0400 -@@ -66,6 +66,7 @@ - MAKEOVERRIDES = - - TARGETLIB = ./libiberty.a -+TARGETLIBPIC = ./libiberty_pic.a - TESTLIB = ./testlib.a - - LIBOBJS = @LIBOBJS@ -@@ -355,27 +356,27 @@ - # since it will be passed the multilib flags. - MULTIOSDIR = `$(CC) $(CFLAGS) -print-multi-os-directory` - install_to_libdir: all -- if test -n "${target_header_dir}"; then \ -- ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \ -- $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n; \ -- ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n ;$(RANLIB) $(TARGETLIB)n ); \ -- mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB); \ -- case "${target_header_dir}" in \ -- /*) thd=${target_header_dir};; \ -- *) thd=${includedir}/${target_header_dir};; \ -- esac; \ -- ${mkinstalldirs} $(DESTDIR)$${thd}; \ -- for h in ${INSTALLED_HEADERS}; do \ -- ${INSTALL_DATA} $$h $(DESTDIR)$${thd}; \ -- done; \ -- fi -+ ${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \ -+ $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n; \ -+ $(INSTALL_DATA) pic/$(TARGETLIB) $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIBPIC)n; \ -+ ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n ;$(RANLIB) $(TARGETLIB)n ); \ -+ ( cd $(DESTDIR)$(libdir)/$(MULTIOSDIR) ; chmod 644 $(TARGETLIBPIC)n ;$(RANLIB) $(TARGETLIBPIC)n ); \ -+ mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIB); \ -+ mv -f $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIBPIC)n $(DESTDIR)$(libdir)/$(MULTIOSDIR)/$(TARGETLIBPIC); \ -+ ${mkinstalldirs} $(DESTDIR)$${includedir}; \ -+ for h in ${INSTALLED_HEADERS}; do \ -+ ${INSTALL_DATA} $$h $(DESTDIR)$${includedir}; \ -+ done; - @$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install - - install_to_tooldir: all - ${mkinstalldirs} $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR) - $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)n -+ $(INSTALL_DATA) pic/$(TARGETLIB) $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIBPIC)n - ( cd $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR) ; chmod 644 $(TARGETLIB)n; $(RANLIB) $(TARGETLIB)n ) -+ ( cd $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR) ; chmod 644 $(TARGETLIBPIC)n; $(RANLIB) $(TARGETLIBPIC)n ) - mv -f $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB)n $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIB) -+ mv -f $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIBPIC)n $(DESTDIR)$(tooldir)/lib/$(MULTIOSDIR)/$(TARGETLIBPIC) - @$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO=install - - # required-list was used when building a shared bfd/opcodes/libiberty diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index abfe33df9cf..de1f23520fb 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -39,16 +39,11 @@ class Binutils(AutotoolsPackage): version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e') version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764') - # Add a patch that creates binutils libiberty_pic.a which is preferred by - # OpenSpeedShop and cbtf-krell - variant('krellpatch', default=False, - description="build with openspeedshop based patch.") variant('plugins', default=False, description="enable plugins, needed for gold linker") variant('gold', default=True, description="build the gold linker") variant('libiberty', default=False, description='Also install libiberty.') - patch('binutilskrell-2.24.patch', when='@2.24+krellpatch') patch('cr16.patch') patch('update_symbol-2.26.patch', when='@2.26') diff --git a/var/spack/repos/builtin/packages/cbtf-krell/package.py b/var/spack/repos/builtin/packages/cbtf-krell/package.py index 40fc932e8f3..fce4ae62e2d 100644 --- a/var/spack/repos/builtin/packages/cbtf-krell/package.py +++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py @@ -75,7 +75,7 @@ class CbtfKrell(CMakePackage): depends_on("cmake@3.0.2:", type='build') # For binutils service - depends_on("binutils@2.24+krellpatch") + depends_on("binutils") # collectionTool depends_on("boost@1.50.0:1.59.0") diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py index 95971af10e0..1b71e443469 100644 --- a/var/spack/repos/builtin/packages/openspeedshop/package.py +++ b/var/spack/repos/builtin/packages/openspeedshop/package.py @@ -78,7 +78,7 @@ class Openspeedshop(CMakePackage): variant('cuda', default=False, description="build with cuda packages included.") - variant('gui', default='qt3', values=('none', 'qt3', 'qt4'), + variant('gui', default='qt3', values=('none', 'qt3', 'qt4'), description='Build or not build a GUI of choice' ) @@ -111,7 +111,7 @@ class Openspeedshop(CMakePackage): depends_on("libtool", type='build') depends_on("bison", type='build') depends_on("flex", type='build') - depends_on("binutils@2.24+krellpatch", type='build') + depends_on("binutils", type='build') depends_on("elf", type="link") depends_on("libdwarf") depends_on("sqlite") From a0d3a35afc26a60c7f14512f890f480246af3aa5 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Tue, 8 Aug 2017 00:35:03 +0200 Subject: [PATCH 1419/2394] Fix typo : spec to self.spec (#5011) --- var/spack/repos/builtin/packages/archer/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/archer/package.py b/var/spack/repos/builtin/packages/archer/package.py index f5c18a39883..08831912776 100644 --- a/var/spack/repos/builtin/packages/archer/package.py +++ b/var/spack/repos/builtin/packages/archer/package.py @@ -44,7 +44,7 @@ def cmake_args(self): '-G', 'Ninja', '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', - '-DOMP_PREFIX:PATH=%s' % spec['llvm-openmp-ompt'].prefix, + '-DOMP_PREFIX:PATH=%s' % self.spec['llvm-openmp-ompt'].prefix, ] # TODO: Add better ninja support to CMakePackage From 323d2d9aed299b78fea67aa6d8d98889464cebe9 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 8 Aug 2017 00:41:34 +0200 Subject: [PATCH 1420/2394] CMake: 3.9.0 (#5009) Add new versions: - 3.8.2 - 3.9.0 --- var/spack/repos/builtin/packages/cmake/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 05ba0e8131c..98e32c510a7 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -33,6 +33,8 @@ class Cmake(Package): list_url = 'https://cmake.org/files/' list_depth = 1 + version('3.9.0', '180e23b4c9b55915d271b315297f6951') + version('3.8.2', 'b5dff61f6a7f1305271ab3f6ae261419') version('3.8.1', 'e8ef820ddf7a650845252bca846696e7') version('3.8.0', 'f28cba717ba38ad82a488daed8f45b5b') version('3.7.2', '79bd7e65cd81ea3aa2619484ad6ff25a') From 33cb093870a88badae0bfd54d302baf901f4a12f Mon Sep 17 00:00:00 2001 From: zenln Date: Mon, 7 Aug 2017 17:41:51 -0500 Subject: [PATCH 1421/2394] Add a new package for molcas (#5008) * Molcas 8.2: Adding molcas spec file * Molcas 8.2: Putting in patch file for molcas driver not to be installed in spack stage directory * Molcas making changes * Making changes in ordering --- .../packages/molcas/install_driver.patch | 114 ++++++++++++++++++ .../repos/builtin/packages/molcas/package.py | 48 ++++++++ 2 files changed, 162 insertions(+) create mode 100644 var/spack/repos/builtin/packages/molcas/install_driver.patch create mode 100644 var/spack/repos/builtin/packages/molcas/package.py diff --git a/var/spack/repos/builtin/packages/molcas/install_driver.patch b/var/spack/repos/builtin/packages/molcas/install_driver.patch new file mode 100644 index 00000000000..717e776aeee --- /dev/null +++ b/var/spack/repos/builtin/packages/molcas/install_driver.patch @@ -0,0 +1,114 @@ +--- molcas82/sbin/install_driver.sh 2017-02-14 04:35:06.000000000 -0600 ++++ molcas82/sbin/install_driver.sh 2017-08-04 15:08:17.872417692 -0500 +@@ -1,110 +1,3 @@ + #!/bin/sh + +-echo `pwd` > $HOME/.Molcas/molcas 2> /dev/null +- +-# current driver version +-if [ -z "$1" ] ; then +- driver_file="sbin/molcas.driver" +-else +- driver_file="$1" +-fi +-current_version=`sed -e 's/.*Molcas driver shell script version // ; tx ; d ; :x s/\.//' $driver_file` +- +-MOLCASDRIVER="" +- +-# check location of driver script in your PATH +-installed=0 +- +-orig_IFS=$IFS +-IFS=':' +-for x in $PATH; do +- if [ -f "$x/molcas" ]; then +- l=`sed -e 's/.*Molcas driver shell script version // ; tx ; d ; :x s/\.//' "$x/molcas"` +- if [ "$l" -lt "$current_version" ]; then +- echo "*** Warning! An old version of the molcas driver script was found at: $x" +- rm -f "$x/molcas" > /dev/null 2>&1 +- if [ "$?" != 0 ]; then +- echo "*** $x/molcas is read only!" +- echo "*** You have to remove this file manually" +- echo "" +- else +- echo " and removed..." +- MOLCASDRIVER="$x" +- fi +- else +- echo "Molcas driver has been found at: $x" +- MOLCASDRIVER="$x" +- installed=1 +- fi +- break +- fi +-done +- +-# latest version already installed, exit +-if [ $installed = 1 ] ; then +- exit 0 +-fi +- +-# try to find proper location for molcas driver +-if [ -z "$MOLCASDRIVER" ]; then +- # no existing version found, use default PATH +- if [ -z "$PATH" ]; then +- E_PATH="$HOME/bin" +- else +- E_PATH="$HOME/bin:$PATH" +- fi +-else +- # a previous version was found, create it there +- E_PATH="$MOLCASDRIVER" +-fi +- +-# find first writable directory +-dir_found=0 +-for x in $E_PATH ; do +- if [ "$x" = "." ] ; then continue ; fi +- # detect if directory is writable (-w would not work, since it does not handle mount permissions) +- cp "$driver_file" "$x/this_is_not_molcas" > /dev/null 2>&1 +- if [ "$?" = 0 ] ; then +- rm -f "$x/this_is_not_molcas" > /dev/null 2>&1 +- MOLCASDRIVER="$x" +- dir_found=1 +- break +- fi +-done +- +-# create a default molcas driver +-if [ $dir_found = 0 ] ; then +- echo "*** Warning! Could not find a proper directory to install the molcas driver" +- echo "" +- echo "*** Check that there is a directory in your PATH with write access" +- echo "*** (for example $HOME/bin) and restart the installation" +- echo "" +- echo "*** You have to put the molcas driver in any directory in your PATH" +-else +- echo "molcas driver will be installed in $MOLCASDRIVER" +- echo "Is this OK?" +- while true; do +- read answer +- case "${answer}_" in +- [Yy]*|_ ) +- cp "$driver_file" "$MOLCASDRIVER/molcas" +- chmod +x "$MOLCASDRIVER/molcas" +- # check again the driver was installed +- l=`sed -e 's/.*Molcas driver shell script version // ; tx ; d ; :x s/\.//' "$x/molcas"` +- if [ "$l" -eq "$current_version" -a -x "$MOLCASDRIVER/molcas" ] ; then +- echo "Driver installation successful" +- else +- echo "*** Driver installation failed!" +- echo "" +- echo "*** You have to put the molcas driver in any directory in your PATH" +- fi +- break ;; +- [Nn]* ) +- echo "*** Driver installation canceled!" +- echo "" +- echo "*** You have to put the molcas driver in any directory in your PATH" +- break ;; +- * ) echo "Please answer yes or no" +- esac +- done +-fi ++echo `Driver Will be in the sbin folder` diff --git a/var/spack/repos/builtin/packages/molcas/package.py b/var/spack/repos/builtin/packages/molcas/package.py new file mode 100644 index 00000000000..c5d92b9c50f --- /dev/null +++ b/var/spack/repos/builtin/packages/molcas/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class Molcas(CMakePackage): + """Molcas is an ab initio quantum chemistry software package + developed by scientists to be used by scientists. + Please set the path to licence file with the following command + export MOLCAS_LICENSE=/path/to/molcas/license/""" + + homepage = "http://www.molcas.org/" + url = "file://{0}/molcas8.2.tar.gz".format(os.getcwd()) + + version('8.2', '25b5fb8e1338b458a3eaea0b3d3b5e58') + + # Licensing + license_required = True + license_vars = ['MOLCAS_LICENSE'] + + depends_on('openmpi') + depends_on('openblas') + depends_on('hdf5') + + patch('install_driver.patch') From 2853a28b2abe348bc0b5a69412e372e5f18c932b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Mon, 7 Aug 2017 18:45:07 -0500 Subject: [PATCH 1422/2394] Add latest version of gmake (#5013) --- .../repos/builtin/packages/gmake/package.py | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/var/spack/repos/builtin/packages/gmake/package.py b/var/spack/repos/builtin/packages/gmake/package.py index 5bb4fdb2aac..0c215a4e829 100644 --- a/var/spack/repos/builtin/packages/gmake/package.py +++ b/var/spack/repos/builtin/packages/gmake/package.py @@ -25,18 +25,33 @@ from spack import * -class Gmake(Package): - """GNU Make.""" +class Gmake(AutotoolsPackage): + """GNU Make is a tool which controls the generation of executables and + other non-source files of a program from the program's source files.""" - homepage = "http://gnu.org/gnu/make" - url = "https://ftp.gnu.org/gnu/make/make-4.0.tar.gz" + homepage = "https://www.gnu.org/software/make/" + url = "https://ftp.gnu.org/gnu/make/make-4.2.1.tar.gz" - version('4.0', 'b5e558f981326d9ca1bfdb841640721a') + version('4.2.1', '7d0dcb6c474b258aab4d54098f2cf5a7') + version('4.0', 'b5e558f981326d9ca1bfdb841640721a') - def install(self, spec, prefix): - configure('--prefix={0}'.format(prefix)) + variant('guile', default=False, description='Support GNU Guile for embedded scripting') - make() - make('install') - with working_dir(prefix.bin): + depends_on('guile', when='+guile') + + build_directory = 'spack-build' + + def configure_args(self): + args = [] + + if '+guile' in self.spec: + args.append('--with-guile') + else: + args.append('--without-guile') + + return args + + @run_after('install') + def symlink_gmake(self): + with working_dir(self.prefix.bin): symlink('make', 'gmake') From f74eaa874a9a70cd1d62401cd9e349fd824d14b2 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Tue, 8 Aug 2017 12:08:51 +0200 Subject: [PATCH 1423/2394] Add new version of dyninst package (#5017) --- var/spack/repos/builtin/packages/dyninst/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 752c01787e7..fa6a31a7c0b 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -33,6 +33,7 @@ class Dyninst(Package): url = "https://github.com/dyninst/dyninst/archive/v9.2.0.tar.gz" list_url = "http://www.dyninst.org/downloads/dyninst-8.x" + version('9.3.2', 'a2bf03b6d1d424853e80d39b13e9c229') version('9.3.0', 'edde7847dc673ca69bd59412af572450') version('9.2.0', 'ad023f85e8e57837ed9de073b59d6bab', url="https://github.com/dyninst/dyninst/archive/v9.2.0.tar.gz") From 6e721bab6ae69a0e29c77fd38520b28f9ff009af Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 8 Aug 2017 16:14:40 +0200 Subject: [PATCH 1424/2394] IceT: Ill-Place CMake Modules (#5014) IceT places its CMake module in the wrong directory, which is not included in the default CMake search paths. This fixes it for *directly* depending packages without the need to add ```yaml icet: environment: prepend_path: CMAKE_PREFIX_PATH: '${PREFIX}/lib' ``` to the `modules.yaml` as a workaround. --- var/spack/repos/builtin/packages/icet/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/icet/package.py b/var/spack/repos/builtin/packages/icet/package.py index 126375c6c2a..b2ff89ac696 100644 --- a/var/spack/repos/builtin/packages/icet/package.py +++ b/var/spack/repos/builtin/packages/icet/package.py @@ -40,3 +40,7 @@ class Icet(CMakePackage): def cmake_args(self): return ['-DICET_USE_OPENGL:BOOL=OFF'] + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + """Work-around for ill-placed CMake modules""" + spack_env.prepend_path('CMAKE_PREFIX_PATH', self.prefix.lib) From 6196b7f9dd9f8888901de807f6c0cd842ec8f26b Mon Sep 17 00:00:00 2001 From: jiseung Date: Tue, 8 Aug 2017 10:20:40 -0500 Subject: [PATCH 1425/2394] New package: VPFFT (#4995) * new package: VPFFT * install readme and license * misc * changed version name to 'develop' * removed the misplaced package file * updated eigen path, fixed docstring, and updated 'docs' installation method * pep8 compliant, changed installation of docs --- .../repos/builtin/packages/vpfft/package.py | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vpfft/package.py diff --git a/var/spack/repos/builtin/packages/vpfft/package.py b/var/spack/repos/builtin/packages/vpfft/package.py new file mode 100644 index 00000000000..8d4ef7defe8 --- /dev/null +++ b/var/spack/repos/builtin/packages/vpfft/package.py @@ -0,0 +1,67 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Vpfft(MakefilePackage): + """Proxy Application. VPFFT is an implementation of a mesoscale + micromechanical materials model. By solving the viscoplasticity + model, VPFFT simulates the evolution of a material under deformation. + The solution time to the viscoplasticity model, described by a set + of partial differential equations, is significantly reduced by the + application of Fast Fourier Transform in the VPFFT algorithm. + """ + + homepage = "http://www.exmatex.org/vpfft.html" + url = "https://github.com/exmatex/VPFFT/archive/master.tar.gz" + tag = ['proxy-app'] + + version('develop', git='https://github.com/exmatex/VPFFT.git') + + depends_on('eigen') + depends_on('fftw') + depends_on('mpi') + + @property + def build_targets(self): + targets = [ + "--file=Makefile.make", + "EIGEN_PATH={0}".format( + join_path( + self.spec['eigen'].prefix.include, + 'eigen{0}'.format( + self.spec['eigen'].version.up_to(1)))), + "FFTW_PATH={0}".format(self.spec['fftw'].prefix), + "CC={0}".format(self.spec['mpi'].mpicxx) + ] + return targets + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('VPFFT++', prefix.bin) + install('README.md', prefix) + install('README.make', prefix) + install('README-license.txt', prefix) + install_tree('docs', prefix.docs) From 48f0e9592e67c29606e4167ba8d9cd503df8b64a Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Tue, 8 Aug 2017 08:23:04 -0700 Subject: [PATCH 1426/2394] Krell spack updates: Add Argo Navis/Krell new gui support library (#4964) * Update the krell institute products to use the latest features of spack for building on cluster platforms. * Address travis error messages and resubmit the pull request. * Update the contents of openspeedshop package.py so it passes the flake8 tests. * Fix flake8 error-whitespack issue in mrnet package.py file. * Add updates based on spack reviewer feedback. * More fixes based on comments from reviewers. Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH. * More review related changes. Update MPIOption.append lines and take out xercesc references. * Create a base options function for common openspeedshop base cmake options to reduce redundencies. * Add libxml2+python depends on to get around issues with the libxml2 package file. * Using boost over 1.60.0 causes compile errors. This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build. * Fix bad syntax in specifying the boost version range. * Update the version numbers for the krell institute components and tools: cbtf and openspeedshop. * Do not build glib for qt3, it is not needed and causes build problems at this time anyway. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Trim comments to fit more concisely. * Fix tabs versus spaces and swap if and else clause check from a negative to a positive check. * Fix issues with the cbtf-argonavis build, update to use dyninst-9.3.2, fixes to openspeedshop package build. * Fix issues with the cbtf-argonavis package.py files related to comments. * Add changes for changing the krell packages from Package to CMakePackage. * Add better changes for changing the krell packages from Package to CMakePackage. * Add more modifications for changing the krell packages from Package to CMakePackage. * Add additional modifications for changing the krell packages from Package to CMakePackage and fixing Travis erros * Fix new travis errors. * Fix new travis errors. * Add more changes for PR 4765. * Add more refinements to the conversion from Package to CMakePackage. * Fix new travis errors. * Add dependencies for MPI to be passed to cbtf-krell, so it can build the MPI collectors requested by the builder of openspeedshop. * Remove extra unnecessary routine to adjust build arguments. Fix if-else clause issue. * Fix more flake issues caused by last changes. * Fix a bug where openspeedshop will not build when no mpi variants are specified. Also switch to a multiple level variant for building the gui(s). Use none, qt3, and qt4 as the variants with qt3 being the default. * Add fix for spack issue #4843, where LTDL include files were not found. * Add the build_type variant back into the openspeedshop package file. * Add new package for the Argo Navis/Krell new graphical user support library: QtGraph. * Revert "Add new package for the Argo Navis/Krell new graphical user support library: QtGraph." This reverts commit f8883de446c404e46d4c33fe497ae1e9ab2f04a6. * Add new package for the Argo Navis/Krell new graphical user support library: qtgraph. * Fix flake8 errors. * Fix flake8 errors. * Fix flake8 errors. * Fix flake8 errors. * Fix flake8 errors. * Add changes to support QMakePackage class instead of Package class for qtgraph. * Update change for suggested reviewer improvements. * Fix flake8 errors. * Fix flake8 errors. --- .../repos/builtin/packages/qtgraph/package.py | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 var/spack/repos/builtin/packages/qtgraph/package.py diff --git a/var/spack/repos/builtin/packages/qtgraph/package.py b/var/spack/repos/builtin/packages/qtgraph/package.py new file mode 100644 index 00000000000..d80ee59bdd8 --- /dev/null +++ b/var/spack/repos/builtin/packages/qtgraph/package.py @@ -0,0 +1,73 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +############################################################################## +# Copyright (c) 2015-2017 Krell Institute. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Qtgraph(QMakePackage): + """The baseline library used in the CUDA-centric Open|SpeedShop Graphical + User Interface (GUI) which allows Graphviz DOT formatted data to be + imported into a Qt application by wrapping the Graphviz libcgraph and + libgvc within the Qt Graphics View Framework.""" + + homepage = "https://github.com/OpenSpeedShop/QtGraph" + + url = "https://github.com/OpenSpeedShop/QtGraph.git" + version('1.0.0', branch='master', + git='https://github.com/OpenSpeedShop/QtGraph.git') + + # qtgraph depends on these packages + depends_on('qt@4.8.6:') + depends_on('graphviz') + + def setup_environment(self, spack_env, run_env): + """Set up the compile and runtime environments for a package.""" + spack_env.set('GRAPHVIZ_ROOT', self.spec['graphviz'].prefix) + spack_env.set('INSTALL_ROOT', self.prefix) + + # The implementor has set up the library and include paths in + # a non-conventional way. We reflect that here. + run_env.prepend_path( + 'LD_LIBRARY_PATH', join_path( + self.prefix.lib64, + '{0}'.format(self.spec['qt'].version.up_to(3)))) + + run_env.prepend_path('CPATH', self.prefix.include.QtGraph) From 97958d8347fd031b3f46d33fc9246a98f2b59ec3 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 8 Aug 2017 13:33:24 -0500 Subject: [PATCH 1427/2394] Add latest version of Ninja (#4987) * Add latest version of Ninja * Re-add symlinks, add latest version of ninja-fortran --- .../builtin/packages/ninja-fortran/package.py | 36 ++++++++++++++----- .../repos/builtin/packages/ninja/package.py | 34 +++++++++++++----- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/var/spack/repos/builtin/packages/ninja-fortran/package.py b/var/spack/repos/builtin/packages/ninja-fortran/package.py index 9b733cee6c4..349b60bae98 100644 --- a/var/spack/repos/builtin/packages/ninja-fortran/package.py +++ b/var/spack/repos/builtin/packages/ninja-fortran/package.py @@ -23,27 +23,45 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os class NinjaFortran(Package): - """ A Fortran capable fork of ninja """ + """A Fortran capable fork of ninja.""" + homepage = "https://github.com/Kitware/ninja" - url = "https://github.com/Kitware/ninja/archive/v1.7.2.gcc0ea.kitware.dyndep-1.tar.gz" + url = "https://github.com/Kitware/ninja/archive/v1.7.2.gaad58.kitware.dyndep-1.tar.gz" - version('1.7.2', '3982f508c415c0abaca34cb5e92e711a') + # Each version is a fork off of a specific commit of ninja + # Hashes don't sort properly, so manually set newest version + version('1.7.2.gaad58', 'eb51b042b9dbaf8ecd79a6fb24de1320', preferred=True) + version('1.7.2.gcc0ea', '3982f508c415c0abaca34cb5e92e711a') + version('1.7.1.g7ca7f', '187a8d15c1e20e5e9b00c5c3f227ca8a') - extends('python') + depends_on('python', type=('build', 'run')) + + phases = ['configure', 'install'] def url_for_version(self, version): - url = 'https://github.com/Kitware/ninja/archive/v{0}.gcc0ea.kitware.dyndep-1.tar.gz' + url = 'https://github.com/Kitware/ninja/archive/v{0}.kitware.dyndep-1.tar.gz' return url.format(version) - def install(self, spec, prefix): + def configure(self, spec, prefix): python('configure.py', '--bootstrap') + @run_after('configure') + @on_package_attributes(run_tests=True) + def test(self): + ninja = Executable('./ninja') + ninja('-j{0}'.format(make_jobs), 'ninja_test') + ninja_test = Executable('./ninja_test') + ninja_test() + + def install(self, spec, prefix): mkdir(prefix.bin) install('ninja', prefix.bin) - install_tree('misc', join_path(prefix, 'misc')) + install_tree('misc', prefix.misc) + + # Some distros like Fedora install a 'ninja-build' executable + # instead of 'ninja'. Install both for uniformity. with working_dir(prefix.bin): - os.symlink('ninja', 'ninja-build') + symlink('ninja', 'ninja-build') diff --git a/var/spack/repos/builtin/packages/ninja/package.py b/var/spack/repos/builtin/packages/ninja/package.py index 28aa36c465b..7a53ae684c0 100644 --- a/var/spack/repos/builtin/packages/ninja/package.py +++ b/var/spack/repos/builtin/packages/ninja/package.py @@ -23,23 +23,41 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os class Ninja(Package): - """ A small, fast Make alternative """ - homepage = "https://martine.github.io/ninja/" - url = "https://github.com/martine/ninja/archive/v1.6.0.tar.gz" + """Ninja is a small build system with a focus on speed. It differs from + other build systems in two major respects: it is designed to have its input + files generated by a higher-level build system, and it is designed to run + builds as fast as possible.""" + homepage = "https://ninja-build.org/" + url = "https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz" + + version('1.7.2', '7b482218757acbaeac4d4d54a3cd94e1') version('1.6.0', '254133059f2da79d8727f654d7198f43') - extends('python') + depends_on('python', type=('build', 'run')) - def install(self, spec, prefix): + phases = ['configure', 'install'] + + def configure(self, spec, prefix): python('configure.py', '--bootstrap') + @run_after('configure') + @on_package_attributes(run_tests=True) + def test(self): + ninja = Executable('./ninja') + ninja('-j{0}'.format(make_jobs), 'ninja_test') + ninja_test = Executable('./ninja_test') + ninja_test() + + def install(self, spec, prefix): mkdir(prefix.bin) install('ninja', prefix.bin) - install_tree('misc', join_path(prefix, 'misc')) + install_tree('misc', prefix.misc) + + # Some distros like Fedora install a 'ninja-build' executable + # instead of 'ninja'. Install both for uniformity. with working_dir(prefix.bin): - os.symlink('ninja', 'ninja-build') + symlink('ninja', 'ninja-build') From c1f3ed6f67da1bfcc05346015616dfd0d247fee5 Mon Sep 17 00:00:00 2001 From: Alen Kansakar Date: Tue, 8 Aug 2017 14:21:08 -0500 Subject: [PATCH 1428/2394] Removing blanks. --- var/spack/repos/builtin/packages/jags/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/jags/package.py b/var/spack/repos/builtin/packages/jags/package.py index 95d25a1caf0..cccab17bf17 100644 --- a/var/spack/repos/builtin/packages/jags/package.py +++ b/var/spack/repos/builtin/packages/jags/package.py @@ -29,7 +29,7 @@ class Jags(AutotoolsPackage): """JAGS is Just Another Gibbs Sampler. It is a program for analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) - simulation not wholly unlike BUGS""" + simulation not wholly unlike BUGS""" homepage = "http://mcmc-jags.sourceforge.net/" url = "https://downloads.sourceforge.net/project/mcmc-jags/JAGS/4.x/Source/JAGS-4.2.0.tar.gz" From f82fb75aae335aa2b3c869c6e5065fcee7878b01 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 8 Aug 2017 15:54:29 -0500 Subject: [PATCH 1429/2394] varscan: new package (#5026) * varscan: new package * changing jdk to java --- .../repos/builtin/packages/varscan/package.py | 59 +++++++++++++++++++ .../repos/builtin/packages/varscan/varscan.sh | 3 + 2 files changed, 62 insertions(+) create mode 100644 var/spack/repos/builtin/packages/varscan/package.py create mode 100644 var/spack/repos/builtin/packages/varscan/varscan.sh diff --git a/var/spack/repos/builtin/packages/varscan/package.py b/var/spack/repos/builtin/packages/varscan/package.py new file mode 100644 index 00000000000..f4c2ae029dc --- /dev/null +++ b/var/spack/repos/builtin/packages/varscan/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os.path + + +class Varscan(Package): + """Variant calling and somatic mutation/CNV detection for next-generation + sequencing data""" + + homepage = "http://dkoboldt.github.io/varscan/" + url = "https://github.com/dkoboldt/varscan/releases/download/2.4.2/VarScan.v2.4.2.jar" + + version('2.4.2', '4b810741505a8145a7f8f9f6791bbacf', expand=False) + + depends_on('java', type=('build', 'run')) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.jar) + jar_file = 'VarScan.v{v}.jar'.format(v=self.version.dotted) + install(jar_file, prefix.jar) + + script_sh = join_path(os.path.dirname(__file__), "varscan.sh") + script = prefix.bin.varscan + install(script_sh, script) + set_executable(script) + + java = join_path(self.spec['java'].prefix, 'bin', 'java') + kwargs = {'ignore_absent': False, 'backup': False, 'string': False} + filter_file('^java', java, script, **kwargs) + filter_file('varscan.jar', join_path(prefix.jar, jar_file), + script, **kwargs) + + def setup_environment(self, spack_env, run_env): + run_env.set('VARSCAN_HOME', self.prefix) + run_env.set('CLASSPATH', self.prefix.jar) diff --git a/var/spack/repos/builtin/packages/varscan/varscan.sh b/var/spack/repos/builtin/packages/varscan/varscan.sh new file mode 100644 index 00000000000..71824a46c65 --- /dev/null +++ b/var/spack/repos/builtin/packages/varscan/varscan.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# convenience wrapper for the astral jar file +java $JAVA_ARGS $JAVA_OPTS -jar varscan.jar "$@" From 632323413572c23f72bcd1f40b14421fd152e88a Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 8 Aug 2017 16:35:20 -0500 Subject: [PATCH 1430/2394] astral: new package (#5022) * astral: new package * simplifying join_path * adding build phase and changing jdk to java * forgot to change jdk to java.... --- .../repos/builtin/packages/astral/astral.sh | 3 + .../repos/builtin/packages/astral/package.py | 64 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 var/spack/repos/builtin/packages/astral/astral.sh create mode 100644 var/spack/repos/builtin/packages/astral/package.py diff --git a/var/spack/repos/builtin/packages/astral/astral.sh b/var/spack/repos/builtin/packages/astral/astral.sh new file mode 100644 index 00000000000..3f530d7f4e4 --- /dev/null +++ b/var/spack/repos/builtin/packages/astral/astral.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# convenience wrapper for the astral jar file +java $JAVA_ARGS $JAVA_OPTS -jar astral.jar "$@" diff --git a/var/spack/repos/builtin/packages/astral/package.py b/var/spack/repos/builtin/packages/astral/package.py new file mode 100644 index 00000000000..79feeca07a4 --- /dev/null +++ b/var/spack/repos/builtin/packages/astral/package.py @@ -0,0 +1,64 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os.path + + +class Astral(Package): + """ASTRAL is a tool for estimating an unrooted species tree given a set of + unrooted gene trees.""" + + homepage = "https://github.com/smirarab/ASTRAL" + url = "https://github.com/smirarab/ASTRAL/archive/v4.10.7.tar.gz" + + version('4.10.7', '38c81020570254e3f5c75d6c3c27fc6d') + + depends_on('java', type=('build', 'run')) + + phases = ['build', 'install'] + + def build(self, spec, prefix): + make = Executable('./make.sh') + make() + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install_tree('lib', prefix.tools.lib) + jar_file = 'astral.{v}.jar'.format(v=self.version) + install(jar_file, prefix.tools) + + script_sh = join_path(os.path.dirname(__file__), "astral.sh") + script = prefix.bin.astral + install(script_sh, script) + set_executable(script) + + java = self.spec['java'].prefix.bin.java + kwargs = {'ignore_absent': False, 'backup': False, 'string': False} + filter_file('^java', java, script, **kwargs) + filter_file('astral.jar', join_path(prefix.tools, jar_file), + script, **kwargs) + + def setup_environment(self, spack_env, run_env): + run_env.set('ASTRAL_HOME', self.prefix.tools) From 7f4d94667c9e3f8ecc361866007f23cb613f42e3 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 8 Aug 2017 17:24:56 -0500 Subject: [PATCH 1431/2394] vmatch: new package (#5028) * vmatch: new package * adding url_for_version --- .../repos/builtin/packages/vmatch/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/vmatch/package.py diff --git a/var/spack/repos/builtin/packages/vmatch/package.py b/var/spack/repos/builtin/packages/vmatch/package.py new file mode 100644 index 00000000000..bc09c0b70d5 --- /dev/null +++ b/var/spack/repos/builtin/packages/vmatch/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Vmatch(Package): + """Vmatch is a versatile software tool for efficiently solving large scale + sequence matching tasks""" + + homepage = "http://www.vmatch.de/" + url = "http://www.vmatch.de/distributions/vmatch-2.3.0-Linux_x86_64-64bit.tar.gz" + + version('2.3.0', '592a4f941239494d892f3c6ff21a1423') + + def url_for_version(self, version): + url = 'http://www.vmatch.de/distributions/vmatch-{0}-Linux_x86_64-64bit.tar.gz' + return url.format(version) + + def install(self, spec, prefix): + install_tree(self.stage.source_path, prefix.bin) From f6a9c7d79c3a635bafe789444223547e5b29e9f7 Mon Sep 17 00:00:00 2001 From: jiseung Date: Tue, 8 Aug 2017 17:25:27 -0500 Subject: [PATCH 1432/2394] Packages/amr exp parabolic (#5027) * new package: amr-exp-parabolic * removed boilerplate and added tag * install license and readme * fix mpi build issues * change access to include/lib directories and pep8 compliant now --- .../packages/amr-exp-parabolic/package.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py b/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py index dcb85a55907..47e400e18f2 100644 --- a/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py +++ b/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py @@ -60,6 +60,21 @@ class AmrExpParabolic(MakefilePackage): build_directory = 'MiniApps/AMR_Adv_Diff_F90' def edit(self, spec, prefix): + def_file = FileFilter('Tools/F_mk/GMakedefs.mak') + def_file.filter('tdir = t/.*', 'tdir := t/$(suf)') + def_file.filter('hdir = t/.*', 'hdir := t/html') + def_file.filter('include $(BOXLIB_HOME)/Tools/F_mk/GMakeMPI.mak', '#') + + if '+mpi' in spec: + def_file.filter('FC.*:=.*', 'FC = {0}'.format(spec['mpi'].mpifc)) + def_file.filter('F90.*:=.*', 'F90 = {0}'.format(spec['mpi'].mpifc)) + def_file.filter( + 'mpi_include_dir =.*', + 'mpi_include_dir = {0}'.format(spec['mpi'].prefix.include)) + def_file.filter( + 'mpi_lib_dir =.*', + 'mpi_lib_dir = {0}'.format(spec['mpi'].prefix.lib)) + with working_dir(self.build_directory): makefile = FileFilter('GNUmakefile') if '+debug' in spec: @@ -76,3 +91,5 @@ def install(self, spec, prefix): files = glob.glob(join_path(self.build_directory, '*.exe')) for f in files: install(f, prefix.bin) + install('README.txt', prefix) + install('license.txt', prefix) From 1a3021d22c674f06b5ce0367aca83f869683413a Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 8 Aug 2017 18:29:20 -0500 Subject: [PATCH 1433/2394] rtax: new package (#5025) * rtax: new package * fixing usearch version flexibility --- .../repos/builtin/packages/rtax/package.py | 43 ++++++++++++++++ .../repos/builtin/packages/usearch/package.py | 49 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 var/spack/repos/builtin/packages/rtax/package.py create mode 100644 var/spack/repos/builtin/packages/usearch/package.py diff --git a/var/spack/repos/builtin/packages/rtax/package.py b/var/spack/repos/builtin/packages/rtax/package.py new file mode 100644 index 00000000000..c2b917a81e5 --- /dev/null +++ b/var/spack/repos/builtin/packages/rtax/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Rtax(Package): + """Rapid and accurate taxonomic classification of short paired-end + sequence reads from the 16S ribosomal RNA gene""" + + homepage = "https://github.com/davidsoergel/rtax" + url = "http://static.davidsoergel.com/rtax-0.984.tgz" + + version('0.984', 'e9dbbe4b3c26b0f0f6c14a5fb46aa587') + + depends_on('usearch') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('rtax', prefix.bin) + install_tree('scripts', prefix.bin.scripts) + install_tree('greengenes', prefix.bin.greengenes) diff --git a/var/spack/repos/builtin/packages/usearch/package.py b/var/spack/repos/builtin/packages/usearch/package.py new file mode 100644 index 00000000000..87ea6798ca1 --- /dev/null +++ b/var/spack/repos/builtin/packages/usearch/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class Usearch(Package): + """USEARCH is a unique sequence analysis tool with thousands of users + world-wide. + + Note: A manual download is required for USEARCH. + Spack will search your current directory for the download file. + Alternatively, add this file to a mirror so that Spack can find it. + For instructions on how to set up a mirror, see + http://spack.readthedocs.io/en/latest/mirrors.html""" + + homepage = "http://www.drive5.com/usearch/" + + version('10.0.240', '05192b6d5e291530c190a19a3cc82b53', expand=False) + + def url_for_version(self, version): + return "file://{0}/usearch{1}_i86linux32".format(os.getcwd(), version) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('usearch{0}_i86linux32'.format(self.version), + prefix.bin.usearch) From dfb34da689013b76995388c055ffeda12f7dc2ab Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Wed, 9 Aug 2017 03:24:27 +0200 Subject: [PATCH 1434/2394] Adios2: ZeroMQ (#5031) During my last rebase the zeromq core dependency got missing. Currently it's needed for all dataman WAN transports. --- var/spack/repos/builtin/packages/adios2/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index bda9bca9965..c5ce5ac400a 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -77,6 +77,7 @@ class Adios2(CMakePackage): # depends_on('pybind11@2.1.1:', when='+python') depends_on('mpi', when='+mpi') + depends_on('zeromq', when='+dataman') depends_on('hdf5', when='+hdf5') depends_on('hdf5+mpi', when='+hdf5+mpi') From 3506f2674c6fe03b13f89d6b4ac5ede78c18acb1 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 8 Aug 2017 20:24:42 -0500 Subject: [PATCH 1435/2394] xplor-nih: new package (#5030) --- .../builtin/packages/xplor-nih/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/xplor-nih/package.py diff --git a/var/spack/repos/builtin/packages/xplor-nih/package.py b/var/spack/repos/builtin/packages/xplor-nih/package.py new file mode 100644 index 00000000000..4ae0ea519f8 --- /dev/null +++ b/var/spack/repos/builtin/packages/xplor-nih/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class XplorNih(Package): + """XPLOR-NIH is a structure determination program. + + Note: A manual download is required for XPLOR-NIH. + Spack will search your current directory for the download file. + Alternatively, add this file to a mirror so that Spack can find it. + For instructions on how to set up a mirror, see + http://spack.readthedocs.io/en/latest/mirrors.html""" + + homepage = "https://nmr.cit.nih.gov/xplor-nih/" + + version('2.45', 'ab3e046604beb0effc89a1adb7bab438') + + depends_on('python', type=('build', 'run')) + + def url_for_version(self, version): + return "file://{0}/xplor-nih-{1}-Linux_x86_64.tar.gz".format(os.getcwd(), version) + + def install(self, spec, prefix): + install_tree(self.stage.source_path, prefix.bin) From a66fb012da1b88f230d9a5b6f93c3d94b99f2987 Mon Sep 17 00:00:00 2001 From: jiseung Date: Tue, 8 Aug 2017 20:25:00 -0500 Subject: [PATCH 1436/2394] Packages/cns nospec (#5023) * new package: cns-nospec * made changes as suggested and added proxy-app tag * updated edit() * adjusted logic for '+debug' * install readme and license * install readme and license * install readme and license; fix mpi version build issues * fix build issues for ~mpi * pep8 compliant --- .../builtin/packages/cns-nospec/package.py | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cns-nospec/package.py b/var/spack/repos/builtin/packages/cns-nospec/package.py index d5569bdb6ec..30b760ff806 100644 --- a/var/spack/repos/builtin/packages/cns-nospec/package.py +++ b/var/spack/repos/builtin/packages/cns-nospec/package.py @@ -49,6 +49,21 @@ class CnsNospec(MakefilePackage): build_directory = 'MiniApps/CNS_NoSpec' def edit(self, spec, prefix): + def_file = FileFilter('Tools/F_mk/GMakedefs.mak') + def_file.filter('tdir = t/.*', 'tdir := t/$(suf)') + def_file.filter('hdir = t/.*', 'hdir := t/html') + def_file.filter('include $(BOXLIB_HOME)/Tools/F_mk/GMakeMPI.mak', '#') + + if '+mpi' in spec: + def_file.filter('FC.*:=.*', 'FC = {0}'.format(spec['mpi'].mpifc)) + def_file.filter('F90.*:=.*', 'F90 = {0}'.format(spec['mpi'].mpifc)) + def_file.filter( + 'mpi_include_dir =.*', + 'mpi_include_dir = {0}'.format(spec['mpi'].prefix.include)) + def_file.filter( + 'mpi_lib_dir =.*', + 'mpi_lib_dir = {0}'.format(spec['mpi'].prefix.lib)) + with working_dir(self.build_directory): makefile = FileFilter('GNUmakefile') if '+mpi' in spec: @@ -60,10 +75,35 @@ def edit(self, spec, prefix): if '+prof' in spec: makefile.filter('PROF.*', 'PROF := t') + if self.compiler.name == 'gcc': + makefile.filter('COMP .*', 'COMP = gfortran') + if self.compiler.name == 'intel': + makefile.filter('COMP .*', 'COMP = Intel') + if self.compiler.name == 'pgi': + makefile.filter('COMP .*', 'COMP = PGI') + if self.compiler.name == 'xl': + makefile.filter('COMP .*', 'COMP = IBM') + if self.compiler.name == 'cce': + makefile.filter('COMP .*', 'COMP = Cray') + + @property + def build_targets(self): + spec = self.spec + if '+mpi' in spec: + return ['CC = {0}'.format(spec['mpi'].mpicc), + 'CXX = {0}'.format(spec['mpi'].mpicxx)] + else: + return [] + + def build(self, spec, prefix): + with working_dir(self.build_directory): + gmake() + def install(self, spec, prefix): mkdirp(prefix.bin) files = glob.glob(join_path(self.build_directory, '*.exe')) for f in files: install(f, prefix.bin) install('README.txt', prefix) - install('license.txt', prefix) \ No newline at end of file + install('license.txt', prefix) + install(join_path(self.build_directory, 'README'), prefix) From a33f52cfb09cf840b00bef6f52b07ab43b53e0bf Mon Sep 17 00:00:00 2001 From: Brian Homerding Date: Tue, 8 Aug 2017 23:47:34 -0500 Subject: [PATCH 1437/2394] Fixed minor issues from Cmake conversion (#5024) --- var/spack/repos/builtin/packages/kripke/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/kripke/package.py b/var/spack/repos/builtin/packages/kripke/package.py index 65f722feed5..e8b63476daa 100644 --- a/var/spack/repos/builtin/packages/kripke/package.py +++ b/var/spack/repos/builtin/packages/kripke/package.py @@ -43,7 +43,7 @@ class Kripke(CMakePackage): def cmake_args(self): def enabled(variant): - return (1 if variant in spec else 0) + return (1 if variant in self.spec else 0) return [ '-DENABLE_OPENMP=%d' % enabled('+openmp'), @@ -54,4 +54,4 @@ def install(self, spec, prefix): # Kripke does not provide install target, so we have to copy # things into place. mkdirp(prefix.bin) - install('kripke', prefix.bin) + install('spack-build/kripke', prefix.bin) From d6fc2363af65aaa86339a95beec646a68fac6458 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 9 Aug 2017 15:13:33 +0200 Subject: [PATCH 1438/2394] slurm: added initial recipe (#4802) * slurm: added initial recipe * Modified variants following Adam comment. The MV variant 'features' has been turned into a set of BV variants. The dependency on 'readline' has been made optional. --- .../repos/builtin/packages/slurm/package.py | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 var/spack/repos/builtin/packages/slurm/package.py diff --git a/var/spack/repos/builtin/packages/slurm/package.py b/var/spack/repos/builtin/packages/slurm/package.py new file mode 100644 index 00000000000..626f43c6c57 --- /dev/null +++ b/var/spack/repos/builtin/packages/slurm/package.py @@ -0,0 +1,109 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Slurm(AutotoolsPackage): + """Slurm is an open source, fault-tolerant, and highly scalable cluster + management and job scheduling system for large and small Linux clusters. + + Slurm requires no kernel modifications for its operation and is relatively + self-contained. As a cluster workload manager, Slurm has three key + functions. First, it allocates exclusive and/or non-exclusive access to + resources (compute nodes) to users for some duration of time so they can + perform work. Second, it provides a framework for starting, executing, + and monitoring work (normally a parallel job) on the set of allocated + nodes. Finally, it arbitrates contention for resources by managing a + queue of pending work. + """ + + homepage = 'https://slurm.schedmd.com' + url = 'https://github.com/SchedMD/slurm/archive/slurm-17-02-6-1.tar.gz' + + version('17-02-6-1', '8edbb9ad41819464350d9de013367020') + + variant('gtk', default=False, description='Enable GTK+ support') + variant('mariadb', default=False, description='Use MariaDB instead of MySQL') + + variant('hwloc', default=False, description='Enable hwloc support') + variant('hdf5', default=False, description='Enable hdf5 support') + variant('readline', default=True, description='Enable readline support') + + # TODO: add variant for BG/Q and Cray support + + # TODO: add support for checkpoint/restart (BLCR) + + # TODO: add support for lua + + depends_on('curl') + depends_on('glib') + depends_on('json-c') + depends_on('lz4') + depends_on('munge') + depends_on('openssl') + depends_on('pkg-config', type='build') + depends_on('readline') + depends_on('zlib') + + depends_on('gtkplus+X', when='+gtk') + depends_on('hdf5', when='+hdf5') + depends_on('hwloc', when='+hwloc') + depends_on('mariadb', when='+mariadb') + + def configure_args(self): + + spec = self.spec + + args = [ + '--with-libcurl={0}'.format(spec['curl'].prefix), + '--with-json={0}'.format(spec['json-c'].prefix), + '--with-lz4={0}'.format(spec['lz4'].prefix), + '--with-munge={0}'.format(spec['munge'].prefix), + '--with-ssl={0}'.format(spec['openssl'].prefix), + '--with-zlib={0}'.format(spec['zlib'].prefix), + ] + + if '~gtk' in spec: + args.append('--disable-gtktest') + + if '+readline' in spec: + args.append('--with-readline={0}'.format(spec['readline'].prefix)) + else: + args.append('--without-readline') + + if '+hdf5' in spec: + args.append( + '--with-hdf5={0}'.format(spec['hdf5'].prefix.bin.h5cc) + ) + else: + args.append('--without-hdf5') + + if '+hwloc' in spec: + args.append('--with-hwloc={0}'.format(spec['hwloc'].prefix)) + else: + args.append('--without-hwloc') + + return args From e463461ed1934c30e71756e6dbfade90d95b56be Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Wed, 9 Aug 2017 18:00:34 +0200 Subject: [PATCH 1439/2394] Bugfixes for compiler detection on the Cray platform. (#3075) * Typo fixes in docstrings. * Let OS classes know if the paths they get were explicitly specified by user. * Fixed regexp for cray compiler version matching. * Replaced LinuxDistro with CrayFrontend for the Cray platform's frontend. --- lib/spack/spack/architecture.py | 2 +- lib/spack/spack/cmd/compiler.py | 3 - lib/spack/spack/compilers/__init__.py | 2 +- lib/spack/spack/compilers/cce.py | 2 +- .../spack/operating_systems/cray_frontend.py | 76 +++++++++++++++++++ lib/spack/spack/platforms/cray.py | 4 +- 6 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 lib/spack/spack/operating_systems/cray_frontend.py diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py index 487948dd4e7..27092fb344a 100644 --- a/lib/spack/spack/architecture.py +++ b/lib/spack/spack/architecture.py @@ -254,7 +254,7 @@ def _cmp_key(self): def find_compilers(self, *paths): """ - Return a list of compilers found in the suppied paths. + Return a list of compilers found in the supplied paths. This invokes the find() method for each Compiler class, and appends the compilers detected to a list. """ diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index d5aa25ee8eb..356161d3b3d 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -36,7 +36,6 @@ from llnl.util.tty.colify import colify from llnl.util.tty.color import colorize from spack.spec import CompilerSpec, ArchSpec -from spack.util.environment import get_path description = "manage compilers" section = "system" @@ -89,8 +88,6 @@ def compiler_find(args): """ paths = args.add_paths - if not paths: - paths = get_path('PATH') # Don't initialize compilers config via compilers.get_compiler_config. # Just let compiler_find do the diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index 53b2572ab9f..517a0bd5e8a 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -182,7 +182,7 @@ def all_compiler_specs(scope=None, init_config=True): def find_compilers(*paths): - """Return a list of compilers found in the suppied paths. + """Return a list of compilers found in the supplied paths. This invokes the find_compilers() method for each operating system associated with the host platform, and appends the compilers detected to a list. diff --git a/lib/spack/spack/compilers/cce.py b/lib/spack/spack/compilers/cce.py index 936614efac5..2a5858f4e80 100644 --- a/lib/spack/spack/compilers/cce.py +++ b/lib/spack/spack/compilers/cce.py @@ -52,7 +52,7 @@ class Cce(Compiler): @classmethod def default_version(cls, comp): - return get_compiler_version(comp, '-V', r'[Vv]ersion.*(\d+(\.\d+)+)') + return get_compiler_version(comp, '-V', r'[Vv]ersion.*?(\d+(\.\d+)+)') @property def openmp_flag(self): diff --git a/lib/spack/spack/operating_systems/cray_frontend.py b/lib/spack/spack/operating_systems/cray_frontend.py new file mode 100644 index 00000000000..bf3b76faf2e --- /dev/null +++ b/lib/spack/spack/operating_systems/cray_frontend.py @@ -0,0 +1,76 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os + +from spack.operating_systems.linux_distro import LinuxDistro +from spack.util.module_cmd import get_module_cmd + + +class CrayFrontend(LinuxDistro): + """Represents OS that runs on login and service nodes of the Cray platform. + It acts as a regular Linux without Cray-specific modules and compiler + wrappers.""" + + def find_compilers(self, *paths): + """Calls the overridden method but prevents it from detecting Cray + compiler wrappers to avoid possible false detections. The detected + compilers come into play only if a user decides to work with the Cray's + frontend OS as if it was a regular Linux environment.""" + + env_bu = None + + # We rely on the fact that the PrgEnv-* modules set the PE_ENV + # environment variable. + if 'PE_ENV' in os.environ: + # Copy environment variables to restore them after the compiler + # detection. We expect that the only thing PrgEnv-* modules do is + # the environment variables modifications. + env_bu = os.environ.copy() + + # Get the name of the module from the environment variable. + prg_env = 'PrgEnv-' + os.environ['PE_ENV'].lower() + + # Unload the PrgEnv-* module. By doing this we intentionally + # provoke errors when the Cray's compiler wrappers are executed + # (Error: A PrgEnv-* modulefile must be loaded.) so they will not + # be detected as valid compilers by the overridden method. We also + # expect that the modules that add the actual compilers' binaries + # into the PATH environment variable (i.e. the following modules: + # 'intel', 'cce', 'gcc', etc.) will also be unloaded since they are + # specified as prerequisites in the PrgEnv-* modulefiles. + modulecmd = get_module_cmd() + exec (compile( + modulecmd('unload', prg_env, output=str, error=os.devnull), + '', 'exec')) + + # Call the overridden method. + clist = super(CrayFrontend, self).find_compilers(*paths) + + # Restore the environment. + if env_bu is not None: + os.environ.clear() + os.environ.update(env_bu) + + return clist diff --git a/lib/spack/spack/platforms/cray.py b/lib/spack/spack/platforms/cray.py index 9a7301d1f8f..411eb32b1ce 100644 --- a/lib/spack/spack/platforms/cray.py +++ b/lib/spack/spack/platforms/cray.py @@ -28,7 +28,7 @@ from spack import build_env_path from spack.util.executable import which from spack.architecture import Platform, Target, NoPlatformError -from spack.operating_systems.linux_distro import LinuxDistro +from spack.operating_systems.cray_frontend import CrayFrontend from spack.operating_systems.cnl import Cnl from llnl.util.filesystem import join_path from spack.util.module_cmd import get_module_cmd @@ -88,7 +88,7 @@ def __init__(self): else: raise NoPlatformError() - front_distro = LinuxDistro() + front_distro = CrayFrontend() back_distro = Cnl() self.default_os = str(back_distro) From db4776fcd5ac93f6ffbceb27ae38d887830b204a Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 9 Aug 2017 18:10:25 +0200 Subject: [PATCH 1440/2394] alglib: add new package (#5035) --- .../repos/builtin/packages/alglib/Makefile | 20 ++++++ .../repos/builtin/packages/alglib/package.py | 61 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 var/spack/repos/builtin/packages/alglib/Makefile create mode 100644 var/spack/repos/builtin/packages/alglib/package.py diff --git a/var/spack/repos/builtin/packages/alglib/Makefile b/var/spack/repos/builtin/packages/alglib/Makefile new file mode 100644 index 00000000000..fbcfdb9542e --- /dev/null +++ b/var/spack/repos/builtin/packages/alglib/Makefile @@ -0,0 +1,20 @@ +CC = $(SPACK_CXX) +CFLAGS = -fPIC -Wall -O2 -g +LDFLAGS = -shared +RM = rm -f +TARGET_LIB = libalglib.so + +SRCS = $(wildcard *.cpp) +OBJS = $(SRCS:.cpp=.o) + +%.o: %.cpp + $(CC) -c ${CFLAGS} $< + +.PHONY: all +all: $(OBJS) + $(CC) ${LDFLAGS} -o ${TARGET_LIB} $^ + +# do not look for "clean", consider it always as missing +.phony: clean +clean: + ${RM} *.o diff --git a/var/spack/repos/builtin/packages/alglib/package.py b/var/spack/repos/builtin/packages/alglib/package.py new file mode 100644 index 00000000000..d617290e62b --- /dev/null +++ b/var/spack/repos/builtin/packages/alglib/package.py @@ -0,0 +1,61 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import glob +import os +import shutil + + +class Alglib(MakefilePackage): + """ALGLIB is a cross-platform numerical analysis and data processing + library.""" + + homepage = "http://www.alglib.net" + url = "http://www.alglib.net/translator/re/alglib-3.11.0.cpp.gpl.tgz" + + version('3.11.0', 'f87bb05349924d486e8809590dee9f80') + + def url_for_version(self, version): + return 'http://www.alglib.net/translator/re/alglib-{0}.cpp.gpl.tgz'.format(version.dotted) + + build_directory = 'src' + + def edit(self, spec, prefix): + # this package has no build system! + make_file_src = join_path(os.path.dirname(self.module.__file__), + 'Makefile') + make_file = join_path(self.stage.source_path, 'src', 'Makefile') + shutil.copy(make_file_src, make_file) + filter_file(r'so', dso_suffix, make_file) + + def install(self, spec, prefix): + name = 'libalglib.{0}'.format(dso_suffix) + with working_dir('src'): + mkdirp(prefix.lib) + install(name, prefix.lib) + mkdirp(prefix.include) + headers = glob.glob('*.h') + for h in headers: + install(h, prefix.include) From 9e8cce41e3f78ed4222eff342a5b61b6f8fbf645 Mon Sep 17 00:00:00 2001 From: pkondamudi Date: Wed, 9 Aug 2017 11:11:09 -0500 Subject: [PATCH 1441/2394] OpenMC parallel build fix. (#5037) --- var/spack/repos/builtin/packages/openmc/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/openmc/package.py b/var/spack/repos/builtin/packages/openmc/package.py index e6d32767fd9..aed4f4b0e9a 100644 --- a/var/spack/repos/builtin/packages/openmc/package.py +++ b/var/spack/repos/builtin/packages/openmc/package.py @@ -42,6 +42,8 @@ class Openmc(MakefilePackage): build_directory = 'src' + parallel = False + @property def build_targets(self): From faeb1b77b2a5c5188b0d765c337c342dc2b8fd35 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 9 Aug 2017 19:02:38 +0200 Subject: [PATCH 1442/2394] Merged 'purge' command with 'clean' and deleted 'purge' (#4970) * Merged 'purge' command with 'clean'. Deleted 'purge'. fixes #2942 'spack purge' has been merged with 'spack clean'. Documentation has been updated accordingly. The 'clean' and 'purge' behavior are not mutually exclusive, and they log brief information to tty while they go. * Fixed a wrong reference to spack clean in the docs * Added tests for 'spack clean'. Updated bash completion. --- lib/spack/docs/config_yaml.rst | 10 ++--- lib/spack/docs/mirrors.rst | 2 +- lib/spack/docs/packaging_guide.rst | 21 +++------ lib/spack/spack/cmd/clean.py | 57 +++++++++++++++++++++---- lib/spack/spack/cmd/purge.py | 60 -------------------------- lib/spack/spack/test/cmd/clean.py | 68 ++++++++++++++++++++++++++++++ share/spack/spack-completion.bash | 8 +--- 7 files changed, 131 insertions(+), 95 deletions(-) delete mode 100644 lib/spack/spack/cmd/purge.py create mode 100644 lib/spack/spack/test/cmd/clean.py diff --git a/lib/spack/docs/config_yaml.rst b/lib/spack/docs/config_yaml.rst index 28b258c2e59..1c51db1b96f 100644 --- a/lib/spack/docs/config_yaml.rst +++ b/lib/spack/docs/config_yaml.rst @@ -126,8 +126,8 @@ When Spack builds a package, it creates a temporary directory within the After a package is successfully installed, Spack deletes the temporary directory it used to build. Unsuccessful builds are not deleted, but you -can manually purge them with :ref:`spack purge --stage -`. +can manually purge them with :ref:`spack clean --stage +`. .. note:: @@ -142,8 +142,8 @@ can manually purge them with :ref:`spack purge --stage Location to cache downloaded tarballs and repositories. By default these are stored in ``$spack/var/spack/cache``. These are stored indefinitely -by default. Can be purged with :ref:`spack purge --downloads -`. +by default. Can be purged with :ref:`spack clean --downloads +`. -------------------- ``misc_cache`` @@ -151,7 +151,7 @@ by default. Can be purged with :ref:`spack purge --downloads Temporary directory to store long-lived cache files, such as indices of packages available in repositories. Defaults to ``~/.spack/cache``. Can -be purged with :ref:`spack purge --misc-cache `. +be purged with :ref:`spack clean --misc-cache `. -------------------- ``verify_ssl`` diff --git a/lib/spack/docs/mirrors.rst b/lib/spack/docs/mirrors.rst index c69496066ff..8f4eea1f8cd 100644 --- a/lib/spack/docs/mirrors.rst +++ b/lib/spack/docs/mirrors.rst @@ -237,7 +237,7 @@ as other Spack mirrors (so it can be copied anywhere and referenced with a URL like other mirrors). The mirror is maintained locally (within the Spack installation directory) at :file:`var/spack/cache/`. It is always enabled (and is always searched first when attempting to retrieve files for an installation) -but can be cleared with :ref:`purge `; the cache directory can also +but can be cleared with :ref:`clean `; the cache directory can also be deleted manually without issue. Caching includes retrieved tarball archives and source control repositories, but diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index af3f7b408aa..7e789bc294b 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -3432,24 +3432,12 @@ Does this in one of two ways: ``spack clean`` ^^^^^^^^^^^^^^^ -Cleans up temporary files for a particular package, by deleting the -expanded/checked out source code *and* any downloaded archive. If -``fetch``, ``stage``, or ``install`` are run again after this, Spack's -build process will start from scratch. - -.. _cmd-spack-purge: - -^^^^^^^^^^^^^^^ -``spack purge`` -^^^^^^^^^^^^^^^ - Cleans up all of Spack's temporary and cached files. This can be used to recover disk space if temporary files from interrupted or failed installs accumulate in the staging area. When called with ``--stage`` or without arguments this removes all staged -files and will be equivalent to running ``spack clean`` for every package -you have fetched or staged. +files. When called with ``--downloads`` this will clear all resources :ref:`cached ` during installs. @@ -3459,6 +3447,11 @@ directory, including cached virtual indices. To remove all of the above, the command can be called with ``--all``. +When called with positional arguments, cleans up temporary files only +for a particular package. If ``fetch``, ``stage``, or ``install`` +are run again after this, Spack's build process will start from scratch. + + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Keeping the stage directory on success ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -3472,7 +3465,7 @@ package has been successfully built and installed. Use $ spack install --keep-stage This allows you to inspect the build directory and potentially debug -the build. You can use ``purge`` or ``clean`` later to get rid of the +the build. You can use ``clean`` later to get rid of the unwanted temporary files. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py index b7812bffc4b..634e20b4e43 100644 --- a/lib/spack/spack/cmd/clean.py +++ b/lib/spack/spack/cmd/clean.py @@ -29,21 +29,60 @@ import spack import spack.cmd -description = "remove build stage and source tarball for packages" +description = "remove temporary build files and/or downloaded archives" section = "build" level = "long" +class AllClean(argparse.Action): + """Activates flags -s -d and -m simultaneously""" + def __call__(self, parser, namespace, values, option_string=None): + parser.parse_args(['-sdm'], namespace=namespace) + + def setup_parser(subparser): - subparser.add_argument('packages', nargs=argparse.REMAINDER, - help="specs of packages to clean") + subparser.add_argument( + '-s', '--stage', action='store_true', + help="remove all temporary build stages (default)") + subparser.add_argument( + '-d', '--downloads', action='store_true', + help="remove cached downloads") + subparser.add_argument( + '-m', '--misc-cache', action='store_true', + help="remove long-lived caches, like the virtual package index") + subparser.add_argument( + '-a', '--all', action=AllClean, help="equivalent to -sdm", nargs=0 + ) + subparser.add_argument( + 'specs', + nargs=argparse.REMAINDER, + help="removes the build stages and tarballs for specs" + ) def clean(parser, args): - if not args.packages: - tty.die("spack clean requires at least one package spec.") - specs = spack.cmd.parse_specs(args.packages, concretize=True) - for spec in specs: - package = spack.repo.get(spec) - package.do_clean() + # If nothing was set, activate the default + if not any([args.specs, args.stage, args.downloads, args.misc_cache]): + args.stage = True + + # Then do the cleaning falling through the cases + if args.specs: + specs = spack.cmd.parse_specs(args.specs, concretize=True) + for spec in specs: + msg = 'Cleaning build stage [{0}]' + tty.msg(msg.format(spec.short_spec)) + package = spack.repo.get(spec) + package.do_clean() + + if args.stage: + tty.msg('Removing all temporary build stages') + spack.stage.purge() + + if args.downloads: + tty.msg('Removing cached downloads') + spack.fetch_cache.destroy() + + if args.misc_cache: + tty.msg('Removing cached information on repositories') + spack.misc_cache.destroy() diff --git a/lib/spack/spack/cmd/purge.py b/lib/spack/spack/cmd/purge.py deleted file mode 100644 index ac2aa1c21f6..00000000000 --- a/lib/spack/spack/cmd/purge.py +++ /dev/null @@ -1,60 +0,0 @@ -############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/llnl/spack -# Please also see the NOTICE and LICENSE files for our notice and the LGPL. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, February 1999. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -# conditions of the GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# 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 spack -import spack.stage as stage - -description = "remove temporary build files and/or downloaded archives" -section = "admin" -level = "long" - - -def setup_parser(subparser): - subparser.add_argument( - '-s', '--stage', action='store_true', default=True, - help="remove all temporary build stages (default)") - subparser.add_argument( - '-d', '--downloads', action='store_true', - help="remove cached downloads") - subparser.add_argument( - '-m', '--misc-cache', action='store_true', - help="remove long-lived caches, like the virtual package index") - subparser.add_argument( - '-a', '--all', action='store_true', - help="remove all of the above") - - -def purge(parser, args): - # Special case: no flags. - if not any((args.stage, args.downloads, args.misc_cache, args.all)): - stage.purge() - return - - # handle other flags with fall through. - if args.stage or args.all: - stage.purge() - if args.downloads or args.all: - spack.fetch_cache.destroy() - if args.misc_cache or args.all: - spack.misc_cache.destroy() diff --git a/lib/spack/spack/test/cmd/clean.py b/lib/spack/spack/test/cmd/clean.py new file mode 100644 index 00000000000..a905cd9e1ee --- /dev/null +++ b/lib/spack/spack/test/cmd/clean.py @@ -0,0 +1,68 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 pytest +import spack +import spack.main +import spack.package + +clean = spack.main.SpackCommand('clean') + + +@pytest.fixture() +def mock_calls_for_clean(monkeypatch): + + class Counter(object): + def __init__(self): + self.call_count = 0 + + def __call__(self, *args, **kwargs): + self.call_count += 1 + + monkeypatch.setattr(spack.package.PackageBase, 'do_clean', Counter()) + monkeypatch.setattr(spack.stage, 'purge', Counter()) + monkeypatch.setattr(spack.fetch_cache, 'destroy', Counter(), raising=False) + monkeypatch.setattr(spack.misc_cache, 'destroy', Counter()) + + +@pytest.mark.usefixtures( + 'builtin_mock', 'config', 'mock_calls_for_clean' +) +@pytest.mark.parametrize('command_line,counters', [ + ('mpileaks', [1, 0, 0, 0]), + ('-s', [0, 1, 0, 0]), + ('-sd', [0, 1, 1, 0]), + ('-a', [0, 1, 1, 1]), +]) +def test_function_calls(command_line, counters): + + # Call the command with the supplied command line + clean(command_line) + + # Assert that we called the expected functions the correct + # number of times + assert spack.package.PackageBase.do_clean.call_count == counters[0] + assert spack.stage.purge.call_count == counters[1] + assert spack.fetch_cache.destroy.call_count == counters[2] + assert spack.misc_cache.destroy.call_count == counters[3] diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index e60d587c188..46070d68ccf 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -175,7 +175,8 @@ function _spack_checksum { function _spack_clean { if $list_options then - compgen -W "-h --help" -- "$cur" + compgen -W "-h --help -s --stage -d --downloads + -m --misc-cache -a --all" -- "$cur" else compgen -W "$(_all_packages)" -- "$cur" fi @@ -598,11 +599,6 @@ function _spack_providers { fi } -function _spack_purge { - compgen -W "-h --help -s --stage -d --downloads - -m --misc-cache -a --all" -- "$cur" -} - function _spack_python { if $list_options then From 79f9548a9ad31a901fae1296e31c6b8d184cdc0e Mon Sep 17 00:00:00 2001 From: becker33 Date: Wed, 9 Aug 2017 12:14:35 -0700 Subject: [PATCH 1443/2394] bugfix for module_cmd (#5038) * bugfix for modulecmd when bash is symlinked to sh * update test to make sure module_cmd can interpret sh --- lib/spack/spack/test/module_parsing.py | 2 +- lib/spack/spack/util/module_cmd.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/test/module_parsing.py b/lib/spack/spack/test/module_parsing.py index d3069158343..e563953478d 100644 --- a/lib/spack/spack/test/module_parsing.py +++ b/lib/spack/spack/test/module_parsing.py @@ -112,7 +112,7 @@ def test_get_module_cmd_from_bash_ticks(save_env): def test_get_module_cmd_from_bash_parens(save_env): - os.environ['BASH_FUNC_module()'] = '() { eval $(echo fill bash $*)\n}' + os.environ['BASH_FUNC_module()'] = '() { eval $(echo fill sh $*)\n}' module_cmd = get_module_cmd() module_cmd_list = module_cmd('list', output=str, error=str) diff --git a/lib/spack/spack/util/module_cmd.py b/lib/spack/spack/util/module_cmd.py index 4de3fb051e8..87ccd79fd63 100644 --- a/lib/spack/spack/util/module_cmd.py +++ b/lib/spack/spack/util/module_cmd.py @@ -97,7 +97,7 @@ def get_module_cmd_from_bash(bashopts=''): module_cmd = which(args[0]) if module_cmd: for arg in args[1:]: - if arg == 'bash': + if arg in ('bash', 'sh'): module_cmd.add_default_arg('python') break else: From 1f578c57778bbab74c3c83cc700cf0d313433692 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 9 Aug 2017 15:04:21 -0500 Subject: [PATCH 1444/2394] pipits: new package (#5041) * pipits: new package and dependencies * fixing rdp-classifier java dep * adding resources to pipits and fixing deps for py-biom-format --- .../repos/builtin/packages/itsx/package.py | 44 ++++++++++ .../packages/py-biom-format/package.py | 48 +++++++++++ .../builtin/packages/py-pipits/package.py | 80 +++++++++++++++++++ .../packages/rdp-classifier/package.py | 45 +++++++++++ 4 files changed, 217 insertions(+) create mode 100644 var/spack/repos/builtin/packages/itsx/package.py create mode 100644 var/spack/repos/builtin/packages/py-biom-format/package.py create mode 100644 var/spack/repos/builtin/packages/py-pipits/package.py create mode 100644 var/spack/repos/builtin/packages/rdp-classifier/package.py diff --git a/var/spack/repos/builtin/packages/itsx/package.py b/var/spack/repos/builtin/packages/itsx/package.py new file mode 100644 index 00000000000..41b0d9a6a2e --- /dev/null +++ b/var/spack/repos/builtin/packages/itsx/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Itsx(Package): + """Improved software detection and extraction of ITS1 and ITS2 from + ribosomal ITS sequences of fungi and other eukaryotes for use in + environmental sequencing""" + + homepage = "http://microbiology.se/software/itsx/" + url = "http://microbiology.se/sw/ITSx_1.0.11.tar.gz" + + version('1.0.11', '1bff12f1d5742f19be6ca585e9bf81fa') + + depends_on('perl', type=('build', 'run')) + depends_on('hmmer') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('ITSx', prefix.bin) + install_tree('ITSx_db', prefix.bin.ITSx_db) diff --git a/var/spack/repos/builtin/packages/py-biom-format/package.py b/var/spack/repos/builtin/packages/py-biom-format/package.py new file mode 100644 index 00000000000..2d61507bd0b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-biom-format/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyBiomFormat(PythonPackage): + """The BIOM file format (canonically pronounced biome) is designed to be + a general-use format for representing biological sample by observation + contingency tables.""" + + homepage = "https://pypi.python.org/pypi/biom-format/2.1.6" + url = "https://pypi.io/packages/source/b/biom-format/biom-format-2.1.6.tar.gz" + + version('2.1.6', '1dd4925b74c56e8ee864d5e1973068de') + + variant('h5py', default=True, description='For use with BIOM 2.0+ files') + + depends_on('py-setuptools', type='build') + depends_on('py-cython', type='build') + depends_on('py-h5py', type=('build', 'run'), when='+h5py') + depends_on('py-click', type=('build', 'run')) + depends_on('py-numpy@1.3.0:', type=('build', 'run')) + depends_on('py-future@0.16.0:', type=('build', 'run')) + depends_on('py-scipy@0.13.0:', type=('build', 'run')) + depends_on('py-pandas@0.19.2:', type=('build', 'run')) + depends_on('py-six@1.10.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pipits/package.py b/var/spack/repos/builtin/packages/py-pipits/package.py new file mode 100644 index 00000000000..88a629cc2e2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pipits/package.py @@ -0,0 +1,80 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPipits(PythonPackage): + """Automated pipeline for analyses of fungal ITS from the Illumina""" + + homepage = "https://github.com/hsgweon/pipits" + url = "https://github.com/hsgweon/pipits/archive/1.5.0.tar.gz" + + version('1.5.0', '3f9b52bd7ffbcdb96d7bec150275070a') + + depends_on('python@:2.999', type=('build', 'run')) + depends_on('py-biom-format', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('java', type=('build', 'run')) + depends_on('hmmer') + depends_on('fastx-toolkit') + depends_on('vsearch') + depends_on('itsx') + depends_on('rdp-classifier') + + resource( + name='UNITE_retrained', + url='http://sourceforge.net/projects/pipits/files/UNITE_retrained_28.06.2017.tar.gz', + destination='refdb' + ) + + resource( + name='uchime_reference_dataset_01.01.2016.fasta', + url='https://unite.ut.ee/sh_files/uchime_reference_dataset_01.01.2016.zip', + destination=join_path('refdb', 'uchime_reference_dataset_01.01.2016') + ) + + resource( + name='warcup_retrained_V2', + url='https://sourceforge.net/projects/pipits/files/warcup_retrained_V2.tar.gz', + destination='refdb' + ) + + @run_after('install') + def install_db(self): + install_tree(join_path(self.stage.source_path, 'refdb'), + self.prefix.refdb) + + def setup_environment(self, spack_env, run_env): + run_env.set('PIPITS_UNITE_REFERENCE_DATA_CHIMERA', join_path( + self.prefix, 'refdb', + 'uchime_reference_dataset_01.01.2016', + 'uchime_reference_dataset_01.01.2016.fasta')) + run_env.set('PIPITS_UNITE_RETRAINED_DIR', + self.prefix.refdb.UNITE_retrained) + run_env.set('PIPITS_WARCUP_RETRAINED_DIR', + self.prefix.refdb.warcup_retrained_V2) + run_env.set('PIPITS_RDP_CLASSIFIER_JAR', join_path( + self.spec['rdp-classifier'].prefix.bin, + 'classifier.jar')) diff --git a/var/spack/repos/builtin/packages/rdp-classifier/package.py b/var/spack/repos/builtin/packages/rdp-classifier/package.py new file mode 100644 index 00000000000..49cc367c8d8 --- /dev/null +++ b/var/spack/repos/builtin/packages/rdp-classifier/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RdpClassifier(Package): + """The RDP Classifier is a naive Bayesian classifier that can rapidly and + accurately provides taxonomic assignments from domain to genus, with + confidence estimates for each assignment. """ + + homepage = "http://rdp.cme.msu.edu/" + url = "https://downloads.sourceforge.net/project/rdp-classifier/rdp-classifier/rdp_classifier_2.12.zip" + + version('2.12', '7fdfa33512629810f0ff06b905642ddd') + + depends_on('java', type=('build', 'run')) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install(join_path('dist', 'classifier.jar'), prefix.bin) + install_tree(join_path('dist', 'lib'), prefix.bin.lib) + install(join_path('lib', 'junit-4.8.2.jar'), prefix.bin.lib) + install_tree('src', prefix.src) From 0137f17306abd4d3969cee6db1fce8290674a1ff Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 9 Aug 2017 15:39:37 -0500 Subject: [PATCH 1445/2394] shapeit: new package (#5042) * shapeit: new package * fixing versioning --- .../repos/builtin/packages/shapeit/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/shapeit/package.py diff --git a/var/spack/repos/builtin/packages/shapeit/package.py b/var/spack/repos/builtin/packages/shapeit/package.py new file mode 100644 index 00000000000..a3f79c62553 --- /dev/null +++ b/var/spack/repos/builtin/packages/shapeit/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Shapeit(Package): + """SHAPEIT is a fast and accurate method for estimation of haplotypes (aka + phasing) from genotype or sequencing data.""" + + homepage = "https://mathgen.stats.ox.ac.uk/genetics_software/shapeit/shapeit.html" + url = "https://mathgen.stats.ox.ac.uk/genetics_software/shapeit/shapeit.v2.r837.GLIBCv2.12.Linux.dynamic.tgz" + + version('2.837', '895873bb655a0a985cbfd870fdd1dd60') + + def url_for_version(self, version): + url = 'https://mathgen.stats.ox.ac.uk/genetics_software/shapeit/shapeit.v{0}.r{1}.GLIBCv2.12.Linux.dynamic.tgz' + return url.format(version[0], version[1]) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + with working_dir('bin'): + install('shapeit', prefix.bin) From 28b0421eb13ddc40033b54b63f1dfa2966257384 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Wed, 9 Aug 2017 13:40:10 -0700 Subject: [PATCH 1446/2394] Opencv fix (#5040) * Added a package for the MDAnalysis toolkit. * Changed cmake_options to args to be consistent with the rest of the file and fix a cmake error about undefined errors. Additionally, added guards for both png and zlib to not include their cmake options when those variants are not specified. --- .../repos/builtin/packages/opencv/package.py | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index f2bda99a012..5e5be0abe8b 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -128,27 +128,29 @@ def cmake_args(self): ] # Media I/O - zlib = spec['zlib'] - args.extend([ - '-DZLIB_LIBRARY_{0}:FILEPATH={1}'.format(( - 'DEBUG' if '+debug' in spec else 'RELEASE'), - join_path(zlib.prefix.lib, - 'libz.{0}'.format(dso_suffix))), - '-DZLIB_INCLUDE_DIR:PATH={0}'.format(zlib.prefix.include) - ]) + if '+zlib' in spec: + zlib = spec['zlib'] + args.extend([ + '-DZLIB_LIBRARY_{0}:FILEPATH={1}'.format(( + 'DEBUG' if '+debug' in spec else 'RELEASE'), + join_path(zlib.prefix.lib, + 'libz.{0}'.format(dso_suffix))), + '-DZLIB_INCLUDE_DIR:PATH={0}'.format(zlib.prefix.include) + ]) - libpng = spec['libpng'] - args.extend([ - '-DPNG_LIBRARY_{0}:FILEPATH={1}'.format(( - 'DEBUG' if '+debug' in spec else 'RELEASE'), - join_path(libpng.prefix.lib, - 'libpng.{0}'.format(dso_suffix))), - '-DPNG_INCLUDE_DIR:PATH={0}'.format(libpng.prefix.include) - ]) + if '+png' in spec: + libpng = spec['libpng'] + args.extend([ + '-DPNG_LIBRARY_{0}:FILEPATH={1}'.format(( + 'DEBUG' if '+debug' in spec else 'RELEASE'), + join_path(libpng.prefix.lib, + 'libpng.{0}'.format(dso_suffix))), + '-DPNG_INCLUDE_DIR:PATH={0}'.format(libpng.prefix.include) + ]) if '+jpeg' in spec: libjpeg = spec['libjpeg-turbo'] - cmake_options.extend([ + args.extend([ '-DBUILD_JPEG:BOOL=OFF', '-DJPEG_LIBRARY:FILEPATH={0}'.format( join_path(libjpeg.prefix.lib, @@ -158,7 +160,7 @@ def cmake_args(self): if '+tiff' in spec: libtiff = spec['libtiff'] - cmake_options.extend([ + args.extend([ '-DTIFF_LIBRARY_{0}:FILEPATH={1}'.format(( 'DEBUG' if '+debug' in spec else 'RELEASE'), join_path(libtiff.prefix.lib, @@ -168,7 +170,7 @@ def cmake_args(self): if '+jasper' in spec: jasper = spec['jasper'] - cmake_options.extend([ + args.extend([ '-DJASPER_LIBRARY_{0}:FILEPATH={1}'.format(( 'DEBUG' if '+debug' in spec else 'RELEASE'), join_path(jasper.prefix.lib, From 7ca5e4f7347999cbee33428761d173fe1fdfb145 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 9 Aug 2017 17:00:59 -0500 Subject: [PATCH 1447/2394] soapsnp: new package (#5046) --- .../repos/builtin/packages/soapsnp/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/soapsnp/package.py diff --git a/var/spack/repos/builtin/packages/soapsnp/package.py b/var/spack/repos/builtin/packages/soapsnp/package.py new file mode 100644 index 00000000000..3d22a579bf8 --- /dev/null +++ b/var/spack/repos/builtin/packages/soapsnp/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Soapsnp(MakefilePackage): + """SOAPsnp uses a method based on Bayes' theorem (the reverse probability + model) to call consensus genotype by carefully considering the data + quality, alignment, and recurring experimental errors.""" + + homepage = "http://soap.genomics.org.cn/soapsnp.html" + url = "http://soap.genomics.org.cn/down/SOAPsnp-v1.03.tar.gz" + + version('1.03', '8d69e196013657357ff840b611762ebc') + + depends_on('boost') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('soapsnp', prefix.bin) From 3edf36b0a4a2a50a7968e96dd12634cd25bdb567 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 9 Aug 2017 17:03:14 -0500 Subject: [PATCH 1448/2394] haploview: new package (#5036) --- .../builtin/packages/haploview/haploview.sh | 3 ++ .../builtin/packages/haploview/package.py | 54 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 var/spack/repos/builtin/packages/haploview/haploview.sh create mode 100644 var/spack/repos/builtin/packages/haploview/package.py diff --git a/var/spack/repos/builtin/packages/haploview/haploview.sh b/var/spack/repos/builtin/packages/haploview/haploview.sh new file mode 100644 index 00000000000..0f6c60139c4 --- /dev/null +++ b/var/spack/repos/builtin/packages/haploview/haploview.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# convenience wrapper for the haploview.jar file +java $JAVA_ARGS $JAVA_OPTS -jar haploview.jar "$@" diff --git a/var/spack/repos/builtin/packages/haploview/package.py b/var/spack/repos/builtin/packages/haploview/package.py new file mode 100644 index 00000000000..9ffe6898b5e --- /dev/null +++ b/var/spack/repos/builtin/packages/haploview/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os.path + + +class Haploview(Package): + """Haploview is designed to simplify and expedite the process of haplotype + analysis.""" + + homepage = "http://www.broadinstitute.org/haploview/haploview" + url = "https://downloads.sourceforge.net/project/haploview/release/Haploview4.1.jar" + + version('4.1', 'f7aa4accda5fad1be74c9c1969c6ee7d', expand=False) + + depends_on('java', type=('build', 'run')) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + jar_file = 'Haploview{v}.jar'.format(v=self.version) + install(jar_file, prefix.bin) + + script_sh = join_path(os.path.dirname(__file__), "haploview.sh") + script = prefix.bin.haploview + install(script_sh, script) + set_executable(script) + + java = self.spec['java'].prefix.bin.java + kwargs = {'ignore_absent': False, 'backup': False, 'string': False} + filter_file('^java', java, script, **kwargs) + filter_file('haploview.jar', join_path(prefix.bin, jar_file), + script, **kwargs) From 869d40648f62c0864c8336153b568fd388d11253 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 9 Aug 2017 18:50:11 -0500 Subject: [PATCH 1449/2394] soap2: new package (#5045) --- .../repos/builtin/packages/soap2/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/soap2/package.py diff --git a/var/spack/repos/builtin/packages/soap2/package.py b/var/spack/repos/builtin/packages/soap2/package.py new file mode 100644 index 00000000000..5853bdf1e6d --- /dev/null +++ b/var/spack/repos/builtin/packages/soap2/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Soap2(Package): + """Software for short oligonucleotide alignment.""" + + homepage = "http://soap.genomics.org.cn/soapaligner.html" + url = "http://soap.genomics.org.cn/down/soap2.21release.tar.gz" + + version('2.21', '563b8b7235463b68413f9e841aa40779') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.share.man) + install('soap', prefix.bin) + install('2bwt-builder', prefix.bin) + install('soap.1', prefix.share.man) + install('soap.man', prefix.share.man) From 58cdd46ebdd065950b3f76127b30131b19686138 Mon Sep 17 00:00:00 2001 From: Jon Rood Date: Wed, 9 Aug 2017 18:50:28 -0500 Subject: [PATCH 1450/2394] Adding lower bound to pnetcdf conflict in Trilinos (#5039) * Adding lower bound to pnetcdf conflict in Trilinos to allow for use of develop and master branch. * Using even lower bound for pnetcdf conflict in Trilinos. --- var/spack/repos/builtin/packages/trilinos/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index f8181f77f98..a0d0ccfa3ca 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -173,7 +173,7 @@ class Trilinos(CMakePackage): # deprecated SuperLUDist v3.3 together with an Amesos patch is working. conflicts('+superlu-dist', when='@11.4.1:11.14.3') # PnetCDF was only added after v12.10.1 - conflicts('+pnetcdf', when='@:12.10.1') + conflicts('+pnetcdf', when='@0:12.10.1') # ###################### Dependencies ########################## From 5bb86ce9643fdf86c76a1d03499113372ce72e3b Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 9 Aug 2017 21:39:06 -0500 Subject: [PATCH 1451/2394] soapindel: new package (#5048) * soapindel: new package * fixed versioning --- .../builtin/packages/soapindel/package.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 var/spack/repos/builtin/packages/soapindel/package.py diff --git a/var/spack/repos/builtin/packages/soapindel/package.py b/var/spack/repos/builtin/packages/soapindel/package.py new file mode 100644 index 00000000000..6d22660786c --- /dev/null +++ b/var/spack/repos/builtin/packages/soapindel/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Soapindel(MakefilePackage): + """SOAPindel is focusing on calling indels from the next-generation + paired-end sequencing data.""" + + homepage = "http://soap.genomics.org.cn/soapindel.html" + + version('2.1.7.17', '317ef494173969cdc6a8244dd87d06bd', + url='http://soap.genomics.org.cn/down/SOAPindel_20130918_2.1.7.17.zip') + + depends_on('perl', type=('build', 'run')) + + build_directory = 'indel_detection.release' + + def install(self, spec, prefix): + with working_dir('indel_detection.release'): + install_tree('tools', prefix.tools) + mkdirp(prefix.lib) + install('affine_align.pm', prefix.lib) + install('indel_lib.pm', prefix.lib) + mkdirp(prefix.bin) + install('assemble_align', prefix.bin) + install('cluster_reads', prefix.bin) + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PERL5LIB', self.prefix.lib) + run_env.prepend_path('PATH', self.prefix.tools) From c6cd447a8a7fb6b0a143f2ef9503a4edfd770d44 Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Wed, 9 Aug 2017 20:17:34 -0700 Subject: [PATCH 1452/2394] Add version 2.19.1.403 to bcl2fastq2 package (#5047) * Update bcl2fastq2 with info for 2.19.1.403 Heads up, the download location changed (domain name AND protocol). * Flake8 fix What's one space between friends? --- .../repos/builtin/packages/bcl2fastq2/package.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/package.py b/var/spack/repos/builtin/packages/bcl2fastq2/package.py index 7af1815757f..64060c2b9b7 100644 --- a/var/spack/repos/builtin/packages/bcl2fastq2/package.py +++ b/var/spack/repos/builtin/packages/bcl2fastq2/package.py @@ -37,8 +37,8 @@ class Bcl2fastq2(Package): files.""" homepage = "https://support.illumina.com/downloads/bcl2fastq-conversion-software-v2-18.html" - url = "https://support.illumina.com/content/dam/illumina-support/documents/downloads/software/bcl2fastq/bcl2fastq2-v2-18-0-12-tar.zip" + version('2.19.1.403', 'baba7a02767fd868e87cb36781d2be26') version('2.18.0.12', 'fbe06492117f65609c41be0c27e3215c') # 2.17.1.14 is no longer distributed. If you have a copy of the # source tarball, you can drop it into a local mirror w/ the name @@ -61,9 +61,16 @@ class Bcl2fastq2(Package): root_cmakelists_dir = 'src' + # v2.17.1.14 and v2.18.0.12 were available via HTTP. + # v2.19.1.403 is only available via ftp. + # who knows what the future will hold. def url_for_version(self, version): - url = "https://support.illumina.com/content/dam/illumina-support/documents/downloads/software/bcl2fastq/bcl2fastq2-v{0}-tar.zip" - return url.format(version.dashed) + if version.string == '2.19.1.403': + return "ftp://webdata2:webdata2@ussd-ftp.illumina.com/downloads/software/bcl2fastq/bcl2fastq2-v2.19.1-tar.zip" + else: + url = "https://support.illumina.com/content/dam/illumina-support/documents/downloads/software/bcl2fastq/bcl2fastq2-v{0}-tar.zip" + # - required to change the version from dots to dashes. + return url.format(version.dashed) # Illumina tucks the source inside a gzipped tarball inside a zip # file. We let the normal Spack expansion bit unzip the zip file, From 887e4724c2f200caee11be762c5b2216c4dedefb Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 10 Aug 2017 18:42:02 +0200 Subject: [PATCH 1453/2394] go: Fix cgo (#5052) --- var/spack/repos/builtin/packages/go/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index ffbc123d896..58ee08c6c5e 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -106,6 +106,10 @@ def install(self, spec, prefix): def setup_environment(self, spack_env, run_env): spack_env.set('GOROOT_FINAL', self.spec.prefix) + # We need to set CC/CXX_FOR_TARGET, otherwise cgo will use the + # internal Spack wrappers and fail. + spack_env.set('CC_FOR_TARGET', self.compiler.cc) + spack_env.set('CXX_FOR_TARGET', self.compiler.cxx) def setup_dependent_package(self, module, dependent_spec): """Called before go modules' install() methods. From e99834df6abb0e5f256db9a84b6d6e4ba5d5bb18 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 10 Aug 2017 17:51:46 -0500 Subject: [PATCH 1454/2394] fastphase: new package (#5059) --- .../builtin/packages/fastphase/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/fastphase/package.py diff --git a/var/spack/repos/builtin/packages/fastphase/package.py b/var/spack/repos/builtin/packages/fastphase/package.py new file mode 100644 index 00000000000..69ba89022c7 --- /dev/null +++ b/var/spack/repos/builtin/packages/fastphase/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Fastphase(Package): + """Software for haplotype reconstruction, and estimating missing genotypes + from population data.""" + + homepage = "http://stephenslab.uchicago.edu/software.html" + url = "http://scheet.org/code/Linuxfp.tar.gz" + + version('2016-03-30', 'b48731eed9b8d0a5a321f970c5c20d8c') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('fastPHASE', prefix.bin) From ee66c3a7aadce8cd722fcdf822833a3e5c834562 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 10 Aug 2017 17:54:29 -0500 Subject: [PATCH 1455/2394] kallisto: new package (#5063) --- .../builtin/packages/kallisto/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/kallisto/package.py diff --git a/var/spack/repos/builtin/packages/kallisto/package.py b/var/spack/repos/builtin/packages/kallisto/package.py new file mode 100644 index 00000000000..c0f70aa1c05 --- /dev/null +++ b/var/spack/repos/builtin/packages/kallisto/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Kallisto(CMakePackage): + """kallisto is a program for quantifying abundances of transcripts from + RNA-Seq data.""" + + homepage = "http://pachterlab.github.io/kallisto" + url = "https://github.com/pachterlab/kallisto/archive/v0.43.1.tar.gz" + + version('0.43.1', '54fc9b70ca44e4633f02c962cbc59737') + + depends_on('zlib') + depends_on('hdf5') + depends_on('mpich') From 81a1d7b72b8eac186bae9efd9ce3df9c851af7cb Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 10 Aug 2017 17:56:20 -0500 Subject: [PATCH 1456/2394] gblocks: new package (#5061) --- .../repos/builtin/packages/gblocks/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gblocks/package.py diff --git a/var/spack/repos/builtin/packages/gblocks/package.py b/var/spack/repos/builtin/packages/gblocks/package.py new file mode 100644 index 00000000000..a03fc815094 --- /dev/null +++ b/var/spack/repos/builtin/packages/gblocks/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Gblocks(Package): + """Gblocks is a computer program written in ANSI C language that eliminates + poorly aligned positions and divergent regions of an alignment of DNA or + protein sequences""" + + homepage = "http://molevol.cmima.csic.es/castresana/Gblocks.html" + url = "http://molevol.cmima.csic.es/castresana/Gblocks/Gblocks_Linux64_0.91b.tar.Z" + + version('0.91b', 'c2c752ae4cbfda0b8bf09e6662585252') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('Gblocks', prefix.bin) From df3bc3906d5a509e5b338a51d7fd362521845f4b Mon Sep 17 00:00:00 2001 From: Jim Galarowicz Date: Thu, 10 Aug 2017 16:08:32 -0700 Subject: [PATCH 1457/2394] Update Krell products: Add new OpenSpeedShop gui package based on qt4/qt5 gui toolkit. (#5056) * Update the krell institute products to use the latest features of spack for building on cluster platforms. * Address travis error messages and resubmit the pull request. * Update the contents of openspeedshop package.py so it passes the flake8 tests. * Fix flake8 error-whitespack issue in mrnet package.py file. * Add updates based on spack reviewer feedback. * More fixes based on comments from reviewers. Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH. * More review related changes. Update MPIOption.append lines and take out xercesc references. * Create a base options function for common openspeedshop base cmake options to reduce redundencies. * Add libxml2+python depends on to get around issues with the libxml2 package file. * Using boost over 1.60.0 causes compile errors. This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build. * Fix bad syntax in specifying the boost version range. * Update the version numbers for the krell institute components and tools: cbtf and openspeedshop. * Do not build glib for qt3, it is not needed and causes build problems at this time anyway. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH. * A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set. * Trim comments to fit more concisely. * Fix tabs versus spaces and swap if and else clause check from a negative to a positive check. * Add new OpenSpeedShop gui package based on qt4/qt5 gui toolkit. * Fix flake8 errors. * Fix flake8 errors. --- .../packages/cbtf-argonavis-gui/package.py | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py new file mode 100644 index 00000000000..83a44592eff --- /dev/null +++ b/var/spack/repos/builtin/packages/cbtf-argonavis-gui/package.py @@ -0,0 +1,97 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +########################################################################## +# Copyright (c) 2015-2017 Krell Institute. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place, Suite 330, Boston, MA 02111-1307 USA +########################################################################## + +from spack import * + + +class CbtfArgonavisGui(QMakePackage): + """CBTF Argo Navis GUI project contains the GUI that views OpenSpeedShop + performance information by loading in the Sqlite database files. + """ + homepage = "http://sourceforge.net/p/cbtf/wiki/Home/" + + version('0.8.1', branch='master', + git='https://github.com/OpenSpeedShop/cbtf-argonavis-gui.git') + + depends_on("cmake@3.0.2", type='build') + depends_on("openspeedshop+cuda gui='qt4'") + depends_on('qt@4.8.6:') + depends_on("boost@1.50.0:1.59.0") + depends_on("cbtf") + depends_on("cbtf-krell") + depends_on("cbtf-argonavis") + depends_on("cuda") + depends_on("mrnet@5.0.1:+lwthreads") + depends_on("xerces-c@3.1.1:") + depends_on("graphviz") + depends_on("qtgraph") + + parallel = False + + def setup_environment(self, spack_env, run_env): + """Set up the compile and runtime environments for a package.""" + spack_env.set('BOOSTROOT', self.spec['boost'].prefix) + spack_env.set('CBTF_ROOT', self.spec['cbtf'].prefix) + spack_env.set('CBTF_KRELL_ROOT', self.spec['cbtf-krell'].prefix) + spack_env.set('CBTF_ARGONAVIS_ROOT', + self.spec['cbtf-argonavis'].prefix) + spack_env.set('OSS_CBTF_ROOT', self.spec['openspeedshop'].prefix) + spack_env.set('GRAPHVIZ_ROOT', self.spec['graphviz'].prefix) + spack_env.set('QTGRAPHLIB_ROOT', self.spec['qtgraph'].prefix) + spack_env.set('KRELL_ROOT_MRNET', self.spec['mrnet'].prefix) + spack_env.set('KRELL_ROOT_XERCES', self.spec['xerces-c'].prefix) + spack_env.set('INSTALL_ROOT', self.spec.prefix) + + # The implementor of qtgraph has set up the library and include + # paths in a non-conventional way. We reflect that here. + run_env.prepend_path( + 'LD_LIBRARY_PATH', join_path( + self.spec['qtgraph'].prefix.lib64, + '{0}'.format(self.spec['qt'].version.up_to(3)))) + # The openspeedshop libraries are needed to actually load the + # performance information into the GUI. + run_env.prepend_path( + 'LD_LIBRARY_PATH', self.spec['openspeedshop'].prefix.lib64) + + def qmake_args(self): + options = ['-o', 'Makefile', 'openss-gui.pro'] + return options From 518993431d9c557bad52795ce1d0be0fa7c1219e Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 10 Aug 2017 18:09:40 -0500 Subject: [PATCH 1458/2394] mothur: new package (#5055) * mothur: new package * fixing mpi things --- .../repos/builtin/packages/mothur/package.py | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mothur/package.py diff --git a/var/spack/repos/builtin/packages/mothur/package.py b/var/spack/repos/builtin/packages/mothur/package.py new file mode 100644 index 00000000000..0caf0bc1f95 --- /dev/null +++ b/var/spack/repos/builtin/packages/mothur/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mothur(MakefilePackage): + """This project seeks to develop a single piece of open-source, expandable + software to fill the bioinformatics needs of the microbial ecology + community.""" + + homepage = "https://github.com/mothur/mothur" + url = "https://github.com/mothur/mothur/archive/v1.39.5.tar.gz" + + version('1.39.5', '1f826ea4420e6822fc0db002c5940b92') + + variant('mpi', default=True, description='Enable MPI parallel support') + + depends_on('mpi', when='+mpi') + depends_on('boost') + depends_on('readline') + + def edit(self, spec, prefix): + makefile = FileFilter('Makefile') + makefile.filter('BOOST_LIBRARY_DIR=\"\\\"Enter_your_boost_library_path' + '_here\\\"\"', 'BOOST_LIBRARY_DIR=%s' % + self.spec['boost'].prefix.lib) + makefile.filter('BOOST_INCLUDE_DIR=\"\\\"Enter_your_boost_include_path' + '_here\\\"\"', 'BOOST_INCLUDE_DIR=%s' % + self.spec['boost'].prefix.include) + makefile.filter('MOTHUR_FILES=\"\\\"Enter_your_default_path_' + 'here\\\"\"', 'MOTHUR_FILES=%s' % prefix) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('mothur', prefix.bin) + install('uchime', prefix.bin) + install_tree('source', prefix.include) From 967370aa0b5a673403aca53cd12837c12b693e1c Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 10 Aug 2017 20:03:52 -0500 Subject: [PATCH 1459/2394] impute2: new package (#5062) --- .../repos/builtin/packages/impute2/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/impute2/package.py diff --git a/var/spack/repos/builtin/packages/impute2/package.py b/var/spack/repos/builtin/packages/impute2/package.py new file mode 100644 index 00000000000..b4b0cb20d2c --- /dev/null +++ b/var/spack/repos/builtin/packages/impute2/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Impute2(Package): + """IMPUTE2 is a genotype imputation and haplotype phasing program based on + ideas from Howie et al. 2009.""" + + homepage = "https://mathgen.stats.ox.ac.uk/impute/impute_v2.html#home" + url = "https://mathgen.stats.ox.ac.uk/impute/impute_v2.3.2_x86_64_dynamic.tgz" + + version('2.3.2', '0e1bafb8f63eb5cf9ae02ab761af58aa') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('impute2', prefix.bin) From 637f72a8fed04ce92a7fe983496a39eed3e6c17a Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 10 Aug 2017 20:04:10 -0500 Subject: [PATCH 1460/2394] fimpute: new package (#5060) --- .../repos/builtin/packages/fimpute/package.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 var/spack/repos/builtin/packages/fimpute/package.py diff --git a/var/spack/repos/builtin/packages/fimpute/package.py b/var/spack/repos/builtin/packages/fimpute/package.py new file mode 100644 index 00000000000..bc184199237 --- /dev/null +++ b/var/spack/repos/builtin/packages/fimpute/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Fimpute(Package): + """FImpute uses an overlapping sliding window approach to efficiently + exploit relationships or haplotype similarities between target and + reference individuals.""" + + homepage = "http://www.aps.uoguelph.ca/~msargol/fimpute/" + url = "http://www.aps.uoguelph.ca/~msargol/fimpute/FImpute_Linux.zip" + + version('2014-01', 'df934a25c76dabef7d7afcb5b8058d98') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('FImpute', prefix.bin) From 2f29e9c18e0450185d6330af54593c0d7b52fb27 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 10 Aug 2017 20:04:37 -0500 Subject: [PATCH 1461/2394] braker & genemark-et: new packages (#5058) * braker & genemark-et: new packages * fixing install --- .../builtin/packages/augustus/package.py | 1 + .../repos/builtin/packages/braker/package.py | 52 ++++++++++++++++++ .../builtin/packages/genemark-et/package.py | 53 +++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 var/spack/repos/builtin/packages/braker/package.py create mode 100644 var/spack/repos/builtin/packages/genemark-et/package.py diff --git a/var/spack/repos/builtin/packages/augustus/package.py b/var/spack/repos/builtin/packages/augustus/package.py index ccaa2f1e701..8a90de639e8 100644 --- a/var/spack/repos/builtin/packages/augustus/package.py +++ b/var/spack/repos/builtin/packages/augustus/package.py @@ -32,6 +32,7 @@ class Augustus(MakefilePackage): homepage = "http://bioinf.uni-greifswald.de/augustus/" url = "http://bioinf.uni-greifswald.de/augustus/binaries/augustus-3.2.3.tar.gz" + version('3.3', '9ebe494df78ebf6a43091cfc8551050c') version('3.2.3', 'b8c47ea8d0c45aa7bb9a82626c8ff830') depends_on('bamtools') diff --git a/var/spack/repos/builtin/packages/braker/package.py b/var/spack/repos/builtin/packages/braker/package.py new file mode 100644 index 00000000000..cfc1f16025b --- /dev/null +++ b/var/spack/repos/builtin/packages/braker/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Braker(Package): + """BRAKER is a pipeline for unsupervised RNA-Seq-based genome annotation + that combines the advantages of GeneMark-ET and AUGUSTUS""" + + homepage = "http://exon.gatech.edu/braker1.html" + url = "http://bioinf.uni-greifswald.de/augustus/binaries/BRAKER1_v1.11.tar.gz" + + version('1.11', '297efe4cabdd239b710ac2c45d81f6a5') + + depends_on('perl', type=('build', 'run')) + depends_on('augustus') + depends_on('genemark-et') + depends_on('bamtools') + depends_on('samtools') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.lib) + install('braker.pl', prefix.bin) + install('filterGenemark.pl', prefix.bin) + install('filterIntronsFindStrand.pl', prefix.bin) + install('helpMod.pm', prefix.lib) + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PERL5LIB', prefix.lib) diff --git a/var/spack/repos/builtin/packages/genemark-et/package.py b/var/spack/repos/builtin/packages/genemark-et/package.py new file mode 100644 index 00000000000..352f728290c --- /dev/null +++ b/var/spack/repos/builtin/packages/genemark-et/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os +import glob + + +class GenemarkEt(Package): + """Gene Prediction in Bacteria, archaea, Metagenomes and + Metatranscriptomes.""" + + homepage = "http://topaz.gatech.edu/GeneMark" + + version('4.33', '4ab7d7d3277a685dfb49e11bc5b493c3') + + depends_on('perl', type=('build', 'run')) + + def url_for_version(self, version): + return "file://{0}/gm_et_linux_64.tar.gz".format(os.getcwd()) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + with working_dir('gmes_petap'): + install_tree('lib', prefix.lib) + files = glob.iglob('*') + for file in files: + if os.path.isfile(file): + install(file, prefix.bin) + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PERL5LIB', prefix.lib) From e4c22efc8547a42e8c72faf7154effef765c1b81 Mon Sep 17 00:00:00 2001 From: Akhil Reddy Patlolla Date: Thu, 10 Aug 2017 20:08:56 -0500 Subject: [PATCH 1462/2394] Variants Serial MPI openmp (#4897) * Variants Serial MPI openmp * Fixed Flake8 Issue and remove Patch File * Fixed issues with openmp Flag * Edited Required Changes * Fixed issues with flake8 and Added Conditional GCC Flags * Fixed Flake 8 Issue * Fixed flag's issue with non GCC Compiler * Fixed condition and spacing issues --- .../repos/builtin/packages/lulesh/package.py | 68 +++++++++++++------ .../packages/lulesh/remove_defaults.patch | 60 ---------------- 2 files changed, 48 insertions(+), 80 deletions(-) delete mode 100644 var/spack/repos/builtin/packages/lulesh/remove_defaults.patch diff --git a/var/spack/repos/builtin/packages/lulesh/package.py b/var/spack/repos/builtin/packages/lulesh/package.py index 94f3ad5b144..2dd4a4edd23 100644 --- a/var/spack/repos/builtin/packages/lulesh/package.py +++ b/var/spack/repos/builtin/packages/lulesh/package.py @@ -23,34 +23,62 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os -class Lulesh(Package): - """Livermore Unstructured Lagrangian Explicit Shock Hydrodynamics (LULESH) +class Lulesh(MakefilePackage): + """LULESH is a highly simplified application, hard-coded to only + style typical in scientific C or C++ based applications. Hard + code to only solve a Sedov blast problem with analytic answer """ - + tags = ['proxy-app'] homepage = "https://codesign.llnl.gov/lulesh.php" url = "https://codesign.llnl.gov/lulesh/lulesh2.0.3.tgz" - tags = ['proxy-app'] - version("2.0.3", "336644a8750f71c7c6b9d2960976e7aa") + version('2.0.3', '336644a8750f71c7c6b9d2960976e7aa') - patch("remove_defaults.patch") + variant('mpi', default=True, description='Build with MPI support') + variant('openmp', default=True, description='Build with OpenMP support') + variant('visual', default=False, + description='Build with Visualization support (Silo, hdf5)') - variant('mpip', default=False) + depends_on('mpi', when='+mpi') + depends_on('silo', when='+visual') + depends_on('hdf5', when='+visual') - depends_on("mpi", type="build") - depends_on("mpip", when="+mpip") + @property + def build_targets(self): + targets = [] + cxxflag = ' -g -O3 -I. ' + ldflags = ' -g -O3 ' + if '~mpi' in self.spec: + targets.append('CXX = {0} {1}'.format(spack_cxx, ' -DUSE_MPI=0 ')) + else: + targets.append( + 'CXX = {0} {1}'.format(self.spec['mpi'].mpicxx, + ' -DUSE_MPI=1')) + targets.append( + 'MPI_INC = {0}'.format(self.spec['mpi'].prefix.include)) + targets.append('MPI_LIB = {0}'.format(self.spec['mpi'].prefix.lib)) + if '+visual' in self.spec: + targets.append( + 'SILO_INCDIR = {0}'.format(self.spec['silo'].prefix.include)) + targets.append( + 'SILO_LIBDIR = {0}'.format(self.spec['silo'].prefix.lib)) + cxxflag = ' -g -DVIZ_MESH -I${SILO_INCDIR} ' + ldflags = ' -g -L${SILO_LIBDIR} -Wl,-rpath -Wl, ' + ldflags += '${SILO_LIBDIR} -lsiloh5 -lhdf5 ' + + if '+openmp' in self.spec: + cxxflag += self.compiler.openmp_flag + ldflags += self.compiler.openmp_flag + + targets.append('CXXFLAGS = {0}'.format(cxxflag)) + targets.append('LDFLAGS = {0}'.format(ldflags)) + return targets def install(self, spec, prefix): - if '+mpip' in spec: - os.environ["LDFLAGS"] = " -lmpiP -ldwarf -lelf" - - if os.uname()[4] == "x86_64": - os.environ["LDFLAGS"] += " -lunwind" - - os.environ["CXX"] = spec['mpi'].mpicxx + " -DUSE_MPI=1" - os.environ["PREFIX"] = prefix - make() - make("install") + mkdirp(prefix.bin) + install('lulesh{0}'.format(self.version.up_to(2)), prefix.bin) + mkdirp(prefix.doc) + install('README', prefix.doc) + install('TODO', prefix.doc) \ No newline at end of file diff --git a/var/spack/repos/builtin/packages/lulesh/remove_defaults.patch b/var/spack/repos/builtin/packages/lulesh/remove_defaults.patch deleted file mode 100644 index 36cce25ba1c..00000000000 --- a/var/spack/repos/builtin/packages/lulesh/remove_defaults.patch +++ /dev/null @@ -1,60 +0,0 @@ ---- a/Makefile -+++ b/Makefile -@@ -1,17 +1,9 @@ - #default build suggestion of MPI + OPENMP with gcc on Livermore machines you might have to change the compiler name - --SHELL = /bin/sh - .SUFFIXES: .cc .o - - LULESH_EXEC = lulesh2.0 - --MPI_INC = /opt/local/include/openmpi --MPI_LIB = /opt/local/lib -- --SERCXX = g++ -DUSE_MPI=0 --MPICXX = mpig++ -DUSE_MPI=1 --CXX = $(MPICXX) -- - SOURCES2.0 = \ - lulesh.cc \ - lulesh-comm.cc \ -@@ -20,28 +12,6 @@ - lulesh-init.cc - OBJECTS2.0 = $(SOURCES2.0:.cc=.o) - --#Default build suggestions with OpenMP for g++ --CXXFLAGS = -g -O3 -fopenmp -I. -Wall --LDFLAGS = -g -O3 -fopenmp -- --#Below are reasonable default flags for a serial build --#CXXFLAGS = -g -O3 -I. -Wall --#LDFLAGS = -g -O3 -- --#common places you might find silo on the Livermore machines. --#SILO_INCDIR = /opt/local/include --#SILO_LIBDIR = /opt/local/lib --#SILO_INCDIR = ./silo/4.9/1.8.10.1/include --#SILO_LIBDIR = ./silo/4.9/1.8.10.1/lib -- --#If you do not have silo and visit you can get them at: --#silo: https://wci.llnl.gov/codes/silo/downloads.html --#visit: https://wci.llnl.gov/codes/visit/download.html -- --#below is and example of how to make with silo, hdf5 to get vizulization by default all this is turned off. All paths are Livermore specific. --#CXXFLAGS = -g -DVIZ_MESH -I${SILO_INCDIR} -Wall -Wno-pragmas --#LDFLAGS = -g -L${SILO_LIBDIR} -Wl,-rpath -Wl,${SILO_LIBDIR} -lsiloh5 -lhdf5 -- - .cc.o: lulesh.h - @echo "Building $<" - $(CXX) -c $(CXXFLAGS) -o $@ $< -@@ -56,6 +26,7 @@ - /bin/rm -f *.o *~ $(OBJECTS) $(LULESH_EXEC) - /bin/rm -rf *.dSYM - --tar: clean -- cd .. ; tar cvf lulesh-2.0.tar LULESH-2.0 ; mv lulesh-2.0.tar LULESH-2.0 -- -+install: lulesh2.0 -+ @echo "Installing" -+ mkdir -p $(PREFIX)/bin -+ install --mode=755 lulesh2.0 $(PREFIX)/bin/ From e3a46310379a5afbb31bf90260f2d243b67799e7 Mon Sep 17 00:00:00 2001 From: Akhil Reddy Patlolla Date: Thu, 10 Aug 2017 20:09:59 -0500 Subject: [PATCH 1463/2394] Add AMG2013 package (#4836) * Updated Changes * Updated AMG with required MPI * Updated AMG with Version ' changes' * Fixed Issues with flag's and variant checks * Updated with MPI Alone and Changes - NO Serial Variant * Updated with MPI Alone and Changes - NO Serial Variant * Fixed Flake 8 line length error * Updated Spack Issues --- .../repos/builtin/packages/amg2013/package.py | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 var/spack/repos/builtin/packages/amg2013/package.py diff --git a/var/spack/repos/builtin/packages/amg2013/package.py b/var/spack/repos/builtin/packages/amg2013/package.py new file mode 100644 index 00000000000..5e1ef46df8d --- /dev/null +++ b/var/spack/repos/builtin/packages/amg2013/package.py @@ -0,0 +1,73 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 0s2111-1307 USA +############################################################################## +from spack import * + + +class Amg2013(MakefilePackage): + """AMG2013 is a parallel algebraic multigrid solver for linear + systems arising from problems on unstructured grids. + It has been derived directly from the BoomerAMG solver in the + hypre library, a large linear solver library that is being developed + in the Center for Applied Scientific Computing (CASC) at LLNL. + """ + tags = ['proxy-app'] + homepage = "https://codesign.llnl.gov/amg2013.php" + url = "https://codesign.llnl.gov/amg2013/amg2013.tgz" + + version('master', '9d918d2a69528b83e6e0aba6ba601fef', + url='https://codesign.llnl.gov/amg2013/amg2013.tgz') + + variant('openmp', default=True, description='Build with OpenMP support') + variant('assumepartition', default=False, description='Assumed partition (for thousands of processors)') + + depends_on('mpi') + + @property + def build_targets(self): + targets = [] + + include_cflags = ' -DTIMER_USE_MPI ' + include_lflags = ' -lm ' + + if '+assumepartition' in self.spec: + include_cflags += ' -DHYPRE_NO_GLOBAL_PARTITION ' + + if '+openmp' in self.spec: + include_cflags += ' -DHYPRE_USING_OPENMP ' + include_cflags += self.compiler.openmp_flag + include_lflags += ' ' + self.compiler.openmp_flag + + targets.append('INCLUDE_CFLAGS={0}'.format(' '.join(include_cflags))) + targets.append('INCLUDE_LFLAGS={0}'.format(' '.join(include_lflags))) + targets.append('CC={0}'.format(self.spec['mpi'].mpicc)) + + return targets + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('test/amg2013', prefix.bin) + install_tree('docs', prefix.doc) + install('COPYRIGHT', prefix.doc) + install('COPYING.LESSER', prefix.doc) \ No newline at end of file From 038efc623df52dc4e9fc581fcddf81bb8d7b2f9a Mon Sep 17 00:00:00 2001 From: EmreAtes Date: Thu, 10 Aug 2017 18:12:08 -0700 Subject: [PATCH 1464/2394] New package: qbox (#4711) * New package: qbox * API changes * Use install instead of shutil for comd * Use any BLAS library * Fix typo * Python2 fix * python2 + fix backslashes * Modified to respond to ld_flags correctly * Modified to use ld_flags * Add ld_flags support --- .../repos/builtin/packages/comd/package.py | 5 +- .../repos/builtin/packages/fftw/package.py | 5 + .../repos/builtin/packages/qbox/package.py | 93 +++++++++++++++++++ 3 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin/packages/qbox/package.py diff --git a/var/spack/repos/builtin/packages/comd/package.py b/var/spack/repos/builtin/packages/comd/package.py index e033e724b4f..4a4c1133c62 100644 --- a/var/spack/repos/builtin/packages/comd/package.py +++ b/var/spack/repos/builtin/packages/comd/package.py @@ -23,7 +23,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -import shutil from spack import * @@ -50,7 +49,7 @@ def edit(self, spec, prefix): with working_dir('src-mpi'): filter_file(r'^CC\s*=.*', 'CC = %s' % self.spec['mpi'].mpicc, 'Makefile.vanilla') - shutil.move('Makefile.vanilla', 'Makefile') + install('Makefile.vanilla', 'Makefile') def install(self, spec, prefix): - shutil.move('bin', prefix) + install_tree('bin', prefix.bin) diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 82f49e7ca2f..19e818028a8 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -70,6 +70,11 @@ class Fftw(AutotoolsPackage): depends_on('autoconf', type='build', when='+pfft_patches') depends_on('libtool', type='build', when='+pfft_patches') + @property + def libs(self): + result = find_libraries(['libfftw3'], root=self.prefix, recurse=True) + return result + def autoreconf(self, spec, prefix): if '+pfft_patches' in spec: autoreconf = which('autoreconf') diff --git a/var/spack/repos/builtin/packages/qbox/package.py b/var/spack/repos/builtin/packages/qbox/package.py new file mode 100644 index 00000000000..6ffb27e197f --- /dev/null +++ b/var/spack/repos/builtin/packages/qbox/package.py @@ -0,0 +1,93 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 shutil +from spack import * + + +class Qbox(MakefilePackage): + """Qbox is a C++/MPI scalable parallel implementation of first-principles + molecular dynamics (FPMD) based on the plane-wave, pseudopotential + formalism. Qbox is designed for operation on large parallel computers.""" + + homepage = "http://qboxcode.org/" + url = "http://qboxcode.org/download/qbox-1.63.7.tgz" + + version('1.63.7', '6b0cf5656f816a1a59e22b268387af33') + version('1.63.5', 'da3161ab6a455793f2133dd03c04077c') + version('1.63.4', '8596f32c8fb7e7baa96571c655aaee07') + version('1.63.2', '55e8f13f37c8e1f43ca831791e3af1da') + version('1.63.0', '1436c884c553ab026b7f787307e5e6ed') + version('1.62.3', 'f07e038ab92b85956794e91a40346dbf') + version('1.60.9', '53b0df612e56bb65e8220d9d9dc8d395') + version('1.60.4', '060846c9fa03b1f3d7d5ce24a9491de2') + version('1.60.0', '3856cdc38a27dc17705844c4b9241a21') + version('1.58.0', 'ec0e6b79fa0ed06742212b1142e36b6a') + version('1.56.2', 'df7a4217d059a5d351d92e480ed14112') + version('1.54.4', '8f1a23af7d871317de93810b664ad3aa') + version('1.54.2', 'aeefee061255dbb36ca7e49378f63ad5') + version('1.52.3', '1862f2b2056cdf49ec4f746d45a7f1a6') + version('1.52.2', 'e406deb4c46176f1c15c226868bf61e2') + version('1.50.4', 'b06ff877257884e4fac321fb5a486266') + version('1.50.2', '171660b1bb5e57637f019fef055fb764') + version('1.50.1', '1da528b39da134f86f134432e8fada79') + version('1.47.0', '86f402651d440e05adc94168d6105da7') + version('1.45.3', '73b99a73dcbb1b5be9f66f3284750205') + version('1.45.1', '59e0c2583769b7586981c0d6ffa1b267') + version('1.45.0', '2c5bfbadfffd330c8c2fe294a10a08e4') + version('1.44.0', 'c46a2f0f68fe9229aa77779da188cea9') + + depends_on('mpi') + depends_on('blas') + depends_on('scalapack') + depends_on('fftw') + depends_on('xerces-c') + + build_directory = 'src' + + def edit(self, spec, prefix): + with open('src/spack.mk', 'w') as mkfile: + mkfile.write('CXX = {0}\n'.format(spec['mpi'].mpicxx)) + mkfile.write('LD = $(CXX)\n') + qbox_libs = spec['fftw'].libs + spec['xerces-c'].libs + \ + spec['scalapack'].libs + spec['blas'].libs + mkfile.write('LDFLAGS = {0}\n'.format(qbox_libs.ld_flags)) + mkfile.write('DFLAGS = {0}\n'.format(' -D'.join(( + '', + '_LARGEFILE_SOURCE', 'USE_MPI', 'USE_XERCES', + 'XERCESC_3', 'MPICH_IGNORE_CXX_SEEK', 'SCALAPACK', + 'USE_FFTW3', 'FFTWMEASURE', 'FFTW3_2D', 'ADD_', + )))) + mkfile.write('CXXFLAGS = {0}\n'.format(' '.join(( + '-g', '-O3', '$(DFLAGS)', + )))) + filter_file('$(TARGET)', 'spack', 'src/Makefile', string=True) + + def install(self, spec, prefix): + mkdir(prefix.src) + install('src/qb', prefix.src) + shutil.move('test', prefix) + shutil.move('xml', prefix) + shutil.move('util', prefix) From 71c5b19464d1c0ad615af9509e8bb624dada7ec2 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Fri, 11 Aug 2017 06:29:24 -0700 Subject: [PATCH 1465/2394] Elemental fix (#5067) * Added a package for the MDAnalysis toolkit. * Added additional packages that Elemental depends on. * Changed LBANN to not ask for the scalapack variant in Elemental. * Removed variant control on scalapack --- var/spack/repos/builtin/packages/elemental/package.py | 3 +++ var/spack/repos/builtin/packages/lbann/package.py | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index 50fb4f98295..87317bd9092 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -87,6 +87,9 @@ class Elemental(CMakePackage): depends_on('scalapack', when='+scalapack ~int64_blas') extends('python', when='+python') depends_on('python@:2.8', when='+python') + depends_on('gmp') + depends_on('mpc') + depends_on('mpfr') patch('elemental_cublas.patch', when='+cublas') diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index a93b9b5b66b..f717b02df01 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -44,8 +44,8 @@ class Lbann(CMakePackage): description='The build type to build', values=('Debug', 'Release')) - depends_on('elemental +openmp_blas +scalapack +shared +int64') - depends_on('elemental +openmp_blas +scalapack +shared +int64 build_type=Debug', + depends_on('elemental +openmp_blas +shared +int64') + depends_on('elemental +openmp_blas +shared +int64 build_type=Debug', when=('build_type=Debug')) depends_on('cuda', when='+gpu') depends_on('mpi') From 39cb589510e95fa44ca634b2cdac9a56a34b1809 Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Fri, 11 Aug 2017 06:39:48 -0700 Subject: [PATCH 1466/2394] More variants for MFEM (#4533) * fixes #967 * Version bump to 0.9.1 - Bugfixes for spack find - 0.9.1 can read specs from current develop. * Don't assume spack is in the path when building docs. * adding mfem variants; do not assume build defaults * adjusting format to clarify options * fixing some build issues * fixing mfem+sundials * removing mesquite variant...turns out it is obsolete * adding examples to mfem; fixing sundials darwin installs * adding some additional variants and setting some configure flags by fiat * switching most check_variants logic to conflicts() directives * adding comment about cmake config * fixing flake8 issues; thought I had already done that * moving func def into install method * switch yes_no to no_yes; fix miss-spelling of miniapps * switching make target all to lib * changing yes_no to function as requested; fix problem with same in sundials * fix missing import sys directive * adding master and develop versions to amrex --- .../repos/builtin/packages/amrex/package.py | 3 +- .../repos/builtin/packages/mfem/package.py | 260 +++++++++++------- .../builtin/packages/sundials/package.py | 71 ++--- 3 files changed, 204 insertions(+), 130 deletions(-) diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index a13200b3e05..772bbce3a51 100644 --- a/var/spack/repos/builtin/packages/amrex/package.py +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -33,8 +33,9 @@ class Amrex(CMakePackage): homepage = "https://ccse.lbl.gov/AMReX/index.html" url = "https://github.com/AMReX-Codes/amrex.git" - version('develop', git='https://github.com/AMReX-Codes/amrex.git', tag='master') version('17.06', git='https://github.com/AMReX-Codes/amrex.git', commit='836d3c7') + version('master', git='https://github.com/AMReX-Codes/amrex.git', tag='master') + version('develop', git='https://github.com/AMReX-Codes/amrex.git', tag='develop') variant('dims', default='3', diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index 2848d77887f..ffd3233a9f8 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import re class Mfem(Package): @@ -62,132 +63,194 @@ class Mfem(Package): '841ea5cf58de6fae4de0f553b0e01ebaab9cd9c67fa821e8a715666ecf18fc57', url='http://goo.gl/xrScXn', extension='.tar.gz') - variant('metis', default=False, description='Activate support for metis') - variant('hypre', default=False, description='Activate support for hypre') - variant('suite-sparse', default=False, - description='Activate support for SuiteSparse') - variant('mpi', default=True, description='Activate support for MPI') + variant('mpi', default=True, + description='Enable MPI parallelism') + variant('hypre', default=True, + description='Required for MPI parallelism') + variant('openmp', default=False, + description='Enable OpenMP parallelism') + variant('threadsafe', default=False, + description=('Enable thread safe features.' + ' Required for OpenMP.' + ' May cause minor performance issues.')) variant('superlu-dist', default=False, - description='Activate support for SuperLU_Dist') - variant('lapack', default=False, description='Activate support for LAPACK') - variant('debug', default=False, description='Build debug version') - variant('netcdf', default=False, description='Activate NetCDF support') + description='Enable MPI parallel, sparse direct solvers') + variant('suite-sparse', default=False, + description='Enable serial, sparse direct solvers') + variant('petsc', default=False, + description='Enable PETSc solvers, preconditioners, etc..') + variant('sundials', default=False, + description='Enable Sundials time integrators') + variant('mpfr', default=False, + description='Enable precise, 1D quadrature rules') + variant('lapack', default=False, + description='Use external blas/lapack routines') + variant('debug', default=False, + description='Build debug instead of optimized version') + variant('netcdf', default=False, + description='Enable Cubit/Genesis reader') + variant('gzstream', default=True, + description='Support zip\'d streams for I/O') + variant('examples', default=False, + description='Build and install examples') + variant('miniapps', default=False, + description='Build and install miniapps') + + conflicts('+mpi', when='~hypre') + conflicts('+suite-sparse', when='~lapack') + conflicts('+superlu-dist', when='@:3.1') + conflicts('+netcdf', when='@:3.1') depends_on('blas', when='+lapack') + depends_on('blas', when='+suite-sparse') depends_on('lapack', when='+lapack') + depends_on('lapack', when='+suite-sparse') depends_on('mpi', when='+mpi') - depends_on('metis', when='+mpi') - depends_on('hypre', when='+mpi') - - depends_on('hypre', when='+hypre') - - depends_on('metis@4:', when='+metis') - - depends_on('suite-sparse', when='+suite-sparse') - depends_on('blas', when='+suite-sparse') - depends_on('lapack', when='+suite-sparse') + depends_on('metis') + depends_on('parmetis', when='+superlu-dist') + depends_on('metis@5:', when='+superlu-dist') depends_on('metis@5:', when='+suite-sparse ^suite-sparse@4.5:') - depends_on('cmake', when='^metis@5:', type='build') + depends_on('hypre~internal-superlu', when='+mpi') + depends_on('hypre@develop~internal-superlu', when='+petsc +hypre') + depends_on('sundials@2.7:+hypre', when='+sundials') + depends_on('suite-sparse', when='+suite-sparse') depends_on('superlu-dist', when='@3.2: +superlu-dist') + depends_on('petsc@develop', when='+petsc') + depends_on('mpfr', when='+mpfr') + depends_on('cmake', when='^metis@5:', type='build') depends_on('netcdf', when='@3.2: +netcdf') depends_on('zlib', when='@3.2: +netcdf') depends_on('hdf5', when='@3.2: +netcdf') + depends_on('libunwind', when='+debug') + depends_on('zlib', when='+gzstream') patch('mfem_ppc_build.patch', when='@3.2:3.3 arch=ppc64le') def check_variants(self, spec): - if '+mpi' in spec and ('+hypre' not in spec or '+metis' not in spec): - raise InstallError('mfem+mpi must be built with +hypre ' + - 'and +metis!') - if '+suite-sparse' in spec and ('+metis' not in spec or - '+lapack' not in spec): - raise InstallError('mfem+suite-sparse must be built with ' + - '+metis and +lapack!') if 'metis@5:' in spec and '%clang' in spec and ( '^cmake %gcc' not in spec): raise InstallError('To work around CMake bug with clang, must ' + 'build mfem with mfem[+variants] %clang ' + '^cmake %gcc to force CMake to build with gcc') - if '@:3.1' in spec and '+superlu-dist' in spec: - raise InstallError('MFEM does not support SuperLU_DIST for ' + - 'versions 3.1 and earlier') - if '@:3.1' in spec and '+netcdf' in spec: - raise InstallError('MFEM does not support NetCDF for versions' + - '3.1 and earlier') return + # + # Note: Although MFEM does support CMake configuration, MFEM + # development team indicates that vanilla GNU Make is the + # preferred mode of configuration of MFEM and the mode most + # likely to be up to date in supporting *all* of MFEM's + # configuration options. So, don't use CMake + # def install(self, spec, prefix): self.check_variants(spec) - options = ['PREFIX=%s' % prefix] + def yes_no(varstr): + return 'YES' if varstr in self.spec else 'NO' + + metis5_str = 'NO' + if '+superlu-dist' in spec or \ + spec.satisfies('+suite-sparse ^suite-sparse@4.5:') or \ + spec['metis'].satisfies('@5:'): + metis5_str = 'YES' + + threadsafe_str = 'NO' + if '+openmp' in spec or '+threadsafe' in spec: + threadsafe_str = 'YES' + + options = [ + 'PREFIX=%s' % prefix, + 'MFEM_USE_MEMALLOC=YES', + 'MFEM_DEBUG=%s' % yes_no('+debug'), + 'MFEM_USE_LIBUNWIND=%s' % yes_no('+debug'), + 'MFEM_USE_GZSTREAM=%s' % yes_no('+gzstream'), + 'MFEM_USE_METIS_5=%s' % metis5_str, + 'MFEM_THREAD_SAFE=%s' % threadsafe_str, + 'MFEM_USE_MPI=%s' % yes_no('+mpi'), + 'MFEM_USE_LAPACK=%s' % yes_no('+lapack'), + 'MFEM_USE_SUPERLU=%s' % yes_no('+superlu-dist'), + 'MFEM_USE_SUITESPARSE=%s' % yes_no('+suite-sparse'), + 'MFEM_USE_SUNDIALS=%s' % yes_no('+sundials'), + 'MFEM_USE_PETSC=%s' % yes_no('+petsc'), + 'MFEM_USE_NETCDF=%s' % yes_no('+netcdf'), + 'MFEM_USE_MPFR=%s' % yes_no('+mpfr'), + 'MFEM_USE_OPENMP=%s' % yes_no('+openmp')] + + if '+hypre' in spec: + options += [ + 'HYPRE_DIR=%s' % spec['hypre'].prefix, + 'HYPRE_OPT=-I%s' % spec['hypre'].prefix.include, + 'HYPRE_LIB=-L%s' % spec['hypre'].prefix.lib + ' -lHYPRE'] if '+lapack' in spec: lapack_lib = (spec['lapack'].libs + spec['blas'].libs).ld_flags # NOQA: ignore=E501 - options.extend([ - 'MFEM_USE_LAPACK=YES', + options += [ 'LAPACK_OPT=-I%s' % spec['lapack'].prefix.include, - 'LAPACK_LIB=%s' % lapack_lib]) - - if '+hypre' in spec: - options.extend([ - 'HYPRE_DIR=%s' % spec['hypre'].prefix, - 'HYPRE_OPT=-I%s' % spec['hypre'].prefix.include, - 'HYPRE_LIB=-L%s' % spec['hypre'].prefix.lib + - ' -lHYPRE']) - - if 'parmetis' in spec: - metis_lib = '-L%s -lparmetis -lmetis' % spec['parmetis'].prefix.lib - metis_str = 'MFEM_USE_METIS_5=YES' - options.extend([metis_str, - 'METIS_DIR=%s' % spec['parmetis'].prefix, - 'METIS_OPT=-I%s' % spec['parmetis'].prefix.include, - 'METIS_LIB=%s' % metis_lib]) - elif 'metis' in spec: - metis_lib = '-L%s -lmetis' % spec['metis'].prefix.lib - if spec['metis'].satisfies('@5:'): - metis_str = 'MFEM_USE_METIS_5=YES' - else: - metis_str = 'MFEM_USE_METIS_5=NO' - options.extend([ - metis_str, - 'METIS_DIR=%s' % spec['metis'].prefix, - 'METIS_OPT=-I%s' % spec['metis'].prefix.include, - 'METIS_LIB=%s' % metis_lib]) - - if 'mpi' in spec: - options.extend(['MFEM_USE_MPI=YES']) + 'LAPACK_LIB=%s' % lapack_lib] if '+superlu-dist' in spec: + metis_lib = '-L%s -lparmetis -lmetis' % spec['parmetis'].prefix.lib + options += [ + 'METIS_DIR=%s' % spec['parmetis'].prefix, + 'METIS_OPT=-I%s' % spec['parmetis'].prefix.include, + 'METIS_LIB=%s' % metis_lib] superlu_lib = '-L%s' % spec['superlu-dist'].prefix.lib superlu_lib += ' -lsuperlu_dist' - sl_inc = 'SUPERLU_OPT=-I%s' % spec['superlu-dist'].prefix.include - options.extend(['MFEM_USE_SUPERLU=YES', - 'SUPERLU_DIR=%s' % spec['superlu-dist'].prefix, - sl_inc, - 'SUPERLU_LIB=%s' % superlu_lib]) + options += [ + 'SUPERLU_DIR=%s' % spec['superlu-dist'].prefix, + 'SUPERLU_OPT=-I%s' % spec['superlu-dist'].prefix.include, + 'SUPERLU_LIB=%s' % superlu_lib] + else: + metis_lib = '-L%s -lmetis' % spec['metis'].prefix.lib + options += [ + 'METIS_DIR=%s' % spec['metis'].prefix, + 'METIS_OPT=-I%s' % spec['metis'].prefix.include, + 'METIS_LIB=%s' % metis_lib] if '+suite-sparse' in spec: ssp = spec['suite-sparse'].prefix ss_lib = '-L%s' % ssp.lib - if '@3.2:' in spec: ss_lib += ' -lklu -lbtf' - ss_lib += (' -lumfpack -lcholmod -lcolamd' + ' -lamd -lcamd -lccolamd -lsuitesparseconfig') - no_rt = spec.satisfies('platform=darwin') if not no_rt: ss_lib += ' -lrt' ss_lib += (' ' + metis_lib + ' ' + lapack_lib) + options += [ + 'SUITESPARSE_DIR=%s' % ssp, + 'SUITESPARSE_OPT=-I%s' % ssp.include, + 'SUITESPARSE_LIB=%s' % ss_lib] - options.extend(['MFEM_USE_SUITESPARSE=YES', - 'SUITESPARSE_DIR=%s' % ssp, - 'SUITESPARSE_OPT=-I%s' % ssp.include, - 'SUITESPARSE_LIB=%s' % ss_lib]) + if '+sundials' in spec: + sundials_libs = ( + '-lsundials_arkode -lsundials_cvode' + ' -lsundials_nvecserial -lsundials_kinsol') + if '+mpi' in spec: + sundials_libs += ( + ' -lsundials_nvecparhyp -lsundials_nvecparallel') + options += [ + 'SUNDIALS_DIR=%s' % spec['sundials'].prefix, + 'SUNDIALS_OPT=-I%s' % spec['sundials'].prefix.include, + 'SUNDIALS_LIB=-L%s %s' % (spec['sundials'].prefix.lib, + sundials_libs)] + + if '+petsc' in spec: + f = open('%s/lib/pkgconfig/PETSc.pc' % spec['petsc'].prefix, 'r') + for line in f: + if re.search('^\s*Cflags: ', line): + petsc_opts = re.sub('^\s*Cflags: (.*)', '\\1', line) + elif re.search('^\s*Libs.*: ', line): + petsc_libs = re.sub('^\s*Libs.*: (.*)', '\\1', line) + f.close() + options += [ + 'PETSC_DIR=%s' % spec['petsc'].prefix, + 'PETSC_OPT=%s' % petsc_opts, + 'PETSC_LIB=-L%s -lpetsc %s' % + (spec['petsc'].prefix.lib, petsc_libs)] if '+netcdf' in spec: np = spec['netcdf'].prefix @@ -196,28 +259,31 @@ def install(self, spec, prefix): nlib = '-L%s -lnetcdf ' % np.lib nlib += '-L%s -lhdf5_hl -lhdf5 ' % h5p.lib nlib += '-L%s -lz' % zp.lib - options.extend(['MFEM_USE_NETCDF=YES', - 'NETCDF_DIR=%s' % np, - 'HDF5_DIR=%s' % h5p, - 'ZLIB_DIR=%s' % zp, - 'NETCDF_OPT=-I%s' % np.include, - 'NETCDF_LIB=%s' % nlib]) + options += [ + 'NETCDF_DIR=%s' % np, + 'HDF5_DIR=%s' % h5p, + 'ZLIB_DIR=%s' % zp, + 'NETCDF_OPT=-I%s' % np.include, + 'NETCDF_LIB=%s' % nlib] - if '+debug' in spec: - options.extend(['MFEM_DEBUG=YES']) + if '+mpfr' in spec: + options += ['MPFR_LIB=-L%s -lmpfr' % spec['mpfr'].prefix.lib] + + if '+openmp' in spec: + options += ['OPENMP_OPT = %s' % self.compiler.openmp_flag] make('config', *options) - make('all') + make('lib') - # Run a small test before installation - args = ['-m', join_path('data', 'star.mesh'), '--no-visualization'] - if '+mpi' in spec: - Executable(join_path(spec['mpi'].prefix.bin, - 'mpirun'))('-np', - '4', - join_path('examples', 'ex1p'), - *args) - else: - Executable(join_path('examples', 'ex1'))(*args) + if self.run_tests: + make('check') make('install') + + if '+examples' in spec: + make('examples') + install_tree('examples', join_path(prefix, 'examples')) + + if '+miniapps' in spec: + make('miniapps') + install_tree('miniapps', join_path(prefix, 'miniapps')) diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index 18c3d409f84..66f385f29fd 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -24,6 +24,7 @@ ############################################################################## from spack import * import os +import sys class Sundials(Package): @@ -33,21 +34,28 @@ class Sundials(Package): homepage = "http://computation.llnl.gov/casc/sundials/" url = "http://computation.llnl.gov/projects/sundials-suite-nonlinear-differential-algebraic-equation-solvers/download/sundials-2.6.2.tar.gz" + version('2.7.0', 'c304631b9bc82877d7b0e9f4d4fd94d3') version('2.6.2', '3deeb0ede9f514184c6bd83ecab77d95') - variant('mpi', default=True, description='Enable MPI support') + variant('mpi', default=True, + description='Enable MPI parallelism') variant('lapack', default=True, - description='Build with external BLAS/LAPACK libraries') + description='Use external BLAS/LAPACK libraries') variant('klu', default=False, - description='Build with SuiteSparse KLU libraries') + description='Enable KLU sparse, direct solver') variant('superlu', default=False, - description='Build with SuperLU_MT libraries') - variant('openmp', default=False, description='Enable OpenMP support') + description='Enable SuperLU_MT sparse, direct solver') + variant('openmp', default=False, + description='Enable OpenMP parallelism') variant('pthread', default=True, - description='Enable POSIX threads support') + description='Enable Pthreads parallelism') + variant('hypre', default=False, + description='Enable Hypre parallel vector for MPI parallelism') - depends_on('cmake', type='build') + depends_on('cmake', type='build') depends_on('mpi', when='+mpi') + depends_on('mpi', when='@2.7:+hypre') + depends_on('hypre', when='@2.7:+hypre') depends_on('blas', when='+lapack') depends_on('lapack', when='+lapack') depends_on('suite-sparse', when='+klu') @@ -55,6 +63,10 @@ class Sundials(Package): depends_on('superlu-mt+pthread', when='+superlu+pthread') def install(self, spec, prefix): + + def on_off(varstr): + return 'ON' if varstr in self.spec else 'OFF' + cmake_args = std_cmake_args[:] cmake_args.extend([ '-DBUILD_SHARED_LIBS=ON', @@ -62,47 +74,53 @@ def install(self, spec, prefix): '-DCMAKE_Fortran_FLAGS={0}'.format(self.compiler.pic_flag), '-DEXAMPLES_ENABLE=ON', '-DEXAMPLES_INSTALL=ON', - '-DFCMIX_ENABLE=ON' + '-DFCMIX_ENABLE=ON', + '-DMPI_ENABLE=%s' % on_off('+mpi'), + '-DLAPACK_ENABLE=%s' % on_off('+lapack'), + '-DKLU_ENABLE=%s' % on_off('+klu'), + '-DHYPRE_ENABLE=%s' % on_off('+hypre'), + '-DSUPERLUMT_ENABLE=%s' % on_off('+superlu'), + '-DOPENMP_ENABLE=%s' % on_off('+openmp'), + '-DPTHREAD_ENABLE=%s' % on_off('+pthread') ]) # MPI support if '+mpi' in spec: cmake_args.extend([ - '-DMPI_ENABLE=ON', '-DMPI_MPICC={0}'.format(spec['mpi'].mpicc), '-DMPI_MPIF77={0}'.format(spec['mpi'].mpif77) ]) - else: - cmake_args.append('-DMPI_ENABLE=OFF') + + # Building with Hypre + if '+hypre' in spec and spec.satisfies('@2.7:'): + cmake_args.extend([ + '-DHYPRE_INCLUDE_DIR={0}'.format( + spec['hypre'].prefix.include), + '-DHYPRE_LIBRARY_DIR={0}'.format( + spec['hypre'].prefix.lib) + ]) # Building with LAPACK and BLAS if '+lapack' in spec: cmake_args.extend([ - '-DLAPACK_ENABLE=ON', '-DLAPACK_LIBRARIES={0}'.format( (spec['lapack'].libs + spec['blas'].libs).joined(';') ) ]) - else: - cmake_args.append('-DLAPACK_ENABLE=OFF') # Building with KLU if '+klu' in spec: cmake_args.extend([ - '-DKLU_ENABLE=ON', '-DKLU_INCLUDE_DIR={0}'.format( spec['suite-sparse'].prefix.include), '-DKLU_LIBRARY_DIR={0}'.format( spec['suite-sparse'].prefix.lib) ]) - else: - cmake_args.append('-DKLU_ENABLE=OFF') # Building with SuperLU_MT if '+superlu' in spec: cmake_args.extend([ - '-DSUPERLUMT_ENABLE=ON', '-DSUPERLUMT_INCLUDE_DIR={0}'.format( spec['superlu-mt'].prefix.include), '-DSUPERLUMT_LIBRARY_DIR={0}'.format( @@ -116,20 +134,6 @@ def install(self, spec, prefix): msg = 'You must choose either +openmp or +pthread when ' msg += 'building with SuperLU_MT' raise RuntimeError(msg) - else: - cmake_args.append('-DSUPERLUMT_ENABLE=OFF') - - # OpenMP support - if '+openmp' in spec: - cmake_args.append('-DOPENMP_ENABLE=ON') - else: - cmake_args.append('-DOPENMP_ENABLE=OFF') - - # POSIX threads support - if '+pthread' in spec: - cmake_args.append('-DPTHREAD_ENABLE=ON') - else: - cmake_args.append('-DPTHREAD_ENABLE=OFF') with working_dir('build', create=True): cmake('..', *cmake_args) @@ -137,6 +141,9 @@ def install(self, spec, prefix): make() make('install') + if (sys.platform == 'darwin'): + fix_darwin_install_name(prefix.lib) + install('LICENSE', prefix) self.filter_compilers() From 295cdc5674fe63ebf5717fc0053913b80ec76ceb Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 11 Aug 2017 13:50:08 -0500 Subject: [PATCH 1467/2394] gapfiller: new package (#5073) --- .../builtin/packages/gapfiller/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gapfiller/package.py diff --git a/var/spack/repos/builtin/packages/gapfiller/package.py b/var/spack/repos/builtin/packages/gapfiller/package.py new file mode 100644 index 00000000000..766c51d42d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/gapfiller/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class Gapfiller(Package): + """GapFiller is a stand-alone program for closing gaps within + pre-assembled scaffolds. + + Note: A manual download is required for GapFiller. + Spack will search your current directory for the download file. + Alternatively, add this file to a mirror so that Spack can find it. + For instructions on how to set up a mirror, see + http://spack.readthedocs.io/en/latest/mirrors.html""" + + homepage = "https://www.baseclear.com/genomics/bioinformatics/basetools/gapfiller" + + version('1.10', '54d5e2ada131a1305a66e41c0d380382') + + def url_for_version(self, version): + return "file://{0}/39GapFiller_v{1}_linux-x86_64.tar.gz".format( + os.getcwd(), version.dashed) + + depends_on('perl', type=('build', 'run')) + + def install(self, spec, prefix): + install_tree('bowtie', prefix.bowtie) + install_tree('bwa', prefix.bwa) + install('GapFiller.pl', prefix) From a030c858ddeb03ebfe5ec2e4cf115530b07460aa Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 11 Aug 2017 13:51:08 -0500 Subject: [PATCH 1468/2394] sspace-longread: new package (#5072) * sspace-longread: new package * fixing description * fixing order --- .../packages/sspace-longread/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sspace-longread/package.py diff --git a/var/spack/repos/builtin/packages/sspace-longread/package.py b/var/spack/repos/builtin/packages/sspace-longread/package.py new file mode 100644 index 00000000000..9f55ecdc6e8 --- /dev/null +++ b/var/spack/repos/builtin/packages/sspace-longread/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class SspaceLongread(Package): + """SSPACE-LongRead is a stand-alone program for scaffolding pre-assembled + contigs using long reads + + Note: A manual download is required for SSPACE-LongRead. + Spack will search your current directory for the download file. + Alternatively, add this file to a mirror so that Spack can find it. + For instructions on how to set up a mirror, see + http://spack.readthedocs.io/en/latest/mirrors.html""" + + homepage = "https://www.baseclear.com/genomics/bioinformatics/basetools/SSPACE-longread" + + version('1.1', '0bb5d8603d7ead4ff1596135a520cc26') + + depends_on('perl', type=('build', 'run')) + + def url_for_version(self, version): + return "file://{0}/40SSPACE-LongRead_v{1}.tar.gz".format( + os.getcwd(), version.dashed) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('blasr', prefix.bin) + install('SSPACE-LongRead.pl', prefix.bin) From d16f823f9d8236eb6261044d2445e1b3dafa402d Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 11 Aug 2017 13:51:27 -0500 Subject: [PATCH 1469/2394] sspace-standard: new pacakge (#5071) * sspace-standard: new pacakge * fixing install versioning * fixing description --- .../packages/sspace-standard/package.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 var/spack/repos/builtin/packages/sspace-standard/package.py diff --git a/var/spack/repos/builtin/packages/sspace-standard/package.py b/var/spack/repos/builtin/packages/sspace-standard/package.py new file mode 100644 index 00000000000..7b1de9c1b3d --- /dev/null +++ b/var/spack/repos/builtin/packages/sspace-standard/package.py @@ -0,0 +1,56 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class SspaceStandard(Package): + """SSPACE standard is a stand-alone program for scaffolding pre-assembled + contigs using NGS paired-read data + + Note: A manual download is required for SSPACE-Standard. + Spack will search your current directory for the download file. + Alternatively, add this file to a mirror so that Spack can find it. + For instructions on how to set up a mirror, see + http://spack.readthedocs.io/en/latest/mirrors.html""" + + homepage = "https://www.baseclear.com/genomics/bioinformatics/basetools/SSPACE" + url = "file://{0}/41SSPACE-STANDARD-3.0_linux-x86_64.tar.gz".format(os.getcwd()) + + version('3.0', '7e171b4861b9d514e80aafc3d9cdf554') + + depends_on('perl', type=('build', 'run')) + + def install(self, spec, prefix): + install_tree('bin', prefix.bin) + install_tree('bowtie', prefix.bowtie) + install_tree('bwa', prefix.bwa) + install_tree('dotlib', prefix.dotlib) + install_tree('tools', prefix.tools) + install('SSPACE_Standard_v{0}.pl'.format(self.version), prefix) + + def setup_environment(self, spack_env, run_env): + run_env.set('SSPACE_HOME', prefix) + run_env.prepend_path('PATH', prefix) From 056faad3a2198cacb652b76e5adceba36515edb8 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 11 Aug 2017 13:54:12 -0500 Subject: [PATCH 1470/2394] signalp: new package (#5054) * signalp: new package * fixed homepage * fixed url and phases * refixed phase * improved readability * making path in execuatble adaptable to new versions --- .../repos/builtin/packages/signalp/package.py | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 var/spack/repos/builtin/packages/signalp/package.py diff --git a/var/spack/repos/builtin/packages/signalp/package.py b/var/spack/repos/builtin/packages/signalp/package.py new file mode 100644 index 00000000000..78caa33452c --- /dev/null +++ b/var/spack/repos/builtin/packages/signalp/package.py @@ -0,0 +1,61 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os + + +class Signalp(Package): + """SignalP predicts the presence and location of signal peptide cleavage + sites in amino acid sequences from different organisms: Gram-positive + bacteria, Gram-negative bacteria, and eukaryotes. + Note: A manual download is required for SignalP. + Spack will search your current directory for the download file. + Alternatively, add this file to a mirror so that Spack can find it. + For instructions on how to set up a mirror, see + http://spack.readthedocs.io/en/latest/mirrors.html""" + + homepage = "http://www.cbs.dtu.dk/services/SignalP/" + url = "file://{0}/signalp-4.1f.Linux.tar.gz".format(os.getcwd()) + + version('4.1f', 'a9aeb66259202649c959846f3f4d9744') + + depends_on('perl', type=('build', 'run')) + depends_on('gnuplot') + + def patch(self): + edit = FileFilter('signalp') + edit.filter("ENV{SIGNALP} = .*", + "ENV{SIGNALP} = '%s'" % self.prefix) + + def install(self, spec, prefix): + mkdirp(prefix.share.man) + install('signalp', prefix) + install('signalp.1', prefix.share.man) + install_tree('bin', prefix.bin) + install_tree('lib', prefix.lib) + install_tree('syn', prefix.syn) + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PATH', prefix) From 14076c52f13977381b273e433c0e5de82b9fe28c Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Fri, 11 Aug 2017 15:24:40 -0700 Subject: [PATCH 1471/2394] packages need to reference self.spec instead of spec (#5075) --- var/spack/repos/builtin/packages/callpath/package.py | 2 +- var/spack/repos/builtin/packages/kealib/package.py | 4 ++-- var/spack/repos/builtin/packages/llvm-lld/package.py | 4 ++-- var/spack/repos/builtin/packages/magics/package.py | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/callpath/package.py b/var/spack/repos/builtin/packages/callpath/package.py index ef2058f5578..bc72bb50bd9 100644 --- a/var/spack/repos/builtin/packages/callpath/package.py +++ b/var/spack/repos/builtin/packages/callpath/package.py @@ -46,7 +46,7 @@ def cmake_args(self): # TODO: offer options for the walker used. args = ["-DCALLPATH_WALKER=dyninst"] - if spec.satisfies("^dyninst@9.3.0:"): + if self.spec.satisfies("^dyninst@9.3.0:"): std_flag = self.compiler.cxx11_flag args.append("-DCMAKE_CXX_FLAGS='{0} -fpermissive'".format( std_flag)) diff --git a/var/spack/repos/builtin/packages/kealib/package.py b/var/spack/repos/builtin/packages/kealib/package.py index 6abc7c643f0..296090ef283 100644 --- a/var/spack/repos/builtin/packages/kealib/package.py +++ b/var/spack/repos/builtin/packages/kealib/package.py @@ -53,6 +53,6 @@ class Kealib(CMakePackage): def cmake_args(self): return [ - '-DHDF5_INCLUDE_DIR=%s' % spec['hdf5'].prefix.include, - '-DHDF5_LIB_PATH=%s' % spec['hdf5'].prefix.lib, + '-DHDF5_INCLUDE_DIR=%s' % self.spec['hdf5'].prefix.include, + '-DHDF5_LIB_PATH=%s' % self.spec['hdf5'].prefix.lib, ] diff --git a/var/spack/repos/builtin/packages/llvm-lld/package.py b/var/spack/repos/builtin/packages/llvm-lld/package.py index 801c384c790..5619f1132d9 100644 --- a/var/spack/repos/builtin/packages/llvm-lld/package.py +++ b/var/spack/repos/builtin/packages/llvm-lld/package.py @@ -43,6 +43,6 @@ def cmake_args(self): env['CXXFLAGS'] = self.compiler.cxx11_flag return [ - '-DLLD_PATH_TO_LLVM_BUILD=%s' % spec['llvm'].prefix, - '-DLLVM_MAIN_SRC_DIR=%s' % spec['llvm'].prefix, + '-DLLD_PATH_TO_LLVM_BUILD=%s' % self.spec['llvm'].prefix, + '-DLLVM_MAIN_SRC_DIR=%s' % self.spec['llvm'].prefix, ] diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index 4eac010c18f..426695a3dd6 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -84,6 +84,7 @@ def patch(self): filter_file('#!/usr/bin/python', '#!/usr/bin/env python', pyfile) def cmake_args(self): + spec = self.spec args = [ '-DENABLE_ODB=OFF', '-DENABLE_PYTHON=OFF', From 9e7917f7d3f0ec46bc43acdd1a789f86bdc97b0b Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 11 Aug 2017 17:25:26 -0500 Subject: [PATCH 1472/2394] mpest: new package (#5064) * mpest: new package * adding architecture env var and making more version-flexible * fixing environment * fixed build directory * getting rid of duplicated code --- .../repos/builtin/packages/mpest/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mpest/package.py diff --git a/var/spack/repos/builtin/packages/mpest/package.py b/var/spack/repos/builtin/packages/mpest/package.py new file mode 100644 index 00000000000..a00eb37bb89 --- /dev/null +++ b/var/spack/repos/builtin/packages/mpest/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mpest(MakefilePackage): + """MP-EST estimates species trees from a set of gene trees by maximizing + a pseudo-likelihood function.""" + + homepage = "http://faculty.franklin.uga.edu/lliu/content/mp-est" + url = "https://faculty.franklin.uga.edu/lliu/sites/faculty.franklin.uga.edu.lliu/files/mpest_1.5.zip" + + version('1.5', 'f176d5301aa26567918664e5e30027d1') + + @property + def build_directory(self): + return join_path('mpest_{0}'.format(self.version), 'src') + + def install(self, spec, prefix): + with working_dir(self.build_directory): + mkdirp(prefix.bin) + install('mpest', prefix.bin) + + def setup_environment(self, spack_env, run_env): + if self.spec.satisfies('platform=darwin'): + spack_env.set('ARCHITECTURE', 'mac') + else: + spack_env.set('ARCHITECTURE', 'unix') From 64a32ea1f97da21a146f14f084bcc7d72de37c18 Mon Sep 17 00:00:00 2001 From: snehring Date: Fri, 11 Aug 2017 17:26:20 -0500 Subject: [PATCH 1473/2394] adding falcon (#5057) * py-networkx: adding older version py-networkx * py-pypeflow: new package * falcon: adding new package pacbio-daligner: adding new package pacbio-damasker: adding new package pacbio-dazz-db: adding new package pacbio-dextractor: adding new package * py-networkx: modifying version order to be in line with convention * falcon: tweaking py-networkx dependency to satisfy setuptools py-pypeflow: adding missing dependency * pacbio-dextractor: changing hdf5 dependency * pacbio-daligner: adding gmake build dep pacbio-damasker: adding gmake build dep pacbio-dazz-db: adding gmake build dep pacbio-dextractor: adding gmake build dep --- .../repos/builtin/packages/falcon/package.py | 51 +++++++++++++++++ .../packages/pacbio-daligner/package.py | 48 ++++++++++++++++ .../packages/pacbio-damasker/package.py | 47 ++++++++++++++++ .../packages/pacbio-dazz-db/package.py | 55 +++++++++++++++++++ .../packages/pacbio-dextractor/package.py | 51 +++++++++++++++++ .../builtin/packages/py-networkx/package.py | 1 + .../builtin/packages/py-pypeflow/package.py | 40 ++++++++++++++ 7 files changed, 293 insertions(+) create mode 100644 var/spack/repos/builtin/packages/falcon/package.py create mode 100644 var/spack/repos/builtin/packages/pacbio-daligner/package.py create mode 100644 var/spack/repos/builtin/packages/pacbio-damasker/package.py create mode 100644 var/spack/repos/builtin/packages/pacbio-dazz-db/package.py create mode 100644 var/spack/repos/builtin/packages/pacbio-dextractor/package.py create mode 100644 var/spack/repos/builtin/packages/py-pypeflow/package.py diff --git a/var/spack/repos/builtin/packages/falcon/package.py b/var/spack/repos/builtin/packages/falcon/package.py new file mode 100644 index 00000000000..7532e6e8b44 --- /dev/null +++ b/var/spack/repos/builtin/packages/falcon/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Falcon(PythonPackage): + """Falcon: a set of tools for fast aligning long reads for consensus + and assembly. + + The Falcon tool kit is a set of simple code collection which I use + for studying efficient assembly algorithm for haploid and diploid genomes. + It has some back-end code implemented in C for speed and some simple + front-end written in Python for convenience.""" + + homepage = "https://github.com/PacificBiosciences/FALCON" + url = "https://github.com/PacificBiosciences/FALCON.git" + + version('2017-05-30', + git='https://github.com/PacificBiosciences/FALCON.git', + commit='86cec6157291679095ea6080b0cde6561eccc041') + + depends_on('py-setuptools', type='run') + depends_on('py-pypeflow', type='run') + depends_on('py-networkx@1.7:1.10', type=['build', 'run']) + depends_on('pacbio-dazz-db', type='run') + depends_on('pacbio-daligner', type='run') + depends_on('pacbio-dextractor', type='run') + depends_on('pacbio-damasker', type='run') diff --git a/var/spack/repos/builtin/packages/pacbio-daligner/package.py b/var/spack/repos/builtin/packages/pacbio-daligner/package.py new file mode 100644 index 00000000000..695c4717f76 --- /dev/null +++ b/var/spack/repos/builtin/packages/pacbio-daligner/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PacbioDaligner(MakefilePackage): + """Daligner: The Dazzler "Overlap" Module. This is a special fork + required for some pacbio utilities.""" + + homepage = "https://github.com/PacificBiosciences/DALIGNER" + url = "https://github.com/PacificBiosciences/DALIGNER" + + version('2017-08-05', + git='https://github.com/PacificBiosciences/DALIGNER.git', + commit='0fe5240d2cc6b55bf9e04465b700b76110749c9d') + + depends_on('gmake', type='build') + depends_on('pacbio-dazz-db') + + def edit(self, spec, prefix): + mkdir(prefix.bin) + makefile = FileFilter('Makefile') + makefile.filter('DEST_DIR\s*=\s*~/bin', 'DEST_DIR = ' + prefix.bin) + gmf = FileFilter('GNUmakefile') + gmf.filter('rsync\s*-av\s*\$\{ALL\}\s*\$\{PREFIX\}/bin', + 'cp ${ALL} ' + prefix.bin) diff --git a/var/spack/repos/builtin/packages/pacbio-damasker/package.py b/var/spack/repos/builtin/packages/pacbio-damasker/package.py new file mode 100644 index 00000000000..b2415fd3406 --- /dev/null +++ b/var/spack/repos/builtin/packages/pacbio-damasker/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PacbioDamasker(MakefilePackage): + """Damasker: The Dazzler Repeat Masking Suite. This is a special fork + required for some pacbio utilities.""" + + homepage = "https://github.com/PacificBiosciences/DAMASKER" + url = "https://github.com/PacificBiosciences/DAMASKER" + + version('2017-02-11', + git='https://github.com/PacificBiosciences/DAMASKER.git', + commit='144244b77d52cb785cb1b3b8ae3ab6f3f0c63264') + + depends_on('gmake', type='build') + + def edit(self, spec, prefix): + mkdirp(prefix.bin) + makefile = FileFilter('Makefile') + makefile.filter('DEST_DIR\s*=\s*~/bin', 'DEST_DIR = ' + prefix.bin) + gmf = FileFilter('GNUmakefile') + gmf.filter('rsync\s*-av\s*\$\{ALL\}\s*\$\{PREFIX\}/bin', + 'cp ${ALL} ' + prefix.bin) diff --git a/var/spack/repos/builtin/packages/pacbio-dazz-db/package.py b/var/spack/repos/builtin/packages/pacbio-dazz-db/package.py new file mode 100644 index 00000000000..1223c25f37b --- /dev/null +++ b/var/spack/repos/builtin/packages/pacbio-dazz-db/package.py @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class PacbioDazzDb(MakefilePackage): + """The Dazzler Database Library. This version is a special fork + required for some pacbio utilities.""" + + homepage = "https://github.com/PacificBiosciences/DAZZ_DB" + url = "https://github.com/PacificBiosciences/DAZZ_DB" + + version('2017-04-10', + git='https://github.com/PacificBiosciences/DAZZ_DB.git', + commit='f29d27d51f460563481cd227d17f4bdc5e288365') + + depends_on('gmake', type='build') + + def edit(self, spec, prefix): + mkdirp(prefix.bin) + mkdirp(prefix.lib) + mkdirp(prefix.include) + makefile = FileFilter('Makefile') + makefile.filter('DEST_DIR\s*=\s*~/bin', 'DEST_DIR = ' + prefix.bin) + gmf = FileFilter('GNUmakefile') + gmf.filter('rsync\s*-av\s*\$\{ALL\}\s*\$\{PREFIX\}/bin', + 'cp ${ALL} ' + prefix.bin) + gmf.filter('rsync\s*-av\s*libdazzdb.*\s*\$\{PREFIX\}/lib', + 'cp libdazzdb.* ' + prefix.lib) + gmf.filter(('rsync\s*-av\s*\$\(wildcard\s*\$\{THISDIR\}/\*.h' + '\)\s*\$\{PREFIX\}/include'), + 'cp *.h ' + prefix.include) diff --git a/var/spack/repos/builtin/packages/pacbio-dextractor/package.py b/var/spack/repos/builtin/packages/pacbio-dextractor/package.py new file mode 100644 index 00000000000..91a4e6f330b --- /dev/null +++ b/var/spack/repos/builtin/packages/pacbio-dextractor/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PacbioDextractor(MakefilePackage): + """The Dextractor and Compression Command Library. This is a special + fork required by some pacbio utilities.""" + + homepage = "https://github.com/PacificBiosciences/DEXTRACTOR" + url = "https://github.com/PacificBiosciences/DEXTRACTOR" + + version('2016-08-09', + git='https://github.com/PacificBiosciences/DEXTRACTOR.git', + commit='89726800346d0bed15d98dcc577f4c7733aab4b1') + + depends_on('hdf5') + depends_on('gmake', type='build') + + def edit(self, spec, prefix): + mkdirp(prefix.bin) + makefile = FileFilter('Makefile') + makefile.filter('PATH_HDF5\s*=\s*/sw/apps/hdf5/current', + 'PATH_HDF5 = ' + spec['hdf5'].prefix) + makefile.filter('PATH_HDF5\*s=\s*/usr/local/hdf5', '') + makefile.filter('DEST_DIR\s*=\s*~/bin', 'DEST_DIR = ' + prefix.bin) + gmf = FileFilter('GNUmakefile') + gmf.filter('rsync\s*-av\s*\$\{ALL\}\s*\$\{PREFIX\}/bin', + 'cp ${ALL} ' + prefix.bin) diff --git a/var/spack/repos/builtin/packages/py-networkx/package.py b/var/spack/repos/builtin/packages/py-networkx/package.py index 2bdf7410492..1d8dfa6b536 100644 --- a/var/spack/repos/builtin/packages/py-networkx/package.py +++ b/var/spack/repos/builtin/packages/py-networkx/package.py @@ -32,6 +32,7 @@ class PyNetworkx(PythonPackage): url = "https://pypi.io/packages/source/n/networkx/networkx-1.11.tar.gz" version('1.11', '6ef584a879e9163013e9a762e1cf7cd1') + version('1.10', 'eb7a065e37250a4cc009919dacfe7a9d') depends_on('py-decorator', type=('build', 'run')) depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pypeflow/package.py b/var/spack/repos/builtin/packages/py-pypeflow/package.py new file mode 100644 index 00000000000..8741b731f59 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pypeflow/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPypeflow(PythonPackage): + """pypeFLOW is light weight and reusable make / flow data process + library written in Python.""" + + homepage = "https://github.com/PacificBiosciences/pypeFLOW" + url = "https://github.com/PacificBiosciences/pypeFLOW" + + version('2017-05-04', + git='https://github.com/PacificBiosciences/pypeFLOW.git', + commit='f23a1b290876bbdf130611000934ae4247158073') + + depends_on('py-setuptools', type='build') + depends_on('py-networkx@1.7:1.11', type=['build', 'run']) From 41c87a71a8c5a5f09b486f6a79fdd52d4602a158 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 12 Aug 2017 04:18:52 +0200 Subject: [PATCH 1474/2394] patch: get correct package directory for a given package fixes #4236 fixes #5002 When a package is defined in more than one repository, RepoPath.dirname_for_package_name may return the path to either definition. This sidesteps that ambiguity by accessing the module associated with the package definition. --- lib/spack/spack/patch.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/patch.py b/lib/spack/spack/patch.py index 78bb15f41c7..c970f4dfdcd 100644 --- a/lib/spack/spack/patch.py +++ b/lib/spack/spack/patch.py @@ -23,16 +23,28 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import os +import os.path +import inspect import spack import spack.error -import spack.stage import spack.fetch_strategy as fs - +import spack.stage from llnl.util.filesystem import join_path from spack.util.executable import which +def absolute_path_for_package(pkg): + """Returns the absolute path to the ``package.py`` file implementing + the recipe for the package passed as argument. + + Args: + pkg: a valid package object + """ + m = inspect.getmodule(pkg) + return os.path.abspath(m.__file__) + + class Patch(object): """Base class to describe a patch that needs to be applied to some expanded source code. @@ -90,7 +102,7 @@ class FilePatch(Patch): def __init__(self, pkg, path_or_url, level): super(FilePatch, self).__init__(pkg, path_or_url, level) - pkg_dir = spack.repo.dirname_for_package_name(pkg.name) + pkg_dir = os.path.dirname(absolute_path_for_package(pkg)) self.path = join_path(pkg_dir, path_or_url) if not os.path.isfile(self.path): raise NoSuchPatchFileError(pkg.name, self.path) From 3cce3e3ce4c36cd9330c778cf5599e69b3dc1035 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Fri, 11 Aug 2017 21:46:39 -0700 Subject: [PATCH 1475/2394] Opencv update (#5079) * Added a package for the MDAnalysis toolkit. * Added version 3.3.0 --- var/spack/repos/builtin/packages/opencv/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index 5e5be0abe8b..034fe54cc9f 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -43,6 +43,7 @@ class Opencv(CMakePackage): url = 'https://github.com/Itseez/opencv/archive/3.1.0.tar.gz' version('master', git="https://github.com/opencv/opencv.git", branch="master") + version('3.3.0', 'eeedaec282a70aa2ea1d5152a372c990') version('3.2.0', 'a43b65488124ba33dde195fea9041b70') version('3.1.0', '70e1dd07f0aa06606f1bc0e3fa15abd3') version('2.4.13.2', 'fe52791ce523681a67036def4c25261b') From 4d9ef49b49a5f2e3034e26de535e6744251a10fa Mon Sep 17 00:00:00 2001 From: scheibelp Date: Mon, 14 Aug 2017 11:23:03 -0700 Subject: [PATCH 1476/2394] Decode process stream only for python3 Popen.communicate outputs a str object for python2 and a bytes object for python3. This updates the Executable.__call__ function to call .decode on the output of Popen.communicate only for python3. This ensures that Executable.__call__ returns a str for python2 and python3. --- lib/spack/spack/util/executable.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 584e224db79..5fd40790ed0 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -26,6 +26,7 @@ import re import subprocess from six import string_types +import sys import llnl.util.tty as tty import spack @@ -184,9 +185,9 @@ def streamify(arg, mode): if output is str or error is str: result = '' if output is str: - result += out.decode('utf-8') + result += to_str(out) if error is str: - result += err.decode('utf-8') + result += to_str(err) return result except OSError as e: @@ -223,6 +224,20 @@ def __str__(self): return ' '.join(self.exe) +def to_str(content): + """Produce a str type from the content of a process stream obtained with + Popen.communicate. + """ + # Prior to python3, Popen.communicate returns a str type. For python3 it + # returns a bytes type. In the case of python3 we decode the + # byte string to produce a str type. This will generate junk if the + # encoding is not UTF-8 (which includes ASCII). + if sys.version_info < (3, 0, 0): + return content + else: + return content.decode('utf-8') + + def which(*args, **kwargs): """Finds an executable in the path like command-line which. From 5184edb15f2cf260d561d8fcb7bf56ad147b6555 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 14 Aug 2017 20:29:18 +0200 Subject: [PATCH 1477/2394] Added a custom action for --clean and --dirty. (#5081) The action `CleanOrDirtyAction` has been added. It sets the default value for `dest` to `spack.dirty`, and changes it according to the flags passed via command line. Added unit tests to check that the arguments are parsed correctly. Removed lines in `PackageBase` that were setting the default value of dirty according to what was in the configuration. --- lib/spack/spack/cmd/common/arguments.py | 33 ++++++++++++++++++++++--- lib/spack/spack/package.py | 4 --- lib/spack/spack/test/cmd/install.py | 24 +++++++++++++++++- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 46ff44c84aa..d1b04187707 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -74,6 +74,23 @@ def _specs(self, **kwargs): return sorted(specs) +class CleanOrDirtyAction(argparse.Action): + """Sets the dirty flag in the current namespace""" + + def __init__(self, *args, **kwargs): + kwargs['default'] = spack.dirty + super(CleanOrDirtyAction, self).__init__(*args, **kwargs) + + def __call__(self, parser, namespace, values, option_string=None): + if option_string == '--clean': + setattr(namespace, self.dest, False) + elif option_string == '--dirty': + setattr(namespace, self.dest, True) + else: + msg = 'expected "--dirty" or "--clean" [got {0} instead]' + raise argparse.ArgumentError(msg.format(option_string)) + + _arguments['constraint'] = Args( 'constraint', nargs=argparse.REMAINDER, action=ConstraintAction, help='constraint to select a subset of installed packages') @@ -93,12 +110,20 @@ def _specs(self, **kwargs): help='recursively traverse spec dependencies') _arguments['clean'] = Args( - '--clean', action='store_false', dest='dirty', - help='clean environment before installing package') + '--clean', + action=CleanOrDirtyAction, + dest='dirty', + help='clean environment before installing package', + nargs=0 +) _arguments['dirty'] = Args( - '--dirty', action='store_true', dest='dirty', - help='do NOT clean environment before installing') + '--dirty', + action=CleanOrDirtyAction, + dest='dirty', + help='do NOT clean environment before installing', + nargs=0 +) _arguments['long'] = Args( '-l', '--long', action='store_true', diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index e8e741fefae..86df0ec9478 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1218,10 +1218,6 @@ def do_install(self, rec = spack.store.db.get_record(self.spec) return self._update_explicit_entry_in_db(rec, explicit) - # Dirty argument takes precedence over dirty config setting. - if dirty is None: - dirty = spack.dirty - self._do_install_pop_kwargs(kwargs) # First, install dependencies recursively. diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 951d9d85d70..5886d602a24 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -22,12 +22,24 @@ # 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 argparse + +import pytest + +import spack.cmd.install from spack.main import SpackCommand - install = SpackCommand('install') +@pytest.fixture(scope='module') +def parser(): + """Returns the parser for the module command""" + parser = argparse.ArgumentParser() + spack.cmd.install.setup_parser(parser) + return parser + + def _install_package_and_dependency( tmpdir, builtin_mock, mock_archive, mock_fetch, config, install_mockery): @@ -64,3 +76,13 @@ def test_install_package_already_installed( skipped = [line for line in content.split('\n') if 'skipped' in line] assert len(skipped) == 2 + + +@pytest.mark.parametrize('arguments,expected', [ + ([], spack.dirty), # The default read from configuration file + (['--clean'], False), + (['--dirty'], True), +]) +def test_install_dirty_flag(parser, arguments, expected): + args = parser.parse_args(arguments) + assert args.dirty == expected From ab56c742ca1768fef484a02bfb542d6df449c1f6 Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Mon, 14 Aug 2017 16:32:27 -0500 Subject: [PATCH 1478/2394] Create, install and relocate tarballs of installed packages Adds the "buildcache" command to spack. The buildcache command is used to create gpg signatures for archives of installed spack packages; the signatures and archives are placed together in a directory that can be added to a spack mirror. A user can retrieve the archives from a mirror and verify their integrity using the buildcache command. It is often the case that the user's Spack instance is located in a different path compared to the Spack instance used to generate the package archive and signature, so this includes logic to relocate the RPATHs generated by Spack. --- lib/spack/docs/binary_caches.rst | 108 ++++ lib/spack/docs/index.rst | 1 + lib/spack/spack/binary_distribution.py | 494 ++++++++++++++++++ lib/spack/spack/cmd/buildcache.py | 230 ++++++++ lib/spack/spack/relocate.py | 289 ++++++++++ lib/spack/spack/test/packaging.py | 304 +++++++++++ .../builtin.mock/packages/patchelf/package.py | 41 ++ 7 files changed, 1467 insertions(+) create mode 100644 lib/spack/docs/binary_caches.rst create mode 100644 lib/spack/spack/binary_distribution.py create mode 100644 lib/spack/spack/cmd/buildcache.py create mode 100644 lib/spack/spack/relocate.py create mode 100644 lib/spack/spack/test/packaging.py create mode 100644 var/spack/repos/builtin.mock/packages/patchelf/package.py diff --git a/lib/spack/docs/binary_caches.rst b/lib/spack/docs/binary_caches.rst new file mode 100644 index 00000000000..d655d2ce582 --- /dev/null +++ b/lib/spack/docs/binary_caches.rst @@ -0,0 +1,108 @@ +.. _binary_caches: + +Build caches +============ + +Some sites may encourage users to set up their own test environments +before carrying out central installations, or some users prefer to set +up these environments on their own motivation. To reduce the load of +recompiling otherwise identical package specs in different installations, +installed packages can be put into build cache tarballs, uploaded to +your spack mirror and then downloaded and installed by others. + + +Creating build cache files +-------------------------- + +A compressed tarball of an installed package is created. Tarballs are created +for all of its link and run dependency packages as well. Compressed tarballs are +signed with gpg and signature and tarball and put in a ".spack" file. Optionally +, the rpaths ( and ids and deps on macOS ) can be changed to paths relative to +the spack install tree before the tarball is created. + +Build caches are created via: + +.. code-block:: sh + + $ spack buildcache create + + +Finding or installing build cache files +--------------------------------------- + +To find build caches or install build caches, a spack mirror must be configured +with + +``spack mirror add ``. + +Build caches are found via: + +.. code-block:: sh + + $ spack buildcache list + +Build caches are installed via: + +.. code-block:: sh + + $ spack buildcache install + + +Relocation +---------- + +Initial build and later installation do not necessarily happen at the same +location. Spack provides a relocation capability and corrects for RPATHs and +non-relocatable scripts. However, many packages compile paths into binary +artificats directly. In such cases, the build instructions of this package would +need to be adjusted for better re-locatability. + + +Usage +----- +spack buildcache create <> +^^^^^^^^^^^^^^^^^^^^^^^^^^ +Create tarball of installed spack package and all dependencies. +Tarballs is checksummed and signed if gpg2 is available. +Places them in a directory build_cache that can be copied to a mirror. +Commands like "spack buildcache install" will search it for pre-compiled packages. + + +options: + +-d : directory in which "build_cache" direcory is created, defaults to "." +-f : overwrite ".spack" file in "build_cache" directory if it exists +-k : the key to sign package with. In the case where multiple keys exist, the package will be unsigned unless -k is used. +-r : make paths in binaries relative before creating tarball +-y : answer yes to all create unsigned "build_cache" questions +<> : list of package specs or package hashes with leading / + +spack buildcache list <> +^^^^^^^^^^^^^^^^^^^^^^^^ +Retrieves all specs for build caches available on a spack mirror. + +options: + +<> string to be matched to matched to begining of listed concretized short +specs, eg. "spack buildcache list gcc" with print only commands to install gcc +package(s) + +spack buildcache install <> +^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Retrieves all specs for build caches available on a spack mirror and installs build caches +with specs matching the specs or hashes input. + +options: + +-f : remove install directory if it exists before unpacking tarball +-y : answer yes to all to don't verify package with gpg questions +<> : list of package specs or package hashes with leading / + +spack buildcache keys +^^^^^^^^^^^^^^^^^^^^^ +List public keys available on spack mirror. + +options: + +-i : trust the keys downloaded with prompt for each +-y : answer yes to all trust all keys downloaded diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index f4918b58db7..e86ab0ca853 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -65,6 +65,7 @@ or refer to the full manual below. repositories command_index package_list + binary_caches .. toctree:: :maxdepth: 2 diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py new file mode 100644 index 00000000000..e2ae89ac199 --- /dev/null +++ b/lib/spack/spack/binary_distribution.py @@ -0,0 +1,494 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os +import re +import tarfile +import yaml +import shutil + +import llnl.util.tty as tty +from spack.util.gpg import Gpg +from llnl.util.filesystem import mkdirp, join_path, install_tree +from spack.util.web import spider +import spack.cmd +import spack +from spack.stage import Stage +import spack.fetch_strategy as fs +from contextlib import closing +import spack.util.gpg as gpg_util +import hashlib +from spack.util.executable import ProcessError +import spack.relocate as relocate + + +class NoOverwriteException(Exception): + pass + + +class NoGpgException(Exception): + pass + + +class PickKeyException(Exception): + pass + + +class NoKeyException(Exception): + pass + + +class NoVerifyException(Exception): + pass + + +class NoChecksumException(Exception): + pass + + +def has_gnupg2(): + try: + gpg_util.Gpg.gpg()('--version', output=os.devnull) + return True + except ProcessError: + return False + + +def buildinfo_file_name(prefix): + """ + Filename of the binary package meta-data file + """ + name = prefix + "/.spack/binary_distribution" + return name + + +def read_buildinfo_file(prefix): + """ + Read buildinfo file + """ + filename = buildinfo_file_name(prefix) + with open(filename, 'r') as inputfile: + content = inputfile.read() + buildinfo = yaml.load(content) + return buildinfo + + +def write_buildinfo_file(prefix): + """ + Create a cache file containing information + required for the relocation + """ + text_to_relocate = [] + binary_to_relocate = [] + blacklist = (".spack", "man") + # Do this at during tarball creation to save time when tarball unpacked. + # Used by make_package_relative to determine binaries to change. + for root, dirs, files in os.walk(prefix, topdown=True): + dirs[:] = [d for d in dirs if d not in blacklist] + for filename in files: + path_name = os.path.join(root, filename) + filetype = relocate.get_filetype(path_name) + if relocate.needs_binary_relocation(filetype): + rel_path_name = os.path.relpath(path_name, prefix) + binary_to_relocate.append(rel_path_name) + elif relocate.needs_text_relocation(filetype): + rel_path_name = os.path.relpath(path_name, prefix) + text_to_relocate.append(rel_path_name) + + # Create buildinfo data and write it to disk + buildinfo = {} + buildinfo['buildpath'] = spack.store.layout.root + buildinfo['relocate_textfiles'] = text_to_relocate + buildinfo['relocate_binaries'] = binary_to_relocate + filename = buildinfo_file_name(prefix) + with open(filename, 'w') as outfile: + outfile.write(yaml.dump(buildinfo, default_flow_style=True)) + + +def tarball_directory_name(spec): + """ + Return name of the tarball directory according to the convention + -//-/ + """ + return "%s/%s/%s-%s" % (spack.architecture.sys_type(), + str(spec.compiler).replace("@", "-"), + spec.name, spec.version) + + +def tarball_name(spec, ext): + """ + Return the name of the tarfile according to the convention + --- + """ + return "%s-%s-%s-%s-%s%s" % (spack.architecture.sys_type(), + str(spec.compiler).replace("@", "-"), + spec.name, + spec.version, + spec.dag_hash(), + ext) + + +def tarball_path_name(spec, ext): + """ + Return the full path+name for a given spec according to the convention + / + """ + return os.path.join(tarball_directory_name(spec), + tarball_name(spec, ext)) + + +def checksum_tarball(file): + # calculate sha256 hash of tar file + BLOCKSIZE = 65536 + hasher = hashlib.sha256() + with open(file, 'rb') as tfile: + buf = tfile.read(BLOCKSIZE) + while len(buf) > 0: + hasher.update(buf) + buf = tfile.read(BLOCKSIZE) + return hasher.hexdigest() + + +def sign_tarball(yes_to_all, key, force, specfile_path): + # Sign the packages if keys available + if not has_gnupg2(): + raise NoGpgException() + else: + if key is None: + keys = Gpg.signing_keys() + if len(keys) == 1: + key = keys[0] + if len(keys) > 1: + raise PickKeyException() + if len(keys) == 0: + raise NoKeyException() + if os.path.exists('%s.asc' % specfile_path): + if force: + os.remove('%s.asc' % specfile_path) + else: + raise NoOverwriteException('%s.asc' % specfile_path) + Gpg.sign(key, specfile_path, '%s.asc' % specfile_path) + + +def generate_index(outdir, indexfile_path): + f = open(indexfile_path, 'w') + header = """ + +""" + footer = "" + paths = os.listdir(outdir + '/build_cache') + f.write(header) + for path in paths: + rel = os.path.basename(path) + f.write('
  • ' % (rel, rel)) + f.write(footer) + f.close() + + +def build_tarball(spec, outdir, force=False, rel=False, yes_to_all=False, + key=None): + """ + Build a tarball from given spec and put it into the directory structure + used at the mirror (following ). + """ + # set up some paths + tarfile_name = tarball_name(spec, '.tar.gz') + tarfile_dir = join_path(outdir, "build_cache", + tarball_directory_name(spec)) + tarfile_path = join_path(tarfile_dir, tarfile_name) + mkdirp(tarfile_dir) + spackfile_path = os.path.join( + outdir, "build_cache", tarball_path_name(spec, '.spack')) + if os.path.exists(spackfile_path): + if force: + os.remove(spackfile_path) + else: + raise NoOverwriteException(str(spackfile_path)) + # need to copy the spec file so the build cache can be downloaded + # without concretizing with the current spack packages + # and preferences + spec_file = join_path(spec.prefix, ".spack", "spec.yaml") + specfile_name = tarball_name(spec, '.spec.yaml') + specfile_path = os.path.realpath( + join_path(outdir, "build_cache", specfile_name)) + indexfile_path = join_path(outdir, "build_cache", "index.html") + if os.path.exists(specfile_path): + if force: + os.remove(specfile_path) + else: + raise NoOverwriteException(str(specfile_path)) + # make a copy of the install directory to work with + prefix = join_path(outdir, os.path.basename(spec.prefix)) + if os.path.exists(prefix): + shutil.rmtree(prefix) + install_tree(spec.prefix, prefix) + + # create info for later relocation and create tar + write_buildinfo_file(prefix) + + # optinally make the paths in the binaries relative to each other + # in the spack install tree before creating tarball + if rel: + make_package_relative(prefix) + # create compressed tarball of the install prefix + with closing(tarfile.open(tarfile_path, 'w:gz')) as tar: + tar.add(name='%s' % prefix, + arcname='%s' % os.path.basename(prefix)) + # remove copy of install directory + shutil.rmtree(prefix) + + # get the sha256 checksum of the tarball + checksum = checksum_tarball(tarfile_path) + + # add sha256 checksum to spec.yaml + spec_dict = {} + with open(spec_file, 'r') as inputfile: + content = inputfile.read() + spec_dict = yaml.load(content) + bchecksum = {} + bchecksum['hash_algorithm'] = 'sha256' + bchecksum['hash'] = checksum + spec_dict['binary_cache_checksum'] = bchecksum + with open(specfile_path, 'w') as outfile: + outfile.write(yaml.dump(spec_dict)) + signed = False + if not yes_to_all: + # sign the tarball and spec file with gpg + try: + sign_tarball(yes_to_all, key, force, specfile_path) + signed = True + except NoGpgException: + raise NoGpgException() + except PickKeyException: + raise PickKeyException() + except NoKeyException(): + raise NoKeyException() + # put tarball, spec and signature files in .spack archive + with closing(tarfile.open(spackfile_path, 'w')) as tar: + tar.add(name='%s' % tarfile_path, arcname='%s' % tarfile_name) + tar.add(name='%s' % specfile_path, arcname='%s' % specfile_name) + if signed: + tar.add(name='%s.asc' % specfile_path, + arcname='%s.asc' % specfile_name) + + # cleanup file moved to archive + os.remove(tarfile_path) + if signed: + os.remove('%s.asc' % specfile_path) + + # create an index.html for the build_cache directory so specs can be found + if os.path.exists(indexfile_path): + os.remove(indexfile_path) + generate_index(outdir, indexfile_path) + return None + + +def download_tarball(spec): + """ + Download binary tarball for given package into stage area + Return True if successful + """ + mirrors = spack.config.get_config('mirrors') + if len(mirrors) == 0: + tty.die("Please add a spack mirror to allow " + + "download of pre-compiled packages.") + tarball = tarball_path_name(spec, '.spack') + for key in mirrors: + url = mirrors[key] + "/build_cache/" + tarball + # stage the tarball into standard place + stage = Stage(url, name="build_cache", keep=True) + try: + stage.fetch() + return stage.save_filename + except fs.FetchError: + continue + return None + + +def make_package_relative(prefix): + """ + Change paths in binaries to relative paths + """ + buildinfo = read_buildinfo_file(prefix) + old_path = buildinfo['buildpath'] + for filename in buildinfo['relocate_binaries']: + path_name = os.path.join(prefix, filename) + relocate.make_binary_relative(path_name, old_path) + + +def relocate_package(prefix): + """ + Relocate the given package + """ + buildinfo = read_buildinfo_file(prefix) + new_path = spack.store.layout.root + old_path = buildinfo['buildpath'] + if new_path == old_path: + return + + tty.msg("Relocating package from", + "%s to %s." % (old_path, new_path)) + for filename in buildinfo['relocate_binaries']: + path_name = os.path.join(prefix, filename) + relocate.relocate_binary(path_name, old_path, new_path) + + for filename in buildinfo['relocate_textfiles']: + path_name = os.path.join(prefix, filename) + relocate.relocate_text(path_name, old_path, new_path) + + +def extract_tarball(spec, filename, yes_to_all=False, force=False): + """ + extract binary tarball for given package into install area + """ + installpath = spec.prefix + if os.path.exists(installpath): + if force: + shutil.rmtree(installpath) + else: + raise NoOverwriteException(str(installpath)) + mkdirp(installpath) + stagepath = os.path.dirname(filename) + spackfile_name = tarball_name(spec, '.spack') + spackfile_path = os.path.join(stagepath, spackfile_name) + tarfile_name = tarball_name(spec, '.tar.gz') + tarfile_path = os.path.join(stagepath, tarfile_name) + specfile_name = tarball_name(spec, '.spec.yaml') + specfile_path = os.path.join(stagepath, specfile_name) + + with closing(tarfile.open(spackfile_path, 'r')) as tar: + tar.extractall(stagepath) + + if os.path.exists('%s.asc' % specfile_path): + Gpg.verify('%s.asc' % specfile_path, specfile_path) + os.remove(specfile_path + '.asc') + else: + if not yes_to_all: + raise NoVerifyException() + + # get the sha256 checksum of the tarball + checksum = checksum_tarball(tarfile_path) + + # get the sha256 checksum recorded at creation + spec_dict = {} + with open(specfile_path, 'r') as inputfile: + content = inputfile.read() + spec_dict = yaml.load(content) + bchecksum = spec_dict['binary_cache_checksum'] + + # if the checksums don't match don't install + if bchecksum['hash'] != checksum: + raise NoChecksumException() + + with closing(tarfile.open(tarfile_path, 'r')) as tar: + tar.extractall(path=join_path(installpath, '..')) + + os.remove(tarfile_path) + os.remove(specfile_path) + relocate_package(installpath) + + +def get_specs(): + """ + Get spec.yaml's for build caches available on mirror + """ + mirrors = spack.config.get_config('mirrors') + if len(mirrors) == 0: + tty.die("Please add a spack mirror to allow " + + "download of build caches.") + path = str(spack.architecture.sys_type()) + specs = set() + urls = set() + from collections import defaultdict + durls = defaultdict(list) + for key in mirrors: + url = mirrors[key] + if url.startswith('file'): + mirror = url.replace('file://', '') + '/build_cache' + tty.msg("Finding buildcaches in %s" % mirror) + files = os.listdir(mirror) + for file in files: + if re.search('spec.yaml', file): + link = 'file://' + mirror + '/' + file + urls.add(link) + else: + tty.msg("Finding buildcaches on %s" % url) + p, links = spider(url + "/build_cache") + for link in links: + if re.search("spec.yaml", link) and re.search(path, link): + urls.add(link) + for link in urls: + with Stage(link, name="build_cache", keep=True) as stage: + try: + stage.fetch() + except fs.FetchError: + continue + with open(stage.save_filename, 'r') as f: + spec = spack.spec.Spec.from_yaml(f) + specs.add(spec) + durls[spec].append(link) + return specs, durls + + +def get_keys(install=False, yes_to_all=False): + """ + Get pgp public keys available on mirror + """ + mirrors = spack.config.get_config('mirrors') + if len(mirrors) == 0: + tty.die("Please add a spack mirror to allow " + + "download of build caches.") + + keys = set() + for key in mirrors: + url = mirrors[key] + if url.startswith('file'): + mirror = url.replace('file://', '') + '/build_cache' + tty.msg("Finding public keys in %s" % mirror) + files = os.listdir(mirror) + for file in files: + if re.search('\.key', file): + link = 'file://' + mirror + '/' + file + keys.add(link) + else: + tty.msg("Finding public keys on %s" % url) + p, links = spider(url + "/build_cache", depth=1) + for link in links: + if re.search("\.key", link): + keys.add(link) + for link in keys: + with Stage(link, name="build_cache", keep=True) as stage: + try: + stage.fetch() + except fs.FetchError: + continue + tty.msg('Found key %s' % link) + if install: + if yes_to_all: + Gpg.trust(stage.save_filename) + tty.msg('Added this key to trusted keys.') + else: + tty.msg('Will not add this key to trusted keys.' + 'Use -y to override') diff --git a/lib/spack/spack/cmd/buildcache.py b/lib/spack/spack/cmd/buildcache.py new file mode 100644 index 00000000000..213442acef2 --- /dev/null +++ b/lib/spack/spack/cmd/buildcache.py @@ -0,0 +1,230 @@ +############################################################################## +# Copyright (c) 2013, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License (as published by +# the Free Software Foundation) version 2.1 dated February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public 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 argparse + +import os +import re +import llnl.util.tty as tty + +import spack +import spack.cmd +import spack.binary_distribution as bindist +from spack.binary_distribution import NoOverwriteException, NoGpgException +from spack.binary_distribution import NoKeyException, PickKeyException +from spack.binary_distribution import NoVerifyException, NoChecksumException + +description = "Create, download and install build cache files." +section = "caching" +level = "long" + + +def setup_parser(subparser): + setup_parser.parser = subparser + subparsers = subparser.add_subparsers(help='buildcache sub-commands') + + create = subparsers.add_parser('create') + create.add_argument('-r', '--rel', action='store_true', + help="make all rpaths relative" + + " before creating tarballs.") + create.add_argument('-f', '--force', action='store_true', + help="overwrite tarball if it exists.") + create.add_argument('-y', '--yes-to-all', action='store_true', + help="answer yes to all create unsigned " + + "buildcache questions") + create.add_argument('-k', '--key', metavar='key', + type=str, default=None, + help="Key for signing.") + create.add_argument('-d', '--directory', metavar='directory', + type=str, default='.', + help="directory in which to save the tarballs.") + create.add_argument( + 'packages', nargs=argparse.REMAINDER, + help="specs of packages to create buildcache for") + create.set_defaults(func=createtarball) + + install = subparsers.add_parser('install') + install.add_argument('-f', '--force', action='store_true', + help="overwrite install directory if it exists.") + install.add_argument('-y', '--yes-to-all', action='store_true', + help="answer yes to all install unsigned " + + "buildcache questions") + install.add_argument( + 'packages', nargs=argparse.REMAINDER, + help="specs of packages to install biuldache for") + install.set_defaults(func=installtarball) + + listcache = subparsers.add_parser('list') + listcache.add_argument( + 'packages', nargs=argparse.REMAINDER, + help="specs of packages to search for") + listcache.set_defaults(func=listspecs) + + dlkeys = subparsers.add_parser('keys') + dlkeys.add_argument( + '-i', '--install', action='store_true', + help="install Keys pulled from mirror") + dlkeys.add_argument( + '-y', '--yes-to-all', action='store_true', + help="answer yes to all trust questions") + dlkeys.set_defaults(func=getkeys) + + +def createtarball(args): + if not args.packages: + tty.die("build cache file creation requires at least one" + + " installed package argument") + pkgs = set(args.packages) + specs = set() + outdir = os.getcwd() + if args.directory: + outdir = args.directory + signkey = None + if args.key: + signkey = args.key + yes_to_all = False + force = False + relative = False + if args.yes_to_all: + yes_to_all = True + if args.force: + force = True + if args.rel: + relative = True + for pkg in pkgs: + for spec in spack.cmd.parse_specs(pkg, concretize=True): + specs.add(spec) + tty.msg('recursing dependencies') + for d, node in spec.traverse(order='post', + depth=True, + deptype=('link', 'run'), + deptype_query='run'): + if not node.external: + tty.msg('adding dependency %s' % node.format()) + specs.add(node) + for spec in specs: + tty.msg('creating binary cache file for package %s ' % spec.format()) + try: + bindist.build_tarball(spec, outdir, force, + relative, yes_to_all, signkey) + except NoOverwriteException as e: + tty.warn("%s exists, use -f to force overwrite." % e) + except NoGpgException: + tty.warn("gpg2 is not available," + " use -y to create unsigned build caches") + except NoKeyException: + tty.warn("no default key available for signing," + " use -y to create unsigned build caches" + " or spack gpg init to create a default key") + except PickKeyException: + tty.warn("multi keys available for signing," + " use -y to create unsigned build caches" + " or -k to pick a key") + + +def installtarball(args): + if not args.packages: + tty.die("build cache file installation requires" + + " at least one package spec argument") + pkgs = set(args.packages) + specs, links = bindist.get_specs() + matches = set() + for spec in specs: + for pkg in pkgs: + if re.match(re.escape(pkg), str(spec)): + matches.add(spec) + if re.match(re.escape(pkg), '/%s' % spec.dag_hash()): + matches.add(spec) + + for match in matches: + install_tarball(match, args) + + +def install_tarball(spec, args): + s = spack.spec.Spec(spec) + yes_to_all = False + force = False + if args.yes_to_all: + yes_to_all = True + if args.force: + force = True + for d in s.dependencies(): + tty.msg("Installing buildcache for dependency spec %s" % d) + install_tarball(d, args) + package = spack.repo.get(spec) + if s.concrete and package.installed and not force: + tty.warn("Package for spec %s already installed." % spec.format(), + " Use -f flag to overwrite.") + else: + tarball = bindist.download_tarball(spec) + if tarball: + tty.msg('Installing buildcache for spec %s' % spec.format()) + try: + bindist.extract_tarball(spec, tarball, yes_to_all, force) + except NoOverwriteException as e: + tty.warn("%s exists. use -f to force overwrite." % e.args) + except NoVerifyException: + tty.die("Package spec file failed signature verification," + " use -y flag to install build cache") + except NoChecksumException: + tty.die("Package tarball failed checksum verification," + " use -y flag to install build cache") + finally: + spack.store.db.reindex(spack.store.layout) + else: + tty.die('Download of binary cache file for spec %s failed.' % + spec.format()) + + +def listspecs(args): + specs, links = bindist.get_specs() + if args.packages: + pkgs = set(args.packages) + for pkg in pkgs: + tty.msg("buildcache spec(s) matching %s \n" % pkg) + for spec in sorted(specs): + if re.search("^" + re.escape(pkg), str(spec)): + tty.msg('run "spack buildcache install /%s"' % + spec.dag_hash(7) + ' to install %s\n' % + spec.format()) + else: + tty.msg("buildcache specs ") + for spec in sorted(specs): + tty.msg('run "spack buildcache install /%s" to install %s\n' % + (spec.dag_hash(7), spec.format())) + + +def getkeys(args): + install = False + if args.install: + install = True + yes_to_all = False + if args.yes_to_all: + yes_to_all = True + bindist.get_keys(install, yes_to_all) + + +def buildcache(parser, args): + if args.func: + args.func(args) diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py new file mode 100644 index 00000000000..b4251d05cac --- /dev/null +++ b/lib/spack/spack/relocate.py @@ -0,0 +1,289 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os +import platform +import re +import spack +import spack.cmd +from spack.util.executable import Executable +from llnl.util.filesystem import filter_file +import llnl.util.tty as tty + + +def get_patchelf(): + """ + Builds and installs spack patchelf package on linux platforms + using the first concretized spec. + Returns the full patchelf binary path. + """ + # as we may need patchelf, find out where it is + if platform.system() == 'Darwin': + return None + patchelf_spec = spack.cmd.parse_specs("patchelf", concretize=True)[0] + patchelf = spack.repo.get(patchelf_spec) + if not patchelf.installed: + patchelf.do_install() + patchelf_executable = os.path.join(patchelf.prefix.bin, "patchelf") + return patchelf_executable + + +def get_existing_elf_rpaths(path_name): + """ + Return the RPATHS returned by patchelf --print-rpath path_name + as a list of strings. + """ + if platform.system() == 'Linux': + command = Executable(get_patchelf()) + output = command('--print-rpath', '%s' % + path_name, output=str, err=str) + return output.rstrip('\n').split(':') + else: + tty.die('relocation not supported for this platform') + return + + +def get_relative_rpaths(path_name, orig_dir, orig_rpaths): + """ + Replaces orig_dir with relative path from dirname(path_name) if an rpath + in orig_rpaths contains orig_path. Prefixes $ORIGIN + to relative paths and returns replacement rpaths. + """ + rel_rpaths = [] + for rpath in orig_rpaths: + if re.match(orig_dir, rpath): + rel = os.path.relpath(rpath, start=os.path.dirname(path_name)) + rel_rpaths.append('$ORIGIN/%s' % rel) + else: + rel_rpaths.append(rpath) + return rel_rpaths + + +def macho_get_paths(path_name): + """ + Examines the output of otool -l path_name for these three fields: + LC_ID_DYLIB, LC_LOAD_DYLIB, LC_RPATH and parses out the rpaths, + dependiencies and library id. + Returns these values. + """ + otool = Executable('otool') + output = otool("-l", path_name, output=str, err=str) + last_cmd = None + idpath = '' + rpaths = [] + deps = [] + for line in output.split('\n'): + match = re.search('( *[a-zA-Z]+ )(.*)', line) + if match: + lhs = match.group(1).lstrip().rstrip() + rhs = match.group(2) + match2 = re.search('(.*) \(.*\)', rhs) + if match2: + rhs = match2.group(1) + if lhs == 'cmd': + last_cmd = rhs + if lhs == 'path' and last_cmd == 'LC_RPATH': + rpaths.append(rhs) + if lhs == 'name' and last_cmd == 'LC_ID_DYLIB': + idpath = rhs + if lhs == 'name' and last_cmd == 'LC_LOAD_DYLIB': + deps.append(rhs) + return rpaths, deps, idpath + + +def macho_make_paths_relative(path_name, old_dir, rpaths, deps, idpath): + """ + Replace old_dir with relative path from dirname(path_name) + in rpaths and deps; idpaths are replaced with @rpath/basebane(path_name); + replacement are returned. + """ + id = None + nrpaths = [] + ndeps = [] + if idpath: + id = '@rpath/%s' % os.path.basename(idpath) + for rpath in rpaths: + if re.match(old_dir, rpath): + rel = os.path.relpath(rpath, start=os.path.dirname(path_name)) + nrpaths.append('@loader_path/%s' % rel) + else: + nrpaths.append(rpath) + for dep in deps: + if re.match(old_dir, dep): + rel = os.path.relpath(dep, start=os.path.dirname(path_name)) + ndeps.append('@loader_path/%s' % rel) + else: + ndeps.append(dep) + return nrpaths, ndeps, id + + +def macho_replace_paths(old_dir, new_dir, rpaths, deps, idpath): + """ + Replace old_dir with new_dir in rpaths, deps and idpath + and return replacements + """ + id = None + nrpaths = [] + ndeps = [] + if idpath: + id = idpath.replace(old_dir, new_dir) + for rpath in rpaths: + nrpath = rpath.replace(old_dir, new_dir) + nrpaths.append(nrpath) + for dep in deps: + ndep = dep.replace(old_dir, new_dir) + ndeps.append(ndep) + return nrpaths, ndeps, id + + +def modify_macho_object(path_name, old_dir, new_dir, relative): + """ + Modify MachO binary path_name by replacing old_dir with new_dir + or the relative path to spack install root. + The old install dir in LC_ID_DYLIB is replaced with the new install dir + using install_name_tool -id newid binary + The old install dir in LC_LOAD_DYLIB is replaced with the new install dir + using install_name_tool -change old new binary + The old install dir in LC_RPATH is replaced with the new install dir using + install_name_tool -rpath old new binary + """ + # avoid error message for libgcc_s + if 'libgcc_' in path_name: + return + rpaths, deps, idpath = macho_get_paths(path_name) + id = None + nrpaths = [] + ndeps = [] + if relative: + nrpaths, ndeps, id = macho_make_paths_relative(path_name, + old_dir, rpaths, + deps, idpath) + else: + nrpaths, ndeps, id = macho_replace_paths(old_dir, new_dir, rpaths, + deps, idpath) + install_name_tool = Executable('install_name_tool') + if id: + install_name_tool('-id', id, path_name, output=str, err=str) + + for orig, new in zip(deps, ndeps): + install_name_tool('-change', orig, new, path_name) + + for orig, new in zip(rpaths, nrpaths): + install_name_tool('-rpath', orig, new, path_name) + return + + +def get_filetype(path_name): + """ + Return the output of file path_name as a string to identify file type. + """ + file = Executable('file') + file.add_default_env('LC_ALL', 'C') + output = file('-b', '-h', '%s' % path_name, + output=str, err=str) + return output.strip() + + +def modify_elf_object(path_name, orig_rpath, new_rpath): + """ + Replace orig_rpath with new_rpath in RPATH of elf object path_name + """ + if platform.system() == 'Linux': + new_joined = ':'.join(new_rpath) + patchelf = Executable(get_patchelf()) + patchelf('--force-rpath', '--set-rpath', '%s' % new_joined, + '%s' % path_name, output=str, cmd=str) + else: + tty.die('relocation not supported for this platform') + + +def needs_binary_relocation(filetype): + """ + Check whether the given filetype is a binary that may need relocation. + """ + retval = False + if "relocatable" in filetype: + return False + if platform.system() == 'Darwin': + return ('Mach-O' in filetype) + elif platform.system() == 'Linux': + return ('ELF' in filetype) + else: + tty.die("Relocation not implemented for %s" % platform.system()) + return retval + + +def needs_text_relocation(filetype): + """ + Check whether the given filetype is text that may need relocation. + """ + return ("text" in filetype) + + +def relocate_binary(path_name, old_dir, new_dir): + """ + Change old_dir to new_dir in RPATHs of elf or mach-o file path_name + """ + if platform.system() == 'Darwin': + modify_macho_object(path_name, old_dir, new_dir, relative=False) + elif platform.system() == 'Linux': + orig_rpaths = get_existing_elf_rpaths(path_name) + new_rpaths = substitute_rpath(orig_rpaths, old_dir, new_dir) + modify_elf_object(path_name, orig_rpaths, new_rpaths) + else: + tty.die("Relocation not implemented for %s" % platform.system()) + + +def make_binary_relative(path_name, old_dir): + """ + Make RPATHs relative to old_dir in given elf or mach-o file path_name + """ + if platform.system() == 'Darwin': + new_dir = '' + modify_macho_object(path_name, old_dir, new_dir, relative=True) + elif platform.system() == 'Linux': + orig_rpaths = get_existing_elf_rpaths(path_name) + new_rpaths = get_relative_rpaths(path_name, old_dir, orig_rpaths) + modify_elf_object(path_name, orig_rpaths, new_rpaths) + else: + tty.die("Prelocation not implemented for %s" % platform.system()) + + +def relocate_text(path_name, old_dir, new_dir): + """ + Replace old path with new path in text file path_name + """ + filter_file("r'%s'" % old_dir, "r'%s'" % new_dir, path_name) + + +def substitute_rpath(orig_rpath, topdir, new_root_path): + """ + Replace topdir with new_root_path RPATH list orig_rpath + """ + new_rpaths = [] + for path in orig_rpath: + new_rpath = path.replace(topdir, new_root_path) + new_rpaths.append(new_rpath) + return new_rpaths diff --git a/lib/spack/spack/test/packaging.py b/lib/spack/spack/test/packaging.py new file mode 100644 index 00000000000..bac8bf980fe --- /dev/null +++ b/lib/spack/spack/test/packaging.py @@ -0,0 +1,304 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +""" +This test checks the binary packaging infrastructure +""" +import pytest +import spack +import spack.store +from spack.fetch_strategy import URLFetchStrategy, FetchStrategyComposite +from spack.spec import Spec +import spack.binary_distribution as bindist +from llnl.util.filesystem import join_path, mkdirp +import argparse +import spack.cmd.buildcache as buildcache +from spack.relocate import * +import os +import stat +import sys +import shutil +from spack.util.executable import ProcessError + + +@pytest.fixture(scope='function') +def testing_gpg_directory(tmpdir): + old_gpg_path = spack.util.gpg.GNUPGHOME + spack.util.gpg.GNUPGHOME = str(tmpdir.join('gpg')) + yield + spack.util.gpg.GNUPGHOME = old_gpg_path + + +def has_gnupg2(): + try: + spack.util.gpg.Gpg.gpg()('--version', output=os.devnull) + return True + except ProcessError: + return False + + +def fake_fetchify(url, pkg): + """Fake the URL for a package so it downloads from a file.""" + fetcher = FetchStrategyComposite() + fetcher.append(URLFetchStrategy(url)) + pkg.fetcher = fetcher + + +@pytest.mark.usefixtures('install_mockery', 'testing_gpg_directory') +def test_packaging(mock_archive, tmpdir): + # tweak patchelf to only do a download + spec = Spec("patchelf") + spec.concretize() + pkg = spack.repo.get(spec) + fake_fetchify(pkg.fetcher, pkg) + mkdirp(join_path(pkg.prefix, "bin")) + patchelfscr = join_path(pkg.prefix, "bin", "patchelf") + f = open(patchelfscr, 'w') + body = """#!/bin/bash +echo $PATH""" + f.write(body) + f.close() + st = os.stat(patchelfscr) + os.chmod(patchelfscr, st.st_mode | stat.S_IEXEC) + + # Install the test package + spec = Spec('trivial-install-test-package') + spec.concretize() + assert spec.concrete + pkg = spack.repo.get(spec) + fake_fetchify(mock_archive.url, pkg) + pkg.do_install() + + # Put some non-relocatable file in there + filename = join_path(spec.prefix, "dummy.txt") + with open(filename, "w") as script: + script.write(spec.prefix) + + # Create the build cache and + # put it directly into the mirror + + mirror_path = join_path(tmpdir, 'test-mirror') + specs = [spec] + spack.mirror.create( + mirror_path, specs, no_checksum=True + ) + + # register mirror with spack config + mirrors = {'spack-mirror-test': 'file://' + mirror_path} + spack.config.update_config('mirrors', mirrors) + + stage = spack.stage.Stage( + mirrors['spack-mirror-test'], name="build_cache", keep=True) + stage.create() + # setup argument parser + parser = argparse.ArgumentParser() + buildcache.setup_parser(parser) + + # Create a private key to sign package with if gpg2 available + if has_gnupg2(): + spack.util.gpg.Gpg.create(name='test key 1', expires='0', + email='spack@googlegroups.com', + comment='Spack test key') + # Create build cache with signing + args = parser.parse_args(['create', '-d', mirror_path, str(spec)]) + buildcache.buildcache(parser, args) + + # Uninstall the package + pkg.do_uninstall(force=True) + + # test overwrite install + args = parser.parse_args(['install', '-f', str(spec)]) + buildcache.buildcache(parser, args) + + # create build cache with relative path and signing + args = parser.parse_args( + ['create', '-d', mirror_path, '-f', '-r', str(spec)]) + buildcache.buildcache(parser, args) + + # Uninstall the package + pkg.do_uninstall(force=True) + + # install build cache with verification + args = parser.parse_args(['install', str(spec)]) + buildcache.install_tarball(spec, args) + + # test overwrite install + args = parser.parse_args(['install', '-f', str(spec)]) + buildcache.buildcache(parser, args) + + else: + # create build cache without signing + args = parser.parse_args( + ['create', '-d', mirror_path, '-y', str(spec)]) + buildcache.buildcache(parser, args) + + # Uninstall the package + pkg.do_uninstall(force=True) + + # install build cache without verification + args = parser.parse_args(['install', '-y', str(spec)]) + buildcache.install_tarball(spec, args) + + # test overwrite install without verification + args = parser.parse_args(['install', '-f', '-y', str(spec)]) + buildcache.buildcache(parser, args) + + # create build cache with relative path + args = parser.parse_args( + ['create', '-d', mirror_path, '-f', '-r', '-y', str(spec)]) + buildcache.buildcache(parser, args) + + # Uninstall the package + pkg.do_uninstall(force=True) + + # install build cache + args = parser.parse_args(['install', '-y', str(spec)]) + buildcache.install_tarball(spec, args) + + # test overwrite install + args = parser.parse_args(['install', '-f', '-y', str(spec)]) + buildcache.buildcache(parser, args) + + # Validate the relocation information + buildinfo = bindist.read_buildinfo_file(spec.prefix) + assert(buildinfo['relocate_textfiles'] == ['dummy.txt']) + + args = parser.parse_args(['list']) + buildcache.buildcache(parser, args) + + args = parser.parse_args(['list', 'trivial']) + buildcache.buildcache(parser, args) + + # Copy a key to the mirror to have something to download + shutil.copyfile(spack.mock_gpg_keys_path + '/external.key', + mirror_path + '/external.key') + + args = parser.parse_args(['keys']) + buildcache.buildcache(parser, args) + + # unregister mirror with spack config + mirrors = {} + spack.config.update_config('mirrors', mirrors) + shutil.rmtree(mirror_path) + stage.destroy() + + +def test_relocate(): + assert (needs_binary_relocation('relocatable') is False) + + out = macho_make_paths_relative('/Users/Shares/spack/pkgC/lib/libC.dylib', + '/Users/Shared/spack', + ('/Users/Shared/spack/pkgA/lib', + '/Users/Shared/spack/pkgB/lib', + '/usr/local/lib'), + ('/Users/Shared/spack/pkgA/libA.dylib', + '/Users/Shared/spack/pkgB/libB.dylib', + '/usr/local/lib/libloco.dylib'), + '/Users/Shared/spack/pkgC/lib/libC.dylib') + assert out == (['@loader_path/../../../../Shared/spack/pkgA/lib', + '@loader_path/../../../../Shared/spack/pkgB/lib', + '/usr/local/lib'], + ['@loader_path/../../../../Shared/spack/pkgA/libA.dylib', + '@loader_path/../../../../Shared/spack/pkgB/libB.dylib', + '/usr/local/lib/libloco.dylib'], + '@rpath/libC.dylib') + + out = macho_make_paths_relative('/Users/Shared/spack/pkgC/bin/exeC', + '/Users/Shared/spack', + ('/Users/Shared/spack/pkgA/lib', + '/Users/Shared/spack/pkgB/lib', + '/usr/local/lib'), + ('/Users/Shared/spack/pkgA/libA.dylib', + '/Users/Shared/spack/pkgB/libB.dylib', + '/usr/local/lib/libloco.dylib'), None) + + assert out == (['@loader_path/../../pkgA/lib', + '@loader_path/../../pkgB/lib', + '/usr/local/lib'], + ['@loader_path/../../pkgA/libA.dylib', + '@loader_path/../../pkgB/libB.dylib', + '/usr/local/lib/libloco.dylib'], None) + + out = macho_replace_paths('/Users/Shared/spack', + '/Applications/spack', + ('/Users/Shared/spack/pkgA/lib', + '/Users/Shared/spack/pkgB/lib', + '/usr/local/lib'), + ('/Users/Shared/spack/pkgA/libA.dylib', + '/Users/Shared/spack/pkgB/libB.dylib', + '/usr/local/lib/libloco.dylib'), + '/Users/Shared/spack/pkgC/lib/libC.dylib') + assert out == (['/Applications/spack/pkgA/lib', + '/Applications/spack/pkgB/lib', + '/usr/local/lib'], + ['/Applications/spack/pkgA/libA.dylib', + '/Applications/spack/pkgB/libB.dylib', + '/usr/local/lib/libloco.dylib'], + '/Applications/spack/pkgC/lib/libC.dylib') + + out = macho_replace_paths('/Users/Shared/spack', + '/Applications/spack', + ('/Users/Shared/spack/pkgA/lib', + '/Users/Shared/spack/pkgB/lib', + '/usr/local/lib'), + ('/Users/Shared/spack/pkgA/libA.dylib', + '/Users/Shared/spack/pkgB/libB.dylib', + '/usr/local/lib/libloco.dylib'), + None) + assert out == (['/Applications/spack/pkgA/lib', + '/Applications/spack/pkgB/lib', + '/usr/local/lib'], + ['/Applications/spack/pkgA/libA.dylib', + '/Applications/spack/pkgB/libB.dylib', + '/usr/local/lib/libloco.dylib'], + None) + + out = get_relative_rpaths( + '/usr/bin/test', '/usr', + ('/usr/lib', '/usr/lib64', '/opt/local/lib')) + assert out == ['$ORIGIN/../lib', '$ORIGIN/../lib64', '/opt/local/lib'] + + out = substitute_rpath( + ('/usr/lib', '/usr/lib64', '/opt/local/lib'), '/usr', '/opt') + assert out == ['/opt/lib', '/opt/lib64', '/opt/local/lib'] + + +@pytest.mark.skipif(sys.platform != 'darwin', + reason="only works with Mach-o objects") +def test_relocate_macho(): + get_patchelf() + assert (needs_binary_relocation('Mach-O') is True) + macho_get_paths('/bin/bash') + shutil.copyfile('/bin/bash', 'bash') + modify_macho_object('bash', '/usr', '/opt', False) + modify_macho_object('bash', '/usr', '/opt', True) + shutil.copyfile('/usr/lib/libncurses.5.4.dylib', 'libncurses.5.4.dylib') + modify_macho_object('libncurses.5.4.dylib', '/usr', '/opt', False) + modify_macho_object('libncurses.5.4.dylib', '/usr', '/opt', True) + + +@pytest.mark.skipif(sys.platform != 'linux2', + reason="only works with Elf objects") +def test_relocate_elf(): + assert (needs_binary_relocation('ELF') is True) diff --git a/var/spack/repos/builtin.mock/packages/patchelf/package.py b/var/spack/repos/builtin.mock/packages/patchelf/package.py new file mode 100644 index 00000000000..915f3df0c65 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/patchelf/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Patchelf(AutotoolsPackage): + """ + PatchELF is a small utility to modify the + dynamic linker and RPATH of ELF executables. + """ + + homepage = "https://nixos.org/patchelf.html" + url = "http://nixos.org/releases/patchelf/patchelf-0.8/patchelf-0.8.tar.gz" + + list_url = "http://nixos.org/releases/patchelf/" + list_depth = 1 + + version('0.9', '3c265508526760f233620f35d79c79fc') + version('0.8', '407b229e6a681ffb0e2cdd5915cb2d01') From b229b739de5074222edde249c145552cb3684cb9 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 15 Aug 2017 12:01:33 +0200 Subject: [PATCH 1479/2394] add older versions to package folly (#5088) --- var/spack/repos/builtin/packages/folly/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/folly/package.py b/var/spack/repos/builtin/packages/folly/package.py index 13b03de39b8..1be879ee80d 100644 --- a/var/spack/repos/builtin/packages/folly/package.py +++ b/var/spack/repos/builtin/packages/folly/package.py @@ -40,6 +40,11 @@ class Folly(AutotoolsPackage): url = "https://github.com/facebook/folly/archive/v2017.06.05.00.tar.gz" version('2017.06.05.00', 'a25e8d646702c3e0c1400f591e485a33') + version('2016.11.14.00', '88550acdb4d4b331c0ca9922039c8727') + version('2016.11.07.00', '2f605b20ad539bccdbfd361daa92081e') + version('2016.10.31.00', 'ab3049302792f8470cef64f3a29eedec') + version('2016.10.24.00', '0445efb7c16b5c32dfbb173157e54866') + version('2016.10.17.00', 'b7e01934a45c5036fab8fdc70e9eaf4d') depends_on('m4', type='build') depends_on('autoconf', type='build') From 5712fbfeb033e41e8979809f651f5ed6bd228c6e Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Tue, 15 Aug 2017 03:10:09 -0700 Subject: [PATCH 1480/2394] Use correct variant syntax to build zfp (#5099) `h5z-zfp` now builds zfp with correct bit stream word size; the syntax of the variant declaration did not work in previous versions of spack but does now --- var/spack/repos/builtin/packages/h5z-zfp/package.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/h5z-zfp/package.py b/var/spack/repos/builtin/packages/h5z-zfp/package.py index 0063c2fd37d..ddb03c64e0c 100644 --- a/var/spack/repos/builtin/packages/h5z-zfp/package.py +++ b/var/spack/repos/builtin/packages/h5z-zfp/package.py @@ -38,8 +38,7 @@ class H5zZfp(MakefilePackage): variant('fortran', default=True, description='Enable Fortran support') depends_on('hdf5') -# depends_on('zfp bsws=8') - depends_on('zfp') + depends_on('zfp bsws=8') @property def make_defs(self): From 43a634ca809195b81b935a1ddd083797af9b3a8f Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 15 Aug 2017 12:14:07 +0200 Subject: [PATCH 1481/2394] gcc: Add 7.2.0 (#5098) --- var/spack/repos/builtin/packages/gcc/package.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 0d31ef0dfc6..aef1158971a 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -40,6 +40,7 @@ class Gcc(AutotoolsPackage): list_url = 'http://ftp.gnu.org/gnu/gcc/' list_depth = 1 + version('7.2.0', 'ff370482573133a7fcdd96cd2f552292') version('7.1.0', '6bf56a2bca9dac9dbbf8e8d1036964a8') version('6.4.0', '11ba51a0cfb8471927f387c8895fe232') version('6.3.0', '677a7623c7ef6ab99881bc4e048debb6') @@ -159,10 +160,10 @@ class Gcc(AutotoolsPackage): def url_for_version(self, version): url = 'http://ftp.gnu.org/gnu/gcc/gcc-{0}/gcc-{0}.tar.{1}' - suffix = 'bz2' + suffix = 'xz' - if version >= Version('6.4.0') and version < Version('7.1.0'): - suffix = 'xz' + if version < Version('6.4.0') or version == Version('7.1.0'): + suffix = 'bz2' return url.format(version, suffix) From b52e54975850b04767e06d88d3009d675d73b163 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 15 Aug 2017 12:15:00 +0200 Subject: [PATCH 1482/2394] add version 0.2.10 to py-lazyarray (#5093) --- var/spack/repos/builtin/packages/py-lazyarray/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/py-lazyarray/package.py b/var/spack/repos/builtin/packages/py-lazyarray/package.py index 2af26242432..7ab655a20e9 100644 --- a/var/spack/repos/builtin/packages/py-lazyarray/package.py +++ b/var/spack/repos/builtin/packages/py-lazyarray/package.py @@ -32,7 +32,8 @@ class PyLazyarray(PythonPackage): homepage = "http://bitbucket.org/apdavison/lazyarray/" url = "https://pypi.io/packages/source/l/lazyarray/lazyarray-0.2.8.tar.gz" - version('0.2.8', '8e0072f0892b9fc0516e7048f96e9d74') + version('0.2.10', '336033357459e66cbca5543bf003a2ba') + version('0.2.8', '8e0072f0892b9fc0516e7048f96e9d74') depends_on('py-numpy@1.3:', type=('build', 'run')) depends_on('py-numpy@1.5:', type=('build', 'run'), when='^python@3:') From 8d4dec7430fbfe30a1fb7fb388f5aeaa4934ba75 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 15 Aug 2017 23:52:34 +0200 Subject: [PATCH 1483/2394] ncview: Fix download URL (#5103) --- var/spack/repos/builtin/packages/ncview/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py index a9a33421a1e..253f438b472 100644 --- a/var/spack/repos/builtin/packages/ncview/package.py +++ b/var/spack/repos/builtin/packages/ncview/package.py @@ -28,7 +28,7 @@ class Ncview(AutotoolsPackage): """Simple viewer for NetCDF files.""" homepage = "http://meteora.ucsd.edu/~pierce/ncview_home_page.html" - url = "https://fossies.org/linux/misc/ncview-2.1.7.tar.gz" + url = "ftp://cirrus.ucsd.edu/pub/ncview/ncview-2.1.7.tar.gz" version('2.1.7', 'debd6ca61410aac3514e53122ab2ba07') From 256cd68b279097d100340eceace00e425d1ccee9 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 15 Aug 2017 23:53:22 +0200 Subject: [PATCH 1484/2394] nco: Add patch to fix invalid conversion from char to char* (#5102) This patch is needed to be able to build nco with GCC 7. --- .../builtin/packages/nco/NUL-0-NULL.patch | 51 +++++++++++++++++++ .../repos/builtin/packages/nco/package.py | 3 ++ 2 files changed, 54 insertions(+) create mode 100644 var/spack/repos/builtin/packages/nco/NUL-0-NULL.patch diff --git a/var/spack/repos/builtin/packages/nco/NUL-0-NULL.patch b/var/spack/repos/builtin/packages/nco/NUL-0-NULL.patch new file mode 100644 index 00000000000..b1d17c0ecca --- /dev/null +++ b/var/spack/repos/builtin/packages/nco/NUL-0-NULL.patch @@ -0,0 +1,51 @@ +From fec59e92795bfac5779d09cd5d96f10cd1c3e6af Mon Sep 17 00:00:00 2001 +From: Charlie Zender +Date: Thu, 1 Jun 2017 20:18:02 -0700 +Subject: [PATCH] Patch for NUL = '\0' != NULL errors in ncap2 supplied by + Manfred Schwarb + +--- + src/nco++/fmc_all_cls.cc | 8 ++++---- + 2 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/src/nco++/fmc_all_cls.cc b/src/nco++/fmc_all_cls.cc +index 3cccc17..79e3240 100644 +--- a/src/nco++/fmc_all_cls.cc ++++ b/src/nco++/fmc_all_cls.cc +@@ -4796,14 +4796,14 @@ var_sct *vlist_cls::push_fnd(bool &is_mtd, std::vector &vtr_args, fmc_cl + { + case PATOI: + { +- char *pend='\0'; ++ char *pend=NULL; + nco_int iout; + iout=0; + + // allows whites space prefix & suffix + iout=(nco_int)std::strtol(buffer,&pend,10); + +- if( pend !=buffer && (*pend=='\0'|| *pend==' ') ) ++ if(pend != buffer && (*pend == '\0'|| *pend == ' ')) + ierr=0; + else + ierr=errno; +@@ -4817,14 +4817,14 @@ var_sct *vlist_cls::push_fnd(bool &is_mtd, std::vector &vtr_args, fmc_cl + + case PATOL: + { +- char *pend='\0'; ++ char *pend=NULL; + nco_int64 lout; + lout=0; + + // allows whites space prefix & suffix + lout=(nco_int64)std::strtoll(buffer,&pend,10); + +- if( pend !=buffer && (*pend=='\0'|| *pend==' ') ) ++ if( pend !=buffer && (*pend == '\0' || *pend == ' ')) + ierr=0; + else + ierr=errno; +-- +2.7.4 + diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 9a96685d54b..85af71cbdf8 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -41,6 +41,9 @@ class Nco(AutotoolsPackage): version('4.6.1', 'ef43cc989229c2790a9094bd84728fd8') version('4.5.5', '9f1f1cb149ad6407c5a03c20122223ce') + # https://github.com/nco/nco/issues/43 + patch('NUL-0-NULL.patch') + variant('doc', default=False, description='Build/install NCO TexInfo-based documentation') # See "Compilation Requirements" at: From 8df9f9e1f4ad747759dc69acd59266b847534353 Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 15 Aug 2017 23:54:39 +0200 Subject: [PATCH 1485/2394] Fix ffmpeg (add missing yasm dependency) (#5087) --- var/spack/repos/builtin/packages/ffmpeg/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/ffmpeg/package.py b/var/spack/repos/builtin/packages/ffmpeg/package.py index 80017f5eb6c..9a6f6c18ad5 100644 --- a/var/spack/repos/builtin/packages/ffmpeg/package.py +++ b/var/spack/repos/builtin/packages/ffmpeg/package.py @@ -37,6 +37,8 @@ class Ffmpeg(AutotoolsPackage): variant('shared', default=True, description='build shared libraries') + depends_on('yasm@1.2.0:') + def configure_args(self): spec = self.spec config_args = ['--enable-pic'] From 7b517916254ec1a6a4f6e09de3e861145c17d8a1 Mon Sep 17 00:00:00 2001 From: Brian Van Essen Date: Tue, 15 Aug 2017 14:57:11 -0700 Subject: [PATCH 1486/2394] Openblas clang fix (#5065) * Added a package for the MDAnalysis toolkit. * Openblas now builds with clang when using 0.2.20 * Fixed flake8 error * Added a guard to fail for openblas+openmp when on OSX systems * Changed the guard to look for Apple's build of clang and to improve the error messages. * Removed blank line. --- .../repos/builtin/packages/openblas/package.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 7fe07a283e7..73b89fcd233 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -84,12 +84,15 @@ def check_compilers(self): 'OpenBLAS requires both C and Fortran compilers!' ) # Add support for OpenMP - if '+openmp' in self.spec and self.spec.satisfies('%clang'): - # Openblas (as of 0.2.18) hardcoded that OpenMP cannot - # be used with any (!) compiler named clang, bummer. - raise InstallError( - 'OpenBLAS does not support OpenMP with clang!' - ) + if (('+openmp' in self.spec) and self.spec.satisfies('%clang')): + if str(self.spec.compiler.version).endswith('-apple'): + raise InstallError("Apple's clang does not support OpenMP") + if '@:0.2.19' in self.spec: + # Openblas (as of 0.2.19) hardcoded that OpenMP cannot + # be used with any (!) compiler named clang, bummer. + raise InstallError( + 'OpenBLAS @:0.2.19 does not support OpenMP with clang!' + ) @property def make_defs(self): From 450b19b6e0e92e71f945a50048d4c34ca35d619b Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Tue, 15 Aug 2017 15:17:02 -0700 Subject: [PATCH 1487/2394] fix reference to spec in apex package (#5076) * fix reference to spec in apex package * fixed md5 sums for ompt-openmp and apex packages --- var/spack/repos/builtin/packages/apex/package.py | 3 ++- var/spack/repos/builtin/packages/ompt-openmp/package.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/apex/package.py b/var/spack/repos/builtin/packages/apex/package.py index 4c1c0466ebf..0c04968a67c 100644 --- a/var/spack/repos/builtin/packages/apex/package.py +++ b/var/spack/repos/builtin/packages/apex/package.py @@ -29,7 +29,7 @@ class Apex(CMakePackage): homepage = "http://github.com/khuck/xpress-apex" url = "http://github.com/khuck/xpress-apex/archive/v0.1.tar.gz" - version('0.1', '8b95f0c0313da1575960d3ad69f18e75') + version('0.1', 'e224a0b9033e23a9697ce2a3c307a0a3') depends_on("binutils+libiberty") depends_on("boost@1.54:") @@ -38,6 +38,7 @@ class Apex(CMakePackage): depends_on("ompt-openmp") def cmake_args(self): + spec = self.spec return [ '-DBOOST_ROOT=%s' % spec['boost'].prefix, '-DUSE_BFD=TRUE', diff --git a/var/spack/repos/builtin/packages/ompt-openmp/package.py b/var/spack/repos/builtin/packages/ompt-openmp/package.py index f751dedef08..387edd7c646 100644 --- a/var/spack/repos/builtin/packages/ompt-openmp/package.py +++ b/var/spack/repos/builtin/packages/ompt-openmp/package.py @@ -35,7 +35,7 @@ class OmptOpenmp(CMakePackage): homepage = "https://github.com/OpenMPToolsInterface/LLVM-openmp" url = "http://github.com/khuck/LLVM-openmp/archive/v0.1.tar.gz" - version('0.1', '2334e6a84b52da41b27afd9831ed5370') + version('0.1', '59d6933a2e9b7d1423fb9c7c77d5663f') depends_on('cmake@2.8:', type='build') From 619e298b8da884a3211cda461885971ef88244d4 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 16 Aug 2017 00:05:16 -0500 Subject: [PATCH 1488/2394] cdhit: new package (#5085) --- .../repos/builtin/packages/cdhit/package.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cdhit/package.py diff --git a/var/spack/repos/builtin/packages/cdhit/package.py b/var/spack/repos/builtin/packages/cdhit/package.py new file mode 100644 index 00000000000..8651466ef5c --- /dev/null +++ b/var/spack/repos/builtin/packages/cdhit/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cdhit(MakefilePackage): + """CD-HIT is a very widely used program for clustering and comparing + protein or nucleotide sequences.""" + + homepage = "http://cd-hit.org/" + url = "https://github.com/weizhongli/cdhit/archive/V4.6.8.tar.gz" + + version('4.6.8', 'bdd73ec0cceab6653aab7b31b57c5a8b') + + variant('openmp', default=True, description='Compile with multi-threading support') + + depends_on('perl', type=('build', 'run')) + + def build(self, spec, prefix): + mkdirp(prefix.bin) + if '~openmp' in spec: + make('openmp=no') + else: + make() + + def setup_environment(self, spack_env, run_env): + spack_env.set('PREFIX', prefix.bin) From 480764de5caf909702cb51f08c4465ff9d9b2109 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 16 Aug 2017 15:29:54 +0200 Subject: [PATCH 1489/2394] Add package py-pybind11 (#5096) * py-pybind11 package was missing * fixed license file * attempt to fix flake8 * use python3 compatible python detection --- .../builtin/packages/py-pybind11/package.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pybind11/package.py diff --git a/var/spack/repos/builtin/packages/py-pybind11/package.py b/var/spack/repos/builtin/packages/py-pybind11/package.py new file mode 100644 index 00000000000..0fabae48bc0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pybind11/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPybind11(CMakePackage): + """pybind11 -- Seamless operability between C++11 and Python. + pybind11 is a lightweight header-only library that exposes C++ types in + Python and vice versa, mainly to create Python bindings of existing C++ + code. Its goals and syntax are similar to the excellent Boost.Python + library by David Abrahams: to minimize boilerplate code in traditional + extension modules by inferring type information using compile-time + introspection.""" + + homepage = "https://pybind11.readthedocs.io" + url = "https://github.com/pybind/pybind11/archive/v2.1.0.tar.gz" + + version('2.1.1', '5518988698df937ccee53fb6ba91d12a') + version('2.1.0', '3cf07043d677d200720c928569635e12') + + depends_on('py-pytest', type=('build')) + + extends('python') + + def cmake_args(self): + args = [] + args.append('-DPYTHON_EXECUTABLE:FILEPATH=%s' + % self.spec['python'].command.path) + return args From dbdf38f61738efe4fb4b6eb6b6b64c0f7dc6d0c5 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 16 Aug 2017 17:26:39 +0200 Subject: [PATCH 1490/2394] Add package PyPytestXdist and dependencies (#5095) * Add py-pytest-xdist * fixed licenses * attempt to fix flake8 * added missing build dependency --- .../builtin/packages/py-apipkg/package.py | 36 +++++++++++++++++ .../builtin/packages/py-execnet/package.py | 39 +++++++++++++++++++ .../packages/py-pytest-xdist/package.py | 39 +++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-apipkg/package.py create mode 100644 var/spack/repos/builtin/packages/py-execnet/package.py create mode 100644 var/spack/repos/builtin/packages/py-pytest-xdist/package.py diff --git a/var/spack/repos/builtin/packages/py-apipkg/package.py b/var/spack/repos/builtin/packages/py-apipkg/package.py new file mode 100644 index 00000000000..2e125cb1a9c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-apipkg/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyApipkg(PythonPackage): + """apipkg: namespace control and lazy-import mechanism""" + + homepage = "https://pypi.python.org/pypi/apipkg" + url = "https://pypi.io/packages/source/a/apipkg/apipkg-1.4.tar.gz" + + version('1.4', '17e5668601a2322aff41548cb957e7c8') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-execnet/package.py b/var/spack/repos/builtin/packages/py-execnet/package.py new file mode 100644 index 00000000000..dbfa15007ec --- /dev/null +++ b/var/spack/repos/builtin/packages/py-execnet/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyExecnet(PythonPackage): + """execnet provides a share-nothing model with channel-send/receive + communication for distributing execution across many Python interpreters + across version, platform and network barriers.""" + + homepage = "http://codespeak.net/execnet" + url = "https://pypi.io/packages/source/e/execnet/execnet-1.4.1.tar.gz" + + version('1.4.1', '0ff84b6c79d0dafb7e2971629c4d127a') + + depends_on('py-setuptools', type='build') + depends_on('py-apipkg@1.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pytest-xdist/package.py b/var/spack/repos/builtin/packages/py-pytest-xdist/package.py new file mode 100644 index 00000000000..f82fa130394 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pytest-xdist/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPytestXdist(PythonPackage): + """py.test xdist plugin for distributed testing and loop-on-failing mode""" + + homepage = "https://github.com/pytest-dev/pytest-xdist" + url = "https://pypi.io/packages/source/p/pytest-xdist/pytest-xdist-1.16.0.tar.gz" + + version('1.16.0', '68dabf856981ad93b14960b098b05bff') + + depends_on('py-setuptools', type='build') + depends_on('py-execnet@1.1:', type=('build', 'run')) + depends_on('py-pytest@2.7.0:', type=('build', 'run')) + depends_on('py-py@1.4.22:', type=('build', 'run')) From f6a452d3ad1352c05d3f971aa2e12f993daf0832 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 16 Aug 2017 17:29:02 +0200 Subject: [PATCH 1491/2394] Add package rr (#5105) * Add package rr * Flake8 fixes * fix flake8 no2 * add future dependency stub, add hw dependency and clean up * add missing self --- .../repos/builtin/packages/rr/package.py | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 var/spack/repos/builtin/packages/rr/package.py diff --git a/var/spack/repos/builtin/packages/rr/package.py b/var/spack/repos/builtin/packages/rr/package.py new file mode 100644 index 00000000000..5337d7eef43 --- /dev/null +++ b/var/spack/repos/builtin/packages/rr/package.py @@ -0,0 +1,66 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Rr(CMakePackage): + """Application execution recorder, player and debugger""" + homepage = "http://rr-project.org/" + url = "https://github.com/mozilla/rr/archive/4.5.0.tar.gz" + + version('4.5.0', '1ec0aed0559b81143f59a200eeb302ef') + version('4.4.0', '6d1cbb4fafbf6711114369907cf1efb1') + version('4.3.0', '31470564e8b7eb317f619e4ef2244082') + + depends_on('gdb') + depends_on('git') + depends_on('zlib') + # depends_on('capnproto', when='@4.6:') # not yet in spack + # depends_on('libcapnp') # needed for future releases + depends_on('pkg-config', type='build') + depends_on('py-pexpect', type='build') # actually tests + + # rr needs architecture Nehalem and beyond, how can spack + # test this? + + # Only 'Release' is supported at the moment + variant('build_type', default='Release', + description='The build type to build', + values=('Release')) + + def patch(self): + # because otherwise CMake would try and fail to set RPATH of + # rr_exec_stub + filter_file( + r'^(install\(TARGETS .*)\s*rr_exec_stub', r'\1', 'CMakeLists.txt') + + def cmake_args(self): + return ['-Ddisable32bit=ON'] + + @run_after('install') + def install_stub(self): + with working_dir(self.build_directory): + mkdirp(self.prefix.bin) + install('bin/rr_exec_stub', self.prefix.bin) From 2f9b0f6dd693ede64596d86308f0b6c1b534329e Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 16 Aug 2017 10:34:52 -0500 Subject: [PATCH 1492/2394] Fix future import in hdf5-blosc (#5010) --- var/spack/repos/builtin/packages/hdf5-blosc/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index 95d37cc02f0..f8b1c5e363f 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -22,7 +22,6 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from __future__ import print_function import os import shutil import sys From 95915b81d09632f353ded1dbac77adc3f21c9dce Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Wed, 16 Aug 2017 17:48:02 +0200 Subject: [PATCH 1493/2394] otf2: Add 2.1 (#5108) --- var/spack/repos/builtin/packages/otf2/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/otf2/package.py b/var/spack/repos/builtin/packages/otf2/package.py index e89fc971d59..cd338f06c6c 100644 --- a/var/spack/repos/builtin/packages/otf2/package.py +++ b/var/spack/repos/builtin/packages/otf2/package.py @@ -34,6 +34,7 @@ class Otf2(AutotoolsPackage): homepage = "http://www.vi-hps.org/projects/score-p" url = "http://www.vi-hps.org/upload/packages/otf2/otf2-1.4.tar.gz" + version('2.1', 'e2994e53d9b7c2cbd0c4f564d638751e') version('2.0', '5b546188b25bc1c4e285e06dddf75dfc') version('1.5.1', '16a9df46e0da78e374f5d12c8cdc1109') version('1.4', 'a23c42e936eb9209c4e08b61c3cf5092') From 3a0e9f29e6d14d1cda6ef28a07f40205384f2a24 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Wed, 16 Aug 2017 17:48:20 +0200 Subject: [PATCH 1494/2394] scorep: Fix build with GCC 7 (#5107) --- .../repos/builtin/packages/scorep/gcc7.patch | 42 +++++++++++++++++++ .../repos/builtin/packages/scorep/package.py | 2 + 2 files changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/scorep/gcc7.patch diff --git a/var/spack/repos/builtin/packages/scorep/gcc7.patch b/var/spack/repos/builtin/packages/scorep/gcc7.patch new file mode 100644 index 00000000000..7383ee15ba4 --- /dev/null +++ b/var/spack/repos/builtin/packages/scorep/gcc7.patch @@ -0,0 +1,42 @@ +diff -ru scorep-3.1.orig/src/adapters/compiler/gcc-plugin/scorep_plugin_gcc_version_compatibility.h scorep-3.1/src/adapters/compiler/gcc-plugin/scorep_plugin_gcc_version_compatibility.h +--- scorep-3.1.orig/src/adapters/compiler/gcc-plugin/scorep_plugin_gcc_version_compatibility.h 2017-08-15 14:46:27.353875030 +0200 ++++ scorep-3.1/src/adapters/compiler/gcc-plugin/scorep_plugin_gcc_version_compatibility.h 2017-08-15 14:52:18.458118812 +0200 +@@ -27,6 +27,11 @@ + DECL_SECTION_NAME( decl ) = build_string( strlen( section ), section ) + #endif + ++#if SCOREP_GCC_PLUGIN_TARGET_VERSION < 7000 ++#define SET_DECL_ALIGN( decl, align ) \ ++ DECL_ALIGN( decl ) = ( align ) ++#endif ++ + #if SCOREP_GCC_PLUGIN_TARGET_VERSION >= 5000 + #define varpool_finalize_decl( decl ) varpool_node::finalize_decl( decl ) + #define cgraph_get_node( decl ) cgraph_node::get( decl ) +diff -ru scorep-3.1.orig/src/adapters/compiler/gcc-plugin/scorep_plugin_inst_descriptor.inc.c scorep-3.1/src/adapters/compiler/gcc-plugin/scorep_plugin_inst_descriptor.inc.c +--- scorep-3.1.orig/src/adapters/compiler/gcc-plugin/scorep_plugin_inst_descriptor.inc.c 2017-08-15 14:46:27.353875030 +0200 ++++ scorep-3.1/src/adapters/compiler/gcc-plugin/scorep_plugin_inst_descriptor.inc.c 2017-08-15 14:52:56.220854113 +0200 +@@ -194,7 +194,7 @@ + TREE_TYPE( region_descr_value ) ); + + /* Align the struct generously, so that it works for 32 and 64 bit */ +- DECL_ALIGN( region_descr_var ) = 64 * BITS_PER_UNIT; ++ SET_DECL_ALIGN( region_descr_var, 64 * BITS_PER_UNIT ); + DECL_USER_ALIGN( region_descr_var ) = 1; + + /* The struct is 64 bytes, because of reserved entries */ +diff -ru scorep-3.1.orig/src/adapters/compiler/gcc-plugin/scorep_plugin_tree-flow.h scorep-3.1/src/adapters/compiler/gcc-plugin/scorep_plugin_tree-flow.h +--- scorep-3.1.orig/src/adapters/compiler/gcc-plugin/scorep_plugin_tree-flow.h 2017-08-15 14:46:27.353875030 +0200 ++++ scorep-3.1/src/adapters/compiler/gcc-plugin/scorep_plugin_tree-flow.h 2017-08-15 14:49:26.163888408 +0200 +@@ -23,6 +23,11 @@ + #include "stringpool.h" + #include "basic-block.h" + #include "tree-ssa-alias.h" ++ ++#if SCOREP_GCC_PLUGIN_TARGET_VERSION >= 7000 ++#include "tree-vrp.h" ++#endif ++ + #include "tree-ssanames.h" + #include "internal-fn.h" + #include "gimple-expr.h" diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index 05482bd0c46..59665a482d4 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -40,6 +40,8 @@ class Scorep(AutotoolsPackage): version('1.4.2', '3b9a042b13bdd5836452354e6567f71e') version('1.3', '9db6f957b7f51fa01377a9537867a55c') + patch('gcc7.patch') + ########## # Dependencies for SCORE-P are quite tight. See the homepage for more # information. From ad8c60239f0f2b8e6d6b95c9e3a5010e77ed0b24 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 16 Aug 2017 10:48:39 -0500 Subject: [PATCH 1495/2394] mpiblast: new package (#5106) --- .../mpiblast/mpiBLAST-1.6.0-patch-110806 | 182 ++++++++++++++++++ .../builtin/packages/mpiblast/package.py | 51 +++++ 2 files changed, 233 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mpiblast/mpiBLAST-1.6.0-patch-110806 create mode 100644 var/spack/repos/builtin/packages/mpiblast/package.py diff --git a/var/spack/repos/builtin/packages/mpiblast/mpiBLAST-1.6.0-patch-110806 b/var/spack/repos/builtin/packages/mpiblast/mpiBLAST-1.6.0-patch-110806 new file mode 100644 index 00000000000..05de8ed074f --- /dev/null +++ b/var/spack/repos/builtin/packages/mpiblast/mpiBLAST-1.6.0-patch-110806 @@ -0,0 +1,182 @@ +diff -rwu mpiblast-1.6.0/ncbi/corelib/ncbienv.c mpiblast-1.6.0-patched/ncbi/corelib/ncbienv.c +--- mpiblast-1.6.0/ncbi/corelib/ncbienv.c 2009-11-22 01:17:48.000000000 -0500 ++++ mpiblast-1.6.0-patched/ncbi/corelib/ncbienv.c 2011-08-06 17:10:08.000000000 -0400 +@@ -1932,7 +1932,7 @@ + static char **targv = NULL; + + +-#if defined(WIN_MAC) ++#if defined(WIN_MAC) || defined(OS_UNIX_DARWIN) + static FSSpec apFileSpec; + static Str255 apName; + static Handle apParam; +@@ -2047,7 +2047,7 @@ + } + } + #endif /* defined(OS_UNIX_DARWIN) */ +-#endif /* defined(WIN_MAC) */ ++#endif /* defined(WIN_MAC) || defined(OS_UNIX_DARWIN) */ + + + #if defined(OS_MSWIN) || defined(OS_VMS) +diff -rwu mpiblast-1.6.0/ncbi/make/makedis.csh mpiblast-1.6.0-patched/ncbi/make/makedis.csh +--- mpiblast-1.6.0/ncbi/make/makedis.csh 2010-06-28 21:04:36.000000000 -0400 ++++ mpiblast-1.6.0-patched/ncbi/make/makedis.csh 2011-08-06 17:06:42.000000000 -0400 +@@ -1,6 +1,6 @@ + #!/bin/csh -f + # +-# $Id: makedis.csh 148594 2008-12-30 15:11:36Z ucko $ ++# $Id: makedis.csh 179886 2010-01-04 17:28:02Z ucko $ + # + ## PUBLIC DOMAIN NOTICE + # National Center for Biotechnology Information +@@ -54,7 +54,7 @@ + endif + + ls -l $tar_file +- tar xvf $tar_file ++ tar xf $tar_file + else + # make sure that ncbi/build directory exists + if ( ! -d "ncbi/build" ) then +@@ -74,6 +74,7 @@ + set HAVE_MAC=0 + #we will try to build OpenGL version of vibrant + set HAVE_OGL=1 ++set MPBL_HAVE_MAC=0 + + switch ($os) + case SunOS: +@@ -164,7 +165,7 @@ + gcc -v + switch (`uname -m`) + case "ia64": +- if (-e `which ecc`) then ++ if (-e `which icc`) then + set platform=linux_ecc + else + set platform=linux +@@ -253,7 +254,11 @@ + endif + endif + set HAVE_MOTIF=0 +- set HAVE_MAC=1 ++#MPIBLAST <<< ++# set HAVE_MAC=1 ++ set MPBL_HAVE_MAC=1 ++ set HAVE_MAC=0 ++#MPIBLAST + breaksw + case NetBSD: + set platform=netbsd +@@ -319,6 +324,7 @@ + goto BADPLATFORM + endif + ++ + set noglob + # take the file $NCBI_DOT_MK and convert it to be suitable for csh eval: + # (1) remove comments at the beginning of the lines +@@ -328,6 +334,7 @@ + eval `sed -e 's/^ *#.*//g' -e 's/\$(\([a-zA-Z_]*\))/\${\1}/g' -e 's/ *= */=/g' -e 's/^\([^=]*\)=\(.*\)$/setenv \1 "\2";/' < $NCBI_DOT_MK` + unset noglob + ++ + # disable assert() unless ENABLE_ASSERT is set + if ("$?ENABLE_ASSERT" == 0) then + set NCBI_OPTFLAG="-DNDEBUG $NCBI_OPTFLAG" +@@ -441,13 +448,23 @@ + set NET_VIB=(VIB=\"blastcl3 taxblast idfetch bl2seq asn2gb tbl2asn gene2xml $NONVIBWWWBLAST \") + endif + ++# MPIBLAST <<<<< ++if ("$MPBL_HAVE_MAC" == 1) then ++set CMD='make $MFLG \ ++ CFLAGS1=\"-I/Developer/Headers/FlatCarbon $NCBI_OPTFLAG $NCBI_CFLAGS1 $OGL_INCLUDE $PNG_INCLUDE\" \ ++ LDFLAGS1=\"$NCBI_LDFLAGS1\" OTHERLIBS=\"$NCBI_OTHERLIBS\" \ ++ SHELL=\"$NCBI_MAKE_SHELL\" LCL=\"$NCBI_DEFAULT_LCL\" \ ++ RAN=\"$NCBI_RANLIB\" AR=\"$NCBI_AR\" CC=\"$NCBI_CC\" $ALL_VIB all' ++else + set CMD='make $MFLG \ + CFLAGS1=\"$NCBI_OPTFLAG $NCBI_CFLAGS1 $OGL_INCLUDE $PNG_INCLUDE\" \ + LDFLAGS1=\"$NCBI_LDFLAGS1\" OTHERLIBS=\"$NCBI_OTHERLIBS\" \ + SHELL=\"$NCBI_MAKE_SHELL\" LCL=\"$NCBI_DEFAULT_LCL\" \ + RAN=\"$NCBI_RANLIB\" AR=\"$NCBI_AR\" CC=\"$NCBI_CC\" $ALL_VIB all' ++endif + eval echo $CMD + eval echo $CMD | sh ++# MPIBLAST >>>>> + + set make_stat = $status + +@@ -463,12 +480,18 @@ + endif + + # MPIBLAST <<<<< +- ++if ("$MPBL_HAVE_MAC" == 1) then + set CMD='make $MFLG -f makempiblast.unx CFLAGS1=\"$NCBI_OPTFLAG $NCBI_CFLAGS1\" \ + LDFLAGS1=\"$NCBI_LDFLAGS1\" SHELL=\"$NCBI_MAKE_SHELL\" \ + LCL=\"$NCBI_DEFAULT_LCL\" RAN=\"$NCBI_RANLIB\" AR=\"$NCBI_AR\" CC=\"$NCBI_CC\"' ++else ++set CMD='make $MFLG -f makempiblast.unx CFLAGS1=\"$NCBI_OPTFLAG $NCBI_CFLAGS1\" \ ++ LDFLAGS1=\"$NCBI_LDFLAGS1\" SHELL=\"$NCBI_MAKE_SHELL\" \ ++ LCL=\"$NCBI_DEFAULT_LCL\" RAN=\"$NCBI_RANLIB\" AR=\"$NCBI_AR\" CC=\"$NCBI_CC\"' ++endif + eval echo $CMD + eval echo $CMD | sh ++if ($status != 0) exit $status + + if( "$platform" == "bluegenel" || "$platform" == "bluegenep" ) then + exit 0 +@@ -476,7 +499,7 @@ + # MPIBLAST >>>>> + + set CMD='make $MFLG -f makedemo.unx CFLAGS1=\"$NCBI_OPTFLAG $NCBI_CFLAGS1\" \ +- LDFLAGS1=\"$NCBI_LDFLAGS1\" SHELL=\"$NCBI_MAKE_SHELL\" \ ++ LDFLAGS1=\"$NCBI_LDFLAGS1\" SHELL=\"$NCBI_MAKE_SHELL\" OTHERLIBS=\"$NCBI_OTHERLIBS\" \ + LCL=\"$NCBI_DEFAULT_LCL\" RAN=\"$NCBI_RANLIB\" AR=\"$NCBI_AR\" CC=\"$NCBI_CC\" $DEMO_VIB' + eval echo $CMD + eval echo $CMD | sh +@@ -495,7 +518,7 @@ + + + set CMD='make $MFLG -f makedemo.unx CFLAGS1=\"$NCBI_OPTFLAG $NCBI_CFLAGS1\" \ +- LDFLAGS1=\"$NCBI_LDFLAGS1\" SHELL=\"$NCBI_MAKE_SHELL\" \ ++ LDFLAGS1=\"$NCBI_LDFLAGS1\" SHELL=\"$NCBI_MAKE_SHELL\" OTHERLIBS=\"$NCBI_OTHERLIBS\" \ + LCL=\"$NCBI_DEFAULT_LCL\" RAN=\"$NCBI_RANLIB\" AR=\"$NCBI_AR\" CC=\"$NCBI_CC\" \ + THREAD_OBJ=$NCBI_THREAD_OBJ THREAD_OTHERLIBS=\"$NCBI_MT_OTHERLIBS\" \ + $DEMO_VIB $mtapps' +diff -rwu mpiblast-1.6.0/src/Makefile.am mpiblast-1.6.0-patched/src/Makefile.am +--- mpiblast-1.6.0/src/Makefile.am 2009-11-22 01:17:48.000000000 -0500 ++++ mpiblast-1.6.0-patched/src/Makefile.am 2011-08-06 17:06:42.000000000 -0400 +@@ -2,7 +2,7 @@ + -D_LARGEFILE64_SOURCE -DMPIBLAST_PIO \ + -I$(top_srcdir)/include/ -I@CONFIG_NCBIDIR@/include/ $(MPE_INCS) \ + -I@CONFIG_NCBIDIR@/corelib/ +-AM_CXXFLAGS = -DMPICH_IGNORE_CXX_SEEK -DINSTALL_PREFIX="\"@prefix@\"" \ ++AM_CXXFLAGS = -DMPICH_IGNORE_CXX_SEEK -DOMPI_SKIP_MPICXX -DINSTALL_PREFIX="\"@prefix@\"" \ + @COMPILE_FLAGS@ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE \ + -I$(top_srcdir)/include/ -I@CONFIG_NCBIDIR@/include/ $(MPE_INCS) \ + -I@CONFIG_NCBIDIR@/corelib/ +@@ -31,7 +31,7 @@ + @CONFIG_NCBIDIR@/build/blast_hooks.o -lmyncbitool -lblastcompadj -lmyncbiobj \ + -lmyncbi -L. -L@CONFIG_NCBIDIR@/lib/ $(MPE_LIBS) -lm @LINK_FLAGS@ + mpiblast_DEPENDENCIES = @GETOPT_LONG_SYSTEM@ +-mpiblast_CPPFLAGS = -DUSING_MPI -DMPICH_IGNORE_CXX_SEEK ++mpiblast_CPPFLAGS = -DUSING_MPI -DMPICH_IGNORE_CXX_SEEK -DOMPI_SKIP_MPICXX + + mpiformatdb_SOURCES = mpiformatdb.cpp mpiblast_config.cpp mpiblast_config.hpp \ + file_util.cpp file_util.hpp mpiblast_util.cpp mpiblast_util.hpp \ +diff -rwu mpiblast-1.6.0/src/pio_intercept.h mpiblast-1.6.0-patched/src/pio_intercept.h +--- mpiblast-1.6.0/src/pio_intercept.h 2009-11-22 01:17:48.000000000 -0500 ++++ mpiblast-1.6.0-patched/src/pio_intercept.h 2011-08-06 17:06:42.000000000 -0400 +@@ -60,7 +60,7 @@ + #include + + /* marcros are duplicated in ncbi files to avoid header file conflict */ +-#define CHECK_NULPTR(x) if(x==NULL) fprintf(stderr, "%s, line%d: cannot allocate enough memory\n", __FILE__, __LINE__); ++#define CHECK_NULPTR(x) if(x==NULL) { perror("Cannot allocate enough memory:"); exit(-1); } + + #ifndef NO_MPI + typedef struct _output_record { diff --git a/var/spack/repos/builtin/packages/mpiblast/package.py b/var/spack/repos/builtin/packages/mpiblast/package.py new file mode 100644 index 00000000000..c5e283dbcf6 --- /dev/null +++ b/var/spack/repos/builtin/packages/mpiblast/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mpiblast(AutotoolsPackage): + """mpiBLAST is a freely available, open-source, parallel implementation of + NCBI BLAST""" + + homepage = "http://www.mpiblast.org/" + url = "http://www.mpiblast.org/downloads/files/mpiBLAST-1.6.0.tgz" + + version('1.6.0', '707105ccd56825db776b50bfd81cecd5') + + patch('mpiBLAST-1.6.0-patch-110806') + + depends_on('mpi') + + def configure_args(self): + args = ['--with-mpi=%s' % self.spec['mpi'].prefix] + return args + + def build(self, spec, prefix): + make('ncbi') + make() + + def setup_environment(self, spack_env, run_env): + spack_env.set('ac_cv_path_CC', self.spec['mpi'].mpicc) + spack_env.set('ac_cv_path_CXX', self.spec['mpi'].mpicxx) From db657d938d38775e4364a6917cc78cb9cdb0b133 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 16 Aug 2017 12:21:07 -0500 Subject: [PATCH 1496/2394] Refactor IntelInstaller into IntelPackage base class (#4300) * Refactor IntelInstaller into IntelPackage base class * Move license attributes from __init__ to class-level * Flake8 fixes: remove unused imports * Fix logic that writes the silent.cfg file * More specific version numbers for Intel MPI * Rework logic that selects components to install * Final changes necessary to get intel package working * Various updates to intel-parallel-studio * Add latest version of every Intel package * Add environment variables for Intel packages * Update env vars for intel package * Finalize components for intel-parallel-studio package Adds a +tbb variant to intel-parallel-studio. The tbb package was renamed to intel-tbb. Now both intel-tbb and intel-parallel-studio+tbb provide tbb. * Overhaul environment variables set by intel-parallel-studio * Point dependent packages to the correct MPI wrappers * Never default to intel-parallel-studio * Gather env vars by sourcing setup scripts * Use mpiicc instead of mpicc when using Intel compiler * Undo change to ARCH * Add changes from intel-mpi to intel-parallel-studio * Add comment explaining mpicc vs mpiicc * Prepend env vars containing 'PATH' or separators * Flake8 fix * Fix bugs in from_sourcing_file * Indentation fix * Prepend, not set if contains separator * Fix license symlinking broken by changes to intel-parallel-studio * Use comments instead of docstrings to document attributes * Flake8 fixes * Use a set instead of a list to prevent duplicate components * Fix MKL and MPI library linking directories * Remove +all variant from intel-parallel-studio * It is not possible to build with MKL, GCC, and OpenMP at this time * Found a workaround for locating GCC libraries * Typos and variable names * Fix initialization of empty LibraryList --- etc/spack/defaults/packages.yaml | 7 +- lib/spack/docs/packaging_guide.rst | 3 + lib/spack/spack/__init__.py | 2 + lib/spack/spack/build_environment.py | 4 +- lib/spack/spack/build_systems/intel.py | 192 ++++++ lib/spack/spack/cmd/configure.py | 1 + lib/spack/spack/cmd/create.py | 10 + lib/spack/spack/environment.py | 174 +++--- lib/spack/spack/package.py | 73 ++- lib/spack/spack/test/environment.py | 11 +- .../builtin/packages/intel-daal/package.py | 48 +- .../builtin/packages/intel-ipp/package.py | 48 +- .../builtin/packages/intel-mkl/package.py | 81 ++- .../builtin/packages/intel-mpi/package.py | 94 ++- .../packages/intel-parallel-studio/package.py | 574 ++++++++++-------- .../packages/{tbb => intel-tbb}/package.py | 4 +- .../repos/builtin/packages/intel/package.py | 208 ++----- 17 files changed, 937 insertions(+), 597 deletions(-) create mode 100644 lib/spack/spack/build_systems/intel.py rename var/spack/repos/builtin/packages/{tbb => intel-tbb}/package.py (99%) diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index df785c5aa5e..fc255997493 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -19,13 +19,13 @@ packages: providers: awk: [gawk] blas: [openblas] - daal: [intel-parallel-studio+daal] + daal: [intel-daal] elf: [elfutils] golang: [gcc] - ipp: [intel-parallel-studio+ipp] + ipp: [intel-ipp] java: [jdk] lapack: [openblas] - mkl: [intel-parallel-studio+mkl] + mkl: [intel-mkl] mpe: [mpe2] mpi: [openmpi, mpich] opencl: [pocl] @@ -33,3 +33,4 @@ packages: pil: [py-pillow] scalapack: [netlib-scalapack] szip: [libszip, libaec] + tbb: [intel-tbb] diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index 7e789bc294b..e400272e591 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -2136,6 +2136,9 @@ The classes that are currently provided by Spack are: | :py:class:`.PerlPackage` | Specialized class for | | | :py:class:`.Perl` extensions | +-------------------------------+----------------------------------+ + | :py:class:`.IntelPackage` | Specialized class for licensed | + | | Intel software | + +-------------------------------+----------------------------------+ .. note:: diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index e8a010bb260..21280f00010 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -178,6 +178,7 @@ from spack.build_systems.python import PythonPackage from spack.build_systems.r import RPackage from spack.build_systems.perl import PerlPackage +from spack.build_systems.intel import IntelPackage __all__ += [ 'run_before', @@ -193,6 +194,7 @@ 'PythonPackage', 'RPackage', 'PerlPackage', + 'IntelPackage', ] from spack.version import Version, ver diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 34c9cd56d28..620445fe1cb 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -229,7 +229,7 @@ def set_build_environment_variables(pkg, env, dirty=False): # Install root prefix env.set(SPACK_INSTALL, spack.store.root) - # Stuff in here sanitizes the build environemnt to eliminate + # Stuff in here sanitizes the build environment to eliminate # anything the user has set that may interfere. if not dirty: # Remove these vars from the environment during build because they @@ -518,7 +518,7 @@ def fork(pkg, function, dirty=False): Args: - pkg (PackageBase): package whose environemnt we should set up the + pkg (PackageBase): package whose environment we should set up the forked process for. function (callable): argless function to run in the child process. diff --git a/lib/spack/spack/build_systems/intel.py b/lib/spack/spack/build_systems/intel.py new file mode 100644 index 00000000000..a97f15d62cc --- /dev/null +++ b/lib/spack/spack/build_systems/intel.py @@ -0,0 +1,192 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os +import xml.etree.ElementTree as ET + +from llnl.util.filesystem import install, join_path +from spack.package import PackageBase, run_after +from spack.util.executable import Executable + + +def _valid_components(): + """A generator that yields valid components.""" + + tree = ET.parse('pset/mediaconfig.xml') + root = tree.getroot() + + components = root.findall('.//Abbr') + for component in components: + yield component.text + + +class IntelPackage(PackageBase): + """Specialized class for licensed Intel software. + + This class provides two phases that can be overridden: + + 1. :py:meth:`~.IntelPackage.configure` + 2. :py:meth:`~.IntelPackage.install` + + They both have sensible defaults and for many packages the + only thing necessary will be to override ``setup_environment`` + to set the appropriate environment variables. + """ + #: Phases of an Intel package + phases = ['configure', 'install'] + + #: This attribute is used in UI queries that need to know the build + #: system base class + build_system_class = 'IntelPackage' + + #: By default, we assume that all Intel software requires a license. + #: This can be overridden for packages that do not require a license. + license_required = True + + #: Comment symbol used in the ``license.lic`` file + license_comment = '#' + + #: Location where Intel searches for a license file + license_files = ['Licenses/license.lic'] + + #: Environment variables that Intel searches for a license file + license_vars = ['INTEL_LICENSE_FILE'] + + #: URL providing information on how to acquire a license key + license_url = 'https://software.intel.com/en-us/articles/intel-license-manager-faq' + + #: Components of the package to install. + #: By default, install 'ALL' components. + components = ['ALL'] + + @property + def _filtered_components(self): + """Returns a list or set of valid components that match + the requested components from ``components``.""" + + # Don't filter 'ALL' + if self.components == ['ALL']: + return self.components + + # mediaconfig.xml is known to contain duplicate components. + # If more than one copy of the same component is used, you + # will get an error message about invalid components. + # Use a set to store components to prevent duplicates. + matches = set() + + for valid in _valid_components(): + for requested in self.components: + if valid.startswith(requested): + matches.add(valid) + + return matches + + @property + def global_license_file(self): + """Returns the path where a global license file should be stored. + + All Intel software shares the same license, so we store it in a + common 'intel' directory.""" + return join_path(self.global_license_dir, 'intel', + os.path.basename(self.license_files[0])) + + def configure(self, spec, prefix): + """Writes the ``silent.cfg`` file used to configure the installation. + + See https://software.intel.com/en-us/articles/configuration-file-format + """ + # Patterns used to check silent configuration file + # + # anythingpat - any string + # filepat - the file location pattern (/path/to/license.lic) + # lspat - the license server address pattern (0123@hostname) + # snpat - the serial number pattern (ABCD-01234567) + config = { + # Accept EULA, valid values are: {accept, decline} + 'ACCEPT_EULA': 'accept', + + # Optional error behavior, valid values are: {yes, no} + 'CONTINUE_WITH_OPTIONAL_ERROR': 'yes', + + # Install location, valid values are: {/opt/intel, filepat} + 'PSET_INSTALL_DIR': prefix, + + # Continue with overwrite of existing installation directory, + # valid values are: {yes, no} + 'CONTINUE_WITH_INSTALLDIR_OVERWRITE': 'yes', + + # List of components to install, + # valid values are: {ALL, DEFAULTS, anythingpat} + 'COMPONENTS': ';'.join(self._filtered_components), + + # Installation mode, valid values are: {install, repair, uninstall} + 'PSET_MODE': 'install', + + # Directory for non-RPM database, valid values are: {filepat} + 'NONRPM_DB_DIR': prefix, + + # Perform validation of digital signatures of RPM files, + # valid values are: {yes, no} + 'SIGNING_ENABLED': 'no', + + # Select target architecture of your applications, + # valid values are: {IA32, INTEL64, ALL} + 'ARCH_SELECTED': 'ALL', + } + + # Not all Intel software requires a license. Trying to specify + # one anyway will cause the installation to fail. + if self.license_required: + config.update({ + # License file or license server, + # valid values are: {lspat, filepat} + 'ACTIVATION_LICENSE_FILE': self.global_license_file, + + # Activation type, valid values are: {exist_lic, + # license_server, license_file, trial_lic, serial_number} + 'ACTIVATION_TYPE': 'license_file', + + # Intel(R) Software Improvement Program opt-in, + # valid values are: {yes, no} + 'PHONEHOME_SEND_USAGE_DATA': 'no', + }) + + with open('silent.cfg', 'w') as cfg: + for key in config: + cfg.write('{0}={1}\n'.format(key, config[key])) + + def install(self, spec, prefix): + """Runs the ``install.sh`` installation script.""" + + install_script = Executable('./install.sh') + install_script('--silent', 'silent.cfg') + + @run_after('install') + def save_silent_cfg(self): + """Copies the silent.cfg configuration file to ``/.spack``.""" + install('silent.cfg', join_path(self.prefix, '.spack')) + + # Check that self.prefix is there after installation + run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/cmd/configure.py b/lib/spack/spack/cmd/configure.py index 562582fe097..c8588334a5e 100644 --- a/lib/spack/spack/cmd/configure.py +++ b/lib/spack/spack/cmd/configure.py @@ -41,6 +41,7 @@ QMakePackage: 'qmake', WafPackage: 'configure', PerlPackage: 'configure', + IntelPackage: 'configure', } diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index ca49eb03fa0..fd1e5f9fd21 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -370,6 +370,15 @@ def edit(self, spec, prefix): # makefile.filter('CC = .*', 'CC = cc')""" +class IntelPackageTemplate(PackageTemplate): + """Provides appropriate overrides for licensed Intel software""" + + base_class_name = 'IntelPackage' + + body = """\ + # FIXME: Override `setup_environment` if necessary.""" + + templates = { 'autotools': AutotoolsPackageTemplate, 'autoreconf': AutoreconfPackageTemplate, @@ -384,6 +393,7 @@ def edit(self, spec, prefix): 'perlbuild': PerlbuildPackageTemplate, 'octave': OctavePackageTemplate, 'makefile': MakefilePackageTemplate, + 'intel': IntelPackageTemplate, 'generic': PackageTemplate, } diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index ff278dd6b68..567e54e3561 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -284,132 +284,157 @@ def apply_modifications(self): x.execute() @staticmethod - def from_sourcing_files(*args, **kwargs): - """Returns modifications that would be made by sourcing files. + def from_sourcing_file(filename, *args, **kwargs): + """Returns modifications that would be made by sourcing a file. - Args: - *args (list of str): list of files to be sourced + Parameters: + filename (str): The file to source + *args (list of str): Arguments to pass on the command line + + Keyword Arguments: + shell (str): The shell to use (default: ``bash``) + shell_options (str): Options passed to the shell (default: ``-c``) + source_command (str): The command to run (default: ``source``) + suppress_output (str): Redirect used to suppress output of command + (default: ``&> /dev/null``) + concatenate_on_success (str): Operator used to execute a command + only when the previous command succeeds (default: ``&&``) Returns: EnvironmentModifications: an object that, if executed, has - the same effect on the environment as sourcing the files - passed as parameters + the same effect on the environment as sourcing the file """ - env = EnvironmentModifications() + # Check if the file actually exists + if not os.path.isfile(filename): + msg = 'Trying to source non-existing file: {0}'.format(filename) + raise RuntimeError(msg) - # Check if the files are actually there - files = [line.split(' ')[0] for line in args] - non_existing = [file for file in files if not os.path.isfile(file)] - if non_existing: - message = 'trying to source non-existing files\n' - message += '\n'.join(non_existing) - raise RuntimeError(message) + # Kwargs parsing and default values + shell = kwargs.get('shell', '/bin/bash') + shell_options = kwargs.get('shell_options', '-c') + source_command = kwargs.get('source_command', 'source') + suppress_output = kwargs.get('suppress_output', '&> /dev/null') + concatenate_on_success = kwargs.get('concatenate_on_success', '&&') - # Relevant kwd parameters and formats - info = dict(kwargs) - info.setdefault('shell', '/bin/bash') - info.setdefault('shell_options', '-c') - info.setdefault('source_command', 'source') - info.setdefault('suppress_output', '&> /dev/null') - info.setdefault('concatenate_on_success', '&&') + source_file = [source_command, filename] + source_file.extend(args) + source_file = ' '.join(source_file) - shell = '{shell}'.format(**info) - shell_options = '{shell_options}'.format(**info) - source_file = '{source_command} {file} {concatenate_on_success}' - - dump_cmd = "import os, json; print(json.dumps(dict(os.environ)))" - dump_environment = 'python -c "%s"' % dump_cmd + dump_cmd = 'import os, json; print(json.dumps(dict(os.environ)))' + dump_environment = 'python -c "{0}"'.format(dump_cmd) # Construct the command that will be executed - command = [source_file.format(file=file, **info) for file in args] - command.append(dump_environment) - command = ' '.join(command) command = [ shell, shell_options, - command + ' '.join([ + source_file, suppress_output, + concatenate_on_success, dump_environment, + ]), ] - # Try to source all the files, + # Try to source the file proc = subprocess.Popen( command, stdout=subprocess.PIPE, env=os.environ) proc.wait() + if proc.returncode != 0: - raise RuntimeError('sourcing files returned a non-zero exit code') + msg = 'Sourcing file {0} returned a non-zero exit code'.format( + filename) + raise RuntimeError(msg) + output = ''.join([line.decode('utf-8') for line in proc.stdout]) - # Construct a dictionaries of the environment before and after - # sourcing the files, so that we can diff them. - this_environment = dict(os.environ) - after_source_env = json.loads(output) + # Construct dictionaries of the environment before and after + # sourcing the file, so that we can diff them. + env_before = dict(os.environ) + env_after = json.loads(output) # If we're in python2, convert to str objects instead of unicode # like json gives us. We can't put unicode in os.environ anyway. if sys.version_info[0] < 3: - after_source_env = dict((k.encode('utf-8'), v.encode('utf-8')) - for k, v in after_source_env.items()) + env_after = dict((k.encode('utf-8'), v.encode('utf-8')) + for k, v in env_after.items()) # Filter variables that are not related to sourcing a file - to_be_filtered = 'SHLVL', '_', 'PWD', 'OLDPWD' - for d in after_source_env, this_environment: + to_be_filtered = 'SHLVL', '_', 'PWD', 'OLDPWD', 'PS2' + for d in env_after, env_before: for name in to_be_filtered: d.pop(name, None) # Fill the EnvironmentModifications instance + env = EnvironmentModifications() # New variables - new_variables = set(after_source_env) - set(this_environment) - for x in new_variables: - env.set(x, after_source_env[x]) + new_variables = set(env_after) - set(env_before) # Variables that have been unset - unset_variables = set(this_environment) - set(after_source_env) - for x in unset_variables: - env.unset(x) + unset_variables = set(env_before) - set(env_after) # Variables that have been modified common_variables = set( - this_environment).intersection(set(after_source_env)) + env_before).intersection(set(env_after)) modified_variables = [x for x in common_variables - if this_environment[x] != after_source_env[x]] + if env_before[x] != env_after[x]] - def return_separator_if_any(first_value, second_value): + def return_separator_if_any(*args): separators = ':', ';' for separator in separators: - if separator in first_value and separator in second_value: - return separator + for arg in args: + if separator in arg: + return separator return None - for x in modified_variables: - current = this_environment[x] - modified = after_source_env[x] - sep = return_separator_if_any(current, modified) - if sep is None: - # We just need to set the variable to the new value - env.set(x, after_source_env[x]) + # Add variables to env. + # Assume that variables with 'PATH' in the name or that contain + # separators like ':' or ';' are more likely to be paths + for x in new_variables: + sep = return_separator_if_any(env_after[x]) + if sep: + env.prepend_path(x, env_after[x], separator=sep) + elif 'PATH' in x: + env.prepend_path(x, env_after[x]) else: - current_list = current.split(sep) - modified_list = modified.split(sep) + # We just need to set the variable to the new value + env.set(x, env_after[x]) + + for x in unset_variables: + env.unset(x) + + for x in modified_variables: + before = env_before[x] + after = env_after[x] + sep = return_separator_if_any(before, after) + if sep: + before_list = before.split(sep) + after_list = after.split(sep) + + # Filter out empty strings + before_list = list(filter(None, before_list)) + after_list = list(filter(None, after_list)) + # Paths that have been removed remove_list = [ - ii for ii in current_list if ii not in modified_list] - # Check that nothing has been added in the middle of vurrent - # list + ii for ii in before_list if ii not in after_list] + # Check that nothing has been added in the middle of + # before_list remaining_list = [ - ii for ii in current_list if ii in modified_list] - start = modified_list.index(remaining_list[0]) - end = modified_list.index(remaining_list[-1]) - search = sep.join(modified_list[start:end + 1]) + ii for ii in before_list if ii in after_list] + try: + start = after_list.index(remaining_list[0]) + end = after_list.index(remaining_list[-1]) + search = sep.join(after_list[start:end + 1]) + except IndexError: + env.prepend_path(x, env_after[x]) - if search not in current: + if search not in before: # We just need to set the variable to the new value - env.set(x, after_source_env[x]) - break + env.prepend_path(x, env_after[x]) else: try: - prepend_list = modified_list[:start] + prepend_list = after_list[:start] except KeyError: prepend_list = [] try: - append_list = modified_list[end + 1:] + append_list = after_list[end + 1:] except KeyError: append_list = [] @@ -419,6 +444,9 @@ def return_separator_if_any(first_value, second_value): env.append_path(x, item) for item in prepend_list: env.prepend_path(x, item) + else: + # We just need to set the variable to the new value + env.set(x, env_after[x]) return env diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 86df0ec9478..8c849573a7c 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -484,38 +484,65 @@ class SomePackage(Package): # # These are default values for instance variables. # - """By default we build in parallel. Subclasses can override this.""" + + #: By default we build in parallel. Subclasses can override this. parallel = True - """# jobs to use for parallel make. If set, overrides default of ncpus.""" + #: # jobs to use for parallel make. If set, overrides default of ncpus. make_jobs = spack.build_jobs - """By default do not run tests within package's install()""" + #: By default do not run tests within package's install() run_tests = False # FIXME: this is a bad object-oriented design, should be moved to Clang. - """By default do not setup mockup XCode on macOS with Clang""" + #: By default do not setup mockup XCode on macOS with Clang use_xcode = False - """Most packages are NOT extendable. Set to True if you want extensions.""" + #: Most packages are NOT extendable. Set to True if you want extensions. extendable = False - """When True, add RPATHs for the entire DAG. When False, add RPATHs only - for immediate dependencies.""" + #: When True, add RPATHs for the entire DAG. When False, add RPATHs only + #: for immediate dependencies. transitive_rpaths = True - """List of prefix-relative file paths (or a single path). If these do - not exist after install, or if they exist but are not files, - sanity checks fail. - """ + #: List of prefix-relative file paths (or a single path). If these do + #: not exist after install, or if they exist but are not files, + #: sanity checks fail. sanity_check_is_file = [] - """List of prefix-relative directory paths (or a single path). If - these do not exist after install, or if they exist but are not - directories, sanity checks will fail. - """ + #: List of prefix-relative directory paths (or a single path). If + #: these do not exist after install, or if they exist but are not + #: directories, sanity checks will fail. sanity_check_is_dir = [] + # + # Set default licensing information + # + + #: Boolean. If set to ``True``, this software requires a license. + #: If set to ``False``, all of the ``license_*`` attributes will + #: be ignored. Defaults to ``False``. + license_required = False + + #: String. Contains the symbol used by the license manager to denote + #: a comment. Defaults to ``#``. + license_comment = '#' + + #: List of strings. These are files that the software searches for when + #: looking for a license. All file paths must be relative to the + #: installation directory. More complex packages like Intel may require + #: multiple licenses for individual components. Defaults to the empty list. + license_files = [] + + #: List of strings. Environment variables that can be set to tell the + #: software where to look for a license if it is not in the usual location. + #: Defaults to the empty list. + license_vars = [] + + #: String. A URL pointing to license setup instructions for the software. + #: Defaults to the empty string. + license_url = '' + def __init__(self, spec): # this determines how the package should be built. self.spec = spec @@ -569,22 +596,6 @@ def __init__(self, spec): if not hasattr(self, 'list_depth'): self.list_depth = 0 - # Set default licensing information - if not hasattr(self, 'license_required'): - self.license_required = False - - if not hasattr(self, 'license_comment'): - self.license_comment = '#' - - if not hasattr(self, 'license_files'): - self.license_files = [] - - if not hasattr(self, 'license_vars'): - self.license_vars = [] - - if not hasattr(self, 'license_url'): - self.license_url = None - # Set up some internal variables for timing. self._fetch_time = 0.0 self._total_time = 0.0 diff --git a/lib/spack/spack/test/environment.py b/lib/spack/spack/test/environment.py index 7f3b7bf2bde..d07223221c1 100644 --- a/lib/spack/spack/test/environment.py +++ b/lib/spack/spack/test/environment.py @@ -89,7 +89,7 @@ def files_to_be_sourced(): files = [ os.path.join(datadir, 'sourceme_first.sh'), os.path.join(datadir, 'sourceme_second.sh'), - os.path.join(datadir, 'sourceme_parameters.sh intel64'), + os.path.join(datadir, 'sourceme_parameters.sh'), os.path.join(datadir, 'sourceme_unicode.sh') ] @@ -224,7 +224,14 @@ def test_source_files(files_to_be_sourced): """Tests the construction of a list of environment modifications that are the result of sourcing a file. """ - env = EnvironmentModifications.from_sourcing_files(*files_to_be_sourced) + env = EnvironmentModifications() + for filename in files_to_be_sourced: + if filename.endswith('sourceme_parameters.sh'): + env.extend(EnvironmentModifications.from_sourcing_file( + filename, 'intel64')) + else: + env.extend(EnvironmentModifications.from_sourcing_file(filename)) + modifications = env.group_by_name() # This is sensitive to the user's environment; can include diff --git a/var/spack/repos/builtin/packages/intel-daal/package.py b/var/spack/repos/builtin/packages/intel-daal/package.py index 7fb6371e7e5..1713218ad38 100644 --- a/var/spack/repos/builtin/packages/intel-daal/package.py +++ b/var/spack/repos/builtin/packages/intel-daal/package.py @@ -22,18 +22,14 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * import os -from spack.pkg.builtin.intel import IntelInstaller +from spack import * +from spack.environment import EnvironmentModifications -class IntelDaal(IntelInstaller): - """Intel Data Analytics Acceleration Library. - - 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://spack.readthedocs.io/en/latest/mirrors.html""" +class IntelDaal(IntelPackage): + """Intel Data Analytics Acceleration Library.""" homepage = "https://software.intel.com/en-us/daal" @@ -52,11 +48,35 @@ class IntelDaal(IntelInstaller): provides('daal') - def install(self, spec, prefix): + @property + def license_required(self): + # The Intel libraries are provided without requiring a license as of + # version 2017.2. Trying to specify the license will fail. See: + # https://software.intel.com/en-us/articles/free-ipsxe-tools-and-libraries + if self.version >= Version('2017.2'): + return False + else: + return True - self.intel_prefix = os.path.join(prefix, "pkg") - IntelInstaller.install(self, spec, prefix) + def setup_environment(self, spack_env, run_env): + """Adds environment variables to the generated module file. - daal_dir = os.path.join(self.intel_prefix, "daal") - for f in os.listdir(daal_dir): - os.symlink(os.path.join(daal_dir, f), os.path.join(self.prefix, f)) + These environment variables come from running: + + .. code-block:: console + + $ source daal/bin/daalvars.sh intel64 + """ + # NOTE: Spack runs setup_environment twice, once pre-build to set up + # the build environment, and once post-installation to determine + # the environment variables needed at run-time to add to the module + # file. The script we need to source is only present post-installation, + # so check for its existence before sourcing. + # TODO: At some point we should split setup_environment into + # setup_build_environment and setup_run_environment to get around + # this problem. + daalvars = os.path.join(self.prefix.daal.bin, 'daalvars.sh') + + if os.path.isfile(daalvars): + run_env.extend(EnvironmentModifications.from_sourcing_file( + daalvars, 'intel64')) diff --git a/var/spack/repos/builtin/packages/intel-ipp/package.py b/var/spack/repos/builtin/packages/intel-ipp/package.py index c9cfa609c88..4ca20a99063 100644 --- a/var/spack/repos/builtin/packages/intel-ipp/package.py +++ b/var/spack/repos/builtin/packages/intel-ipp/package.py @@ -22,18 +22,14 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * import os -from spack.pkg.builtin.intel import IntelInstaller +from spack import * +from spack.environment import EnvironmentModifications -class IntelIpp(IntelInstaller): - """Intel Integrated Performance Primitives. - - 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://spack.readthedocs.io/en/latest/mirrors.html""" +class IntelIpp(IntelPackage): + """Intel Integrated Performance Primitives.""" homepage = "https://software.intel.com/en-us/intel-ipp" @@ -50,11 +46,35 @@ class IntelIpp(IntelInstaller): provides('ipp') - def install(self, spec, prefix): + @property + def license_required(self): + # The Intel libraries are provided without requiring a license as of + # version 2017.2. Trying to specify the license will fail. See: + # https://software.intel.com/en-us/articles/free-ipsxe-tools-and-libraries + if self.version >= Version('2017.2'): + return False + else: + return True - self.intel_prefix = os.path.join(prefix, "pkg") - IntelInstaller.install(self, spec, prefix) + def setup_environment(self, spack_env, run_env): + """Adds environment variables to the generated module file. - ipp_dir = os.path.join(self.intel_prefix, "ipp") - for f in os.listdir(ipp_dir): - os.symlink(os.path.join(ipp_dir, f), os.path.join(self.prefix, f)) + These environment variables come from running: + + .. code-block:: console + + $ source ipp/bin/ippvars.sh intel64 + """ + # NOTE: Spack runs setup_environment twice, once pre-build to set up + # the build environment, and once post-installation to determine + # the environment variables needed at run-time to add to the module + # file. The script we need to source is only present post-installation, + # so check for its existence before sourcing. + # TODO: At some point we should split setup_environment into + # setup_build_environment and setup_run_environment to get around + # this problem. + ippvars = os.path.join(self.prefix.ipp.bin, 'ippvars.sh') + + if os.path.isfile(ippvars): + run_env.extend(EnvironmentModifications.from_sourcing_file( + ippvars, 'intel64')) diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 4eaf50dea55..1cc3c00af23 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -22,13 +22,13 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * import os -from spack.pkg.builtin.intel import IntelInstaller +from spack import * +from spack.environment import EnvironmentModifications -class IntelMkl(IntelInstaller): +class IntelMkl(IntelPackage): """Intel Math Kernel Library.""" homepage = "https://software.intel.com/en-us/intel-mkl" @@ -50,12 +50,21 @@ class IntelMkl(IntelInstaller): variant('ilp64', default=False, description='64 bit integers') variant('openmp', default=False, description='OpenMP multithreading layer') - # virtual dependency provides('blas') provides('lapack') provides('scalapack') provides('mkl') + @property + def license_required(self): + # The Intel libraries are provided without requiring a license as of + # version 2017.2. Trying to specify the license will fail. See: + # https://software.intel.com/en-us/articles/free-ipsxe-tools-and-libraries + if self.version >= Version('2017.2'): + return False + else: + return True + @property def blas_libs(self): spec = self.spec @@ -69,15 +78,27 @@ def blas_libs(self): mkl_threading = ['libmkl_sequential'] + omp_libs = LibraryList([]) + if '+openmp' in spec: if '%intel' in spec: - mkl_threading = ['libmkl_intel_thread', 'libiomp5'] - else: + mkl_threading = ['libmkl_intel_thread'] + omp_threading = ['libiomp5'] + + omp_root = prefix.compilers_and_libraries.linux.lib.intel64 + omp_libs = find_libraries( + omp_threading, root=omp_root, shared=shared) + elif '%gcc' in spec: mkl_threading = ['libmkl_gnu_thread'] + gcc = Executable(self.compiler.cc) + libgomp = gcc('--print-file-name', 'libgomp.{0}'.format( + dso_suffix), output=str) + omp_libs = LibraryList(libgomp) + # TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++'] - mkl_root = join_path(prefix.lib, 'intel64') + mkl_root = prefix.compilers_and_libraries.linux.mkl.lib.intel64 mkl_libs = find_libraries( mkl_integer + ['libmkl_core'] + mkl_threading, @@ -91,7 +112,7 @@ def blas_libs(self): shared=shared ) - return mkl_libs + system_libs + return mkl_libs + omp_libs + system_libs @property def lapack_libs(self): @@ -120,30 +141,46 @@ def scalapack_libs(self): elif '^intel-mpi' in root: libnames.append('libmkl_blacs_intelmpi') else: - raise InstallError("No MPI found for scalapack") + raise InstallError('No MPI found for scalapack') - shared = True if '+shared' in self.spec else False integer = 'ilp64' if '+ilp64' in self.spec else 'lp64' + mkl_root = self.prefix.compilers_and_libraries.linux.mkl.lib.intel64 + shared = True if '+shared' in self.spec else False + libs = find_libraries( ['{0}_{1}'.format(l, integer) for l in libnames], - root=join_path(self.prefix.lib, 'intel64'), + root=mkl_root, shared=shared ) + return libs - def install(self, spec, prefix): - self.intel_prefix = os.path.join(prefix, "pkg") - IntelInstaller.install(self, spec, prefix) - - 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_environment(self, spack_env, run_env, dependent_spec): # set up MKLROOT for everyone using MKL package + mkl_root = self.prefix.compilers_and_libraries.linux.mkl.lib.intel64 + spack_env.set('MKLROOT', self.prefix) - spack_env.append_path('SPACK_COMPILER_EXTRA_RPATHS', - join_path(self.prefix.lib, 'intel64')) + spack_env.append_path('SPACK_COMPILER_EXTRA_RPATHS', mkl_root) def setup_environment(self, spack_env, run_env): - run_env.set('MKLROOT', self.prefix) + """Adds environment variables to the generated module file. + + These environment variables come from running: + + .. code-block:: console + + $ source mkl/bin/mklvars.sh intel64 + """ + # NOTE: Spack runs setup_environment twice, once pre-build to set up + # the build environment, and once post-installation to determine + # the environment variables needed at run-time to add to the module + # file. The script we need to source is only present post-installation, + # so check for its existence before sourcing. + # TODO: At some point we should split setup_environment into + # setup_build_environment and setup_run_environment to get around + # this problem. + mklvars = os.path.join(self.prefix.mkl.bin, 'mklvars.sh') + + if os.path.isfile(mklvars): + run_env.extend(EnvironmentModifications.from_sourcing_file( + mklvars, 'intel64')) diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py index d0167552b05..b9aaf12c1c5 100644 --- a/var/spack/repos/builtin/packages/intel-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-mpi/package.py @@ -22,30 +22,41 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * import os -from spack.pkg.builtin.intel import IntelInstaller +from spack import * +from spack.environment import EnvironmentModifications -class IntelMpi(IntelInstaller): +class IntelMpi(IntelPackage): """Intel MPI""" homepage = "https://software.intel.com/en-us/intel-mpi-library" - version('2017.3', '721ecd5f6afa385e038777e5b5361dfb', + version('2017.3.196', '721ecd5f6afa385e038777e5b5361dfb', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11595/l_mpi_2017.3.196.tgz') - version('2017.2', 'b6c2e62c3fb9b1558ede72ccf72cf1d6', + version('2017.2.174', 'b6c2e62c3fb9b1558ede72ccf72cf1d6', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11334/l_mpi_2017.2.174.tgz') - version('2017.1', 'd5e941ac2bcf7c5576f85f6bcfee4c18', + version('2017.1.132', 'd5e941ac2bcf7c5576f85f6bcfee4c18', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11014/l_mpi_2017.1.132.tgz') - version('5.1.3', '4316e78533a932081b1a86368e890800', + version('5.1.3.223', '4316e78533a932081b1a86368e890800', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9278/l_mpi_p_5.1.3.223.tgz') provides('mpi') + @property + def license_required(self): + # The Intel libraries are provided without requiring a license as of + # version 2017.2. Trying to specify the license will fail. See: + # https://software.intel.com/en-us/articles/free-ipsxe-tools-and-libraries + if self.version >= Version('2017.2'): + return False + else: + return True + @property def mpi_libs(self): + mpi_root = self.prefix.compilers_and_libraries.linux.mpi.lib64 query_parameters = self.spec.last_query.extra_parameters libraries = ['libmpifort', 'libmpi'] @@ -53,19 +64,15 @@ def mpi_libs(self): libraries = ['libmpicxx'] + libraries return find_libraries( - libraries, root=self.prefix.lib64, shared=True, recurse=True + libraries, root=mpi_root, shared=True, recurse=True ) @property def mpi_headers(self): # recurse from self.prefix will find too many things for all the # supported sub-architectures like 'mic' - return find_headers( - 'mpi', root=self.prefix.include64, recurse=False) - - def install(self, spec, prefix): - self.intel_prefix = prefix - IntelInstaller.install(self, spec, prefix) + mpi_root = self.prefix.compilers_and_libraries.linux.mpi.include64 + return find_headers('mpi', root=mpi_root, recurse=False) def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('I_MPI_CC', spack_cc) @@ -75,15 +82,52 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec): spack_env.set('I_MPI_FC', spack_fc) def setup_dependent_package(self, module, dep_spec): - # Check for presence of bin64 or bin directory - if os.path.isdir(self.prefix.bin): - bindir = self.prefix.bin - elif os.path.isdir(self.prefix.bin64): - bindir = self.prefix.bin64 - else: - raise RuntimeError('No suitable bindir found') + # Intel comes with 2 different flavors of MPI wrappers: + # + # * mpiicc, mpiicpc, and mpifort are hardcoded to wrap around + # the Intel compilers. + # * mpicc, mpicxx, mpif90, and mpif77 allow you to set which + # compilers to wrap using I_MPI_CC and friends. By default, + # wraps around the GCC compilers. + # + # In theory, these should be equivalent as long as I_MPI_CC + # and friends are set to point to the Intel compilers, but in + # practice, mpicc fails to compile some applications while + # mpiicc works. + bindir = self.prefix.compilers_and_libraries.linux.mpi.intel64.bin - self.spec.mpicc = join_path(bindir, 'mpicc') - self.spec.mpicxx = join_path(bindir, 'mpicxx') - self.spec.mpifc = join_path(bindir, 'mpif90') - self.spec.mpif77 = join_path(bindir, 'mpif77') + if self.compiler.name == 'intel': + self.spec.mpicc = bindir.mpiicc + self.spec.mpicxx = bindir.mpiicpc + self.spec.mpifc = bindir.mpiifort + self.spec.mpif77 = bindir.mpiifort + else: + self.spec.mpicc = bindir.mpicc + self.spec.mpicxx = bindir.mpicxx + self.spec.mpifc = bindir.mpif90 + self.spec.mpif77 = bindir.mpif77 + + def setup_environment(self, spack_env, run_env): + """Adds environment variables to the generated module file. + + These environment variables come from running: + + .. code-block:: console + + $ source compilers_and_libraries/linux/mpi/intel64/bin/mpivars.sh + """ + # NOTE: Spack runs setup_environment twice, once pre-build to set up + # the build environment, and once post-installation to determine + # the environment variables needed at run-time to add to the module + # file. The script we need to source is only present post-installation, + # so check for its existence before sourcing. + # TODO: At some point we should split setup_environment into + # setup_build_environment and setup_run_environment to get around + # this problem. + mpivars = os.path.join( + self.prefix.compilers_and_libraries.linux.mpi.intel64.bin, + 'mpivars.sh') + + if os.path.isfile(mpivars): + run_env.extend(EnvironmentModifications.from_sourcing_file( + mpivars)) 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 531b29b986e..12a3f15f26a 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -22,30 +22,29 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * +import glob import os -import re -from spack.pkg.builtin.intel import IntelInstaller, filter_pick, \ - get_all_components +from spack import * +from spack.environment import EnvironmentModifications -class IntelParallelStudio(IntelInstaller): +class IntelParallelStudio(IntelPackage): """Intel Parallel Studio.""" homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" version('professional.2017.4', '27398416078e1e4005afced3e9a6df7e', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11537/parallel_studio_xe_2017_update4.tgz') - version('cluster.2017.4', '27398416078e1e4005afced3e9a6df7e', + version('cluster.2017.4', '27398416078e1e4005afced3e9a6df7e', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11537/parallel_studio_xe_2017_update4.tgz') - version('composer.2017.4', 'd03d351809e182c481dc65e07376d9a2', + version('composer.2017.4', 'd03d351809e182c481dc65e07376d9a2', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11541/parallel_studio_xe_2017_update4_composer_edition.tgz') version('professional.2017.3', '691874735458d3e88fe0bcca4438b2a9', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11460/parallel_studio_xe_2017_update3.tgz') - version('cluster.2017.3', '691874735458d3e88fe0bcca4438b2a9', + version('cluster.2017.3', '691874735458d3e88fe0bcca4438b2a9', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11460/parallel_studio_xe_2017_update3.tgz') - version('composer.2017.3', '52344df122c17ddff3687f84ceb21623', + version('composer.2017.3', '52344df122c17ddff3687f84ceb21623', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11464/parallel_studio_xe_2017_update3_composer_edition.tgz') version('professional.2017.2', '70e54b33d940a1609ff1d35d3c56e3b3', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11298/parallel_studio_xe_2017_update2.tgz') @@ -90,34 +89,64 @@ class IntelParallelStudio(IntelInstaller): version('composer.2015.6', 'da9f8600c18d43d58fba0488844f79c9', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8432/l_compxe_2015.6.233.tgz') - variant('rpath', default=True, description="Add rpath to .cfg files") + # Generic Variants + variant('rpath', default=True, + description='Add rpath to .cfg files') variant('newdtags', default=False, - description="Allow use of --enable-new-dtags in MPI wrappers") - variant('all', default=False, - description="Install all files with the requested edition") - variant('mpi', default=True, - description="Install the Intel MPI library and ITAC tool") - variant('mkl', default=True, description="Install the Intel MKL library") - 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") + description='Allow use of --enable-new-dtags in MPI wrappers') + variant('shared', default=True, + description='Builds shared library') + variant('ilp64', default=False, + description='64 bit integers') + variant('openmp', default=False, + description='OpenMP multithreading layer') - variant('shared', default=True, description='Builds shared library') - variant('ilp64', default=False, description='64 bit integers') - variant('openmp', default=False, description='OpenMP multithreading layer') + # Components available in all editions + variant('daal', default=True, + description='Install the Intel DAAL libraries') + variant('gdb', default=False, + description='Install the Intel Debugger for Heterogeneous Compute') + variant('ipp', default=True, + description='Install the Intel IPP libraries') + variant('mkl', default=True, + description='Install the Intel MKL library') + variant('mpi', default=True, + description='Install the Intel MPI library') + variant('tbb', default=True, + description='Install the Intel TBB libraries') + + # Components only available in the Professional and Cluster Editions + variant('advisor', default=False, + description='Install the Intel Advisor') + variant('clck', default=False, + description='Install the Intel Cluster Checker') + variant('inspector', default=False, + description='Install the Intel Inspector') + variant('itac', default=False, + description='Install the Intel Trace Analyzer and Collector') + variant('vtune', default=False, + description='Install the Intel VTune Amplifier XE') - provides('mpi', when='@cluster.0:cluster.9999+mpi') - provides('mkl', when='+mkl') provides('daal', when='+daal') + provides('ipp', when='+ipp') - # virtual dependency - provides('blas', when='+mkl') - provides('lapack', when='+mkl') + provides('mkl', when='+mkl') + provides('blas', when='+mkl') + provides('lapack', when='+mkl') provides('scalapack', when='+mkl') + provides('mpi', when='+mpi') + + provides('tbb', when='+tbb') + + # The following components are not available in the Composer Edition + conflicts('+advisor', when='@composer.0:composer.9999') + conflicts('+clck', when='@composer.0:composer.9999') + conflicts('+inspector', when='@composer.0:composer.9999') + conflicts('+itac', when='@composer.0:composer.9999') + conflicts('+vtune', when='@composer.0:composer.9999') + @property def blas_libs(self): spec = self.spec @@ -131,15 +160,27 @@ def blas_libs(self): mkl_threading = ['libmkl_sequential'] + omp_libs = LibraryList([]) + if '+openmp' in spec: if '%intel' in spec: - mkl_threading = ['libmkl_intel_thread', 'libiomp5'] - else: + mkl_threading = ['libmkl_intel_thread'] + omp_threading = ['libiomp5'] + + omp_root = prefix.compilers_and_libraries.linux.lib.intel64 + omp_libs = find_libraries( + omp_threading, root=omp_root, shared=shared) + elif '%gcc' in spec: mkl_threading = ['libmkl_gnu_thread'] + gcc = Executable(self.compiler.cc) + omp_libs = gcc('--print-file-name', 'libgomp.{0}'.format( + dso_suffix), output=str) + omp_libs = LibraryList(omp_libs) + # TODO: TBB threading: ['libmkl_tbb_thread', 'libtbb', 'libstdc++'] - mkl_root = join_path(prefix, 'mkl', 'lib', 'intel64') + mkl_root = prefix.compilers_and_libraries.linux.mkl.lib.intel64 mkl_libs = find_libraries( mkl_integer + ['libmkl_core'] + mkl_threading, @@ -153,7 +194,7 @@ def blas_libs(self): shared=shared ) - return mkl_libs + system_libs + return mkl_libs + omp_libs + system_libs @property def lapack_libs(self): @@ -176,109 +217,182 @@ def scalapack_libs(self): # elif self.spec.satisfies('^intel-parallel-studio'): # libnames.append('libmkl_blacs_intelmpi') else: - raise InstallError("No MPI found for scalapack") + raise InstallError('No MPI found for scalapack') - shared = True if '+shared' in self.spec else False integer = 'ilp64' if '+ilp64' in self.spec else 'lp64' + mkl_root = self.prefix.compilers_and_libraries.linux.mkl.lib.intel64 + shared = True if '+shared' in self.spec else False + libs = find_libraries( ['{0}_{1}'.format(l, integer) for l in libnames], - root=join_path(self.prefix, 'mkl', 'lib', 'intel64'), + root=mkl_root, shared=shared ) return libs - def install(self, spec, prefix): - base_components = "ALL" # when in doubt, install everything - mpi_components = "" - mkl_components = "" - daal_components = "" - ipp_components = "" + @property + def mpi_libs(self): + mpi_root = self.prefix.compilers_and_libraries.linux.mpi.lib64 + query_parameters = self.spec.last_query.extra_parameters + libraries = ['libmpifort', 'libmpi'] - if not spec.satisfies('+all'): - all_components = get_all_components() - regex = '(comp|openmp|intel-tbb|icc|ifort|psxe)' - base_components = \ - filter_pick(all_components, re.compile(regex).search) - regex = '(icsxe|imb|mpi|itac|intel-ta|intel-tc|clck)' - mpi_components = \ - filter_pick(all_components, re.compile(regex).search) - mkl_components = \ - filter_pick(all_components, re.compile('(mkl)').search) - daal_components = \ - filter_pick(all_components, re.compile('(daal)').search) - ipp_components = \ - filter_pick(all_components, re.compile('(ipp)').search) - regex = '(gdb|vtune|inspector|advisor)' - tool_components = \ - filter_pick(all_components, re.compile(regex).search) - components = base_components + if 'cxx' in query_parameters: + libraries = ['libmpicxx'] + libraries - if not spec.satisfies('+all'): - if spec.satisfies('+mpi'): - components += mpi_components - if spec.satisfies('+mkl'): - components += mkl_components - if spec.satisfies('+daal'): - components += daal_components - if spec.satisfies('+ipp'): - components += ipp_components - if spec.satisfies('+tools') and (spec.satisfies('@cluster') or - spec.satisfies('@professional')): - components += tool_components + return find_libraries( + libraries, root=mpi_root, shared=True, recurse=True + ) - if spec.satisfies('+all'): - self.intel_components = 'ALL' - else: - self.intel_components = ';'.join(components) - IntelInstaller.install(self, spec, prefix) + @property + def mpi_headers(self): + # recurse from self.prefix will find too many things for all the + # supported sub-architectures like 'mic' + mpi_root = self.prefix.compilers_and_libraries.linux.mpi.include64 + return find_headers('mpi', root=mpi_root, recurse=False) - absbindir = os.path.dirname( - os.path.realpath(os.path.join(self.prefix.bin, "icc"))) - abslibdir = os.path.dirname( - os.path.realpath(os.path.join( - self.prefix.lib, "intel64", "libimf.a"))) + @property + def components(self): + spec = self.spec + edition = self.version[0] - os.symlink(self.global_license_file, os.path.join(absbindir, - "license.lic")) - if spec.satisfies('+tools') and (spec.satisfies('@cluster') or - spec.satisfies('@professional')): - inspector_dir = "inspector_xe/licenses" - advisor_dir = "advisor_xe/licenses" - vtune_amplifier_dir = "vtune_amplifier_xe/licenses" + # Intel(R) Compilers + components = [ + # Common files + 'intel-comp-', + 'intel-openmp', + + # C/C++ + 'intel-icc', + + # Fortran + 'intel-ifort', + + # Parallel Studio Documentation and Licensing Files + 'intel-psxe', + ] + + # Intel(R) Parallel Studio XE Suite Files and Documentation + if edition == 'cluster': + components.append('intel-icsxe') + elif edition == 'professional': + components.extend(['intel-ips', 'intel-ipsc', 'intel-ipsf']) + elif edition == 'composer': + components.extend([ + 'intel-compxe', 'intel-ccompxe', 'intel-fcompxe' + ]) + + # Intel(R) Data Analytics Acceleration Library + if '+daal' in spec: + components.append('intel-daal') + + # Intel(R) Debugger for Heterogeneous Compute + if '+gdb' in spec: + components.append('intel-gdb') + + # Intel(R) Integrated Performance Primitives + if '+ipp' in spec: + components.extend(['intel-ipp', 'intel-crypto-ipp']) + + # Intel(R) Math Kernel Library + if '+mkl' in spec: + components.append('intel-mkl') + + # Intel(R) MPI Library + if '+mpi' in spec: + components.extend(['intel-mpi', 'intel-mpirt', 'intel-imb']) + + # Intel(R) Threading Building Blocks + if '+tbb' in spec: + components.append('intel-tbb') + + # Intel(R) Advisor + if '+advisor' in spec: + components.append('intel-advisor') + + # Intel(R) Cluster Checker + if '+clck' in spec: + components.append('intel_clck') + + # Intel(R) Inspector + if '+inspector' in spec: + components.append('intel-inspector') + + # Intel(R) Trace Analyzer and Collector + if '+itac' in spec: + components.extend(['intel-itac', 'intel-ta', 'intel-tc']) + + # Intel(R) VTune(TM) Amplifier XE + if '+vtune' in spec: + components.append('intel-vtune-amplifier-xe') + + return components + + @property + def bin_dir(self): + """The relative path to the bin directory with symlinks resolved.""" + + bin_path = os.path.join(self.prefix.bin, 'icc') + absolute_path = os.path.realpath(bin_path) # resolve symlinks + relative_path = os.path.relpath(absolute_path, self.prefix) + return os.path.dirname(relative_path) + + @property + def lib_dir(self): + """The relative path to the lib directory with symlinks resolved.""" + + lib_path = os.path.join(self.prefix.lib, 'intel64', 'libimf.a') + absolute_path = os.path.realpath(lib_path) # resolve symlinks + relative_path = os.path.relpath(absolute_path, self.prefix) + return os.path.dirname(relative_path) + + @property + def license_files(self): + spec = self.spec + year = self.version[1] + + directories = [ + 'Licenses', + self.bin_dir + ] + + if '+advisor' in spec: + advisor_dir = 'advisor_xe/licenses' - year = int(str(self.version).split('.')[1]) if year >= 2017: - inspector_dir = "inspector/licenses" - advisor_dir = "advisor/licenses" + advisor_dir = 'advisor/licenses' - os.mkdir(os.path.join(self.prefix, inspector_dir)) - os.symlink(self.global_license_file, os.path.join( - self.prefix, inspector_dir, "license.lic")) - os.mkdir(os.path.join(self.prefix, advisor_dir)) - os.symlink(self.global_license_file, os.path.join( - self.prefix, advisor_dir, "license.lic")) - os.mkdir(os.path.join(self.prefix, vtune_amplifier_dir)) - os.symlink(self.global_license_file, os.path.join( - self.prefix, vtune_amplifier_dir, "license.lic")) + directories.append(advisor_dir) - if (spec.satisfies('+all') or spec.satisfies('+mpi')) and \ - spec.satisfies('@cluster'): - 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 os.path.isdir(os.path.join(self.prefix, "itac", - ifile, "intel64")): - os.symlink(self.global_license_file, - os.path.join(self.prefix, "itac", - ifile, "intel64", - "license.lic")) - if spec.satisfies('~newdtags'): - wrappers = ["mpif77", "mpif77", "mpif90", "mpif90", - "mpigcc", "mpigcc", "mpigxx", "mpigxx", - "mpiicc", "mpiicc", "mpiicpc", "mpiicpc", - "mpiifort", "mpiifort"] + if '+inspector' in spec: + inspector_dir = 'inspector_xe/licenses' + + if year >= 2017: + inspector_dir = 'inspector/licenses' + + directories.append(inspector_dir) + + if '+itac' in spec: + itac_dir = 'itac_{0}'.format(year) + + directories.append(itac_dir) + + if '+vtune' in spec: + vtune_dir = 'vtune_amplifier_xe/licenses' + + directories.append(vtune_dir) + + return [os.path.join(dir, 'license.lic') for dir in directories] + + @run_after('install') + def filter_compiler_wrappers(self): + spec = self.spec + + if '+mpi' in spec: + if '~newdtags' in spec: + wrappers = [ + 'mpif77', 'mpif90', 'mpigcc', 'mpigxx', + 'mpiicc', 'mpiicpc', 'mpiifort' + ] wrapper_paths = [] for root, dirs, files in os.walk(spec.prefix): for name in files: @@ -286,153 +400,95 @@ def install(self, spec, prefix): wrapper_paths.append(os.path.join(spec.prefix, root, name)) for wrapper in wrapper_paths: - filter_file(r'-Xlinker --enable-new-dtags', r' ', - wrapper) + filter_file('-Xlinker --enable-new-dtags', ' ', + wrapper, string=True) - if spec.satisfies('+rpath'): - for compiler_command in ["icc", "icpc", "ifort"]: - cfgfilename = os.path.join(absbindir, "%s.cfg" % - compiler_command) - with open(cfgfilename, "w") as f: - f.write('-Xlinker -rpath -Xlinker %s\n' % abslibdir) + @run_after('install') + def rpath_configuration(self): + spec = self.spec - os.symlink(os.path.join(self.prefix.man, "common", "man1"), - os.path.join(self.prefix.man, "man1")) + if '+rpath' in spec: + lib_dir = os.path.join(self.prefix, self.lib_dir) + for compiler in ['icc', 'icpc', 'ifort']: + cfgfilename = os.path.join( + self.prefix, self.bin_dir, '{0}.cfg'.format(compiler)) + with open(cfgfilename, 'w') as f: + f.write('-Xlinker -rpath -Xlinker {0}\n'.format(lib_dir)) - def setup_environment(self, spack_env, run_env): - # TODO: Determine variables needed for the professional edition. + @run_after('install') + def fix_psxevars(self): + """Newer versions of Intel Parallel Studio have a bug in the + ``psxevars.sh`` script.""" - major_ver = self.version[1] + bindir = glob.glob(join_path( + self.prefix, 'parallel_studio*', 'bin'))[0] - # 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'): - spack_env.set('MKLROOT', join_path(self.prefix, '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')) - - if self.spec.satisfies('+all') or self.spec.satisfies('+tools'): - run_env.prepend_path('PATH', - join_path(self.prefix, 'vtune_amplifier_xe', - 'bin64')) - run_env.prepend_path('VTUNE_AMPLIFIER_XE_{0}_DIR'.format( - major_ver), - join_path(self.prefix, 'vtune_amplifier_xe')) + filter_file('^SCRIPTPATH=.*', 'SCRIPTPATH={0}'.format(self.prefix), + os.path.join(bindir, 'psxevars.sh'), + os.path.join(bindir, 'psxevars.csh')) def setup_dependent_environment(self, spack_env, run_env, dependent_spec): - spack_env.set('I_MPI_CC', spack_cc) - spack_env.set('I_MPI_CXX', spack_cxx) - spack_env.set('I_MPI_F77', spack_fc) - spack_env.set('I_MPI_F90', spack_f77) - spack_env.set('I_MPI_FC', spack_fc) + if '+mpi' in self.spec: + spack_env.set('I_MPI_CC', spack_cc) + spack_env.set('I_MPI_CXX', spack_cxx) + spack_env.set('I_MPI_F77', spack_fc) + spack_env.set('I_MPI_F90', spack_f77) + spack_env.set('I_MPI_FC', spack_fc) + + # set up MKLROOT for everyone using MKL package + if '+mkl' in self.spec: + mkl_root = self.prefix.compilers_and_libraries.linux.mkl.lib.intel64 # noqa + + spack_env.set('MKLROOT', self.prefix) + spack_env.append_path('SPACK_COMPILER_EXTRA_RPATHS', mkl_root) def setup_dependent_package(self, module, dep_spec): - # Check for presence of bin64 or bin directory - if os.path.isdir(self.prefix.bin): - bindir = self.prefix.bin - elif os.path.isdir(self.prefix.bin64): - bindir = self.prefix.bin64 - else: - raise RuntimeError('No suitable bindir found') + if '+mpi' in self.spec: + # Intel comes with 2 different flavors of MPI wrappers: + # + # * mpiicc, mpiicpc, and mpifort are hardcoded to wrap around + # the Intel compilers. + # * mpicc, mpicxx, mpif90, and mpif77 allow you to set which + # compilers to wrap using I_MPI_CC and friends. By default, + # wraps around the GCC compilers. + # + # In theory, these should be equivalent as long as I_MPI_CC + # and friends are set to point to the Intel compilers, but in + # practice, mpicc fails to compile some applications while + # mpiicc works. + bindir = self.prefix.compilers_and_libraries.linux.mpi.intel64.bin - self.spec.mpicc = join_path(bindir, 'mpicc') - self.spec.mpicxx = join_path(bindir, 'mpic++') - self.spec.mpifc = join_path(bindir, 'mpif90') - self.spec.mpif77 = join_path(bindir, 'mpif77') + if self.compiler.name == 'intel': + self.spec.mpicc = bindir.mpiicc + self.spec.mpicxx = bindir.mpiicpc + self.spec.mpifc = bindir.mpiifort + self.spec.mpif77 = bindir.mpiifort + else: + self.spec.mpicc = bindir.mpicc + self.spec.mpicxx = bindir.mpicxx + self.spec.mpifc = bindir.mpif90 + self.spec.mpif77 = bindir.mpif77 + + def setup_environment(self, spack_env, run_env): + """Adds environment variables to the generated module file. + + These environment variables come from running: + + .. code-block:: console + + $ source parallel_studio_xe_2017/bin/psxevars.sh intel64 + """ + # NOTE: Spack runs setup_environment twice, once pre-build to set up + # the build environment, and once post-installation to determine + # the environment variables needed at run-time to add to the module + # file. The script we need to source is only present post-installation, + # so check for its existence before sourcing. + # TODO: At some point we should split setup_environment into + # setup_build_environment and setup_run_environment to get around + # this problem. + psxevars = glob.glob(join_path( + self.prefix, 'parallel_studio*', 'bin', 'psxevars.sh')) + + if psxevars: + run_env.extend(EnvironmentModifications.from_sourcing_file( + psxevars[0], 'intel64')) diff --git a/var/spack/repos/builtin/packages/tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py similarity index 99% rename from var/spack/repos/builtin/packages/tbb/package.py rename to var/spack/repos/builtin/packages/intel-tbb/package.py index a23ac23983f..6d5c2bbbb06 100644 --- a/var/spack/repos/builtin/packages/tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-tbb/package.py @@ -26,7 +26,7 @@ import glob -class Tbb(Package): +class IntelTbb(Package): """Widely used C++ template library for task parallelism. Intel Threading Building Blocks (Intel TBB) lets you easily write parallel C++ programs that take full advantage of multicore performance, that are @@ -47,6 +47,8 @@ class Tbb(Package): version('4.4.3', '80707e277f69d9b20eeebdd7a5f5331137868ce1', url='https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb44_20160128oss_src_0.tgz') + provides('tbb') + def coerce_to_spack(self, tbb_build_subdir): for compiler in ["icc", "gcc", "clang"]: fs = glob.glob(join_path(tbb_build_subdir, diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index 70c8453d498..8024a5ebeaf 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -22,102 +22,13 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from spack import * import os -import re + +from spack import * +from spack.environment import EnvironmentModifications -def filter_pick(input_list, regex_filter): - """Returns the items in input_list that are found in the regex_filter""" - return [l for l in input_list for m in (regex_filter(l),) if m] - - -def unfilter_pick(input_list, regex_filter): - """Returns the items in input_list that are not found in the - regex_filter""" - return [l for l in input_list for m in (regex_filter(l),) if not m] - - -def get_all_components(): - """Returns a list of all the components associated with the downloaded - Intel package""" - all_components = [] - with open("pset/mediaconfig.xml", "r") as f: - lines = f.readlines() - for line in lines: - if line.find('') != -1: - component = line[line.find('') + 6:line.find('')] - all_components.append(component) - return all_components - - -class IntelInstaller(Package): - """Base package containing common methods for installing Intel software""" - - homepage = "https://software.intel.com/en-us" - intel_components = "ALL" - license_comment = '#' - license_files = ['Licenses/license.lic'] - license_vars = ['INTEL_LICENSE_FILE'] - license_url = \ - 'https://software.intel.com/en-us/articles/intel-license-manager-faq' - - @property - def license_required(self): - # The Intel libraries are provided without requiring a license as of - # version 2017.2. Trying to specify the license will fail. See - # https://software.intel.com/en-us/articles/free-mkl - if (self.spec.satisfies("intel-mkl@2017.2:") or - self.spec.satisfies("intel-daal@2017.2:") or - self.spec.satisfies("intel-mpi@2017.2:") or - self.spec.satisfies("intel-ipp@2017.2:")): - return False - return True - - @property - def global_license_file(self): - """Returns the path where a global license file should be stored.""" - if not self.license_files: - return - return join_path(self.global_license_dir, "intel", - os.path.basename(self.license_files[0])) - - def install(self, spec, prefix): - - if not hasattr(self, "intel_prefix"): - self.intel_prefix = self.prefix - - silent_config_filename = 'silent.cfg' - with open(silent_config_filename, 'w') as f: - f.write(""" -ACCEPT_EULA=accept -PSET_MODE=install -CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes -PSET_INSTALL_DIR=%s -NONRPM_DB_DIR=%s -CONTINUE_WITH_OPTIONAL_ERROR=yes -COMPONENTS=%s -""" % (self.intel_prefix, self.intel_prefix, self.intel_components)) - - # The Intel libraries are provided without requiring a license as of - # version 2017.2. Trying to specify the license will fail. See - # https://software.intel.com/en-us/articles/free-mkl - if not (spec.satisfies("intel-mkl@2017.2:") or - spec.satisfies("intel-daal@2017.2:") or - spec.satisfies("intel-mpi@2017.2:") or - spec.satisfies("intel-ipp@2017.2:")): - with open(silent_config_filename, 'a') as f: - f.write(""" -ACTIVATION_LICENSE_FILE=%s -ACTIVATION_TYPE=license_file -PHONEHOME_SEND_USAGE_DATA=no -""" % (self.global_license_file)) - - install_script = Executable("./install.sh") - install_script('--silent', silent_config_filename) - - -class Intel(IntelInstaller): +class Intel(IntelPackage): """Intel Compilers.""" homepage = "https://software.intel.com/en-us/intel-parallel-studio-xe" @@ -126,77 +37,72 @@ class Intel(IntelInstaller): url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11541/parallel_studio_xe_2017_update4_composer_edition.tgz') version('17.0.3', '52344df122c17ddff3687f84ceb21623', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11464/parallel_studio_xe_2017_update3_composer_edition.tgz') - version('17.0.2', '2891ab1ece43eb61b6ab892f07c47f01', + version('17.0.2', '2891ab1ece43eb61b6ab892f07c47f01', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11302/parallel_studio_xe_2017_update2_composer_edition.tgz') - version('17.0.1', '1f31976931ed8ec424ac7c3ef56f5e85', + version('17.0.1', '1f31976931ed8ec424ac7c3ef56f5e85', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/10978/parallel_studio_xe_2017_update1_composer_edition.tgz') - version('17.0.0', 'b67da0065a17a05f110ed1d15c3c6312', + version('17.0.0', 'b67da0065a17a05f110ed1d15c3c6312', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9656/parallel_studio_xe_2017_composer_edition.tgz') - version('16.0.4', '2bc9bfc9be9c1968a6e42efb4378f40e', + version('16.0.4', '2bc9bfc9be9c1968a6e42efb4378f40e', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9785/parallel_studio_xe_2016_composer_edition_update4.tgz') - version('16.0.3', '3208eeabee951fc27579177b593cefe9', + version('16.0.3', '3208eeabee951fc27579177b593cefe9', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9063/parallel_studio_xe_2016_composer_edition_update3.tgz') - version('16.0.2', '1133fb831312eb519f7da897fec223fa', + version('16.0.2', '1133fb831312eb519f7da897fec223fa', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/8680/parallel_studio_xe_2016_composer_edition_update2.tgz') - variant('rpath', default=True, description="Add rpath to .cfg files") + variant('rpath', default=True, description='Add rpath to .cfg files') - def install(self, spec, prefix): - components = [] - all_components = get_all_components() - regex = '(comp|openmp|intel-tbb|icc|ifort|psxe|icsxe-pset)' - components = filter_pick(all_components, re.compile(regex).search) + components = [ + # Common files + 'intel-comp-', + 'intel-openmp', - self.intel_components = ';'.join(components) - IntelInstaller.install(self, spec, prefix) + # C/C++ + 'intel-icc', - absbindir = os.path.split(os.path.realpath(os.path.join( - self.prefix.bin, "icc")))[0] - abslibdir = os.path.split(os.path.realpath(os.path.join( - self.prefix.lib, "intel64", "libimf.a")))[0] + # Fortran + 'intel-ifort', + ] - # symlink or copy? - os.symlink(self.global_license_file, - os.path.join(absbindir, "license.lic")) + @property + def license_files(self): + return [ + 'Licenses/license.lic', + join_path('compilers_and_libraries', 'linux', 'bin', + 'intel64', 'license.lic') + ] - if spec.satisfies('+rpath'): - for compiler_command in ["icc", "icpc", "ifort"]: - cfgfilename = os.path.join(absbindir, "%s.cfg" % - compiler_command) - with open(cfgfilename, "w") as f: - f.write('-Xlinker -rpath -Xlinker %s\n' % abslibdir) - - os.symlink(os.path.join(self.prefix.man, "common", "man1"), - os.path.join(self.prefix.man, "man1")) + @run_after('install') + def rpath_configuration(self): + if '+rpath' in self.spec: + bin_dir = join_path(self.prefix, 'compilers_and_libraries', + 'linux', 'bin', 'intel64') + lib_dir = join_path(self.prefix, 'compilers_and_libraries', + 'linux', 'compiler', 'lib', 'intel64_lin') + for compiler in ['icc', 'icpc', 'ifort']: + cfgfilename = join_path(bin_dir, '{0}.cfg'.format(compiler)) + with open(cfgfilename, 'w') as f: + f.write('-Xlinker -rpath -Xlinker {0}\n'.format(lib_dir)) def setup_environment(self, spack_env, run_env): + """Adds environment variables to the generated module file. - # 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')) + These environment variables come from running: - # 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')) + .. code-block:: console + + $ source bin/compilervars.sh intel64 + """ + # NOTE: Spack runs setup_environment twice, once pre-build to set up + # the build environment, and once post-installation to determine + # the environment variables needed at run-time to add to the module + # file. The script we need to source is only present post-installation, + # so check for its existence before sourcing. + # TODO: At some point we should split setup_environment into + # setup_build_environment and setup_run_environment to get around + # this problem. + compilervars = os.path.join(self.prefix.bin, 'compilervars.sh') + + if os.path.isfile(compilervars): + run_env.extend(EnvironmentModifications.from_sourcing_file( + compilervars, 'intel64')) From 11b3ce27b7dbd76014955f36f8d6097498bf58be Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 16 Aug 2017 12:25:37 -0500 Subject: [PATCH 1497/2394] Add better generator support to CMakePackage (#4988) * Add better generator support to CMakePackage * List valid CMake generators on error --- lib/spack/spack/build_systems/cmake.py | 53 ++++++++++++++++--- lib/spack/spack/package.py | 20 ++++++- .../repos/builtin/packages/archer/package.py | 14 ++--- .../packages/llvm-openmp-ompt/package.py | 15 ++---- 4 files changed, 71 insertions(+), 31 deletions(-) diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index db3240e8a52..f643320b10f 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -30,12 +30,15 @@ import spack.build_environment from llnl.util.filesystem import working_dir, join_path from spack.directives import depends_on, variant -from spack.package import PackageBase, run_after +from spack.package import PackageBase, InstallError, run_after class CMakePackage(PackageBase): """Specialized class for packages built using CMake + For more information on the CMake build system, see: + https://cmake.org/cmake/help/latest/ + This class provides three phases that can be overridden: 1. :py:meth:`~.CMakePackage.cmake` @@ -69,6 +72,16 @@ class CMakePackage(PackageBase): build_time_test_callbacks = ['check'] + #: The build system generator to use. + #: + #: See ``cmake --help`` for a list of valid generators. + #: Currently, "Unix Makefiles" and "Ninja" are the only generators + #: that Spack supports. Defaults to "Unix Makefiles". + #: + #: See https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html + #: for more information. + generator = 'Unix Makefiles' + # https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html variant('build_type', default='RelWithDebInfo', description='The build type to build', @@ -100,14 +113,31 @@ def std_cmake_args(self): @staticmethod def _std_args(pkg): """Computes the standard cmake arguments for a generic package""" + try: + generator = pkg.generator + except AttributeError: + generator = 'Unix Makefiles' + + # Make sure a valid generator was chosen + valid_generators = ['Unix Makefiles', 'Ninja'] + if generator not in valid_generators: + msg = "Invalid CMake generator: '{0}'\n".format(generator) + msg += "CMakePackage currently supports the following " + msg += "generators: '{0}'".format("', '".join(valid_generators)) + raise InstallError(msg) + try: build_type = pkg.spec.variants['build_type'].value except KeyError: build_type = 'RelWithDebInfo' - args = ['-DCMAKE_INSTALL_PREFIX:PATH={0}'.format(pkg.prefix), - '-DCMAKE_BUILD_TYPE:STRING={0}'.format(build_type), - '-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON'] + args = [ + '-G', generator, + '-DCMAKE_INSTALL_PREFIX:PATH={0}'.format(pkg.prefix), + '-DCMAKE_BUILD_TYPE:STRING={0}'.format(build_type), + '-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON' + ] + if platform.mac_ver()[0]: args.append('-DCMAKE_FIND_FRAMEWORK:STRING=LAST') @@ -158,12 +188,18 @@ def cmake(self, spec, prefix): def build(self, spec, prefix): """Make the build targets""" with working_dir(self.build_directory): - inspect.getmodule(self).make(*self.build_targets) + if self.generator == 'Unix Makefiles': + inspect.getmodule(self).make(*self.build_targets) + elif self.generator == 'Ninja': + inspect.getmodule(self).ninja(*self.build_targets) def install(self, spec, prefix): """Make the install targets""" with working_dir(self.build_directory): - inspect.getmodule(self).make(*self.install_targets) + if self.generator == 'Unix Makefiles': + inspect.getmodule(self).make(*self.install_targets) + elif self.generator == 'Ninja': + inspect.getmodule(self).ninja(*self.install_targets) run_after('build')(PackageBase._run_default_build_time_test_callbacks) @@ -172,7 +208,10 @@ def check(self): and runs it if found. """ with working_dir(self.build_directory): - self._if_make_target_execute('test') + if self.generator == 'Unix Makefiles': + self._if_make_target_execute('test') + elif self.generator == 'Ninja': + self._if_ninja_target_execute('test') # Check that self.prefix is there after installation run_after('install')(PackageBase.sanity_check_prefix) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 8c849573a7c..cbf7d92ea69 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1091,12 +1091,30 @@ def _if_make_target_execute(self, target): matches = [line for line in f.readlines() if regex.match(line)] if not matches: - tty.msg('Target \'' + target + ':\' not found in Makefile') + tty.msg("Target '" + target + ":' not found in Makefile") return # Execute target inspect.getmodule(self).make(target) + def _if_ninja_target_execute(self, target): + # Check if we have a ninja build script + if not os.path.exists('build.ninja'): + tty.msg('No ninja build script found in the build directory') + return + + # Check if 'target' is in the ninja build script + regex = re.compile('^build ' + target + ':') + with open('build.ninja', 'r') as f: + matches = [line for line in f.readlines() if regex.match(line)] + + if not matches: + tty.msg("Target 'build " + target + ":' not found in build.ninja") + return + + # Execute target + inspect.getmodule(self).ninja(target) + def _get_needed_resources(self): resources = [] # Select the resources that are needed for this build diff --git a/var/spack/repos/builtin/packages/archer/package.py b/var/spack/repos/builtin/packages/archer/package.py index 08831912776..f5e4fbf8c14 100644 --- a/var/spack/repos/builtin/packages/archer/package.py +++ b/var/spack/repos/builtin/packages/archer/package.py @@ -36,22 +36,14 @@ class Archer(CMakePackage): depends_on('cmake@3.4.3:', type='build') depends_on('llvm') - depends_on('ninja', type='build') + depends_on('ninja@1.5:', type='build') depends_on('llvm-openmp-ompt') + generator = 'Ninja' + def cmake_args(self): return [ - '-G', 'Ninja', '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', '-DOMP_PREFIX:PATH=%s' % self.spec['llvm-openmp-ompt'].prefix, ] - - # TODO: Add better ninja support to CMakePackage - def build(self, spec, prefix): - with working_dir(self.build_directory): - ninja() - - def install(self, spec, prefix): - with working_dir(self.build_directory): - ninja('install') diff --git a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py index 8039ec17170..edbd9f04e18 100644 --- a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py +++ b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py @@ -44,24 +44,15 @@ class LlvmOpenmpOmpt(CMakePackage): depends_on('cmake@2.8:', type='build') depends_on('llvm') - depends_on('ninja', type='build') + depends_on('ninja@1.5:', type='build') + + generator = 'Ninja' def cmake_args(self): return [ - '-G', 'Ninja', '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', - '-DCMAKE_BUILD_TYPE=Release', '-DLIBOMP_OMPT_SUPPORT=on', '-DLIBOMP_OMPT_BLAME=on', '-DLIBOMP_OMPT_TRACE=on' ] - - # TODO: Add better ninja support to CMakePackage - def build(self, spec, prefix): - with working_dir(self.build_directory): - ninja() - - def install(self, spec, prefix): - with working_dir(self.build_directory): - ninja('install') From 7aa81afa6867607905053a5d4ba48e5663217123 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 16 Aug 2017 13:13:18 -0500 Subject: [PATCH 1498/2394] preseq: new package (#5122) --- .../repos/builtin/packages/preseq/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/preseq/package.py diff --git a/var/spack/repos/builtin/packages/preseq/package.py b/var/spack/repos/builtin/packages/preseq/package.py new file mode 100644 index 00000000000..87779bcbac5 --- /dev/null +++ b/var/spack/repos/builtin/packages/preseq/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Preseq(MakefilePackage): + """The preseq package is aimed at predicting and estimating the complexity + of a genomic sequencing library, equivalent to predicting and + estimating the number of redundant reads from a given sequencing depth + and how many will be expected from additional sequencing using an + initial sequencing experiment.""" + + homepage = "https://github.com/smithlabcode/preseq" + url = "https://github.com/smithlabcode/preseq/releases/download/v2.0.2/preseq_v2.0.2.tar.bz2" + + version('2.0.2', '9f2a7b597c9f08b821db6ee55e2ea39c') + + depends_on('samtools') + depends_on('gsl') + + def setup_environment(self, spack_env, run_env): + spack_env.set('PREFIX', self.prefix) From b12fd4e8319abbd40034c7c3ec2bf030e423cc04 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 16 Aug 2017 13:13:38 -0500 Subject: [PATCH 1499/2394] phylip: new package (#5121) --- .../repos/builtin/packages/phylip/package.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 var/spack/repos/builtin/packages/phylip/package.py diff --git a/var/spack/repos/builtin/packages/phylip/package.py b/var/spack/repos/builtin/packages/phylip/package.py new file mode 100644 index 00000000000..39bcd3c1e51 --- /dev/null +++ b/var/spack/repos/builtin/packages/phylip/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Phylip(Package): + """PHYLIP (the PHYLogeny Inference Package) is a package of programs for + inferring phylogenies (evolutionary trees).""" + + homepage = "http://evolution.genetics.washington.edu/phylip/" + url = "http://evolution.gs.washington.edu/phylip/download/phylip-3.696.tar.gz" + + version('3.696', 'dbe5abc26f6089ead3dba41c2db526ee') + + def install(self, spec, prefix): + with working_dir('src'): + if self.spec.satisfies('platform=darwin'): + make('all', '-f', 'Makefile.osx') + make('put', '-f', 'Makefile.osx') + else: + make('all', '-f', 'Makefile.unx') + make('put', '-f', 'Makefile.unx') + install_tree('exe', prefix.bin) From ffaa0b7eee3f16f06eb47a955ffc09c33cce7798 Mon Sep 17 00:00:00 2001 From: Cesare Cugnasco Date: Wed, 16 Aug 2017 19:14:37 +0100 Subject: [PATCH 1500/2394] Adding Thrift versions 0.10.0 and 0.9.3 (#5117) * Adding Thrift version 0.10.0 and 0.9.3 Hi, I've added the versions 0.10.0 and 0.9.3 * fixed flake8 errors --- var/spack/repos/builtin/packages/thrift/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py index 598fd194d9b..c91d0096f31 100644 --- a/var/spack/repos/builtin/packages/thrift/package.py +++ b/var/spack/repos/builtin/packages/thrift/package.py @@ -38,6 +38,8 @@ class Thrift(Package): homepage = "http://thrift.apache.org" url = "http://apache.mirrors.ionfish.org/thrift/0.9.2/thrift-0.9.2.tar.gz" + version('0.10.0', '795c5dd192e310ffff38cfd9430d6b29') + version('0.9.3', '88d667a8ae870d5adeca8cb7d6795442') version('0.9.2', '89f63cc4d0100912f4a1f8a9dee63678') # Currently only support for c-family and python From b547e6a27311d8777db734659bacd9dd75e6bcc2 Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 16 Aug 2017 20:14:54 +0200 Subject: [PATCH 1501/2394] Add package rtags (#5111) * Add package rtags * fixed license * transform to cmakepackage and add dependencies * add dependencies and patch for rtags * flake8 fix * clean up dependencies --- ..._string_iterator_erase_compile_check.patch | 67 +++++++++++++++++++ .../repos/builtin/packages/rtags/package.py | 49 ++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 var/spack/repos/builtin/packages/rtags/add_string_iterator_erase_compile_check.patch create mode 100644 var/spack/repos/builtin/packages/rtags/package.py diff --git a/var/spack/repos/builtin/packages/rtags/add_string_iterator_erase_compile_check.patch b/var/spack/repos/builtin/packages/rtags/add_string_iterator_erase_compile_check.patch new file mode 100644 index 00000000000..98ec67df5f9 --- /dev/null +++ b/var/spack/repos/builtin/packages/rtags/add_string_iterator_erase_compile_check.patch @@ -0,0 +1,67 @@ +From e0cb0bfba240669e27d77ea4ac17a90fde1a03fd Mon Sep 17 00:00:00 2001 +From: Anders Bakken +Date: Thu, 27 Jul 2017 20:55:19 -0700 +Subject: [PATCH] Add a compile test for proper c++11 support for std::string + and work around deficient stls. + +--- + rct.cmake | 10 ++++++++++ + rct/String.h | 10 ++++++++++ + rct/rct-config.h.in | 1 + + 3 files changed, 21 insertions(+) + +diff --git a/src/rct/rct.cmake b/src/rct/rct.cmake +index da102d2..30da945 100644 +--- a/src/rct/rct.cmake ++++ b/src/rct/rct.cmake +@@ -287,6 +287,16 @@ check_cxx_source_runs(" + return 0; + }" HAVE_UNORDERDED_MAP_WORKING_MOVE_CONSTRUCTOR) + ++check_cxx_source_runs(" ++ #include ++ ++ int main(int, char **) ++ { ++ std::string str = \"foobar testing\"; ++ std::string::iterator it = str.erase(str.begin(), str.end()); ++ return 0; ++ }" HAVE_STRING_ITERATOR_ERASE) ++ + unset(CMAKE_REQUIRED_FLAGS) + unset(CMAKE_REQUIRED_LIBRARIES) + +diff --git a/src/rct/rct/String.h b/src/rct/rct/String.h +index f8b9dbc..31b2012 100644 +--- a/src/rct/rct/String.h ++++ b/src/rct/rct/String.h +@@ -454,7 +454,17 @@ class String + + iterator erase(const_iterator begin, const_iterator end) + { ++#ifdef HAVE_STRING_ITERATOR_ERASE + return mString.erase(begin, end); ++#else ++ if (begin >= end) { ++ return mString.end(); ++ } ++ ++ const size_t offset = begin - mString.begin(); ++ mString.erase(offset, end - begin); ++ return mString.begin() + offset; ++#endif + } + + String& erase(size_t index = 0, size_t count = npos) +diff --git a/src/rct/rct/rct-config.h.in b/src/rct/rct/rct-config.h.in +index 9c67e2f..87c5b7c 100644 +--- a/src/rct/rct/rct-config.h.in ++++ b/src/rct/rct/rct-config.h.in +@@ -20,6 +20,7 @@ + #cmakedefine HAVE_SHMDEST + #cmakedefine HAVE_SCRIPTENGINE + #cmakedefine HAVE_UNORDERDED_MAP_WORKING_MOVE_CONSTRUCTOR ++#cmakedefine HAVE_HAVE_STRING_ITERATOR_ERASE + #if !defined(HAVE_EPOLL) && !defined(HAVE_KQUEUE) + #cmakedefine HAVE_SELECT + #endif diff --git a/var/spack/repos/builtin/packages/rtags/package.py b/var/spack/repos/builtin/packages/rtags/package.py new file mode 100644 index 00000000000..e212ea108ce --- /dev/null +++ b/var/spack/repos/builtin/packages/rtags/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Rtags(CMakePackage): + """RTags is a client/server application that indexes C/C++ code""" + + homepage = "https://github.com/Andersbakken/rtags/" + url = "https://andersbakken.github.io/rtags-releases/rtags-2.12.tar.gz" + + version('2.12', '84988aaff27915a79d4b4b57299f9a51') + + depends_on("llvm@3.3: +clang") + depends_on("zlib") + depends_on("openssl") + depends_on("lua@5.3:") + depends_on("bash-completion") + depends_on("pkg-config", type='build') + + patch("add_string_iterator_erase_compile_check.patch", when='@2.12') + + def cmake_args(self): + args = ['-DCMAKE_EXPORT_COMPILE_COMMANDS=1', + '-DRTAGS_NO_ELISP_FILES=1', + ] + return args From dc3526c7f1a42b8ff26504fd9a3d36756b82c757 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 16 Aug 2017 14:53:43 -0500 Subject: [PATCH 1502/2394] py-misopy: new package (#5119) * py-misopy: new package * waiting for link to be fixed * got correct url and checksum * specifying dependency version requirements --- .../builtin/packages/py-misopy/package.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-misopy/package.py diff --git a/var/spack/repos/builtin/packages/py-misopy/package.py b/var/spack/repos/builtin/packages/py-misopy/package.py new file mode 100644 index 00000000000..3bfba1cc307 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-misopy/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyMisopy(PythonPackage): + """MISO (Mixture of Isoforms) is a probabilistic framework that + quantitates the expression level of alternatively spliced genes from + RNA-Seq data, and identifies differentially regulated isoforms or exons + across samples.""" + + homepage = "http://miso.readthedocs.io/en/fastmiso/" + url = "https://pypi.io/packages/source/m/misopy/misopy-0.5.4.tar.gz" + + version('0.5.4', 'fe0c9c2613304defbdead12ea99e4194') + + depends_on('py-setuptools', type='build') + depends_on('python@2.6:', type=('build', 'run')) + depends_on('py-numpy@1.5.0:', type=('build', 'run')) + depends_on('py-scipy@0.9.0:', type=('build', 'run')) + depends_on('py-pysam@0.6.0:', type=('build', 'run')) + depends_on('py-matplotlib', type=('build', 'run')) + depends_on('samtools') + depends_on('bedtools2') From af02774b3ef1ed2cce63a7fba12877744c911371 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 16 Aug 2017 15:58:09 -0500 Subject: [PATCH 1503/2394] Add tab completion & update docs for buildcache This adds tab completion and fixes some formatting issues in the documentation for the "spack buildcache" command. --- lib/spack/docs/binary_caches.rst | 148 +++++++++++++++++------------- lib/spack/docs/index.rst | 2 +- share/spack/spack-completion.bash | 44 +++++++++ 3 files changed, 131 insertions(+), 63 deletions(-) diff --git a/lib/spack/docs/binary_caches.rst b/lib/spack/docs/binary_caches.rst index d655d2ce582..3839290c98e 100644 --- a/lib/spack/docs/binary_caches.rst +++ b/lib/spack/docs/binary_caches.rst @@ -1,108 +1,132 @@ .. _binary_caches: +============ Build caches ============ Some sites may encourage users to set up their own test environments -before carrying out central installations, or some users prefer to set +before carrying out central installations, or some users may prefer to set up these environments on their own motivation. To reduce the load of recompiling otherwise identical package specs in different installations, -installed packages can be put into build cache tarballs, uploaded to -your spack mirror and then downloaded and installed by others. +installed packages can be put into build cache tarballs, uploaded to +your Spack mirror and then downloaded and installed by others. +-------------------------- Creating build cache files -------------------------- A compressed tarball of an installed package is created. Tarballs are created for all of its link and run dependency packages as well. Compressed tarballs are -signed with gpg and signature and tarball and put in a ".spack" file. Optionally -, the rpaths ( and ids and deps on macOS ) can be changed to paths relative to -the spack install tree before the tarball is created. +signed with gpg and signature and tarball and put in a ``.spack`` file. Optionally, +the rpaths (and ids and deps on macOS) can be changed to paths relative to +the Spack install tree before the tarball is created. Build caches are created via: -.. code-block:: sh +.. code-block:: console - $ spack buildcache create + $ spack buildcache create +--------------------------------------- Finding or installing build cache files --------------------------------------- -To find build caches or install build caches, a spack mirror must be configured -with - -``spack mirror add ``. +To find build caches or install build caches, a Spack mirror must be configured +with: -Build caches are found via: +.. code-block:: console -.. code-block:: sh + $ spack mirror add + +Build caches are found via: + +.. code-block:: console $ spack buildcache list Build caches are installed via: -.. code-block:: sh +.. code-block:: console - $ spack buildcache install - + $ spack buildcache install + +---------- Relocation ---------- -Initial build and later installation do not necessarily happen at the same -location. Spack provides a relocation capability and corrects for RPATHs and -non-relocatable scripts. However, many packages compile paths into binary -artificats directly. In such cases, the build instructions of this package would +Initial build and later installation do not necessarily happen at the same +location. Spack provides a relocation capability and corrects for RPATHs and +non-relocatable scripts. However, many packages compile paths into binary +artifacts directly. In such cases, the build instructions of this package would need to be adjusted for better re-locatability. +.. _cmd-spack-buildcache: -Usage ------ -spack buildcache create <> -^^^^^^^^^^^^^^^^^^^^^^^^^^ -Create tarball of installed spack package and all dependencies. -Tarballs is checksummed and signed if gpg2 is available. -Places them in a directory build_cache that can be copied to a mirror. -Commands like "spack buildcache install" will search it for pre-compiled packages. - +-------------------- +``spack buildcache`` +-------------------- -options: - --d : directory in which "build_cache" direcory is created, defaults to "." --f : overwrite ".spack" file in "build_cache" directory if it exists --k : the key to sign package with. In the case where multiple keys exist, the package will be unsigned unless -k is used. --r : make paths in binaries relative before creating tarball --y : answer yes to all create unsigned "build_cache" questions -<> : list of package specs or package hashes with leading / - -spack buildcache list <> -^^^^^^^^^^^^^^^^^^^^^^^^ -Retrieves all specs for build caches available on a spack mirror. - -options: - -<> string to be matched to matched to begining of listed concretized short -specs, eg. "spack buildcache list gcc" with print only commands to install gcc -package(s) - -spack buildcache install <> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Retrieves all specs for build caches available on a spack mirror and installs build caches -with specs matching the specs or hashes input. +``spack buildcache create`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^ -options: +Create tarball of installed Spack package and all dependencies. +Tarballs are checksummed and signed if gpg2 is available. +Places them in a directory ``build_cache`` that can be copied to a mirror. +Commands like ``spack buildcache install`` will search it for pre-compiled packages. --f : remove install directory if it exists before unpacking tarball --y : answer yes to all to don't verify package with gpg questions -<> : list of package specs or package hashes with leading / +============== ======================================================================================================================== +Arguments Description +============== ======================================================================================================================== +```` list of package specs or package hashes with leading ``/`` +``-d `` directory in which ``build_cache`` directory is created, defaults to ``.`` +``-f`` overwrite ``.spack`` file in ``build_cache`` directory if it exists +``-k `` the key to sign package with. In the case where multiple keys exist, the package will be unsigned unless ``-k`` is used. +``-r`` make paths in binaries relative before creating tarball +``-y`` answer yes to all create unsigned ``build_cache`` questions +============== ======================================================================================================================== -spack buildcache keys -^^^^^^^^^^^^^^^^^^^^^ -List public keys available on spack mirror. +^^^^^^^^^^^^^^^^^^^^^^^^^ +``spack buildcache list`` +^^^^^^^^^^^^^^^^^^^^^^^^^ -options: +Retrieves all specs for build caches available on a Spack mirror. --i : trust the keys downloaded with prompt for each --y : answer yes to all trust all keys downloaded +============== ============================================================================== +Arguments Description +============== ============================================================================== +```` string to be matched to matched to beginning of listed concretized short specs +============== ============================================================================== + +E.g. ``spack buildcache list gcc`` with print only commands to install ``gcc`` package(s) + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +``spack buildcache install`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Retrieves all specs for build caches available on a Spack mirror and installs build caches +with specs matching the specs or hashes input. + +============== ============================================================== +Arguments Description +============== ============================================================== +```` list of package specs or package hashes with leading ``/`` +``-f`` remove install directory if it exists before unpacking tarball +``-y`` answer yes to all to don't verify package with gpg questions +============== ============================================================== + +^^^^^^^^^^^^^^^^^^^^^^^^^ +``spack buildcache keys`` +^^^^^^^^^^^^^^^^^^^^^^^^^ + +List public keys available on Spack mirror. + +========= ============================================== +Arguments Description +========= ============================================== +``-i`` trust the keys downloaded with prompt for each +``-y`` answer yes to all trust all keys downloaded +========= ============================================== diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index e86ab0ca853..cae404d2f1c 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -63,9 +63,9 @@ or refer to the full manual below. mirrors module_file_support repositories + binary_caches command_index package_list - binary_caches .. toctree:: :maxdepth: 2 diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 46070d68ccf..408aaf61ac2 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -152,6 +152,50 @@ function _spack_build { fi } +function _spack_buildcache { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "create install keys list" -- "$cur" + fi +} + +function _spack_buildcache_create { + if $list_options + then + compgen -W "-h --help -r --rel -f --force -y --yes-to-all -k --key + -d --directory" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_buildcache_install { + if $list_options + then + compgen -W "-h --help -f --force -y --yes-to-all" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + +function _spack_buildcache_keys { + if $list_options + then + compgen -W "-h --help -i --install -y --yes-to-all" -- "$cur" + fi +} + +function _spack_buildcache_list { + if $list_options + then + compgen -W "-h --help" -- "$cur" + else + compgen -W "$(_all_packages)" -- "$cur" + fi +} + function _spack_cd { if $list_options then From 6a2cfedc7ada67a9ae98f8a01114a011204fa612 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 16 Aug 2017 19:34:43 -0500 Subject: [PATCH 1504/2394] gapcloser: new package (#5130) --- .../builtin/packages/gapcloser/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gapcloser/package.py diff --git a/var/spack/repos/builtin/packages/gapcloser/package.py b/var/spack/repos/builtin/packages/gapcloser/package.py new file mode 100644 index 00000000000..45052347569 --- /dev/null +++ b/var/spack/repos/builtin/packages/gapcloser/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Gapcloser(Package): + """The GapCloser is designed to close the gaps emerging during the + scaffolding process""" + + homepage = "https://sourceforge.net/projects/soapdenovo2/files/GapCloser/" + url = "https://downloads.sourceforge.net/project/soapdenovo2/GapCloser/bin/r6/GapCloser-bin-v1.12-r6.tgz" + + version('1.12-r6', '42b4e4256bdc9f9f31a391a359256209') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('GapCloser', prefix.bin) From 3a55d454972e9b6e70e68223159b050ea8065a98 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 16 Aug 2017 19:35:04 -0500 Subject: [PATCH 1505/2394] discovar: new package (#5129) --- .../builtin/packages/discovar/package.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/discovar/package.py diff --git a/var/spack/repos/builtin/packages/discovar/package.py b/var/spack/repos/builtin/packages/discovar/package.py new file mode 100644 index 00000000000..fcce9263ccd --- /dev/null +++ b/var/spack/repos/builtin/packages/discovar/package.py @@ -0,0 +1,36 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Discovar(AutotoolsPackage): + """DISCOVAR is a variant caller and small genome assembler.""" + + homepage = "https://software.broadinstitute.org/software/discovar/blog/" + url = "ftp://ftp.broadinstitute.org/pub/crd/Discovar/latest_source_code/discovar-52488.tar.gz" + + version('52488', 'e72a0b9363e25c99d8e8729c0be98364') + + conflicts('%gcc@6:') From d423f85fed76c27807ece2396731c07bc9d4a38f Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 16 Aug 2017 19:36:29 -0500 Subject: [PATCH 1506/2394] dialign-tx: new package (#5126) * dialign-tx: new package * utilizing build_directory variable * forgot one --- .../builtin/packages/dialign-tx/package.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 var/spack/repos/builtin/packages/dialign-tx/package.py diff --git a/var/spack/repos/builtin/packages/dialign-tx/package.py b/var/spack/repos/builtin/packages/dialign-tx/package.py new file mode 100644 index 00000000000..ccb094605e6 --- /dev/null +++ b/var/spack/repos/builtin/packages/dialign-tx/package.py @@ -0,0 +1,50 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class DialignTx(MakefilePackage): + """DIALIGN-TX: greedy and progressive approaches for segment-based + multiple sequence alignment""" + + homepage = "http://dialign-tx.gobics.de/" + url = "http://dialign-tx.gobics.de/DIALIGN-TX_1.0.2.tar.gz" + + version('1.0.2', '8ccfb1d91136157324d1e513f184ca29') + + build_directory = 'source' + + conflicts('%gcc@6:') + + def edit(self, spec, prefix): + with working_dir(self.build_directory): + makefile = FileFilter('Makefile') + makefile.filter(' -march=i686 ', ' ') + makefile.filter('CC=gcc', 'CC=%s' % spack_cc) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + with working_dir(self.build_directory): + install('dialign-tx', prefix.bin) From 4c32b0ad56f299a83c4ef4cbbc383f55f2637e3d Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 16 Aug 2017 19:48:50 -0500 Subject: [PATCH 1507/2394] tppred: new package (#5091) * tppred: new package * fixed url_for_version * fixed version spec on dependency * removing unneeded dependency --- .../packages/py-scikit-learn/package.py | 2 +- .../repos/builtin/packages/tppred/package.py | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/tppred/package.py diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py index 9817ff815b4..0d2a9a155c8 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -35,8 +35,8 @@ class PyScikitLearn(PythonPackage): version('0.15.2', 'd9822ad0238e17b382a3c756ea94fe0d') version('0.16.1', '363ddda501e3b6b61726aa40b8dbdb7e') version('0.17.1', 'a2f8b877e6d99b1ed737144f5a478dfc') + version('0.13.1', 'acba398e1d46274b8470f40d0926e6a4') depends_on('python@2.6:2.8,3.3:') - depends_on('py-setuptools', type='build') depends_on('py-numpy@1.6.1:', type=('build', 'run')) depends_on('py-scipy@0.9:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/tppred/package.py b/var/spack/repos/builtin/packages/tppred/package.py new file mode 100644 index 00000000000..919e15c3b01 --- /dev/null +++ b/var/spack/repos/builtin/packages/tppred/package.py @@ -0,0 +1,54 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Tppred(Package): + """TPPRED is a software package for the prediction of mitochondrial + targeting peptides from protein primary sequence.""" + + homepage = "https://tppred2.biocomp.unibo.it/tppred2/default/software" + url = "http://biocomp.unibo.it/savojard/tppred2.tar.gz" + + version('2.0', 'cd848569f6a8aa51d18fbe55fe45d624') + + depends_on('python@2.7:2.999', type='run') + depends_on('py-scikit-learn@0.13.1', type='run') + depends_on('emboss') + + def url_for_version(self, version): + url = 'http://biocomp.unibo.it/savojard/tppred{0}.tar.gz' + return url.format(version.up_to(1)) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + with working_dir('bin'): + install('tppred2.py', prefix.bin) + install_tree('data', prefix.data) + install_tree('example', prefix.example) + install_tree('tppred2modules', prefix.modules) + + def setup_environment(self, spack_env, run_env): + run_env.set('TPPRED_ROOT', prefix) From dd790fdaaeebbf9e1d0c3a888abad3b7d49903e5 Mon Sep 17 00:00:00 2001 From: sknigh Date: Wed, 16 Aug 2017 18:46:12 -0700 Subject: [PATCH 1508/2394] add missing dependencies to elfutils (#5135) --- var/spack/repos/builtin/packages/elfutils/package.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index b49ac4a53b8..c7e614cad56 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -35,14 +35,22 @@ class Elfutils(AutotoolsPackage): homepage = "https://fedorahosted.org/elfutils/" - url = "https://sourceware.org/elfutils/ftp/0.168/elfutils-0.168.tar.bz2" + url = "https://sourceware.org/elfutils/ftp/0.168/elfutils-0.168.tar.bz2" list_url = "https://sourceware.org/elfutils/ftp" list_depth = 1 + version('0.170', '03599aee98c9b726c7a732a2dd0245d5') version('0.168', '52adfa40758d0d39e5d5c57689bf38d6') version('0.163', '77ce87f259987d2e54e4d87b86cbee41', preferred=True) + depends_on('flex', type='build') + depends_on('bison', type='build') + depends_on('gettext') + provides('elf@1') def configure_args(self): - return ['--enable-maintainer-mode'] + # configure doesn't use LIBS correctly + return [ + 'LDFLAGS=-L%s -lintl' % self.spec['gettext'].prefix.lib, + '--enable-maintainer-mode'] From 1c8bdd7e24375510a20d7cb617c213bc8b01cbd1 Mon Sep 17 00:00:00 2001 From: Patrick Gartung Date: Wed, 16 Aug 2017 21:03:14 -0500 Subject: [PATCH 1509/2394] buildcache fixes: index.html & unsigned installs This fixes a syntax error in the index.html file generated by the "spack buildcache" command when creating build caches. This also fixes support for installing unsigned binaries. --- lib/spack/spack/binary_distribution.py | 39 +++++++++++++------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index e2ae89ac199..2de14938a46 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -194,15 +194,15 @@ def sign_tarball(yes_to_all, key, force, specfile_path): def generate_index(outdir, indexfile_path): f = open(indexfile_path, 'w') - header = """ - -""" - footer = "" + header = """\n +\n\n +\n""" + footer = "\n\n" paths = os.listdir(outdir + '/build_cache') f.write(header) for path in paths: rel = os.path.basename(path) - f.write('
  • ' % (rel, rel)) + f.write('
  • %s\n' % (rel, rel)) f.write(footer) f.close() @@ -381,26 +381,27 @@ def extract_tarball(spec, filename, yes_to_all=False, force=False): with closing(tarfile.open(spackfile_path, 'r')) as tar: tar.extractall(stagepath) - if os.path.exists('%s.asc' % specfile_path): - Gpg.verify('%s.asc' % specfile_path, specfile_path) - os.remove(specfile_path + '.asc') - else: - if not yes_to_all: + if not yes_to_all: + if os.path.exists('%s.asc' % specfile_path): + Gpg.verify('%s.asc' % specfile_path, specfile_path) + os.remove(specfile_path + '.asc') + else: raise NoVerifyException() # get the sha256 checksum of the tarball checksum = checksum_tarball(tarfile_path) - # get the sha256 checksum recorded at creation - spec_dict = {} - with open(specfile_path, 'r') as inputfile: - content = inputfile.read() - spec_dict = yaml.load(content) - bchecksum = spec_dict['binary_cache_checksum'] + if not yes_to_all: + # get the sha256 checksum recorded at creation + spec_dict = {} + with open(specfile_path, 'r') as inputfile: + content = inputfile.read() + spec_dict = yaml.load(content) + bchecksum = spec_dict['binary_cache_checksum'] - # if the checksums don't match don't install - if bchecksum['hash'] != checksum: - raise NoChecksumException() + # if the checksums don't match don't install + if bchecksum['hash'] != checksum: + raise NoChecksumException() with closing(tarfile.open(tarfile_path, 'r')) as tar: tar.extractall(path=join_path(installpath, '..')) From c16a68f517ca1bd08a7dde454fac850e4c3b6013 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 17 Aug 2017 06:37:09 +0200 Subject: [PATCH 1510/2394] Relaxed constraints on config.yaml structure (#5115) This PR allows additional unused properties at the top-level of the config.yaml file. Having these properties permits to use two different versions of Spack, one of which adds a new property, without receiving error messages due to the presence of this new property in a configuration cache stored in the user's home. --- lib/spack/spack/schema/config.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/spack/spack/schema/config.py b/lib/spack/spack/schema/config.py index abcb8d6051f..73b59ea3c70 100644 --- a/lib/spack/spack/schema/config.py +++ b/lib/spack/spack/schema/config.py @@ -38,7 +38,6 @@ 'config': { 'type': 'object', 'default': {}, - 'additionalProperties': False, 'properties': { 'install_tree': {'type': 'string'}, 'install_hash_length': {'type': 'integer', 'minimum': 1}, From 101693d8233b97e6af986534ff3d8a647de0094d Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 17 Aug 2017 08:26:04 +0200 Subject: [PATCH 1511/2394] Improved error message for unsatisfiable specs (#5113) * Improved error message for unsatisfiable specs. fixes #5066 This PR improves the error message for unsatisfiable specs by showing in tree format both the spec that cannot satisfy the constraint and the spec that asked for that constraint. After that follows a readable error message. --- lib/spack/spack/spec.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 32e08d38964..05db84806f6 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1985,10 +1985,19 @@ def _merge_dependency(self, dep, deptypes, visited, spec_deps, try: changed |= spec_deps[dep.name].constrain(dep) except UnsatisfiableSpecError as e: - e.message = "Invalid spec: '%s'. " - e.message += "Package %s requires %s %s, but spec asked for %s" - e.message %= (spec_deps[dep.name], dep.name, - e.constraint_type, e.required, e.provided) + fmt = 'An unsatisfiable {0}'.format(e.constraint_type) + fmt += ' constraint has been detected for spec:' + fmt += '\n\n{0}\n\n'.format(spec_deps[dep.name].tree(indent=4)) + fmt += 'while trying to concretize the partial spec:' + fmt += '\n\n{0}\n\n'.format(self.tree(indent=4)) + fmt += '{0} requires {1} {2} {3}, but spec asked for {4}' + e.message = fmt.format( + self.name, + dep.name, + e.constraint_type, + e.required, + e.provided + ) raise e # Add merged spec to my deps and recurse From d65d1269b925ae5bb8bcfa7cf8acedb28b95cd51 Mon Sep 17 00:00:00 2001 From: healther Date: Thu, 17 Aug 2017 14:18:02 +0200 Subject: [PATCH 1512/2394] add libiconv dependency to libxslt (#5138) this is a fix to an installation that failed due to configure for some reason not finding the libiconv shipped with glibc, but still trying to link against it see http://xmlsoft.org/FAQ.html --- var/spack/repos/builtin/packages/libxslt/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libxslt/package.py b/var/spack/repos/builtin/packages/libxslt/package.py index 53c04385080..a87ae7ffeef 100644 --- a/var/spack/repos/builtin/packages/libxslt/package.py +++ b/var/spack/repos/builtin/packages/libxslt/package.py @@ -43,6 +43,7 @@ class Libxslt(AutotoolsPackage): variant('crypto', default=True, description='Build libexslt with crypto support') + depends_on("libiconv") depends_on("libxml2") depends_on("xz") depends_on("zlib") From 3bb7767839290a7cab2554c14c3bd22b37a435f6 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 17 Aug 2017 07:49:57 -0500 Subject: [PATCH 1513/2394] py-faststructure: new package (#5131) --- .../packages/py-faststructure/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-faststructure/package.py diff --git a/var/spack/repos/builtin/packages/py-faststructure/package.py b/var/spack/repos/builtin/packages/py-faststructure/package.py new file mode 100644 index 00000000000..5085c33af0c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-faststructure/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyFaststructure(PythonPackage): + """FastStructure is a fast algorithm for inferring population structure + from large SNP genotype data.""" + + homepage = "https://github.com/rajanil/fastStructure" + url = "https://github.com/rajanil/fastStructure/archive/v1.0.tar.gz" + + version('1.0', '5cbb76e7d49e27a57046ab641b666f97') + + depends_on('py-cython', type='build') + depends_on('py-numpy', type=('build', 'run')) + depends_on('gsl') From 187f4420e20f97be5a812305754a477b6a897a91 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 17 Aug 2017 08:17:45 -0500 Subject: [PATCH 1514/2394] Add new package for rhash, a cmake dependency (#5120) * Add new package for rhash, a cmake dependency * Add missing libuv dependency to cmake --- .../repos/builtin/packages/cmake/package.py | 82 ++++++++++--------- .../repos/builtin/packages/rhash/package.py | 78 ++++++++++++++++++ 2 files changed, 120 insertions(+), 40 deletions(-) create mode 100644 var/spack/repos/builtin/packages/rhash/package.py diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 98e32c510a7..079d214c4a0 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -64,72 +64,74 @@ class Cmake(Package): depends_on('bzip2', when='~ownlibs') depends_on('xz', when='~ownlibs') depends_on('libarchive', when='~ownlibs') + depends_on('libuv@1.0.0:', when='~ownlibs') + depends_on('rhash', when='@3.8.0:~ownlibs') depends_on('qt', when='+qt') depends_on('python@2.7.11:', when='+doc', type='build') depends_on('py-sphinx', when='+doc', type='build') - depends_on("openssl", when='+openssl') - depends_on("openssl@:1.0.99", when='@:3.6.9+openssl') + depends_on('openssl', when='+openssl') + depends_on('openssl@:1.0.99', when='@:3.6.9+openssl') depends_on('ncurses', when='+ncurses') # Cannot build with Intel, should be fixed in 3.6.2 # https://gitlab.kitware.com/cmake/cmake/issues/16226 patch('intel-c-gnu11.patch', when='@3.6.0:3.6.1') + conflicts('+qt', when='^qt@5.4.0') # qt-5.4.0 has broken CMake modules + + phases = ['bootstrap', 'build', 'install'] + def url_for_version(self, version): """Handle CMake's version-based custom URLs.""" - return 'https://cmake.org/files/v%s/cmake-%s.tar.gz' % ( - version.up_to(2), version) + url = 'https://cmake.org/files/v{0}/cmake-{1}.tar.gz' + return url.format(version.up_to(2), version) - def validate(self, spec): - """ - Checks if incompatible versions of qt were specified - - :param spec: spec of the package - :raises RuntimeError: in case of inconsistencies - """ - - if '+qt' in spec and spec.satisfies('^qt@5.4.0'): - msg = 'qt-5.4.0 has broken CMake modules.' - raise RuntimeError(msg) - - def install(self, spec, prefix): - # Consistency check - self.validate(spec) - - options = [ - '--prefix={0}'.format(prefix), - '--parallel={0}'.format(make_jobs)] - if spec.satisfies("@3.2:"): - options.append( - # jsoncpp requires CMake to build - # use CMake-provided library to avoid circular dependency - '--no-system-jsoncpp' - ) + def bootstrap_args(self): + spec = self.spec + args = [ + '--prefix={0}'.format(self.prefix), + '--parallel={0}'.format(make_jobs) + ] if '+ownlibs' in spec: # Build and link to the CMake-provided third-party libraries - options.append('--no-system-libs') + args.append('--no-system-libs') else: # Build and link to the Spack-installed third-party libraries - options.append('--system-libs') + args.append('--system-libs') + + if spec.satisfies('@3.2:'): + # jsoncpp requires CMake to build + # use CMake-provided library to avoid circular dependency + args.append('--no-system-jsoncpp') if '+qt' in spec: - options.append('--qt-gui') + args.append('--qt-gui') else: - options.append('--no-qt-gui') + args.append('--no-qt-gui') if '+doc' in spec: - options.append('--sphinx-html') - options.append('--sphinx-man') + args.append('--sphinx-html') + args.append('--sphinx-man') if '+openssl' in spec: - options.append('--') - options.append('-DCMAKE_USE_OPENSSL=ON') + args.append('--') + args.append('-DCMAKE_USE_OPENSSL=ON') + return args + + def bootstrap(self, spec, prefix): bootstrap = Executable('./bootstrap') - bootstrap(*options) + bootstrap(*self.bootstrap_args()) + def build(self, spec, prefix): make() - if self.run_tests: - make('test') # some tests fail, takes forever + + @run_after('build') + @on_package_attributes(run_tests=True) + def test(self): + # Some tests fail, takes forever + make('test') + + def install(self, spec, prefix): make('install') diff --git a/var/spack/repos/builtin/packages/rhash/package.py b/var/spack/repos/builtin/packages/rhash/package.py new file mode 100644 index 00000000000..94af243ae58 --- /dev/null +++ b/var/spack/repos/builtin/packages/rhash/package.py @@ -0,0 +1,78 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 glob +from spack import * + + +class Rhash(MakefilePackage): + """RHash is a console utility for computing and verifying hash sums of + files. It supports CRC32, MD4, MD5, SHA1, SHA256, SHA512, SHA3, Tiger, + TTH, Torrent BTIH, AICH, ED2K, GOST R 34.11-94, RIPEMD-160, HAS-160, + EDON-R 256/512, WHIRLPOOL and SNEFRU hash sums.""" + + homepage = "https://sourceforge.net/projects/rhash/" + url = "https://github.com/rhash/RHash/archive/v1.3.5.tar.gz" + + version('1.3.5', 'f586644019c10c83c6b6835de4b99e74') + + # For macOS build instructions, see: + # https://github.com/Homebrew/homebrew-core/blob/master/Formula/rhash.rb + + def build(self, spec, prefix): + # Doesn't build shared libraries by default + make() + + if spec.satisfies('platform=darwin'): + make('-C', 'librhash', 'dylib') + else: + make('lib-shared') + + def check(self): + # Makefile has both `test` and `check` targets: + # + # * `test` - used to test that the build is working properly + # * `check` - used to check that the tarball is ready for upload + # + # Default implmentation is to run both `make test` and `make check`. + # `test` passes, but `check` fails, so only run `test`. + make('test') + make('test-static-lib') + + if not self.spec.satisfies('platform=darwin'): + make('test-shared') + make('test-shared-lib') + + def install(self, spec, prefix): + # Some things are installed to $(DESTDIR)$(PREFIX) while other things + # are installed to $DESTDIR/etc. + make('install', 'DESTDIR={0}'.format(prefix), 'PREFIX=') + make('install-lib-static', 'DESTDIR={0}'.format(prefix), 'PREFIX=') + + if spec.satisfies('platform=darwin'): + libs = glob.glob('librhash/*.dylib') + for lib in libs: + install(lib, prefix.lib) + else: + make('install-lib-shared', 'DESTDIR={0}'.format(prefix), 'PREFIX=') From aa215900991f24108d255cd5ebd4a2a64663431b Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 17 Aug 2017 09:19:00 -0500 Subject: [PATCH 1515/2394] microbiomeutil: new package (#5134) * microbiomeutil: new package * got rid of unnecessary self * oops --- .../packages/microbiomeutil/package.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 var/spack/repos/builtin/packages/microbiomeutil/package.py diff --git a/var/spack/repos/builtin/packages/microbiomeutil/package.py b/var/spack/repos/builtin/packages/microbiomeutil/package.py new file mode 100644 index 00000000000..7be7a4ac0d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/microbiomeutil/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Microbiomeutil(MakefilePackage): + """Microbiome analysis utilities""" + + homepage = "http://microbiomeutil.sourceforge.net/" + url = "https://downloads.sourceforge.net/project/microbiomeutil/microbiomeutil-r20110519.tgz" + + version('20110519', '11eaac4b0468c05297ba88ec27bd4b56') + + depends_on('perl', type=('build', 'run')) + depends_on('blast-plus') + depends_on('cdbfasta') + + def install(self, spec, prefix): + install_tree('ChimeraSlayer', prefix.ChimeraSlayer) + install_tree('NAST-iEr', join_path(prefix, 'NAST-iEr')) + install_tree('TreeChopper', prefix.TreeChopper) + install_tree('WigeoN', prefix.WigeoN) + install_tree('docs', prefix.docs) + install_tree('RESOURCES', prefix.resources) + install_tree('AmosCmp16Spipeline', prefix.AmosCmp16Spipeline) + + def setup_environment(self, spack_env, run_env): + run_env.prepend_path('PATH', self.prefix.ChimeraSlayer) + run_env.prepend_path('PATH', join_path(self.prefix, 'NAST-iEr')) + run_env.prepend_path('PATH', self.prefix.TreeChopper) + run_env.prepend_path('PATH', self.prefix.WigeoN) From 0f5582cefcfddf04cae2d345aa3d9d036e2feeda Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 17 Aug 2017 18:15:57 +0200 Subject: [PATCH 1516/2394] Colorize spack info. Adds prominence to preferred version. (#4994) * Colorize spack info. Adds prominence to preferred version. fixes #2708 This uses 'llnl.util.tty.color' to colorize the output of 'spack info'. It also displays versions in the order the concretizer would choose them and shows the preferred in a line on its own and in bold. * Modified output according to Adam and Denis reviews. Section titles are not bold + black, but bold + blue. Added a new section named "Preferred version", which prints the preferred version in bold characters. * Further modifications according to Adam and Denis reviews. After "Homepage:" we now have a single space. Removed newline after each variant. Preferred version is not in bold fonts anymore. Added a simple test that just runs the command. --- lib/spack/spack/cmd/info.py | 110 +++++++++++++++++++++---------- lib/spack/spack/test/cmd/info.py | 40 +++++++++++ 2 files changed, 117 insertions(+), 33 deletions(-) create mode 100644 lib/spack/spack/test/cmd/info.py diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 575b65f8b05..71ab5e3207b 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -25,14 +25,22 @@ from __future__ import print_function import textwrap -from six.moves import zip_longest -from llnl.util.tty.colify import * + +import llnl.util.tty.color as color import spack import spack.fetch_strategy as fs +import spack.spec -description = "get detailed information on a particular package" -section = "basic" -level = "short" +from llnl.util.tty.colify import * + +from six.moves import zip_longest + +description = 'get detailed information on a particular package' +section = 'basic' +level = 'short' + +header_color = '@*b' +plain_format = '@.' def padder(str_list, extra=0): @@ -48,11 +56,23 @@ def pad(string): def setup_parser(subparser): subparser.add_argument( - 'name', metavar="PACKAGE", help="name of package to get info for") + 'name', metavar='PACKAGE', help='name of package to get info for') + + +def section_title(s): + return header_color + s + plain_format + + +def version(s): + return spack.spec.version_color + s + plain_format + + +def variant(s): + return spack.spec.enabled_variant_color + s + plain_format class VariantFormatter(object): - def __init__(self, variants, max_widths=(25, 20, 35)): + def __init__(self, variants, max_widths=(30, 20, 30)): self.variants = variants self.headers = ('Name [Default]', 'Allowed values', 'Description') # Set max headers lengths @@ -102,9 +122,9 @@ def default(self, v): @property def lines(self): if not self.variants: - yield " None" + yield ' None' else: - yield " " + self.fmt % self.headers + yield ' ' + self.fmt % self.headers yield '\n' for k, v in sorted(self.variants.items()): name = textwrap.wrap( @@ -123,61 +143,82 @@ def lines(self): name, allowed, description, fillvalue='' ): yield " " + self.fmt % t - yield '' # Trigger a new line def print_text_info(pkg): """Print out a plain text description of a package.""" - header = "{0}: ".format(pkg.build_system_class) - print(header, pkg.name) + header = section_title( + '{0}: ' + ).format(pkg.build_system_class) + pkg.name + color.cprint(header) - print() - print("Description:") + color.cprint('') + color.cprint(section_title('Description:')) if pkg.__doc__: print(pkg.format_doc(indent=4)) else: print(" None") - whitespaces = ''.join([' '] * (len(header) - len("Homepage: "))) - print("Homepage:", whitespaces, pkg.homepage) + color.cprint(section_title('Homepage: ') + pkg.homepage) - print() - print("Safe versions: ") + color.cprint('') + color.cprint(section_title('Preferred version: ')) if not pkg.versions: - print(" None") + color.cprint(version(' None')) + color.cprint('') + color.cprint(section_title('Safe versions: ')) + color.cprint(version(' None')) else: pad = padder(pkg.versions, 4) + + # Here we sort first on the fact that a version is marked + # as preferred in the package, then on the fact that the + # version is not develop, then lexicographically + l = [ + (value.get('preferred', False), not key.isdevelop(), key) + for key, value in pkg.versions.items() + ] + l = sorted(l) + _, _, preferred = l.pop() + + f = fs.for_package_version(pkg, preferred) + line = version(' {0}'.format(pad(preferred))) + str(f) + color.cprint(line) + color.cprint('') + color.cprint(section_title('Safe versions: ')) + for v in reversed(sorted(pkg.versions)): f = fs.for_package_version(pkg, v) - print(" %s%s" % (pad(v), str(f))) + line = version(' {0}'.format(pad(v))) + str(f) + color.cprint(line) - print() - print("Variants:") + color.cprint('') + color.cprint(section_title('Variants:')) formatter = VariantFormatter(pkg.variants) for line in formatter.lines: - print(line) + color.cprint(line) - print() - print("Installation Phases:") + color.cprint('') + color.cprint(section_title('Installation Phases:')) phase_str = '' for phase in pkg.phases: phase_str += " {0}".format(phase) - print(phase_str) + color.cprint(phase_str) for deptype in ('build', 'link', 'run'): - print() - print("%s Dependencies:" % deptype.capitalize()) + color.cprint('') + color.cprint(section_title('%s Dependencies:' % deptype.capitalize())) deps = sorted(pkg.dependencies_of_type(deptype)) if deps: colify(deps, indent=4) else: - print(" None") + print(' None') - print() - print("Virtual Packages: ") + color.cprint('') + color.cprint(section_title('Virtual Packages: ')) if pkg.provided: inverse_map = {} for spec, whens in pkg.provided.items(): @@ -186,8 +227,11 @@ def print_text_info(pkg): inverse_map[when] = set() inverse_map[when].add(spec) for when, specs in reversed(sorted(inverse_map.items())): - print(" %s provides %s" % ( - when, ', '.join(str(s) for s in specs))) + line = " %s provides %s" % ( + when.colorized(), ', '.join(s.colorized() for s in specs) + ) + print(line) + else: print(" None") diff --git a/lib/spack/spack/test/cmd/info.py b/lib/spack/spack/test/cmd/info.py new file mode 100644 index 00000000000..9819f2cd84f --- /dev/null +++ b/lib/spack/spack/test/cmd/info.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 pytest + +from spack.main import SpackCommand + +info = SpackCommand('info') + + +@pytest.mark.parametrize('pkg', [ + 'openmpi', + 'trilinos', + 'boost', + 'python', + 'dealii' +]) +def test_it_just_runs(pkg): + info(pkg) From 46d8cb8913a782b7a244104b3b3be5d7957cd2f1 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 17 Aug 2017 11:21:56 -0500 Subject: [PATCH 1517/2394] paml: new package (#5142) --- .../repos/builtin/packages/paml/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/paml/package.py diff --git a/var/spack/repos/builtin/packages/paml/package.py b/var/spack/repos/builtin/packages/paml/package.py new file mode 100644 index 00000000000..693d2b808b9 --- /dev/null +++ b/var/spack/repos/builtin/packages/paml/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Paml(MakefilePackage): + """PAML is a package of programs for phylogenetic analyses of DNA or + protein sewuences using maximum likelihood.""" + + homepage = "http://abacus.gene.ucl.ac.uk/software/paml.html" + url = "http://abacus.gene.ucl.ac.uk/software/paml4.9e.tgz" + + version('4.9e', 'ac5a062bfea1f4eaac79008434030acf') + + build_directory = 'src' + + def install(self, spec, prefix): + mkdirp(prefix.bin) + with working_dir(self.build_directory): + install('baseml', prefix.bin) + install('basemlg', prefix.bin) + install('chi2', prefix.bin) + install('codeml', prefix.bin) + install('evolver', prefix.bin) + install('infinitesites', prefix.bin) + install('mcmctree', prefix.bin) + install('pamp', prefix.bin) + install('yn00', prefix.bin) + install_tree('dat', prefix.dat) + install_tree('Technical', prefix.Technical) From 6472c39c2e0d764a256430d9a025630b9ba5ae54 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Thu, 17 Aug 2017 18:25:40 +0200 Subject: [PATCH 1518/2394] Docs: Travis-CI Workflow (#5133) * Docs: Travis-CI Workflow Add a workflow how to use spack on Travis-CI. Future Work: depending if and how we can simplify 5101: add a multi-compiler, multi-C++-standard, multi-software build matrix example * Fix Typos --- lib/spack/docs/workflows.rst | 78 ++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/lib/spack/docs/workflows.rst b/lib/spack/docs/workflows.rst index 84da3b0f442..10843d302b7 100644 --- a/lib/spack/docs/workflows.rst +++ b/lib/spack/docs/workflows.rst @@ -1028,6 +1028,84 @@ or filesystem views. However, it has some drawbacks: integrate Spack explicitly in their workflow. Not all users are willing to do this. +------------------------ +Using Spack on Travis-CI +------------------------ + +Spack can be deployed as a provider for userland software in +`Travis-CI `_. + +A starting-point for a ``.travis.yml`` file can look as follows. +It uses `caching `_ for +already built environments, so make sure to clean the Travis cache if +you run into problems. + +The main points that are implemented below: + +#. Travis is detected as having up to 34 cores available, but only 2 + are actually allocated for the user. We limit the parallelism of + the spack builds in the config. + (The Travis yaml parser is a bit buggy on the echo command.) + +#. Builds over 10 minutes need to be prefixed with ``travis_wait``. + Alternatively, generate output once with ``spack install -v``. + +#. Travis builds are non-interactive. This prevents using bash + aliases and functions for modules. We fix that by sourcing + ``/etc/profile`` first (or running everything in a subshell with + ``bash -l -c '...'``). + +.. code-block:: yaml + + language: cpp + sudo: false + dist: trusty + + cache: + apt: true + directories: + - $HOME/.cache + + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-4.9 + - environment-modules + + env: + global: + - SPACK_ROOT: $HOME/.cache/spack + - PATH: $PATH:$HOME/.cache/spack/bin + + before_install: + - export CXX=g++-4.9 + - export CC=gcc-4.9 + - export FC=gfortran-4.9 + - export CXXFLAGS="-std=c++11" + + install: + - if ! which spack >/dev/null; then + mkdir -p $SPACK_ROOT && + git clone --depth 50 https://github.com/llnl/spack.git $SPACK_ROOT && + echo -e "config:""\n build_jobs:"" 2" > $SPACK_ROOT/etc/spack/config.yaml; + fi + - travis_wait spack install cmake@3.7.2~openssl~ncurses + - travis_wait spack install boost@1.62.0~graph~iostream~locale~log~wave + - spack clean -a + - source /etc/profile && + source $SPACK_ROOT/share/spack/setup-env.sh + - spack load cmake + - spack load boost + + script: + - mkdir -p $HOME/build + - cd $HOME/build + - cmake $TRAVIS_BUILD_DIR + - make -j 2 + - make test + ------------------ Upstream Bug Fixes ------------------ From cb4ede001c63c168bd5b78c81ecf8407f9312a41 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 17 Aug 2017 11:59:02 -0500 Subject: [PATCH 1519/2394] pbmpi: new package (#5144) --- .../repos/builtin/packages/pbmpi/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pbmpi/package.py diff --git a/var/spack/repos/builtin/packages/pbmpi/package.py b/var/spack/repos/builtin/packages/pbmpi/package.py new file mode 100644 index 00000000000..548c67c3586 --- /dev/null +++ b/var/spack/repos/builtin/packages/pbmpi/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Pbmpi(MakefilePackage): + """A Bayesian software for phylogenetic reconstruction using mixture models + """ + + homepage = "http://megasun.bch.umontreal.ca/People/lartillot/www/index.htm" + url = "https://github.com/bayesiancook/pbmpi" + + version('partition', git='https://github.com/bayesiancook/pbmpi.git', branch='partition') + + depends_on('mpi') + depends_on('libfabric') + + build_directory = 'sources' + + @run_before('build') + def make_data_dir(self): + mkdirp(self.stage.source_path, 'data') + + def install(self, spec, prefix): + install_tree('data', prefix.bin) + install_tree('sources', prefix.sources) From 94af7ccb77e3c57eb12a017480e1ee9800d5d521 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 17 Aug 2017 15:31:31 -0500 Subject: [PATCH 1520/2394] new package libfabric (#5146) * pbmpi: new package * forgot about libfabric --- .../builtin/packages/libfabric/package.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 var/spack/repos/builtin/packages/libfabric/package.py diff --git a/var/spack/repos/builtin/packages/libfabric/package.py b/var/spack/repos/builtin/packages/libfabric/package.py new file mode 100644 index 00000000000..4128e8250a4 --- /dev/null +++ b/var/spack/repos/builtin/packages/libfabric/package.py @@ -0,0 +1,35 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libfabric(AutotoolsPackage): + """The Open Fabrics Interfaces (OFI) is a framework focused on exporting + fabric communication services to applications.""" + + homepage = "https://libfabric.org/" + url = "https://github.com/ofiwg/libfabric/releases/download/v1.5.0/libfabric-1.5.0.tar.gz" + + version('1.5.0', 'fda3e9b31ebe184f5157288d059672d6') From cf796ed595c0fc05e0648fc983138ea1af93489a Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 17 Aug 2017 15:32:30 -0500 Subject: [PATCH 1521/2394] pagit: new package (#5140) * pagit: new package * removed unneeded env var --- .../repos/builtin/packages/pagit/package.py | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pagit/package.py diff --git a/var/spack/repos/builtin/packages/pagit/package.py b/var/spack/repos/builtin/packages/pagit/package.py new file mode 100644 index 00000000000..2e41d83da37 --- /dev/null +++ b/var/spack/repos/builtin/packages/pagit/package.py @@ -0,0 +1,68 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Pagit(Package): + """PAGIT addresses the need for software to generate high quality draft + genomes.""" + + homepage = "http://www.sanger.ac.uk/science/tools/pagit" + url = "ftp://ftp.sanger.ac.uk/pub/resources/software/pagit/PAGIT.V1.01.64bit.tgz" + + version('1.01', '2c4e8512c8c02073146b50b328962e9d') + + depends_on('java', type=('build', 'run')) + depends_on('perl', type=('build', 'run')) + + def url_for_version(self, version): + url = 'ftp://ftp.sanger.ac.uk/pub/resources/software/pagit/PAGIT.V{0}.64bit.tgz' + return url.format(version) + + def install(self, spec, prefix): + with working_dir('PAGIT'): + install_tree('ABACAS', prefix.ABACAS) + install_tree('bin', prefix.bin) + install_tree('ICORN', prefix.ICORN) + install_tree('IMAGE', prefix.IMAGE) + install_tree('lib', prefix.lib) + install_tree('RATT', prefix.RATT) + + def setup_environment(self, spack_env, run_env): + run_env.set('PAGIT_HOME', self.prefix) + run_env.set('PILEUP_HOME', join_path(self.prefix.bin, 'pileup_v0.5')) + run_env.set('ICORN_HOME', self.prefix.icorn) + run_env.set('SNPOMATIC_HOME', self.prefix.bin) + run_env.set('RATT_HOME', self.prefix.RATT) + run_env.set('RATT_CONFIG', join_path(self.prefix.RATT, 'RATT_config')) + run_env.prepend_path('PATH', join_path(self.prefix.bin, 'pileup_v0.5', + 'ssaha2')) + run_env.prepend_path('PATH', join_path(self.prefix.bin, + 'pileup_v0.5')) + run_env.prepend_path('PATH', self.prefix.IMAGE) + run_env.prepend_path('PATH', self.prefix.ABACAS) + run_env.prepend_path('PATH', self.prefix.ICORN) + run_env.prepend_path('PATH', self.prefix.RATT) + run_env.prepend_path('PERL5LIB', self.prefix.lib) From 6d2092e1eb07081d6a13819886a7c948cac2a23b Mon Sep 17 00:00:00 2001 From: zenln Date: Thu, 17 Aug 2017 18:33:44 -0500 Subject: [PATCH 1522/2394] Add a new package for gaussian (#5149) * Gaussian: Gaussian install * Adding Patch to spack installed files * Adding extra environment variables for gaussian at run time * Adding provides linda * Adding linda as a provided package * Shortning vars and fixing flake8 indentation and spacings --- .../builtin/packages/gaussian/package.py | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gaussian/package.py diff --git a/var/spack/repos/builtin/packages/gaussian/package.py b/var/spack/repos/builtin/packages/gaussian/package.py new file mode 100644 index 00000000000..d2fcee438fc --- /dev/null +++ b/var/spack/repos/builtin/packages/gaussian/package.py @@ -0,0 +1,71 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os +import shutil + + +class Gaussian(Package): + """Gaussian is a computer program for computational chemistry""" + + homepage = "http://www.gaussian.com/" + url = "file://{0}/g09.tgz".format(os.getcwd()) + + version('09', '7d4c95b535e68e48af183920df427e4e') + + def install(self, spec, prefix): + shutil.copytree(os.getcwd(), prefix.bin) + patch_install_files = ['flc', + 'linda8.2/opteron-linux/bin/flc', + 'linda8.2/opteron-linux/bin/LindaLauncher', + 'linda8.2/opteron-linux/bin/ntsnet', + 'linda8.2/opteron-linux/bin/pmbuild', + 'linda8.2/opteron-linux/bin/vntsnet', + 'ntsnet' + ] + for filename in patch_install_files: + if os.path.isfile(filename): + filter_file('/mf/frisch/g09', prefix.bin, join_path(prefix.bin, + filename), string='True') + patch_install_files = ['linda8.2/opteron-linux/bin/ntsnet', + 'linda8.2/opteron-linux/bin/vntsnet', + ] + for filename in patch_install_files: + if os.path.isfile(filename): + filter_file('/usr/bin/linda', prefix.bin, join_path(prefix.bin, + filename), string='True') + + def setup_environment(self, spack_env, run_env): + run_env.set('g09root', self.prefix) + run_env.set('GAUSSIANHOME', self.prefix) + run_env.set('GAUSS_EXEDIR', self.prefix.bin) + run_env.set('G09_BASIS', join_path(self.prefix.bin, 'basis')) + run_env.set('GAUSS_LEXEDIR', join_path(self.prefix.bin, + 'linda-exe')) + run_env.set('GAUSS_ARCHDIR', join_path(self.prefix.bin, 'arch')) + run_env.set('GAUSS_BSDDIR', join_path(self.prefix.bin, 'bsd')) + run_env.prepend_path('LD_LIBRARY_PATH', join_path(self.prefix.bin, + 'linda8.2/opteron-linux/lib')) + run_env.prepend_path('LD_LIBRARY_PATH', self.prefix.bin) From 61238baf56553261c51df67dede51796d518aa93 Mon Sep 17 00:00:00 2001 From: Stephen McDowell Date: Fri, 18 Aug 2017 05:17:25 -0700 Subject: [PATCH 1523/2394] add man-db package and friends (#4844) * add man-db package and friends * fix groff, libpipeline, and man-db dependencies * remove parallel groff altogether, build-only deps --- .../repos/builtin/packages/check/package.py | 39 ++++++++++++ .../repos/builtin/packages/groff/gropdf.patch | 13 ++++ .../repos/builtin/packages/groff/package.py | 61 +++++++++++++++++++ .../builtin/packages/libpipeline/package.py | 40 ++++++++++++ .../repos/builtin/packages/man-db/package.py | 59 ++++++++++++++++++ 5 files changed, 212 insertions(+) create mode 100644 var/spack/repos/builtin/packages/check/package.py create mode 100644 var/spack/repos/builtin/packages/groff/gropdf.patch create mode 100644 var/spack/repos/builtin/packages/groff/package.py create mode 100644 var/spack/repos/builtin/packages/libpipeline/package.py create mode 100644 var/spack/repos/builtin/packages/man-db/package.py diff --git a/var/spack/repos/builtin/packages/check/package.py b/var/spack/repos/builtin/packages/check/package.py new file mode 100644 index 00000000000..53b03d28cdf --- /dev/null +++ b/var/spack/repos/builtin/packages/check/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Check(AutotoolsPackage): + """Check is a unit testing framework for C. It features a simple interface + for defining unit tests, putting little in the way of the developer. Tests + are run in a separate address space, so both assertion failures and code + errors that cause segmentation faults or other signals can be caught. Test + results are reportable in the following: Subunit, TAP, XML, and a generic + logging format.""" + + homepage = "https://libcheck.github.io/check/index.html" + url = "https://downloads.sourceforge.net/project/check/check/0.10.0/check-0.10.0.tar.gz" + + version('0.10.0', '53c5e5c77d090e103a17f3ed7fd7d8b8') diff --git a/var/spack/repos/builtin/packages/groff/gropdf.patch b/var/spack/repos/builtin/packages/groff/gropdf.patch new file mode 100644 index 00000000000..9044c64aa3c --- /dev/null +++ b/var/spack/repos/builtin/packages/groff/gropdf.patch @@ -0,0 +1,13 @@ +diff --git a/Makefile.in b/Makefile.in +index bc156ce..70c6f85 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -896,6 +896,8 @@ $(GNULIBDIRS): FORCE + $(MAKE) ACLOCAL=: AUTOCONF=: AUTOHEADER=: AUTOMAKE=: $(do) ;; \ + esac + ++$(SHPROGDIRS): $(PROGDEPDIRS) ++ + $(OTHERDIRS): $(PROGDEPDIRS) $(CCPROGDIRS) $(CPROGDIRS) $(SHPROGDIRS) + + $(INCDIRS) $(PROGDEPDIRS) $(SHPROGDIRS) $(OTHERDIRS): FORCE diff --git a/var/spack/repos/builtin/packages/groff/package.py b/var/spack/repos/builtin/packages/groff/package.py new file mode 100644 index 00000000000..1cef3040e08 --- /dev/null +++ b/var/spack/repos/builtin/packages/groff/package.py @@ -0,0 +1,61 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Groff(AutotoolsPackage): + """Groff (GNU troff) is a typesetting system that reads + plain text mixed with formatting commands and produces + formatted output. Output may be PostScript or PDF, html, or + ASCII/UTF8 for display at the terminal.""" + + homepage = "https://www.gnu.org/software/groff/" + url = "http://ftp.gnu.org/gnu/groff/groff-1.22.3.tar.gz" + + # TODO: add html variant, spack doesn't have netpbm and its too + # complicated for me to find out at this point in time. + # See brew scripts for groff for guidance: + # https://github.com/Homebrew/homebrew-core/blob/master/Formula/groff.rb + # Seems troublesome...netpbm requires groff? + variant('pdf', default=True, description='Build the `gropdf` executable.') + + depends_on('gawk', type='build') + depends_on('gmake', type='build') + depends_on('sed', type='build') + depends_on('ghostscript', when='+pdf') + + version('1.22.3', 'cc825fa64bc7306a885f2fb2268d3ec5') + + # https://savannah.gnu.org/bugs/index.php?43581 + # TODO: figure out why this patch does not actually work for parallel + # builds reliably. + # patch('gropdf.patch') + parallel = False + + def configure_args(self): + args = [ + "--without-x" + ] + return args diff --git a/var/spack/repos/builtin/packages/libpipeline/package.py b/var/spack/repos/builtin/packages/libpipeline/package.py new file mode 100644 index 00000000000..2d51755633f --- /dev/null +++ b/var/spack/repos/builtin/packages/libpipeline/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Libpipeline(AutotoolsPackage): + """libpipeline is a C library for manipulating pipelines of subprocesses + in a flexible and convenient way.""" + + homepage = "http://libpipeline.nongnu.org/" + url = "http://git.savannah.nongnu.org/cgit/libpipeline.git/snapshot/libpipeline-1.4.2.tar.gz" + + version('1.4.2', '30cec7bcd6fee723adea6a54389f3da2') + + depends_on('pkg-config', type='build') + # TODO: Add a 'test' deptype + # See https://github.com/LLNL/spack/issues/1279 + # depends_on('check', type='test') diff --git a/var/spack/repos/builtin/packages/man-db/package.py b/var/spack/repos/builtin/packages/man-db/package.py new file mode 100644 index 00000000000..9c038d03e29 --- /dev/null +++ b/var/spack/repos/builtin/packages/man-db/package.py @@ -0,0 +1,59 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class ManDb(AutotoolsPackage): + """man-db is an implementation of the standard Unix + documentation system accessed using the man command. It uses + a Berkeley DB database in place of the traditional + flat-text whatis databases.""" + + homepage = "http://www.nongnu.org/man-db/" + url = "http://git.savannah.nongnu.org/cgit/man-db.git/snapshot/man-db-2.7.6.1.tar.gz" + + version('2.7.6.1', '312761baade811db2b956af3432c285e') + + depends_on('autoconf') + depends_on('automake') + depends_on('gettext') + depends_on('libpipeline') + depends_on('flex') + depends_on('groff', type=('build', 'link', 'run')) + + # TODO: add gzip support via a new package. + # man pages are typically compressed, include all available + # compression libraries + depends_on('bzip2', type=('build', 'link', 'run')) + depends_on('lzma', type=('build', 'link', 'run')) + depends_on('xz', type=('build', 'link', 'run')) + + def configure_args(self): + args = [ + '--disable-setuid', + # defaults to a location that needs root privs to write in + '--with-systemdtmpfilesdir={0}/tmp'.format(self.prefix) + ] + return args From 9af953a4cb791e9d81c333d7b97941037734731c Mon Sep 17 00:00:00 2001 From: George Hartzell Date: Fri, 18 Aug 2017 07:36:02 -0700 Subject: [PATCH 1524/2394] Add info for nextflow@v0.25.6 (#5148) --- var/spack/repos/builtin/packages/nextflow/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index b9c52f34b79..2917447a362 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -31,6 +31,8 @@ class Nextflow(Package): homepage = "http://www.nextflow.io" url = "https://github.com/nextflow-io/nextflow/releases/download/v0.24.1/nextflow" + version('0.25.6', '29d739b6caf8ceb5aa9997310ee8d0e7', + expand=False) version('0.24.1', '80ec8c4fe8e766e0bdd1371a50410d1d', expand=False) version('0.23.3', '71fb69275b6788af1c6f1165f40d362e', From 5fb23b21e01c6c22b7c355d53e4d1b8c786faaa2 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 18 Aug 2017 09:36:19 -0500 Subject: [PATCH 1525/2394] vegas2: new package (#5150) * vegas2: new package * small version things --- .../repos/builtin/packages/plink/package.py | 41 ++++++++++++++++ .../builtin/packages/r-corpcor/package.py | 34 +++++++++++++ .../builtin/packages/r-mvtnorm/package.py | 3 +- .../repos/builtin/packages/vegas2/package.py | 49 +++++++++++++++++++ 4 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/plink/package.py create mode 100644 var/spack/repos/builtin/packages/r-corpcor/package.py create mode 100644 var/spack/repos/builtin/packages/vegas2/package.py diff --git a/var/spack/repos/builtin/packages/plink/package.py b/var/spack/repos/builtin/packages/plink/package.py new file mode 100644 index 00000000000..a519f301849 --- /dev/null +++ b/var/spack/repos/builtin/packages/plink/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Plink(Package): + """PLINK is a free, open-source whole genome association analysis toolset, + designed to perform a range of basic, large-scale analyses in a + computationally efficient manner.""" + + homepage = "https://www.cog-genomics.org/plink/1.9/" + + version('1.9', 'a2325881594856c0f1b7523290d1e04f', + url='https://www.cog-genomics.org/static/bin/plink170815/plink_linux_x86_64.zip') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('plink', prefix.bin) + install('prettify', prefix.bin) diff --git a/var/spack/repos/builtin/packages/r-corpcor/package.py b/var/spack/repos/builtin/packages/r-corpcor/package.py new file mode 100644 index 00000000000..09798cbd2db --- /dev/null +++ b/var/spack/repos/builtin/packages/r-corpcor/package.py @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class RCorpcor(RPackage): + """Efficient Estimation of Covariance and (Partial) Correlation""" + + homepage = "https://cran.r-project.org/package=corpcor" + url = "https://cran.r-project.org/src/contrib/corpcor_1.6.9.tar.gz" + + version('1.6.9', '7f447d9f389e5d7dedb5fe5baedca925') diff --git a/var/spack/repos/builtin/packages/r-mvtnorm/package.py b/var/spack/repos/builtin/packages/r-mvtnorm/package.py index 31933e70a34..2df9206a637 100644 --- a/var/spack/repos/builtin/packages/r-mvtnorm/package.py +++ b/var/spack/repos/builtin/packages/r-mvtnorm/package.py @@ -30,6 +30,7 @@ class RMvtnorm(RPackage): deviates and densities.""" homepage = "http://mvtnorm.r-forge.r-project.org/" - url = "https://cran.r-project.org/src/contrib/mvtnorm_1.0-5.tar.gz" + url = "https://cran.r-project.org/src/contrib/mvtnorm_1.0-6.tar.gz" + version('1.0-6', 'cb69426868fd3e330412b8491901d9d4') version('1.0-5', '5894dd3969bbfa26f4862c45f9a48a52') diff --git a/var/spack/repos/builtin/packages/vegas2/package.py b/var/spack/repos/builtin/packages/vegas2/package.py new file mode 100644 index 00000000000..1c091a568c8 --- /dev/null +++ b/var/spack/repos/builtin/packages/vegas2/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Vegas2(Package): + """"VEGAS2 is an extension that uses 1,000 Genomes data to model SNP + correlations across the autosomes and chromosome X""" + + homepage = "https://vegas2.qimrberghofer.edu.au/" + url = "https://vegas2.qimrberghofer.edu.au/vegas2v2" + + version('2', '815d80b86e9e294f99332bb5181e897a', expand=False) + + depends_on('perl', type='run') + depends_on('r', type='run') + depends_on('plink') + depends_on('r-mvtnorm', type='run') + depends_on('r-corpcor', type='run') + + def url_for_version(self, version): + url = 'https://vegas2.qimrberghofer.edu.au/vegas2v{0}' + return url.format(version) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('vegas2v{0}'.format(self.version), prefix.bin) From 6abe8e7d9114f0f202a5ba722f9877b6b1cc5a55 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 18 Aug 2017 09:36:35 -0500 Subject: [PATCH 1526/2394] parsimonator: new package (#5143) * parsimonator: new package * adding variant conflict --- .../builtin/packages/parsimonator/package.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 var/spack/repos/builtin/packages/parsimonator/package.py diff --git a/var/spack/repos/builtin/packages/parsimonator/package.py b/var/spack/repos/builtin/packages/parsimonator/package.py new file mode 100644 index 00000000000..5b979f23e35 --- /dev/null +++ b/var/spack/repos/builtin/packages/parsimonator/package.py @@ -0,0 +1,65 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Parsimonator(MakefilePackage): + """Parsimonator is a no-frills light-weight implementation for building + starting trees under parsimony for RAxML""" + + homepage = "http://www.exelixis-lab.org/" + url = "https://github.com/stamatak/Parsimonator-1.0.2" + + version('1.0.2', git='https://github.com/stamatak/Parsimonator-1.0.2.git', commit='78368c6ab1e9adc7e9c6ec9256dd7ff2a5bb1b0a') + + variant('sse', default=True, description='Enable SSE in order to substantially speed up execution') + variant('avx', default=False, description='Enable AVX in order to substantially speed up execution') + + conflicts('+avx', when='+sse') + + @property + def makefile_file(self): + if '+sse' in self.spec: + return 'Makefile.SSE3.gcc' + elif '+avx' in self.spec: + return 'Makefile.AVX.gcc' + else: + return 'Makefile.gcc' + + def edit(self, spec, prefix): + makefile = FileFilter(self.makefile_file) + makefile.filter('CC = gcc', 'CC = %s' % spack_cc) + + def build(self, spec, prefix): + make('-f', self.makefile_file) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + if '+sse' in spec: + install('parsimonator-SSE3', prefix.bin) + elif '+avx' in spec: + install('parsimonator-AVX', prefix.bin) + else: + install('parsimonator', prefix.bin) From 9ad8e793327efb3436428bff26fda81640b33d9e Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 18 Aug 2017 11:02:58 -0500 Subject: [PATCH 1527/2394] corset: new package (#5157) --- .../repos/builtin/packages/corset/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/corset/package.py diff --git a/var/spack/repos/builtin/packages/corset/package.py b/var/spack/repos/builtin/packages/corset/package.py new file mode 100644 index 00000000000..b09a062b350 --- /dev/null +++ b/var/spack/repos/builtin/packages/corset/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Corset(Package): + """Corset is a command-line software program to go from a de novo + transcriptome assembly to gene-level counts.""" + + homepage = "https://github.com/Oshlack/Corset/wiki" + url = "https://github.com/Oshlack/Corset/releases/download/version-1.06/corset-1.06-linux64.tar.gz" + + version('1.06', '0a6d0bb1f2d1bdbcb8b47656a7f12f23') + + def url_for_version(self, version): + url = 'https://github.com/Oshlack/Corset/releases/download/version-{0}/corset-{0}-linux64.tar.gz' + return url.format(version) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('corset', prefix.bin) + install('corset_fasta_ID_changer', prefix.bin) From 6d155833c5a9f6c55e58d56e4aec09eb32fe1839 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 18 Aug 2017 20:19:55 +0200 Subject: [PATCH 1528/2394] build boost with graph library even when +mpi Previously, when +graph and +mpi were enabled, the graph library was replaced with the graph_parallel library. This alters the logic for +graph+mpi to build both libraries. --- var/spack/repos/builtin/packages/boost/package.py | 1 - 1 file changed, 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index fc3b967fd1c..93362cadf69 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -324,7 +324,6 @@ def install(self, spec, prefix): if not spec.satisfies('@1.43.0:'): withLibs.remove('random') if '+graph' in spec and '+mpi' in spec: - withLibs.remove('graph') withLibs.append('graph_parallel') # to make Boost find the user-config.jam From d6d2dff324347dc7dab1d453ef17378c752b8a78 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 18 Aug 2017 20:57:52 +0200 Subject: [PATCH 1529/2394] sbang support: add node-js and fix lua This adds sbang hook support for node-js and fixes the sbang filter for lua (the character class exclusion was swallowing newlines and reporting a false positive if lua was mentioned anywhere in the file). --- bin/sbang | 2 ++ lib/spack/spack/hooks/sbang.py | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/bin/sbang b/bin/sbang index 0b883a5feb0..ce4df4327cc 100755 --- a/bin/sbang +++ b/bin/sbang @@ -104,6 +104,8 @@ lines=0 while read line && ((lines < 2)) ; do if [[ "$line" = '#!'* ]]; then interpreter="${line#\#!}" + elif [[ "$line" = '//!'*node* ]]; then + interpreter="${line#//!}" elif [[ "$line" = '--!'*lua* ]]; then interpreter="${line#--!}" fi diff --git a/lib/spack/spack/hooks/sbang.py b/lib/spack/spack/hooks/sbang.py index e86f8260b8b..cd3529dbb81 100644 --- a/lib/spack/spack/hooks/sbang.py +++ b/lib/spack/spack/hooks/sbang.py @@ -62,10 +62,17 @@ def filter_shebang(path): if original.startswith(new_sbang_line): return + # In the following, newlines have to be excluded in the regular expression + # else any mention of "lua" in the document will lead to spurious matches. + # Use --! instead of #! on second line for lua. - if re.search(r'^#!(/[^/]*)*lua\b', original): + if re.search(r'^#!(/[^/\n]*)*lua\b', original): original = re.sub(r'^#', '--', original) + # Use //! instead of #! on second line for node.js. + if re.search(r'^#!(/[^/\n]*)*node\b', original): + original = re.sub(r'^#', '//', original) + # Change non-writable files to be writable if needed. saved_mode = None if not os.access(path, os.W_OK): From c41c5bc9b83f726eee5f1969bc4b53ffa8d89348 Mon Sep 17 00:00:00 2001 From: "Kelly (KT) Thompson" Date: Fri, 18 Aug 2017 15:01:02 -0600 Subject: [PATCH 1530/2394] For Tk, also provide a symlink for wishX.X. (#5161) + gitk (and possibly other tools) expect to find the Tk executable `wish`, so add a symlink with this name that points to the the versioned filename. + Example: `wish --> wish8.6` --- var/spack/repos/builtin/packages/tk/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/tk/package.py b/var/spack/repos/builtin/packages/tk/package.py index 69ea8a6a006..ab25ba1d5b9 100644 --- a/var/spack/repos/builtin/packages/tk/package.py +++ b/var/spack/repos/builtin/packages/tk/package.py @@ -53,3 +53,8 @@ def setup_environment(self, spack_env, run_env): def configure_args(self): spec = self.spec return ['--with-tcl={0}'.format(spec['tcl'].prefix.lib)] + + @run_after('install') + def symlink_wish(self): + with working_dir(self.prefix.bin): + symlink('wish{0}'.format(self.version.up_to(2)), 'wish') From 3d1c5f679f425f852277f72917a4bad4155be052 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 18 Aug 2017 16:01:30 -0500 Subject: [PATCH 1531/2394] muscle: fix (#5160) --- var/spack/repos/builtin/packages/muscle/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/muscle/package.py b/var/spack/repos/builtin/packages/muscle/package.py index c8237826a24..3aac5fb5bb2 100644 --- a/var/spack/repos/builtin/packages/muscle/package.py +++ b/var/spack/repos/builtin/packages/muscle/package.py @@ -35,6 +35,11 @@ class Muscle(MakefilePackage): version('3.8.1551', '1b7c9661f275a82d3cf708f923736bf8') + def edit(self, spec, prefix): + makefile = FileFilter('Makefile') + makefile.filter('-static', '') + makefile.filter('-funroll-loops', '') + def install(self, spec, prefix): mkdirp(prefix.bin) install('muscle', prefix.bin) From fa39afb59853b5971d9a70acbe50710da67ff2ac Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Fri, 18 Aug 2017 16:02:15 -0500 Subject: [PATCH 1532/2394] cufflinks: new package (#5158) --- .../builtin/packages/cufflinks/package.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/cufflinks/package.py diff --git a/var/spack/repos/builtin/packages/cufflinks/package.py b/var/spack/repos/builtin/packages/cufflinks/package.py new file mode 100644 index 00000000000..c0d331439b1 --- /dev/null +++ b/var/spack/repos/builtin/packages/cufflinks/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Cufflinks(Package): + """Cufflinks assembles transcripts, estimates their abundances, and tests + for differential expression and regulation in RNA-Seq samples.""" + + homepage = "http://cole-trapnell-lab.github.io/cufflinks" + url = "http://cole-trapnell-lab.github.io/cufflinks/assets/downloads/cufflinks-2.2.1.Linux_x86_64.tar.gz" + + version('2.2.1', '7e693d182dcfda8aeef8523219ea9ea7') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('cuffcompare', prefix.bin) + install('cuffdiff', prefix.bin) + install('cufflinks', prefix.bin) + install('cuffmerge', prefix.bin) + install('cuffnorm', prefix.bin) + install('cuffquant', prefix.bin) + install('gffread', prefix.bin) + install('gtf_to_sam', prefix.bin) From d80c70538f9cf422284b1a529470464f57cdd08f Mon Sep 17 00:00:00 2001 From: Adam Moody Date: Fri, 18 Aug 2017 23:00:52 -0700 Subject: [PATCH 1533/2394] lbann: add depends_on hwloc (#5165) --- var/spack/repos/builtin/packages/lbann/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index f717b02df01..9b0e2493145 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -49,6 +49,7 @@ class Lbann(CMakePackage): when=('build_type=Debug')) depends_on('cuda', when='+gpu') depends_on('mpi') + depends_on('hwloc') depends_on('opencv@3.2.0: +openmp +core +highgui +imgproc +jpeg +png +tiff +zlib', when='+opencv') depends_on('protobuf@3.0.2:') depends_on('cnpy') From be0e05187044e08ede722ae224ca59895edd0f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=A5=E7=BE=8E=E7=8C=AB?= Date: Sat, 19 Aug 2017 22:22:19 +0800 Subject: [PATCH 1534/2394] Add version 1.7.1 for cub. (#5164) --- var/spack/repos/builtin/packages/cub/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/cub/package.py b/var/spack/repos/builtin/packages/cub/package.py index b868410587f..7460bc799b3 100644 --- a/var/spack/repos/builtin/packages/cub/package.py +++ b/var/spack/repos/builtin/packages/cub/package.py @@ -32,6 +32,7 @@ class Cub(Package): homepage = "https://nvlabs.github.com/cub" url = "https://github.com/NVlabs/cub/archive/1.6.4.zip" + version('1.7.1', '028ac43922a4538596338ad5aef0f0c4') version('1.6.4', '924fc12c0efb17264c3ad2d611ed1c51') version('1.4.1', '74a36eb84e5b5f0bf54aa3df39f660b2') From bb10bc39abd27d9ffee379b02ceff23a020f2391 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 19 Aug 2017 14:48:24 -0700 Subject: [PATCH 1535/2394] Make test_inspect_path work on Mac OS X without XCode (#5168) - Mac OS X Sierra has no /usr/include by default - Instead of assuming there's an include directory in /usr, mock up a directory that looks like we expect. --- lib/spack/spack/test/modules.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/test/modules.py b/lib/spack/spack/test/modules.py index bd37196f2a2..40841f15a76 100644 --- a/lib/spack/spack/test/modules.py +++ b/lib/spack/spack/test/modules.py @@ -27,6 +27,7 @@ from six import StringIO import pytest + import spack.modules import spack.spec @@ -105,8 +106,13 @@ def test_update_dictionary_extending_list(): assert target['baz'] == 'foobaz' -def test_inspect_path(): - env = spack.modules.inspect_path('/usr') +def test_inspect_path(tmpdir): + tmpdir.chdir() + tmpdir.mkdir('bin') + tmpdir.mkdir('lib') + tmpdir.mkdir('include') + + env = spack.modules.inspect_path(str(tmpdir)) names = [item.name for item in env] assert 'PATH' in names assert 'LIBRARY_PATH' in names From 99fb394ac18b7ef1bc4f9ee34242a69b42781ab8 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 19 Aug 2017 23:52:27 +0200 Subject: [PATCH 1536/2394] Group Travis CI jobs in stages (#5104) - This should speed-up Travis CI tests and refers to #5049 - Travis uses build-stages to group tests together - The idea is to let fast tests fail first, then move to longer ones. - Added external perl to avoid download failure from CPAN and reduce build time - Disabling perl-dbi: continues to fail with (504 Gateway Time-out) on Travis - We now cover all the build systems in tests: - Add back `openblas` to Travis as a separate package. - Switched `openblas` for `astyle` to build a simpler MakefilePackage. - Added 'tut' (WafPackage) - Added 'py-setuptools' (PythonPackage) - Added 'perl-dbi' (PerlPackage) - Added 'build_systems' directory to the ones for which we get a summary - Added 'openjpeg' (CMakePackage) - Added 'r-rcpp' (RPackage) - Added comments to build tests to show the covered build system --- .codecov.yml | 4 + .travis.yml | 80 +++++++++++++++---- share/spack/qa/configuration/packages.yaml | 13 +++ .../repos/builtin/packages/r-rcpp/package.py | 2 + 4 files changed, 82 insertions(+), 17 deletions(-) create mode 100644 share/spack/qa/configuration/packages.yaml diff --git a/.codecov.yml b/.codecov.yml index 1782e78ff9b..639b07012db 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -13,6 +13,10 @@ coverage: threshold: 0.5 paths: - lib/spack/spack/cmd + build_systems: + threshold: 0.5 + paths: + - lib/spack/spack/build_systems core: threshold: 0.5 paths: diff --git a/.travis.yml b/.travis.yml index eeeaee85df8..ec88f02e398 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,10 +11,16 @@ branches: #============================================================================= # Build matrix #============================================================================= -matrix: +jobs: fast_finish: true include: - - python: '2.6' + - stage: 'flake8' + python: '2.7' + os: linux + language: python + env: TEST_SUITE=flake8 + - stage: 'unit tests + documentation' + python: '2.6' os: linux language: python env: TEST_SUITE=unit @@ -22,10 +28,6 @@ matrix: os: linux language: python env: [ TEST_SUITE=unit, COVERAGE=true ] - - python: '2.7' - os: linux - language: python - env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=hypre^mpich' ] - python: '3.3' os: linux language: python @@ -42,21 +44,54 @@ matrix: os: linux language: python env: [ TEST_SUITE=unit, COVERAGE=true ] - - python: '3.6' - os: linux - language: python - env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=hypre^mpich' ] - - python: '2.7' - os: linux - language: python - env: TEST_SUITE=flake8 + - os: osx + language: generic + env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7, COVERAGE=true ] - python: '2.7' os: linux language: python env: TEST_SUITE=doc - - os: osx - language: generic - env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7, COVERAGE=true ] +# mpich (AutotoolsPackage) + - stage: 'build tests' + python: '2.7' + os: linux + language: python + env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=mpich' ] +# astyle (MakefilePackage) + - python: '2.7' + os: linux + language: python + env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=astyle' ] +# tut (WafPackage) + - python: '2.7' + os: linux + language: python + env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=tut' ] +# py-setuptools (PythonPackage) + - python: '2.7' + os: linux + language: python + env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=py-setuptools' ] +# perl-dbi (PerlPackage) +# - python: '2.7' +# os: linux +# language: python +# env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=perl-dbi' ] +# openjpeg (CMakePackage + external cmake) + - python: '2.7' + os: linux + language: python + env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=openjpeg' ] +# r-rcpp (RPackage + external R) + - python: '2.7' + os: linux + language: python + env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=r-rcpp' ] +# mpich (AutotoolsPackage) + - python: '3.6' + os: linux + language: python + env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=mpich' ] #============================================================================= # Environment @@ -72,6 +107,14 @@ addons: - mercurial - graphviz - gnupg2 + - cmake + - r-base + - r-base-core + - r-base-dev + - perl + - perl-base + +cache: pip # Work around Travis's lack of support for Python on OSX before_install: @@ -99,6 +142,9 @@ before_script: # Need this to be able to compute the list of changed files - git fetch origin develop:develop + # Set up external dependencies for build tests, because the take too long to compile + - if [[ "$TEST_SUITE" == "build" ]]; then cp share/spack/qa/configuration/packages.yaml etc/spack/packages.yaml; fi + #============================================================================= # Building #============================================================================= diff --git a/share/spack/qa/configuration/packages.yaml b/share/spack/qa/configuration/packages.yaml new file mode 100644 index 00000000000..fad3489d3b6 --- /dev/null +++ b/share/spack/qa/configuration/packages.yaml @@ -0,0 +1,13 @@ +packages: + cmake: + buildable: False + paths: + cmake@2.8.12.2: /usr + r: + buildable: False + paths: + r@3.0.2: /usr + perl: + buildable: False + paths: + perl@5.18.2: /usr diff --git a/var/spack/repos/builtin/packages/r-rcpp/package.py b/var/spack/repos/builtin/packages/r-rcpp/package.py index f89a3785246..b77fffb1a05 100644 --- a/var/spack/repos/builtin/packages/r-rcpp/package.py +++ b/var/spack/repos/builtin/packages/r-rcpp/package.py @@ -39,6 +39,8 @@ class RRcpp(RPackage): homepage = "http://dirk.eddelbuettel.com/code/rcpp.html" url = "https://cran.r-project.org/src/contrib/Rcpp_0.12.9.tar.gz" + version('0.12.12', '97b36a3b567e3438067c4a7d0075fd90') + version('0.12.11', 'ea1710213cbb1d91b1d0318e6fa9aa37') version('0.12.9', '691c49b12794507288b728ede03668a5') version('0.12.6', 'db4280fb0a79cd19be73a662c33b0a8b') version('0.12.5', 'f03ec05b4e391cc46e7ce330e82ff5e2') From e77c1a20c5964c169d0ac557e13fd071804f68ed Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 20 Aug 2017 15:34:35 -0700 Subject: [PATCH 1537/2394] Fix issue with color formatting regular expression. (#5171) - Fix issue with color formatting regular expression. - _separators regex in spec.py could be constructed such that '^' came first in the character matcher, e.g. '[^@#/]'. This inverts the match and causes transient KeyErrors. - Fixed to escape all characters in the constructed regex. - This bug comes up in Python3 due to its more randomized hash iteration order, but it could probably also happen in a Python 2 implementation. - also clean up variable docstrings in spec.py --- lib/spack/spack/spec.py | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 05db84806f6..43d57f2b98c 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -165,21 +165,20 @@ 'NoSuchHashError', 'RedundantSpecError'] -# Valid pattern for an identifier in Spack +#: Valid pattern for an identifier in Spack identifier_re = r'\w[\w-]*' -# Convenient names for color formats so that other things can use them -compiler_color = '@g' -version_color = '@c' -architecture_color = '@m' -enabled_variant_color = '@B' -disabled_variant_color = '@r' -dependency_color = '@.' -hash_color = '@K' +compiler_color = '@g' #: color for highlighting compilers +version_color = '@c' #: color for highlighting versions +architecture_color = '@m' #: color for highlighting architectures +enabled_variant_color = '@B' #: color for highlighting enabled variants +disabled_variant_color = '@r' #: color for highlighting disabled varaints +dependency_color = '@.' #: color for highlighting dependencies +hash_color = '@K' #: color for highlighting package hashes -"""This map determines the coloring of specs when using color output. - We make the fields different colors to enhance readability. - See spack.color for descriptions of the color codes. """ +#: This map determines the coloring of specs when using color output. +#: We make the fields different colors to enhance readability. +#: See spack.color for descriptions of the color codes. color_formats = {'%': compiler_color, '@': version_color, '=': architecture_color, @@ -188,17 +187,19 @@ '^': dependency_color, '#': hash_color} -"""Regex used for splitting by spec field separators.""" -_separators = '[%s]' % ''.join(color_formats.keys()) +#: Regex used for splitting by spec field separators. +#: These need to be escaped to avoid metacharacters in +#: ``color_formats.keys()``. +_separators = '[\\%s]' % '\\'.join(color_formats.keys()) -"""Versionlist constant so we don't have to build a list - every time we call str()""" +#: Versionlist constant so we don't have to build a list +#: every time we call str() _any_version = VersionList([':']) -"""Types of dependencies that Spack understands.""" +#: Types of dependencies that Spack understands. alldeps = ('build', 'link', 'run') -"""Max integer helps avoid passing too large a value to cyaml.""" +#: Max integer helps avoid passing too large a value to cyaml. maxint = 2 ** (ctypes.sizeof(ctypes.c_int) * 8 - 1) - 1 From e0dd55e09074087f624443cd86439a854dc0cc18 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 14 Aug 2017 03:57:46 -0700 Subject: [PATCH 1538/2394] Make SpackCommand a bit more testable - add fail_on_error argument - record exception and return code when the command fails --- lib/spack/spack/main.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index d10047e3259..b17cb3cdc57 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -369,13 +369,15 @@ class SpackCommand(object): Use this to invoke Spack commands directly from Python and check their stdout and stderr. """ - def __init__(self, command, fail_on_error=True): + def __init__(self, command): """Create a new SpackCommand that invokes ``command`` when called.""" self.parser = make_argument_parser() self.parser.add_command(command) self.command_name = command self.command = spack.cmd.get_command(command) - self.fail_on_error = fail_on_error + + self.returncode = None + self.error = None def __call__(self, *argv, **kwargs): """Invoke this SpackCommand. @@ -384,17 +386,20 @@ def __call__(self, *argv, **kwargs): argv (list of str): command line arguments. Keyword Args: - color (optional bool): force-disable or force-enable color + fail_on_error (optional bool): Don't raise an exception on error Returns: (str, str): output and error as a strings On return, if ``fail_on_error`` is False, return value of comman - is set in ``returncode`` property. Otherwise, raise an error. + is set in ``returncode`` property, and the error is set in the + ``error`` property. Otherwise, raise an error. """ args, unknown = self.parser.parse_known_args( [self.command_name] + list(argv)) + fail_on_error = kwargs.get('fail_on_error', True) + out, err = sys.stdout, sys.stderr ofd, ofn = tempfile.mkstemp() efd, efn = tempfile.mkstemp() @@ -408,6 +413,11 @@ def __call__(self, *argv, **kwargs): except SystemExit as e: self.returncode = e.code + except: + self.error = sys.exc_info()[1] + if fail_on_error: + raise + finally: sys.stdout.flush() sys.stdout.close() @@ -420,7 +430,7 @@ def __call__(self, *argv, **kwargs): os.unlink(ofn) os.unlink(efn) - if self.fail_on_error and self.returncode != 0: + if fail_on_error and self.returncode not in (None, 0): raise SpackCommandError( "Command exited with code %d: %s(%s)" % ( self.returncode, self.command_name, From 05cc6c966f4d340c42b89a74b63b1bd8fe22673d Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 14 Aug 2017 04:33:01 -0700 Subject: [PATCH 1539/2394] Rework output redirection in Spack. - Simplify interface to log_output. New interface requires only one context handler instead of two. Before: with log_output('logfile.txt') as log_redirection: with log_redirection: # do things ... output will be logged After: with log_output('logfile.txt'): # do things ... output will be logged If you also want the output to be echoed to ``stdout``, use the `echo` parameter:: with log_output('logfile.txt', echo=True): # do things ... output will be logged and printed out And, if you just want to echo *some* stuff from the parent, use ``force_echo``: with log_output('logfile.txt', echo=False) as logger: # do things ... output will be logged with logger.force_echo(): # things here will be echoed *and* logged A key difference between this and the previous implementation is that *everything* in the context handler is logged. Previously, things like `Executing phase 'configure'` would not be logged, only output to the screen, so understanding phases in the build log was difficult. - The implementation of `log_output()` is different in two major ways: 1. This implementation avoids race cases by using only one pipe (before we had a multiprocessing pipe and a unix pipe). The logger daemon stops naturally when the input stream is closed, which avoids a race in the previous implementation where we'd miss some lines of output because the parent would shut the daemon down before it was done with all output. 2. Instead of turning output redirection on and off, which prevented some things from being logged, this version uses control characters in the output stream to enable/disable forced echoing. We're using the time-honored xon and xoff codes, which tell the daemon to echo anything between them AND write it to the log. This is how `logger.force_echo()` works. - Fix places where output could get stuck in buffers by flushing more aggressively. This makes the output printed to the terminal the same as that which would be printed through a pipe to `cat` or to a file. Previously these could be weirdly different, and some output would be missing when redirecting Spack to a file or pipe. - Simplify input and color handling in both `build_environment.fork()` and `llnl.util.tty.log.log_output()`. Neither requires an input_stream parameter anymore; we assume stdin will be forwarded if possible. - remove `llnl.util.lang.duplicate_stream()` and remove associated monkey-patching in tests, as these aren't needed if you just check whether stdin is a tty and has a fileno attribute. --- lib/spack/llnl/util/lang.py | 13 - lib/spack/llnl/util/tty/log.py | 359 ++++++++++++++++----------- lib/spack/spack/build_environment.py | 58 ++--- lib/spack/spack/package.py | 56 ++--- lib/spack/spack/test/conftest.py | 14 -- 5 files changed, 265 insertions(+), 235 deletions(-) diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 012befeada9..563835ecfcc 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -391,19 +391,6 @@ def __init__(self, message): super(RequiredAttributeError, self).__init__(message) -def duplicate_stream(original): - """Duplicates a stream at the os level. - - Args: - original (stream): original stream to be duplicated. Must have a - ``fileno`` callable attribute. - - Returns: - file like object: duplicate of the original stream - """ - return os.fdopen(os.dup(original.fileno())) - - class ObjectWrapper(object): """Base class that wraps an object. Derived classes can add new behavior while staying undercover. diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 4bf7c77d2c2..ac77e2dc8d6 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -29,27 +29,28 @@ import re import select import sys +from contextlib import contextmanager -import llnl.util.lang as lang import llnl.util.tty as tty -import llnl.util.tty.color as color # Use this to strip escape sequences _escape = re.compile(r'\x1b[^m]*m|\x1b\[?1034h') +# control characters for enabling/disabling echo +# +# We use control characters to ensure that echo enable/disable are inline +# with the other output. We always follow these with a newline to ensure +# one per line the following newline is ignored in output. +xon, xoff = '\x11\n', '\x13\n' +control = re.compile('(\x11\n|\x13\n)') def _strip(line): """Strip color and control characters from a line.""" return _escape.sub('', line) -class _SkipWithBlock(): - """Special exception class used to skip a with block.""" - pass - - class keyboard_input(object): - """Disable canonical input and echo on a stream within a with block. + """Context manager to disable line editing and echoing. Use this with ``sys.stdin`` for keyboard input, e.g.:: @@ -57,14 +58,33 @@ class keyboard_input(object): r, w, x = select.select([sys.stdin], [], []) # ... do something with keypresses ... - When the with block completes, this will restore settings before - canonical and echo were disabled. - """ + This disables canonical input so that keypresses are available on the + stream immediately. Typically standard input allows line editing, + which means keypresses won't be sent until the user hits return. + It also disables echoing, so that keys pressed aren't printed to the + terminal. So, the user can hit, e.g., 'v', and it's read on the + other end of the pipe immediately but not printed. + + When the with block completes, prior TTY settings are restored. + + Note: this depends on termios support. If termios isn't available, + or if the stream isn't a TTY, this context manager has no effect. + """ def __init__(self, stream): + """Create a context manager that will enable keyboard input on stream. + + Args: + stream (file-like): stream on which to accept keyboard input + """ self.stream = stream def __enter__(self): + """Enable immediate keypress input on stream. + + If the stream is not a TTY or the system doesn't support termios, + do nothing. + """ self.old_cfg = None # Ignore all this if the input stream is not a tty. @@ -72,7 +92,7 @@ def __enter__(self): return try: - # import and mark whether it worked. + # If this fails, self.old_cfg will remain None import termios # save old termios settings @@ -89,11 +109,10 @@ def __enter__(self): termios.tcsetattr(fd, termios.TCSADRAIN, self.new_cfg) except Exception: - pass # Some OS's do not support termios, so ignore. + pass # some OS's do not support termios, so ignore def __exit__(self, exc_type, exception, traceback): - # If termios was avaialble, restore old settings after the - # with block + """If termios was avaialble, restore old settings.""" if self.old_cfg: import termios termios.tcsetattr( @@ -101,168 +120,222 @@ def __exit__(self, exc_type, exception, traceback): class log_output(object): - """Spawns a daemon that reads from a pipe and writes to a file + """Context manager that logs its output to a file. - Usage:: + In the simplest case, the usage looks like this:: - # Spawns the daemon - with log_output('logfile.txt', 'w') as log_redirection: - # do things ... output is not redirected - with log_redirection: - # do things ... output will be logged + with log_output('logfile.txt'): + # do things ... output will be logged - or:: + Any output from the with block will be redirected to ``logfile.txt``. + If you also want the output to be echoed to ``stdout``, use the + ``echo`` parameter:: - with log_output('logfile.txt', echo=True) as log_redirection: - # do things ... output is not redirected - with log_redirection: - # do things ... output will be logged - # and also printed to stdout. + with log_output('logfile.txt', echo=True): + # do things ... output will be logged and printed out - Opens a stream in 'w' mode at daemon spawning and closes it at - daemon joining. If echo is True, also prints the output to stdout. + And, if you just want to echo *some* stuff from the parent, use + ``force_echo``: + + with log_output('logfile.txt', echo=False) as logger: + # do things ... output will be logged + + with logger.force_echo(): + # things here will be echoed *and* logged + + Under the hood, we spawn a daemon and set up a pipe between this + process and the daemon. The daemon writes our output to both the + file and to stdout (if echoing). The parent process can communicate + with the daemon to tell it when and when not to echo; this is what + force_echo does. You can also enable/disable echoing by typing 'v'. + + We try to use OS-level file descriptors to do the redirection, but if + stdout or stderr has been set to some Python-level file object, we + use Python-level redirection instead. This allows the redirection to + work within test frameworks like nose and pytest. """ - def __init__( - self, - filename, - echo=False, - force_color=False, - debug=False, - input_stream=sys.stdin - ): + def __init__(self, filename, echo=False, debug=False): + """Create a new output log context manager. + + Logger daemon is not started until ``__enter__()``. + """ self.filename = filename - # Various output options self.echo = echo - self.force_color = force_color self.debug = debug - # Default is to try file-descriptor reassignment unless the system - # out/err streams do not have an associated file descriptor - self.directAssignment = False - self.read, self.write = os.pipe() - - # Needed to un-summon the daemon - self.parent_pipe, self.child_pipe = multiprocessing.Pipe() - # Input stream that controls verbosity interactively - self.input_stream = input_stream + self._active = False # used to prevent re-entry def __enter__(self): + if self._active: + raise RuntimeError("Can't re-enter the same log_output!") + + # record parent color settings before redirecting. We do this + # because color output depends on whether the *original* stdout + # is a TTY. New stdout won't be a TTY so we force colorization. + self._saved_color = tty.color._force_color + forced_color = tty.color.get_color_when() + + # also record parent debug settings -- in case the logger is + # forcing debug output. + self._saved_debug = tty._debug + + # OS-level pipe for redirecting output to logger + self.read_fd, self.write_fd = os.pipe() + # Sets a daemon that writes to file what it reads from a pipe try: - fwd_input_stream = lang.duplicate_stream(self.input_stream) - self.p = multiprocessing.Process( - target=self._spawn_writing_daemon, - args=(self.read, fwd_input_stream), - name='logger_daemon' - ) - self.p.daemon = True - self.p.start() + # need to pass this b/c multiprocessing closes stdin in child. + input_stream = os.fdopen(os.dup(sys.stdin.fileno())) + + self.process = multiprocessing.Process( + target=self._writer_daemon, args=(input_stream,)) + self.process.daemon = True # must set before start() + self.process.start() + os.close(self.read_fd) # close in the parent process + finally: - fwd_input_stream.close() - return log_output.OutputRedirection(self) + input_stream.close() + + # Flush immediately before redirecting so that anything buffered + # goes to the original stream + sys.stdout.flush() + sys.stderr.flush() + + # Now do the actual output rediction. + self.use_fds = True + try: + # We try first to use OS-level file descriptors, as this + # redirects output for subprocesses and system calls. + + # Save old stdout and stderr file descriptors + self._saved_stdout = os.dup(sys.stdout.fileno()) + self._saved_stderr = os.dup(sys.stderr.fileno()) + + # redirect to the pipe we created above + os.dup2(self.write_fd, sys.stdout.fileno()) + os.dup2(self.write_fd, sys.stderr.fileno()) + os.close(self.write_fd) + + except AttributeError: + # Using file descriptors can fail if stdout and stderr don't + # have a fileno attribute. This can happen, when, e.g., the + # test framework replaces stdout with a StringIO object. We + # handle thi the Python way. This won't redirect lower-level + # output, but it's the best we can do. + self.use_fds = False + + # Save old stdout and stderr file objects + self._saved_stdout = sys.stdout + self._saved_stderr = sys.stderr + + # create a file object for the pipe; redirect to it. + pipe_fd_out = os.fdopen(self.write_fd, 'w') + sys.stdout = pipe_fd_out + sys.stderr = pipe_fd_out + + # Force color and debug settings now that we have redirected. + tty.color.set_color_when(forced_color) + tty._debug = self.debug + + # track whether we're currently inside this log_output + self._active = True + + # return this log_output object so that the user can do things + # like temporarily echo some ouptut. + return self def __exit__(self, exc_type, exc_val, exc_tb): - self.parent_pipe.send(True) - self.p.join(60.0) # 1 minute to join the child + # Flush any buffered output to the logger daemon. + sys.stdout.flush() + sys.stderr.flush() - def _spawn_writing_daemon(self, read, input_stream): - # This is the Parent: read from child, skip the with block. + # restore previous output settings, either the low-level way or + # the python way + if self.use_fds: + os.dup2(self._saved_stdout, sys.stdout.fileno()) + os.close(self._saved_stdout) + os.dup2(self._saved_stderr, sys.stderr.fileno()) + os.close(self._saved_stderr) + else: + sys.stdout = self._saved_stdout + sys.stderr = self._saved_stderr + + # join the daemon process. The daemon will quit automatically + # when the write pipe is closed; we just wait for it here. + self.process.join() + + # restore old color and debug settings + tty.color._force_color = self._saved_color + tty._debug = self._saved_debug + + self._active = False # safe to enter again + + @contextmanager + def force_echo(self): + """Context manager to force local echo, even if echo is off.""" + if not self._active: + raise RuntimeError( + "Can't call force_echo() outside log_output region!") + + # This uses the xon/xoff to highlight regions to be echoed in the + # output. We us these control characters rather than, say, a + # separate pipe, because they're in-band and assured to appear + # exactly before and after the text we want to echo. + sys.stdout.write(xon) + sys.stdout.flush() + yield + sys.stdout.write(xoff) + sys.stdout.flush() + + def _writer_daemon(self, stdin): + """Daemon that writes output to the log file and stdout.""" # Use line buffering (3rd param = 1) since Python 3 has a bug # that prevents unbuffered text I/O. - read_file = os.fdopen(read, 'r', 1) + in_pipe = os.fdopen(self.read_fd, 'r', 1) + os.close(self.write_fd) + + echo = self.echo # initial echo setting, user-controllable + force_echo = False # parent can force echo for certain output with open(self.filename, 'w') as log_file: - with keyboard_input(input_stream): + with keyboard_input(stdin): while True: - # Without the last parameter (timeout) select will wait - # until at least one of the two streams are ready. This - # may cause the function to hang. - rlist, _, _ = select.select( - [read_file, input_stream], [], [], 0 - ) + # Without the last parameter (timeout) select will + # wait until at least one of the two streams are + # ready. This may cause the function to hang. + rlist, _, xlist = select.select( + [in_pipe, stdin], [], [], 0) # Allow user to toggle echo with 'v' key. # Currently ignores other chars. - if input_stream in rlist: - if input_stream.read(1) == 'v': - self.echo = not self.echo + if stdin in rlist: + if stdin.read(1) == 'v': + echo = not echo # Handle output from the with block process. - if read_file in rlist: - # If we arrive here it means that - # read_file was ready for reading : it - # should never happen that line is false-ish - line = read_file.readline() + if in_pipe in rlist: + # If we arrive here it means that in_pipe was + # ready for reading : it should never happen that + # line is false-ish + line = in_pipe.readline() + if not line: + break # EOF - # Echo to stdout if requested. - if self.echo: + # find control characters and strip them. + controls = control.findall(line) + line = re.sub(control, '', line) + + # Echo to stdout if requested or forced + if echo or force_echo: sys.stdout.write(line) # Stripped output to log file. log_file.write(_strip(line)) log_file.flush() - if self.child_pipe.poll(): - break - - def __del__(self): - """Closes the pipes""" - os.close(self.write) - os.close(self.read) - - class OutputRedirection(object): - - def __init__(self, other): - self.__dict__.update(other.__dict__) - - def __enter__(self): - """Redirect output from the with block to a file. - - Hijacks stdout / stderr and writes to the pipe - connected to the logger daemon - """ - # remember these values for later. - self._force_color = color._force_color - self._debug = tty._debug - # Redirect this output to a pipe - write = self.write - try: - # Save old stdout and stderr - self._stdout = os.dup(sys.stdout.fileno()) - self._stderr = os.dup(sys.stderr.fileno()) - - # redirect to the pipe. - os.dup2(write, sys.stdout.fileno()) - os.dup2(write, sys.stderr.fileno()) - except AttributeError: - self.directAssignment = True - self._stdout = sys.stdout - self._stderr = sys.stderr - output_redirect = os.fdopen(write, 'w') - sys.stdout = output_redirect - sys.stderr = output_redirect - if self.force_color: - color._force_color = True - if self.debug: - tty._debug = True - - def __exit__(self, exc_type, exception, traceback): - """Plugs back the original file descriptors - for stdout and stderr - """ - # Flush the log to disk. - sys.stdout.flush() - sys.stderr.flush() - if self.directAssignment: - # We seem to need this only to pass test/install.py - sys.stdout = self._stdout - sys.stderr = self._stderr - else: - os.dup2(self._stdout, sys.stdout.fileno()) - os.dup2(self._stderr, sys.stderr.fileno()) - - # restore output options. - color._force_color = self._force_color - tty._debug = self._debug + if xon in controls: + force_echo = True + if xoff in controls: + force_echo = False diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 620445fe1cb..53aa14ebc17 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -54,13 +54,11 @@ import inspect import multiprocessing import os -import errno import shutil import sys import traceback from six import iteritems -import llnl.util.lang as lang import llnl.util.tty as tty from llnl.util.filesystem import * @@ -536,21 +534,30 @@ def child_fun(): control over the environment, etc. without affecting other builds that might be executed in the same spack call. - If something goes wrong, the child process is expected to print the - error and the parent process will exit with error as well. If things - go well, the child exits and the parent carries on. + If something goes wrong, the child process catches the error and + passes it to the parent wrapped in a ChildError. The parent is + expected to handle (or re-raise) the ChildError. """ - def child_execution(child_connection, input_stream): + def child_process(child_pipe, input_stream): + # We are in the child process. Python sets sys.stdin to + # open(os.devnull) to prevent our process and its parent from + # simultaneously reading from the original stdin. But, we assume + # that the parent process is not going to read from it till we + # are done with the child, so we undo Python's precaution. + if input_stream is not None: + sys.stdin = input_stream + try: setup_package(pkg, dirty=dirty) - function(input_stream) - child_connection.send(None) + function() + child_pipe.send(None) except StopIteration as e: # StopIteration is used to stop installations # before the final stage, mainly for debug purposes tty.msg(e.message) - child_connection.send(None) + child_pipe.send(None) + except: # catch ANYTHING that goes wrong in the child process exc_type, exc, tb = sys.exc_info() @@ -569,34 +576,29 @@ def child_execution(child_connection, input_stream): # make a pickleable exception to send to parent. msg = "%s: %s" % (str(exc_type.__name__), str(exc)) - ce = ChildError(msg, tb_string, build_log, package_context) - child_connection.send(ce) + child_pipe.send(ce) finally: - child_connection.close() + child_pipe.close() - parent_connection, child_connection = multiprocessing.Pipe() + parent_pipe, child_pipe = multiprocessing.Pipe() + input_stream = None try: - # Forward sys.stdin to be able to activate / deactivate - # verbosity pressing a key at run-time. When sys.stdin can't - # be duplicated (e.g. running under nohup, which results in an - # '[Errno 22] Invalid argument') then just use os.devnull - try: - input_stream = lang.duplicate_stream(sys.stdin) - except OSError as e: - if e.errno == errno.EINVAL: - tty.debug("Using devnull as input_stream") - input_stream = open(os.devnull) + # Forward sys.stdin when appropriate, to allow toggling verbosity + if sys.stdin.isatty() and hasattr(sys.stdin, 'fileno'): + input_stream = os.fdopen(os.dup(sys.stdin.fileno())) + p = multiprocessing.Process( - target=child_execution, - args=(child_connection, input_stream) - ) + target=child_process, args=(child_pipe, input_stream)) p.start() + finally: # Close the input stream in the parent process - input_stream.close() - child_exc = parent_connection.recv() + if input_stream is not None: + input_stream.close() + + child_exc = parent_pipe.recv() p.join() if child_exc is not None: diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index cbf7d92ea69..c94772c2a5d 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -186,10 +186,9 @@ def _flush_callbacks(check_name): # Clear the attribute for the next class setattr(mcs, attr_name, {}) - # Preconditions _flush_callbacks('run_before') - # Sanity checks _flush_callbacks('run_after') + return super(PackageMeta, mcs).__new__(mcs, name, bases, attr_dict) @staticmethod @@ -1275,23 +1274,10 @@ def do_install(self, self.make_jobs = make_jobs # Then install the package itself. - def build_process(input_stream): + def build_process(): """Forked for each build. Has its own process and python module space set up by build_environment.fork().""" - # We are in the child process. This means that our sys.stdin is - # equal to open(os.devnull). Python did this to prevent our process - # and the parent process from possible simultaneous reading from - # the original standard input. But we assume that the parent - # process is not going to read from it till we are done here, - # otherwise it should not have passed us the copy of the stream. - # Thus, we are free to work with the the copy (input_stream) - # however we want. For example, we might want to call functions - # (e.g. input()) that implicitly read from whatever stream is - # assigned to sys.stdin. Since we want them to work with the - # original input stream, we are making the following assignment: - sys.stdin = input_stream - start_time = time.time() if not fake: if not skip_patch: @@ -1328,23 +1314,20 @@ def build_process(input_stream): # Spawn a daemon that reads from a pipe and redirects # everything to log_path - redirection_context = log_output( - log_path, - echo=verbose, - force_color=sys.stdout.isatty(), - debug=True, - input_stream=input_stream - ) - with redirection_context as log_redirection: - for phase_name, phase in zip( + with log_output(log_path, + echo=verbose, + debug=True) as logger: + + for phase_name, phase_attr in zip( self.phases, self._InstallPhase_phases): - tty.msg( - 'Executing phase : \'{0}\''.format(phase_name) - ) + + with logger.force_echo(): + tty.msg("Executing phase: '%s'" % phase_name) + # Redirect stdout and stderr to daemon pipe - with log_redirection: - getattr(self, phase)( - self.spec, self.prefix) + phase = getattr(self, phase_attr) + phase(self.spec, self.prefix) + self.log() # Run post install hooks before build stage is removed. spack.hooks.post_install(self.spec) @@ -1363,8 +1346,10 @@ def build_process(input_stream): # Create the install prefix and fork the build process. if not os.path.exists(self.prefix): spack.store.layout.create_install_directory(self.spec) + # Fork a child to do the actual installation spack.build_environment.fork(self, build_process, dirty=dirty) + # If we installed then we should keep the prefix keep_prefix = self.last_phase is None or keep_prefix # note: PARENT of the build process adds the new package to @@ -1439,12 +1424,9 @@ def _do_install_pop_kwargs(self, kwargs): def log(self): # Copy provenance into the install directory on success - log_install_path = spack.store.layout.build_log_path( - self.spec) - env_install_path = spack.store.layout.build_env_path( - self.spec) - packages_dir = spack.store.layout.build_packages_path( - self.spec) + log_install_path = spack.store.layout.build_log_path(self.spec) + env_install_path = spack.store.layout.build_env_path(self.spec) + packages_dir = spack.store.layout.build_packages_path(self.spec) # Remove first if we're overwriting another build # (can happen with spack setup) diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index e0a745c7e95..f407943326f 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -27,10 +27,7 @@ import os import re import shutil -from six import StringIO -import llnl.util.filesystem -import llnl.util.lang import ordereddict_backport import py @@ -52,17 +49,6 @@ ########## # Monkey-patching that is applied to all tests ########## - - -@pytest.fixture(autouse=True) -def no_stdin_duplication(monkeypatch): - """Duplicating stdin (or any other stream) returns an empty - StringIO object. - """ - monkeypatch.setattr(llnl.util.lang, 'duplicate_stream', - lambda x: StringIO()) - - @pytest.fixture(autouse=True) def mock_fetch_cache(monkeypatch): """Substitutes spack.fetch_cache with a mock object that does nothing From 48440766dfd7ea381367f8d957372d262719c8e8 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 14 Aug 2017 05:10:40 -0700 Subject: [PATCH 1540/2394] Fix exit call in `SpackError.die()` - Previously we would use `os._exit()` in to avoid Spack error handling in the parent process when build processes failed. This isn't necessary anymore since build processes propagate their exceptions to the parent process. - Use `sys.exit` instead of `os._exit`. This has the advantage of automatically flushing output streams on quit, so output from child processes is not lost when Spack exits. --- lib/spack/spack/error.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/error.py b/lib/spack/spack/error.py index 7b86415202b..6e48a4e76c9 100644 --- a/lib/spack/spack/error.py +++ b/lib/spack/spack/error.py @@ -24,7 +24,6 @@ ############################################################################## from __future__ import print_function -import os import sys import llnl.util.tty as tty @@ -54,7 +53,8 @@ def die(self): # basic debug message tty.error(self.message) if self.long_message: - print(self.long_message) + sys.stderr.write(self.long_message) + sys.stderr.write('\n') # stack trace, etc. in debug mode. if spack.debug: @@ -66,7 +66,7 @@ def die(self): # run parent exception hook. sys.excepthook(*sys.exc_info()) - os._exit(1) + sys.exit(1) def __str__(self): msg = self.message From 11196e7b6972474c09aa8aa24e9de6fe8927f1af Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 20 Aug 2017 00:12:05 -0700 Subject: [PATCH 1541/2394] Preserve verbosity across installs when 'v' is pressed. - 'v' toggle was previously only good for the current install. - subsequent installs needed user to press 'v' again. - 'v' state is now preserved across dependency installs. --- lib/spack/llnl/util/tty/log.py | 172 +++++++++++++++++++-------- lib/spack/spack/build_environment.py | 11 +- lib/spack/spack/package.py | 30 +++-- 3 files changed, 153 insertions(+), 60 deletions(-) diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index ac77e2dc8d6..2b3ad22c2d2 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -29,6 +29,7 @@ import re import select import sys +import traceback from contextlib import contextmanager import llnl.util.tty as tty @@ -44,6 +45,7 @@ xon, xoff = '\x11\n', '\x13\n' control = re.compile('(\x11\n|\x13\n)') + def _strip(line): """Strip color and control characters from a line.""" return _escape.sub('', line) @@ -76,6 +78,9 @@ def __init__(self, stream): Args: stream (file-like): stream on which to accept keyboard input + + Note that stream can be None, in which case ``keyboard_input`` + will do nothing. """ self.stream = stream @@ -88,7 +93,7 @@ def __enter__(self): self.old_cfg = None # Ignore all this if the input stream is not a tty. - if not self.stream.isatty(): + if not self.stream or not self.stream.isatty(): return try: @@ -119,6 +124,30 @@ def __exit__(self, exc_type, exception, traceback): self.stream.fileno(), termios.TCSADRAIN, self.old_cfg) +def _file_descriptors_work(): + """Whether we can get file descriptors for stdout and stderr. + + This tries to call ``fileno()`` on ``sys.stdout`` and ``sys.stderr`` + and returns ``False`` if anything goes wrong. + + This can happen, when, e.g., the test framework replaces stdout with + a ``StringIO`` object. + + We have to actually try this to see whether it works, rather than + checking for the fileno attribute, beacuse frameworks like pytest add + dummy fileno methods on their dummy file objects that return + ``UnsupportedOperationErrors``. + + """ + # test whether we can get fds for out and error + try: + sys.stdout.fileno() + sys.stderr.fileno() + return True + except: + return False + + class log_output(object): """Context manager that logs its output to a file. @@ -135,7 +164,7 @@ class log_output(object): # do things ... output will be logged and printed out And, if you just want to echo *some* stuff from the parent, use - ``force_echo``: + ``force_echo``:: with log_output('logfile.txt', echo=False) as logger: # do things ... output will be logged @@ -155,7 +184,7 @@ class log_output(object): work within test frameworks like nose and pytest. """ - def __init__(self, filename, echo=False, debug=False): + def __init__(self, filename=None, echo=False, debug=False): """Create a new output log context manager. Logger daemon is not started until ``__enter__()``. @@ -166,10 +195,38 @@ def __init__(self, filename, echo=False, debug=False): self._active = False # used to prevent re-entry + def __call__(self, filename=None, echo=None, debug=None): + """Thie behaves the same as init. It allows a logger to be reused. + + With the ``__call__`` function, you can save state between uses + of a single logger. This is useful if you want to remember, + e.g., the echo settings for a prior ``with log_output()``:: + + logger = log_output() + + with logger('foo.txt'): + # log things; user can change echo settings with 'v' + + with logger('bar.txt'): + # log things; logger remembers prior echo settings. + + """ + if filename is not None: + self.filename = filename + if echo is not None: + self.echo = echo + if debug is not None: + self.debug = debug + return self + def __enter__(self): if self._active: raise RuntimeError("Can't re-enter the same log_output!") + if self.filename is None: + raise RuntimeError( + "filename must be set by either __init__ or __call__") + # record parent color settings before redirecting. We do this # because color output depends on whether the *original* stdout # is a TTY. New stdout won't be a TTY so we force colorization. @@ -183,10 +240,17 @@ def __enter__(self): # OS-level pipe for redirecting output to logger self.read_fd, self.write_fd = os.pipe() + # Multiprocessing pipe for communication back from the daemon + # Currently only used to save echo value between uses + self.parent, self.child = multiprocessing.Pipe() + # Sets a daemon that writes to file what it reads from a pipe try: # need to pass this b/c multiprocessing closes stdin in child. - input_stream = os.fdopen(os.dup(sys.stdin.fileno())) + try: + input_stream = os.fdopen(os.dup(sys.stdin.fileno())) + except: + input_stream = None # just don't forward input if this fails self.process = multiprocessing.Process( target=self._writer_daemon, args=(input_stream,)) @@ -195,7 +259,8 @@ def __enter__(self): os.close(self.read_fd) # close in the parent process finally: - input_stream.close() + if input_stream: + input_stream.close() # Flush immediately before redirecting so that anything buffered # goes to the original stream @@ -203,8 +268,8 @@ def __enter__(self): sys.stderr.flush() # Now do the actual output rediction. - self.use_fds = True - try: + self.use_fds = _file_descriptors_work() + if self.use_fds: # We try first to use OS-level file descriptors, as this # redirects output for subprocesses and system calls. @@ -217,13 +282,11 @@ def __enter__(self): os.dup2(self.write_fd, sys.stderr.fileno()) os.close(self.write_fd) - except AttributeError: - # Using file descriptors can fail if stdout and stderr don't - # have a fileno attribute. This can happen, when, e.g., the - # test framework replaces stdout with a StringIO object. We - # handle thi the Python way. This won't redirect lower-level - # output, but it's the best we can do. - self.use_fds = False + else: + # Handle I/O the Python way. This won't redirect lower-level + # output, but it's the best we can do, and the caller + # shouldn't expect any better, since *they* have apparently + # redirected I/O the Python way. # Save old stdout and stderr file objects self._saved_stdout = sys.stdout @@ -262,6 +325,9 @@ def __exit__(self, exc_type, exc_val, exc_tb): sys.stdout = self._saved_stdout sys.stderr = self._saved_stderr + # recover and store echo settings from the child before it dies + self.echo = self.parent.recv() + # join the daemon process. The daemon will quit automatically # when the write pipe is closed; we just wait for it here. self.process.join() @@ -299,43 +365,53 @@ def _writer_daemon(self, stdin): echo = self.echo # initial echo setting, user-controllable force_echo = False # parent can force echo for certain output - with open(self.filename, 'w') as log_file: - with keyboard_input(stdin): - while True: - # Without the last parameter (timeout) select will - # wait until at least one of the two streams are - # ready. This may cause the function to hang. - rlist, _, xlist = select.select( - [in_pipe, stdin], [], [], 0) + # list of streams to select from + istreams = [in_pipe, stdin] if stdin else [in_pipe] - # Allow user to toggle echo with 'v' key. - # Currently ignores other chars. - if stdin in rlist: - if stdin.read(1) == 'v': - echo = not echo + try: + with open(self.filename, 'w') as log_file: + with keyboard_input(stdin): + while True: + # Without the last parameter (timeout) select will + # wait until at least one of the two streams are + # ready. This may cause the function to hang. + rlist, _, xlist = select.select(istreams, [], [], 0) - # Handle output from the with block process. - if in_pipe in rlist: - # If we arrive here it means that in_pipe was - # ready for reading : it should never happen that - # line is false-ish - line = in_pipe.readline() - if not line: - break # EOF + # Allow user to toggle echo with 'v' key. + # Currently ignores other chars. + if stdin in rlist: + if stdin.read(1) == 'v': + echo = not echo - # find control characters and strip them. - controls = control.findall(line) - line = re.sub(control, '', line) + # Handle output from the with block process. + if in_pipe in rlist: + # If we arrive here it means that in_pipe was + # ready for reading : it should never happen that + # line is false-ish + line = in_pipe.readline() + if not line: + break # EOF - # Echo to stdout if requested or forced - if echo or force_echo: - sys.stdout.write(line) + # find control characters and strip them. + controls = control.findall(line) + line = re.sub(control, '', line) - # Stripped output to log file. - log_file.write(_strip(line)) - log_file.flush() + # Echo to stdout if requested or forced + if echo or force_echo: + sys.stdout.write(line) - if xon in controls: - force_echo = True - if xoff in controls: - force_echo = False + # Stripped output to log file. + log_file.write(_strip(line)) + log_file.flush() + + if xon in controls: + force_echo = True + if xoff in controls: + force_echo = False + + except: + tty.error("Exception occurred in writer daemon!") + traceback.print_exc() + + # send echo value back to the parent so it can be preserved. + self.child.send(echo) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 53aa14ebc17..339468f4be3 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -550,8 +550,8 @@ def child_process(child_pipe, input_stream): try: setup_package(pkg, dirty=dirty) - function() - child_pipe.send(None) + return_value = function() + child_pipe.send(return_value) except StopIteration as e: # StopIteration is used to stop installations # before the final stage, mainly for debug purposes @@ -598,11 +598,12 @@ def child_process(child_pipe, input_stream): if input_stream is not None: input_stream.close() - child_exc = parent_pipe.recv() + child_result = parent_pipe.recv() p.join() - if child_exc is not None: - raise child_exc + if isinstance(child_result, ChildError): + raise child_result + return child_result def get_package_context(traceback): diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index c94772c2a5d..ef1c411f66f 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -542,6 +542,9 @@ class SomePackage(Package): #: Defaults to the empty string. license_url = '' + # Verbosity level, preserved across installs. + _verbose = None + def __init__(self, spec): # this determines how the package should be built. self.spec = spec @@ -1275,8 +1278,13 @@ def do_install(self, # Then install the package itself. def build_process(): - """Forked for each build. Has its own process and python - module space set up by build_environment.fork().""" + """This implements the process forked for each build. + + Has its own process and python module space set up by + build_environment.fork(). + + This function's return value is returned to the parent process. + """ start_time = time.time() if not fake: @@ -1289,6 +1297,11 @@ def build_process(): 'Building {0} [{1}]'.format(self.name, self.build_system_class) ) + # get verbosity from do_install() parameter or saved value + echo = verbose + if PackageBase._verbose is not None: + echo = PackageBase._verbose + self.stage.keep = keep_stage with self._stage_and_write_lock(): # Run the pre-install hook in the child process after @@ -1314,10 +1327,7 @@ def build_process(): # Spawn a daemon that reads from a pipe and redirects # everything to log_path - with log_output(log_path, - echo=verbose, - debug=True) as logger: - + with log_output(log_path, echo, True) as logger: for phase_name, phase_attr in zip( self.phases, self._InstallPhase_phases): @@ -1328,6 +1338,7 @@ def build_process(): phase = getattr(self, phase_attr) phase(self.spec, self.prefix) + echo = logger.echo self.log() # Run post install hooks before build stage is removed. spack.hooks.post_install(self.spec) @@ -1342,13 +1353,18 @@ def build_process(): _hms(self._total_time))) print_pkg(self.prefix) + # preserve verbosity across runs + return echo + try: # Create the install prefix and fork the build process. if not os.path.exists(self.prefix): spack.store.layout.create_install_directory(self.spec) # Fork a child to do the actual installation - spack.build_environment.fork(self, build_process, dirty=dirty) + # we preserve verbosity settings across installs. + PackageBase._verbose = spack.build_environment.fork( + self, build_process, dirty=dirty) # If we installed then we should keep the prefix keep_prefix = self.last_phase is None or keep_prefix From 79045afada7f2a24221adf0788d4a40683a503ec Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 20 Aug 2017 00:48:43 -0700 Subject: [PATCH 1542/2394] Add tests for output redirection. --- lib/spack/spack/test/log.py | 95 +++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 lib/spack/spack/test/log.py diff --git a/lib/spack/spack/test/log.py b/lib/spack/spack/test/log.py new file mode 100644 index 00000000000..9c05ed002d1 --- /dev/null +++ b/lib/spack/spack/test/log.py @@ -0,0 +1,95 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from __future__ import print_function +import pytest + +from llnl.util.tty.log import log_output +from spack.util.executable import which + + +def test_log_python_output_with_python_stream(capsys, tmpdir): + # pytest's DontReadFromInput object does not like what we do here, so + # disable capsys or things hang. + with capsys.disabled(): + with log_output('foo.txt'): + print('logged') + + with open('foo.txt') as f: + assert f.read() == 'logged\n' + + assert capsys.readouterr() == ('', '') + + +def test_log_python_output_with_fd_stream(capfd, tmpdir): + with log_output('foo.txt'): + print('logged') + + with open('foo.txt') as f: + assert f.read() == 'logged\n' + + assert capfd.readouterr() == ('', '') + + +def test_log_python_output_and_echo_output(capfd, tmpdir): + with log_output('foo.txt') as logger: + with logger.force_echo(): + print('echo') + print('logged') + + assert capfd.readouterr() == ('echo\n', '') + + with open('foo.txt') as f: + assert f.read() == 'echo\nlogged\n' + + +@pytest.mark.skipif(not which('echo'), reason="needs echo command") +def test_log_subproc_output(capsys, tmpdir): + echo = which('echo') + + # pytest seems to interfere here, so we need to use capsys.disabled() + # TODO: figure out why this is and whether it means we're doing + # sometihng wrong with OUR redirects. Seems like it should work even + # with capsys enabled. + with capsys.disabled(): + with log_output('foo.txt'): + echo('logged') + + with open('foo.txt') as f: + assert f.read() == 'logged\n' + + +@pytest.mark.skipif(not which('echo'), reason="needs echo command") +def test_log_subproc_and_echo_output(capfd, tmpdir): + echo = which('echo') + + with log_output('foo.txt') as logger: + with logger.force_echo(): + echo('echo') + print('logged') + + assert capfd.readouterr() == ('echo\n', '') + + with open('foo.txt') as f: + assert f.read() == 'logged\n' From 10bb681b5789fd0eba0014b43b24bbbf2d845705 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 20 Aug 2017 03:29:54 -0700 Subject: [PATCH 1543/2394] Unbuffer so that output from packages appears when redirecting - Python I/O would not properly interleave (or appear) with output from subcommands. - Add a flusing wrapper around sys.stdout and sys.stderr when redirecting, so that Python output is synchronous with that of subcommands. --- lib/spack/llnl/util/tty/log.py | 46 ++++++++++++++++++- lib/spack/spack/test/cmd/install.py | 21 +++++++++ .../packages/printing-package/package.py | 45 ++++++++++++++++++ 3 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/printing-package/package.py diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 2b3ad22c2d2..97547b34edf 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -124,6 +124,26 @@ def __exit__(self, exc_type, exception, traceback): self.stream.fileno(), termios.TCSADRAIN, self.old_cfg) +class Unbuffered(object): + """Wrapper for Python streams that forces them to be unbuffered. + + This is implemented by forcing a flush after each write. + """ + def __init__(self, stream): + self.stream = stream + + def write(self, data): + self.stream.write(data) + self.stream.flush() + + def writelines(self, datas): + self.stream.writelines(datas) + self.stream.flush() + + def __getattr__(self, attr): + return getattr(self.stream, attr) + + def _file_descriptors_work(): """Whether we can get file descriptors for stdout and stderr. @@ -184,18 +204,32 @@ class log_output(object): work within test frameworks like nose and pytest. """ - def __init__(self, filename=None, echo=False, debug=False): + def __init__(self, filename=None, echo=False, debug=False, buffer=False): """Create a new output log context manager. + Args: + filename (str): name of file where output should be logged + echo (bool): whether to echo output in addition to logging it + debug (bool): whether to enable tty debug mode during logging + buffer (bool): pass buffer=True to skip unbuffering output; note + this doesn't set up any *new* buffering + + By default, we unbuffer sys.stdout and sys.stderr because the + logger will include output from executed programs and from python + calls. If stdout and stderr are buffered, their output won't be + printed in the right place w.r.t. output from commands. + Logger daemon is not started until ``__enter__()``. + """ self.filename = filename self.echo = echo self.debug = debug + self.buffer = buffer self._active = False # used to prevent re-entry - def __call__(self, filename=None, echo=None, debug=None): + def __call__(self, filename=None, echo=None, debug=None, buffer=None): """Thie behaves the same as init. It allows a logger to be reused. With the ``__call__`` function, you can save state between uses @@ -217,6 +251,8 @@ def __call__(self, filename=None, echo=None, debug=None): self.echo = echo if debug is not None: self.debug = debug + if buffer is not None: + self.buffer = buffer return self def __enter__(self): @@ -297,6 +333,11 @@ def __enter__(self): sys.stdout = pipe_fd_out sys.stderr = pipe_fd_out + # Unbuffer stdout and stderr at the Python level + if not self.buffer: + sys.stdout = Unbuffered(sys.stdout) + sys.stderr = Unbuffered(sys.stderr) + # Force color and debug settings now that we have redirected. tty.color.set_color_when(forced_color) tty._debug = self.debug @@ -399,6 +440,7 @@ def _writer_daemon(self, stdin): # Echo to stdout if requested or forced if echo or force_echo: sys.stdout.write(line) + sys.stdout.flush() # Stripped output to log file. log_file.write(_strip(line)) diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 5886d602a24..1b8549ca3d4 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -23,10 +23,12 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## import argparse +import os import pytest import spack.cmd.install +from spack.spec import Spec from spack.main import SpackCommand install = SpackCommand('install') @@ -86,3 +88,22 @@ def test_install_package_already_installed( def test_install_dirty_flag(parser, arguments, expected): args = parser.parse_args(arguments) assert args.dirty == expected + + +def test_package_output(tmpdir, capsys, install_mockery, mock_fetch): + """Ensure output printed from pkgs is captured by output redirection.""" + # we can't use output capture here because it interferes with Spack's + # logging. TODO: see whether we can get multiple log_outputs to work + # when nested AND in pytest + spec = Spec('printing-package').concretized() + pkg = spec.package + pkg.do_install(verbose=True) + + log_file = os.path.join(spec.prefix, '.spack', 'build.out') + with open(log_file) as f: + out = f.read() + + # make sure that output from the actual package file appears in the + # right place in the build log. + assert "BEFORE INSTALL\n==> './configure'" in out + assert "'install'\nAFTER INSTALL" in out diff --git a/var/spack/repos/builtin.mock/packages/printing-package/package.py b/var/spack/repos/builtin.mock/packages/printing-package/package.py new file mode 100644 index 00000000000..23966772529 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/printing-package/package.py @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PrintingPackage(Package): + """This package prints some output from its install method. + + We use this to test whether that output is properly logged. + """ + homepage = "http://www.example.com/printing_package" + url = "http://www.unit-test-should-replace-this-url/trivial_install-1.0.tar.gz" + + version('1.0', 'foobarbaz') + + def install(self, spec, prefix): + print("BEFORE INSTALL") + + configure('--prefix=%s' % prefix) + make() + make('install') + + print("AFTER INSTALL") From bd8ac0a738ba46f773722230a1943feb33197bbb Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 21 Aug 2017 14:29:47 +0200 Subject: [PATCH 1544/2394] Protobuf: 3.4 (#5177) --- var/spack/repos/builtin/packages/protobuf/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index 4183330938a..f6272f3fe80 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -32,6 +32,7 @@ class Protobuf(CMakePackage): url = "https://github.com/google/protobuf/archive/v3.2.0.tar.gz" root_cmakelists_dir = "cmake" + version('3.4.0', '4f47de212ef665ea619f5f97083c6781') version('3.2.0', '61d899b8369781f6dd1e62370813392d') version('3.1.0', '14a532a7538551d5def317bfca41dace') version('3.0.2', '845b39e4b7681a2ddfd8c7f528299fbb') From 581f70ff6f3bc13d53c98da60fa0fe50fe784f2c Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 21 Aug 2017 18:20:07 +0200 Subject: [PATCH 1545/2394] Added custom messages for conflicts directive. fixes #4965 (#5083) Users can now add an optional custom message to the conflicts directive. Layout on screen has been changed to improve readability and the long spec is shown in tree format. Two conflicts in `espresso` have been modified to showcase the feature. --- lib/spack/spack/directives.py | 6 ++-- lib/spack/spack/spec.py | 28 +++++++++++++++---- .../builtin/packages/espresso/package.py | 13 +++++++-- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 2e8b32e5afa..2a99e171a08 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -263,7 +263,7 @@ def _depends_on(pkg, spec, when=None, type=None): @directive('conflicts') -def conflicts(conflict_spec, when=None): +def conflicts(conflict_spec, when=None, msg=None): """Allows a package to define a conflict. Currently, a "conflict" is a concretized configuration that is known @@ -280,14 +280,16 @@ def conflicts(conflict_spec, when=None): Args: conflict_spec (Spec): constraint defining the known conflict when (Spec): optional constraint that triggers the conflict + msg (str): optional user defined message """ def _execute(pkg): # If when is not specified the conflict always holds condition = pkg.name if when is None else when when_spec = parse_anonymous_spec(condition, pkg.name) + # Save in a list the conflicts and the associated custom messages when_spec_list = pkg.conflicts.setdefault(conflict_spec, []) - when_spec_list.append(when_spec) + when_spec_list.append((when_spec, msg)) return _execute diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 43d57f2b98c..a58e1ceb2f2 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1798,9 +1798,9 @@ def concretize(self): for x in self.traverse(): for conflict_spec, when_list in x.package.conflicts.items(): if x.satisfies(conflict_spec): - for when_spec in when_list: + for when_spec, msg in when_list: if x.satisfies(when_spec): - matches.append((x, conflict_spec, when_spec)) + matches.append((x, conflict_spec, when_spec, msg)) if matches: raise ConflictsInSpecError(self, matches) @@ -3447,8 +3447,24 @@ def __init__(self, spec, matches): message = 'Conflicts in concretized spec "{0}"\n'.format( spec.short_spec ) - long_message = 'List of matching conflicts:\n\n' - match_fmt = '{0}. "{1}" conflicts with "{2}" in spec "{3}"\n' - for idx, (s, c, w) in enumerate(matches): - long_message += match_fmt.format(idx + 1, c, w, s) + + visited = set() + + long_message = '' + + match_fmt_default = '{0}. "{1}" conflicts with "{2}"\n' + match_fmt_custom = '{0}. "{1}" conflicts with "{2}" [{3}]\n' + + for idx, (s, c, w, msg) in enumerate(matches): + + if s not in visited: + visited.add(s) + long_message += 'List of matching conflicts for spec:\n\n' + long_message += s.tree(indent=4) + '\n' + + if msg is None: + long_message += match_fmt_default.format(idx + 1, c, w) + else: + long_message += match_fmt_custom.format(idx + 1, c, w, msg) + super(ConflictsInSpecError, self).__init__(message, long_message) diff --git a/var/spack/repos/builtin/packages/espresso/package.py b/var/spack/repos/builtin/packages/espresso/package.py index b77e14ec768..26cbf8fd882 100644 --- a/var/spack/repos/builtin/packages/espresso/package.py +++ b/var/spack/repos/builtin/packages/espresso/package.py @@ -75,8 +75,17 @@ class Espresso(Package): patch('dspev_drv_elpa.patch', when='@6.1 ^elpa@2016.05.003') # We can't ask for scalapack or elpa if we don't want MPI - conflicts('+scalapack', when='~mpi') - conflicts('+elpa', when='~mpi') + conflicts( + '+scalapack', + when='~mpi', + msg='scalapack is a parallel library and needs MPI support' + ) + + conflicts( + '+elpa', + when='~mpi', + msg='elpa is a parallel library and needs MPI support' + ) # Elpa is formally supported by @:5.4.0, but QE configure searches # for it in the wrong folders (or tries to download it within From e0ebf44239e5b0470b64ce1fbde860079c772748 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 21 Aug 2017 17:58:05 -0500 Subject: [PATCH 1546/2394] py-pyrad: new package (#5181) --- .../builtin/packages/py-pyrad/package.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-pyrad/package.py diff --git a/var/spack/repos/builtin/packages/py-pyrad/package.py b/var/spack/repos/builtin/packages/py-pyrad/package.py new file mode 100644 index 00000000000..05142e26b06 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyrad/package.py @@ -0,0 +1,41 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPyrad(PythonPackage): + """RADseq for phylogenetics & introgression analyses""" + + homepage = "http://dereneaton.com/software/pyrad/" + url = "https://github.com/dereneaton/pyrad/archive/3.0.66.tar.gz" + + version('3.0.66', '19b8bcd73a574f8a25582d6e8978f0aa') + + depends_on('python@:2.999', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('vsearch') + depends_on('muscle') From 48bf1e276bde45acab0d7c78cf2740907b5afce8 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Mon, 21 Aug 2017 20:35:00 -0500 Subject: [PATCH 1547/2394] Add environment variables to path substitution Update documentation on config file variable substitutions and add expansion of environment variables in config files. --- lib/spack/docs/config_yaml.rst | 21 -------------- lib/spack/docs/configuration.rst | 49 ++++++++++++++++++++++++++++++++ lib/spack/spack/util/path.py | 4 ++- 3 files changed, 52 insertions(+), 22 deletions(-) diff --git a/lib/spack/docs/config_yaml.rst b/lib/spack/docs/config_yaml.rst index 1c51db1b96f..da760f05e32 100644 --- a/lib/spack/docs/config_yaml.rst +++ b/lib/spack/docs/config_yaml.rst @@ -14,27 +14,6 @@ see the default settings by looking at These settings can be overridden in ``etc/spack/config.yaml`` or ``~/.spack/config.yaml``. See :ref:`configuration-scopes` for details. -.. _config-file-variables: - ------------------------------- -Config file variables ------------------------------- - -You may notice some variables prefixed with ``$`` in the settings above. -Spack understands several variables that can be used in values of -configuration parameters. They are: - - * ``$spack``: path to the prefix of this spack installation - * ``$tempdir``: default system temporary directory (as specified in - Python's `tempfile.tempdir - `_ - variable. - * ``$user``: name of the current user - -Note that, as with shell variables, you can write these as ``$varname`` -or with braces to distinguish the variable from surrounding characters: -``${varname}``. - -------------------- ``install_tree`` -------------------- diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index 5f76a76c81b..f1648eb4e0e 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -261,3 +261,52 @@ The merged configuration would look like this: - /lustre-scratch/$user - ~/mystage $ _ + +.. _config-file-variables: + +------------------------------ +Config file variables +------------------------------ + +Spack understands several variables which can be used in config file paths +where ever they appear. There are three sets of these variables, Spack specific +variables, environment variables, and user path variables. Spack specific +variables and environment variables both are indicated by prefixing the variable +name with ``$``. User path variables are indicated at the start of the path with +``~`` or ``~user``. Let's discuss each in turn. + +^^^^^^^^^^^^^^^^^^^^^^^^ +Spack Specific Variables +^^^^^^^^^^^^^^^^^^^^^^^^ + +Spack understands several special variables. These are: + + * ``$spack``: path to the prefix of this spack installation + * ``$tempdir``: default system temporary directory (as specified in + Python's `tempfile.tempdir + `_ + variable. + * ``$user``: name of the current user + +Note that, as with shell variables, you can write these as ``$varname`` +or with braces to distinguish the variable from surrounding characters: +``${varname}``. Their names are also case insensitive meaning that ``$SPACK`` +works just as well as ``$spack``. These special variables are also +substituted first, so any environment variables with the same name will not +be used. + +^^^^^^^^^^^^^^^^^^^^^ +Environment Variables +^^^^^^^^^^^^^^^^^^^^^ + +Spack then uses ``os.path.expandvars`` to expand any remaining environment +variables. + +^^^^^^^^^^^^^^ +User Variables +^^^^^^^^^^^^^^ + +Spack also uses the ``os.path.expanduser`` function on the path to expand +any user tilde paths such as ``~`` or ``~user``. These tilde paths must appear +at the beginning of the path or ``os.path.expanduser`` will not properly +expand them. diff --git a/lib/spack/spack/util/path.py b/lib/spack/spack/util/path.py index 0edab60f21c..edfd915c653 100644 --- a/lib/spack/spack/util/path.py +++ b/lib/spack/spack/util/path.py @@ -65,8 +65,10 @@ def repl(match): def canonicalize_path(path): - """Substitute config vars, expand user home, take abspath.""" + """Substitute config vars, expand environment vars, + expand user home, take abspath.""" path = substitute_config_variables(path) + path = os.path.expandvars(path) path = os.path.expanduser(path) path = os.path.abspath(path) return path From e55efdf8edb2a5a88a3af34d0d2fd0c12e59b9f4 Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Tue, 22 Aug 2017 08:42:55 +0200 Subject: [PATCH 1548/2394] Updates for package 'cdo'. (#5179) * Package 'cdo': removed obsolete version 1.6.9. * Package 'cdo': updated urls. * Package 'cdo': added version 1.9.0. * Package 'cdo': no need to specify per version urls. * Package 'cdo': switched from Package to AutotoolsPackage. * Package 'cdo': added new variant 'openmp'. * Package 'cdo': variants 'curl' and 'magics' by default. --- .../repos/builtin/packages/cdo/package.py | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index 938dcdfb8c4..162d18892dd 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -25,21 +25,18 @@ from spack import * -class Cdo(Package): +class Cdo(AutotoolsPackage): """CDO is a collection of command line Operators to manipulate and analyse - Climate and NWP model Data. + Climate and NWP model Data. """ - homepage = "https://code.zmaw.de/projects/cdo" - url = "https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz" - list_url = "https://code.zmaw.de/projects/cdo/files" + homepage = 'https://code.mpimet.mpg.de/projects/cdo' + url = 'https://code.mpimet.mpg.de/attachments/download/12760/cdo-1.7.2.tar.gz' + list_url = 'https://code.mpimet.mpg.de/projects/cdo/files' - version('1.8.2', '6a2e2f99b7c67ee9a512c40a8d4a7121', - url='https://code.zmaw.de/attachments/download/14686/cdo-1.8.2.tar.gz') - version('1.7.2', 'f08e4ce8739a4f2b63fc81a24db3ee31', - url='https://code.zmaw.de/attachments/download/12760/cdo-1.7.2.tar.gz') - version('1.6.9', 'bf0997bf20e812f35e10188a930e24e2', - url='https://code.zmaw.de/attachments/download/10198/cdo-1.6.9.tar.gz') + version('1.9.0', '2d88561b3b4a880df0422a62e5027e40') + version('1.8.2', '6a2e2f99b7c67ee9a512c40a8d4a7121') + version('1.7.2', 'f08e4ce8739a4f2b63fc81a24db3ee31') variant('szip', default=True, description='Enable szip compression for GRIB1') variant('hdf5', default=False, description='Enable HDF5 support') @@ -48,9 +45,10 @@ class Cdo(Package): variant('grib', default=True, description='Enable GRIB_API support') variant('libxml2', default=True, description='Enable libxml2 support') variant('proj', default=True, description='Enable PROJ library for cartographic projections') - variant('curl', default=True, description='Enable curl support') + variant('curl', default=False, description='Enable curl support') variant('fftw', default=True, description='Enable support for fftw3') - variant('magics', default=True, description='Enable Magics library support') + variant('magics', default=False, description='Enable Magics library support') + variant('openmp', default=True, description='Enable OpenMP support') depends_on('szip', when='+szip') depends_on('netcdf', when='+netcdf') @@ -63,62 +61,64 @@ class Cdo(Package): depends_on('fftw', when='+fftw') depends_on('magics', when='+magics') - def install(self, spec, prefix): - config_args = ["--prefix=" + prefix, - "--enable-shared", - "--enable-static"] + def configure_args(self): + config_args = ['--enable-shared', '--enable-static'] - if '+szip' in spec: - config_args.append('--with-szlib=' + spec['szip'].prefix) + if '+szip' in self.spec: + config_args.append('--with-szlib=' + self.spec['szip'].prefix) else: config_args.append('--without-szlib') - if '+hdf5' in spec: - config_args.append('--with-hdf5=' + spec['hdf5'].prefix) + if '+hdf5' in self.spec: + config_args.append('--with-hdf5=' + self.spec['hdf5'].prefix) else: config_args.append('--without-hdf5') - if '+netcdf' in spec: - config_args.append('--with-netcdf=' + spec['netcdf'].prefix) + if '+netcdf' in self.spec: + config_args.append('--with-netcdf=' + self.spec['netcdf'].prefix) else: config_args.append('--without-netcdf') - if '+udunits2' in spec: - config_args.append('--with-udunits2=' + spec['udunits2'].prefix) + if '+udunits2' in self.spec: + config_args.append('--with-udunits2=' + + self.spec['udunits2'].prefix) else: config_args.append('--without-udunits2') - if '+grib' in spec: - config_args.append('--with-grib_api=' + spec['grib-api'].prefix) + if '+grib' in self.spec: + config_args.append('--with-grib_api=' + + self.spec['grib-api'].prefix) else: config_args.append('--without-grib_api') - if '+libxml2' in spec: - config_args.append('--with-libxml2=' + spec['libxml2'].prefix) + if '+libxml2' in self.spec: + config_args.append('--with-libxml2=' + self.spec['libxml2'].prefix) else: config_args.append('--without-libxml2') - if '+proj' in spec: - config_args.append('--with-proj=' + spec['proj'].prefix) + if '+proj' in self.spec: + config_args.append('--with-proj=' + self.spec['proj'].prefix) else: config_args.append('--without-proj') - if '+curl' in spec: - config_args.append('--with-curl=' + spec['curl'].prefix) + if '+curl' in self.spec: + config_args.append('--with-curl=' + self.spec['curl'].prefix) else: config_args.append('--without-curl') - if '+fftw' in spec: + if '+fftw' in self.spec: config_args.append('--with-fftw3') else: config_args.append('--without-fftw3') - if '+magics' in spec: - config_args.append('--with-magics=' + spec['magics'].prefix) + if '+magics' in self.spec: + config_args.append('--with-magics=' + self.spec['magics'].prefix) else: config_args.append('--without-magics') - configure(*config_args) + if '+openmp' in self.spec: + config_args.append('--enable-openmp') + else: + config_args.append('--disable-openmp') - make() - make('install') + return config_args From f52bdeda2a80216e5cb5db3e623ecfd6fd331dee Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Tue, 22 Aug 2017 09:27:03 +0200 Subject: [PATCH 1549/2394] Package 'libaec': no need to specify per version urls. (#5176) --- var/spack/repos/builtin/packages/libaec/package.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/libaec/package.py b/var/spack/repos/builtin/packages/libaec/package.py index 18a54d3e770..87bca8d54a8 100644 --- a/var/spack/repos/builtin/packages/libaec/package.py +++ b/var/spack/repos/builtin/packages/libaec/package.py @@ -29,14 +29,14 @@ class Libaec(CMakePackage): """Libaec provides fast lossless compression of 1 up to 32 bit wide signed or unsigned integers (samples). It implements Golomb-Rice compression method under the BSD license and includes a free drop-in replacement for - the SZIP library.""" + the SZIP library. + """ homepage = 'https://gitlab.dkrz.de/k202009/libaec' - - # We provide per version urls. - url = 'https://gitlab.dkrz.de/k202009/libaec/uploads/' + url = 'https://gitlab.dkrz.de/k202009/libaec/uploads/631e85bcf877c2dcaca9b2e6d6526339/libaec-1.0.0.tar.gz' + list_url = 'https://gitlab.dkrz.de/k202009/libaec/tags' provides('szip') - version('1.0.1', 'cdf70e2b8f9153ee644710bb441f9e1e', url=url + '926fe2b181865e38a236ad12bf053cfa/libaec-1.0.1.tar.gz') - version('1.0.0', 'a848b4e397ed210313183a5e92592e42', url=url + '631e85bcf877c2dcaca9b2e6d6526339/libaec-1.0.0.tar.gz') + version('1.0.1', 'cdf70e2b8f9153ee644710bb441f9e1e') + version('1.0.0', 'a848b4e397ed210313183a5e92592e42') From 61c5b5faa73413b1457a4d272d93bbd7a01926f7 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 22 Aug 2017 20:46:54 +0200 Subject: [PATCH 1550/2394] Boost: 1.65.0 (#5182) Adds the latest boost release. Downloads seem to be pointing to bintray from the official homepage. --- var/spack/repos/builtin/packages/boost/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 93362cadf69..04b2eb0d65e 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -41,6 +41,9 @@ class Boost(Package): list_url = "http://sourceforge.net/projects/boost/files/boost/" list_depth = 1 + version('1.65.0', '5512d3809801b0a1b9dd58447b70915d', + url='https://dl.bintray.com/boostorg/release/1.65.0/source/boost_1_65_0.tar.bz2') + # NOTE: 1.64.0 seems fine for *most* applications, but if you need # +python and +mpi, there seem to be errors with out-of-date # API calls from mpi/python. From 79df4db8e553afcfd00b97bbf0ff4b9f1ae77a40 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Tue, 22 Aug 2017 13:48:23 -0500 Subject: [PATCH 1551/2394] tcoffee: new package (#5185) --- .../builtin/packages/dialign-tx/package.py | 2 + .../builtin/packages/probconsrna/package.py | 44 ++++++++++++++ .../repos/builtin/packages/tcoffee/package.py | 57 +++++++++++++++++++ .../repos/builtin/packages/tmalign/package.py | 39 +++++++++++++ 4 files changed, 142 insertions(+) create mode 100644 var/spack/repos/builtin/packages/probconsrna/package.py create mode 100644 var/spack/repos/builtin/packages/tcoffee/package.py create mode 100644 var/spack/repos/builtin/packages/tmalign/package.py diff --git a/var/spack/repos/builtin/packages/dialign-tx/package.py b/var/spack/repos/builtin/packages/dialign-tx/package.py index ccb094605e6..29a0c800daa 100644 --- a/var/spack/repos/builtin/packages/dialign-tx/package.py +++ b/var/spack/repos/builtin/packages/dialign-tx/package.py @@ -48,3 +48,5 @@ def install(self, spec, prefix): mkdirp(prefix.bin) with working_dir(self.build_directory): install('dialign-tx', prefix.bin) + # t-coffee recognizes as dialign-t + install('dialign-tx', join_path(prefix.bin, 'dialign-t')) diff --git a/var/spack/repos/builtin/packages/probconsrna/package.py b/var/spack/repos/builtin/packages/probconsrna/package.py new file mode 100644 index 00000000000..4973ced5650 --- /dev/null +++ b/var/spack/repos/builtin/packages/probconsrna/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Probconsrna(Package): + """Experimental version of PROBCONS with parameters estimated via + unsupervised training on BRAliBASE """ + + homepage = "http://probcons.stanford.edu/" + url = "http://probcons.stanford.edu/probconsRNA.tar.gz" + + version('2005-6-7', '2aa13012124208ca5dd6b0a1d508208d') + + def install(self, build, prefix): + mkdirp(prefix.bin) + install('compare', prefix.bin) + install('makegnuplot', prefix.bin) + install('probcons', prefix.bin) + # needed for tcoffee + install('probcons', prefix.bin.probconsRNA) + install('project', prefix.bin) diff --git a/var/spack/repos/builtin/packages/tcoffee/package.py b/var/spack/repos/builtin/packages/tcoffee/package.py new file mode 100644 index 00000000000..0f954b42c7f --- /dev/null +++ b/var/spack/repos/builtin/packages/tcoffee/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Tcoffee(MakefilePackage): + """T-Coffee is a multiple sequence alignment program.""" + + homepage = "http://www.tcoffee.org/" + url = "https://github.com/cbcrg/tcoffee" + + version('2017-08-17', git='https://github.com/cbcrg/tcoffee.git', commit='f389b558e91d0f82e7db934d9a79ce285f853a71') + + depends_on('perl', type=('build', 'run')) + depends_on('blast-plus') + depends_on('dialign-tx') + depends_on('viennarna') + depends_on('clustalw') + depends_on('tmalign') + depends_on('muscle') + depends_on('mafft') + depends_on('pcma') + depends_on('poamsa') + depends_on('probconsrna') + + build_directory = 'compile' + + def build(self, spec, prefix): + with working_dir(self.build_directory): + make('t_coffee') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + with working_dir(self.build_directory): + install('t_coffee', prefix.bin) diff --git a/var/spack/repos/builtin/packages/tmalign/package.py b/var/spack/repos/builtin/packages/tmalign/package.py new file mode 100644 index 00000000000..5f08bb27fc1 --- /dev/null +++ b/var/spack/repos/builtin/packages/tmalign/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Tmalign(Package): + """TM-align is an algorithm for sequence-order independent protein + structure comparisons.""" + + homepage = "http://zhanglab.ccmb.med.umich.edu/TM-align" + url = "http://zhanglab.ccmb.med.umich.edu/TM-align/TM-align-C/TMalignc.tar.gz" + + version('2016-05-25', 'c1027e4b65c07d1c5df9717de7417118') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('TMalign', prefix.bin) From 4600d106e27caa87b8206e9db7af825f16c93fc0 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 22 Aug 2017 23:20:19 +0200 Subject: [PATCH 1552/2394] Config scopes are now returning OrderedDicts instead of dicts. (#5183) It seems 8f21332fec4c8adb5349ff90e30bb0e4f75e090e introduced a bug in that normal dictionaries are returned from ConfigScope objects instead of OrderedDicts. This is fixed here. --- lib/spack/spack/config.py | 6 +-- lib/spack/spack/test/config.py | 28 +++++++++++++ lib/spack/spack/test/data/config/modules.yaml | 42 +++++++++++++++++++ 3 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 lib/spack/spack/test/data/config/modules.yaml diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index d3a385ea800..8b7fcf334c6 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -162,7 +162,7 @@ class ConfigScope(object): def __init__(self, name, path): self.name = name # scope name. self.path = path # path to directory containing configs. - self.sections = {} # sections read from config files. + self.sections = syaml.syaml_dict() # sections read from config files. # Register in a dict of all ConfigScopes # TODO: make this cleaner. Mocking up for testing is brittle. @@ -197,7 +197,7 @@ def write_section(self, section): def clear(self): """Empty cached config information.""" - self.sections = {} + self.sections = syaml.syaml_dict() def __repr__(self): return '' % (self.name, self.path) @@ -314,7 +314,7 @@ def _mark_overrides(data): return [_mark_overrides(elt) for elt in data] elif isinstance(data, dict): - marked = {} + marked = syaml.syaml_dict() for key, val in iteritems(data): if isinstance(key, string_types) and key.endswith(':'): key = syaml.syaml_str(key[:-1]) diff --git a/lib/spack/spack/test/config.py b/lib/spack/spack/test/config.py index 2363754a003..d00dc64bb39 100644 --- a/lib/spack/spack/test/config.py +++ b/lib/spack/spack/test/config.py @@ -369,3 +369,31 @@ def test_read_config_override_list(self, write_config_file): 'install_tree': 'install_tree_path', 'build_stage': ['patha', 'pathb'] } + + +def test_keys_are_ordered(): + + expected_order = ( + 'bin', + 'man', + 'share/man', + 'share/aclocal', + 'lib', + 'lib64', + 'include', + 'lib/pkgconfig', + 'lib64/pkgconfig', + '' + ) + + config_scope = spack.config.ConfigScope( + 'modules', + os.path.join(spack.test_path, 'data', 'config') + ) + + data = config_scope.get_section('modules') + + prefix_inspections = data['modules']['prefix_inspections'] + + for actual, expected in zip(prefix_inspections, expected_order): + assert actual == expected diff --git a/lib/spack/spack/test/data/config/modules.yaml b/lib/spack/spack/test/data/config/modules.yaml new file mode 100644 index 00000000000..25fe2088e7e --- /dev/null +++ b/lib/spack/spack/test/data/config/modules.yaml @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------- +# This is the default configuration for Spack's module file generation. +# +# Settings here are versioned with Spack and are intended to provide +# sensible defaults out of the box. Spack maintainers should edit this +# file to keep it current. +# +# Users can override these settings by editing the following files. +# +# Per-spack-instance settings (overrides defaults): +# $SPACK_ROOT/etc/spack/modules.yaml +# +# Per-user settings (overrides default and site settings): +# ~/.spack/modules.yaml +# ------------------------------------------------------------------------- +modules: + enable: + - tcl + - dotkit + prefix_inspections: + bin: + - PATH + man: + - MANPATH + share/man: + - MANPATH + share/aclocal: + - ACLOCAL_PATH + lib: + - LIBRARY_PATH + - LD_LIBRARY_PATH + lib64: + - LIBRARY_PATH + - LD_LIBRARY_PATH + include: + - CPATH + lib/pkgconfig: + - PKG_CONFIG_PATH + lib64/pkgconfig: + - PKG_CONFIG_PATH + '': + - CMAKE_PREFIX_PATH From d54110d208f5502bc5ceaf38781508378ddbbdbc Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sat, 5 Aug 2017 01:04:01 -0700 Subject: [PATCH 1553/2394] Limit package context to 3 lines and colorize in error output. --- lib/spack/spack/build_environment.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 339468f4be3..6c4674bd265 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -60,6 +60,7 @@ from six import iteritems import llnl.util.tty as tty +from llnl.util.tty.color import colorize from llnl.util.filesystem import * import spack @@ -606,11 +607,14 @@ def child_process(child_pipe, input_stream): return child_result -def get_package_context(traceback): +def get_package_context(traceback, context=3): """Return some context for an error message when the build fails. Args: - traceback -- A traceback from some exception raised during install. + traceback (traceback): A traceback from some exception raised during + install + context (int): Lines of context to show before and after the line + where the error happened This function inspects the stack to find where we failed in the package file, and it adds detailed context to the long_message @@ -646,9 +650,17 @@ def make_stack(tb, stack=None): # Build a message showing context in the install method. sourcelines, start = inspect.getsourcelines(frame) + + l = frame.f_lineno - start + start_ctx = max(0, l - context) + sourcelines = sourcelines[start_ctx:l + context + 1] for i, line in enumerate(sourcelines): - mark = ">> " if start + i == frame.f_lineno else " " - lines.append(" %s%-5d%s" % (mark, start + i, line.rstrip())) + is_error = start_ctx + i == l + mark = ">> " if is_error else " " + marked = " %s%-5d%s" % (mark, start_ctx + i, line.rstrip()) + if is_error: + marked = colorize('@R{%s}' % marked) + lines.append(marked) return lines From 139d5bfa6bee97415094dd471947011303168049 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 7 Aug 2017 15:09:44 -0700 Subject: [PATCH 1554/2394] Display build output on ProcessError, instead of Python context. - If a failure comes from an external command and NOT the Python code, display errors highlighted with some context. - Add some rudimentary support for parsing errors out of the build log (not very sophisticated yet). - Build errors in Python code will still display with Python context. --- lib/spack/spack/build_environment.py | 91 ++++++++++++------ lib/spack/spack/util/log_parse.py | 134 +++++++++++++++++++++++++++ 2 files changed, 198 insertions(+), 27 deletions(-) create mode 100644 lib/spack/spack/util/log_parse.py diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 6c4674bd265..ad27b3321df 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -58,6 +58,7 @@ import sys import traceback from six import iteritems +from six import StringIO import llnl.util.tty as tty from llnl.util.tty.color import colorize @@ -69,6 +70,9 @@ from spack.util.environment import * from spack.util.executable import Executable from spack.util.module_cmd import load_module, get_path_from_module +from spack.util.log_parse import * + + # # This can be set by the user to globally disable parallel builds. # @@ -576,8 +580,12 @@ def child_process(child_pipe, input_stream): build_log = pkg.log_path # make a pickleable exception to send to parent. - msg = "%s: %s" % (str(exc_type.__name__), str(exc)) - ce = ChildError(msg, tb_string, build_log, package_context) + msg = "%s: %s" % (exc_type.__name__, str(exc)) + + ce = ChildError(msg, + exc_type.__module__, + exc_type.__name__, + tb_string, build_log, package_context) child_pipe.send(ce) finally: @@ -657,7 +665,7 @@ def make_stack(tb, stack=None): for i, line in enumerate(sourcelines): is_error = start_ctx + i == l mark = ">> " if is_error else " " - marked = " %s%-5d%s" % (mark, start_ctx + i, line.rstrip()) + marked = " %s%-6d%s" % (mark, start_ctx + i, line.rstrip()) if is_error: marked = colorize('@R{%s}' % marked) lines.append(marked) @@ -683,40 +691,67 @@ class ChildError(spack.error.SpackError): failure in lieu of trying to run sys.excepthook on the parent process, so users will see the correct stack trace from a child. - 3. They also contain package_context, which shows source code context - in the Package implementation where the error happened. To get - this, Spack searches the stack trace for the deepest frame where - ``self`` is in scope and is an instance of PackageBase. This will - generally find a useful spot in the ``package.py`` file. + 3. They also contain context, which shows context in the Package + implementation where the error happened. This helps people debug + Python code in their packages. To get it, Spack searches the + stack trace for the deepest frame where ``self`` is in scope and + is an instance of PackageBase. This will generally find a useful + spot in the ``package.py`` file. - The long_message of a ChildError displays all this stuff to the user, - and SpackError handles displaying the special traceback if we're in - debug mode with spack -d. + The long_message of a ChildError displays one of two things: + + 1. If the original error was a ProcessError, indicating a command + died during the build, we'll show context from the build log. + + 2. If the original error was any other type of error, we'll show + context from the Python code. + + SpackError handles displaying the special traceback if we're in debug + mode with spack -d. """ - def __init__(self, msg, traceback_string, build_log, package_context): + # List of errors considered "build errors", for which we'll show log + # context instead of Python context. + build_errors = [('spack.util.executable', 'ProcessError')] + + def __init__(self, msg, module, classname, traceback_string, build_log, + context): super(ChildError, self).__init__(msg) + self.module = module + self.name = classname self.traceback = traceback_string self.build_log = build_log - self.package_context = package_context + self.context = context @property def long_message(self): - msg = self._long_message if self._long_message else '' + out = StringIO() + out.write(self._long_message if self._long_message else '') - if self.package_context: - if msg: - msg += "\n\n" - msg += '\n'.join(self.package_context) + if (self.module, self.name) in ChildError.build_errors: + # The error happened in some external executed process. Show + # the build log with errors highlighted. + if self.build_log: + events = parse_log_events(self.build_log) + out.write("\n%d errors in build log:\n" % len(events)) + out.write(make_log_context(events)) - if msg: - msg += "\n\n" + else: + # The error happened in in the Python code, so try to show + # some context from the Package itself. + out.write('%s: %s\n\n' % (self.name, self.message)) + if self.context: + out.write('\n'.join(self.context)) + out.write('\n') + + if out.getvalue(): + out.write('\n') if self.build_log: - msg += "See build log for details:\n" - msg += " %s" % self.build_log + out.write('See build log for details:\n') + out.write(' %s' % self.build_log) - return msg + return out.getvalue() def __reduce__(self): """__reduce__ is used to serialize (pickle) ChildErrors. @@ -726,11 +761,13 @@ def __reduce__(self): """ return _make_child_error, ( self.message, + self.module, + self.name, self.traceback, self.build_log, - self.package_context) + self.context) -def _make_child_error(msg, traceback, build_log, package_context): +def _make_child_error(msg, module, name, traceback, build_log, context): """Used by __reduce__ in ChildError to reconstruct pickled errors.""" - return ChildError(msg, traceback, build_log, package_context) + return ChildError(msg, module, name, traceback, build_log, context) diff --git a/lib/spack/spack/util/log_parse.py b/lib/spack/spack/util/log_parse.py new file mode 100644 index 00000000000..a55dcf59f53 --- /dev/null +++ b/lib/spack/spack/util/log_parse.py @@ -0,0 +1,134 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from __future__ import print_function + +import re +from six import StringIO + +from llnl.util.tty.color import colorize + + +class LogEvent(object): + """Class representing interesting events (e.g., errors) in a build log.""" + def __init__(self, text, line_no, + pre_context='', post_context='', repeat_count=0): + self.text = text + self.line_no = line_no + self.pre_context = pre_context + self.post_context = post_context + self.repeat_count = repeat_count + + @property + def start(self): + """First line in the log with text for the event or its context.""" + return self.line_no - len(self.pre_context) + + @property + def end(self): + """Last line in the log with text for event or its context.""" + return self.line_no + len(self.post_context) + 1 + + def __getitem__(self, line_no): + """Index event text and context by actual line number in file.""" + if line_no == self.line_no: + return self.text + elif line_no < self.line_no: + return self.pre_context[line_no - self.line_no] + elif line_no > self.line_no: + return self.post_context[line_no - self.line_no - 1] + + def __str__(self): + """Returns event lines and context.""" + out = StringIO() + for i in range(self.start, self.end): + if i == self.line_no: + out.write(' >> %-6d%s' % (i, self[i])) + else: + out.write(' %-6d%s' % (i, self[i])) + return out.getvalue() + + +def parse_log_events(logfile, context=6): + """Extract interesting events from a log file as a list of LogEvent. + + Args: + logfile (str): name of the build log to parse + context (int): lines of context to extract around each log event + + Currently looks for lines that contain the string 'error:', ignoring case. + + TODO: Extract warnings and other events from the build log. + """ + with open(logfile, 'r') as f: + lines = [line for line in f] + + log_events = [] + for i, line in enumerate(lines): + if re.search('error:', line, re.IGNORECASE): + event = LogEvent( + line.strip(), + i + 1, + [l.rstrip() for l in lines[i - context:i]], + [l.rstrip() for l in lines[i + 1:i + context + 1]]) + log_events.append(event) + return log_events + + +def make_log_context(log_events): + """Get error context from a log file. + + Args: + log_events (list of LogEvent): list of events created by, e.g., + ``parse_log_events`` + + Returns: + str: context from the build log with errors highlighted + + Parses the log file for lines containing errors, and prints them out + with line numbers and context. Errors are highlighted with '>>' and + with red highlighting (if color is enabled). + """ + error_lines = set(e.line_no for e in log_events) + + out = StringIO() + next_line = 1 + for event in log_events: + start = event.start + + if start > next_line: + out.write(' [ ... ]\n') + + if start < next_line: + start = next_line + + for i in range(start, event.end): + if i in error_lines: + out.write(colorize(' @R{>> %-6d%s}\n' % (i, event[i]))) + else: + out.write(' %-6d%s\n' % (i, event[i])) + + next_line = event.end + + return out.getvalue() From 4f444c5f58a224749b6dbf9556d50b9a4a6f43a7 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 22 Aug 2017 13:33:31 -0700 Subject: [PATCH 1555/2394] log_ouptut can take either a filename or a file object --- lib/spack/llnl/util/tty/log.py | 136 +++++++++++++++++++++------------ 1 file changed, 87 insertions(+), 49 deletions(-) diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 97547b34edf..e102e63d4b9 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -31,6 +31,8 @@ import sys import traceback from contextlib import contextmanager +from six import string_types +from six import StringIO import llnl.util.tty as tty @@ -144,10 +146,10 @@ def __getattr__(self, attr): return getattr(self.stream, attr) -def _file_descriptors_work(): - """Whether we can get file descriptors for stdout and stderr. +def _file_descriptors_work(*streams): + """Whether we can get file descriptors for the streams specified. - This tries to call ``fileno()`` on ``sys.stdout`` and ``sys.stderr`` + This tries to call ``fileno()`` on all streams in the argument list, and returns ``False`` if anything goes wrong. This can happen, when, e.g., the test framework replaces stdout with @@ -161,8 +163,8 @@ def _file_descriptors_work(): """ # test whether we can get fds for out and error try: - sys.stdout.fileno() - sys.stderr.fileno() + for stream in streams: + stream.fileno() return True except: return False @@ -204,16 +206,22 @@ class log_output(object): work within test frameworks like nose and pytest. """ - def __init__(self, filename=None, echo=False, debug=False, buffer=False): + def __init__(self, file_like=None, echo=False, debug=False, buffer=False): """Create a new output log context manager. Args: - filename (str): name of file where output should be logged + file_like (str or stream): open file object or name of file where + output should be logged echo (bool): whether to echo output in addition to logging it debug (bool): whether to enable tty debug mode during logging buffer (bool): pass buffer=True to skip unbuffering output; note this doesn't set up any *new* buffering + log_output can take either a file object or a filename. If a + filename is passed, the file will be opened and closed entirely + within ``__enter__`` and ``__exit__``. If a file object is passed, + this assumes the caller owns it and will close it. + By default, we unbuffer sys.stdout and sys.stderr because the logger will include output from executed programs and from python calls. If stdout and stderr are buffered, their output won't be @@ -222,16 +230,19 @@ def __init__(self, filename=None, echo=False, debug=False, buffer=False): Logger daemon is not started until ``__enter__()``. """ - self.filename = filename + self.file_like = file_like self.echo = echo self.debug = debug self.buffer = buffer self._active = False # used to prevent re-entry - def __call__(self, filename=None, echo=None, debug=None, buffer=None): + def __call__(self, file_like=None, echo=None, debug=None, buffer=None): """Thie behaves the same as init. It allows a logger to be reused. + Arguments are the same as for ``__init__()``. Args here take + precedence over those passed to ``__init__()``. + With the ``__call__`` function, you can save state between uses of a single logger. This is useful if you want to remember, e.g., the echo settings for a prior ``with log_output()``:: @@ -245,8 +256,8 @@ def __call__(self, filename=None, echo=None, debug=None, buffer=None): # log things; logger remembers prior echo settings. """ - if filename is not None: - self.filename = filename + if file_like is not None: + self.file_like = file_like if echo is not None: self.echo = echo if debug is not None: @@ -259,9 +270,23 @@ def __enter__(self): if self._active: raise RuntimeError("Can't re-enter the same log_output!") - if self.filename is None: + if self.file_like is None: raise RuntimeError( - "filename must be set by either __init__ or __call__") + "file argument must be set by either __init__ or __call__") + + # set up a stream for the daemon to write to + self.close_log_in_parent = True + self.write_log_in_parent = False + if isinstance(self.file_like, string_types): + self.log_file = open(self.file_like, 'w') + + elif _file_descriptors_work(self.file_like): + self.log_file = self.file_like + self.close_log_in_parent = False + + else: + self.log_file = StringIO() + self.write_log_in_parent = True # record parent color settings before redirecting. We do this # because color output depends on whether the *original* stdout @@ -304,7 +329,7 @@ def __enter__(self): sys.stderr.flush() # Now do the actual output rediction. - self.use_fds = _file_descriptors_work() + self.use_fds = _file_descriptors_work(sys.stdout, sys.stderr) if self.use_fds: # We try first to use OS-level file descriptors, as this # redirects output for subprocesses and system calls. @@ -366,6 +391,14 @@ def __exit__(self, exc_type, exc_val, exc_tb): sys.stdout = self._saved_stdout sys.stderr = self._saved_stderr + # print log contents in parent if needed. + if self.write_log_in_parent: + string = self.parent.recv() + self.file_like.write(string) + + if self.close_log_in_parent: + self.log_file.close() + # recover and store echo settings from the child before it dies self.echo = self.parent.recv() @@ -409,51 +442,56 @@ def _writer_daemon(self, stdin): # list of streams to select from istreams = [in_pipe, stdin] if stdin else [in_pipe] + log_file = self.log_file try: - with open(self.filename, 'w') as log_file: - with keyboard_input(stdin): - while True: - # Without the last parameter (timeout) select will - # wait until at least one of the two streams are - # ready. This may cause the function to hang. - rlist, _, xlist = select.select(istreams, [], [], 0) + with keyboard_input(stdin): + while True: + # Without the last parameter (timeout) select will + # wait until at least one of the two streams are + # ready. This may cause the function to hang. + rlist, _, xlist = select.select(istreams, [], [], 0) - # Allow user to toggle echo with 'v' key. - # Currently ignores other chars. - if stdin in rlist: - if stdin.read(1) == 'v': - echo = not echo + # Allow user to toggle echo with 'v' key. + # Currently ignores other chars. + if stdin in rlist: + if stdin.read(1) == 'v': + echo = not echo - # Handle output from the with block process. - if in_pipe in rlist: - # If we arrive here it means that in_pipe was - # ready for reading : it should never happen that - # line is false-ish - line = in_pipe.readline() - if not line: - break # EOF + # Handle output from the with block process. + if in_pipe in rlist: + # If we arrive here it means that in_pipe was + # ready for reading : it should never happen that + # line is false-ish + line = in_pipe.readline() + if not line: + break # EOF - # find control characters and strip them. - controls = control.findall(line) - line = re.sub(control, '', line) + # find control characters and strip them. + controls = control.findall(line) + line = re.sub(control, '', line) - # Echo to stdout if requested or forced - if echo or force_echo: - sys.stdout.write(line) - sys.stdout.flush() + # Echo to stdout if requested or forced + if echo or force_echo: + sys.stdout.write(line) + sys.stdout.flush() - # Stripped output to log file. - log_file.write(_strip(line)) - log_file.flush() - - if xon in controls: - force_echo = True - if xoff in controls: - force_echo = False + # Stripped output to log file. + log_file.write(_strip(line)) + log_file.flush() + if xon in controls: + force_echo = True + if xoff in controls: + force_echo = False except: tty.error("Exception occurred in writer daemon!") traceback.print_exc() + finally: + # send written data back to parent if we used a StringIO + if self.write_log_in_parent: + self.child.send(log_file.getvalue()) + log_file.close() + # send echo value back to the parent so it can be preserved. self.child.send(echo) From fa1faa61c415ccab4de88b4f3ed3eb96b0e5ec4c Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 22 Aug 2017 14:01:02 -0700 Subject: [PATCH 1556/2394] SpackCommand uses log_output to capture command output. --- lib/spack/spack/main.py | 40 ++++++++---------------- lib/spack/spack/test/cmd/dependencies.py | 8 ++--- lib/spack/spack/test/cmd/dependents.py | 8 ++--- lib/spack/spack/test/cmd/python.py | 2 +- lib/spack/spack/test/cmd/url.py | 14 ++++----- 5 files changed, 29 insertions(+), 43 deletions(-) diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index b17cb3cdc57..2f542604d56 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -34,9 +34,10 @@ import inspect import pstats import argparse -import tempfile +from six import StringIO import llnl.util.tty as tty +from llnl.util.tty.log import log_output from llnl.util.tty.color import * import spack @@ -367,7 +368,7 @@ class SpackCommand(object): install('-v', 'mpich') Use this to invoke Spack commands directly from Python and check - their stdout and stderr. + their output. """ def __init__(self, command): """Create a new SpackCommand that invokes ``command`` when called.""" @@ -376,9 +377,6 @@ def __init__(self, command): self.command_name = command self.command = spack.cmd.get_command(command) - self.returncode = None - self.error = None - def __call__(self, *argv, **kwargs): """Invoke this SpackCommand. @@ -389,26 +387,26 @@ def __call__(self, *argv, **kwargs): fail_on_error (optional bool): Don't raise an exception on error Returns: - (str, str): output and error as a strings + (str): combined output and error as a string On return, if ``fail_on_error`` is False, return value of comman is set in ``returncode`` property, and the error is set in the ``error`` property. Otherwise, raise an error. """ + # set these before every call to clear them out + self.returncode = None + self.error = None + args, unknown = self.parser.parse_known_args( [self.command_name] + list(argv)) fail_on_error = kwargs.get('fail_on_error', True) - out, err = sys.stdout, sys.stderr - ofd, ofn = tempfile.mkstemp() - efd, efn = tempfile.mkstemp() - + out = StringIO() try: - sys.stdout = open(ofn, 'w') - sys.stderr = open(efn, 'w') - self.returncode = _invoke_spack_command( - self.command, self.parser, args, unknown) + with log_output(out): + self.returncode = _invoke_spack_command( + self.command, self.parser, args, unknown) except SystemExit as e: self.returncode = e.code @@ -418,25 +416,13 @@ def __call__(self, *argv, **kwargs): if fail_on_error: raise - finally: - sys.stdout.flush() - sys.stdout.close() - sys.stderr.flush() - sys.stderr.close() - sys.stdout, sys.stderr = out, err - - return_out = open(ofn).read() - return_err = open(efn).read() - os.unlink(ofn) - os.unlink(efn) - if fail_on_error and self.returncode not in (None, 0): raise SpackCommandError( "Command exited with code %d: %s(%s)" % ( self.returncode, self.command_name, ', '.join("'%s'" % a for a in argv))) - return return_out, return_err + return out.getvalue() def _main(command, parser, args, unknown_args): diff --git a/lib/spack/spack/test/cmd/dependencies.py b/lib/spack/spack/test/cmd/dependencies.py index e024fcc2e60..58f778c6609 100644 --- a/lib/spack/spack/test/cmd/dependencies.py +++ b/lib/spack/spack/test/cmd/dependencies.py @@ -36,14 +36,14 @@ def test_immediate_dependencies(builtin_mock): - out, err = dependencies('mpileaks') + out = dependencies('mpileaks') actual = set(re.split(r'\s+', out.strip())) expected = set(['callpath'] + mpis) assert expected == actual def test_transitive_dependencies(builtin_mock): - out, err = dependencies('--transitive', 'mpileaks') + out = dependencies('--transitive', 'mpileaks') actual = set(re.split(r'\s+', out.strip())) expected = set( ['callpath', 'dyninst', 'libdwarf', 'libelf'] + mpis + mpi_deps) @@ -52,7 +52,7 @@ def test_transitive_dependencies(builtin_mock): def test_immediate_installed_dependencies(builtin_mock, database): with color_when(False): - out, err = dependencies('--installed', 'mpileaks^mpich') + out = dependencies('--installed', 'mpileaks^mpich') lines = [l for l in out.strip().split('\n') if not l.startswith('--')] hashes = set([re.split(r'\s+', l)[0] for l in lines]) @@ -65,7 +65,7 @@ def test_immediate_installed_dependencies(builtin_mock, database): def test_transitive_installed_dependencies(builtin_mock, database): with color_when(False): - out, err = dependencies('--installed', '--transitive', 'mpileaks^zmpi') + out = dependencies('--installed', '--transitive', 'mpileaks^zmpi') lines = [l for l in out.strip().split('\n') if not l.startswith('--')] hashes = set([re.split(r'\s+', l)[0] for l in lines]) diff --git a/lib/spack/spack/test/cmd/dependents.py b/lib/spack/spack/test/cmd/dependents.py index 546d6d48c95..c43270a2afe 100644 --- a/lib/spack/spack/test/cmd/dependents.py +++ b/lib/spack/spack/test/cmd/dependents.py @@ -33,13 +33,13 @@ def test_immediate_dependents(builtin_mock): - out, err = dependents('libelf') + out = dependents('libelf') actual = set(re.split(r'\s+', out.strip())) assert actual == set(['dyninst', 'libdwarf']) def test_transitive_dependents(builtin_mock): - out, err = dependents('--transitive', 'libelf') + out = dependents('--transitive', 'libelf') actual = set(re.split(r'\s+', out.strip())) assert actual == set( ['callpath', 'dyninst', 'libdwarf', 'mpileaks', 'multivalue_variant', @@ -48,7 +48,7 @@ def test_transitive_dependents(builtin_mock): def test_immediate_installed_dependents(builtin_mock, database): with color_when(False): - out, err = dependents('--installed', 'libelf') + out = dependents('--installed', 'libelf') lines = [l for l in out.strip().split('\n') if not l.startswith('--')] hashes = set([re.split(r'\s+', l)[0] for l in lines]) @@ -64,7 +64,7 @@ def test_immediate_installed_dependents(builtin_mock, database): def test_transitive_installed_dependents(builtin_mock, database): with color_when(False): - out, err = dependents('--installed', '--transitive', 'fake') + out = dependents('--installed', '--transitive', 'fake') lines = [l for l in out.strip().split('\n') if not l.startswith('--')] hashes = set([re.split(r'\s+', l)[0] for l in lines]) diff --git a/lib/spack/spack/test/cmd/python.py b/lib/spack/spack/test/cmd/python.py index 5e3ea830538..db9d9c5e411 100644 --- a/lib/spack/spack/test/cmd/python.py +++ b/lib/spack/spack/test/cmd/python.py @@ -29,5 +29,5 @@ def test_python(): - out, err = python('-c', 'import spack; print(spack.spack_version)') + out = python('-c', 'import spack; print(spack.spack_version)') assert out.strip() == str(spack.spack_version) diff --git a/lib/spack/spack/test/cmd/url.py b/lib/spack/spack/test/cmd/url.py index 21f88e928bd..ab2d750dee2 100644 --- a/lib/spack/spack/test/cmd/url.py +++ b/lib/spack/spack/test/cmd/url.py @@ -83,30 +83,30 @@ def test_url_with_no_version_fails(): def test_url_list(): - out, err = url('list') + out = url('list') total_urls = len(out.split('\n')) # The following two options should not change the number of URLs printed. - out, err = url('list', '--color', '--extrapolation') + out = url('list', '--color', '--extrapolation') colored_urls = len(out.split('\n')) assert colored_urls == total_urls # The following options should print fewer URLs than the default. # If they print the same number of URLs, something is horribly broken. # If they say we missed 0 URLs, something is probably broken too. - out, err = url('list', '--incorrect-name') + out = url('list', '--incorrect-name') incorrect_name_urls = len(out.split('\n')) assert 0 < incorrect_name_urls < total_urls - out, err = url('list', '--incorrect-version') + out = url('list', '--incorrect-version') incorrect_version_urls = len(out.split('\n')) assert 0 < incorrect_version_urls < total_urls - out, err = url('list', '--correct-name') + out = url('list', '--correct-name') correct_name_urls = len(out.split('\n')) assert 0 < correct_name_urls < total_urls - out, err = url('list', '--correct-version') + out = url('list', '--correct-version') correct_version_urls = len(out.split('\n')) assert 0 < correct_version_urls < total_urls @@ -121,7 +121,7 @@ def test_url_summary(): assert 0 < correct_versions <= sum(version_count_dict.values()) <= total_urls # noqa # make sure it agrees with the actual command. - out, err = url('summary') + out = url('summary') out_total_urls = int( re.search(r'Total URLs found:\s*(\d+)', out).group(1)) assert out_total_urls == total_urls From f51b541ef8ca5378020d6caf19a8e59c6c0e8aa6 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 22 Aug 2017 14:35:17 -0700 Subject: [PATCH 1557/2394] Make install command reusable within single Spack run - install and probably other commands were designed to run once, but now we can to test them from within Spack with SpackCommand - cmd/install.py assumed that it could modify do_install in PackageBase and leave it that way; this makes the decorator temporary - package.py didn't properly initialize its stage if the same package had been built successfully before (and the stage removed). - manage stage lifecycle better and remember when Package needs to re-create the stage --- lib/spack/spack/cmd/install.py | 40 +++++++++++++++++++++------------- lib/spack/spack/package.py | 15 +++++++++---- lib/spack/spack/stage.py | 14 ++++++++++-- 3 files changed, 48 insertions(+), 21 deletions(-) diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index 9f35837220a..ec1efdc9cf5 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -334,31 +334,41 @@ def install(parser, args, **kwargs): tty.error('The `spack install` command requires a spec to install.') for spec in specs: + saved_do_install = PackageBase.do_install + decorator = lambda fn: fn + # Check if we were asked to produce some log for dashboards if args.log_format is not None: # Compute the filename for logging log_filename = args.log_file if not log_filename: log_filename = default_log_file(spec) + # Create the test suite in which to log results test_suite = TestSuite(spec) - # Decorate PackageBase.do_install to get installation status - PackageBase.do_install = junit_output( - spec, test_suite - )(PackageBase.do_install) + + # Temporarily decorate PackageBase.do_install to monitor + # recursive calls. + decorator = junit_output(spec, test_suite) # Do the actual installation - if args.things_to_install == 'dependencies': - # Install dependencies as-if they were installed - # for root (explicit=False in the DB) - kwargs['explicit'] = False - for s in spec.dependencies(): - p = spack.repo.get(s) - p.do_install(**kwargs) - else: - package = spack.repo.get(spec) - kwargs['explicit'] = True - package.do_install(**kwargs) + try: + # decorate the install if necessary + PackageBase.do_install = decorator(PackageBase.do_install) + + if args.things_to_install == 'dependencies': + # Install dependencies as-if they were installed + # for root (explicit=False in the DB) + kwargs['explicit'] = False + for s in spec.dependencies(): + p = spack.repo.get(s) + p.do_install(**kwargs) + else: + package = spack.repo.get(spec) + kwargs['explicit'] = True + package.do_install(**kwargs) + finally: + PackageBase.do_install = saved_do_install # Dump log file if asked to if args.log_format is not None: diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index ef1c411f66f..64db8013d09 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -760,10 +760,6 @@ def _make_stage(self): # Append the item to the composite composite_stage.append(stage) - # Create stage on first access. Needed because fetch, stage, - # patch, and install can be called independently of each - # other, so `with self.stage:` in do_install isn't sufficient. - composite_stage.create() return composite_stage @property @@ -772,6 +768,12 @@ def stage(self): raise ValueError("Can only get a stage for a concrete package.") if self._stage is None: self._stage = self._make_stage() + + # Create stage on first access. Needed because fetch, stage, + # patch, and install can be called independently of each + # other, so `with self.stage:` in do_install isn't sufficient. + self._stage.create() + return self._stage @stage.setter @@ -1390,6 +1392,11 @@ def build_process(): if not keep_prefix: self.remove_prefix() + # The subprocess *may* have removed the build stage. Mark it + # not created so that the next time self.stage is invoked, we + # check the filesystem for it. + self.stage.created = False + def check_for_unfinished_installation( self, keep_prefix=False, restage=False): """Check for leftover files from partially-completed prior install to diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index 09f18f7d67d..f9995bce6cb 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -236,6 +236,10 @@ def __init__( self._lock = Stage.stage_locks[self.name] + # When stages are reused, we need to know whether to re-create + # it. This marks whether it has been created/destroyed. + self.created = False + def __enter__(self): """ Entering a stage context will create the stage directory @@ -521,6 +525,7 @@ def create(self): mkdirp(self.path) # Make sure we can actually do something with the stage we made. ensure_access(self.path) + self.created = True def destroy(self): """Removes this stage directory.""" @@ -532,6 +537,9 @@ def destroy(self): except OSError: os.chdir(os.path.dirname(self.path)) + # mark as destroyed + self.created = False + class ResourceStage(Stage): @@ -573,8 +581,9 @@ def expand_archive(self): shutil.move(source_path, destination_path) -@pattern.composite(method_list=['fetch', 'create', 'check', 'expand_archive', - 'restage', 'destroy', 'cache_local']) +@pattern.composite(method_list=[ + 'fetch', 'create', 'created', 'check', 'expand_archive', 'restage', + 'destroy', 'cache_local']) class StageComposite: """Composite for Stage type objects. The first item in this composite is considered to be the root package, and operations that return a value are @@ -623,6 +632,7 @@ def __init__(self, path): self.archive_file = None self.path = path self.source_path = path + self.created = True def chdir(self): if os.path.isdir(self.path): From 40e91713908c1ef96d7b83d8b0dfbbd69bc24e4c Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 22 Aug 2017 14:38:39 -0700 Subject: [PATCH 1558/2394] Add testing for new build output. - Update handling of ChildError so that its output is capturable from a SpackCommand - Update cmd/install test to make sure Python and build log output is being displayed properly. --- lib/spack/spack/build_environment.py | 9 +++++++++ lib/spack/spack/error.py | 23 ++++++++++++++++++++++- lib/spack/spack/test/cmd/install.py | 25 ++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index ad27b3321df..896cbe879bb 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -610,8 +610,14 @@ def child_process(child_pipe, input_stream): child_result = parent_pipe.recv() p.join() + # If the child process raised an error, print its output here rather + # than waiting until the call to SpackError.die() in main(). This + # allows exception handling output to be logged from within Spack. + # see spack.main.SpackCommand. if isinstance(child_result, ChildError): + child_result.print_context() raise child_result + return child_result @@ -753,6 +759,9 @@ def long_message(self): return out.getvalue() + def __str__(self): + return self.message + self.long_message + self.traceback + def __reduce__(self): """__reduce__ is used to serialize (pickle) ChildErrors. diff --git a/lib/spack/spack/error.py b/lib/spack/spack/error.py index 6e48a4e76c9..8f54e82b117 100644 --- a/lib/spack/spack/error.py +++ b/lib/spack/spack/error.py @@ -45,11 +45,27 @@ def __init__(self, message, long_message=None): # traceback as a string and print it in the parent. self.traceback = None + # we allow exceptions to print debug info via print_context() + # before they are caught at the top level. If they *haven't* + # printed context early, we do it by default when die() is + # called, so we need to remember whether it's been called. + self.printed = False + @property def long_message(self): return self._long_message - def die(self): + def print_context(self): + """Print extended debug information about this exception. + + This is usually printed when the top-level Spack error handler + calls ``die()``, but it acn be called separately beforehand if a + lower-level error handler needs to print error context and + continue without raising the exception to the top level. + """ + if self.printed: + return + # basic debug message tty.error(self.message) if self.long_message: @@ -66,6 +82,11 @@ def die(self): # run parent exception hook. sys.excepthook(*sys.exc_info()) + sys.stderr.flush() + self.printed = True + + def die(self): + self.print_context() sys.exit(1) def __str__(self): diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 1b8549ca3d4..eef5605275f 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -27,6 +27,7 @@ import pytest +import spack import spack.cmd.install from spack.spec import Spec from spack.main import SpackCommand @@ -42,7 +43,7 @@ def parser(): return parser -def _install_package_and_dependency( +def test_install_package_and_dependency( tmpdir, builtin_mock, mock_archive, mock_fetch, config, install_mockery): @@ -58,6 +59,9 @@ def _install_package_and_dependency( assert 'failures="0"' in content assert 'errors="0"' in content + s = Spec('libdwarf').concretized() + assert not spack.repo.get(s).stage.created + def test_install_package_already_installed( tmpdir, builtin_mock, mock_archive, mock_fetch, config, @@ -107,3 +111,22 @@ def test_package_output(tmpdir, capsys, install_mockery, mock_fetch): # right place in the build log. assert "BEFORE INSTALL\n==> './configure'" in out assert "'install'\nAFTER INSTALL" in out + + +def _test_install_output_on_build_error(builtin_mock, mock_archive, mock_fetch, + config, install_mockery, capfd): + # capfd interferes with Spack's capturing + with capfd.disabled(): + out = install('build-error', fail_on_error=False) + assert isinstance(install.error, spack.build_environment.ChildError) + assert install.error.name == 'ProcessError' + assert 'configure: error: in /path/to/some/file:' in out + assert 'configure: error: cannot run C compiled programs.' in out + + +def test_install_output_on_python_error(builtin_mock, mock_archive, mock_fetch, + config, install_mockery): + out = install('failing-build', fail_on_error=False) + assert isinstance(install.error, spack.build_environment.ChildError) + assert install.error.name == 'InstallError' + assert 'raise InstallError("Expected failure.")' in out From 15186d4ae81179fa12e86a812cfa791464f5b8dc Mon Sep 17 00:00:00 2001 From: healther Date: Wed, 23 Aug 2017 10:05:36 +0200 Subject: [PATCH 1559/2394] add test for lua and node patching in sbang (#5169) * add test for lua and node handling in sbang patching (cf #5086) --- lib/spack/spack/test/sbang.py | 48 ++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/lib/spack/spack/test/sbang.py b/lib/spack/spack/test/sbang.py index c0831a4e2d6..0962f508cce 100644 --- a/lib/spack/spack/test/sbang.py +++ b/lib/spack/spack/test/sbang.py @@ -30,6 +30,7 @@ import pytest import tempfile import shutil +import filecmp from llnl.util.filesystem import * @@ -38,12 +39,16 @@ from spack.util.executable import which -short_line = "#!/this/is/short/bin/bash\n" -long_line = "#!/this/" + ('x' * 200) + "/is/long\n" -lua_line = "#!/this/" + ('x' * 200) + "/is/lua\n" -lua_line_patched = "--!/this/" + ('x' * 200) + "/is/lua\n" -sbang_line = '#!/bin/bash %s/bin/sbang\n' % spack.spack_root -last_line = "last!\n" +short_line = "#!/this/is/short/bin/bash\n" +long_line = "#!/this/" + ('x' * 200) + "/is/long\n" +lua_line = "#!/this/" + ('x' * 200) + "/is/lua\n" +lua_in_text = ("line\n") * 100 + "lua\n" + ("line\n" * 100) +lua_line_patched = "--!/this/" + ('x' * 200) + "/is/lua\n" +node_line = "#!/this/" + ('x' * 200) + "/is/node\n" +node_in_text = ("line\n") * 100 + "lua\n" + ("line\n" * 100) +node_line_patched = "//!/this/" + ('x' * 200) + "/is/node\n" +sbang_line = '#!/bin/bash %s/bin/sbang\n' % spack.spack_root +last_line = "last!\n" class ScriptDirectory(object): @@ -72,6 +77,26 @@ def __init__(self): f.write(lua_line) f.write(last_line) + # Lua script with long shebang + self.lua_textbang = os.path.join(self.tempdir, 'lua_in_text') + with open(self.lua_textbang, 'w') as f: + f.write(short_line) + f.write(lua_in_text) + f.write(last_line) + + # Node script with long shebang + self.node_shebang = os.path.join(self.tempdir, 'node') + with open(self.node_shebang, 'w') as f: + f.write(node_line) + f.write(last_line) + + # Node script with long shebang + self.node_textbang = os.path.join(self.tempdir, 'node_in_text') + with open(self.node_textbang, 'w') as f: + f.write(short_line) + f.write(node_in_text) + f.write(last_line) + # Script already using sbang. self.has_sbang = os.path.join(self.tempdir, 'shebang') with open(self.has_sbang, 'w') as f: @@ -123,6 +148,17 @@ def test_shebang_handling(script_dir): assert f.readline() == lua_line_patched assert f.readline() == last_line + # Make sure this got patched. + with open(script_dir.node_shebang, 'r') as f: + assert f.readline() == sbang_line + assert f.readline() == node_line_patched + assert f.readline() == last_line + + assert filecmp.cmp(script_dir.lua_textbang, + os.path.join(script_dir.tempdir, 'lua_in_text')) + assert filecmp.cmp(script_dir.node_textbang, + os.path.join(script_dir.tempdir, 'node_in_text')) + # Make sure this is untouched with open(script_dir.has_sbang, 'r') as f: assert f.readline() == sbang_line From 0daa639788b7bc0b0da14001308176ba1c8c3856 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Wed, 23 Aug 2017 14:31:34 +0200 Subject: [PATCH 1560/2394] Boost: develop (#5184) Adds a development version of boost, based on their github master repo. Git clones the submodules forever, but installs! :) Useful for testing since boost tends to break complex software dependencies quite often. This helps testing it before releases. --- var/spack/repos/builtin/packages/boost/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 04b2eb0d65e..b3dc0b396b6 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -41,6 +41,11 @@ class Boost(Package): list_url = "http://sourceforge.net/projects/boost/files/boost/" list_depth = 1 + version('develop', + git='https://github.com/boostorg/boost.git', + branch='develop', + submodules=True) + version('1.65.0', '5512d3809801b0a1b9dd58447b70915d', url='https://dl.bintray.com/boostorg/release/1.65.0/source/boost_1_65_0.tar.bz2') From 359b21c888c923ef61b4680cdbd00e3781a9d78b Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 23 Aug 2017 08:34:12 -0500 Subject: [PATCH 1561/2394] pgdspider: new package (#5186) * pgdspider: new package * couple of fixes --- .../builtin/packages/pgdspider/package.py | 57 +++++++++++++++++++ .../builtin/packages/pgdspider/pgdspider.sh | 3 + 2 files changed, 60 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pgdspider/package.py create mode 100644 var/spack/repos/builtin/packages/pgdspider/pgdspider.sh diff --git a/var/spack/repos/builtin/packages/pgdspider/package.py b/var/spack/repos/builtin/packages/pgdspider/package.py new file mode 100644 index 00000000000..60dfdc12f47 --- /dev/null +++ b/var/spack/repos/builtin/packages/pgdspider/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import os.path + + +class Pgdspider(Package): + """"PGDSpider is a powerful automated data conversion tool for population + genetic and genomics programs""" + + homepage = "http://www.cmpg.unibe.ch/software/PGDSpider" + url = "http://www.cmpg.unibe.ch/software/PGDSpider/PGDSpider_2.1.1.2.zip" + + version('2.1.1.2', '170e5b4a002277ff66866486da920693') + + depends_on('java', type=('build', 'run')) + depends_on('bcftools') + depends_on('bwa') + depends_on('samtools') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + jar_file = 'PGDSpider{0}-cli.jar'.format(self.version.up_to(1)) + install(jar_file, prefix.bin) + + script_sh = join_path(os.path.dirname(__file__), "pgdspider.sh") + script = prefix.bin.pgdspider + install(script_sh, script) + set_executable(script) + + java = self.spec['java'].prefix.bin.java + kwargs = {'ignore_absent': False, 'backup': False, 'string': False} + filter_file('^java', java, script, **kwargs) + filter_file('pgdspider.jar', join_path(prefix.bin, jar_file), + script, **kwargs) diff --git a/var/spack/repos/builtin/packages/pgdspider/pgdspider.sh b/var/spack/repos/builtin/packages/pgdspider/pgdspider.sh new file mode 100644 index 00000000000..5ac0f66c08d --- /dev/null +++ b/var/spack/repos/builtin/packages/pgdspider/pgdspider.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# convenience wrapper for the astral jar file +java $JAVA_ARGS $JAVA_OPTS -jar pgdspider.jar "$@" From fa1d0a8a4d41616e4689ca0c80318269f55c5c9e Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 23 Aug 2017 15:08:52 -0600 Subject: [PATCH 1562/2394] Add --source option to spack install (#4102) - -- source will copy source into prefix along with the package. - added a test for --source, as well --- lib/spack/spack/cmd/install.py | 4 ++++ lib/spack/spack/package.py | 11 +++++++++++ lib/spack/spack/test/cmd/install.py | 12 ++++++++++++ share/spack/spack-completion.bash | 2 +- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index ec1efdc9cf5..83ebe717875 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -68,6 +68,9 @@ def setup_parser(subparser): subparser.add_argument( '--restage', action='store_true', dest='restage', help="if a partial install is detected, delete prior state") + subparser.add_argument( + '--source', action='store_true', dest='install_source', + help="install source files in prefix") subparser.add_argument( '-n', '--no-checksum', action='store_true', dest='no_checksum', help="do not check packages against checksum") @@ -314,6 +317,7 @@ def install(parser, args, **kwargs): 'keep_prefix': args.keep_prefix, 'keep_stage': args.keep_stage, 'restage': args.restage, + 'install_source': args.install_source, 'install_deps': 'dependencies' in args.things_to_install, 'make_jobs': args.jobs, 'run_tests': args.run_tests, diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 64db8013d09..c13a566e270 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1193,6 +1193,7 @@ def _update_explicit_entry_in_db(self, rec, explicit): def do_install(self, keep_prefix=False, keep_stage=False, + install_source=False, install_deps=True, skip_patch=False, verbose=False, @@ -1213,6 +1214,8 @@ def do_install(self, keep_stage (bool): By default, stage is destroyed only if there are no exceptions during build. Set to True to keep the stage even with exceptions. + install_source (bool): By default, source is not installed, but + for debugging it might be useful to keep it around. install_deps (bool): Install dependencies before installing this package skip_patch (bool): Skip patch stage of build if True. @@ -1260,6 +1263,7 @@ def do_install(self, dep.package.do_install( keep_prefix=keep_prefix, keep_stage=keep_stage, + install_source=install_source, install_deps=install_deps, fake=fake, skip_patch=skip_patch, @@ -1312,6 +1316,13 @@ def build_process(): if fake: self.do_fake_install() else: + source_path = self.stage.source_path + if install_source and os.path.isdir(source_path): + src_target = join_path( + self.spec.prefix, 'share', self.name, 'src') + tty.msg('Copying source to {0}'.format(src_target)) + install_tree(self.stage.source_path, src_target) + # Do the real install in the source directory. self.stage.chdir_to_source() diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index eef5605275f..2886aa5d6a0 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -24,6 +24,7 @@ ############################################################################## import argparse import os +import filecmp import pytest @@ -130,3 +131,14 @@ def test_install_output_on_python_error(builtin_mock, mock_archive, mock_fetch, assert isinstance(install.error, spack.build_environment.ChildError) assert install.error.name == 'InstallError' assert 'raise InstallError("Expected failure.")' in out + + +def test_install_with_source( + builtin_mock, mock_archive, mock_fetch, config, install_mockery): + """Verify that source has been copied into place.""" + install('--source', '--keep-stage', 'trivial-install-test-package') + spec = Spec('trivial-install-test-package').concretized() + src = os.path.join( + spec.prefix.share, 'trivial-install-test-package', 'src') + assert filecmp.cmp(os.path.join(mock_archive.path, 'configure'), + os.path.join(src, 'configure')) diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 408aaf61ac2..05ae403eb51 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -456,7 +456,7 @@ function _spack_install { then compgen -W "-h --help --only -j --jobs --keep-prefix --keep-stage -n --no-checksum -v --verbose --fake --clean --dirty - --run-tests --log-format --log-file" -- "$cur" + --run-tests --log-format --log-file --source" -- "$cur" else compgen -W "$(_all_packages)" -- "$cur" fi From 5d7901b31252e5828eaa99babb827b5dba4eea8e Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 23 Aug 2017 23:20:40 +0200 Subject: [PATCH 1563/2394] Improve Spec literals, add Spec.from_dict() (#5151) * Simplified Spec.__init__ signature by removing the *dep_like argument. The `*dep_like` argument of `Spec.__init__` is used only for tests. This PR removes it from the call signature and introduces an equivalent fixture to be used in tests. * Refactored ``spec_from_dict`` to be a static method of ``Spec`` The fixture ``spec_from_dict`` has been refactored to be a static method of ``Spec``. Test code has been updated accordingly. Added tests for exceptional paths. * Renamed argument `unique` to `normal` + added LazySpecCache class As requested in the review the argument `unique` of `Spec.from_literal` has been renamed to `normal`. To avoid eager evaluations of `Spec(spec_like)` expressions a subclass of `collections.defaultdict` has been introduced. * Spec object can be keys of the dictionary for a spec literal. Added back the possibility use a spec directly as a key. This permits to build DAGs that are partially normalized. --- lib/spack/spack/spec.py | 183 +++++++++++++++++-- lib/spack/spack/test/concretize.py | 107 +++++++---- lib/spack/spack/test/optional_deps.py | 119 ++++++------ lib/spack/spack/test/spec_dag.py | 254 +++++++++++++++++--------- 4 files changed, 468 insertions(+), 195 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index a58e1ceb2f2..aa22978217d 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -971,7 +971,159 @@ def __init__(self, spec, name, query_parameters): @key_ordering class Spec(object): - def __init__(self, spec_like, *dep_like, **kwargs): + @staticmethod + def from_literal(spec_dict, normal=True): + """Builds a Spec from a dictionary containing the spec literal. + + The dictionary must have a single top level key, representing the root, + and as many secondary level keys as needed in the spec. + + The keys can be either a string or a Spec or a tuple containing the + Spec and the dependency types. + + Args: + spec_dict (dict): the dictionary containing the spec literal + normal (bool): if True the same key appearing at different levels + of the ``spec_dict`` will map to the same object in memory. + + Examples: + A simple spec ``foo`` with no dependencies: + + .. code-block:: python + + {'foo': None} + + A spec ``foo`` with a ``(build, link)`` dependency ``bar``: + + .. code-block:: python + + {'foo': + {'bar:build,link': None}} + + A spec with a diamond dependency and various build types: + + .. code-block:: python + + {'dt-diamond': { + 'dt-diamond-left:build,link': { + 'dt-diamond-bottom:build': None + }, + 'dt-diamond-right:build,link': { + 'dt-diamond-bottom:build,link,run': None + } + }} + + The same spec with a double copy of ``dt-diamond-bottom`` and + no diamond structure: + + .. code-block:: python + + {'dt-diamond': { + 'dt-diamond-left:build,link': { + 'dt-diamond-bottom:build': None + }, + 'dt-diamond-right:build,link': { + 'dt-diamond-bottom:build,link,run': None + } + }, normal=False} + + Constructing a spec using a Spec object as key: + + .. code-block:: python + + mpich = Spec('mpich') + libelf = Spec('libelf@1.8.11') + expected_normalized = Spec.from_literal({ + 'mpileaks': { + 'callpath': { + 'dyninst': { + 'libdwarf': {libelf: None}, + libelf: None + }, + mpich: None + }, + mpich: None + }, + }) + + """ + + # Maps a literal to a Spec, to be sure we are reusing the same object + spec_cache = LazySpecCache() + + def spec_builder(d): + # The invariant is that the top level dictionary must have + # only one key + assert len(d) == 1 + + # Construct the top-level spec + spec_like, dep_like = next(iter(d.items())) + + # If the requirements was for unique nodes (default) + # then re-use keys from the local cache. Otherwise build + # a new node every time. + if not isinstance(spec_like, Spec): + spec = spec_cache[spec_like] if normal else Spec(spec_like) + else: + spec = spec_like + + if dep_like is None: + return spec + + def name_and_dependency_types(s): + """Given a key in the dictionary containing the literal, + extracts the name of the spec and its dependency types. + + Args: + s (str): key in the dictionary containing the literal + + """ + t = s.split(':') + + if len(t) > 2: + msg = 'more than one ":" separator in key "{0}"' + raise KeyError(msg.format(s)) + + n = t[0] + if len(t) == 2: + dtypes = tuple(dt.strip() for dt in t[1].split(',')) + else: + dtypes = () + + return n, dtypes + + def spec_and_dependency_types(s): + """Given a non-string key in the literal, extracts the spec + and its dependency types. + + Args: + s (spec or tuple): either a Spec object or a tuple + composed of a Spec object and a string with the + dependency types + + """ + if isinstance(s, Spec): + return s, () + + spec_obj, dtypes = s + return spec_obj, tuple(dt.strip() for dt in dtypes.split(',')) + + # Recurse on dependencies + for s, s_dependencies in dep_like.items(): + + if isinstance(s, string_types): + dag_node, dependency_types = name_and_dependency_types(s) + else: + dag_node, dependency_types = spec_and_dependency_types(s) + + dependency_spec = spec_builder({dag_node: s_dependencies}) + spec._add_dependency(dependency_spec, dependency_types) + + return spec + + return spec_builder(spec_dict) + + def __init__(self, spec_like, **kwargs): # Copy if spec_like is a Spec. if isinstance(spec_like, Spec): self._dup(spec_like) @@ -1014,22 +1166,6 @@ def __init__(self, spec_like, *dep_like, **kwargs): self.external_path = kwargs.get('external_path', None) self.external_module = kwargs.get('external_module', None) - # This allows users to construct a spec DAG with literals. - # Note that given two specs a and b, Spec(a) copies a, but - # Spec(a, b) will copy a but just add b as a dep. - deptypes = () - for dep in dep_like: - - if isinstance(dep, (list, tuple)): - # Literals can be deptypes -- if there are tuples in the - # list, they will be used as deptypes for the following Spec. - deptypes = tuple(dep) - continue - - spec = dep if isinstance(dep, Spec) else Spec(dep) - self._add_dependency(spec, deptypes) - deptypes = () - @property def external(self): return bool(self.external_path) or bool(self.external_module) @@ -2944,6 +3080,19 @@ def __repr__(self): return str(self) +class LazySpecCache(collections.defaultdict): + """Cache for Specs that uses a spec_like as key, and computes lazily + the corresponding value ``Spec(spec_like``. + """ + def __init__(self): + super(LazySpecCache, self).__init__(Spec) + + def __missing__(self, key): + value = self.default_factory(key) + self[key] = value + return value + + # # These are possible token types in the spec grammar. # diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 414b0fab848..572436a4b24 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -330,59 +330,94 @@ def test_external_and_virtual(self): def test_find_spec_parents(self): """Tests the spec finding logic used by concretization. """ - s = Spec('a +foo', - Spec('b +foo', - Spec('c'), - Spec('d +foo')), - Spec('e +foo')) + s = Spec.from_literal({ + 'a +foo': { + 'b +foo': { + 'c': None, + 'd+foo': None + }, + 'e +foo': None + } + }) assert 'a' == find_spec(s['b'], lambda s: '+foo' in s).name def test_find_spec_children(self): - s = Spec('a', - Spec('b +foo', - Spec('c'), - Spec('d +foo')), - Spec('e +foo')) + s = Spec.from_literal({ + 'a': { + 'b +foo': { + 'c': None, + 'd+foo': None + }, + 'e +foo': None + } + }) + assert 'd' == find_spec(s['b'], lambda s: '+foo' in s).name - s = Spec('a', - Spec('b +foo', - Spec('c +foo'), - Spec('d')), - Spec('e +foo')) + + s = Spec.from_literal({ + 'a': { + 'b +foo': { + 'c+foo': None, + 'd': None + }, + 'e +foo': None + } + }) + assert 'c' == find_spec(s['b'], lambda s: '+foo' in s).name def test_find_spec_sibling(self): - s = Spec('a', - Spec('b +foo', - Spec('c'), - Spec('d')), - Spec('e +foo')) + + s = Spec.from_literal({ + 'a': { + 'b +foo': { + 'c': None, + 'd': None + }, + 'e +foo': None + } + }) + assert 'e' == find_spec(s['b'], lambda s: '+foo' in s).name assert 'b' == find_spec(s['e'], lambda s: '+foo' in s).name - s = Spec('a', - Spec('b +foo', - Spec('c'), - Spec('d')), - Spec('e', - Spec('f +foo'))) + s = Spec.from_literal({ + 'a': { + 'b +foo': { + 'c': None, + 'd': None + }, + 'e': { + 'f +foo': None + } + } + }) + assert 'f' == find_spec(s['b'], lambda s: '+foo' in s).name def test_find_spec_self(self): - s = Spec('a', - Spec('b +foo', - Spec('c'), - Spec('d')), - Spec('e')) + s = Spec.from_literal({ + 'a': { + 'b +foo': { + 'c': None, + 'd': None + }, + 'e': None + } + }) assert 'b' == find_spec(s['b'], lambda s: '+foo' in s).name def test_find_spec_none(self): - s = Spec('a', - Spec('b', - Spec('c'), - Spec('d')), - Spec('e')) + s = Spec.from_literal({ + 'a': { + 'b': { + 'c': None, + 'd': None + }, + 'e': None + } + }) assert find_spec(s['b'], lambda s: '+foo' in s) is None def test_compiler_child(self): diff --git a/lib/spack/spack/test/optional_deps.py b/lib/spack/spack/test/optional_deps.py index db2267f0474..0023fce52d4 100644 --- a/lib/spack/spack/test/optional_deps.py +++ b/lib/spack/spack/test/optional_deps.py @@ -29,65 +29,82 @@ @pytest.fixture( params=[ # Normalize simple conditionals - ('optional-dep-test', Spec('optional-dep-test')), - ('optional-dep-test~a', Spec('optional-dep-test~a')), - ('optional-dep-test+a', Spec('optional-dep-test+a', Spec('a'))), - ('optional-dep-test a=true', Spec( - 'optional-dep-test a=true', Spec('a') - )), - ('optional-dep-test a=true', Spec('optional-dep-test+a', Spec('a'))), - ('optional-dep-test@1.1', Spec('optional-dep-test@1.1', Spec('b'))), - ('optional-dep-test%intel', Spec( - 'optional-dep-test%intel', Spec('c') - )), - ('optional-dep-test%intel@64.1', Spec( - 'optional-dep-test%intel@64.1', Spec('c'), Spec('d') - )), - ('optional-dep-test%intel@64.1.2', Spec( - 'optional-dep-test%intel@64.1.2', Spec('c'), Spec('d') - )), - ('optional-dep-test%clang@35', Spec( - 'optional-dep-test%clang@35', Spec('e') - )), + ('optional-dep-test', {'optional-dep-test': None}), + ('optional-dep-test~a', {'optional-dep-test~a': None}), + ('optional-dep-test+a', {'optional-dep-test+a': {'a': None}}), + ('optional-dep-test a=true', { + 'optional-dep-test a=true': { + 'a': None + }}), + ('optional-dep-test a=true', { + 'optional-dep-test+a': { + 'a': None + }}), + ('optional-dep-test@1.1', {'optional-dep-test@1.1': {'b': None}}), + ('optional-dep-test%intel', {'optional-dep-test%intel': {'c': None}}), + ('optional-dep-test%intel@64.1', { + 'optional-dep-test%intel@64.1': { + 'c': None, + 'd': None + }}), + ('optional-dep-test%intel@64.1.2', { + 'optional-dep-test%intel@64.1.2': { + 'c': None, + 'd': None + }}), + ('optional-dep-test%clang@35', { + 'optional-dep-test%clang@35': { + 'e': None + }}), # Normalize multiple conditionals - ('optional-dep-test+a@1.1', Spec( - 'optional-dep-test+a@1.1', Spec('a'), Spec('b') - )), - ('optional-dep-test+a%intel', Spec( - 'optional-dep-test+a%intel', Spec('a'), Spec('c') - )), - ('optional-dep-test@1.1%intel', Spec( - 'optional-dep-test@1.1%intel', Spec('b'), Spec('c') - )), - ('optional-dep-test@1.1%intel@64.1.2+a', Spec( - 'optional-dep-test@1.1%intel@64.1.2+a', - Spec('b'), - Spec('a'), - Spec('c'), - Spec('d') - )), - ('optional-dep-test@1.1%clang@36.5+a', Spec( - 'optional-dep-test@1.1%clang@36.5+a', - Spec('b'), - Spec('a'), - Spec('e') - )), + ('optional-dep-test+a@1.1', { + 'optional-dep-test+a@1.1': { + 'a': None, + 'b': None + }}), + ('optional-dep-test+a%intel', { + 'optional-dep-test+a%intel': { + 'a': None, + 'c': None + }}), + ('optional-dep-test@1.1%intel', { + 'optional-dep-test@1.1%intel': { + 'b': None, + 'c': None + }}), + ('optional-dep-test@1.1%intel@64.1.2+a', { + 'optional-dep-test@1.1%intel@64.1.2+a': { + 'a': None, + 'b': None, + 'c': None, + 'd': None + }}), + ('optional-dep-test@1.1%clang@36.5+a', { + 'optional-dep-test@1.1%clang@36.5+a': { + 'b': None, + 'a': None, + 'e': None + }}), # Chained MPI - ('optional-dep-test-2+mpi', Spec( - 'optional-dep-test-2+mpi', - Spec('optional-dep-test+mpi', Spec('mpi')) - )), + ('optional-dep-test-2+mpi', { + 'optional-dep-test-2+mpi': { + 'optional-dep-test+mpi': {'mpi': None} + }}), # Each of these dependencies comes from a conditional # dependency on another. This requires iterating to evaluate # the whole chain. - ('optional-dep-test+f', Spec( - 'optional-dep-test+f', Spec('f'), Spec('g'), Spec('mpi') - )) + ('optional-dep-test+f', { + 'optional-dep-test+f': { + 'f': None, + 'g': None, + 'mpi': None + }}) ] ) def spec_and_expected(request): - """Parameters for te normalization test.""" - return request.param + """Parameters for the normalization test.""" + spec, d = request.param + return spec, Spec.from_literal(d) def test_normalize(spec_and_expected, config, builtin_mock): diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index c82365ad11a..0d04cb5b0c2 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -197,15 +197,19 @@ def test_normalize_a_lot(self): spec.normalize() spec.normalize() - def test_normalize_with_virtual_spec(self): - dag = Spec('mpileaks', - Spec('callpath', - Spec('dyninst', - Spec('libdwarf', - Spec('libelf')), - Spec('libelf')), - Spec('mpi')), - Spec('mpi')) + def test_normalize_with_virtual_spec(self, ): + dag = Spec.from_literal({ + 'mpileaks': { + 'callpath': { + 'dyninst': { + 'libdwarf': {'libelf': None}, + 'libelf': None + }, + 'mpi': None + }, + 'mpi': None + } + }) dag.normalize() # make sure nothing with the same name occurs twice @@ -219,14 +223,18 @@ def test_normalize_with_virtual_spec(self): assert counts[name] == 1 def test_dependents_and_dependencies_are_correct(self): - spec = Spec('mpileaks', - Spec('callpath', - Spec('dyninst', - Spec('libdwarf', - Spec('libelf')), - Spec('libelf')), - Spec('mpi')), - Spec('mpi')) + spec = Spec.from_literal({ + 'mpileaks': { + 'callpath': { + 'dyninst': { + 'libdwarf': {'libelf': None}, + 'libelf': None + }, + 'mpi': None + }, + 'mpi': None + } + }) check_links(spec) spec.normalize() @@ -274,21 +282,45 @@ def test_invalid_dep(self): def test_equal(self): # Different spec structures to test for equality - flat = Spec('mpileaks ^callpath ^libelf ^libdwarf') + flat = Spec.from_literal( + {'mpileaks ^callpath ^libelf ^libdwarf': None} + ) - flat_init = Spec( - 'mpileaks', Spec('callpath'), Spec('libdwarf'), Spec('libelf')) + flat_init = Spec.from_literal({ + 'mpileaks': { + 'callpath': None, + 'libdwarf': None, + 'libelf': None + } + }) - flip_flat = Spec( - 'mpileaks', Spec('libelf'), Spec('libdwarf'), Spec('callpath')) + flip_flat = Spec.from_literal({ + 'mpileaks': { + 'libelf': None, + 'libdwarf': None, + 'callpath': None + } + }) - dag = Spec('mpileaks', Spec('callpath', - Spec('libdwarf', - Spec('libelf')))) + dag = Spec.from_literal({ + 'mpileaks': { + 'callpath': { + 'libdwarf': { + 'libelf': None + } + } + } + }) - flip_dag = Spec('mpileaks', Spec('callpath', - Spec('libelf', - Spec('libdwarf')))) + flip_dag = Spec.from_literal({ + 'mpileaks': { + 'callpath': { + 'libelf': { + 'libdwarf': None + } + } + } + }) # All these are equal to each other with regular == specs = (flat, flat_init, flip_flat, dag, flip_dag) @@ -311,39 +343,52 @@ def test_equal(self): def test_normalize_mpileaks(self): # Spec parsed in from a string - spec = Spec('mpileaks ^mpich ^callpath ^dyninst ^libelf@1.8.11' - ' ^libdwarf') + spec = Spec.from_literal({ + 'mpileaks ^mpich ^callpath ^dyninst ^libelf@1.8.11 ^libdwarf': None + }) # What that spec should look like after parsing - expected_flat = Spec( - 'mpileaks', Spec('mpich'), Spec('callpath'), Spec('dyninst'), - Spec('libelf@1.8.11'), Spec('libdwarf')) + expected_flat = Spec.from_literal({ + 'mpileaks': { + 'mpich': None, + 'callpath': None, + 'dyninst': None, + 'libelf@1.8.11': None, + 'libdwarf': None + } + }) # What it should look like after normalization mpich = Spec('mpich') libelf = Spec('libelf@1.8.11') - expected_normalized = Spec( - 'mpileaks', - Spec('callpath', - Spec('dyninst', - Spec('libdwarf', - libelf), - libelf), - mpich), - mpich) + expected_normalized = Spec.from_literal({ + 'mpileaks': { + 'callpath': { + 'dyninst': { + 'libdwarf': {libelf: None}, + libelf: None + }, + mpich: None + }, + mpich: None + }, + }) # Similar to normalized spec, but now with copies of the same # libelf node. Normalization should result in a single unique # node for each package, so this is the wrong DAG. - non_unique_nodes = Spec( - 'mpileaks', - Spec('callpath', - Spec('dyninst', - Spec('libdwarf', - Spec('libelf@1.8.11')), - Spec('libelf@1.8.11')), - mpich), - Spec('mpich')) + non_unique_nodes = Spec.from_literal({ + 'mpileaks': { + 'callpath': { + 'dyninst': { + 'libdwarf': {'libelf@1.8.11': None}, + 'libelf@1.8.11': None + }, + mpich: None + }, + mpich: None + } + }, normal=False) # All specs here should be equal under regular equality specs = (spec, expected_flat, expected_normalized, non_unique_nodes) @@ -380,14 +425,18 @@ def test_normalize_with_virtual_package(self): spec = Spec('mpileaks ^mpi ^libelf@1.8.11 ^libdwarf') spec.normalize() - expected_normalized = Spec( - 'mpileaks', - Spec('callpath', - Spec('dyninst', - Spec('libdwarf', - Spec('libelf@1.8.11')), - Spec('libelf@1.8.11')), - Spec('mpi')), Spec('mpi')) + expected_normalized = Spec.from_literal({ + 'mpileaks': { + 'callpath': { + 'dyninst': { + 'libdwarf': {'libelf@1.8.11': None}, + 'libelf@1.8.11': None + }, + 'mpi': None + }, + 'mpi': None + } + }) assert str(spec) == str(expected_normalized) @@ -552,16 +601,18 @@ def test_hash_bits(self): def test_traversal_directions(self): """Make sure child and parent traversals of specs work.""" - # We'll use d for a diamond dependency - d = Spec('d') - - # Mock spec. - spec = Spec('a', - Spec('b', - Spec('c', d), - Spec('e')), - Spec('f', - Spec('g', d))) + # Mock spec - d is used for a diamond dependency + spec = Spec.from_literal({ + 'a': { + 'b': { + 'c': {'d': None}, + 'e': None + }, + 'f': { + 'g': {'d': None} + } + } + }) assert ( ['a', 'b', 'c', 'd', 'e', 'f', 'g'] == @@ -577,16 +628,18 @@ def test_traversal_directions(self): def test_edge_traversals(self): """Make sure child and parent traversals of specs work.""" - # We'll use d for a diamond dependency - d = Spec('d') - - # Mock spec. - spec = Spec('a', - Spec('b', - Spec('c', d), - Spec('e')), - Spec('f', - Spec('g', d))) + # Mock spec - d is used for a diamond dependency + spec = Spec.from_literal({ + 'a': { + 'b': { + 'c': {'d': None}, + 'e': None + }, + 'f': { + 'g': {'d': None} + } + } + }) assert ( ['a', 'b', 'c', 'd', 'e', 'f', 'g'] == @@ -610,12 +663,14 @@ def test_copy_dependencies(self): def test_construct_spec_with_deptypes(self): """Ensure that it is possible to construct a spec with explicit dependency types.""" - s = Spec('a', - Spec('b', - ['build'], Spec('c')), - Spec('d', - ['build', 'link'], Spec('e', - ['run'], Spec('f')))) + s = Spec.from_literal({ + 'a': { + 'b': {'c:build': None}, + 'd': { + 'e:build,link': {'f:run': None} + } + } + }) assert s['b']._dependencies['c'].deptypes == ('build',) assert s['d']._dependencies['e'].deptypes == ('build', 'link') @@ -653,12 +708,19 @@ def check_diamond_deptypes(self, spec): 'dt-diamond-bottom'].deptypes == ('build', 'link', 'run') def check_diamond_normalized_dag(self, spec): - bottom = Spec('dt-diamond-bottom') - dag = Spec('dt-diamond', - ['build', 'link'], Spec('dt-diamond-left', - ['build'], bottom), - ['build', 'link'], Spec('dt-diamond-right', - ['build', 'link', 'run'], bottom)) + + dag = Spec.from_literal({ + 'dt-diamond': { + 'dt-diamond-left:build,link': { + 'dt-diamond-bottom:build': None + }, + 'dt-diamond-right:build,link': { + 'dt-diamond-bottom:build,link,run': None + }, + + } + }) + assert spec.eq_dag(dag) def test_normalize_diamond_deptypes(self): @@ -788,3 +850,13 @@ def test_canonical_deptype(self): canonical_deptype(('foo', 'bar')) with pytest.raises(ValueError): canonical_deptype(('foo',)) + + def test_invalid_literal_spec(self): + + # Can't give type 'build' to a top-level spec + with pytest.raises(spack.spec.SpecParseError): + Spec.from_literal({'foo:build': None}) + + # Can't use more than one ':' separator + with pytest.raises(KeyError): + Spec.from_literal({'foo': {'bar:build:link': None}}) From 49a9d63be74e3e5ee4dc1b91aa4004b7f78953d3 Mon Sep 17 00:00:00 2001 From: sknigh Date: Wed, 23 Aug 2017 15:47:28 -0700 Subject: [PATCH 1564/2394] Added options to libfabrics (#5191) --- .../builtin/packages/libfabric/package.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/var/spack/repos/builtin/packages/libfabric/package.py b/var/spack/repos/builtin/packages/libfabric/package.py index 4128e8250a4..b90e2fa262b 100644 --- a/var/spack/repos/builtin/packages/libfabric/package.py +++ b/var/spack/repos/builtin/packages/libfabric/package.py @@ -33,3 +33,32 @@ class Libfabric(AutotoolsPackage): url = "https://github.com/ofiwg/libfabric/releases/download/v1.5.0/libfabric-1.5.0.tar.gz" version('1.5.0', 'fda3e9b31ebe184f5157288d059672d6') + + fabrics = ('psm', + 'psm2', + 'sockets', + 'verbs', + 'usnic', + 'mxm', + 'gni', + 'xpmem', + 'udp', + 'rxm', + 'rxd') + + variant( + 'fabrics', + default='sockets', + description='A list of enabled fabrics', + values=fabrics, + multi=True + ) + + def configure_args(self): + args = [] + + args.extend(['--enable-%s=%s' % + (f, 'yes' if 'fabrics=%s' % f in self.spec else 'no') + for f in self.fabrics]) + + return args From a48b5a627cb4fd18f7bd145e6bb944d5a315cfdb Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Thu, 24 Aug 2017 10:30:35 +0200 Subject: [PATCH 1565/2394] Make jpeg a virtual dependency. (#5190) * Make jpeg a virtual dependency. * Make 'libjpeg-turbo' the default implementation of 'jpeg'. --- etc/spack/defaults/packages.yaml | 1 + .../builtin/packages/isaac-server/jpeg.patch | 34 +++++++++++++++++++ .../builtin/packages/isaac-server/package.py | 5 ++- .../repos/builtin/packages/isaac/package.py | 2 +- .../repos/builtin/packages/jasper/package.py | 2 +- .../builtin/packages/libjpeg-turbo/package.py | 2 ++ .../packages/{jpeg => libjpeg}/package.py | 4 ++- .../repos/builtin/packages/libtiff/package.py | 5 +-- .../repos/builtin/packages/opencv/package.py | 6 ++-- 9 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 var/spack/repos/builtin/packages/isaac-server/jpeg.patch rename var/spack/repos/builtin/packages/{jpeg => libjpeg}/package.py (96%) diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index fc255997493..2cfdd399dfc 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -34,3 +34,4 @@ packages: scalapack: [netlib-scalapack] szip: [libszip, libaec] tbb: [intel-tbb] + jpeg: [libjpeg-turbo, libjpeg] diff --git a/var/spack/repos/builtin/packages/isaac-server/jpeg.patch b/var/spack/repos/builtin/packages/isaac-server/jpeg.patch new file mode 100644 index 00000000000..ee0a74e7694 --- /dev/null +++ b/var/spack/repos/builtin/packages/isaac-server/jpeg.patch @@ -0,0 +1,34 @@ +diff --git a/server/src/Broker.cpp b/server/src/Broker.cpp +index 03d60f4..aab449f 100644 +--- a/server/src/Broker.cpp ++++ b/server/src/Broker.cpp +@@ -108,14 +108,14 @@ MetaDataClient* Broker::addDataClient() + } + boolean isaac_jpeg_fill_input_buffer(j_decompress_ptr cinfo) + { +- return true; ++ return TRUE; + } + void isaac_jpeg_skip_input_data(j_decompress_ptr cinfo,long num_bytes) + { + } + boolean isaac_jpeg_resync_to_restart(j_decompress_ptr cinfo, int desired) + { +- return true; ++ return TRUE; + } + void isaac_jpeg_term_source(j_decompress_ptr cinfo) + { +diff --git a/server/src/URIImageConnector.cpp b/server/src/URIImageConnector.cpp +index 0b11800..e843aa4 100644 +--- a/server/src/URIImageConnector.cpp ++++ b/server/src/URIImageConnector.cpp +@@ -40,7 +40,7 @@ void isaac_init_destination(j_compress_ptr cinfo) + } + boolean isaac_jpeg_empty_output_buffer(j_compress_ptr cinfo) + { +- return true; ++ return TRUE; + } + void isaac_jpeg_term_destination(j_compress_ptr cinfo) + { diff --git a/var/spack/repos/builtin/packages/isaac-server/package.py b/var/spack/repos/builtin/packages/isaac-server/package.py index baa79cf6733..38d96c406e4 100644 --- a/var/spack/repos/builtin/packages/isaac-server/package.py +++ b/var/spack/repos/builtin/packages/isaac-server/package.py @@ -42,10 +42,13 @@ class IsaacServer(CMakePackage): # 'Support for RTP streams, e.g. to Twitch or Youtube') depends_on('cmake@3.3:', type='build') - depends_on('libjpeg-turbo', type='link') + depends_on('jpeg', type='link') depends_on('jansson', type='link') depends_on('boost@1.56:', type='link') depends_on('libwebsockets@2.1.1:', type='link') # depends_on('gstreamer@1.0', when='+gstreamer') + # Until the pull request is merged: https://github.com/ComputationalRadiationPhysics/isaac/pull/70 + patch('jpeg.patch') + root_cmakelists_dir = 'server' diff --git a/var/spack/repos/builtin/packages/isaac/package.py b/var/spack/repos/builtin/packages/isaac/package.py index a06a782e468..77069e47f42 100644 --- a/var/spack/repos/builtin/packages/isaac/package.py +++ b/var/spack/repos/builtin/packages/isaac/package.py @@ -44,7 +44,7 @@ class Isaac(CMakePackage): # description='Generate kernels via Alpaka, for CPUs or GPUs') depends_on('cmake@3.3:', type='build') - depends_on('libjpeg-turbo', type='link') + depends_on('jpeg', type='link') depends_on('jansson', type='link') depends_on('boost@1.56:', type='link') depends_on('cuda@7.0:', type='link', when='+cuda') diff --git a/var/spack/repos/builtin/packages/jasper/package.py b/var/spack/repos/builtin/packages/jasper/package.py index ed188ca9227..bf7bf91995d 100644 --- a/var/spack/repos/builtin/packages/jasper/package.py +++ b/var/spack/repos/builtin/packages/jasper/package.py @@ -38,7 +38,7 @@ class Jasper(AutotoolsPackage): variant('debug', default=False, description='Builds debug versions of the libraries') - depends_on('libjpeg-turbo') + depends_on('jpeg') # Fixes a bug (still in upstream as of v.1.900.1) where an assertion fails # when certain JPEG-2000 files with an alpha channel are processed diff --git a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py index 3573390b7d9..e0eca52a415 100644 --- a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py +++ b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py @@ -37,6 +37,8 @@ class LibjpegTurbo(AutotoolsPackage): version('1.5.0', '3fc5d9b6a8bce96161659ae7a9939257') version('1.3.1', '2c3a68129dac443a72815ff5bb374b05') + provides('jpeg') + # Can use either of these. But in the current version of the package # only nasm is used. In order to use yasm an environmental variable # NASM must be set. diff --git a/var/spack/repos/builtin/packages/jpeg/package.py b/var/spack/repos/builtin/packages/libjpeg/package.py similarity index 96% rename from var/spack/repos/builtin/packages/jpeg/package.py rename to var/spack/repos/builtin/packages/libjpeg/package.py index babb6e5f82d..9829b305476 100644 --- a/var/spack/repos/builtin/packages/jpeg/package.py +++ b/var/spack/repos/builtin/packages/libjpeg/package.py @@ -25,7 +25,7 @@ from spack import * -class Jpeg(AutotoolsPackage): +class Libjpeg(AutotoolsPackage): """libjpeg is a widely used free library with functions for handling the JPEG image data format. It implements a JPEG codec (encoding and decoding) alongside various utilities for handling JPEG data.""" @@ -35,3 +35,5 @@ class Jpeg(AutotoolsPackage): version('9b', '6a9996ce116ec5c52b4870dbcd6d3ddb') version('9a', '3353992aecaee1805ef4109aadd433e7') + + provides('jpeg') diff --git a/var/spack/repos/builtin/packages/libtiff/package.py b/var/spack/repos/builtin/packages/libtiff/package.py index 29db7b42d3d..2fcccad7398 100644 --- a/var/spack/repos/builtin/packages/libtiff/package.py +++ b/var/spack/repos/builtin/packages/libtiff/package.py @@ -35,9 +35,6 @@ class Libtiff(AutotoolsPackage): version('4.0.6', 'd1d2e940dea0b5ad435f21f03d96dd72') version('4.0.3', '051c1068e6a0627f461948c365290410') - variant('turbo', default=False, description='use libjpeg-turbo') - - depends_on('jpeg', when='-turbo') - depends_on('libjpeg-turbo', when='+turbo') + depends_on('jpeg') depends_on('zlib') depends_on('xz') diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index 034fe54cc9f..5587a893dc2 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -80,8 +80,8 @@ class Opencv(CMakePackage): depends_on('zlib', when='+zlib') depends_on('libpng', when='+png') - depends_on('libjpeg-turbo', when='+jpeg') - depends_on('libtiff+turbo', when='+tiff') + depends_on('jpeg', when='+jpeg') + depends_on('libtiff', when='+tiff') depends_on('jasper', when='+jasper') depends_on('cuda', when='+cuda') @@ -150,7 +150,7 @@ def cmake_args(self): ]) if '+jpeg' in spec: - libjpeg = spec['libjpeg-turbo'] + libjpeg = spec['jpeg'] args.extend([ '-DBUILD_JPEG:BOOL=OFF', '-DJPEG_LIBRARY:FILEPATH={0}'.format( From f564b2abf75ae01ea95b6995de517c91fb0462b7 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 24 Aug 2017 08:47:22 -0400 Subject: [PATCH 1566/2394] gpg: add an argument for the import directory This is hidden because it is only meant for use by the tests. --- lib/spack/spack/cmd/gpg.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/cmd/gpg.py b/lib/spack/spack/cmd/gpg.py index 1f460338133..3ec6094cac6 100644 --- a/lib/spack/spack/cmd/gpg.py +++ b/lib/spack/spack/cmd/gpg.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack.util.gpg import Gpg +import argparse import spack import os @@ -87,8 +88,9 @@ def setup_parser(subparser): list.set_defaults(func=gpg_list) init = subparsers.add_parser('init') + init.add_argument('--from', metavar='DIR', type=str, + dest='import_dir', help=argparse.SUPPRESS) init.set_defaults(func=gpg_init) - init.set_defaults(import_dir=spack.gpg_keys_path) export = subparsers.add_parser('export') export.add_argument('location', type=str, @@ -144,7 +146,11 @@ def gpg_trust(args): def gpg_init(args): - for root, _, filenames in os.walk(args.import_dir): + import_dir = args.import_dir + if import_dir is None: + import_dir = spack.gpg_keys_path + + for root, _, filenames in os.walk(import_dir): for filename in filenames: if not filename.endswith('.key'): continue From 0e7071befe0943e55ee585e3998bd0c262d5a233 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 24 Aug 2017 08:47:52 -0400 Subject: [PATCH 1567/2394] test/gpg: init from the testing key directory The old testing pattern set an attribute on the parser directly. Now that there is a parsed flag, use it instead. --- lib/spack/spack/test/cmd/gpg.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/lib/spack/spack/test/cmd/gpg.py b/lib/spack/spack/test/cmd/gpg.py index 97f7accd601..111436f24fe 100644 --- a/lib/spack/spack/test/cmd/gpg.py +++ b/lib/spack/spack/test/cmd/gpg.py @@ -39,14 +39,6 @@ def testing_gpg_directory(tmpdir): gpg_util.GNUPGHOME = old_gpg_path -@pytest.fixture(scope='function') -def mock_gpg_config(): - orig_gpg_keys_path = spack.gpg_keys_path - spack.gpg_keys_path = spack.mock_gpg_keys_path - yield - spack.gpg_keys_path = orig_gpg_keys_path - - @pytest.fixture(scope='function') def gpg(): return SpackCommand('gpg') @@ -60,16 +52,15 @@ def has_gnupg2(): return False -@pytest.mark.xfail # TODO: fix failing tests. @pytest.mark.skipif(not has_gnupg2(), reason='These tests require gnupg2') -def test_gpg(gpg, tmpdir, testing_gpg_directory, mock_gpg_config): +def test_gpg(gpg, tmpdir, testing_gpg_directory): # Verify a file with an empty keyring. with pytest.raises(ProcessError): gpg('verify', os.path.join(spack.mock_gpg_data_path, 'content.txt')) # Import the default key. - gpg('init') + gpg('init', '--from', spack.mock_gpg_keys_path) # List the keys. # TODO: Test the output here. From 6ff82ff5a3d072e811c446f6ee452625c11c8fe3 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 24 Aug 2017 18:31:21 -0500 Subject: [PATCH 1568/2394] ray: new package (#5200) --- .../repos/builtin/packages/ray/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ray/package.py diff --git a/var/spack/repos/builtin/packages/ray/package.py b/var/spack/repos/builtin/packages/ray/package.py new file mode 100644 index 00000000000..7056b594546 --- /dev/null +++ b/var/spack/repos/builtin/packages/ray/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Ray(CMakePackage): + """Parallel genome assemblies for parallel DNA sequencing""" + + homepage = "http://denovoassembler.sourceforge.net/" + url = "https://downloads.sourceforge.net/project/denovoassembler/Ray-2.3.1.tar.bz2" + + version('2.3.1', '82f693c4db60af4328263c9279701009') + + depends_on('mpi') + + @run_after('build') + def make(self): + mkdirp(prefix.bin) + make('PREFIX=%s' % prefix.bin) + + def install(self, spec, prefix): + make('install') From 61cc55985b62ca22a929cf1c7361b12c2e14844e Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Fri, 25 Aug 2017 02:54:14 +0200 Subject: [PATCH 1569/2394] pkgconf: New package (#5202) pkgconf is a new pkg-config implementation with additional features and no external dependencies. For a detailed comparison, see: http://pkgconf.org/features.html --- .../repos/builtin/packages/pkgconf/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/pkgconf/package.py diff --git a/var/spack/repos/builtin/packages/pkgconf/package.py b/var/spack/repos/builtin/packages/pkgconf/package.py new file mode 100644 index 00000000000..f74cbd001ac --- /dev/null +++ b/var/spack/repos/builtin/packages/pkgconf/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Pkgconf(AutotoolsPackage): + """pkgconf is a program which helps to configure compiler and linker + flags for development frameworks. It is similar to pkg-config from + freedesktop.org, providing additional functionality while also + maintaining compatibility.""" + + homepage = "http://pkgconf.org/" + url = "https://distfiles.dereferenced.org/pkgconf/pkgconf-1.3.8.tar.xz" + + version('1.3.8', '484ba3360d983ce07416843d5bc916a8') + + @run_after('install') + def link_pkg_config(self): + symlink('pkgconf', '{0}/pkg-config'.format(self.prefix.bin)) + symlink('pkgconf.1', + '{0}/pkg-config.1'.format(self.prefix.share.man.man1)) From c0d3d33b58eb14e3da2980db43db98b0cbd3e967 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 25 Aug 2017 03:18:06 +0200 Subject: [PATCH 1570/2394] dealii: add nanoflann, sundials and adol-c plus fixes on macOS (#5175) * expat: fix build on macOS * nanoflann: add new package * sundials: fix compilation on macOS with clang+gfortran * adol-c: add 2.6.3 * dealii: add adol-c, nanoflann, sundials and 8.5.1 * sundials: minor cleanup --- .../repos/builtin/packages/adol-c/package.py | 1 + .../repos/builtin/packages/dealii/package.py | 26 ++++++++++++- .../repos/builtin/packages/expat/package.py | 3 +- .../builtin/packages/nanoflann/package.py | 39 +++++++++++++++++++ .../builtin/packages/sundials/package.py | 10 ++++- 5 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin/packages/nanoflann/package.py diff --git a/var/spack/repos/builtin/packages/adol-c/package.py b/var/spack/repos/builtin/packages/adol-c/package.py index 5de1a31b878..1f9850b4c8d 100644 --- a/var/spack/repos/builtin/packages/adol-c/package.py +++ b/var/spack/repos/builtin/packages/adol-c/package.py @@ -34,6 +34,7 @@ class AdolC(AutotoolsPackage): version('develop', git='https://gitlab.com/adol-c/adol-c.git', branch='master') + version('2.6.3', 'f78f67f70d5874830a1ad1c0f54e54f7') version('2.6.2', '0f9547584c99c0673e4f81cf64e8d865') version('2.6.1', '1032b28427d6e399af4610e78c0f087b') diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index aa6a2be0b48..ab957833596 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -36,6 +36,7 @@ class Dealii(CMakePackage): # only add for immediate deps. transitive_rpaths = False + version('8.5.1', '39b9ebd6ab083d63cfc9044319aaa2ee') version('8.5.0', 'ef999cc310b007559a6343bf5b1759bc') version('8.4.2', '84c6bd3f250d3e0681b645d24cb987a7') version('8.4.1', 'efbaf16f9ad59cfccad62302f36c3c1d') @@ -48,12 +49,15 @@ class Dealii(CMakePackage): variant('mpi', default=True, description='Compile with MPI') variant('arpack', default=True, description='Compile with Arpack and PArpack (only with MPI)') + variant('adol-c', default=False, + description='Compile with Adol-c') variant('doc', default=False, description='Compile with documentation') variant('gsl', default=True, description='Compile with GSL') variant('hdf5', default=True, description='Compile with HDF5 (only with MPI)') variant('metis', default=True, description='Compile with Metis') + variant('nanoflann', default=False, description='Compile with Nanoflann') variant('netcdf', default=True, description='Compile with Netcdf (only with MPI)') variant('oce', default=True, description='Compile with OCE') @@ -61,6 +65,8 @@ class Dealii(CMakePackage): description='Compile with P4est (only with MPI)') variant('petsc', default=True, description='Compile with Petsc (only with MPI)') + variant('sundials', default=False, + description='Compile with Sundials') variant('slepc', default=True, description='Compile with Slepc (only with Petsc and MPI)') variant('trilinos', default=True, @@ -109,6 +115,7 @@ class Dealii(CMakePackage): # optional dependencies depends_on("mpi", when="+mpi") + depends_on("adol-c@2.6.4:", when='@9.0:+adol-c') depends_on("arpack-ng+mpi", when='+arpack+mpi') depends_on("doxygen+graphviz", when='+doc') depends_on("graphviz", when='+doc') @@ -118,6 +125,7 @@ class Dealii(CMakePackage): # but we should not need it depends_on("metis@5:+int64+real64", when='+metis+int64') depends_on("metis@5:~int64+real64", when='+metis~int64') + depends_on("nanoflann", when="@9.0:+nanoflann") depends_on("netcdf+mpi", when="+netcdf+mpi") depends_on("netcdf-cxx", when='+netcdf+mpi') depends_on("oce", when='+oce') @@ -129,10 +137,14 @@ class Dealii(CMakePackage): depends_on("slepc", when='+slepc+petsc+mpi') depends_on("slepc@:3.6.3", when='@:8.4.1+slepc+petsc+mpi') depends_on("slepc~arpack", when='+slepc+petsc+mpi+int64') + depends_on("sundials", when='@9.0:+sundials') depends_on("trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado+teuchos", when='+trilinos+mpi~int64') depends_on("trilinos+amesos+aztec+epetra+ifpack+ml+muelu+sacado+teuchos~hypre", when="+trilinos+mpi+int64") # check that the combination of variants makes sense + conflicts('+nanoflann', when='@:8.5.1') + conflicts('+sundials', when='@:8.5.1') + conflicts('+adol-c', when='@:8.5.1') conflicts('+gsl', when='@:8.4.2') conflicts('+python', when='@:8.4.2') for p in ['+arpack', '+hdf5', '+netcdf', '+p4est', '+petsc', @@ -211,7 +223,8 @@ def cmake_args(self): # Optional dependencies for which library names are the same as CMake # variables: for library in ( - 'gsl', 'hdf5', 'p4est', 'petsc', 'slepc', 'trilinos', 'metis'): + 'gsl', 'hdf5', 'p4est', 'petsc', 'slepc', 'trilinos', 'metis', + 'sundials', 'nanoflann'): if library in spec: options.extend([ '-D%s_DIR=%s' % (library.upper(), spec[library].prefix), @@ -222,6 +235,17 @@ def cmake_args(self): '-DDEAL_II_WITH_%s:BOOL=OFF' % library.upper() ]) + # adol-c + if '+adol-c' in spec: + options.extend([ + '-DADOLC_DIR=%s' % spec['adol-c'].prefix, + '-DDEAL_II_WITH_ADOLC=ON' + ]) + else: + options.extend([ + '-DDEAL_II_WITH_ADOLC=OFF' + ]) + # doxygen options.extend([ '-DDEAL_II_COMPONENT_DOCUMENTATION=%s' % diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index 091c1f462e7..68e8ed4c08a 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys class Expat(AutotoolsPackage): @@ -39,7 +40,7 @@ class Expat(AutotoolsPackage): # someone's asking for an older version and also libbsd. # In order to install an older version, you'll need to add # `~libbsd`. - variant('libbsd', default=True, + variant('libbsd', default=sys.platform != 'darwin', description="Use libbsd (for high quality randomness)") depends_on('libbsd', when="@2.2.1:+libbsd") diff --git a/var/spack/repos/builtin/packages/nanoflann/package.py b/var/spack/repos/builtin/packages/nanoflann/package.py new file mode 100644 index 00000000000..da0ec728b0d --- /dev/null +++ b/var/spack/repos/builtin/packages/nanoflann/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Nanoflann(CMakePackage): + """a C++ header-only library for Nearest Neighbor (NN) search wih KD-trees. + """ + + homepage = "https://github.com/jlblancoc/nanoflann" + url = "https://github.com/jlblancoc/nanoflann/archive/v1.2.3.tar.gz" + + version('1.2.3', '92a0f44a631c41aa06f9716c51dcdb11') + + def cmake_args(self): + args = ['-DBUILD_SHARED_LIBS=ON'] + return args diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index 66f385f29fd..b0ad1c1f42f 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -68,10 +68,18 @@ def on_off(varstr): return 'ON' if varstr in self.spec else 'OFF' cmake_args = std_cmake_args[:] + + fortran_flag = self.compiler.pic_flag + if spec.satisfies('%clang platform=darwin'): + mpif77 = Executable(self.spec['mpi'].mpif77) + libgfortran = LibraryList(mpif77('--print-file-name', + 'libgfortran.a', output=str)) + fortran_flag += ' ' + libgfortran.ld_flags + cmake_args.extend([ '-DBUILD_SHARED_LIBS=ON', '-DCMAKE_C_FLAGS={0}'.format(self.compiler.pic_flag), - '-DCMAKE_Fortran_FLAGS={0}'.format(self.compiler.pic_flag), + '-DCMAKE_Fortran_FLAGS={0}'.format(fortran_flag), '-DEXAMPLES_ENABLE=ON', '-DEXAMPLES_INSTALL=ON', '-DFCMIX_ENABLE=ON', From fda3249c8bb04c3f2ac87d95a4bb322b3c55ce20 Mon Sep 17 00:00:00 2001 From: Sergey Kosukhin Date: Fri, 25 Aug 2017 11:15:46 +0200 Subject: [PATCH 1571/2394] Respect --insecure (-k) flag when fetching list_url. (#5178) * Respect --insecure when fetching list_url. * Ensure support for Python 2.6, and that urlopen works for python versions prior 2.7.9 and between 3.0 and 3.4.3. --- lib/spack/spack/util/web.py | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index e7e6f80ec8a..3fd38c22cfc 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -24,6 +24,7 @@ ############################################################################## import re import os +import ssl import sys import traceback @@ -105,6 +106,20 @@ def _spider(url, visited, root, depth, max_depth, raise_on_error): root = re.sub('/index.html$', '', root) try: + context = None + if sys.version_info < (2, 7, 9) or \ + ((3,) < sys.version_info < (3, 4, 3)): + if not spack.insecure: + tty.warn("Spack will not check SSL certificates. You need to " + "update your Python to enable certificate " + "verification.") + else: + # We explicitly create default context to avoid error described in + # https://blog.sucuri.net/2016/03/beware-unverified-tls-certificates-php-python.html + context = ssl._create_unverified_context() \ + if spack.insecure \ + else ssl.create_default_context() + # Make a HEAD request first to check the content type. This lets # us ignore tarballs and gigantic files. # It would be nice to do this with the HTTP Accept header to avoid @@ -112,7 +127,7 @@ def _spider(url, visited, root, depth, max_depth, raise_on_error): # if you ask for a tarball with Accept: text/html. req = Request(url) req.get_method = lambda: "HEAD" - resp = urlopen(req, timeout=TIMEOUT) + resp = _urlopen(req, timeout=TIMEOUT, context=context) if "Content-type" not in resp.headers: tty.debug("ignoring page " + url) @@ -125,7 +140,7 @@ def _spider(url, visited, root, depth, max_depth, raise_on_error): # Do the real GET request when we know it's just HTML. req.get_method = lambda: "GET" - response = urlopen(req, timeout=TIMEOUT) + response = _urlopen(req, timeout=TIMEOUT, context=context) response_url = response.geturl() # Read the page and and stick it in the map we'll return @@ -176,6 +191,13 @@ def _spider(url, visited, root, depth, max_depth, raise_on_error): except URLError as e: tty.debug(e) + + if isinstance(e.reason, ssl.SSLError): + tty.warn("Spack was unable to fetch url list due to a certificate " + "verification problem. You can try running spack -k, " + "which will not check SSL certificates. Use this at your " + "own risk.") + if raise_on_error: raise spack.error.NoNetworkConnectionError(str(e), url) @@ -202,8 +224,16 @@ def _spider_wrapper(args): return _spider(*args) -def spider(root_url, depth=0): +def _urlopen(*args, **kwargs): + """Wrapper for compatibility with old versions of Python.""" + # We don't pass 'context' parameter to urlopen because it + # was introduces only starting versions 2.7.9 and 3.4.3 of Python. + if 'context' in kwargs and kwargs['context'] is None: + del kwargs['context'] + return urlopen(*args, **kwargs) + +def spider(root_url, depth=0): """Gets web pages from a root URL. If depth is specified (e.g., depth=2), then this will also follow From a0f39397c1efe1d94bbac6fb8a52f8a8113338cb Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Fri, 25 Aug 2017 02:57:44 -0700 Subject: [PATCH 1572/2394] Add contributors link to Sphinx docs (#5213) --- lib/spack/docs/_themes/sphinx_rtd_theme/footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/docs/_themes/sphinx_rtd_theme/footer.html b/lib/spack/docs/_themes/sphinx_rtd_theme/footer.html index d000dcbc2ca..c4f11f3f8d6 100644 --- a/lib/spack/docs/_themes/sphinx_rtd_theme/footer.html +++ b/lib/spack/docs/_themes/sphinx_rtd_theme/footer.html @@ -24,7 +24,7 @@
    Written by Todd Gamblin (tgamblin@llnl.gov) and - many contributors. LLNL-CODE-647188. + many contributors. LLNL-CODE-647188. {%- if last_updated %}
    From 313771c73492882044ee47678d74193e895a9290 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Fri, 25 Aug 2017 04:07:42 -0700 Subject: [PATCH 1573/2394] Improve grammar in build log error message. (#5214) - "1 error found" instead of "1 errors found" - don't print any build log context if no errors were found; just refer the user to the build log. --- lib/spack/spack/build_environment.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 896cbe879bb..7bef1d37892 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -739,8 +739,13 @@ def long_message(self): # the build log with errors highlighted. if self.build_log: events = parse_log_events(self.build_log) - out.write("\n%d errors in build log:\n" % len(events)) - out.write(make_log_context(events)) + nerr = len(events) + if nerr > 0: + if nerr == 1: + out.write("\n1 error found in build log:\n") + else: + out.write("\n%d errors found in build log:\n" % nerr) + out.write(make_log_context(events)) else: # The error happened in in the Python code, so try to show From 9a1fd166aa29e014f24e7b590e24713f19c314fe Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Fri, 25 Aug 2017 10:55:41 -0700 Subject: [PATCH 1574/2394] patch config.guess for any ppc64le arch (#5215) --- lib/spack/spack/build_systems/autotools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index 230e12e1f85..e11127e4ed1 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -103,7 +103,7 @@ def _do_patch_config_guess(self): build date (automake 1.13.4).""" if not self.patch_config_guess or not self.spec.satisfies( - 'arch=linux-rhel7-ppc64le' + 'target=ppc64le' ): return my_config_guess = None From 499617897bc73f4a4d0c0ca211d34adeaaae1bca Mon Sep 17 00:00:00 2001 From: scheibelp Date: Fri, 25 Aug 2017 11:02:36 -0700 Subject: [PATCH 1575/2394] Link extra_rpaths from compilers.yaml at build time (#5211) --- lib/spack/env/cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/spack/env/cc b/lib/spack/env/cc index afec3eefaae..e63c3713189 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -328,8 +328,10 @@ IFS=':' read -ra extra_rpaths <<< "$SPACK_COMPILER_EXTRA_RPATHS" for extra_rpath in "${extra_rpaths[@]}"; do if [[ $mode == ccld ]]; then $add_rpaths && args=("$rpath$extra_rpath" "${args[@]}") + args=("-L$extra_rpath" "${args[@]}") elif [[ $mode == ld ]]; then $add_rpaths && args=("-rpath" "$extra_rpath" "${args[@]}") + args=("-L$extra_rpath" "${args[@]}") fi done From c769e99eda84921c3cfa9bb95e60bfc20eb655da Mon Sep 17 00:00:00 2001 From: "Mark C. Miller" Date: Fri, 25 Aug 2017 15:08:49 -0700 Subject: [PATCH 1576/2394] Zfp shared libs (#5212) --- .../repos/builtin/packages/zfp/package.py | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/var/spack/repos/builtin/packages/zfp/package.py b/var/spack/repos/builtin/packages/zfp/package.py index b51426347f6..b5e3c7c2bcb 100644 --- a/var/spack/repos/builtin/packages/zfp/package.py +++ b/var/spack/repos/builtin/packages/zfp/package.py @@ -35,8 +35,8 @@ class Zfp(MakefilePackage): of zfp 0.5.1 or newer also support compression of integer data. """ - homepage = "http://computation.llnl.gov/projects/floating-point-compression" - url = "http://computation.llnl.gov/projects/floating-point-compression/download/zfp-0.5.1.tar.gz" + homepage = 'http://computation.llnl.gov/projects/floating-point-compression' + url = 'http://computation.llnl.gov/projects/floating-point-compression/download/zfp-0.5.1.tar.gz' version('0.5.1', '0ed7059a9b480635e0dd33745e213d17') version('0.5.0', '2ab29a852e65ad85aae38925c5003654') @@ -45,8 +45,11 @@ class Zfp(MakefilePackage): default='64', values=('8', '16', '32', '64'), multi=False, - description='Bit stream word size: use smaller for finer \ - rate granularity. Use 8 for H5Z-ZFP filter.') + description='Bit stream word size: use smaller for finer ' \ + 'rate granularity. Use 8 for H5Z-ZFP filter.') + + variant('shared', default=True, + description='Build shared versions of the library') def edit(self, spec, prefix): config_file = FileFilter('Config') @@ -56,15 +59,23 @@ def edit(self, spec, prefix): spec.variants['bsws'].value) def build(self, spec, prefix): - make("shared") + with working_dir('src'): + if '~shared' in spec: + make('static') + else: + make('shared') def install(self, spec, prefix): incdir = 'include' if spec.satisfies('@0.5.1:') else 'inc' - # No install provided + # Note: ZFP package does not provide an install target mkdirp(prefix.lib) mkdirp(prefix.include) - install('lib/libzfp.so', prefix.lib) + # Note: ZFP package builds .so files even on OSX + if '~shared' in spec: + install('lib/libzfp.a', prefix.lib) + else: + install('lib/libzfp.so', prefix.lib) install('%s/zfp.h' % incdir, prefix.include) install('%s/bitstream.h' % incdir, prefix.include) if spec.satisfies('@0.5.1:'): From b94711a54ffb86822d77af5c904904b9625f4504 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 26 Aug 2017 02:30:40 +0200 Subject: [PATCH 1577/2394] Improve Ubuntu arch detection (#2649) Ubuntu uses a YY.{04,10} release scheme, where YY.04 is not necessarily binary-compatible with YY.10. --- lib/spack/spack/operating_systems/linux_distro.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/operating_systems/linux_distro.py b/lib/spack/spack/operating_systems/linux_distro.py index 0e97317b1b2..276235d18b5 100644 --- a/lib/spack/spack/operating_systems/linux_distro.py +++ b/lib/spack/spack/operating_systems/linux_distro.py @@ -48,6 +48,11 @@ def __init__(self): # grab the first legal identifier in the version field. On # debian you get things like 'wheezy/sid'; sid means unstable. # We just record 'wheezy' and don't get quite so detailed. - version = re.split(r'[^\w-]', version)[0] + version = re.split(r'[^\w-]', version) + + if 'ubuntu' in distname: + version = '.'.join(version[0:2]) + else: + version = version[0] super(LinuxDistro, self).__init__(distname, version) From 92df1492f6e52d6582cdb6168f37aa95d02b04ce Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 26 Aug 2017 03:29:02 +0200 Subject: [PATCH 1578/2394] go: Update to 1.9 (#5216) --- var/spack/repos/builtin/packages/go/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 58ee08c6c5e..77f6470693b 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -56,6 +56,7 @@ class Go(Package): extendable = True + version('1.9', 'da2d44ea384076efec43ee1f8b7d45d2') version('1.8.3', '64e9380e07bba907e26a00cf5fcbe77e') version('1.8.1', '409dd21e7347dd1ea9efe64a700073cc') version('1.8', '7743960c968760437b6e39093cfe6f67') From 91143e9db4ee82c24bfbd1582e3ab9ff6a78f8d3 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Sat, 26 Aug 2017 05:38:56 +0200 Subject: [PATCH 1579/2394] Fix copyright years in spack create template (#5203) --- lib/spack/spack/cmd/create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index fd1e5f9fd21..e68b20a6acf 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -46,7 +46,7 @@ package_template = '''\ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. From 005b22aa8b8a68a5d0afe3fc3d06f8e1d85b35da Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 26 Aug 2017 05:40:37 +0200 Subject: [PATCH 1580/2394] Removed default value for 'dirty' function argument. (#5109) This change is done to avoid inconsistencies during refactoring. The rationale is that functions at different levels in the call stack all define a default for the 'dirty' argument. This PR removes the default value for all the functions except the top-level one (`PackageBase.do_install`). In this way not defining 'dirty' will result in an error, instead of the default value being used. This will reduce the risk of having an inconsistent behavior after a refactoring. --- lib/spack/spack/build_environment.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 7bef1d37892..a27d8c68ab8 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -178,7 +178,7 @@ def set_compiler_environment_variables(pkg, env): return env -def set_build_environment_variables(pkg, env, dirty=False): +def set_build_environment_variables(pkg, env, dirty): """Ensure a clean install environment when we build packages. This involves unsetting pesky environment variables that may @@ -450,7 +450,7 @@ def load_external_modules(pkg): load_module(dep.external_module) -def setup_package(pkg, dirty=False): +def setup_package(pkg, dirty): """Execute all environment setup routines.""" spack_env = EnvironmentModifications() run_env = EnvironmentModifications() @@ -516,7 +516,7 @@ def setup_package(pkg, dirty=False): spack_env.apply_modifications() -def fork(pkg, function, dirty=False): +def fork(pkg, function, dirty): """Fork a child process to do part of a spack build. Args: From c94933343a9459503dc95628a4c0bd09fdcb60ac Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Mon, 28 Aug 2017 12:35:46 -0500 Subject: [PATCH 1581/2394] Add --show-full-compiler option to 'spack find' When 'spack find' is invoked with the '--show-full-compiler' option, the compiler flags and version are shown for each spec that is found. --- lib/spack/spack/cmd/__init__.py | 10 ++++++++-- lib/spack/spack/cmd/find.py | 4 ++++ share/spack/spack-completion.bash | 6 +++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index 5e4564b1e86..f432fbf5851 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -211,6 +211,7 @@ def get_arg(name, default=None): hashes = get_arg('long', False) namespace = get_arg('namespace', False) flags = get_arg('show_flags', False) + full_compiler = get_arg('show_full_compiler', False) variants = get_arg('variants', False) hlen = 7 @@ -219,7 +220,12 @@ def get_arg(name, default=None): hlen = None nfmt = '.' if namespace else '_' - ffmt = '$%+' if flags else '' + ffmt = '' + if full_compiler or flags: + ffmt += '$%' + if full_compiler: + ffmt += '@' + ffmt += '+' vfmt = '$+' if variants else '' format_string = '$%s$@%s%s' % (nfmt, ffmt, vfmt) @@ -259,7 +265,7 @@ def get_arg(name, default=None): elif mode == 'short': # Print columns of output if not printing flags - if not flags: + if not flags and not full_compiler: def fmt(s): string = "" diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index bb8e2e5bcf2..02ff10f4254 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -60,6 +60,10 @@ def setup_parser(subparser): action='store_true', dest='show_flags', help='show spec compiler flags') + subparser.add_argument('--show-full-compiler', + action='store_true', + dest='show_full_compiler', + help='show full compiler specs') implicit_explicit = subparser.add_mutually_exclusive_group() implicit_explicit.add_argument( '-e', '--explicit', diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 05ae403eb51..4eb1c1c0387 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -407,9 +407,9 @@ function _spack_find { if $list_options then compgen -W "-h --help -s --short -p --paths -d --deps -l --long - -L --very-long -f --show-flags -e --explicit - -E --implicit -u --unknown -m --missing -v --variants - -M --only-missing -N --namespace" -- "$cur" + -L --very-long -f --show-flags --show-full-compiler + -e --explicit -E --implicit -u --unknown -m --missing + -v --variants -M --only-missing -N --namespace" -- "$cur" else compgen -W "$(_installed_packages)" -- "$cur" fi From 56f4f74b7208bced5670e5a7c1312d20ae2a8b68 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Mon, 28 Aug 2017 15:25:19 -0500 Subject: [PATCH 1582/2394] redundans: new package (#5217) * redundans: new package * fixing url for fastaindex and adding dep for pyscaf --- .../builtin/packages/py-fastaindex/package.py | 37 ++++++++++++ .../builtin/packages/py-pyscaf/package.py | 38 +++++++++++++ .../builtin/packages/redundans/package.py | 57 +++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-fastaindex/package.py create mode 100644 var/spack/repos/builtin/packages/py-pyscaf/package.py create mode 100644 var/spack/repos/builtin/packages/redundans/package.py diff --git a/var/spack/repos/builtin/packages/py-fastaindex/package.py b/var/spack/repos/builtin/packages/py-fastaindex/package.py new file mode 100644 index 00000000000..6e98f4c5a42 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fastaindex/package.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyFastaindex(PythonPackage): + """FastA index (.fai) handler compatible with samtools faidx is extended + with 4 columns storing counts for A, C, G & T for each sequence..""" + + homepage = "https://github.com/lpryszcz/FastaIndex" + url = "https://pypi.io/packages/source/F/FastaIndex/FastaIndex-0.11rc7.tar.gz" + + version('0.11rc7', '882c973d968d9db596edfd0fbb07e3a8') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pyscaf/package.py b/var/spack/repos/builtin/packages/py-pyscaf/package.py new file mode 100644 index 00000000000..93f6b6afdd1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyscaf/package.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPyscaf(PythonPackage): + """pyScaf orders contigs from genome assemblies utilising several types of + information""" + + homepage = "https://pypi.python.org/pypi/pyScaf" + url = "https://pypi.io/packages/source/p/pyScaf/pyScaf-0.12a4.tar.gz" + + version('0.12a4', 'c67526747eb04d1e28279ac310916d40') + + depends_on('py-setuptools', type='build') + depends_on('py-fastaindex', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/redundans/package.py b/var/spack/repos/builtin/packages/redundans/package.py new file mode 100644 index 00000000000..0e801f556fb --- /dev/null +++ b/var/spack/repos/builtin/packages/redundans/package.py @@ -0,0 +1,57 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Redundans(Package): + """Redundans pipeline assists an assembly of heterozygous genomes.""" + + homepage = "https://github.com/Gabaldonlab/redundans" + url = "https://github.com/Gabaldonlab/redundans/archive/v0.13c.tar.gz" + + version('0.13c', '2003fb7c70521f5e430553686fd1a594') + + depends_on('python', type=('build', 'run')) + depends_on('py-pyscaf', type=('build', 'run')) + depends_on('py-fastaindex', type=('build', 'run')) + depends_on('perl', type=('build', 'run')) + depends_on('sspace-standard') + depends_on('bwa') + depends_on('last') + depends_on('gapcloser') + depends_on('parallel') + depends_on('snap-berkeley') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('redundans.py', prefix.bin) + with working_dir('bin'): + install('fasta2homozygous.py', prefix.bin) + install('fasta2split.py', prefix.bin) + install('fastq2insert_size.py', prefix.bin) + install('fastq2mates.py', prefix.bin) + install('fastq2shuffled.py', prefix.bin) + install('fastq2sspace.py', prefix.bin) + install('filterReads.py', prefix.bin) From 6036a5a113220764e32b50a89a45f24d6b305cb4 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 28 Aug 2017 17:33:30 -0600 Subject: [PATCH 1583/2394] lammps: install headers (#5226) * lammps: install headers * use prefix.include.lammps --- var/spack/repos/builtin/packages/lammps/package.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index cfe5cfa4bb9..b66712d02e2 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -202,5 +202,5 @@ def install(self, spec, prefix): install('liblammps_{0}.{1}'.format(self.target_name, dso_suffix), prefix.lib) - # TODO: install the necessary headers - mkdirp(prefix.include) + mkdirp(prefix.include.lammps) + install('library.h', prefix.include.lammps) From ee93993b07d774bf1b2cee09960bbafe8ccfac8e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Tue, 29 Aug 2017 00:02:25 -0700 Subject: [PATCH 1584/2394] Make Spec construction simpler (#5227) --- lib/spack/spack/spec.py | 53 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index aa22978217d..2e61e88ddbb 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1133,34 +1133,19 @@ def __init__(self, spec_like, **kwargs): if not isinstance(spec_like, string_types): raise TypeError("Can't make spec out of %s" % type(spec_like)) - spec_list = SpecParser().parse(spec_like) + # parse string types *into* this spec + spec_list = SpecParser(self).parse(spec_like) if len(spec_list) > 1: raise ValueError("More than one spec in string: " + spec_like) if len(spec_list) < 1: raise ValueError("String contains no specs: " + spec_like) - # Take all the attributes from the first parsed spec without copying. - # This is safe b/c we throw out the parsed spec. It's a bit nasty, - # but it's nastier to implement the constructor so that the parser - # writes directly into this Spec object. - other = spec_list[0] - self.name = other.name - self.versions = other.versions - self.architecture = other.architecture - self.compiler = other.compiler - self.compiler_flags = other.compiler_flags - self.compiler_flags.spec = self - self._dependencies = other._dependencies - self._dependents = other._dependents - self.variants = other.variants - self.variants.spec = self - self.namespace = other.namespace - self._hash = other._hash - self._cmp_key_cache = other._cmp_key_cache - - # Specs are by default not assumed to be normal or concrete. - self._normal = False - self._concrete = False + # Specs are by default not assumed to be normal, but in some + # cases we've read them from a file want to assume normal. + # This allows us to manipulate specs that Spack doesn't have + # package.py files for. + self._normal = kwargs.get('normal', False) + self._concrete = kwargs.get('concrete', False) # Allow a spec to be constructed with an external path. self.external_path = kwargs.get('external_path', None) @@ -3131,9 +3116,17 @@ def __init__(self): class SpecParser(spack.parse.Parser): - def __init__(self): + def __init__(self, initial_spec=None): + """Construct a new SpecParser. + + Args: + initial_spec (Spec, optional): provide a Spec that we'll parse + directly into. This is used to avoid construction of a + superfluous Spec object in the Spec constructor. + """ super(SpecParser, self).__init__(_lexer) self.previous = None + self._initial = initial_spec def do_parse(self): specs = [] @@ -3257,8 +3250,14 @@ def spec(self, name): spec_namespace = None spec_name = None - # This will init the spec without calling __init__. - spec = Spec.__new__(Spec) + if self._initial is None: + # This will init the spec without calling Spec.__init__ + spec = Spec.__new__(Spec) + else: + # this is used by Spec.__init__ + spec = self._initial + self._initial = None + spec.name = spec_name spec.versions = VersionList() spec.variants = VariantMap(spec) @@ -3316,7 +3315,7 @@ def spec(self, name): # Get spec by hash and confirm it matches what we already have hash_spec = self.spec_by_hash() if hash_spec.satisfies(spec): - spec = hash_spec + spec._dup(hash_spec) break else: raise InvalidHashError(spec, hash_spec.dag_hash()) From bf7b8615544059c075df814b2792e7b7fa4dcf24 Mon Sep 17 00:00:00 2001 From: alalazo Date: Mon, 28 Aug 2017 20:16:32 +0200 Subject: [PATCH 1585/2394] Fixed bug in Spec._dup, updated docstring The private method `Spec._dup` was missing a line (when setting compiler flags the parent spec was not set to `self`). This resulted in an inconsistent state of the duplicated Spec. This problem has been fixed here. The docstring of `Spec._dup` has been updated. --- lib/spack/spack/spec.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 2e61e88ddbb..7bc0dce12a4 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2543,15 +2543,24 @@ def virtual_dependencies(self): def _dup(self, other, deps=True, cleardeps=True): """Copy the spec other into self. This is an overwriting - copy. It does not copy any dependents (parents), but by default - copies dependencies. + copy. It does not copy any dependents (parents), but by default + copies dependencies. - To duplicate an entire DAG, call _dup() on the root of the DAG. + To duplicate an entire DAG, call _dup() on the root of the DAG. + + Args: + other (Spec): spec to be copied onto ``self`` + deps (bool or Sequence): if True copies all the dependencies. If + False copies None. If a sequence of dependency types copy + only those types. + cleardeps (bool): if True clears the dependencies of ``self``, + before possibly copying the dependencies of ``other`` onto + ``self`` + + Returns: + True if ``self`` changed because of the copy operation, + False otherwise. - Options: - dependencies[=True] - Whether deps should be copied too. Set to False to copy a - spec but not its dependencies. """ # We don't count dependencies as changes here changed = True @@ -2577,6 +2586,7 @@ def _dup(self, other, deps=True, cleardeps=True): self._dependents = DependencyMap(self) self._dependencies = DependencyMap(self) self.compiler_flags = other.compiler_flags.copy() + self.compiler_flags.spec = self self.variants = other.variants.copy() self.variants.spec = self self.external_path = other.external_path From 462de9847c2271dbd7de149ae775e785c5d31daf Mon Sep 17 00:00:00 2001 From: alalazo Date: Mon, 28 Aug 2017 21:55:34 +0200 Subject: [PATCH 1586/2394] Added unit tests for Spec.__init__ exceptional paths --- lib/spack/spack/test/spec_semantics.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 4ed7c635e95..2c7c1d22ed5 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -707,3 +707,14 @@ def test_constrain_dependency_not_changed(self): check_constrain_not_changed( 'libelf^foo target=' + default_target, 'libelf^foo target=' + default_target) + + def test_exceptional_paths_for_constructor(self): + + with pytest.raises(TypeError): + Spec((1, 2)) + + with pytest.raises(ValueError): + Spec('') + + with pytest.raises(ValueError): + Spec('libelf foo') From c830eda0e6f8e773cdf2d8aeb9b400a307c834fe Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Wed, 30 Aug 2017 03:56:17 -0400 Subject: [PATCH 1587/2394] Slightly better error matching when parsing spack logs (#5236) --- lib/spack/spack/util/log_parse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/util/log_parse.py b/lib/spack/spack/util/log_parse.py index a55dcf59f53..a9ff356aff8 100644 --- a/lib/spack/spack/util/log_parse.py +++ b/lib/spack/spack/util/log_parse.py @@ -86,7 +86,7 @@ def parse_log_events(logfile, context=6): log_events = [] for i, line in enumerate(lines): - if re.search('error:', line, re.IGNORECASE): + if re.search('\berror:', line, re.IGNORECASE): event = LogEvent( line.strip(), i + 1, From de5111cd509b5a88dad20f71453b90678cb682fc Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Wed, 30 Aug 2017 02:57:57 -0500 Subject: [PATCH 1588/2394] hapcut2: new package (#5238) --- .../repos/builtin/packages/hapcut2/package.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 var/spack/repos/builtin/packages/hapcut2/package.py diff --git a/var/spack/repos/builtin/packages/hapcut2/package.py b/var/spack/repos/builtin/packages/hapcut2/package.py new file mode 100644 index 00000000000..1e91d1d5417 --- /dev/null +++ b/var/spack/repos/builtin/packages/hapcut2/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Hapcut2(MakefilePackage): + """HapCUT2 is a maximum-likelihood-based tool for assembling haplotypes + from DNA sequence reads, designed to 'just work' with excellent speed + and accuracy.""" + + homepage = "https://github.com/vibansal/HapCUT2" + url = "https://github.com/vibansal/HapCUT2" + + version('2017-07-10', git='https://github.com/vibansal/HapCUT2.git', + commit='2966b94c2c2f97813b757d4999b7a6471df1160e', submodules=True) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + with working_dir('build'): + install('extractFOSMID', prefix.bin) + install('extractHAIRS', prefix.bin) + install('HAPCUT2', prefix.bin) From b5a9f8ead14a18c3be24fce97cb2277e1a5baad1 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 30 Aug 2017 19:56:24 +0200 Subject: [PATCH 1589/2394] add optional maintainers property to package (#5230) * add optional package maintainers --- lib/spack/spack/cmd/info.py | 5 +++++ lib/spack/spack/package.py | 4 ++++ var/spack/repos/builtin/packages/dealii/package.py | 2 ++ 3 files changed, 11 insertions(+) diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 71ab5e3207b..b7f824c0915 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -162,6 +162,11 @@ def print_text_info(pkg): color.cprint(section_title('Homepage: ') + pkg.homepage) + if len(pkg.maintainers) > 0: + mnt = " ".join(['@@' + m for m in pkg.maintainers]) + color.cprint('') + color.cprint(section_title('Maintainers: ') + mnt) + color.cprint('') color.cprint(section_title('Preferred version: ')) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index c13a566e270..b3d619f6f30 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -545,6 +545,10 @@ class SomePackage(Package): # Verbosity level, preserved across installs. _verbose = None + #: List of strings which contains GitHub usernames of package maintainers. + #: Do not include @ here in order not to unnecessarily ping the users. + maintainers = [] + def __init__(self, spec): # this determines how the package should be built. self.spec = spec diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index ab957833596..c4e999afe9a 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -32,6 +32,8 @@ class Dealii(CMakePackage): homepage = "https://www.dealii.org" url = "https://github.com/dealii/dealii/releases/download/v8.4.1/dealii-8.4.1.tar.gz" + maintainers = ['davydden', 'jppelteret'] + # Don't add RPATHs to this package for the full build DAG. # only add for immediate deps. transitive_rpaths = False From bb29ec1843524ad4d517f9c93adcffd5f8959569 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Thu, 31 Aug 2017 01:58:23 +0200 Subject: [PATCH 1590/2394] mpich: fix MPI_Barrier segfault (#5235) * mpich: fix MPI_Barrier segfault * one more link --- .../builtin/packages/mpich/mpich32_clang.patch | 13 +++++++++++++ var/spack/repos/builtin/packages/mpich/package.py | 5 +++++ 2 files changed, 18 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mpich/mpich32_clang.patch diff --git a/var/spack/repos/builtin/packages/mpich/mpich32_clang.patch b/var/spack/repos/builtin/packages/mpich/mpich32_clang.patch new file mode 100644 index 00000000000..01243072f75 --- /dev/null +++ b/var/spack/repos/builtin/packages/mpich/mpich32_clang.patch @@ -0,0 +1,13 @@ +diff --git a/src/include/mpiimpl.h b/src/include/mpiimpl.h +index e705e5d..3bfcbee 100644 +--- a/src/include/mpiimpl.h ++++ b/src/include/mpiimpl.h +@@ -1528,7 +1528,7 @@ typedef struct MPID_Request { + #ifdef MPID_DEV_REQUEST_DECL + MPID_DEV_REQUEST_DECL + #endif +-} MPID_Request ATTRIBUTE((__aligned__(32))); ++} ATTRIBUTE((__aligned__(32))) MPID_Request; + + extern MPIU_Object_alloc_t MPID_Request_mem; + /* Preallocated request objects */ diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index f61a160d98f..0663ce2b7b6 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -51,6 +51,11 @@ class Mpich(AutotoolsPackage): provides('mpi@:3.0', when='@3:') provides('mpi@:1.3', when='@1:') + # fix MPI_Barrier segmentation fault + # see https://lists.mpich.org/pipermail/discuss/2016-May/004764.html + # and https://lists.mpich.org/pipermail/discuss/2016-June/004768.html + patch('mpich32_clang.patch', when='@3.2%clang') + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): # On Cray, the regular compiler wrappers *are* the MPI wrappers. if 'platform=cray' in self.spec: From cc3d8bacd7982dd190bc1bac54d569499b8d0b1d Mon Sep 17 00:00:00 2001 From: las_thoma15 Date: Thu, 31 Aug 2017 09:37:24 -0500 Subject: [PATCH 1591/2394] adding config args and virtual dependencies --- var/spack/repos/builtin/packages/jags/package.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/var/spack/repos/builtin/packages/jags/package.py b/var/spack/repos/builtin/packages/jags/package.py index cccab17bf17..2909f24e9dc 100644 --- a/var/spack/repos/builtin/packages/jags/package.py +++ b/var/spack/repos/builtin/packages/jags/package.py @@ -22,7 +22,6 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## - from spack import * @@ -36,9 +35,10 @@ class Jags(AutotoolsPackage): version('4.2.0', '9e521b3cfb23d3290a8c6bc0b79bf426') - depends_on('m4', type='build') - depends_on('autoconf', type='build') - depends_on('automake', type='build') - depends_on('libtool', type='build') + depends_on('blas') + depends_on('lapack') - depends_on('atlas') + def configure_args(self): + args = ['--with-blas=-L%s' % self.spec['blas'].prefix.lib, + '--with-lapack=-L%s' % self.spec['lapack'].prefix.lib] + return args From 01eba56e64fde9d8bf8732a3a82d6369d70589b2 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 1 Sep 2017 02:06:03 +0200 Subject: [PATCH 1592/2394] Patch directive allows non-archives (#5197) - Don't expand downloaded patch file if it is not gzipped/tar'd/zipped/etc. --- lib/spack/spack/directives.py | 11 ++++ lib/spack/spack/patch.py | 5 +- lib/spack/spack/test/data/patch/bar.txt | 1 + lib/spack/spack/test/data/patch/foo.tgz | Bin 0 -> 116 bytes lib/spack/spack/test/patch.py | 84 ++++++++++++++++++++++++ 5 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 lib/spack/spack/test/data/patch/bar.txt create mode 100644 lib/spack/spack/test/data/patch/foo.tgz create mode 100644 lib/spack/spack/test/patch.py diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 2a99e171a08..7b9a3aa953d 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -357,6 +357,17 @@ def patch(url_or_filename, level=1, when=None, **kwargs): optionally provide a when spec to indicate that a particular patch should only be applied when the package's spec meets certain conditions (e.g. a particular version). + + Args: + url_or_filename (str): url or filename of the patch + level (int): patch level (as in the patch shell command) + when (Spec): optional anonymous spec that specifies when to apply + the patch + **kwargs: the following list of keywords is supported + + - md5 (str): md5 sum of the patch (used to verify the file + if it comes from a url) + """ def _execute(pkg): constraint = pkg.name if when is None else when diff --git a/lib/spack/spack/patch.py b/lib/spack/spack/patch.py index c970f4dfdcd..5742f312ce6 100644 --- a/lib/spack/spack/patch.py +++ b/lib/spack/spack/patch.py @@ -131,7 +131,10 @@ def apply(self, stage): patch_stage.fetch() patch_stage.check() patch_stage.cache_local() - patch_stage.expand_archive() + + if spack.util.compression.allowed_archive(self.url): + patch_stage.expand_archive() + self.path = os.path.abspath( os.listdir(patch_stage.path).pop() ) diff --git a/lib/spack/spack/test/data/patch/bar.txt b/lib/spack/spack/test/data/patch/bar.txt new file mode 100644 index 00000000000..ba578e48b18 --- /dev/null +++ b/lib/spack/spack/test/data/patch/bar.txt @@ -0,0 +1 @@ +BAR diff --git a/lib/spack/spack/test/data/patch/foo.tgz b/lib/spack/spack/test/data/patch/foo.tgz new file mode 100644 index 0000000000000000000000000000000000000000..73f598ac25ed5adef91be41aaceaad784d13d6a0 GIT binary patch literal 116 zcmb2|=3uDrpBKr%{Pvt77n7j~%LN%#^$9NJlRtMPEOjyAmb=fvWtOxx?7bF!`|fya S1{nBrk$I(vO*exE0|Nk{%QEEv literal 0 HcmV?d00001 diff --git a/lib/spack/spack/test/patch.py b/lib/spack/spack/test/patch.py new file mode 100644 index 00000000000..7976956748c --- /dev/null +++ b/lib/spack/spack/test/patch.py @@ -0,0 +1,84 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os.path + +import pytest +import sys + +import spack +import spack.util.compression +import spack.stage + + +@pytest.fixture() +def mock_apply(monkeypatch): + """Monkeypatches ``Patch.apply`` to test only the additional behavior of + derived classes. + """ + + m = sys.modules['spack.patch'] + + def check_expand(self, *args, **kwargs): + # Check tarball expansion + if spack.util.compression.allowed_archive(self.url): + file = os.path.join(self.path, 'foo.txt') + assert os.path.exists(file) + + # Check tarball fetching + dirname = os.path.dirname(self.path) + basename = os.path.basename(self.url) + tarball = os.path.join(dirname, basename) + assert os.path.exists(tarball) + + monkeypatch.setattr(m.Patch, 'apply', check_expand) + + +@pytest.fixture() +def mock_stage(tmpdir, monkeypatch): + + monkeypatch.setattr(spack, 'stage_path', str(tmpdir)) + + class MockStage(object): + def __init__(self): + self.mirror_path = str(tmpdir) + + return MockStage() + + +data_path = os.path.join(spack.test_path, 'data', 'patch') + + +@pytest.mark.usefixtures('mock_apply') +@pytest.mark.parametrize('filename,md5', [ + (os.path.join(data_path, 'foo.tgz'), 'bff717ca9cbbb293bdf188e44c540758'), + (os.path.join(data_path, 'bar.txt'), 'f98bf6f12e995a053b7647b10d937912') +]) +def test_url_patch_expansion(mock_stage, filename, md5): + + m = sys.modules['spack.patch'] + url = 'file://' + filename + patch = m.Patch.create(None, url, 0, md5=md5) + patch.apply(mock_stage) From 1fff48641fa8cfc1147a38726924be97005b9f8f Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 31 Aug 2017 20:01:09 -0500 Subject: [PATCH 1593/2394] kmergenie: new package (#5257) --- .../builtin/packages/kmergenie/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/kmergenie/package.py diff --git a/var/spack/repos/builtin/packages/kmergenie/package.py b/var/spack/repos/builtin/packages/kmergenie/package.py new file mode 100644 index 00000000000..9e6d0e53128 --- /dev/null +++ b/var/spack/repos/builtin/packages/kmergenie/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Kmergenie(MakefilePackage): + """KmerGenie estimates the best k-mer length for genome de novo assembly. + """ + + homepage = "http://kmergenie.bx.psu.edu/" + url = "http://kmergenie.bx.psu.edu/kmergenie-1.7044.tar.gz" + + version('1.7044', '407209c8181f1631ecb79b0ca735d18f') + + depends_on('python', type=('build', 'run')) + depends_on('py-setuptools', type=('build', 'run')) + depends_on('r', type=('build', 'run')) + depends_on('zlib') + + def install(self, spec, prefix): + install_tree(self.stage.source_path, prefix.bin) From 1d6fff1f2d2ce9b81d302a5d929e5000b2bb0720 Mon Sep 17 00:00:00 2001 From: William Scullin Date: Thu, 31 Aug 2017 20:13:52 -0500 Subject: [PATCH 1594/2394] New package: meson build system (#5250) * Adding a spec for the meson build system --- .../repos/builtin/packages/meson/package.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 var/spack/repos/builtin/packages/meson/package.py diff --git a/var/spack/repos/builtin/packages/meson/package.py b/var/spack/repos/builtin/packages/meson/package.py new file mode 100644 index 00000000000..26e4129b1d7 --- /dev/null +++ b/var/spack/repos/builtin/packages/meson/package.py @@ -0,0 +1,43 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Meson(PythonPackage): + """Meson is a portable open source build system meant to be both + extremely fast, and as user friendly as possible.""" + + homepage = "http://mesonbuild.com/" + url = "https://github.com/mesonbuild/meson/archive/0.42.0.tar.gz" + + version('0.42.0', '9e26bf154ca439b78b1b9366c8a89437') + version('0.41.2', 'aa9c69ced965e47f5c75a9257ee91ce3') + version('0.41.1', 'c6d285b35cfd7acc8517124d417efbdc') + + variant('ninjabuild', default=True) + + depends_on('python@3:', type=('build', 'run')) + depends_on('ninja', when='+ninjabuild', type=('build', 'run')) From 48599837d8782dc62aee4e5d20006e5f606103a3 Mon Sep 17 00:00:00 2001 From: zenln Date: Thu, 31 Aug 2017 20:14:50 -0500 Subject: [PATCH 1595/2394] Globalarrays: Adding ENABLE_I8 variant (#5249) --- .../repos/builtin/packages/globalarrays/package.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/globalarrays/package.py b/var/spack/repos/builtin/packages/globalarrays/package.py index 19af1b63019..2ddf8c8b623 100644 --- a/var/spack/repos/builtin/packages/globalarrays/package.py +++ b/var/spack/repos/builtin/packages/globalarrays/package.py @@ -26,15 +26,18 @@ class Globalarrays(CMakePackage): - """The Global Arrays (GA) toolkit provides a shared memory style programming - environment in the context of distributed array data structures. + """The Global Arrays (GA) toolkit provides a shared memory style + programming environment in the context of distributed array data + structures. """ homepage = "http://hpc.pnl.gov/globalarrays/" - url = "https://github.com/GlobalArrays/ga" + url = "https://github.com/GlobalArrays/ga" version('master', git='https://github.com/GlobalArrays/ga', branch='master') + variant('i8', default=False, description='Build with 8 byte integers') + depends_on('blas') depends_on('lapack') depends_on('mpi') @@ -57,4 +60,7 @@ def cmake_args(self): '-DCMAKE_Fortran_FLAGS=-qzerosize' ]) + if "+i8" in self.spec: + options.extend(['-DENABLE_I8=ON']) + return options From 5342ecf364e633960e84ca021ef44f1274e9938c Mon Sep 17 00:00:00 2001 From: scheibelp Date: Fri, 1 Sep 2017 10:32:04 -0700 Subject: [PATCH 1596/2394] Set default cmake build_type to Release for llvm Override CMake "build_type" variant to default to "Release" for llvm package. --- lib/spack/spack/build_systems/cmake.py | 2 +- var/spack/repos/builtin/packages/llvm/package.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index f643320b10f..9160390a06c 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -84,7 +84,7 @@ class CMakePackage(PackageBase): # https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html variant('build_type', default='RelWithDebInfo', - description='The build type to build', + description='CMake build type', values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel')) depends_on('cmake', type='build') diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 64e50f0cfb7..396cdbcb0cd 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -70,6 +70,9 @@ class Llvm(CMakePackage): variant('all_targets', default=True, description="Build all supported targets, default targets " ",NVPTX,AMDGPU,CppBackend") + variant('build_type', default='Release', + description='CMake build type', + values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel')) # Build dependency depends_on('cmake@3.4.3:', type='build') From 2aed82c2c294df1fb7df1130537365db7d33699a Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Fri, 1 Sep 2017 20:14:54 +0200 Subject: [PATCH 1597/2394] Fix osu-micro-benchmarks build (#5255) * Fix osu-micro-benchmarks build Changed hardcoded mpi wrapper names Changed Package to AutotoolsPackage * remove extra prefix --- .../packages/osu-micro-benchmarks/package.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py index f6d49d74e7d..f32262f2401 100644 --- a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py +++ b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py @@ -26,7 +26,7 @@ import sys -class OsuMicroBenchmarks(Package): +class OsuMicroBenchmarks(AutotoolsPackage): """The Ohio MicroBenchmark suite is a collection of independent MPI message passing performance microbenchmarks developed and written at The Ohio State University. It includes traditional benchmarks and @@ -43,11 +43,11 @@ class OsuMicroBenchmarks(Package): depends_on('mpi') depends_on('cuda', when='+cuda') - def install(self, spec, prefix): + def configure_args(self): + spec = self.spec config_args = [ - 'CC=%s' % spec['mpi'].prefix.bin + '/mpicc', - 'CXX=%s' % spec['mpi'].prefix.bin + '/mpicxx', - '--prefix=%s' % prefix + 'CC=%s' % spec['mpi'].mpicc, + 'CXX=%s' % spec['mpi'].mpicxx ] if '+cuda' in spec: @@ -60,7 +60,4 @@ def install(self, spec, prefix): if not sys.platform == 'darwin': config_args.append('LDFLAGS=-lrt') - configure(*config_args) - - make() - make('install') + return config_args From a140a8971822b21bac62047d6a39997e127c51c9 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Fri, 1 Sep 2017 20:16:26 +0200 Subject: [PATCH 1598/2394] Fix allinea-forge and allinea-reports installation (#5243) * Fix allinea-forge and allinea-reports installation * Change which to Executable --- var/spack/repos/builtin/packages/allinea-forge/package.py | 2 +- var/spack/repos/builtin/packages/allinea-reports/package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/allinea-forge/package.py b/var/spack/repos/builtin/packages/allinea-forge/package.py index 766a28a0e02..a415418923e 100644 --- a/var/spack/repos/builtin/packages/allinea-forge/package.py +++ b/var/spack/repos/builtin/packages/allinea-forge/package.py @@ -48,5 +48,5 @@ def url_for_version(self, version): return url + "allinea-forge-%s-Redhat-6.0-x86_64.tar" % version def install(self, spec, prefix): - textinstall = which('textinstall.sh') + textinstall = Executable('./textinstall.sh') textinstall('--accept-licence', prefix) diff --git a/var/spack/repos/builtin/packages/allinea-reports/package.py b/var/spack/repos/builtin/packages/allinea-reports/package.py index 70452290ee9..c4fd2786480 100644 --- a/var/spack/repos/builtin/packages/allinea-reports/package.py +++ b/var/spack/repos/builtin/packages/allinea-reports/package.py @@ -48,5 +48,5 @@ def url_for_version(self, version): return url + "allinea-reports-%s-Redhat-6.0-x86_64.tar" % version def install(self, spec, prefix): - textinstall = which('textinstall.sh') + textinstall = Executable('./textinstall.sh') textinstall('--accept-licence', prefix) From aedf6c3b8700d1570be5e73c992d543250b0f2d1 Mon Sep 17 00:00:00 2001 From: Gilberto Martinez Jr Date: Fri, 1 Sep 2017 14:30:16 -0500 Subject: [PATCH 1599/2394] PR for RAFT tomography package (#5247) * Adding package RAFT * Adding RAFT homepage --- .../repos/builtin/packages/raft/package.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 var/spack/repos/builtin/packages/raft/package.py diff --git a/var/spack/repos/builtin/packages/raft/package.py b/var/spack/repos/builtin/packages/raft/package.py new file mode 100644 index 00000000000..81040410d7f --- /dev/null +++ b/var/spack/repos/builtin/packages/raft/package.py @@ -0,0 +1,52 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Raft(CMakePackage): + """RAFT: Reconstruct Algorithms for Tomography. + Toolbox under development at Brazilian Synchrotron Light Source.""" + + homepage = "https://bitbucket.org/gill_martinez/raft_aps" + url = "https://bitbucket.org/gill_martinez/raft_aps/get/1.2.3.tar.gz" + + version('1.2.3', '4d1b106d9b3493e63dde96f7dd44b834') + version('develop', git='https://bitbucket.org/gill_martinez/raft_aps.git') + + depends_on('mpi') + depends_on('cmake', type='build') + depends_on('hdf5') + depends_on('fftw') + depends_on('cuda') + + def install(self, spec, prefix): + """RAFT lacks an install in its CMakeList""" + + with working_dir(self.stage.source_path): + mkdirp(prefix) + + # We only care about the binary + install_tree('bin', prefix.bin) From c8df92760743e9b31bc49620ba4cc6bb8aedd867 Mon Sep 17 00:00:00 2001 From: Andrey Prokopenko Date: Fri, 1 Sep 2017 21:24:10 -0400 Subject: [PATCH 1600/2394] Add maintainer for Trilinos Add a maintainer for the Trilinos package. --- var/spack/repos/builtin/packages/trilinos/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index a0d0ccfa3ca..585ff0e81b8 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -46,6 +46,8 @@ class Trilinos(CMakePackage): homepage = "https://trilinos.org/" url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-12-10-1.tar.gz" + maintainers = ['aprokop'] + # ###################### Versions ########################## version('xsdk-0.2.0', From dec6b609d8a093586eb10fe3023eac273cdd0dad Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Sat, 2 Sep 2017 14:51:27 +0200 Subject: [PATCH 1601/2394] Updated llvm to version 4.0.1 Fixed indentation of dict literal (#5272) --- .../repos/builtin/packages/llvm/package.py | 227 ++++++++++-------- 1 file changed, 121 insertions(+), 106 deletions(-) diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 396cdbcb0cd..c09dbe15714 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -166,113 +166,128 @@ class Llvm(CMakePackage): 'clang-tools-extra': 'http://llvm.org/svn/llvm-project/clang-tools-extra/trunk', 'lldb': 'http://llvm.org/svn/llvm-project/lldb/trunk', 'libunwind': 'http://llvm.org/svn/llvm-project/libunwind/trunk', + } + }, + { + 'version': '4.0.1', + 'md5': 'a818e70321b91e2bb2d47e60edd5408f', + 'resources': { + 'compiler-rt': '0227ac853ce422125f8bb08f6ad5c995', + 'openmp': '23e5f720ae119165ba32627467fdc885', + 'polly': '0d4a3fa2eb446a378bbf01b220851b1f', + 'libcxx': 'c54f7938e2f393a2cead0af37ed99dfb', + 'libcxxabi': '55ba0be7daf8bf25ab629a9cfd3022a4', + 'cfe': 'a6c7b3e953f8b93e252af5917df7db97', + 'clang-tools-extra': 'cfd46027a0ab7eed483dfcc803e86bd9', + 'lldb': '908bdd777d3b527a914ba360477b8ab3', + 'libunwind': 'b72ec95fb784e61f15d6196414b92f5e', } - }, - { - 'version': '4.0.0', - 'md5': 'ea9139a604be702454f6acf160b4f3a2', - 'resources': { - 'compiler-rt': '2ec11fb7df827b086341131c5d7f1814', - 'openmp': '3d06d2801dd4808f551a1a70068e01f5', - 'polly': 'f36e4e7cf872f8b3bbb9cdcddc5fd964', - 'libcxx': '4cf7df466e6f803ec4611ee410ff6781', - 'libcxxabi': '8b5d7b9bfcf7dec2dc901c8a6746f97c', - 'cfe': '756e17349fdc708c62974b883bf72d37', - 'clang-tools-extra': '99e711337ec3e9a8bb36e8dd62b2cd6e', - 'lldb': 'bd41ba7fcca55d2a554409bbccd34d2d', - 'libunwind': '0c3534eaa11c0cae33a1dcf5f36ce287', - } - }, - { - 'version': '3.9.1', - 'md5': '3259018a7437e157f3642df80f1983ea', - 'resources': { - 'compiler-rt': 'aadc76e7e180fafb10fb729444e287a3', - 'openmp': 'f076916bf2f49229b4df9fa0bb002599', - 'polly': '2cc7fe2bd9539775ba140abfd375bec6', - 'libcxx': '75a3214224301fc543fa6a38bdf7efe0', - 'libcxxabi': '62fd584b38cc502172c2ffab041b5fcc', - 'cfe': '45713ec5c417ed9cad614cd283d786a1', - 'clang-tools-extra': '1a01d545a064fcbc46a2f05f6880d3d7', - 'lldb': '91399402f287d3f637db1207113deecb', - 'libunwind': 'f273dd0ed638ad0601b23176a36f187b', - } - }, - { - 'version': '3.9.0', - 'md5': 'f2093e98060532449eb7d2fcfd0bc6c6', - 'resources': { - 'compiler-rt': 'b7ea34c9d744da16ffc0217b6990d095', - 'openmp': '5390164f2374e1444e82393541ecf6c7', - 'polly': '1cf328cbae25267749b68cfa6f113674', - 'libcxx': '0a11efefd864ce6f321194e441f7e569', - 'libcxxabi': 'd02642308e22e614af6b061b9b4fedfa', - 'cfe': '29e1d86bee422ab5345f5e9fb808d2dc', - 'clang-tools-extra': 'f4f663068c77fc742113211841e94d5e', - 'lldb': '968d053c3c3d7297983589164c6999e9', - 'libunwind': '3e5c87c723a456be599727a444b1c166', - } - }, - { - 'version': '3.8.1', - 'md5': '538467e6028bbc9259b1e6e015d25845', - 'resources': { - 'compiler-rt': 'f140db073d2453f854fbe01cc46f3110', - 'openmp': '078b8d4c51ad437a4f8b5989f5ec4156', - 'polly': '8a40e697a4ba1c8b640b85d074bd6e25', - 'libcxx': '1bc60150302ff76a0d79d6f9db22332e', - 'libcxxabi': '3c63b03ba2f30a01279ca63384a67773', - 'cfe': '4ff2f8844a786edb0220f490f7896080', - 'clang-tools-extra': '6e49f285d0b366cc3cab782d8c92d382', - 'lldb': '9e4787b71be8e432fffd31e13ac87623', - 'libunwind': 'd66e2387e1d37a8a0c8fe6a0063a3bab', - } - }, - { - 'version': '3.8.0', - 'md5': '07a7a74f3c6bd65de4702bf941b511a0', - 'resources': { - 'compiler-rt': 'd6fcbe14352ffb708e4d1ac2e48bb025', - 'openmp': '8fd7cc35d48051613cf1e750e9f22e40', - 'polly': '1b3b20f52d34a4024e21a4ea7112caa7', - 'libcxx': 'd6e0bdbbee39f7907ad74fd56d03b88a', - 'libcxxabi': 'bbe6b4d72c7c5978550d370af529bcf7', - 'cfe': 'cc99e7019bb74e6459e80863606250c5', - 'clang-tools-extra': 'c2344f50e0eea0b402f0092a80ddc036', - 'lldb': 'a5da35ed9cc8c8817ee854e3dbfba00e', - 'libunwind': '162ade468607f153cca12be90b5194fa', - } - }, - { - 'version': '3.7.1', - 'md5': 'bf8b3a2c79e61212c5409041dfdbd319', - 'resources': { - 'compiler-rt': '1c6975daf30bb3b0473b53c3a1a6ff01', - 'openmp': 'b4ad08cda4e5c22e42b66062b140438e', - 'polly': '3a2a7367002740881637f4d47bca4dc3', - 'libcxx': 'f9c43fa552a10e14ff53b94d04bea140', - 'libcxxabi': '52d925afac9f97e9dcac90745255c169', - 'cfe': '0acd026b5529164197563d135a8fd83e', - 'clang-tools-extra': '5d49ff745037f061a7c86aeb6a24c3d2', - 'lldb': 'a106d8a0d21fc84d76953822fbaf3398', - 'libunwind': '814bd52c9247c5d04629658fbcb3ab8c', - } - }, - { - 'version': '3.7.0', - 'md5': 'b98b9495e5655a672d6cb83e1a180f8e', - 'resources': { - 'compiler-rt': '383c10affd513026f08936b5525523f5', - 'openmp': 'f482c86fdead50ba246a1a2b0bbf206f', - 'polly': '32f93ffc9cc7e042df22089761558f8b', - 'libcxx': '46aa5175cbe1ad42d6e9c995968e56dd', - 'libcxxabi': '5aa769e2fca79fa5335cfae8f6258772', - 'cfe': '8f9d27335e7331cf0a4711e952f21f01', - 'clang-tools-extra': 'd5a87dacb65d981a427a536f6964642e', - 'lldb': 'e5931740400d1dc3e7db4c7ba2ceff68', - 'libunwind': '9a75392eb7eb8ed5c0840007e212baf5', - } - }, + }, + { + 'version': '4.0.0', + 'md5': 'ea9139a604be702454f6acf160b4f3a2', + 'resources': { + 'compiler-rt': '2ec11fb7df827b086341131c5d7f1814', + 'openmp': '3d06d2801dd4808f551a1a70068e01f5', + 'polly': 'f36e4e7cf872f8b3bbb9cdcddc5fd964', + 'libcxx': '4cf7df466e6f803ec4611ee410ff6781', + 'libcxxabi': '8b5d7b9bfcf7dec2dc901c8a6746f97c', + 'cfe': '756e17349fdc708c62974b883bf72d37', + 'clang-tools-extra': '99e711337ec3e9a8bb36e8dd62b2cd6e', + 'lldb': 'bd41ba7fcca55d2a554409bbccd34d2d', + 'libunwind': '0c3534eaa11c0cae33a1dcf5f36ce287', + } + }, + { + 'version': '3.9.1', + 'md5': '3259018a7437e157f3642df80f1983ea', + 'resources': { + 'compiler-rt': 'aadc76e7e180fafb10fb729444e287a3', + 'openmp': 'f076916bf2f49229b4df9fa0bb002599', + 'polly': '2cc7fe2bd9539775ba140abfd375bec6', + 'libcxx': '75a3214224301fc543fa6a38bdf7efe0', + 'libcxxabi': '62fd584b38cc502172c2ffab041b5fcc', + 'cfe': '45713ec5c417ed9cad614cd283d786a1', + 'clang-tools-extra': '1a01d545a064fcbc46a2f05f6880d3d7', + 'lldb': '91399402f287d3f637db1207113deecb', + 'libunwind': 'f273dd0ed638ad0601b23176a36f187b', + } + }, + { + 'version': '3.9.0', + 'md5': 'f2093e98060532449eb7d2fcfd0bc6c6', + 'resources': { + 'compiler-rt': 'b7ea34c9d744da16ffc0217b6990d095', + 'openmp': '5390164f2374e1444e82393541ecf6c7', + 'polly': '1cf328cbae25267749b68cfa6f113674', + 'libcxx': '0a11efefd864ce6f321194e441f7e569', + 'libcxxabi': 'd02642308e22e614af6b061b9b4fedfa', + 'cfe': '29e1d86bee422ab5345f5e9fb808d2dc', + 'clang-tools-extra': 'f4f663068c77fc742113211841e94d5e', + 'lldb': '968d053c3c3d7297983589164c6999e9', + 'libunwind': '3e5c87c723a456be599727a444b1c166', + } + }, + { + 'version': '3.8.1', + 'md5': '538467e6028bbc9259b1e6e015d25845', + 'resources': { + 'compiler-rt': 'f140db073d2453f854fbe01cc46f3110', + 'openmp': '078b8d4c51ad437a4f8b5989f5ec4156', + 'polly': '8a40e697a4ba1c8b640b85d074bd6e25', + 'libcxx': '1bc60150302ff76a0d79d6f9db22332e', + 'libcxxabi': '3c63b03ba2f30a01279ca63384a67773', + 'cfe': '4ff2f8844a786edb0220f490f7896080', + 'clang-tools-extra': '6e49f285d0b366cc3cab782d8c92d382', + 'lldb': '9e4787b71be8e432fffd31e13ac87623', + 'libunwind': 'd66e2387e1d37a8a0c8fe6a0063a3bab', + } + }, + { + 'version': '3.8.0', + 'md5': '07a7a74f3c6bd65de4702bf941b511a0', + 'resources': { + 'compiler-rt': 'd6fcbe14352ffb708e4d1ac2e48bb025', + 'openmp': '8fd7cc35d48051613cf1e750e9f22e40', + 'polly': '1b3b20f52d34a4024e21a4ea7112caa7', + 'libcxx': 'd6e0bdbbee39f7907ad74fd56d03b88a', + 'libcxxabi': 'bbe6b4d72c7c5978550d370af529bcf7', + 'cfe': 'cc99e7019bb74e6459e80863606250c5', + 'clang-tools-extra': 'c2344f50e0eea0b402f0092a80ddc036', + 'lldb': 'a5da35ed9cc8c8817ee854e3dbfba00e', + 'libunwind': '162ade468607f153cca12be90b5194fa', + } + }, + { + 'version': '3.7.1', + 'md5': 'bf8b3a2c79e61212c5409041dfdbd319', + 'resources': { + 'compiler-rt': '1c6975daf30bb3b0473b53c3a1a6ff01', + 'openmp': 'b4ad08cda4e5c22e42b66062b140438e', + 'polly': '3a2a7367002740881637f4d47bca4dc3', + 'libcxx': 'f9c43fa552a10e14ff53b94d04bea140', + 'libcxxabi': '52d925afac9f97e9dcac90745255c169', + 'cfe': '0acd026b5529164197563d135a8fd83e', + 'clang-tools-extra': '5d49ff745037f061a7c86aeb6a24c3d2', + 'lldb': 'a106d8a0d21fc84d76953822fbaf3398', + 'libunwind': '814bd52c9247c5d04629658fbcb3ab8c', + } + }, + { + 'version': '3.7.0', + 'md5': 'b98b9495e5655a672d6cb83e1a180f8e', + 'resources': { + 'compiler-rt': '383c10affd513026f08936b5525523f5', + 'openmp': 'f482c86fdead50ba246a1a2b0bbf206f', + 'polly': '32f93ffc9cc7e042df22089761558f8b', + 'libcxx': '46aa5175cbe1ad42d6e9c995968e56dd', + 'libcxxabi': '5aa769e2fca79fa5335cfae8f6258772', + 'cfe': '8f9d27335e7331cf0a4711e952f21f01', + 'clang-tools-extra': 'd5a87dacb65d981a427a536f6964642e', + 'lldb': 'e5931740400d1dc3e7db4c7ba2ceff68', + 'libunwind': '9a75392eb7eb8ed5c0840007e212baf5', + } + }, { 'version': '3.6.2', 'md5': '0c1ee3597d75280dee603bae9cbf5cc2', From 7f454bbd3d661dd796bef5b1f91d9bf515300bb3 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 5 Sep 2017 00:23:56 +0200 Subject: [PATCH 1602/2394] Add davydden as a maintainer to a couple of packages (#5284) --- var/spack/repos/builtin/packages/astyle/package.py | 2 ++ var/spack/repos/builtin/packages/likwid/package.py | 2 ++ var/spack/repos/builtin/packages/numdiff/package.py | 2 ++ var/spack/repos/builtin/packages/p4est/package.py | 2 ++ var/spack/repos/builtin/packages/tethex/package.py | 2 ++ 5 files changed, 10 insertions(+) diff --git a/var/spack/repos/builtin/packages/astyle/package.py b/var/spack/repos/builtin/packages/astyle/package.py index a6ab9fffc65..3bc31ddfdf4 100644 --- a/var/spack/repos/builtin/packages/astyle/package.py +++ b/var/spack/repos/builtin/packages/astyle/package.py @@ -34,6 +34,8 @@ class Astyle(MakefilePackage): homepage = "http://astyle.sourceforge.net/" url = "http://downloads.sourceforge.net/project/astyle/astyle/astyle%202.04/astyle_2.04_linux.tar.gz" + maintainers = ['davydden'] + version('3.0.1', 'c301f09679efa2e1eb6e6b5fd33788b4') version('2.06', 'ff588e7fcede824591cf5b9085df109d') version('2.05.1', '4142d178047d7040da3e0e2f1b030a1a') diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py index 70cde61edfb..be482011153 100644 --- a/var/spack/repos/builtin/packages/likwid/package.py +++ b/var/spack/repos/builtin/packages/likwid/package.py @@ -33,6 +33,8 @@ class Likwid(Package): homepage = "https://github.com/RRZE-HPC/likwid" url = "https://github.com/RRZE-HPC/likwid/archive/4.1.2.tar.gz" + maintainers = ['davydden'] + version('4.1.2', 'a857ce5bd23e31d96e2963fe81cb38f0') # NOTE: There is no way to use an externally provided hwloc with Likwid. diff --git a/var/spack/repos/builtin/packages/numdiff/package.py b/var/spack/repos/builtin/packages/numdiff/package.py index d9d2bc88cd7..fbaf5a20220 100644 --- a/var/spack/repos/builtin/packages/numdiff/package.py +++ b/var/spack/repos/builtin/packages/numdiff/package.py @@ -33,6 +33,8 @@ class Numdiff(AutotoolsPackage): homepage = 'https://www.nongnu.org/numdiff' url = 'http://nongnu.askapache.com/numdiff/numdiff-5.8.1.tar.gz' + maintainers = ['davydden'] + version('5.9.0', '794461a7285d8b9b1f2c4a8149889ea6') version('5.8.1', 'a295eb391f6cb1578209fc6b4f9d994e') diff --git a/var/spack/repos/builtin/packages/p4est/package.py b/var/spack/repos/builtin/packages/p4est/package.py index cc8a7bd353f..9f9c08611d2 100644 --- a/var/spack/repos/builtin/packages/p4est/package.py +++ b/var/spack/repos/builtin/packages/p4est/package.py @@ -31,6 +31,8 @@ class P4est(AutotoolsPackage): homepage = "http://www.p4est.org" url = "http://p4est.github.io/release/p4est-1.1.tar.gz" + maintainers = ['davydden'] + version('2.0', 'c522c5b69896aab39aa5a81399372a19a6b03fc6200d2d5d677d9a22fe31029a') version('1.1', '37ba7f4410958cfb38a2140339dbf64f') diff --git a/var/spack/repos/builtin/packages/tethex/package.py b/var/spack/repos/builtin/packages/tethex/package.py index 94296786619..f6991646097 100644 --- a/var/spack/repos/builtin/packages/tethex/package.py +++ b/var/spack/repos/builtin/packages/tethex/package.py @@ -35,6 +35,8 @@ class Tethex(CMakePackage): homepage = "https://github.com/martemyev/tethex" url = "https://github.com/martemyev/tethex/archive/v0.0.7.tar.gz" + maintainers = ['davydden'] + version('0.0.7', '6c9e4a18a6637deb4400c6d77ec03184') version('develop', git='https://github.com/martemyev/tethex.git') From 6c4918320d263ee77aa7c0e37d53839b27e5c4c5 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Tue, 5 Sep 2017 02:34:21 -0700 Subject: [PATCH 1603/2394] add neovim package with deps (#5260) * add neovim package with deps --- .../builtin/packages/lua-bitlib/package.py | 47 ++++++++++++++++ .../builtin/packages/lua-lpeg/package.py | 42 +++++++++++++++ .../builtin/packages/lua-mpack/package.py | 44 +++++++++++++++ .../repos/builtin/packages/neovim/package.py | 53 +++++++++++++++++++ 4 files changed, 186 insertions(+) create mode 100644 var/spack/repos/builtin/packages/lua-bitlib/package.py create mode 100644 var/spack/repos/builtin/packages/lua-lpeg/package.py create mode 100644 var/spack/repos/builtin/packages/lua-mpack/package.py create mode 100644 var/spack/repos/builtin/packages/neovim/package.py diff --git a/var/spack/repos/builtin/packages/lua-bitlib/package.py b/var/spack/repos/builtin/packages/lua-bitlib/package.py new file mode 100644 index 00000000000..f4dbd15a7b4 --- /dev/null +++ b/var/spack/repos/builtin/packages/lua-bitlib/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * +import os + + +class LuaBitlib(Package): + """Lua-jit-like bitwise operations for lua""" + + homepage = "http://luaforge.net/projects/bitlib" + url = "https://luarocks.org/bitlib-23-2.src.rock" + + version('23', '9fee36a6e512c54bf6364dfe97d1d871', + url="https://luarocks.org/bitlib-23-2.src.rock", + expand=False) + + extends('lua') + + def install(self, spec, prefix): + luarocks('unpack', "bitlib-23-2.src.rock") + os.chdir(os.path.join('bitlib-23-2', 'bitlib-23')) + sed = which('sed') + sed('-ie', 's/luaL_reg/luaL_Reg/', 'lbitlib.c') + luarocks('--tree=' + prefix, 'make') diff --git a/var/spack/repos/builtin/packages/lua-lpeg/package.py b/var/spack/repos/builtin/packages/lua-lpeg/package.py new file mode 100644 index 00000000000..11bfcca101d --- /dev/null +++ b/var/spack/repos/builtin/packages/lua-lpeg/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class LuaLpeg(Package): + """pattern-matching for lua""" + + homepage = "http://www.inf.puc-rio.br/~roberto/lpeg/" + url = "https://luarocks.org/manifests/luarocks/lpeg-0.12-1.src.rock" + + version('0.12.1', 'b5778bfee67761fcbe7a2d23cb889ea8', + url='https://luarocks.org/manifests/luarocks/lpeg-0.12-1.src.rock', + expand=False) + + extends("lua") + + def install(self, spec, prefix): + luarocks('--tree=' + prefix, 'install', 'lpeg-0.12-1.src.rock') diff --git a/var/spack/repos/builtin/packages/lua-mpack/package.py b/var/spack/repos/builtin/packages/lua-mpack/package.py new file mode 100644 index 00000000000..f05dfe34496 --- /dev/null +++ b/var/spack/repos/builtin/packages/lua-mpack/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class LuaMpack(Package): + """lua bindings to libmpack""" + + homepage = "https://luarocks.org/modules/tarruda/mpack" + url = "https://luarocks.org/manifests/tarruda/mpack-1.0.6-0.src.rock" + + depends_on('msgpack-c') + + version('1.0.0-0', '9a7bd842753194124830bc7426e78c1b', + url='https://luarocks.org/manifests/tarruda/mpack-1.0.6-0.src.rock', + expand=False) + + extends('lua') + + def install(self, spec, prefix): + luarocks('--tree=' + prefix, 'install', 'mpack-1.0.6-0.src.rock') diff --git a/var/spack/repos/builtin/packages/neovim/package.py b/var/spack/repos/builtin/packages/neovim/package.py new file mode 100644 index 00000000000..102083e3d29 --- /dev/null +++ b/var/spack/repos/builtin/packages/neovim/package.py @@ -0,0 +1,53 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Neovim(CMakePackage): + """NeoVim: the future of vim""" + + homepage = "http://neovim.io" + url = "https://github.com/neovim/neovim/archive/v0.2.0.tar.gz" + + version('0.2.0', '9af7f61f9f0b1a2891147a479d185aa2') + + depends_on('lua@5.1:5.2') + depends_on('lua-lpeg') + depends_on('lua-mpack') + depends_on('lua-bitlib') + depends_on('libuv') + depends_on('jemalloc') + depends_on('libtermkey') + depends_on('libvterm') + depends_on('unibilium') + depends_on('msgpack-c') + + def cmake_args(self): + # FIXME: Add arguments other than + # FIXME: CMAKE_INSTALL_PREFIX and CMAKE_BUILD_TYPE + # FIXME: If not needed delete this function + args = [] + return args From 41d8981ab5b5e912d38e201b71b981ef0f17e20e Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 5 Sep 2017 17:15:25 +0200 Subject: [PATCH 1604/2394] Fixed bug in `spack env` due to missing argument. (#5280) This command broke after #5109. It was using the default value for the "dirty" argument in `setup_package`. Now it adopts the same logic as in `spack install`. Changed help for '--clean' and '--dirty'. Improved coverage of spack env. --- lib/spack/spack/cmd/common/arguments.py | 5 +-- lib/spack/spack/cmd/env.py | 12 ++++--- lib/spack/spack/test/cmd/env.py | 48 +++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 lib/spack/spack/test/cmd/env.py diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index d1b04187707..11c90b2ee40 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -113,7 +113,8 @@ def __call__(self, parser, namespace, values, option_string=None): '--clean', action=CleanOrDirtyAction, dest='dirty', - help='clean environment before installing package', + help='sanitize the environment from variables that can affect how ' + + ' packages find libraries or headers', nargs=0 ) @@ -121,7 +122,7 @@ def __call__(self, parser, namespace, values, option_string=None): '--dirty', action=CleanOrDirtyAction, dest='dirty', - help='do NOT clean environment before installing', + help='maintain the current environment without trying to sanitize it', nargs=0 ) diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index b11216044ac..343717a1916 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -24,12 +24,13 @@ ############################################################################## from __future__ import print_function -import os import argparse +import os import llnl.util.tty as tty -import spack.cmd import spack.build_environment as build_env +import spack.cmd +import spack.cmd.common.arguments as arguments description = "show install environment for a spec, and run commands" section = "build" @@ -37,6 +38,7 @@ def setup_parser(subparser): + arguments.add_common_arguments(subparser, ['clean', 'dirty']) subparser.add_argument( 'spec', nargs=argparse.REMAINDER, help="specs of package environment to emulate") @@ -54,17 +56,17 @@ def env(parser, args): if sep in args.spec: s = args.spec.index(sep) spec = args.spec[:s] - cmd = args.spec[s + 1:] + cmd = args.spec[s + 1:] else: spec = args.spec[0] - cmd = args.spec[1:] + cmd = args.spec[1:] specs = spack.cmd.parse_specs(spec, concretize=True) if len(specs) > 1: tty.die("spack env only takes one spec.") spec = specs[0] - build_env.setup_package(spec.package) + build_env.setup_package(spec.package, args.dirty) if not cmd: # If no command act like the "env" command and print out env vars. diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py new file mode 100644 index 00000000000..a20d3791e9d --- /dev/null +++ b/lib/spack/spack/test/cmd/env.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 pytest + +from spack.main import SpackCommand, SpackCommandError + +info = SpackCommand('env') + + +@pytest.mark.parametrize('pkg', [ + ('zlib',), + ('zlib', '--') +]) +@pytest.mark.usefixtures('config') +def test_it_just_runs(pkg): + info(*pkg) + + +@pytest.mark.parametrize('pkg,error_cls', [ + ('zlib libszip', SpackCommandError), + ('', IndexError) +]) +@pytest.mark.usefixtures('config') +def test_it_just_fails(pkg, error_cls): + with pytest.raises(error_cls): + info(pkg) From feefdedadf224315d69ef2f6da1fafd6338bba5a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 5 Sep 2017 13:15:08 -0600 Subject: [PATCH 1605/2394] nauty: shared libraries (#5207) --- .../repos/builtin/packages/nauty/package.py | 95 +++++++++---------- 1 file changed, 45 insertions(+), 50 deletions(-) diff --git a/var/spack/repos/builtin/packages/nauty/package.py b/var/spack/repos/builtin/packages/nauty/package.py index 11c7945f39b..1dc60a28ac4 100644 --- a/var/spack/repos/builtin/packages/nauty/package.py +++ b/var/spack/repos/builtin/packages/nauty/package.py @@ -23,67 +23,62 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -import shutil +import os from spack import * -class Nauty(Package): +class Nauty(AutotoolsPackage): """nauty and Traces are programs for computing automorphism groups of graphsq and digraphs""" homepage = "http://pallini.di.uniroma1.it/index.html" url = "http://pallini.di.uniroma1.it/nauty26r7.tar.gz" version('2.6r7', 'b2b18e03ea7698db3fbe06c5d76ad8fe') - version('2.6r5', '91b03a7b069962e94fc9aac8831ce8d2') - version('2.5r9', 'e8ecd08b0892a1fb13329c147f08de6d') + + # Debian/ Fedora patches for @2.6r7: + urls_for_patches = { + '@2.6r7': [ + # Debian patch to fix the gt_numorbits declaration + ('https://src.fedoraproject.org/rpms/nauty/raw/0f07d01caf84e9d30cb06b11af4860dd3837636a/f/nauty-fix-gt_numorbits.patch', 'a6e1ef4897aabd67c104fd1d78bcc334'), # noqa: E50 + # Debian patch to add explicit extern declarations where needed + ('https://src.fedoraproject.org/rpms/nauty/raw/0f07d01caf84e9d30cb06b11af4860dd3837636a/f/nauty-fix-include-extern.patch', '741034dec2d2f8b418b6e186aa3eb50f'), # noqa: E50 + # Debian patch to use zlib instead of invoking zcat through a pipe + ('https://src.fedoraproject.org/rpms/nauty/raw/0f07d01caf84e9d30cb06b11af4860dd3837636a/f/nauty-zlib-blisstog.patch', '667e1ce341f2506482ad30afd04f17e3'), # noqa: E50 + # Debian patch to improve usage and help information + ('https://src.fedoraproject.org/rpms/nauty/raw/0f07d01caf84e9d30cb06b11af4860dd3837636a/f/nauty-help2man.patch', '4202e6d83362daa2c4c4ab0788e11ac5'), # noqa: E50 + # Debian patch to add libtool support for building a shared library + ('https://src.fedoraproject.org/rpms/nauty/raw/0f07d01caf84e9d30cb06b11af4860dd3837636a/f/nauty-autotoolization.patch', 'ea75f19c8a980c4d6d4e07223785c751'), # noqa: E50 + # Debian patch to canonicalize header file usage + ('https://src.fedoraproject.org/rpms/nauty/raw/0f07d01caf84e9d30cb06b11af4860dd3837636a/f/nauty-includes.patch', 'c6ce4209d1381fb5489ed552ef35d7dc'), # noqa: E50 + # Debian patch to prefix "nauty-" to the names of the generic tools + ('https://src.fedoraproject.org/rpms/nauty/raw/0f07d01caf84e9d30cb06b11af4860dd3837636a/f/nauty-tool-prefix.patch', 'e89d87b4450adc5d0009ce11438dc975'), # noqa: E50 + # Fedora patch to detect availability of the popcnt + # instruction at runtime + ('https://src.fedoraproject.org/rpms/nauty/raw/0f07d01caf84e9d30cb06b11af4860dd3837636a/f/nauty-popcnt.patch', '8a32d31a7150c8f5f21ccb1f6dc857b1') # noqa: E50 + ] + } + # Iterate over patches + for condition, urls in urls_for_patches.items(): + for url, md5 in urls: + patch(url, when=condition, level=1, md5=md5) + + depends_on('m4', type='build', when='@2.6r7') + depends_on('autoconf', type='build', when='@2.6r7') + depends_on('automake', type='build', when='@2.6r7') + depends_on('libtool', type='build', when='@2.6r7') + depends_on('pkg-config', type='build') + depends_on('zlib') + + @property + def force_autoreconf(self): + return self.spec.satisfies('@2.6r7') def url_for_version(self, version): url = "http://pallini.di.uniroma1.it/nauty{0}.tar.gz" return url.format(version.joined) - def install(self, spec, prefix): - configure('--prefix=%s' % prefix) - make() - - exes = [ - "NRswitchg", - "addedgeg", - "amtog", - "biplabg", - "catg", - "complg", - "converseg", - "copyg", - "countg", - "cubhamg", - "deledgeg", - "delptg", - "directg", - "dreadnaut", - "dretodot", - "dretog", - "genbg", - "genbgL", - "geng", - "genquarticg", - "genrang", - "genspecialg", - "gentourng", - "gentreeg", - "hamheuristic", - "labelg", - "linegraphg", - "listg", - "multig", - "newedgeg", - "pickg", - "planarg", - "ranlabg", - "shortg", - "subdivideg", - "twohamg", - "vcolg", - "watercluster2"] - mkdirp(prefix.bin) - for exe in exes: - shutil.copyfile(exe, join_path(prefix.bin, exe)) + def patch(self): + os.remove('makefile') + ver = str(self.version.dotted).replace('r', '.') + if self.spec.satisfies('@2.6r7'): + filter_file('@INJECTVER@', ver, "configure.ac") From d1a5857a03dc2e21f5514fa2bcfafe0ec0210f12 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Wed, 6 Sep 2017 03:44:42 +0200 Subject: [PATCH 1606/2394] Added support for querying by tags (#4786) * Added support to query packages by tags. - The querying commands `spack list`, `spack find` and `spack info` have been modified to support querying by tags. Tests have been added to check that the feature is working correctly under what should be the most frequent use cases. * Refactored Repo class to make insertion of new file caches easier. - Added the class FastPackageChecker. This class is a Mapping from package names to stat info, that gets memoized for faster access. - Extracted the creation of a ProviderIndex to its own factory function. * Added a cache file for tags. - Following what was done for providers, a TagIndex class has been added. This class can serialize and deserialize objects from json. Repo and RepoPath have a new method 'packages_with_tags', that uses the TagIndex to compute a list of package names that have all the tags passed as arguments. On Ubuntu 14.04 the effect if the cache reduces the time for spack list from ~3sec. to ~0.3sec. after the cache has been built. * Fixed colorization of `spack info` --- lib/spack/spack/cmd/common/arguments.py | 14 +- lib/spack/spack/cmd/find.py | 13 +- lib/spack/spack/cmd/info.py | 26 +- lib/spack/spack/cmd/list.py | 14 +- lib/spack/spack/file_cache.py | 2 +- lib/spack/spack/repository.py | 396 +++++++++++++----- lib/spack/spack/test/cmd/find.py | 57 +++ lib/spack/spack/test/cmd/info.py | 52 +++ lib/spack/spack/test/cmd/list.py | 73 ++++ .../builtin.mock/packages/mpich/package.py | 2 + .../builtin.mock/packages/mpich2/package.py | 2 + .../repos/builtin/packages/aspa/package.py | 7 +- 12 files changed, 526 insertions(+), 132 deletions(-) create mode 100644 lib/spack/spack/test/cmd/list.py diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 11c90b2ee40..46be3468378 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -26,15 +26,23 @@ import argparse import spack.cmd -import spack.store import spack.modules +import spack.spec +import spack.store from spack.util.pattern import Args + __all__ = ['add_common_arguments'] _arguments = {} def add_common_arguments(parser, list_of_arguments): + """Extend a parser with extra arguments + + Args: + parser: parser to be extended + list_of_arguments: arguments to be added to the parser + """ for argument in list_of_arguments: if argument not in _arguments: message = 'Trying to add non existing argument "{0}" to a command' @@ -133,3 +141,7 @@ def __call__(self, parser, namespace, values, option_string=None): _arguments['very_long'] = Args( '-L', '--very-long', action='store_true', help='show full dependency hashes as well as versions') + +_arguments['tags'] = Args( + '-t', '--tags', action='append', + help='filter a package query by tags') diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index 02ff10f4254..b7aa390c592 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -25,8 +25,8 @@ import sys import llnl.util.tty as tty +import spack import spack.cmd.common.arguments as arguments - from spack.cmd import display_specs description = "list and search installed packages" @@ -54,7 +54,7 @@ def setup_parser(subparser): const='deps', help='show full dependency DAG of installed packages') - arguments.add_common_arguments(subparser, ['long', 'very_long']) + arguments.add_common_arguments(subparser, ['long', 'very_long', 'tags']) subparser.add_argument('-f', '--show-flags', action='store_true', @@ -123,11 +123,16 @@ def find(parser, args): # Exit early if no package matches the constraint if not query_specs and args.constraint: - msg = "No package matches the query: {0}".format( - ' '.join(args.constraint)) + msg = "No package matches the query: {0}" + msg = msg.format(' '.join(args.constraint)) tty.msg(msg) return + # If tags have been specified on the command line, filter by tags + if args.tags: + packages_with_tags = spack.repo.packages_with_tags(*args.tags) + query_specs = [x for x in query_specs if x.name in packages_with_tags] + # Display the result if sys.stdout.isatty(): tty.msg("%d installed packages." % len(query_specs)) diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index b7f824c0915..32369987106 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -26,15 +26,15 @@ import textwrap +from six.moves import zip_longest + +from llnl.util.tty.colify import * + import llnl.util.tty.color as color import spack import spack.fetch_strategy as fs import spack.spec -from llnl.util.tty.colify import * - -from six.moves import zip_longest - description = 'get detailed information on a particular package' section = 'basic' level = 'short' @@ -156,9 +156,9 @@ def print_text_info(pkg): color.cprint('') color.cprint(section_title('Description:')) if pkg.__doc__: - print(pkg.format_doc(indent=4)) + color.cprint(pkg.format_doc(indent=4)) else: - print(" None") + color.cprint(" None") color.cprint(section_title('Homepage: ') + pkg.homepage) @@ -167,6 +167,14 @@ def print_text_info(pkg): color.cprint('') color.cprint(section_title('Maintainers: ') + mnt) + color.cprint('') + color.cprint(section_title("Tags: ")) + if hasattr(pkg, 'tags'): + tags = sorted(pkg.tags) + colify(tags, indent=4) + else: + color.cprint(" None") + color.cprint('') color.cprint(section_title('Preferred version: ')) @@ -220,7 +228,7 @@ def print_text_info(pkg): if deps: colify(deps, indent=4) else: - print(' None') + color.cprint(' None') color.cprint('') color.cprint(section_title('Virtual Packages: ')) @@ -238,7 +246,9 @@ def print_text_info(pkg): print(line) else: - print(" None") + color.cprint(" None") + + color.cprint('') def info(parser, args): diff --git a/lib/spack/spack/cmd/list.py b/lib/spack/spack/cmd/list.py index 5b915b94ecb..730ad8d9d92 100644 --- a/lib/spack/spack/cmd/list.py +++ b/lib/spack/spack/cmd/list.py @@ -29,12 +29,15 @@ import fnmatch import re import sys + from six import StringIO import llnl.util.tty as tty -import spack from llnl.util.tty.colify import colify +import spack +import spack.cmd.common.arguments as arguments + description = "list and search available packages" section = "basic" level = "short" @@ -60,6 +63,8 @@ def setup_parser(subparser): '--format', default='name_only', choices=formatters, help='format to be used to print the output [default: name_only]') + arguments.add_common_arguments(subparser, ['tags']) + def filter_by_name(pkgs, args): """ @@ -183,5 +188,12 @@ def list(parser, args): pkgs = set(spack.repo.all_package_names()) # Filter the set appropriately sorted_packages = filter_by_name(pkgs, args) + + # Filter by tags + if args.tags: + packages_with_tags = set(spack.repo.packages_with_tags(*args.tags)) + sorted_packages = set(sorted_packages) & packages_with_tags + sorted_packages = sorted(sorted_packages) + # Print to stdout formatters[args.format](sorted_packages) diff --git a/lib/spack/spack/file_cache.py b/lib/spack/spack/file_cache.py index f09be4ecd53..6a6d59942e3 100644 --- a/lib/spack/spack/file_cache.py +++ b/lib/spack/spack/file_cache.py @@ -35,7 +35,7 @@ class FileCache(object): """This class manages cached data in the filesystem. - Cache files are fetched and stored by unique keys. Keys can be relative - paths, so that thre can be some hierarchy in the cache. + paths, so that there can be some hierarchy in the cache. - The FileCache handles locking cache files for reading and writing, so client code need not manage locks for cache entries. diff --git a/lib/spack/spack/repository.py b/lib/spack/spack/repository.py index 0a6a774315a..fbca9474fbe 100644 --- a/lib/spack/spack/repository.py +++ b/lib/spack/spack/repository.py @@ -22,6 +22,7 @@ # 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 collections import os import stat import shutil @@ -31,11 +32,18 @@ import imp import re import traceback -from bisect import bisect_left +import json + +try: + from collections.abc import Mapping +except ImportError: + from collections import Mapping + from types import ModuleType import yaml +import llnl.util.lang import llnl.util.tty as tty from llnl.util.filesystem import * @@ -93,6 +101,242 @@ def __getattr__(self, name): return getattr(self, name) +class FastPackageChecker(Mapping): + """Cache that maps package names to the stats obtained on the + 'package.py' files associated with them. + + For each repository a cache is maintained at class level, and shared among + all instances referring to it. Update of the global cache is done lazily + during instance initialization. + """ + #: Global cache, reused by every instance + _paths_cache = {} + + def __init__(self, packages_path): + + #: The path of the repository managed by this instance + self.packages_path = packages_path + + # If the cache we need is not there yet, then build it appropriately + if packages_path not in self._paths_cache: + self._paths_cache[packages_path] = self._create_new_cache() + + #: Reference to the appropriate entry in the global cache + self._packages_to_stats = self._paths_cache[packages_path] + + def _create_new_cache(self): + """Create a new cache for packages in a repo. + + The implementation here should try to minimize filesystem + calls. At the moment, it is O(number of packages) and makes + about one stat call per package. This is reasonably fast, and + avoids actually importing packages in Spack, which is slow. + """ + # Create a dictionary that will store the mapping between a + # package name and its stat info + cache = {} + for pkg_name in os.listdir(self.packages_path): + # Skip non-directories in the package root. + pkg_dir = join_path(self.packages_path, pkg_name) + + # Warn about invalid names that look like packages. + if not valid_module_name(pkg_name): + msg = 'Skipping package at {0}. ' + msg += '"{1]" is not a valid Spack module name.' + tty.warn(msg.format(pkg_dir, pkg_name)) + continue + + # Construct the file name from the directory + pkg_file = os.path.join( + self.packages_path, pkg_name, package_file_name + ) + + # Use stat here to avoid lots of calls to the filesystem. + try: + sinfo = os.stat(pkg_file) + except OSError as e: + if e.errno == errno.ENOENT: + # No package.py file here. + continue + elif e.errno == errno.EACCES: + tty.warn("Can't read package file %s." % pkg_file) + continue + raise e + + # If it's not a file, skip it. + if stat.S_ISDIR(sinfo.st_mode): + continue + + # If it is a file, then save the stats under the + # appropriate key + cache[pkg_name] = sinfo + + return cache + + def __getitem__(self, item): + return self._packages_to_stats[item] + + def __iter__(self): + return iter(self._packages_to_stats) + + def __len__(self): + return len(self._packages_to_stats) + + +class TagIndex(Mapping): + """Maps tags to list of packages.""" + + def __init__(self): + self._tag_dict = collections.defaultdict(list) + + def to_json(self, stream): + json.dump({'tags': self._tag_dict}, stream) + + @staticmethod + def from_json(stream): + d = json.load(stream) + + r = TagIndex() + + for tag, list in d['tags'].items(): + r[tag].extend(list) + + return r + + def __getitem__(self, item): + return self._tag_dict[item] + + def __iter__(self): + return iter(self._tag_dict) + + def __len__(self): + return len(self._tag_dict) + + def update_package(self, pkg_name): + """Updates a package in the tag index. + + Args: + pkg_name (str): name of the package to be removed from the index + + """ + + package = spack.repo.get(pkg_name) + + # Remove the package from the list of packages, if present + for pkg_list in self._tag_dict.values(): + if pkg_name in pkg_list: + pkg_list.remove(pkg_name) + + # Add it again under the appropriate tags + for tag in getattr(package, 'tags', []): + self._tag_dict[tag].append(package.name) + + +@llnl.util.lang.memoized +def make_provider_index_cache(packages_path, namespace): + """Lazily updates the provider index cache associated with a repository, + if need be, then returns it. Caches results for later look-ups. + + Args: + packages_path: path of the repository + namespace: namespace of the repository + + Returns: + instance of ProviderIndex + """ + # Map that goes from package names to stat info + fast_package_checker = FastPackageChecker(packages_path) + + # Filename of the provider index cache + cache_filename = 'providers/{0}-index.yaml'.format(namespace) + + # Compute which packages needs to be updated in the cache + index_mtime = spack.misc_cache.mtime(cache_filename) + + needs_update = [ + x for x, sinfo in fast_package_checker.items() + if sinfo.st_mtime > index_mtime + ] + + # Read the old ProviderIndex, or make a new one. + index_existed = spack.misc_cache.init_entry(cache_filename) + + if index_existed and not needs_update: + + # If the provider index exists and doesn't need an update + # just read from it + with spack.misc_cache.read_transaction(cache_filename) as f: + index = ProviderIndex.from_yaml(f) + + else: + + # Otherwise we need a write transaction to update it + with spack.misc_cache.write_transaction(cache_filename) as (old, new): + + index = ProviderIndex.from_yaml(old) if old else ProviderIndex() + + for pkg_name in needs_update: + namespaced_name = '{0}.{1}'.format(namespace, pkg_name) + index.remove_provider(namespaced_name) + index.update(namespaced_name) + + index.to_yaml(new) + + return index + + +@llnl.util.lang.memoized +def make_tag_index_cache(packages_path, namespace): + """Lazily updates the tag index cache associated with a repository, + if need be, then returns it. Caches results for later look-ups. + + Args: + packages_path: path of the repository + namespace: namespace of the repository + + Returns: + instance of TagIndex + """ + # Map that goes from package names to stat info + fast_package_checker = FastPackageChecker(packages_path) + + # Filename of the provider index cache + cache_filename = 'tags/{0}-index.json'.format(namespace) + + # Compute which packages needs to be updated in the cache + index_mtime = spack.misc_cache.mtime(cache_filename) + + needs_update = [ + x for x, sinfo in fast_package_checker.items() + if sinfo.st_mtime > index_mtime + ] + + # Read the old ProviderIndex, or make a new one. + index_existed = spack.misc_cache.init_entry(cache_filename) + + if index_existed and not needs_update: + + # If the provider index exists and doesn't need an update + # just read from it + with spack.misc_cache.read_transaction(cache_filename) as f: + index = TagIndex.from_json(f) + + else: + + # Otherwise we need a write transaction to update it + with spack.misc_cache.write_transaction(cache_filename) as (old, new): + + index = TagIndex.from_json(old) if old else TagIndex() + + for pkg_name in needs_update: + namespaced_name = '{0}.{1}'.format(namespace, pkg_name) + index.update_package(namespaced_name) + + index.to_json(new) + + return index + + class RepoPath(object): """A RepoPath is a list of repos that function as one. @@ -220,6 +464,12 @@ def all_package_names(self): self._all_package_names = sorted(all_pkgs, key=lambda n: n.lower()) return self._all_package_names + def packages_with_tags(self, *tags): + r = set() + for repo in self.repos: + r |= set(repo.packages_with_tags(*tags)) + return sorted(r) + def all_packages(self): for name in self.all_package_names(): yield self.get(name) @@ -422,21 +672,18 @@ def check(condition, msg): self._classes = {} self._instances = {} - # list of packages that are newer than the index. - self._needs_update = [] + # Maps that goes from package name to corresponding file stat + self._fast_package_checker = FastPackageChecker(self.packages_path) - # Index of virtual dependencies + # Index of virtual dependencies, computed lazily self._provider_index = None - # Cached list of package names. - self._all_package_names = None + # Index of tags, computed lazily + self._tag_index = None # make sure the namespace for packages in this repo exists. self._create_namespace() - # Unique filename for cache of virtual dependency providers - self._cache_file = 'providers/%s-index.yaml' % self.namespace - def _create_namespace(self): """Create this repo's namespace module and insert it into sys.modules. @@ -617,41 +864,28 @@ def purge(self): """Clear entire package instance cache.""" self._instances.clear() - def _update_provider_index(self): - # Check modification dates of all packages - self._fast_package_check() - - def read(): - with open(self.index_file) as f: - self._provider_index = ProviderIndex.from_yaml(f) - - # Read the old ProviderIndex, or make a new one. - key = self._cache_file - index_existed = spack.misc_cache.init_entry(key) - if index_existed and not self._needs_update: - with spack.misc_cache.read_transaction(key) as f: - self._provider_index = ProviderIndex.from_yaml(f) - else: - with spack.misc_cache.write_transaction(key) as (old, new): - if old: - self._provider_index = ProviderIndex.from_yaml(old) - else: - self._provider_index = ProviderIndex() - - for pkg_name in self._needs_update: - namespaced_name = '%s.%s' % (self.namespace, pkg_name) - self._provider_index.remove_provider(namespaced_name) - self._provider_index.update(namespaced_name) - - self._provider_index.to_yaml(new) - @property def provider_index(self): """A provider index with names *specific* to this repo.""" + if self._provider_index is None: - self._update_provider_index() + self._provider_index = make_provider_index_cache( + self.packages_path, self.namespace + ) + return self._provider_index + @property + def tag_index(self): + """A provider index with names *specific* to this repo.""" + + if self._tag_index is None: + self._tag_index = make_tag_index_cache( + self.packages_path, self.namespace + ) + + return self._tag_index + @_autospec def providers_for(self, vpkg_spec): providers = self.provider_index.providers_for(vpkg_spec) @@ -689,73 +923,18 @@ def filename_for_package_name(self, spec): pkg_dir = self.dirname_for_package_name(spec.name) return join_path(pkg_dir, package_file_name) - def _fast_package_check(self): - """List packages in the repo and check whether index is up to date. - - Both of these opreations require checking all `package.py` - files so we do them at the same time. We list the repo - directory and look at package.py files, and we compare the - index modification date with the ost recently modified package - file, storing the result. - - The implementation here should try to minimize filesystem - calls. At the moment, it is O(number of packages) and makes - about one stat call per package. This is resonably fast, and - avoids actually importing packages in Spack, which is slow. - - """ - if self._all_package_names is None: - self._all_package_names = [] - - # Get index modification time. - index_mtime = spack.misc_cache.mtime(self._cache_file) - - for pkg_name in os.listdir(self.packages_path): - # Skip non-directories in the package root. - pkg_dir = join_path(self.packages_path, pkg_name) - - # Warn about invalid names that look like packages. - if not valid_module_name(pkg_name): - msg = ("Skipping package at %s. " - "'%s' is not a valid Spack module name.") - tty.warn(msg % (pkg_dir, pkg_name)) - continue - - # construct the file name from the directory - pkg_file = join_path( - self.packages_path, pkg_name, package_file_name) - - # Use stat here to avoid lots of calls to the filesystem. - try: - sinfo = os.stat(pkg_file) - except OSError as e: - if e.errno == errno.ENOENT: - # No package.py file here. - continue - elif e.errno == errno.EACCES: - tty.warn("Can't read package file %s." % pkg_file) - continue - raise e - - # if it's not a file, skip it. - if stat.S_ISDIR(sinfo.st_mode): - continue - - # All checks passed. Add it to the list. - self._all_package_names.append(pkg_name) - - # record the package if it is newer than the index. - if sinfo.st_mtime > index_mtime: - self._needs_update.append(pkg_name) - - self._all_package_names.sort() - - return self._all_package_names - def all_package_names(self): """Returns a sorted list of all package names in the Repo.""" - self._fast_package_check() - return self._all_package_names + return sorted(self._fast_package_checker.keys()) + + def packages_with_tags(self, *tags): + v = set(self.all_package_names()) + index = self.tag_index + + for t in tags: + v &= set(index[t]) + + return sorted(v) def all_packages(self): """Iterator over all packages in the repository. @@ -768,16 +947,7 @@ def all_packages(self): def exists(self, pkg_name): """Whether a package with the supplied name exists.""" - if self._all_package_names: - # This does a binary search in the sorted list. - idx = bisect_left(self.all_package_names(), pkg_name) - return (idx < len(self._all_package_names) and - self._all_package_names[idx] == pkg_name) - - # If we haven't generated the full package list, don't. - # Just check whether the file exists. - filename = self.filename_for_package_name(pkg_name) - return os.path.exists(filename) + return pkg_name in self._fast_package_checker def is_virtual(self, pkg_name): """True if the package with this name is virtual, False otherwise.""" diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py index b082b71c061..57dd6883627 100644 --- a/lib/spack/spack/test/cmd/find.py +++ b/lib/spack/spack/test/cmd/find.py @@ -22,12 +22,40 @@ # 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 argparse + +import pytest import spack.cmd.find from spack.util.pattern import Bunch +@pytest.fixture(scope='module') +def parser(): + """Returns the parser for the module command""" + prs = argparse.ArgumentParser() + spack.cmd.find.setup_parser(prs) + return prs + + +@pytest.fixture() +def specs(): + s = [] + return s + + +@pytest.fixture() +def mock_display(monkeypatch, specs): + """Monkeypatches the display function to return its first argument""" + + def display(x, *args, **kwargs): + specs.extend(x) + + monkeypatch.setattr(spack.cmd.find, 'display_specs', display) + + def test_query_arguments(): query_arguments = spack.cmd.find.query_arguments + # Default arguments args = Bunch( only_missing=False, @@ -36,6 +64,7 @@ def test_query_arguments(): explicit=False, implicit=False ) + q_args = query_arguments(args) assert 'installed' in q_args assert 'known' in q_args @@ -43,11 +72,39 @@ def test_query_arguments(): assert q_args['installed'] is True assert q_args['known'] is any assert q_args['explicit'] is any + # Check that explicit works correctly args.explicit = True q_args = query_arguments(args) assert q_args['explicit'] is True + args.explicit = False args.implicit = True q_args = query_arguments(args) assert q_args['explicit'] is False + + +@pytest.mark.usefixtures('database', 'mock_display') +class TestFindWithTags(object): + + def test_tag1(self, parser, specs): + + args = parser.parse_args(['--tags', 'tag1']) + spack.cmd.find.find(parser, args) + + assert len(specs) == 2 + assert 'mpich' in [x.name for x in specs] + assert 'mpich2' in [x.name for x in specs] + + def test_tag2(self, parser, specs): + args = parser.parse_args(['--tags', 'tag2']) + spack.cmd.find.find(parser, args) + + assert len(specs) == 1 + assert 'mpich' in [x.name for x in specs] + + def test_tag2_tag3(self, parser, specs): + args = parser.parse_args(['--tags', 'tag2', '--tags', 'tag3']) + spack.cmd.find.find(parser, args) + + assert len(specs) == 0 diff --git a/lib/spack/spack/test/cmd/info.py b/lib/spack/spack/test/cmd/info.py index 9819f2cd84f..6c71515a3f0 100644 --- a/lib/spack/spack/test/cmd/info.py +++ b/lib/spack/spack/test/cmd/info.py @@ -22,13 +22,39 @@ # 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 argparse + import pytest +import spack.cmd.info from spack.main import SpackCommand info = SpackCommand('info') +@pytest.fixture(scope='module') +def parser(): + """Returns the parser for the module command""" + prs = argparse.ArgumentParser() + spack.cmd.info.setup_parser(prs) + return prs + + +@pytest.fixture() +def info_lines(): + lines = [] + return lines + + +@pytest.fixture() +def mock_print(monkeypatch, info_lines): + + def _print(*args): + info_lines.extend(args) + + monkeypatch.setattr(spack.cmd.info.color, 'cprint', _print, raising=False) + + @pytest.mark.parametrize('pkg', [ 'openmpi', 'trilinos', @@ -38,3 +64,29 @@ ]) def test_it_just_runs(pkg): info(pkg) + + +@pytest.mark.parametrize('pkg_query', [ + 'hdf5', + 'cloverleaf3d', + 'trilinos' +]) +@pytest.mark.usefixtures('mock_print') +def test_info_fields(pkg_query, parser, info_lines): + + expected_fields = ( + 'Description:', + 'Homepage:', + 'Safe versions:', + 'Variants:', + 'Installation Phases:', + 'Virtual Packages:', + 'Tags:' + ) + + args = parser.parse_args([pkg_query]) + spack.cmd.info.info(parser, args) + + for text in expected_fields: + match = [x for x in info_lines if text in x] + assert match diff --git a/lib/spack/spack/test/cmd/list.py b/lib/spack/spack/test/cmd/list.py new file mode 100644 index 00000000000..244ae5fcbce --- /dev/null +++ b/lib/spack/spack/test/cmd/list.py @@ -0,0 +1,73 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 argparse + +import pytest +import spack.cmd.list + + +@pytest.fixture(scope='module') +def parser(): + """Returns the parser for the module command""" + prs = argparse.ArgumentParser() + spack.cmd.list.setup_parser(prs) + return prs + + +@pytest.fixture() +def pkg_names(): + pkg_names = [] + return pkg_names + + +@pytest.fixture() +def mock_name_only(monkeypatch, pkg_names): + + def name_only(x): + pkg_names.extend(x) + + monkeypatch.setattr(spack.cmd.list, 'name_only', name_only) + monkeypatch.setitem(spack.cmd.list.formatters, 'name_only', name_only) + + +@pytest.mark.usefixtures('mock_name_only') +class TestListCommand(object): + + def test_list_without_filters(self, parser, pkg_names): + + args = parser.parse_args([]) + spack.cmd.list.list(parser, args) + + assert pkg_names + assert 'cloverleaf3d' in pkg_names + assert 'hdf5' in pkg_names + + def test_list_with_filters(self, parser, pkg_names): + args = parser.parse_args(['--tags', 'proxy-app']) + spack.cmd.list.list(parser, args) + + assert pkg_names + assert 'cloverleaf3d' in pkg_names + assert 'hdf5' not in pkg_names \ No newline at end of file diff --git a/var/spack/repos/builtin.mock/packages/mpich/package.py b/var/spack/repos/builtin.mock/packages/mpich/package.py index 28d7b57f2df..844cfb940c9 100644 --- a/var/spack/repos/builtin.mock/packages/mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/mpich/package.py @@ -31,6 +31,8 @@ class Mpich(Package): list_url = "http://www.mpich.org/static/downloads/" list_depth = 2 + tags = ['tag1', 'tag2'] + variant('debug', default=False, description="Compile MPICH with debug flags.") diff --git a/var/spack/repos/builtin.mock/packages/mpich2/package.py b/var/spack/repos/builtin.mock/packages/mpich2/package.py index bdb5f914c9a..aabd5232d7c 100644 --- a/var/spack/repos/builtin.mock/packages/mpich2/package.py +++ b/var/spack/repos/builtin.mock/packages/mpich2/package.py @@ -31,6 +31,8 @@ class Mpich2(Package): list_url = "http://www.mpich.org/static/downloads/" list_depth = 2 + tags = ['tag1', 'tag3'] + version('1.5', '9c5d5d4fe1e17dd12153f40bc5b6dbc0') version('1.4', 'foobarbaz') version('1.3', 'foobarbaz') diff --git a/var/spack/repos/builtin/packages/aspa/package.py b/var/spack/repos/builtin/packages/aspa/package.py index 863c8a29806..3b0e0e4c263 100644 --- a/var/spack/repos/builtin/packages/aspa/package.py +++ b/var/spack/repos/builtin/packages/aspa/package.py @@ -28,10 +28,9 @@ class Aspa(MakefilePackage): """A fundamental premise in ExMatEx is that scale-bridging performed in - heterogeneous MPMD materials science simulations will place important - demands upon the exascale ecosystem that need to be identified and - quantified. - tags = proxy-app + heterogeneous MPMD materials science simulations will place important + demands upon the exascale ecosystem that need to be identified and + quantified. """ tags = ['proxy-app'] homepage = "http://www.exmatex.org/aspa.html" From 01a9a048ad2c03fe61d5684f6e8618bdf681aa61 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Wed, 6 Sep 2017 12:04:32 +0200 Subject: [PATCH 1607/2394] elemental: fix hardcode libgfortran, use develop and explicitly specify MPI compilers (#5263) --- .../repos/builtin/packages/elemental/package.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index 87317bd9092..657f185c7fc 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -33,7 +33,7 @@ class Elemental(CMakePackage): homepage = "http://libelemental.org" url = "https://github.com/elemental/Elemental/archive/v0.87.6.tar.gz" - version('master', git='https://github.com/elemental/Elemental.git', branch='master') + version('develop', git='https://github.com/elemental/Elemental.git', branch='master') version('0.87.7', '6c1e7442021c59a36049e37ea69b8075') version('0.87.6', '9fd29783d45b0a0e27c0df85f548abe9') @@ -110,9 +110,11 @@ def cmake_args(self): args = [ '-DCMAKE_INSTALL_MESSAGE:STRING=LAZY', + '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc, + '-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx, + '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc, '-DEL_PREFER_OPENBLAS:BOOL=TRUE', '-DEL_DISABLE_SCALAPACK:BOOL=%s' % ('~scalapack' in spec), - '-DGFORTRAN_LIB=libgfortran.so', '-DBUILD_SHARED_LIBS:BOOL=%s' % ('+shared' in spec), '-DEL_HYBRID:BOOL=%s' % ('+hybrid' in spec), '-DEL_C_INTERFACE:BOOL=%s' % ('+c' in spec), @@ -122,6 +124,13 @@ def cmake_args(self): '-DEL_USE_64BIT_INTS:BOOL=%s' % ('+int64' in spec), '-DEL_USE_64BIT_BLAS_INTS:BOOL=%s' % ('+int64_blas' in spec)] + # see /debian/rules as an example: + mpif77 = Executable(spec['mpi'].mpif77) + libgfortran = LibraryList(mpif77('--print-file-name', + 'libgfortran.%s' % dso_suffix, + output=str)) + args.append('-DGFORTRAN_LIB=%s' % libgfortran.libraries[0]) + # If using 64bit int BLAS libraries, elemental has to build # them internally if '+int64_blas' in spec: From 84ae7872d36fef95872250cfe801ec0d12f3d28f Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 7 Sep 2017 05:44:16 +0200 Subject: [PATCH 1608/2394] Update copyright notices for 2017 (#5295) --- bin/sbang | 2 +- bin/spack | 2 +- bin/spack-python | 2 +- lib/spack/docs/tutorial/examples/0.package.py | 2 +- lib/spack/docs/tutorial/examples/1.package.py | 2 +- lib/spack/docs/tutorial/examples/2.package.py | 2 +- lib/spack/docs/tutorial/examples/3.package.py | 2 +- lib/spack/docs/tutorial/examples/4.package.py | 2 +- lib/spack/env/cc | 2 +- lib/spack/external/__init__.py | 2 +- lib/spack/llnl/__init__.py | 2 +- lib/spack/llnl/util/__init__.py | 2 +- lib/spack/llnl/util/filesystem.py | 2 +- lib/spack/llnl/util/lang.py | 2 +- lib/spack/llnl/util/link_tree.py | 2 +- lib/spack/llnl/util/lock.py | 2 +- lib/spack/llnl/util/tty/__init__.py | 2 +- lib/spack/llnl/util/tty/colify.py | 2 +- lib/spack/llnl/util/tty/color.py | 2 +- lib/spack/llnl/util/tty/log.py | 2 +- lib/spack/spack/__init__.py | 2 +- lib/spack/spack/abi.py | 2 +- lib/spack/spack/architecture.py | 2 +- lib/spack/spack/binary_distribution.py | 2 +- lib/spack/spack/build_systems/__init__.py | 2 +- lib/spack/spack/build_systems/autotools.py | 2 +- lib/spack/spack/build_systems/cmake.py | 2 +- lib/spack/spack/build_systems/intel.py | 2 +- lib/spack/spack/build_systems/makefile.py | 2 +- lib/spack/spack/build_systems/perl.py | 2 +- lib/spack/spack/build_systems/python.py | 2 +- lib/spack/spack/build_systems/qmake.py | 2 +- lib/spack/spack/build_systems/r.py | 2 +- lib/spack/spack/build_systems/scons.py | 2 +- lib/spack/spack/build_systems/waf.py | 2 +- lib/spack/spack/cmd/__init__.py | 2 +- lib/spack/spack/cmd/activate.py | 2 +- lib/spack/spack/cmd/arch.py | 2 +- lib/spack/spack/cmd/bootstrap.py | 2 +- lib/spack/spack/cmd/build.py | 2 +- lib/spack/spack/cmd/buildcache.py | 2 +- lib/spack/spack/cmd/cd.py | 2 +- lib/spack/spack/cmd/checksum.py | 2 +- lib/spack/spack/cmd/clean.py | 2 +- lib/spack/spack/cmd/common/__init__.py | 2 +- lib/spack/spack/cmd/common/arguments.py | 2 +- lib/spack/spack/cmd/compiler.py | 2 +- lib/spack/spack/cmd/compilers.py | 2 +- lib/spack/spack/cmd/config.py | 2 +- lib/spack/spack/cmd/configure.py | 2 +- lib/spack/spack/cmd/create.py | 2 +- lib/spack/spack/cmd/deactivate.py | 2 +- lib/spack/spack/cmd/debug.py | 2 +- lib/spack/spack/cmd/dependencies.py | 2 +- lib/spack/spack/cmd/dependents.py | 2 +- lib/spack/spack/cmd/diy.py | 2 +- lib/spack/spack/cmd/edit.py | 2 +- lib/spack/spack/cmd/env.py | 2 +- lib/spack/spack/cmd/extensions.py | 2 +- lib/spack/spack/cmd/fetch.py | 2 +- lib/spack/spack/cmd/find.py | 2 +- lib/spack/spack/cmd/flake8.py | 2 +- lib/spack/spack/cmd/gpg.py | 2 +- lib/spack/spack/cmd/graph.py | 2 +- lib/spack/spack/cmd/help.py | 2 +- lib/spack/spack/cmd/info.py | 2 +- lib/spack/spack/cmd/install.py | 2 +- lib/spack/spack/cmd/list.py | 2 +- lib/spack/spack/cmd/load.py | 2 +- lib/spack/spack/cmd/location.py | 2 +- lib/spack/spack/cmd/md5.py | 2 +- lib/spack/spack/cmd/mirror.py | 2 +- lib/spack/spack/cmd/module.py | 2 +- lib/spack/spack/cmd/patch.py | 2 +- lib/spack/spack/cmd/pkg.py | 2 +- lib/spack/spack/cmd/providers.py | 2 +- lib/spack/spack/cmd/python.py | 2 +- lib/spack/spack/cmd/reindex.py | 2 +- lib/spack/spack/cmd/repo.py | 2 +- lib/spack/spack/cmd/restage.py | 2 +- lib/spack/spack/cmd/setup.py | 2 +- lib/spack/spack/cmd/spec.py | 2 +- lib/spack/spack/cmd/stage.py | 2 +- lib/spack/spack/cmd/test.py | 2 +- lib/spack/spack/cmd/uninstall.py | 2 +- lib/spack/spack/cmd/unload.py | 2 +- lib/spack/spack/cmd/unuse.py | 2 +- lib/spack/spack/cmd/url.py | 2 +- lib/spack/spack/cmd/use.py | 2 +- lib/spack/spack/cmd/versions.py | 2 +- lib/spack/spack/cmd/view.py | 2 +- lib/spack/spack/compiler.py | 2 +- lib/spack/spack/compilers/__init__.py | 2 +- lib/spack/spack/compilers/cce.py | 2 +- lib/spack/spack/compilers/clang.py | 2 +- lib/spack/spack/compilers/gcc.py | 2 +- lib/spack/spack/compilers/intel.py | 2 +- lib/spack/spack/compilers/nag.py | 2 +- lib/spack/spack/compilers/pgi.py | 2 +- lib/spack/spack/compilers/xl.py | 2 +- lib/spack/spack/concretize.py | 2 +- lib/spack/spack/config.py | 2 +- lib/spack/spack/database.py | 2 +- lib/spack/spack/directives.py | 2 +- lib/spack/spack/directory_layout.py | 2 +- lib/spack/spack/environment.py | 2 +- lib/spack/spack/error.py | 2 +- lib/spack/spack/fetch_strategy.py | 2 +- lib/spack/spack/file_cache.py | 2 +- lib/spack/spack/graph.py | 2 +- lib/spack/spack/hooks/__init__.py | 2 +- lib/spack/spack/hooks/case_consistency.py | 2 +- lib/spack/spack/hooks/extensions.py | 2 +- lib/spack/spack/hooks/licensing.py | 2 +- lib/spack/spack/hooks/module_file_generation.py | 2 +- lib/spack/spack/hooks/sbang.py | 2 +- lib/spack/spack/hooks/yaml_version_check.py | 2 +- lib/spack/spack/mirror.py | 2 +- lib/spack/spack/modules.py | 2 +- lib/spack/spack/multimethod.py | 2 +- lib/spack/spack/operating_systems/__init__.py | 2 +- lib/spack/spack/operating_systems/cnk.py | 2 +- lib/spack/spack/operating_systems/cnl.py | 2 +- lib/spack/spack/operating_systems/cray_frontend.py | 2 +- lib/spack/spack/operating_systems/linux_distro.py | 2 +- lib/spack/spack/operating_systems/mac_os.py | 2 +- lib/spack/spack/package.py | 2 +- lib/spack/spack/package_prefs.py | 2 +- lib/spack/spack/package_test.py | 2 +- lib/spack/spack/parse.py | 2 +- lib/spack/spack/patch.py | 2 +- lib/spack/spack/platforms/__init__.py | 2 +- lib/spack/spack/platforms/bgq.py | 2 +- lib/spack/spack/platforms/cray.py | 2 +- lib/spack/spack/platforms/darwin.py | 2 +- lib/spack/spack/platforms/linux.py | 2 +- lib/spack/spack/platforms/test.py | 2 +- lib/spack/spack/provider_index.py | 2 +- lib/spack/spack/relocate.py | 2 +- lib/spack/spack/repository.py | 2 +- lib/spack/spack/resource.py | 2 +- lib/spack/spack/schema/__init__.py | 2 +- lib/spack/spack/schema/compilers.py | 2 +- lib/spack/spack/schema/config.py | 2 +- lib/spack/spack/schema/mirrors.py | 2 +- lib/spack/spack/schema/modules.py | 2 +- lib/spack/spack/schema/packages.py | 2 +- lib/spack/spack/schema/repos.py | 2 +- lib/spack/spack/spec.py | 2 +- lib/spack/spack/stage.py | 2 +- lib/spack/spack/store.py | 2 +- lib/spack/spack/test/__init__.py | 2 +- lib/spack/spack/test/architecture.py | 2 +- lib/spack/spack/test/build_system_guess.py | 2 +- lib/spack/spack/test/build_systems.py | 2 +- lib/spack/spack/test/cc.py | 2 +- lib/spack/spack/test/cmd/__init__.py | 2 +- lib/spack/spack/test/cmd/find.py | 2 +- lib/spack/spack/test/cmd/flake8.py | 2 +- lib/spack/spack/test/cmd/gpg.py | 2 +- lib/spack/spack/test/cmd/install.py | 2 +- lib/spack/spack/test/cmd/list.py | 2 +- lib/spack/spack/test/cmd/module.py | 2 +- lib/spack/spack/test/cmd/python.py | 2 +- lib/spack/spack/test/cmd/test_compiler_cmd.py | 2 +- lib/spack/spack/test/cmd/uninstall.py | 2 +- lib/spack/spack/test/cmd/url.py | 2 +- lib/spack/spack/test/compilers.py | 2 +- lib/spack/spack/test/concretize.py | 2 +- lib/spack/spack/test/concretize_preferences.py | 2 +- lib/spack/spack/test/config.py | 2 +- lib/spack/spack/test/conftest.py | 2 +- lib/spack/spack/test/data/sourceme_first.sh | 2 +- lib/spack/spack/test/data/sourceme_parameters.sh | 2 +- lib/spack/spack/test/data/sourceme_second.sh | 2 +- lib/spack/spack/test/data/sourceme_unicode.sh | 2 +- lib/spack/spack/test/database.py | 2 +- lib/spack/spack/test/directory_layout.py | 2 +- lib/spack/spack/test/environment.py | 2 +- lib/spack/spack/test/file_cache.py | 2 +- lib/spack/spack/test/file_list.py | 2 +- lib/spack/spack/test/git_fetch.py | 2 +- lib/spack/spack/test/graph.py | 2 +- lib/spack/spack/test/hg_fetch.py | 2 +- lib/spack/spack/test/install.py | 2 +- lib/spack/spack/test/link_tree.py | 2 +- lib/spack/spack/test/lock.py | 2 +- lib/spack/spack/test/log.py | 2 +- lib/spack/spack/test/make_executable.py | 2 +- lib/spack/spack/test/mirror.py | 2 +- lib/spack/spack/test/module_parsing.py | 2 +- lib/spack/spack/test/modules.py | 2 +- lib/spack/spack/test/multimethod.py | 2 +- lib/spack/spack/test/namespace_trie.py | 2 +- lib/spack/spack/test/optional_deps.py | 2 +- lib/spack/spack/test/package_sanity.py | 2 +- lib/spack/spack/test/packages.py | 2 +- lib/spack/spack/test/packaging.py | 2 +- lib/spack/spack/test/pattern.py | 2 +- lib/spack/spack/test/provider_index.py | 2 +- lib/spack/spack/test/sbang.py | 2 +- lib/spack/spack/test/spack_yaml.py | 2 +- lib/spack/spack/test/spec_dag.py | 2 +- lib/spack/spack/test/spec_semantics.py | 2 +- lib/spack/spack/test/spec_syntax.py | 2 +- lib/spack/spack/test/spec_yaml.py | 2 +- lib/spack/spack/test/stage.py | 2 +- lib/spack/spack/test/svn_fetch.py | 2 +- lib/spack/spack/test/url_fetch.py | 2 +- lib/spack/spack/test/url_parse.py | 2 +- lib/spack/spack/test/url_substitution.py | 2 +- lib/spack/spack/test/util/prefix.py | 2 +- lib/spack/spack/test/variant.py | 2 +- lib/spack/spack/test/versions.py | 2 +- lib/spack/spack/test/web.py | 2 +- lib/spack/spack/url.py | 2 +- lib/spack/spack/util/__init__.py | 2 +- lib/spack/spack/util/compression.py | 2 +- lib/spack/spack/util/crypto.py | 2 +- lib/spack/spack/util/debug.py | 2 +- lib/spack/spack/util/environment.py | 2 +- lib/spack/spack/util/executable.py | 2 +- lib/spack/spack/util/gpg.py | 2 +- lib/spack/spack/util/module_cmd.py | 2 +- lib/spack/spack/util/multiproc.py | 2 +- lib/spack/spack/util/naming.py | 2 +- lib/spack/spack/util/path.py | 2 +- lib/spack/spack/util/pattern.py | 2 +- lib/spack/spack/util/prefix.py | 2 +- lib/spack/spack/util/spack_json.py | 2 +- lib/spack/spack/util/spack_yaml.py | 2 +- lib/spack/spack/util/string.py | 2 +- lib/spack/spack/util/web.py | 2 +- lib/spack/spack/variant.py | 2 +- lib/spack/spack/version.py | 2 +- share/spack/setup-env.csh | 2 +- share/spack/setup-env.sh | 2 +- share/spack/spack-completion.bash | 2 +- var/spack/repos/builtin.mock/packages/a/package.py | 2 +- var/spack/repos/builtin.mock/packages/b/package.py | 2 +- var/spack/repos/builtin.mock/packages/boost/package.py | 2 +- var/spack/repos/builtin.mock/packages/c/package.py | 2 +- var/spack/repos/builtin.mock/packages/callpath/package.py | 2 +- var/spack/repos/builtin.mock/packages/canfail/package.py | 2 +- var/spack/repos/builtin.mock/packages/cmake-client/package.py | 2 +- var/spack/repos/builtin.mock/packages/cmake/package.py | 2 +- .../repos/builtin.mock/packages/conflict-parent/package.py | 2 +- var/spack/repos/builtin.mock/packages/conflict/package.py | 2 +- var/spack/repos/builtin.mock/packages/develop-test/package.py | 2 +- var/spack/repos/builtin.mock/packages/direct-mpich/package.py | 2 +- .../repos/builtin.mock/packages/dt-diamond-bottom/package.py | 2 +- .../repos/builtin.mock/packages/dt-diamond-left/package.py | 2 +- .../repos/builtin.mock/packages/dt-diamond-right/package.py | 2 +- var/spack/repos/builtin.mock/packages/dt-diamond/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtbuild1/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtbuild2/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtbuild3/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtlink1/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtlink2/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtlink3/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtlink4/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtlink5/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtrun1/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtrun2/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtrun3/package.py | 2 +- var/spack/repos/builtin.mock/packages/dttop/package.py | 2 +- var/spack/repos/builtin.mock/packages/dtuse/package.py | 2 +- var/spack/repos/builtin.mock/packages/dyninst/package.py | 2 +- var/spack/repos/builtin.mock/packages/e/package.py | 2 +- var/spack/repos/builtin.mock/packages/extendee/package.py | 2 +- var/spack/repos/builtin.mock/packages/extension1/package.py | 2 +- var/spack/repos/builtin.mock/packages/extension2/package.py | 2 +- var/spack/repos/builtin.mock/packages/externalmodule/package.py | 2 +- var/spack/repos/builtin.mock/packages/externalprereq/package.py | 2 +- var/spack/repos/builtin.mock/packages/externaltest/package.py | 2 +- var/spack/repos/builtin.mock/packages/externaltool/package.py | 2 +- .../repos/builtin.mock/packages/externalvirtual/package.py | 2 +- var/spack/repos/builtin.mock/packages/failing-build/package.py | 2 +- var/spack/repos/builtin.mock/packages/fake/package.py | 2 +- var/spack/repos/builtin.mock/packages/flake8/package.py | 2 +- var/spack/repos/builtin.mock/packages/git-test/package.py | 2 +- var/spack/repos/builtin.mock/packages/hg-test/package.py | 2 +- var/spack/repos/builtin.mock/packages/hypre/package.py | 2 +- var/spack/repos/builtin.mock/packages/indirect-mpich/package.py | 2 +- var/spack/repos/builtin.mock/packages/libdwarf/package.py | 2 +- var/spack/repos/builtin.mock/packages/libelf/package.py | 2 +- var/spack/repos/builtin.mock/packages/mixedversions/package.py | 2 +- var/spack/repos/builtin.mock/packages/mpich/package.py | 2 +- var/spack/repos/builtin.mock/packages/mpich2/package.py | 2 +- var/spack/repos/builtin.mock/packages/mpileaks/package.py | 2 +- .../repos/builtin.mock/packages/multi-provider-mpi/package.py | 2 +- var/spack/repos/builtin.mock/packages/multimethod/package.py | 2 +- .../repos/builtin.mock/packages/multivalue_variant/package.py | 2 +- var/spack/repos/builtin.mock/packages/netlib-blas/package.py | 2 +- var/spack/repos/builtin.mock/packages/netlib-lapack/package.py | 2 +- .../repos/builtin.mock/packages/openblas-with-lapack/package.py | 2 +- var/spack/repos/builtin.mock/packages/openblas/package.py | 2 +- .../repos/builtin.mock/packages/optional-dep-test-2/package.py | 2 +- .../repos/builtin.mock/packages/optional-dep-test-3/package.py | 2 +- .../repos/builtin.mock/packages/optional-dep-test/package.py | 2 +- var/spack/repos/builtin.mock/packages/othervirtual/package.py | 2 +- var/spack/repos/builtin.mock/packages/patchelf/package.py | 2 +- var/spack/repos/builtin.mock/packages/python/package.py | 2 +- .../packages/singlevalue-variant-dependent/package.py | 2 +- var/spack/repos/builtin.mock/packages/svn-test/package.py | 2 +- .../packages/trivial-install-test-package/package.py | 2 +- var/spack/repos/builtin.mock/packages/zmpi/package.py | 2 +- var/spack/repos/builtin/packages/abinit/package.py | 2 +- var/spack/repos/builtin/packages/abyss/package.py | 2 +- var/spack/repos/builtin/packages/ack/package.py | 2 +- var/spack/repos/builtin/packages/activeharmony/package.py | 2 +- var/spack/repos/builtin/packages/adept-utils/package.py | 2 +- var/spack/repos/builtin/packages/adios/package.py | 2 +- var/spack/repos/builtin/packages/adlbx/package.py | 2 +- var/spack/repos/builtin/packages/adol-c/package.py | 2 +- var/spack/repos/builtin/packages/albert/package.py | 2 +- var/spack/repos/builtin/packages/alglib/package.py | 2 +- var/spack/repos/builtin/packages/allinea-forge/package.py | 2 +- var/spack/repos/builtin/packages/allinea-reports/package.py | 2 +- var/spack/repos/builtin/packages/allpaths-lg/package.py | 2 +- var/spack/repos/builtin/packages/alquimia/package.py | 2 +- var/spack/repos/builtin/packages/alsa-lib/package.py | 2 +- var/spack/repos/builtin/packages/amg2013/package.py | 2 +- var/spack/repos/builtin/packages/ampliconnoise/package.py | 2 +- var/spack/repos/builtin/packages/amr-exp-parabolic/package.py | 2 +- var/spack/repos/builtin/packages/amrex/package.py | 2 +- var/spack/repos/builtin/packages/andi/package.py | 2 +- var/spack/repos/builtin/packages/angsd/package.py | 2 +- var/spack/repos/builtin/packages/ant/package.py | 2 +- var/spack/repos/builtin/packages/antlr/package.py | 2 +- var/spack/repos/builtin/packages/ape/package.py | 2 +- var/spack/repos/builtin/packages/apex/package.py | 2 +- var/spack/repos/builtin/packages/applewmproto/package.py | 2 +- var/spack/repos/builtin/packages/appres/package.py | 2 +- var/spack/repos/builtin/packages/apr-util/package.py | 2 +- var/spack/repos/builtin/packages/apr/package.py | 2 +- var/spack/repos/builtin/packages/archer/package.py | 2 +- var/spack/repos/builtin/packages/argtable/package.py | 2 +- var/spack/repos/builtin/packages/armadillo/package.py | 2 +- var/spack/repos/builtin/packages/arpack-ng/package.py | 2 +- var/spack/repos/builtin/packages/arpack/package.py | 2 +- var/spack/repos/builtin/packages/asciidoc/package.py | 2 +- var/spack/repos/builtin/packages/aspa/package.py | 2 +- var/spack/repos/builtin/packages/astra/package.py | 2 +- var/spack/repos/builtin/packages/astral/package.py | 2 +- var/spack/repos/builtin/packages/astyle/package.py | 2 +- var/spack/repos/builtin/packages/atk/package.py | 2 +- var/spack/repos/builtin/packages/atlas/package.py | 2 +- var/spack/repos/builtin/packages/atompaw/package.py | 2 +- var/spack/repos/builtin/packages/atop/package.py | 2 +- var/spack/repos/builtin/packages/augustus/package.py | 2 +- var/spack/repos/builtin/packages/autoconf/package.py | 2 +- var/spack/repos/builtin/packages/autogen/package.py | 2 +- var/spack/repos/builtin/packages/automaded/package.py | 2 +- var/spack/repos/builtin/packages/automake/package.py | 2 +- var/spack/repos/builtin/packages/bamtools/package.py | 2 +- var/spack/repos/builtin/packages/bamutil/package.py | 2 +- var/spack/repos/builtin/packages/bash-completion/package.py | 2 +- var/spack/repos/builtin/packages/bash/package.py | 2 +- var/spack/repos/builtin/packages/bats/package.py | 2 +- var/spack/repos/builtin/packages/bazel/package.py | 2 +- var/spack/repos/builtin/packages/bbcp/package.py | 2 +- var/spack/repos/builtin/packages/bcftools/package.py | 2 +- var/spack/repos/builtin/packages/bcl2fastq2/package.py | 2 +- var/spack/repos/builtin/packages/bdftopcf/package.py | 2 +- var/spack/repos/builtin/packages/bdw-gc/package.py | 2 +- var/spack/repos/builtin/packages/bear/package.py | 2 +- var/spack/repos/builtin/packages/beast2/package.py | 2 +- var/spack/repos/builtin/packages/bedtools2/package.py | 2 +- var/spack/repos/builtin/packages/beforelight/package.py | 2 +- var/spack/repos/builtin/packages/benchmark/package.py | 2 +- var/spack/repos/builtin/packages/bertini/package.py | 2 +- var/spack/repos/builtin/packages/bib2xhtml/package.py | 2 +- var/spack/repos/builtin/packages/bigreqsproto/package.py | 2 +- var/spack/repos/builtin/packages/binutils/package.py | 2 +- var/spack/repos/builtin/packages/bison/package.py | 2 +- var/spack/repos/builtin/packages/bitmap/package.py | 2 +- var/spack/repos/builtin/packages/blast-plus/package.py | 2 +- var/spack/repos/builtin/packages/blat/package.py | 2 +- var/spack/repos/builtin/packages/blaze/package.py | 2 +- var/spack/repos/builtin/packages/bliss/package.py | 2 +- var/spack/repos/builtin/packages/blitz/package.py | 2 +- var/spack/repos/builtin/packages/boost/package.py | 2 +- var/spack/repos/builtin/packages/bowtie/package.py | 2 +- var/spack/repos/builtin/packages/bowtie2/package.py | 2 +- var/spack/repos/builtin/packages/boxlib/package.py | 2 +- var/spack/repos/builtin/packages/bpp-core/package.py | 2 +- var/spack/repos/builtin/packages/bpp-phyl/package.py | 2 +- var/spack/repos/builtin/packages/bpp-seq/package.py | 2 +- var/spack/repos/builtin/packages/bpp-suite/package.py | 2 +- var/spack/repos/builtin/packages/braker/package.py | 2 +- var/spack/repos/builtin/packages/brigand/package.py | 2 +- var/spack/repos/builtin/packages/bsseeker2/package.py | 2 +- var/spack/repos/builtin/packages/bucky/package.py | 2 +- var/spack/repos/builtin/packages/busco/package.py | 2 +- var/spack/repos/builtin/packages/butter/package.py | 2 +- var/spack/repos/builtin/packages/bwa/package.py | 2 +- var/spack/repos/builtin/packages/bzip2/package.py | 2 +- var/spack/repos/builtin/packages/c-blosc/package.py | 2 +- var/spack/repos/builtin/packages/caffe/package.py | 2 +- var/spack/repos/builtin/packages/cairo/package.py | 2 +- var/spack/repos/builtin/packages/caliper/package.py | 2 +- var/spack/repos/builtin/packages/callpath/package.py | 2 +- var/spack/repos/builtin/packages/cantera/package.py | 2 +- var/spack/repos/builtin/packages/canu/package.py | 2 +- var/spack/repos/builtin/packages/cap3/package.py | 2 +- var/spack/repos/builtin/packages/cares/package.py | 2 +- var/spack/repos/builtin/packages/cask/package.py | 2 +- var/spack/repos/builtin/packages/catch/package.py | 2 +- var/spack/repos/builtin/packages/cbench/package.py | 2 +- var/spack/repos/builtin/packages/cblas/package.py | 2 +- var/spack/repos/builtin/packages/ccache/package.py | 2 +- var/spack/repos/builtin/packages/cctools/package.py | 2 +- var/spack/repos/builtin/packages/cdbfasta/package.py | 2 +- var/spack/repos/builtin/packages/cdd/package.py | 2 +- var/spack/repos/builtin/packages/cddlib/package.py | 2 +- var/spack/repos/builtin/packages/cdhit/package.py | 2 +- var/spack/repos/builtin/packages/cdo/package.py | 2 +- var/spack/repos/builtin/packages/cereal/package.py | 2 +- var/spack/repos/builtin/packages/cfitsio/package.py | 2 +- var/spack/repos/builtin/packages/cgal/package.py | 2 +- var/spack/repos/builtin/packages/cgm/package.py | 2 +- var/spack/repos/builtin/packages/cgns/package.py | 2 +- var/spack/repos/builtin/packages/charm/package.py | 2 +- var/spack/repos/builtin/packages/check/package.py | 2 +- var/spack/repos/builtin/packages/chlorop/package.py | 2 +- var/spack/repos/builtin/packages/chombo/package.py | 2 +- var/spack/repos/builtin/packages/cityhash/package.py | 2 +- var/spack/repos/builtin/packages/clamr/package.py | 2 +- var/spack/repos/builtin/packages/cleaveland4/package.py | 2 +- var/spack/repos/builtin/packages/cleverleaf/package.py | 2 +- var/spack/repos/builtin/packages/clhep/package.py | 2 +- var/spack/repos/builtin/packages/cloog/package.py | 2 +- var/spack/repos/builtin/packages/cloverleaf/package.py | 2 +- var/spack/repos/builtin/packages/cloverleaf3d/package.py | 2 +- var/spack/repos/builtin/packages/clustalo/package.py | 2 +- var/spack/repos/builtin/packages/clustalw/package.py | 2 +- var/spack/repos/builtin/packages/cmake/package.py | 2 +- var/spack/repos/builtin/packages/cmocka/package.py | 2 +- var/spack/repos/builtin/packages/cmor/package.py | 2 +- var/spack/repos/builtin/packages/cnmem/package.py | 2 +- var/spack/repos/builtin/packages/cnpy/package.py | 2 +- var/spack/repos/builtin/packages/cns-nospec/package.py | 2 +- var/spack/repos/builtin/packages/cntk/package.py | 2 +- var/spack/repos/builtin/packages/cntk1bitsgd/package.py | 2 +- var/spack/repos/builtin/packages/codar-cheetah/package.py | 2 +- var/spack/repos/builtin/packages/cohmm/package.py | 2 +- var/spack/repos/builtin/packages/coinhsl/package.py | 2 +- var/spack/repos/builtin/packages/comd/package.py | 2 +- var/spack/repos/builtin/packages/compiz/package.py | 2 +- var/spack/repos/builtin/packages/compositeproto/package.py | 2 +- var/spack/repos/builtin/packages/conduit/package.py | 2 +- var/spack/repos/builtin/packages/constype/package.py | 2 +- var/spack/repos/builtin/packages/converge/package.py | 2 +- var/spack/repos/builtin/packages/coreutils/package.py | 2 +- var/spack/repos/builtin/packages/corset/package.py | 2 +- var/spack/repos/builtin/packages/cosmomc/package.py | 2 +- var/spack/repos/builtin/packages/cosp2/package.py | 2 +- var/spack/repos/builtin/packages/cp2k/package.py | 2 +- var/spack/repos/builtin/packages/cppad/package.py | 2 +- var/spack/repos/builtin/packages/cppcheck/package.py | 2 +- var/spack/repos/builtin/packages/cpprestsdk/package.py | 2 +- var/spack/repos/builtin/packages/cppunit/package.py | 2 +- var/spack/repos/builtin/packages/cram/package.py | 2 +- var/spack/repos/builtin/packages/cryptopp/package.py | 2 +- var/spack/repos/builtin/packages/cscope/package.py | 2 +- var/spack/repos/builtin/packages/csdp/package.py | 2 +- var/spack/repos/builtin/packages/cub/package.py | 2 +- var/spack/repos/builtin/packages/cube/package.py | 2 +- var/spack/repos/builtin/packages/cuda-memtest/package.py | 2 +- var/spack/repos/builtin/packages/cuda/package.py | 2 +- var/spack/repos/builtin/packages/cudnn/package.py | 2 +- var/spack/repos/builtin/packages/cufflinks/package.py | 2 +- var/spack/repos/builtin/packages/cups/package.py | 2 +- var/spack/repos/builtin/packages/curl/package.py | 2 +- var/spack/repos/builtin/packages/cvs/package.py | 2 +- var/spack/repos/builtin/packages/czmq/package.py | 2 +- var/spack/repos/builtin/packages/dakota/package.py | 2 +- var/spack/repos/builtin/packages/daligner/package.py | 2 +- var/spack/repos/builtin/packages/damageproto/package.py | 2 +- var/spack/repos/builtin/packages/damselfly/package.py | 2 +- var/spack/repos/builtin/packages/darshan-runtime/package.py | 2 +- var/spack/repos/builtin/packages/darshan-util/package.py | 2 +- var/spack/repos/builtin/packages/dash/package.py | 2 +- var/spack/repos/builtin/packages/datamash/package.py | 2 +- var/spack/repos/builtin/packages/dataspaces/package.py | 2 +- var/spack/repos/builtin/packages/dbus/package.py | 2 +- var/spack/repos/builtin/packages/dealii/package.py | 2 +- var/spack/repos/builtin/packages/dejagnu/package.py | 2 +- var/spack/repos/builtin/packages/dia/package.py | 2 +- var/spack/repos/builtin/packages/dialign-tx/package.py | 2 +- var/spack/repos/builtin/packages/direnv/package.py | 2 +- var/spack/repos/builtin/packages/discovar/package.py | 2 +- var/spack/repos/builtin/packages/dmxproto/package.py | 2 +- var/spack/repos/builtin/packages/docbook-xml/package.py | 2 +- var/spack/repos/builtin/packages/docbook-xsl/package.py | 2 +- var/spack/repos/builtin/packages/dos2unix/package.py | 2 +- var/spack/repos/builtin/packages/double-conversion/package.py | 2 +- var/spack/repos/builtin/packages/doxygen/package.py | 2 +- var/spack/repos/builtin/packages/dri2proto/package.py | 2 +- var/spack/repos/builtin/packages/dri3proto/package.py | 2 +- var/spack/repos/builtin/packages/dtcmp/package.py | 2 +- var/spack/repos/builtin/packages/dyninst/package.py | 2 +- var/spack/repos/builtin/packages/ea-utils/package.py | 2 +- var/spack/repos/builtin/packages/ebms/package.py | 2 +- var/spack/repos/builtin/packages/eccodes/package.py | 2 +- var/spack/repos/builtin/packages/editres/package.py | 2 +- var/spack/repos/builtin/packages/eigen/package.py | 2 +- var/spack/repos/builtin/packages/elemental/package.py | 2 +- var/spack/repos/builtin/packages/elfutils/package.py | 2 +- var/spack/repos/builtin/packages/elk/package.py | 2 +- var/spack/repos/builtin/packages/elpa/package.py | 2 +- var/spack/repos/builtin/packages/emacs/package.py | 2 +- var/spack/repos/builtin/packages/emboss/package.py | 2 +- var/spack/repos/builtin/packages/encodings/package.py | 2 +- var/spack/repos/builtin/packages/environment-modules/package.py | 2 +- var/spack/repos/builtin/packages/es/package.py | 2 +- var/spack/repos/builtin/packages/esmf/package.py | 2 +- var/spack/repos/builtin/packages/espresso/package.py | 2 +- var/spack/repos/builtin/packages/espressopp/package.py | 2 +- var/spack/repos/builtin/packages/etsf-io/package.py | 2 +- var/spack/repos/builtin/packages/everytrace-example/package.py | 2 +- var/spack/repos/builtin/packages/everytrace/package.py | 2 +- var/spack/repos/builtin/packages/evieext/package.py | 2 +- var/spack/repos/builtin/packages/exabayes/package.py | 2 +- var/spack/repos/builtin/packages/exmcutils/package.py | 2 +- var/spack/repos/builtin/packages/exodusii/package.py | 2 +- var/spack/repos/builtin/packages/exonerate/package.py | 2 +- var/spack/repos/builtin/packages/expat/package.py | 2 +- var/spack/repos/builtin/packages/expect/package.py | 2 +- var/spack/repos/builtin/packages/extrae/package.py | 2 +- var/spack/repos/builtin/packages/exuberant-ctags/package.py | 2 +- var/spack/repos/builtin/packages/falcon/package.py | 2 +- var/spack/repos/builtin/packages/farmhash/package.py | 2 +- var/spack/repos/builtin/packages/fastjar/package.py | 2 +- var/spack/repos/builtin/packages/fastmath/package.py | 2 +- var/spack/repos/builtin/packages/fastphase/package.py | 2 +- var/spack/repos/builtin/packages/fastqc/package.py | 2 +- var/spack/repos/builtin/packages/fastx-toolkit/package.py | 2 +- var/spack/repos/builtin/packages/fenics/package.py | 2 +- var/spack/repos/builtin/packages/ferret/package.py | 2 +- var/spack/repos/builtin/packages/ffmpeg/package.py | 2 +- var/spack/repos/builtin/packages/fftw/package.py | 2 +- var/spack/repos/builtin/packages/fimpute/package.py | 2 +- var/spack/repos/builtin/packages/findutils/package.py | 2 +- var/spack/repos/builtin/packages/fio/package.py | 2 +- var/spack/repos/builtin/packages/fish/package.py | 2 +- var/spack/repos/builtin/packages/fixesproto/package.py | 2 +- var/spack/repos/builtin/packages/flac/package.py | 2 +- var/spack/repos/builtin/packages/flann/package.py | 2 +- var/spack/repos/builtin/packages/flash/package.py | 2 +- var/spack/repos/builtin/packages/flex/package.py | 2 +- var/spack/repos/builtin/packages/flint/package.py | 2 +- var/spack/repos/builtin/packages/fltk/package.py | 2 +- var/spack/repos/builtin/packages/flux/package.py | 2 +- var/spack/repos/builtin/packages/fmt/package.py | 2 +- var/spack/repos/builtin/packages/foam-extend/package.py | 2 +- var/spack/repos/builtin/packages/folly/package.py | 2 +- var/spack/repos/builtin/packages/font-adobe-100dpi/package.py | 2 +- var/spack/repos/builtin/packages/font-adobe-75dpi/package.py | 2 +- .../repos/builtin/packages/font-adobe-utopia-100dpi/package.py | 2 +- .../repos/builtin/packages/font-adobe-utopia-75dpi/package.py | 2 +- .../repos/builtin/packages/font-adobe-utopia-type1/package.py | 2 +- var/spack/repos/builtin/packages/font-alias/package.py | 2 +- var/spack/repos/builtin/packages/font-arabic-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-bh-100dpi/package.py | 2 +- var/spack/repos/builtin/packages/font-bh-75dpi/package.py | 2 +- .../builtin/packages/font-bh-lucidatypewriter-100dpi/package.py | 2 +- .../builtin/packages/font-bh-lucidatypewriter-75dpi/package.py | 2 +- var/spack/repos/builtin/packages/font-bh-ttf/package.py | 2 +- var/spack/repos/builtin/packages/font-bh-type1/package.py | 2 +- .../repos/builtin/packages/font-bitstream-100dpi/package.py | 2 +- .../repos/builtin/packages/font-bitstream-75dpi/package.py | 2 +- .../repos/builtin/packages/font-bitstream-speedo/package.py | 2 +- .../repos/builtin/packages/font-bitstream-type1/package.py | 2 +- .../repos/builtin/packages/font-cronyx-cyrillic/package.py | 2 +- var/spack/repos/builtin/packages/font-cursor-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-daewoo-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-dec-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-ibm-type1/package.py | 2 +- var/spack/repos/builtin/packages/font-isas-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-jis-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-micro-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-misc-cyrillic/package.py | 2 +- var/spack/repos/builtin/packages/font-misc-ethiopic/package.py | 2 +- var/spack/repos/builtin/packages/font-misc-meltho/package.py | 2 +- var/spack/repos/builtin/packages/font-misc-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-mutt-misc/package.py | 2 +- .../repos/builtin/packages/font-schumacher-misc/package.py | 2 +- .../repos/builtin/packages/font-screen-cyrillic/package.py | 2 +- var/spack/repos/builtin/packages/font-sony-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-sun-misc/package.py | 2 +- var/spack/repos/builtin/packages/font-util/package.py | 2 +- .../repos/builtin/packages/font-winitzki-cyrillic/package.py | 2 +- var/spack/repos/builtin/packages/font-xfree86-type1/package.py | 2 +- var/spack/repos/builtin/packages/fontcacheproto/package.py | 2 +- var/spack/repos/builtin/packages/fontconfig/package.py | 2 +- var/spack/repos/builtin/packages/fontsproto/package.py | 2 +- var/spack/repos/builtin/packages/fonttosfnt/package.py | 2 +- var/spack/repos/builtin/packages/freebayes/package.py | 2 +- var/spack/repos/builtin/packages/freetype/package.py | 2 +- var/spack/repos/builtin/packages/fseq/package.py | 2 +- var/spack/repos/builtin/packages/fslsfonts/package.py | 2 +- var/spack/repos/builtin/packages/fstobdf/package.py | 2 +- var/spack/repos/builtin/packages/funhpc/package.py | 2 +- var/spack/repos/builtin/packages/gapcloser/package.py | 2 +- var/spack/repos/builtin/packages/gapfiller/package.py | 2 +- var/spack/repos/builtin/packages/gasnet/package.py | 2 +- var/spack/repos/builtin/packages/gaussian/package.py | 2 +- var/spack/repos/builtin/packages/gawk/package.py | 2 +- var/spack/repos/builtin/packages/gblocks/package.py | 2 +- var/spack/repos/builtin/packages/gcc/package.py | 2 +- var/spack/repos/builtin/packages/gccmakedep/package.py | 2 +- var/spack/repos/builtin/packages/gconf/package.py | 2 +- var/spack/repos/builtin/packages/gdal/package.py | 2 +- var/spack/repos/builtin/packages/gdb/package.py | 2 +- var/spack/repos/builtin/packages/gdbm/package.py | 2 +- var/spack/repos/builtin/packages/gdk-pixbuf/package.py | 2 +- var/spack/repos/builtin/packages/geant4/package.py | 2 +- var/spack/repos/builtin/packages/gemmlowp/package.py | 2 +- var/spack/repos/builtin/packages/genemark-et/package.py | 2 +- var/spack/repos/builtin/packages/genometools/package.py | 2 +- var/spack/repos/builtin/packages/geos/package.py | 2 +- var/spack/repos/builtin/packages/gettext/package.py | 2 +- var/spack/repos/builtin/packages/gflags/package.py | 2 +- var/spack/repos/builtin/packages/ghostscript-fonts/package.py | 2 +- var/spack/repos/builtin/packages/ghostscript/package.py | 2 +- var/spack/repos/builtin/packages/giflib/package.py | 2 +- var/spack/repos/builtin/packages/git-lfs/package.py | 2 +- var/spack/repos/builtin/packages/git/package.py | 2 +- var/spack/repos/builtin/packages/gl2ps/package.py | 2 +- var/spack/repos/builtin/packages/glew/package.py | 2 +- var/spack/repos/builtin/packages/glib/package.py | 2 +- var/spack/repos/builtin/packages/glm/package.py | 2 +- var/spack/repos/builtin/packages/global/package.py | 2 +- var/spack/repos/builtin/packages/globus-toolkit/package.py | 2 +- var/spack/repos/builtin/packages/glog/package.py | 2 +- var/spack/repos/builtin/packages/glpk/package.py | 2 +- var/spack/repos/builtin/packages/glproto/package.py | 2 +- var/spack/repos/builtin/packages/gmake/package.py | 2 +- var/spack/repos/builtin/packages/gmap-gsnap/package.py | 2 +- var/spack/repos/builtin/packages/gmime/package.py | 2 +- var/spack/repos/builtin/packages/gmp/package.py | 2 +- var/spack/repos/builtin/packages/gmsh/package.py | 2 +- var/spack/repos/builtin/packages/gnat/package.py | 2 +- var/spack/repos/builtin/packages/gnu-prolog/package.py | 2 +- var/spack/repos/builtin/packages/gnupg/package.py | 2 +- var/spack/repos/builtin/packages/gnuplot/package.py | 2 +- var/spack/repos/builtin/packages/gnutls/package.py | 2 +- var/spack/repos/builtin/packages/go-bootstrap/package.py | 2 +- var/spack/repos/builtin/packages/go/package.py | 2 +- .../repos/builtin/packages/gobject-introspection/package.py | 2 +- var/spack/repos/builtin/packages/googletest/package.py | 2 +- var/spack/repos/builtin/packages/gource/package.py | 2 +- var/spack/repos/builtin/packages/gperf/package.py | 2 +- var/spack/repos/builtin/packages/gperftools/package.py | 2 +- var/spack/repos/builtin/packages/grackle/package.py | 2 +- var/spack/repos/builtin/packages/gradle/package.py | 2 +- var/spack/repos/builtin/packages/grandr/package.py | 2 +- var/spack/repos/builtin/packages/graphlib/package.py | 2 +- var/spack/repos/builtin/packages/graphmap/package.py | 2 +- var/spack/repos/builtin/packages/graphviz/package.py | 2 +- var/spack/repos/builtin/packages/grib-api/package.py | 2 +- var/spack/repos/builtin/packages/groff/package.py | 2 +- var/spack/repos/builtin/packages/gromacs/package.py | 2 +- var/spack/repos/builtin/packages/gsl/package.py | 2 +- var/spack/repos/builtin/packages/gtkorvo-atl/package.py | 2 +- var/spack/repos/builtin/packages/gtkorvo-cercs-env/package.py | 2 +- var/spack/repos/builtin/packages/gtkorvo-dill/package.py | 2 +- var/spack/repos/builtin/packages/gtkorvo-enet/package.py | 2 +- var/spack/repos/builtin/packages/gtkplus/package.py | 2 +- var/spack/repos/builtin/packages/gts/package.py | 2 +- var/spack/repos/builtin/packages/guile/package.py | 2 +- var/spack/repos/builtin/packages/h5hut/package.py | 2 +- var/spack/repos/builtin/packages/h5utils/package.py | 2 +- var/spack/repos/builtin/packages/h5z-zfp/package.py | 2 +- var/spack/repos/builtin/packages/hadoop/package.py | 2 +- var/spack/repos/builtin/packages/hapcut2/package.py | 2 +- var/spack/repos/builtin/packages/haploview/package.py | 2 +- var/spack/repos/builtin/packages/harfbuzz/package.py | 2 +- var/spack/repos/builtin/packages/harminv/package.py | 2 +- var/spack/repos/builtin/packages/hdf/package.py | 2 +- var/spack/repos/builtin/packages/hdf5-blosc/package.py | 2 +- var/spack/repos/builtin/packages/hdf5/package.py | 2 +- var/spack/repos/builtin/packages/help2man/package.py | 2 +- var/spack/repos/builtin/packages/hepmc/package.py | 2 +- var/spack/repos/builtin/packages/heppdt/package.py | 2 +- var/spack/repos/builtin/packages/highfive/package.py | 2 +- var/spack/repos/builtin/packages/highwayhash/package.py | 2 +- var/spack/repos/builtin/packages/hmmer/package.py | 2 +- var/spack/repos/builtin/packages/hoomd-blue/package.py | 2 +- var/spack/repos/builtin/packages/hpccg/package.py | 2 +- .../repos/builtin/packages/hpctoolkit-externals/package.py | 2 +- var/spack/repos/builtin/packages/hpctoolkit/package.py | 2 +- var/spack/repos/builtin/packages/hpl/package.py | 2 +- var/spack/repos/builtin/packages/hpx5/package.py | 2 +- var/spack/repos/builtin/packages/hsakmt/package.py | 2 +- var/spack/repos/builtin/packages/hstr/package.py | 2 +- var/spack/repos/builtin/packages/htop/package.py | 2 +- var/spack/repos/builtin/packages/htslib/package.py | 2 +- var/spack/repos/builtin/packages/httpie/package.py | 2 +- var/spack/repos/builtin/packages/hub/package.py | 2 +- var/spack/repos/builtin/packages/hunspell/package.py | 2 +- var/spack/repos/builtin/packages/hwloc/package.py | 2 +- var/spack/repos/builtin/packages/hybpiper/package.py | 2 +- var/spack/repos/builtin/packages/hydra/package.py | 2 +- var/spack/repos/builtin/packages/hypre/package.py | 2 +- var/spack/repos/builtin/packages/ibmisc/package.py | 2 +- var/spack/repos/builtin/packages/iceauth/package.py | 2 +- var/spack/repos/builtin/packages/icedtea/package.py | 2 +- var/spack/repos/builtin/packages/icet/package.py | 2 +- var/spack/repos/builtin/packages/ico/package.py | 2 +- var/spack/repos/builtin/packages/icu4c/package.py | 2 +- var/spack/repos/builtin/packages/id3lib/package.py | 2 +- var/spack/repos/builtin/packages/idba/package.py | 2 +- var/spack/repos/builtin/packages/igraph/package.py | 2 +- var/spack/repos/builtin/packages/ilmbase/package.py | 2 +- var/spack/repos/builtin/packages/image-magick/package.py | 2 +- var/spack/repos/builtin/packages/imake/package.py | 2 +- var/spack/repos/builtin/packages/impute2/package.py | 2 +- var/spack/repos/builtin/packages/infernal/package.py | 2 +- var/spack/repos/builtin/packages/inputproto/package.py | 2 +- var/spack/repos/builtin/packages/intel-daal/package.py | 2 +- var/spack/repos/builtin/packages/intel-gpu-tools/package.py | 2 +- var/spack/repos/builtin/packages/intel-ipp/package.py | 2 +- var/spack/repos/builtin/packages/intel-mkl/package.py | 2 +- var/spack/repos/builtin/packages/intel-mpi/package.py | 2 +- .../repos/builtin/packages/intel-parallel-studio/package.py | 2 +- var/spack/repos/builtin/packages/intel-tbb/package.py | 2 +- var/spack/repos/builtin/packages/intel/package.py | 2 +- var/spack/repos/builtin/packages/intltool/package.py | 2 +- var/spack/repos/builtin/packages/ior/package.py | 2 +- var/spack/repos/builtin/packages/iozone/package.py | 2 +- var/spack/repos/builtin/packages/ipopt/package.py | 2 +- var/spack/repos/builtin/packages/isl/package.py | 2 +- var/spack/repos/builtin/packages/itstool/package.py | 2 +- var/spack/repos/builtin/packages/itsx/package.py | 2 +- var/spack/repos/builtin/packages/jags/package.py | 2 +- var/spack/repos/builtin/packages/jansson/package.py | 2 +- var/spack/repos/builtin/packages/jasper/package.py | 2 +- var/spack/repos/builtin/packages/jdk/package.py | 2 +- var/spack/repos/builtin/packages/jemalloc/package.py | 2 +- var/spack/repos/builtin/packages/jmol/package.py | 2 +- var/spack/repos/builtin/packages/jq/package.py | 2 +- var/spack/repos/builtin/packages/json-c/package.py | 2 +- var/spack/repos/builtin/packages/jsoncpp/package.py | 2 +- var/spack/repos/builtin/packages/judy/package.py | 2 +- var/spack/repos/builtin/packages/julia/package.py | 2 +- var/spack/repos/builtin/packages/kaldi/package.py | 2 +- var/spack/repos/builtin/packages/kallisto/package.py | 2 +- var/spack/repos/builtin/packages/kbproto/package.py | 2 +- var/spack/repos/builtin/packages/kdiff3/package.py | 2 +- var/spack/repos/builtin/packages/kealib/package.py | 2 +- var/spack/repos/builtin/packages/kentutils/package.py | 2 +- var/spack/repos/builtin/packages/kmergenie/package.py | 2 +- var/spack/repos/builtin/packages/kokkos/package.py | 2 +- var/spack/repos/builtin/packages/kripke/package.py | 2 +- var/spack/repos/builtin/packages/lammps/package.py | 2 +- var/spack/repos/builtin/packages/last/package.py | 2 +- var/spack/repos/builtin/packages/launchmon/package.py | 2 +- var/spack/repos/builtin/packages/lbann/package.py | 2 +- var/spack/repos/builtin/packages/lbxproxy/package.py | 2 +- var/spack/repos/builtin/packages/lcals/package.py | 2 +- var/spack/repos/builtin/packages/lcms/package.py | 2 +- var/spack/repos/builtin/packages/leveldb/package.py | 2 +- var/spack/repos/builtin/packages/lftp/package.py | 2 +- var/spack/repos/builtin/packages/libaec/package.py | 2 +- var/spack/repos/builtin/packages/libaio/package.py | 2 +- var/spack/repos/builtin/packages/libapplewm/package.py | 2 +- var/spack/repos/builtin/packages/libarchive/package.py | 2 +- var/spack/repos/builtin/packages/libassuan/package.py | 2 +- var/spack/repos/builtin/packages/libatomic-ops/package.py | 2 +- var/spack/repos/builtin/packages/libbeagle/package.py | 2 +- var/spack/repos/builtin/packages/libbsd/package.py | 2 +- var/spack/repos/builtin/packages/libbson/package.py | 2 +- var/spack/repos/builtin/packages/libcanberra/package.py | 2 +- var/spack/repos/builtin/packages/libcap/package.py | 2 +- var/spack/repos/builtin/packages/libcerf/package.py | 2 +- var/spack/repos/builtin/packages/libcircle/package.py | 2 +- var/spack/repos/builtin/packages/libconfig/package.py | 2 +- var/spack/repos/builtin/packages/libctl/package.py | 2 +- var/spack/repos/builtin/packages/libdivsufsort/package.py | 2 +- var/spack/repos/builtin/packages/libdmx/package.py | 2 +- var/spack/repos/builtin/packages/libdrm/package.py | 2 +- var/spack/repos/builtin/packages/libdwarf/package.py | 2 +- var/spack/repos/builtin/packages/libedit/package.py | 2 +- var/spack/repos/builtin/packages/libelf/package.py | 2 +- var/spack/repos/builtin/packages/libemos/package.py | 2 +- var/spack/repos/builtin/packages/libepoxy/package.py | 2 +- var/spack/repos/builtin/packages/libevent/package.py | 2 +- var/spack/repos/builtin/packages/libevpath/package.py | 2 +- var/spack/repos/builtin/packages/libfabric/package.py | 2 +- var/spack/repos/builtin/packages/libffi/package.py | 2 +- var/spack/repos/builtin/packages/libffs/package.py | 2 +- var/spack/repos/builtin/packages/libfontenc/package.py | 2 +- var/spack/repos/builtin/packages/libfs/package.py | 2 +- var/spack/repos/builtin/packages/libgcrypt/package.py | 2 +- var/spack/repos/builtin/packages/libgd/package.py | 2 +- var/spack/repos/builtin/packages/libgit2/package.py | 2 +- var/spack/repos/builtin/packages/libgpg-error/package.py | 2 +- var/spack/repos/builtin/packages/libgpuarray/package.py | 2 +- var/spack/repos/builtin/packages/libgtextutils/package.py | 2 +- var/spack/repos/builtin/packages/libhio/package.py | 2 +- var/spack/repos/builtin/packages/libice/package.py | 2 +- var/spack/repos/builtin/packages/libiconv/package.py | 2 +- var/spack/repos/builtin/packages/libint/package.py | 2 +- var/spack/repos/builtin/packages/libjpeg-turbo/package.py | 2 +- var/spack/repos/builtin/packages/libjpeg/package.py | 2 +- var/spack/repos/builtin/packages/libksba/package.py | 2 +- var/spack/repos/builtin/packages/liblbxutil/package.py | 2 +- var/spack/repos/builtin/packages/libmatheval/package.py | 2 +- var/spack/repos/builtin/packages/libmesh/package.py | 2 +- var/spack/repos/builtin/packages/libmng/package.py | 2 +- var/spack/repos/builtin/packages/libmongoc/package.py | 2 +- var/spack/repos/builtin/packages/libmonitor/package.py | 2 +- var/spack/repos/builtin/packages/libnbc/package.py | 2 +- var/spack/repos/builtin/packages/libogg/package.py | 2 +- var/spack/repos/builtin/packages/liboldx/package.py | 2 +- var/spack/repos/builtin/packages/libpciaccess/package.py | 2 +- var/spack/repos/builtin/packages/libpfm4/package.py | 2 +- var/spack/repos/builtin/packages/libpipeline/package.py | 2 +- var/spack/repos/builtin/packages/libpng/package.py | 2 +- var/spack/repos/builtin/packages/libpsl/package.py | 2 +- var/spack/repos/builtin/packages/libpthread-stubs/package.py | 2 +- var/spack/repos/builtin/packages/libquo/package.py | 2 +- var/spack/repos/builtin/packages/libsigsegv/package.py | 2 +- var/spack/repos/builtin/packages/libsm/package.py | 2 +- var/spack/repos/builtin/packages/libsodium/package.py | 2 +- var/spack/repos/builtin/packages/libspatialindex/package.py | 2 +- var/spack/repos/builtin/packages/libsplash/package.py | 2 +- var/spack/repos/builtin/packages/libssh2/package.py | 2 +- var/spack/repos/builtin/packages/libsvm/package.py | 2 +- var/spack/repos/builtin/packages/libszip/package.py | 2 +- var/spack/repos/builtin/packages/libtermkey/package.py | 2 +- var/spack/repos/builtin/packages/libtiff/package.py | 2 +- var/spack/repos/builtin/packages/libtool/package.py | 2 +- var/spack/repos/builtin/packages/libunistring/package.py | 2 +- var/spack/repos/builtin/packages/libunwind/package.py | 2 +- var/spack/repos/builtin/packages/libuuid/package.py | 2 +- var/spack/repos/builtin/packages/libuv/package.py | 2 +- var/spack/repos/builtin/packages/libvorbis/package.py | 2 +- var/spack/repos/builtin/packages/libvterm/package.py | 2 +- var/spack/repos/builtin/packages/libwebsockets/package.py | 2 +- var/spack/repos/builtin/packages/libwindowswm/package.py | 2 +- var/spack/repos/builtin/packages/libx11/package.py | 2 +- var/spack/repos/builtin/packages/libxau/package.py | 2 +- var/spack/repos/builtin/packages/libxaw/package.py | 2 +- var/spack/repos/builtin/packages/libxaw3d/package.py | 2 +- var/spack/repos/builtin/packages/libxc/package.py | 2 +- var/spack/repos/builtin/packages/libxcb/package.py | 2 +- var/spack/repos/builtin/packages/libxcomposite/package.py | 2 +- var/spack/repos/builtin/packages/libxcursor/package.py | 2 +- var/spack/repos/builtin/packages/libxdamage/package.py | 2 +- var/spack/repos/builtin/packages/libxdmcp/package.py | 2 +- var/spack/repos/builtin/packages/libxevie/package.py | 2 +- var/spack/repos/builtin/packages/libxext/package.py | 2 +- var/spack/repos/builtin/packages/libxfixes/package.py | 2 +- var/spack/repos/builtin/packages/libxfont/package.py | 2 +- var/spack/repos/builtin/packages/libxfont2/package.py | 2 +- var/spack/repos/builtin/packages/libxfontcache/package.py | 2 +- var/spack/repos/builtin/packages/libxft/package.py | 2 +- var/spack/repos/builtin/packages/libxi/package.py | 2 +- var/spack/repos/builtin/packages/libxinerama/package.py | 2 +- var/spack/repos/builtin/packages/libxkbfile/package.py | 2 +- var/spack/repos/builtin/packages/libxkbui/package.py | 2 +- var/spack/repos/builtin/packages/libxml2/package.py | 2 +- var/spack/repos/builtin/packages/libxmu/package.py | 2 +- var/spack/repos/builtin/packages/libxp/package.py | 2 +- var/spack/repos/builtin/packages/libxpm/package.py | 2 +- var/spack/repos/builtin/packages/libxpresent/package.py | 2 +- var/spack/repos/builtin/packages/libxprintapputil/package.py | 2 +- var/spack/repos/builtin/packages/libxprintutil/package.py | 2 +- var/spack/repos/builtin/packages/libxrandr/package.py | 2 +- var/spack/repos/builtin/packages/libxrender/package.py | 2 +- var/spack/repos/builtin/packages/libxres/package.py | 2 +- var/spack/repos/builtin/packages/libxscrnsaver/package.py | 2 +- var/spack/repos/builtin/packages/libxshmfence/package.py | 2 +- var/spack/repos/builtin/packages/libxslt/package.py | 2 +- var/spack/repos/builtin/packages/libxstream/package.py | 2 +- var/spack/repos/builtin/packages/libxt/package.py | 2 +- var/spack/repos/builtin/packages/libxtrap/package.py | 2 +- var/spack/repos/builtin/packages/libxtst/package.py | 2 +- var/spack/repos/builtin/packages/libxv/package.py | 2 +- var/spack/repos/builtin/packages/libxvmc/package.py | 2 +- var/spack/repos/builtin/packages/libxxf86dga/package.py | 2 +- var/spack/repos/builtin/packages/libxxf86misc/package.py | 2 +- var/spack/repos/builtin/packages/libxxf86vm/package.py | 2 +- var/spack/repos/builtin/packages/libyogrt/package.py | 2 +- var/spack/repos/builtin/packages/libzip/package.py | 2 +- var/spack/repos/builtin/packages/likwid/package.py | 2 +- var/spack/repos/builtin/packages/linux-headers/package.py | 2 +- var/spack/repos/builtin/packages/listres/package.py | 2 +- var/spack/repos/builtin/packages/llvm-lld/package.py | 2 +- var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py | 2 +- var/spack/repos/builtin/packages/llvm/package.py | 2 +- var/spack/repos/builtin/packages/lmdb/package.py | 2 +- var/spack/repos/builtin/packages/lmod/package.py | 2 +- var/spack/repos/builtin/packages/lndir/package.py | 2 +- var/spack/repos/builtin/packages/log4cxx/package.py | 2 +- var/spack/repos/builtin/packages/lrslib/package.py | 2 +- var/spack/repos/builtin/packages/lrzip/package.py | 2 +- var/spack/repos/builtin/packages/lua-jit/package.py | 2 +- var/spack/repos/builtin/packages/lua-luafilesystem/package.py | 2 +- var/spack/repos/builtin/packages/lua-luaposix/package.py | 2 +- var/spack/repos/builtin/packages/lua/package.py | 2 +- var/spack/repos/builtin/packages/luit/package.py | 2 +- var/spack/repos/builtin/packages/lulesh/package.py | 2 +- var/spack/repos/builtin/packages/lwgrp/package.py | 2 +- var/spack/repos/builtin/packages/lwm2/package.py | 2 +- var/spack/repos/builtin/packages/lz4/package.py | 2 +- var/spack/repos/builtin/packages/lzma/package.py | 2 +- var/spack/repos/builtin/packages/lzo/package.py | 2 +- var/spack/repos/builtin/packages/m4/package.py | 2 +- var/spack/repos/builtin/packages/mafft/package.py | 2 +- var/spack/repos/builtin/packages/magics/package.py | 2 +- var/spack/repos/builtin/packages/magma/package.py | 2 +- var/spack/repos/builtin/packages/makedepend/package.py | 2 +- var/spack/repos/builtin/packages/man-db/package.py | 2 +- var/spack/repos/builtin/packages/mariadb/package.py | 2 +- var/spack/repos/builtin/packages/matio/package.py | 2 +- var/spack/repos/builtin/packages/matlab/package.py | 2 +- var/spack/repos/builtin/packages/maven/package.py | 2 +- var/spack/repos/builtin/packages/maverick/package.py | 2 +- var/spack/repos/builtin/packages/mawk/package.py | 2 +- var/spack/repos/builtin/packages/mbedtls/package.py | 2 +- var/spack/repos/builtin/packages/mcl/package.py | 2 +- var/spack/repos/builtin/packages/mdtest/package.py | 2 +- var/spack/repos/builtin/packages/meep/package.py | 2 +- var/spack/repos/builtin/packages/memaxes/package.py | 2 +- var/spack/repos/builtin/packages/meme/package.py | 2 +- var/spack/repos/builtin/packages/mercurial/package.py | 2 +- var/spack/repos/builtin/packages/mesa-glu/package.py | 2 +- var/spack/repos/builtin/packages/mesa/package.py | 2 +- var/spack/repos/builtin/packages/meshkit/package.py | 2 +- var/spack/repos/builtin/packages/meson/package.py | 2 +- var/spack/repos/builtin/packages/mesquite/package.py | 2 +- var/spack/repos/builtin/packages/metis/package.py | 2 +- var/spack/repos/builtin/packages/mfem/package.py | 2 +- var/spack/repos/builtin/packages/microbiomeutil/package.py | 2 +- var/spack/repos/builtin/packages/miniaero/package.py | 2 +- var/spack/repos/builtin/packages/miniamr/package.py | 2 +- var/spack/repos/builtin/packages/miniconda2/package.py | 2 +- var/spack/repos/builtin/packages/miniconda3/package.py | 2 +- var/spack/repos/builtin/packages/minife/package.py | 2 +- var/spack/repos/builtin/packages/minighost/package.py | 2 +- var/spack/repos/builtin/packages/minigmg/package.py | 2 +- var/spack/repos/builtin/packages/minimd/package.py | 2 +- var/spack/repos/builtin/packages/minismac2d/package.py | 2 +- var/spack/repos/builtin/packages/minixyce/package.py | 2 +- var/spack/repos/builtin/packages/mitofates/package.py | 2 +- var/spack/repos/builtin/packages/mitos/package.py | 2 +- var/spack/repos/builtin/packages/mkfontdir/package.py | 2 +- var/spack/repos/builtin/packages/mkfontscale/package.py | 2 +- var/spack/repos/builtin/packages/moab/package.py | 2 +- var/spack/repos/builtin/packages/molcas/package.py | 2 +- var/spack/repos/builtin/packages/mono/package.py | 2 +- var/spack/repos/builtin/packages/mosh/package.py | 2 +- var/spack/repos/builtin/packages/mothur/package.py | 2 +- var/spack/repos/builtin/packages/mozjs/package.py | 2 +- var/spack/repos/builtin/packages/mpc/package.py | 2 +- var/spack/repos/builtin/packages/mpe2/package.py | 2 +- var/spack/repos/builtin/packages/mpest/package.py | 2 +- var/spack/repos/builtin/packages/mpfr/package.py | 2 +- var/spack/repos/builtin/packages/mpibash/package.py | 2 +- var/spack/repos/builtin/packages/mpiblast/package.py | 2 +- var/spack/repos/builtin/packages/mpich/package.py | 2 +- var/spack/repos/builtin/packages/mpileaks/package.py | 2 +- var/spack/repos/builtin/packages/mpip/package.py | 2 +- var/spack/repos/builtin/packages/mpir/package.py | 2 +- var/spack/repos/builtin/packages/mpix-launch-swift/package.py | 2 +- var/spack/repos/builtin/packages/mrbayes/package.py | 2 +- var/spack/repos/builtin/packages/mrnet/package.py | 2 +- var/spack/repos/builtin/packages/msgpack-c/package.py | 2 +- var/spack/repos/builtin/packages/multiverso/package.py | 2 +- var/spack/repos/builtin/packages/mummer/package.py | 2 +- var/spack/repos/builtin/packages/mumps/package.py | 2 +- var/spack/repos/builtin/packages/munge/package.py | 2 +- var/spack/repos/builtin/packages/muparser/package.py | 2 +- var/spack/repos/builtin/packages/muscle/package.py | 2 +- var/spack/repos/builtin/packages/muse/package.py | 2 +- var/spack/repos/builtin/packages/muster/package.py | 2 +- var/spack/repos/builtin/packages/mvapich2/package.py | 2 +- var/spack/repos/builtin/packages/mxml/package.py | 2 +- var/spack/repos/builtin/packages/nag/package.py | 2 +- var/spack/repos/builtin/packages/nalu/package.py | 2 +- var/spack/repos/builtin/packages/namd/package.py | 2 +- var/spack/repos/builtin/packages/nano/package.py | 2 +- var/spack/repos/builtin/packages/nanoflann/package.py | 2 +- var/spack/repos/builtin/packages/nasm/package.py | 2 +- var/spack/repos/builtin/packages/nauty/package.py | 2 +- var/spack/repos/builtin/packages/nccl/package.py | 2 +- var/spack/repos/builtin/packages/nccmp/package.py | 2 +- var/spack/repos/builtin/packages/ncdu/package.py | 2 +- var/spack/repos/builtin/packages/ncftp/package.py | 2 +- var/spack/repos/builtin/packages/ncl/package.py | 2 +- var/spack/repos/builtin/packages/nco/package.py | 2 +- var/spack/repos/builtin/packages/ncurses/package.py | 2 +- var/spack/repos/builtin/packages/ncview/package.py | 2 +- var/spack/repos/builtin/packages/ndiff/package.py | 2 +- var/spack/repos/builtin/packages/nekbone/package.py | 2 +- var/spack/repos/builtin/packages/netcdf-cxx/package.py | 2 +- var/spack/repos/builtin/packages/netcdf-cxx4/package.py | 2 +- var/spack/repos/builtin/packages/netcdf-fortran/package.py | 2 +- var/spack/repos/builtin/packages/netcdf/package.py | 2 +- var/spack/repos/builtin/packages/netgauge/package.py | 2 +- var/spack/repos/builtin/packages/netgen/package.py | 2 +- var/spack/repos/builtin/packages/netlib-lapack/package.py | 2 +- var/spack/repos/builtin/packages/netlib-scalapack/package.py | 2 +- var/spack/repos/builtin/packages/nettle/package.py | 2 +- var/spack/repos/builtin/packages/nextflow/package.py | 2 +- var/spack/repos/builtin/packages/nfft/package.py | 2 +- var/spack/repos/builtin/packages/nginx/package.py | 2 +- var/spack/repos/builtin/packages/ngmlr/package.py | 2 +- var/spack/repos/builtin/packages/ninja-fortran/package.py | 2 +- var/spack/repos/builtin/packages/ninja/package.py | 2 +- var/spack/repos/builtin/packages/nmap/package.py | 2 +- var/spack/repos/builtin/packages/node-js/package.py | 2 +- var/spack/repos/builtin/packages/notmuch/package.py | 2 +- var/spack/repos/builtin/packages/npb/package.py | 2 +- var/spack/repos/builtin/packages/npm/package.py | 2 +- var/spack/repos/builtin/packages/npth/package.py | 2 +- var/spack/repos/builtin/packages/nspr/package.py | 2 +- var/spack/repos/builtin/packages/numdiff/package.py | 2 +- var/spack/repos/builtin/packages/nut/package.py | 2 +- var/spack/repos/builtin/packages/nwchem/package.py | 2 +- var/spack/repos/builtin/packages/ocaml/package.py | 2 +- var/spack/repos/builtin/packages/oce/package.py | 2 +- var/spack/repos/builtin/packages/oclock/package.py | 2 +- var/spack/repos/builtin/packages/octave-splines/package.py | 2 +- var/spack/repos/builtin/packages/octave/package.py | 2 +- var/spack/repos/builtin/packages/octopus/package.py | 2 +- var/spack/repos/builtin/packages/ompss/package.py | 2 +- var/spack/repos/builtin/packages/ompt-openmp/package.py | 2 +- var/spack/repos/builtin/packages/oniguruma/package.py | 2 +- var/spack/repos/builtin/packages/ont-albacore/package.py | 2 +- var/spack/repos/builtin/packages/opari2/package.py | 2 +- var/spack/repos/builtin/packages/openbabel/package.py | 2 +- var/spack/repos/builtin/packages/openblas/package.py | 2 +- var/spack/repos/builtin/packages/opencoarrays/package.py | 2 +- var/spack/repos/builtin/packages/opencv/package.py | 2 +- var/spack/repos/builtin/packages/openexr/package.py | 2 +- var/spack/repos/builtin/packages/openfst/package.py | 2 +- var/spack/repos/builtin/packages/openjpeg/package.py | 2 +- var/spack/repos/builtin/packages/openmc/package.py | 2 +- var/spack/repos/builtin/packages/openmpi/package.py | 2 +- var/spack/repos/builtin/packages/openscenegraph/package.py | 2 +- var/spack/repos/builtin/packages/openssl/package.py | 2 +- var/spack/repos/builtin/packages/opium/package.py | 2 +- var/spack/repos/builtin/packages/opus/package.py | 2 +- var/spack/repos/builtin/packages/orfm/package.py | 2 +- .../repos/builtin/packages/osu-micro-benchmarks/package.py | 2 +- var/spack/repos/builtin/packages/otf/package.py | 2 +- var/spack/repos/builtin/packages/otf2/package.py | 2 +- var/spack/repos/builtin/packages/p4est/package.py | 2 +- var/spack/repos/builtin/packages/pacbio-daligner/package.py | 2 +- var/spack/repos/builtin/packages/pacbio-damasker/package.py | 2 +- var/spack/repos/builtin/packages/pacbio-dazz-db/package.py | 2 +- var/spack/repos/builtin/packages/pacbio-dextractor/package.py | 2 +- var/spack/repos/builtin/packages/pagit/package.py | 2 +- var/spack/repos/builtin/packages/pagmo/package.py | 2 +- var/spack/repos/builtin/packages/paml/package.py | 2 +- var/spack/repos/builtin/packages/panda/package.py | 2 +- var/spack/repos/builtin/packages/pango/package.py | 2 +- var/spack/repos/builtin/packages/papi/package.py | 2 +- var/spack/repos/builtin/packages/paradiseo/package.py | 2 +- var/spack/repos/builtin/packages/parallel-netcdf/package.py | 2 +- var/spack/repos/builtin/packages/parallel/package.py | 2 +- var/spack/repos/builtin/packages/paraver/package.py | 2 +- var/spack/repos/builtin/packages/paraview/package.py | 2 +- var/spack/repos/builtin/packages/parmetis/package.py | 2 +- var/spack/repos/builtin/packages/parmgridgen/package.py | 2 +- var/spack/repos/builtin/packages/parpack/package.py | 2 +- var/spack/repos/builtin/packages/parsimonator/package.py | 2 +- var/spack/repos/builtin/packages/partitionfinder/package.py | 2 +- var/spack/repos/builtin/packages/patch/package.py | 2 +- var/spack/repos/builtin/packages/patchelf/package.py | 2 +- var/spack/repos/builtin/packages/pathfinder/package.py | 2 +- var/spack/repos/builtin/packages/pbmpi/package.py | 2 +- var/spack/repos/builtin/packages/pcma/package.py | 2 +- var/spack/repos/builtin/packages/pcre/package.py | 2 +- var/spack/repos/builtin/packages/pcre2/package.py | 2 +- var/spack/repos/builtin/packages/pdsh/package.py | 2 +- var/spack/repos/builtin/packages/pdt/package.py | 2 +- var/spack/repos/builtin/packages/pennant/package.py | 2 +- var/spack/repos/builtin/packages/perl-dbfile/package.py | 2 +- var/spack/repos/builtin/packages/perl-dbi/package.py | 2 +- .../repos/builtin/packages/perl-extutils-makemaker/package.py | 2 +- var/spack/repos/builtin/packages/perl-intervaltree/package.py | 2 +- var/spack/repos/builtin/packages/perl-math-cdf/package.py | 2 +- var/spack/repos/builtin/packages/perl-module-build/package.py | 2 +- var/spack/repos/builtin/packages/perl-star-fusion/package.py | 2 +- var/spack/repos/builtin/packages/perl-term-readkey/package.py | 2 +- var/spack/repos/builtin/packages/perl-uri-escape/package.py | 2 +- var/spack/repos/builtin/packages/perl-xml-parser/package.py | 2 +- var/spack/repos/builtin/packages/perl/package.py | 2 +- var/spack/repos/builtin/packages/petsc/package.py | 2 +- var/spack/repos/builtin/packages/pexsi/package.py | 2 +- var/spack/repos/builtin/packages/pfft/package.py | 2 +- var/spack/repos/builtin/packages/pflotran/package.py | 2 +- var/spack/repos/builtin/packages/pgdspider/package.py | 2 +- var/spack/repos/builtin/packages/pgi/package.py | 2 +- var/spack/repos/builtin/packages/phasta/package.py | 2 +- var/spack/repos/builtin/packages/phylip/package.py | 2 +- var/spack/repos/builtin/packages/picard/package.py | 2 +- var/spack/repos/builtin/packages/pidx/package.py | 2 +- var/spack/repos/builtin/packages/pigz/package.py | 2 +- var/spack/repos/builtin/packages/piranha/package.py | 2 +- var/spack/repos/builtin/packages/pixman/package.py | 2 +- var/spack/repos/builtin/packages/pkg-config/package.py | 2 +- var/spack/repos/builtin/packages/planck-likelihood/package.py | 2 +- var/spack/repos/builtin/packages/plink/package.py | 2 +- var/spack/repos/builtin/packages/plumed/package.py | 2 +- var/spack/repos/builtin/packages/pmgr-collective/package.py | 2 +- var/spack/repos/builtin/packages/pnfft/package.py | 2 +- var/spack/repos/builtin/packages/pngwriter/package.py | 2 +- var/spack/repos/builtin/packages/poamsa/package.py | 2 +- var/spack/repos/builtin/packages/pocl/package.py | 2 +- var/spack/repos/builtin/packages/polymake/package.py | 2 +- var/spack/repos/builtin/packages/porta/package.py | 2 +- var/spack/repos/builtin/packages/postgresql/package.py | 2 +- var/spack/repos/builtin/packages/ppl/package.py | 2 +- var/spack/repos/builtin/packages/prank/package.py | 2 +- var/spack/repos/builtin/packages/presentproto/package.py | 2 +- var/spack/repos/builtin/packages/preseq/package.py | 2 +- var/spack/repos/builtin/packages/price/package.py | 2 +- var/spack/repos/builtin/packages/primer3/package.py | 2 +- var/spack/repos/builtin/packages/printproto/package.py | 2 +- var/spack/repos/builtin/packages/probconsrna/package.py | 2 +- var/spack/repos/builtin/packages/proj/package.py | 2 +- var/spack/repos/builtin/packages/protobuf/package.py | 2 +- var/spack/repos/builtin/packages/proxymngr/package.py | 2 +- var/spack/repos/builtin/packages/pruners-ninja/package.py | 2 +- var/spack/repos/builtin/packages/psi4/package.py | 2 +- var/spack/repos/builtin/packages/pumi/package.py | 2 +- var/spack/repos/builtin/packages/pvm/package.py | 2 +- var/spack/repos/builtin/packages/py-3to2/package.py | 2 +- var/spack/repos/builtin/packages/py-4suite-xml/package.py | 2 +- var/spack/repos/builtin/packages/py-abipy/package.py | 2 +- var/spack/repos/builtin/packages/py-alabaster/package.py | 2 +- var/spack/repos/builtin/packages/py-apache-libcloud/package.py | 2 +- var/spack/repos/builtin/packages/py-apipkg/package.py | 2 +- var/spack/repos/builtin/packages/py-appdirs/package.py | 2 +- var/spack/repos/builtin/packages/py-appnope/package.py | 2 +- var/spack/repos/builtin/packages/py-apscheduler/package.py | 2 +- var/spack/repos/builtin/packages/py-argcomplete/package.py | 2 +- var/spack/repos/builtin/packages/py-argparse/package.py | 2 +- var/spack/repos/builtin/packages/py-ase/package.py | 2 +- var/spack/repos/builtin/packages/py-asn1crypto/package.py | 2 +- var/spack/repos/builtin/packages/py-astroid/package.py | 2 +- var/spack/repos/builtin/packages/py-astropy/package.py | 2 +- var/spack/repos/builtin/packages/py-attrs/package.py | 2 +- var/spack/repos/builtin/packages/py-autopep8/package.py | 2 +- var/spack/repos/builtin/packages/py-babel/package.py | 2 +- var/spack/repos/builtin/packages/py-backports-abc/package.py | 2 +- .../packages/py-backports-shutil-get-terminal-size/package.py | 2 +- .../builtin/packages/py-backports-ssl-match-hostname/package.py | 2 +- var/spack/repos/builtin/packages/py-basemap/package.py | 2 +- var/spack/repos/builtin/packages/py-beautifulsoup4/package.py | 2 +- var/spack/repos/builtin/packages/py-binwalk/package.py | 2 +- var/spack/repos/builtin/packages/py-biom-format/package.py | 2 +- var/spack/repos/builtin/packages/py-biopython/package.py | 2 +- var/spack/repos/builtin/packages/py-bleach/package.py | 2 +- var/spack/repos/builtin/packages/py-blessings/package.py | 2 +- var/spack/repos/builtin/packages/py-bokeh/package.py | 2 +- var/spack/repos/builtin/packages/py-boltons/package.py | 2 +- var/spack/repos/builtin/packages/py-bottleneck/package.py | 2 +- var/spack/repos/builtin/packages/py-brian/package.py | 2 +- var/spack/repos/builtin/packages/py-brian2/package.py | 2 +- var/spack/repos/builtin/packages/py-cclib/package.py | 2 +- var/spack/repos/builtin/packages/py-cdat-lite/package.py | 2 +- var/spack/repos/builtin/packages/py-cdo/package.py | 2 +- var/spack/repos/builtin/packages/py-certifi/package.py | 2 +- var/spack/repos/builtin/packages/py-cffi/package.py | 2 +- var/spack/repos/builtin/packages/py-chardet/package.py | 2 +- var/spack/repos/builtin/packages/py-click/package.py | 2 +- var/spack/repos/builtin/packages/py-colorama/package.py | 2 +- var/spack/repos/builtin/packages/py-colormath/package.py | 2 +- var/spack/repos/builtin/packages/py-configparser/package.py | 2 +- var/spack/repos/builtin/packages/py-counter/package.py | 2 +- var/spack/repos/builtin/packages/py-coverage/package.py | 2 +- var/spack/repos/builtin/packages/py-cpuinfo/package.py | 2 +- var/spack/repos/builtin/packages/py-cryptography/package.py | 2 +- var/spack/repos/builtin/packages/py-csvkit/package.py | 2 +- var/spack/repos/builtin/packages/py-current/package.py | 2 +- var/spack/repos/builtin/packages/py-cutadapt/package.py | 2 +- var/spack/repos/builtin/packages/py-cycler/package.py | 2 +- var/spack/repos/builtin/packages/py-cython/package.py | 2 +- var/spack/repos/builtin/packages/py-dask/package.py | 2 +- var/spack/repos/builtin/packages/py-dateutil/package.py | 2 +- var/spack/repos/builtin/packages/py-dbf/package.py | 2 +- var/spack/repos/builtin/packages/py-decorator/package.py | 2 +- var/spack/repos/builtin/packages/py-deeptools/package.py | 2 +- var/spack/repos/builtin/packages/py-dev/package.py | 2 +- var/spack/repos/builtin/packages/py-dill/package.py | 2 +- var/spack/repos/builtin/packages/py-docutils/package.py | 2 +- var/spack/repos/builtin/packages/py-doxypy/package.py | 2 +- var/spack/repos/builtin/packages/py-doxypypy/package.py | 2 +- var/spack/repos/builtin/packages/py-dryscrape/package.py | 2 +- var/spack/repos/builtin/packages/py-dxchange/package.py | 2 +- var/spack/repos/builtin/packages/py-dxfile/package.py | 2 +- var/spack/repos/builtin/packages/py-edffile/package.py | 2 +- var/spack/repos/builtin/packages/py-elasticsearch/package.py | 2 +- var/spack/repos/builtin/packages/py-elephant/package.py | 2 +- var/spack/repos/builtin/packages/py-emcee/package.py | 2 +- var/spack/repos/builtin/packages/py-entrypoints/package.py | 2 +- var/spack/repos/builtin/packages/py-enum34/package.py | 2 +- var/spack/repos/builtin/packages/py-epydoc/package.py | 2 +- var/spack/repos/builtin/packages/py-et-xmlfile/package.py | 2 +- var/spack/repos/builtin/packages/py-execnet/package.py | 2 +- var/spack/repos/builtin/packages/py-fastaindex/package.py | 2 +- var/spack/repos/builtin/packages/py-fasteners/package.py | 2 +- var/spack/repos/builtin/packages/py-faststructure/package.py | 2 +- var/spack/repos/builtin/packages/py-fiscalyear/package.py | 2 +- var/spack/repos/builtin/packages/py-flake8/package.py | 2 +- var/spack/repos/builtin/packages/py-flask/package.py | 2 +- var/spack/repos/builtin/packages/py-flexx/package.py | 2 +- var/spack/repos/builtin/packages/py-funcsigs/package.py | 2 +- var/spack/repos/builtin/packages/py-functools32/package.py | 2 +- var/spack/repos/builtin/packages/py-future/package.py | 2 +- var/spack/repos/builtin/packages/py-futures/package.py | 2 +- var/spack/repos/builtin/packages/py-genders/package.py | 2 +- var/spack/repos/builtin/packages/py-genshi/package.py | 2 +- var/spack/repos/builtin/packages/py-git-review/package.py | 2 +- var/spack/repos/builtin/packages/py-git2/package.py | 2 +- var/spack/repos/builtin/packages/py-gnuplot/package.py | 2 +- var/spack/repos/builtin/packages/py-griddataformats/package.py | 2 +- var/spack/repos/builtin/packages/py-guidata/package.py | 2 +- var/spack/repos/builtin/packages/py-guiqwt/package.py | 2 +- var/spack/repos/builtin/packages/py-h5py/package.py | 2 +- var/spack/repos/builtin/packages/py-html2text/package.py | 2 +- var/spack/repos/builtin/packages/py-html5lib/package.py | 2 +- var/spack/repos/builtin/packages/py-httpbin/package.py | 2 +- var/spack/repos/builtin/packages/py-hypothesis/package.py | 2 +- var/spack/repos/builtin/packages/py-idna/package.py | 2 +- var/spack/repos/builtin/packages/py-igraph/package.py | 2 +- var/spack/repos/builtin/packages/py-imagesize/package.py | 2 +- var/spack/repos/builtin/packages/py-iminuit/package.py | 2 +- var/spack/repos/builtin/packages/py-importlib/package.py | 2 +- var/spack/repos/builtin/packages/py-ipaddress/package.py | 2 +- var/spack/repos/builtin/packages/py-ipdb/package.py | 2 +- var/spack/repos/builtin/packages/py-ipykernel/package.py | 2 +- var/spack/repos/builtin/packages/py-ipython-genutils/package.py | 2 +- var/spack/repos/builtin/packages/py-ipython/package.py | 2 +- var/spack/repos/builtin/packages/py-ipywidgets/package.py | 2 +- var/spack/repos/builtin/packages/py-itsdangerous/package.py | 2 +- var/spack/repos/builtin/packages/py-jdcal/package.py | 2 +- var/spack/repos/builtin/packages/py-jedi/package.py | 2 +- var/spack/repos/builtin/packages/py-jinja2/package.py | 2 +- var/spack/repos/builtin/packages/py-joblib/package.py | 2 +- var/spack/repos/builtin/packages/py-jpype/package.py | 2 +- var/spack/repos/builtin/packages/py-jsonschema/package.py | 2 +- var/spack/repos/builtin/packages/py-junit-xml/package.py | 2 +- var/spack/repos/builtin/packages/py-jupyter-client/package.py | 2 +- var/spack/repos/builtin/packages/py-jupyter-console/package.py | 2 +- var/spack/repos/builtin/packages/py-jupyter-core/package.py | 2 +- var/spack/repos/builtin/packages/py-jupyter-notebook/package.py | 2 +- var/spack/repos/builtin/packages/py-keras/package.py | 2 +- var/spack/repos/builtin/packages/py-latexcodec/package.py | 2 +- var/spack/repos/builtin/packages/py-lazy/package.py | 2 +- var/spack/repos/builtin/packages/py-lazyarray/package.py | 2 +- var/spack/repos/builtin/packages/py-libconf/package.py | 2 +- var/spack/repos/builtin/packages/py-lit/package.py | 2 +- var/spack/repos/builtin/packages/py-lmfit/package.py | 2 +- var/spack/repos/builtin/packages/py-lockfile/package.py | 2 +- var/spack/repos/builtin/packages/py-logilab-common/package.py | 2 +- var/spack/repos/builtin/packages/py-lxml/package.py | 2 +- var/spack/repos/builtin/packages/py-lzstring/package.py | 2 +- var/spack/repos/builtin/packages/py-macholib/package.py | 2 +- var/spack/repos/builtin/packages/py-machotools/package.py | 2 +- var/spack/repos/builtin/packages/py-macs2/package.py | 2 +- var/spack/repos/builtin/packages/py-mako/package.py | 2 +- var/spack/repos/builtin/packages/py-markdown/package.py | 2 +- var/spack/repos/builtin/packages/py-markupsafe/package.py | 2 +- var/spack/repos/builtin/packages/py-matplotlib/package.py | 2 +- var/spack/repos/builtin/packages/py-mccabe/package.py | 2 +- var/spack/repos/builtin/packages/py-mdanalysis/package.py | 2 +- var/spack/repos/builtin/packages/py-meep/package.py | 2 +- var/spack/repos/builtin/packages/py-misopy/package.py | 2 +- var/spack/repos/builtin/packages/py-mistune/package.py | 2 +- var/spack/repos/builtin/packages/py-mock/package.py | 2 +- var/spack/repos/builtin/packages/py-mongo/package.py | 2 +- var/spack/repos/builtin/packages/py-monotonic/package.py | 2 +- var/spack/repos/builtin/packages/py-monty/package.py | 2 +- var/spack/repos/builtin/packages/py-mpi4py/package.py | 2 +- var/spack/repos/builtin/packages/py-mpmath/package.py | 2 +- var/spack/repos/builtin/packages/py-multiprocess/package.py | 2 +- var/spack/repos/builtin/packages/py-multiqc/package.py | 2 +- var/spack/repos/builtin/packages/py-mx/package.py | 2 +- var/spack/repos/builtin/packages/py-myhdl/package.py | 2 +- var/spack/repos/builtin/packages/py-mysqldb1/package.py | 2 +- var/spack/repos/builtin/packages/py-nbconvert/package.py | 2 +- var/spack/repos/builtin/packages/py-nbformat/package.py | 2 +- var/spack/repos/builtin/packages/py-neo/package.py | 2 +- var/spack/repos/builtin/packages/py-nestle/package.py | 2 +- var/spack/repos/builtin/packages/py-netcdf4/package.py | 2 +- var/spack/repos/builtin/packages/py-netifaces/package.py | 2 +- var/spack/repos/builtin/packages/py-networkx/package.py | 2 +- var/spack/repos/builtin/packages/py-nose/package.py | 2 +- var/spack/repos/builtin/packages/py-nosexcover/package.py | 2 +- var/spack/repos/builtin/packages/py-numexpr/package.py | 2 +- var/spack/repos/builtin/packages/py-numpy/package.py | 2 +- var/spack/repos/builtin/packages/py-numpydoc/package.py | 2 +- var/spack/repos/builtin/packages/py-olefile/package.py | 2 +- var/spack/repos/builtin/packages/py-ont-fast5-api/package.py | 2 +- var/spack/repos/builtin/packages/py-openpyxl/package.py | 2 +- var/spack/repos/builtin/packages/py-ordereddict/package.py | 2 +- var/spack/repos/builtin/packages/py-oset/package.py | 2 +- var/spack/repos/builtin/packages/py-packaging/package.py | 2 +- var/spack/repos/builtin/packages/py-palettable/package.py | 2 +- var/spack/repos/builtin/packages/py-pandas/package.py | 2 +- var/spack/repos/builtin/packages/py-paramiko/package.py | 2 +- var/spack/repos/builtin/packages/py-pathlib2/package.py | 2 +- var/spack/repos/builtin/packages/py-pathos/package.py | 2 +- var/spack/repos/builtin/packages/py-pathspec/package.py | 2 +- var/spack/repos/builtin/packages/py-patsy/package.py | 2 +- var/spack/repos/builtin/packages/py-pbr/package.py | 2 +- var/spack/repos/builtin/packages/py-periodictable/package.py | 2 +- var/spack/repos/builtin/packages/py-petsc4py/package.py | 2 +- var/spack/repos/builtin/packages/py-pexpect/package.py | 2 +- var/spack/repos/builtin/packages/py-phonopy/package.py | 2 +- var/spack/repos/builtin/packages/py-pickleshare/package.py | 2 +- var/spack/repos/builtin/packages/py-pil/package.py | 2 +- var/spack/repos/builtin/packages/py-pillow/package.py | 2 +- var/spack/repos/builtin/packages/py-pip/package.py | 2 +- var/spack/repos/builtin/packages/py-pipits/package.py | 2 +- var/spack/repos/builtin/packages/py-pkgconfig/package.py | 2 +- var/spack/repos/builtin/packages/py-ply/package.py | 2 +- var/spack/repos/builtin/packages/py-pmw/package.py | 2 +- var/spack/repos/builtin/packages/py-pox/package.py | 2 +- var/spack/repos/builtin/packages/py-ppft/package.py | 2 +- var/spack/repos/builtin/packages/py-prettytable/package.py | 2 +- var/spack/repos/builtin/packages/py-proj/package.py | 2 +- var/spack/repos/builtin/packages/py-prompt-toolkit/package.py | 2 +- var/spack/repos/builtin/packages/py-protobuf/package.py | 2 +- var/spack/repos/builtin/packages/py-psutil/package.py | 2 +- var/spack/repos/builtin/packages/py-ptyprocess/package.py | 2 +- var/spack/repos/builtin/packages/py-pudb/package.py | 2 +- var/spack/repos/builtin/packages/py-py/package.py | 2 +- var/spack/repos/builtin/packages/py-py2bit/package.py | 2 +- var/spack/repos/builtin/packages/py-py2cairo/package.py | 2 +- var/spack/repos/builtin/packages/py-py2neo/package.py | 2 +- var/spack/repos/builtin/packages/py-py4j/package.py | 2 +- var/spack/repos/builtin/packages/py-pyasn1/package.py | 2 +- var/spack/repos/builtin/packages/py-pybigwig/package.py | 2 +- var/spack/repos/builtin/packages/py-pybind11/package.py | 2 +- var/spack/repos/builtin/packages/py-pybtex-docutils/package.py | 2 +- var/spack/repos/builtin/packages/py-pybtex/package.py | 2 +- var/spack/repos/builtin/packages/py-pychecker/package.py | 2 +- var/spack/repos/builtin/packages/py-pycodestyle/package.py | 2 +- var/spack/repos/builtin/packages/py-pycparser/package.py | 2 +- var/spack/repos/builtin/packages/py-pycrypto/package.py | 2 +- var/spack/repos/builtin/packages/py-pycurl/package.py | 2 +- var/spack/repos/builtin/packages/py-pydatalog/package.py | 2 +- var/spack/repos/builtin/packages/py-pydispatcher/package.py | 2 +- var/spack/repos/builtin/packages/py-pydot/package.py | 2 +- var/spack/repos/builtin/packages/py-pyelftools/package.py | 2 +- var/spack/repos/builtin/packages/py-pyfftw/package.py | 2 +- var/spack/repos/builtin/packages/py-pyflakes/package.py | 2 +- var/spack/repos/builtin/packages/py-pygments/package.py | 2 +- var/spack/repos/builtin/packages/py-pygobject/package.py | 2 +- var/spack/repos/builtin/packages/py-pygtk/package.py | 2 +- var/spack/repos/builtin/packages/py-pylint/package.py | 2 +- var/spack/repos/builtin/packages/py-pymatgen/package.py | 2 +- var/spack/repos/builtin/packages/py-pyminifier/package.py | 2 +- var/spack/repos/builtin/packages/py-pympler/package.py | 2 +- var/spack/repos/builtin/packages/py-pynn/package.py | 2 +- var/spack/repos/builtin/packages/py-pypar/package.py | 2 +- var/spack/repos/builtin/packages/py-pyparsing/package.py | 2 +- var/spack/repos/builtin/packages/py-pypeflow/package.py | 2 +- var/spack/repos/builtin/packages/py-pyprof2html/package.py | 2 +- var/spack/repos/builtin/packages/py-pyqt/package.py | 2 +- var/spack/repos/builtin/packages/py-pyrad/package.py | 2 +- var/spack/repos/builtin/packages/py-pysam/package.py | 2 +- var/spack/repos/builtin/packages/py-pyscaf/package.py | 2 +- var/spack/repos/builtin/packages/py-pyserial/package.py | 2 +- var/spack/repos/builtin/packages/py-pyside/package.py | 2 +- var/spack/repos/builtin/packages/py-pysocks/package.py | 2 +- var/spack/repos/builtin/packages/py-pytables/package.py | 2 +- var/spack/repos/builtin/packages/py-pytest-cov/package.py | 2 +- var/spack/repos/builtin/packages/py-pytest-flake8/package.py | 2 +- var/spack/repos/builtin/packages/py-pytest-httpbin/package.py | 2 +- var/spack/repos/builtin/packages/py-pytest-mock/package.py | 2 +- var/spack/repos/builtin/packages/py-pytest-runner/package.py | 2 +- var/spack/repos/builtin/packages/py-pytest-xdist/package.py | 2 +- var/spack/repos/builtin/packages/py-pytest/package.py | 2 +- var/spack/repos/builtin/packages/py-python-daemon/package.py | 2 +- var/spack/repos/builtin/packages/py-python-gitlab/package.py | 2 +- var/spack/repos/builtin/packages/py-pythonqwt/package.py | 2 +- var/spack/repos/builtin/packages/py-pytz/package.py | 2 +- var/spack/repos/builtin/packages/py-pywavelets/package.py | 2 +- var/spack/repos/builtin/packages/py-pyyaml/package.py | 2 +- var/spack/repos/builtin/packages/py-qtawesome/package.py | 2 +- var/spack/repos/builtin/packages/py-qtconsole/package.py | 2 +- var/spack/repos/builtin/packages/py-qtpy/package.py | 2 +- var/spack/repos/builtin/packages/py-quantities/package.py | 2 +- var/spack/repos/builtin/packages/py-radical-utils/package.py | 2 +- var/spack/repos/builtin/packages/py-ranger/package.py | 2 +- var/spack/repos/builtin/packages/py-readme-renderer/package.py | 2 +- var/spack/repos/builtin/packages/py-regex/package.py | 2 +- var/spack/repos/builtin/packages/py-requests/package.py | 2 +- var/spack/repos/builtin/packages/py-restview/package.py | 2 +- var/spack/repos/builtin/packages/py-rope/package.py | 2 +- var/spack/repos/builtin/packages/py-rpy2/package.py | 2 +- var/spack/repos/builtin/packages/py-rsa/package.py | 2 +- var/spack/repos/builtin/packages/py-rtree/package.py | 2 +- var/spack/repos/builtin/packages/py-saga-python/package.py | 2 +- var/spack/repos/builtin/packages/py-scientificpython/package.py | 2 +- var/spack/repos/builtin/packages/py-scikit-image/package.py | 2 +- var/spack/repos/builtin/packages/py-scikit-learn/package.py | 2 +- var/spack/repos/builtin/packages/py-scipy/package.py | 2 +- var/spack/repos/builtin/packages/py-seaborn/package.py | 2 +- var/spack/repos/builtin/packages/py-setuptools/package.py | 2 +- var/spack/repos/builtin/packages/py-sh/package.py | 2 +- var/spack/repos/builtin/packages/py-shiboken/package.py | 2 +- var/spack/repos/builtin/packages/py-simplegeneric/package.py | 2 +- var/spack/repos/builtin/packages/py-simplejson/package.py | 2 +- var/spack/repos/builtin/packages/py-singledispatch/package.py | 2 +- var/spack/repos/builtin/packages/py-sip/package.py | 2 +- var/spack/repos/builtin/packages/py-six/package.py | 2 +- var/spack/repos/builtin/packages/py-slepc4py/package.py | 2 +- var/spack/repos/builtin/packages/py-sncosmo/package.py | 2 +- var/spack/repos/builtin/packages/py-snowballstemmer/package.py | 2 +- var/spack/repos/builtin/packages/py-spectra/package.py | 2 +- var/spack/repos/builtin/packages/py-spefile/package.py | 2 +- var/spack/repos/builtin/packages/py-spglib/package.py | 2 +- .../repos/builtin/packages/py-sphinx-bootstrap-theme/package.py | 2 +- var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py | 2 +- var/spack/repos/builtin/packages/py-sphinx/package.py | 2 +- .../repos/builtin/packages/py-sphinxcontrib-bibtex/package.py | 2 +- .../builtin/packages/py-sphinxcontrib-programoutput/package.py | 2 +- .../builtin/packages/py-sphinxcontrib-websupport/package.py | 2 +- var/spack/repos/builtin/packages/py-spyder/package.py | 2 +- var/spack/repos/builtin/packages/py-spykeutils/package.py | 2 +- var/spack/repos/builtin/packages/py-sqlalchemy/package.py | 2 +- var/spack/repos/builtin/packages/py-statsmodels/package.py | 2 +- var/spack/repos/builtin/packages/py-storm/package.py | 2 +- var/spack/repos/builtin/packages/py-subprocess32/package.py | 2 +- var/spack/repos/builtin/packages/py-symengine/package.py | 2 +- var/spack/repos/builtin/packages/py-symfit/package.py | 2 +- var/spack/repos/builtin/packages/py-sympy/package.py | 2 +- var/spack/repos/builtin/packages/py-tabulate/package.py | 2 +- var/spack/repos/builtin/packages/py-tappy/package.py | 2 +- var/spack/repos/builtin/packages/py-terminado/package.py | 2 +- var/spack/repos/builtin/packages/py-theano/package.py | 2 +- var/spack/repos/builtin/packages/py-tifffile/package.py | 2 +- var/spack/repos/builtin/packages/py-tomopy/package.py | 2 +- var/spack/repos/builtin/packages/py-tornado/package.py | 2 +- var/spack/repos/builtin/packages/py-tqdm/package.py | 2 +- var/spack/repos/builtin/packages/py-traitlets/package.py | 2 +- var/spack/repos/builtin/packages/py-tuiview/package.py | 2 +- var/spack/repos/builtin/packages/py-twisted/package.py | 2 +- var/spack/repos/builtin/packages/py-typing/package.py | 2 +- var/spack/repos/builtin/packages/py-tzlocal/package.py | 2 +- var/spack/repos/builtin/packages/py-unittest2/package.py | 2 +- var/spack/repos/builtin/packages/py-unittest2py3k/package.py | 2 +- var/spack/repos/builtin/packages/py-urllib3/package.py | 2 +- var/spack/repos/builtin/packages/py-urwid/package.py | 2 +- var/spack/repos/builtin/packages/py-vcversioner/package.py | 2 +- var/spack/repos/builtin/packages/py-virtualenv/package.py | 2 +- var/spack/repos/builtin/packages/py-wcsaxes/package.py | 2 +- var/spack/repos/builtin/packages/py-wcwidth/package.py | 2 +- var/spack/repos/builtin/packages/py-webkit-server/package.py | 2 +- var/spack/repos/builtin/packages/py-werkzeug/package.py | 2 +- var/spack/repos/builtin/packages/py-wheel/package.py | 2 +- .../repos/builtin/packages/py-widgetsnbextension/package.py | 2 +- var/spack/repos/builtin/packages/py-wrapt/package.py | 2 +- var/spack/repos/builtin/packages/py-xarray/package.py | 2 +- var/spack/repos/builtin/packages/py-xlrd/package.py | 2 +- var/spack/repos/builtin/packages/py-xmlrunner/package.py | 2 +- var/spack/repos/builtin/packages/py-xopen/package.py | 2 +- var/spack/repos/builtin/packages/py-xpyb/package.py | 2 +- var/spack/repos/builtin/packages/py-xvfbwrapper/package.py | 2 +- var/spack/repos/builtin/packages/py-yapf/package.py | 2 +- var/spack/repos/builtin/packages/py-yt/package.py | 2 +- var/spack/repos/builtin/packages/py-zmq/package.py | 2 +- var/spack/repos/builtin/packages/python/package.py | 2 +- var/spack/repos/builtin/packages/qbank/package.py | 2 +- var/spack/repos/builtin/packages/qbox/package.py | 2 +- var/spack/repos/builtin/packages/qhull/package.py | 2 +- var/spack/repos/builtin/packages/qrupdate/package.py | 2 +- var/spack/repos/builtin/packages/qt-creator/package.py | 2 +- var/spack/repos/builtin/packages/qt/package.py | 2 +- var/spack/repos/builtin/packages/qthreads/package.py | 2 +- var/spack/repos/builtin/packages/qwt/package.py | 2 +- var/spack/repos/builtin/packages/r-abind/package.py | 2 +- var/spack/repos/builtin/packages/r-ada/package.py | 2 +- var/spack/repos/builtin/packages/r-adabag/package.py | 2 +- var/spack/repos/builtin/packages/r-ade4/package.py | 2 +- var/spack/repos/builtin/packages/r-adegenet/package.py | 2 +- var/spack/repos/builtin/packages/r-ape/package.py | 2 +- var/spack/repos/builtin/packages/r-assertthat/package.py | 2 +- var/spack/repos/builtin/packages/r-base64enc/package.py | 2 +- var/spack/repos/builtin/packages/r-bh/package.py | 2 +- var/spack/repos/builtin/packages/r-biocgenerics/package.py | 2 +- var/spack/repos/builtin/packages/r-biocinstaller/package.py | 2 +- var/spack/repos/builtin/packages/r-bitops/package.py | 2 +- var/spack/repos/builtin/packages/r-boot/package.py | 2 +- var/spack/repos/builtin/packages/r-brew/package.py | 2 +- var/spack/repos/builtin/packages/r-c50/package.py | 2 +- var/spack/repos/builtin/packages/r-car/package.py | 2 +- var/spack/repos/builtin/packages/r-caret/package.py | 2 +- var/spack/repos/builtin/packages/r-catools/package.py | 2 +- var/spack/repos/builtin/packages/r-checkpoint/package.py | 2 +- var/spack/repos/builtin/packages/r-chron/package.py | 2 +- var/spack/repos/builtin/packages/r-class/package.py | 2 +- var/spack/repos/builtin/packages/r-cluster/package.py | 2 +- var/spack/repos/builtin/packages/r-coda/package.py | 2 +- var/spack/repos/builtin/packages/r-codetools/package.py | 2 +- var/spack/repos/builtin/packages/r-coin/package.py | 2 +- var/spack/repos/builtin/packages/r-colorspace/package.py | 2 +- var/spack/repos/builtin/packages/r-corpcor/package.py | 2 +- var/spack/repos/builtin/packages/r-corrplot/package.py | 2 +- var/spack/repos/builtin/packages/r-crayon/package.py | 2 +- var/spack/repos/builtin/packages/r-cubature/package.py | 2 +- var/spack/repos/builtin/packages/r-cubist/package.py | 2 +- var/spack/repos/builtin/packages/r-curl/package.py | 2 +- var/spack/repos/builtin/packages/r-data-table/package.py | 2 +- var/spack/repos/builtin/packages/r-dbi/package.py | 2 +- var/spack/repos/builtin/packages/r-deldir/package.py | 2 +- var/spack/repos/builtin/packages/r-dendextend/package.py | 2 +- var/spack/repos/builtin/packages/r-deoptim/package.py | 2 +- var/spack/repos/builtin/packages/r-deoptimr/package.py | 2 +- var/spack/repos/builtin/packages/r-devtools/package.py | 2 +- var/spack/repos/builtin/packages/r-diagrammer/package.py | 2 +- var/spack/repos/builtin/packages/r-dichromat/package.py | 2 +- var/spack/repos/builtin/packages/r-digest/package.py | 2 +- var/spack/repos/builtin/packages/r-diptest/package.py | 2 +- var/spack/repos/builtin/packages/r-domc/package.py | 2 +- var/spack/repos/builtin/packages/r-doparallel/package.py | 2 +- var/spack/repos/builtin/packages/r-dplyr/package.py | 2 +- var/spack/repos/builtin/packages/r-dt/package.py | 2 +- var/spack/repos/builtin/packages/r-dygraphs/package.py | 2 +- var/spack/repos/builtin/packages/r-e1071/package.py | 2 +- var/spack/repos/builtin/packages/r-ellipse/package.py | 2 +- var/spack/repos/builtin/packages/r-ergm/package.py | 2 +- var/spack/repos/builtin/packages/r-evaluate/package.py | 2 +- var/spack/repos/builtin/packages/r-expm/package.py | 2 +- var/spack/repos/builtin/packages/r-factoextra/package.py | 2 +- var/spack/repos/builtin/packages/r-factominer/package.py | 2 +- var/spack/repos/builtin/packages/r-filehash/package.py | 2 +- var/spack/repos/builtin/packages/r-flashclust/package.py | 2 +- var/spack/repos/builtin/packages/r-flexmix/package.py | 2 +- var/spack/repos/builtin/packages/r-foreach/package.py | 2 +- var/spack/repos/builtin/packages/r-foreign/package.py | 2 +- var/spack/repos/builtin/packages/r-formatr/package.py | 2 +- var/spack/repos/builtin/packages/r-formula/package.py | 2 +- var/spack/repos/builtin/packages/r-fpc/package.py | 2 +- var/spack/repos/builtin/packages/r-gdata/package.py | 2 +- var/spack/repos/builtin/packages/r-geosphere/package.py | 2 +- var/spack/repos/builtin/packages/r-ggmap/package.py | 2 +- var/spack/repos/builtin/packages/r-ggplot2/package.py | 2 +- var/spack/repos/builtin/packages/r-ggpubr/package.py | 2 +- var/spack/repos/builtin/packages/r-ggrepel/package.py | 2 +- var/spack/repos/builtin/packages/r-ggsci/package.py | 2 +- var/spack/repos/builtin/packages/r-ggvis/package.py | 2 +- var/spack/repos/builtin/packages/r-gistr/package.py | 2 +- var/spack/repos/builtin/packages/r-git2r/package.py | 2 +- var/spack/repos/builtin/packages/r-glmnet/package.py | 2 +- var/spack/repos/builtin/packages/r-gmodels/package.py | 2 +- var/spack/repos/builtin/packages/r-gmp/package.py | 2 +- var/spack/repos/builtin/packages/r-googlevis/package.py | 2 +- var/spack/repos/builtin/packages/r-gridbase/package.py | 2 +- var/spack/repos/builtin/packages/r-gridextra/package.py | 2 +- var/spack/repos/builtin/packages/r-gtable/package.py | 2 +- var/spack/repos/builtin/packages/r-gtools/package.py | 2 +- var/spack/repos/builtin/packages/r-hexbin/package.py | 2 +- var/spack/repos/builtin/packages/r-highr/package.py | 2 +- var/spack/repos/builtin/packages/r-htmltools/package.py | 2 +- var/spack/repos/builtin/packages/r-htmlwidgets/package.py | 2 +- var/spack/repos/builtin/packages/r-httpuv/package.py | 2 +- var/spack/repos/builtin/packages/r-httr/package.py | 2 +- var/spack/repos/builtin/packages/r-igraph/package.py | 2 +- var/spack/repos/builtin/packages/r-influencer/package.py | 2 +- var/spack/repos/builtin/packages/r-inline/package.py | 2 +- var/spack/repos/builtin/packages/r-ipred/package.py | 2 +- var/spack/repos/builtin/packages/r-irdisplay/package.py | 2 +- var/spack/repos/builtin/packages/r-irkernel/package.py | 2 +- var/spack/repos/builtin/packages/r-irlba/package.py | 2 +- var/spack/repos/builtin/packages/r-iterators/package.py | 2 +- var/spack/repos/builtin/packages/r-jpeg/package.py | 2 +- var/spack/repos/builtin/packages/r-jsonlite/package.py | 2 +- var/spack/repos/builtin/packages/r-kernlab/package.py | 2 +- var/spack/repos/builtin/packages/r-kernsmooth/package.py | 2 +- var/spack/repos/builtin/packages/r-kknn/package.py | 2 +- var/spack/repos/builtin/packages/r-knitr/package.py | 2 +- var/spack/repos/builtin/packages/r-labeling/package.py | 2 +- var/spack/repos/builtin/packages/r-laplacesdemon/package.py | 2 +- var/spack/repos/builtin/packages/r-lattice/package.py | 2 +- var/spack/repos/builtin/packages/r-lava/package.py | 2 +- var/spack/repos/builtin/packages/r-lazyeval/package.py | 2 +- var/spack/repos/builtin/packages/r-leaflet/package.py | 2 +- var/spack/repos/builtin/packages/r-leaps/package.py | 2 +- var/spack/repos/builtin/packages/r-learnbayes/package.py | 2 +- var/spack/repos/builtin/packages/r-lme4/package.py | 2 +- var/spack/repos/builtin/packages/r-lmtest/package.py | 2 +- var/spack/repos/builtin/packages/r-lpsolve/package.py | 2 +- var/spack/repos/builtin/packages/r-lubridate/package.py | 2 +- var/spack/repos/builtin/packages/r-magic/package.py | 2 +- var/spack/repos/builtin/packages/r-magrittr/package.py | 2 +- var/spack/repos/builtin/packages/r-mapproj/package.py | 2 +- var/spack/repos/builtin/packages/r-maps/package.py | 2 +- var/spack/repos/builtin/packages/r-maptools/package.py | 2 +- var/spack/repos/builtin/packages/r-markdown/package.py | 2 +- var/spack/repos/builtin/packages/r-mass/package.py | 2 +- var/spack/repos/builtin/packages/r-matrix/package.py | 2 +- var/spack/repos/builtin/packages/r-matrixmodels/package.py | 2 +- var/spack/repos/builtin/packages/r-mclust/package.py | 2 +- var/spack/repos/builtin/packages/r-mda/package.py | 2 +- var/spack/repos/builtin/packages/r-memoise/package.py | 2 +- var/spack/repos/builtin/packages/r-mgcv/package.py | 2 +- var/spack/repos/builtin/packages/r-mime/package.py | 2 +- var/spack/repos/builtin/packages/r-minqa/package.py | 2 +- var/spack/repos/builtin/packages/r-mlbench/package.py | 2 +- var/spack/repos/builtin/packages/r-modelmetrics/package.py | 2 +- var/spack/repos/builtin/packages/r-modeltools/package.py | 2 +- var/spack/repos/builtin/packages/r-multcomp/package.py | 2 +- var/spack/repos/builtin/packages/r-munsell/package.py | 2 +- var/spack/repos/builtin/packages/r-mvtnorm/package.py | 2 +- var/spack/repos/builtin/packages/r-ncdf4/package.py | 2 +- var/spack/repos/builtin/packages/r-network/package.py | 2 +- var/spack/repos/builtin/packages/r-networkd3/package.py | 2 +- var/spack/repos/builtin/packages/r-nlme/package.py | 2 +- var/spack/repos/builtin/packages/r-nloptr/package.py | 2 +- var/spack/repos/builtin/packages/r-nmf/package.py | 2 +- var/spack/repos/builtin/packages/r-nnet/package.py | 2 +- var/spack/repos/builtin/packages/r-np/package.py | 2 +- var/spack/repos/builtin/packages/r-numderiv/package.py | 2 +- var/spack/repos/builtin/packages/r-openssl/package.py | 2 +- var/spack/repos/builtin/packages/r-packrat/package.py | 2 +- var/spack/repos/builtin/packages/r-pacman/package.py | 2 +- var/spack/repos/builtin/packages/r-party/package.py | 2 +- var/spack/repos/builtin/packages/r-partykit/package.py | 2 +- var/spack/repos/builtin/packages/r-pbdzmq/package.py | 2 +- var/spack/repos/builtin/packages/r-pbkrtest/package.py | 2 +- var/spack/repos/builtin/packages/r-permute/package.py | 2 +- var/spack/repos/builtin/packages/r-pkgmaker/package.py | 2 +- var/spack/repos/builtin/packages/r-plotrix/package.py | 2 +- var/spack/repos/builtin/packages/r-pls/package.py | 2 +- var/spack/repos/builtin/packages/r-plyr/package.py | 2 +- var/spack/repos/builtin/packages/r-png/package.py | 2 +- var/spack/repos/builtin/packages/r-prabclus/package.py | 2 +- var/spack/repos/builtin/packages/r-praise/package.py | 2 +- var/spack/repos/builtin/packages/r-prodlim/package.py | 2 +- var/spack/repos/builtin/packages/r-proto/package.py | 2 +- var/spack/repos/builtin/packages/r-pryr/package.py | 2 +- var/spack/repos/builtin/packages/r-quadprog/package.py | 2 +- var/spack/repos/builtin/packages/r-quantmod/package.py | 2 +- var/spack/repos/builtin/packages/r-quantreg/package.py | 2 +- var/spack/repos/builtin/packages/r-r6/package.py | 2 +- var/spack/repos/builtin/packages/r-randomforest/package.py | 2 +- var/spack/repos/builtin/packages/r-raster/package.py | 2 +- var/spack/repos/builtin/packages/r-rbokeh/package.py | 2 +- var/spack/repos/builtin/packages/r-rcolorbrewer/package.py | 2 +- var/spack/repos/builtin/packages/r-rcpp/package.py | 2 +- var/spack/repos/builtin/packages/r-rcppeigen/package.py | 2 +- var/spack/repos/builtin/packages/r-registry/package.py | 2 +- var/spack/repos/builtin/packages/r-repr/package.py | 2 +- var/spack/repos/builtin/packages/r-reshape2/package.py | 2 +- var/spack/repos/builtin/packages/r-rgl/package.py | 2 +- var/spack/repos/builtin/packages/r-rgooglemaps/package.py | 2 +- var/spack/repos/builtin/packages/r-rinside/package.py | 2 +- var/spack/repos/builtin/packages/r-rjava/package.py | 2 +- var/spack/repos/builtin/packages/r-rjson/package.py | 2 +- var/spack/repos/builtin/packages/r-rjsonio/package.py | 2 +- var/spack/repos/builtin/packages/r-rmarkdown/package.py | 2 +- var/spack/repos/builtin/packages/r-rminer/package.py | 2 +- var/spack/repos/builtin/packages/r-rmpfr/package.py | 2 +- var/spack/repos/builtin/packages/r-rmpi/package.py | 2 +- var/spack/repos/builtin/packages/r-rmysql/package.py | 2 +- var/spack/repos/builtin/packages/r-rngtools/package.py | 2 +- var/spack/repos/builtin/packages/r-robustbase/package.py | 2 +- var/spack/repos/builtin/packages/r-rodbc/package.py | 2 +- var/spack/repos/builtin/packages/r-roxygen2/package.py | 2 +- var/spack/repos/builtin/packages/r-rpart-plot/package.py | 2 +- var/spack/repos/builtin/packages/r-rpart/package.py | 2 +- var/spack/repos/builtin/packages/r-rpostgresql/package.py | 2 +- var/spack/repos/builtin/packages/r-rsnns/package.py | 2 +- var/spack/repos/builtin/packages/r-rsqlite/package.py | 2 +- var/spack/repos/builtin/packages/r-rstan/package.py | 2 +- var/spack/repos/builtin/packages/r-rstudioapi/package.py | 2 +- var/spack/repos/builtin/packages/r-rzmq/package.py | 2 +- var/spack/repos/builtin/packages/r-sandwich/package.py | 2 +- var/spack/repos/builtin/packages/r-scales/package.py | 2 +- var/spack/repos/builtin/packages/r-scatterplot3d/package.py | 2 +- var/spack/repos/builtin/packages/r-segmented/package.py | 2 +- var/spack/repos/builtin/packages/r-seqinr/package.py | 2 +- var/spack/repos/builtin/packages/r-shiny/package.py | 2 +- var/spack/repos/builtin/packages/r-snow/package.py | 2 +- var/spack/repos/builtin/packages/r-sp/package.py | 2 +- var/spack/repos/builtin/packages/r-sparsem/package.py | 2 +- var/spack/repos/builtin/packages/r-spdep/package.py | 2 +- var/spack/repos/builtin/packages/r-stanheaders/package.py | 2 +- var/spack/repos/builtin/packages/r-statnet-common/package.py | 2 +- var/spack/repos/builtin/packages/r-stringi/package.py | 2 +- var/spack/repos/builtin/packages/r-stringr/package.py | 2 +- var/spack/repos/builtin/packages/r-strucchange/package.py | 2 +- var/spack/repos/builtin/packages/r-survey/package.py | 2 +- var/spack/repos/builtin/packages/r-survival/package.py | 2 +- var/spack/repos/builtin/packages/r-tarifx/package.py | 2 +- var/spack/repos/builtin/packages/r-testit/package.py | 2 +- var/spack/repos/builtin/packages/r-testthat/package.py | 2 +- var/spack/repos/builtin/packages/r-th-data/package.py | 2 +- var/spack/repos/builtin/packages/r-threejs/package.py | 2 +- var/spack/repos/builtin/packages/r-tibble/package.py | 2 +- var/spack/repos/builtin/packages/r-tidyr/package.py | 2 +- var/spack/repos/builtin/packages/r-trimcluster/package.py | 2 +- var/spack/repos/builtin/packages/r-trust/package.py | 2 +- var/spack/repos/builtin/packages/r-ttr/package.py | 2 +- var/spack/repos/builtin/packages/r-uuid/package.py | 2 +- var/spack/repos/builtin/packages/r-vcd/package.py | 2 +- var/spack/repos/builtin/packages/r-vegan/package.py | 2 +- var/spack/repos/builtin/packages/r-viridis/package.py | 2 +- var/spack/repos/builtin/packages/r-viridislite/package.py | 2 +- var/spack/repos/builtin/packages/r-visnetwork/package.py | 2 +- var/spack/repos/builtin/packages/r-whisker/package.py | 2 +- var/spack/repos/builtin/packages/r-withr/package.py | 2 +- var/spack/repos/builtin/packages/r-xgboost/package.py | 2 +- var/spack/repos/builtin/packages/r-xlconnect/package.py | 2 +- var/spack/repos/builtin/packages/r-xlconnectjars/package.py | 2 +- var/spack/repos/builtin/packages/r-xlsx/package.py | 2 +- var/spack/repos/builtin/packages/r-xlsxjars/package.py | 2 +- var/spack/repos/builtin/packages/r-xml/package.py | 2 +- var/spack/repos/builtin/packages/r-xtable/package.py | 2 +- var/spack/repos/builtin/packages/r-xts/package.py | 2 +- var/spack/repos/builtin/packages/r-yaml/package.py | 2 +- var/spack/repos/builtin/packages/r-zoo/package.py | 2 +- var/spack/repos/builtin/packages/r/package.py | 2 +- var/spack/repos/builtin/packages/raft/package.py | 2 +- var/spack/repos/builtin/packages/raja/package.py | 2 +- var/spack/repos/builtin/packages/random123/package.py | 2 +- var/spack/repos/builtin/packages/randrproto/package.py | 2 +- var/spack/repos/builtin/packages/ravel/package.py | 2 +- var/spack/repos/builtin/packages/raxml/package.py | 2 +- var/spack/repos/builtin/packages/ray/package.py | 2 +- var/spack/repos/builtin/packages/rdp-classifier/package.py | 2 +- var/spack/repos/builtin/packages/readline/package.py | 2 +- var/spack/repos/builtin/packages/recordproto/package.py | 2 +- var/spack/repos/builtin/packages/redundans/package.py | 2 +- var/spack/repos/builtin/packages/relion/package.py | 2 +- var/spack/repos/builtin/packages/rempi/package.py | 2 +- var/spack/repos/builtin/packages/rename/package.py | 2 +- var/spack/repos/builtin/packages/rendercheck/package.py | 2 +- var/spack/repos/builtin/packages/renderproto/package.py | 2 +- var/spack/repos/builtin/packages/resourceproto/package.py | 2 +- var/spack/repos/builtin/packages/revbayes/package.py | 2 +- var/spack/repos/builtin/packages/rgb/package.py | 2 +- var/spack/repos/builtin/packages/rhash/package.py | 2 +- var/spack/repos/builtin/packages/rockstar/package.py | 2 +- var/spack/repos/builtin/packages/root/package.py | 2 +- var/spack/repos/builtin/packages/rose/package.py | 2 +- var/spack/repos/builtin/packages/rr/package.py | 2 +- var/spack/repos/builtin/packages/rsbench/package.py | 2 +- var/spack/repos/builtin/packages/rsem/package.py | 2 +- var/spack/repos/builtin/packages/rstart/package.py | 2 +- var/spack/repos/builtin/packages/rsync/package.py | 2 +- var/spack/repos/builtin/packages/rtags/package.py | 2 +- var/spack/repos/builtin/packages/rtax/package.py | 2 +- var/spack/repos/builtin/packages/ruby/package.py | 2 +- var/spack/repos/builtin/packages/rust-bindgen/package.py | 2 +- var/spack/repos/builtin/packages/rust/package.py | 2 +- var/spack/repos/builtin/packages/sabre/package.py | 2 +- var/spack/repos/builtin/packages/salmon/package.py | 2 +- var/spack/repos/builtin/packages/samrai/package.py | 2 +- var/spack/repos/builtin/packages/samtools/package.py | 2 +- var/spack/repos/builtin/packages/sas/package.py | 2 +- var/spack/repos/builtin/packages/satsuma2/package.py | 2 +- var/spack/repos/builtin/packages/savanna/package.py | 2 +- var/spack/repos/builtin/packages/saws/package.py | 2 +- var/spack/repos/builtin/packages/sbt/package.py | 2 +- var/spack/repos/builtin/packages/scala/package.py | 2 +- var/spack/repos/builtin/packages/scalasca/package.py | 2 +- var/spack/repos/builtin/packages/scons/package.py | 2 +- var/spack/repos/builtin/packages/scorec-core/package.py | 2 +- var/spack/repos/builtin/packages/scorep/package.py | 2 +- var/spack/repos/builtin/packages/scotch/package.py | 2 +- var/spack/repos/builtin/packages/scr/package.py | 2 +- var/spack/repos/builtin/packages/screen/package.py | 2 +- var/spack/repos/builtin/packages/scripts/package.py | 2 +- var/spack/repos/builtin/packages/scrnsaverproto/package.py | 2 +- var/spack/repos/builtin/packages/sctk/package.py | 2 +- var/spack/repos/builtin/packages/sdl2-image/package.py | 2 +- var/spack/repos/builtin/packages/sdl2/package.py | 2 +- var/spack/repos/builtin/packages/sed/package.py | 2 +- var/spack/repos/builtin/packages/seqprep/package.py | 2 +- var/spack/repos/builtin/packages/seqtk/package.py | 2 +- var/spack/repos/builtin/packages/serf/package.py | 2 +- var/spack/repos/builtin/packages/sessreg/package.py | 2 +- var/spack/repos/builtin/packages/setxkbmap/package.py | 2 +- var/spack/repos/builtin/packages/sga/package.py | 2 +- var/spack/repos/builtin/packages/shapeit/package.py | 2 +- var/spack/repos/builtin/packages/shared-mime-info/package.py | 2 +- var/spack/repos/builtin/packages/shiny-server/package.py | 2 +- var/spack/repos/builtin/packages/shortstack/package.py | 2 +- var/spack/repos/builtin/packages/showfont/package.py | 2 +- var/spack/repos/builtin/packages/sickle/package.py | 2 +- var/spack/repos/builtin/packages/signalp/package.py | 2 +- var/spack/repos/builtin/packages/silo/package.py | 2 +- var/spack/repos/builtin/packages/simplemoc/package.py | 2 +- var/spack/repos/builtin/packages/simul/package.py | 2 +- var/spack/repos/builtin/packages/simulationio/package.py | 2 +- var/spack/repos/builtin/packages/singularity/package.py | 2 +- var/spack/repos/builtin/packages/slepc/package.py | 2 +- var/spack/repos/builtin/packages/slurm/package.py | 2 +- var/spack/repos/builtin/packages/smalt/package.py | 2 +- var/spack/repos/builtin/packages/smc/package.py | 2 +- var/spack/repos/builtin/packages/smproxy/package.py | 2 +- var/spack/repos/builtin/packages/snakemake/package.py | 2 +- var/spack/repos/builtin/packages/snap-berkeley/package.py | 2 +- var/spack/repos/builtin/packages/snap/package.py | 2 +- var/spack/repos/builtin/packages/snappy/package.py | 2 +- var/spack/repos/builtin/packages/snbone/package.py | 2 +- var/spack/repos/builtin/packages/sniffles/package.py | 2 +- var/spack/repos/builtin/packages/snptest/package.py | 2 +- var/spack/repos/builtin/packages/soap2/package.py | 2 +- var/spack/repos/builtin/packages/soapindel/package.py | 2 +- var/spack/repos/builtin/packages/soapsnp/package.py | 2 +- var/spack/repos/builtin/packages/somatic-sniper/package.py | 2 +- var/spack/repos/builtin/packages/sortmerna/package.py | 2 +- var/spack/repos/builtin/packages/sowing/package.py | 2 +- var/spack/repos/builtin/packages/sox/package.py | 2 +- var/spack/repos/builtin/packages/spades/package.py | 2 +- var/spack/repos/builtin/packages/spark/package.py | 2 +- var/spack/repos/builtin/packages/sparsehash/package.py | 2 +- var/spack/repos/builtin/packages/sparta/package.py | 2 +- var/spack/repos/builtin/packages/spdlog/package.py | 2 +- var/spack/repos/builtin/packages/spectrum-mpi/package.py | 2 +- var/spack/repos/builtin/packages/speex/package.py | 2 +- var/spack/repos/builtin/packages/sph2pipe/package.py | 2 +- var/spack/repos/builtin/packages/spherepack/package.py | 2 +- var/spack/repos/builtin/packages/spindle/package.py | 2 +- var/spack/repos/builtin/packages/spot/package.py | 2 +- var/spack/repos/builtin/packages/sqlite/package.py | 2 +- var/spack/repos/builtin/packages/sspace-longread/package.py | 2 +- var/spack/repos/builtin/packages/sspace-standard/package.py | 2 +- var/spack/repos/builtin/packages/sst-dumpi/package.py | 2 +- var/spack/repos/builtin/packages/sst-macro/package.py | 2 +- var/spack/repos/builtin/packages/stacks/package.py | 2 +- var/spack/repos/builtin/packages/staden-io-lib/package.py | 2 +- var/spack/repos/builtin/packages/star-ccm-plus/package.py | 2 +- var/spack/repos/builtin/packages/star/package.py | 2 +- var/spack/repos/builtin/packages/stat/package.py | 2 +- var/spack/repos/builtin/packages/stc/package.py | 2 +- var/spack/repos/builtin/packages/stream/package.py | 2 +- var/spack/repos/builtin/packages/stress/package.py | 2 +- var/spack/repos/builtin/packages/stringtie/package.py | 2 +- var/spack/repos/builtin/packages/structure/package.py | 2 +- var/spack/repos/builtin/packages/sublime-text/package.py | 2 +- var/spack/repos/builtin/packages/subread/package.py | 2 +- var/spack/repos/builtin/packages/subversion/package.py | 2 +- var/spack/repos/builtin/packages/suite-sparse/package.py | 2 +- var/spack/repos/builtin/packages/sumaclust/package.py | 2 +- var/spack/repos/builtin/packages/sundials/package.py | 2 +- var/spack/repos/builtin/packages/superlu-dist/package.py | 2 +- var/spack/repos/builtin/packages/superlu-mt/package.py | 2 +- var/spack/repos/builtin/packages/superlu/package.py | 2 +- var/spack/repos/builtin/packages/swarm/package.py | 2 +- var/spack/repos/builtin/packages/swiftsim/package.py | 2 +- var/spack/repos/builtin/packages/swig/package.py | 2 +- var/spack/repos/builtin/packages/symengine/package.py | 2 +- var/spack/repos/builtin/packages/sympol/package.py | 2 +- var/spack/repos/builtin/packages/sz/package.py | 2 +- var/spack/repos/builtin/packages/tabix/package.py | 2 +- var/spack/repos/builtin/packages/talloc/package.py | 2 +- var/spack/repos/builtin/packages/tar/package.py | 2 +- var/spack/repos/builtin/packages/task/package.py | 2 +- var/spack/repos/builtin/packages/taskd/package.py | 2 +- var/spack/repos/builtin/packages/tau/package.py | 2 +- var/spack/repos/builtin/packages/tcl/package.py | 2 +- var/spack/repos/builtin/packages/tcoffee/package.py | 2 +- var/spack/repos/builtin/packages/tealeaf/package.py | 2 +- var/spack/repos/builtin/packages/tetgen/package.py | 2 +- var/spack/repos/builtin/packages/tethex/package.py | 2 +- var/spack/repos/builtin/packages/texinfo/package.py | 2 +- var/spack/repos/builtin/packages/texlive/package.py | 2 +- .../repos/builtin/packages/the-platinum-searcher/package.py | 2 +- var/spack/repos/builtin/packages/the-silver-searcher/package.py | 2 +- var/spack/repos/builtin/packages/thrift/package.py | 2 +- var/spack/repos/builtin/packages/tig/package.py | 2 +- var/spack/repos/builtin/packages/tinyxml/package.py | 2 +- var/spack/repos/builtin/packages/tinyxml2/package.py | 2 +- var/spack/repos/builtin/packages/tk/package.py | 2 +- var/spack/repos/builtin/packages/tmalign/package.py | 2 +- var/spack/repos/builtin/packages/tmux/package.py | 2 +- var/spack/repos/builtin/packages/tmuxinator/package.py | 2 +- var/spack/repos/builtin/packages/tophat/package.py | 2 +- var/spack/repos/builtin/packages/tppred/package.py | 2 +- var/spack/repos/builtin/packages/transabyss/package.py | 2 +- var/spack/repos/builtin/packages/transdecoder/package.py | 2 +- var/spack/repos/builtin/packages/transposome/package.py | 2 +- var/spack/repos/builtin/packages/transset/package.py | 2 +- var/spack/repos/builtin/packages/trapproto/package.py | 2 +- var/spack/repos/builtin/packages/tree/package.py | 2 +- var/spack/repos/builtin/packages/triangle/package.py | 2 +- var/spack/repos/builtin/packages/trilinos/package.py | 2 +- var/spack/repos/builtin/packages/trimgalore/package.py | 2 +- var/spack/repos/builtin/packages/trimmomatic/package.py | 2 +- var/spack/repos/builtin/packages/turbine/package.py | 2 +- var/spack/repos/builtin/packages/turbomole/package.py | 2 +- var/spack/repos/builtin/packages/twm/package.py | 2 +- var/spack/repos/builtin/packages/uberftp/package.py | 2 +- var/spack/repos/builtin/packages/udunits2/package.py | 2 +- var/spack/repos/builtin/packages/uncrustify/package.py | 2 +- var/spack/repos/builtin/packages/unibilium/package.py | 2 +- var/spack/repos/builtin/packages/unison/package.py | 2 +- var/spack/repos/builtin/packages/units/package.py | 2 +- var/spack/repos/builtin/packages/unixodbc/package.py | 2 +- var/spack/repos/builtin/packages/usearch/package.py | 2 +- var/spack/repos/builtin/packages/util-linux/package.py | 2 +- var/spack/repos/builtin/packages/util-macros/package.py | 2 +- var/spack/repos/builtin/packages/uuid/package.py | 2 +- var/spack/repos/builtin/packages/valgrind/package.py | 2 +- var/spack/repos/builtin/packages/vampirtrace/package.py | 2 +- var/spack/repos/builtin/packages/varscan/package.py | 2 +- var/spack/repos/builtin/packages/vc/package.py | 2 +- var/spack/repos/builtin/packages/vcftools/package.py | 2 +- var/spack/repos/builtin/packages/vcsh/package.py | 2 +- var/spack/repos/builtin/packages/vdt/package.py | 2 +- var/spack/repos/builtin/packages/vecgeom/package.py | 2 +- var/spack/repos/builtin/packages/veclibfort/package.py | 2 +- var/spack/repos/builtin/packages/vegas2/package.py | 2 +- var/spack/repos/builtin/packages/velvet/package.py | 2 +- var/spack/repos/builtin/packages/videoproto/package.py | 2 +- var/spack/repos/builtin/packages/viennarna/package.py | 2 +- var/spack/repos/builtin/packages/viewres/package.py | 2 +- var/spack/repos/builtin/packages/vim/package.py | 2 +- var/spack/repos/builtin/packages/virtualgl/package.py | 2 +- var/spack/repos/builtin/packages/visit/package.py | 2 +- var/spack/repos/builtin/packages/vizglow/package.py | 2 +- var/spack/repos/builtin/packages/vmatch/package.py | 2 +- var/spack/repos/builtin/packages/voropp/package.py | 2 +- var/spack/repos/builtin/packages/vpfft/package.py | 2 +- var/spack/repos/builtin/packages/vsearch/package.py | 2 +- var/spack/repos/builtin/packages/vtk/package.py | 2 +- var/spack/repos/builtin/packages/wannier90/package.py | 2 +- var/spack/repos/builtin/packages/wget/package.py | 2 +- var/spack/repos/builtin/packages/windowswmproto/package.py | 2 +- var/spack/repos/builtin/packages/wx/package.py | 2 +- var/spack/repos/builtin/packages/wxpropgrid/package.py | 2 +- var/spack/repos/builtin/packages/x11perf/package.py | 2 +- var/spack/repos/builtin/packages/xapian-core/package.py | 2 +- var/spack/repos/builtin/packages/xauth/package.py | 2 +- var/spack/repos/builtin/packages/xbacklight/package.py | 2 +- var/spack/repos/builtin/packages/xbiff/package.py | 2 +- var/spack/repos/builtin/packages/xbitmaps/package.py | 2 +- var/spack/repos/builtin/packages/xcalc/package.py | 2 +- var/spack/repos/builtin/packages/xcb-demo/package.py | 2 +- var/spack/repos/builtin/packages/xcb-proto/package.py | 2 +- var/spack/repos/builtin/packages/xcb-util-cursor/package.py | 2 +- var/spack/repos/builtin/packages/xcb-util-errors/package.py | 2 +- var/spack/repos/builtin/packages/xcb-util-image/package.py | 2 +- var/spack/repos/builtin/packages/xcb-util-keysyms/package.py | 2 +- var/spack/repos/builtin/packages/xcb-util-renderutil/package.py | 2 +- var/spack/repos/builtin/packages/xcb-util-wm/package.py | 2 +- var/spack/repos/builtin/packages/xcb-util/package.py | 2 +- var/spack/repos/builtin/packages/xclipboard/package.py | 2 +- var/spack/repos/builtin/packages/xclock/package.py | 2 +- var/spack/repos/builtin/packages/xcmiscproto/package.py | 2 +- var/spack/repos/builtin/packages/xcmsdb/package.py | 2 +- var/spack/repos/builtin/packages/xcompmgr/package.py | 2 +- var/spack/repos/builtin/packages/xconsole/package.py | 2 +- var/spack/repos/builtin/packages/xcursor-themes/package.py | 2 +- var/spack/repos/builtin/packages/xcursorgen/package.py | 2 +- var/spack/repos/builtin/packages/xdbedizzy/package.py | 2 +- var/spack/repos/builtin/packages/xditview/package.py | 2 +- var/spack/repos/builtin/packages/xdm/package.py | 2 +- var/spack/repos/builtin/packages/xdpyinfo/package.py | 2 +- var/spack/repos/builtin/packages/xdriinfo/package.py | 2 +- var/spack/repos/builtin/packages/xedit/package.py | 2 +- var/spack/repos/builtin/packages/xerces-c/package.py | 2 +- var/spack/repos/builtin/packages/xev/package.py | 2 +- var/spack/repos/builtin/packages/xextproto/package.py | 2 +- var/spack/repos/builtin/packages/xeyes/package.py | 2 +- var/spack/repos/builtin/packages/xf86bigfontproto/package.py | 2 +- var/spack/repos/builtin/packages/xf86dga/package.py | 2 +- var/spack/repos/builtin/packages/xf86dgaproto/package.py | 2 +- var/spack/repos/builtin/packages/xf86driproto/package.py | 2 +- var/spack/repos/builtin/packages/xf86miscproto/package.py | 2 +- var/spack/repos/builtin/packages/xf86rushproto/package.py | 2 +- var/spack/repos/builtin/packages/xf86vidmodeproto/package.py | 2 +- var/spack/repos/builtin/packages/xfd/package.py | 2 +- var/spack/repos/builtin/packages/xfindproxy/package.py | 2 +- var/spack/repos/builtin/packages/xfontsel/package.py | 2 +- var/spack/repos/builtin/packages/xfs/package.py | 2 +- var/spack/repos/builtin/packages/xfsinfo/package.py | 2 +- var/spack/repos/builtin/packages/xfwp/package.py | 2 +- var/spack/repos/builtin/packages/xgamma/package.py | 2 +- var/spack/repos/builtin/packages/xgc/package.py | 2 +- var/spack/repos/builtin/packages/xhost/package.py | 2 +- var/spack/repos/builtin/packages/xineramaproto/package.py | 2 +- var/spack/repos/builtin/packages/xinit/package.py | 2 +- var/spack/repos/builtin/packages/xinput/package.py | 2 +- var/spack/repos/builtin/packages/xkbcomp/package.py | 2 +- var/spack/repos/builtin/packages/xkbdata/package.py | 2 +- var/spack/repos/builtin/packages/xkbevd/package.py | 2 +- var/spack/repos/builtin/packages/xkbprint/package.py | 2 +- var/spack/repos/builtin/packages/xkbutils/package.py | 2 +- var/spack/repos/builtin/packages/xkeyboard-config/package.py | 2 +- var/spack/repos/builtin/packages/xkill/package.py | 2 +- var/spack/repos/builtin/packages/xload/package.py | 2 +- var/spack/repos/builtin/packages/xlogo/package.py | 2 +- var/spack/repos/builtin/packages/xlsatoms/package.py | 2 +- var/spack/repos/builtin/packages/xlsclients/package.py | 2 +- var/spack/repos/builtin/packages/xlsfonts/package.py | 2 +- var/spack/repos/builtin/packages/xmag/package.py | 2 +- var/spack/repos/builtin/packages/xman/package.py | 2 +- var/spack/repos/builtin/packages/xmessage/package.py | 2 +- var/spack/repos/builtin/packages/xmh/package.py | 2 +- var/spack/repos/builtin/packages/xmlto/package.py | 2 +- var/spack/repos/builtin/packages/xmodmap/package.py | 2 +- var/spack/repos/builtin/packages/xmore/package.py | 2 +- var/spack/repos/builtin/packages/xorg-cf-files/package.py | 2 +- var/spack/repos/builtin/packages/xorg-docs/package.py | 2 +- var/spack/repos/builtin/packages/xorg-gtest/package.py | 2 +- var/spack/repos/builtin/packages/xorg-server/package.py | 2 +- var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py | 2 +- var/spack/repos/builtin/packages/xphelloworld/package.py | 2 +- var/spack/repos/builtin/packages/xplor-nih/package.py | 2 +- var/spack/repos/builtin/packages/xplsprinters/package.py | 2 +- var/spack/repos/builtin/packages/xpr/package.py | 2 +- var/spack/repos/builtin/packages/xprehashprinterlist/package.py | 2 +- var/spack/repos/builtin/packages/xprop/package.py | 2 +- var/spack/repos/builtin/packages/xproto/package.py | 2 +- .../repos/builtin/packages/xproxymanagementprotocol/package.py | 2 +- var/spack/repos/builtin/packages/xqilla/package.py | 2 +- var/spack/repos/builtin/packages/xrandr/package.py | 2 +- var/spack/repos/builtin/packages/xrdb/package.py | 2 +- var/spack/repos/builtin/packages/xrefresh/package.py | 2 +- var/spack/repos/builtin/packages/xrootd/package.py | 2 +- var/spack/repos/builtin/packages/xrx/package.py | 2 +- var/spack/repos/builtin/packages/xsbench/package.py | 2 +- var/spack/repos/builtin/packages/xscope/package.py | 2 +- var/spack/repos/builtin/packages/xsdk/package.py | 2 +- var/spack/repos/builtin/packages/xsdktrilinos/package.py | 2 +- var/spack/repos/builtin/packages/xset/package.py | 2 +- var/spack/repos/builtin/packages/xsetmode/package.py | 2 +- var/spack/repos/builtin/packages/xsetpointer/package.py | 2 +- var/spack/repos/builtin/packages/xsetroot/package.py | 2 +- var/spack/repos/builtin/packages/xsm/package.py | 2 +- var/spack/repos/builtin/packages/xstdcmap/package.py | 2 +- var/spack/repos/builtin/packages/xterm/package.py | 2 +- var/spack/repos/builtin/packages/xtrans/package.py | 2 +- var/spack/repos/builtin/packages/xtrap/package.py | 2 +- var/spack/repos/builtin/packages/xts/package.py | 2 +- var/spack/repos/builtin/packages/xvidtune/package.py | 2 +- var/spack/repos/builtin/packages/xvinfo/package.py | 2 +- var/spack/repos/builtin/packages/xwd/package.py | 2 +- var/spack/repos/builtin/packages/xwininfo/package.py | 2 +- var/spack/repos/builtin/packages/xwud/package.py | 2 +- var/spack/repos/builtin/packages/xz/package.py | 2 +- var/spack/repos/builtin/packages/yaml-cpp/package.py | 2 +- var/spack/repos/builtin/packages/yasm/package.py | 2 +- var/spack/repos/builtin/packages/yorick/package.py | 2 +- var/spack/repos/builtin/packages/z3/package.py | 2 +- var/spack/repos/builtin/packages/zeromq/package.py | 2 +- var/spack/repos/builtin/packages/zfp/package.py | 2 +- var/spack/repos/builtin/packages/zip/package.py | 2 +- var/spack/repos/builtin/packages/zlib/package.py | 2 +- var/spack/repos/builtin/packages/zoltan/package.py | 2 +- var/spack/repos/builtin/packages/zsh/package.py | 2 +- var/spack/repos/builtin/packages/zstd/package.py | 2 +- 2060 files changed, 2060 insertions(+), 2060 deletions(-) diff --git a/bin/sbang b/bin/sbang index ce4df4327cc..bd9c4e6506b 100755 --- a/bin/sbang +++ b/bin/sbang @@ -1,6 +1,6 @@ #!/bin/bash ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/bin/spack b/bin/spack index d95c07844c0..3a74f0b1bae 100755 --- a/bin/spack +++ b/bin/spack @@ -1,6 +1,6 @@ #!/usr/bin/env python ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/bin/spack-python b/bin/spack-python index f79f859717e..dbb6ddf2f5a 100755 --- a/bin/spack-python +++ b/bin/spack-python @@ -1,6 +1,6 @@ #!/bin/sh ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/docs/tutorial/examples/0.package.py b/lib/spack/docs/tutorial/examples/0.package.py index 691f364df6c..3a627e50078 100644 --- a/lib/spack/docs/tutorial/examples/0.package.py +++ b/lib/spack/docs/tutorial/examples/0.package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/docs/tutorial/examples/1.package.py b/lib/spack/docs/tutorial/examples/1.package.py index ec2f23d5ea4..de9fbd7049d 100644 --- a/lib/spack/docs/tutorial/examples/1.package.py +++ b/lib/spack/docs/tutorial/examples/1.package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/docs/tutorial/examples/2.package.py b/lib/spack/docs/tutorial/examples/2.package.py index 8dfb149ca4c..5cb51b21fce 100644 --- a/lib/spack/docs/tutorial/examples/2.package.py +++ b/lib/spack/docs/tutorial/examples/2.package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/docs/tutorial/examples/3.package.py b/lib/spack/docs/tutorial/examples/3.package.py index 58208a26a42..9279a05f9a0 100644 --- a/lib/spack/docs/tutorial/examples/3.package.py +++ b/lib/spack/docs/tutorial/examples/3.package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/docs/tutorial/examples/4.package.py b/lib/spack/docs/tutorial/examples/4.package.py index 05735cf3d04..35ed1d32ff8 100644 --- a/lib/spack/docs/tutorial/examples/4.package.py +++ b/lib/spack/docs/tutorial/examples/4.package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/env/cc b/lib/spack/env/cc index e63c3713189..3d118d8d7c3 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -1,6 +1,6 @@ #!/bin/bash ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/external/__init__.py b/lib/spack/external/__init__.py index d3d085eee3e..2c4b19b6c85 100644 --- a/lib/spack/external/__init__.py +++ b/lib/spack/external/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/__init__.py b/lib/spack/llnl/__init__.py index 445b6fdbd71..5f81c938256 100644 --- a/lib/spack/llnl/__init__.py +++ b/lib/spack/llnl/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/util/__init__.py b/lib/spack/llnl/util/__init__.py index 445b6fdbd71..5f81c938256 100644 --- a/lib/spack/llnl/util/__init__.py +++ b/lib/spack/llnl/util/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index bedc7c9de21..554ae252304 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 563835ecfcc..667572dd8d4 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/util/link_tree.py b/lib/spack/llnl/util/link_tree.py index 7e77cd738c8..6f6dabe4309 100644 --- a/lib/spack/llnl/util/link_tree.py +++ b/lib/spack/llnl/util/link_tree.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/util/lock.py b/lib/spack/llnl/util/lock.py index 55837c371ee..be87c8ff6c9 100644 --- a/lib/spack/llnl/util/lock.py +++ b/lib/spack/llnl/util/lock.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/util/tty/__init__.py b/lib/spack/llnl/util/tty/__init__.py index 59e20ebfe30..9a0f1c8438d 100644 --- a/lib/spack/llnl/util/tty/__init__.py +++ b/lib/spack/llnl/util/tty/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/util/tty/colify.py b/lib/spack/llnl/util/tty/colify.py index fff449a51c0..66e9f7abfb6 100644 --- a/lib/spack/llnl/util/tty/colify.py +++ b/lib/spack/llnl/util/tty/colify.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/util/tty/color.py b/lib/spack/llnl/util/tty/color.py index 1081acd0f17..40962461d73 100644 --- a/lib/spack/llnl/util/tty/color.py +++ b/lib/spack/llnl/util/tty/color.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index e102e63d4b9..02084cc382e 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 21280f00010..8c363bd12e6 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -1,6 +1,6 @@ # flake8: noqa ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/abi.py b/lib/spack/spack/abi.py index 4354a8b5c8b..b57a1426dd3 100644 --- a/lib/spack/spack/abi.py +++ b/lib/spack/spack/abi.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py index 27092fb344a..925b6acd544 100644 --- a/lib/spack/spack/architecture.py +++ b/lib/spack/spack/architecture.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index 2de14938a46..9693a75c397 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/__init__.py b/lib/spack/spack/build_systems/__init__.py index 445b6fdbd71..5f81c938256 100644 --- a/lib/spack/spack/build_systems/__init__.py +++ b/lib/spack/spack/build_systems/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index e11127e4ed1..afabb908200 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index 9160390a06c..026cf7903a2 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/intel.py b/lib/spack/spack/build_systems/intel.py index a97f15d62cc..10e87484e62 100644 --- a/lib/spack/spack/build_systems/intel.py +++ b/lib/spack/spack/build_systems/intel.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/makefile.py b/lib/spack/spack/build_systems/makefile.py index b1f55e5ed6b..5ffb88f43d2 100644 --- a/lib/spack/spack/build_systems/makefile.py +++ b/lib/spack/spack/build_systems/makefile.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/perl.py b/lib/spack/spack/build_systems/perl.py index aabb53d589a..6d0922ed6b5 100644 --- a/lib/spack/spack/build_systems/perl.py +++ b/lib/spack/spack/build_systems/perl.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/python.py b/lib/spack/spack/build_systems/python.py index 63dd67d400b..190620d7a2c 100644 --- a/lib/spack/spack/build_systems/python.py +++ b/lib/spack/spack/build_systems/python.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/qmake.py b/lib/spack/spack/build_systems/qmake.py index c1a3193b7f8..60a02eba549 100644 --- a/lib/spack/spack/build_systems/qmake.py +++ b/lib/spack/spack/build_systems/qmake.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/r.py b/lib/spack/spack/build_systems/r.py index 8f7af8cd327..bb2a0e72de6 100644 --- a/lib/spack/spack/build_systems/r.py +++ b/lib/spack/spack/build_systems/r.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/scons.py b/lib/spack/spack/build_systems/scons.py index 694ed936cc1..4e375781624 100644 --- a/lib/spack/spack/build_systems/scons.py +++ b/lib/spack/spack/build_systems/scons.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/build_systems/waf.py b/lib/spack/spack/build_systems/waf.py index afe019028b7..8c979f52048 100644 --- a/lib/spack/spack/build_systems/waf.py +++ b/lib/spack/spack/build_systems/waf.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index f432fbf5851..08dbf55dc2c 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/activate.py b/lib/spack/spack/cmd/activate.py index 73faa83f08d..d30485ab829 100644 --- a/lib/spack/spack/cmd/activate.py +++ b/lib/spack/spack/cmd/activate.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/arch.py b/lib/spack/spack/cmd/arch.py index 1d028478264..ee0c8eb3975 100644 --- a/lib/spack/spack/cmd/arch.py +++ b/lib/spack/spack/cmd/arch.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/bootstrap.py b/lib/spack/spack/cmd/bootstrap.py index 135dd66d39e..b0550644f83 100644 --- a/lib/spack/spack/cmd/bootstrap.py +++ b/lib/spack/spack/cmd/bootstrap.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/build.py b/lib/spack/spack/cmd/build.py index a4821214d67..760aa5e339e 100644 --- a/lib/spack/spack/cmd/build.py +++ b/lib/spack/spack/cmd/build.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/buildcache.py b/lib/spack/spack/cmd/buildcache.py index 213442acef2..71386a221c5 100644 --- a/lib/spack/spack/cmd/buildcache.py +++ b/lib/spack/spack/cmd/buildcache.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/cd.py b/lib/spack/spack/cmd/cd.py index 4ee671d8b9c..62a336d6a31 100644 --- a/lib/spack/spack/cmd/cd.py +++ b/lib/spack/spack/cmd/cd.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/checksum.py b/lib/spack/spack/cmd/checksum.py index 858ecdf54fe..0d56f971c89 100644 --- a/lib/spack/spack/cmd/checksum.py +++ b/lib/spack/spack/cmd/checksum.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py index 634e20b4e43..ba56fd81bf8 100644 --- a/lib/spack/spack/cmd/clean.py +++ b/lib/spack/spack/cmd/clean.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/common/__init__.py b/lib/spack/spack/cmd/common/__init__.py index 445b6fdbd71..5f81c938256 100644 --- a/lib/spack/spack/cmd/common/__init__.py +++ b/lib/spack/spack/cmd/common/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 46be3468378..7d781580386 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/compiler.py b/lib/spack/spack/cmd/compiler.py index 356161d3b3d..125af5bdf32 100644 --- a/lib/spack/spack/cmd/compiler.py +++ b/lib/spack/spack/cmd/compiler.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/compilers.py b/lib/spack/spack/cmd/compilers.py index 1cac261affa..7fa89b8cb5f 100644 --- a/lib/spack/spack/cmd/compilers.py +++ b/lib/spack/spack/cmd/compilers.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/config.py b/lib/spack/spack/cmd/config.py index 09cb9a900e4..50cdcbffa31 100644 --- a/lib/spack/spack/cmd/config.py +++ b/lib/spack/spack/cmd/config.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/configure.py b/lib/spack/spack/cmd/configure.py index c8588334a5e..795340630eb 100644 --- a/lib/spack/spack/cmd/configure.py +++ b/lib/spack/spack/cmd/configure.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index e68b20a6acf..29f888fd596 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/deactivate.py b/lib/spack/spack/cmd/deactivate.py index d58555afad3..db0d7171205 100644 --- a/lib/spack/spack/cmd/deactivate.py +++ b/lib/spack/spack/cmd/deactivate.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/debug.py b/lib/spack/spack/cmd/debug.py index 33c866e962f..01ebd20a7bd 100644 --- a/lib/spack/spack/cmd/debug.py +++ b/lib/spack/spack/cmd/debug.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/dependencies.py b/lib/spack/spack/cmd/dependencies.py index b35c324fc78..81957f67f9b 100644 --- a/lib/spack/spack/cmd/dependencies.py +++ b/lib/spack/spack/cmd/dependencies.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py index 3413ac3227c..e4c999d53f0 100644 --- a/lib/spack/spack/cmd/dependents.py +++ b/lib/spack/spack/cmd/dependents.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/diy.py b/lib/spack/spack/cmd/diy.py index 16a6f4c7a09..79888d8264f 100644 --- a/lib/spack/spack/cmd/diy.py +++ b/lib/spack/spack/cmd/diy.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/edit.py b/lib/spack/spack/cmd/edit.py index bd7fb773ec7..ae117c26dfe 100644 --- a/lib/spack/spack/cmd/edit.py +++ b/lib/spack/spack/cmd/edit.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index 343717a1916..11c8e32fcf2 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/extensions.py b/lib/spack/spack/cmd/extensions.py index 03130820de6..bda20b9e1c8 100644 --- a/lib/spack/spack/cmd/extensions.py +++ b/lib/spack/spack/cmd/extensions.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/fetch.py b/lib/spack/spack/cmd/fetch.py index 15fd22d6063..971cd00af55 100644 --- a/lib/spack/spack/cmd/fetch.py +++ b/lib/spack/spack/cmd/fetch.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index b7aa390c592..9b78c52e1f0 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/flake8.py b/lib/spack/spack/cmd/flake8.py index fee03b4f5d4..9691ed138ba 100644 --- a/lib/spack/spack/cmd/flake8.py +++ b/lib/spack/spack/cmd/flake8.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/gpg.py b/lib/spack/spack/cmd/gpg.py index 3ec6094cac6..6073212c862 100644 --- a/lib/spack/spack/cmd/gpg.py +++ b/lib/spack/spack/cmd/gpg.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/graph.py b/lib/spack/spack/cmd/graph.py index e750e5a9594..a258d5faac9 100644 --- a/lib/spack/spack/cmd/graph.py +++ b/lib/spack/spack/cmd/graph.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/help.py b/lib/spack/spack/cmd/help.py index 7522499dab1..0af5b471cdd 100644 --- a/lib/spack/spack/cmd/help.py +++ b/lib/spack/spack/cmd/help.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/info.py b/lib/spack/spack/cmd/info.py index 32369987106..b3b95aa3df7 100644 --- a/lib/spack/spack/cmd/info.py +++ b/lib/spack/spack/cmd/info.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index 83ebe717875..ee752222db9 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/list.py b/lib/spack/spack/cmd/list.py index 730ad8d9d92..2550a6d0525 100644 --- a/lib/spack/spack/cmd/list.py +++ b/lib/spack/spack/cmd/list.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/load.py b/lib/spack/spack/cmd/load.py index 2a5d14a1bf9..514bf2f878b 100644 --- a/lib/spack/spack/cmd/load.py +++ b/lib/spack/spack/cmd/load.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/location.py b/lib/spack/spack/cmd/location.py index e150a282388..51048a2f083 100644 --- a/lib/spack/spack/cmd/location.py +++ b/lib/spack/spack/cmd/location.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/md5.py b/lib/spack/spack/cmd/md5.py index 0c341e5bad4..6f6a4af2371 100644 --- a/lib/spack/spack/cmd/md5.py +++ b/lib/spack/spack/cmd/md5.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py index b89ac4121d3..08b6603da4e 100644 --- a/lib/spack/spack/cmd/mirror.py +++ b/lib/spack/spack/cmd/mirror.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/module.py b/lib/spack/spack/cmd/module.py index d59d4433b7d..22d1815c89f 100644 --- a/lib/spack/spack/cmd/module.py +++ b/lib/spack/spack/cmd/module.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/patch.py b/lib/spack/spack/cmd/patch.py index 9c26f385fb6..b19429a0cb4 100644 --- a/lib/spack/spack/cmd/patch.py +++ b/lib/spack/spack/cmd/patch.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/pkg.py b/lib/spack/spack/cmd/pkg.py index 42fecf23dfd..7673955db5d 100644 --- a/lib/spack/spack/cmd/pkg.py +++ b/lib/spack/spack/cmd/pkg.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/providers.py b/lib/spack/spack/cmd/providers.py index 51566eb26d5..0a4f98467ba 100644 --- a/lib/spack/spack/cmd/providers.py +++ b/lib/spack/spack/cmd/providers.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py index c0a056007a5..bf4eb628b10 100644 --- a/lib/spack/spack/cmd/python.py +++ b/lib/spack/spack/cmd/python.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/reindex.py b/lib/spack/spack/cmd/reindex.py index 1fb9392c2fd..317a4b128c2 100644 --- a/lib/spack/spack/cmd/reindex.py +++ b/lib/spack/spack/cmd/reindex.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/repo.py b/lib/spack/spack/cmd/repo.py index 6dc8833f865..ac0ae32c921 100644 --- a/lib/spack/spack/cmd/repo.py +++ b/lib/spack/spack/cmd/repo.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/restage.py b/lib/spack/spack/cmd/restage.py index 637ff95699b..3fd7405f95c 100644 --- a/lib/spack/spack/cmd/restage.py +++ b/lib/spack/spack/cmd/restage.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/setup.py b/lib/spack/spack/cmd/setup.py index 8f5a4fd0156..e4ca38ba940 100644 --- a/lib/spack/spack/cmd/setup.py +++ b/lib/spack/spack/cmd/setup.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index b4740b4eced..b10df46ad0b 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/stage.py b/lib/spack/spack/cmd/stage.py index 99c2db8a568..dbae925d622 100644 --- a/lib/spack/spack/cmd/stage.py +++ b/lib/spack/spack/cmd/stage.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index 70aa1865af3..54970f1ea22 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index e95a5f34305..77029cf02c0 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/unload.py b/lib/spack/spack/cmd/unload.py index e5bf8f093e8..b95c0a3d93b 100644 --- a/lib/spack/spack/cmd/unload.py +++ b/lib/spack/spack/cmd/unload.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/unuse.py b/lib/spack/spack/cmd/unuse.py index 326553e0bdd..613f653a187 100644 --- a/lib/spack/spack/cmd/unuse.py +++ b/lib/spack/spack/cmd/unuse.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/url.py b/lib/spack/spack/cmd/url.py index 633e345640b..e4419a52524 100644 --- a/lib/spack/spack/cmd/url.py +++ b/lib/spack/spack/cmd/url.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/use.py b/lib/spack/spack/cmd/use.py index da3ded0d5a8..3dbda202700 100644 --- a/lib/spack/spack/cmd/use.py +++ b/lib/spack/spack/cmd/use.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/versions.py b/lib/spack/spack/cmd/versions.py index 0678fed8af0..412a3b09a99 100644 --- a/lib/spack/spack/cmd/versions.py +++ b/lib/spack/spack/cmd/versions.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/cmd/view.py b/lib/spack/spack/cmd/view.py index 325fb0af960..a2e663366c2 100644 --- a/lib/spack/spack/cmd/view.py +++ b/lib/spack/spack/cmd/view.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index c547275d6b6..362013436c7 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index 517a0bd5e8a..f3a159d6b91 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/compilers/cce.py b/lib/spack/spack/compilers/cce.py index 2a5858f4e80..038d9dfe5a6 100644 --- a/lib/spack/spack/compilers/cce.py +++ b/lib/spack/spack/compilers/cce.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/compilers/clang.py b/lib/spack/spack/compilers/clang.py index dd26c5e13b0..81e0babc1d4 100644 --- a/lib/spack/spack/compilers/clang.py +++ b/lib/spack/spack/compilers/clang.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/compilers/gcc.py b/lib/spack/spack/compilers/gcc.py index a6c91c6ed29..70501b447f2 100644 --- a/lib/spack/spack/compilers/gcc.py +++ b/lib/spack/spack/compilers/gcc.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/compilers/intel.py b/lib/spack/spack/compilers/intel.py index fb286a69d75..1959c9a6615 100644 --- a/lib/spack/spack/compilers/intel.py +++ b/lib/spack/spack/compilers/intel.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/compilers/nag.py b/lib/spack/spack/compilers/nag.py index 7fb8a23e96c..0b568da8edf 100644 --- a/lib/spack/spack/compilers/nag.py +++ b/lib/spack/spack/compilers/nag.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/compilers/pgi.py b/lib/spack/spack/compilers/pgi.py index 22260239541..9f0c6ce6850 100644 --- a/lib/spack/spack/compilers/pgi.py +++ b/lib/spack/spack/compilers/pgi.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/compilers/xl.py b/lib/spack/spack/compilers/xl.py index 96e9e8b4ca6..1a4df820f61 100644 --- a/lib/spack/spack/compilers/xl.py +++ b/lib/spack/spack/compilers/xl.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index b9383460011..884a3c381a3 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index 8b7fcf334c6..4f58f7667ca 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 6b54dc5939d..2458fb412dc 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 7b9a3aa953d..05014fb31f0 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index 5b430224d65..54fffeabfb9 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index 567e54e3561..c6634849fbd 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/error.py b/lib/spack/spack/error.py index 8f54e82b117..645864822fc 100644 --- a/lib/spack/spack/error.py +++ b/lib/spack/spack/error.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py index baba038c6c4..e140579d2cb 100644 --- a/lib/spack/spack/fetch_strategy.py +++ b/lib/spack/spack/fetch_strategy.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/file_cache.py b/lib/spack/spack/file_cache.py index 6a6d59942e3..1f215311317 100644 --- a/lib/spack/spack/file_cache.py +++ b/lib/spack/spack/file_cache.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/graph.py b/lib/spack/spack/graph.py index 09c39e75f32..4f4ef9a3040 100644 --- a/lib/spack/spack/graph.py +++ b/lib/spack/spack/graph.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/hooks/__init__.py b/lib/spack/spack/hooks/__init__.py index 1dce48fdf05..ce998fb3d09 100644 --- a/lib/spack/spack/hooks/__init__.py +++ b/lib/spack/spack/hooks/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/hooks/case_consistency.py b/lib/spack/spack/hooks/case_consistency.py index f6246f6008c..48f96064445 100644 --- a/lib/spack/spack/hooks/case_consistency.py +++ b/lib/spack/spack/hooks/case_consistency.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/hooks/extensions.py b/lib/spack/spack/hooks/extensions.py index f915768dd03..56c0f353766 100644 --- a/lib/spack/spack/hooks/extensions.py +++ b/lib/spack/spack/hooks/extensions.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/hooks/licensing.py b/lib/spack/spack/hooks/licensing.py index b3b379c606e..da7d86ffcf4 100644 --- a/lib/spack/spack/hooks/licensing.py +++ b/lib/spack/spack/hooks/licensing.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/hooks/module_file_generation.py b/lib/spack/spack/hooks/module_file_generation.py index decec3438da..0ddf79a1d37 100644 --- a/lib/spack/spack/hooks/module_file_generation.py +++ b/lib/spack/spack/hooks/module_file_generation.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/hooks/sbang.py b/lib/spack/spack/hooks/sbang.py index cd3529dbb81..653b28f60be 100644 --- a/lib/spack/spack/hooks/sbang.py +++ b/lib/spack/spack/hooks/sbang.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/hooks/yaml_version_check.py b/lib/spack/spack/hooks/yaml_version_check.py index 7264ee1e6f4..74c76c9fc44 100644 --- a/lib/spack/spack/hooks/yaml_version_check.py +++ b/lib/spack/spack/hooks/yaml_version_check.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index bfa7b858d28..06bde4de1f6 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index f23baa72044..8be58426910 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/multimethod.py b/lib/spack/spack/multimethod.py index 9b4c481326b..c439141683e 100644 --- a/lib/spack/spack/multimethod.py +++ b/lib/spack/spack/multimethod.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/operating_systems/__init__.py b/lib/spack/spack/operating_systems/__init__.py index 445b6fdbd71..5f81c938256 100644 --- a/lib/spack/spack/operating_systems/__init__.py +++ b/lib/spack/spack/operating_systems/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/operating_systems/cnk.py b/lib/spack/spack/operating_systems/cnk.py index abd252ddcb4..08a6496d868 100644 --- a/lib/spack/spack/operating_systems/cnk.py +++ b/lib/spack/spack/operating_systems/cnk.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/operating_systems/cnl.py b/lib/spack/spack/operating_systems/cnl.py index 61d50b40113..be6a9db60c3 100644 --- a/lib/spack/spack/operating_systems/cnl.py +++ b/lib/spack/spack/operating_systems/cnl.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/operating_systems/cray_frontend.py b/lib/spack/spack/operating_systems/cray_frontend.py index bf3b76faf2e..7328e586276 100644 --- a/lib/spack/spack/operating_systems/cray_frontend.py +++ b/lib/spack/spack/operating_systems/cray_frontend.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/operating_systems/linux_distro.py b/lib/spack/spack/operating_systems/linux_distro.py index 276235d18b5..7d1e3ca00ff 100644 --- a/lib/spack/spack/operating_systems/linux_distro.py +++ b/lib/spack/spack/operating_systems/linux_distro.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/operating_systems/mac_os.py b/lib/spack/spack/operating_systems/mac_os.py index ab1eb6a64b8..6c02ba55283 100644 --- a/lib/spack/spack/operating_systems/mac_os.py +++ b/lib/spack/spack/operating_systems/mac_os.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index b3d619f6f30..86223688faa 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py index 56efb604b1f..a79408df432 100644 --- a/lib/spack/spack/package_prefs.py +++ b/lib/spack/spack/package_prefs.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/package_test.py b/lib/spack/spack/package_test.py index 3e04125e78f..32c6318a0d1 100644 --- a/lib/spack/spack/package_test.py +++ b/lib/spack/spack/package_test.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/parse.py b/lib/spack/spack/parse.py index 3df268d2593..45b3c2d4175 100644 --- a/lib/spack/spack/parse.py +++ b/lib/spack/spack/parse.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/patch.py b/lib/spack/spack/patch.py index 5742f312ce6..308ad2d633f 100644 --- a/lib/spack/spack/patch.py +++ b/lib/spack/spack/patch.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/platforms/__init__.py b/lib/spack/spack/platforms/__init__.py index 445b6fdbd71..5f81c938256 100644 --- a/lib/spack/spack/platforms/__init__.py +++ b/lib/spack/spack/platforms/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/platforms/bgq.py b/lib/spack/spack/platforms/bgq.py index 5978f20acfd..7a4146cfdde 100644 --- a/lib/spack/spack/platforms/bgq.py +++ b/lib/spack/spack/platforms/bgq.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/platforms/cray.py b/lib/spack/spack/platforms/cray.py index 411eb32b1ce..4ecb72d8a95 100644 --- a/lib/spack/spack/platforms/cray.py +++ b/lib/spack/spack/platforms/cray.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/platforms/darwin.py b/lib/spack/spack/platforms/darwin.py index f33b2688338..b60f77b1b78 100644 --- a/lib/spack/spack/platforms/darwin.py +++ b/lib/spack/spack/platforms/darwin.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/platforms/linux.py b/lib/spack/spack/platforms/linux.py index ffbe32ddeb1..1fa599ac1b4 100644 --- a/lib/spack/spack/platforms/linux.py +++ b/lib/spack/spack/platforms/linux.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/platforms/test.py b/lib/spack/spack/platforms/test.py index d299508c971..3b5225b5c15 100644 --- a/lib/spack/spack/platforms/test.py +++ b/lib/spack/spack/platforms/test.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/provider_index.py b/lib/spack/spack/provider_index.py index 9e6d53e8ac8..054f1ca8078 100644 --- a/lib/spack/spack/provider_index.py +++ b/lib/spack/spack/provider_index.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py index b4251d05cac..999dc23a028 100644 --- a/lib/spack/spack/relocate.py +++ b/lib/spack/spack/relocate.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/repository.py b/lib/spack/spack/repository.py index fbca9474fbe..226d69748c4 100644 --- a/lib/spack/spack/repository.py +++ b/lib/spack/spack/repository.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/resource.py b/lib/spack/spack/resource.py index be36216e9d7..71cb8a50a91 100644 --- a/lib/spack/spack/resource.py +++ b/lib/spack/spack/resource.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/schema/__init__.py b/lib/spack/spack/schema/__init__.py index e793ae73760..a5fc7b475c8 100644 --- a/lib/spack/spack/schema/__init__.py +++ b/lib/spack/spack/schema/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/schema/compilers.py b/lib/spack/spack/schema/compilers.py index 8ddba1fb22d..9b19d7c3dbf 100644 --- a/lib/spack/spack/schema/compilers.py +++ b/lib/spack/spack/schema/compilers.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/schema/config.py b/lib/spack/spack/schema/config.py index 73b59ea3c70..1049e069258 100644 --- a/lib/spack/spack/schema/config.py +++ b/lib/spack/spack/schema/config.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/schema/mirrors.py b/lib/spack/spack/schema/mirrors.py index db3d1163db4..4038075237a 100644 --- a/lib/spack/spack/schema/mirrors.py +++ b/lib/spack/spack/schema/mirrors.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/schema/modules.py b/lib/spack/spack/schema/modules.py index 4f7cedf53f7..f0adafc714b 100644 --- a/lib/spack/spack/schema/modules.py +++ b/lib/spack/spack/schema/modules.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/schema/packages.py b/lib/spack/spack/schema/packages.py index 8662a43a846..b5699ad1632 100644 --- a/lib/spack/spack/schema/packages.py +++ b/lib/spack/spack/schema/packages.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/schema/repos.py b/lib/spack/spack/schema/repos.py index a1899419895..d831230636e 100644 --- a/lib/spack/spack/schema/repos.py +++ b/lib/spack/spack/schema/repos.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 7bc0dce12a4..cd4922cf534 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py index f9995bce6cb..c8309124bc6 100644 --- a/lib/spack/spack/stage.py +++ b/lib/spack/spack/stage.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/store.py b/lib/spack/spack/store.py index f30e06849a0..06178adbd64 100644 --- a/lib/spack/spack/store.py +++ b/lib/spack/spack/store.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/__init__.py b/lib/spack/spack/test/__init__.py index 445b6fdbd71..5f81c938256 100644 --- a/lib/spack/spack/test/__init__.py +++ b/lib/spack/spack/test/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/architecture.py b/lib/spack/spack/test/architecture.py index 70cdc626855..1736c3aa9db 100644 --- a/lib/spack/spack/test/architecture.py +++ b/lib/spack/spack/test/architecture.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/build_system_guess.py b/lib/spack/spack/test/build_system_guess.py index 54431e0020a..0e2cbceec3a 100644 --- a/lib/spack/spack/test/build_system_guess.py +++ b/lib/spack/spack/test/build_system_guess.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/build_systems.py b/lib/spack/spack/test/build_systems.py index 3b93ed006d4..114497bccd8 100644 --- a/lib/spack/spack/test/build_systems.py +++ b/lib/spack/spack/test/build_systems.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cc.py b/lib/spack/spack/test/cc.py index 4b01fa34992..48f35873cb3 100644 --- a/lib/spack/spack/test/cc.py +++ b/lib/spack/spack/test/cc.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/__init__.py b/lib/spack/spack/test/cmd/__init__.py index 445b6fdbd71..5f81c938256 100644 --- a/lib/spack/spack/test/cmd/__init__.py +++ b/lib/spack/spack/test/cmd/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py index 57dd6883627..1782c7a2e2a 100644 --- a/lib/spack/spack/test/cmd/find.py +++ b/lib/spack/spack/test/cmd/find.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/flake8.py b/lib/spack/spack/test/cmd/flake8.py index 65f9e509ba0..8556a0a036f 100644 --- a/lib/spack/spack/test/cmd/flake8.py +++ b/lib/spack/spack/test/cmd/flake8.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/gpg.py b/lib/spack/spack/test/cmd/gpg.py index 111436f24fe..2ceb0852e95 100644 --- a/lib/spack/spack/test/cmd/gpg.py +++ b/lib/spack/spack/test/cmd/gpg.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 2886aa5d6a0..10dedeac68e 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/list.py b/lib/spack/spack/test/cmd/list.py index 244ae5fcbce..d68f4ddc737 100644 --- a/lib/spack/spack/test/cmd/list.py +++ b/lib/spack/spack/test/cmd/list.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/module.py b/lib/spack/spack/test/cmd/module.py index b8f24856be5..f2847ddcef6 100644 --- a/lib/spack/spack/test/cmd/module.py +++ b/lib/spack/spack/test/cmd/module.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/python.py b/lib/spack/spack/test/cmd/python.py index db9d9c5e411..3cc1ae20120 100644 --- a/lib/spack/spack/test/cmd/python.py +++ b/lib/spack/spack/test/cmd/python.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/test_compiler_cmd.py b/lib/spack/spack/test/cmd/test_compiler_cmd.py index 39898980d9b..ac24df6b55c 100644 --- a/lib/spack/spack/test/cmd/test_compiler_cmd.py +++ b/lib/spack/spack/test/cmd/test_compiler_cmd.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/uninstall.py b/lib/spack/spack/test/cmd/uninstall.py index 72dda23f93d..df7c04dba9b 100644 --- a/lib/spack/spack/test/cmd/uninstall.py +++ b/lib/spack/spack/test/cmd/uninstall.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/cmd/url.py b/lib/spack/spack/test/cmd/url.py index ab2d750dee2..49b07322887 100644 --- a/lib/spack/spack/test/cmd/url.py +++ b/lib/spack/spack/test/cmd/url.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/compilers.py b/lib/spack/spack/test/compilers.py index 1bb6b41ffc2..050f2118e57 100644 --- a/lib/spack/spack/test/compilers.py +++ b/lib/spack/spack/test/compilers.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index 572436a4b24..8959c7459b1 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py index 45c037eec7a..2dcc36ff278 100644 --- a/lib/spack/spack/test/concretize_preferences.py +++ b/lib/spack/spack/test/concretize_preferences.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/config.py b/lib/spack/spack/test/config.py index d00dc64bb39..42143c30990 100644 --- a/lib/spack/spack/test/config.py +++ b/lib/spack/spack/test/config.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index f407943326f..2dfcc08d919 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/data/sourceme_first.sh b/lib/spack/spack/test/data/sourceme_first.sh index 8fcec2fa3a5..c50c5b7335b 100644 --- a/lib/spack/spack/test/data/sourceme_first.sh +++ b/lib/spack/spack/test/data/sourceme_first.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/data/sourceme_parameters.sh b/lib/spack/spack/test/data/sourceme_parameters.sh index 5f76c624359..95ddc457221 100644 --- a/lib/spack/spack/test/data/sourceme_parameters.sh +++ b/lib/spack/spack/test/data/sourceme_parameters.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/data/sourceme_second.sh b/lib/spack/spack/test/data/sourceme_second.sh index 07c814740e0..70b929c27d1 100644 --- a/lib/spack/spack/test/data/sourceme_second.sh +++ b/lib/spack/spack/test/data/sourceme_second.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/data/sourceme_unicode.sh b/lib/spack/spack/test/data/sourceme_unicode.sh index 0080ee7337f..2d58d50e56b 100644 --- a/lib/spack/spack/test/data/sourceme_unicode.sh +++ b/lib/spack/spack/test/data/sourceme_unicode.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index 19a7141fa39..131730e40f5 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/directory_layout.py b/lib/spack/spack/test/directory_layout.py index 3119f0ebed7..a2609c81622 100644 --- a/lib/spack/spack/test/directory_layout.py +++ b/lib/spack/spack/test/directory_layout.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/environment.py b/lib/spack/spack/test/environment.py index d07223221c1..e94e80048ff 100644 --- a/lib/spack/spack/test/environment.py +++ b/lib/spack/spack/test/environment.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/file_cache.py b/lib/spack/spack/test/file_cache.py index 6f0020f042e..7c944b71653 100644 --- a/lib/spack/spack/test/file_cache.py +++ b/lib/spack/spack/test/file_cache.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/file_list.py b/lib/spack/spack/test/file_list.py index f9ae3315978..66f71b4190e 100644 --- a/lib/spack/spack/test/file_list.py +++ b/lib/spack/spack/test/file_list.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/git_fetch.py b/lib/spack/spack/test/git_fetch.py index 098115371f6..a23177b9467 100644 --- a/lib/spack/spack/test/git_fetch.py +++ b/lib/spack/spack/test/git_fetch.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/graph.py b/lib/spack/spack/test/graph.py index 420c8f1180c..1a4534774c3 100644 --- a/lib/spack/spack/test/graph.py +++ b/lib/spack/spack/test/graph.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/hg_fetch.py b/lib/spack/spack/test/hg_fetch.py index ff1ed8862ff..65ec0941d3f 100644 --- a/lib/spack/spack/test/hg_fetch.py +++ b/lib/spack/spack/test/hg_fetch.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/install.py b/lib/spack/spack/test/install.py index 278b2efb706..8887de85849 100644 --- a/lib/spack/spack/test/install.py +++ b/lib/spack/spack/test/install.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/link_tree.py b/lib/spack/spack/test/link_tree.py index ae293b6e671..64836a86f3c 100644 --- a/lib/spack/spack/test/link_tree.py +++ b/lib/spack/spack/test/link_tree.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/lock.py b/lib/spack/spack/test/lock.py index 347b72b575f..208777ae51b 100644 --- a/lib/spack/spack/test/lock.py +++ b/lib/spack/spack/test/lock.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/log.py b/lib/spack/spack/test/log.py index 9c05ed002d1..4a43350f999 100644 --- a/lib/spack/spack/test/log.py +++ b/lib/spack/spack/test/log.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/make_executable.py b/lib/spack/spack/test/make_executable.py index 8eb5057fb76..f47bc1e6a3f 100644 --- a/lib/spack/spack/test/make_executable.py +++ b/lib/spack/spack/test/make_executable.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py index 16ea04434dc..cdaef6dd303 100644 --- a/lib/spack/spack/test/mirror.py +++ b/lib/spack/spack/test/mirror.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/module_parsing.py b/lib/spack/spack/test/module_parsing.py index e563953478d..63eafcca26b 100644 --- a/lib/spack/spack/test/module_parsing.py +++ b/lib/spack/spack/test/module_parsing.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/modules.py b/lib/spack/spack/test/modules.py index 40841f15a76..a0af95c0a44 100644 --- a/lib/spack/spack/test/modules.py +++ b/lib/spack/spack/test/modules.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/multimethod.py b/lib/spack/spack/test/multimethod.py index 404bfe5c8b3..4f6dce1ea7b 100644 --- a/lib/spack/spack/test/multimethod.py +++ b/lib/spack/spack/test/multimethod.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/namespace_trie.py b/lib/spack/spack/test/namespace_trie.py index 62812856a9d..194d28b891c 100644 --- a/lib/spack/spack/test/namespace_trie.py +++ b/lib/spack/spack/test/namespace_trie.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/optional_deps.py b/lib/spack/spack/test/optional_deps.py index 0023fce52d4..559d73a2e2b 100644 --- a/lib/spack/spack/test/optional_deps.py +++ b/lib/spack/spack/test/optional_deps.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/package_sanity.py b/lib/spack/spack/test/package_sanity.py index e8cc9571da7..2cb41aa3cdd 100644 --- a/lib/spack/spack/test/package_sanity.py +++ b/lib/spack/spack/test/package_sanity.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py index 681060aad3b..2fcac53201c 100644 --- a/lib/spack/spack/test/packages.py +++ b/lib/spack/spack/test/packages.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/packaging.py b/lib/spack/spack/test/packaging.py index bac8bf980fe..2277ec891df 100644 --- a/lib/spack/spack/test/packaging.py +++ b/lib/spack/spack/test/packaging.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/pattern.py b/lib/spack/spack/test/pattern.py index e4475546ae0..409982ae54f 100644 --- a/lib/spack/spack/test/pattern.py +++ b/lib/spack/spack/test/pattern.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/provider_index.py b/lib/spack/spack/test/provider_index.py index 08abea857de..54aedc527f1 100644 --- a/lib/spack/spack/test/provider_index.py +++ b/lib/spack/spack/test/provider_index.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/sbang.py b/lib/spack/spack/test/sbang.py index 0962f508cce..09fcdab6528 100644 --- a/lib/spack/spack/test/sbang.py +++ b/lib/spack/spack/test/sbang.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/spack_yaml.py b/lib/spack/spack/test/spack_yaml.py index 742d934e764..441e83028c5 100644 --- a/lib/spack/spack/test/spack_yaml.py +++ b/lib/spack/spack/test/spack_yaml.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index 0d04cb5b0c2..90c7b89c5fe 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 2c7c1d22ed5..e2219e3270f 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/spec_syntax.py b/lib/spack/spack/test/spec_syntax.py index 5d1ace6b864..0985078eeee 100644 --- a/lib/spack/spack/test/spec_syntax.py +++ b/lib/spack/spack/test/spec_syntax.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/spec_yaml.py b/lib/spack/spack/test/spec_yaml.py index 52007383c67..b19611b61cd 100644 --- a/lib/spack/spack/test/spec_yaml.py +++ b/lib/spack/spack/test/spec_yaml.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/stage.py b/lib/spack/spack/test/stage.py index 62605452c68..d6d2eeb5063 100644 --- a/lib/spack/spack/test/stage.py +++ b/lib/spack/spack/test/stage.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/svn_fetch.py b/lib/spack/spack/test/svn_fetch.py index bef5db76dec..2b13d2b4f13 100644 --- a/lib/spack/spack/test/svn_fetch.py +++ b/lib/spack/spack/test/svn_fetch.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/url_fetch.py b/lib/spack/spack/test/url_fetch.py index ff9f96070cf..c51037a2541 100644 --- a/lib/spack/spack/test/url_fetch.py +++ b/lib/spack/spack/test/url_fetch.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index 5749ff2d6e2..3798221cef9 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/url_substitution.py b/lib/spack/spack/test/url_substitution.py index 1a54af1e3c7..1a28a104131 100644 --- a/lib/spack/spack/test/url_substitution.py +++ b/lib/spack/spack/test/url_substitution.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/util/prefix.py b/lib/spack/spack/test/util/prefix.py index 8e8f7c84f97..c01405b5c2c 100644 --- a/lib/spack/spack/test/util/prefix.py +++ b/lib/spack/spack/test/util/prefix.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/variant.py b/lib/spack/spack/test/variant.py index 6fb08bff13a..b7117f02ce9 100644 --- a/lib/spack/spack/test/variant.py +++ b/lib/spack/spack/test/variant.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/versions.py b/lib/spack/spack/test/versions.py index 72292e4dcd0..4298cdc2b05 100644 --- a/lib/spack/spack/test/versions.py +++ b/lib/spack/spack/test/versions.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/test/web.py b/lib/spack/spack/test/web.py index d50e0e3d545..80a8cc036dc 100644 --- a/lib/spack/spack/test/web.py +++ b/lib/spack/spack/test/web.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 67a58cdd126..7c8024c986e 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/__init__.py b/lib/spack/spack/util/__init__.py index 445b6fdbd71..5f81c938256 100644 --- a/lib/spack/spack/util/__init__.py +++ b/lib/spack/spack/util/__init__.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/compression.py b/lib/spack/spack/util/compression.py index bfff66fb07c..020776a98d6 100644 --- a/lib/spack/spack/util/compression.py +++ b/lib/spack/spack/util/compression.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/crypto.py b/lib/spack/spack/util/crypto.py index 65ffa409630..af7e8e71848 100644 --- a/lib/spack/spack/util/crypto.py +++ b/lib/spack/spack/util/crypto.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/debug.py b/lib/spack/spack/util/debug.py index 2b7e540fd3c..f72a99486bb 100644 --- a/lib/spack/spack/util/debug.py +++ b/lib/spack/spack/util/debug.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/environment.py b/lib/spack/spack/util/environment.py index 6bd5c61e79e..276f8d63f37 100644 --- a/lib/spack/spack/util/environment.py +++ b/lib/spack/spack/util/environment.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 5fd40790ed0..157d4a21e4e 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/gpg.py b/lib/spack/spack/util/gpg.py index ebb14a71f6c..fa6be5b8c73 100644 --- a/lib/spack/spack/util/gpg.py +++ b/lib/spack/spack/util/gpg.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/module_cmd.py b/lib/spack/spack/util/module_cmd.py index 87ccd79fd63..c2448aa2782 100644 --- a/lib/spack/spack/util/module_cmd.py +++ b/lib/spack/spack/util/module_cmd.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/multiproc.py b/lib/spack/spack/util/multiproc.py index 559ed19eeca..2f34f9b8109 100644 --- a/lib/spack/spack/util/multiproc.py +++ b/lib/spack/spack/util/multiproc.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/naming.py b/lib/spack/spack/util/naming.py index d7ff9205599..d7a0a098c74 100644 --- a/lib/spack/spack/util/naming.py +++ b/lib/spack/spack/util/naming.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/path.py b/lib/spack/spack/util/path.py index edfd915c653..99d4cd68e36 100644 --- a/lib/spack/spack/util/path.py +++ b/lib/spack/spack/util/path.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/pattern.py b/lib/spack/spack/util/pattern.py index 7400ba73aad..ac61c36fa0c 100644 --- a/lib/spack/spack/util/pattern.py +++ b/lib/spack/spack/util/pattern.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/prefix.py b/lib/spack/spack/util/prefix.py index 479956b1c56..e5822127184 100644 --- a/lib/spack/spack/util/prefix.py +++ b/lib/spack/spack/util/prefix.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/spack_json.py b/lib/spack/spack/util/spack_json.py index 50d3f7005dd..3ea045de0ed 100644 --- a/lib/spack/spack/util/spack_json.py +++ b/lib/spack/spack/util/spack_json.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/spack_yaml.py b/lib/spack/spack/util/spack_yaml.py index 58e82f6508d..f0a0f208567 100644 --- a/lib/spack/spack/util/spack_yaml.py +++ b/lib/spack/spack/util/spack_yaml.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/string.py b/lib/spack/spack/util/string.py index 9f3fd63702b..3b33db93338 100644 --- a/lib/spack/spack/util/string.py +++ b/lib/spack/spack/util/string.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py index 3fd38c22cfc..842a3db07e2 100644 --- a/lib/spack/spack/util/web.py +++ b/lib/spack/spack/util/web.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index 1361fb5152f..0d75b83ebcf 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 3414c9c8d9d..ec77f4d3860 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/share/spack/setup-env.csh b/share/spack/setup-env.csh index 7d933315a6c..c0f82bd0aef 100755 --- a/share/spack/setup-env.csh +++ b/share/spack/setup-env.csh @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 232d8241705..c9a3858621f 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 4eb1c1c0387..044ea448fd8 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/a/package.py b/var/spack/repos/builtin.mock/packages/a/package.py index 037b322f105..dc078d24342 100644 --- a/var/spack/repos/builtin.mock/packages/a/package.py +++ b/var/spack/repos/builtin.mock/packages/a/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/b/package.py b/var/spack/repos/builtin.mock/packages/b/package.py index f89481d70b3..818d87e7707 100644 --- a/var/spack/repos/builtin.mock/packages/b/package.py +++ b/var/spack/repos/builtin.mock/packages/b/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/boost/package.py b/var/spack/repos/builtin.mock/packages/boost/package.py index 60cc915e2e6..ed048509ca8 100644 --- a/var/spack/repos/builtin.mock/packages/boost/package.py +++ b/var/spack/repos/builtin.mock/packages/boost/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/c/package.py b/var/spack/repos/builtin.mock/packages/c/package.py index 1037861b938..a4fc7ab8b69 100644 --- a/var/spack/repos/builtin.mock/packages/c/package.py +++ b/var/spack/repos/builtin.mock/packages/c/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/callpath/package.py b/var/spack/repos/builtin.mock/packages/callpath/package.py index 40c8565ab6e..c60621a9da8 100644 --- a/var/spack/repos/builtin.mock/packages/callpath/package.py +++ b/var/spack/repos/builtin.mock/packages/callpath/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/canfail/package.py b/var/spack/repos/builtin.mock/packages/canfail/package.py index 5b4135b33f6..60272a529da 100644 --- a/var/spack/repos/builtin.mock/packages/canfail/package.py +++ b/var/spack/repos/builtin.mock/packages/canfail/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/cmake-client/package.py b/var/spack/repos/builtin.mock/packages/cmake-client/package.py index 8b094224875..c889900eadf 100644 --- a/var/spack/repos/builtin.mock/packages/cmake-client/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake-client/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/cmake/package.py b/var/spack/repos/builtin.mock/packages/cmake/package.py index 8dc1397fc87..c3674cea646 100644 --- a/var/spack/repos/builtin.mock/packages/cmake/package.py +++ b/var/spack/repos/builtin.mock/packages/cmake/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/conflict-parent/package.py b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py index a5865a90e36..7cbcc218f3d 100644 --- a/var/spack/repos/builtin.mock/packages/conflict-parent/package.py +++ b/var/spack/repos/builtin.mock/packages/conflict-parent/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/conflict/package.py b/var/spack/repos/builtin.mock/packages/conflict/package.py index e13b34dcc5c..0b45018872a 100644 --- a/var/spack/repos/builtin.mock/packages/conflict/package.py +++ b/var/spack/repos/builtin.mock/packages/conflict/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/develop-test/package.py b/var/spack/repos/builtin.mock/packages/develop-test/package.py index b9c9dad8523..8ce6cfa3c34 100644 --- a/var/spack/repos/builtin.mock/packages/develop-test/package.py +++ b/var/spack/repos/builtin.mock/packages/develop-test/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/direct-mpich/package.py b/var/spack/repos/builtin.mock/packages/direct-mpich/package.py index 4c02338bc27..fb4c9c26208 100644 --- a/var/spack/repos/builtin.mock/packages/direct-mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/direct-mpich/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py index 1b7ba0e2d7d..534f0e64a51 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py index 6096d552d85..9203e2d1d1f 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py index 6b77ec5a0a5..fbb77d6588b 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond/package.py index 19530360ad3..bc479fb3ba7 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtbuild1/package.py b/var/spack/repos/builtin.mock/packages/dtbuild1/package.py index 7416718ce85..05932ef39bc 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtbuild2/package.py b/var/spack/repos/builtin.mock/packages/dtbuild2/package.py index 5f22364447a..51a05a15a37 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtbuild3/package.py b/var/spack/repos/builtin.mock/packages/dtbuild3/package.py index 070dac9d454..96ae094b448 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtlink1/package.py b/var/spack/repos/builtin.mock/packages/dtlink1/package.py index 4cd5b24394d..7c03b0fa627 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtlink2/package.py b/var/spack/repos/builtin.mock/packages/dtlink2/package.py index a34317c3643..7c76191d123 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtlink3/package.py b/var/spack/repos/builtin.mock/packages/dtlink3/package.py index 433ceeeec22..d5a779267ad 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtlink4/package.py b/var/spack/repos/builtin.mock/packages/dtlink4/package.py index f694b7882f3..27c3df6433b 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink4/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtlink5/package.py b/var/spack/repos/builtin.mock/packages/dtlink5/package.py index f03556a428c..85d0ba5cc24 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink5/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink5/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtrun1/package.py b/var/spack/repos/builtin.mock/packages/dtrun1/package.py index a0a29804dbe..01ee04185fc 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtrun2/package.py b/var/spack/repos/builtin.mock/packages/dtrun2/package.py index 15bfa4aed7f..826393c2f36 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtrun3/package.py b/var/spack/repos/builtin.mock/packages/dtrun3/package.py index e4519286b51..1221a02a5fa 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dttop/package.py b/var/spack/repos/builtin.mock/packages/dttop/package.py index be29daeb30e..4d9ec5b2eec 100644 --- a/var/spack/repos/builtin.mock/packages/dttop/package.py +++ b/var/spack/repos/builtin.mock/packages/dttop/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dtuse/package.py b/var/spack/repos/builtin.mock/packages/dtuse/package.py index 8c2a85c1268..8469ce2b0d4 100644 --- a/var/spack/repos/builtin.mock/packages/dtuse/package.py +++ b/var/spack/repos/builtin.mock/packages/dtuse/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/dyninst/package.py b/var/spack/repos/builtin.mock/packages/dyninst/package.py index 009fdb7c2c7..ad17edc886d 100644 --- a/var/spack/repos/builtin.mock/packages/dyninst/package.py +++ b/var/spack/repos/builtin.mock/packages/dyninst/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/e/package.py b/var/spack/repos/builtin.mock/packages/e/package.py index 6edc27f903c..c15c852dc4a 100644 --- a/var/spack/repos/builtin.mock/packages/e/package.py +++ b/var/spack/repos/builtin.mock/packages/e/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/extendee/package.py b/var/spack/repos/builtin.mock/packages/extendee/package.py index fc2ae16ae6f..fe55462360f 100644 --- a/var/spack/repos/builtin.mock/packages/extendee/package.py +++ b/var/spack/repos/builtin.mock/packages/extendee/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/extension1/package.py b/var/spack/repos/builtin.mock/packages/extension1/package.py index ea07e081197..3fc291f5846 100644 --- a/var/spack/repos/builtin.mock/packages/extension1/package.py +++ b/var/spack/repos/builtin.mock/packages/extension1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/extension2/package.py b/var/spack/repos/builtin.mock/packages/extension2/package.py index ab959a20a85..f3d1a392946 100644 --- a/var/spack/repos/builtin.mock/packages/extension2/package.py +++ b/var/spack/repos/builtin.mock/packages/extension2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/externalmodule/package.py b/var/spack/repos/builtin.mock/packages/externalmodule/package.py index 1fc59f67bc2..28c1a03a741 100644 --- a/var/spack/repos/builtin.mock/packages/externalmodule/package.py +++ b/var/spack/repos/builtin.mock/packages/externalmodule/package.py @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/externalprereq/package.py b/var/spack/repos/builtin.mock/packages/externalprereq/package.py index caf44e1ba86..4859134cbb7 100644 --- a/var/spack/repos/builtin.mock/packages/externalprereq/package.py +++ b/var/spack/repos/builtin.mock/packages/externalprereq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/externaltest/package.py b/var/spack/repos/builtin.mock/packages/externaltest/package.py index bbf47cedfdb..923a371c1dc 100644 --- a/var/spack/repos/builtin.mock/packages/externaltest/package.py +++ b/var/spack/repos/builtin.mock/packages/externaltest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/externaltool/package.py b/var/spack/repos/builtin.mock/packages/externaltool/package.py index 925188a6461..049f82d98f6 100644 --- a/var/spack/repos/builtin.mock/packages/externaltool/package.py +++ b/var/spack/repos/builtin.mock/packages/externaltool/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/externalvirtual/package.py b/var/spack/repos/builtin.mock/packages/externalvirtual/package.py index 292ff9de418..3e0f1d49cee 100644 --- a/var/spack/repos/builtin.mock/packages/externalvirtual/package.py +++ b/var/spack/repos/builtin.mock/packages/externalvirtual/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/failing-build/package.py b/var/spack/repos/builtin.mock/packages/failing-build/package.py index d7d16db78e6..237e9d2b6f6 100644 --- a/var/spack/repos/builtin.mock/packages/failing-build/package.py +++ b/var/spack/repos/builtin.mock/packages/failing-build/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/fake/package.py b/var/spack/repos/builtin.mock/packages/fake/package.py index e1cc33dbf29..55adeb0c288 100644 --- a/var/spack/repos/builtin.mock/packages/fake/package.py +++ b/var/spack/repos/builtin.mock/packages/fake/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/flake8/package.py b/var/spack/repos/builtin.mock/packages/flake8/package.py index db425e82ee9..09356c4210c 100644 --- a/var/spack/repos/builtin.mock/packages/flake8/package.py +++ b/var/spack/repos/builtin.mock/packages/flake8/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/git-test/package.py b/var/spack/repos/builtin.mock/packages/git-test/package.py index 83b94c0d65d..49931761070 100644 --- a/var/spack/repos/builtin.mock/packages/git-test/package.py +++ b/var/spack/repos/builtin.mock/packages/git-test/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/hg-test/package.py b/var/spack/repos/builtin.mock/packages/hg-test/package.py index 50f6fef0a61..6a674979a8d 100644 --- a/var/spack/repos/builtin.mock/packages/hg-test/package.py +++ b/var/spack/repos/builtin.mock/packages/hg-test/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/hypre/package.py b/var/spack/repos/builtin.mock/packages/hypre/package.py index a620b1b14c5..301975e87b1 100644 --- a/var/spack/repos/builtin.mock/packages/hypre/package.py +++ b/var/spack/repos/builtin.mock/packages/hypre/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py b/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py index 1a56a260f3c..4d2898f48a3 100644 --- a/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/libdwarf/package.py b/var/spack/repos/builtin.mock/packages/libdwarf/package.py index 0cdbaf2a332..6fb09337923 100644 --- a/var/spack/repos/builtin.mock/packages/libdwarf/package.py +++ b/var/spack/repos/builtin.mock/packages/libdwarf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/libelf/package.py b/var/spack/repos/builtin.mock/packages/libelf/package.py index 03909630816..898f9b1f0ee 100644 --- a/var/spack/repos/builtin.mock/packages/libelf/package.py +++ b/var/spack/repos/builtin.mock/packages/libelf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/mixedversions/package.py b/var/spack/repos/builtin.mock/packages/mixedversions/package.py index 5b56eb004db..108c1feb078 100644 --- a/var/spack/repos/builtin.mock/packages/mixedversions/package.py +++ b/var/spack/repos/builtin.mock/packages/mixedversions/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/mpich/package.py b/var/spack/repos/builtin.mock/packages/mpich/package.py index 844cfb940c9..6568cffc6af 100644 --- a/var/spack/repos/builtin.mock/packages/mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/mpich/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/mpich2/package.py b/var/spack/repos/builtin.mock/packages/mpich2/package.py index aabd5232d7c..ecf1bfda5c2 100644 --- a/var/spack/repos/builtin.mock/packages/mpich2/package.py +++ b/var/spack/repos/builtin.mock/packages/mpich2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/mpileaks/package.py b/var/spack/repos/builtin.mock/packages/mpileaks/package.py index 31cf0bd2b92..2fd5dc0e711 100644 --- a/var/spack/repos/builtin.mock/packages/mpileaks/package.py +++ b/var/spack/repos/builtin.mock/packages/mpileaks/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py b/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py index a2425eaaa1b..c22c025a842 100644 --- a/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py +++ b/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/multimethod/package.py b/var/spack/repos/builtin.mock/packages/multimethod/package.py index fa8d4b0342e..ee3e3139865 100644 --- a/var/spack/repos/builtin.mock/packages/multimethod/package.py +++ b/var/spack/repos/builtin.mock/packages/multimethod/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py index 946b9893d8f..d85416c354b 100644 --- a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py +++ b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/netlib-blas/package.py b/var/spack/repos/builtin.mock/packages/netlib-blas/package.py index a1f3cfcb2b3..f818b9142a0 100644 --- a/var/spack/repos/builtin.mock/packages/netlib-blas/package.py +++ b/var/spack/repos/builtin.mock/packages/netlib-blas/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py b/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py index 820a6b681e5..216802fb003 100644 --- a/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py b/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py index 5e470816417..3e37e67ed05 100644 --- a/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/openblas/package.py b/var/spack/repos/builtin.mock/packages/openblas/package.py index 58c6ec78d2b..fb4893e3f25 100644 --- a/var/spack/repos/builtin.mock/packages/openblas/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py index 5838ffb7929..e28e8a47cbc 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py index 51b7fa028ac..6712c5d3afe 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py index 165adec23a7..7f540583548 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/othervirtual/package.py b/var/spack/repos/builtin.mock/packages/othervirtual/package.py index 5b019cfdb23..16f7539312e 100644 --- a/var/spack/repos/builtin.mock/packages/othervirtual/package.py +++ b/var/spack/repos/builtin.mock/packages/othervirtual/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/patchelf/package.py b/var/spack/repos/builtin.mock/packages/patchelf/package.py index 915f3df0c65..db1b981085e 100644 --- a/var/spack/repos/builtin.mock/packages/patchelf/package.py +++ b/var/spack/repos/builtin.mock/packages/patchelf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/python/package.py b/var/spack/repos/builtin.mock/packages/python/package.py index da33e66f877..3dce9ab3b76 100644 --- a/var/spack/repos/builtin.mock/packages/python/package.py +++ b/var/spack/repos/builtin.mock/packages/python/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py index c6630927c7d..e21a72a23a9 100644 --- a/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py +++ b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/svn-test/package.py b/var/spack/repos/builtin.mock/packages/svn-test/package.py index a24057f0894..9c5bb356f86 100644 --- a/var/spack/repos/builtin.mock/packages/svn-test/package.py +++ b/var/spack/repos/builtin.mock/packages/svn-test/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py b/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py index 58c52ec8920..1609ad10862 100644 --- a/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py +++ b/var/spack/repos/builtin.mock/packages/trivial-install-test-package/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin.mock/packages/zmpi/package.py b/var/spack/repos/builtin.mock/packages/zmpi/package.py index 1e5b0a6706b..4add0f37373 100644 --- a/var/spack/repos/builtin.mock/packages/zmpi/package.py +++ b/var/spack/repos/builtin.mock/packages/zmpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/abinit/package.py b/var/spack/repos/builtin/packages/abinit/package.py index 66157b35460..de9d4660534 100644 --- a/var/spack/repos/builtin/packages/abinit/package.py +++ b/var/spack/repos/builtin/packages/abinit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/abyss/package.py b/var/spack/repos/builtin/packages/abyss/package.py index f3a9f27748d..24bef9f799c 100644 --- a/var/spack/repos/builtin/packages/abyss/package.py +++ b/var/spack/repos/builtin/packages/abyss/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ack/package.py b/var/spack/repos/builtin/packages/ack/package.py index 7a81177814f..9aacab1b3c6 100644 --- a/var/spack/repos/builtin/packages/ack/package.py +++ b/var/spack/repos/builtin/packages/ack/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/activeharmony/package.py b/var/spack/repos/builtin/packages/activeharmony/package.py index 25720e8bcbf..ece7c8b4dc9 100644 --- a/var/spack/repos/builtin/packages/activeharmony/package.py +++ b/var/spack/repos/builtin/packages/activeharmony/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/adept-utils/package.py b/var/spack/repos/builtin/packages/adept-utils/package.py index ab1a4ca8615..b4790391bb5 100644 --- a/var/spack/repos/builtin/packages/adept-utils/package.py +++ b/var/spack/repos/builtin/packages/adept-utils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index cebd90144f8..74e1166e961 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/adlbx/package.py b/var/spack/repos/builtin/packages/adlbx/package.py index 6793d68c338..2f9b924ca41 100644 --- a/var/spack/repos/builtin/packages/adlbx/package.py +++ b/var/spack/repos/builtin/packages/adlbx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/adol-c/package.py b/var/spack/repos/builtin/packages/adol-c/package.py index 1f9850b4c8d..af7cf4b933d 100644 --- a/var/spack/repos/builtin/packages/adol-c/package.py +++ b/var/spack/repos/builtin/packages/adol-c/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/albert/package.py b/var/spack/repos/builtin/packages/albert/package.py index 7375e512a97..686a73e9dfa 100644 --- a/var/spack/repos/builtin/packages/albert/package.py +++ b/var/spack/repos/builtin/packages/albert/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/alglib/package.py b/var/spack/repos/builtin/packages/alglib/package.py index d617290e62b..9a9149fe704 100644 --- a/var/spack/repos/builtin/packages/alglib/package.py +++ b/var/spack/repos/builtin/packages/alglib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/allinea-forge/package.py b/var/spack/repos/builtin/packages/allinea-forge/package.py index a415418923e..f0d9466f742 100644 --- a/var/spack/repos/builtin/packages/allinea-forge/package.py +++ b/var/spack/repos/builtin/packages/allinea-forge/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/allinea-reports/package.py b/var/spack/repos/builtin/packages/allinea-reports/package.py index c4fd2786480..1994dc7e343 100644 --- a/var/spack/repos/builtin/packages/allinea-reports/package.py +++ b/var/spack/repos/builtin/packages/allinea-reports/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/allpaths-lg/package.py b/var/spack/repos/builtin/packages/allpaths-lg/package.py index cba8002d15f..89f502d3ce5 100644 --- a/var/spack/repos/builtin/packages/allpaths-lg/package.py +++ b/var/spack/repos/builtin/packages/allpaths-lg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/alquimia/package.py b/var/spack/repos/builtin/packages/alquimia/package.py index cadea3cb3ca..aed0098aba9 100644 --- a/var/spack/repos/builtin/packages/alquimia/package.py +++ b/var/spack/repos/builtin/packages/alquimia/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/alsa-lib/package.py b/var/spack/repos/builtin/packages/alsa-lib/package.py index 8d92b398e89..66f5c2176a1 100644 --- a/var/spack/repos/builtin/packages/alsa-lib/package.py +++ b/var/spack/repos/builtin/packages/alsa-lib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/amg2013/package.py b/var/spack/repos/builtin/packages/amg2013/package.py index 5e1ef46df8d..de5e7f4d76d 100644 --- a/var/spack/repos/builtin/packages/amg2013/package.py +++ b/var/spack/repos/builtin/packages/amg2013/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ampliconnoise/package.py b/var/spack/repos/builtin/packages/ampliconnoise/package.py index 7051ae0008b..72b592e9867 100644 --- a/var/spack/repos/builtin/packages/ampliconnoise/package.py +++ b/var/spack/repos/builtin/packages/ampliconnoise/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py b/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py index 47e400e18f2..199f859098c 100644 --- a/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py +++ b/var/spack/repos/builtin/packages/amr-exp-parabolic/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index 772bbce3a51..0cf62dc5e5d 100644 --- a/var/spack/repos/builtin/packages/amrex/package.py +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/andi/package.py b/var/spack/repos/builtin/packages/andi/package.py index 092f5021ccf..0f9360d0ba8 100644 --- a/var/spack/repos/builtin/packages/andi/package.py +++ b/var/spack/repos/builtin/packages/andi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/angsd/package.py b/var/spack/repos/builtin/packages/angsd/package.py index 21ad31c957a..f3ddfbcaaaf 100644 --- a/var/spack/repos/builtin/packages/angsd/package.py +++ b/var/spack/repos/builtin/packages/angsd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ant/package.py b/var/spack/repos/builtin/packages/ant/package.py index a2ba25f3ac9..acedf64f5d2 100644 --- a/var/spack/repos/builtin/packages/ant/package.py +++ b/var/spack/repos/builtin/packages/ant/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/antlr/package.py b/var/spack/repos/builtin/packages/antlr/package.py index b2e2b0a6a58..06a18cbe294 100644 --- a/var/spack/repos/builtin/packages/antlr/package.py +++ b/var/spack/repos/builtin/packages/antlr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ape/package.py b/var/spack/repos/builtin/packages/ape/package.py index 05a08257a1f..29fd5bf2ed8 100644 --- a/var/spack/repos/builtin/packages/ape/package.py +++ b/var/spack/repos/builtin/packages/ape/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/apex/package.py b/var/spack/repos/builtin/packages/apex/package.py index 0c04968a67c..d9918803a4f 100644 --- a/var/spack/repos/builtin/packages/apex/package.py +++ b/var/spack/repos/builtin/packages/apex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/applewmproto/package.py b/var/spack/repos/builtin/packages/applewmproto/package.py index 805eeb33cca..4ca4a1f9b3e 100644 --- a/var/spack/repos/builtin/packages/applewmproto/package.py +++ b/var/spack/repos/builtin/packages/applewmproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/appres/package.py b/var/spack/repos/builtin/packages/appres/package.py index e98004ce9a7..f4517a6b3d6 100644 --- a/var/spack/repos/builtin/packages/appres/package.py +++ b/var/spack/repos/builtin/packages/appres/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/apr-util/package.py b/var/spack/repos/builtin/packages/apr-util/package.py index 6330daa4d7b..3e3c1cf77e6 100644 --- a/var/spack/repos/builtin/packages/apr-util/package.py +++ b/var/spack/repos/builtin/packages/apr-util/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/apr/package.py b/var/spack/repos/builtin/packages/apr/package.py index 45b000854ec..8ec05fe5fda 100644 --- a/var/spack/repos/builtin/packages/apr/package.py +++ b/var/spack/repos/builtin/packages/apr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/archer/package.py b/var/spack/repos/builtin/packages/archer/package.py index f5e4fbf8c14..6b9464fc2f4 100644 --- a/var/spack/repos/builtin/packages/archer/package.py +++ b/var/spack/repos/builtin/packages/archer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/argtable/package.py b/var/spack/repos/builtin/packages/argtable/package.py index a7ffb886dac..1da9f8fe226 100644 --- a/var/spack/repos/builtin/packages/argtable/package.py +++ b/var/spack/repos/builtin/packages/argtable/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index a3c9c2bf3fb..26581719257 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py index 6b6f6271c4a..790a4d5e9fb 100644 --- a/var/spack/repos/builtin/packages/arpack-ng/package.py +++ b/var/spack/repos/builtin/packages/arpack-ng/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/arpack/package.py b/var/spack/repos/builtin/packages/arpack/package.py index 67ab0502363..3e03d0cfd75 100644 --- a/var/spack/repos/builtin/packages/arpack/package.py +++ b/var/spack/repos/builtin/packages/arpack/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/asciidoc/package.py b/var/spack/repos/builtin/packages/asciidoc/package.py index 9d8de2b7632..2ce219ac7e5 100644 --- a/var/spack/repos/builtin/packages/asciidoc/package.py +++ b/var/spack/repos/builtin/packages/asciidoc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/aspa/package.py b/var/spack/repos/builtin/packages/aspa/package.py index 3b0e0e4c263..3a6bf6867f7 100644 --- a/var/spack/repos/builtin/packages/aspa/package.py +++ b/var/spack/repos/builtin/packages/aspa/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/astra/package.py b/var/spack/repos/builtin/packages/astra/package.py index 1358657f83e..df5b8dec6eb 100644 --- a/var/spack/repos/builtin/packages/astra/package.py +++ b/var/spack/repos/builtin/packages/astra/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/astral/package.py b/var/spack/repos/builtin/packages/astral/package.py index 79feeca07a4..e48ccfed977 100644 --- a/var/spack/repos/builtin/packages/astral/package.py +++ b/var/spack/repos/builtin/packages/astral/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/astyle/package.py b/var/spack/repos/builtin/packages/astyle/package.py index 3bc31ddfdf4..2bd131dfe14 100644 --- a/var/spack/repos/builtin/packages/astyle/package.py +++ b/var/spack/repos/builtin/packages/astyle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py index 1cccca26686..db8a66c46fb 100644 --- a/var/spack/repos/builtin/packages/atk/package.py +++ b/var/spack/repos/builtin/packages/atk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/atlas/package.py b/var/spack/repos/builtin/packages/atlas/package.py index af2d0ff1112..d3865f6156a 100644 --- a/var/spack/repos/builtin/packages/atlas/package.py +++ b/var/spack/repos/builtin/packages/atlas/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/atompaw/package.py b/var/spack/repos/builtin/packages/atompaw/package.py index 016681bf497..e9d8dec5536 100644 --- a/var/spack/repos/builtin/packages/atompaw/package.py +++ b/var/spack/repos/builtin/packages/atompaw/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/atop/package.py b/var/spack/repos/builtin/packages/atop/package.py index 396220962c1..30f508f1504 100644 --- a/var/spack/repos/builtin/packages/atop/package.py +++ b/var/spack/repos/builtin/packages/atop/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/augustus/package.py b/var/spack/repos/builtin/packages/augustus/package.py index 8a90de639e8..69e72a062f4 100644 --- a/var/spack/repos/builtin/packages/augustus/package.py +++ b/var/spack/repos/builtin/packages/augustus/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/autoconf/package.py b/var/spack/repos/builtin/packages/autoconf/package.py index 9d7aed4c00d..c576056d383 100644 --- a/var/spack/repos/builtin/packages/autoconf/package.py +++ b/var/spack/repos/builtin/packages/autoconf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/autogen/package.py b/var/spack/repos/builtin/packages/autogen/package.py index 39fc6a4cc65..5946dc95e2f 100644 --- a/var/spack/repos/builtin/packages/autogen/package.py +++ b/var/spack/repos/builtin/packages/autogen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/automaded/package.py b/var/spack/repos/builtin/packages/automaded/package.py index 1d84a4f6f41..64ddbf16593 100644 --- a/var/spack/repos/builtin/packages/automaded/package.py +++ b/var/spack/repos/builtin/packages/automaded/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/automake/package.py b/var/spack/repos/builtin/packages/automake/package.py index 4a38712db96..deaf363b209 100644 --- a/var/spack/repos/builtin/packages/automake/package.py +++ b/var/spack/repos/builtin/packages/automake/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bamtools/package.py b/var/spack/repos/builtin/packages/bamtools/package.py index f29af2618d7..250c211c9e1 100644 --- a/var/spack/repos/builtin/packages/bamtools/package.py +++ b/var/spack/repos/builtin/packages/bamtools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bamutil/package.py b/var/spack/repos/builtin/packages/bamutil/package.py index 164e0438de6..a8f273d8c7c 100644 --- a/var/spack/repos/builtin/packages/bamutil/package.py +++ b/var/spack/repos/builtin/packages/bamutil/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bash-completion/package.py b/var/spack/repos/builtin/packages/bash-completion/package.py index 680ac71ad18..a45a1172b20 100644 --- a/var/spack/repos/builtin/packages/bash-completion/package.py +++ b/var/spack/repos/builtin/packages/bash-completion/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bash/package.py b/var/spack/repos/builtin/packages/bash/package.py index 86675fc4bff..f83e78b8c5a 100644 --- a/var/spack/repos/builtin/packages/bash/package.py +++ b/var/spack/repos/builtin/packages/bash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bats/package.py b/var/spack/repos/builtin/packages/bats/package.py index bcbb55bf167..27ecda46503 100644 --- a/var/spack/repos/builtin/packages/bats/package.py +++ b/var/spack/repos/builtin/packages/bats/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index a9573dbe2b6..50154c6434e 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bbcp/package.py b/var/spack/repos/builtin/packages/bbcp/package.py index 76aef3d20cb..f7b255ab8df 100644 --- a/var/spack/repos/builtin/packages/bbcp/package.py +++ b/var/spack/repos/builtin/packages/bbcp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bcftools/package.py b/var/spack/repos/builtin/packages/bcftools/package.py index 6555692fab2..2add3e781a4 100644 --- a/var/spack/repos/builtin/packages/bcftools/package.py +++ b/var/spack/repos/builtin/packages/bcftools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bcl2fastq2/package.py b/var/spack/repos/builtin/packages/bcl2fastq2/package.py index 64060c2b9b7..67302c43242 100644 --- a/var/spack/repos/builtin/packages/bcl2fastq2/package.py +++ b/var/spack/repos/builtin/packages/bcl2fastq2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bdftopcf/package.py b/var/spack/repos/builtin/packages/bdftopcf/package.py index 68590c5a08a..f8d8d7514cb 100644 --- a/var/spack/repos/builtin/packages/bdftopcf/package.py +++ b/var/spack/repos/builtin/packages/bdftopcf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bdw-gc/package.py b/var/spack/repos/builtin/packages/bdw-gc/package.py index a0606e78b17..47876596529 100644 --- a/var/spack/repos/builtin/packages/bdw-gc/package.py +++ b/var/spack/repos/builtin/packages/bdw-gc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bear/package.py b/var/spack/repos/builtin/packages/bear/package.py index eed95ebf890..eb20cecb148 100644 --- a/var/spack/repos/builtin/packages/bear/package.py +++ b/var/spack/repos/builtin/packages/bear/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/beast2/package.py b/var/spack/repos/builtin/packages/beast2/package.py index 77acaa01f34..795312abbdc 100644 --- a/var/spack/repos/builtin/packages/beast2/package.py +++ b/var/spack/repos/builtin/packages/beast2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bedtools2/package.py b/var/spack/repos/builtin/packages/bedtools2/package.py index a16f0cb203b..57d71c4ea7c 100644 --- a/var/spack/repos/builtin/packages/bedtools2/package.py +++ b/var/spack/repos/builtin/packages/bedtools2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/beforelight/package.py b/var/spack/repos/builtin/packages/beforelight/package.py index 51341e6998e..9863c80dc1b 100644 --- a/var/spack/repos/builtin/packages/beforelight/package.py +++ b/var/spack/repos/builtin/packages/beforelight/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py index 3969781112c..0efbf8829ba 100644 --- a/var/spack/repos/builtin/packages/benchmark/package.py +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bertini/package.py b/var/spack/repos/builtin/packages/bertini/package.py index 4e1ac87e579..425a455c932 100644 --- a/var/spack/repos/builtin/packages/bertini/package.py +++ b/var/spack/repos/builtin/packages/bertini/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bib2xhtml/package.py b/var/spack/repos/builtin/packages/bib2xhtml/package.py index 99bd1ce4c9b..abd9e920118 100644 --- a/var/spack/repos/builtin/packages/bib2xhtml/package.py +++ b/var/spack/repos/builtin/packages/bib2xhtml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bigreqsproto/package.py b/var/spack/repos/builtin/packages/bigreqsproto/package.py index 4fdfe1e7f2e..bdc5b68924c 100644 --- a/var/spack/repos/builtin/packages/bigreqsproto/package.py +++ b/var/spack/repos/builtin/packages/bigreqsproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py index de1f23520fb..b809d811d45 100644 --- a/var/spack/repos/builtin/packages/binutils/package.py +++ b/var/spack/repos/builtin/packages/binutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index 10a8967178b..868268d42b5 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bitmap/package.py b/var/spack/repos/builtin/packages/bitmap/package.py index c656ab31dfd..7bfe00aaba5 100644 --- a/var/spack/repos/builtin/packages/bitmap/package.py +++ b/var/spack/repos/builtin/packages/bitmap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/blast-plus/package.py b/var/spack/repos/builtin/packages/blast-plus/package.py index 23c47bcec9a..28e29bcbaef 100644 --- a/var/spack/repos/builtin/packages/blast-plus/package.py +++ b/var/spack/repos/builtin/packages/blast-plus/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/blat/package.py b/var/spack/repos/builtin/packages/blat/package.py index 6d55f14f1e3..3872465a80d 100644 --- a/var/spack/repos/builtin/packages/blat/package.py +++ b/var/spack/repos/builtin/packages/blat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/blaze/package.py b/var/spack/repos/builtin/packages/blaze/package.py index 509f6ab9869..c5826389e47 100644 --- a/var/spack/repos/builtin/packages/blaze/package.py +++ b/var/spack/repos/builtin/packages/blaze/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bliss/package.py b/var/spack/repos/builtin/packages/bliss/package.py index 9abb7143a2e..45fae3da934 100644 --- a/var/spack/repos/builtin/packages/bliss/package.py +++ b/var/spack/repos/builtin/packages/bliss/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/blitz/package.py b/var/spack/repos/builtin/packages/blitz/package.py index 7fc7e64e762..b5bb3c42cd0 100644 --- a/var/spack/repos/builtin/packages/blitz/package.py +++ b/var/spack/repos/builtin/packages/blitz/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index b3dc0b396b6..b83bfb6818b 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bowtie/package.py b/var/spack/repos/builtin/packages/bowtie/package.py index 05f9140edbb..f339f24451d 100644 --- a/var/spack/repos/builtin/packages/bowtie/package.py +++ b/var/spack/repos/builtin/packages/bowtie/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bowtie2/package.py b/var/spack/repos/builtin/packages/bowtie2/package.py index 564e2d27f80..bd6e956b803 100644 --- a/var/spack/repos/builtin/packages/bowtie2/package.py +++ b/var/spack/repos/builtin/packages/bowtie2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/boxlib/package.py b/var/spack/repos/builtin/packages/boxlib/package.py index 75030e925c8..2d97c1ce3ff 100644 --- a/var/spack/repos/builtin/packages/boxlib/package.py +++ b/var/spack/repos/builtin/packages/boxlib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bpp-core/package.py b/var/spack/repos/builtin/packages/bpp-core/package.py index df2c09b3ae7..9c49ab1e3ef 100644 --- a/var/spack/repos/builtin/packages/bpp-core/package.py +++ b/var/spack/repos/builtin/packages/bpp-core/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bpp-phyl/package.py b/var/spack/repos/builtin/packages/bpp-phyl/package.py index 1e1a2a393f5..c028cc4f235 100644 --- a/var/spack/repos/builtin/packages/bpp-phyl/package.py +++ b/var/spack/repos/builtin/packages/bpp-phyl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bpp-seq/package.py b/var/spack/repos/builtin/packages/bpp-seq/package.py index d89d029d260..0ebf87437af 100644 --- a/var/spack/repos/builtin/packages/bpp-seq/package.py +++ b/var/spack/repos/builtin/packages/bpp-seq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bpp-suite/package.py b/var/spack/repos/builtin/packages/bpp-suite/package.py index f52f76b822a..a0aeea8e3ec 100644 --- a/var/spack/repos/builtin/packages/bpp-suite/package.py +++ b/var/spack/repos/builtin/packages/bpp-suite/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/braker/package.py b/var/spack/repos/builtin/packages/braker/package.py index cfc1f16025b..2a2385357ee 100644 --- a/var/spack/repos/builtin/packages/braker/package.py +++ b/var/spack/repos/builtin/packages/braker/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/brigand/package.py b/var/spack/repos/builtin/packages/brigand/package.py index ff379e096bc..8f4e36de50c 100644 --- a/var/spack/repos/builtin/packages/brigand/package.py +++ b/var/spack/repos/builtin/packages/brigand/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bsseeker2/package.py b/var/spack/repos/builtin/packages/bsseeker2/package.py index aca1e70b012..731c12dedef 100644 --- a/var/spack/repos/builtin/packages/bsseeker2/package.py +++ b/var/spack/repos/builtin/packages/bsseeker2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bucky/package.py b/var/spack/repos/builtin/packages/bucky/package.py index d74e8784e58..d0cc4e56791 100644 --- a/var/spack/repos/builtin/packages/bucky/package.py +++ b/var/spack/repos/builtin/packages/bucky/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/busco/package.py b/var/spack/repos/builtin/packages/busco/package.py index ad0f06ca916..198db2a2555 100644 --- a/var/spack/repos/builtin/packages/busco/package.py +++ b/var/spack/repos/builtin/packages/busco/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/butter/package.py b/var/spack/repos/builtin/packages/butter/package.py index 4bd1607097f..56ca218d999 100644 --- a/var/spack/repos/builtin/packages/butter/package.py +++ b/var/spack/repos/builtin/packages/butter/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bwa/package.py b/var/spack/repos/builtin/packages/bwa/package.py index c4cd0d66650..2ef202736ad 100644 --- a/var/spack/repos/builtin/packages/bwa/package.py +++ b/var/spack/repos/builtin/packages/bwa/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/bzip2/package.py b/var/spack/repos/builtin/packages/bzip2/package.py index 532c670a0b0..d42f7c2bb61 100644 --- a/var/spack/repos/builtin/packages/bzip2/package.py +++ b/var/spack/repos/builtin/packages/bzip2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/c-blosc/package.py b/var/spack/repos/builtin/packages/c-blosc/package.py index 636657bf8d7..948ec8b195a 100644 --- a/var/spack/repos/builtin/packages/c-blosc/package.py +++ b/var/spack/repos/builtin/packages/c-blosc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index 021814c7fd6..bf34ffcf83d 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cairo/package.py b/var/spack/repos/builtin/packages/cairo/package.py index f02c26a8f1d..a4ca1438dc1 100644 --- a/var/spack/repos/builtin/packages/cairo/package.py +++ b/var/spack/repos/builtin/packages/cairo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index 7758b20328b..5d555e6d9fe 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/callpath/package.py b/var/spack/repos/builtin/packages/callpath/package.py index bc72bb50bd9..2a109c5ed53 100644 --- a/var/spack/repos/builtin/packages/callpath/package.py +++ b/var/spack/repos/builtin/packages/callpath/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py index 36c796e45d3..acccf79e7e3 100644 --- a/var/spack/repos/builtin/packages/cantera/package.py +++ b/var/spack/repos/builtin/packages/cantera/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/canu/package.py b/var/spack/repos/builtin/packages/canu/package.py index fd6acfec0f1..3d991027a23 100644 --- a/var/spack/repos/builtin/packages/canu/package.py +++ b/var/spack/repos/builtin/packages/canu/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cap3/package.py b/var/spack/repos/builtin/packages/cap3/package.py index 8f4a180cbd0..7b9b89230b5 100644 --- a/var/spack/repos/builtin/packages/cap3/package.py +++ b/var/spack/repos/builtin/packages/cap3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cares/package.py b/var/spack/repos/builtin/packages/cares/package.py index 2c944104fd9..f640ceef713 100644 --- a/var/spack/repos/builtin/packages/cares/package.py +++ b/var/spack/repos/builtin/packages/cares/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cask/package.py b/var/spack/repos/builtin/packages/cask/package.py index e259dae8c2c..2e272ed7259 100644 --- a/var/spack/repos/builtin/packages/cask/package.py +++ b/var/spack/repos/builtin/packages/cask/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/catch/package.py b/var/spack/repos/builtin/packages/catch/package.py index f65f7aeb256..22a2bf06cd0 100644 --- a/var/spack/repos/builtin/packages/catch/package.py +++ b/var/spack/repos/builtin/packages/catch/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cbench/package.py b/var/spack/repos/builtin/packages/cbench/package.py index f2cf386a294..ac566142aed 100644 --- a/var/spack/repos/builtin/packages/cbench/package.py +++ b/var/spack/repos/builtin/packages/cbench/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cblas/package.py b/var/spack/repos/builtin/packages/cblas/package.py index 2ac5f820ec0..3818182da54 100644 --- a/var/spack/repos/builtin/packages/cblas/package.py +++ b/var/spack/repos/builtin/packages/cblas/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ccache/package.py b/var/spack/repos/builtin/packages/ccache/package.py index 78a70599133..1046c05c851 100644 --- a/var/spack/repos/builtin/packages/ccache/package.py +++ b/var/spack/repos/builtin/packages/ccache/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cctools/package.py b/var/spack/repos/builtin/packages/cctools/package.py index ad9e3763c23..ff43aab88d9 100644 --- a/var/spack/repos/builtin/packages/cctools/package.py +++ b/var/spack/repos/builtin/packages/cctools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cdbfasta/package.py b/var/spack/repos/builtin/packages/cdbfasta/package.py index 9fa0c624425..746242bc810 100644 --- a/var/spack/repos/builtin/packages/cdbfasta/package.py +++ b/var/spack/repos/builtin/packages/cdbfasta/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cdd/package.py b/var/spack/repos/builtin/packages/cdd/package.py index 4f4d59785e0..eff7c4ff164 100644 --- a/var/spack/repos/builtin/packages/cdd/package.py +++ b/var/spack/repos/builtin/packages/cdd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cddlib/package.py b/var/spack/repos/builtin/packages/cddlib/package.py index 7c38abd28d0..c21f867ce06 100644 --- a/var/spack/repos/builtin/packages/cddlib/package.py +++ b/var/spack/repos/builtin/packages/cddlib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cdhit/package.py b/var/spack/repos/builtin/packages/cdhit/package.py index 8651466ef5c..6a58befb9cc 100644 --- a/var/spack/repos/builtin/packages/cdhit/package.py +++ b/var/spack/repos/builtin/packages/cdhit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py index 162d18892dd..d8fb99d620b 100644 --- a/var/spack/repos/builtin/packages/cdo/package.py +++ b/var/spack/repos/builtin/packages/cdo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cereal/package.py b/var/spack/repos/builtin/packages/cereal/package.py index fc7aba49557..9e779cd99c6 100644 --- a/var/spack/repos/builtin/packages/cereal/package.py +++ b/var/spack/repos/builtin/packages/cereal/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cfitsio/package.py b/var/spack/repos/builtin/packages/cfitsio/package.py index 40c85413c72..2d394e1a17d 100644 --- a/var/spack/repos/builtin/packages/cfitsio/package.py +++ b/var/spack/repos/builtin/packages/cfitsio/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index 381eb493e5d..cc5d94dba18 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cgm/package.py b/var/spack/repos/builtin/packages/cgm/package.py index 80e47cbd27c..a1a7770b1e8 100644 --- a/var/spack/repos/builtin/packages/cgm/package.py +++ b/var/spack/repos/builtin/packages/cgm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cgns/package.py b/var/spack/repos/builtin/packages/cgns/package.py index e3a4f89ff68..eed884df39a 100644 --- a/var/spack/repos/builtin/packages/cgns/package.py +++ b/var/spack/repos/builtin/packages/cgns/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/charm/package.py b/var/spack/repos/builtin/packages/charm/package.py index fd869f4c60f..944b46889f4 100644 --- a/var/spack/repos/builtin/packages/charm/package.py +++ b/var/spack/repos/builtin/packages/charm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/check/package.py b/var/spack/repos/builtin/packages/check/package.py index 53b03d28cdf..a367ba2c5af 100644 --- a/var/spack/repos/builtin/packages/check/package.py +++ b/var/spack/repos/builtin/packages/check/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/chlorop/package.py b/var/spack/repos/builtin/packages/chlorop/package.py index bd5ceda4f7e..be2f9c050de 100644 --- a/var/spack/repos/builtin/packages/chlorop/package.py +++ b/var/spack/repos/builtin/packages/chlorop/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/chombo/package.py b/var/spack/repos/builtin/packages/chombo/package.py index 3b3cb1e6240..345203883da 100644 --- a/var/spack/repos/builtin/packages/chombo/package.py +++ b/var/spack/repos/builtin/packages/chombo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cityhash/package.py b/var/spack/repos/builtin/packages/cityhash/package.py index 4564d495318..ef3001c8fc3 100644 --- a/var/spack/repos/builtin/packages/cityhash/package.py +++ b/var/spack/repos/builtin/packages/cityhash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/clamr/package.py b/var/spack/repos/builtin/packages/clamr/package.py index d1eee12d1c0..65a3f3fe01b 100644 --- a/var/spack/repos/builtin/packages/clamr/package.py +++ b/var/spack/repos/builtin/packages/clamr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cleaveland4/package.py b/var/spack/repos/builtin/packages/cleaveland4/package.py index 505f800ac76..0956ee2b489 100644 --- a/var/spack/repos/builtin/packages/cleaveland4/package.py +++ b/var/spack/repos/builtin/packages/cleaveland4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cleverleaf/package.py b/var/spack/repos/builtin/packages/cleverleaf/package.py index 62907533ace..59dd6b5ec32 100644 --- a/var/spack/repos/builtin/packages/cleverleaf/package.py +++ b/var/spack/repos/builtin/packages/cleverleaf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py index 2f4f5b1579c..54c2f2613f0 100644 --- a/var/spack/repos/builtin/packages/clhep/package.py +++ b/var/spack/repos/builtin/packages/clhep/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cloog/package.py b/var/spack/repos/builtin/packages/cloog/package.py index 601806d204d..14e75dfc99c 100644 --- a/var/spack/repos/builtin/packages/cloog/package.py +++ b/var/spack/repos/builtin/packages/cloog/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cloverleaf/package.py b/var/spack/repos/builtin/packages/cloverleaf/package.py index bc54ef61eae..5f755f32060 100644 --- a/var/spack/repos/builtin/packages/cloverleaf/package.py +++ b/var/spack/repos/builtin/packages/cloverleaf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cloverleaf3d/package.py b/var/spack/repos/builtin/packages/cloverleaf3d/package.py index 5616912255b..0aae9cfdbd7 100644 --- a/var/spack/repos/builtin/packages/cloverleaf3d/package.py +++ b/var/spack/repos/builtin/packages/cloverleaf3d/package.py @@ -1,5 +1,5 @@ ############################################################################# -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/clustalo/package.py b/var/spack/repos/builtin/packages/clustalo/package.py index d46b7d467c0..a57b6aa6fe7 100644 --- a/var/spack/repos/builtin/packages/clustalo/package.py +++ b/var/spack/repos/builtin/packages/clustalo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/clustalw/package.py b/var/spack/repos/builtin/packages/clustalw/package.py index 959a11963b6..10592a4bfcd 100644 --- a/var/spack/repos/builtin/packages/clustalw/package.py +++ b/var/spack/repos/builtin/packages/clustalw/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 079d214c4a0..9ce4887343b 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cmocka/package.py b/var/spack/repos/builtin/packages/cmocka/package.py index 944295a036c..de16a56bc7a 100644 --- a/var/spack/repos/builtin/packages/cmocka/package.py +++ b/var/spack/repos/builtin/packages/cmocka/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cmor/package.py b/var/spack/repos/builtin/packages/cmor/package.py index 8c858756726..7be30e614e2 100644 --- a/var/spack/repos/builtin/packages/cmor/package.py +++ b/var/spack/repos/builtin/packages/cmor/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cnmem/package.py b/var/spack/repos/builtin/packages/cnmem/package.py index fc4df89e091..31adffaa16f 100644 --- a/var/spack/repos/builtin/packages/cnmem/package.py +++ b/var/spack/repos/builtin/packages/cnmem/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cnpy/package.py b/var/spack/repos/builtin/packages/cnpy/package.py index b62df10c2e6..14c21809af0 100644 --- a/var/spack/repos/builtin/packages/cnpy/package.py +++ b/var/spack/repos/builtin/packages/cnpy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cns-nospec/package.py b/var/spack/repos/builtin/packages/cns-nospec/package.py index 30b760ff806..e3cd2e1c9c5 100644 --- a/var/spack/repos/builtin/packages/cns-nospec/package.py +++ b/var/spack/repos/builtin/packages/cns-nospec/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cntk/package.py b/var/spack/repos/builtin/packages/cntk/package.py index dfc515730b8..c79c0df8fbb 100644 --- a/var/spack/repos/builtin/packages/cntk/package.py +++ b/var/spack/repos/builtin/packages/cntk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cntk1bitsgd/package.py b/var/spack/repos/builtin/packages/cntk1bitsgd/package.py index e6faddf276b..3db291a04af 100644 --- a/var/spack/repos/builtin/packages/cntk1bitsgd/package.py +++ b/var/spack/repos/builtin/packages/cntk1bitsgd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/codar-cheetah/package.py b/var/spack/repos/builtin/packages/codar-cheetah/package.py index b70c929ca8e..f767cd7bc7c 100644 --- a/var/spack/repos/builtin/packages/codar-cheetah/package.py +++ b/var/spack/repos/builtin/packages/codar-cheetah/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cohmm/package.py b/var/spack/repos/builtin/packages/cohmm/package.py index 2e033c45947..803d48a68db 100644 --- a/var/spack/repos/builtin/packages/cohmm/package.py +++ b/var/spack/repos/builtin/packages/cohmm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/coinhsl/package.py b/var/spack/repos/builtin/packages/coinhsl/package.py index 4af87380b6f..903223f1538 100644 --- a/var/spack/repos/builtin/packages/coinhsl/package.py +++ b/var/spack/repos/builtin/packages/coinhsl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/comd/package.py b/var/spack/repos/builtin/packages/comd/package.py index 4a4c1133c62..f8fd8da6345 100644 --- a/var/spack/repos/builtin/packages/comd/package.py +++ b/var/spack/repos/builtin/packages/comd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/compiz/package.py b/var/spack/repos/builtin/packages/compiz/package.py index 19ceb8f65a4..37b21c3b587 100644 --- a/var/spack/repos/builtin/packages/compiz/package.py +++ b/var/spack/repos/builtin/packages/compiz/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/compositeproto/package.py b/var/spack/repos/builtin/packages/compositeproto/package.py index 8ba249536cf..b6105720967 100644 --- a/var/spack/repos/builtin/packages/compositeproto/package.py +++ b/var/spack/repos/builtin/packages/compositeproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/conduit/package.py b/var/spack/repos/builtin/packages/conduit/package.py index f59d1835b52..8cf481398f3 100644 --- a/var/spack/repos/builtin/packages/conduit/package.py +++ b/var/spack/repos/builtin/packages/conduit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/constype/package.py b/var/spack/repos/builtin/packages/constype/package.py index 4efcb5bcd0a..3be301d1661 100644 --- a/var/spack/repos/builtin/packages/constype/package.py +++ b/var/spack/repos/builtin/packages/constype/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/converge/package.py b/var/spack/repos/builtin/packages/converge/package.py index 96b6c24a0a5..6d5461fe6b3 100644 --- a/var/spack/repos/builtin/packages/converge/package.py +++ b/var/spack/repos/builtin/packages/converge/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/coreutils/package.py b/var/spack/repos/builtin/packages/coreutils/package.py index beea64a5ee6..37586110011 100644 --- a/var/spack/repos/builtin/packages/coreutils/package.py +++ b/var/spack/repos/builtin/packages/coreutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/corset/package.py b/var/spack/repos/builtin/packages/corset/package.py index b09a062b350..b377516444f 100644 --- a/var/spack/repos/builtin/packages/corset/package.py +++ b/var/spack/repos/builtin/packages/corset/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cosmomc/package.py b/var/spack/repos/builtin/packages/cosmomc/package.py index acbaa82202f..97f0898376a 100644 --- a/var/spack/repos/builtin/packages/cosmomc/package.py +++ b/var/spack/repos/builtin/packages/cosmomc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cosp2/package.py b/var/spack/repos/builtin/packages/cosp2/package.py index 3ed89d5a19a..4161658a235 100644 --- a/var/spack/repos/builtin/packages/cosp2/package.py +++ b/var/spack/repos/builtin/packages/cosp2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index ca4c783142b..0f06fb450c4 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cppad/package.py b/var/spack/repos/builtin/packages/cppad/package.py index 11e0dda2d29..6ab7a0b1ed5 100644 --- a/var/spack/repos/builtin/packages/cppad/package.py +++ b/var/spack/repos/builtin/packages/cppad/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cppcheck/package.py b/var/spack/repos/builtin/packages/cppcheck/package.py index cbdfc0ef0d7..adc092db7b5 100644 --- a/var/spack/repos/builtin/packages/cppcheck/package.py +++ b/var/spack/repos/builtin/packages/cppcheck/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cpprestsdk/package.py b/var/spack/repos/builtin/packages/cpprestsdk/package.py index b5d96ff4802..3192aa7c7a4 100644 --- a/var/spack/repos/builtin/packages/cpprestsdk/package.py +++ b/var/spack/repos/builtin/packages/cpprestsdk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cppunit/package.py b/var/spack/repos/builtin/packages/cppunit/package.py index 283175e0bd3..5cd471d120c 100644 --- a/var/spack/repos/builtin/packages/cppunit/package.py +++ b/var/spack/repos/builtin/packages/cppunit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cram/package.py b/var/spack/repos/builtin/packages/cram/package.py index 25427292cb2..515bdae0ffa 100644 --- a/var/spack/repos/builtin/packages/cram/package.py +++ b/var/spack/repos/builtin/packages/cram/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cryptopp/package.py b/var/spack/repos/builtin/packages/cryptopp/package.py index 7ba7a87a0dc..f511712903e 100644 --- a/var/spack/repos/builtin/packages/cryptopp/package.py +++ b/var/spack/repos/builtin/packages/cryptopp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cscope/package.py b/var/spack/repos/builtin/packages/cscope/package.py index bbd93976c6c..9cf98da97e9 100644 --- a/var/spack/repos/builtin/packages/cscope/package.py +++ b/var/spack/repos/builtin/packages/cscope/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/csdp/package.py b/var/spack/repos/builtin/packages/csdp/package.py index e459df00541..9d8ecdf55c3 100644 --- a/var/spack/repos/builtin/packages/csdp/package.py +++ b/var/spack/repos/builtin/packages/csdp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cub/package.py b/var/spack/repos/builtin/packages/cub/package.py index 7460bc799b3..428916daa9e 100644 --- a/var/spack/repos/builtin/packages/cub/package.py +++ b/var/spack/repos/builtin/packages/cub/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cube/package.py b/var/spack/repos/builtin/packages/cube/package.py index 841f737e41f..d83b225f4f5 100644 --- a/var/spack/repos/builtin/packages/cube/package.py +++ b/var/spack/repos/builtin/packages/cube/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cuda-memtest/package.py b/var/spack/repos/builtin/packages/cuda-memtest/package.py index 16d68d1a19d..fbcd48ffc22 100644 --- a/var/spack/repos/builtin/packages/cuda-memtest/package.py +++ b/var/spack/repos/builtin/packages/cuda-memtest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index fd59bbe485b..a034aabf3f8 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cudnn/package.py b/var/spack/repos/builtin/packages/cudnn/package.py index dcb26af73d0..f0614afc5be 100644 --- a/var/spack/repos/builtin/packages/cudnn/package.py +++ b/var/spack/repos/builtin/packages/cudnn/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cufflinks/package.py b/var/spack/repos/builtin/packages/cufflinks/package.py index c0d331439b1..eb98dfdd5e7 100644 --- a/var/spack/repos/builtin/packages/cufflinks/package.py +++ b/var/spack/repos/builtin/packages/cufflinks/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cups/package.py b/var/spack/repos/builtin/packages/cups/package.py index 311e779b8c9..0984965a754 100644 --- a/var/spack/repos/builtin/packages/cups/package.py +++ b/var/spack/repos/builtin/packages/cups/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 56cc27de643..ec5df4bc5a0 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/cvs/package.py b/var/spack/repos/builtin/packages/cvs/package.py index e0a5cfdd88f..d34e82bfb55 100644 --- a/var/spack/repos/builtin/packages/cvs/package.py +++ b/var/spack/repos/builtin/packages/cvs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/czmq/package.py b/var/spack/repos/builtin/packages/czmq/package.py index dba2871c4df..f2c309604e2 100644 --- a/var/spack/repos/builtin/packages/czmq/package.py +++ b/var/spack/repos/builtin/packages/czmq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dakota/package.py b/var/spack/repos/builtin/packages/dakota/package.py index ebc303a193e..2ac22b47389 100644 --- a/var/spack/repos/builtin/packages/dakota/package.py +++ b/var/spack/repos/builtin/packages/dakota/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/daligner/package.py b/var/spack/repos/builtin/packages/daligner/package.py index e6be60264c1..88658f4b360 100644 --- a/var/spack/repos/builtin/packages/daligner/package.py +++ b/var/spack/repos/builtin/packages/daligner/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/damageproto/package.py b/var/spack/repos/builtin/packages/damageproto/package.py index 8092a33ba5e..ca27afe41e8 100644 --- a/var/spack/repos/builtin/packages/damageproto/package.py +++ b/var/spack/repos/builtin/packages/damageproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/damselfly/package.py b/var/spack/repos/builtin/packages/damselfly/package.py index 05cbee4a4e2..39494e8c34f 100644 --- a/var/spack/repos/builtin/packages/damselfly/package.py +++ b/var/spack/repos/builtin/packages/damselfly/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/darshan-runtime/package.py b/var/spack/repos/builtin/packages/darshan-runtime/package.py index e18ad1de98f..b67e5b568cb 100644 --- a/var/spack/repos/builtin/packages/darshan-runtime/package.py +++ b/var/spack/repos/builtin/packages/darshan-runtime/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/darshan-util/package.py b/var/spack/repos/builtin/packages/darshan-util/package.py index 968ad669f0e..0b48b064922 100644 --- a/var/spack/repos/builtin/packages/darshan-util/package.py +++ b/var/spack/repos/builtin/packages/darshan-util/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dash/package.py b/var/spack/repos/builtin/packages/dash/package.py index 3d9b6c823d6..c359c47aca6 100644 --- a/var/spack/repos/builtin/packages/dash/package.py +++ b/var/spack/repos/builtin/packages/dash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/datamash/package.py b/var/spack/repos/builtin/packages/datamash/package.py index 422920ec862..05669c7c3a0 100644 --- a/var/spack/repos/builtin/packages/datamash/package.py +++ b/var/spack/repos/builtin/packages/datamash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dataspaces/package.py b/var/spack/repos/builtin/packages/dataspaces/package.py index 860866f81ea..4f3fa0c54d4 100644 --- a/var/spack/repos/builtin/packages/dataspaces/package.py +++ b/var/spack/repos/builtin/packages/dataspaces/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # diff --git a/var/spack/repos/builtin/packages/dbus/package.py b/var/spack/repos/builtin/packages/dbus/package.py index 44f68683187..fbfa7978b9f 100644 --- a/var/spack/repos/builtin/packages/dbus/package.py +++ b/var/spack/repos/builtin/packages/dbus/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index c4e999afe9a..2441796bf5f 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dejagnu/package.py b/var/spack/repos/builtin/packages/dejagnu/package.py index 73b97aaa525..331471fb73d 100644 --- a/var/spack/repos/builtin/packages/dejagnu/package.py +++ b/var/spack/repos/builtin/packages/dejagnu/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dia/package.py b/var/spack/repos/builtin/packages/dia/package.py index ec1583bd260..2e28346e141 100644 --- a/var/spack/repos/builtin/packages/dia/package.py +++ b/var/spack/repos/builtin/packages/dia/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dialign-tx/package.py b/var/spack/repos/builtin/packages/dialign-tx/package.py index 29a0c800daa..76abe681d91 100644 --- a/var/spack/repos/builtin/packages/dialign-tx/package.py +++ b/var/spack/repos/builtin/packages/dialign-tx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/direnv/package.py b/var/spack/repos/builtin/packages/direnv/package.py index e1fbd861dc8..289c7669e87 100644 --- a/var/spack/repos/builtin/packages/direnv/package.py +++ b/var/spack/repos/builtin/packages/direnv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/discovar/package.py b/var/spack/repos/builtin/packages/discovar/package.py index fcce9263ccd..5080b480085 100644 --- a/var/spack/repos/builtin/packages/discovar/package.py +++ b/var/spack/repos/builtin/packages/discovar/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dmxproto/package.py b/var/spack/repos/builtin/packages/dmxproto/package.py index 2483ccac95f..2d880b4ab06 100644 --- a/var/spack/repos/builtin/packages/dmxproto/package.py +++ b/var/spack/repos/builtin/packages/dmxproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/docbook-xml/package.py b/var/spack/repos/builtin/packages/docbook-xml/package.py index 65dd37ceaeb..a3d4b0b1b0f 100644 --- a/var/spack/repos/builtin/packages/docbook-xml/package.py +++ b/var/spack/repos/builtin/packages/docbook-xml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/docbook-xsl/package.py b/var/spack/repos/builtin/packages/docbook-xsl/package.py index 3ff1aebab04..b0d5df5268b 100644 --- a/var/spack/repos/builtin/packages/docbook-xsl/package.py +++ b/var/spack/repos/builtin/packages/docbook-xsl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dos2unix/package.py b/var/spack/repos/builtin/packages/dos2unix/package.py index a76cff21b23..8e90e818ded 100644 --- a/var/spack/repos/builtin/packages/dos2unix/package.py +++ b/var/spack/repos/builtin/packages/dos2unix/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/double-conversion/package.py b/var/spack/repos/builtin/packages/double-conversion/package.py index be4dccdff69..043ac11dc65 100644 --- a/var/spack/repos/builtin/packages/double-conversion/package.py +++ b/var/spack/repos/builtin/packages/double-conversion/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/doxygen/package.py b/var/spack/repos/builtin/packages/doxygen/package.py index 7817c2a8d89..bf67bca1ca3 100644 --- a/var/spack/repos/builtin/packages/doxygen/package.py +++ b/var/spack/repos/builtin/packages/doxygen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dri2proto/package.py b/var/spack/repos/builtin/packages/dri2proto/package.py index 2ccbbd209fb..10de15eae22 100644 --- a/var/spack/repos/builtin/packages/dri2proto/package.py +++ b/var/spack/repos/builtin/packages/dri2proto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dri3proto/package.py b/var/spack/repos/builtin/packages/dri3proto/package.py index 60a5d5de6c8..353e9ff607a 100644 --- a/var/spack/repos/builtin/packages/dri3proto/package.py +++ b/var/spack/repos/builtin/packages/dri3proto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dtcmp/package.py b/var/spack/repos/builtin/packages/dtcmp/package.py index b8aaa07b65c..84cdd4d6118 100644 --- a/var/spack/repos/builtin/packages/dtcmp/package.py +++ b/var/spack/repos/builtin/packages/dtcmp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index fa6a31a7c0b..bdb519ce289 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ea-utils/package.py b/var/spack/repos/builtin/packages/ea-utils/package.py index 296b05eaf2f..0d40df3ed70 100644 --- a/var/spack/repos/builtin/packages/ea-utils/package.py +++ b/var/spack/repos/builtin/packages/ea-utils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ebms/package.py b/var/spack/repos/builtin/packages/ebms/package.py index db3970814f4..a6afe334a47 100644 --- a/var/spack/repos/builtin/packages/ebms/package.py +++ b/var/spack/repos/builtin/packages/ebms/package.py @@ -1,5 +1,5 @@ ############################################################################# -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/eccodes/package.py b/var/spack/repos/builtin/packages/eccodes/package.py index 40539e19c92..157bbb92d76 100644 --- a/var/spack/repos/builtin/packages/eccodes/package.py +++ b/var/spack/repos/builtin/packages/eccodes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/editres/package.py b/var/spack/repos/builtin/packages/editres/package.py index 2cbb4053e66..e497f4aa92a 100644 --- a/var/spack/repos/builtin/packages/editres/package.py +++ b/var/spack/repos/builtin/packages/editres/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py index 569af17c61d..62ac1981b2f 100644 --- a/var/spack/repos/builtin/packages/eigen/package.py +++ b/var/spack/repos/builtin/packages/eigen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index 657f185c7fc..c356c9f717d 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index c7e614cad56..9291a1b48d2 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/elk/package.py b/var/spack/repos/builtin/packages/elk/package.py index 63893fad697..59c29298db5 100644 --- a/var/spack/repos/builtin/packages/elk/package.py +++ b/var/spack/repos/builtin/packages/elk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py index 61e957c0c96..35a77fc8345 100644 --- a/var/spack/repos/builtin/packages/elpa/package.py +++ b/var/spack/repos/builtin/packages/elpa/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py index ff941455788..f8f07e91855 100644 --- a/var/spack/repos/builtin/packages/emacs/package.py +++ b/var/spack/repos/builtin/packages/emacs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/emboss/package.py b/var/spack/repos/builtin/packages/emboss/package.py index d21f86a7b5d..7a960771382 100644 --- a/var/spack/repos/builtin/packages/emboss/package.py +++ b/var/spack/repos/builtin/packages/emboss/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/encodings/package.py b/var/spack/repos/builtin/packages/encodings/package.py index de6e8913b82..0daf7f36a5d 100644 --- a/var/spack/repos/builtin/packages/encodings/package.py +++ b/var/spack/repos/builtin/packages/encodings/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/environment-modules/package.py b/var/spack/repos/builtin/packages/environment-modules/package.py index 293816734fc..27744026056 100644 --- a/var/spack/repos/builtin/packages/environment-modules/package.py +++ b/var/spack/repos/builtin/packages/environment-modules/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/es/package.py b/var/spack/repos/builtin/packages/es/package.py index 3db13d7f7a3..55ed9179ba3 100644 --- a/var/spack/repos/builtin/packages/es/package.py +++ b/var/spack/repos/builtin/packages/es/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index 0866dacdb6f..050e6380a5f 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/espresso/package.py b/var/spack/repos/builtin/packages/espresso/package.py index 26cbf8fd882..a39fd859c13 100644 --- a/var/spack/repos/builtin/packages/espresso/package.py +++ b/var/spack/repos/builtin/packages/espresso/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/espressopp/package.py b/var/spack/repos/builtin/packages/espressopp/package.py index f1752b3b5eb..e8ae1f61213 100644 --- a/var/spack/repos/builtin/packages/espressopp/package.py +++ b/var/spack/repos/builtin/packages/espressopp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/etsf-io/package.py b/var/spack/repos/builtin/packages/etsf-io/package.py index 89ba87c81e4..6f8e405cc73 100644 --- a/var/spack/repos/builtin/packages/etsf-io/package.py +++ b/var/spack/repos/builtin/packages/etsf-io/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/everytrace-example/package.py b/var/spack/repos/builtin/packages/everytrace-example/package.py index 08d3b2fa67b..a4927053466 100644 --- a/var/spack/repos/builtin/packages/everytrace-example/package.py +++ b/var/spack/repos/builtin/packages/everytrace-example/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/everytrace/package.py b/var/spack/repos/builtin/packages/everytrace/package.py index 413bf2a9444..c23a9a9ef56 100644 --- a/var/spack/repos/builtin/packages/everytrace/package.py +++ b/var/spack/repos/builtin/packages/everytrace/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/evieext/package.py b/var/spack/repos/builtin/packages/evieext/package.py index 30ae66c33a2..a1cfdc45184 100644 --- a/var/spack/repos/builtin/packages/evieext/package.py +++ b/var/spack/repos/builtin/packages/evieext/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/exabayes/package.py b/var/spack/repos/builtin/packages/exabayes/package.py index 85148474a22..b44e7bfe5c3 100644 --- a/var/spack/repos/builtin/packages/exabayes/package.py +++ b/var/spack/repos/builtin/packages/exabayes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/exmcutils/package.py b/var/spack/repos/builtin/packages/exmcutils/package.py index 85d30c48c23..cbf56e8f6ec 100644 --- a/var/spack/repos/builtin/packages/exmcutils/package.py +++ b/var/spack/repos/builtin/packages/exmcutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/exodusii/package.py b/var/spack/repos/builtin/packages/exodusii/package.py index 84f2b498434..5078b63cec0 100644 --- a/var/spack/repos/builtin/packages/exodusii/package.py +++ b/var/spack/repos/builtin/packages/exodusii/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/exonerate/package.py b/var/spack/repos/builtin/packages/exonerate/package.py index 3821617a700..ef960299167 100644 --- a/var/spack/repos/builtin/packages/exonerate/package.py +++ b/var/spack/repos/builtin/packages/exonerate/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index 68e8ed4c08a..4d4ec3d80fb 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/expect/package.py b/var/spack/repos/builtin/packages/expect/package.py index fa89a64c9c4..c777ce7eebc 100644 --- a/var/spack/repos/builtin/packages/expect/package.py +++ b/var/spack/repos/builtin/packages/expect/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py index b68276bae46..8a581aa56d8 100644 --- a/var/spack/repos/builtin/packages/extrae/package.py +++ b/var/spack/repos/builtin/packages/extrae/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/exuberant-ctags/package.py b/var/spack/repos/builtin/packages/exuberant-ctags/package.py index 80868508090..2cb606568b0 100644 --- a/var/spack/repos/builtin/packages/exuberant-ctags/package.py +++ b/var/spack/repos/builtin/packages/exuberant-ctags/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/falcon/package.py b/var/spack/repos/builtin/packages/falcon/package.py index 7532e6e8b44..5c327640592 100644 --- a/var/spack/repos/builtin/packages/falcon/package.py +++ b/var/spack/repos/builtin/packages/falcon/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/farmhash/package.py b/var/spack/repos/builtin/packages/farmhash/package.py index 90b0cf256f4..517b73398d9 100644 --- a/var/spack/repos/builtin/packages/farmhash/package.py +++ b/var/spack/repos/builtin/packages/farmhash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fastjar/package.py b/var/spack/repos/builtin/packages/fastjar/package.py index 86ad4b2d683..436f380e2d8 100644 --- a/var/spack/repos/builtin/packages/fastjar/package.py +++ b/var/spack/repos/builtin/packages/fastjar/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fastmath/package.py b/var/spack/repos/builtin/packages/fastmath/package.py index 1a483057d3b..84c98fb2995 100644 --- a/var/spack/repos/builtin/packages/fastmath/package.py +++ b/var/spack/repos/builtin/packages/fastmath/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fastphase/package.py b/var/spack/repos/builtin/packages/fastphase/package.py index 69ba89022c7..1e6dd71b9c6 100644 --- a/var/spack/repos/builtin/packages/fastphase/package.py +++ b/var/spack/repos/builtin/packages/fastphase/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fastqc/package.py b/var/spack/repos/builtin/packages/fastqc/package.py index d4abd8acebf..bc232431b1f 100644 --- a/var/spack/repos/builtin/packages/fastqc/package.py +++ b/var/spack/repos/builtin/packages/fastqc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fastx-toolkit/package.py b/var/spack/repos/builtin/packages/fastx-toolkit/package.py index 4f40ffe64ea..d08f21b8750 100644 --- a/var/spack/repos/builtin/packages/fastx-toolkit/package.py +++ b/var/spack/repos/builtin/packages/fastx-toolkit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fenics/package.py b/var/spack/repos/builtin/packages/fenics/package.py index 5aa3b17d73b..aa4994ef3ee 100644 --- a/var/spack/repos/builtin/packages/fenics/package.py +++ b/var/spack/repos/builtin/packages/fenics/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py index 6a4c0902f68..74c9265a5fe 100644 --- a/var/spack/repos/builtin/packages/ferret/package.py +++ b/var/spack/repos/builtin/packages/ferret/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ffmpeg/package.py b/var/spack/repos/builtin/packages/ffmpeg/package.py index 9a6f6c18ad5..4e749151caa 100644 --- a/var/spack/repos/builtin/packages/ffmpeg/package.py +++ b/var/spack/repos/builtin/packages/ffmpeg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 19e818028a8..defd1d710bd 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fimpute/package.py b/var/spack/repos/builtin/packages/fimpute/package.py index bc184199237..40542636015 100644 --- a/var/spack/repos/builtin/packages/fimpute/package.py +++ b/var/spack/repos/builtin/packages/fimpute/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/findutils/package.py b/var/spack/repos/builtin/packages/findutils/package.py index 74237bc6be5..4e802020d2a 100644 --- a/var/spack/repos/builtin/packages/findutils/package.py +++ b/var/spack/repos/builtin/packages/findutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fio/package.py b/var/spack/repos/builtin/packages/fio/package.py index 0b99ff9cd37..c5047f94a0d 100644 --- a/var/spack/repos/builtin/packages/fio/package.py +++ b/var/spack/repos/builtin/packages/fio/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fish/package.py b/var/spack/repos/builtin/packages/fish/package.py index 474b31d005d..4f52796ac08 100644 --- a/var/spack/repos/builtin/packages/fish/package.py +++ b/var/spack/repos/builtin/packages/fish/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fixesproto/package.py b/var/spack/repos/builtin/packages/fixesproto/package.py index b3fb0a872b8..496f356263f 100644 --- a/var/spack/repos/builtin/packages/fixesproto/package.py +++ b/var/spack/repos/builtin/packages/fixesproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/flac/package.py b/var/spack/repos/builtin/packages/flac/package.py index 54584224e34..456e359151f 100644 --- a/var/spack/repos/builtin/packages/flac/package.py +++ b/var/spack/repos/builtin/packages/flac/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/flann/package.py b/var/spack/repos/builtin/packages/flann/package.py index 6505a643d5f..ca79d3fe334 100644 --- a/var/spack/repos/builtin/packages/flann/package.py +++ b/var/spack/repos/builtin/packages/flann/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/flash/package.py b/var/spack/repos/builtin/packages/flash/package.py index 7f4cd8e27da..5428eb815b7 100644 --- a/var/spack/repos/builtin/packages/flash/package.py +++ b/var/spack/repos/builtin/packages/flash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py index 67185695863..2f033e96b12 100644 --- a/var/spack/repos/builtin/packages/flex/package.py +++ b/var/spack/repos/builtin/packages/flex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/flint/package.py b/var/spack/repos/builtin/packages/flint/package.py index 641b96ace4d..f9b6021b1e9 100644 --- a/var/spack/repos/builtin/packages/flint/package.py +++ b/var/spack/repos/builtin/packages/flint/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fltk/package.py b/var/spack/repos/builtin/packages/fltk/package.py index 95ec9780247..5fdf25d5a20 100644 --- a/var/spack/repos/builtin/packages/fltk/package.py +++ b/var/spack/repos/builtin/packages/fltk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/flux/package.py b/var/spack/repos/builtin/packages/flux/package.py index 4c80fb1dcca..39956fc10c1 100644 --- a/var/spack/repos/builtin/packages/flux/package.py +++ b/var/spack/repos/builtin/packages/flux/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fmt/package.py b/var/spack/repos/builtin/packages/fmt/package.py index eea62f2a6aa..2894c76b495 100644 --- a/var/spack/repos/builtin/packages/fmt/package.py +++ b/var/spack/repos/builtin/packages/fmt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/foam-extend/package.py b/var/spack/repos/builtin/packages/foam-extend/package.py index 9e4a6c4d0b4..550cdc1bffb 100644 --- a/var/spack/repos/builtin/packages/foam-extend/package.py +++ b/var/spack/repos/builtin/packages/foam-extend/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/folly/package.py b/var/spack/repos/builtin/packages/folly/package.py index 1be879ee80d..af524abe8f9 100644 --- a/var/spack/repos/builtin/packages/folly/package.py +++ b/var/spack/repos/builtin/packages/folly/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-adobe-100dpi/package.py b/var/spack/repos/builtin/packages/font-adobe-100dpi/package.py index c39b6d3ef21..378bcbb4e17 100644 --- a/var/spack/repos/builtin/packages/font-adobe-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-100dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-adobe-75dpi/package.py b/var/spack/repos/builtin/packages/font-adobe-75dpi/package.py index 9da16e57129..c0bc127934d 100644 --- a/var/spack/repos/builtin/packages/font-adobe-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-75dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-adobe-utopia-100dpi/package.py b/var/spack/repos/builtin/packages/font-adobe-utopia-100dpi/package.py index c2c4bb36469..dc23518fb03 100644 --- a/var/spack/repos/builtin/packages/font-adobe-utopia-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-utopia-100dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-adobe-utopia-75dpi/package.py b/var/spack/repos/builtin/packages/font-adobe-utopia-75dpi/package.py index 300d299d69c..00c99025c29 100644 --- a/var/spack/repos/builtin/packages/font-adobe-utopia-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-utopia-75dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-adobe-utopia-type1/package.py b/var/spack/repos/builtin/packages/font-adobe-utopia-type1/package.py index 2d5f4745ce1..37c7d054da7 100644 --- a/var/spack/repos/builtin/packages/font-adobe-utopia-type1/package.py +++ b/var/spack/repos/builtin/packages/font-adobe-utopia-type1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-alias/package.py b/var/spack/repos/builtin/packages/font-alias/package.py index 4a75c7b7319..190fee37e9f 100644 --- a/var/spack/repos/builtin/packages/font-alias/package.py +++ b/var/spack/repos/builtin/packages/font-alias/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-arabic-misc/package.py b/var/spack/repos/builtin/packages/font-arabic-misc/package.py index f34109c4915..155095e076f 100644 --- a/var/spack/repos/builtin/packages/font-arabic-misc/package.py +++ b/var/spack/repos/builtin/packages/font-arabic-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bh-100dpi/package.py b/var/spack/repos/builtin/packages/font-bh-100dpi/package.py index 23305a489be..55a021cbe3b 100644 --- a/var/spack/repos/builtin/packages/font-bh-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bh-100dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bh-75dpi/package.py b/var/spack/repos/builtin/packages/font-bh-75dpi/package.py index 18d2726de2f..80d94555fea 100644 --- a/var/spack/repos/builtin/packages/font-bh-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bh-75dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-100dpi/package.py b/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-100dpi/package.py index 5eb2fbb3784..229185db960 100644 --- a/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-100dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-75dpi/package.py b/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-75dpi/package.py index 4db1ec4978e..7ec896f9df6 100644 --- a/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bh-lucidatypewriter-75dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bh-ttf/package.py b/var/spack/repos/builtin/packages/font-bh-ttf/package.py index f571700b29b..038d8be740b 100644 --- a/var/spack/repos/builtin/packages/font-bh-ttf/package.py +++ b/var/spack/repos/builtin/packages/font-bh-ttf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bh-type1/package.py b/var/spack/repos/builtin/packages/font-bh-type1/package.py index 60d41103a3e..c8f00673fad 100644 --- a/var/spack/repos/builtin/packages/font-bh-type1/package.py +++ b/var/spack/repos/builtin/packages/font-bh-type1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bitstream-100dpi/package.py b/var/spack/repos/builtin/packages/font-bitstream-100dpi/package.py index 495c371d0d8..8bce44962ca 100644 --- a/var/spack/repos/builtin/packages/font-bitstream-100dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bitstream-100dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bitstream-75dpi/package.py b/var/spack/repos/builtin/packages/font-bitstream-75dpi/package.py index fd57c53d4fc..5c44f901edc 100644 --- a/var/spack/repos/builtin/packages/font-bitstream-75dpi/package.py +++ b/var/spack/repos/builtin/packages/font-bitstream-75dpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bitstream-speedo/package.py b/var/spack/repos/builtin/packages/font-bitstream-speedo/package.py index 040632a4c2d..210a61af8b7 100644 --- a/var/spack/repos/builtin/packages/font-bitstream-speedo/package.py +++ b/var/spack/repos/builtin/packages/font-bitstream-speedo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-bitstream-type1/package.py b/var/spack/repos/builtin/packages/font-bitstream-type1/package.py index c8d26b3e03d..067ecae7ce7 100644 --- a/var/spack/repos/builtin/packages/font-bitstream-type1/package.py +++ b/var/spack/repos/builtin/packages/font-bitstream-type1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-cronyx-cyrillic/package.py b/var/spack/repos/builtin/packages/font-cronyx-cyrillic/package.py index b1c65250b4e..78270ee0c30 100644 --- a/var/spack/repos/builtin/packages/font-cronyx-cyrillic/package.py +++ b/var/spack/repos/builtin/packages/font-cronyx-cyrillic/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-cursor-misc/package.py b/var/spack/repos/builtin/packages/font-cursor-misc/package.py index f96ec0f7134..b447d8681f0 100644 --- a/var/spack/repos/builtin/packages/font-cursor-misc/package.py +++ b/var/spack/repos/builtin/packages/font-cursor-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-daewoo-misc/package.py b/var/spack/repos/builtin/packages/font-daewoo-misc/package.py index 2b092259acd..ade01534fd3 100644 --- a/var/spack/repos/builtin/packages/font-daewoo-misc/package.py +++ b/var/spack/repos/builtin/packages/font-daewoo-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-dec-misc/package.py b/var/spack/repos/builtin/packages/font-dec-misc/package.py index 1537e6f5695..c69aaa1e842 100644 --- a/var/spack/repos/builtin/packages/font-dec-misc/package.py +++ b/var/spack/repos/builtin/packages/font-dec-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-ibm-type1/package.py b/var/spack/repos/builtin/packages/font-ibm-type1/package.py index 3b51051a4a7..7aa47dba81b 100644 --- a/var/spack/repos/builtin/packages/font-ibm-type1/package.py +++ b/var/spack/repos/builtin/packages/font-ibm-type1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-isas-misc/package.py b/var/spack/repos/builtin/packages/font-isas-misc/package.py index b12a01a14ab..6b7ba9bf021 100644 --- a/var/spack/repos/builtin/packages/font-isas-misc/package.py +++ b/var/spack/repos/builtin/packages/font-isas-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-jis-misc/package.py b/var/spack/repos/builtin/packages/font-jis-misc/package.py index 5d347231dba..7df4b90b82c 100644 --- a/var/spack/repos/builtin/packages/font-jis-misc/package.py +++ b/var/spack/repos/builtin/packages/font-jis-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-micro-misc/package.py b/var/spack/repos/builtin/packages/font-micro-misc/package.py index 206bf596a21..d1fb1551971 100644 --- a/var/spack/repos/builtin/packages/font-micro-misc/package.py +++ b/var/spack/repos/builtin/packages/font-micro-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-misc-cyrillic/package.py b/var/spack/repos/builtin/packages/font-misc-cyrillic/package.py index 6cef5977786..2b05b75a2c3 100644 --- a/var/spack/repos/builtin/packages/font-misc-cyrillic/package.py +++ b/var/spack/repos/builtin/packages/font-misc-cyrillic/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-misc-ethiopic/package.py b/var/spack/repos/builtin/packages/font-misc-ethiopic/package.py index 66bca90d9bf..f85c3ea2fc7 100644 --- a/var/spack/repos/builtin/packages/font-misc-ethiopic/package.py +++ b/var/spack/repos/builtin/packages/font-misc-ethiopic/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-misc-meltho/package.py b/var/spack/repos/builtin/packages/font-misc-meltho/package.py index 2c936787650..128651d66b3 100644 --- a/var/spack/repos/builtin/packages/font-misc-meltho/package.py +++ b/var/spack/repos/builtin/packages/font-misc-meltho/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-misc-misc/package.py b/var/spack/repos/builtin/packages/font-misc-misc/package.py index 79ce98c2c1b..6cee8c584e7 100644 --- a/var/spack/repos/builtin/packages/font-misc-misc/package.py +++ b/var/spack/repos/builtin/packages/font-misc-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-mutt-misc/package.py b/var/spack/repos/builtin/packages/font-mutt-misc/package.py index 39c3e256bdb..39752798347 100644 --- a/var/spack/repos/builtin/packages/font-mutt-misc/package.py +++ b/var/spack/repos/builtin/packages/font-mutt-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-schumacher-misc/package.py b/var/spack/repos/builtin/packages/font-schumacher-misc/package.py index d209c0d734f..c434177e187 100644 --- a/var/spack/repos/builtin/packages/font-schumacher-misc/package.py +++ b/var/spack/repos/builtin/packages/font-schumacher-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-screen-cyrillic/package.py b/var/spack/repos/builtin/packages/font-screen-cyrillic/package.py index 66db505a10c..67f4f2f22d8 100644 --- a/var/spack/repos/builtin/packages/font-screen-cyrillic/package.py +++ b/var/spack/repos/builtin/packages/font-screen-cyrillic/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-sony-misc/package.py b/var/spack/repos/builtin/packages/font-sony-misc/package.py index 792b7556d80..77e4a6cd929 100644 --- a/var/spack/repos/builtin/packages/font-sony-misc/package.py +++ b/var/spack/repos/builtin/packages/font-sony-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-sun-misc/package.py b/var/spack/repos/builtin/packages/font-sun-misc/package.py index 3fe3dfb511d..a8198841026 100644 --- a/var/spack/repos/builtin/packages/font-sun-misc/package.py +++ b/var/spack/repos/builtin/packages/font-sun-misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-util/package.py b/var/spack/repos/builtin/packages/font-util/package.py index 5aac7cd59ed..999c6fc453d 100644 --- a/var/spack/repos/builtin/packages/font-util/package.py +++ b/var/spack/repos/builtin/packages/font-util/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-winitzki-cyrillic/package.py b/var/spack/repos/builtin/packages/font-winitzki-cyrillic/package.py index 1ee6210641b..78ef156cbb8 100644 --- a/var/spack/repos/builtin/packages/font-winitzki-cyrillic/package.py +++ b/var/spack/repos/builtin/packages/font-winitzki-cyrillic/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/font-xfree86-type1/package.py b/var/spack/repos/builtin/packages/font-xfree86-type1/package.py index b20c1c4194d..27cb7fc799e 100644 --- a/var/spack/repos/builtin/packages/font-xfree86-type1/package.py +++ b/var/spack/repos/builtin/packages/font-xfree86-type1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fontcacheproto/package.py b/var/spack/repos/builtin/packages/fontcacheproto/package.py index d385ab353df..3809457f793 100644 --- a/var/spack/repos/builtin/packages/fontcacheproto/package.py +++ b/var/spack/repos/builtin/packages/fontcacheproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fontconfig/package.py b/var/spack/repos/builtin/packages/fontconfig/package.py index e7d1068496e..6aebf014fb4 100644 --- a/var/spack/repos/builtin/packages/fontconfig/package.py +++ b/var/spack/repos/builtin/packages/fontconfig/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fontsproto/package.py b/var/spack/repos/builtin/packages/fontsproto/package.py index e584a81ce9d..235567bd069 100644 --- a/var/spack/repos/builtin/packages/fontsproto/package.py +++ b/var/spack/repos/builtin/packages/fontsproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fonttosfnt/package.py b/var/spack/repos/builtin/packages/fonttosfnt/package.py index 37f2dfe923a..d1d0d234913 100644 --- a/var/spack/repos/builtin/packages/fonttosfnt/package.py +++ b/var/spack/repos/builtin/packages/fonttosfnt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/freebayes/package.py b/var/spack/repos/builtin/packages/freebayes/package.py index 9fb7fd11614..d67e50f05ce 100644 --- a/var/spack/repos/builtin/packages/freebayes/package.py +++ b/var/spack/repos/builtin/packages/freebayes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/freetype/package.py b/var/spack/repos/builtin/packages/freetype/package.py index 9d3211f83b6..f317e3efad1 100644 --- a/var/spack/repos/builtin/packages/freetype/package.py +++ b/var/spack/repos/builtin/packages/freetype/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fseq/package.py b/var/spack/repos/builtin/packages/fseq/package.py index 71f450ec420..8fd03449289 100644 --- a/var/spack/repos/builtin/packages/fseq/package.py +++ b/var/spack/repos/builtin/packages/fseq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fslsfonts/package.py b/var/spack/repos/builtin/packages/fslsfonts/package.py index febba4d6f86..c29b6558c57 100644 --- a/var/spack/repos/builtin/packages/fslsfonts/package.py +++ b/var/spack/repos/builtin/packages/fslsfonts/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/fstobdf/package.py b/var/spack/repos/builtin/packages/fstobdf/package.py index 5fd3ba837f2..42fc81b9509 100644 --- a/var/spack/repos/builtin/packages/fstobdf/package.py +++ b/var/spack/repos/builtin/packages/fstobdf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/funhpc/package.py b/var/spack/repos/builtin/packages/funhpc/package.py index 3526118c9ec..45170003bb2 100644 --- a/var/spack/repos/builtin/packages/funhpc/package.py +++ b/var/spack/repos/builtin/packages/funhpc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gapcloser/package.py b/var/spack/repos/builtin/packages/gapcloser/package.py index 45052347569..a8286e38387 100644 --- a/var/spack/repos/builtin/packages/gapcloser/package.py +++ b/var/spack/repos/builtin/packages/gapcloser/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gapfiller/package.py b/var/spack/repos/builtin/packages/gapfiller/package.py index 766c51d42d4..744cef8db34 100644 --- a/var/spack/repos/builtin/packages/gapfiller/package.py +++ b/var/spack/repos/builtin/packages/gapfiller/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gasnet/package.py b/var/spack/repos/builtin/packages/gasnet/package.py index a27cf25dd6e..da4aa514df6 100644 --- a/var/spack/repos/builtin/packages/gasnet/package.py +++ b/var/spack/repos/builtin/packages/gasnet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gaussian/package.py b/var/spack/repos/builtin/packages/gaussian/package.py index d2fcee438fc..580d365c23d 100644 --- a/var/spack/repos/builtin/packages/gaussian/package.py +++ b/var/spack/repos/builtin/packages/gaussian/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gawk/package.py b/var/spack/repos/builtin/packages/gawk/package.py index bb331527e60..0a428b20ed2 100644 --- a/var/spack/repos/builtin/packages/gawk/package.py +++ b/var/spack/repos/builtin/packages/gawk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gblocks/package.py b/var/spack/repos/builtin/packages/gblocks/package.py index a03fc815094..49d5eddc589 100644 --- a/var/spack/repos/builtin/packages/gblocks/package.py +++ b/var/spack/repos/builtin/packages/gblocks/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index aef1158971a..d690e636832 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gccmakedep/package.py b/var/spack/repos/builtin/packages/gccmakedep/package.py index a3af53be2d1..990f55400be 100644 --- a/var/spack/repos/builtin/packages/gccmakedep/package.py +++ b/var/spack/repos/builtin/packages/gccmakedep/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gconf/package.py b/var/spack/repos/builtin/packages/gconf/package.py index 5bd0c9c37bf..a0af4d9c8b7 100644 --- a/var/spack/repos/builtin/packages/gconf/package.py +++ b/var/spack/repos/builtin/packages/gconf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index 9d0c7cf4e0b..d578bd674cb 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index 36c1af35fee..04a69012202 100644 --- a/var/spack/repos/builtin/packages/gdb/package.py +++ b/var/spack/repos/builtin/packages/gdb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gdbm/package.py b/var/spack/repos/builtin/packages/gdbm/package.py index fea4aa4b151..643750858d7 100644 --- a/var/spack/repos/builtin/packages/gdbm/package.py +++ b/var/spack/repos/builtin/packages/gdbm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index b3f881cc856..f9bd242cde8 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index 95d3eb9d551..62c0d7f6d2a 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gemmlowp/package.py b/var/spack/repos/builtin/packages/gemmlowp/package.py index 98bb69b1ba2..1f705a47b8f 100644 --- a/var/spack/repos/builtin/packages/gemmlowp/package.py +++ b/var/spack/repos/builtin/packages/gemmlowp/package.py @@ -1,5 +1,5 @@ ############################################################################# -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/genemark-et/package.py b/var/spack/repos/builtin/packages/genemark-et/package.py index 352f728290c..166e56c3025 100644 --- a/var/spack/repos/builtin/packages/genemark-et/package.py +++ b/var/spack/repos/builtin/packages/genemark-et/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/genometools/package.py b/var/spack/repos/builtin/packages/genometools/package.py index afb45bdd84d..ebbbfb9f769 100644 --- a/var/spack/repos/builtin/packages/genometools/package.py +++ b/var/spack/repos/builtin/packages/genometools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/geos/package.py b/var/spack/repos/builtin/packages/geos/package.py index bbd712fa2d2..529862f63ce 100644 --- a/var/spack/repos/builtin/packages/geos/package.py +++ b/var/spack/repos/builtin/packages/geos/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gettext/package.py b/var/spack/repos/builtin/packages/gettext/package.py index 7fff4219524..d8d5fdf7b52 100644 --- a/var/spack/repos/builtin/packages/gettext/package.py +++ b/var/spack/repos/builtin/packages/gettext/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gflags/package.py b/var/spack/repos/builtin/packages/gflags/package.py index b96ee7a7066..4bc7a5f3155 100644 --- a/var/spack/repos/builtin/packages/gflags/package.py +++ b/var/spack/repos/builtin/packages/gflags/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ghostscript-fonts/package.py b/var/spack/repos/builtin/packages/ghostscript-fonts/package.py index 69b1194322e..068aea2cb61 100644 --- a/var/spack/repos/builtin/packages/ghostscript-fonts/package.py +++ b/var/spack/repos/builtin/packages/ghostscript-fonts/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ghostscript/package.py b/var/spack/repos/builtin/packages/ghostscript/package.py index 8463dcea0ec..6e8c6d3801c 100644 --- a/var/spack/repos/builtin/packages/ghostscript/package.py +++ b/var/spack/repos/builtin/packages/ghostscript/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/giflib/package.py b/var/spack/repos/builtin/packages/giflib/package.py index 50077c93f66..436eed23884 100644 --- a/var/spack/repos/builtin/packages/giflib/package.py +++ b/var/spack/repos/builtin/packages/giflib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/git-lfs/package.py b/var/spack/repos/builtin/packages/git-lfs/package.py index 5711366ea0c..d202e3cfd04 100644 --- a/var/spack/repos/builtin/packages/git-lfs/package.py +++ b/var/spack/repos/builtin/packages/git-lfs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index 9dc9e460afb..31c6f01e77b 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gl2ps/package.py b/var/spack/repos/builtin/packages/gl2ps/package.py index eff64025527..e56e916d1de 100644 --- a/var/spack/repos/builtin/packages/gl2ps/package.py +++ b/var/spack/repos/builtin/packages/gl2ps/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/glew/package.py b/var/spack/repos/builtin/packages/glew/package.py index 68ca924de60..8e522ca4c63 100644 --- a/var/spack/repos/builtin/packages/glew/package.py +++ b/var/spack/repos/builtin/packages/glew/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py index b4b888a487a..8b882f13108 100644 --- a/var/spack/repos/builtin/packages/glib/package.py +++ b/var/spack/repos/builtin/packages/glib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/glm/package.py b/var/spack/repos/builtin/packages/glm/package.py index 507c9606e33..9c26589f930 100644 --- a/var/spack/repos/builtin/packages/glm/package.py +++ b/var/spack/repos/builtin/packages/glm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/global/package.py b/var/spack/repos/builtin/packages/global/package.py index a137dd7dd3f..09eb223de71 100644 --- a/var/spack/repos/builtin/packages/global/package.py +++ b/var/spack/repos/builtin/packages/global/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/globus-toolkit/package.py b/var/spack/repos/builtin/packages/globus-toolkit/package.py index 856223ee74c..e30b11fbcec 100644 --- a/var/spack/repos/builtin/packages/globus-toolkit/package.py +++ b/var/spack/repos/builtin/packages/globus-toolkit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/glog/package.py b/var/spack/repos/builtin/packages/glog/package.py index 551f36037af..d46271f9568 100644 --- a/var/spack/repos/builtin/packages/glog/package.py +++ b/var/spack/repos/builtin/packages/glog/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/glpk/package.py b/var/spack/repos/builtin/packages/glpk/package.py index 15941b42119..7e31fe6e83f 100644 --- a/var/spack/repos/builtin/packages/glpk/package.py +++ b/var/spack/repos/builtin/packages/glpk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/glproto/package.py b/var/spack/repos/builtin/packages/glproto/package.py index 7013baff38c..d7617af6731 100644 --- a/var/spack/repos/builtin/packages/glproto/package.py +++ b/var/spack/repos/builtin/packages/glproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gmake/package.py b/var/spack/repos/builtin/packages/gmake/package.py index 0c215a4e829..c8e7111fa55 100644 --- a/var/spack/repos/builtin/packages/gmake/package.py +++ b/var/spack/repos/builtin/packages/gmake/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gmap-gsnap/package.py b/var/spack/repos/builtin/packages/gmap-gsnap/package.py index e2c79848a01..e9ff419557c 100644 --- a/var/spack/repos/builtin/packages/gmap-gsnap/package.py +++ b/var/spack/repos/builtin/packages/gmap-gsnap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gmime/package.py b/var/spack/repos/builtin/packages/gmime/package.py index 1882fad2e78..196401a3414 100644 --- a/var/spack/repos/builtin/packages/gmime/package.py +++ b/var/spack/repos/builtin/packages/gmime/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gmp/package.py b/var/spack/repos/builtin/packages/gmp/package.py index b7a9fa74cff..a869fcbe0f6 100644 --- a/var/spack/repos/builtin/packages/gmp/package.py +++ b/var/spack/repos/builtin/packages/gmp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py index 977bf6c3d67..a36e11aa9fd 100644 --- a/var/spack/repos/builtin/packages/gmsh/package.py +++ b/var/spack/repos/builtin/packages/gmsh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gnat/package.py b/var/spack/repos/builtin/packages/gnat/package.py index e6fb814c087..b3b9f462133 100644 --- a/var/spack/repos/builtin/packages/gnat/package.py +++ b/var/spack/repos/builtin/packages/gnat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gnu-prolog/package.py b/var/spack/repos/builtin/packages/gnu-prolog/package.py index 4300d581d2f..e6ade171302 100644 --- a/var/spack/repos/builtin/packages/gnu-prolog/package.py +++ b/var/spack/repos/builtin/packages/gnu-prolog/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gnupg/package.py b/var/spack/repos/builtin/packages/gnupg/package.py index 51987e2dd82..31314b71359 100644 --- a/var/spack/repos/builtin/packages/gnupg/package.py +++ b/var/spack/repos/builtin/packages/gnupg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gnuplot/package.py b/var/spack/repos/builtin/packages/gnuplot/package.py index c5d8f315c5c..155316ce604 100644 --- a/var/spack/repos/builtin/packages/gnuplot/package.py +++ b/var/spack/repos/builtin/packages/gnuplot/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index 9dfb0713fd7..cb4ea80c9d3 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/go-bootstrap/package.py b/var/spack/repos/builtin/packages/go-bootstrap/package.py index 74cdbf348de..c759cb88b80 100644 --- a/var/spack/repos/builtin/packages/go-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/go-bootstrap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index 77f6470693b..f5c7657c008 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gobject-introspection/package.py b/var/spack/repos/builtin/packages/gobject-introspection/package.py index 26e5da3d568..14338989193 100644 --- a/var/spack/repos/builtin/packages/gobject-introspection/package.py +++ b/var/spack/repos/builtin/packages/gobject-introspection/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py index 517655fced3..48dfcabb2f7 100644 --- a/var/spack/repos/builtin/packages/googletest/package.py +++ b/var/spack/repos/builtin/packages/googletest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gource/package.py b/var/spack/repos/builtin/packages/gource/package.py index 5118169c7cc..497bb6f29f4 100644 --- a/var/spack/repos/builtin/packages/gource/package.py +++ b/var/spack/repos/builtin/packages/gource/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gperf/package.py b/var/spack/repos/builtin/packages/gperf/package.py index 7e19221e407..af3f5edd9c2 100644 --- a/var/spack/repos/builtin/packages/gperf/package.py +++ b/var/spack/repos/builtin/packages/gperf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gperftools/package.py b/var/spack/repos/builtin/packages/gperftools/package.py index 1c208595ad6..05c20fb5bfa 100644 --- a/var/spack/repos/builtin/packages/gperftools/package.py +++ b/var/spack/repos/builtin/packages/gperftools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/grackle/package.py b/var/spack/repos/builtin/packages/grackle/package.py index 02f6f176113..3cf4e849bba 100644 --- a/var/spack/repos/builtin/packages/grackle/package.py +++ b/var/spack/repos/builtin/packages/grackle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gradle/package.py b/var/spack/repos/builtin/packages/gradle/package.py index 1eef10463e4..86837fa3bf1 100644 --- a/var/spack/repos/builtin/packages/gradle/package.py +++ b/var/spack/repos/builtin/packages/gradle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/grandr/package.py b/var/spack/repos/builtin/packages/grandr/package.py index e8910b519e4..1035dd82ad1 100644 --- a/var/spack/repos/builtin/packages/grandr/package.py +++ b/var/spack/repos/builtin/packages/grandr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/graphlib/package.py b/var/spack/repos/builtin/packages/graphlib/package.py index 5d4582c365b..b99fc833793 100644 --- a/var/spack/repos/builtin/packages/graphlib/package.py +++ b/var/spack/repos/builtin/packages/graphlib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/graphmap/package.py b/var/spack/repos/builtin/packages/graphmap/package.py index 954fc7622a9..63d2ac74d7f 100644 --- a/var/spack/repos/builtin/packages/graphmap/package.py +++ b/var/spack/repos/builtin/packages/graphmap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py index 2f39c8ce1f9..8ac1b662787 100644 --- a/var/spack/repos/builtin/packages/graphviz/package.py +++ b/var/spack/repos/builtin/packages/graphviz/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/grib-api/package.py b/var/spack/repos/builtin/packages/grib-api/package.py index d3f971d7371..78ed6d36b25 100644 --- a/var/spack/repos/builtin/packages/grib-api/package.py +++ b/var/spack/repos/builtin/packages/grib-api/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/groff/package.py b/var/spack/repos/builtin/packages/groff/package.py index 1cef3040e08..a4aa4b868da 100644 --- a/var/spack/repos/builtin/packages/groff/package.py +++ b/var/spack/repos/builtin/packages/groff/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index ae17193139c..e6b3aff65fa 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gsl/package.py b/var/spack/repos/builtin/packages/gsl/package.py index 4c95612d6d9..17ec619a7c5 100644 --- a/var/spack/repos/builtin/packages/gsl/package.py +++ b/var/spack/repos/builtin/packages/gsl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gtkorvo-atl/package.py b/var/spack/repos/builtin/packages/gtkorvo-atl/package.py index 2dc96ca1f19..e6bc30191a7 100644 --- a/var/spack/repos/builtin/packages/gtkorvo-atl/package.py +++ b/var/spack/repos/builtin/packages/gtkorvo-atl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gtkorvo-cercs-env/package.py b/var/spack/repos/builtin/packages/gtkorvo-cercs-env/package.py index 1287c1f91db..80081a818c8 100644 --- a/var/spack/repos/builtin/packages/gtkorvo-cercs-env/package.py +++ b/var/spack/repos/builtin/packages/gtkorvo-cercs-env/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gtkorvo-dill/package.py b/var/spack/repos/builtin/packages/gtkorvo-dill/package.py index f32539e43e6..59c3974448a 100644 --- a/var/spack/repos/builtin/packages/gtkorvo-dill/package.py +++ b/var/spack/repos/builtin/packages/gtkorvo-dill/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gtkorvo-enet/package.py b/var/spack/repos/builtin/packages/gtkorvo-enet/package.py index 5c63a5ab232..88af085220a 100644 --- a/var/spack/repos/builtin/packages/gtkorvo-enet/package.py +++ b/var/spack/repos/builtin/packages/gtkorvo-enet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index 1b85bb0a4c3..84eb21d8657 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/gts/package.py b/var/spack/repos/builtin/packages/gts/package.py index adac0e1d058..31332270979 100644 --- a/var/spack/repos/builtin/packages/gts/package.py +++ b/var/spack/repos/builtin/packages/gts/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/guile/package.py b/var/spack/repos/builtin/packages/guile/package.py index ff3ca84b008..90f79a15012 100644 --- a/var/spack/repos/builtin/packages/guile/package.py +++ b/var/spack/repos/builtin/packages/guile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/h5hut/package.py b/var/spack/repos/builtin/packages/h5hut/package.py index 5b0a9fa5a2f..f04ebc23448 100644 --- a/var/spack/repos/builtin/packages/h5hut/package.py +++ b/var/spack/repos/builtin/packages/h5hut/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/h5utils/package.py b/var/spack/repos/builtin/packages/h5utils/package.py index 0ed9516f34f..4718f35dd0c 100644 --- a/var/spack/repos/builtin/packages/h5utils/package.py +++ b/var/spack/repos/builtin/packages/h5utils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/h5z-zfp/package.py b/var/spack/repos/builtin/packages/h5z-zfp/package.py index ddb03c64e0c..d5d2bfa4fcc 100644 --- a/var/spack/repos/builtin/packages/h5z-zfp/package.py +++ b/var/spack/repos/builtin/packages/h5z-zfp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hadoop/package.py b/var/spack/repos/builtin/packages/hadoop/package.py index 3aa632b9df0..702bac43d64 100644 --- a/var/spack/repos/builtin/packages/hadoop/package.py +++ b/var/spack/repos/builtin/packages/hadoop/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hapcut2/package.py b/var/spack/repos/builtin/packages/hapcut2/package.py index 1e91d1d5417..282214fdf17 100644 --- a/var/spack/repos/builtin/packages/hapcut2/package.py +++ b/var/spack/repos/builtin/packages/hapcut2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/haploview/package.py b/var/spack/repos/builtin/packages/haploview/package.py index 9ffe6898b5e..ab6874455c2 100644 --- a/var/spack/repos/builtin/packages/haploview/package.py +++ b/var/spack/repos/builtin/packages/haploview/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py index 5323607fb8e..5b1f2078494 100644 --- a/var/spack/repos/builtin/packages/harfbuzz/package.py +++ b/var/spack/repos/builtin/packages/harfbuzz/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/harminv/package.py b/var/spack/repos/builtin/packages/harminv/package.py index d96e31b3c37..82b762bbb0d 100644 --- a/var/spack/repos/builtin/packages/harminv/package.py +++ b/var/spack/repos/builtin/packages/harminv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hdf/package.py b/var/spack/repos/builtin/packages/hdf/package.py index 87309ed65e2..7919ac796a2 100644 --- a/var/spack/repos/builtin/packages/hdf/package.py +++ b/var/spack/repos/builtin/packages/hdf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py index f8b1c5e363f..a12fb14d6dd 100644 --- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py +++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index cf8f00d7974..4cc2ecbd65b 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/help2man/package.py b/var/spack/repos/builtin/packages/help2man/package.py index d4a8ba9fe4b..07d573a9c40 100644 --- a/var/spack/repos/builtin/packages/help2man/package.py +++ b/var/spack/repos/builtin/packages/help2man/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hepmc/package.py b/var/spack/repos/builtin/packages/hepmc/package.py index 711daa88f8d..f49de2e0f40 100644 --- a/var/spack/repos/builtin/packages/hepmc/package.py +++ b/var/spack/repos/builtin/packages/hepmc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/heppdt/package.py b/var/spack/repos/builtin/packages/heppdt/package.py index 4a534a8c8a6..c5a0ca8572e 100644 --- a/var/spack/repos/builtin/packages/heppdt/package.py +++ b/var/spack/repos/builtin/packages/heppdt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/highfive/package.py b/var/spack/repos/builtin/packages/highfive/package.py index 2a071d7958d..97b0741aa7a 100644 --- a/var/spack/repos/builtin/packages/highfive/package.py +++ b/var/spack/repos/builtin/packages/highfive/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/highwayhash/package.py b/var/spack/repos/builtin/packages/highwayhash/package.py index 031f526cdb9..b4a789f5f80 100644 --- a/var/spack/repos/builtin/packages/highwayhash/package.py +++ b/var/spack/repos/builtin/packages/highwayhash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hmmer/package.py b/var/spack/repos/builtin/packages/hmmer/package.py index 6f152d85d61..10a2183c1f5 100644 --- a/var/spack/repos/builtin/packages/hmmer/package.py +++ b/var/spack/repos/builtin/packages/hmmer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hoomd-blue/package.py b/var/spack/repos/builtin/packages/hoomd-blue/package.py index 9c1ad387b2b..fda068dc307 100644 --- a/var/spack/repos/builtin/packages/hoomd-blue/package.py +++ b/var/spack/repos/builtin/packages/hoomd-blue/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hpccg/package.py b/var/spack/repos/builtin/packages/hpccg/package.py index 7e9514ce0bb..e6a6f5e23cf 100644 --- a/var/spack/repos/builtin/packages/hpccg/package.py +++ b/var/spack/repos/builtin/packages/hpccg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py b/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py index dfc45296424..95e42f981dc 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index 8239f51a0b5..d2fc86a7fb2 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hpl/package.py b/var/spack/repos/builtin/packages/hpl/package.py index 460f131e6ae..e621b182988 100644 --- a/var/spack/repos/builtin/packages/hpl/package.py +++ b/var/spack/repos/builtin/packages/hpl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hpx5/package.py b/var/spack/repos/builtin/packages/hpx5/package.py index 12e5c800160..9966bb14fa2 100644 --- a/var/spack/repos/builtin/packages/hpx5/package.py +++ b/var/spack/repos/builtin/packages/hpx5/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hsakmt/package.py b/var/spack/repos/builtin/packages/hsakmt/package.py index 2adb852a606..098eca48747 100644 --- a/var/spack/repos/builtin/packages/hsakmt/package.py +++ b/var/spack/repos/builtin/packages/hsakmt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hstr/package.py b/var/spack/repos/builtin/packages/hstr/package.py index ce0650e5e8b..681f1f65ed9 100644 --- a/var/spack/repos/builtin/packages/hstr/package.py +++ b/var/spack/repos/builtin/packages/hstr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/htop/package.py b/var/spack/repos/builtin/packages/htop/package.py index d88a6fe3c9e..d971dac9456 100644 --- a/var/spack/repos/builtin/packages/htop/package.py +++ b/var/spack/repos/builtin/packages/htop/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/htslib/package.py b/var/spack/repos/builtin/packages/htslib/package.py index 4c033c4272b..2921aee14b5 100644 --- a/var/spack/repos/builtin/packages/htslib/package.py +++ b/var/spack/repos/builtin/packages/htslib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/httpie/package.py b/var/spack/repos/builtin/packages/httpie/package.py index 8068ffc9b56..c187a1f4bbb 100644 --- a/var/spack/repos/builtin/packages/httpie/package.py +++ b/var/spack/repos/builtin/packages/httpie/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hub/package.py b/var/spack/repos/builtin/packages/hub/package.py index c038a677615..1ee420871c3 100644 --- a/var/spack/repos/builtin/packages/hub/package.py +++ b/var/spack/repos/builtin/packages/hub/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hunspell/package.py b/var/spack/repos/builtin/packages/hunspell/package.py index 15c1079e4d9..21bbac38250 100644 --- a/var/spack/repos/builtin/packages/hunspell/package.py +++ b/var/spack/repos/builtin/packages/hunspell/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py index f7ccaa4f386..c5de3da6b1f 100644 --- a/var/spack/repos/builtin/packages/hwloc/package.py +++ b/var/spack/repos/builtin/packages/hwloc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hybpiper/package.py b/var/spack/repos/builtin/packages/hybpiper/package.py index a9e49cef908..0d0be0c2473 100644 --- a/var/spack/repos/builtin/packages/hybpiper/package.py +++ b/var/spack/repos/builtin/packages/hybpiper/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hydra/package.py b/var/spack/repos/builtin/packages/hydra/package.py index 1c1632d4184..be3cca5b236 100644 --- a/var/spack/repos/builtin/packages/hydra/package.py +++ b/var/spack/repos/builtin/packages/hydra/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index 8dca02d4dd6..e59997a44b9 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ibmisc/package.py b/var/spack/repos/builtin/packages/ibmisc/package.py index 8640e5d3c5b..07a051473c5 100644 --- a/var/spack/repos/builtin/packages/ibmisc/package.py +++ b/var/spack/repos/builtin/packages/ibmisc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/iceauth/package.py b/var/spack/repos/builtin/packages/iceauth/package.py index bd2493347b0..65962b2ee16 100644 --- a/var/spack/repos/builtin/packages/iceauth/package.py +++ b/var/spack/repos/builtin/packages/iceauth/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/icedtea/package.py b/var/spack/repos/builtin/packages/icedtea/package.py index 7fd096cc77b..243cf19a6ad 100644 --- a/var/spack/repos/builtin/packages/icedtea/package.py +++ b/var/spack/repos/builtin/packages/icedtea/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/icet/package.py b/var/spack/repos/builtin/packages/icet/package.py index b2ff89ac696..688974ca9d8 100644 --- a/var/spack/repos/builtin/packages/icet/package.py +++ b/var/spack/repos/builtin/packages/icet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ico/package.py b/var/spack/repos/builtin/packages/ico/package.py index a81f004a2ec..f2e39718e77 100644 --- a/var/spack/repos/builtin/packages/ico/package.py +++ b/var/spack/repos/builtin/packages/ico/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/icu4c/package.py b/var/spack/repos/builtin/packages/icu4c/package.py index f5f75931b61..a050edf4370 100644 --- a/var/spack/repos/builtin/packages/icu4c/package.py +++ b/var/spack/repos/builtin/packages/icu4c/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/id3lib/package.py b/var/spack/repos/builtin/packages/id3lib/package.py index 65030085de9..96a44742b03 100644 --- a/var/spack/repos/builtin/packages/id3lib/package.py +++ b/var/spack/repos/builtin/packages/id3lib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/idba/package.py b/var/spack/repos/builtin/packages/idba/package.py index 25a3e029aa1..e46f56fa724 100644 --- a/var/spack/repos/builtin/packages/idba/package.py +++ b/var/spack/repos/builtin/packages/idba/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/igraph/package.py b/var/spack/repos/builtin/packages/igraph/package.py index 030ef1f604d..641f6bc7335 100644 --- a/var/spack/repos/builtin/packages/igraph/package.py +++ b/var/spack/repos/builtin/packages/igraph/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ilmbase/package.py b/var/spack/repos/builtin/packages/ilmbase/package.py index 23e77ccfa34..9bc58137408 100644 --- a/var/spack/repos/builtin/packages/ilmbase/package.py +++ b/var/spack/repos/builtin/packages/ilmbase/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/image-magick/package.py b/var/spack/repos/builtin/packages/image-magick/package.py index 77f7f795e7b..9ff9bfa4200 100644 --- a/var/spack/repos/builtin/packages/image-magick/package.py +++ b/var/spack/repos/builtin/packages/image-magick/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/imake/package.py b/var/spack/repos/builtin/packages/imake/package.py index 23dbd45723e..4ce031345f4 100644 --- a/var/spack/repos/builtin/packages/imake/package.py +++ b/var/spack/repos/builtin/packages/imake/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/impute2/package.py b/var/spack/repos/builtin/packages/impute2/package.py index b4b0cb20d2c..62dd4a61d0a 100644 --- a/var/spack/repos/builtin/packages/impute2/package.py +++ b/var/spack/repos/builtin/packages/impute2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/infernal/package.py b/var/spack/repos/builtin/packages/infernal/package.py index 8719d0a2279..37fad6245fe 100644 --- a/var/spack/repos/builtin/packages/infernal/package.py +++ b/var/spack/repos/builtin/packages/infernal/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/inputproto/package.py b/var/spack/repos/builtin/packages/inputproto/package.py index b2ece2fb14c..4eb64e6b90a 100644 --- a/var/spack/repos/builtin/packages/inputproto/package.py +++ b/var/spack/repos/builtin/packages/inputproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/intel-daal/package.py b/var/spack/repos/builtin/packages/intel-daal/package.py index 1713218ad38..68af105038d 100644 --- a/var/spack/repos/builtin/packages/intel-daal/package.py +++ b/var/spack/repos/builtin/packages/intel-daal/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py index 004d91e7de1..7f6de2d5c10 100644 --- a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py +++ b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/intel-ipp/package.py b/var/spack/repos/builtin/packages/intel-ipp/package.py index 4ca20a99063..a243d16c579 100644 --- a/var/spack/repos/builtin/packages/intel-ipp/package.py +++ b/var/spack/repos/builtin/packages/intel-ipp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 1cc3c00af23..9c9a25fabd0 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py index b9aaf12c1c5..88a68e57ece 100644 --- a/var/spack/repos/builtin/packages/intel-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-mpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. 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 12a3f15f26a..b4d620c0d78 100644 --- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py +++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/intel-tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py index 6d5c2bbbb06..766a9cb92e8 100644 --- a/var/spack/repos/builtin/packages/intel-tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-tbb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index 8024a5ebeaf..35ad91c0951 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/intltool/package.py b/var/spack/repos/builtin/packages/intltool/package.py index c54cae1323e..068fc16e706 100644 --- a/var/spack/repos/builtin/packages/intltool/package.py +++ b/var/spack/repos/builtin/packages/intltool/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ior/package.py b/var/spack/repos/builtin/packages/ior/package.py index ef5fa5b7be2..63c7db12258 100644 --- a/var/spack/repos/builtin/packages/ior/package.py +++ b/var/spack/repos/builtin/packages/ior/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/iozone/package.py b/var/spack/repos/builtin/packages/iozone/package.py index 9278b881b0d..d17eac4d959 100644 --- a/var/spack/repos/builtin/packages/iozone/package.py +++ b/var/spack/repos/builtin/packages/iozone/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ipopt/package.py b/var/spack/repos/builtin/packages/ipopt/package.py index 77faeb80518..cf015be49c1 100644 --- a/var/spack/repos/builtin/packages/ipopt/package.py +++ b/var/spack/repos/builtin/packages/ipopt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/isl/package.py b/var/spack/repos/builtin/packages/isl/package.py index bc7c240e1d8..ba5108674ae 100644 --- a/var/spack/repos/builtin/packages/isl/package.py +++ b/var/spack/repos/builtin/packages/isl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/itstool/package.py b/var/spack/repos/builtin/packages/itstool/package.py index 3aa28850060..24cb4d8829b 100644 --- a/var/spack/repos/builtin/packages/itstool/package.py +++ b/var/spack/repos/builtin/packages/itstool/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/itsx/package.py b/var/spack/repos/builtin/packages/itsx/package.py index 41b0d9a6a2e..f83d16ab680 100644 --- a/var/spack/repos/builtin/packages/itsx/package.py +++ b/var/spack/repos/builtin/packages/itsx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/jags/package.py b/var/spack/repos/builtin/packages/jags/package.py index 2909f24e9dc..6597ca81528 100644 --- a/var/spack/repos/builtin/packages/jags/package.py +++ b/var/spack/repos/builtin/packages/jags/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/jansson/package.py b/var/spack/repos/builtin/packages/jansson/package.py index f6c9d8b799c..f29b17f4baa 100644 --- a/var/spack/repos/builtin/packages/jansson/package.py +++ b/var/spack/repos/builtin/packages/jansson/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/jasper/package.py b/var/spack/repos/builtin/packages/jasper/package.py index bf7bf91995d..2d87fa90571 100644 --- a/var/spack/repos/builtin/packages/jasper/package.py +++ b/var/spack/repos/builtin/packages/jasper/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index 65dad76ce27..b3d41155425 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/jemalloc/package.py b/var/spack/repos/builtin/packages/jemalloc/package.py index 82f0fbc9988..aac8c39c282 100644 --- a/var/spack/repos/builtin/packages/jemalloc/package.py +++ b/var/spack/repos/builtin/packages/jemalloc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/jmol/package.py b/var/spack/repos/builtin/packages/jmol/package.py index f07e07f866b..aeab002a56b 100644 --- a/var/spack/repos/builtin/packages/jmol/package.py +++ b/var/spack/repos/builtin/packages/jmol/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/jq/package.py b/var/spack/repos/builtin/packages/jq/package.py index 06abcd461fc..c9069879620 100644 --- a/var/spack/repos/builtin/packages/jq/package.py +++ b/var/spack/repos/builtin/packages/jq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/json-c/package.py b/var/spack/repos/builtin/packages/json-c/package.py index 986538c4458..c61fcc41806 100644 --- a/var/spack/repos/builtin/packages/json-c/package.py +++ b/var/spack/repos/builtin/packages/json-c/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/jsoncpp/package.py b/var/spack/repos/builtin/packages/jsoncpp/package.py index 1889bffc1ec..c30d143d38c 100644 --- a/var/spack/repos/builtin/packages/jsoncpp/package.py +++ b/var/spack/repos/builtin/packages/jsoncpp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/judy/package.py b/var/spack/repos/builtin/packages/judy/package.py index 7e62ca3e995..9d436f0f3c3 100644 --- a/var/spack/repos/builtin/packages/judy/package.py +++ b/var/spack/repos/builtin/packages/judy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py index 61ffd2efc6c..a7d043aa379 100644 --- a/var/spack/repos/builtin/packages/julia/package.py +++ b/var/spack/repos/builtin/packages/julia/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/kaldi/package.py b/var/spack/repos/builtin/packages/kaldi/package.py index c149c944cee..343d99a2c46 100644 --- a/var/spack/repos/builtin/packages/kaldi/package.py +++ b/var/spack/repos/builtin/packages/kaldi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/kallisto/package.py b/var/spack/repos/builtin/packages/kallisto/package.py index c0f70aa1c05..247dbbace12 100644 --- a/var/spack/repos/builtin/packages/kallisto/package.py +++ b/var/spack/repos/builtin/packages/kallisto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/kbproto/package.py b/var/spack/repos/builtin/packages/kbproto/package.py index 9a141cc7f30..f6d9ad56cf9 100644 --- a/var/spack/repos/builtin/packages/kbproto/package.py +++ b/var/spack/repos/builtin/packages/kbproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/kdiff3/package.py b/var/spack/repos/builtin/packages/kdiff3/package.py index f03d9d00b9e..431e5c7e8df 100644 --- a/var/spack/repos/builtin/packages/kdiff3/package.py +++ b/var/spack/repos/builtin/packages/kdiff3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/kealib/package.py b/var/spack/repos/builtin/packages/kealib/package.py index 296090ef283..0f7b63dcc9b 100644 --- a/var/spack/repos/builtin/packages/kealib/package.py +++ b/var/spack/repos/builtin/packages/kealib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/kentutils/package.py b/var/spack/repos/builtin/packages/kentutils/package.py index 65d46f563d9..6eb442aae99 100644 --- a/var/spack/repos/builtin/packages/kentutils/package.py +++ b/var/spack/repos/builtin/packages/kentutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/kmergenie/package.py b/var/spack/repos/builtin/packages/kmergenie/package.py index 9e6d0e53128..87ebd1b5aa0 100644 --- a/var/spack/repos/builtin/packages/kmergenie/package.py +++ b/var/spack/repos/builtin/packages/kmergenie/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index 2a82a4c5d64..8547621a142 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/kripke/package.py b/var/spack/repos/builtin/packages/kripke/package.py index e8b63476daa..615f870744d 100644 --- a/var/spack/repos/builtin/packages/kripke/package.py +++ b/var/spack/repos/builtin/packages/kripke/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index b66712d02e2..bf9293ae7c4 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/last/package.py b/var/spack/repos/builtin/packages/last/package.py index 49d561f89b2..c1e79a64c1f 100644 --- a/var/spack/repos/builtin/packages/last/package.py +++ b/var/spack/repos/builtin/packages/last/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/launchmon/package.py b/var/spack/repos/builtin/packages/launchmon/package.py index 7362a68050c..effa1cfea18 100644 --- a/var/spack/repos/builtin/packages/launchmon/package.py +++ b/var/spack/repos/builtin/packages/launchmon/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index 9b0e2493145..a1f1a19948b 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lbxproxy/package.py b/var/spack/repos/builtin/packages/lbxproxy/package.py index b7c65d72c05..64b22f4ad25 100644 --- a/var/spack/repos/builtin/packages/lbxproxy/package.py +++ b/var/spack/repos/builtin/packages/lbxproxy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lcals/package.py b/var/spack/repos/builtin/packages/lcals/package.py index c34907472a2..052eab91c85 100644 --- a/var/spack/repos/builtin/packages/lcals/package.py +++ b/var/spack/repos/builtin/packages/lcals/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lcms/package.py b/var/spack/repos/builtin/packages/lcms/package.py index a7b8f86d5fe..7bff73a7dac 100644 --- a/var/spack/repos/builtin/packages/lcms/package.py +++ b/var/spack/repos/builtin/packages/lcms/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/leveldb/package.py b/var/spack/repos/builtin/packages/leveldb/package.py index ec52161b647..f12866c246e 100644 --- a/var/spack/repos/builtin/packages/leveldb/package.py +++ b/var/spack/repos/builtin/packages/leveldb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lftp/package.py b/var/spack/repos/builtin/packages/lftp/package.py index c369a918637..46f92d3b28d 100644 --- a/var/spack/repos/builtin/packages/lftp/package.py +++ b/var/spack/repos/builtin/packages/lftp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libaec/package.py b/var/spack/repos/builtin/packages/libaec/package.py index 87bca8d54a8..6b0f7d637cf 100644 --- a/var/spack/repos/builtin/packages/libaec/package.py +++ b/var/spack/repos/builtin/packages/libaec/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libaio/package.py b/var/spack/repos/builtin/packages/libaio/package.py index e7f2a7487b0..63f5fd67255 100644 --- a/var/spack/repos/builtin/packages/libaio/package.py +++ b/var/spack/repos/builtin/packages/libaio/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libapplewm/package.py b/var/spack/repos/builtin/packages/libapplewm/package.py index 053555b5728..9e9a4a5914a 100644 --- a/var/spack/repos/builtin/packages/libapplewm/package.py +++ b/var/spack/repos/builtin/packages/libapplewm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py index cc99e77278a..8fe6d806abb 100644 --- a/var/spack/repos/builtin/packages/libarchive/package.py +++ b/var/spack/repos/builtin/packages/libarchive/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libassuan/package.py b/var/spack/repos/builtin/packages/libassuan/package.py index 53a3bc69e5d..2c5557fb6f5 100644 --- a/var/spack/repos/builtin/packages/libassuan/package.py +++ b/var/spack/repos/builtin/packages/libassuan/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libatomic-ops/package.py b/var/spack/repos/builtin/packages/libatomic-ops/package.py index 56005092121..e1fba85fc3d 100644 --- a/var/spack/repos/builtin/packages/libatomic-ops/package.py +++ b/var/spack/repos/builtin/packages/libatomic-ops/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libbeagle/package.py b/var/spack/repos/builtin/packages/libbeagle/package.py index f459c5f738a..c29b2dde54a 100644 --- a/var/spack/repos/builtin/packages/libbeagle/package.py +++ b/var/spack/repos/builtin/packages/libbeagle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libbsd/package.py b/var/spack/repos/builtin/packages/libbsd/package.py index 1f0edc090bc..9b38a51e14c 100644 --- a/var/spack/repos/builtin/packages/libbsd/package.py +++ b/var/spack/repos/builtin/packages/libbsd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libbson/package.py b/var/spack/repos/builtin/packages/libbson/package.py index f78ff4544ad..28f7f020eb1 100644 --- a/var/spack/repos/builtin/packages/libbson/package.py +++ b/var/spack/repos/builtin/packages/libbson/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libcanberra/package.py b/var/spack/repos/builtin/packages/libcanberra/package.py index 840cdc4de30..934ebb6d0ac 100644 --- a/var/spack/repos/builtin/packages/libcanberra/package.py +++ b/var/spack/repos/builtin/packages/libcanberra/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libcap/package.py b/var/spack/repos/builtin/packages/libcap/package.py index b5b25069a3b..3160ba8a627 100644 --- a/var/spack/repos/builtin/packages/libcap/package.py +++ b/var/spack/repos/builtin/packages/libcap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libcerf/package.py b/var/spack/repos/builtin/packages/libcerf/package.py index 8d75ab3a28c..94023e87528 100644 --- a/var/spack/repos/builtin/packages/libcerf/package.py +++ b/var/spack/repos/builtin/packages/libcerf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libcircle/package.py b/var/spack/repos/builtin/packages/libcircle/package.py index ec9eb762383..b82a3e9046f 100644 --- a/var/spack/repos/builtin/packages/libcircle/package.py +++ b/var/spack/repos/builtin/packages/libcircle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libconfig/package.py b/var/spack/repos/builtin/packages/libconfig/package.py index 76bf314f092..1b5be50c348 100644 --- a/var/spack/repos/builtin/packages/libconfig/package.py +++ b/var/spack/repos/builtin/packages/libconfig/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libctl/package.py b/var/spack/repos/builtin/packages/libctl/package.py index 1364b5de0ec..b29ba2ccad0 100644 --- a/var/spack/repos/builtin/packages/libctl/package.py +++ b/var/spack/repos/builtin/packages/libctl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libdivsufsort/package.py b/var/spack/repos/builtin/packages/libdivsufsort/package.py index df51b7c37e8..26cbac7fe90 100644 --- a/var/spack/repos/builtin/packages/libdivsufsort/package.py +++ b/var/spack/repos/builtin/packages/libdivsufsort/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libdmx/package.py b/var/spack/repos/builtin/packages/libdmx/package.py index 5c4106ca64a..a18c7c85805 100644 --- a/var/spack/repos/builtin/packages/libdmx/package.py +++ b/var/spack/repos/builtin/packages/libdmx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libdrm/package.py b/var/spack/repos/builtin/packages/libdrm/package.py index b0715e2dbaa..d06a3a430e1 100644 --- a/var/spack/repos/builtin/packages/libdrm/package.py +++ b/var/spack/repos/builtin/packages/libdrm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libdwarf/package.py b/var/spack/repos/builtin/packages/libdwarf/package.py index cb672dddc4b..16df4110db8 100644 --- a/var/spack/repos/builtin/packages/libdwarf/package.py +++ b/var/spack/repos/builtin/packages/libdwarf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libedit/package.py b/var/spack/repos/builtin/packages/libedit/package.py index 4fd61ec6c86..2f0398eb6b5 100644 --- a/var/spack/repos/builtin/packages/libedit/package.py +++ b/var/spack/repos/builtin/packages/libedit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libelf/package.py b/var/spack/repos/builtin/packages/libelf/package.py index 965c6110492..56c4f19bab1 100644 --- a/var/spack/repos/builtin/packages/libelf/package.py +++ b/var/spack/repos/builtin/packages/libelf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libemos/package.py b/var/spack/repos/builtin/packages/libemos/package.py index b8840e526d3..ed26d25cf0b 100644 --- a/var/spack/repos/builtin/packages/libemos/package.py +++ b/var/spack/repos/builtin/packages/libemos/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libepoxy/package.py b/var/spack/repos/builtin/packages/libepoxy/package.py index 705d82890a6..42e5907d5de 100644 --- a/var/spack/repos/builtin/packages/libepoxy/package.py +++ b/var/spack/repos/builtin/packages/libepoxy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libevent/package.py b/var/spack/repos/builtin/packages/libevent/package.py index 93711491fae..09e2355526f 100644 --- a/var/spack/repos/builtin/packages/libevent/package.py +++ b/var/spack/repos/builtin/packages/libevent/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libevpath/package.py b/var/spack/repos/builtin/packages/libevpath/package.py index 40ed3eeb99d..0cb4200eaea 100644 --- a/var/spack/repos/builtin/packages/libevpath/package.py +++ b/var/spack/repos/builtin/packages/libevpath/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libfabric/package.py b/var/spack/repos/builtin/packages/libfabric/package.py index b90e2fa262b..574c03743fd 100644 --- a/var/spack/repos/builtin/packages/libfabric/package.py +++ b/var/spack/repos/builtin/packages/libfabric/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libffi/package.py b/var/spack/repos/builtin/packages/libffi/package.py index 67369447c96..e65f9de95c4 100644 --- a/var/spack/repos/builtin/packages/libffi/package.py +++ b/var/spack/repos/builtin/packages/libffi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libffs/package.py b/var/spack/repos/builtin/packages/libffs/package.py index 9513e146bce..665c637b718 100644 --- a/var/spack/repos/builtin/packages/libffs/package.py +++ b/var/spack/repos/builtin/packages/libffs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libfontenc/package.py b/var/spack/repos/builtin/packages/libfontenc/package.py index d80c5bde6ed..d9665beb01c 100644 --- a/var/spack/repos/builtin/packages/libfontenc/package.py +++ b/var/spack/repos/builtin/packages/libfontenc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libfs/package.py b/var/spack/repos/builtin/packages/libfs/package.py index 462d925a359..e72094e65d5 100644 --- a/var/spack/repos/builtin/packages/libfs/package.py +++ b/var/spack/repos/builtin/packages/libfs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libgcrypt/package.py b/var/spack/repos/builtin/packages/libgcrypt/package.py index 31ab85c0eef..8fdce188ae6 100644 --- a/var/spack/repos/builtin/packages/libgcrypt/package.py +++ b/var/spack/repos/builtin/packages/libgcrypt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py index 6f6c43d9f00..42787fa06a6 100644 --- a/var/spack/repos/builtin/packages/libgd/package.py +++ b/var/spack/repos/builtin/packages/libgd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libgit2/package.py b/var/spack/repos/builtin/packages/libgit2/package.py index ae53612ce61..5665663f343 100644 --- a/var/spack/repos/builtin/packages/libgit2/package.py +++ b/var/spack/repos/builtin/packages/libgit2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libgpg-error/package.py b/var/spack/repos/builtin/packages/libgpg-error/package.py index 3d12c235d3e..c88840294c0 100644 --- a/var/spack/repos/builtin/packages/libgpg-error/package.py +++ b/var/spack/repos/builtin/packages/libgpg-error/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libgpuarray/package.py b/var/spack/repos/builtin/packages/libgpuarray/package.py index 0c42e90f16c..b1f4efa10a7 100644 --- a/var/spack/repos/builtin/packages/libgpuarray/package.py +++ b/var/spack/repos/builtin/packages/libgpuarray/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libgtextutils/package.py b/var/spack/repos/builtin/packages/libgtextutils/package.py index 830e441316d..f623bc49b1f 100644 --- a/var/spack/repos/builtin/packages/libgtextutils/package.py +++ b/var/spack/repos/builtin/packages/libgtextutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libhio/package.py b/var/spack/repos/builtin/packages/libhio/package.py index 12ef32cd90d..11f9f4281b3 100644 --- a/var/spack/repos/builtin/packages/libhio/package.py +++ b/var/spack/repos/builtin/packages/libhio/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libice/package.py b/var/spack/repos/builtin/packages/libice/package.py index b11bca16b47..64ac146cf69 100644 --- a/var/spack/repos/builtin/packages/libice/package.py +++ b/var/spack/repos/builtin/packages/libice/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py index 4bc2f526493..52b4d1f7a5c 100644 --- a/var/spack/repos/builtin/packages/libiconv/package.py +++ b/var/spack/repos/builtin/packages/libiconv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py index 34600e742a4..4b228c265ec 100644 --- a/var/spack/repos/builtin/packages/libint/package.py +++ b/var/spack/repos/builtin/packages/libint/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py index e0eca52a415..dcf622284b5 100644 --- a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py +++ b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libjpeg/package.py b/var/spack/repos/builtin/packages/libjpeg/package.py index 9829b305476..0acb1204605 100644 --- a/var/spack/repos/builtin/packages/libjpeg/package.py +++ b/var/spack/repos/builtin/packages/libjpeg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libksba/package.py b/var/spack/repos/builtin/packages/libksba/package.py index b796e7a5628..dd6297a93a1 100644 --- a/var/spack/repos/builtin/packages/libksba/package.py +++ b/var/spack/repos/builtin/packages/libksba/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/liblbxutil/package.py b/var/spack/repos/builtin/packages/liblbxutil/package.py index 0cd4c5767bd..46a8179567a 100644 --- a/var/spack/repos/builtin/packages/liblbxutil/package.py +++ b/var/spack/repos/builtin/packages/liblbxutil/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libmatheval/package.py b/var/spack/repos/builtin/packages/libmatheval/package.py index a13c9000de0..b9b0066bdf6 100644 --- a/var/spack/repos/builtin/packages/libmatheval/package.py +++ b/var/spack/repos/builtin/packages/libmatheval/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libmesh/package.py b/var/spack/repos/builtin/packages/libmesh/package.py index 5cad209597d..af6fccad8d5 100644 --- a/var/spack/repos/builtin/packages/libmesh/package.py +++ b/var/spack/repos/builtin/packages/libmesh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libmng/package.py b/var/spack/repos/builtin/packages/libmng/package.py index dca8c03aa06..e69f5131ef2 100644 --- a/var/spack/repos/builtin/packages/libmng/package.py +++ b/var/spack/repos/builtin/packages/libmng/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libmongoc/package.py b/var/spack/repos/builtin/packages/libmongoc/package.py index 0fc6bd632d0..e2d4cf66075 100644 --- a/var/spack/repos/builtin/packages/libmongoc/package.py +++ b/var/spack/repos/builtin/packages/libmongoc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libmonitor/package.py b/var/spack/repos/builtin/packages/libmonitor/package.py index 42410de82d0..1f69291cfe2 100644 --- a/var/spack/repos/builtin/packages/libmonitor/package.py +++ b/var/spack/repos/builtin/packages/libmonitor/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libnbc/package.py b/var/spack/repos/builtin/packages/libnbc/package.py index 0fdd0d92348..9d3484f9cbd 100644 --- a/var/spack/repos/builtin/packages/libnbc/package.py +++ b/var/spack/repos/builtin/packages/libnbc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libogg/package.py b/var/spack/repos/builtin/packages/libogg/package.py index 2b53900f49e..cc17357c2ac 100644 --- a/var/spack/repos/builtin/packages/libogg/package.py +++ b/var/spack/repos/builtin/packages/libogg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/liboldx/package.py b/var/spack/repos/builtin/packages/liboldx/package.py index d89af8d70f0..60120eed41b 100644 --- a/var/spack/repos/builtin/packages/liboldx/package.py +++ b/var/spack/repos/builtin/packages/liboldx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libpciaccess/package.py b/var/spack/repos/builtin/packages/libpciaccess/package.py index 7cbeebd2fc0..11e0e5e7aa8 100644 --- a/var/spack/repos/builtin/packages/libpciaccess/package.py +++ b/var/spack/repos/builtin/packages/libpciaccess/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libpfm4/package.py b/var/spack/repos/builtin/packages/libpfm4/package.py index 858a68b953e..a9c9132803f 100644 --- a/var/spack/repos/builtin/packages/libpfm4/package.py +++ b/var/spack/repos/builtin/packages/libpfm4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libpipeline/package.py b/var/spack/repos/builtin/packages/libpipeline/package.py index 2d51755633f..d0db6247432 100644 --- a/var/spack/repos/builtin/packages/libpipeline/package.py +++ b/var/spack/repos/builtin/packages/libpipeline/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libpng/package.py b/var/spack/repos/builtin/packages/libpng/package.py index a78f9648413..e0ac9774681 100644 --- a/var/spack/repos/builtin/packages/libpng/package.py +++ b/var/spack/repos/builtin/packages/libpng/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libpsl/package.py b/var/spack/repos/builtin/packages/libpsl/package.py index b3c029b78c6..f43388dcd06 100644 --- a/var/spack/repos/builtin/packages/libpsl/package.py +++ b/var/spack/repos/builtin/packages/libpsl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libpthread-stubs/package.py b/var/spack/repos/builtin/packages/libpthread-stubs/package.py index 536f80471d3..9ba66fc6e6a 100644 --- a/var/spack/repos/builtin/packages/libpthread-stubs/package.py +++ b/var/spack/repos/builtin/packages/libpthread-stubs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libquo/package.py b/var/spack/repos/builtin/packages/libquo/package.py index 653e0334599..bcf78607b6d 100644 --- a/var/spack/repos/builtin/packages/libquo/package.py +++ b/var/spack/repos/builtin/packages/libquo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libsigsegv/package.py b/var/spack/repos/builtin/packages/libsigsegv/package.py index 67a94b28959..78ab2cfa93d 100644 --- a/var/spack/repos/builtin/packages/libsigsegv/package.py +++ b/var/spack/repos/builtin/packages/libsigsegv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libsm/package.py b/var/spack/repos/builtin/packages/libsm/package.py index 2a8be064867..8302fa5113c 100644 --- a/var/spack/repos/builtin/packages/libsm/package.py +++ b/var/spack/repos/builtin/packages/libsm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libsodium/package.py b/var/spack/repos/builtin/packages/libsodium/package.py index d8d6b4d7bb1..c0f52f9b317 100644 --- a/var/spack/repos/builtin/packages/libsodium/package.py +++ b/var/spack/repos/builtin/packages/libsodium/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libspatialindex/package.py b/var/spack/repos/builtin/packages/libspatialindex/package.py index 7790c8dab2f..447c75eae99 100644 --- a/var/spack/repos/builtin/packages/libspatialindex/package.py +++ b/var/spack/repos/builtin/packages/libspatialindex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libsplash/package.py b/var/spack/repos/builtin/packages/libsplash/package.py index c2d8bc1881e..c3b01497cbd 100644 --- a/var/spack/repos/builtin/packages/libsplash/package.py +++ b/var/spack/repos/builtin/packages/libsplash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libssh2/package.py b/var/spack/repos/builtin/packages/libssh2/package.py index c5978f06889..40d3273648f 100644 --- a/var/spack/repos/builtin/packages/libssh2/package.py +++ b/var/spack/repos/builtin/packages/libssh2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libsvm/package.py b/var/spack/repos/builtin/packages/libsvm/package.py index 3a52d4f3efe..25624f526f8 100644 --- a/var/spack/repos/builtin/packages/libsvm/package.py +++ b/var/spack/repos/builtin/packages/libsvm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libszip/package.py b/var/spack/repos/builtin/packages/libszip/package.py index 838b81b63b7..cc203b65f08 100644 --- a/var/spack/repos/builtin/packages/libszip/package.py +++ b/var/spack/repos/builtin/packages/libszip/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libtermkey/package.py b/var/spack/repos/builtin/packages/libtermkey/package.py index 40a17c1c3e9..bc01480c3a0 100644 --- a/var/spack/repos/builtin/packages/libtermkey/package.py +++ b/var/spack/repos/builtin/packages/libtermkey/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libtiff/package.py b/var/spack/repos/builtin/packages/libtiff/package.py index 2fcccad7398..66243d7f7d5 100644 --- a/var/spack/repos/builtin/packages/libtiff/package.py +++ b/var/spack/repos/builtin/packages/libtiff/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libtool/package.py b/var/spack/repos/builtin/packages/libtool/package.py index 662859d52ef..fb1c8623539 100644 --- a/var/spack/repos/builtin/packages/libtool/package.py +++ b/var/spack/repos/builtin/packages/libtool/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libunistring/package.py b/var/spack/repos/builtin/packages/libunistring/package.py index 296788a2c32..ddd3152d809 100644 --- a/var/spack/repos/builtin/packages/libunistring/package.py +++ b/var/spack/repos/builtin/packages/libunistring/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py index 79e5d35061b..f123e898f10 100644 --- a/var/spack/repos/builtin/packages/libunwind/package.py +++ b/var/spack/repos/builtin/packages/libunwind/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libuuid/package.py b/var/spack/repos/builtin/packages/libuuid/package.py index b7eefdb1f08..de5dd4643ac 100644 --- a/var/spack/repos/builtin/packages/libuuid/package.py +++ b/var/spack/repos/builtin/packages/libuuid/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libuv/package.py b/var/spack/repos/builtin/packages/libuv/package.py index 784034d96c8..1be764326a5 100644 --- a/var/spack/repos/builtin/packages/libuv/package.py +++ b/var/spack/repos/builtin/packages/libuv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libvorbis/package.py b/var/spack/repos/builtin/packages/libvorbis/package.py index 2e25a5c2308..6493a30f4b3 100644 --- a/var/spack/repos/builtin/packages/libvorbis/package.py +++ b/var/spack/repos/builtin/packages/libvorbis/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libvterm/package.py b/var/spack/repos/builtin/packages/libvterm/package.py index 651b59be534..b50344b8335 100644 --- a/var/spack/repos/builtin/packages/libvterm/package.py +++ b/var/spack/repos/builtin/packages/libvterm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libwebsockets/package.py b/var/spack/repos/builtin/packages/libwebsockets/package.py index b840c9d0f00..018fc6014bd 100644 --- a/var/spack/repos/builtin/packages/libwebsockets/package.py +++ b/var/spack/repos/builtin/packages/libwebsockets/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libwindowswm/package.py b/var/spack/repos/builtin/packages/libwindowswm/package.py index 82cc3f84b02..8ad9c99dde5 100644 --- a/var/spack/repos/builtin/packages/libwindowswm/package.py +++ b/var/spack/repos/builtin/packages/libwindowswm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libx11/package.py b/var/spack/repos/builtin/packages/libx11/package.py index 74f9618212b..8510556717f 100644 --- a/var/spack/repos/builtin/packages/libx11/package.py +++ b/var/spack/repos/builtin/packages/libx11/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxau/package.py b/var/spack/repos/builtin/packages/libxau/package.py index 546f25171e6..0a80e3ce428 100644 --- a/var/spack/repos/builtin/packages/libxau/package.py +++ b/var/spack/repos/builtin/packages/libxau/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxaw/package.py b/var/spack/repos/builtin/packages/libxaw/package.py index a160444b388..6bd1e6aa58c 100644 --- a/var/spack/repos/builtin/packages/libxaw/package.py +++ b/var/spack/repos/builtin/packages/libxaw/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxaw3d/package.py b/var/spack/repos/builtin/packages/libxaw3d/package.py index aa76aef6749..9c9ba54f28f 100644 --- a/var/spack/repos/builtin/packages/libxaw3d/package.py +++ b/var/spack/repos/builtin/packages/libxaw3d/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py index e2fe25c455e..ef36014ccc9 100644 --- a/var/spack/repos/builtin/packages/libxc/package.py +++ b/var/spack/repos/builtin/packages/libxc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxcb/package.py b/var/spack/repos/builtin/packages/libxcb/package.py index 73a3f718c60..0c4a7fd010b 100644 --- a/var/spack/repos/builtin/packages/libxcb/package.py +++ b/var/spack/repos/builtin/packages/libxcb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxcomposite/package.py b/var/spack/repos/builtin/packages/libxcomposite/package.py index c540c35f26a..b8c2b0257ca 100644 --- a/var/spack/repos/builtin/packages/libxcomposite/package.py +++ b/var/spack/repos/builtin/packages/libxcomposite/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxcursor/package.py b/var/spack/repos/builtin/packages/libxcursor/package.py index 1c931b4d726..27b14f70862 100644 --- a/var/spack/repos/builtin/packages/libxcursor/package.py +++ b/var/spack/repos/builtin/packages/libxcursor/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxdamage/package.py b/var/spack/repos/builtin/packages/libxdamage/package.py index 95f6dd498ed..2fcaa6cb468 100644 --- a/var/spack/repos/builtin/packages/libxdamage/package.py +++ b/var/spack/repos/builtin/packages/libxdamage/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxdmcp/package.py b/var/spack/repos/builtin/packages/libxdmcp/package.py index 9ff35638f31..c60ecd0bf5e 100644 --- a/var/spack/repos/builtin/packages/libxdmcp/package.py +++ b/var/spack/repos/builtin/packages/libxdmcp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxevie/package.py b/var/spack/repos/builtin/packages/libxevie/package.py index 8c9e0049de6..c3d60e0bb3d 100644 --- a/var/spack/repos/builtin/packages/libxevie/package.py +++ b/var/spack/repos/builtin/packages/libxevie/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxext/package.py b/var/spack/repos/builtin/packages/libxext/package.py index 36c712b1535..ed103cedc31 100644 --- a/var/spack/repos/builtin/packages/libxext/package.py +++ b/var/spack/repos/builtin/packages/libxext/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxfixes/package.py b/var/spack/repos/builtin/packages/libxfixes/package.py index 87e037286e6..faa179e4b75 100644 --- a/var/spack/repos/builtin/packages/libxfixes/package.py +++ b/var/spack/repos/builtin/packages/libxfixes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxfont/package.py b/var/spack/repos/builtin/packages/libxfont/package.py index eee73dde014..bd78141aca7 100644 --- a/var/spack/repos/builtin/packages/libxfont/package.py +++ b/var/spack/repos/builtin/packages/libxfont/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxfont2/package.py b/var/spack/repos/builtin/packages/libxfont2/package.py index 9b4e7e463d1..8a1193e034b 100644 --- a/var/spack/repos/builtin/packages/libxfont2/package.py +++ b/var/spack/repos/builtin/packages/libxfont2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxfontcache/package.py b/var/spack/repos/builtin/packages/libxfontcache/package.py index ad4bfceb77c..885d37bba2a 100644 --- a/var/spack/repos/builtin/packages/libxfontcache/package.py +++ b/var/spack/repos/builtin/packages/libxfontcache/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxft/package.py b/var/spack/repos/builtin/packages/libxft/package.py index 405c29883c1..7e8cf5fd69e 100644 --- a/var/spack/repos/builtin/packages/libxft/package.py +++ b/var/spack/repos/builtin/packages/libxft/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxi/package.py b/var/spack/repos/builtin/packages/libxi/package.py index c6821c00aa2..7df039eb2fc 100644 --- a/var/spack/repos/builtin/packages/libxi/package.py +++ b/var/spack/repos/builtin/packages/libxi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxinerama/package.py b/var/spack/repos/builtin/packages/libxinerama/package.py index 2deb6df2f2b..df0ef9ca472 100644 --- a/var/spack/repos/builtin/packages/libxinerama/package.py +++ b/var/spack/repos/builtin/packages/libxinerama/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxkbfile/package.py b/var/spack/repos/builtin/packages/libxkbfile/package.py index 5a15ebe7a4e..93b832dd085 100644 --- a/var/spack/repos/builtin/packages/libxkbfile/package.py +++ b/var/spack/repos/builtin/packages/libxkbfile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxkbui/package.py b/var/spack/repos/builtin/packages/libxkbui/package.py index 47827831111..4328cf07e49 100644 --- a/var/spack/repos/builtin/packages/libxkbui/package.py +++ b/var/spack/repos/builtin/packages/libxkbui/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index f3601aa2b5e..2ec64006c90 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxmu/package.py b/var/spack/repos/builtin/packages/libxmu/package.py index a18cf345636..fd9573e11e5 100644 --- a/var/spack/repos/builtin/packages/libxmu/package.py +++ b/var/spack/repos/builtin/packages/libxmu/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxp/package.py b/var/spack/repos/builtin/packages/libxp/package.py index bf405e9acee..5b1ff6517af 100644 --- a/var/spack/repos/builtin/packages/libxp/package.py +++ b/var/spack/repos/builtin/packages/libxp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxpm/package.py b/var/spack/repos/builtin/packages/libxpm/package.py index 40234b1b2d1..3431a2cd09a 100644 --- a/var/spack/repos/builtin/packages/libxpm/package.py +++ b/var/spack/repos/builtin/packages/libxpm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxpresent/package.py b/var/spack/repos/builtin/packages/libxpresent/package.py index eb2e037af2e..dbc29aa5213 100644 --- a/var/spack/repos/builtin/packages/libxpresent/package.py +++ b/var/spack/repos/builtin/packages/libxpresent/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxprintapputil/package.py b/var/spack/repos/builtin/packages/libxprintapputil/package.py index 4a5b7f29a93..a09b4d6e71b 100644 --- a/var/spack/repos/builtin/packages/libxprintapputil/package.py +++ b/var/spack/repos/builtin/packages/libxprintapputil/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxprintutil/package.py b/var/spack/repos/builtin/packages/libxprintutil/package.py index d464c430a4a..e7e1ae88df0 100644 --- a/var/spack/repos/builtin/packages/libxprintutil/package.py +++ b/var/spack/repos/builtin/packages/libxprintutil/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxrandr/package.py b/var/spack/repos/builtin/packages/libxrandr/package.py index a9709ff90ca..045e54e3382 100644 --- a/var/spack/repos/builtin/packages/libxrandr/package.py +++ b/var/spack/repos/builtin/packages/libxrandr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxrender/package.py b/var/spack/repos/builtin/packages/libxrender/package.py index 9ef9e1a78a8..58416eb600e 100644 --- a/var/spack/repos/builtin/packages/libxrender/package.py +++ b/var/spack/repos/builtin/packages/libxrender/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxres/package.py b/var/spack/repos/builtin/packages/libxres/package.py index f6593fad0bb..2ffa79c9349 100644 --- a/var/spack/repos/builtin/packages/libxres/package.py +++ b/var/spack/repos/builtin/packages/libxres/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxscrnsaver/package.py b/var/spack/repos/builtin/packages/libxscrnsaver/package.py index 97b293796f6..6bd2bc69274 100644 --- a/var/spack/repos/builtin/packages/libxscrnsaver/package.py +++ b/var/spack/repos/builtin/packages/libxscrnsaver/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxshmfence/package.py b/var/spack/repos/builtin/packages/libxshmfence/package.py index c8b2e60a7cd..ade08c12a2f 100644 --- a/var/spack/repos/builtin/packages/libxshmfence/package.py +++ b/var/spack/repos/builtin/packages/libxshmfence/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxslt/package.py b/var/spack/repos/builtin/packages/libxslt/package.py index a87ae7ffeef..f38c3ef12bb 100644 --- a/var/spack/repos/builtin/packages/libxslt/package.py +++ b/var/spack/repos/builtin/packages/libxslt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxstream/package.py b/var/spack/repos/builtin/packages/libxstream/package.py index ab0c07edbea..9fb24707eaa 100644 --- a/var/spack/repos/builtin/packages/libxstream/package.py +++ b/var/spack/repos/builtin/packages/libxstream/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxt/package.py b/var/spack/repos/builtin/packages/libxt/package.py index 0dbe2dc45e0..612dc8b8ef5 100644 --- a/var/spack/repos/builtin/packages/libxt/package.py +++ b/var/spack/repos/builtin/packages/libxt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxtrap/package.py b/var/spack/repos/builtin/packages/libxtrap/package.py index e678b3ae1d8..456201eaa6d 100644 --- a/var/spack/repos/builtin/packages/libxtrap/package.py +++ b/var/spack/repos/builtin/packages/libxtrap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxtst/package.py b/var/spack/repos/builtin/packages/libxtst/package.py index c815af7d2c2..21c08d1b980 100644 --- a/var/spack/repos/builtin/packages/libxtst/package.py +++ b/var/spack/repos/builtin/packages/libxtst/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxv/package.py b/var/spack/repos/builtin/packages/libxv/package.py index 220171ef3b0..f22a88878c5 100644 --- a/var/spack/repos/builtin/packages/libxv/package.py +++ b/var/spack/repos/builtin/packages/libxv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxvmc/package.py b/var/spack/repos/builtin/packages/libxvmc/package.py index 6ce97ed625e..2377e16eaca 100644 --- a/var/spack/repos/builtin/packages/libxvmc/package.py +++ b/var/spack/repos/builtin/packages/libxvmc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxxf86dga/package.py b/var/spack/repos/builtin/packages/libxxf86dga/package.py index 4650264aed8..dd27fc9bd6f 100644 --- a/var/spack/repos/builtin/packages/libxxf86dga/package.py +++ b/var/spack/repos/builtin/packages/libxxf86dga/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxxf86misc/package.py b/var/spack/repos/builtin/packages/libxxf86misc/package.py index 5a6c1f33f69..60137783b1d 100644 --- a/var/spack/repos/builtin/packages/libxxf86misc/package.py +++ b/var/spack/repos/builtin/packages/libxxf86misc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libxxf86vm/package.py b/var/spack/repos/builtin/packages/libxxf86vm/package.py index b85eb07862a..f3a94718902 100644 --- a/var/spack/repos/builtin/packages/libxxf86vm/package.py +++ b/var/spack/repos/builtin/packages/libxxf86vm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libyogrt/package.py b/var/spack/repos/builtin/packages/libyogrt/package.py index 1ad98ebaa0e..1795cc52e6d 100644 --- a/var/spack/repos/builtin/packages/libyogrt/package.py +++ b/var/spack/repos/builtin/packages/libyogrt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/libzip/package.py b/var/spack/repos/builtin/packages/libzip/package.py index 073b8df36f2..40b4d70fc71 100644 --- a/var/spack/repos/builtin/packages/libzip/package.py +++ b/var/spack/repos/builtin/packages/libzip/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py index be482011153..843259e8da7 100644 --- a/var/spack/repos/builtin/packages/likwid/package.py +++ b/var/spack/repos/builtin/packages/likwid/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/linux-headers/package.py b/var/spack/repos/builtin/packages/linux-headers/package.py index b996192e675..02352701790 100644 --- a/var/spack/repos/builtin/packages/linux-headers/package.py +++ b/var/spack/repos/builtin/packages/linux-headers/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/listres/package.py b/var/spack/repos/builtin/packages/listres/package.py index c654945728b..7ee0eb708eb 100644 --- a/var/spack/repos/builtin/packages/listres/package.py +++ b/var/spack/repos/builtin/packages/listres/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/llvm-lld/package.py b/var/spack/repos/builtin/packages/llvm-lld/package.py index 5619f1132d9..290fec80296 100644 --- a/var/spack/repos/builtin/packages/llvm-lld/package.py +++ b/var/spack/repos/builtin/packages/llvm-lld/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py index edbd9f04e18..ee1c28fbee8 100644 --- a/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py +++ b/var/spack/repos/builtin/packages/llvm-openmp-ompt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index c09dbe15714..c9319cdcfce 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lmdb/package.py b/var/spack/repos/builtin/packages/lmdb/package.py index aae962db151..5aeae301bce 100644 --- a/var/spack/repos/builtin/packages/lmdb/package.py +++ b/var/spack/repos/builtin/packages/lmdb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 08a01647a4a..dc720a257a3 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lndir/package.py b/var/spack/repos/builtin/packages/lndir/package.py index 51b0a09228d..49e302df9e6 100644 --- a/var/spack/repos/builtin/packages/lndir/package.py +++ b/var/spack/repos/builtin/packages/lndir/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/log4cxx/package.py b/var/spack/repos/builtin/packages/log4cxx/package.py index 14715f36cfd..570ab84cf9b 100644 --- a/var/spack/repos/builtin/packages/log4cxx/package.py +++ b/var/spack/repos/builtin/packages/log4cxx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lrslib/package.py b/var/spack/repos/builtin/packages/lrslib/package.py index 19e44b911f6..83046ea8625 100644 --- a/var/spack/repos/builtin/packages/lrslib/package.py +++ b/var/spack/repos/builtin/packages/lrslib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lrzip/package.py b/var/spack/repos/builtin/packages/lrzip/package.py index 73941adf8d1..fd5a03dc004 100644 --- a/var/spack/repos/builtin/packages/lrzip/package.py +++ b/var/spack/repos/builtin/packages/lrzip/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lua-jit/package.py b/var/spack/repos/builtin/packages/lua-jit/package.py index c32226dd12f..052cc3d4e62 100644 --- a/var/spack/repos/builtin/packages/lua-jit/package.py +++ b/var/spack/repos/builtin/packages/lua-jit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lua-luafilesystem/package.py b/var/spack/repos/builtin/packages/lua-luafilesystem/package.py index 806d0d2cd7f..0a97df38b98 100644 --- a/var/spack/repos/builtin/packages/lua-luafilesystem/package.py +++ b/var/spack/repos/builtin/packages/lua-luafilesystem/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lua-luaposix/package.py b/var/spack/repos/builtin/packages/lua-luaposix/package.py index 120a871e265..158e5761f3e 100644 --- a/var/spack/repos/builtin/packages/lua-luaposix/package.py +++ b/var/spack/repos/builtin/packages/lua-luaposix/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index ecb2a8b5435..0db2cb21fc5 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/luit/package.py b/var/spack/repos/builtin/packages/luit/package.py index b016d0eaa7a..c75f77fd70d 100644 --- a/var/spack/repos/builtin/packages/luit/package.py +++ b/var/spack/repos/builtin/packages/luit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lulesh/package.py b/var/spack/repos/builtin/packages/lulesh/package.py index 2dd4a4edd23..eb6aa076b30 100644 --- a/var/spack/repos/builtin/packages/lulesh/package.py +++ b/var/spack/repos/builtin/packages/lulesh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lwgrp/package.py b/var/spack/repos/builtin/packages/lwgrp/package.py index de446930988..440634004cc 100644 --- a/var/spack/repos/builtin/packages/lwgrp/package.py +++ b/var/spack/repos/builtin/packages/lwgrp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lwm2/package.py b/var/spack/repos/builtin/packages/lwm2/package.py index d96a9e1c0d9..e58f7d8ef25 100644 --- a/var/spack/repos/builtin/packages/lwm2/package.py +++ b/var/spack/repos/builtin/packages/lwm2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lz4/package.py b/var/spack/repos/builtin/packages/lz4/package.py index c7a46be3ff8..e43e4f43ea6 100644 --- a/var/spack/repos/builtin/packages/lz4/package.py +++ b/var/spack/repos/builtin/packages/lz4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lzma/package.py b/var/spack/repos/builtin/packages/lzma/package.py index 577f35e4cfe..bb84e21ae27 100644 --- a/var/spack/repos/builtin/packages/lzma/package.py +++ b/var/spack/repos/builtin/packages/lzma/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/lzo/package.py b/var/spack/repos/builtin/packages/lzo/package.py index 98cbadbfb74..255a61e44f5 100644 --- a/var/spack/repos/builtin/packages/lzo/package.py +++ b/var/spack/repos/builtin/packages/lzo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index 550e3067124..5c9655d7e3e 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mafft/package.py b/var/spack/repos/builtin/packages/mafft/package.py index 47d05af711a..bc9d0fb1a0f 100644 --- a/var/spack/repos/builtin/packages/mafft/package.py +++ b/var/spack/repos/builtin/packages/mafft/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index 426695a3dd6..552696417e9 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py index 74f265e329d..545f75d79c8 100644 --- a/var/spack/repos/builtin/packages/magma/package.py +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/makedepend/package.py b/var/spack/repos/builtin/packages/makedepend/package.py index e1b254be1ce..9e098cece73 100644 --- a/var/spack/repos/builtin/packages/makedepend/package.py +++ b/var/spack/repos/builtin/packages/makedepend/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/man-db/package.py b/var/spack/repos/builtin/packages/man-db/package.py index 9c038d03e29..afa60b8f450 100644 --- a/var/spack/repos/builtin/packages/man-db/package.py +++ b/var/spack/repos/builtin/packages/man-db/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mariadb/package.py b/var/spack/repos/builtin/packages/mariadb/package.py index 78332a05b4a..35ef491eb88 100644 --- a/var/spack/repos/builtin/packages/mariadb/package.py +++ b/var/spack/repos/builtin/packages/mariadb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/matio/package.py b/var/spack/repos/builtin/packages/matio/package.py index eb8c517e635..cf04218e973 100644 --- a/var/spack/repos/builtin/packages/matio/package.py +++ b/var/spack/repos/builtin/packages/matio/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/matlab/package.py b/var/spack/repos/builtin/packages/matlab/package.py index fbd272393ed..4dd318c8e8a 100644 --- a/var/spack/repos/builtin/packages/matlab/package.py +++ b/var/spack/repos/builtin/packages/matlab/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/maven/package.py b/var/spack/repos/builtin/packages/maven/package.py index 550ce467e25..340dd2c3699 100644 --- a/var/spack/repos/builtin/packages/maven/package.py +++ b/var/spack/repos/builtin/packages/maven/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/maverick/package.py b/var/spack/repos/builtin/packages/maverick/package.py index b480e5fc483..c8ce9b91b94 100644 --- a/var/spack/repos/builtin/packages/maverick/package.py +++ b/var/spack/repos/builtin/packages/maverick/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mawk/package.py b/var/spack/repos/builtin/packages/mawk/package.py index 872fcbe1011..16784d0ee45 100644 --- a/var/spack/repos/builtin/packages/mawk/package.py +++ b/var/spack/repos/builtin/packages/mawk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py index 09820321ded..533455fb6a4 100644 --- a/var/spack/repos/builtin/packages/mbedtls/package.py +++ b/var/spack/repos/builtin/packages/mbedtls/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mcl/package.py b/var/spack/repos/builtin/packages/mcl/package.py index af3116313e4..9ee387fd0c3 100644 --- a/var/spack/repos/builtin/packages/mcl/package.py +++ b/var/spack/repos/builtin/packages/mcl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mdtest/package.py b/var/spack/repos/builtin/packages/mdtest/package.py index a77494b9b63..e8ef88cb5b7 100644 --- a/var/spack/repos/builtin/packages/mdtest/package.py +++ b/var/spack/repos/builtin/packages/mdtest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/meep/package.py b/var/spack/repos/builtin/packages/meep/package.py index f99e1506a34..bc0a38ef45f 100644 --- a/var/spack/repos/builtin/packages/meep/package.py +++ b/var/spack/repos/builtin/packages/meep/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/memaxes/package.py b/var/spack/repos/builtin/packages/memaxes/package.py index f426309b99d..a92cf8d5f1f 100644 --- a/var/spack/repos/builtin/packages/memaxes/package.py +++ b/var/spack/repos/builtin/packages/memaxes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/meme/package.py b/var/spack/repos/builtin/packages/meme/package.py index 05e88fec8b9..9b523645c4f 100644 --- a/var/spack/repos/builtin/packages/meme/package.py +++ b/var/spack/repos/builtin/packages/meme/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mercurial/package.py b/var/spack/repos/builtin/packages/mercurial/package.py index b6da9e6ea9b..e0d10edd398 100644 --- a/var/spack/repos/builtin/packages/mercurial/package.py +++ b/var/spack/repos/builtin/packages/mercurial/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mesa-glu/package.py b/var/spack/repos/builtin/packages/mesa-glu/package.py index 54ad8992ec8..6a8031b1883 100644 --- a/var/spack/repos/builtin/packages/mesa-glu/package.py +++ b/var/spack/repos/builtin/packages/mesa-glu/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index de36acbb732..33d05012287 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/meshkit/package.py b/var/spack/repos/builtin/packages/meshkit/package.py index 121ba78bcb5..b9f8d5d3844 100644 --- a/var/spack/repos/builtin/packages/meshkit/package.py +++ b/var/spack/repos/builtin/packages/meshkit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/meson/package.py b/var/spack/repos/builtin/packages/meson/package.py index 26e4129b1d7..3d771a63297 100644 --- a/var/spack/repos/builtin/packages/meson/package.py +++ b/var/spack/repos/builtin/packages/meson/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mesquite/package.py b/var/spack/repos/builtin/packages/mesquite/package.py index fd18d4ddae7..ece147dec43 100644 --- a/var/spack/repos/builtin/packages/mesquite/package.py +++ b/var/spack/repos/builtin/packages/mesquite/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py index 43feace9312..122ae51d325 100644 --- a/var/spack/repos/builtin/packages/metis/package.py +++ b/var/spack/repos/builtin/packages/metis/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index ffd3233a9f8..da7da5cce43 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/microbiomeutil/package.py b/var/spack/repos/builtin/packages/microbiomeutil/package.py index 7be7a4ac0d4..e414a916aec 100644 --- a/var/spack/repos/builtin/packages/microbiomeutil/package.py +++ b/var/spack/repos/builtin/packages/microbiomeutil/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/miniaero/package.py b/var/spack/repos/builtin/packages/miniaero/package.py index 471ecb9d0f5..0d42204e032 100644 --- a/var/spack/repos/builtin/packages/miniaero/package.py +++ b/var/spack/repos/builtin/packages/miniaero/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/miniamr/package.py b/var/spack/repos/builtin/packages/miniamr/package.py index 7dc138ed449..9122dc86a5f 100644 --- a/var/spack/repos/builtin/packages/miniamr/package.py +++ b/var/spack/repos/builtin/packages/miniamr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/miniconda2/package.py b/var/spack/repos/builtin/packages/miniconda2/package.py index aed9f8e08c1..7f73cd09b02 100644 --- a/var/spack/repos/builtin/packages/miniconda2/package.py +++ b/var/spack/repos/builtin/packages/miniconda2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/miniconda3/package.py b/var/spack/repos/builtin/packages/miniconda3/package.py index bbe7df3acd8..6584548e63c 100644 --- a/var/spack/repos/builtin/packages/miniconda3/package.py +++ b/var/spack/repos/builtin/packages/miniconda3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/minife/package.py b/var/spack/repos/builtin/packages/minife/package.py index ced755d112f..33aa83fdc57 100644 --- a/var/spack/repos/builtin/packages/minife/package.py +++ b/var/spack/repos/builtin/packages/minife/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/minighost/package.py b/var/spack/repos/builtin/packages/minighost/package.py index 59b0b33dc4c..a24e202be40 100644 --- a/var/spack/repos/builtin/packages/minighost/package.py +++ b/var/spack/repos/builtin/packages/minighost/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/minigmg/package.py b/var/spack/repos/builtin/packages/minigmg/package.py index 799fb1ee6f8..8b305e43c43 100644 --- a/var/spack/repos/builtin/packages/minigmg/package.py +++ b/var/spack/repos/builtin/packages/minigmg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/minimd/package.py b/var/spack/repos/builtin/packages/minimd/package.py index a8d72e70157..386fdd0f8be 100644 --- a/var/spack/repos/builtin/packages/minimd/package.py +++ b/var/spack/repos/builtin/packages/minimd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/minismac2d/package.py b/var/spack/repos/builtin/packages/minismac2d/package.py index b519128b19a..acacaafca0d 100644 --- a/var/spack/repos/builtin/packages/minismac2d/package.py +++ b/var/spack/repos/builtin/packages/minismac2d/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/minixyce/package.py b/var/spack/repos/builtin/packages/minixyce/package.py index 46d160d2da1..7e31b58525b 100644 --- a/var/spack/repos/builtin/packages/minixyce/package.py +++ b/var/spack/repos/builtin/packages/minixyce/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mitofates/package.py b/var/spack/repos/builtin/packages/mitofates/package.py index 0ca4ae58f29..4f97fdb8037 100644 --- a/var/spack/repos/builtin/packages/mitofates/package.py +++ b/var/spack/repos/builtin/packages/mitofates/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mitos/package.py b/var/spack/repos/builtin/packages/mitos/package.py index 2c2177f9687..3da5f77e07d 100644 --- a/var/spack/repos/builtin/packages/mitos/package.py +++ b/var/spack/repos/builtin/packages/mitos/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mkfontdir/package.py b/var/spack/repos/builtin/packages/mkfontdir/package.py index 40a22d2d4d8..03462c7269f 100644 --- a/var/spack/repos/builtin/packages/mkfontdir/package.py +++ b/var/spack/repos/builtin/packages/mkfontdir/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mkfontscale/package.py b/var/spack/repos/builtin/packages/mkfontscale/package.py index d2114c4dc56..934065ef4c8 100644 --- a/var/spack/repos/builtin/packages/mkfontscale/package.py +++ b/var/spack/repos/builtin/packages/mkfontscale/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/moab/package.py b/var/spack/repos/builtin/packages/moab/package.py index 1bf81b34ead..e44a181dfa8 100644 --- a/var/spack/repos/builtin/packages/moab/package.py +++ b/var/spack/repos/builtin/packages/moab/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/molcas/package.py b/var/spack/repos/builtin/packages/molcas/package.py index c5d92b9c50f..1b08b0ce76d 100644 --- a/var/spack/repos/builtin/packages/molcas/package.py +++ b/var/spack/repos/builtin/packages/molcas/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mono/package.py b/var/spack/repos/builtin/packages/mono/package.py index a63ab9d6227..e636d16e207 100644 --- a/var/spack/repos/builtin/packages/mono/package.py +++ b/var/spack/repos/builtin/packages/mono/package.py @@ -1,5 +1,5 @@ ############################################################################### -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mosh/package.py b/var/spack/repos/builtin/packages/mosh/package.py index 2fb1fd5e99e..367f5cb7248 100644 --- a/var/spack/repos/builtin/packages/mosh/package.py +++ b/var/spack/repos/builtin/packages/mosh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mothur/package.py b/var/spack/repos/builtin/packages/mothur/package.py index 0caf0bc1f95..5f3f829fbdd 100644 --- a/var/spack/repos/builtin/packages/mothur/package.py +++ b/var/spack/repos/builtin/packages/mothur/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mozjs/package.py b/var/spack/repos/builtin/packages/mozjs/package.py index 6fbb8133ce6..2147c24c739 100644 --- a/var/spack/repos/builtin/packages/mozjs/package.py +++ b/var/spack/repos/builtin/packages/mozjs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpc/package.py b/var/spack/repos/builtin/packages/mpc/package.py index 5996b424b37..c33730b227f 100644 --- a/var/spack/repos/builtin/packages/mpc/package.py +++ b/var/spack/repos/builtin/packages/mpc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpe2/package.py b/var/spack/repos/builtin/packages/mpe2/package.py index aa897f34fd0..ef48132af1d 100644 --- a/var/spack/repos/builtin/packages/mpe2/package.py +++ b/var/spack/repos/builtin/packages/mpe2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpest/package.py b/var/spack/repos/builtin/packages/mpest/package.py index a00eb37bb89..245de852ff5 100644 --- a/var/spack/repos/builtin/packages/mpest/package.py +++ b/var/spack/repos/builtin/packages/mpest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpfr/package.py b/var/spack/repos/builtin/packages/mpfr/package.py index c809b6bbb49..3e531ef246a 100644 --- a/var/spack/repos/builtin/packages/mpfr/package.py +++ b/var/spack/repos/builtin/packages/mpfr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpibash/package.py b/var/spack/repos/builtin/packages/mpibash/package.py index cfa8f305025..d93a092fa88 100644 --- a/var/spack/repos/builtin/packages/mpibash/package.py +++ b/var/spack/repos/builtin/packages/mpibash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpiblast/package.py b/var/spack/repos/builtin/packages/mpiblast/package.py index c5e283dbcf6..d14a640aeaa 100644 --- a/var/spack/repos/builtin/packages/mpiblast/package.py +++ b/var/spack/repos/builtin/packages/mpiblast/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index 0663ce2b7b6..4aba60940dd 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpileaks/package.py b/var/spack/repos/builtin/packages/mpileaks/package.py index d212019ddd5..12caf7a91cf 100644 --- a/var/spack/repos/builtin/packages/mpileaks/package.py +++ b/var/spack/repos/builtin/packages/mpileaks/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpip/package.py b/var/spack/repos/builtin/packages/mpip/package.py index 4bc4b01ef06..4c74b1617da 100644 --- a/var/spack/repos/builtin/packages/mpip/package.py +++ b/var/spack/repos/builtin/packages/mpip/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpir/package.py b/var/spack/repos/builtin/packages/mpir/package.py index 033bbcd925e..e45f19d8149 100644 --- a/var/spack/repos/builtin/packages/mpir/package.py +++ b/var/spack/repos/builtin/packages/mpir/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mpix-launch-swift/package.py b/var/spack/repos/builtin/packages/mpix-launch-swift/package.py index 72e93b79921..66c620a7c9e 100644 --- a/var/spack/repos/builtin/packages/mpix-launch-swift/package.py +++ b/var/spack/repos/builtin/packages/mpix-launch-swift/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mrbayes/package.py b/var/spack/repos/builtin/packages/mrbayes/package.py index 05038b69314..8081ef70103 100644 --- a/var/spack/repos/builtin/packages/mrbayes/package.py +++ b/var/spack/repos/builtin/packages/mrbayes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mrnet/package.py b/var/spack/repos/builtin/packages/mrnet/package.py index 46e00fea580..7ad7b88436e 100644 --- a/var/spack/repos/builtin/packages/mrnet/package.py +++ b/var/spack/repos/builtin/packages/mrnet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/msgpack-c/package.py b/var/spack/repos/builtin/packages/msgpack-c/package.py index a22fd0e3128..5dc52d98c2d 100644 --- a/var/spack/repos/builtin/packages/msgpack-c/package.py +++ b/var/spack/repos/builtin/packages/msgpack-c/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/multiverso/package.py b/var/spack/repos/builtin/packages/multiverso/package.py index 285f53ef3c6..bfff91be545 100644 --- a/var/spack/repos/builtin/packages/multiverso/package.py +++ b/var/spack/repos/builtin/packages/multiverso/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mummer/package.py b/var/spack/repos/builtin/packages/mummer/package.py index 72450db5373..58d3276cc5e 100644 --- a/var/spack/repos/builtin/packages/mummer/package.py +++ b/var/spack/repos/builtin/packages/mummer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py index 60a46723c4c..c8faf0bcd03 100644 --- a/var/spack/repos/builtin/packages/mumps/package.py +++ b/var/spack/repos/builtin/packages/mumps/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/munge/package.py b/var/spack/repos/builtin/packages/munge/package.py index f26a041f068..1e6f6d4426d 100644 --- a/var/spack/repos/builtin/packages/munge/package.py +++ b/var/spack/repos/builtin/packages/munge/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/muparser/package.py b/var/spack/repos/builtin/packages/muparser/package.py index 7c63973006c..cebacc0a1aa 100644 --- a/var/spack/repos/builtin/packages/muparser/package.py +++ b/var/spack/repos/builtin/packages/muparser/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/muscle/package.py b/var/spack/repos/builtin/packages/muscle/package.py index 3aac5fb5bb2..4b02aa1a314 100644 --- a/var/spack/repos/builtin/packages/muscle/package.py +++ b/var/spack/repos/builtin/packages/muscle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/muse/package.py b/var/spack/repos/builtin/packages/muse/package.py index 54dcdf9d154..880efd84f24 100644 --- a/var/spack/repos/builtin/packages/muse/package.py +++ b/var/spack/repos/builtin/packages/muse/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/muster/package.py b/var/spack/repos/builtin/packages/muster/package.py index 4f61938a804..dc19311612e 100644 --- a/var/spack/repos/builtin/packages/muster/package.py +++ b/var/spack/repos/builtin/packages/muster/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 675731146eb..fe37d302b6a 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py index da5ef6437b6..77833c4934b 100644 --- a/var/spack/repos/builtin/packages/mxml/package.py +++ b/var/spack/repos/builtin/packages/mxml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nag/package.py b/var/spack/repos/builtin/packages/nag/package.py index d5dd8feb2d9..7ebdb0bfb04 100644 --- a/var/spack/repos/builtin/packages/nag/package.py +++ b/var/spack/repos/builtin/packages/nag/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nalu/package.py b/var/spack/repos/builtin/packages/nalu/package.py index 3836c7a17f6..a8eb4d4557e 100644 --- a/var/spack/repos/builtin/packages/nalu/package.py +++ b/var/spack/repos/builtin/packages/nalu/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/namd/package.py b/var/spack/repos/builtin/packages/namd/package.py index d7f77835a8a..85b272d26b2 100644 --- a/var/spack/repos/builtin/packages/namd/package.py +++ b/var/spack/repos/builtin/packages/namd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nano/package.py b/var/spack/repos/builtin/packages/nano/package.py index 3eef97039cf..18841072811 100644 --- a/var/spack/repos/builtin/packages/nano/package.py +++ b/var/spack/repos/builtin/packages/nano/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nanoflann/package.py b/var/spack/repos/builtin/packages/nanoflann/package.py index da0ec728b0d..1a945117181 100644 --- a/var/spack/repos/builtin/packages/nanoflann/package.py +++ b/var/spack/repos/builtin/packages/nanoflann/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nasm/package.py b/var/spack/repos/builtin/packages/nasm/package.py index 73a4e43a4fe..8fe00867e36 100644 --- a/var/spack/repos/builtin/packages/nasm/package.py +++ b/var/spack/repos/builtin/packages/nasm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nauty/package.py b/var/spack/repos/builtin/packages/nauty/package.py index 1dc60a28ac4..a85823d65a0 100644 --- a/var/spack/repos/builtin/packages/nauty/package.py +++ b/var/spack/repos/builtin/packages/nauty/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nccl/package.py b/var/spack/repos/builtin/packages/nccl/package.py index 409a2709713..0d8a9acf264 100644 --- a/var/spack/repos/builtin/packages/nccl/package.py +++ b/var/spack/repos/builtin/packages/nccl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nccmp/package.py b/var/spack/repos/builtin/packages/nccmp/package.py index 16a74678570..1bed4b78db8 100644 --- a/var/spack/repos/builtin/packages/nccmp/package.py +++ b/var/spack/repos/builtin/packages/nccmp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ncdu/package.py b/var/spack/repos/builtin/packages/ncdu/package.py index 9adacc0f317..4f5d25cfa47 100644 --- a/var/spack/repos/builtin/packages/ncdu/package.py +++ b/var/spack/repos/builtin/packages/ncdu/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ncftp/package.py b/var/spack/repos/builtin/packages/ncftp/package.py index 626045a19c3..f84b23d040d 100644 --- a/var/spack/repos/builtin/packages/ncftp/package.py +++ b/var/spack/repos/builtin/packages/ncftp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index 21d9a0ca885..49ebbc8f47f 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 85af71cbdf8..7c9736f5131 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py index 6754a372cd4..5f62ae1df04 100644 --- a/var/spack/repos/builtin/packages/ncurses/package.py +++ b/var/spack/repos/builtin/packages/ncurses/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py index 253f438b472..2845c7fc509 100644 --- a/var/spack/repos/builtin/packages/ncview/package.py +++ b/var/spack/repos/builtin/packages/ncview/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ndiff/package.py b/var/spack/repos/builtin/packages/ndiff/package.py index 66bf6d6994f..f8806aa99ae 100644 --- a/var/spack/repos/builtin/packages/ndiff/package.py +++ b/var/spack/repos/builtin/packages/ndiff/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nekbone/package.py b/var/spack/repos/builtin/packages/nekbone/package.py index 22d07661e5f..e1c3220545b 100644 --- a/var/spack/repos/builtin/packages/nekbone/package.py +++ b/var/spack/repos/builtin/packages/nekbone/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/netcdf-cxx/package.py b/var/spack/repos/builtin/packages/netcdf-cxx/package.py index 120fa07a4cb..89617e2dc17 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py index 2493a3e908e..4fac7909c8b 100644 --- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py +++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py index 8c2d1670007..87b342063a2 100644 --- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py +++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py index 90dd4dd5d73..06d6ff37e8a 100644 --- a/var/spack/repos/builtin/packages/netcdf/package.py +++ b/var/spack/repos/builtin/packages/netcdf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/netgauge/package.py b/var/spack/repos/builtin/packages/netgauge/package.py index b1880733c9c..685d0b1abfd 100644 --- a/var/spack/repos/builtin/packages/netgauge/package.py +++ b/var/spack/repos/builtin/packages/netgauge/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/netgen/package.py b/var/spack/repos/builtin/packages/netgen/package.py index ee96fac04dd..05686946321 100644 --- a/var/spack/repos/builtin/packages/netgen/package.py +++ b/var/spack/repos/builtin/packages/netgen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py index f1274b5c293..3df4d3282c1 100644 --- a/var/spack/repos/builtin/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py @@ -1,5 +1,5 @@ ############################################################################# -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py index 6c6114f0115..e0cb90965c2 100644 --- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py index 83cbcb80dc6..6a8f8670322 100644 --- a/var/spack/repos/builtin/packages/nettle/package.py +++ b/var/spack/repos/builtin/packages/nettle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index 2917447a362..5acf1bea46b 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nfft/package.py b/var/spack/repos/builtin/packages/nfft/package.py index 771ed36cb20..a5f04d73701 100644 --- a/var/spack/repos/builtin/packages/nfft/package.py +++ b/var/spack/repos/builtin/packages/nfft/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nginx/package.py b/var/spack/repos/builtin/packages/nginx/package.py index a18ad9b2937..4d15bbcfd4e 100644 --- a/var/spack/repos/builtin/packages/nginx/package.py +++ b/var/spack/repos/builtin/packages/nginx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ngmlr/package.py b/var/spack/repos/builtin/packages/ngmlr/package.py index 91780c2b056..96379ea74ca 100644 --- a/var/spack/repos/builtin/packages/ngmlr/package.py +++ b/var/spack/repos/builtin/packages/ngmlr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ninja-fortran/package.py b/var/spack/repos/builtin/packages/ninja-fortran/package.py index 349b60bae98..f6b374ba1a6 100644 --- a/var/spack/repos/builtin/packages/ninja-fortran/package.py +++ b/var/spack/repos/builtin/packages/ninja-fortran/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ninja/package.py b/var/spack/repos/builtin/packages/ninja/package.py index 7a53ae684c0..e598ae2d84d 100644 --- a/var/spack/repos/builtin/packages/ninja/package.py +++ b/var/spack/repos/builtin/packages/ninja/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nmap/package.py b/var/spack/repos/builtin/packages/nmap/package.py index 20204c0b06f..e3504f533c9 100644 --- a/var/spack/repos/builtin/packages/nmap/package.py +++ b/var/spack/repos/builtin/packages/nmap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index 5a8772fbf84..3a891031a65 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/notmuch/package.py b/var/spack/repos/builtin/packages/notmuch/package.py index 0462867f540..4752ea45668 100644 --- a/var/spack/repos/builtin/packages/notmuch/package.py +++ b/var/spack/repos/builtin/packages/notmuch/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/npb/package.py b/var/spack/repos/builtin/packages/npb/package.py index 26d46c30902..05e8f5ad9d4 100644 --- a/var/spack/repos/builtin/packages/npb/package.py +++ b/var/spack/repos/builtin/packages/npb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/npm/package.py b/var/spack/repos/builtin/packages/npm/package.py index 8e252e7b651..dffc74979ba 100644 --- a/var/spack/repos/builtin/packages/npm/package.py +++ b/var/spack/repos/builtin/packages/npm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/npth/package.py b/var/spack/repos/builtin/packages/npth/package.py index fa166a45c16..451b1c56ea1 100644 --- a/var/spack/repos/builtin/packages/npth/package.py +++ b/var/spack/repos/builtin/packages/npth/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nspr/package.py b/var/spack/repos/builtin/packages/nspr/package.py index bda5db551b7..ed0e7cc0222 100644 --- a/var/spack/repos/builtin/packages/nspr/package.py +++ b/var/spack/repos/builtin/packages/nspr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/numdiff/package.py b/var/spack/repos/builtin/packages/numdiff/package.py index fbaf5a20220..7a0eac3e895 100644 --- a/var/spack/repos/builtin/packages/numdiff/package.py +++ b/var/spack/repos/builtin/packages/numdiff/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nut/package.py b/var/spack/repos/builtin/packages/nut/package.py index 561e52f1a59..32a323cfd4f 100644 --- a/var/spack/repos/builtin/packages/nut/package.py +++ b/var/spack/repos/builtin/packages/nut/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index f526dcda887..8148d385a3f 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ocaml/package.py b/var/spack/repos/builtin/packages/ocaml/package.py index dc1c0dde200..d547a507b04 100644 --- a/var/spack/repos/builtin/packages/ocaml/package.py +++ b/var/spack/repos/builtin/packages/ocaml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py index 9f7fd8eef7e..b6e016361ea 100644 --- a/var/spack/repos/builtin/packages/oce/package.py +++ b/var/spack/repos/builtin/packages/oce/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/oclock/package.py b/var/spack/repos/builtin/packages/oclock/package.py index 3db0d63bbeb..ae79f7fc754 100644 --- a/var/spack/repos/builtin/packages/oclock/package.py +++ b/var/spack/repos/builtin/packages/oclock/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/octave-splines/package.py b/var/spack/repos/builtin/packages/octave-splines/package.py index 51de0858ab4..4bdd134f85c 100644 --- a/var/spack/repos/builtin/packages/octave-splines/package.py +++ b/var/spack/repos/builtin/packages/octave-splines/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index 29896172b15..7bc5b2a6ef6 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py index 9e70699d844..972d1377146 100644 --- a/var/spack/repos/builtin/packages/octopus/package.py +++ b/var/spack/repos/builtin/packages/octopus/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ompss/package.py b/var/spack/repos/builtin/packages/ompss/package.py index cf03bc6fdef..11c4417c21e 100644 --- a/var/spack/repos/builtin/packages/ompss/package.py +++ b/var/spack/repos/builtin/packages/ompss/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ompt-openmp/package.py b/var/spack/repos/builtin/packages/ompt-openmp/package.py index 387edd7c646..7bdc13b60cd 100644 --- a/var/spack/repos/builtin/packages/ompt-openmp/package.py +++ b/var/spack/repos/builtin/packages/ompt-openmp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/oniguruma/package.py b/var/spack/repos/builtin/packages/oniguruma/package.py index 4a9bc7c12b1..b4e01ed423d 100644 --- a/var/spack/repos/builtin/packages/oniguruma/package.py +++ b/var/spack/repos/builtin/packages/oniguruma/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ont-albacore/package.py b/var/spack/repos/builtin/packages/ont-albacore/package.py index 812bd3294db..7ae92e63435 100644 --- a/var/spack/repos/builtin/packages/ont-albacore/package.py +++ b/var/spack/repos/builtin/packages/ont-albacore/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/opari2/package.py b/var/spack/repos/builtin/packages/opari2/package.py index bd79943c64e..18d41dca449 100644 --- a/var/spack/repos/builtin/packages/opari2/package.py +++ b/var/spack/repos/builtin/packages/opari2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/openbabel/package.py b/var/spack/repos/builtin/packages/openbabel/package.py index e67785eca83..38aad20d248 100644 --- a/var/spack/repos/builtin/packages/openbabel/package.py +++ b/var/spack/repos/builtin/packages/openbabel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 73b89fcd233..74fbfc45313 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/opencoarrays/package.py b/var/spack/repos/builtin/packages/opencoarrays/package.py index 37ae236c0ad..bf83f8e5ded 100644 --- a/var/spack/repos/builtin/packages/opencoarrays/package.py +++ b/var/spack/repos/builtin/packages/opencoarrays/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py index 5587a893dc2..adddbc1857a 100644 --- a/var/spack/repos/builtin/packages/opencv/package.py +++ b/var/spack/repos/builtin/packages/opencv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/openexr/package.py b/var/spack/repos/builtin/packages/openexr/package.py index b82a305b180..2402126dd12 100644 --- a/var/spack/repos/builtin/packages/openexr/package.py +++ b/var/spack/repos/builtin/packages/openexr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/openfst/package.py b/var/spack/repos/builtin/packages/openfst/package.py index f6fa7b5e565..ca834e684b4 100644 --- a/var/spack/repos/builtin/packages/openfst/package.py +++ b/var/spack/repos/builtin/packages/openfst/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/openjpeg/package.py b/var/spack/repos/builtin/packages/openjpeg/package.py index 977a7b687bc..06a88ffb6be 100644 --- a/var/spack/repos/builtin/packages/openjpeg/package.py +++ b/var/spack/repos/builtin/packages/openjpeg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/openmc/package.py b/var/spack/repos/builtin/packages/openmc/package.py index aed4f4b0e9a..c5eb4a32f7f 100644 --- a/var/spack/repos/builtin/packages/openmc/package.py +++ b/var/spack/repos/builtin/packages/openmc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 7fc50928db1..d62290e78ff 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/openscenegraph/package.py b/var/spack/repos/builtin/packages/openscenegraph/package.py index e90d010e835..96bbfc34883 100644 --- a/var/spack/repos/builtin/packages/openscenegraph/package.py +++ b/var/spack/repos/builtin/packages/openscenegraph/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index 35b8c4b0306..3219d0b2a39 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/opium/package.py b/var/spack/repos/builtin/packages/opium/package.py index 2080fdb9d89..3656236cb02 100644 --- a/var/spack/repos/builtin/packages/opium/package.py +++ b/var/spack/repos/builtin/packages/opium/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/opus/package.py b/var/spack/repos/builtin/packages/opus/package.py index 6c579bca689..5df58d2fcb7 100644 --- a/var/spack/repos/builtin/packages/opus/package.py +++ b/var/spack/repos/builtin/packages/opus/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/orfm/package.py b/var/spack/repos/builtin/packages/orfm/package.py index 11ff3c4c7b0..f83e900b686 100644 --- a/var/spack/repos/builtin/packages/orfm/package.py +++ b/var/spack/repos/builtin/packages/orfm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py index f32262f2401..9454cc1293f 100644 --- a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py +++ b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/otf/package.py b/var/spack/repos/builtin/packages/otf/package.py index 6ac85f4b107..43faffe9d82 100644 --- a/var/spack/repos/builtin/packages/otf/package.py +++ b/var/spack/repos/builtin/packages/otf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/otf2/package.py b/var/spack/repos/builtin/packages/otf2/package.py index cd338f06c6c..272032ca861 100644 --- a/var/spack/repos/builtin/packages/otf2/package.py +++ b/var/spack/repos/builtin/packages/otf2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/p4est/package.py b/var/spack/repos/builtin/packages/p4est/package.py index 9f9c08611d2..c042a691f44 100644 --- a/var/spack/repos/builtin/packages/p4est/package.py +++ b/var/spack/repos/builtin/packages/p4est/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pacbio-daligner/package.py b/var/spack/repos/builtin/packages/pacbio-daligner/package.py index 695c4717f76..8fec14780bb 100644 --- a/var/spack/repos/builtin/packages/pacbio-daligner/package.py +++ b/var/spack/repos/builtin/packages/pacbio-daligner/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pacbio-damasker/package.py b/var/spack/repos/builtin/packages/pacbio-damasker/package.py index b2415fd3406..769a6f3ad83 100644 --- a/var/spack/repos/builtin/packages/pacbio-damasker/package.py +++ b/var/spack/repos/builtin/packages/pacbio-damasker/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pacbio-dazz-db/package.py b/var/spack/repos/builtin/packages/pacbio-dazz-db/package.py index 1223c25f37b..e24173daf3a 100644 --- a/var/spack/repos/builtin/packages/pacbio-dazz-db/package.py +++ b/var/spack/repos/builtin/packages/pacbio-dazz-db/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pacbio-dextractor/package.py b/var/spack/repos/builtin/packages/pacbio-dextractor/package.py index 91a4e6f330b..c9e62947825 100644 --- a/var/spack/repos/builtin/packages/pacbio-dextractor/package.py +++ b/var/spack/repos/builtin/packages/pacbio-dextractor/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pagit/package.py b/var/spack/repos/builtin/packages/pagit/package.py index 2e41d83da37..8a1660ce2ad 100644 --- a/var/spack/repos/builtin/packages/pagit/package.py +++ b/var/spack/repos/builtin/packages/pagit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pagmo/package.py b/var/spack/repos/builtin/packages/pagmo/package.py index bb6136c6ec3..1f822eeb876 100644 --- a/var/spack/repos/builtin/packages/pagmo/package.py +++ b/var/spack/repos/builtin/packages/pagmo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/paml/package.py b/var/spack/repos/builtin/packages/paml/package.py index 693d2b808b9..899ae4db90f 100644 --- a/var/spack/repos/builtin/packages/paml/package.py +++ b/var/spack/repos/builtin/packages/paml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/panda/package.py b/var/spack/repos/builtin/packages/panda/package.py index 5c905fb2d38..63c696af525 100644 --- a/var/spack/repos/builtin/packages/panda/package.py +++ b/var/spack/repos/builtin/packages/panda/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index a95eecf041b..9b6f40426ef 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py index 8b0707b6631..717511b5fae 100644 --- a/var/spack/repos/builtin/packages/papi/package.py +++ b/var/spack/repos/builtin/packages/papi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/paradiseo/package.py b/var/spack/repos/builtin/packages/paradiseo/package.py index fbcf8ca5e56..4e9223e20ae 100644 --- a/var/spack/repos/builtin/packages/paradiseo/package.py +++ b/var/spack/repos/builtin/packages/paradiseo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py index 757a336dd94..65860e596af 100644 --- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py +++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/parallel/package.py b/var/spack/repos/builtin/packages/parallel/package.py index 5dfcc1b06f8..81e4d51d25b 100644 --- a/var/spack/repos/builtin/packages/parallel/package.py +++ b/var/spack/repos/builtin/packages/parallel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/paraver/package.py b/var/spack/repos/builtin/packages/paraver/package.py index a3847dc94d7..f2f97f7e47e 100644 --- a/var/spack/repos/builtin/packages/paraver/package.py +++ b/var/spack/repos/builtin/packages/paraver/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index fb491f58e2f..9a80dd6771b 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py index d7079d0468d..99b7694ff7b 100644 --- a/var/spack/repos/builtin/packages/parmetis/package.py +++ b/var/spack/repos/builtin/packages/parmetis/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/parmgridgen/package.py b/var/spack/repos/builtin/packages/parmgridgen/package.py index 8630a139ec1..140e266a7ac 100644 --- a/var/spack/repos/builtin/packages/parmgridgen/package.py +++ b/var/spack/repos/builtin/packages/parmgridgen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/parpack/package.py b/var/spack/repos/builtin/packages/parpack/package.py index f3420cbb7a5..3a1b6deafae 100644 --- a/var/spack/repos/builtin/packages/parpack/package.py +++ b/var/spack/repos/builtin/packages/parpack/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/parsimonator/package.py b/var/spack/repos/builtin/packages/parsimonator/package.py index 5b979f23e35..b58d9215ba0 100644 --- a/var/spack/repos/builtin/packages/parsimonator/package.py +++ b/var/spack/repos/builtin/packages/parsimonator/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/partitionfinder/package.py b/var/spack/repos/builtin/packages/partitionfinder/package.py index 523550a64b7..ea00ac76c06 100644 --- a/var/spack/repos/builtin/packages/partitionfinder/package.py +++ b/var/spack/repos/builtin/packages/partitionfinder/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/patch/package.py b/var/spack/repos/builtin/packages/patch/package.py index 1b0e6389a63..69a3e676be1 100644 --- a/var/spack/repos/builtin/packages/patch/package.py +++ b/var/spack/repos/builtin/packages/patch/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/patchelf/package.py b/var/spack/repos/builtin/packages/patchelf/package.py index c25361b76e9..6a6950617b5 100644 --- a/var/spack/repos/builtin/packages/patchelf/package.py +++ b/var/spack/repos/builtin/packages/patchelf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pathfinder/package.py b/var/spack/repos/builtin/packages/pathfinder/package.py index 85432ffd491..516389a353a 100644 --- a/var/spack/repos/builtin/packages/pathfinder/package.py +++ b/var/spack/repos/builtin/packages/pathfinder/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pbmpi/package.py b/var/spack/repos/builtin/packages/pbmpi/package.py index 548c67c3586..56973cd319b 100644 --- a/var/spack/repos/builtin/packages/pbmpi/package.py +++ b/var/spack/repos/builtin/packages/pbmpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pcma/package.py b/var/spack/repos/builtin/packages/pcma/package.py index 944c1ac37bb..f024e4a0a61 100644 --- a/var/spack/repos/builtin/packages/pcma/package.py +++ b/var/spack/repos/builtin/packages/pcma/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pcre/package.py b/var/spack/repos/builtin/packages/pcre/package.py index 15c5b9854c9..4175ab3f8bc 100644 --- a/var/spack/repos/builtin/packages/pcre/package.py +++ b/var/spack/repos/builtin/packages/pcre/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pcre2/package.py b/var/spack/repos/builtin/packages/pcre2/package.py index 07b2a9085b0..e904ec70527 100644 --- a/var/spack/repos/builtin/packages/pcre2/package.py +++ b/var/spack/repos/builtin/packages/pcre2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pdsh/package.py b/var/spack/repos/builtin/packages/pdsh/package.py index 06457ba38cd..1e70221eb64 100644 --- a/var/spack/repos/builtin/packages/pdsh/package.py +++ b/var/spack/repos/builtin/packages/pdsh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index 42cdfbc41b5..6895fd0578e 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pennant/package.py b/var/spack/repos/builtin/packages/pennant/package.py index b8e71c7f316..3438c4f83eb 100644 --- a/var/spack/repos/builtin/packages/pennant/package.py +++ b/var/spack/repos/builtin/packages/pennant/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-dbfile/package.py b/var/spack/repos/builtin/packages/perl-dbfile/package.py index 7445d6e63ab..e50c08631a7 100644 --- a/var/spack/repos/builtin/packages/perl-dbfile/package.py +++ b/var/spack/repos/builtin/packages/perl-dbfile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-dbi/package.py b/var/spack/repos/builtin/packages/perl-dbi/package.py index d9de80edd05..61cb017877c 100644 --- a/var/spack/repos/builtin/packages/perl-dbi/package.py +++ b/var/spack/repos/builtin/packages/perl-dbi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py b/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py index f8bc19cf354..9132542144b 100644 --- a/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py +++ b/var/spack/repos/builtin/packages/perl-extutils-makemaker/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-intervaltree/package.py b/var/spack/repos/builtin/packages/perl-intervaltree/package.py index bcf1204c538..e4216b6599b 100644 --- a/var/spack/repos/builtin/packages/perl-intervaltree/package.py +++ b/var/spack/repos/builtin/packages/perl-intervaltree/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-math-cdf/package.py b/var/spack/repos/builtin/packages/perl-math-cdf/package.py index 6d7d195dea6..90a4eb5257b 100644 --- a/var/spack/repos/builtin/packages/perl-math-cdf/package.py +++ b/var/spack/repos/builtin/packages/perl-math-cdf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-module-build/package.py b/var/spack/repos/builtin/packages/perl-module-build/package.py index 11f55806475..9a095127c93 100644 --- a/var/spack/repos/builtin/packages/perl-module-build/package.py +++ b/var/spack/repos/builtin/packages/perl-module-build/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-star-fusion/package.py b/var/spack/repos/builtin/packages/perl-star-fusion/package.py index 65d673bf3ba..aa62b5f0709 100644 --- a/var/spack/repos/builtin/packages/perl-star-fusion/package.py +++ b/var/spack/repos/builtin/packages/perl-star-fusion/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-term-readkey/package.py b/var/spack/repos/builtin/packages/perl-term-readkey/package.py index 51599011fad..2ab1ef1eab6 100644 --- a/var/spack/repos/builtin/packages/perl-term-readkey/package.py +++ b/var/spack/repos/builtin/packages/perl-term-readkey/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-uri-escape/package.py b/var/spack/repos/builtin/packages/perl-uri-escape/package.py index ffeb06f979b..b3e9e14fe3b 100644 --- a/var/spack/repos/builtin/packages/perl-uri-escape/package.py +++ b/var/spack/repos/builtin/packages/perl-uri-escape/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl-xml-parser/package.py b/var/spack/repos/builtin/packages/perl-xml-parser/package.py index c8981e7d39e..726added8d8 100644 --- a/var/spack/repos/builtin/packages/perl-xml-parser/package.py +++ b/var/spack/repos/builtin/packages/perl-xml-parser/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index 1e5e93a2f4d..cb7cbe07fc2 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index d4ea674577d..ce16911dc96 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pexsi/package.py b/var/spack/repos/builtin/packages/pexsi/package.py index 0d4496c1047..7a77b4e4e11 100644 --- a/var/spack/repos/builtin/packages/pexsi/package.py +++ b/var/spack/repos/builtin/packages/pexsi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pfft/package.py b/var/spack/repos/builtin/packages/pfft/package.py index a89a199efbc..a69e29382b8 100644 --- a/var/spack/repos/builtin/packages/pfft/package.py +++ b/var/spack/repos/builtin/packages/pfft/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pflotran/package.py b/var/spack/repos/builtin/packages/pflotran/package.py index e18e6a7ea0b..d4b0012ae28 100644 --- a/var/spack/repos/builtin/packages/pflotran/package.py +++ b/var/spack/repos/builtin/packages/pflotran/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pgdspider/package.py b/var/spack/repos/builtin/packages/pgdspider/package.py index 60dfdc12f47..28c9f370b91 100644 --- a/var/spack/repos/builtin/packages/pgdspider/package.py +++ b/var/spack/repos/builtin/packages/pgdspider/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py index e1c9b0130bb..128a939b93e 100644 --- a/var/spack/repos/builtin/packages/pgi/package.py +++ b/var/spack/repos/builtin/packages/pgi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/phasta/package.py b/var/spack/repos/builtin/packages/phasta/package.py index aa472147061..269d8174e7f 100644 --- a/var/spack/repos/builtin/packages/phasta/package.py +++ b/var/spack/repos/builtin/packages/phasta/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/phylip/package.py b/var/spack/repos/builtin/packages/phylip/package.py index 39bcd3c1e51..58571940a93 100644 --- a/var/spack/repos/builtin/packages/phylip/package.py +++ b/var/spack/repos/builtin/packages/phylip/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/picard/package.py b/var/spack/repos/builtin/packages/picard/package.py index f03561a5a7f..8eaf1df6cda 100644 --- a/var/spack/repos/builtin/packages/picard/package.py +++ b/var/spack/repos/builtin/packages/picard/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pidx/package.py b/var/spack/repos/builtin/packages/pidx/package.py index e4be597f0f5..caba2f2ddfe 100644 --- a/var/spack/repos/builtin/packages/pidx/package.py +++ b/var/spack/repos/builtin/packages/pidx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pigz/package.py b/var/spack/repos/builtin/packages/pigz/package.py index 36afbaa9bf3..9183a0b9f15 100644 --- a/var/spack/repos/builtin/packages/pigz/package.py +++ b/var/spack/repos/builtin/packages/pigz/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/piranha/package.py b/var/spack/repos/builtin/packages/piranha/package.py index 4bc4d5f8942..a290ec0713f 100644 --- a/var/spack/repos/builtin/packages/piranha/package.py +++ b/var/spack/repos/builtin/packages/piranha/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py index fa01d21acb2..dfd111dff63 100644 --- a/var/spack/repos/builtin/packages/pixman/package.py +++ b/var/spack/repos/builtin/packages/pixman/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pkg-config/package.py b/var/spack/repos/builtin/packages/pkg-config/package.py index 39306e33cd8..087b09cbf5e 100644 --- a/var/spack/repos/builtin/packages/pkg-config/package.py +++ b/var/spack/repos/builtin/packages/pkg-config/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/planck-likelihood/package.py b/var/spack/repos/builtin/packages/planck-likelihood/package.py index 9f66b9b41c8..0af1fd39983 100644 --- a/var/spack/repos/builtin/packages/planck-likelihood/package.py +++ b/var/spack/repos/builtin/packages/planck-likelihood/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/plink/package.py b/var/spack/repos/builtin/packages/plink/package.py index a519f301849..a42f1db0b73 100644 --- a/var/spack/repos/builtin/packages/plink/package.py +++ b/var/spack/repos/builtin/packages/plink/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index fb655a9949a..6896cbeb77b 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pmgr-collective/package.py b/var/spack/repos/builtin/packages/pmgr-collective/package.py index 0ba1cc5fd52..bf09e611c3a 100644 --- a/var/spack/repos/builtin/packages/pmgr-collective/package.py +++ b/var/spack/repos/builtin/packages/pmgr-collective/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pnfft/package.py b/var/spack/repos/builtin/packages/pnfft/package.py index 7bb74859d64..3470419a022 100644 --- a/var/spack/repos/builtin/packages/pnfft/package.py +++ b/var/spack/repos/builtin/packages/pnfft/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pngwriter/package.py b/var/spack/repos/builtin/packages/pngwriter/package.py index 1f7c20575f7..d70ebc035d5 100644 --- a/var/spack/repos/builtin/packages/pngwriter/package.py +++ b/var/spack/repos/builtin/packages/pngwriter/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/poamsa/package.py b/var/spack/repos/builtin/packages/poamsa/package.py index 3148a10bbd2..9694b89fa9b 100644 --- a/var/spack/repos/builtin/packages/poamsa/package.py +++ b/var/spack/repos/builtin/packages/poamsa/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py index 33273ea9e6d..79a7ebff0b1 100644 --- a/var/spack/repos/builtin/packages/pocl/package.py +++ b/var/spack/repos/builtin/packages/pocl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/polymake/package.py b/var/spack/repos/builtin/packages/polymake/package.py index 693eac28954..7e2d55a4b9a 100644 --- a/var/spack/repos/builtin/packages/polymake/package.py +++ b/var/spack/repos/builtin/packages/polymake/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/porta/package.py b/var/spack/repos/builtin/packages/porta/package.py index b2b7076be35..052ba8503d3 100644 --- a/var/spack/repos/builtin/packages/porta/package.py +++ b/var/spack/repos/builtin/packages/porta/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/postgresql/package.py b/var/spack/repos/builtin/packages/postgresql/package.py index 4142dda185c..280b68a9648 100644 --- a/var/spack/repos/builtin/packages/postgresql/package.py +++ b/var/spack/repos/builtin/packages/postgresql/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ppl/package.py b/var/spack/repos/builtin/packages/ppl/package.py index e059ee26d83..e52a6525fee 100644 --- a/var/spack/repos/builtin/packages/ppl/package.py +++ b/var/spack/repos/builtin/packages/ppl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/prank/package.py b/var/spack/repos/builtin/packages/prank/package.py index 7f8fe95634f..7b665201656 100644 --- a/var/spack/repos/builtin/packages/prank/package.py +++ b/var/spack/repos/builtin/packages/prank/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/presentproto/package.py b/var/spack/repos/builtin/packages/presentproto/package.py index d6da6d6beaa..d33aef11d0f 100644 --- a/var/spack/repos/builtin/packages/presentproto/package.py +++ b/var/spack/repos/builtin/packages/presentproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/preseq/package.py b/var/spack/repos/builtin/packages/preseq/package.py index 87779bcbac5..c8abb1ceaed 100644 --- a/var/spack/repos/builtin/packages/preseq/package.py +++ b/var/spack/repos/builtin/packages/preseq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/price/package.py b/var/spack/repos/builtin/packages/price/package.py index df674f4f6eb..ba27f8e4c6f 100644 --- a/var/spack/repos/builtin/packages/price/package.py +++ b/var/spack/repos/builtin/packages/price/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/primer3/package.py b/var/spack/repos/builtin/packages/primer3/package.py index fbed680b331..87c6b1cc995 100644 --- a/var/spack/repos/builtin/packages/primer3/package.py +++ b/var/spack/repos/builtin/packages/primer3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/printproto/package.py b/var/spack/repos/builtin/packages/printproto/package.py index 66f978c89fa..8f27b117ed4 100644 --- a/var/spack/repos/builtin/packages/printproto/package.py +++ b/var/spack/repos/builtin/packages/printproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/probconsrna/package.py b/var/spack/repos/builtin/packages/probconsrna/package.py index 4973ced5650..b48befc462f 100644 --- a/var/spack/repos/builtin/packages/probconsrna/package.py +++ b/var/spack/repos/builtin/packages/probconsrna/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/proj/package.py b/var/spack/repos/builtin/packages/proj/package.py index 85bbf02ac61..dab37cf8f89 100644 --- a/var/spack/repos/builtin/packages/proj/package.py +++ b/var/spack/repos/builtin/packages/proj/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index f6272f3fe80..0628974fd23 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/proxymngr/package.py b/var/spack/repos/builtin/packages/proxymngr/package.py index e7a2a70dc4f..7a59608ef5e 100644 --- a/var/spack/repos/builtin/packages/proxymngr/package.py +++ b/var/spack/repos/builtin/packages/proxymngr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pruners-ninja/package.py b/var/spack/repos/builtin/packages/pruners-ninja/package.py index 558f59342b4..b87e235c61e 100644 --- a/var/spack/repos/builtin/packages/pruners-ninja/package.py +++ b/var/spack/repos/builtin/packages/pruners-ninja/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/psi4/package.py b/var/spack/repos/builtin/packages/psi4/package.py index 3c50a8413c5..a003f08881a 100644 --- a/var/spack/repos/builtin/packages/psi4/package.py +++ b/var/spack/repos/builtin/packages/psi4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pumi/package.py b/var/spack/repos/builtin/packages/pumi/package.py index 909dc855828..db82f269ae0 100644 --- a/var/spack/repos/builtin/packages/pumi/package.py +++ b/var/spack/repos/builtin/packages/pumi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/pvm/package.py b/var/spack/repos/builtin/packages/pvm/package.py index ecbb4d21bd5..91fdb0379c6 100644 --- a/var/spack/repos/builtin/packages/pvm/package.py +++ b/var/spack/repos/builtin/packages/pvm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-3to2/package.py b/var/spack/repos/builtin/packages/py-3to2/package.py index cc2986a7b30..c9ac3daa374 100644 --- a/var/spack/repos/builtin/packages/py-3to2/package.py +++ b/var/spack/repos/builtin/packages/py-3to2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-4suite-xml/package.py b/var/spack/repos/builtin/packages/py-4suite-xml/package.py index 05c7d775ecb..ae48c3f650f 100644 --- a/var/spack/repos/builtin/packages/py-4suite-xml/package.py +++ b/var/spack/repos/builtin/packages/py-4suite-xml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-abipy/package.py b/var/spack/repos/builtin/packages/py-abipy/package.py index b43491b52f8..8047aad77ea 100644 --- a/var/spack/repos/builtin/packages/py-abipy/package.py +++ b/var/spack/repos/builtin/packages/py-abipy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-alabaster/package.py b/var/spack/repos/builtin/packages/py-alabaster/package.py index 39645a02e37..40067c89cda 100644 --- a/var/spack/repos/builtin/packages/py-alabaster/package.py +++ b/var/spack/repos/builtin/packages/py-alabaster/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-apache-libcloud/package.py b/var/spack/repos/builtin/packages/py-apache-libcloud/package.py index 2498a469f10..230e30a7ec0 100644 --- a/var/spack/repos/builtin/packages/py-apache-libcloud/package.py +++ b/var/spack/repos/builtin/packages/py-apache-libcloud/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-apipkg/package.py b/var/spack/repos/builtin/packages/py-apipkg/package.py index 2e125cb1a9c..68349f18668 100644 --- a/var/spack/repos/builtin/packages/py-apipkg/package.py +++ b/var/spack/repos/builtin/packages/py-apipkg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-appdirs/package.py b/var/spack/repos/builtin/packages/py-appdirs/package.py index 487ef261fe3..7e0ad8a8d3c 100644 --- a/var/spack/repos/builtin/packages/py-appdirs/package.py +++ b/var/spack/repos/builtin/packages/py-appdirs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-appnope/package.py b/var/spack/repos/builtin/packages/py-appnope/package.py index 49d3b2796d2..7b5b7a0b271 100644 --- a/var/spack/repos/builtin/packages/py-appnope/package.py +++ b/var/spack/repos/builtin/packages/py-appnope/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-apscheduler/package.py b/var/spack/repos/builtin/packages/py-apscheduler/package.py index 163783be126..dceb6ce6c5d 100644 --- a/var/spack/repos/builtin/packages/py-apscheduler/package.py +++ b/var/spack/repos/builtin/packages/py-apscheduler/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-argcomplete/package.py b/var/spack/repos/builtin/packages/py-argcomplete/package.py index ba9b9600d36..a56ec233dfb 100644 --- a/var/spack/repos/builtin/packages/py-argcomplete/package.py +++ b/var/spack/repos/builtin/packages/py-argcomplete/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-argparse/package.py b/var/spack/repos/builtin/packages/py-argparse/package.py index 94041c1c7ff..e52c7973083 100644 --- a/var/spack/repos/builtin/packages/py-argparse/package.py +++ b/var/spack/repos/builtin/packages/py-argparse/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ase/package.py b/var/spack/repos/builtin/packages/py-ase/package.py index 46175e8a726..22a0f2b1e66 100644 --- a/var/spack/repos/builtin/packages/py-ase/package.py +++ b/var/spack/repos/builtin/packages/py-ase/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-asn1crypto/package.py b/var/spack/repos/builtin/packages/py-asn1crypto/package.py index 9e72f29c36b..30f3c1e9975 100644 --- a/var/spack/repos/builtin/packages/py-asn1crypto/package.py +++ b/var/spack/repos/builtin/packages/py-asn1crypto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-astroid/package.py b/var/spack/repos/builtin/packages/py-astroid/package.py index 9ccbff61775..f2129875313 100644 --- a/var/spack/repos/builtin/packages/py-astroid/package.py +++ b/var/spack/repos/builtin/packages/py-astroid/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-astropy/package.py b/var/spack/repos/builtin/packages/py-astropy/package.py index d1d6fcc0e8d..2464960d1f3 100644 --- a/var/spack/repos/builtin/packages/py-astropy/package.py +++ b/var/spack/repos/builtin/packages/py-astropy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-attrs/package.py b/var/spack/repos/builtin/packages/py-attrs/package.py index bc9a557a520..bbd55941abc 100644 --- a/var/spack/repos/builtin/packages/py-attrs/package.py +++ b/var/spack/repos/builtin/packages/py-attrs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-autopep8/package.py b/var/spack/repos/builtin/packages/py-autopep8/package.py index 7db3658c027..6f0a16f7c81 100644 --- a/var/spack/repos/builtin/packages/py-autopep8/package.py +++ b/var/spack/repos/builtin/packages/py-autopep8/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-babel/package.py b/var/spack/repos/builtin/packages/py-babel/package.py index 4b9f6c74621..fb9b64974b4 100644 --- a/var/spack/repos/builtin/packages/py-babel/package.py +++ b/var/spack/repos/builtin/packages/py-babel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-backports-abc/package.py b/var/spack/repos/builtin/packages/py-backports-abc/package.py index 6bdfd99eff1..046984c103c 100644 --- a/var/spack/repos/builtin/packages/py-backports-abc/package.py +++ b/var/spack/repos/builtin/packages/py-backports-abc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py b/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py index 5abe2d58cfa..bce85888f8b 100644 --- a/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py +++ b/var/spack/repos/builtin/packages/py-backports-shutil-get-terminal-size/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py b/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py index 994729081fe..feebab7567a 100644 --- a/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py +++ b/var/spack/repos/builtin/packages/py-backports-ssl-match-hostname/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-basemap/package.py b/var/spack/repos/builtin/packages/py-basemap/package.py index fd1d0c6092d..bd63517cd29 100644 --- a/var/spack/repos/builtin/packages/py-basemap/package.py +++ b/var/spack/repos/builtin/packages/py-basemap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py b/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py index 740c7530931..7d962598173 100644 --- a/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py +++ b/var/spack/repos/builtin/packages/py-beautifulsoup4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-binwalk/package.py b/var/spack/repos/builtin/packages/py-binwalk/package.py index a27c3462c0a..f4d48d49a3e 100644 --- a/var/spack/repos/builtin/packages/py-binwalk/package.py +++ b/var/spack/repos/builtin/packages/py-binwalk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-biom-format/package.py b/var/spack/repos/builtin/packages/py-biom-format/package.py index 2d61507bd0b..b75277d56c5 100644 --- a/var/spack/repos/builtin/packages/py-biom-format/package.py +++ b/var/spack/repos/builtin/packages/py-biom-format/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-biopython/package.py b/var/spack/repos/builtin/packages/py-biopython/package.py index 1c8c613002e..dba722830bf 100644 --- a/var/spack/repos/builtin/packages/py-biopython/package.py +++ b/var/spack/repos/builtin/packages/py-biopython/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-bleach/package.py b/var/spack/repos/builtin/packages/py-bleach/package.py index b469a12b607..29383e0c047 100644 --- a/var/spack/repos/builtin/packages/py-bleach/package.py +++ b/var/spack/repos/builtin/packages/py-bleach/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-blessings/package.py b/var/spack/repos/builtin/packages/py-blessings/package.py index d4d509f205c..987a0b6bc45 100644 --- a/var/spack/repos/builtin/packages/py-blessings/package.py +++ b/var/spack/repos/builtin/packages/py-blessings/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-bokeh/package.py b/var/spack/repos/builtin/packages/py-bokeh/package.py index 04f0b844222..6477693200a 100644 --- a/var/spack/repos/builtin/packages/py-bokeh/package.py +++ b/var/spack/repos/builtin/packages/py-bokeh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-boltons/package.py b/var/spack/repos/builtin/packages/py-boltons/package.py index e5e371db394..8f5188df820 100644 --- a/var/spack/repos/builtin/packages/py-boltons/package.py +++ b/var/spack/repos/builtin/packages/py-boltons/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-bottleneck/package.py b/var/spack/repos/builtin/packages/py-bottleneck/package.py index d8958e12080..ebfa15ee800 100644 --- a/var/spack/repos/builtin/packages/py-bottleneck/package.py +++ b/var/spack/repos/builtin/packages/py-bottleneck/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-brian/package.py b/var/spack/repos/builtin/packages/py-brian/package.py index aff3c4da1fa..6c5292cd685 100644 --- a/var/spack/repos/builtin/packages/py-brian/package.py +++ b/var/spack/repos/builtin/packages/py-brian/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-brian2/package.py b/var/spack/repos/builtin/packages/py-brian2/package.py index 35b5bb59b9f..95d33dd76fb 100644 --- a/var/spack/repos/builtin/packages/py-brian2/package.py +++ b/var/spack/repos/builtin/packages/py-brian2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-cclib/package.py b/var/spack/repos/builtin/packages/py-cclib/package.py index fd1decfed83..4334a020017 100644 --- a/var/spack/repos/builtin/packages/py-cclib/package.py +++ b/var/spack/repos/builtin/packages/py-cclib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-cdat-lite/package.py b/var/spack/repos/builtin/packages/py-cdat-lite/package.py index 257abc33f88..16c6a772d7d 100644 --- a/var/spack/repos/builtin/packages/py-cdat-lite/package.py +++ b/var/spack/repos/builtin/packages/py-cdat-lite/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-cdo/package.py b/var/spack/repos/builtin/packages/py-cdo/package.py index a843d067221..7a137841608 100644 --- a/var/spack/repos/builtin/packages/py-cdo/package.py +++ b/var/spack/repos/builtin/packages/py-cdo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-certifi/package.py b/var/spack/repos/builtin/packages/py-certifi/package.py index ec2db8cf628..0232cc01e18 100644 --- a/var/spack/repos/builtin/packages/py-certifi/package.py +++ b/var/spack/repos/builtin/packages/py-certifi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-cffi/package.py b/var/spack/repos/builtin/packages/py-cffi/package.py index ca37b77446f..1df28a37ebd 100644 --- a/var/spack/repos/builtin/packages/py-cffi/package.py +++ b/var/spack/repos/builtin/packages/py-cffi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-chardet/package.py b/var/spack/repos/builtin/packages/py-chardet/package.py index 3276ed42bbc..afe2afb23a3 100644 --- a/var/spack/repos/builtin/packages/py-chardet/package.py +++ b/var/spack/repos/builtin/packages/py-chardet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-click/package.py b/var/spack/repos/builtin/packages/py-click/package.py index 2fabfb9fcf6..7ed7c584c4c 100644 --- a/var/spack/repos/builtin/packages/py-click/package.py +++ b/var/spack/repos/builtin/packages/py-click/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-colorama/package.py b/var/spack/repos/builtin/packages/py-colorama/package.py index f8ebfd70b26..2392b9fa036 100644 --- a/var/spack/repos/builtin/packages/py-colorama/package.py +++ b/var/spack/repos/builtin/packages/py-colorama/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-colormath/package.py b/var/spack/repos/builtin/packages/py-colormath/package.py index 578673a7095..3b85dab2c42 100644 --- a/var/spack/repos/builtin/packages/py-colormath/package.py +++ b/var/spack/repos/builtin/packages/py-colormath/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-configparser/package.py b/var/spack/repos/builtin/packages/py-configparser/package.py index f728d41e747..eb6230ce71d 100644 --- a/var/spack/repos/builtin/packages/py-configparser/package.py +++ b/var/spack/repos/builtin/packages/py-configparser/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-counter/package.py b/var/spack/repos/builtin/packages/py-counter/package.py index c36007800d9..c368b452fb6 100644 --- a/var/spack/repos/builtin/packages/py-counter/package.py +++ b/var/spack/repos/builtin/packages/py-counter/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-coverage/package.py b/var/spack/repos/builtin/packages/py-coverage/package.py index 596ae268c9e..fe42e3762c2 100644 --- a/var/spack/repos/builtin/packages/py-coverage/package.py +++ b/var/spack/repos/builtin/packages/py-coverage/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-cpuinfo/package.py b/var/spack/repos/builtin/packages/py-cpuinfo/package.py index fddd648b471..4df3df31e86 100644 --- a/var/spack/repos/builtin/packages/py-cpuinfo/package.py +++ b/var/spack/repos/builtin/packages/py-cpuinfo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-cryptography/package.py b/var/spack/repos/builtin/packages/py-cryptography/package.py index 4a0d5a30fcd..c3aec4b95cd 100644 --- a/var/spack/repos/builtin/packages/py-cryptography/package.py +++ b/var/spack/repos/builtin/packages/py-cryptography/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-csvkit/package.py b/var/spack/repos/builtin/packages/py-csvkit/package.py index 4a41241d80b..c0e42d514cf 100644 --- a/var/spack/repos/builtin/packages/py-csvkit/package.py +++ b/var/spack/repos/builtin/packages/py-csvkit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-current/package.py b/var/spack/repos/builtin/packages/py-current/package.py index d710a31a7c4..1c45962b324 100644 --- a/var/spack/repos/builtin/packages/py-current/package.py +++ b/var/spack/repos/builtin/packages/py-current/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-cutadapt/package.py b/var/spack/repos/builtin/packages/py-cutadapt/package.py index f81f6d62c19..3a2afcae13e 100644 --- a/var/spack/repos/builtin/packages/py-cutadapt/package.py +++ b/var/spack/repos/builtin/packages/py-cutadapt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-cycler/package.py b/var/spack/repos/builtin/packages/py-cycler/package.py index ee18fc1214a..99115aaacc6 100644 --- a/var/spack/repos/builtin/packages/py-cycler/package.py +++ b/var/spack/repos/builtin/packages/py-cycler/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-cython/package.py b/var/spack/repos/builtin/packages/py-cython/package.py index f372e90e190..09d1b5d7efb 100644 --- a/var/spack/repos/builtin/packages/py-cython/package.py +++ b/var/spack/repos/builtin/packages/py-cython/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-dask/package.py b/var/spack/repos/builtin/packages/py-dask/package.py index 0b27ab80a54..1961c4ef2d0 100644 --- a/var/spack/repos/builtin/packages/py-dask/package.py +++ b/var/spack/repos/builtin/packages/py-dask/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-dateutil/package.py b/var/spack/repos/builtin/packages/py-dateutil/package.py index deeb3197f53..91ed5129c66 100644 --- a/var/spack/repos/builtin/packages/py-dateutil/package.py +++ b/var/spack/repos/builtin/packages/py-dateutil/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-dbf/package.py b/var/spack/repos/builtin/packages/py-dbf/package.py index c6b7ddfa999..ff3dc73e07d 100644 --- a/var/spack/repos/builtin/packages/py-dbf/package.py +++ b/var/spack/repos/builtin/packages/py-dbf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-decorator/package.py b/var/spack/repos/builtin/packages/py-decorator/package.py index 854fe55e524..48fc21b4023 100644 --- a/var/spack/repos/builtin/packages/py-decorator/package.py +++ b/var/spack/repos/builtin/packages/py-decorator/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-deeptools/package.py b/var/spack/repos/builtin/packages/py-deeptools/package.py index e4e1ec25837..a39a820fd31 100644 --- a/var/spack/repos/builtin/packages/py-deeptools/package.py +++ b/var/spack/repos/builtin/packages/py-deeptools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-dev/package.py b/var/spack/repos/builtin/packages/py-dev/package.py index 6ebcb211de6..0c0ce4f7142 100644 --- a/var/spack/repos/builtin/packages/py-dev/package.py +++ b/var/spack/repos/builtin/packages/py-dev/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-dill/package.py b/var/spack/repos/builtin/packages/py-dill/package.py index d574f9df194..06942c3f250 100644 --- a/var/spack/repos/builtin/packages/py-dill/package.py +++ b/var/spack/repos/builtin/packages/py-dill/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-docutils/package.py b/var/spack/repos/builtin/packages/py-docutils/package.py index c05100b324c..d24e2d34992 100644 --- a/var/spack/repos/builtin/packages/py-docutils/package.py +++ b/var/spack/repos/builtin/packages/py-docutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-doxypy/package.py b/var/spack/repos/builtin/packages/py-doxypy/package.py index 91f42249163..171617d6692 100644 --- a/var/spack/repos/builtin/packages/py-doxypy/package.py +++ b/var/spack/repos/builtin/packages/py-doxypy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-doxypypy/package.py b/var/spack/repos/builtin/packages/py-doxypypy/package.py index cdb8f07f86b..01cb324a7cd 100644 --- a/var/spack/repos/builtin/packages/py-doxypypy/package.py +++ b/var/spack/repos/builtin/packages/py-doxypypy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-dryscrape/package.py b/var/spack/repos/builtin/packages/py-dryscrape/package.py index 00fd1e79192..1878249b558 100644 --- a/var/spack/repos/builtin/packages/py-dryscrape/package.py +++ b/var/spack/repos/builtin/packages/py-dryscrape/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-dxchange/package.py b/var/spack/repos/builtin/packages/py-dxchange/package.py index b273beb8b45..e5a0220685b 100644 --- a/var/spack/repos/builtin/packages/py-dxchange/package.py +++ b/var/spack/repos/builtin/packages/py-dxchange/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-dxfile/package.py b/var/spack/repos/builtin/packages/py-dxfile/package.py index 43398b2e9c8..4198303143a 100644 --- a/var/spack/repos/builtin/packages/py-dxfile/package.py +++ b/var/spack/repos/builtin/packages/py-dxfile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-edffile/package.py b/var/spack/repos/builtin/packages/py-edffile/package.py index 28e8fa3746d..ccdce936ad5 100644 --- a/var/spack/repos/builtin/packages/py-edffile/package.py +++ b/var/spack/repos/builtin/packages/py-edffile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-elasticsearch/package.py b/var/spack/repos/builtin/packages/py-elasticsearch/package.py index 645c0bbe596..7232a5d0d89 100644 --- a/var/spack/repos/builtin/packages/py-elasticsearch/package.py +++ b/var/spack/repos/builtin/packages/py-elasticsearch/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-elephant/package.py b/var/spack/repos/builtin/packages/py-elephant/package.py index 5a690e3b9fb..6efa87dff13 100644 --- a/var/spack/repos/builtin/packages/py-elephant/package.py +++ b/var/spack/repos/builtin/packages/py-elephant/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-emcee/package.py b/var/spack/repos/builtin/packages/py-emcee/package.py index 4b8a24c6732..dc0b681acef 100644 --- a/var/spack/repos/builtin/packages/py-emcee/package.py +++ b/var/spack/repos/builtin/packages/py-emcee/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-entrypoints/package.py b/var/spack/repos/builtin/packages/py-entrypoints/package.py index 1df5e8bdc14..d4fdebd70db 100644 --- a/var/spack/repos/builtin/packages/py-entrypoints/package.py +++ b/var/spack/repos/builtin/packages/py-entrypoints/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-enum34/package.py b/var/spack/repos/builtin/packages/py-enum34/package.py index 9f9e05bd7ce..a6a1603b917 100644 --- a/var/spack/repos/builtin/packages/py-enum34/package.py +++ b/var/spack/repos/builtin/packages/py-enum34/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-epydoc/package.py b/var/spack/repos/builtin/packages/py-epydoc/package.py index c10ba2a6355..067d0d91832 100644 --- a/var/spack/repos/builtin/packages/py-epydoc/package.py +++ b/var/spack/repos/builtin/packages/py-epydoc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-et-xmlfile/package.py b/var/spack/repos/builtin/packages/py-et-xmlfile/package.py index 565440158eb..12dd98c7117 100644 --- a/var/spack/repos/builtin/packages/py-et-xmlfile/package.py +++ b/var/spack/repos/builtin/packages/py-et-xmlfile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-execnet/package.py b/var/spack/repos/builtin/packages/py-execnet/package.py index dbfa15007ec..e1341176dc9 100644 --- a/var/spack/repos/builtin/packages/py-execnet/package.py +++ b/var/spack/repos/builtin/packages/py-execnet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-fastaindex/package.py b/var/spack/repos/builtin/packages/py-fastaindex/package.py index 6e98f4c5a42..663504c6b3f 100644 --- a/var/spack/repos/builtin/packages/py-fastaindex/package.py +++ b/var/spack/repos/builtin/packages/py-fastaindex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-fasteners/package.py b/var/spack/repos/builtin/packages/py-fasteners/package.py index ae496b42dc2..a2fb6e8544a 100644 --- a/var/spack/repos/builtin/packages/py-fasteners/package.py +++ b/var/spack/repos/builtin/packages/py-fasteners/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-faststructure/package.py b/var/spack/repos/builtin/packages/py-faststructure/package.py index 5085c33af0c..9b96424ba30 100644 --- a/var/spack/repos/builtin/packages/py-faststructure/package.py +++ b/var/spack/repos/builtin/packages/py-faststructure/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-fiscalyear/package.py b/var/spack/repos/builtin/packages/py-fiscalyear/package.py index 866067e1b35..f9547913110 100644 --- a/var/spack/repos/builtin/packages/py-fiscalyear/package.py +++ b/var/spack/repos/builtin/packages/py-fiscalyear/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-flake8/package.py b/var/spack/repos/builtin/packages/py-flake8/package.py index eb99ab3a1d4..adbdbd32a04 100644 --- a/var/spack/repos/builtin/packages/py-flake8/package.py +++ b/var/spack/repos/builtin/packages/py-flake8/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-flask/package.py b/var/spack/repos/builtin/packages/py-flask/package.py index b489ce131ec..e0b8cec167a 100644 --- a/var/spack/repos/builtin/packages/py-flask/package.py +++ b/var/spack/repos/builtin/packages/py-flask/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-flexx/package.py b/var/spack/repos/builtin/packages/py-flexx/package.py index 43103311995..e9bce25fed2 100644 --- a/var/spack/repos/builtin/packages/py-flexx/package.py +++ b/var/spack/repos/builtin/packages/py-flexx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-funcsigs/package.py b/var/spack/repos/builtin/packages/py-funcsigs/package.py index d51e797ac2c..9f87cbb9905 100644 --- a/var/spack/repos/builtin/packages/py-funcsigs/package.py +++ b/var/spack/repos/builtin/packages/py-funcsigs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-functools32/package.py b/var/spack/repos/builtin/packages/py-functools32/package.py index 658aab5b4e5..57c61808045 100644 --- a/var/spack/repos/builtin/packages/py-functools32/package.py +++ b/var/spack/repos/builtin/packages/py-functools32/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-future/package.py b/var/spack/repos/builtin/packages/py-future/package.py index 25c3e186492..25382ba5a70 100644 --- a/var/spack/repos/builtin/packages/py-future/package.py +++ b/var/spack/repos/builtin/packages/py-future/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-futures/package.py b/var/spack/repos/builtin/packages/py-futures/package.py index 7d78f3f875e..9ac438f338d 100644 --- a/var/spack/repos/builtin/packages/py-futures/package.py +++ b/var/spack/repos/builtin/packages/py-futures/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-genders/package.py b/var/spack/repos/builtin/packages/py-genders/package.py index 2acc438c6f8..8db2c4e7572 100644 --- a/var/spack/repos/builtin/packages/py-genders/package.py +++ b/var/spack/repos/builtin/packages/py-genders/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-genshi/package.py b/var/spack/repos/builtin/packages/py-genshi/package.py index 4d721ae74c3..66b48be8b2c 100644 --- a/var/spack/repos/builtin/packages/py-genshi/package.py +++ b/var/spack/repos/builtin/packages/py-genshi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-git-review/package.py b/var/spack/repos/builtin/packages/py-git-review/package.py index 8987b1c3026..0711d98fcd2 100644 --- a/var/spack/repos/builtin/packages/py-git-review/package.py +++ b/var/spack/repos/builtin/packages/py-git-review/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-git2/package.py b/var/spack/repos/builtin/packages/py-git2/package.py index d5b5bd28f07..228450217f8 100644 --- a/var/spack/repos/builtin/packages/py-git2/package.py +++ b/var/spack/repos/builtin/packages/py-git2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-gnuplot/package.py b/var/spack/repos/builtin/packages/py-gnuplot/package.py index fe1c48fe882..ad412b98ed6 100644 --- a/var/spack/repos/builtin/packages/py-gnuplot/package.py +++ b/var/spack/repos/builtin/packages/py-gnuplot/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-griddataformats/package.py b/var/spack/repos/builtin/packages/py-griddataformats/package.py index 81ef3b9ddac..c5a2afb8a88 100644 --- a/var/spack/repos/builtin/packages/py-griddataformats/package.py +++ b/var/spack/repos/builtin/packages/py-griddataformats/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-guidata/package.py b/var/spack/repos/builtin/packages/py-guidata/package.py index ad960bb5d0a..4893aac5bf6 100644 --- a/var/spack/repos/builtin/packages/py-guidata/package.py +++ b/var/spack/repos/builtin/packages/py-guidata/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-guiqwt/package.py b/var/spack/repos/builtin/packages/py-guiqwt/package.py index 585c5f4598e..053e0b7a227 100644 --- a/var/spack/repos/builtin/packages/py-guiqwt/package.py +++ b/var/spack/repos/builtin/packages/py-guiqwt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index 5a5c02338ca..ee2f3e78be9 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-html2text/package.py b/var/spack/repos/builtin/packages/py-html2text/package.py index 7ea6dc59212..bb0c6540702 100644 --- a/var/spack/repos/builtin/packages/py-html2text/package.py +++ b/var/spack/repos/builtin/packages/py-html2text/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-html5lib/package.py b/var/spack/repos/builtin/packages/py-html5lib/package.py index e219450f83d..4131341fcbb 100644 --- a/var/spack/repos/builtin/packages/py-html5lib/package.py +++ b/var/spack/repos/builtin/packages/py-html5lib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-httpbin/package.py b/var/spack/repos/builtin/packages/py-httpbin/package.py index 0d426c5e2cc..89aa288153e 100644 --- a/var/spack/repos/builtin/packages/py-httpbin/package.py +++ b/var/spack/repos/builtin/packages/py-httpbin/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-hypothesis/package.py b/var/spack/repos/builtin/packages/py-hypothesis/package.py index d2bcfed2f2b..548acd9836b 100644 --- a/var/spack/repos/builtin/packages/py-hypothesis/package.py +++ b/var/spack/repos/builtin/packages/py-hypothesis/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-idna/package.py b/var/spack/repos/builtin/packages/py-idna/package.py index aa8c230bf74..a5924f17881 100644 --- a/var/spack/repos/builtin/packages/py-idna/package.py +++ b/var/spack/repos/builtin/packages/py-idna/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-igraph/package.py b/var/spack/repos/builtin/packages/py-igraph/package.py index 7d9c4086788..94ab3a747a0 100644 --- a/var/spack/repos/builtin/packages/py-igraph/package.py +++ b/var/spack/repos/builtin/packages/py-igraph/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-imagesize/package.py b/var/spack/repos/builtin/packages/py-imagesize/package.py index 3c8de20db02..1b6d6fc5009 100644 --- a/var/spack/repos/builtin/packages/py-imagesize/package.py +++ b/var/spack/repos/builtin/packages/py-imagesize/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-iminuit/package.py b/var/spack/repos/builtin/packages/py-iminuit/package.py index 23961d31446..da7d7db11c5 100644 --- a/var/spack/repos/builtin/packages/py-iminuit/package.py +++ b/var/spack/repos/builtin/packages/py-iminuit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-importlib/package.py b/var/spack/repos/builtin/packages/py-importlib/package.py index 3375cc98539..3f155245dd1 100644 --- a/var/spack/repos/builtin/packages/py-importlib/package.py +++ b/var/spack/repos/builtin/packages/py-importlib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ipaddress/package.py b/var/spack/repos/builtin/packages/py-ipaddress/package.py index d7a7e69e7f4..f8f45e6a549 100644 --- a/var/spack/repos/builtin/packages/py-ipaddress/package.py +++ b/var/spack/repos/builtin/packages/py-ipaddress/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ipdb/package.py b/var/spack/repos/builtin/packages/py-ipdb/package.py index 8c6598d109e..289836f8b95 100644 --- a/var/spack/repos/builtin/packages/py-ipdb/package.py +++ b/var/spack/repos/builtin/packages/py-ipdb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ipykernel/package.py b/var/spack/repos/builtin/packages/py-ipykernel/package.py index 943db24cee7..c86dd3068f2 100644 --- a/var/spack/repos/builtin/packages/py-ipykernel/package.py +++ b/var/spack/repos/builtin/packages/py-ipykernel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ipython-genutils/package.py b/var/spack/repos/builtin/packages/py-ipython-genutils/package.py index d72d2ff5158..7ae4d5dd89a 100644 --- a/var/spack/repos/builtin/packages/py-ipython-genutils/package.py +++ b/var/spack/repos/builtin/packages/py-ipython-genutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py index 16da6027e47..a29a642a115 100644 --- a/var/spack/repos/builtin/packages/py-ipython/package.py +++ b/var/spack/repos/builtin/packages/py-ipython/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ipywidgets/package.py b/var/spack/repos/builtin/packages/py-ipywidgets/package.py index 496477ba8af..0d41c0393ca 100644 --- a/var/spack/repos/builtin/packages/py-ipywidgets/package.py +++ b/var/spack/repos/builtin/packages/py-ipywidgets/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-itsdangerous/package.py b/var/spack/repos/builtin/packages/py-itsdangerous/package.py index a693c341aed..84978fdc7f0 100644 --- a/var/spack/repos/builtin/packages/py-itsdangerous/package.py +++ b/var/spack/repos/builtin/packages/py-itsdangerous/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-jdcal/package.py b/var/spack/repos/builtin/packages/py-jdcal/package.py index b4e08ca77f1..40e99497382 100644 --- a/var/spack/repos/builtin/packages/py-jdcal/package.py +++ b/var/spack/repos/builtin/packages/py-jdcal/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-jedi/package.py b/var/spack/repos/builtin/packages/py-jedi/package.py index c90c77ee68e..6cb723c627a 100644 --- a/var/spack/repos/builtin/packages/py-jedi/package.py +++ b/var/spack/repos/builtin/packages/py-jedi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-jinja2/package.py b/var/spack/repos/builtin/packages/py-jinja2/package.py index 31180594dec..1b24f36b732 100644 --- a/var/spack/repos/builtin/packages/py-jinja2/package.py +++ b/var/spack/repos/builtin/packages/py-jinja2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-joblib/package.py b/var/spack/repos/builtin/packages/py-joblib/package.py index 50e10663a77..e1097daf799 100644 --- a/var/spack/repos/builtin/packages/py-joblib/package.py +++ b/var/spack/repos/builtin/packages/py-joblib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-jpype/package.py b/var/spack/repos/builtin/packages/py-jpype/package.py index b9117f75367..e2c197f2412 100644 --- a/var/spack/repos/builtin/packages/py-jpype/package.py +++ b/var/spack/repos/builtin/packages/py-jpype/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-jsonschema/package.py b/var/spack/repos/builtin/packages/py-jsonschema/package.py index 2a72c9492aa..c072d1fe32c 100644 --- a/var/spack/repos/builtin/packages/py-jsonschema/package.py +++ b/var/spack/repos/builtin/packages/py-jsonschema/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-junit-xml/package.py b/var/spack/repos/builtin/packages/py-junit-xml/package.py index 3c21b5056b2..eca2b7d981c 100644 --- a/var/spack/repos/builtin/packages/py-junit-xml/package.py +++ b/var/spack/repos/builtin/packages/py-junit-xml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-jupyter-client/package.py b/var/spack/repos/builtin/packages/py-jupyter-client/package.py index 8fc9a12445c..379e8285c8f 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-client/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-client/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-jupyter-console/package.py b/var/spack/repos/builtin/packages/py-jupyter-console/package.py index bd039a765c4..47eb8fc81f8 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-console/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-console/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-jupyter-core/package.py b/var/spack/repos/builtin/packages/py-jupyter-core/package.py index 547133a3450..9378d7acacf 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-core/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-core/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py b/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py index 2f0f9e977dc..5d09f71011f 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py index 9c1e639667c..d227cc10c32 100644 --- a/var/spack/repos/builtin/packages/py-keras/package.py +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-latexcodec/package.py b/var/spack/repos/builtin/packages/py-latexcodec/package.py index 2f9ef632207..54a25a252a9 100644 --- a/var/spack/repos/builtin/packages/py-latexcodec/package.py +++ b/var/spack/repos/builtin/packages/py-latexcodec/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-lazy/package.py b/var/spack/repos/builtin/packages/py-lazy/package.py index e1946dc9c8d..24bbf6be185 100644 --- a/var/spack/repos/builtin/packages/py-lazy/package.py +++ b/var/spack/repos/builtin/packages/py-lazy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-lazyarray/package.py b/var/spack/repos/builtin/packages/py-lazyarray/package.py index 7ab655a20e9..0ce3d227829 100644 --- a/var/spack/repos/builtin/packages/py-lazyarray/package.py +++ b/var/spack/repos/builtin/packages/py-lazyarray/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-libconf/package.py b/var/spack/repos/builtin/packages/py-libconf/package.py index f5beae266b7..4ba43de000a 100644 --- a/var/spack/repos/builtin/packages/py-libconf/package.py +++ b/var/spack/repos/builtin/packages/py-libconf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-lit/package.py b/var/spack/repos/builtin/packages/py-lit/package.py index 6d9dbf48303..0037769e1c2 100644 --- a/var/spack/repos/builtin/packages/py-lit/package.py +++ b/var/spack/repos/builtin/packages/py-lit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-lmfit/package.py b/var/spack/repos/builtin/packages/py-lmfit/package.py index 7d07a8e0399..80dd98fc923 100644 --- a/var/spack/repos/builtin/packages/py-lmfit/package.py +++ b/var/spack/repos/builtin/packages/py-lmfit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-lockfile/package.py b/var/spack/repos/builtin/packages/py-lockfile/package.py index a9963c340fa..ecc5ff806a1 100644 --- a/var/spack/repos/builtin/packages/py-lockfile/package.py +++ b/var/spack/repos/builtin/packages/py-lockfile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-logilab-common/package.py b/var/spack/repos/builtin/packages/py-logilab-common/package.py index 925c24a66be..959b9301781 100644 --- a/var/spack/repos/builtin/packages/py-logilab-common/package.py +++ b/var/spack/repos/builtin/packages/py-logilab-common/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-lxml/package.py b/var/spack/repos/builtin/packages/py-lxml/package.py index 9299d5c8776..66b668e8bbc 100644 --- a/var/spack/repos/builtin/packages/py-lxml/package.py +++ b/var/spack/repos/builtin/packages/py-lxml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-lzstring/package.py b/var/spack/repos/builtin/packages/py-lzstring/package.py index 75f0f606dff..99f06ddc0a7 100644 --- a/var/spack/repos/builtin/packages/py-lzstring/package.py +++ b/var/spack/repos/builtin/packages/py-lzstring/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-macholib/package.py b/var/spack/repos/builtin/packages/py-macholib/package.py index 80d9ee4a535..640a1c49bc8 100644 --- a/var/spack/repos/builtin/packages/py-macholib/package.py +++ b/var/spack/repos/builtin/packages/py-macholib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-machotools/package.py b/var/spack/repos/builtin/packages/py-machotools/package.py index ec0e1f364c0..f3c4690a9c9 100644 --- a/var/spack/repos/builtin/packages/py-machotools/package.py +++ b/var/spack/repos/builtin/packages/py-machotools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-macs2/package.py b/var/spack/repos/builtin/packages/py-macs2/package.py index 8f6b4cb27ab..1bf5f4983c1 100644 --- a/var/spack/repos/builtin/packages/py-macs2/package.py +++ b/var/spack/repos/builtin/packages/py-macs2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mako/package.py b/var/spack/repos/builtin/packages/py-mako/package.py index 481c36818bd..4a94e2ca1e5 100644 --- a/var/spack/repos/builtin/packages/py-mako/package.py +++ b/var/spack/repos/builtin/packages/py-mako/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-markdown/package.py b/var/spack/repos/builtin/packages/py-markdown/package.py index 71831ccb997..b6692ff7a09 100644 --- a/var/spack/repos/builtin/packages/py-markdown/package.py +++ b/var/spack/repos/builtin/packages/py-markdown/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-markupsafe/package.py b/var/spack/repos/builtin/packages/py-markupsafe/package.py index 95c6a115c38..3e0a6ae83c6 100644 --- a/var/spack/repos/builtin/packages/py-markupsafe/package.py +++ b/var/spack/repos/builtin/packages/py-markupsafe/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index ec5e33b45fa..2359bb5f270 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mccabe/package.py b/var/spack/repos/builtin/packages/py-mccabe/package.py index 87a90278814..54b52c6bdd7 100644 --- a/var/spack/repos/builtin/packages/py-mccabe/package.py +++ b/var/spack/repos/builtin/packages/py-mccabe/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mdanalysis/package.py b/var/spack/repos/builtin/packages/py-mdanalysis/package.py index 6d6f9455008..541ce43fcd4 100644 --- a/var/spack/repos/builtin/packages/py-mdanalysis/package.py +++ b/var/spack/repos/builtin/packages/py-mdanalysis/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-meep/package.py b/var/spack/repos/builtin/packages/py-meep/package.py index ef50cf3f3a5..e510f6565e3 100644 --- a/var/spack/repos/builtin/packages/py-meep/package.py +++ b/var/spack/repos/builtin/packages/py-meep/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-misopy/package.py b/var/spack/repos/builtin/packages/py-misopy/package.py index 3bfba1cc307..56407d792f1 100644 --- a/var/spack/repos/builtin/packages/py-misopy/package.py +++ b/var/spack/repos/builtin/packages/py-misopy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mistune/package.py b/var/spack/repos/builtin/packages/py-mistune/package.py index a10f0b5024d..096b72fcf67 100644 --- a/var/spack/repos/builtin/packages/py-mistune/package.py +++ b/var/spack/repos/builtin/packages/py-mistune/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mock/package.py b/var/spack/repos/builtin/packages/py-mock/package.py index abb8abc1255..0aa8a31c1e6 100644 --- a/var/spack/repos/builtin/packages/py-mock/package.py +++ b/var/spack/repos/builtin/packages/py-mock/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mongo/package.py b/var/spack/repos/builtin/packages/py-mongo/package.py index 90fec7bc617..21c0b8efbae 100644 --- a/var/spack/repos/builtin/packages/py-mongo/package.py +++ b/var/spack/repos/builtin/packages/py-mongo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-monotonic/package.py b/var/spack/repos/builtin/packages/py-monotonic/package.py index 3567c70db17..2872ec9bdd0 100644 --- a/var/spack/repos/builtin/packages/py-monotonic/package.py +++ b/var/spack/repos/builtin/packages/py-monotonic/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-monty/package.py b/var/spack/repos/builtin/packages/py-monty/package.py index 49937244500..e6968b4d96a 100644 --- a/var/spack/repos/builtin/packages/py-monty/package.py +++ b/var/spack/repos/builtin/packages/py-monty/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mpi4py/package.py b/var/spack/repos/builtin/packages/py-mpi4py/package.py index 0d57375787d..dd1efed2122 100644 --- a/var/spack/repos/builtin/packages/py-mpi4py/package.py +++ b/var/spack/repos/builtin/packages/py-mpi4py/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mpmath/package.py b/var/spack/repos/builtin/packages/py-mpmath/package.py index aa004880168..17699d66631 100644 --- a/var/spack/repos/builtin/packages/py-mpmath/package.py +++ b/var/spack/repos/builtin/packages/py-mpmath/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-multiprocess/package.py b/var/spack/repos/builtin/packages/py-multiprocess/package.py index 8e64a2a9291..0e1a0460747 100644 --- a/var/spack/repos/builtin/packages/py-multiprocess/package.py +++ b/var/spack/repos/builtin/packages/py-multiprocess/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-multiqc/package.py b/var/spack/repos/builtin/packages/py-multiqc/package.py index c0eb702974f..5311582782d 100644 --- a/var/spack/repos/builtin/packages/py-multiqc/package.py +++ b/var/spack/repos/builtin/packages/py-multiqc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mx/package.py b/var/spack/repos/builtin/packages/py-mx/package.py index 98b5d316cd6..9ef717a247c 100644 --- a/var/spack/repos/builtin/packages/py-mx/package.py +++ b/var/spack/repos/builtin/packages/py-mx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-myhdl/package.py b/var/spack/repos/builtin/packages/py-myhdl/package.py index ee8f8377d61..299badf247f 100644 --- a/var/spack/repos/builtin/packages/py-myhdl/package.py +++ b/var/spack/repos/builtin/packages/py-myhdl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-mysqldb1/package.py b/var/spack/repos/builtin/packages/py-mysqldb1/package.py index b24ace3f796..2970045a1e9 100644 --- a/var/spack/repos/builtin/packages/py-mysqldb1/package.py +++ b/var/spack/repos/builtin/packages/py-mysqldb1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-nbconvert/package.py b/var/spack/repos/builtin/packages/py-nbconvert/package.py index 4b46ae664f6..cf2290a35fd 100644 --- a/var/spack/repos/builtin/packages/py-nbconvert/package.py +++ b/var/spack/repos/builtin/packages/py-nbconvert/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-nbformat/package.py b/var/spack/repos/builtin/packages/py-nbformat/package.py index d6006a1db45..14d4316a295 100644 --- a/var/spack/repos/builtin/packages/py-nbformat/package.py +++ b/var/spack/repos/builtin/packages/py-nbformat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-neo/package.py b/var/spack/repos/builtin/packages/py-neo/package.py index a4b9c8eb835..16426f5279f 100644 --- a/var/spack/repos/builtin/packages/py-neo/package.py +++ b/var/spack/repos/builtin/packages/py-neo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-nestle/package.py b/var/spack/repos/builtin/packages/py-nestle/package.py index f3c5a888976..106e56c1d92 100644 --- a/var/spack/repos/builtin/packages/py-nestle/package.py +++ b/var/spack/repos/builtin/packages/py-nestle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-netcdf4/package.py b/var/spack/repos/builtin/packages/py-netcdf4/package.py index a27ea515807..71ee17abb4f 100644 --- a/var/spack/repos/builtin/packages/py-netcdf4/package.py +++ b/var/spack/repos/builtin/packages/py-netcdf4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-netifaces/package.py b/var/spack/repos/builtin/packages/py-netifaces/package.py index 6a069ae11e4..d0adb755084 100644 --- a/var/spack/repos/builtin/packages/py-netifaces/package.py +++ b/var/spack/repos/builtin/packages/py-netifaces/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-networkx/package.py b/var/spack/repos/builtin/packages/py-networkx/package.py index 1d8dfa6b536..10f47623bc6 100644 --- a/var/spack/repos/builtin/packages/py-networkx/package.py +++ b/var/spack/repos/builtin/packages/py-networkx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-nose/package.py b/var/spack/repos/builtin/packages/py-nose/package.py index 6876620e246..6db4d749543 100644 --- a/var/spack/repos/builtin/packages/py-nose/package.py +++ b/var/spack/repos/builtin/packages/py-nose/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-nosexcover/package.py b/var/spack/repos/builtin/packages/py-nosexcover/package.py index 5ec76bc1949..71191fccab9 100644 --- a/var/spack/repos/builtin/packages/py-nosexcover/package.py +++ b/var/spack/repos/builtin/packages/py-nosexcover/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-numexpr/package.py b/var/spack/repos/builtin/packages/py-numexpr/package.py index 58090ae6744..b888a219b51 100644 --- a/var/spack/repos/builtin/packages/py-numexpr/package.py +++ b/var/spack/repos/builtin/packages/py-numexpr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index 76ccb1a4a91..62136830973 100644 --- a/var/spack/repos/builtin/packages/py-numpy/package.py +++ b/var/spack/repos/builtin/packages/py-numpy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-numpydoc/package.py b/var/spack/repos/builtin/packages/py-numpydoc/package.py index 2052ecad241..b219805bd92 100644 --- a/var/spack/repos/builtin/packages/py-numpydoc/package.py +++ b/var/spack/repos/builtin/packages/py-numpydoc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-olefile/package.py b/var/spack/repos/builtin/packages/py-olefile/package.py index fd778862b85..7abc42eb398 100644 --- a/var/spack/repos/builtin/packages/py-olefile/package.py +++ b/var/spack/repos/builtin/packages/py-olefile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py b/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py index 18ef2f59b78..ebec553c005 100644 --- a/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py +++ b/var/spack/repos/builtin/packages/py-ont-fast5-api/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-openpyxl/package.py b/var/spack/repos/builtin/packages/py-openpyxl/package.py index 6ccb5f211d5..278e41d57e2 100644 --- a/var/spack/repos/builtin/packages/py-openpyxl/package.py +++ b/var/spack/repos/builtin/packages/py-openpyxl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ordereddict/package.py b/var/spack/repos/builtin/packages/py-ordereddict/package.py index 586cfa425b2..2c82f9b81cb 100644 --- a/var/spack/repos/builtin/packages/py-ordereddict/package.py +++ b/var/spack/repos/builtin/packages/py-ordereddict/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-oset/package.py b/var/spack/repos/builtin/packages/py-oset/package.py index 50428fdd0e6..3d0538ea350 100644 --- a/var/spack/repos/builtin/packages/py-oset/package.py +++ b/var/spack/repos/builtin/packages/py-oset/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-packaging/package.py b/var/spack/repos/builtin/packages/py-packaging/package.py index ec165f72b9a..e16d341e395 100644 --- a/var/spack/repos/builtin/packages/py-packaging/package.py +++ b/var/spack/repos/builtin/packages/py-packaging/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-palettable/package.py b/var/spack/repos/builtin/packages/py-palettable/package.py index 7fa6358d181..2c802c5081c 100644 --- a/var/spack/repos/builtin/packages/py-palettable/package.py +++ b/var/spack/repos/builtin/packages/py-palettable/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py index e8283c90eb7..6caef3780b3 100644 --- a/var/spack/repos/builtin/packages/py-pandas/package.py +++ b/var/spack/repos/builtin/packages/py-pandas/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-paramiko/package.py b/var/spack/repos/builtin/packages/py-paramiko/package.py index 033145c0e0a..ce485485118 100644 --- a/var/spack/repos/builtin/packages/py-paramiko/package.py +++ b/var/spack/repos/builtin/packages/py-paramiko/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pathlib2/package.py b/var/spack/repos/builtin/packages/py-pathlib2/package.py index 6fdb105c1cb..5f14b55af4c 100644 --- a/var/spack/repos/builtin/packages/py-pathlib2/package.py +++ b/var/spack/repos/builtin/packages/py-pathlib2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pathos/package.py b/var/spack/repos/builtin/packages/py-pathos/package.py index e48b20929c3..3991b91cec6 100644 --- a/var/spack/repos/builtin/packages/py-pathos/package.py +++ b/var/spack/repos/builtin/packages/py-pathos/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pathspec/package.py b/var/spack/repos/builtin/packages/py-pathspec/package.py index f939865367a..8869aa06812 100644 --- a/var/spack/repos/builtin/packages/py-pathspec/package.py +++ b/var/spack/repos/builtin/packages/py-pathspec/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-patsy/package.py b/var/spack/repos/builtin/packages/py-patsy/package.py index 4ebfe697f09..bcca79ba271 100644 --- a/var/spack/repos/builtin/packages/py-patsy/package.py +++ b/var/spack/repos/builtin/packages/py-patsy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pbr/package.py b/var/spack/repos/builtin/packages/py-pbr/package.py index e8dcae13536..353754aab59 100644 --- a/var/spack/repos/builtin/packages/py-pbr/package.py +++ b/var/spack/repos/builtin/packages/py-pbr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-periodictable/package.py b/var/spack/repos/builtin/packages/py-periodictable/package.py index e7e67de871f..6ae48e7f32b 100644 --- a/var/spack/repos/builtin/packages/py-periodictable/package.py +++ b/var/spack/repos/builtin/packages/py-periodictable/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-petsc4py/package.py b/var/spack/repos/builtin/packages/py-petsc4py/package.py index 8e2d56755dd..3a66040db95 100644 --- a/var/spack/repos/builtin/packages/py-petsc4py/package.py +++ b/var/spack/repos/builtin/packages/py-petsc4py/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pexpect/package.py b/var/spack/repos/builtin/packages/py-pexpect/package.py index 6ce99cc7d04..f0bd329a80a 100644 --- a/var/spack/repos/builtin/packages/py-pexpect/package.py +++ b/var/spack/repos/builtin/packages/py-pexpect/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-phonopy/package.py b/var/spack/repos/builtin/packages/py-phonopy/package.py index 852f6bd0b44..70cfb70d20e 100644 --- a/var/spack/repos/builtin/packages/py-phonopy/package.py +++ b/var/spack/repos/builtin/packages/py-phonopy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pickleshare/package.py b/var/spack/repos/builtin/packages/py-pickleshare/package.py index dde89ce6f82..52424c8f314 100644 --- a/var/spack/repos/builtin/packages/py-pickleshare/package.py +++ b/var/spack/repos/builtin/packages/py-pickleshare/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pil/package.py b/var/spack/repos/builtin/packages/py-pil/package.py index ce65d1ef778..4af94527ccd 100644 --- a/var/spack/repos/builtin/packages/py-pil/package.py +++ b/var/spack/repos/builtin/packages/py-pil/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index ba6e7b9c675..9f9327d3979 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index 6cfeae82885..9cbf789b2b3 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pipits/package.py b/var/spack/repos/builtin/packages/py-pipits/package.py index 88a629cc2e2..464627dc68e 100644 --- a/var/spack/repos/builtin/packages/py-pipits/package.py +++ b/var/spack/repos/builtin/packages/py-pipits/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pkgconfig/package.py b/var/spack/repos/builtin/packages/py-pkgconfig/package.py index 5d6af2b8e16..9c9f0dcdb00 100644 --- a/var/spack/repos/builtin/packages/py-pkgconfig/package.py +++ b/var/spack/repos/builtin/packages/py-pkgconfig/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ply/package.py b/var/spack/repos/builtin/packages/py-ply/package.py index f023b7ca79a..534abb3d21f 100644 --- a/var/spack/repos/builtin/packages/py-ply/package.py +++ b/var/spack/repos/builtin/packages/py-ply/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pmw/package.py b/var/spack/repos/builtin/packages/py-pmw/package.py index a0dd79b0e45..69183269f84 100644 --- a/var/spack/repos/builtin/packages/py-pmw/package.py +++ b/var/spack/repos/builtin/packages/py-pmw/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pox/package.py b/var/spack/repos/builtin/packages/py-pox/package.py index 946a6fae0f4..b2c490035ad 100644 --- a/var/spack/repos/builtin/packages/py-pox/package.py +++ b/var/spack/repos/builtin/packages/py-pox/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ppft/package.py b/var/spack/repos/builtin/packages/py-ppft/package.py index da96ba458e7..a7c5a3bcf9f 100644 --- a/var/spack/repos/builtin/packages/py-ppft/package.py +++ b/var/spack/repos/builtin/packages/py-ppft/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-prettytable/package.py b/var/spack/repos/builtin/packages/py-prettytable/package.py index 53e1ec75b62..ea70e52de4e 100644 --- a/var/spack/repos/builtin/packages/py-prettytable/package.py +++ b/var/spack/repos/builtin/packages/py-prettytable/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-proj/package.py b/var/spack/repos/builtin/packages/py-proj/package.py index 649fa40f5c2..848b5f27da2 100644 --- a/var/spack/repos/builtin/packages/py-proj/package.py +++ b/var/spack/repos/builtin/packages/py-proj/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py b/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py index 35500c833b1..ad5cf78c263 100644 --- a/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py +++ b/var/spack/repos/builtin/packages/py-prompt-toolkit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-protobuf/package.py b/var/spack/repos/builtin/packages/py-protobuf/package.py index 32421e959e9..846d7ae0160 100644 --- a/var/spack/repos/builtin/packages/py-protobuf/package.py +++ b/var/spack/repos/builtin/packages/py-protobuf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-psutil/package.py b/var/spack/repos/builtin/packages/py-psutil/package.py index f1524e56c2d..5dcca0c6791 100644 --- a/var/spack/repos/builtin/packages/py-psutil/package.py +++ b/var/spack/repos/builtin/packages/py-psutil/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ptyprocess/package.py b/var/spack/repos/builtin/packages/py-ptyprocess/package.py index cdd51057962..55110f1d021 100644 --- a/var/spack/repos/builtin/packages/py-ptyprocess/package.py +++ b/var/spack/repos/builtin/packages/py-ptyprocess/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pudb/package.py b/var/spack/repos/builtin/packages/py-pudb/package.py index 2ee28865d49..d30201d59bc 100644 --- a/var/spack/repos/builtin/packages/py-pudb/package.py +++ b/var/spack/repos/builtin/packages/py-pudb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-py/package.py b/var/spack/repos/builtin/packages/py-py/package.py index 28d9ed75ac6..1e3df34f7be 100644 --- a/var/spack/repos/builtin/packages/py-py/package.py +++ b/var/spack/repos/builtin/packages/py-py/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-py2bit/package.py b/var/spack/repos/builtin/packages/py-py2bit/package.py index d48fb7e9b99..79a6fe3e554 100644 --- a/var/spack/repos/builtin/packages/py-py2bit/package.py +++ b/var/spack/repos/builtin/packages/py-py2bit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-py2cairo/package.py b/var/spack/repos/builtin/packages/py-py2cairo/package.py index 9bd3f9a9b17..c72e407e039 100644 --- a/var/spack/repos/builtin/packages/py-py2cairo/package.py +++ b/var/spack/repos/builtin/packages/py-py2cairo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-py2neo/package.py b/var/spack/repos/builtin/packages/py-py2neo/package.py index 9c2ef0e8d7e..e3890765e0b 100644 --- a/var/spack/repos/builtin/packages/py-py2neo/package.py +++ b/var/spack/repos/builtin/packages/py-py2neo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-py4j/package.py b/var/spack/repos/builtin/packages/py-py4j/package.py index cdb3b4db0af..a2d5a98f496 100644 --- a/var/spack/repos/builtin/packages/py-py4j/package.py +++ b/var/spack/repos/builtin/packages/py-py4j/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyasn1/package.py b/var/spack/repos/builtin/packages/py-pyasn1/package.py index 666a20f758e..b9771ade39d 100644 --- a/var/spack/repos/builtin/packages/py-pyasn1/package.py +++ b/var/spack/repos/builtin/packages/py-pyasn1/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pybigwig/package.py b/var/spack/repos/builtin/packages/py-pybigwig/package.py index 4d96ba58c0a..f49bbf37634 100644 --- a/var/spack/repos/builtin/packages/py-pybigwig/package.py +++ b/var/spack/repos/builtin/packages/py-pybigwig/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pybind11/package.py b/var/spack/repos/builtin/packages/py-pybind11/package.py index 0fabae48bc0..1d3d7db7e1b 100644 --- a/var/spack/repos/builtin/packages/py-pybind11/package.py +++ b/var/spack/repos/builtin/packages/py-pybind11/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py index d0b75be3a51..105abd99c7b 100644 --- a/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py +++ b/var/spack/repos/builtin/packages/py-pybtex-docutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pybtex/package.py b/var/spack/repos/builtin/packages/py-pybtex/package.py index bcdbc61ca46..2b7377d96a9 100644 --- a/var/spack/repos/builtin/packages/py-pybtex/package.py +++ b/var/spack/repos/builtin/packages/py-pybtex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pychecker/package.py b/var/spack/repos/builtin/packages/py-pychecker/package.py index 8dcb6ee15d0..60df4df8233 100644 --- a/var/spack/repos/builtin/packages/py-pychecker/package.py +++ b/var/spack/repos/builtin/packages/py-pychecker/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pycodestyle/package.py b/var/spack/repos/builtin/packages/py-pycodestyle/package.py index 4f69e749e94..c646da9c5ee 100644 --- a/var/spack/repos/builtin/packages/py-pycodestyle/package.py +++ b/var/spack/repos/builtin/packages/py-pycodestyle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pycparser/package.py b/var/spack/repos/builtin/packages/py-pycparser/package.py index d950d1578d9..6f0f40bb284 100644 --- a/var/spack/repos/builtin/packages/py-pycparser/package.py +++ b/var/spack/repos/builtin/packages/py-pycparser/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pycrypto/package.py b/var/spack/repos/builtin/packages/py-pycrypto/package.py index 0c24ceb2429..ad945c1279e 100644 --- a/var/spack/repos/builtin/packages/py-pycrypto/package.py +++ b/var/spack/repos/builtin/packages/py-pycrypto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pycurl/package.py b/var/spack/repos/builtin/packages/py-pycurl/package.py index 4d9164b2695..62f3e83d20c 100644 --- a/var/spack/repos/builtin/packages/py-pycurl/package.py +++ b/var/spack/repos/builtin/packages/py-pycurl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pydatalog/package.py b/var/spack/repos/builtin/packages/py-pydatalog/package.py index 270847f5dcf..e487579cb4d 100644 --- a/var/spack/repos/builtin/packages/py-pydatalog/package.py +++ b/var/spack/repos/builtin/packages/py-pydatalog/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pydispatcher/package.py b/var/spack/repos/builtin/packages/py-pydispatcher/package.py index 7f6e9b493e0..53934c17627 100644 --- a/var/spack/repos/builtin/packages/py-pydispatcher/package.py +++ b/var/spack/repos/builtin/packages/py-pydispatcher/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pydot/package.py b/var/spack/repos/builtin/packages/py-pydot/package.py index f843bcbe2ba..1aebf2d0d78 100644 --- a/var/spack/repos/builtin/packages/py-pydot/package.py +++ b/var/spack/repos/builtin/packages/py-pydot/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyelftools/package.py b/var/spack/repos/builtin/packages/py-pyelftools/package.py index e1d074edae0..46054cc097e 100644 --- a/var/spack/repos/builtin/packages/py-pyelftools/package.py +++ b/var/spack/repos/builtin/packages/py-pyelftools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyfftw/package.py b/var/spack/repos/builtin/packages/py-pyfftw/package.py index c9f32f57ff6..8fa2e500028 100644 --- a/var/spack/repos/builtin/packages/py-pyfftw/package.py +++ b/var/spack/repos/builtin/packages/py-pyfftw/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyflakes/package.py b/var/spack/repos/builtin/packages/py-pyflakes/package.py index e816f1b992d..fdab4d31d02 100644 --- a/var/spack/repos/builtin/packages/py-pyflakes/package.py +++ b/var/spack/repos/builtin/packages/py-pyflakes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pygments/package.py b/var/spack/repos/builtin/packages/py-pygments/package.py index e814589cc5e..0b55d6d9134 100644 --- a/var/spack/repos/builtin/packages/py-pygments/package.py +++ b/var/spack/repos/builtin/packages/py-pygments/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pygobject/package.py b/var/spack/repos/builtin/packages/py-pygobject/package.py index 10b9b5ecea5..2a0b25dbc47 100644 --- a/var/spack/repos/builtin/packages/py-pygobject/package.py +++ b/var/spack/repos/builtin/packages/py-pygobject/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pygtk/package.py b/var/spack/repos/builtin/packages/py-pygtk/package.py index 57f422437aa..330961766c9 100644 --- a/var/spack/repos/builtin/packages/py-pygtk/package.py +++ b/var/spack/repos/builtin/packages/py-pygtk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pylint/package.py b/var/spack/repos/builtin/packages/py-pylint/package.py index a2515294108..e6f1501035a 100644 --- a/var/spack/repos/builtin/packages/py-pylint/package.py +++ b/var/spack/repos/builtin/packages/py-pylint/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pymatgen/package.py b/var/spack/repos/builtin/packages/py-pymatgen/package.py index d9444100840..838f59bdf1a 100644 --- a/var/spack/repos/builtin/packages/py-pymatgen/package.py +++ b/var/spack/repos/builtin/packages/py-pymatgen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyminifier/package.py b/var/spack/repos/builtin/packages/py-pyminifier/package.py index d085d49ea71..eb6fbf006c1 100644 --- a/var/spack/repos/builtin/packages/py-pyminifier/package.py +++ b/var/spack/repos/builtin/packages/py-pyminifier/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pympler/package.py b/var/spack/repos/builtin/packages/py-pympler/package.py index 9ca0ddc0cf4..40fc8628b58 100644 --- a/var/spack/repos/builtin/packages/py-pympler/package.py +++ b/var/spack/repos/builtin/packages/py-pympler/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pynn/package.py b/var/spack/repos/builtin/packages/py-pynn/package.py index 420c2d238bc..d5a080d515b 100644 --- a/var/spack/repos/builtin/packages/py-pynn/package.py +++ b/var/spack/repos/builtin/packages/py-pynn/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pypar/package.py b/var/spack/repos/builtin/packages/py-pypar/package.py index 8c848261744..eaafbb213b9 100644 --- a/var/spack/repos/builtin/packages/py-pypar/package.py +++ b/var/spack/repos/builtin/packages/py-pypar/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyparsing/package.py b/var/spack/repos/builtin/packages/py-pyparsing/package.py index ae4f3a3d9f5..5bcc309f21e 100644 --- a/var/spack/repos/builtin/packages/py-pyparsing/package.py +++ b/var/spack/repos/builtin/packages/py-pyparsing/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pypeflow/package.py b/var/spack/repos/builtin/packages/py-pypeflow/package.py index 8741b731f59..f7e32e326e6 100644 --- a/var/spack/repos/builtin/packages/py-pypeflow/package.py +++ b/var/spack/repos/builtin/packages/py-pypeflow/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyprof2html/package.py b/var/spack/repos/builtin/packages/py-pyprof2html/package.py index 0014d6127af..de3495864d6 100644 --- a/var/spack/repos/builtin/packages/py-pyprof2html/package.py +++ b/var/spack/repos/builtin/packages/py-pyprof2html/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyqt/package.py b/var/spack/repos/builtin/packages/py-pyqt/package.py index 3aed68f8456..402e7b5faa5 100644 --- a/var/spack/repos/builtin/packages/py-pyqt/package.py +++ b/var/spack/repos/builtin/packages/py-pyqt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyrad/package.py b/var/spack/repos/builtin/packages/py-pyrad/package.py index 05142e26b06..81d1516e23b 100644 --- a/var/spack/repos/builtin/packages/py-pyrad/package.py +++ b/var/spack/repos/builtin/packages/py-pyrad/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pysam/package.py b/var/spack/repos/builtin/packages/py-pysam/package.py index cf470ea5643..92359f17924 100644 --- a/var/spack/repos/builtin/packages/py-pysam/package.py +++ b/var/spack/repos/builtin/packages/py-pysam/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyscaf/package.py b/var/spack/repos/builtin/packages/py-pyscaf/package.py index 93f6b6afdd1..8f57751be19 100644 --- a/var/spack/repos/builtin/packages/py-pyscaf/package.py +++ b/var/spack/repos/builtin/packages/py-pyscaf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyserial/package.py b/var/spack/repos/builtin/packages/py-pyserial/package.py index e2ba88d660c..a215410e45f 100644 --- a/var/spack/repos/builtin/packages/py-pyserial/package.py +++ b/var/spack/repos/builtin/packages/py-pyserial/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyside/package.py b/var/spack/repos/builtin/packages/py-pyside/package.py index aff69b46d67..a755840de3a 100644 --- a/var/spack/repos/builtin/packages/py-pyside/package.py +++ b/var/spack/repos/builtin/packages/py-pyside/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pysocks/package.py b/var/spack/repos/builtin/packages/py-pysocks/package.py index 6d0ff52400b..4aad04e9718 100644 --- a/var/spack/repos/builtin/packages/py-pysocks/package.py +++ b/var/spack/repos/builtin/packages/py-pysocks/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pytables/package.py b/var/spack/repos/builtin/packages/py-pytables/package.py index 00fd9309beb..948e92bc3ae 100644 --- a/var/spack/repos/builtin/packages/py-pytables/package.py +++ b/var/spack/repos/builtin/packages/py-pytables/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pytest-cov/package.py b/var/spack/repos/builtin/packages/py-pytest-cov/package.py index 3a7496f7668..81f34022db7 100644 --- a/var/spack/repos/builtin/packages/py-pytest-cov/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-cov/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pytest-flake8/package.py b/var/spack/repos/builtin/packages/py-pytest-flake8/package.py index 8299fd7dc98..4eb4fdb1c4f 100644 --- a/var/spack/repos/builtin/packages/py-pytest-flake8/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-flake8/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py b/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py index 74e0b9e9336..3c01fecda98 100644 --- a/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-httpbin/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pytest-mock/package.py b/var/spack/repos/builtin/packages/py-pytest-mock/package.py index 9cd84a01c38..d9711f7e8f2 100644 --- a/var/spack/repos/builtin/packages/py-pytest-mock/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-mock/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pytest-runner/package.py b/var/spack/repos/builtin/packages/py-pytest-runner/package.py index 114a9dcd13a..f21a28c4417 100644 --- a/var/spack/repos/builtin/packages/py-pytest-runner/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-runner/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pytest-xdist/package.py b/var/spack/repos/builtin/packages/py-pytest-xdist/package.py index f82fa130394..2ded4262678 100644 --- a/var/spack/repos/builtin/packages/py-pytest-xdist/package.py +++ b/var/spack/repos/builtin/packages/py-pytest-xdist/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pytest/package.py b/var/spack/repos/builtin/packages/py-pytest/package.py index 965cb26a8dd..064ae274a45 100644 --- a/var/spack/repos/builtin/packages/py-pytest/package.py +++ b/var/spack/repos/builtin/packages/py-pytest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-python-daemon/package.py b/var/spack/repos/builtin/packages/py-python-daemon/package.py index 858c57b7d97..f3c64b2fd3d 100644 --- a/var/spack/repos/builtin/packages/py-python-daemon/package.py +++ b/var/spack/repos/builtin/packages/py-python-daemon/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-python-gitlab/package.py b/var/spack/repos/builtin/packages/py-python-gitlab/package.py index 79a5f82fbff..b581cc0a688 100644 --- a/var/spack/repos/builtin/packages/py-python-gitlab/package.py +++ b/var/spack/repos/builtin/packages/py-python-gitlab/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pythonqwt/package.py b/var/spack/repos/builtin/packages/py-pythonqwt/package.py index fd4f2825cb2..8af79ab4f07 100644 --- a/var/spack/repos/builtin/packages/py-pythonqwt/package.py +++ b/var/spack/repos/builtin/packages/py-pythonqwt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pytz/package.py b/var/spack/repos/builtin/packages/py-pytz/package.py index 0bcadd82386..ba37d6b37cb 100644 --- a/var/spack/repos/builtin/packages/py-pytz/package.py +++ b/var/spack/repos/builtin/packages/py-pytz/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pywavelets/package.py b/var/spack/repos/builtin/packages/py-pywavelets/package.py index ffe1d5364c6..6fb2e36b30a 100644 --- a/var/spack/repos/builtin/packages/py-pywavelets/package.py +++ b/var/spack/repos/builtin/packages/py-pywavelets/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-pyyaml/package.py b/var/spack/repos/builtin/packages/py-pyyaml/package.py index def71814e3a..fb44ca2d3fd 100644 --- a/var/spack/repos/builtin/packages/py-pyyaml/package.py +++ b/var/spack/repos/builtin/packages/py-pyyaml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-qtawesome/package.py b/var/spack/repos/builtin/packages/py-qtawesome/package.py index abaabc45f41..e3b3f002223 100644 --- a/var/spack/repos/builtin/packages/py-qtawesome/package.py +++ b/var/spack/repos/builtin/packages/py-qtawesome/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-qtconsole/package.py b/var/spack/repos/builtin/packages/py-qtconsole/package.py index 6fde8783b67..60c741a75d2 100644 --- a/var/spack/repos/builtin/packages/py-qtconsole/package.py +++ b/var/spack/repos/builtin/packages/py-qtconsole/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-qtpy/package.py b/var/spack/repos/builtin/packages/py-qtpy/package.py index 4471e33a585..6a2b6b60fa9 100644 --- a/var/spack/repos/builtin/packages/py-qtpy/package.py +++ b/var/spack/repos/builtin/packages/py-qtpy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-quantities/package.py b/var/spack/repos/builtin/packages/py-quantities/package.py index c74e897805a..2b78e643aa3 100644 --- a/var/spack/repos/builtin/packages/py-quantities/package.py +++ b/var/spack/repos/builtin/packages/py-quantities/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-radical-utils/package.py b/var/spack/repos/builtin/packages/py-radical-utils/package.py index 97dd700f745..91020fdaea1 100644 --- a/var/spack/repos/builtin/packages/py-radical-utils/package.py +++ b/var/spack/repos/builtin/packages/py-radical-utils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-ranger/package.py b/var/spack/repos/builtin/packages/py-ranger/package.py index c5fee4e8faf..2255edbd692 100644 --- a/var/spack/repos/builtin/packages/py-ranger/package.py +++ b/var/spack/repos/builtin/packages/py-ranger/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-readme-renderer/package.py b/var/spack/repos/builtin/packages/py-readme-renderer/package.py index 709851aed5b..ef31eec9861 100644 --- a/var/spack/repos/builtin/packages/py-readme-renderer/package.py +++ b/var/spack/repos/builtin/packages/py-readme-renderer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-regex/package.py b/var/spack/repos/builtin/packages/py-regex/package.py index a13dd019193..0b7760fd05b 100644 --- a/var/spack/repos/builtin/packages/py-regex/package.py +++ b/var/spack/repos/builtin/packages/py-regex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-requests/package.py b/var/spack/repos/builtin/packages/py-requests/package.py index 065d22b4360..50dea17fd25 100644 --- a/var/spack/repos/builtin/packages/py-requests/package.py +++ b/var/spack/repos/builtin/packages/py-requests/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-restview/package.py b/var/spack/repos/builtin/packages/py-restview/package.py index 5ab66a9ba32..be2da22bd26 100644 --- a/var/spack/repos/builtin/packages/py-restview/package.py +++ b/var/spack/repos/builtin/packages/py-restview/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-rope/package.py b/var/spack/repos/builtin/packages/py-rope/package.py index 4138096d730..144940a0be9 100644 --- a/var/spack/repos/builtin/packages/py-rope/package.py +++ b/var/spack/repos/builtin/packages/py-rope/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-rpy2/package.py b/var/spack/repos/builtin/packages/py-rpy2/package.py index a0d020f4279..9830d3f2a4f 100644 --- a/var/spack/repos/builtin/packages/py-rpy2/package.py +++ b/var/spack/repos/builtin/packages/py-rpy2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-rsa/package.py b/var/spack/repos/builtin/packages/py-rsa/package.py index 4b58a286bdd..fe8d8ca7603 100644 --- a/var/spack/repos/builtin/packages/py-rsa/package.py +++ b/var/spack/repos/builtin/packages/py-rsa/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-rtree/package.py b/var/spack/repos/builtin/packages/py-rtree/package.py index 3eeb6c01d1d..424b1565e7f 100644 --- a/var/spack/repos/builtin/packages/py-rtree/package.py +++ b/var/spack/repos/builtin/packages/py-rtree/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-saga-python/package.py b/var/spack/repos/builtin/packages/py-saga-python/package.py index 0b2cd60d892..04e1b3d712a 100644 --- a/var/spack/repos/builtin/packages/py-saga-python/package.py +++ b/var/spack/repos/builtin/packages/py-saga-python/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-scientificpython/package.py b/var/spack/repos/builtin/packages/py-scientificpython/package.py index 0478438ad41..774628aa406 100644 --- a/var/spack/repos/builtin/packages/py-scientificpython/package.py +++ b/var/spack/repos/builtin/packages/py-scientificpython/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-scikit-image/package.py b/var/spack/repos/builtin/packages/py-scikit-image/package.py index f164a3a25f7..cd3691abfa1 100644 --- a/var/spack/repos/builtin/packages/py-scikit-image/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-image/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py index 0d2a9a155c8..39a98f0f646 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index 6e2ef327e33..39f23375476 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-seaborn/package.py b/var/spack/repos/builtin/packages/py-seaborn/package.py index 26c76b7aa9a..5c31a858355 100644 --- a/var/spack/repos/builtin/packages/py-seaborn/package.py +++ b/var/spack/repos/builtin/packages/py-seaborn/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 768dd3b5f77..44905cab7da 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sh/package.py b/var/spack/repos/builtin/packages/py-sh/package.py index 60154de923b..d5765e3a41b 100644 --- a/var/spack/repos/builtin/packages/py-sh/package.py +++ b/var/spack/repos/builtin/packages/py-sh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-shiboken/package.py b/var/spack/repos/builtin/packages/py-shiboken/package.py index 2f6f40df3af..984234ac0fe 100644 --- a/var/spack/repos/builtin/packages/py-shiboken/package.py +++ b/var/spack/repos/builtin/packages/py-shiboken/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-simplegeneric/package.py b/var/spack/repos/builtin/packages/py-simplegeneric/package.py index c6db610ec43..7f2a6e7b6ae 100644 --- a/var/spack/repos/builtin/packages/py-simplegeneric/package.py +++ b/var/spack/repos/builtin/packages/py-simplegeneric/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-simplejson/package.py b/var/spack/repos/builtin/packages/py-simplejson/package.py index 81fc5859675..5f16f6183f4 100644 --- a/var/spack/repos/builtin/packages/py-simplejson/package.py +++ b/var/spack/repos/builtin/packages/py-simplejson/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-singledispatch/package.py b/var/spack/repos/builtin/packages/py-singledispatch/package.py index 08e86a24aa9..7603b90bdb5 100644 --- a/var/spack/repos/builtin/packages/py-singledispatch/package.py +++ b/var/spack/repos/builtin/packages/py-singledispatch/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sip/package.py b/var/spack/repos/builtin/packages/py-sip/package.py index 4243cefce0f..ed906d4302d 100644 --- a/var/spack/repos/builtin/packages/py-sip/package.py +++ b/var/spack/repos/builtin/packages/py-sip/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-six/package.py b/var/spack/repos/builtin/packages/py-six/package.py index 767d43b3bae..fede104b6c6 100644 --- a/var/spack/repos/builtin/packages/py-six/package.py +++ b/var/spack/repos/builtin/packages/py-six/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-slepc4py/package.py b/var/spack/repos/builtin/packages/py-slepc4py/package.py index 35b7286b9d4..f71b0eeb82c 100644 --- a/var/spack/repos/builtin/packages/py-slepc4py/package.py +++ b/var/spack/repos/builtin/packages/py-slepc4py/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sncosmo/package.py b/var/spack/repos/builtin/packages/py-sncosmo/package.py index e5f5165fb29..8ebb0e65a22 100644 --- a/var/spack/repos/builtin/packages/py-sncosmo/package.py +++ b/var/spack/repos/builtin/packages/py-sncosmo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-snowballstemmer/package.py b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py index fa6a19a01f4..7ecd7b9e28b 100644 --- a/var/spack/repos/builtin/packages/py-snowballstemmer/package.py +++ b/var/spack/repos/builtin/packages/py-snowballstemmer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-spectra/package.py b/var/spack/repos/builtin/packages/py-spectra/package.py index acb2643698f..959b4baa898 100644 --- a/var/spack/repos/builtin/packages/py-spectra/package.py +++ b/var/spack/repos/builtin/packages/py-spectra/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-spefile/package.py b/var/spack/repos/builtin/packages/py-spefile/package.py index 4ae57f64ec1..76d6772240e 100644 --- a/var/spack/repos/builtin/packages/py-spefile/package.py +++ b/var/spack/repos/builtin/packages/py-spefile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-spglib/package.py b/var/spack/repos/builtin/packages/py-spglib/package.py index e463970febf..e5e3f075e17 100644 --- a/var/spack/repos/builtin/packages/py-spglib/package.py +++ b/var/spack/repos/builtin/packages/py-spglib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py index bcdc5fa9342..6f4cb0b2421 100644 --- a/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx-bootstrap-theme/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py index 7166caef793..8972baafb86 100644 --- a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py index 1dbf581eb76..37c8505740e 100644 --- a/var/spack/repos/builtin/packages/py-sphinx/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py index d186c09b8f1..ec02dc1ef01 100644 --- a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py index a52565107f1..d7ec02db2a7 100644 --- a/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-programoutput/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py index 884f8c27a35..6f05a46044b 100644 --- a/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-websupport/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-spyder/package.py b/var/spack/repos/builtin/packages/py-spyder/package.py index 67194f31b1b..432f5a6a9f7 100644 --- a/var/spack/repos/builtin/packages/py-spyder/package.py +++ b/var/spack/repos/builtin/packages/py-spyder/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-spykeutils/package.py b/var/spack/repos/builtin/packages/py-spykeutils/package.py index 3c715071f57..bfe3a130bab 100644 --- a/var/spack/repos/builtin/packages/py-spykeutils/package.py +++ b/var/spack/repos/builtin/packages/py-spykeutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py index 12d868660ff..c009c058a2f 100644 --- a/var/spack/repos/builtin/packages/py-sqlalchemy/package.py +++ b/var/spack/repos/builtin/packages/py-sqlalchemy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-statsmodels/package.py b/var/spack/repos/builtin/packages/py-statsmodels/package.py index 9cef776e6df..865ffba0c29 100644 --- a/var/spack/repos/builtin/packages/py-statsmodels/package.py +++ b/var/spack/repos/builtin/packages/py-statsmodels/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-storm/package.py b/var/spack/repos/builtin/packages/py-storm/package.py index 1205b2a9cca..be504b72232 100644 --- a/var/spack/repos/builtin/packages/py-storm/package.py +++ b/var/spack/repos/builtin/packages/py-storm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-subprocess32/package.py b/var/spack/repos/builtin/packages/py-subprocess32/package.py index 5ed2027452b..2e2589e6db1 100644 --- a/var/spack/repos/builtin/packages/py-subprocess32/package.py +++ b/var/spack/repos/builtin/packages/py-subprocess32/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-symengine/package.py b/var/spack/repos/builtin/packages/py-symengine/package.py index 97c51d00b83..eed8c6759f8 100644 --- a/var/spack/repos/builtin/packages/py-symengine/package.py +++ b/var/spack/repos/builtin/packages/py-symengine/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-symfit/package.py b/var/spack/repos/builtin/packages/py-symfit/package.py index cbc30acf65a..2707fa59038 100644 --- a/var/spack/repos/builtin/packages/py-symfit/package.py +++ b/var/spack/repos/builtin/packages/py-symfit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-sympy/package.py b/var/spack/repos/builtin/packages/py-sympy/package.py index 8ab3e60a9b9..976442f23de 100644 --- a/var/spack/repos/builtin/packages/py-sympy/package.py +++ b/var/spack/repos/builtin/packages/py-sympy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-tabulate/package.py b/var/spack/repos/builtin/packages/py-tabulate/package.py index d33ca7b785c..61cc27a317a 100644 --- a/var/spack/repos/builtin/packages/py-tabulate/package.py +++ b/var/spack/repos/builtin/packages/py-tabulate/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-tappy/package.py b/var/spack/repos/builtin/packages/py-tappy/package.py index 36e22f71e15..e4f9d0b52b2 100644 --- a/var/spack/repos/builtin/packages/py-tappy/package.py +++ b/var/spack/repos/builtin/packages/py-tappy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-terminado/package.py b/var/spack/repos/builtin/packages/py-terminado/package.py index 483a3f472e3..948d028841e 100644 --- a/var/spack/repos/builtin/packages/py-terminado/package.py +++ b/var/spack/repos/builtin/packages/py-terminado/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-theano/package.py b/var/spack/repos/builtin/packages/py-theano/package.py index 0e1275700db..d763ef6ec8f 100644 --- a/var/spack/repos/builtin/packages/py-theano/package.py +++ b/var/spack/repos/builtin/packages/py-theano/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-tifffile/package.py b/var/spack/repos/builtin/packages/py-tifffile/package.py index ef70e2ae694..ea6c619e857 100644 --- a/var/spack/repos/builtin/packages/py-tifffile/package.py +++ b/var/spack/repos/builtin/packages/py-tifffile/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-tomopy/package.py b/var/spack/repos/builtin/packages/py-tomopy/package.py index a77caa4dac3..5ea077df006 100644 --- a/var/spack/repos/builtin/packages/py-tomopy/package.py +++ b/var/spack/repos/builtin/packages/py-tomopy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-tornado/package.py b/var/spack/repos/builtin/packages/py-tornado/package.py index 0ec044ad549..0ae50e38e22 100644 --- a/var/spack/repos/builtin/packages/py-tornado/package.py +++ b/var/spack/repos/builtin/packages/py-tornado/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-tqdm/package.py b/var/spack/repos/builtin/packages/py-tqdm/package.py index 2ca30c8e144..5f112cfb528 100644 --- a/var/spack/repos/builtin/packages/py-tqdm/package.py +++ b/var/spack/repos/builtin/packages/py-tqdm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-traitlets/package.py b/var/spack/repos/builtin/packages/py-traitlets/package.py index 10ff5a6e384..c419c60e72a 100644 --- a/var/spack/repos/builtin/packages/py-traitlets/package.py +++ b/var/spack/repos/builtin/packages/py-traitlets/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-tuiview/package.py b/var/spack/repos/builtin/packages/py-tuiview/package.py index 32166e67404..5c116397106 100644 --- a/var/spack/repos/builtin/packages/py-tuiview/package.py +++ b/var/spack/repos/builtin/packages/py-tuiview/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-twisted/package.py b/var/spack/repos/builtin/packages/py-twisted/package.py index 1184b49e3cb..546a2c7637d 100644 --- a/var/spack/repos/builtin/packages/py-twisted/package.py +++ b/var/spack/repos/builtin/packages/py-twisted/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-typing/package.py b/var/spack/repos/builtin/packages/py-typing/package.py index 52f5fa05b00..7b775853b19 100644 --- a/var/spack/repos/builtin/packages/py-typing/package.py +++ b/var/spack/repos/builtin/packages/py-typing/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-tzlocal/package.py b/var/spack/repos/builtin/packages/py-tzlocal/package.py index e4c085f1ce8..e65b5061708 100644 --- a/var/spack/repos/builtin/packages/py-tzlocal/package.py +++ b/var/spack/repos/builtin/packages/py-tzlocal/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-unittest2/package.py b/var/spack/repos/builtin/packages/py-unittest2/package.py index c0cdbf93392..eb979bcc0c1 100644 --- a/var/spack/repos/builtin/packages/py-unittest2/package.py +++ b/var/spack/repos/builtin/packages/py-unittest2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-unittest2py3k/package.py b/var/spack/repos/builtin/packages/py-unittest2py3k/package.py index ea8a9927e59..2903d57f338 100644 --- a/var/spack/repos/builtin/packages/py-unittest2py3k/package.py +++ b/var/spack/repos/builtin/packages/py-unittest2py3k/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-urllib3/package.py b/var/spack/repos/builtin/packages/py-urllib3/package.py index 5c56de76156..76418a35125 100644 --- a/var/spack/repos/builtin/packages/py-urllib3/package.py +++ b/var/spack/repos/builtin/packages/py-urllib3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-urwid/package.py b/var/spack/repos/builtin/packages/py-urwid/package.py index 4b662a0f1e3..964238581d5 100644 --- a/var/spack/repos/builtin/packages/py-urwid/package.py +++ b/var/spack/repos/builtin/packages/py-urwid/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-vcversioner/package.py b/var/spack/repos/builtin/packages/py-vcversioner/package.py index 33be558e3c6..5c6cc23748b 100644 --- a/var/spack/repos/builtin/packages/py-vcversioner/package.py +++ b/var/spack/repos/builtin/packages/py-vcversioner/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-virtualenv/package.py b/var/spack/repos/builtin/packages/py-virtualenv/package.py index 7c9f4a7af3b..6daa9f14488 100644 --- a/var/spack/repos/builtin/packages/py-virtualenv/package.py +++ b/var/spack/repos/builtin/packages/py-virtualenv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-wcsaxes/package.py b/var/spack/repos/builtin/packages/py-wcsaxes/package.py index 70cb81e8964..c6ea80a2be2 100644 --- a/var/spack/repos/builtin/packages/py-wcsaxes/package.py +++ b/var/spack/repos/builtin/packages/py-wcsaxes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-wcwidth/package.py b/var/spack/repos/builtin/packages/py-wcwidth/package.py index a5339b7f609..dc6dbe38900 100644 --- a/var/spack/repos/builtin/packages/py-wcwidth/package.py +++ b/var/spack/repos/builtin/packages/py-wcwidth/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-webkit-server/package.py b/var/spack/repos/builtin/packages/py-webkit-server/package.py index 1c3d42dc068..89f20a4f515 100644 --- a/var/spack/repos/builtin/packages/py-webkit-server/package.py +++ b/var/spack/repos/builtin/packages/py-webkit-server/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-werkzeug/package.py b/var/spack/repos/builtin/packages/py-werkzeug/package.py index a712cc84f29..a1241666eb8 100644 --- a/var/spack/repos/builtin/packages/py-werkzeug/package.py +++ b/var/spack/repos/builtin/packages/py-werkzeug/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py index 67719322447..31351095ade 100644 --- a/var/spack/repos/builtin/packages/py-wheel/package.py +++ b/var/spack/repos/builtin/packages/py-wheel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py index 86465235d1d..4dfb93fdfa4 100644 --- a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py +++ b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-wrapt/package.py b/var/spack/repos/builtin/packages/py-wrapt/package.py index 8b792a16ec4..70058141bcb 100644 --- a/var/spack/repos/builtin/packages/py-wrapt/package.py +++ b/var/spack/repos/builtin/packages/py-wrapt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-xarray/package.py b/var/spack/repos/builtin/packages/py-xarray/package.py index 436f1f87d0e..51a071cf2f6 100644 --- a/var/spack/repos/builtin/packages/py-xarray/package.py +++ b/var/spack/repos/builtin/packages/py-xarray/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-xlrd/package.py b/var/spack/repos/builtin/packages/py-xlrd/package.py index 4bf87a46ca4..61760fcbfff 100644 --- a/var/spack/repos/builtin/packages/py-xlrd/package.py +++ b/var/spack/repos/builtin/packages/py-xlrd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-xmlrunner/package.py b/var/spack/repos/builtin/packages/py-xmlrunner/package.py index 73fabe6242e..28d6fd58211 100644 --- a/var/spack/repos/builtin/packages/py-xmlrunner/package.py +++ b/var/spack/repos/builtin/packages/py-xmlrunner/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-xopen/package.py b/var/spack/repos/builtin/packages/py-xopen/package.py index c98ee00b1a6..3553e38bdae 100644 --- a/var/spack/repos/builtin/packages/py-xopen/package.py +++ b/var/spack/repos/builtin/packages/py-xopen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-xpyb/package.py b/var/spack/repos/builtin/packages/py-xpyb/package.py index b9099daa712..d3db02838fa 100644 --- a/var/spack/repos/builtin/packages/py-xpyb/package.py +++ b/var/spack/repos/builtin/packages/py-xpyb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py b/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py index 6b04d18521b..1fd0bc79813 100644 --- a/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py +++ b/var/spack/repos/builtin/packages/py-xvfbwrapper/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-yapf/package.py b/var/spack/repos/builtin/packages/py-yapf/package.py index 84a21bcc595..471f972b13e 100644 --- a/var/spack/repos/builtin/packages/py-yapf/package.py +++ b/var/spack/repos/builtin/packages/py-yapf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-yt/package.py b/var/spack/repos/builtin/packages/py-yt/package.py index 4575de0371d..6f1a1e97fa8 100644 --- a/var/spack/repos/builtin/packages/py-yt/package.py +++ b/var/spack/repos/builtin/packages/py-yt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/py-zmq/package.py b/var/spack/repos/builtin/packages/py-zmq/package.py index deddb77b956..644f374442d 100644 --- a/var/spack/repos/builtin/packages/py-zmq/package.py +++ b/var/spack/repos/builtin/packages/py-zmq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 2420190f565..fa6f3e33a17 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/qbank/package.py b/var/spack/repos/builtin/packages/qbank/package.py index a503ace3459..d6434006b2b 100644 --- a/var/spack/repos/builtin/packages/qbank/package.py +++ b/var/spack/repos/builtin/packages/qbank/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/qbox/package.py b/var/spack/repos/builtin/packages/qbox/package.py index 6ffb27e197f..dbbbdc329ee 100644 --- a/var/spack/repos/builtin/packages/qbox/package.py +++ b/var/spack/repos/builtin/packages/qbox/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/qhull/package.py b/var/spack/repos/builtin/packages/qhull/package.py index aaad704d66b..12c9aad492d 100644 --- a/var/spack/repos/builtin/packages/qhull/package.py +++ b/var/spack/repos/builtin/packages/qhull/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/qrupdate/package.py b/var/spack/repos/builtin/packages/qrupdate/package.py index 5398592d225..473ed20121a 100644 --- a/var/spack/repos/builtin/packages/qrupdate/package.py +++ b/var/spack/repos/builtin/packages/qrupdate/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/qt-creator/package.py b/var/spack/repos/builtin/packages/qt-creator/package.py index 4b3054b7b68..55ceeaf17f2 100644 --- a/var/spack/repos/builtin/packages/qt-creator/package.py +++ b/var/spack/repos/builtin/packages/qt-creator/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index e872a530135..30d9431353e 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/qthreads/package.py b/var/spack/repos/builtin/packages/qthreads/package.py index a4be2072c58..09f9d594b3b 100644 --- a/var/spack/repos/builtin/packages/qthreads/package.py +++ b/var/spack/repos/builtin/packages/qthreads/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/qwt/package.py b/var/spack/repos/builtin/packages/qwt/package.py index 10ca44e1c3f..6efc837a220 100644 --- a/var/spack/repos/builtin/packages/qwt/package.py +++ b/var/spack/repos/builtin/packages/qwt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-abind/package.py b/var/spack/repos/builtin/packages/r-abind/package.py index 5b63f7b7feb..44a8618f26b 100644 --- a/var/spack/repos/builtin/packages/r-abind/package.py +++ b/var/spack/repos/builtin/packages/r-abind/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ada/package.py b/var/spack/repos/builtin/packages/r-ada/package.py index 27b1f8c95a2..34d285e5cb9 100644 --- a/var/spack/repos/builtin/packages/r-ada/package.py +++ b/var/spack/repos/builtin/packages/r-ada/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-adabag/package.py b/var/spack/repos/builtin/packages/r-adabag/package.py index 87fc37362d9..cfde479fd8f 100644 --- a/var/spack/repos/builtin/packages/r-adabag/package.py +++ b/var/spack/repos/builtin/packages/r-adabag/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ade4/package.py b/var/spack/repos/builtin/packages/r-ade4/package.py index 2951703c65f..d4c51ca7a74 100644 --- a/var/spack/repos/builtin/packages/r-ade4/package.py +++ b/var/spack/repos/builtin/packages/r-ade4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-adegenet/package.py b/var/spack/repos/builtin/packages/r-adegenet/package.py index e7e7c408e7b..a1435189db5 100644 --- a/var/spack/repos/builtin/packages/r-adegenet/package.py +++ b/var/spack/repos/builtin/packages/r-adegenet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ape/package.py b/var/spack/repos/builtin/packages/r-ape/package.py index 9830a0e35d6..d2519aa4f73 100644 --- a/var/spack/repos/builtin/packages/r-ape/package.py +++ b/var/spack/repos/builtin/packages/r-ape/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-assertthat/package.py b/var/spack/repos/builtin/packages/r-assertthat/package.py index d9b6eccbbc1..8ba3002fa8f 100644 --- a/var/spack/repos/builtin/packages/r-assertthat/package.py +++ b/var/spack/repos/builtin/packages/r-assertthat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-base64enc/package.py b/var/spack/repos/builtin/packages/r-base64enc/package.py index 6e3ac59d7f9..4657fd33960 100644 --- a/var/spack/repos/builtin/packages/r-base64enc/package.py +++ b/var/spack/repos/builtin/packages/r-base64enc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-bh/package.py b/var/spack/repos/builtin/packages/r-bh/package.py index 3cdac25f0d7..fe1fa6467a2 100644 --- a/var/spack/repos/builtin/packages/r-bh/package.py +++ b/var/spack/repos/builtin/packages/r-bh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-biocgenerics/package.py b/var/spack/repos/builtin/packages/r-biocgenerics/package.py index f8c0294b22d..7b91598ca13 100644 --- a/var/spack/repos/builtin/packages/r-biocgenerics/package.py +++ b/var/spack/repos/builtin/packages/r-biocgenerics/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-biocinstaller/package.py b/var/spack/repos/builtin/packages/r-biocinstaller/package.py index fbde6a26f6c..5d91eb0a83c 100644 --- a/var/spack/repos/builtin/packages/r-biocinstaller/package.py +++ b/var/spack/repos/builtin/packages/r-biocinstaller/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-bitops/package.py b/var/spack/repos/builtin/packages/r-bitops/package.py index c9b2d6af019..59bd6308aab 100644 --- a/var/spack/repos/builtin/packages/r-bitops/package.py +++ b/var/spack/repos/builtin/packages/r-bitops/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-boot/package.py b/var/spack/repos/builtin/packages/r-boot/package.py index 50a057bcbb0..55ea5dba01d 100644 --- a/var/spack/repos/builtin/packages/r-boot/package.py +++ b/var/spack/repos/builtin/packages/r-boot/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-brew/package.py b/var/spack/repos/builtin/packages/r-brew/package.py index c9e42339c3f..faecc9ac927 100644 --- a/var/spack/repos/builtin/packages/r-brew/package.py +++ b/var/spack/repos/builtin/packages/r-brew/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-c50/package.py b/var/spack/repos/builtin/packages/r-c50/package.py index fbffd61d38f..2b526b7862f 100644 --- a/var/spack/repos/builtin/packages/r-c50/package.py +++ b/var/spack/repos/builtin/packages/r-c50/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-car/package.py b/var/spack/repos/builtin/packages/r-car/package.py index 5bd107d2d2e..ac1045ff514 100644 --- a/var/spack/repos/builtin/packages/r-car/package.py +++ b/var/spack/repos/builtin/packages/r-car/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-caret/package.py b/var/spack/repos/builtin/packages/r-caret/package.py index 92b6ef28d8a..ec0d08d1f28 100644 --- a/var/spack/repos/builtin/packages/r-caret/package.py +++ b/var/spack/repos/builtin/packages/r-caret/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-catools/package.py b/var/spack/repos/builtin/packages/r-catools/package.py index 6867af0e893..421da49e00f 100644 --- a/var/spack/repos/builtin/packages/r-catools/package.py +++ b/var/spack/repos/builtin/packages/r-catools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-checkpoint/package.py b/var/spack/repos/builtin/packages/r-checkpoint/package.py index 78c0d55975c..cb9fd1de1f1 100644 --- a/var/spack/repos/builtin/packages/r-checkpoint/package.py +++ b/var/spack/repos/builtin/packages/r-checkpoint/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-chron/package.py b/var/spack/repos/builtin/packages/r-chron/package.py index a86dd10eef3..323210fe3cb 100644 --- a/var/spack/repos/builtin/packages/r-chron/package.py +++ b/var/spack/repos/builtin/packages/r-chron/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-class/package.py b/var/spack/repos/builtin/packages/r-class/package.py index feb1951f62d..85c5c747baa 100644 --- a/var/spack/repos/builtin/packages/r-class/package.py +++ b/var/spack/repos/builtin/packages/r-class/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-cluster/package.py b/var/spack/repos/builtin/packages/r-cluster/package.py index 680982d86da..46020781b96 100644 --- a/var/spack/repos/builtin/packages/r-cluster/package.py +++ b/var/spack/repos/builtin/packages/r-cluster/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-coda/package.py b/var/spack/repos/builtin/packages/r-coda/package.py index a0fe4eef5cd..a75059bc70f 100644 --- a/var/spack/repos/builtin/packages/r-coda/package.py +++ b/var/spack/repos/builtin/packages/r-coda/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-codetools/package.py b/var/spack/repos/builtin/packages/r-codetools/package.py index 157aeb80de5..6aff92cd336 100644 --- a/var/spack/repos/builtin/packages/r-codetools/package.py +++ b/var/spack/repos/builtin/packages/r-codetools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-coin/package.py b/var/spack/repos/builtin/packages/r-coin/package.py index 7ab7a3fdaed..b17696e7f02 100644 --- a/var/spack/repos/builtin/packages/r-coin/package.py +++ b/var/spack/repos/builtin/packages/r-coin/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-colorspace/package.py b/var/spack/repos/builtin/packages/r-colorspace/package.py index 8c16c6ba623..30bdf8ee1f2 100644 --- a/var/spack/repos/builtin/packages/r-colorspace/package.py +++ b/var/spack/repos/builtin/packages/r-colorspace/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-corpcor/package.py b/var/spack/repos/builtin/packages/r-corpcor/package.py index 09798cbd2db..2e97c78cef2 100644 --- a/var/spack/repos/builtin/packages/r-corpcor/package.py +++ b/var/spack/repos/builtin/packages/r-corpcor/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-corrplot/package.py b/var/spack/repos/builtin/packages/r-corrplot/package.py index 1fdaf194db0..9a7612d7c31 100644 --- a/var/spack/repos/builtin/packages/r-corrplot/package.py +++ b/var/spack/repos/builtin/packages/r-corrplot/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-crayon/package.py b/var/spack/repos/builtin/packages/r-crayon/package.py index d40942e8870..bc35add9ffb 100644 --- a/var/spack/repos/builtin/packages/r-crayon/package.py +++ b/var/spack/repos/builtin/packages/r-crayon/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-cubature/package.py b/var/spack/repos/builtin/packages/r-cubature/package.py index 3f436ef847d..41bed750806 100644 --- a/var/spack/repos/builtin/packages/r-cubature/package.py +++ b/var/spack/repos/builtin/packages/r-cubature/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-cubist/package.py b/var/spack/repos/builtin/packages/r-cubist/package.py index 9c50c57c384..771045e4e6c 100644 --- a/var/spack/repos/builtin/packages/r-cubist/package.py +++ b/var/spack/repos/builtin/packages/r-cubist/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-curl/package.py b/var/spack/repos/builtin/packages/r-curl/package.py index 91bd22e2679..676e3b5c907 100644 --- a/var/spack/repos/builtin/packages/r-curl/package.py +++ b/var/spack/repos/builtin/packages/r-curl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-data-table/package.py b/var/spack/repos/builtin/packages/r-data-table/package.py index db761305993..36997d7268c 100644 --- a/var/spack/repos/builtin/packages/r-data-table/package.py +++ b/var/spack/repos/builtin/packages/r-data-table/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-dbi/package.py b/var/spack/repos/builtin/packages/r-dbi/package.py index 06477a7bb60..e6f37bd5922 100644 --- a/var/spack/repos/builtin/packages/r-dbi/package.py +++ b/var/spack/repos/builtin/packages/r-dbi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-deldir/package.py b/var/spack/repos/builtin/packages/r-deldir/package.py index 1bc83412417..af7869ae876 100644 --- a/var/spack/repos/builtin/packages/r-deldir/package.py +++ b/var/spack/repos/builtin/packages/r-deldir/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-dendextend/package.py b/var/spack/repos/builtin/packages/r-dendextend/package.py index 33a4fb95633..b1750f86706 100644 --- a/var/spack/repos/builtin/packages/r-dendextend/package.py +++ b/var/spack/repos/builtin/packages/r-dendextend/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-deoptim/package.py b/var/spack/repos/builtin/packages/r-deoptim/package.py index 5c55bcc1605..5f62b426b9a 100644 --- a/var/spack/repos/builtin/packages/r-deoptim/package.py +++ b/var/spack/repos/builtin/packages/r-deoptim/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-deoptimr/package.py b/var/spack/repos/builtin/packages/r-deoptimr/package.py index fa028e5fbf0..f47e7046ad9 100644 --- a/var/spack/repos/builtin/packages/r-deoptimr/package.py +++ b/var/spack/repos/builtin/packages/r-deoptimr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-devtools/package.py b/var/spack/repos/builtin/packages/r-devtools/package.py index ed5515185fc..8f21e62eeba 100644 --- a/var/spack/repos/builtin/packages/r-devtools/package.py +++ b/var/spack/repos/builtin/packages/r-devtools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-diagrammer/package.py b/var/spack/repos/builtin/packages/r-diagrammer/package.py index ada1cb27766..cdf75e260d5 100644 --- a/var/spack/repos/builtin/packages/r-diagrammer/package.py +++ b/var/spack/repos/builtin/packages/r-diagrammer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-dichromat/package.py b/var/spack/repos/builtin/packages/r-dichromat/package.py index 0c51cc89474..931c50bcfeb 100644 --- a/var/spack/repos/builtin/packages/r-dichromat/package.py +++ b/var/spack/repos/builtin/packages/r-dichromat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-digest/package.py b/var/spack/repos/builtin/packages/r-digest/package.py index 9f68dec3582..0964212124b 100644 --- a/var/spack/repos/builtin/packages/r-digest/package.py +++ b/var/spack/repos/builtin/packages/r-digest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-diptest/package.py b/var/spack/repos/builtin/packages/r-diptest/package.py index aca82156b80..b21955fdc63 100644 --- a/var/spack/repos/builtin/packages/r-diptest/package.py +++ b/var/spack/repos/builtin/packages/r-diptest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-domc/package.py b/var/spack/repos/builtin/packages/r-domc/package.py index 51e174185bf..9b5ce2cd42c 100644 --- a/var/spack/repos/builtin/packages/r-domc/package.py +++ b/var/spack/repos/builtin/packages/r-domc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-doparallel/package.py b/var/spack/repos/builtin/packages/r-doparallel/package.py index 83e7c98476b..86e886f6e5e 100644 --- a/var/spack/repos/builtin/packages/r-doparallel/package.py +++ b/var/spack/repos/builtin/packages/r-doparallel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-dplyr/package.py b/var/spack/repos/builtin/packages/r-dplyr/package.py index bb05d9cea45..bd99fc137f5 100644 --- a/var/spack/repos/builtin/packages/r-dplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dplyr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-dt/package.py b/var/spack/repos/builtin/packages/r-dt/package.py index 473d5e1be51..6284137ffbe 100644 --- a/var/spack/repos/builtin/packages/r-dt/package.py +++ b/var/spack/repos/builtin/packages/r-dt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-dygraphs/package.py b/var/spack/repos/builtin/packages/r-dygraphs/package.py index 63304451b64..eff42c14640 100644 --- a/var/spack/repos/builtin/packages/r-dygraphs/package.py +++ b/var/spack/repos/builtin/packages/r-dygraphs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-e1071/package.py b/var/spack/repos/builtin/packages/r-e1071/package.py index 19dd5b54661..8c7729b6244 100644 --- a/var/spack/repos/builtin/packages/r-e1071/package.py +++ b/var/spack/repos/builtin/packages/r-e1071/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ellipse/package.py b/var/spack/repos/builtin/packages/r-ellipse/package.py index 686da16b0bb..55f2e078e4a 100644 --- a/var/spack/repos/builtin/packages/r-ellipse/package.py +++ b/var/spack/repos/builtin/packages/r-ellipse/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ergm/package.py b/var/spack/repos/builtin/packages/r-ergm/package.py index ae254dca433..ea89c615f8e 100644 --- a/var/spack/repos/builtin/packages/r-ergm/package.py +++ b/var/spack/repos/builtin/packages/r-ergm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-evaluate/package.py b/var/spack/repos/builtin/packages/r-evaluate/package.py index 6bb5ed8e95a..918f1e11bcb 100644 --- a/var/spack/repos/builtin/packages/r-evaluate/package.py +++ b/var/spack/repos/builtin/packages/r-evaluate/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-expm/package.py b/var/spack/repos/builtin/packages/r-expm/package.py index f819a07641f..431981d739f 100644 --- a/var/spack/repos/builtin/packages/r-expm/package.py +++ b/var/spack/repos/builtin/packages/r-expm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-factoextra/package.py b/var/spack/repos/builtin/packages/r-factoextra/package.py index ed42193f92e..fcba342af6a 100644 --- a/var/spack/repos/builtin/packages/r-factoextra/package.py +++ b/var/spack/repos/builtin/packages/r-factoextra/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-factominer/package.py b/var/spack/repos/builtin/packages/r-factominer/package.py index de5668b3117..7d4eb40eaeb 100644 --- a/var/spack/repos/builtin/packages/r-factominer/package.py +++ b/var/spack/repos/builtin/packages/r-factominer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-filehash/package.py b/var/spack/repos/builtin/packages/r-filehash/package.py index 4dcd3df5a32..eb16bdaae75 100644 --- a/var/spack/repos/builtin/packages/r-filehash/package.py +++ b/var/spack/repos/builtin/packages/r-filehash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-flashclust/package.py b/var/spack/repos/builtin/packages/r-flashclust/package.py index 4edb9df8442..913c915c3f8 100644 --- a/var/spack/repos/builtin/packages/r-flashclust/package.py +++ b/var/spack/repos/builtin/packages/r-flashclust/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-flexmix/package.py b/var/spack/repos/builtin/packages/r-flexmix/package.py index 65a3a9dc177..c40e5f5eeb5 100644 --- a/var/spack/repos/builtin/packages/r-flexmix/package.py +++ b/var/spack/repos/builtin/packages/r-flexmix/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-foreach/package.py b/var/spack/repos/builtin/packages/r-foreach/package.py index 166a9f20cb3..f2a75125bf4 100644 --- a/var/spack/repos/builtin/packages/r-foreach/package.py +++ b/var/spack/repos/builtin/packages/r-foreach/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-foreign/package.py b/var/spack/repos/builtin/packages/r-foreign/package.py index 45845234e08..687b9707440 100644 --- a/var/spack/repos/builtin/packages/r-foreign/package.py +++ b/var/spack/repos/builtin/packages/r-foreign/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-formatr/package.py b/var/spack/repos/builtin/packages/r-formatr/package.py index d1609ad7185..5f1aba79970 100644 --- a/var/spack/repos/builtin/packages/r-formatr/package.py +++ b/var/spack/repos/builtin/packages/r-formatr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-formula/package.py b/var/spack/repos/builtin/packages/r-formula/package.py index 5d7b7119ddb..5ce97399a83 100644 --- a/var/spack/repos/builtin/packages/r-formula/package.py +++ b/var/spack/repos/builtin/packages/r-formula/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-fpc/package.py b/var/spack/repos/builtin/packages/r-fpc/package.py index e8fff8c0670..eb14ea11024 100644 --- a/var/spack/repos/builtin/packages/r-fpc/package.py +++ b/var/spack/repos/builtin/packages/r-fpc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-gdata/package.py b/var/spack/repos/builtin/packages/r-gdata/package.py index 79ea4baeff2..57653131575 100644 --- a/var/spack/repos/builtin/packages/r-gdata/package.py +++ b/var/spack/repos/builtin/packages/r-gdata/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-geosphere/package.py b/var/spack/repos/builtin/packages/r-geosphere/package.py index a338d4b112f..89222b0986f 100644 --- a/var/spack/repos/builtin/packages/r-geosphere/package.py +++ b/var/spack/repos/builtin/packages/r-geosphere/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ggmap/package.py b/var/spack/repos/builtin/packages/r-ggmap/package.py index b7cb033d6fa..d921c0944e7 100644 --- a/var/spack/repos/builtin/packages/r-ggmap/package.py +++ b/var/spack/repos/builtin/packages/r-ggmap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ggplot2/package.py b/var/spack/repos/builtin/packages/r-ggplot2/package.py index c8ee8acea69..1063b81392c 100644 --- a/var/spack/repos/builtin/packages/r-ggplot2/package.py +++ b/var/spack/repos/builtin/packages/r-ggplot2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ggpubr/package.py b/var/spack/repos/builtin/packages/r-ggpubr/package.py index bdf8774e285..e3543c4c420 100644 --- a/var/spack/repos/builtin/packages/r-ggpubr/package.py +++ b/var/spack/repos/builtin/packages/r-ggpubr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ggrepel/package.py b/var/spack/repos/builtin/packages/r-ggrepel/package.py index 52baa0b0777..35d0df59273 100644 --- a/var/spack/repos/builtin/packages/r-ggrepel/package.py +++ b/var/spack/repos/builtin/packages/r-ggrepel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ggsci/package.py b/var/spack/repos/builtin/packages/r-ggsci/package.py index 8df9c21de85..d8dfa0e24b5 100644 --- a/var/spack/repos/builtin/packages/r-ggsci/package.py +++ b/var/spack/repos/builtin/packages/r-ggsci/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ggvis/package.py b/var/spack/repos/builtin/packages/r-ggvis/package.py index d527d2a93a0..8cfdfe533a6 100644 --- a/var/spack/repos/builtin/packages/r-ggvis/package.py +++ b/var/spack/repos/builtin/packages/r-ggvis/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-gistr/package.py b/var/spack/repos/builtin/packages/r-gistr/package.py index d8e89722e97..344d03db784 100644 --- a/var/spack/repos/builtin/packages/r-gistr/package.py +++ b/var/spack/repos/builtin/packages/r-gistr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-git2r/package.py b/var/spack/repos/builtin/packages/r-git2r/package.py index 3612d6ebb52..037a9b0fc81 100644 --- a/var/spack/repos/builtin/packages/r-git2r/package.py +++ b/var/spack/repos/builtin/packages/r-git2r/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-glmnet/package.py b/var/spack/repos/builtin/packages/r-glmnet/package.py index 8f9793ec318..f7ab38d0264 100644 --- a/var/spack/repos/builtin/packages/r-glmnet/package.py +++ b/var/spack/repos/builtin/packages/r-glmnet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-gmodels/package.py b/var/spack/repos/builtin/packages/r-gmodels/package.py index c703c2a5214..7cf838caf74 100644 --- a/var/spack/repos/builtin/packages/r-gmodels/package.py +++ b/var/spack/repos/builtin/packages/r-gmodels/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-gmp/package.py b/var/spack/repos/builtin/packages/r-gmp/package.py index 12eb85e5cc0..2db8ac871e6 100644 --- a/var/spack/repos/builtin/packages/r-gmp/package.py +++ b/var/spack/repos/builtin/packages/r-gmp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-googlevis/package.py b/var/spack/repos/builtin/packages/r-googlevis/package.py index 95101c3d06f..9a568bd94f6 100644 --- a/var/spack/repos/builtin/packages/r-googlevis/package.py +++ b/var/spack/repos/builtin/packages/r-googlevis/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-gridbase/package.py b/var/spack/repos/builtin/packages/r-gridbase/package.py index ab9d7ad834a..1a45997ef6d 100644 --- a/var/spack/repos/builtin/packages/r-gridbase/package.py +++ b/var/spack/repos/builtin/packages/r-gridbase/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-gridextra/package.py b/var/spack/repos/builtin/packages/r-gridextra/package.py index 9ae3af3026b..752c5374dba 100644 --- a/var/spack/repos/builtin/packages/r-gridextra/package.py +++ b/var/spack/repos/builtin/packages/r-gridextra/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-gtable/package.py b/var/spack/repos/builtin/packages/r-gtable/package.py index 2bb1c713e71..f7c120c9e19 100644 --- a/var/spack/repos/builtin/packages/r-gtable/package.py +++ b/var/spack/repos/builtin/packages/r-gtable/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-gtools/package.py b/var/spack/repos/builtin/packages/r-gtools/package.py index 3e6f5949d22..f81590ab758 100644 --- a/var/spack/repos/builtin/packages/r-gtools/package.py +++ b/var/spack/repos/builtin/packages/r-gtools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-hexbin/package.py b/var/spack/repos/builtin/packages/r-hexbin/package.py index 018d5e24ce5..0442fc3165a 100644 --- a/var/spack/repos/builtin/packages/r-hexbin/package.py +++ b/var/spack/repos/builtin/packages/r-hexbin/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-highr/package.py b/var/spack/repos/builtin/packages/r-highr/package.py index 0fa7a850dfa..ed24a290d6a 100644 --- a/var/spack/repos/builtin/packages/r-highr/package.py +++ b/var/spack/repos/builtin/packages/r-highr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-htmltools/package.py b/var/spack/repos/builtin/packages/r-htmltools/package.py index c679c51b0ec..68fc94504cf 100644 --- a/var/spack/repos/builtin/packages/r-htmltools/package.py +++ b/var/spack/repos/builtin/packages/r-htmltools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py index bf624e7639f..03db018c9c6 100644 --- a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py +++ b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-httpuv/package.py b/var/spack/repos/builtin/packages/r-httpuv/package.py index 93d8508300a..a3f73fb61fa 100644 --- a/var/spack/repos/builtin/packages/r-httpuv/package.py +++ b/var/spack/repos/builtin/packages/r-httpuv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-httr/package.py b/var/spack/repos/builtin/packages/r-httr/package.py index e976a30f7cd..5e0ca16c198 100644 --- a/var/spack/repos/builtin/packages/r-httr/package.py +++ b/var/spack/repos/builtin/packages/r-httr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-igraph/package.py b/var/spack/repos/builtin/packages/r-igraph/package.py index 0e8177d84ed..cc2186003d6 100644 --- a/var/spack/repos/builtin/packages/r-igraph/package.py +++ b/var/spack/repos/builtin/packages/r-igraph/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-influencer/package.py b/var/spack/repos/builtin/packages/r-influencer/package.py index ca17e900d92..8ecaaafde9f 100644 --- a/var/spack/repos/builtin/packages/r-influencer/package.py +++ b/var/spack/repos/builtin/packages/r-influencer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-inline/package.py b/var/spack/repos/builtin/packages/r-inline/package.py index 3ddd145cae8..5314cd7ea88 100644 --- a/var/spack/repos/builtin/packages/r-inline/package.py +++ b/var/spack/repos/builtin/packages/r-inline/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ipred/package.py b/var/spack/repos/builtin/packages/r-ipred/package.py index c3aa0e0d403..4bb4e871bdb 100644 --- a/var/spack/repos/builtin/packages/r-ipred/package.py +++ b/var/spack/repos/builtin/packages/r-ipred/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-irdisplay/package.py b/var/spack/repos/builtin/packages/r-irdisplay/package.py index 1896eccf6d1..6e99a0ab8ab 100644 --- a/var/spack/repos/builtin/packages/r-irdisplay/package.py +++ b/var/spack/repos/builtin/packages/r-irdisplay/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-irkernel/package.py b/var/spack/repos/builtin/packages/r-irkernel/package.py index 1ea52dedad1..87ab0abb17c 100644 --- a/var/spack/repos/builtin/packages/r-irkernel/package.py +++ b/var/spack/repos/builtin/packages/r-irkernel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-irlba/package.py b/var/spack/repos/builtin/packages/r-irlba/package.py index aea557cd3f9..14d08e8c430 100644 --- a/var/spack/repos/builtin/packages/r-irlba/package.py +++ b/var/spack/repos/builtin/packages/r-irlba/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-iterators/package.py b/var/spack/repos/builtin/packages/r-iterators/package.py index 6561a471f09..6c3d208eba8 100644 --- a/var/spack/repos/builtin/packages/r-iterators/package.py +++ b/var/spack/repos/builtin/packages/r-iterators/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-jpeg/package.py b/var/spack/repos/builtin/packages/r-jpeg/package.py index 13a96d50e29..80f6e09017f 100644 --- a/var/spack/repos/builtin/packages/r-jpeg/package.py +++ b/var/spack/repos/builtin/packages/r-jpeg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-jsonlite/package.py b/var/spack/repos/builtin/packages/r-jsonlite/package.py index 364966c9c16..a58059c537d 100644 --- a/var/spack/repos/builtin/packages/r-jsonlite/package.py +++ b/var/spack/repos/builtin/packages/r-jsonlite/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-kernlab/package.py b/var/spack/repos/builtin/packages/r-kernlab/package.py index fc336e6c8c2..943902844ce 100644 --- a/var/spack/repos/builtin/packages/r-kernlab/package.py +++ b/var/spack/repos/builtin/packages/r-kernlab/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-kernsmooth/package.py b/var/spack/repos/builtin/packages/r-kernsmooth/package.py index e72c2999199..6cf41190798 100644 --- a/var/spack/repos/builtin/packages/r-kernsmooth/package.py +++ b/var/spack/repos/builtin/packages/r-kernsmooth/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-kknn/package.py b/var/spack/repos/builtin/packages/r-kknn/package.py index 27824c7fdb6..4ee2cdeacda 100644 --- a/var/spack/repos/builtin/packages/r-kknn/package.py +++ b/var/spack/repos/builtin/packages/r-kknn/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-knitr/package.py b/var/spack/repos/builtin/packages/r-knitr/package.py index 71e95b49f2e..0b214a11ebd 100644 --- a/var/spack/repos/builtin/packages/r-knitr/package.py +++ b/var/spack/repos/builtin/packages/r-knitr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-labeling/package.py b/var/spack/repos/builtin/packages/r-labeling/package.py index 7a57909787d..c2cfdf8712a 100644 --- a/var/spack/repos/builtin/packages/r-labeling/package.py +++ b/var/spack/repos/builtin/packages/r-labeling/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-laplacesdemon/package.py b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py index 61aca6b9d8b..7f245db1a0f 100644 --- a/var/spack/repos/builtin/packages/r-laplacesdemon/package.py +++ b/var/spack/repos/builtin/packages/r-laplacesdemon/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-lattice/package.py b/var/spack/repos/builtin/packages/r-lattice/package.py index faefc2de0f2..6c1532ee53f 100644 --- a/var/spack/repos/builtin/packages/r-lattice/package.py +++ b/var/spack/repos/builtin/packages/r-lattice/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-lava/package.py b/var/spack/repos/builtin/packages/r-lava/package.py index e3aef589b25..4616e0a23a6 100644 --- a/var/spack/repos/builtin/packages/r-lava/package.py +++ b/var/spack/repos/builtin/packages/r-lava/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-lazyeval/package.py b/var/spack/repos/builtin/packages/r-lazyeval/package.py index a48a06f38fb..19d8b0b6bd6 100644 --- a/var/spack/repos/builtin/packages/r-lazyeval/package.py +++ b/var/spack/repos/builtin/packages/r-lazyeval/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-leaflet/package.py b/var/spack/repos/builtin/packages/r-leaflet/package.py index b7f39992bd2..002703313ac 100644 --- a/var/spack/repos/builtin/packages/r-leaflet/package.py +++ b/var/spack/repos/builtin/packages/r-leaflet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-leaps/package.py b/var/spack/repos/builtin/packages/r-leaps/package.py index 9ac7875b375..097e5039035 100644 --- a/var/spack/repos/builtin/packages/r-leaps/package.py +++ b/var/spack/repos/builtin/packages/r-leaps/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-learnbayes/package.py b/var/spack/repos/builtin/packages/r-learnbayes/package.py index d4a6fa42fac..4eb01c23d6c 100644 --- a/var/spack/repos/builtin/packages/r-learnbayes/package.py +++ b/var/spack/repos/builtin/packages/r-learnbayes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-lme4/package.py b/var/spack/repos/builtin/packages/r-lme4/package.py index c06e319273b..c7d4e815e35 100644 --- a/var/spack/repos/builtin/packages/r-lme4/package.py +++ b/var/spack/repos/builtin/packages/r-lme4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-lmtest/package.py b/var/spack/repos/builtin/packages/r-lmtest/package.py index 27fe98f0f82..a9871f2cc4b 100644 --- a/var/spack/repos/builtin/packages/r-lmtest/package.py +++ b/var/spack/repos/builtin/packages/r-lmtest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-lpsolve/package.py b/var/spack/repos/builtin/packages/r-lpsolve/package.py index 5f694f6f6db..215ee38c935 100644 --- a/var/spack/repos/builtin/packages/r-lpsolve/package.py +++ b/var/spack/repos/builtin/packages/r-lpsolve/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-lubridate/package.py b/var/spack/repos/builtin/packages/r-lubridate/package.py index 5e2f6f0d059..4983b06a129 100644 --- a/var/spack/repos/builtin/packages/r-lubridate/package.py +++ b/var/spack/repos/builtin/packages/r-lubridate/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-magic/package.py b/var/spack/repos/builtin/packages/r-magic/package.py index 3844584c680..84ddac9ad7e 100644 --- a/var/spack/repos/builtin/packages/r-magic/package.py +++ b/var/spack/repos/builtin/packages/r-magic/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-magrittr/package.py b/var/spack/repos/builtin/packages/r-magrittr/package.py index 33cc9b178ce..6bb8dce442d 100644 --- a/var/spack/repos/builtin/packages/r-magrittr/package.py +++ b/var/spack/repos/builtin/packages/r-magrittr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-mapproj/package.py b/var/spack/repos/builtin/packages/r-mapproj/package.py index 590ff0c9bdd..4eca2c2a41e 100644 --- a/var/spack/repos/builtin/packages/r-mapproj/package.py +++ b/var/spack/repos/builtin/packages/r-mapproj/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-maps/package.py b/var/spack/repos/builtin/packages/r-maps/package.py index 9c526c80df5..49095012ad2 100644 --- a/var/spack/repos/builtin/packages/r-maps/package.py +++ b/var/spack/repos/builtin/packages/r-maps/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-maptools/package.py b/var/spack/repos/builtin/packages/r-maptools/package.py index 217af815412..d09a5a4fa7e 100644 --- a/var/spack/repos/builtin/packages/r-maptools/package.py +++ b/var/spack/repos/builtin/packages/r-maptools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-markdown/package.py b/var/spack/repos/builtin/packages/r-markdown/package.py index e44d67aa337..0e956f6d4c8 100644 --- a/var/spack/repos/builtin/packages/r-markdown/package.py +++ b/var/spack/repos/builtin/packages/r-markdown/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-mass/package.py b/var/spack/repos/builtin/packages/r-mass/package.py index 873376c26f5..5620b4b11b9 100644 --- a/var/spack/repos/builtin/packages/r-mass/package.py +++ b/var/spack/repos/builtin/packages/r-mass/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-matrix/package.py b/var/spack/repos/builtin/packages/r-matrix/package.py index 7f30d584460..e6014d51026 100644 --- a/var/spack/repos/builtin/packages/r-matrix/package.py +++ b/var/spack/repos/builtin/packages/r-matrix/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-matrixmodels/package.py b/var/spack/repos/builtin/packages/r-matrixmodels/package.py index 1707453552b..5b201a6bbf0 100644 --- a/var/spack/repos/builtin/packages/r-matrixmodels/package.py +++ b/var/spack/repos/builtin/packages/r-matrixmodels/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-mclust/package.py b/var/spack/repos/builtin/packages/r-mclust/package.py index 9c5f3dd4b0d..1b3b3c1701a 100644 --- a/var/spack/repos/builtin/packages/r-mclust/package.py +++ b/var/spack/repos/builtin/packages/r-mclust/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-mda/package.py b/var/spack/repos/builtin/packages/r-mda/package.py index 079c2a1a5af..e7b124195b0 100644 --- a/var/spack/repos/builtin/packages/r-mda/package.py +++ b/var/spack/repos/builtin/packages/r-mda/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-memoise/package.py b/var/spack/repos/builtin/packages/r-memoise/package.py index 9c507391dac..c8402fd7d19 100644 --- a/var/spack/repos/builtin/packages/r-memoise/package.py +++ b/var/spack/repos/builtin/packages/r-memoise/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-mgcv/package.py b/var/spack/repos/builtin/packages/r-mgcv/package.py index 3a879971ffe..1b0c1dc872a 100644 --- a/var/spack/repos/builtin/packages/r-mgcv/package.py +++ b/var/spack/repos/builtin/packages/r-mgcv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-mime/package.py b/var/spack/repos/builtin/packages/r-mime/package.py index db490bd24db..b0a7ed2f654 100644 --- a/var/spack/repos/builtin/packages/r-mime/package.py +++ b/var/spack/repos/builtin/packages/r-mime/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-minqa/package.py b/var/spack/repos/builtin/packages/r-minqa/package.py index 47fa0620ce8..1af935c2d17 100644 --- a/var/spack/repos/builtin/packages/r-minqa/package.py +++ b/var/spack/repos/builtin/packages/r-minqa/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-mlbench/package.py b/var/spack/repos/builtin/packages/r-mlbench/package.py index 98366d9fa80..bee3b4006cc 100644 --- a/var/spack/repos/builtin/packages/r-mlbench/package.py +++ b/var/spack/repos/builtin/packages/r-mlbench/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-modelmetrics/package.py b/var/spack/repos/builtin/packages/r-modelmetrics/package.py index 99cb924433e..e8f4eb5c354 100644 --- a/var/spack/repos/builtin/packages/r-modelmetrics/package.py +++ b/var/spack/repos/builtin/packages/r-modelmetrics/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-modeltools/package.py b/var/spack/repos/builtin/packages/r-modeltools/package.py index a77bb048050..8d5156cc547 100644 --- a/var/spack/repos/builtin/packages/r-modeltools/package.py +++ b/var/spack/repos/builtin/packages/r-modeltools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-multcomp/package.py b/var/spack/repos/builtin/packages/r-multcomp/package.py index acaba46b513..67b7f48cd96 100644 --- a/var/spack/repos/builtin/packages/r-multcomp/package.py +++ b/var/spack/repos/builtin/packages/r-multcomp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-munsell/package.py b/var/spack/repos/builtin/packages/r-munsell/package.py index fa635782e19..5f5d341b9f3 100644 --- a/var/spack/repos/builtin/packages/r-munsell/package.py +++ b/var/spack/repos/builtin/packages/r-munsell/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-mvtnorm/package.py b/var/spack/repos/builtin/packages/r-mvtnorm/package.py index 2df9206a637..98bdee82b59 100644 --- a/var/spack/repos/builtin/packages/r-mvtnorm/package.py +++ b/var/spack/repos/builtin/packages/r-mvtnorm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ncdf4/package.py b/var/spack/repos/builtin/packages/r-ncdf4/package.py index 31b2f4f2ee7..27be1900656 100644 --- a/var/spack/repos/builtin/packages/r-ncdf4/package.py +++ b/var/spack/repos/builtin/packages/r-ncdf4/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-network/package.py b/var/spack/repos/builtin/packages/r-network/package.py index c561cb19322..c441bbd15ab 100644 --- a/var/spack/repos/builtin/packages/r-network/package.py +++ b/var/spack/repos/builtin/packages/r-network/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-networkd3/package.py b/var/spack/repos/builtin/packages/r-networkd3/package.py index 68501bba524..5d92d769566 100644 --- a/var/spack/repos/builtin/packages/r-networkd3/package.py +++ b/var/spack/repos/builtin/packages/r-networkd3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-nlme/package.py b/var/spack/repos/builtin/packages/r-nlme/package.py index 68f4a7d74e1..3deb7f1a581 100644 --- a/var/spack/repos/builtin/packages/r-nlme/package.py +++ b/var/spack/repos/builtin/packages/r-nlme/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-nloptr/package.py b/var/spack/repos/builtin/packages/r-nloptr/package.py index edf19e653f5..110cb8c4061 100644 --- a/var/spack/repos/builtin/packages/r-nloptr/package.py +++ b/var/spack/repos/builtin/packages/r-nloptr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-nmf/package.py b/var/spack/repos/builtin/packages/r-nmf/package.py index 5911652edac..8edb0b810eb 100644 --- a/var/spack/repos/builtin/packages/r-nmf/package.py +++ b/var/spack/repos/builtin/packages/r-nmf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-nnet/package.py b/var/spack/repos/builtin/packages/r-nnet/package.py index 75b9be602df..48a223fdf4a 100644 --- a/var/spack/repos/builtin/packages/r-nnet/package.py +++ b/var/spack/repos/builtin/packages/r-nnet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-np/package.py b/var/spack/repos/builtin/packages/r-np/package.py index 4f45314f0bc..ec88a4f557a 100644 --- a/var/spack/repos/builtin/packages/r-np/package.py +++ b/var/spack/repos/builtin/packages/r-np/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-numderiv/package.py b/var/spack/repos/builtin/packages/r-numderiv/package.py index a6a5b0bcc16..8cb2c063c7d 100644 --- a/var/spack/repos/builtin/packages/r-numderiv/package.py +++ b/var/spack/repos/builtin/packages/r-numderiv/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-openssl/package.py b/var/spack/repos/builtin/packages/r-openssl/package.py index ae5eca3f5a2..e33f8bce176 100644 --- a/var/spack/repos/builtin/packages/r-openssl/package.py +++ b/var/spack/repos/builtin/packages/r-openssl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-packrat/package.py b/var/spack/repos/builtin/packages/r-packrat/package.py index 123ceb5caaa..4fb9c7ee71a 100644 --- a/var/spack/repos/builtin/packages/r-packrat/package.py +++ b/var/spack/repos/builtin/packages/r-packrat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-pacman/package.py b/var/spack/repos/builtin/packages/r-pacman/package.py index 41c9efbc5c6..c40fd90f739 100644 --- a/var/spack/repos/builtin/packages/r-pacman/package.py +++ b/var/spack/repos/builtin/packages/r-pacman/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-party/package.py b/var/spack/repos/builtin/packages/r-party/package.py index d0b39a681e5..5e7e8933750 100644 --- a/var/spack/repos/builtin/packages/r-party/package.py +++ b/var/spack/repos/builtin/packages/r-party/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-partykit/package.py b/var/spack/repos/builtin/packages/r-partykit/package.py index 188507e44da..8371c1f32ee 100644 --- a/var/spack/repos/builtin/packages/r-partykit/package.py +++ b/var/spack/repos/builtin/packages/r-partykit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-pbdzmq/package.py b/var/spack/repos/builtin/packages/r-pbdzmq/package.py index 42f7f193510..065a23534af 100644 --- a/var/spack/repos/builtin/packages/r-pbdzmq/package.py +++ b/var/spack/repos/builtin/packages/r-pbdzmq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-pbkrtest/package.py b/var/spack/repos/builtin/packages/r-pbkrtest/package.py index 41971003db6..a969e994400 100644 --- a/var/spack/repos/builtin/packages/r-pbkrtest/package.py +++ b/var/spack/repos/builtin/packages/r-pbkrtest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-permute/package.py b/var/spack/repos/builtin/packages/r-permute/package.py index 25a3161713a..ac994eb4fb5 100644 --- a/var/spack/repos/builtin/packages/r-permute/package.py +++ b/var/spack/repos/builtin/packages/r-permute/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-pkgmaker/package.py b/var/spack/repos/builtin/packages/r-pkgmaker/package.py index a1ea734f1d5..66b75ff4282 100644 --- a/var/spack/repos/builtin/packages/r-pkgmaker/package.py +++ b/var/spack/repos/builtin/packages/r-pkgmaker/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-plotrix/package.py b/var/spack/repos/builtin/packages/r-plotrix/package.py index 0fcb7c29afa..743f4f39eea 100644 --- a/var/spack/repos/builtin/packages/r-plotrix/package.py +++ b/var/spack/repos/builtin/packages/r-plotrix/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-pls/package.py b/var/spack/repos/builtin/packages/r-pls/package.py index cf9c763959a..9166c9dcb7a 100644 --- a/var/spack/repos/builtin/packages/r-pls/package.py +++ b/var/spack/repos/builtin/packages/r-pls/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-plyr/package.py b/var/spack/repos/builtin/packages/r-plyr/package.py index eef6e9fd0f0..52b18fcd214 100644 --- a/var/spack/repos/builtin/packages/r-plyr/package.py +++ b/var/spack/repos/builtin/packages/r-plyr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-png/package.py b/var/spack/repos/builtin/packages/r-png/package.py index 9fdfbec533b..f2738183266 100644 --- a/var/spack/repos/builtin/packages/r-png/package.py +++ b/var/spack/repos/builtin/packages/r-png/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-prabclus/package.py b/var/spack/repos/builtin/packages/r-prabclus/package.py index 3ef75d85fc1..a6375e9bd4d 100644 --- a/var/spack/repos/builtin/packages/r-prabclus/package.py +++ b/var/spack/repos/builtin/packages/r-prabclus/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-praise/package.py b/var/spack/repos/builtin/packages/r-praise/package.py index 05650efc478..5ae2cb8e5b8 100644 --- a/var/spack/repos/builtin/packages/r-praise/package.py +++ b/var/spack/repos/builtin/packages/r-praise/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-prodlim/package.py b/var/spack/repos/builtin/packages/r-prodlim/package.py index 34634839ba0..1321d49ce07 100644 --- a/var/spack/repos/builtin/packages/r-prodlim/package.py +++ b/var/spack/repos/builtin/packages/r-prodlim/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-proto/package.py b/var/spack/repos/builtin/packages/r-proto/package.py index efb90b99148..c07ec021fe9 100644 --- a/var/spack/repos/builtin/packages/r-proto/package.py +++ b/var/spack/repos/builtin/packages/r-proto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-pryr/package.py b/var/spack/repos/builtin/packages/r-pryr/package.py index cae4a8af8e7..e2154423c1a 100644 --- a/var/spack/repos/builtin/packages/r-pryr/package.py +++ b/var/spack/repos/builtin/packages/r-pryr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-quadprog/package.py b/var/spack/repos/builtin/packages/r-quadprog/package.py index ff4fa300eba..125cba3282e 100644 --- a/var/spack/repos/builtin/packages/r-quadprog/package.py +++ b/var/spack/repos/builtin/packages/r-quadprog/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-quantmod/package.py b/var/spack/repos/builtin/packages/r-quantmod/package.py index b52bc8a57a2..7a1b0a43c3e 100644 --- a/var/spack/repos/builtin/packages/r-quantmod/package.py +++ b/var/spack/repos/builtin/packages/r-quantmod/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-quantreg/package.py b/var/spack/repos/builtin/packages/r-quantreg/package.py index 3d9a04c2902..fec25aede1a 100644 --- a/var/spack/repos/builtin/packages/r-quantreg/package.py +++ b/var/spack/repos/builtin/packages/r-quantreg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-r6/package.py b/var/spack/repos/builtin/packages/r-r6/package.py index 01a2feda214..5f5b10d9cc0 100644 --- a/var/spack/repos/builtin/packages/r-r6/package.py +++ b/var/spack/repos/builtin/packages/r-r6/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-randomforest/package.py b/var/spack/repos/builtin/packages/r-randomforest/package.py index 85d74734865..3b9dc87b1ce 100644 --- a/var/spack/repos/builtin/packages/r-randomforest/package.py +++ b/var/spack/repos/builtin/packages/r-randomforest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-raster/package.py b/var/spack/repos/builtin/packages/r-raster/package.py index 73a1b38b5a4..c8a2b7088be 100644 --- a/var/spack/repos/builtin/packages/r-raster/package.py +++ b/var/spack/repos/builtin/packages/r-raster/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rbokeh/package.py b/var/spack/repos/builtin/packages/r-rbokeh/package.py index 12173b3077b..5bdc15402b1 100644 --- a/var/spack/repos/builtin/packages/r-rbokeh/package.py +++ b/var/spack/repos/builtin/packages/r-rbokeh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py b/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py index c6b888d6d6f..4adc8eef3cb 100644 --- a/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py +++ b/var/spack/repos/builtin/packages/r-rcolorbrewer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rcpp/package.py b/var/spack/repos/builtin/packages/r-rcpp/package.py index b77fffb1a05..2a9f7c4ced4 100644 --- a/var/spack/repos/builtin/packages/r-rcpp/package.py +++ b/var/spack/repos/builtin/packages/r-rcpp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rcppeigen/package.py b/var/spack/repos/builtin/packages/r-rcppeigen/package.py index de604f8322f..3f38e21b0bd 100644 --- a/var/spack/repos/builtin/packages/r-rcppeigen/package.py +++ b/var/spack/repos/builtin/packages/r-rcppeigen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-registry/package.py b/var/spack/repos/builtin/packages/r-registry/package.py index db1a3697392..1197b56a1b6 100644 --- a/var/spack/repos/builtin/packages/r-registry/package.py +++ b/var/spack/repos/builtin/packages/r-registry/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-repr/package.py b/var/spack/repos/builtin/packages/r-repr/package.py index c42bea87df6..e4eb9d01100 100644 --- a/var/spack/repos/builtin/packages/r-repr/package.py +++ b/var/spack/repos/builtin/packages/r-repr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-reshape2/package.py b/var/spack/repos/builtin/packages/r-reshape2/package.py index 1b53e94e806..400dfcbfe7f 100644 --- a/var/spack/repos/builtin/packages/r-reshape2/package.py +++ b/var/spack/repos/builtin/packages/r-reshape2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rgl/package.py b/var/spack/repos/builtin/packages/r-rgl/package.py index 099702e2edc..12c82f32b41 100644 --- a/var/spack/repos/builtin/packages/r-rgl/package.py +++ b/var/spack/repos/builtin/packages/r-rgl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py index cfe19257fbe..aee89fdc936 100644 --- a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py +++ b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rinside/package.py b/var/spack/repos/builtin/packages/r-rinside/package.py index 759910a8592..81574e579e5 100644 --- a/var/spack/repos/builtin/packages/r-rinside/package.py +++ b/var/spack/repos/builtin/packages/r-rinside/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rjava/package.py b/var/spack/repos/builtin/packages/r-rjava/package.py index 55d8282cd75..9a5d4887be6 100644 --- a/var/spack/repos/builtin/packages/r-rjava/package.py +++ b/var/spack/repos/builtin/packages/r-rjava/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rjson/package.py b/var/spack/repos/builtin/packages/r-rjson/package.py index 1fbf94ccbfe..cd873cab843 100644 --- a/var/spack/repos/builtin/packages/r-rjson/package.py +++ b/var/spack/repos/builtin/packages/r-rjson/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rjsonio/package.py b/var/spack/repos/builtin/packages/r-rjsonio/package.py index c57846395e9..7db3fa5b844 100644 --- a/var/spack/repos/builtin/packages/r-rjsonio/package.py +++ b/var/spack/repos/builtin/packages/r-rjsonio/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rmarkdown/package.py b/var/spack/repos/builtin/packages/r-rmarkdown/package.py index 6e1c25ef64f..4a14d274aab 100644 --- a/var/spack/repos/builtin/packages/r-rmarkdown/package.py +++ b/var/spack/repos/builtin/packages/r-rmarkdown/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rminer/package.py b/var/spack/repos/builtin/packages/r-rminer/package.py index b86948b3bc1..90395efedf7 100644 --- a/var/spack/repos/builtin/packages/r-rminer/package.py +++ b/var/spack/repos/builtin/packages/r-rminer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rmpfr/package.py b/var/spack/repos/builtin/packages/r-rmpfr/package.py index ae419592e33..c54e2840f6f 100644 --- a/var/spack/repos/builtin/packages/r-rmpfr/package.py +++ b/var/spack/repos/builtin/packages/r-rmpfr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rmpi/package.py b/var/spack/repos/builtin/packages/r-rmpi/package.py index 5f8dac889b0..f096faa3626 100644 --- a/var/spack/repos/builtin/packages/r-rmpi/package.py +++ b/var/spack/repos/builtin/packages/r-rmpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rmysql/package.py b/var/spack/repos/builtin/packages/r-rmysql/package.py index 5d7be1aff84..d2dc1196e31 100644 --- a/var/spack/repos/builtin/packages/r-rmysql/package.py +++ b/var/spack/repos/builtin/packages/r-rmysql/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rngtools/package.py b/var/spack/repos/builtin/packages/r-rngtools/package.py index 1f55311e976..ad38c097213 100644 --- a/var/spack/repos/builtin/packages/r-rngtools/package.py +++ b/var/spack/repos/builtin/packages/r-rngtools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-robustbase/package.py b/var/spack/repos/builtin/packages/r-robustbase/package.py index 43e66028212..35951e4bbf8 100644 --- a/var/spack/repos/builtin/packages/r-robustbase/package.py +++ b/var/spack/repos/builtin/packages/r-robustbase/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rodbc/package.py b/var/spack/repos/builtin/packages/r-rodbc/package.py index cfd7470a76d..10c65628c39 100644 --- a/var/spack/repos/builtin/packages/r-rodbc/package.py +++ b/var/spack/repos/builtin/packages/r-rodbc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-roxygen2/package.py b/var/spack/repos/builtin/packages/r-roxygen2/package.py index 0e23c835224..6992923bc0d 100644 --- a/var/spack/repos/builtin/packages/r-roxygen2/package.py +++ b/var/spack/repos/builtin/packages/r-roxygen2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rpart-plot/package.py b/var/spack/repos/builtin/packages/r-rpart-plot/package.py index c17761f7643..473dc191799 100644 --- a/var/spack/repos/builtin/packages/r-rpart-plot/package.py +++ b/var/spack/repos/builtin/packages/r-rpart-plot/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rpart/package.py b/var/spack/repos/builtin/packages/r-rpart/package.py index 9d2ed2df4dd..a5c894038fd 100644 --- a/var/spack/repos/builtin/packages/r-rpart/package.py +++ b/var/spack/repos/builtin/packages/r-rpart/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rpostgresql/package.py b/var/spack/repos/builtin/packages/r-rpostgresql/package.py index 351b23a16ef..62feca83beb 100644 --- a/var/spack/repos/builtin/packages/r-rpostgresql/package.py +++ b/var/spack/repos/builtin/packages/r-rpostgresql/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rsnns/package.py b/var/spack/repos/builtin/packages/r-rsnns/package.py index b56bde343f0..6e50489a1c7 100644 --- a/var/spack/repos/builtin/packages/r-rsnns/package.py +++ b/var/spack/repos/builtin/packages/r-rsnns/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rsqlite/package.py b/var/spack/repos/builtin/packages/r-rsqlite/package.py index ebdc91ba7dc..43f55753f7c 100644 --- a/var/spack/repos/builtin/packages/r-rsqlite/package.py +++ b/var/spack/repos/builtin/packages/r-rsqlite/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rstan/package.py b/var/spack/repos/builtin/packages/r-rstan/package.py index daea44437ec..200de8c66de 100644 --- a/var/spack/repos/builtin/packages/r-rstan/package.py +++ b/var/spack/repos/builtin/packages/r-rstan/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rstudioapi/package.py b/var/spack/repos/builtin/packages/r-rstudioapi/package.py index 923fe4b716c..dd739436ce4 100644 --- a/var/spack/repos/builtin/packages/r-rstudioapi/package.py +++ b/var/spack/repos/builtin/packages/r-rstudioapi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-rzmq/package.py b/var/spack/repos/builtin/packages/r-rzmq/package.py index e4c0e95f44f..1d29286b031 100644 --- a/var/spack/repos/builtin/packages/r-rzmq/package.py +++ b/var/spack/repos/builtin/packages/r-rzmq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-sandwich/package.py b/var/spack/repos/builtin/packages/r-sandwich/package.py index 3ab36537c1c..862e1e73514 100644 --- a/var/spack/repos/builtin/packages/r-sandwich/package.py +++ b/var/spack/repos/builtin/packages/r-sandwich/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-scales/package.py b/var/spack/repos/builtin/packages/r-scales/package.py index 4e513bc2c0b..c730ef7b900 100644 --- a/var/spack/repos/builtin/packages/r-scales/package.py +++ b/var/spack/repos/builtin/packages/r-scales/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py index ac3a9dc8ccf..9103733a2f7 100644 --- a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py +++ b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-segmented/package.py b/var/spack/repos/builtin/packages/r-segmented/package.py index bc3b02e3c08..4ec25c42689 100644 --- a/var/spack/repos/builtin/packages/r-segmented/package.py +++ b/var/spack/repos/builtin/packages/r-segmented/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-seqinr/package.py b/var/spack/repos/builtin/packages/r-seqinr/package.py index 3b3dbdf871a..998b01dbed9 100644 --- a/var/spack/repos/builtin/packages/r-seqinr/package.py +++ b/var/spack/repos/builtin/packages/r-seqinr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-shiny/package.py b/var/spack/repos/builtin/packages/r-shiny/package.py index 763551049b7..da566d884d8 100644 --- a/var/spack/repos/builtin/packages/r-shiny/package.py +++ b/var/spack/repos/builtin/packages/r-shiny/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-snow/package.py b/var/spack/repos/builtin/packages/r-snow/package.py index d19847a8a18..4ce7312dfe8 100644 --- a/var/spack/repos/builtin/packages/r-snow/package.py +++ b/var/spack/repos/builtin/packages/r-snow/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-sp/package.py b/var/spack/repos/builtin/packages/r-sp/package.py index bbb7752f604..2d7a5563f07 100644 --- a/var/spack/repos/builtin/packages/r-sp/package.py +++ b/var/spack/repos/builtin/packages/r-sp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-sparsem/package.py b/var/spack/repos/builtin/packages/r-sparsem/package.py index 7ac268ff8de..596ec8b932c 100644 --- a/var/spack/repos/builtin/packages/r-sparsem/package.py +++ b/var/spack/repos/builtin/packages/r-sparsem/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-spdep/package.py b/var/spack/repos/builtin/packages/r-spdep/package.py index 1362a671c06..e16fb56fd70 100644 --- a/var/spack/repos/builtin/packages/r-spdep/package.py +++ b/var/spack/repos/builtin/packages/r-spdep/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-stanheaders/package.py b/var/spack/repos/builtin/packages/r-stanheaders/package.py index 4060a10efd5..04ea6deafd6 100644 --- a/var/spack/repos/builtin/packages/r-stanheaders/package.py +++ b/var/spack/repos/builtin/packages/r-stanheaders/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-statnet-common/package.py b/var/spack/repos/builtin/packages/r-statnet-common/package.py index b3dd2569c8d..a741ccd521c 100644 --- a/var/spack/repos/builtin/packages/r-statnet-common/package.py +++ b/var/spack/repos/builtin/packages/r-statnet-common/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-stringi/package.py b/var/spack/repos/builtin/packages/r-stringi/package.py index a6e52b5690f..0e38ad5a506 100644 --- a/var/spack/repos/builtin/packages/r-stringi/package.py +++ b/var/spack/repos/builtin/packages/r-stringi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-stringr/package.py b/var/spack/repos/builtin/packages/r-stringr/package.py index e3c3f4c7c98..b67b5305ab1 100644 --- a/var/spack/repos/builtin/packages/r-stringr/package.py +++ b/var/spack/repos/builtin/packages/r-stringr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-strucchange/package.py b/var/spack/repos/builtin/packages/r-strucchange/package.py index 40f699b0221..1715ea1fcc0 100644 --- a/var/spack/repos/builtin/packages/r-strucchange/package.py +++ b/var/spack/repos/builtin/packages/r-strucchange/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-survey/package.py b/var/spack/repos/builtin/packages/r-survey/package.py index 816371ff15a..0cef2c8cee6 100644 --- a/var/spack/repos/builtin/packages/r-survey/package.py +++ b/var/spack/repos/builtin/packages/r-survey/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-survival/package.py b/var/spack/repos/builtin/packages/r-survival/package.py index 0ac191e9abb..c54bba3b476 100644 --- a/var/spack/repos/builtin/packages/r-survival/package.py +++ b/var/spack/repos/builtin/packages/r-survival/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-tarifx/package.py b/var/spack/repos/builtin/packages/r-tarifx/package.py index 401fe48950c..a25594971f7 100644 --- a/var/spack/repos/builtin/packages/r-tarifx/package.py +++ b/var/spack/repos/builtin/packages/r-tarifx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-testit/package.py b/var/spack/repos/builtin/packages/r-testit/package.py index 274f8d265db..de24fa72a48 100644 --- a/var/spack/repos/builtin/packages/r-testit/package.py +++ b/var/spack/repos/builtin/packages/r-testit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-testthat/package.py b/var/spack/repos/builtin/packages/r-testthat/package.py index d021e31c6e8..411b3043b7c 100644 --- a/var/spack/repos/builtin/packages/r-testthat/package.py +++ b/var/spack/repos/builtin/packages/r-testthat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-th-data/package.py b/var/spack/repos/builtin/packages/r-th-data/package.py index 161024ce36b..3c2fba8e7ef 100644 --- a/var/spack/repos/builtin/packages/r-th-data/package.py +++ b/var/spack/repos/builtin/packages/r-th-data/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-threejs/package.py b/var/spack/repos/builtin/packages/r-threejs/package.py index f8e3ada3cf1..04833648985 100644 --- a/var/spack/repos/builtin/packages/r-threejs/package.py +++ b/var/spack/repos/builtin/packages/r-threejs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-tibble/package.py b/var/spack/repos/builtin/packages/r-tibble/package.py index 54b8703c135..a97380a448b 100644 --- a/var/spack/repos/builtin/packages/r-tibble/package.py +++ b/var/spack/repos/builtin/packages/r-tibble/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-tidyr/package.py b/var/spack/repos/builtin/packages/r-tidyr/package.py index 45b8f0240e3..c240aa11fa4 100644 --- a/var/spack/repos/builtin/packages/r-tidyr/package.py +++ b/var/spack/repos/builtin/packages/r-tidyr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-trimcluster/package.py b/var/spack/repos/builtin/packages/r-trimcluster/package.py index 883b2295360..fac63c7bece 100644 --- a/var/spack/repos/builtin/packages/r-trimcluster/package.py +++ b/var/spack/repos/builtin/packages/r-trimcluster/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-trust/package.py b/var/spack/repos/builtin/packages/r-trust/package.py index 99f3ee0c3ed..201ab2486f1 100644 --- a/var/spack/repos/builtin/packages/r-trust/package.py +++ b/var/spack/repos/builtin/packages/r-trust/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-ttr/package.py b/var/spack/repos/builtin/packages/r-ttr/package.py index bcce612acef..8f220a78304 100644 --- a/var/spack/repos/builtin/packages/r-ttr/package.py +++ b/var/spack/repos/builtin/packages/r-ttr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-uuid/package.py b/var/spack/repos/builtin/packages/r-uuid/package.py index 7d42c95e89c..87e4ec50080 100644 --- a/var/spack/repos/builtin/packages/r-uuid/package.py +++ b/var/spack/repos/builtin/packages/r-uuid/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-vcd/package.py b/var/spack/repos/builtin/packages/r-vcd/package.py index 9b65117a419..6fc05bbc6d1 100644 --- a/var/spack/repos/builtin/packages/r-vcd/package.py +++ b/var/spack/repos/builtin/packages/r-vcd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-vegan/package.py b/var/spack/repos/builtin/packages/r-vegan/package.py index 6816660ffe6..0c40d1abffa 100644 --- a/var/spack/repos/builtin/packages/r-vegan/package.py +++ b/var/spack/repos/builtin/packages/r-vegan/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-viridis/package.py b/var/spack/repos/builtin/packages/r-viridis/package.py index ed9ad5ab6a8..a2843cf5c79 100644 --- a/var/spack/repos/builtin/packages/r-viridis/package.py +++ b/var/spack/repos/builtin/packages/r-viridis/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-viridislite/package.py b/var/spack/repos/builtin/packages/r-viridislite/package.py index 885e673d562..5af084bf2cd 100644 --- a/var/spack/repos/builtin/packages/r-viridislite/package.py +++ b/var/spack/repos/builtin/packages/r-viridislite/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-visnetwork/package.py b/var/spack/repos/builtin/packages/r-visnetwork/package.py index 2b2921df810..b9b53951233 100644 --- a/var/spack/repos/builtin/packages/r-visnetwork/package.py +++ b/var/spack/repos/builtin/packages/r-visnetwork/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-whisker/package.py b/var/spack/repos/builtin/packages/r-whisker/package.py index cff466f287c..a5a87a2cc72 100644 --- a/var/spack/repos/builtin/packages/r-whisker/package.py +++ b/var/spack/repos/builtin/packages/r-whisker/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-withr/package.py b/var/spack/repos/builtin/packages/r-withr/package.py index 4491a8fd367..741a44acacd 100644 --- a/var/spack/repos/builtin/packages/r-withr/package.py +++ b/var/spack/repos/builtin/packages/r-withr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-xgboost/package.py b/var/spack/repos/builtin/packages/r-xgboost/package.py index 45504c89b93..49ace842482 100644 --- a/var/spack/repos/builtin/packages/r-xgboost/package.py +++ b/var/spack/repos/builtin/packages/r-xgboost/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-xlconnect/package.py b/var/spack/repos/builtin/packages/r-xlconnect/package.py index d580faace75..e16b084b80e 100644 --- a/var/spack/repos/builtin/packages/r-xlconnect/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnect/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-xlconnectjars/package.py b/var/spack/repos/builtin/packages/r-xlconnectjars/package.py index a618ad71573..43bd70ec3e8 100644 --- a/var/spack/repos/builtin/packages/r-xlconnectjars/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnectjars/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-xlsx/package.py b/var/spack/repos/builtin/packages/r-xlsx/package.py index c3506b43d4c..5cea8cd7bdc 100644 --- a/var/spack/repos/builtin/packages/r-xlsx/package.py +++ b/var/spack/repos/builtin/packages/r-xlsx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-xlsxjars/package.py b/var/spack/repos/builtin/packages/r-xlsxjars/package.py index b0b6b91868d..c7cb22cf2b3 100644 --- a/var/spack/repos/builtin/packages/r-xlsxjars/package.py +++ b/var/spack/repos/builtin/packages/r-xlsxjars/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-xml/package.py b/var/spack/repos/builtin/packages/r-xml/package.py index 5704a64aed3..83891b95488 100644 --- a/var/spack/repos/builtin/packages/r-xml/package.py +++ b/var/spack/repos/builtin/packages/r-xml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-xtable/package.py b/var/spack/repos/builtin/packages/r-xtable/package.py index 1ec138c14cf..8813a23f618 100644 --- a/var/spack/repos/builtin/packages/r-xtable/package.py +++ b/var/spack/repos/builtin/packages/r-xtable/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-xts/package.py b/var/spack/repos/builtin/packages/r-xts/package.py index b0ab027206b..c1ed514fba3 100644 --- a/var/spack/repos/builtin/packages/r-xts/package.py +++ b/var/spack/repos/builtin/packages/r-xts/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-yaml/package.py b/var/spack/repos/builtin/packages/r-yaml/package.py index d4f096109f4..0d09397605f 100644 --- a/var/spack/repos/builtin/packages/r-yaml/package.py +++ b/var/spack/repos/builtin/packages/r-yaml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r-zoo/package.py b/var/spack/repos/builtin/packages/r-zoo/package.py index bda4fd6cf94..49965c74df7 100644 --- a/var/spack/repos/builtin/packages/r-zoo/package.py +++ b/var/spack/repos/builtin/packages/r-zoo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py index 886a238b064..07ad38da986 100644 --- a/var/spack/repos/builtin/packages/r/package.py +++ b/var/spack/repos/builtin/packages/r/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/raft/package.py b/var/spack/repos/builtin/packages/raft/package.py index 81040410d7f..fabfd662531 100644 --- a/var/spack/repos/builtin/packages/raft/package.py +++ b/var/spack/repos/builtin/packages/raft/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index 0fba029cab5..b4a1ba9edd9 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/random123/package.py b/var/spack/repos/builtin/packages/random123/package.py index 2aedf9aa63c..681cee6d84c 100644 --- a/var/spack/repos/builtin/packages/random123/package.py +++ b/var/spack/repos/builtin/packages/random123/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/randrproto/package.py b/var/spack/repos/builtin/packages/randrproto/package.py index 87c6d1ad815..9345429d4fe 100644 --- a/var/spack/repos/builtin/packages/randrproto/package.py +++ b/var/spack/repos/builtin/packages/randrproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ravel/package.py b/var/spack/repos/builtin/packages/ravel/package.py index e7ba7abb4a4..45dcc910ee2 100644 --- a/var/spack/repos/builtin/packages/ravel/package.py +++ b/var/spack/repos/builtin/packages/ravel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/raxml/package.py b/var/spack/repos/builtin/packages/raxml/package.py index 198347b0c19..c49dc9c11db 100644 --- a/var/spack/repos/builtin/packages/raxml/package.py +++ b/var/spack/repos/builtin/packages/raxml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ray/package.py b/var/spack/repos/builtin/packages/ray/package.py index 7056b594546..6624eb4ca92 100644 --- a/var/spack/repos/builtin/packages/ray/package.py +++ b/var/spack/repos/builtin/packages/ray/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rdp-classifier/package.py b/var/spack/repos/builtin/packages/rdp-classifier/package.py index 49cc367c8d8..e3b480d6d3c 100644 --- a/var/spack/repos/builtin/packages/rdp-classifier/package.py +++ b/var/spack/repos/builtin/packages/rdp-classifier/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/readline/package.py b/var/spack/repos/builtin/packages/readline/package.py index 31320bf6666..8b737ae1ec1 100644 --- a/var/spack/repos/builtin/packages/readline/package.py +++ b/var/spack/repos/builtin/packages/readline/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/recordproto/package.py b/var/spack/repos/builtin/packages/recordproto/package.py index 27042e7b03d..09d0f0711d2 100644 --- a/var/spack/repos/builtin/packages/recordproto/package.py +++ b/var/spack/repos/builtin/packages/recordproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/redundans/package.py b/var/spack/repos/builtin/packages/redundans/package.py index 0e801f556fb..0b50b74b0ec 100644 --- a/var/spack/repos/builtin/packages/redundans/package.py +++ b/var/spack/repos/builtin/packages/redundans/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/relion/package.py b/var/spack/repos/builtin/packages/relion/package.py index 23b1834fbc7..d832b60d8be 100644 --- a/var/spack/repos/builtin/packages/relion/package.py +++ b/var/spack/repos/builtin/packages/relion/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rempi/package.py b/var/spack/repos/builtin/packages/rempi/package.py index 48ff14468ae..97d618fa019 100644 --- a/var/spack/repos/builtin/packages/rempi/package.py +++ b/var/spack/repos/builtin/packages/rempi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rename/package.py b/var/spack/repos/builtin/packages/rename/package.py index 9970a1a51c0..7a0cac4ecdd 100644 --- a/var/spack/repos/builtin/packages/rename/package.py +++ b/var/spack/repos/builtin/packages/rename/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rendercheck/package.py b/var/spack/repos/builtin/packages/rendercheck/package.py index 894329dbe94..0dbd5f9aaf1 100644 --- a/var/spack/repos/builtin/packages/rendercheck/package.py +++ b/var/spack/repos/builtin/packages/rendercheck/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/renderproto/package.py b/var/spack/repos/builtin/packages/renderproto/package.py index 687acf16759..f1521d1f838 100644 --- a/var/spack/repos/builtin/packages/renderproto/package.py +++ b/var/spack/repos/builtin/packages/renderproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/resourceproto/package.py b/var/spack/repos/builtin/packages/resourceproto/package.py index 67e0bad922b..f4c76939855 100644 --- a/var/spack/repos/builtin/packages/resourceproto/package.py +++ b/var/spack/repos/builtin/packages/resourceproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/revbayes/package.py b/var/spack/repos/builtin/packages/revbayes/package.py index 3498ddd9524..be422e22e03 100644 --- a/var/spack/repos/builtin/packages/revbayes/package.py +++ b/var/spack/repos/builtin/packages/revbayes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rgb/package.py b/var/spack/repos/builtin/packages/rgb/package.py index 75d483172d0..a61c3383c6b 100644 --- a/var/spack/repos/builtin/packages/rgb/package.py +++ b/var/spack/repos/builtin/packages/rgb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rhash/package.py b/var/spack/repos/builtin/packages/rhash/package.py index 94af243ae58..91d947b5ecc 100644 --- a/var/spack/repos/builtin/packages/rhash/package.py +++ b/var/spack/repos/builtin/packages/rhash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rockstar/package.py b/var/spack/repos/builtin/packages/rockstar/package.py index 9cb92d0f8de..94bbad417ef 100644 --- a/var/spack/repos/builtin/packages/rockstar/package.py +++ b/var/spack/repos/builtin/packages/rockstar/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index dfd7ba3e25a..8c04e7034de 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py index 8ba397df557..12db39cf5f7 100644 --- a/var/spack/repos/builtin/packages/rose/package.py +++ b/var/spack/repos/builtin/packages/rose/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rr/package.py b/var/spack/repos/builtin/packages/rr/package.py index 5337d7eef43..b30ee2b2d4a 100644 --- a/var/spack/repos/builtin/packages/rr/package.py +++ b/var/spack/repos/builtin/packages/rr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rsbench/package.py b/var/spack/repos/builtin/packages/rsbench/package.py index 7e4027d2d4e..834b52d4d09 100644 --- a/var/spack/repos/builtin/packages/rsbench/package.py +++ b/var/spack/repos/builtin/packages/rsbench/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rsem/package.py b/var/spack/repos/builtin/packages/rsem/package.py index 805a71e0d9c..2280ba67415 100644 --- a/var/spack/repos/builtin/packages/rsem/package.py +++ b/var/spack/repos/builtin/packages/rsem/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rstart/package.py b/var/spack/repos/builtin/packages/rstart/package.py index ff43120daf3..7b6826daa83 100644 --- a/var/spack/repos/builtin/packages/rstart/package.py +++ b/var/spack/repos/builtin/packages/rstart/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rsync/package.py b/var/spack/repos/builtin/packages/rsync/package.py index de51073287d..9e40f0291b9 100644 --- a/var/spack/repos/builtin/packages/rsync/package.py +++ b/var/spack/repos/builtin/packages/rsync/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rtags/package.py b/var/spack/repos/builtin/packages/rtags/package.py index e212ea108ce..51ef51636aa 100644 --- a/var/spack/repos/builtin/packages/rtags/package.py +++ b/var/spack/repos/builtin/packages/rtags/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rtax/package.py b/var/spack/repos/builtin/packages/rtax/package.py index c2b917a81e5..9a8d865bce9 100644 --- a/var/spack/repos/builtin/packages/rtax/package.py +++ b/var/spack/repos/builtin/packages/rtax/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/ruby/package.py b/var/spack/repos/builtin/packages/ruby/package.py index d3cc4db319f..0b824d6b846 100644 --- a/var/spack/repos/builtin/packages/ruby/package.py +++ b/var/spack/repos/builtin/packages/ruby/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rust-bindgen/package.py b/var/spack/repos/builtin/packages/rust-bindgen/package.py index 9db050425eb..17688080e11 100644 --- a/var/spack/repos/builtin/packages/rust-bindgen/package.py +++ b/var/spack/repos/builtin/packages/rust-bindgen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/rust/package.py b/var/spack/repos/builtin/packages/rust/package.py index 44e7218ab45..f332e626eaf 100644 --- a/var/spack/repos/builtin/packages/rust/package.py +++ b/var/spack/repos/builtin/packages/rust/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sabre/package.py b/var/spack/repos/builtin/packages/sabre/package.py index ecee1012f59..fadb92acb10 100644 --- a/var/spack/repos/builtin/packages/sabre/package.py +++ b/var/spack/repos/builtin/packages/sabre/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/salmon/package.py b/var/spack/repos/builtin/packages/salmon/package.py index 413eb9aebe4..87b3e14b97b 100644 --- a/var/spack/repos/builtin/packages/salmon/package.py +++ b/var/spack/repos/builtin/packages/salmon/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/samrai/package.py b/var/spack/repos/builtin/packages/samrai/package.py index c624a75a475..27eeaaeeb44 100644 --- a/var/spack/repos/builtin/packages/samrai/package.py +++ b/var/spack/repos/builtin/packages/samrai/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/samtools/package.py b/var/spack/repos/builtin/packages/samtools/package.py index 173fd7e7727..e7976fc2240 100644 --- a/var/spack/repos/builtin/packages/samtools/package.py +++ b/var/spack/repos/builtin/packages/samtools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sas/package.py b/var/spack/repos/builtin/packages/sas/package.py index 050d6172d65..60fbc05dadb 100644 --- a/var/spack/repos/builtin/packages/sas/package.py +++ b/var/spack/repos/builtin/packages/sas/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/satsuma2/package.py b/var/spack/repos/builtin/packages/satsuma2/package.py index 39abc714e0f..58485e2137e 100644 --- a/var/spack/repos/builtin/packages/satsuma2/package.py +++ b/var/spack/repos/builtin/packages/satsuma2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/savanna/package.py b/var/spack/repos/builtin/packages/savanna/package.py index b7cd94ece0c..5e211b94990 100644 --- a/var/spack/repos/builtin/packages/savanna/package.py +++ b/var/spack/repos/builtin/packages/savanna/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/saws/package.py b/var/spack/repos/builtin/packages/saws/package.py index 047f24f447f..f46e0f620e5 100644 --- a/var/spack/repos/builtin/packages/saws/package.py +++ b/var/spack/repos/builtin/packages/saws/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sbt/package.py b/var/spack/repos/builtin/packages/sbt/package.py index 6747e51b3f9..0f42a194a13 100644 --- a/var/spack/repos/builtin/packages/sbt/package.py +++ b/var/spack/repos/builtin/packages/sbt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/scala/package.py b/var/spack/repos/builtin/packages/scala/package.py index 35a49f6be57..9d8e1497b04 100644 --- a/var/spack/repos/builtin/packages/scala/package.py +++ b/var/spack/repos/builtin/packages/scala/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/scalasca/package.py b/var/spack/repos/builtin/packages/scalasca/package.py index 81c08802fa6..44f3627d41c 100644 --- a/var/spack/repos/builtin/packages/scalasca/package.py +++ b/var/spack/repos/builtin/packages/scalasca/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/scons/package.py b/var/spack/repos/builtin/packages/scons/package.py index 6b65528f3c8..b850ec5c2fa 100644 --- a/var/spack/repos/builtin/packages/scons/package.py +++ b/var/spack/repos/builtin/packages/scons/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/scorec-core/package.py b/var/spack/repos/builtin/packages/scorec-core/package.py index dd143fc1181..956783abcdb 100644 --- a/var/spack/repos/builtin/packages/scorec-core/package.py +++ b/var/spack/repos/builtin/packages/scorec-core/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index 59665a482d4..8471b70f8a3 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index b5903c27896..2c8c3c62f40 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/scr/package.py b/var/spack/repos/builtin/packages/scr/package.py index 1ab117721c7..099c15d888f 100644 --- a/var/spack/repos/builtin/packages/scr/package.py +++ b/var/spack/repos/builtin/packages/scr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/screen/package.py b/var/spack/repos/builtin/packages/screen/package.py index 997220eb378..98d759e2f0e 100644 --- a/var/spack/repos/builtin/packages/screen/package.py +++ b/var/spack/repos/builtin/packages/screen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/scripts/package.py b/var/spack/repos/builtin/packages/scripts/package.py index 2f12bf217cb..3b9bc197a36 100644 --- a/var/spack/repos/builtin/packages/scripts/package.py +++ b/var/spack/repos/builtin/packages/scripts/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/scrnsaverproto/package.py b/var/spack/repos/builtin/packages/scrnsaverproto/package.py index 767566cc032..bc8ffea1dad 100644 --- a/var/spack/repos/builtin/packages/scrnsaverproto/package.py +++ b/var/spack/repos/builtin/packages/scrnsaverproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sctk/package.py b/var/spack/repos/builtin/packages/sctk/package.py index 8c3734f6230..19037141581 100644 --- a/var/spack/repos/builtin/packages/sctk/package.py +++ b/var/spack/repos/builtin/packages/sctk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sdl2-image/package.py b/var/spack/repos/builtin/packages/sdl2-image/package.py index 5caba819b29..eb203163e31 100644 --- a/var/spack/repos/builtin/packages/sdl2-image/package.py +++ b/var/spack/repos/builtin/packages/sdl2-image/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sdl2/package.py b/var/spack/repos/builtin/packages/sdl2/package.py index bb7f46d0360..c3bf529a12e 100644 --- a/var/spack/repos/builtin/packages/sdl2/package.py +++ b/var/spack/repos/builtin/packages/sdl2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sed/package.py b/var/spack/repos/builtin/packages/sed/package.py index 3e59841579a..3675a30101b 100644 --- a/var/spack/repos/builtin/packages/sed/package.py +++ b/var/spack/repos/builtin/packages/sed/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/seqprep/package.py b/var/spack/repos/builtin/packages/seqprep/package.py index 728b47167b9..fab33afabaa 100644 --- a/var/spack/repos/builtin/packages/seqprep/package.py +++ b/var/spack/repos/builtin/packages/seqprep/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/seqtk/package.py b/var/spack/repos/builtin/packages/seqtk/package.py index 466ec805356..7c9f8ec0123 100644 --- a/var/spack/repos/builtin/packages/seqtk/package.py +++ b/var/spack/repos/builtin/packages/seqtk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/serf/package.py b/var/spack/repos/builtin/packages/serf/package.py index 250a6f498fb..28d93d85fe8 100644 --- a/var/spack/repos/builtin/packages/serf/package.py +++ b/var/spack/repos/builtin/packages/serf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sessreg/package.py b/var/spack/repos/builtin/packages/sessreg/package.py index a5bfd177c99..0b361ad33c8 100644 --- a/var/spack/repos/builtin/packages/sessreg/package.py +++ b/var/spack/repos/builtin/packages/sessreg/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/setxkbmap/package.py b/var/spack/repos/builtin/packages/setxkbmap/package.py index 7b28d55f1b1..9f5baefb781 100644 --- a/var/spack/repos/builtin/packages/setxkbmap/package.py +++ b/var/spack/repos/builtin/packages/setxkbmap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sga/package.py b/var/spack/repos/builtin/packages/sga/package.py index e8581781ff9..8cea2a6caae 100644 --- a/var/spack/repos/builtin/packages/sga/package.py +++ b/var/spack/repos/builtin/packages/sga/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/shapeit/package.py b/var/spack/repos/builtin/packages/shapeit/package.py index a3f79c62553..41d2e867d98 100644 --- a/var/spack/repos/builtin/packages/shapeit/package.py +++ b/var/spack/repos/builtin/packages/shapeit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/shared-mime-info/package.py b/var/spack/repos/builtin/packages/shared-mime-info/package.py index ef920c797b7..2f42ebcd0a6 100644 --- a/var/spack/repos/builtin/packages/shared-mime-info/package.py +++ b/var/spack/repos/builtin/packages/shared-mime-info/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/shiny-server/package.py b/var/spack/repos/builtin/packages/shiny-server/package.py index 90b297327e1..f96928ce4c7 100644 --- a/var/spack/repos/builtin/packages/shiny-server/package.py +++ b/var/spack/repos/builtin/packages/shiny-server/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/shortstack/package.py b/var/spack/repos/builtin/packages/shortstack/package.py index 8feb6710139..f12e6e14063 100644 --- a/var/spack/repos/builtin/packages/shortstack/package.py +++ b/var/spack/repos/builtin/packages/shortstack/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/showfont/package.py b/var/spack/repos/builtin/packages/showfont/package.py index 7f75ef8c534..624ecd79aa2 100644 --- a/var/spack/repos/builtin/packages/showfont/package.py +++ b/var/spack/repos/builtin/packages/showfont/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sickle/package.py b/var/spack/repos/builtin/packages/sickle/package.py index eee50d39aaa..bf851b9fac7 100644 --- a/var/spack/repos/builtin/packages/sickle/package.py +++ b/var/spack/repos/builtin/packages/sickle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/signalp/package.py b/var/spack/repos/builtin/packages/signalp/package.py index 78caa33452c..1bf4674bb2c 100644 --- a/var/spack/repos/builtin/packages/signalp/package.py +++ b/var/spack/repos/builtin/packages/signalp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index 75060d488eb..3a18a1995fc 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/simplemoc/package.py b/var/spack/repos/builtin/packages/simplemoc/package.py index 04722158004..f4b36bdf25c 100644 --- a/var/spack/repos/builtin/packages/simplemoc/package.py +++ b/var/spack/repos/builtin/packages/simplemoc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/simul/package.py b/var/spack/repos/builtin/packages/simul/package.py index 2fb8f1b70d2..e24bae8725a 100644 --- a/var/spack/repos/builtin/packages/simul/package.py +++ b/var/spack/repos/builtin/packages/simul/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/simulationio/package.py b/var/spack/repos/builtin/packages/simulationio/package.py index 46ec5e5abbc..1c84c5776bd 100644 --- a/var/spack/repos/builtin/packages/simulationio/package.py +++ b/var/spack/repos/builtin/packages/simulationio/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/singularity/package.py b/var/spack/repos/builtin/packages/singularity/package.py index 61acf56463c..4617a782ab1 100644 --- a/var/spack/repos/builtin/packages/singularity/package.py +++ b/var/spack/repos/builtin/packages/singularity/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 2b4b03147d4..d0ea038c2e7 100644 --- a/var/spack/repos/builtin/packages/slepc/package.py +++ b/var/spack/repos/builtin/packages/slepc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/slurm/package.py b/var/spack/repos/builtin/packages/slurm/package.py index 626f43c6c57..544b6d17fbb 100644 --- a/var/spack/repos/builtin/packages/slurm/package.py +++ b/var/spack/repos/builtin/packages/slurm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/smalt/package.py b/var/spack/repos/builtin/packages/smalt/package.py index c19f3d040a8..cc999231933 100644 --- a/var/spack/repos/builtin/packages/smalt/package.py +++ b/var/spack/repos/builtin/packages/smalt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/smc/package.py b/var/spack/repos/builtin/packages/smc/package.py index 402c892b0fd..abe5262c23e 100644 --- a/var/spack/repos/builtin/packages/smc/package.py +++ b/var/spack/repos/builtin/packages/smc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/smproxy/package.py b/var/spack/repos/builtin/packages/smproxy/package.py index bead0b37de2..463fa4c5159 100644 --- a/var/spack/repos/builtin/packages/smproxy/package.py +++ b/var/spack/repos/builtin/packages/smproxy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/snakemake/package.py b/var/spack/repos/builtin/packages/snakemake/package.py index ed79e6002c0..9e180d91912 100644 --- a/var/spack/repos/builtin/packages/snakemake/package.py +++ b/var/spack/repos/builtin/packages/snakemake/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/snap-berkeley/package.py b/var/spack/repos/builtin/packages/snap-berkeley/package.py index 9bd9cd961cc..c1c2744685d 100644 --- a/var/spack/repos/builtin/packages/snap-berkeley/package.py +++ b/var/spack/repos/builtin/packages/snap-berkeley/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/snap/package.py b/var/spack/repos/builtin/packages/snap/package.py index 2db4dc7afaa..86968f16802 100644 --- a/var/spack/repos/builtin/packages/snap/package.py +++ b/var/spack/repos/builtin/packages/snap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/snappy/package.py b/var/spack/repos/builtin/packages/snappy/package.py index bba05844e92..ce110344ff0 100644 --- a/var/spack/repos/builtin/packages/snappy/package.py +++ b/var/spack/repos/builtin/packages/snappy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/snbone/package.py b/var/spack/repos/builtin/packages/snbone/package.py index b4d125a77ee..f2462edca76 100644 --- a/var/spack/repos/builtin/packages/snbone/package.py +++ b/var/spack/repos/builtin/packages/snbone/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sniffles/package.py b/var/spack/repos/builtin/packages/sniffles/package.py index 9d890b03dfb..ea7f98cbbf7 100644 --- a/var/spack/repos/builtin/packages/sniffles/package.py +++ b/var/spack/repos/builtin/packages/sniffles/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/snptest/package.py b/var/spack/repos/builtin/packages/snptest/package.py index a60a15d0548..bd8654ba267 100644 --- a/var/spack/repos/builtin/packages/snptest/package.py +++ b/var/spack/repos/builtin/packages/snptest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/soap2/package.py b/var/spack/repos/builtin/packages/soap2/package.py index 5853bdf1e6d..374c1bd4490 100644 --- a/var/spack/repos/builtin/packages/soap2/package.py +++ b/var/spack/repos/builtin/packages/soap2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/soapindel/package.py b/var/spack/repos/builtin/packages/soapindel/package.py index 6d22660786c..b09fa753cfa 100644 --- a/var/spack/repos/builtin/packages/soapindel/package.py +++ b/var/spack/repos/builtin/packages/soapindel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/soapsnp/package.py b/var/spack/repos/builtin/packages/soapsnp/package.py index 3d22a579bf8..a268298ff4b 100644 --- a/var/spack/repos/builtin/packages/soapsnp/package.py +++ b/var/spack/repos/builtin/packages/soapsnp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/somatic-sniper/package.py b/var/spack/repos/builtin/packages/somatic-sniper/package.py index 4d5a17bcce0..3c48c7b5d7c 100644 --- a/var/spack/repos/builtin/packages/somatic-sniper/package.py +++ b/var/spack/repos/builtin/packages/somatic-sniper/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sortmerna/package.py b/var/spack/repos/builtin/packages/sortmerna/package.py index fbf0f44ed8f..61b58d02d12 100644 --- a/var/spack/repos/builtin/packages/sortmerna/package.py +++ b/var/spack/repos/builtin/packages/sortmerna/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sowing/package.py b/var/spack/repos/builtin/packages/sowing/package.py index 3f0b76078c1..121a6f19c9b 100644 --- a/var/spack/repos/builtin/packages/sowing/package.py +++ b/var/spack/repos/builtin/packages/sowing/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sox/package.py b/var/spack/repos/builtin/packages/sox/package.py index 21e755c1967..8645ed47d52 100644 --- a/var/spack/repos/builtin/packages/sox/package.py +++ b/var/spack/repos/builtin/packages/sox/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/spades/package.py b/var/spack/repos/builtin/packages/spades/package.py index 443436d3aea..44baee6a28a 100644 --- a/var/spack/repos/builtin/packages/spades/package.py +++ b/var/spack/repos/builtin/packages/spades/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/spark/package.py b/var/spack/repos/builtin/packages/spark/package.py index ddd825018e5..a0150b02e43 100644 --- a/var/spack/repos/builtin/packages/spark/package.py +++ b/var/spack/repos/builtin/packages/spark/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sparsehash/package.py b/var/spack/repos/builtin/packages/sparsehash/package.py index 864c5ffce82..234eef4d8fa 100644 --- a/var/spack/repos/builtin/packages/sparsehash/package.py +++ b/var/spack/repos/builtin/packages/sparsehash/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sparta/package.py b/var/spack/repos/builtin/packages/sparta/package.py index 361c0253e2a..07793e0169a 100644 --- a/var/spack/repos/builtin/packages/sparta/package.py +++ b/var/spack/repos/builtin/packages/sparta/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/spdlog/package.py b/var/spack/repos/builtin/packages/spdlog/package.py index a5a5612ae9f..8fcc2ebf264 100644 --- a/var/spack/repos/builtin/packages/spdlog/package.py +++ b/var/spack/repos/builtin/packages/spdlog/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/spectrum-mpi/package.py b/var/spack/repos/builtin/packages/spectrum-mpi/package.py index 1daa4b917a7..ed2c568d696 100644 --- a/var/spack/repos/builtin/packages/spectrum-mpi/package.py +++ b/var/spack/repos/builtin/packages/spectrum-mpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at International Business Machines Corporation # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/speex/package.py b/var/spack/repos/builtin/packages/speex/package.py index 6cac86f20dd..c726c628300 100644 --- a/var/spack/repos/builtin/packages/speex/package.py +++ b/var/spack/repos/builtin/packages/speex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sph2pipe/package.py b/var/spack/repos/builtin/packages/sph2pipe/package.py index c89a16c9026..463da455a4a 100644 --- a/var/spack/repos/builtin/packages/sph2pipe/package.py +++ b/var/spack/repos/builtin/packages/sph2pipe/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/spherepack/package.py b/var/spack/repos/builtin/packages/spherepack/package.py index 12c274774c8..dedace898f9 100644 --- a/var/spack/repos/builtin/packages/spherepack/package.py +++ b/var/spack/repos/builtin/packages/spherepack/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/spindle/package.py b/var/spack/repos/builtin/packages/spindle/package.py index 673cc5ebbe5..be1e43e0d2f 100644 --- a/var/spack/repos/builtin/packages/spindle/package.py +++ b/var/spack/repos/builtin/packages/spindle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/spot/package.py b/var/spack/repos/builtin/packages/spot/package.py index 1dc26a4e7c6..4918ab74ea9 100644 --- a/var/spack/repos/builtin/packages/spot/package.py +++ b/var/spack/repos/builtin/packages/spot/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py index 66b76e1be19..d4dbf9c014d 100644 --- a/var/spack/repos/builtin/packages/sqlite/package.py +++ b/var/spack/repos/builtin/packages/sqlite/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sspace-longread/package.py b/var/spack/repos/builtin/packages/sspace-longread/package.py index 9f55ecdc6e8..ce0c8b6f03c 100644 --- a/var/spack/repos/builtin/packages/sspace-longread/package.py +++ b/var/spack/repos/builtin/packages/sspace-longread/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sspace-standard/package.py b/var/spack/repos/builtin/packages/sspace-standard/package.py index 7b1de9c1b3d..0e933448bfc 100644 --- a/var/spack/repos/builtin/packages/sspace-standard/package.py +++ b/var/spack/repos/builtin/packages/sspace-standard/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sst-dumpi/package.py b/var/spack/repos/builtin/packages/sst-dumpi/package.py index 537d0f5e14b..30dceecdc6d 100644 --- a/var/spack/repos/builtin/packages/sst-dumpi/package.py +++ b/var/spack/repos/builtin/packages/sst-dumpi/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sst-macro/package.py b/var/spack/repos/builtin/packages/sst-macro/package.py index 3fd1a7489d3..168883ffc2d 100644 --- a/var/spack/repos/builtin/packages/sst-macro/package.py +++ b/var/spack/repos/builtin/packages/sst-macro/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/stacks/package.py b/var/spack/repos/builtin/packages/stacks/package.py index df0d486b0ba..fa62210ffb2 100644 --- a/var/spack/repos/builtin/packages/stacks/package.py +++ b/var/spack/repos/builtin/packages/stacks/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/staden-io-lib/package.py b/var/spack/repos/builtin/packages/staden-io-lib/package.py index c69b3192521..f94a1b982df 100644 --- a/var/spack/repos/builtin/packages/staden-io-lib/package.py +++ b/var/spack/repos/builtin/packages/staden-io-lib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/star-ccm-plus/package.py b/var/spack/repos/builtin/packages/star-ccm-plus/package.py index 35fa9629c47..b917cb12336 100644 --- a/var/spack/repos/builtin/packages/star-ccm-plus/package.py +++ b/var/spack/repos/builtin/packages/star-ccm-plus/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/star/package.py b/var/spack/repos/builtin/packages/star/package.py index e06ed646dfe..35de77733a4 100644 --- a/var/spack/repos/builtin/packages/star/package.py +++ b/var/spack/repos/builtin/packages/star/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py index eedb2fe314c..6a0ced2d4f1 100644 --- a/var/spack/repos/builtin/packages/stat/package.py +++ b/var/spack/repos/builtin/packages/stat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/stc/package.py b/var/spack/repos/builtin/packages/stc/package.py index 24037676799..08f5aa1356e 100644 --- a/var/spack/repos/builtin/packages/stc/package.py +++ b/var/spack/repos/builtin/packages/stc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/stream/package.py b/var/spack/repos/builtin/packages/stream/package.py index c98ecc9c399..f38f7aac056 100644 --- a/var/spack/repos/builtin/packages/stream/package.py +++ b/var/spack/repos/builtin/packages/stream/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/stress/package.py b/var/spack/repos/builtin/packages/stress/package.py index acdcf262d19..fd3cdf38548 100644 --- a/var/spack/repos/builtin/packages/stress/package.py +++ b/var/spack/repos/builtin/packages/stress/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/stringtie/package.py b/var/spack/repos/builtin/packages/stringtie/package.py index 9baf545a4c7..123f156d32e 100644 --- a/var/spack/repos/builtin/packages/stringtie/package.py +++ b/var/spack/repos/builtin/packages/stringtie/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/structure/package.py b/var/spack/repos/builtin/packages/structure/package.py index abe1ee76e88..3a452fc15fd 100644 --- a/var/spack/repos/builtin/packages/structure/package.py +++ b/var/spack/repos/builtin/packages/structure/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sublime-text/package.py b/var/spack/repos/builtin/packages/sublime-text/package.py index e7605b40be2..b9087aa57ac 100644 --- a/var/spack/repos/builtin/packages/sublime-text/package.py +++ b/var/spack/repos/builtin/packages/sublime-text/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/subread/package.py b/var/spack/repos/builtin/packages/subread/package.py index b09e3986024..be48f127d8c 100644 --- a/var/spack/repos/builtin/packages/subread/package.py +++ b/var/spack/repos/builtin/packages/subread/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py index eb39c8299d2..b8e5a24fab3 100644 --- a/var/spack/repos/builtin/packages/subversion/package.py +++ b/var/spack/repos/builtin/packages/subversion/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index e64be9730b1..6699cdada97 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sumaclust/package.py b/var/spack/repos/builtin/packages/sumaclust/package.py index b1d7a94c5a1..bc67148f61e 100644 --- a/var/spack/repos/builtin/packages/sumaclust/package.py +++ b/var/spack/repos/builtin/packages/sumaclust/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py index b0ad1c1f42f..b3007d191a3 100644 --- a/var/spack/repos/builtin/packages/sundials/package.py +++ b/var/spack/repos/builtin/packages/sundials/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index f535252b8a4..69c6d401e8f 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/superlu-mt/package.py b/var/spack/repos/builtin/packages/superlu-mt/package.py index a4adff7c301..4f44f8e5a4a 100644 --- a/var/spack/repos/builtin/packages/superlu-mt/package.py +++ b/var/spack/repos/builtin/packages/superlu-mt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py index c7ef1e3baeb..948cea6336f 100644 --- a/var/spack/repos/builtin/packages/superlu/package.py +++ b/var/spack/repos/builtin/packages/superlu/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/swarm/package.py b/var/spack/repos/builtin/packages/swarm/package.py index b752f523813..941e9f38728 100644 --- a/var/spack/repos/builtin/packages/swarm/package.py +++ b/var/spack/repos/builtin/packages/swarm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/swiftsim/package.py b/var/spack/repos/builtin/packages/swiftsim/package.py index 19860d1ec01..25c1267c7ba 100644 --- a/var/spack/repos/builtin/packages/swiftsim/package.py +++ b/var/spack/repos/builtin/packages/swiftsim/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/swig/package.py b/var/spack/repos/builtin/packages/swig/package.py index 4f197a838e8..67e507d300a 100644 --- a/var/spack/repos/builtin/packages/swig/package.py +++ b/var/spack/repos/builtin/packages/swig/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/symengine/package.py b/var/spack/repos/builtin/packages/symengine/package.py index a36cfc70b2b..1126ef6ab52 100644 --- a/var/spack/repos/builtin/packages/symengine/package.py +++ b/var/spack/repos/builtin/packages/symengine/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sympol/package.py b/var/spack/repos/builtin/packages/sympol/package.py index 3e129e68eb3..77e01d395be 100644 --- a/var/spack/repos/builtin/packages/sympol/package.py +++ b/var/spack/repos/builtin/packages/sympol/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py index d914b0226db..089a4b339e2 100644 --- a/var/spack/repos/builtin/packages/sz/package.py +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tabix/package.py b/var/spack/repos/builtin/packages/tabix/package.py index 1e54dd4716b..47dfdded32c 100644 --- a/var/spack/repos/builtin/packages/tabix/package.py +++ b/var/spack/repos/builtin/packages/tabix/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/talloc/package.py b/var/spack/repos/builtin/packages/talloc/package.py index bd3d066adab..25b926f12f6 100644 --- a/var/spack/repos/builtin/packages/talloc/package.py +++ b/var/spack/repos/builtin/packages/talloc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tar/package.py b/var/spack/repos/builtin/packages/tar/package.py index 16e7920d54d..3c75b6d99e2 100644 --- a/var/spack/repos/builtin/packages/tar/package.py +++ b/var/spack/repos/builtin/packages/tar/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/task/package.py b/var/spack/repos/builtin/packages/task/package.py index 11cc280a9a7..1318503430a 100644 --- a/var/spack/repos/builtin/packages/task/package.py +++ b/var/spack/repos/builtin/packages/task/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/taskd/package.py b/var/spack/repos/builtin/packages/taskd/package.py index 9a9e2500113..b2fc1c83f2e 100644 --- a/var/spack/repos/builtin/packages/taskd/package.py +++ b/var/spack/repos/builtin/packages/taskd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index f9e2dea56e0..2159aca9273 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tcl/package.py b/var/spack/repos/builtin/packages/tcl/package.py index ea2b55573c0..556ea77295e 100644 --- a/var/spack/repos/builtin/packages/tcl/package.py +++ b/var/spack/repos/builtin/packages/tcl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tcoffee/package.py b/var/spack/repos/builtin/packages/tcoffee/package.py index 0f954b42c7f..5bf8bc6fa9f 100644 --- a/var/spack/repos/builtin/packages/tcoffee/package.py +++ b/var/spack/repos/builtin/packages/tcoffee/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tealeaf/package.py b/var/spack/repos/builtin/packages/tealeaf/package.py index e8d60b4448b..7002c763251 100644 --- a/var/spack/repos/builtin/packages/tealeaf/package.py +++ b/var/spack/repos/builtin/packages/tealeaf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tetgen/package.py b/var/spack/repos/builtin/packages/tetgen/package.py index c887c7c8f58..0aa35e9db90 100644 --- a/var/spack/repos/builtin/packages/tetgen/package.py +++ b/var/spack/repos/builtin/packages/tetgen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tethex/package.py b/var/spack/repos/builtin/packages/tethex/package.py index f6991646097..dd2dadffd82 100644 --- a/var/spack/repos/builtin/packages/tethex/package.py +++ b/var/spack/repos/builtin/packages/tethex/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/texinfo/package.py b/var/spack/repos/builtin/packages/texinfo/package.py index e633cd6ac36..480b2098d0e 100644 --- a/var/spack/repos/builtin/packages/texinfo/package.py +++ b/var/spack/repos/builtin/packages/texinfo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/texlive/package.py b/var/spack/repos/builtin/packages/texlive/package.py index 58859d5ebb4..33ff76f6a80 100644 --- a/var/spack/repos/builtin/packages/texlive/package.py +++ b/var/spack/repos/builtin/packages/texlive/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/the-platinum-searcher/package.py b/var/spack/repos/builtin/packages/the-platinum-searcher/package.py index b8d99fcf776..abbca39a9e2 100644 --- a/var/spack/repos/builtin/packages/the-platinum-searcher/package.py +++ b/var/spack/repos/builtin/packages/the-platinum-searcher/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/the-silver-searcher/package.py b/var/spack/repos/builtin/packages/the-silver-searcher/package.py index 236d1f88f4d..5e1c83d2353 100644 --- a/var/spack/repos/builtin/packages/the-silver-searcher/package.py +++ b/var/spack/repos/builtin/packages/the-silver-searcher/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py index c91d0096f31..8b5d1ff3886 100644 --- a/var/spack/repos/builtin/packages/thrift/package.py +++ b/var/spack/repos/builtin/packages/thrift/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tig/package.py b/var/spack/repos/builtin/packages/tig/package.py index da8482a21af..88a73983776 100644 --- a/var/spack/repos/builtin/packages/tig/package.py +++ b/var/spack/repos/builtin/packages/tig/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tinyxml/package.py b/var/spack/repos/builtin/packages/tinyxml/package.py index 70dfb552f92..7f62c1f1f18 100644 --- a/var/spack/repos/builtin/packages/tinyxml/package.py +++ b/var/spack/repos/builtin/packages/tinyxml/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tinyxml2/package.py b/var/spack/repos/builtin/packages/tinyxml2/package.py index f39ca8b7af0..9622f6c9b1e 100644 --- a/var/spack/repos/builtin/packages/tinyxml2/package.py +++ b/var/spack/repos/builtin/packages/tinyxml2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tk/package.py b/var/spack/repos/builtin/packages/tk/package.py index ab25ba1d5b9..87d955e9c95 100644 --- a/var/spack/repos/builtin/packages/tk/package.py +++ b/var/spack/repos/builtin/packages/tk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tmalign/package.py b/var/spack/repos/builtin/packages/tmalign/package.py index 5f08bb27fc1..73e8811eabf 100644 --- a/var/spack/repos/builtin/packages/tmalign/package.py +++ b/var/spack/repos/builtin/packages/tmalign/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tmux/package.py b/var/spack/repos/builtin/packages/tmux/package.py index a3a8e5ad891..5b877d25e60 100644 --- a/var/spack/repos/builtin/packages/tmux/package.py +++ b/var/spack/repos/builtin/packages/tmux/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tmuxinator/package.py b/var/spack/repos/builtin/packages/tmuxinator/package.py index 2078187189e..366acbb7607 100644 --- a/var/spack/repos/builtin/packages/tmuxinator/package.py +++ b/var/spack/repos/builtin/packages/tmuxinator/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tophat/package.py b/var/spack/repos/builtin/packages/tophat/package.py index 116db56b32f..81009494342 100644 --- a/var/spack/repos/builtin/packages/tophat/package.py +++ b/var/spack/repos/builtin/packages/tophat/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tppred/package.py b/var/spack/repos/builtin/packages/tppred/package.py index 919e15c3b01..532662fb22f 100644 --- a/var/spack/repos/builtin/packages/tppred/package.py +++ b/var/spack/repos/builtin/packages/tppred/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/transabyss/package.py b/var/spack/repos/builtin/packages/transabyss/package.py index 10ee5088991..28896479f2e 100644 --- a/var/spack/repos/builtin/packages/transabyss/package.py +++ b/var/spack/repos/builtin/packages/transabyss/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/transdecoder/package.py b/var/spack/repos/builtin/packages/transdecoder/package.py index 4c23afbf2a2..396f96f5361 100644 --- a/var/spack/repos/builtin/packages/transdecoder/package.py +++ b/var/spack/repos/builtin/packages/transdecoder/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/transposome/package.py b/var/spack/repos/builtin/packages/transposome/package.py index 01499290cfd..a70c3beedff 100644 --- a/var/spack/repos/builtin/packages/transposome/package.py +++ b/var/spack/repos/builtin/packages/transposome/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/transset/package.py b/var/spack/repos/builtin/packages/transset/package.py index 7f93754263b..3c692f4769a 100644 --- a/var/spack/repos/builtin/packages/transset/package.py +++ b/var/spack/repos/builtin/packages/transset/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/trapproto/package.py b/var/spack/repos/builtin/packages/trapproto/package.py index 5433fc97f7d..2e06cca3cdb 100644 --- a/var/spack/repos/builtin/packages/trapproto/package.py +++ b/var/spack/repos/builtin/packages/trapproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/tree/package.py b/var/spack/repos/builtin/packages/tree/package.py index 19979124ba7..39b4ced9b2a 100644 --- a/var/spack/repos/builtin/packages/tree/package.py +++ b/var/spack/repos/builtin/packages/tree/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/triangle/package.py b/var/spack/repos/builtin/packages/triangle/package.py index c7cfa3a60e3..b43a65d26ce 100644 --- a/var/spack/repos/builtin/packages/triangle/package.py +++ b/var/spack/repos/builtin/packages/triangle/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 585ff0e81b8..1e2142644ad 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/trimgalore/package.py b/var/spack/repos/builtin/packages/trimgalore/package.py index 9dd8be11e95..0f032dbe558 100644 --- a/var/spack/repos/builtin/packages/trimgalore/package.py +++ b/var/spack/repos/builtin/packages/trimgalore/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/trimmomatic/package.py b/var/spack/repos/builtin/packages/trimmomatic/package.py index 42f0e689737..980cc850fe3 100644 --- a/var/spack/repos/builtin/packages/trimmomatic/package.py +++ b/var/spack/repos/builtin/packages/trimmomatic/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/turbine/package.py b/var/spack/repos/builtin/packages/turbine/package.py index 6de98eef16c..0292c9dc248 100644 --- a/var/spack/repos/builtin/packages/turbine/package.py +++ b/var/spack/repos/builtin/packages/turbine/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/turbomole/package.py b/var/spack/repos/builtin/packages/turbomole/package.py index 9eb9af6ff1f..2c50457bee2 100644 --- a/var/spack/repos/builtin/packages/turbomole/package.py +++ b/var/spack/repos/builtin/packages/turbomole/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/twm/package.py b/var/spack/repos/builtin/packages/twm/package.py index 22ef5787506..cbbe94f096e 100644 --- a/var/spack/repos/builtin/packages/twm/package.py +++ b/var/spack/repos/builtin/packages/twm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/uberftp/package.py b/var/spack/repos/builtin/packages/uberftp/package.py index 6cb17c417a8..052636b735d 100644 --- a/var/spack/repos/builtin/packages/uberftp/package.py +++ b/var/spack/repos/builtin/packages/uberftp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/udunits2/package.py b/var/spack/repos/builtin/packages/udunits2/package.py index 26586749928..2bf6f39e1bb 100644 --- a/var/spack/repos/builtin/packages/udunits2/package.py +++ b/var/spack/repos/builtin/packages/udunits2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/uncrustify/package.py b/var/spack/repos/builtin/packages/uncrustify/package.py index 20c26ed29f9..248d4597124 100644 --- a/var/spack/repos/builtin/packages/uncrustify/package.py +++ b/var/spack/repos/builtin/packages/uncrustify/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/unibilium/package.py b/var/spack/repos/builtin/packages/unibilium/package.py index 2a5ce7f2675..5419e5b42ca 100644 --- a/var/spack/repos/builtin/packages/unibilium/package.py +++ b/var/spack/repos/builtin/packages/unibilium/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/unison/package.py b/var/spack/repos/builtin/packages/unison/package.py index 70420a38d4f..3c35630377b 100644 --- a/var/spack/repos/builtin/packages/unison/package.py +++ b/var/spack/repos/builtin/packages/unison/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/units/package.py b/var/spack/repos/builtin/packages/units/package.py index e2a12bf57cd..bfdfe75c80c 100644 --- a/var/spack/repos/builtin/packages/units/package.py +++ b/var/spack/repos/builtin/packages/units/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/unixodbc/package.py b/var/spack/repos/builtin/packages/unixodbc/package.py index a1ca765a569..605bc3bce4d 100644 --- a/var/spack/repos/builtin/packages/unixodbc/package.py +++ b/var/spack/repos/builtin/packages/unixodbc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/usearch/package.py b/var/spack/repos/builtin/packages/usearch/package.py index 87ea6798ca1..e6d41d74ce3 100644 --- a/var/spack/repos/builtin/packages/usearch/package.py +++ b/var/spack/repos/builtin/packages/usearch/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/util-linux/package.py b/var/spack/repos/builtin/packages/util-linux/package.py index 018ce1993df..4b6a22ff66b 100644 --- a/var/spack/repos/builtin/packages/util-linux/package.py +++ b/var/spack/repos/builtin/packages/util-linux/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/util-macros/package.py b/var/spack/repos/builtin/packages/util-macros/package.py index 10decd35f69..af9b8376392 100644 --- a/var/spack/repos/builtin/packages/util-macros/package.py +++ b/var/spack/repos/builtin/packages/util-macros/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/uuid/package.py b/var/spack/repos/builtin/packages/uuid/package.py index 2d92e257e88..e4a0f8cee0f 100644 --- a/var/spack/repos/builtin/packages/uuid/package.py +++ b/var/spack/repos/builtin/packages/uuid/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/valgrind/package.py b/var/spack/repos/builtin/packages/valgrind/package.py index 05efd67a3c9..588c87ecb8a 100644 --- a/var/spack/repos/builtin/packages/valgrind/package.py +++ b/var/spack/repos/builtin/packages/valgrind/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vampirtrace/package.py b/var/spack/repos/builtin/packages/vampirtrace/package.py index dc4841f2bad..ada4e9004e8 100644 --- a/var/spack/repos/builtin/packages/vampirtrace/package.py +++ b/var/spack/repos/builtin/packages/vampirtrace/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/varscan/package.py b/var/spack/repos/builtin/packages/varscan/package.py index f4c2ae029dc..332488c5e0e 100644 --- a/var/spack/repos/builtin/packages/varscan/package.py +++ b/var/spack/repos/builtin/packages/varscan/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vc/package.py b/var/spack/repos/builtin/packages/vc/package.py index 67ced036b25..034bd784b47 100644 --- a/var/spack/repos/builtin/packages/vc/package.py +++ b/var/spack/repos/builtin/packages/vc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vcftools/package.py b/var/spack/repos/builtin/packages/vcftools/package.py index bb2721e3534..bfce69ef86c 100644 --- a/var/spack/repos/builtin/packages/vcftools/package.py +++ b/var/spack/repos/builtin/packages/vcftools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vcsh/package.py b/var/spack/repos/builtin/packages/vcsh/package.py index e09833d5e19..a8e81304edb 100644 --- a/var/spack/repos/builtin/packages/vcsh/package.py +++ b/var/spack/repos/builtin/packages/vcsh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vdt/package.py b/var/spack/repos/builtin/packages/vdt/package.py index df214655061..3aee09c9197 100644 --- a/var/spack/repos/builtin/packages/vdt/package.py +++ b/var/spack/repos/builtin/packages/vdt/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index 9843840e5b0..5cc5764f8cb 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/veclibfort/package.py b/var/spack/repos/builtin/packages/veclibfort/package.py index ed11439b9ff..c5917bacea9 100644 --- a/var/spack/repos/builtin/packages/veclibfort/package.py +++ b/var/spack/repos/builtin/packages/veclibfort/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vegas2/package.py b/var/spack/repos/builtin/packages/vegas2/package.py index 1c091a568c8..982fe54df11 100644 --- a/var/spack/repos/builtin/packages/vegas2/package.py +++ b/var/spack/repos/builtin/packages/vegas2/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/velvet/package.py b/var/spack/repos/builtin/packages/velvet/package.py index 48e0e04d1aa..d7c39f80040 100644 --- a/var/spack/repos/builtin/packages/velvet/package.py +++ b/var/spack/repos/builtin/packages/velvet/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/videoproto/package.py b/var/spack/repos/builtin/packages/videoproto/package.py index c63d0e32911..d09aaf4ef1c 100644 --- a/var/spack/repos/builtin/packages/videoproto/package.py +++ b/var/spack/repos/builtin/packages/videoproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/viennarna/package.py b/var/spack/repos/builtin/packages/viennarna/package.py index 548aacb56f0..dbaff25eecc 100644 --- a/var/spack/repos/builtin/packages/viennarna/package.py +++ b/var/spack/repos/builtin/packages/viennarna/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/viewres/package.py b/var/spack/repos/builtin/packages/viewres/package.py index 2ab28c832a2..cb9a89d7412 100644 --- a/var/spack/repos/builtin/packages/viewres/package.py +++ b/var/spack/repos/builtin/packages/viewres/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index 623f54b5d33..0647c919047 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/virtualgl/package.py b/var/spack/repos/builtin/packages/virtualgl/package.py index d2ea587fb0b..2e78ea4fbd0 100644 --- a/var/spack/repos/builtin/packages/virtualgl/package.py +++ b/var/spack/repos/builtin/packages/virtualgl/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index 2c08c73a3c7..7459f11a4cb 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vizglow/package.py b/var/spack/repos/builtin/packages/vizglow/package.py index d153edcc9aa..65f9ba1090a 100644 --- a/var/spack/repos/builtin/packages/vizglow/package.py +++ b/var/spack/repos/builtin/packages/vizglow/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vmatch/package.py b/var/spack/repos/builtin/packages/vmatch/package.py index bc09c0b70d5..66095d1caee 100644 --- a/var/spack/repos/builtin/packages/vmatch/package.py +++ b/var/spack/repos/builtin/packages/vmatch/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/voropp/package.py b/var/spack/repos/builtin/packages/voropp/package.py index d44347b87f2..3ad6f3b0d84 100644 --- a/var/spack/repos/builtin/packages/voropp/package.py +++ b/var/spack/repos/builtin/packages/voropp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vpfft/package.py b/var/spack/repos/builtin/packages/vpfft/package.py index 8d4ef7defe8..b27c232d28c 100644 --- a/var/spack/repos/builtin/packages/vpfft/package.py +++ b/var/spack/repos/builtin/packages/vpfft/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vsearch/package.py b/var/spack/repos/builtin/packages/vsearch/package.py index 07ed838654f..1a4b201bec1 100644 --- a/var/spack/repos/builtin/packages/vsearch/package.py +++ b/var/spack/repos/builtin/packages/vsearch/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index fed631efe9b..2e4ab7e23a8 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/wannier90/package.py b/var/spack/repos/builtin/packages/wannier90/package.py index d7d2a929cb3..d9150f9491d 100644 --- a/var/spack/repos/builtin/packages/wannier90/package.py +++ b/var/spack/repos/builtin/packages/wannier90/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/wget/package.py b/var/spack/repos/builtin/packages/wget/package.py index f852f4e9f08..fc5e3b8230a 100644 --- a/var/spack/repos/builtin/packages/wget/package.py +++ b/var/spack/repos/builtin/packages/wget/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/windowswmproto/package.py b/var/spack/repos/builtin/packages/windowswmproto/package.py index d5045f16ab1..3310a510772 100644 --- a/var/spack/repos/builtin/packages/windowswmproto/package.py +++ b/var/spack/repos/builtin/packages/windowswmproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/wx/package.py b/var/spack/repos/builtin/packages/wx/package.py index c3439087785..25325842f4b 100644 --- a/var/spack/repos/builtin/packages/wx/package.py +++ b/var/spack/repos/builtin/packages/wx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/wxpropgrid/package.py b/var/spack/repos/builtin/packages/wxpropgrid/package.py index 989c3ef002a..22e68dd3d8a 100644 --- a/var/spack/repos/builtin/packages/wxpropgrid/package.py +++ b/var/spack/repos/builtin/packages/wxpropgrid/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/x11perf/package.py b/var/spack/repos/builtin/packages/x11perf/package.py index 944acab645c..ed8b94a43c0 100644 --- a/var/spack/repos/builtin/packages/x11perf/package.py +++ b/var/spack/repos/builtin/packages/x11perf/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xapian-core/package.py b/var/spack/repos/builtin/packages/xapian-core/package.py index 82a8fac8abf..fed3b79998e 100644 --- a/var/spack/repos/builtin/packages/xapian-core/package.py +++ b/var/spack/repos/builtin/packages/xapian-core/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xauth/package.py b/var/spack/repos/builtin/packages/xauth/package.py index 85256a22453..4f6900cbfc6 100644 --- a/var/spack/repos/builtin/packages/xauth/package.py +++ b/var/spack/repos/builtin/packages/xauth/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xbacklight/package.py b/var/spack/repos/builtin/packages/xbacklight/package.py index 1695ebdfe82..1a038fea69a 100644 --- a/var/spack/repos/builtin/packages/xbacklight/package.py +++ b/var/spack/repos/builtin/packages/xbacklight/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xbiff/package.py b/var/spack/repos/builtin/packages/xbiff/package.py index 5b1a05afb4b..51c371d54ce 100644 --- a/var/spack/repos/builtin/packages/xbiff/package.py +++ b/var/spack/repos/builtin/packages/xbiff/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xbitmaps/package.py b/var/spack/repos/builtin/packages/xbitmaps/package.py index 15cfbadc4b3..1fecec08ab1 100644 --- a/var/spack/repos/builtin/packages/xbitmaps/package.py +++ b/var/spack/repos/builtin/packages/xbitmaps/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcalc/package.py b/var/spack/repos/builtin/packages/xcalc/package.py index 10c472f86c7..0b666234a93 100644 --- a/var/spack/repos/builtin/packages/xcalc/package.py +++ b/var/spack/repos/builtin/packages/xcalc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcb-demo/package.py b/var/spack/repos/builtin/packages/xcb-demo/package.py index 95f7eecdc2a..dcceb2c2224 100644 --- a/var/spack/repos/builtin/packages/xcb-demo/package.py +++ b/var/spack/repos/builtin/packages/xcb-demo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcb-proto/package.py b/var/spack/repos/builtin/packages/xcb-proto/package.py index 314a07af3f8..9b58531181c 100644 --- a/var/spack/repos/builtin/packages/xcb-proto/package.py +++ b/var/spack/repos/builtin/packages/xcb-proto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcb-util-cursor/package.py b/var/spack/repos/builtin/packages/xcb-util-cursor/package.py index 5d9cb5db954..305f09f715a 100644 --- a/var/spack/repos/builtin/packages/xcb-util-cursor/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-cursor/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcb-util-errors/package.py b/var/spack/repos/builtin/packages/xcb-util-errors/package.py index f3b1c21ce26..25336d835f6 100644 --- a/var/spack/repos/builtin/packages/xcb-util-errors/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-errors/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcb-util-image/package.py b/var/spack/repos/builtin/packages/xcb-util-image/package.py index 76cb6074d76..1837362a255 100644 --- a/var/spack/repos/builtin/packages/xcb-util-image/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-image/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py b/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py index 525e5e34277..f496df6534f 100644 --- a/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py b/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py index 4b97eb1312f..aff15afacc8 100644 --- a/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcb-util-wm/package.py b/var/spack/repos/builtin/packages/xcb-util-wm/package.py index b55457b7031..d17bc985cad 100644 --- a/var/spack/repos/builtin/packages/xcb-util-wm/package.py +++ b/var/spack/repos/builtin/packages/xcb-util-wm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcb-util/package.py b/var/spack/repos/builtin/packages/xcb-util/package.py index 0096e226b52..628d118de38 100644 --- a/var/spack/repos/builtin/packages/xcb-util/package.py +++ b/var/spack/repos/builtin/packages/xcb-util/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xclipboard/package.py b/var/spack/repos/builtin/packages/xclipboard/package.py index 6e3173078a8..7e4d922cbd7 100644 --- a/var/spack/repos/builtin/packages/xclipboard/package.py +++ b/var/spack/repos/builtin/packages/xclipboard/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xclock/package.py b/var/spack/repos/builtin/packages/xclock/package.py index 45d12d169c2..1c974a7284f 100644 --- a/var/spack/repos/builtin/packages/xclock/package.py +++ b/var/spack/repos/builtin/packages/xclock/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcmiscproto/package.py b/var/spack/repos/builtin/packages/xcmiscproto/package.py index 050a02fe42e..7afd0487269 100644 --- a/var/spack/repos/builtin/packages/xcmiscproto/package.py +++ b/var/spack/repos/builtin/packages/xcmiscproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcmsdb/package.py b/var/spack/repos/builtin/packages/xcmsdb/package.py index cfa6cf9b120..c2f305cc3e5 100644 --- a/var/spack/repos/builtin/packages/xcmsdb/package.py +++ b/var/spack/repos/builtin/packages/xcmsdb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcompmgr/package.py b/var/spack/repos/builtin/packages/xcompmgr/package.py index e0fb1296925..71a47b92514 100644 --- a/var/spack/repos/builtin/packages/xcompmgr/package.py +++ b/var/spack/repos/builtin/packages/xcompmgr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xconsole/package.py b/var/spack/repos/builtin/packages/xconsole/package.py index 3261df3e2a8..49219716c22 100644 --- a/var/spack/repos/builtin/packages/xconsole/package.py +++ b/var/spack/repos/builtin/packages/xconsole/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcursor-themes/package.py b/var/spack/repos/builtin/packages/xcursor-themes/package.py index 046b217de5d..a31d5523267 100644 --- a/var/spack/repos/builtin/packages/xcursor-themes/package.py +++ b/var/spack/repos/builtin/packages/xcursor-themes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xcursorgen/package.py b/var/spack/repos/builtin/packages/xcursorgen/package.py index d9229aba773..9737f2302bf 100644 --- a/var/spack/repos/builtin/packages/xcursorgen/package.py +++ b/var/spack/repos/builtin/packages/xcursorgen/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xdbedizzy/package.py b/var/spack/repos/builtin/packages/xdbedizzy/package.py index ee77adad2e0..b0498af9d19 100644 --- a/var/spack/repos/builtin/packages/xdbedizzy/package.py +++ b/var/spack/repos/builtin/packages/xdbedizzy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xditview/package.py b/var/spack/repos/builtin/packages/xditview/package.py index 81566abdc9b..68c619f27ea 100644 --- a/var/spack/repos/builtin/packages/xditview/package.py +++ b/var/spack/repos/builtin/packages/xditview/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xdm/package.py b/var/spack/repos/builtin/packages/xdm/package.py index 07e31c000bf..72c3bb708d6 100644 --- a/var/spack/repos/builtin/packages/xdm/package.py +++ b/var/spack/repos/builtin/packages/xdm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xdpyinfo/package.py b/var/spack/repos/builtin/packages/xdpyinfo/package.py index cd5b32a689e..0e0d360172d 100644 --- a/var/spack/repos/builtin/packages/xdpyinfo/package.py +++ b/var/spack/repos/builtin/packages/xdpyinfo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xdriinfo/package.py b/var/spack/repos/builtin/packages/xdriinfo/package.py index 79f693dc4b6..a4749d9bf4b 100644 --- a/var/spack/repos/builtin/packages/xdriinfo/package.py +++ b/var/spack/repos/builtin/packages/xdriinfo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xedit/package.py b/var/spack/repos/builtin/packages/xedit/package.py index acb44faf74e..2211c75ac4d 100644 --- a/var/spack/repos/builtin/packages/xedit/package.py +++ b/var/spack/repos/builtin/packages/xedit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py index 3b8e512c177..c1032dd5ce5 100644 --- a/var/spack/repos/builtin/packages/xerces-c/package.py +++ b/var/spack/repos/builtin/packages/xerces-c/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xev/package.py b/var/spack/repos/builtin/packages/xev/package.py index ddfd72e4c79..315c5358914 100644 --- a/var/spack/repos/builtin/packages/xev/package.py +++ b/var/spack/repos/builtin/packages/xev/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xextproto/package.py b/var/spack/repos/builtin/packages/xextproto/package.py index a6de568f61d..e98a772e97d 100644 --- a/var/spack/repos/builtin/packages/xextproto/package.py +++ b/var/spack/repos/builtin/packages/xextproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xeyes/package.py b/var/spack/repos/builtin/packages/xeyes/package.py index 28b3e1d624e..bf7e299b48d 100644 --- a/var/spack/repos/builtin/packages/xeyes/package.py +++ b/var/spack/repos/builtin/packages/xeyes/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py index 620d7f014c6..8ee1cce5120 100644 --- a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py +++ b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xf86dga/package.py b/var/spack/repos/builtin/packages/xf86dga/package.py index 84c194e236b..1928ac83aea 100644 --- a/var/spack/repos/builtin/packages/xf86dga/package.py +++ b/var/spack/repos/builtin/packages/xf86dga/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xf86dgaproto/package.py b/var/spack/repos/builtin/packages/xf86dgaproto/package.py index e07da8cd2d7..bbd9539dec3 100644 --- a/var/spack/repos/builtin/packages/xf86dgaproto/package.py +++ b/var/spack/repos/builtin/packages/xf86dgaproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xf86driproto/package.py b/var/spack/repos/builtin/packages/xf86driproto/package.py index 5c10143e434..468aeab6102 100644 --- a/var/spack/repos/builtin/packages/xf86driproto/package.py +++ b/var/spack/repos/builtin/packages/xf86driproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xf86miscproto/package.py b/var/spack/repos/builtin/packages/xf86miscproto/package.py index 9e6231b344b..b0eb8c16392 100644 --- a/var/spack/repos/builtin/packages/xf86miscproto/package.py +++ b/var/spack/repos/builtin/packages/xf86miscproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xf86rushproto/package.py b/var/spack/repos/builtin/packages/xf86rushproto/package.py index 0e5d8d935ae..5e5bfe77033 100644 --- a/var/spack/repos/builtin/packages/xf86rushproto/package.py +++ b/var/spack/repos/builtin/packages/xf86rushproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py index 20238e3c279..d665d33be18 100644 --- a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py +++ b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xfd/package.py b/var/spack/repos/builtin/packages/xfd/package.py index b55b90752ac..0a2284a4449 100644 --- a/var/spack/repos/builtin/packages/xfd/package.py +++ b/var/spack/repos/builtin/packages/xfd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xfindproxy/package.py b/var/spack/repos/builtin/packages/xfindproxy/package.py index 3cdcd5069ab..5c78e42bb33 100644 --- a/var/spack/repos/builtin/packages/xfindproxy/package.py +++ b/var/spack/repos/builtin/packages/xfindproxy/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xfontsel/package.py b/var/spack/repos/builtin/packages/xfontsel/package.py index c8fa0ef95b9..59dcfa6ee07 100644 --- a/var/spack/repos/builtin/packages/xfontsel/package.py +++ b/var/spack/repos/builtin/packages/xfontsel/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xfs/package.py b/var/spack/repos/builtin/packages/xfs/package.py index ecc94d4835d..e892ffb2229 100644 --- a/var/spack/repos/builtin/packages/xfs/package.py +++ b/var/spack/repos/builtin/packages/xfs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xfsinfo/package.py b/var/spack/repos/builtin/packages/xfsinfo/package.py index 8f6bdae9cc8..88b45b2f4f9 100644 --- a/var/spack/repos/builtin/packages/xfsinfo/package.py +++ b/var/spack/repos/builtin/packages/xfsinfo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xfwp/package.py b/var/spack/repos/builtin/packages/xfwp/package.py index 38bbf8342b5..6093f5b3ef5 100644 --- a/var/spack/repos/builtin/packages/xfwp/package.py +++ b/var/spack/repos/builtin/packages/xfwp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xgamma/package.py b/var/spack/repos/builtin/packages/xgamma/package.py index 9ec71186084..468572af942 100644 --- a/var/spack/repos/builtin/packages/xgamma/package.py +++ b/var/spack/repos/builtin/packages/xgamma/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xgc/package.py b/var/spack/repos/builtin/packages/xgc/package.py index 3592bc923fe..f51283b85ef 100644 --- a/var/spack/repos/builtin/packages/xgc/package.py +++ b/var/spack/repos/builtin/packages/xgc/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xhost/package.py b/var/spack/repos/builtin/packages/xhost/package.py index 21accc52846..93b75790d05 100644 --- a/var/spack/repos/builtin/packages/xhost/package.py +++ b/var/spack/repos/builtin/packages/xhost/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xineramaproto/package.py b/var/spack/repos/builtin/packages/xineramaproto/package.py index 003e365a904..1a21892a475 100644 --- a/var/spack/repos/builtin/packages/xineramaproto/package.py +++ b/var/spack/repos/builtin/packages/xineramaproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xinit/package.py b/var/spack/repos/builtin/packages/xinit/package.py index 376978683ff..71361a24b25 100644 --- a/var/spack/repos/builtin/packages/xinit/package.py +++ b/var/spack/repos/builtin/packages/xinit/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xinput/package.py b/var/spack/repos/builtin/packages/xinput/package.py index 7c6f82afdf5..4def5efbbb8 100644 --- a/var/spack/repos/builtin/packages/xinput/package.py +++ b/var/spack/repos/builtin/packages/xinput/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xkbcomp/package.py b/var/spack/repos/builtin/packages/xkbcomp/package.py index 398742d7e54..aa85999bf47 100644 --- a/var/spack/repos/builtin/packages/xkbcomp/package.py +++ b/var/spack/repos/builtin/packages/xkbcomp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xkbdata/package.py b/var/spack/repos/builtin/packages/xkbdata/package.py index 96cf29b500b..d6108ea7e95 100644 --- a/var/spack/repos/builtin/packages/xkbdata/package.py +++ b/var/spack/repos/builtin/packages/xkbdata/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xkbevd/package.py b/var/spack/repos/builtin/packages/xkbevd/package.py index 66c8f3b8112..e74674befa0 100644 --- a/var/spack/repos/builtin/packages/xkbevd/package.py +++ b/var/spack/repos/builtin/packages/xkbevd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xkbprint/package.py b/var/spack/repos/builtin/packages/xkbprint/package.py index 2b93582d3e7..d8b252d529e 100644 --- a/var/spack/repos/builtin/packages/xkbprint/package.py +++ b/var/spack/repos/builtin/packages/xkbprint/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xkbutils/package.py b/var/spack/repos/builtin/packages/xkbutils/package.py index 45d966f26ea..4bb964a95b6 100644 --- a/var/spack/repos/builtin/packages/xkbutils/package.py +++ b/var/spack/repos/builtin/packages/xkbutils/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xkeyboard-config/package.py b/var/spack/repos/builtin/packages/xkeyboard-config/package.py index e1f2753275a..3a0eb8f516e 100644 --- a/var/spack/repos/builtin/packages/xkeyboard-config/package.py +++ b/var/spack/repos/builtin/packages/xkeyboard-config/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xkill/package.py b/var/spack/repos/builtin/packages/xkill/package.py index 6afbf5a6805..bdc2f101190 100644 --- a/var/spack/repos/builtin/packages/xkill/package.py +++ b/var/spack/repos/builtin/packages/xkill/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xload/package.py b/var/spack/repos/builtin/packages/xload/package.py index b71986db1ae..3074f272caa 100644 --- a/var/spack/repos/builtin/packages/xload/package.py +++ b/var/spack/repos/builtin/packages/xload/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xlogo/package.py b/var/spack/repos/builtin/packages/xlogo/package.py index 6522d4f514d..fca0cfb00b0 100644 --- a/var/spack/repos/builtin/packages/xlogo/package.py +++ b/var/spack/repos/builtin/packages/xlogo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xlsatoms/package.py b/var/spack/repos/builtin/packages/xlsatoms/package.py index a1a8257dc12..6332605bf23 100644 --- a/var/spack/repos/builtin/packages/xlsatoms/package.py +++ b/var/spack/repos/builtin/packages/xlsatoms/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xlsclients/package.py b/var/spack/repos/builtin/packages/xlsclients/package.py index 124c876a0a6..dcdec448ed2 100644 --- a/var/spack/repos/builtin/packages/xlsclients/package.py +++ b/var/spack/repos/builtin/packages/xlsclients/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xlsfonts/package.py b/var/spack/repos/builtin/packages/xlsfonts/package.py index 7267692b984..942fbeb79ac 100644 --- a/var/spack/repos/builtin/packages/xlsfonts/package.py +++ b/var/spack/repos/builtin/packages/xlsfonts/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xmag/package.py b/var/spack/repos/builtin/packages/xmag/package.py index c2d135eec01..8ec5a3bb05f 100644 --- a/var/spack/repos/builtin/packages/xmag/package.py +++ b/var/spack/repos/builtin/packages/xmag/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xman/package.py b/var/spack/repos/builtin/packages/xman/package.py index c59ced19a6c..3a3a6ab7d95 100644 --- a/var/spack/repos/builtin/packages/xman/package.py +++ b/var/spack/repos/builtin/packages/xman/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xmessage/package.py b/var/spack/repos/builtin/packages/xmessage/package.py index 55461933bcc..b8fe904cedb 100644 --- a/var/spack/repos/builtin/packages/xmessage/package.py +++ b/var/spack/repos/builtin/packages/xmessage/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xmh/package.py b/var/spack/repos/builtin/packages/xmh/package.py index 35798f8846d..a045941b3e0 100644 --- a/var/spack/repos/builtin/packages/xmh/package.py +++ b/var/spack/repos/builtin/packages/xmh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xmlto/package.py b/var/spack/repos/builtin/packages/xmlto/package.py index de4a8985b07..8cb95a962f3 100644 --- a/var/spack/repos/builtin/packages/xmlto/package.py +++ b/var/spack/repos/builtin/packages/xmlto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xmodmap/package.py b/var/spack/repos/builtin/packages/xmodmap/package.py index 727cebc5634..5091a7df747 100644 --- a/var/spack/repos/builtin/packages/xmodmap/package.py +++ b/var/spack/repos/builtin/packages/xmodmap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xmore/package.py b/var/spack/repos/builtin/packages/xmore/package.py index e1da468d3eb..06183f113cf 100644 --- a/var/spack/repos/builtin/packages/xmore/package.py +++ b/var/spack/repos/builtin/packages/xmore/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xorg-cf-files/package.py b/var/spack/repos/builtin/packages/xorg-cf-files/package.py index 3fd9cb45b93..5b63ee07238 100644 --- a/var/spack/repos/builtin/packages/xorg-cf-files/package.py +++ b/var/spack/repos/builtin/packages/xorg-cf-files/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xorg-docs/package.py b/var/spack/repos/builtin/packages/xorg-docs/package.py index 1f81642c8b1..cfd336760dd 100644 --- a/var/spack/repos/builtin/packages/xorg-docs/package.py +++ b/var/spack/repos/builtin/packages/xorg-docs/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xorg-gtest/package.py b/var/spack/repos/builtin/packages/xorg-gtest/package.py index 2774027e3f4..4e666799294 100644 --- a/var/spack/repos/builtin/packages/xorg-gtest/package.py +++ b/var/spack/repos/builtin/packages/xorg-gtest/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xorg-server/package.py b/var/spack/repos/builtin/packages/xorg-server/package.py index 8c5f1473e90..c6f1291a7c5 100644 --- a/var/spack/repos/builtin/packages/xorg-server/package.py +++ b/var/spack/repos/builtin/packages/xorg-server/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py index 4c8f4d0ec12..b71bb26284e 100644 --- a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py +++ b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xphelloworld/package.py b/var/spack/repos/builtin/packages/xphelloworld/package.py index 61a158cc413..29d1dba9e8a 100644 --- a/var/spack/repos/builtin/packages/xphelloworld/package.py +++ b/var/spack/repos/builtin/packages/xphelloworld/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xplor-nih/package.py b/var/spack/repos/builtin/packages/xplor-nih/package.py index 4ae0ea519f8..d58a5257ba1 100644 --- a/var/spack/repos/builtin/packages/xplor-nih/package.py +++ b/var/spack/repos/builtin/packages/xplor-nih/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xplsprinters/package.py b/var/spack/repos/builtin/packages/xplsprinters/package.py index 02bddf08775..e524c1affec 100644 --- a/var/spack/repos/builtin/packages/xplsprinters/package.py +++ b/var/spack/repos/builtin/packages/xplsprinters/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xpr/package.py b/var/spack/repos/builtin/packages/xpr/package.py index 49606476702..3b79ca2f27c 100644 --- a/var/spack/repos/builtin/packages/xpr/package.py +++ b/var/spack/repos/builtin/packages/xpr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py index 3a0efd00c40..6d4e5f6ba4e 100644 --- a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py +++ b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xprop/package.py b/var/spack/repos/builtin/packages/xprop/package.py index 0cd9b92040e..8ba775dbf91 100644 --- a/var/spack/repos/builtin/packages/xprop/package.py +++ b/var/spack/repos/builtin/packages/xprop/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xproto/package.py b/var/spack/repos/builtin/packages/xproto/package.py index 2bb1df326cf..121e4b465bd 100644 --- a/var/spack/repos/builtin/packages/xproto/package.py +++ b/var/spack/repos/builtin/packages/xproto/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py index f4eb75ca28c..d88c892c280 100644 --- a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py +++ b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xqilla/package.py b/var/spack/repos/builtin/packages/xqilla/package.py index 5cb346cc1d8..30970706046 100644 --- a/var/spack/repos/builtin/packages/xqilla/package.py +++ b/var/spack/repos/builtin/packages/xqilla/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xrandr/package.py b/var/spack/repos/builtin/packages/xrandr/package.py index c33f0a227f8..35bb5079bef 100644 --- a/var/spack/repos/builtin/packages/xrandr/package.py +++ b/var/spack/repos/builtin/packages/xrandr/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xrdb/package.py b/var/spack/repos/builtin/packages/xrdb/package.py index 3c6452476fc..39daff0be22 100644 --- a/var/spack/repos/builtin/packages/xrdb/package.py +++ b/var/spack/repos/builtin/packages/xrdb/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xrefresh/package.py b/var/spack/repos/builtin/packages/xrefresh/package.py index ef929f325f8..bddc69f8552 100644 --- a/var/spack/repos/builtin/packages/xrefresh/package.py +++ b/var/spack/repos/builtin/packages/xrefresh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xrootd/package.py b/var/spack/repos/builtin/packages/xrootd/package.py index 6388c006a7c..684a4ce8451 100644 --- a/var/spack/repos/builtin/packages/xrootd/package.py +++ b/var/spack/repos/builtin/packages/xrootd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xrx/package.py b/var/spack/repos/builtin/packages/xrx/package.py index af832f80a03..e83ba15a16e 100644 --- a/var/spack/repos/builtin/packages/xrx/package.py +++ b/var/spack/repos/builtin/packages/xrx/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xsbench/package.py b/var/spack/repos/builtin/packages/xsbench/package.py index db84ec5b3d2..e38f2d9a189 100644 --- a/var/spack/repos/builtin/packages/xsbench/package.py +++ b/var/spack/repos/builtin/packages/xsbench/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xscope/package.py b/var/spack/repos/builtin/packages/xscope/package.py index 7b3b9104159..a1e55ff60eb 100644 --- a/var/spack/repos/builtin/packages/xscope/package.py +++ b/var/spack/repos/builtin/packages/xscope/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py index 4d27b5a79f2..98b628a56be 100644 --- a/var/spack/repos/builtin/packages/xsdk/package.py +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xsdktrilinos/package.py b/var/spack/repos/builtin/packages/xsdktrilinos/package.py index cf3d425313c..dd17611115a 100644 --- a/var/spack/repos/builtin/packages/xsdktrilinos/package.py +++ b/var/spack/repos/builtin/packages/xsdktrilinos/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xset/package.py b/var/spack/repos/builtin/packages/xset/package.py index e0d8b9fdee9..23f8f499ac4 100644 --- a/var/spack/repos/builtin/packages/xset/package.py +++ b/var/spack/repos/builtin/packages/xset/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xsetmode/package.py b/var/spack/repos/builtin/packages/xsetmode/package.py index 36e4c520214..fe3d3b740dd 100644 --- a/var/spack/repos/builtin/packages/xsetmode/package.py +++ b/var/spack/repos/builtin/packages/xsetmode/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xsetpointer/package.py b/var/spack/repos/builtin/packages/xsetpointer/package.py index d2e27810a5c..64f77c146c5 100644 --- a/var/spack/repos/builtin/packages/xsetpointer/package.py +++ b/var/spack/repos/builtin/packages/xsetpointer/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xsetroot/package.py b/var/spack/repos/builtin/packages/xsetroot/package.py index 1a9bcd141e4..3ac117dd6d0 100644 --- a/var/spack/repos/builtin/packages/xsetroot/package.py +++ b/var/spack/repos/builtin/packages/xsetroot/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xsm/package.py b/var/spack/repos/builtin/packages/xsm/package.py index eb22f4ff646..d5e28969c99 100644 --- a/var/spack/repos/builtin/packages/xsm/package.py +++ b/var/spack/repos/builtin/packages/xsm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xstdcmap/package.py b/var/spack/repos/builtin/packages/xstdcmap/package.py index b2b1592b84b..78a907ea3ad 100644 --- a/var/spack/repos/builtin/packages/xstdcmap/package.py +++ b/var/spack/repos/builtin/packages/xstdcmap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xterm/package.py b/var/spack/repos/builtin/packages/xterm/package.py index 70208d05c86..632db2cf305 100644 --- a/var/spack/repos/builtin/packages/xterm/package.py +++ b/var/spack/repos/builtin/packages/xterm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xtrans/package.py b/var/spack/repos/builtin/packages/xtrans/package.py index c2b032564a7..866ab021ce2 100644 --- a/var/spack/repos/builtin/packages/xtrans/package.py +++ b/var/spack/repos/builtin/packages/xtrans/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xtrap/package.py b/var/spack/repos/builtin/packages/xtrap/package.py index 499d56f48e5..dd3ec02bd89 100644 --- a/var/spack/repos/builtin/packages/xtrap/package.py +++ b/var/spack/repos/builtin/packages/xtrap/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xts/package.py b/var/spack/repos/builtin/packages/xts/package.py index 727991b78dd..5a2c728dec5 100644 --- a/var/spack/repos/builtin/packages/xts/package.py +++ b/var/spack/repos/builtin/packages/xts/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xvidtune/package.py b/var/spack/repos/builtin/packages/xvidtune/package.py index fd3cdb7f8c4..d3cf88f854d 100644 --- a/var/spack/repos/builtin/packages/xvidtune/package.py +++ b/var/spack/repos/builtin/packages/xvidtune/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xvinfo/package.py b/var/spack/repos/builtin/packages/xvinfo/package.py index 04efb4549cc..e1f503659e2 100644 --- a/var/spack/repos/builtin/packages/xvinfo/package.py +++ b/var/spack/repos/builtin/packages/xvinfo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xwd/package.py b/var/spack/repos/builtin/packages/xwd/package.py index a93e54fb93a..9a69c18beec 100644 --- a/var/spack/repos/builtin/packages/xwd/package.py +++ b/var/spack/repos/builtin/packages/xwd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xwininfo/package.py b/var/spack/repos/builtin/packages/xwininfo/package.py index 4fe2e5b8c3f..7aa923600e9 100644 --- a/var/spack/repos/builtin/packages/xwininfo/package.py +++ b/var/spack/repos/builtin/packages/xwininfo/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xwud/package.py b/var/spack/repos/builtin/packages/xwud/package.py index 2635f9d1712..5fd5bc55de5 100644 --- a/var/spack/repos/builtin/packages/xwud/package.py +++ b/var/spack/repos/builtin/packages/xwud/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/xz/package.py b/var/spack/repos/builtin/packages/xz/package.py index 9da2eac2014..b92fe6687d6 100644 --- a/var/spack/repos/builtin/packages/xz/package.py +++ b/var/spack/repos/builtin/packages/xz/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py index 59228ec4cb4..28a916b4cae 100644 --- a/var/spack/repos/builtin/packages/yaml-cpp/package.py +++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/yasm/package.py b/var/spack/repos/builtin/packages/yasm/package.py index 07173cc0fb0..d971a7b9a75 100644 --- a/var/spack/repos/builtin/packages/yasm/package.py +++ b/var/spack/repos/builtin/packages/yasm/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/yorick/package.py b/var/spack/repos/builtin/packages/yorick/package.py index 6facdfd9fb6..d4df477c4a1 100644 --- a/var/spack/repos/builtin/packages/yorick/package.py +++ b/var/spack/repos/builtin/packages/yorick/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/z3/package.py b/var/spack/repos/builtin/packages/z3/package.py index d6cd94a53a1..358fe5a3345 100644 --- a/var/spack/repos/builtin/packages/z3/package.py +++ b/var/spack/repos/builtin/packages/z3/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/zeromq/package.py b/var/spack/repos/builtin/packages/zeromq/package.py index 945459b9481..237b63f7b2b 100644 --- a/var/spack/repos/builtin/packages/zeromq/package.py +++ b/var/spack/repos/builtin/packages/zeromq/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/zfp/package.py b/var/spack/repos/builtin/packages/zfp/package.py index b5e3c7c2bcb..b815612c54d 100644 --- a/var/spack/repos/builtin/packages/zfp/package.py +++ b/var/spack/repos/builtin/packages/zfp/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/zip/package.py b/var/spack/repos/builtin/packages/zip/package.py index 3787df320a3..98cbba0c35f 100644 --- a/var/spack/repos/builtin/packages/zip/package.py +++ b/var/spack/repos/builtin/packages/zip/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 30fcef95e18..11ae411e91b 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py index 6404cadbe13..4f81efbc6c1 100644 --- a/var/spack/repos/builtin/packages/zoltan/package.py +++ b/var/spack/repos/builtin/packages/zoltan/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py index 72254183632..d18200b4ade 100644 --- a/var/spack/repos/builtin/packages/zsh/package.py +++ b/var/spack/repos/builtin/packages/zsh/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. diff --git a/var/spack/repos/builtin/packages/zstd/package.py b/var/spack/repos/builtin/packages/zstd/package.py index 0551ff81631..3e8c6e7c390 100644 --- a/var/spack/repos/builtin/packages/zstd/package.py +++ b/var/spack/repos/builtin/packages/zstd/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. From 2e0fc391736d3cc4c382d3fe4eaa5be692ceb717 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Thu, 7 Sep 2017 12:34:34 -0500 Subject: [PATCH 1609/2394] mlhka: new package (#5231) * mlhka: new package --- .../repos/builtin/packages/mlhka/package.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mlhka/package.py diff --git a/var/spack/repos/builtin/packages/mlhka/package.py b/var/spack/repos/builtin/packages/mlhka/package.py new file mode 100644 index 00000000000..f9b8a46a740 --- /dev/null +++ b/var/spack/repos/builtin/packages/mlhka/package.py @@ -0,0 +1,42 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Mlhka(Package): + """A maximum likelihood ratio test of natural selection, using polymorphism + and divergence data.""" + + homepage = "https://wright.eeb.utoronto.ca" + url = "https://github.com/rossibarra/MLHKA" + + version('2.1', git='https://github.com/rossibarra/MLHKA.git', + commit='e735ddd39073af58da21b00b27dea203736e5467') + + def install(self, spec, prefix): + cxx = which('c++') + cxx('MLHKA_version{0}.cpp'.format(self.version), '-o', 'MLHKA') + mkdirp(prefix.bin) + install('MLHKA', prefix.bin) From 4f57c9651a5f4605d4e3668298bd20307181bfb5 Mon Sep 17 00:00:00 2001 From: Rob Latham Date: Thu, 7 Sep 2017 22:07:03 -0500 Subject: [PATCH 1610/2394] dump environment in sourceable form (#5301) First, quote the environment variable values. Second, export the variables. sorry, this is bourn-shell syntax. Happy to consider a shell-independent way to do this, but spack is already using sh-like "env=value" --- lib/spack/spack/util/environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spack/spack/util/environment.py b/lib/spack/spack/util/environment.py index 276f8d63f37..38576d6e9d3 100644 --- a/lib/spack/spack/util/environment.py +++ b/lib/spack/spack/util/environment.py @@ -72,4 +72,4 @@ def dump_environment(path): """Dump the current environment out to a file.""" with open(path, 'w') as env_file: for key, val in sorted(os.environ.items()): - env_file.write("%s=%s\n" % (key, val)) + env_file.write('export %s="%s"\n' % (key, val)) From 51828dd982f2642b3f52512aea4fb2c02395d378 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Fri, 8 Sep 2017 12:15:06 -0500 Subject: [PATCH 1611/2394] Bootstrap environment-modules Renames the existing bootstrap command to 'clone'. Repurposes 'spack bootstrap' to install packages that are useful to the operation of Spack (for now this is just environment-modules). For bash and ksh users running setup-env.sh, if a Spack-installed instance of environment-modules is detected and environment modules and dotkit are not externally available, Spack will define the 'module' command in the user's shell to use the environment-modules built by Spack. --- lib/spack/docs/getting_started.rst | 105 +++++++++------ lib/spack/docs/module_file_support.rst | 12 +- lib/spack/spack/cmd/bootstrap.py | 121 ++++++++---------- lib/spack/spack/cmd/clone.py | 107 ++++++++++++++++ share/spack/setup-env.sh | 57 ++++++++- .../packages/environment-modules/package.py | 5 + 6 files changed, 292 insertions(+), 115 deletions(-) create mode 100644 lib/spack/spack/cmd/clone.py diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index ef0f25cb042..ffa9bf24144 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -52,7 +52,7 @@ For a richer experience, use Spack's shell support: .. code-block:: console - # For bash users + # For bash/zsh users $ export SPACK_ROOT=/path/to/spack $ . $SPACK_ROOT/share/spack/setup-env.sh @@ -60,10 +60,15 @@ For a richer experience, use Spack's shell support: $ setenv SPACK_ROOT /path/to/spack $ source $SPACK_ROOT/share/spack/setup-env.csh + This automatically adds Spack to your ``PATH`` and allows the ``spack`` -command to :ref:`load environment modules ` and execute +command to be used to execute spack :ref:`commands ` and :ref:`useful packaging commands `. +If :ref:`environment-modules or dotkit ` is +installed and available, the ``spack`` command can also load and unload +:ref:`modules `. + ^^^^^^^^^^^^^^^^^ Clean Environment ^^^^^^^^^^^^^^^^^ @@ -94,12 +99,12 @@ Optional: Alternate Prefix ^^^^^^^^^^^^^^^^^^^^^^^^^^ You may want to run Spack out of a prefix other than the git repository -you cloned. The ``spack bootstrap`` command provides this +you cloned. The ``spack clone`` command provides this functionality. To install spack in a new directory, simply type: .. code-block:: console - $ spack bootstrap /my/favorite/prefix + $ spack clone /my/favorite/prefix This will install a new spack script in ``/my/favorite/prefix/bin``, which you can use just like you would the regular spack script. Each @@ -849,6 +854,10 @@ well. They can generally be activated as in the ``curl`` example above; or some systems might already have an appropriate hand-built environment module that may be loaded. Either way works. +If you find that you are missing some of these programs, ``spack`` can +build some of them for you with ``spack bootstrap``. Currently supported +programs are ``environment-modules``. + A few notes on specific programs in this list: """""""""""""""""""""""""" @@ -885,52 +894,72 @@ Environment Modules In order to use Spack's generated environment modules, you must have installed one of *Environment Modules* or *Lmod*. On many Linux distributions, this can be installed from the vendor's repository. For -example: ``yum install environment-modules`` (Fedora/RHEL/CentOS). If -your Linux distribution does not have Environment Modules, you can get it -with Spack: +example: ``yum install environment-modules`` (Fedora/RHEL/CentOS). If +your Linux distribution does not have Environment Modules, Spack can +build it for you! -#. Consider using system tcl (as long as your system has Tcl version 8.0 or later): +What follows are three steps describing how to install and use environment-modules with spack. - #) Identify its location using ``which tclsh`` - #) Identify its version using ``echo 'puts $tcl_version;exit 0' | tclsh`` - #) Add to ``~/.spack/packages.yaml`` and modify as appropriate: +#. Install ``environment-modules``. - .. code-block:: yaml + * ``spack bootstrap`` will build ``environment-modules`` for you (and may build + other packages that are useful to the operation of Spack) - packages: - tcl: - paths: - tcl@8.5: /usr - buildable: False + * Install ``environment-modules`` using ``spack install`` with + ``spack install environment-modules~X`` (The ``~X`` variant builds without Xorg + dependencies, but ``environment-modules`` works fine too.) -#. Install with: +#. Add ``modulecmd`` to ``PATH`` and create a ``module`` command. + + * If you are using ``bash`` or ``ksh``, Spack can currently do this for you as well. + After installing ``environment-modules`` following the step + above, source Spack's shell integration script. This will automatically + detect the lack of ``modulecmd`` and ``module``, and use the installed + ``environment-modules`` from ``spack bootstrap`` or ``spack install``. + + .. code-block:: console + + # For bash/zsh users + $ export SPACK_ROOT=/path/to/spack + $ . $SPACK_ROOT/share/spack/setup-env.sh + + + * If you prefer to do it manually, you can activate with the following + script (or apply the updates to your ``.bashrc`` file manually): + + .. code-block:: sh + + TMP=`tempfile` + echo >$TMP + MODULE_HOME=`spack location --install-dir environment-modules` + MODULE_VERSION=`ls -1 $MODULE_HOME/Modules | head -1` + ${MODULE_HOME}/Modules/${MODULE_VERSION}/bin/add.modules <$TMP + cp .bashrc $TMP + echo "MODULE_VERSION=${MODULE_VERSION}" > .bashrc + cat $TMP >>.bashrc + + This is added to your ``.bashrc`` (or similar) files, enabling Environment + Modules when you log in. + +#. Test that the ``module`` command is found with: .. code-block:: console - $ spack install environment-modules + $ module avail -#. Activate with the following script (or apply the updates to your - ``.bashrc`` file manually): - .. code-block:: sh +If ``tcl`` 8.0 or later is installed on your system, you can prevent +spack from rebuilding ``tcl`` as part of the ``environment-modules`` dependency +stack by adding the following to your ``~/.spack/packages.yaml`` replacing +version 8.5 with whatever version is installed on your system: - TMP=`tempfile` - echo >$TMP - MODULE_HOME=`spack location --install-dir environment-modules` - MODULE_VERSION=`ls -1 $MODULE_HOME/Modules | head -1` - ${MODULE_HOME}/Modules/${MODULE_VERSION}/bin/add.modules <$TMP - cp .bashrc $TMP - echo "MODULE_VERSION=${MODULE_VERSION}" > .bashrc - cat $TMP >>.bashrc - -This adds to your ``.bashrc`` (or similar) files, enabling Environment -Modules when you log in. Re-load your .bashrc (or log out and in -again), and then test that the ``module`` command is found with: - -.. code-block:: console - - $ module avail + .. code-block:: yaml + packages: + tcl: + paths: + tcl@8.5: /usr + buildable: False ^^^^^^^^^^^^^^^^^ Package Utilities diff --git a/lib/spack/docs/module_file_support.rst b/lib/spack/docs/module_file_support.rst index 93c2ee33c65..d8f5e561a8e 100644 --- a/lib/spack/docs/module_file_support.rst +++ b/lib/spack/docs/module_file_support.rst @@ -44,6 +44,7 @@ For ``csh`` and ``tcsh`` instead: $ source $SPACK_ROOT/share/spack/setup-env.csh +When ``bash`` and ``ksh`` users update their environment with ``setup-env.sh``, it will check for spack-installed environment modules and add the ``module`` command to their environment; This only occurs if the module command is not already available. You can install ``environment-modules`` with ``spack bootstrap`` as described in :ref:`InstallEnvironmentModules`. .. note:: You can put the source line in your ``.bashrc`` or ``.cshrc`` to @@ -54,10 +55,11 @@ For ``csh`` and ``tcsh`` instead: Using module files via Spack ---------------------------- -If you have shell support enabled you should be able to run either -``module avail`` or ``use -l spack`` to see what module/dotkit files have -been installed. Here is sample output of those programs, showing lots -of installed packages. +If you have installed a supported module system either manually or through +``spack bootstrap`` and have enabled shell support, you should be able to +run either ``module avail`` or ``use -l spack`` to see what module/dotkit +files have been installed. Here is sample output of those programs, +showing lots of installed packages. .. code-block:: console @@ -210,7 +212,7 @@ Scripts to load modules recursively may be made with the command: $ spack module loads --dependencies -An equivalent alternative is: +An equivalent alternative using `process substitution `_ is: .. code-block :: console diff --git a/lib/spack/spack/cmd/bootstrap.py b/lib/spack/spack/cmd/bootstrap.py index b0550644f83..cd0a21b9e00 100644 --- a/lib/spack/spack/cmd/bootstrap.py +++ b/lib/spack/spack/cmd/bootstrap.py @@ -22,86 +22,69 @@ # 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 os - import llnl.util.tty as tty -from llnl.util.filesystem import join_path, mkdirp - import spack -from spack.util.executable import ProcessError, which +import spack.cmd +import spack.cmd.common.arguments as arguments -_SPACK_UPSTREAM = 'https://github.com/llnl/spack' - -description = "create a new installation of spack in another prefix" +description = "Bootstrap packages needed for spack to run smoothly" section = "admin" level = "long" def setup_parser(subparser): subparser.add_argument( - '-r', '--remote', action='store', dest='remote', - help="name of the remote to bootstrap from", default='origin') + '-j', '--jobs', action='store', type=int, + help="explicitly set number of make jobs. default is #cpus") subparser.add_argument( - 'prefix', - help="names of prefix where we should install spack") + '--keep-prefix', action='store_true', dest='keep_prefix', + help="don't remove the install prefix if installation fails") + subparser.add_argument( + '--keep-stage', action='store_true', dest='keep_stage', + help="don't remove the build stage if installation succeeds") + subparser.add_argument( + '-n', '--no-checksum', action='store_true', dest='no_checksum', + help="do not check packages against checksum") + subparser.add_argument( + '-v', '--verbose', action='store_true', dest='verbose', + help="display verbose build output while installing") + + cd_group = subparser.add_mutually_exclusive_group() + arguments.add_common_arguments(cd_group, ['clean', 'dirty']) + + subparser.add_argument( + '--run-tests', action='store_true', dest='run_tests', + help="run package level tests during installation" + ) -def get_origin_info(remote): - git_dir = join_path(spack.prefix, '.git') - git = which('git', required=True) - try: - branch = git('symbolic-ref', '--short', 'HEAD', output=str) - except ProcessError: - branch = 'develop' - tty.warn('No branch found; using default branch: %s' % branch) - if remote == 'origin' and \ - branch not in ('master', 'develop'): - branch = 'develop' - tty.warn('Unknown branch found; using default branch: %s' % branch) - try: - origin_url = git( - '--git-dir=%s' % git_dir, - 'config', '--get', 'remote.%s.url' % remote, - output=str) - except ProcessError: - origin_url = _SPACK_UPSTREAM - tty.warn('No git repository found; ' - 'using default upstream URL: %s' % origin_url) - return (origin_url.strip(), branch.strip()) +def bootstrap(parser, args, **kwargs): + kwargs.update({ + 'keep_prefix': args.keep_prefix, + 'keep_stage': args.keep_stage, + 'install_deps': 'dependencies', + 'make_jobs': args.jobs, + 'run_tests': args.run_tests, + 'verbose': args.verbose, + 'dirty': args.dirty + }) + # Define requirement dictionary defining general specs which need + # to be satisfied, and the specs to install when the general spec + # isn't satisfied. + requirement_dict = {'environment-modules': 'environment-modules~X'} -def bootstrap(parser, args): - origin_url, branch = get_origin_info(args.remote) - prefix = args.prefix - - tty.msg("Fetching spack from '%s': %s" % (args.remote, origin_url)) - - if os.path.isfile(prefix): - tty.die("There is already a file at %s" % prefix) - - mkdirp(prefix) - - if os.path.exists(join_path(prefix, '.git')): - tty.die("There already seems to be a git repository in %s" % prefix) - - files_in_the_way = os.listdir(prefix) - if files_in_the_way: - tty.die("There are already files there! " - "Delete these files before boostrapping spack.", - *files_in_the_way) - - tty.msg("Installing:", - "%s/bin/spack" % prefix, - "%s/lib/spack/..." % prefix) - - os.chdir(prefix) - git = which('git', required=True) - git('init', '--shared', '-q') - git('remote', 'add', 'origin', origin_url) - git('fetch', 'origin', '%s:refs/remotes/origin/%s' % (branch, branch), - '-n', '-q') - git('reset', '--hard', 'origin/%s' % branch, '-q') - git('checkout', '-B', branch, 'origin/%s' % branch, '-q') - - tty.msg("Successfully created a new spack in %s" % prefix, - "Run %s/bin/spack to use this installation." % prefix) + for requirement in requirement_dict: + installed_specs = spack.store.db.query(requirement) + if(len(installed_specs) > 0): + tty.msg("Requirement %s is satisfied with installed " + "package %s" % (requirement, installed_specs[0])) + else: + # Install requirement + spec_to_install = spack.Spec(requirement_dict[requirement]) + spec_to_install.concretize() + tty.msg("Installing %s to satisfy requirement for %s" % + (spec_to_install, requirement)) + kwargs['explicit'] = True + package = spack.repo.get(spec_to_install) + package.do_install(**kwargs) diff --git a/lib/spack/spack/cmd/clone.py b/lib/spack/spack/cmd/clone.py new file mode 100644 index 00000000000..19201b1f868 --- /dev/null +++ b/lib/spack/spack/cmd/clone.py @@ -0,0 +1,107 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# 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 os + +import llnl.util.tty as tty +from llnl.util.filesystem import join_path, mkdirp + +import spack +from spack.util.executable import ProcessError, which + +_SPACK_UPSTREAM = 'https://github.com/llnl/spack' + +description = "create a new installation of spack in another prefix" +section = "admin" +level = "long" + + +def setup_parser(subparser): + subparser.add_argument( + '-r', '--remote', action='store', dest='remote', + help="name of the remote to clone from", default='origin') + subparser.add_argument( + 'prefix', + help="names of prefix where we should install spack") + + +def get_origin_info(remote): + git_dir = join_path(spack.prefix, '.git') + git = which('git', required=True) + try: + branch = git('symbolic-ref', '--short', 'HEAD', output=str) + except ProcessError: + branch = 'develop' + tty.warn('No branch found; using default branch: %s' % branch) + if remote == 'origin' and \ + branch not in ('master', 'develop'): + branch = 'develop' + tty.warn('Unknown branch found; using default branch: %s' % branch) + try: + origin_url = git( + '--git-dir=%s' % git_dir, + 'config', '--get', 'remote.%s.url' % remote, + output=str) + except ProcessError: + origin_url = _SPACK_UPSTREAM + tty.warn('No git repository found; ' + 'using default upstream URL: %s' % origin_url) + return (origin_url.strip(), branch.strip()) + + +def clone(parser, args): + origin_url, branch = get_origin_info(args.remote) + prefix = args.prefix + + tty.msg("Fetching spack from '%s': %s" % (args.remote, origin_url)) + + if os.path.isfile(prefix): + tty.die("There is already a file at %s" % prefix) + + mkdirp(prefix) + + if os.path.exists(join_path(prefix, '.git')): + tty.die("There already seems to be a git repository in %s" % prefix) + + files_in_the_way = os.listdir(prefix) + if files_in_the_way: + tty.die("There are already files there! " + "Delete these files before boostrapping spack.", + *files_in_the_way) + + tty.msg("Installing:", + "%s/bin/spack" % prefix, + "%s/lib/spack/..." % prefix) + + os.chdir(prefix) + git = which('git', required=True) + git('init', '--shared', '-q') + git('remote', 'add', 'origin', origin_url) + git('fetch', 'origin', '%s:refs/remotes/origin/%s' % (branch, branch), + '-n', '-q') + git('reset', '--hard', 'origin/%s' % branch, '-q') + git('checkout', '-B', branch, 'origin/%s' % branch, '-q') + + tty.msg("Successfully created a new spack in %s" % prefix, + "Run %s/bin/spack to use this installation." % prefix) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index c9a3858621f..958689cab49 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -27,7 +27,9 @@ # # This file is part of Spack and sets up the spack environment for # bash and zsh. This includes dotkit support, module support, and -# it also puts spack in your path. Source it like this: +# it also puts spack in your path. The script also checks that +# at least module support exists, and provides suggestions if it +# doesn't. Source it like this: # # . /path/to/spack/share/spack/setup-env.sh # @@ -189,19 +191,68 @@ if [ -z "$_sp_source_file" ]; then fi # -# Set up modules and dotkit search paths in the user environment +# Find root directory and add bin to path. # _sp_share_dir=$(cd "$(dirname $_sp_source_file)" && pwd) _sp_prefix=$(cd "$(dirname $(dirname $_sp_share_dir))" && pwd) _spack_pathadd PATH "${_sp_prefix%/}/bin" +export SPACK_ROOT=${_sp_prefix} +# +# Determine which shell is being used +# +function _spack_determine_shell() { + ps -p $$ | tail -n 1 | awk '{print $4}' | xargs basename +} +export SPACK_SHELL=$(_spack_determine_shell) + +# +# Check whether a shell function of the given name is defined +# +function _spack_fn_exists() { + type $1 2>&1 | grep -q 'shell function' +} + +need_module="no" +if [ ! $(_spack_fn_exists use) ] && [ ! $(_spack_fn_exists module) ]; then + need_module="yes" +fi; + +# +# build and make available environment-modules +# +if [ "${need_module}" = "yes" ]; then + #check if environment-modules~X is installed + module_prefix="$(spack location -i "environment-modules" 2>&1 || echo "not_installed")" + module_prefix=$(echo ${module_prefix} | tail -n 1) + if [ "${module_prefix}" != "not_installed" ]; then + #activate it! + export MODULE_PREFIX=${module_prefix} + _spack_pathadd PATH "${MODULE_PREFIX}/Modules/bin" + module() { eval `${MODULE_PREFIX}/Modules/bin/modulecmd ${SPACK_SHELL} $*`; } + echo "INFO: Using spack managed module system." + else + echo "WARNING: A method for managing modules does not currently exist." + echo "" + echo "To resolve this you may either:" + echo "1. Allow spack to handle this by running 'spack boostrap'" + echo " and sourcing this script again." + echo "2. Install and activate a supported module managment engine manually" + echo " Supported engines include: environment-modules and lmod" + fi; +else + echo "INFO: Using system available module system." +fi; + +# +# Set up modules and dotkit search paths in the user environment +# _sp_sys_type=$(spack-python -c 'print(spack.architecture.sys_type())') _sp_dotkit_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots', {}).get('dotkit')))") _sp_tcl_root=$(spack-python -c "print(spack.util.path.canonicalize_path(spack.config.get_config('config').get('module_roots', {}).get('tcl')))") _spack_pathadd DK_NODE "${_sp_dotkit_root%/}/$_sp_sys_type" _spack_pathadd MODULEPATH "${_sp_tcl_root%/}/$_sp_sys_type" -# # Add programmable tab completion for Bash # if [ -n "${BASH_VERSION:-}" ]; then diff --git a/var/spack/repos/builtin/packages/environment-modules/package.py b/var/spack/repos/builtin/packages/environment-modules/package.py index 27744026056..fa0ea90fcf8 100644 --- a/var/spack/repos/builtin/packages/environment-modules/package.py +++ b/var/spack/repos/builtin/packages/environment-modules/package.py @@ -35,6 +35,8 @@ class EnvironmentModules(Package): version('3.2.10', '8b097fdcb90c514d7540bb55a3cb90fb') + variant('X', default=True, description='Build with X functionality') + # Dependencies: depends_on('tcl', type=('build', 'link', 'run')) @@ -75,6 +77,9 @@ def install(self, spec, prefix): 'CPPFLAGS=' + ' '.join(cpp_flags) ] + if '~X' in spec: + config_args = ['--without-x'] + config_args + configure(*config_args) make() make('install') From 2eb8db1dd2e8da010974a48c024538930a48ea94 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Sat, 9 Sep 2017 15:22:56 -0500 Subject: [PATCH 1612/2394] Fix name detection in HeaderList and LibraryList (#5118) * Fix name detection in HeaderList and LibraryList * Add support for CUDA header files --- lib/spack/llnl/util/filesystem.py | 60 +++++++++++++++++++++++-------- lib/spack/spack/test/file_list.py | 42 +++++++++++----------- 2 files changed, 68 insertions(+), 34 deletions(-) diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index 554ae252304..4f018536e65 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -647,19 +647,6 @@ def basenames(self): """ return list(dedupe(os.path.basename(x) for x in self.files)) - @property - def names(self): - """Stable de-duplication of file names in the list without extensions - - >>> h = HeaderList(['/dir1/a.h', '/dir2/b.h', '/dir3/a.h']) - >>> h.names - ['a', 'b'] - - Returns: - list of strings: A list of files without extensions - """ - return list(dedupe(x.split('.')[0] for x in self.basenames)) - def __getitem__(self, item): cls = type(self) if isinstance(item, numbers.Integral): @@ -709,6 +696,34 @@ def headers(self): """ return self.files + @property + def names(self): + """Stable de-duplication of header names in the list without extensions + + >>> h = HeaderList(['/dir1/a.h', '/dir2/b.h', '/dir3/a.h']) + >>> h.names + ['a', 'b'] + + Returns: + list of strings: A list of files without extensions + """ + names = [] + + for x in self.basenames: + name = x + + # Valid extensions include: ['.cuh', '.hpp', '.hh', '.h'] + for ext in ['.cuh', '.hpp', '.hh', '.h']: + i = name.rfind(ext) + if i != -1: + names.append(name[:i]) + break + else: + # No valid extension, should we still include it? + names.append(name) + + return list(dedupe(names)) + @property def include_flags(self): """Include flags @@ -833,7 +848,24 @@ def names(self): Returns: list of strings: A list of library names """ - return list(dedupe(x.split('.')[0][3:] for x in self.basenames)) + names = [] + + for x in self.basenames: + name = x + if x.startswith('lib'): + name = x[3:] + + # Valid extensions include: ['.dylib', '.so', '.a'] + for ext in ['.dylib', '.so', '.a']: + i = name.rfind(ext) + if i != -1: + names.append(name[:i]) + break + else: + # No valid extension, should we still include it? + names.append(name) + + return list(dedupe(names)) @property def search_flags(self): diff --git a/lib/spack/spack/test/file_list.py b/lib/spack/spack/test/file_list.py index 66f71b4190e..4b718813139 100644 --- a/lib/spack/spack/test/file_list.py +++ b/lib/spack/spack/test/file_list.py @@ -36,12 +36,13 @@ @pytest.fixture() def library_list(): """Returns an instance of LibraryList.""" + # Test all valid extensions: ['.a', '.dylib', '.so'] l = [ '/dir1/liblapack.a', - '/dir2/libfoo.dylib', + '/dir2/libpython3.6.dylib', # name may contain periods '/dir1/libblas.a', - '/dir3/libbar.so', - 'libbaz.so' + '/dir3/libz.so', + 'libmpi.so.20.10.1', # shared object libraries may be versioned ] return LibraryList(l) @@ -50,12 +51,13 @@ def library_list(): @pytest.fixture() def header_list(): """Returns an instance of header list""" + # Test all valid extensions: ['.h', '.hpp', '.hh', '.cuh'] h = [ '/dir1/Python.h', - '/dir2/datetime.h', - '/dir1/pyconfig.h', - '/dir3/core.h', - 'pymem.h' + '/dir2/date.time.h', + '/dir1/pyconfig.hpp', + '/dir3/core.hh', + 'pymem.cuh', ] h = HeaderList(h) h.add_macro('-DBOOST_LIB_NAME=boost_regex') @@ -72,14 +74,14 @@ def test_repr(self, library_list): def test_joined_and_str(self, library_list): s1 = library_list.joined() - expected = '/dir1/liblapack.a /dir2/libfoo.dylib /dir1/libblas.a /dir3/libbar.so libbaz.so' # noqa: E501 + expected = '/dir1/liblapack.a /dir2/libpython3.6.dylib /dir1/libblas.a /dir3/libz.so libmpi.so.20.10.1' # noqa: E501 assert s1 == expected s2 = str(library_list) assert s1 == s2 s3 = library_list.joined(';') - expected = '/dir1/liblapack.a;/dir2/libfoo.dylib;/dir1/libblas.a;/dir3/libbar.so;libbaz.so' # noqa: E501 + expected = '/dir1/liblapack.a;/dir2/libpython3.6.dylib;/dir1/libblas.a;/dir3/libz.so;libmpi.so.20.10.1' # noqa: E501 assert s3 == expected def test_flags(self, library_list): @@ -93,12 +95,12 @@ def test_flags(self, library_list): link_flags = library_list.link_flags assert '-llapack' in link_flags - assert '-lfoo' in link_flags + assert '-lpython3.6' in link_flags assert '-lblas' in link_flags - assert '-lbar' in link_flags - assert '-lbaz' in link_flags + assert '-lz' in link_flags + assert '-lmpi' in link_flags assert isinstance(link_flags, str) - assert link_flags == '-llapack -lfoo -lblas -lbar -lbaz' + assert link_flags == '-llapack -lpython3.6 -lblas -lz -lmpi' ld_flags = library_list.ld_flags assert isinstance(ld_flags, str) @@ -106,7 +108,7 @@ def test_flags(self, library_list): def test_paths_manipulation(self, library_list): names = library_list.names - assert names == ['lapack', 'foo', 'blas', 'bar', 'baz'] + assert names == ['lapack', 'python3.6', 'blas', 'z', 'mpi'] directories = library_list.directories assert directories == ['/dir1', '/dir2', '/dir3'] @@ -123,7 +125,7 @@ def test_get_item(self, library_list): def test_add(self, library_list): pylist = [ '/dir1/liblapack.a', # removed from the final list - '/dir2/libbaz.so', + '/dir2/libmpi.so', '/dir4/libnew.a' ] another = LibraryList(pylist) @@ -146,14 +148,14 @@ def test_repr(self, header_list): def test_joined_and_str(self, header_list): s1 = header_list.joined() - expected = '/dir1/Python.h /dir2/datetime.h /dir1/pyconfig.h /dir3/core.h pymem.h' # noqa: E501 + expected = '/dir1/Python.h /dir2/date.time.h /dir1/pyconfig.hpp /dir3/core.hh pymem.cuh' # noqa: E501 assert s1 == expected s2 = str(header_list) assert s1 == s2 s3 = header_list.joined(';') - expected = '/dir1/Python.h;/dir2/datetime.h;/dir1/pyconfig.h;/dir3/core.h;pymem.h' # noqa: E501 + expected = '/dir1/Python.h;/dir2/date.time.h;/dir1/pyconfig.hpp;/dir3/core.hh;pymem.cuh' # noqa: E501 assert s3 == expected def test_flags(self, header_list): @@ -176,7 +178,7 @@ def test_flags(self, header_list): def test_paths_manipulation(self, header_list): names = header_list.names - assert names == ['Python', 'datetime', 'pyconfig', 'core', 'pymem'] + assert names == ['Python', 'date.time', 'pyconfig', 'core', 'pymem'] directories = header_list.directories assert directories == ['/dir1', '/dir2', '/dir3'] @@ -193,8 +195,8 @@ def test_get_item(self, header_list): def test_add(self, header_list): pylist = [ '/dir1/Python.h', # removed from the final list - '/dir2/pyconfig.h', - '/dir4/datetime.h' + '/dir2/pyconfig.hpp', + '/dir4/date.time.h' ] another = HeaderList(pylist) h = header_list + another From 156dedac6bd948d7943732ab42e15657c5052a9c Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Sun, 10 Sep 2017 09:28:39 +0200 Subject: [PATCH 1613/2394] Fix caffe build issue with python 3 (#5324) --- var/spack/repos/builtin/packages/caffe/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index bf34ffcf83d..a47e0a04ab1 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -84,4 +84,8 @@ def cmake_args(self): '-DUSE_LEVELDB=%s' % ('+leveldb' in spec), '-DUSE_LMDB=%s' % ('+lmdb' in spec)] + if spec.satisfies('+python'): + version = spec['python'].version.up_to(1) + args.append('-Dpython_version=%s' % version) + return args From 6ce009a72a19e88b6dec21bc9a55c7372a68b35f Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Sun, 10 Sep 2017 10:06:13 +0200 Subject: [PATCH 1614/2394] Libgpuarray requires CMake 3.0 or higher (#5326) --- var/spack/repos/builtin/packages/libgpuarray/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/libgpuarray/package.py b/var/spack/repos/builtin/packages/libgpuarray/package.py index b1f4efa10a7..f92b15f0b81 100644 --- a/var/spack/repos/builtin/packages/libgpuarray/package.py +++ b/var/spack/repos/builtin/packages/libgpuarray/package.py @@ -38,5 +38,6 @@ class Libgpuarray(CMakePackage): version('0.6.0', '98a4ec1b4c8f225f0b89c18b899a000b') depends_on('cuda') + depends_on('cmake@3:', type='build') extends('python') From e0fa335df0bde84a1e688ce139ff44ad29877aca Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Sun, 10 Sep 2017 10:09:05 +0200 Subject: [PATCH 1615/2394] Paraview requires CMake version 3.3 or higher (#5317) --- var/spack/repos/builtin/packages/paraview/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 9a80dd6771b..3d7c0ab6d01 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -68,6 +68,7 @@ class Paraview(CMakePackage): # depends_on('protobuf') # version mismatches? # depends_on('sqlite') # external version not supported depends_on('zlib') + depends_on('cmake@3.3:', type='build') patch('stl-reader-pv440.patch', when='@4.4.0') From b14b02f875a4844e37139bb091c960d680931b05 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 11 Sep 2017 01:14:22 +0200 Subject: [PATCH 1616/2394] Improve caffe dependency detection with extra CMake flags (#5328) * Improve caffe dependency detection with extra CMake flags * lmdb and leveldb fix --- .../repos/builtin/packages/caffe/package.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index a47e0a04ab1..88c0f958328 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # # This file is part of Spack. @@ -82,7 +82,19 @@ def cmake_args(self): '-DBUILD_matlab=%s' % ('+matlab' in spec), '-DUSE_OPENCV=%s' % ('+opencv' in spec), '-DUSE_LEVELDB=%s' % ('+leveldb' in spec), - '-DUSE_LMDB=%s' % ('+lmdb' in spec)] + '-DUSE_LMDB=%s' % ('+lmdb' in spec), + '-DGFLAGS_ROOT_DIR=%s' % spec['gflags'].prefix, + '-DGLOG_ROOT_DIR=%s' % spec['glog'].prefix, + ] + + if spec.satisfies('^openblas'): + env['OpenBLAS_HOME'] = spec['openblas'].prefix + + if spec.satisfies('+lmdb'): + env['LMDB_DIR'] = spec['lmdb'].prefix + + if spec.satisfies('+leveldb'): + env['LEVELDB_ROOT'] = spec['leveldb'].prefix if spec.satisfies('+python'): version = spec['python'].version.up_to(1) From f5f51118b8469b1d37ad6c381394e8c497db3be3 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 11 Sep 2017 01:15:12 +0200 Subject: [PATCH 1617/2394] Fix matplotlib build issue with intel compiler (#5321) --- var/spack/repos/builtin/packages/py-matplotlib/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index 2359bb5f270..c26831fd482 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -103,6 +103,11 @@ class PyMatplotlib(PythonPackage): # depends_on('ttconv') depends_on('py-six@1.9.0:', type=('build', 'run')) + @run_before('build') + def set_cc(self): + if self.spec.satisfies('%intel'): + env['CC'] = spack_cxx + @run_after('install') def set_backend(self): spec = self.spec From 3bb243e8e240d69e80d535e4c8cc818e96f61063 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 11 Sep 2017 01:16:49 +0200 Subject: [PATCH 1618/2394] Improve PDToolkit support for different compilers (#5322) * Improve PDToolkit support for different compilers PDT dependency of TAU profiler doesn't use CC, CXX eb variables and needs command line arguments for compiler identification. If we don't pass compiler id then it uses gcc and result in link time errors while building TAU. This patch fixes it; tested with PGI and Intel compilers. --- var/spack/repos/builtin/packages/pdt/package.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py index 6895fd0578e..7e4aec0af9c 100644 --- a/var/spack/repos/builtin/packages/pdt/package.py +++ b/var/spack/repos/builtin/packages/pdt/package.py @@ -45,8 +45,21 @@ class Pdt(AutotoolsPackage): version('3.19', '5c5e1e6607086aa13bf4b1b9befc5864') version('3.18.1', 'e401534f5c476c3e77f05b7f73b6c4f2') + def patch(self): + if self.spec.satisfies('%clang'): + filter_file(r'PDT_GXX=g\+\+ ', + r'PDT_GXX=clang++ ', 'ductape/Makefile') + def configure(self, spec, prefix): - configure('-prefix={0}'.format(prefix)) + options = ['-prefix=%s' % prefix] + if self.compiler.name == 'xl': + options.append('-XLC') + elif self.compiler.name == 'intel': + options.append('-icpc') + elif self.compiler.name == 'pgi': + options.append('-pgCC') + + configure(*options) @run_after('install') def link_arch_dirs(self): From ba5b17d28ae86a627918f2e9f520355c485a4a82 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 11 Sep 2017 01:17:54 +0200 Subject: [PATCH 1619/2394] Chnage IOR to AutotoolsPackage; remove hard-coded mpicc path (#5318) --- .../repos/builtin/packages/ior/package.py | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/var/spack/repos/builtin/packages/ior/package.py b/var/spack/repos/builtin/packages/ior/package.py index 63c7db12258..8ab3f2ed7cd 100644 --- a/var/spack/repos/builtin/packages/ior/package.py +++ b/var/spack/repos/builtin/packages/ior/package.py @@ -23,10 +23,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os -class Ior(Package): +class Ior(AutotoolsPackage): """The IOR software is used for benchmarking parallel file systems using POSIX, MPI-IO, or HDF5 interfaces.""" @@ -38,17 +37,23 @@ class Ior(Package): variant('hdf5', default=False, description='support IO with HDF5 backend') variant('ncmpi', default=False, description='support IO with NCMPI backend') + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') depends_on('mpi') - depends_on('hdf5+mpi', when='+hdf5') + depends_on('hdf5+mpi', when='+hdf5') depends_on('parallel-netcdf', when='+ncmpi') - def install(self, spec, prefix): - os.system('./bootstrap') + @run_before('autoreconf') + def bootstrap(self): + Executable('./bootstrap')() - config_args = [ - 'MPICC=%s' % spec['mpi'].prefix.bin + '/mpicc', - '--prefix=%s' % prefix, - ] + def configure_args(self): + spec = self.spec + config_args = [] + + env['CC'] = spec['mpi'].mpicc if '+hdf5' in spec: config_args.append('--with-hdf5') @@ -61,7 +66,4 @@ def install(self, spec, prefix): else: config_args.append('--without-ncmpi') - configure(*config_args) - - make() - make('install') + return config_args From d5f1144798f5186be957358275157b44677b1d6d Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 11 Sep 2017 01:18:55 +0200 Subject: [PATCH 1620/2394] Fix Autotools build error due to missing m4 and MPICC/MPICXX (#5319) --- var/spack/repos/builtin/packages/adios/package.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 74e1166e961..88721a477ae 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -67,6 +67,7 @@ class Adios(AutotoolsPackage): depends_on('autoconf', type='build') depends_on('automake', type='build') + depends_on('m4', type='build') depends_on('libtool@:2.4.2', type='build') depends_on('python', type='build') @@ -121,6 +122,8 @@ def configure_args(self): extra_args.append('--enable-shared') if '+mpi' in spec: + env['MPICC'] = spec['mpi'].mpicc + env['MPICXX'] = spec['mpi'].mpicxx extra_args.append('--with-mpi=%s' % spec['mpi'].prefix) else: extra_args.append('--without-mpi') From b60e7e14b9c3406599f6a5806fe868a7403f0e7a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 10 Sep 2017 17:19:50 -0600 Subject: [PATCH 1621/2394] latte: initial commit (#5315) --- .../repos/builtin/packages/latte/package.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 var/spack/repos/builtin/packages/latte/package.py diff --git a/var/spack/repos/builtin/packages/latte/package.py b/var/spack/repos/builtin/packages/latte/package.py new file mode 100644 index 00000000000..e63c6ab98d3 --- /dev/null +++ b/var/spack/repos/builtin/packages/latte/package.py @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Latte(CMakePackage): + """Open source density functional tight binding molecular dynamics.""" + + homepage = "https://gitlab.com/exaalt/latte" + url = "https://gitlab.com/exaalt/latte/tags/v1.0" + + version('develop', git='https://gitlab.com/exaalt/latte', branch='cmake') + + depends_on("cmake@3.1:", type='build') + depends_on('blas') + depends_on('lapack') + + root_cmakelists_dir = 'cmake' + + def cmake_args(self): + options = ['-DBUILD_SHARED_LIBS=ON'] + + return options From effba3c95eae08dd704e3239887003134723173b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sun, 10 Sep 2017 17:21:38 -0600 Subject: [PATCH 1622/2394] lammps: version bump, switch to cmake (#5313) --- .../repos/builtin/packages/lammps/lib.patch | 13 ++ .../repos/builtin/packages/lammps/package.py | 191 ++++-------------- 2 files changed, 49 insertions(+), 155 deletions(-) create mode 100644 var/spack/repos/builtin/packages/lammps/lib.patch diff --git a/var/spack/repos/builtin/packages/lammps/lib.patch b/var/spack/repos/builtin/packages/lammps/lib.patch new file mode 100644 index 00000000000..5a55aafaae6 --- /dev/null +++ b/var/spack/repos/builtin/packages/lammps/lib.patch @@ -0,0 +1,13 @@ +diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt +index 6d35db75a..5987869b8 100644 +--- a/cmake/CMakeLists.txt ++++ b/cmake/CMakeLists.txt +@@ -530,7 +530,7 @@ target_link_libraries(lammps ${LAMMPS_LINK_LIBS}) + set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) + if(INSTALL_LIB) + install(TARGETS lammps LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +- install(FILES ${LAMMPS_SOURCE_DIR}/lammps.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) ++ install(FILES ${LAMMPS_SOURCE_DIR}/library.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) + elseif(BUILD_SHARED_LIBS) + message(FATAL_ERROR "Shared library has to be installed, use -DINSTALL_LIB=ON to install lammps with a library") + endif() diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index bf9293ae7c4..17147b69ab2 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -23,24 +23,23 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import os import datetime as dt -class Lammps(MakefilePackage): +class Lammps(CMakePackage): """LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel Simulator.""" homepage = "http://lammps.sandia.gov/" - url = "https://github.com/lammps/lammps/archive/stable_17Nov2016.tar.gz" + url = "https://github.com/lammps/lammps/archive/stable_01Sep2017.tar.gz" - version('2016.11.17', '8aecc58a39f9775203517c62a592d13b') + version('20170901', 'c498680052f80c6ddb880052ad369af0') def url_for_version(self, version): - vdate = dt.datetime.strptime(str(version), "%Y.%m.%d") - return "https://github.com/lammps/lammps/archive/stable_{0}.tar.gz".format( - vdate.strftime("%d%b%Y")) + vdate = dt.datetime.strptime(str(version), "%Y%m%d") + return "https://github.com/lammps/lammps/archive/patch_{0}.tar.gz".format( + vdate.strftime("%d%b%Y").lstrip('0')) - supported_packages = ['voronoi', 'rigid', 'user-nc-dump', + supported_packages = ['voronoi', 'rigid', 'user-nc-dump', 'kspace', 'user-atc', 'meam', 'manybody'] for pkg in supported_packages: @@ -48,159 +47,41 @@ def url_for_version(self, version): description='Activate the {0} package'.format(pkg)) variant('lib', default=True, description='Build the liblammps in addition to the executable') + variant('mpi', default=True, + description='Build with mpi') - depends_on('mpi') - depends_on('fftw') + depends_on('mpi', when='+mpi') + depends_on('fftw', when='+ksapce') depends_on('voropp', when='+voronoi') depends_on('netcdf+mpi', when='+user-nc-dump') depends_on('blas', when='+user-atc') depends_on('lapack', when='+user-atc') - def setup_environment(self, spack_env, run_env): - self.target_name = self.compiler.name + patch("lib.patch", when="@20170901") - def edit(self, spec, prefix): - config = [] + root_cmakelists_dir = 'cmake' - config.append('CC = c++') - if self.compiler.name == 'intel': - # This is taken from MAKE/OPTIONS/Makefile.intel_cpu_intelmpi - config.append('OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits') # noqa: E501 - config.append('CCFLAGS = -g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload -fno-alias -ansi-alias -restrict $(OPTFLAGS)') # noqa: E501 - config.append('LINKFLAGS = -qopenmp $(OPTFLAGS)') - else: - # This is taken from MAKE/OPTIONS/Makefile.g++ - config.append('OPTFLAGS = -O3') - config.append('CCFLAGS = -fopenmp') - config.append('LINKFLAGS = -fopenmp $(OPTFLAGS)') + def cmake_args(self): + spec = self.spec - config.append('SHFLAGS = {0}'.format(self.compiler.pic_flag)) - config.append('DEPFLAGS = -M') - config.append('LINK = c++') - - config.append('LIB = ') - config.append('SIZE = size') - - config.append('ARCHIVE = ar') - config.append('ARFLAGS = -rc') - config.append('SHLIBFLAGS = -shared') - - config.append('LMP_INC = -DLAMMPS_GZIP') - - mpi_path = self.spec['mpi'].prefix.lib - mpi_inc = self.spec['mpi'].prefix.include - - config.append( - 'MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -I{0}'.format( - mpi_inc)) - config.append('MPI_PATH = -L{0}'.format(mpi_path)) - config.append('MPI_LIB = {0}'.format( - ' '.join(self.spec['mpi'].mpicxx_shared_libs))) - - config.append('FFT_INC = -DFFT_FFTW3 -L{0}'.format( - self.spec['fftw'].prefix.include)) - config.append('FFT_PATH = -L{0}'.format(self.spec['fftw'].prefix.lib)) - config.append('FFT_LIB = -lfftw3') - - config.append('JPG_INC = ') - config.append('JPG_PATH = ') - config.append('JPG_LIB = ') - - makefile_inc_template = \ - join_path(os.path.dirname(self.module.__file__), - 'Makefile.inc') - with open(makefile_inc_template, "r") as fhr: - config.extend(fhr.read().split('\n')) - - with working_dir('src/MAKE/'): - with open('Makefile.{0}'.format(self.target_name), 'w') as fh: - fh.write('\n'.join(config)) - - def build_meam(self): - with working_dir('lib/meam'): - filter_file(r'EXTRAMAKE = Makefile.lammps.ifort', - 'EXTRAMAKE = Makefile.lammps.spack', - 'Makefile.ifort') - filter_file('F90 = *ifort', - 'F90 = {0}'.format(self.compiler.fc), - 'Makefile.ifort') - - with open('Makefile.lammps.spack', 'w') as fh: - syslib = '' - syspath = '' - if self.compiler.name == 'gcc': - syslib = '-lgfortran' - elif self.compiler.name == 'intel': - syslib = '-lifcore' - - makefile = ['meam_SYSINC =', - 'meam_SYSLIB = {0}'.format(syslib), - 'meam_SYSPATH = {0}'.format(syspath)] - - fh.write('\n'.join(makefile)) - - make('lib', '-f', 'Makefile.ifort') - - def build_user_atc(self): - with working_dir('lib/atc'): - filter_file(r'CC =.*', - 'CC = {0}'.format(self.compiler.cxx), - 'Makefile.icc') - - mpi_include = self.spec['mpi'].prefix.include - - filter_file(r'CCFLAGS = *', - 'CCFLAGS = -I{0} '.format(mpi_include), - 'Makefile.icc') - - filter_file('LINK =.*', - 'LINK = {0}'.format(self.compiler.cxx), - 'Makefile.icc') - - make('lib', '-f', 'Makefile.icc') - with open('Makefile.lammps', 'w') as fh: - lapack_blas = (self.spec['lapack'].libs + - self.spec['blas'].libs) - makefile = [ - 'user-atc_SYSINC =', - 'user-atc_SYSLIB = {0}'.format(lapack_blas.ld_flags), - 'user-atc_SYSPATH = '] - fh.write('\n'.join(makefile)) - - def build_voronoi(self): - # no need to set the voronoi_SYS variable in Makefile.lammps - # since the spack wrapper takes care of the path - with working_dir('src/VORONOI'): - filter_file(r'#include "voro\+\+\.hh"', - '#include ', - 'compute_voronoi_atom.h') - - def build(self, spec, prefix): - for pkg in self.supported_packages: - if '+{0}'.format(pkg) in spec: - _build_pkg_name = 'build_{0}'.format(pkg.replace('-', '_')) - if hasattr(self, _build_pkg_name): - _build_pkg = getattr(self, _build_pkg_name) - _build_pkg() - - with working_dir('src'): - make('yes-{0}'.format(pkg)) - - with working_dir('src'): - make(self.target_name) - - if '+lib' in spec: - make('mode=shlib', self.target_name) - - def install(self, spec, prefix): - with working_dir('src'): - mkdirp(prefix.bin) - install('lmp_{0}'.format(self.target_name), prefix.bin) - - if '+lib' in spec: - mkdirp(prefix.lib) - install('liblammps_{0}.{1}'.format(self.target_name, - dso_suffix), prefix.lib) - - mkdirp(prefix.include.lammps) - install('library.h', prefix.include.lammps) + return [ + '-DBUILD_SHARED_LIBS={0}'.format( + 'ON' if '+lib' in spec else 'OFF'), + '-DENABLE_MPI={0}'.format( + 'ON' if '+mpi' in spec else 'OFF'), + '-DENABLE_RIGID={0}'.format( + 'ON' if '+rigid' in spec else 'OFF'), + '-DENABLE_MEAM={0}'.format( + 'ON' if '+meam' in spec else 'OFF'), + '-DENABLE_KSAPCE={0}'.format( + 'ON' if '+kspace' in spec else 'OFF'), + '-DFFT=FFTW3', # doesn't do harm withiout KSPACE + '-DENABLE_MANYBODY={0}'.format( + 'ON' if '+manybody' in spec else 'OFF'), + '-DENABLE_USER-NETCDF={0}'.format( + 'ON' if '+user-nc-dump' in spec else 'OFF'), + '-DENABLE_VORONOI={0}'.format( + 'ON' if '+voronoi' in spec else 'OFF'), + '-DENABLE_USER-ATC={0}'.format( + 'ON' if '+user-atc' in spec else 'OFF'), + ] From c077052664b0510430e53cda86fcfe0f5d870ced Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 11 Sep 2017 01:22:47 +0200 Subject: [PATCH 1623/2394] Change glog from Autotools to CMakePackage (#5323) --- var/spack/repos/builtin/packages/glog/package.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/glog/package.py b/var/spack/repos/builtin/packages/glog/package.py index d46271f9568..1209e89797f 100644 --- a/var/spack/repos/builtin/packages/glog/package.py +++ b/var/spack/repos/builtin/packages/glog/package.py @@ -25,7 +25,7 @@ from spack import * -class Glog(AutotoolsPackage): +class Glog(CMakePackage): """C++ implementation of the Google logging module.""" homepage = "https://github.com/google/glog" @@ -35,3 +35,6 @@ class Glog(AutotoolsPackage): version('0.3.3', 'c1f86af27bd9c73186730aa957607ed0') depends_on('gflags') + + def cmake_args(self): + return ['-DBUILD_SHARED_LIBS=TRUE'] From 1d3a8e034dfcaa391e7d0cb231f05e3625aa2adf Mon Sep 17 00:00:00 2001 From: healther Date: Mon, 11 Sep 2017 02:35:17 +0200 Subject: [PATCH 1624/2394] add package py-line-profiler (#5291) --- .../packages/py-line-profiler/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-line-profiler/package.py diff --git a/var/spack/repos/builtin/packages/py-line-profiler/package.py b/var/spack/repos/builtin/packages/py-line-profiler/package.py new file mode 100644 index 00000000000..8c337e4794e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-line-profiler/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyLineProfiler(PythonPackage): + """Line-by-line profiler.""" + + homepage = "https://github.com/rkern/line_profiler" + url = "https://pypi.io/packages/source/l/line_profiler/line_profiler-2.0.tar.gz" + + version('2.0', 'fc93c6bcfac3b7cb1912cb28836d7ee6') + + depends_on('python@2.5:') + depends_on('py-setuptools', type='build') + depends_on('py-cython', type='build') + depends_on('py-ipython@0.13:', type=('build', 'run')) From 7d5f12be70980c6ce1452c7f232baa3dc251be7d Mon Sep 17 00:00:00 2001 From: Eloy Gil Date: Mon, 11 Sep 2017 02:38:11 +0200 Subject: [PATCH 1625/2394] Missing opencv dependencies (#5285) There are some opencv dependencies missing such as "core" that are mandatory in order to complete the caffe build. --- var/spack/repos/builtin/packages/caffe/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/caffe/package.py b/var/spack/repos/builtin/packages/caffe/package.py index 88c0f958328..e40680e3583 100644 --- a/var/spack/repos/builtin/packages/caffe/package.py +++ b/var/spack/repos/builtin/packages/caffe/package.py @@ -62,7 +62,7 @@ class Caffe(CMakePackage): depends_on('hdf5') # Optional dependencies - depends_on('opencv@3.2.0', when='+opencv') + depends_on('opencv@3.2.0+core+highgui+imgproc', when='+opencv') depends_on('leveldb', when='+leveldb') depends_on('lmdb', when='+lmdb') depends_on('python@2.7:', when='+python') From be2be8c70e2a2ec4932810b7144d45bdc8e81699 Mon Sep 17 00:00:00 2001 From: Stephen McDowell Date: Sun, 10 Sep 2017 22:04:02 -0400 Subject: [PATCH 1626/2394] fix armadillo macro expansions (#5268) * fix armadillo macro expansions - most compilers `#define linux 1` - armadillo does raw pasting of include directories in code - this means macro expansion of `linux-x86_64` -> `1-x86_64` - new version, previous download url seems broken - lib64 instead of lib? - needs verification, was required for intel, works for others * flake8: two spaces is modules, one for classes * add some explanation of how the patch works * use p1 patch file with -U0 to prepend undef linux * armadillo v8.100.1 --- var/spack/repos/builtin/packages/armadillo/package.py | 11 ++++++++++- .../builtin/packages/armadillo/undef_linux.patch | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 var/spack/repos/builtin/packages/armadillo/undef_linux.patch diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index 26581719257..71f72ac7e63 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -33,6 +33,9 @@ class Armadillo(CMakePackage): homepage = "http://arma.sourceforge.net/" url = "http://sourceforge.net/projects/arma/files/armadillo-7.200.1.tar.xz" + version('8.100.1', 'd9762d6f097e0451d0cfadfbda295e7c') + version('7.950.1', 'c06eb38b12cae49cab0ce05f96147147') + # NOTE: v7.900.1 download url seems broken is no v7.950.1? version('7.900.1', '5ef71763bd429a3d481499878351f3be') version('7.500.0', '7d316fdf3c3c7ea92b64704180ae315d') version('7.200.2', 'b21585372d67a8876117fd515d8cf0a2') @@ -47,11 +50,17 @@ class Armadillo(CMakePackage): depends_on('superlu@5.2:') depends_on('hdf5', when='+hdf5') + # Adds an `#undef linux` to prevent preprocessor expansion of include + # directories with `linux` in them getting transformed into a 1. + # E.g. `/path/linux-x86_64/dir` -> `/path/1-x86_64/dir` if/when a linux + # platform's compiler is adding `#define linux 1`. + patch('undef_linux.patch', when='platform=linux') + def cmake_args(self): spec = self.spec arpack = find_libraries('libarpack', root=spec[ - 'arpack-ng'].prefix.lib, shared=True) + 'arpack-ng'].prefix.lib64, shared=True) superlu = find_libraries('libsuperlu', root=spec[ 'superlu'].prefix, shared=False, recurse=True) return [ diff --git a/var/spack/repos/builtin/packages/armadillo/undef_linux.patch b/var/spack/repos/builtin/packages/armadillo/undef_linux.patch new file mode 100644 index 00000000000..68b434dca80 --- /dev/null +++ b/var/spack/repos/builtin/packages/armadillo/undef_linux.patch @@ -0,0 +1,4 @@ +--- a/include/armadillo_bits/compiler_setup.hpp ++++ b/include/armadillo_bits/compiler_setup.hpp +@@ -0,0 +1 @@ ++#undef linux From f57559e4e24b8f33ada2844913f29acd6366b951 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Sun, 10 Sep 2017 21:54:23 -0500 Subject: [PATCH 1627/2394] Fix two bugs from the bootstrap update (#5312) These were discovered with bash 4.1.2. Add quotations around a variable to prevent the destruction of a newline. Without this fix a conditional doesn't work properly. Remove square brackets around a conditional meant to be evaluated based on the return code of a command. This wasn't working properly with an old bash. Fix a typo. --- share/spack/setup-env.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 958689cab49..8cf54661d85 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -207,14 +207,14 @@ function _spack_determine_shell() { export SPACK_SHELL=$(_spack_determine_shell) # -# Check whether a shell function of the given name is defined +# Check whether a function of the given name is defined # function _spack_fn_exists() { - type $1 2>&1 | grep -q 'shell function' + type $1 2>&1 | grep -q 'function' } need_module="no" -if [ ! $(_spack_fn_exists use) ] && [ ! $(_spack_fn_exists module) ]; then +if ! _spack_fn_exists use && ! _spack_fn_exists module; then need_module="yes" fi; @@ -222,9 +222,9 @@ fi; # build and make available environment-modules # if [ "${need_module}" = "yes" ]; then - #check if environment-modules~X is installed + #check if environment-modules is installed module_prefix="$(spack location -i "environment-modules" 2>&1 || echo "not_installed")" - module_prefix=$(echo ${module_prefix} | tail -n 1) + module_prefix=$(echo "${module_prefix}" | tail -n 1) if [ "${module_prefix}" != "not_installed" ]; then #activate it! export MODULE_PREFIX=${module_prefix} @@ -235,7 +235,7 @@ if [ "${need_module}" = "yes" ]; then echo "WARNING: A method for managing modules does not currently exist." echo "" echo "To resolve this you may either:" - echo "1. Allow spack to handle this by running 'spack boostrap'" + echo "1. Allow spack to handle this by running 'spack bootstrap'" echo " and sourcing this script again." echo "2. Install and activate a supported module managment engine manually" echo " Supported engines include: environment-modules and lmod" From 50eea5cb137d47aa565c141771c7eaacdcd1ca41 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Mon, 11 Sep 2017 21:54:38 +0200 Subject: [PATCH 1628/2394] Added 'ldc' compiler for D language based on LLVM (#5279) --- .../builtin/packages/ldc-bootstrap/package.py | 65 ++++++++++++++ .../repos/builtin/packages/ldc/package.py | 85 +++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ldc-bootstrap/package.py create mode 100644 var/spack/repos/builtin/packages/ldc/package.py diff --git a/var/spack/repos/builtin/packages/ldc-bootstrap/package.py b/var/spack/repos/builtin/packages/ldc-bootstrap/package.py new file mode 100644 index 00000000000..9cc49f6a741 --- /dev/null +++ b/var/spack/repos/builtin/packages/ldc-bootstrap/package.py @@ -0,0 +1,65 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class LdcBootstrap(CMakePackage): + """The LDC project aims to provide a portable D programming language + compiler with modern optimization and code generation capabilities. + + LDC is fully Open Source; the parts of the code not taken/adapted from + other projects are BSD-licensed (see the LICENSE file for details). + + Consult the D wiki for further information: http://wiki.dlang.org/LDC + + This old version of the compiler is needed to bootstrap newer ones. + """ + + homepage = "https://dlang.org/" + url = "https://github.com/ldc-developers/ldc/releases/download/v0.17.4/ldc-0.17.4-src.tar.gz" + + # This is the last version that does not require a D compiler to bootstrap + version('0.17.4', '000e006426d6094fabd2a2bdab0ff0b7') + + depends_on('llvm@3.7:') + depends_on('zlib') + depends_on('libconfig') + depends_on('curl') + depends_on('libedit') + depends_on('binutils') + + def setup_dependent_environment(self, build_env, run_env, dep_spec): + + # The code below relies on this function being executed after the + # environment has been sanitized (because LD_LIBRARY_PATH is among + # the variables that get unset) + + # We need libphobos in LD_LIBRARY_PATH + build_env.prepend_path('LD_LIBRARY_PATH', self.prefix.lib) + + def cmake_args(self): + return [ + '-DBUILD_SHARED_LIBS:BOOL=ON' + ] diff --git a/var/spack/repos/builtin/packages/ldc/package.py b/var/spack/repos/builtin/packages/ldc/package.py new file mode 100644 index 00000000000..001e3bfadf2 --- /dev/null +++ b/var/spack/repos/builtin/packages/ldc/package.py @@ -0,0 +1,85 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Ldc(CMakePackage): + """The LDC project aims to provide a portable D programming language + compiler with modern optimization and code generation capabilities. + + LDC is fully Open Source; the parts of the code not taken/adapted from + other projects are BSD-licensed (see the LICENSE file for details). + + Consult the D wiki for further information: http://wiki.dlang.org/LDC + """ + + homepage = "https://dlang.org/" + url = "https://github.com/ldc-developers/ldc/releases/download/v0.17.4/ldc-0.17.4-src.tar.gz" + + version('1.3.0', '537d992a361b0fd0440b24a5145c9107') + + variant( + 'shared', + default=True, + description='Build runtime and tooling as shared libs' + ) + + depends_on('llvm@3.9:') + depends_on('zlib') + depends_on('libconfig') + depends_on('curl') + depends_on('libedit') + depends_on('binutils', type=('build', 'link', 'run')) + depends_on('ldc-bootstrap', type=('build', 'link')) + + provides('D@2') + + def cmake_args(self): + ldmd2 = self.spec['ldc-bootstrap'].prefix.bin.ldmd2 + + args = [ + '-DD_COMPILER:STRING={0}'.format(ldmd2), + '-DBUILD_SHARED_LIBS:BOOL={0}'.format( + 'ON' if '+shared' in self.spec else 'OFF' + ), + '-DLDC_INSTALL_LTOPLUGIN:BOOL=ON', + '-DLDC_BUILD_WITH_LTO:BOOL=OFF' + ] + + return args + + @run_after('install') + def add_rpath_to_conf(self): + + # Here we modify the configuration file for ldc2 to inject flags + # that will rpath the standard library location + + config_file = join_path(self.prefix.etc, 'ldc2.conf') + + search_for = 'switches = \[' + substitute_with = 'switches = [\n' + \ + ' "-L-rpath={0}",'.format(self.prefix.lib) + + filter_file(search_for, substitute_with, config_file) From 947cd8e3c040db54e20efc1a89b67827c40e7019 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 11 Sep 2017 14:25:36 -0600 Subject: [PATCH 1629/2394] berkeley-db: initial commit (#5303) * berkeley-db: initial commit * berkeley-db: added more versions --- .../builtin/packages/berkeley-db/package.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 var/spack/repos/builtin/packages/berkeley-db/package.py diff --git a/var/spack/repos/builtin/packages/berkeley-db/package.py b/var/spack/repos/builtin/packages/berkeley-db/package.py new file mode 100644 index 00000000000..46fdb529081 --- /dev/null +++ b/var/spack/repos/builtin/packages/berkeley-db/package.py @@ -0,0 +1,47 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class BerkeleyDb(AutotoolsPackage): + """Oracle Berkeley DB""" + + homepage = "http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html" + url = "http://download.oracle.com/berkeley-db/db-5.3.28.tar.gz" + + version('5.3.28', 'b99454564d5b4479750567031d66fe24') + version('6.0.35', 'c65a4d3e930a116abaaf69edfc697f25') + version('6.1.29', '7f4d47302dfec698fe088e5285c9098e') + version('6.2.32', '33491b4756cb44b91c3318b727e71023') + + configure_directory = 'dist' + build_directory = 'spack-build' + + def url_for_version(self, version): + # newer version need oracle login, so get them from gentoo mirror + return 'http://distfiles.gentoo.org/distfiles/db-{0}.tar.gz'.format(version) + + def configure_args(self): + return ['--disable-static', '--enable-cxx', '--enable-stl'] From 8dd7fa03ea903bdbc36b5ba13837892c84589bee Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Mon, 11 Sep 2017 22:27:20 +0200 Subject: [PATCH 1630/2394] elemental: fix broken Config.cmake (#5331) --- .../packages/elemental/cmake_0.87.7.patch | 22 +++++++++++++++++++ .../builtin/packages/elemental/package.py | 1 + 2 files changed, 23 insertions(+) create mode 100644 var/spack/repos/builtin/packages/elemental/cmake_0.87.7.patch diff --git a/var/spack/repos/builtin/packages/elemental/cmake_0.87.7.patch b/var/spack/repos/builtin/packages/elemental/cmake_0.87.7.patch new file mode 100644 index 00000000000..a33f5ef0b6f --- /dev/null +++ b/var/spack/repos/builtin/packages/elemental/cmake_0.87.7.patch @@ -0,0 +1,22 @@ +diff --git a/cmake/configure_files/ElementalConfig.cmake.in b/cmake/configure_files/ElementalConfig.cmake.in +index d37649f..8511d81 100644 +--- a/cmake/configure_files/ElementalConfig.cmake.in ++++ b/cmake/configure_files/ElementalConfig.cmake.in +@@ -1,6 +1,8 @@ + set(Elemental_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/include") + set(Elemental_INCLUDE_DIRS "${Elemental_INCLUDE_DIRS};@MPI_CXX_INCLUDE_PATH@") +-set(Elemental_INCLUDE_DIRS "${Elemental_INCLUDE_DIRS};@QD_INCLUDES@") ++IF(@QD_FOUND@) ++ set(Elemental_INCLUDE_DIRS "${Elemental_INCLUDE_DIRS};@QD_INCLUDES@") ++ENDIF() + set(Elemental_INCLUDE_DIRS "${Elemental_INCLUDE_DIRS};@MPC_INCLUDES@") + set(Elemental_INCLUDE_DIRS "${Elemental_INCLUDE_DIRS};@MPFR_INCLUDES@") + set(Elemental_INCLUDE_DIRS "${Elemental_INCLUDE_DIRS};@GMP_INCLUDES@") +@@ -13,6 +15,6 @@ set(Elemental_LINK_FLAGS "@EL_LINK_FLAGS@") + set(Elemental_DEFINITIONS "@Qt5Widgets_DEFINITIONS@") + + # Our library dependencies (contains definitions for IMPORTED targets) +-include("@CMAKE_INSTALL_PREFIX@/CMake/ElementalTargets.cmake") ++include("${CMAKE_CURRENT_LIST_DIR}/ElementalTargets.cmake") + + set(Elemental_LIBRARIES El) diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index c356c9f717d..065fb16fa61 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -92,6 +92,7 @@ class Elemental(CMakePackage): depends_on('mpfr') patch('elemental_cublas.patch', when='+cublas') + patch('cmake_0.87.7.patch', when='@0.87.7') @property def libs(self): From f502de47252ec8388339e2e72321779c57581d9a Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 11 Sep 2017 14:28:53 -0600 Subject: [PATCH 1631/2394] added votca-1.4.1 modules (#5276) --- var/spack/repos/builtin/packages/votca-csg/package.py | 1 + var/spack/repos/builtin/packages/votca-tools/package.py | 1 + var/spack/repos/builtin/packages/votca-xtp/package.py | 3 +++ 3 files changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/votca-csg/package.py b/var/spack/repos/builtin/packages/votca-csg/package.py index bd5879e68a0..ee7f647135b 100644 --- a/var/spack/repos/builtin/packages/votca-csg/package.py +++ b/var/spack/repos/builtin/packages/votca-csg/package.py @@ -38,6 +38,7 @@ class VotcaCsg(CMakePackage): version('develop', git='https://github.com/votca/csg', branch='master') version('1.4', 'd009e761e5e3afd51eed89c420610a67') + version('1.4.1', 'e4195d69db2036e9d76f22115ae31f81') depends_on("cmake@2.8:", type='build') depends_on("votca-tools@1.4:1.4.999", when='@1.4:1.4.999') diff --git a/var/spack/repos/builtin/packages/votca-tools/package.py b/var/spack/repos/builtin/packages/votca-tools/package.py index d2acac87369..db1a4f13101 100644 --- a/var/spack/repos/builtin/packages/votca-tools/package.py +++ b/var/spack/repos/builtin/packages/votca-tools/package.py @@ -38,6 +38,7 @@ class VotcaTools(CMakePackage): version('develop', git='https://github.com/votca/tools', branch='master') version('1.4', 'cd47868e9f28e2c7b9d01f95aa0185ca') + version('1.4.1', '3176b72f8a41ec053cc740a5398e7dc4') depends_on("cmake@2.8:", type='build') depends_on("expat") diff --git a/var/spack/repos/builtin/packages/votca-xtp/package.py b/var/spack/repos/builtin/packages/votca-xtp/package.py index 80cd4802e38..d35913b9c5b 100644 --- a/var/spack/repos/builtin/packages/votca-xtp/package.py +++ b/var/spack/repos/builtin/packages/votca-xtp/package.py @@ -38,9 +38,12 @@ class VotcaXtp(CMakePackage): # url = "https://github.com/votca/xtp/tarball/v1.4" version('develop', git='https://github.com/votca/xtp', branch='master') + version('1.4.1', '31a2dbd8bd48bf337bc88b20ab312050') depends_on("cmake@2.8:", type='build') depends_on("votca-tools@develop", when='@develop') + depends_on("votca-tools@1.4:1.4.999", when='@1.4:1.4.999') depends_on("votca-csg@develop", when='@develop') + depends_on("votca-csg@1.4:1.4.999", when='@1.4:1.4.999') depends_on("votca-ctp@develop", when='@develop') depends_on("votca-moo@develop", when='@develop') From 32117c22deb97c0be06ef073c432e45569b138c3 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 12 Sep 2017 01:20:49 +0200 Subject: [PATCH 1632/2394] 'with_or_without' accepts bool variants Fixes #4112 This commit extends the support of the AutotoolsPackage methods `with_or_without` and `enable_or_disable` to bool-valued variants. It also defines for those functions a convenience short-cut if the activation parameter is the prefix of a spec (like in `--with-{pkg}={prefix}`). This commit also includes: * Updates to viennarna and adios accordingly: they have been modified to use `enable_or_disable` and `with_or_without` * Improved docstrings in `autotools.py`. Raise `KeyError` if name is not a variant. --- lib/spack/spack/build_systems/autotools.py | 164 +++++++++++++++--- lib/spack/spack/test/build_systems.py | 27 +-- .../repos/builtin.mock/packages/a/package.py | 2 + .../repos/builtin/packages/adios/package.py | 96 +++++----- .../builtin/packages/viennarna/package.py | 24 +-- 5 files changed, 203 insertions(+), 110 deletions(-) diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py index afabb908200..b78d3ed0264 100644 --- a/lib/spack/spack/build_systems/autotools.py +++ b/lib/spack/spack/build_systems/autotools.py @@ -291,49 +291,161 @@ def check(self): self._if_make_target_execute('test') self._if_make_target_execute('check') - def _activate_or_not(self, active, inactive, name, active_parameters=None): + def _activate_or_not( + self, + name, + activation_word, + deactivation_word, + activation_value=None + ): + """This function contains the current implementation details of + :py:meth:`~.AutotoolsPackage.with_or_without` and + :py:meth:`~.AutotoolsPackage.enable_or_disable`. + + Args: + name (str): name of the variant that is being processed + activation_word (str): the default activation word ('with' in the + case of ``with_or_without``) + deactivation_word (str): the default deactivation word ('without' + in the case of ``with_or_without``) + activation_value (callable): callable that accepts a single + value. This value is either one of the allowed values for a + multi-valued variant or the name of a bool-valued variant. + Returns the parameter to be used when the value is activated. + + The special value 'prefix' can also be assigned and will return + ``spec[name].prefix`` as activation parameter. + + Examples: + + Given a package with: + + .. code-block:: python + + variant('foo', values=('x', 'y'), description='') + variant('bar', default=True, description='') + + calling this function like: + + .. code-block:: python + + _activate_or_not( + 'foo', 'with', 'without', activation_value='prefix' + ) + _activate_or_not('bar', 'with', 'without') + + will generate the following configuration options: + + .. code-block:: console + + --with-x= --without-y --with-bar + + for `` foo=x +bar`` + + Returns: + list of strings that corresponds to the activation/deactivation + of the variant that has been processed + + Raises: + KeyError: if name is not among known variants + """ spec = self.spec args = [] + + if activation_value == 'prefix': + activation_value = lambda x: spec[x].prefix + + # Defensively look that the name passed as argument is among + # variants + if name not in self.variants: + msg = '"{0}" is not a variant of "{1}"' + raise KeyError(msg.format(name, self.name)) + + # Create a list of pairs. Each pair includes a configuration + # option and whether or not that option is activated + if set(self.variants[name].values) == set((True, False)): + # BoolValuedVariant carry information about a single option. + # Nonetheless, for uniformity of treatment we'll package them + # in an iterable of one element. + condition = '+{name}'.format(name=name) + options = [(name, condition in spec)] + else: + condition = '{name}={value}' + options = [ + (value, condition.format(name=name, value=value) in spec) + for value in self.variants[name].values + ] + # For each allowed value in the list of values - for value in self.variants[name].values: - # Check if the value is active in the current spec - condition = '{name}={value}'.format(name=name, value=value) - activated = condition in spec + for option_value, activated in options: # Search for an override in the package for this value - override_name = '{0}_or_{1}_{2}'.format(active, inactive, value) + override_name = '{0}_or_{1}_{2}'.format( + activation_word, deactivation_word, option_value + ) line_generator = getattr(self, override_name, None) # If not available use a sensible default if line_generator is None: def _default_generator(is_activated): if is_activated: - line = '--{0}-{1}'.format(active, value) - if active_parameters is not None and active_parameters(value): # NOQA=ignore=E501 - line += '={0}'.format(active_parameters(value)) + line = '--{0}-{1}'.format( + activation_word, option_value + ) + if activation_value is not None and activation_value(option_value): # NOQA=ignore=E501 + line += '={0}'.format( + activation_value(option_value) + ) return line - return '--{0}-{1}'.format(inactive, value) + return '--{0}-{1}'.format(deactivation_word, option_value) line_generator = _default_generator args.append(line_generator(activated)) return args - def with_or_without(self, name, active_parameters=None): - """Inspects the multi-valued variant 'name' and returns the configure - arguments that activate / deactivate the selected feature. + def with_or_without(self, name, activation_value=None): + """Inspects a variant and returns the arguments that activate + or deactivate the selected feature(s) for the configure options. - :param str name: name of a valid multi-valued variant - :param callable active_parameters: if present accepts a single value - and returns the parameter to be used leading to an entry of the - type '--with-{name}={parameter} + This function works on all type of variants. For bool-valued variants + it will return by default ``--with-{name}`` or ``--without-{name}``. + For other kinds of variants it will cycle over the allowed values and + return either ``--with-{value}`` or ``--without-{value}``. + + If activation_value is given, then for each possible value of the + variant, the option ``--with-{value}=activation_value(value)`` or + ``--without-{value}`` will be added depending on whether or not + ``variant=value`` is in the spec. + + Args: + name (str): name of a valid multi-valued variant + activation_value (callable): callable that accepts a single + value and returns the parameter to be used leading to an entry + of the type ``--with-{name}={parameter}``. + + The special value 'prefix' can also be assigned and will return + ``spec[name].prefix`` as activation parameter. + + Returns: + list of arguments to configure + """ + return self._activate_or_not(name, 'with', 'without', activation_value) + + def enable_or_disable(self, name, activation_value=None): + """Same as :py:meth:`~.AutotoolsPackage.with_or_without` but substitute + ``with`` with ``enable`` and ``without`` with ``disable``. + + Args: + name (str): name of a valid multi-valued variant + activation_value (callable): if present accepts a single value + and returns the parameter to be used leading to an entry of the + type ``--enable-{name}={parameter}`` + + The special value 'prefix' can also be assigned and will return + ``spec[name].prefix`` as activation parameter. + + Returns: + list of arguments to configure """ return self._activate_or_not( - 'with', 'without', name, active_parameters - ) - - def enable_or_disable(self, name, active_parameters=None): - """Inspects the multi-valued variant 'name' and returns the configure - arguments that activate / deactivate the selected feature. - """ - return self._activate_or_not( - 'enable', 'disable', name, active_parameters + name, 'enable', 'disable', activation_value ) run_after('install')(PackageBase._run_default_install_time_test_callbacks) diff --git a/lib/spack/spack/test/build_systems.py b/lib/spack/spack/test/build_systems.py index 114497bccd8..9960966e2ff 100644 --- a/lib/spack/spack/test/build_systems.py +++ b/lib/spack/spack/test/build_systems.py @@ -53,20 +53,23 @@ def test_with_or_without(self): pkg = spack.repo.get(s) # Called without parameters - l = pkg.with_or_without('foo') - assert '--with-bar' in l - assert '--without-baz' in l - assert '--no-fee' in l + options = pkg.with_or_without('foo') + assert '--with-bar' in options + assert '--without-baz' in options + assert '--no-fee' in options def activate(value): return 'something' - l = pkg.with_or_without('foo', active_parameters=activate) - assert '--with-bar=something' in l - assert '--without-baz' in l - assert '--no-fee' in l + options = pkg.with_or_without('foo', activation_value=activate) + assert '--with-bar=something' in options + assert '--without-baz' in options + assert '--no-fee' in options - l = pkg.enable_or_disable('foo') - assert '--enable-bar' in l - assert '--disable-baz' in l - assert '--disable-fee' in l + options = pkg.enable_or_disable('foo') + assert '--enable-bar' in options + assert '--disable-baz' in options + assert '--disable-fee' in options + + options = pkg.with_or_without('bvv') + assert '--with-bvv' in options diff --git a/var/spack/repos/builtin.mock/packages/a/package.py b/var/spack/repos/builtin.mock/packages/a/package.py index dc078d24342..463ad10055b 100644 --- a/var/spack/repos/builtin.mock/packages/a/package.py +++ b/var/spack/repos/builtin.mock/packages/a/package.py @@ -50,6 +50,8 @@ class A(AutotoolsPackage): multi=False ) + variant('bvv', default=True, description='The good old BV variant') + depends_on('b', when='foobar=bar') def with_or_without_fee(self, activated): diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 88721a477ae..91188b8e4ec 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -61,9 +61,14 @@ class Adios(AutotoolsPackage): # transports and serial file converters variant('hdf5', default=False, description='Enable parallel HDF5 transport and serial bp2h5 converter') variant('netcdf', default=False, description='Enable netcdf support') - variant('flexpath', default=False, description='Enable flexpath transport') - variant('dataspaces', default=False, description='Enable dataspaces transport') - variant('staging', default=False, description='Enable dataspaces and flexpath staging transports') + + variant( + 'staging', + default=None, + values=('flexpath', 'dataspaces'), + multi=True, + description='Enable dataspaces and/or flexpath staging transports' + ) depends_on('autoconf', type='build') depends_on('automake', type='build') @@ -100,15 +105,27 @@ class Adios(AutotoolsPackage): patch('adios_1100.patch', when='@:1.10.0^hdf5@1.10:') def validate(self, spec): - """ - Checks if incompatible variants have been activated at the same time - :param spec: spec of the package - :raises RuntimeError: in case of inconsistencies + """Checks if incompatible variants have been activated at the same time + + Args: + spec: spec of the package + + Raises: + RuntimeError: in case of inconsistencies """ if '+fortran' in spec and not self.compiler.fc: msg = 'cannot build a fortran variant without a fortran compiler' raise RuntimeError(msg) + def with_or_without_hdf5(self, activated): + + if activated: + return '--with-phdf5={0}'.format( + self.spec['hdf5'].prefix + ) + + return '--without-phdf5' + def configure_args(self): spec = self.spec self.validate(spec) @@ -118,66 +135,31 @@ def configure_args(self): 'CFLAGS={0}'.format(self.compiler.pic_flag) ] - if '+shared' in spec: - extra_args.append('--enable-shared') + extra_args += self.enable_or_disable('shared') + extra_args += self.enable_or_disable('fortran') if '+mpi' in spec: env['MPICC'] = spec['mpi'].mpicc env['MPICXX'] = spec['mpi'].mpicxx - extra_args.append('--with-mpi=%s' % spec['mpi'].prefix) - else: - extra_args.append('--without-mpi') - if '+infiniband' in spec: - extra_args.append('--with-infiniband') - else: - extra_args.append('--with-infiniband=no') - if '+fortran' in spec: - extra_args.append('--enable-fortran') - else: - extra_args.append('--disable-fortran') + extra_args += self.with_or_without('mpi', activation='prefix') + extra_args += self.with_or_without('infiniband') # Transforms - if '+zlib' in spec: - extra_args.append('--with-zlib=%s' % spec['zlib'].prefix) - else: - extra_args.append('--without-zlib') - if '+bzip2' in spec: - extra_args.append('--with-bzip2=%s' % spec['bzip2'].prefix) - else: - extra_args.append('--without-bzip2') - if '+szip' in spec: - extra_args.append('--with-szip=%s' % spec['szip'].prefix) - else: - extra_args.append('--without-szip') - if '+zfp' in spec: - extra_args.append('--with-zfp=%s' % spec['zfp'].prefix) - else: - extra_args.append('--without-zfp') - if '+sz' in spec: - extra_args.append('--with-sz=%s' % spec['sz'].prefix) - else: - extra_args.append('--without-sz') + variants = ['zlib', 'bzip2', 'szip', 'zfp', 'sz'] # External I/O libraries - if '+hdf5' in spec: - extra_args.append('--with-phdf5=%s' % spec['hdf5'].prefix) - else: - extra_args.append('--without-phdf5') - if '+netcdf' in spec: - extra_args.append('--with-netcdf=%s' % spec['netcdf'].prefix) - else: - extra_args.append('--without-netcdf') + variants += ['hdf5', 'netcdf'] + + for x in variants: + extra_args += self.with_or_without(x, activation='prefix') # Staging transports - if '+flexpath' in spec or '+staging' in spec: - extra_args.append('--with-flexpath=%s' % spec['libevpath'].prefix) - else: - extra_args.append('--without-flexpath') - if '+dataspaces' in spec or '+staging' in spec: - extra_args.append('--with-dataspaces=%s' - % spec['dataspaces'].prefix) - else: - extra_args.append('--without-dataspaces') + def with_staging(name): + if name == 'flexpath': + return spec['libevpath'].prefix + return spec[name].prefix + + extra_args += self.with_or_without('staging', activation=with_staging) return extra_args diff --git a/var/spack/repos/builtin/packages/viennarna/package.py b/var/spack/repos/builtin/packages/viennarna/package.py index dbaff25eecc..7f8f2cb18c0 100644 --- a/var/spack/repos/builtin/packages/viennarna/package.py +++ b/var/spack/repos/builtin/packages/viennarna/package.py @@ -27,8 +27,9 @@ class Viennarna(AutotoolsPackage): """The ViennaRNA Package consists of a C code library and several - stand-alone programs for the prediction and comparison of RNA secondary - structures.""" + stand-alone programs for the prediction and comparison of RNA secondary + structures. + """ homepage = "https://www.tbi.univie.ac.at/RNA/" url = "https://www.tbi.univie.ac.at/RNA/download/sourcecode/2_3_x/ViennaRNA-2.3.5.tar.gz" @@ -49,19 +50,12 @@ def url_for_version(self, version): return url.format(version.up_to(2).underscored, version) def configure_args(self): - args = [] - if '+sse' in self.spec: - args.append('--enable-sse') - else: - args.append('--disable-sse') - if '~python' in self.spec: - args.append('--without-python') - else: - args.append('--with-python') - if '~perl' in self.spec: - args.append('--without-perl') - else: - args.append('--with-perl') + + args = self.enable_or_disable('sse') + args += self.with_or_without('python') + args += self.with_or_without('perl') + if 'python@3:' in self.spec: args.append('--with-python3') + return args From de7e99f866e37c94dacdccd4c16dea4eabe2fdbb Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 10 Sep 2017 16:41:17 -0700 Subject: [PATCH 1633/2394] Preserve original stack trace for UnsatisfiableSpecError --- lib/spack/spack/spec.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index cd4922cf534..910788c81a1 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2113,14 +2113,15 @@ def _merge_dependency(self, dep, deptypes, visited, spec_deps, fmt += 'while trying to concretize the partial spec:' fmt += '\n\n{0}\n\n'.format(self.tree(indent=4)) fmt += '{0} requires {1} {2} {3}, but spec asked for {4}' + e.message = fmt.format( self.name, dep.name, e.constraint_type, e.required, - e.provided - ) - raise e + e.provided) + + raise # Add merged spec to my deps and recurse dependency = spec_deps[dep.name] From 14cd73ed3ce3f7d02782f72917c70071d2a6c091 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 10 Sep 2017 16:41:54 -0700 Subject: [PATCH 1634/2394] Simplify logic in Spec.normalize() --- lib/spack/spack/spec.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 910788c81a1..56a6b9b4d65 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2183,13 +2183,13 @@ def normalize(self, force=False): if not self.name: raise SpecError("Attempting to normalize anonymous spec") - if self._normal and not force: - return False - - # avoid any assumptions about concreteness when forced + # Set _normal and _concrete to False when forced if force: self._mark_concrete(False) + if self._normal: + return False + # Ensure first that all packages & compilers in the DAG exist. self.validate_or_raise() # Get all the dependencies into one DependencyMap From 8c42aed9d5f8b02538eb15ac936c78bc6a36308a Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 11 Sep 2017 11:41:21 -0700 Subject: [PATCH 1635/2394] bugfix: concrete dependencies are now copied properly. - Dependencies in concrete specs did not previously have their cache fields (_concrete, _normal, etc.) preserved. - _dup and _dup_deps weren't passing each other enough information to preserve concreteness properly, so only the root was properly preserved. - cached concreteness is now preserved properly for the entire DAG, not just the root. - added method docs. --- lib/spack/spack/spec.py | 71 ++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 26 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 56a6b9b4d65..f2836e8eb88 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2542,7 +2542,7 @@ def virtual_dependencies(self): """Return list of any virtual deps in this spec.""" return [spec for spec in self.traverse() if spec.virtual] - def _dup(self, other, deps=True, cleardeps=True): + def _dup(self, other, deps=True, cleardeps=True, caches=None): """Copy the spec other into self. This is an overwriting copy. It does not copy any dependents (parents), but by default copies dependencies. @@ -2557,6 +2557,10 @@ def _dup(self, other, deps=True, cleardeps=True): cleardeps (bool): if True clears the dependencies of ``self``, before possibly copying the dependencies of ``other`` onto ``self`` + caches (bool or None): preserve cached fields such as + ``_normal``, ``_concrete``, and ``_cmp_key_cache``. By + default this is ``False`` if DAG structure would be + changed by the copy, ``True`` if it's an exact copy. Returns: True if ``self`` changed because of the copy operation, @@ -2594,21 +2598,20 @@ def _dup(self, other, deps=True, cleardeps=True): self.external_module = other.external_module self.namespace = other.namespace - # If we copy dependencies, preserve DAG structure in the new spec - if deps: - deptypes = alldeps # by default copy all deptypes - - # if caller restricted deptypes to be copied, adjust that here. - if isinstance(deps, (tuple, list)): - deptypes = deps - - self._dup_deps(other, deptypes) - - # These fields are all cached results of expensive operations. + # Cached fields are results of expensive operations. # If we preserved the original structure, we can copy them # safely. If not, they need to be recomputed. - # TODO: dependency hashes can be copied more aggressively. - if deps is True or deps == alldeps: + if caches is None: + caches = (deps is True or deps == alldeps) + + # If we copy dependencies, preserve DAG structure in the new spec + if deps: + # If caller restricted deptypes to be copied, adjust that here. + # By default, just copy all deptypes + deptypes = deps if isinstance(deps, (tuple, list)) else alldeps + self._dup_deps(other, deptypes, caches) + + if caches: self._hash = other._hash self._cmp_key_cache = other._cmp_key_cache self._normal = other._normal @@ -2621,7 +2624,7 @@ def _dup(self, other, deps=True, cleardeps=True): return changed - def _dup_deps(self, other, deptypes): + def _dup_deps(self, other, deptypes, caches): new_specs = {self.name: self} for dspec in other.traverse_edges(cover='edges', root=False): if (dspec.deptypes and @@ -2629,29 +2632,45 @@ def _dup_deps(self, other, deptypes): continue if dspec.parent.name not in new_specs: - new_specs[dspec.parent.name] = dspec.parent.copy(deps=False) + new_specs[dspec.parent.name] = dspec.parent.copy( + deps=False, caches=caches) if dspec.spec.name not in new_specs: - new_specs[dspec.spec.name] = dspec.spec.copy(deps=False) + new_specs[dspec.spec.name] = dspec.spec.copy( + deps=False, caches=caches) new_specs[dspec.parent.name]._add_dependency( new_specs[dspec.spec.name], dspec.deptypes) - def copy(self, deps=True): - """Return a copy of this spec. + def copy(self, deps=True, **kwargs): + """Make a copy of this spec. - By default, returns a deep copy. To control how dependencies are - copied, supply: + Args: + deps (bool or tuple): Defaults to True. If boolean, controls + whether dependencies are copied (copied if True). If a + tuple is provided, *only* dependencies of types matching + those in the tuple are copied. + kwargs: additional arguments for internal use (passed to ``_dup``). - deps=True: deep copy + Returns: + A copy of this spec. - deps=False: shallow copy (no dependencies) + Examples: + Deep copy with dependnecies:: - deps=('link', 'build'): - only build and link dependencies. Similar for other deptypes. + spec.copy() + spec.copy(deps=True) + + Shallow copy (no dependencies):: + + spec.copy(deps=False) + + Only build and run dependencies:: + + deps=('build', 'run'): """ clone = Spec.__new__(Spec) - clone._dup(self, deps=deps) + clone._dup(self, deps=deps, **kwargs) return clone @property From f8f1c308c994512622c952d289388f9ab7f19709 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 11 Sep 2017 11:43:41 -0700 Subject: [PATCH 1636/2394] clean up concreteness detection - Fixes bugs where concretization would fail due to an erroneously cached _concrete attribute. - Ripped out a bunch of code in spec.py that isn't needed/valid anymore: - The various concrete() methods on different types of Specs would attempt to statically compute whether the Spec was concrete. - This dates back to when DAGs were simpler and there were no optional dependencies. It's actually NOT possible to compute statically whether a Spec is concrete now. The ONLY way you know is if it goes through concretization and is marked concrete once that completes. - This commit removes all simple concreteness checks and relies only on the _concrete attribute. This should make thinking about concreteness simpler. - Fixed a couple places where Specs need to be marked concrete explicitly. - Specs read from files and Specs that are destructively copied from concrete Specs now need to be marked concrete explicitly. - These spots may previously have "worked", but they were brittle and should be explcitly marked anyway. --- lib/spack/spack/binary_distribution.py | 5 + lib/spack/spack/spec.py | 113 ++++------------------- lib/spack/spack/test/directory_layout.py | 8 +- 3 files changed, 27 insertions(+), 99 deletions(-) diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index 9693a75c397..f915e3a0d00 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -447,7 +447,12 @@ def get_specs(): except fs.FetchError: continue with open(stage.save_filename, 'r') as f: + # read the spec from the build cache file. All specs + # in build caches are concrete (as they aer built) so + # we need to mark this spec concrete on read-in. spec = spack.spec.Spec.from_yaml(f) + spec._mark_concrete() + specs.add(spec) durls[spec].append(link) return specs, durls diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index f2836e8eb88..1b5f41d4c49 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -635,10 +635,6 @@ def constrain(self, other): def valid_compiler_flags(): return _valid_compiler_flags - @property - def concrete(self): - return all(flag in self for flag in _valid_compiler_flags) - def copy(self): clone = FlagMap(None) for name, value in self.items(): @@ -661,73 +657,6 @@ class DependencyMap(HashableMap): """Each spec has a DependencyMap containing specs for its dependencies. The DependencyMap is keyed by name. """ - def __init__(self, owner): - super(DependencyMap, self).__init__() - - # Owner Spec for the current map - self.owner = owner - - @property - def concrete(self): - - # Check if the dependencies are concrete and of the correct type - dependencies_are_concrete = all( - (d.spec.concrete and d.deptypes) for d in self.values() - ) - - if not dependencies_are_concrete: - return False - - # If we are dealing with an external spec, it clearly has no - # dependencies managed by spack - if self.owner.external: - return True - - # Now check we have every dependency we need - pkg = self.owner.package - for dependency in pkg.dependencies.values(): - # Check that for every condition we satisfy we satisfy also - # the associated constraint - for condition, constraint in dependency.items(): - # WARNING: This part relies on the fact that dependencies are - # the last item to be checked when computing if a spec is - # concrete. This means that we are ensured that all variants, - # versions, compilers, etc. are there with their final value - # when we call 'Spec.satisfies(..., strict=True)' - - # FIXME: at the moment check only for non conditional - # FIXME: dependencies, to avoid infinite recursion - - # satisfy_condition = self.owner.satisfies( - # condition, strict=True - # ) - - satisfy_condition = str(condition) == self.owner.name - - if not satisfy_condition: - continue - - dependency_name = constraint.name - - # We don't want to check build dependencies - if pkg.dependency_types[dependency_name] == set(['build']): - continue - - try: - dependency = self.owner[dependency_name] - satisfy_constraint = dependency.satisfies( - constraint, strict=True - ) - except KeyError: - # If the dependency is not there we don't - # satisfy the constraint - satisfy_constraint = False - - if satisfy_condition and not satisfy_constraint: - return False - - return True - def __str__(self): return "{deps: %s}" % ', '.join(str(d) for d in sorted(self.values())) @@ -1315,26 +1244,16 @@ def is_virtual(name): @property def concrete(self): - """A spec is concrete if it can describe only ONE build of a package. - If any of the name, version, architecture, compiler, - variants, or depdenencies are ambiguous,then it is not concrete. - """ - # If we have cached that the spec is concrete, then it's concrete - if self._concrete: - return True + """A spec is concrete if it describes a single build of a package. - # Otherwise check if the various parts of the spec are concrete. - # It's crucial to have the check on dependencies last, as it relies - # on all the other parts to be already checked for concreteness. - self._concrete = bool(not self.virtual and - self.namespace is not None and - self.versions.concrete and - self.variants.concrete and - self.architecture and - self.architecture.concrete and - self.compiler and self.compiler.concrete and - self.compiler_flags.concrete and - self._dependencies.concrete) + More formally, a spec is concrete if concretize() has been called + on it and it has been marked `_concrete`. + + Concrete specs either can be or have been built. All constraints + have been resolved, optional dependencies have been added or + removed, a compiler has been chosen, and all variants have + values. + """ return self._concrete def traverse(self, **kwargs): @@ -1825,8 +1744,8 @@ def _expand_virtual_packages(self): if replacement.external: if (spec._dependencies): changed = True - spec._dependencies = DependencyMap(spec) - replacement._dependencies = DependencyMap(replacement) + spec._dependencies = DependencyMap() + replacement._dependencies = DependencyMap() replacement.architecture = self.architecture # TODO: could this and the stuff in _dup be cleaned up? @@ -1986,7 +1905,7 @@ def flat_dependencies(self, **kwargs): def index(self, deptype=None): """Return DependencyMap that points to all the dependencies in this spec.""" - dm = DependencyMap(None) + dm = DependencyMap() for spec in self.traverse(deptype=deptype): dm[spec.name] = spec return dm @@ -2588,8 +2507,8 @@ def _dup(self, other, deps=True, cleardeps=True, caches=None): else None self.compiler = other.compiler.copy() if other.compiler else None if cleardeps: - self._dependents = DependencyMap(self) - self._dependencies = DependencyMap(self) + self._dependents = DependencyMap() + self._dependencies = DependencyMap() self.compiler_flags = other.compiler_flags.copy() self.compiler_flags.spec = self self.variants = other.variants.copy() @@ -3296,8 +3215,8 @@ def spec(self, name): spec.external_path = None spec.external_module = None spec.compiler_flags = FlagMap(spec) - spec._dependents = DependencyMap(spec) - spec._dependencies = DependencyMap(spec) + spec._dependents = DependencyMap() + spec._dependencies = DependencyMap() spec.namespace = spec_namespace spec._hash = None spec._cmp_key_cache = None diff --git a/lib/spack/spack/test/directory_layout.py b/lib/spack/spack/test/directory_layout.py index a2609c81622..0cfd796e06d 100644 --- a/lib/spack/spack/test/directory_layout.py +++ b/lib/spack/spack/test/directory_layout.py @@ -55,8 +55,10 @@ def test_yaml_directory_layout_parameters( # Ensure default layout matches expected spec format layout_default = YamlDirectoryLayout(str(tmpdir)) path_default = layout_default.relative_path_for_spec(spec) - assert(path_default == - spec.format("${ARCHITECTURE}/${COMPILERNAME}-${COMPILERVER}/${PACKAGE}-${VERSION}-${HASH}")) # NOQA: ignore=E501 + assert(path_default == spec.format( + "${ARCHITECTURE}/" + "${COMPILERNAME}-${COMPILERVER}/" + "${PACKAGE}-${VERSION}-${HASH}")) # Test hash_length parameter works correctly layout_10 = YamlDirectoryLayout(str(tmpdir), hash_len=10) @@ -133,6 +135,8 @@ def test_read_and_write_spec( # TODO: increase reuse of build dependencies. stored_deptypes = ('link', 'run') expected = spec.copy(deps=stored_deptypes) + expected._mark_concrete() + assert expected.concrete assert expected == spec_from_file assert expected.eq_dag(spec_from_file) From c9e46a29132c412c78f52d871f6c2e2edb9031d3 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 12 Sep 2017 05:47:05 +0200 Subject: [PATCH 1637/2394] dealii: explicitly specify bzip2 libs (#5337) * dealii: explicitly specify bzip2 libs * bzip2: add libs() property --- var/spack/repos/builtin/packages/bzip2/package.py | 8 ++++++++ var/spack/repos/builtin/packages/dealii/package.py | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/bzip2/package.py b/var/spack/repos/builtin/packages/bzip2/package.py index d42f7c2bb61..6394aaccb24 100644 --- a/var/spack/repos/builtin/packages/bzip2/package.py +++ b/var/spack/repos/builtin/packages/bzip2/package.py @@ -40,6 +40,14 @@ class Bzip2(Package): variant('shared', default=True, description='Enables the build of shared libraries.') + # override default implementation + @property + def libs(self): + shared = '+shared' in self.spec + return find_libraries( + 'libbz2', root=self.prefix, shared=shared, recurse=True + ) + def patch(self): # bzip2 comes with two separate Makefiles for static and dynamic builds # Tell both to use Spack's compiler wrapper instead of GCC diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 2441796bf5f..60d82528af3 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -166,7 +166,10 @@ def cmake_args(self): '-DDEAL_II_COMPONENT_EXAMPLES=ON', '-DDEAL_II_WITH_THREADS:BOOL=ON', '-DBOOST_DIR=%s' % spec['boost'].prefix, - '-DBZIP2_DIR=%s' % spec['bzip2'].prefix, + # Cmake may still pick up system's bzip2, fix this: + '-DBZIP2_FOUND=true', + '-DBZIP2_INCLUDE_DIRS=%s' % spec['bzip2'].prefix.include, + '-DBZIP2_LIBRARIES=%s' % spec['bzip2'].libs.joined(';'), # CMake's FindBlas/Lapack may pickup system's blas/lapack instead # of Spack's. Be more specific to avoid this. # Note that both lapack and blas are provided in -DLAPACK_XYZ. From 3ffb6d09d9fe21f6a216f782500fda27e6d2c925 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 11 Sep 2017 22:59:15 -0600 Subject: [PATCH 1638/2394] parsplice: initial commit (#5314) --- .../builtin/packages/parsplice/package.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 var/spack/repos/builtin/packages/parsplice/package.py diff --git a/var/spack/repos/builtin/packages/parsplice/package.py b/var/spack/repos/builtin/packages/parsplice/package.py new file mode 100644 index 00000000000..6560174fb5c --- /dev/null +++ b/var/spack/repos/builtin/packages/parsplice/package.py @@ -0,0 +1,48 @@ +############################################################################## +# Copyright (c) 2017, Los Alamos National Security, LLC +# Produced at the Los Alamos National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## + +from spack import * + + +class Parsplice(CMakePackage): + """ParSplice code implements the Parallel Trajectory Splicing algorithm""" + + homepage = "https://gitlab.com/exaalt/parsplice" + url = "https://gitlab.com/exaalt/parsplice/tags/v1.0" + + version('develop', git='https://gitlab.com/exaalt/parsplice', branch='master') + + depends_on("cmake@3.1:", type='build') + depends_on("berkeley-db") + depends_on("nauty") + depends_on("boost") + depends_on("mpi") + depends_on("eigen@3:") + depends_on("lammps+lib@20170901:") + + def cmake_args(self): + options = ['-DBUILD_SHARED_LIBS=ON'] + + return options From b413f37b3e1eecdf8b1557f48568bd8165414c7b Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 12 Sep 2017 07:02:48 +0200 Subject: [PATCH 1639/2394] Update libbson and libmongoc to 1.7.0 (#5294) This also introduces the ssl, snappy and zlib variants for libmongoc. --- .../repos/builtin/packages/libbson/package.py | 3 +- .../builtin/packages/libmongoc/package.py | 28 ++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/libbson/package.py b/var/spack/repos/builtin/packages/libbson/package.py index 28f7f020eb1..009ed4d5e44 100644 --- a/var/spack/repos/builtin/packages/libbson/package.py +++ b/var/spack/repos/builtin/packages/libbson/package.py @@ -30,8 +30,9 @@ class Libbson(AutotoolsPackage): parsing, and iterating BSON documents.""" homepage = "https://github.com/mongodb/libbson" - url = "https://github.com/mongodb/libbson/releases/download/1.6.3/libbson-1.6.3.tar.gz" + url = "https://github.com/mongodb/libbson/releases/download/1.7.0/libbson-1.7.0.tar.gz" + version('1.7.0', 'e196ad77dd8458ebc1166e6135030b63') version('1.6.3', 'b7bdb314197106fcfb4af105a582d343') version('1.6.2', 'c128a2ae3e35295e1176465be60f19db') version('1.6.1', '4d6779451bc5764a7d4982c01e7bd8c2') diff --git a/var/spack/repos/builtin/packages/libmongoc/package.py b/var/spack/repos/builtin/packages/libmongoc/package.py index e2d4cf66075..089006c6f4c 100644 --- a/var/spack/repos/builtin/packages/libmongoc/package.py +++ b/var/spack/repos/builtin/packages/libmongoc/package.py @@ -29,17 +29,43 @@ class Libmongoc(AutotoolsPackage): """libmongoc is a client library written in C for MongoDB.""" homepage = "https://github.com/mongodb/mongo-c-driver" - url = "https://github.com/mongodb/mongo-c-driver/releases/download/1.6.3/mongo-c-driver-1.6.3.tar.gz" + url = "https://github.com/mongodb/mongo-c-driver/releases/download/1.7.0/mongo-c-driver-1.7.0.tar.gz" + version('1.7.0', '21acf3584e92631422bc91e9e3cf4f76') version('1.6.3', '0193610cf1d98aae7008f272a1000972') version('1.6.2', 'aac86df153282cda1e4905cca181631a') version('1.6.1', '826946de9a15f7f453aefecdc76b1c0d') + variant('ssl', default=True, description='Enable SSL support.') + variant('snappy', default=True, description='Enable Snappy support.') + variant('zlib', default=True, description='Enable zlib support.') + depends_on('libbson') + depends_on('openssl', when='+ssl') + depends_on('snappy', when='+snappy') + depends_on('zlib', when='+zlib') + def configure_args(self): + spec = self.spec + args = [ '--disable-automatic-init-and-cleanup', '--with-libbson=system' ] + + if '+ssl' in spec: + args.append('--enable-ssl=openssl') + else: + args.append('--enable-ssl=no') + + if spec.satisfies('@1.7.0:'): + # --with-{snappy,zlib}=system are currently broken and cause + # configure to not find the dependencies. We still want to + # explicitly disable them when appropriate. + if '+snappy' not in spec: + args.append('--with-snappy=no') + if '+zlib' not in spec: + args.append('--with-zlib=no') + return args From 5c24370512ec6a0bc586f07acada6e7cb47f4015 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 12 Sep 2017 08:40:28 +0200 Subject: [PATCH 1640/2394] openblas: add ilp64 option (#5289) --- var/spack/repos/builtin/packages/openblas/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 74fbfc45313..d8b52a43cd3 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -47,6 +47,7 @@ class Openblas(MakefilePackage): default=True, description='Build shared libraries as well as static libs.' ) + variant('ilp64', default=False, description='64 bit integers') variant('openmp', default=False, description="Enable OpenMP support.") variant('pic', default=True, description='Build position independent code') @@ -129,6 +130,10 @@ def make_defs(self): if '+openmp' in self.spec: make_defs += ['USE_OPENMP=1'] + # 64bit ints + if '+ilp64' in self.spec: + make_defs += ['INTERFACE64=1'] + return make_defs @property From 90d50a0cee912fc1da43f617a166d0104c41939f Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 12 Sep 2017 21:10:31 +0200 Subject: [PATCH 1641/2394] Force reference consistency between Spec & Package The correct place to set the mutual references between spec and package objects is at the end of concretization. After a call to concretize we should now be ensured that spec is the same object as spec.package.spec. Code in `build_environment.py` that was performing the same operation has been turned into an assertion to be defensive on the new behavior. --- lib/spack/spack/build_environment.py | 6 +----- lib/spack/spack/spec.py | 30 ++++++++++++++++++++-------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index a27d8c68ab8..66b7da9e55b 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -465,12 +465,8 @@ def setup_package(pkg, dirty): # code ensures that all packages in the DAG have pieces of the # same spec object at build time. # - # This is safe for the build process, b/c the build process is a - # throwaway environment, but it is kind of dirty. - # - # TODO: Think about how to avoid this fix and do something cleaner. for s in pkg.spec.traverse(): - s.package.spec = s + assert s.package.spec is s # Trap spack-tracked compiler flags as appropriate. # Must be before set_compiler_environment_variables diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 1b5f41d4c49..5c082d90c8b 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1782,15 +1782,24 @@ def feq(cfield, sfield): def concretize(self): """A spec is concrete if it describes one build of a package uniquely. - This will ensure that this spec is concrete. + This will ensure that this spec is concrete. - If this spec could describe more than one version, variant, or build - of a package, this will add constraints to make it concrete. + If this spec could describe more than one version, variant, or build + of a package, this will add constraints to make it concrete. - Some rigorous validation and checks are also performed on the spec. - Concretizing ensures that it is self-consistent and that it's - consistent with requirements of its pacakges. See flatten() and - normalize() for more details on this. + Some rigorous validation and checks are also performed on the spec. + Concretizing ensures that it is self-consistent and that it's + consistent with requirements of its pacakges. See flatten() and + normalize() for more details on this. + + It also ensures that: + + .. code-block:: python + + for x in self.traverse(): + assert x.package.spec == x + + which may not be true *during* the concretization step. """ if not self.name: raise SpecError("Attempting to concretize anonymous spec") @@ -1844,6 +1853,11 @@ def concretize(self): if matches: raise ConflictsInSpecError(self, matches) + # At this point the spec-package mutual references should + # be self-consistent + for x in self.traverse(): + x.package.spec = x + def _mark_concrete(self, value=True): """Mark this spec and its dependencies as concrete. @@ -2463,7 +2477,7 @@ def virtual_dependencies(self): def _dup(self, other, deps=True, cleardeps=True, caches=None): """Copy the spec other into self. This is an overwriting - copy. It does not copy any dependents (parents), but by default + copy. It does not copy any dependents (parents), but by default copies dependencies. To duplicate an entire DAG, call _dup() on the root of the DAG. From 80ac61339164ac8044fafb641403384cb54ae3e7 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 12 Sep 2017 13:17:20 -0600 Subject: [PATCH 1642/2394] Shell detection: filter preceding "-" On OSX, the shell detection code may get a preceding dash, like "-bash". This adds a filter to remove it. --- share/spack/setup-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 8cf54661d85..74820ecb93d 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -202,7 +202,7 @@ export SPACK_ROOT=${_sp_prefix} # Determine which shell is being used # function _spack_determine_shell() { - ps -p $$ | tail -n 1 | awk '{print $4}' | xargs basename + ps -p $$ | tail -n 1 | awk '{print $4}' | sed 's/^-//' | xargs basename } export SPACK_SHELL=$(_spack_determine_shell) From c1975c7601687d55066061e8549d634f7b5dfaba Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Wed, 13 Sep 2017 22:45:28 +0200 Subject: [PATCH 1643/2394] Boost: 1.65.1 (#5330) Add sha of the latest boost bugfix release. http://www.boost.org/users/history/version_1_65_1.html Besides other fixed issues, it adds compatebility for the upcoming CUDA 9 release. --- var/spack/repos/builtin/packages/boost/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index b83bfb6818b..14f4a7f9ad7 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -46,6 +46,8 @@ class Boost(Package): branch='develop', submodules=True) + version('1.65.1', '41d7542ce40e171f3f7982aff008ff0d', + url='https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.bz2') version('1.65.0', '5512d3809801b0a1b9dd58447b70915d', url='https://dl.bintray.com/boostorg/release/1.65.0/source/boost_1_65_0.tar.bz2') From ea081f06f05a392822b2e58dcf6d5bb680bd0806 Mon Sep 17 00:00:00 2001 From: Louis Vernon Date: Wed, 13 Sep 2017 20:16:16 -0600 Subject: [PATCH 1644/2394] Added missing dependencies to nauty package (#5348) * Added missing help2man dependency to nauty * Add type=build * Added gmp dependency to nauty package --- var/spack/repos/builtin/packages/nauty/package.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/var/spack/repos/builtin/packages/nauty/package.py b/var/spack/repos/builtin/packages/nauty/package.py index a85823d65a0..dcb02c417a8 100644 --- a/var/spack/repos/builtin/packages/nauty/package.py +++ b/var/spack/repos/builtin/packages/nauty/package.py @@ -67,7 +67,9 @@ class Nauty(AutotoolsPackage): depends_on('automake', type='build', when='@2.6r7') depends_on('libtool', type='build', when='@2.6r7') depends_on('pkg-config', type='build') + depends_on('help2man', type='build') depends_on('zlib') + depends_on('gmp') @property def force_autoreconf(self): From 3548e134f760b85b2b76d5cf3c8c3462f3885852 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Thu, 14 Sep 2017 15:16:54 +0200 Subject: [PATCH 1645/2394] libsodium: update URLs (#5355) * libsodium: update URLs updates the URLs for libsodium releases. Fixes broken builds (404). * libsodium: add new version --- var/spack/repos/builtin/packages/libsodium/package.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/libsodium/package.py b/var/spack/repos/builtin/packages/libsodium/package.py index c0f52f9b317..f7d68aa6840 100644 --- a/var/spack/repos/builtin/packages/libsodium/package.py +++ b/var/spack/repos/builtin/packages/libsodium/package.py @@ -29,9 +29,11 @@ class Libsodium(AutotoolsPackage): """Sodium is a modern, easy-to-use software library for encryption, decryption, signatures, password hashing and more.""" homepage = "https://download.libsodium.org/doc/" - url = "https://download.libsodium.org/libsodium/releases/libsodium-1.0.11.tar.gz" + url = "https://download.libsodium.org/libsodium/releases/libsodium-1.0.13.tar.gz" list_url = "https://download.libsodium.org/libsodium/releases/old" + version('1.0.13', 'f38aac160a4bd05f06f743863e54e499') + version('1.0.12', 'c308e3faa724b630b86cc0aaf887a5d4') version('1.0.11', 'b58928d035064b2a46fb564937b83540') version('1.0.10', 'ea89dcbbda0b2b6ff6a1c476231870dd') version('1.0.3', 'b3bcc98e34d3250f55ae196822307fab') @@ -43,5 +45,7 @@ class Libsodium(AutotoolsPackage): def url_for_version(self, version): url = 'https://download.libsodium.org/libsodium/releases/' if version < Version('1.0.4'): + url += 'old/unsupported/' + elif version < Version('1.0.12'): url += 'old/' return url + 'libsodium-{0}.tar.gz'.format(version) From 78894645eb28455d564252150e86c8772f6c0b12 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Thu, 14 Sep 2017 19:08:03 +0200 Subject: [PATCH 1646/2394] ADIOS: Fix Build (Autotools) (#5363) This fixes the build of the ADIOS package. The `with_or_without` interface of the Autotools builds seems to have changed, this fixes it. --- .../repos/builtin/packages/adios/package.py | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 91188b8e4ec..01013958de2 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -49,17 +49,26 @@ class Adios(AutotoolsPackage): variant('fortran', default=False, description='Enable Fortran bindings support') - variant('mpi', default=True, description='Enable MPI support') - variant('infiniband', default=False, description='Enable infiniband support') + variant('mpi', default=True, + description='Enable MPI support') + variant('infiniband', default=False, + description='Enable infiniband support') # transforms - variant('zlib', default=True, description='Enable zlib transform support') - variant('bzip2', default=False, description='Enable bzip2 transform support') - variant('szip', default=False, description='Enable szip transform support') - variant('zfp', default=True, description='Enable ZFP transform support') - variant('sz', default=True, description='Enable SZ transform support') + variant('zlib', default=True, + description='Enable zlib transform support') + variant('bzip2', default=False, + description='Enable bzip2 transform support') + variant('szip', default=False, + description='Enable szip transform support') + variant('zfp', default=True, + description='Enable ZFP transform support') + variant('sz', default=True, + description='Enable SZ transform support') # transports and serial file converters - variant('hdf5', default=False, description='Enable parallel HDF5 transport and serial bp2h5 converter') + variant('hdf5', default=False, + description='Enable parallel HDF5 transport and serial bp2h5 ' + + 'converter') variant('netcdf', default=False, description='Enable netcdf support') variant( @@ -142,7 +151,7 @@ def configure_args(self): env['MPICC'] = spec['mpi'].mpicc env['MPICXX'] = spec['mpi'].mpicxx - extra_args += self.with_or_without('mpi', activation='prefix') + extra_args += self.with_or_without('mpi', activation_value='prefix') extra_args += self.with_or_without('infiniband') # Transforms @@ -152,7 +161,7 @@ def configure_args(self): variants += ['hdf5', 'netcdf'] for x in variants: - extra_args += self.with_or_without(x, activation='prefix') + extra_args += self.with_or_without(x, activation_value='prefix') # Staging transports def with_staging(name): @@ -160,6 +169,9 @@ def with_staging(name): return spec['libevpath'].prefix return spec[name].prefix - extra_args += self.with_or_without('staging', activation=with_staging) + extra_args += self.with_or_without( + 'staging', + activation_value=with_staging + ) return extra_args From ead1982ede45d27fdcd2ef6183154cc364c69625 Mon Sep 17 00:00:00 2001 From: Robert Pavel Date: Thu, 14 Sep 2017 17:28:56 -0600 Subject: [PATCH 1647/2394] Added Support for NOX Package to Trilinos Spackage (#5366) Added support for building NOX package to Trilinis Spackage --- var/spack/repos/builtin/packages/trilinos/package.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 1e2142644ad..f88abcfac17 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -153,6 +153,8 @@ class Trilinos(CMakePackage): description='Enable ForTrilinos') variant('openmp', default=False, description='Enable OpenMP') + variant('nox', default=False, + description='Enable NOX') resource(name='dtk', git='https://github.com/ornl-cees/DataTransferKit', @@ -301,6 +303,8 @@ def cmake_args(self): 'ON' if '+teuchos' in spec else 'OFF'), '-DTrilinos_ENABLE_Anasazi:BOOL=%s' % ( 'ON' if '+anasazi' in spec else 'OFF'), + '-DTrilinos_ENABLE_NOX:BOOL=%s' % ( + 'ON' if '+nox' in spec else 'OFF'), ]) if '+xsdkflags' in spec: From 0bd838bd1127da8d5b38ded85460e6081d236a80 Mon Sep 17 00:00:00 2001 From: Matthew Scott Krafczyk Date: Thu, 14 Sep 2017 20:49:25 -0500 Subject: [PATCH 1648/2394] Remove echo statements from setup-env.sh setup-env.sh adds the 'module' command to the user's environment if it is not defined and if there is a Spack installation of environment-modules available. This commit updates that logic to perform these checks and updates quietly. --- share/spack/setup-env.sh | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 74820ecb93d..4de530bebac 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -230,18 +230,7 @@ if [ "${need_module}" = "yes" ]; then export MODULE_PREFIX=${module_prefix} _spack_pathadd PATH "${MODULE_PREFIX}/Modules/bin" module() { eval `${MODULE_PREFIX}/Modules/bin/modulecmd ${SPACK_SHELL} $*`; } - echo "INFO: Using spack managed module system." - else - echo "WARNING: A method for managing modules does not currently exist." - echo "" - echo "To resolve this you may either:" - echo "1. Allow spack to handle this by running 'spack bootstrap'" - echo " and sourcing this script again." - echo "2. Install and activate a supported module managment engine manually" - echo " Supported engines include: environment-modules and lmod" fi; -else - echo "INFO: Using system available module system." fi; # From abc0c65d03bb9632efb6c5e49f0b39eb2880461c Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Fri, 15 Sep 2017 07:46:01 +0200 Subject: [PATCH 1649/2394] Fix checksum of Intel TBB package (#5349) --- var/spack/repos/builtin/packages/intel-tbb/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/intel-tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py index 766a9cb92e8..e8bc197873e 100644 --- a/var/spack/repos/builtin/packages/intel-tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-tbb/package.py @@ -36,7 +36,7 @@ class IntelTbb(Package): # Only version-specific URL's work for TBB # can also use https://github.com/01org/tbb/releases/ - version('2017.6', '5b0909fbb1741724f7a0ce83232f50b166788af0', + version('2017.6', 'c0a722fd1ae66b40aeab25da6049086ef5f02f17', url='https://github.com/01org/tbb/archive/2017_U6.tar.gz') version('2017.5', '26f720729d322913912e99d1e4a36bd10625d3ca', url='https://github.com/01org/tbb/archive/2017_U5.tar.gz') From cba1ddff4ae6ad51f9b1445a69e5f93dc69196f1 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Fri, 15 Sep 2017 15:43:42 +0200 Subject: [PATCH 1650/2394] ncl: Fix buffer overflow in ymake-filter (#5357) Fixes a problem in ymake-filter: The line buffer is currently hardcoded to be 2048 bytes large but some Makefiles contain lines longer than that. This caused the Makefiles to sometimes not be generated, consequently failing parts of the build. --- .../repos/builtin/packages/ncl/package.py | 2 ++ .../builtin/packages/ncl/ymake-filter.patch | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 var/spack/repos/builtin/packages/ncl/ymake-filter.patch diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index 49ebbc8f47f..1d338bcd9c2 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -43,6 +43,8 @@ class Ncl(Package): patch('spack_ncl.patch') # Make ncl compile with hdf5 1.10 patch('hdf5.patch') + # ymake-filter's buffer may overflow + patch('ymake-filter.patch') # This installation script is implemented according to this manual: # http://www.ncl.ucar.edu/Download/build_from_src.shtml diff --git a/var/spack/repos/builtin/packages/ncl/ymake-filter.patch b/var/spack/repos/builtin/packages/ncl/ymake-filter.patch new file mode 100644 index 00000000000..915e82035f7 --- /dev/null +++ b/var/spack/repos/builtin/packages/ncl/ymake-filter.patch @@ -0,0 +1,33 @@ +--- ncl_ncarg-6.4.0/config/ymake-filter.c.orig 2017-02-23 20:11:55.000000000 +0100 ++++ ncl_ncarg-6.4.0/config/ymake-filter.c 2017-09-13 14:52:34.800989229 +0200 +@@ -150,13 +150,29 @@ + getcppline() + { + int c; +- static char buf[2048]; ++ static int s = 2048; ++ static char *buf = NULL; + char *p; + ++ if (buf == NULL) ++ { ++ buf = malloc(s); ++ } ++ + p = buf; + + do + { ++ if (p >= buf + s) ++ { ++ char* old = buf; ++ ++ /* Need to increase the size of buf. */ ++ s += 1024; ++ buf = realloc(buf, s); ++ p = buf + (p - old); ++ } ++ + switch(c = getchar()) + { + /* From 393e355c390a749ae2fab97497161d1c8edac859 Mon Sep 17 00:00:00 2001 From: healther Date: Fri, 15 Sep 2017 19:13:47 +0200 Subject: [PATCH 1651/2394] add new version to package py-pybind11 --- var/spack/repos/builtin/packages/py-pybind11/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/py-pybind11/package.py b/var/spack/repos/builtin/packages/py-pybind11/package.py index 1d3d7db7e1b..749732110d9 100644 --- a/var/spack/repos/builtin/packages/py-pybind11/package.py +++ b/var/spack/repos/builtin/packages/py-pybind11/package.py @@ -37,6 +37,7 @@ class PyPybind11(CMakePackage): homepage = "https://pybind11.readthedocs.io" url = "https://github.com/pybind/pybind11/archive/v2.1.0.tar.gz" + version('2.2.0', '978b26aea1c6bfc4f88518ef33771af2') version('2.1.1', '5518988698df937ccee53fb6ba91d12a') version('2.1.0', '3cf07043d677d200720c928569635e12') From 54d0cef5c4b65c17c8bd9be2f1d5cb159ab56cdf Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Fri, 15 Sep 2017 21:58:33 +0200 Subject: [PATCH 1652/2394] Update hpctoolkit and externals to latest release --- .../builtin/packages/hpctoolkit-externals/package.py | 7 +++---- var/spack/repos/builtin/packages/hpctoolkit/package.py | 9 +++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py b/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py index 95e42f981dc..136df2a2088 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit-externals/package.py @@ -30,11 +30,10 @@ class HpctoolkitExternals(Package): HpctoolkitExternals package provides all these prerequisites.""" homepage = "http://hpctoolkit.org" + url = "https://github.com/HPCToolkit/hpctoolkit-externals" - # Note: No precise release tags/branches provided - version('5.4', - git='https://github.com/HPCToolkit/hpctoolkit-externals.git', - commit='3d2953623357bb06e9a4b51eca90a4b039c2710e') + version('2017.06', git=url, tag='release-2017.06') + version('master', git=url) parallel = False diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index d2fc86a7fb2..7b56e57a4ec 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -34,17 +34,18 @@ class Hpctoolkit(Package): and attributes them to the full calling context in which they occur.""" homepage = "http://hpctoolkit.org" + url = "https://github.com/HPCToolkit/hpctoolkit" - # Note: No precise release tags/branches provided - version('5.4', git='https://github.com/HPCToolkit/hpctoolkit.git', - commit='d9ca2112762e5a06ea31b5295d793e4a83272d19') + version('2017.06', git=url, tag='release-2017.06') + version('master', git=url) variant('mpi', default=True, description='Enable MPI supoort') variant('papi', default=True, description='Enable PAPI counter support') - depends_on('hpctoolkit-externals') depends_on('papi', when='+papi') depends_on('mpi', when='+mpi') + depends_on('hpctoolkit-externals@2017.06', when='@2017.06') + depends_on('hpctoolkit-externals@master', when='@master') def install(self, spec, prefix): From fc237792b2d43977fa049456b7d4dfea46e82411 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Sat, 16 Sep 2017 01:12:02 -0600 Subject: [PATCH 1653/2394] gromacs: added 2016.4 (#5376) --- var/spack/repos/builtin/packages/gromacs/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index e6b3aff65fa..81d24ddd266 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -41,6 +41,7 @@ class Gromacs(CMakePackage): homepage = 'http://www.gromacs.org' url = 'http://ftp.gromacs.org/gromacs/gromacs-5.1.2.tar.gz' + version('2016.4', '19c8b5c85f3ec62df79d2249a3c272f8') version('2016.3', 'e9e3a41bd123b52fbcc6b32d09f8202b') version('5.1.4', 'ba2e34d59b3982603b4935d650c08040') version('5.1.2', '614d0be372f1a6f1f36382b7a6fcab98') From 1ce60976513d7caddf26733bc26ed1f513586d00 Mon Sep 17 00:00:00 2001 From: zenln Date: Sat, 16 Sep 2017 02:14:57 -0500 Subject: [PATCH 1654/2394] Bioawk: added new package (#5375) --- .../repos/builtin/packages/bioawk/package.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 var/spack/repos/builtin/packages/bioawk/package.py diff --git a/var/spack/repos/builtin/packages/bioawk/package.py b/var/spack/repos/builtin/packages/bioawk/package.py new file mode 100644 index 00000000000..80d90c7149f --- /dev/null +++ b/var/spack/repos/builtin/packages/bioawk/package.py @@ -0,0 +1,51 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +from shutil import copyfile +from shutil import copymode + + +class Bioawk(MakefilePackage): + """Bioawk is an extension to Brian Kernighan's awk, adding the support of + several common biological data formats, including optionally gzip'ed + BED, GFF, SAM, VCF, FASTA/Q and TAB-delimited formats with column names. + """ + + homepage = "https://github.com/lh3/bioawk" + url = "https://github.com/lh3/bioawk/archive/v1.0.zip" + + version('1.0', 'e423942689f944369de270900978be28') + + depends_on('zlib') + depends_on('bison', type=('build')) + + parallel = False + + def install(self, spec, prefix): + mkdirp(prefix.bin) + copyfile("bioawk", join_path(prefix.bin, "bioawk")) + copymode("bioawk", join_path(prefix.bin, "bioawk")) + copyfile("maketab", join_path(prefix.bin, "maketab")) + copymode("maketab", join_path(prefix.bin, "maketab")) From 05b309a487fecb126cd6f4d057187410260e7a09 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 16 Sep 2017 10:10:08 +0200 Subject: [PATCH 1655/2394] add Intel 2018 libraries (#5354) --- var/spack/repos/builtin/packages/intel-daal/package.py | 2 ++ var/spack/repos/builtin/packages/intel-ipp/package.py | 2 ++ var/spack/repos/builtin/packages/intel-mkl/package.py | 2 ++ var/spack/repos/builtin/packages/intel-mpi/package.py | 2 ++ 4 files changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/intel-daal/package.py b/var/spack/repos/builtin/packages/intel-daal/package.py index 68af105038d..f8b908a005f 100644 --- a/var/spack/repos/builtin/packages/intel-daal/package.py +++ b/var/spack/repos/builtin/packages/intel-daal/package.py @@ -33,6 +33,8 @@ class IntelDaal(IntelPackage): homepage = "https://software.intel.com/en-us/daal" + version('2018.0.128', '5779e670f67c33cc1c6cdcdca5e4636e', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/12072/l_daal_2018.0.128.tgz") version('2017.3.196', '93221eaeb560917a129d42fb2cf02500', url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11546/l_daal_2017.3.196.tgz") version('2017.2.174', 'f067d5d7b0f70914fba1f78da0361065', diff --git a/var/spack/repos/builtin/packages/intel-ipp/package.py b/var/spack/repos/builtin/packages/intel-ipp/package.py index a243d16c579..0479b8c4c08 100644 --- a/var/spack/repos/builtin/packages/intel-ipp/package.py +++ b/var/spack/repos/builtin/packages/intel-ipp/package.py @@ -33,6 +33,8 @@ class IntelIpp(IntelPackage): homepage = "https://software.intel.com/en-us/intel-ipp" + version('2018.0.128', 'e64190bc9041b52d9eed7e8ee91bf1de', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/12071/l_ipp_2018.0.128.tgz') version('2017.3.196', '47e53bd1a2740041f4d0be7c36b61a18', url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11545/l_ipp_2017.3.196.tgz") version('2017.2.174', '8ad7753ee30c5176c4931070334144bc', diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py index 9c9a25fabd0..c73279c302d 100644 --- a/var/spack/repos/builtin/packages/intel-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-mkl/package.py @@ -33,6 +33,8 @@ class IntelMkl(IntelPackage): homepage = "https://software.intel.com/en-us/intel-mkl" + version('2018.0.128', '0fa23779816a0f2ee23a396fc1af9978', + url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/12070/l_mkl_2018.0.128.tgz") version('2017.3.196', '4a2eb4bee789391d9c07d7c348a80702', url="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11544/l_mkl_2017.3.196.tgz") version('2017.2.174', 'ef39a12dcbffe5f4a0ef141b8759208c', diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py index 88a68e57ece..f7222d23007 100644 --- a/var/spack/repos/builtin/packages/intel-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-mpi/package.py @@ -33,6 +33,8 @@ class IntelMpi(IntelPackage): homepage = "https://software.intel.com/en-us/intel-mpi-library" + version('2018.0.128', '15b46fc6a3014595de897aa48d3a658b', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/12120/l_mpi_2018.0.128.tgz') version('2017.3.196', '721ecd5f6afa385e038777e5b5361dfb', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/11595/l_mpi_2017.3.196.tgz') version('2017.2.174', 'b6c2e62c3fb9b1558ede72ccf72cf1d6', From 9326925d451b2863ba0667d24e65bf6f13882cf5 Mon Sep 17 00:00:00 2001 From: Audrey Thoma Date: Sat, 16 Sep 2017 03:20:42 -0500 Subject: [PATCH 1656/2394] augustus: url fix (#5311) --- var/spack/repos/builtin/packages/augustus/package.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/var/spack/repos/builtin/packages/augustus/package.py b/var/spack/repos/builtin/packages/augustus/package.py index 69e72a062f4..91bf25ba1c9 100644 --- a/var/spack/repos/builtin/packages/augustus/package.py +++ b/var/spack/repos/builtin/packages/augustus/package.py @@ -30,10 +30,11 @@ class Augustus(MakefilePackage): genomic sequences""" homepage = "http://bioinf.uni-greifswald.de/augustus/" - url = "http://bioinf.uni-greifswald.de/augustus/binaries/augustus-3.2.3.tar.gz" + url = "http://bioinf.uni-greifswald.de/augustus/binaries/augustus-3.3.tar.gz" version('3.3', '9ebe494df78ebf6a43091cfc8551050c') - version('3.2.3', 'b8c47ea8d0c45aa7bb9a82626c8ff830') + version('3.2.3', 'b8c47ea8d0c45aa7bb9a82626c8ff830', + url='http://bioinf.uni-greifswald.de/augustus/binaries/old/augustus-3.2.3.tar.gz') depends_on('bamtools') depends_on('gsl') From d25b159dc3160ebf7e45c7803fd69d08c6e19510 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Sat, 16 Sep 2017 10:24:40 +0200 Subject: [PATCH 1657/2394] Cntk: fixed dependency on protobuf fixes #5266 (#5267) As protobuf has been converted to CMakePackage, it doesn't have a 'shared' variant anymore. --- var/spack/repos/builtin/packages/cntk/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/cntk/package.py b/var/spack/repos/builtin/packages/cntk/package.py index c79c0df8fbb..6c7481a34c2 100644 --- a/var/spack/repos/builtin/packages/cntk/package.py +++ b/var/spack/repos/builtin/packages/cntk/package.py @@ -47,7 +47,7 @@ class Cntk(Package): depends_on('openblas') depends_on('mpi') depends_on('boost') - depends_on('protobuf~shared') + depends_on('protobuf') # CNTK depends on kaldi@c02e8. # See https://github.com/Microsoft/CNTK/blob/master/Tools/docker/CNTK-CPUOnly-Image/Dockerfile#L105-L125 depends_on('kaldi@c024e8', when='+kaldi') From 5bb3538541b096149d7a9b123dd06ca0673239d3 Mon Sep 17 00:00:00 2001 From: ynanyam <31993194+ynanyam@users.noreply.github.com> Date: Sat, 16 Sep 2017 14:58:04 -0500 Subject: [PATCH 1658/2394] Feature/methycode (#5374) * methylcode: added package * pyfasta: added package * py-bsddb3: added package * py-bsddb3: added package * Update package.py * Update package.py * Update package.py * removed fixme comments * Update package.py * Update package.py * Update package.py * Update package.py * Update package.py * Update package.py * Update package.py * Update package.py --- .../builtin/packages/py-bsddb3/package.py | 40 +++++++++++++++++ .../builtin/packages/py-methylcode/package.py | 44 +++++++++++++++++++ .../builtin/packages/py-pyfasta/package.py | 39 ++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 var/spack/repos/builtin/packages/py-bsddb3/package.py create mode 100644 var/spack/repos/builtin/packages/py-methylcode/package.py create mode 100644 var/spack/repos/builtin/packages/py-pyfasta/package.py diff --git a/var/spack/repos/builtin/packages/py-bsddb3/package.py b/var/spack/repos/builtin/packages/py-bsddb3/package.py new file mode 100644 index 00000000000..1ba1578238e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-bsddb3/package.py @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyBsddb3(PythonPackage): + """This module provides a nearly complete wrapping of the Oracle/Sleepycat + C API for the Database Environment, Database, Cursor, Log Cursor, + Sequence and Transaction objects, and each of these is exposed + as a Python type in the bsddb3.db module.""" + + homepage = "://pypi.python.org/pypi/bsddb3/6.2.5" + url = "https://pypi.python.org/packages/ba/a7/131dfd4e3a5002ef30e20bee679d5e6bcb2fcc6af21bd5079dc1707a132c/bsddb3-6.2.5.tar.gz#md5=610267c189964c905a931990e1ba438c" + + version('6.2.5', '610267c189964c905a931990e1ba438c') + + depends_on('python@2.6:') + depends_on('py-setuptools') diff --git a/var/spack/repos/builtin/packages/py-methylcode/package.py b/var/spack/repos/builtin/packages/py-methylcode/package.py new file mode 100644 index 00000000000..9bdeed71ca4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-methylcode/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyMethylcode(PythonPackage): + """MethylCoder is a single program that takes of bisulfite-treated + reads and outputs per-base methylation data. """ + + homepage = "https://github.com/brentp/methylcode" + url = "https://github.com/brentp/methylcode/archive/master.zip" + + version('1.0.0', 'd0ba07c1ab2c74adddd1b23f8e5823e7') + + depends_on('python@2.7.0:2.7.999') + depends_on('py-six') + depends_on('py-setuptools') + depends_on('py-numpy') + depends_on('py-pyparsing') + depends_on('py-pyfasta') + depends_on('py-bsddb3') + depends_on('bowtie') diff --git a/var/spack/repos/builtin/packages/py-pyfasta/package.py b/var/spack/repos/builtin/packages/py-pyfasta/package.py new file mode 100644 index 00000000000..b346afe5513 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyfasta/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class PyPyfasta(PythonPackage): + """Pyfasta: fast, memory-efficient, pythonic (and command-line) + access to fasta sequence files""" + + homepage = "https://pypi.python.org/pypi/pyfasta/" + url = "https://pypi.python.org/packages/be/3f/794fbcdaaa2113f0a1d16a962463896c1a6bdab77bd63f33a8f16aae6cdc/pyfasta-0.5.2.tar.gz" + + version('0.5.2', 'bf61ab997dca329675c3eb2ee7cdfcf2') + + depends_on('python@2.6:') + depends_on('py-setuptools') + depends_on('py-numpy') From 847b24c94c21c742e068eec20464c85591118f8e Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Sat, 16 Sep 2017 22:00:32 +0200 Subject: [PATCH 1659/2394] New Pcakage: numactl (#5371) Adds the numactl tools and libnuma. --- .../repos/builtin/packages/numactl/package.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 var/spack/repos/builtin/packages/numactl/package.py diff --git a/var/spack/repos/builtin/packages/numactl/package.py b/var/spack/repos/builtin/packages/numactl/package.py new file mode 100644 index 00000000000..65e5282bf2c --- /dev/null +++ b/var/spack/repos/builtin/packages/numactl/package.py @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Numactl(AutotoolsPackage): + """NUMA support for Linux""" + + homepage = "http://oss.sgi.com/projects/libnuma/" + url = "https://github.com/numactl/numactl/archive/v2.0.11.tar.gz" + + version('2.0.11', 'b56d2367217cde390b4d8087e00773b8') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') From 7cec47aacd41d314ebcef8d585816d54b0c5961a Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 16 Sep 2017 22:05:17 +0200 Subject: [PATCH 1660/2394] trilinos: update md5 for 12.10.1 (#5362) --- var/spack/repos/builtin/packages/trilinos/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index f88abcfac17..c9b78efb00c 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -56,7 +56,7 @@ class Trilinos(CMakePackage): git='https://github.com/trilinos/Trilinos.git', tag='develop') version('master', git='https://github.com/trilinos/Trilinos.git', tag='master') - version('12.10.1', '40f28628b63310f9bd17c26d9ebe32b1') + version('12.10.1', '667333dbd7c0f031d47d7c5511fd0810') version('12.8.1', '01c0026f1e2050842857db941060ecd5') version('12.6.4', 'c2ea7b5aa0d10bcabdb9b9a6e3bac3ea') version('12.6.3', '8de5cc00981a0ca0defea6199b2fe4c1') From f710a520e5246bc95e95506b8831b72237c2172c Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sat, 16 Sep 2017 22:14:03 +0200 Subject: [PATCH 1661/2394] set CMAKE_PREFIX_PATH for cmake packages (#5364) * cmake: set CMAKE_PREFIX_PATH * cmake: use build/link immediate dependencies to construct CMAKE_PREFIX_PATH --- lib/spack/spack/build_systems/cmake.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index 026cf7903a2..edc9751c828 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -145,6 +145,11 @@ def _std_args(pkg): args.append('-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=FALSE') rpaths = ':'.join(spack.build_environment.get_rpaths(pkg)) args.append('-DCMAKE_INSTALL_RPATH:STRING={0}'.format(rpaths)) + # CMake's find_package() looks in CMAKE_PREFIX_PATH first, help CMake + # to find immediate link dependencies in right places: + deps = [d.prefix for d in + pkg.spec.dependencies(deptype=('build', 'link'))] + args.append('-DCMAKE_PREFIX_PATH:STRING={0}'.format(';'.join(deps))) return args @property From 707b773aa2a711cc21f86230249b8f43adea6518 Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Sat, 16 Sep 2017 14:14:24 -0600 Subject: [PATCH 1662/2394] Open MPI: add Open MPI 3.0.0 (#5360) Open MPI 3.0.0 is released! Add to spack. Signed-off-by: Howard Pritchard --- var/spack/repos/builtin/packages/openmpi/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index d62290e78ff..d4d8eee4da4 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -76,10 +76,11 @@ class Openmpi(AutotoolsPackage): """ homepage = "http://www.open-mpi.org" - url = "https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.bz2" + url = "https://www.open-mpi.org/software/ompi/v3.0/downloads/openmpi-3.0.0.tar.bz2" list_url = "http://www.open-mpi.org/software/ompi/" # Current + version('3.0.0', '757d51719efec08f9f1a7f32d58b3305') # libmpi.so.40.00.0 version('2.1.1', 'ae542f5cf013943ffbbeb93df883731b') # libmpi.so.20.10.1 version('2.1.0', '4838a5973115c44e14442c01d3f21d52') # libmpi.so.20.10.0 From 0558fd640eadc979f8f44e0ffaf8b212dbd1b9e0 Mon Sep 17 00:00:00 2001 From: "Kelly (KT) Thompson" Date: Sat, 16 Sep 2017 14:26:29 -0600 Subject: [PATCH 1663/2394] Improve external package location detection algorithm. (#5145) Also inspect `PATH` to help locate an external package and provide a test for getting path from module's PATH. Fixes #5141 --- lib/spack/spack/test/module_parsing.py | 3 ++- lib/spack/spack/util/module_cmd.py | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/test/module_parsing.py b/lib/spack/spack/test/module_parsing.py index 63eafcca26b..7483b66ebb1 100644 --- a/lib/spack/spack/test/module_parsing.py +++ b/lib/spack/spack/test/module_parsing.py @@ -53,7 +53,8 @@ def test_get_path_from_module(save_env): lines = ['prepend-path LD_LIBRARY_PATH /path/to/lib', 'setenv MOD_DIR /path/to', 'setenv LDFLAGS -Wl,-rpath/path/to/lib', - 'setenv LDFLAGS -L/path/to/lib'] + 'setenv LDFLAGS -L/path/to/lib', + 'prepend-path PATH /path/to/bin'] for line in lines: module_func = '() { eval `echo ' + line + ' bash filler`\n}' diff --git a/lib/spack/spack/util/module_cmd.py b/lib/spack/spack/util/module_cmd.py index c2448aa2782..a726023d957 100644 --- a/lib/spack/spack/util/module_cmd.py +++ b/lib/spack/spack/util/module_cmd.py @@ -187,6 +187,12 @@ def get_path_from_module(mod): if L >= 0: return line[L + 2:line.find('/lib')] + # If it sets the PATH, use it + for line in text: + if line.find('PATH') >= 0: + path = get_argument_from_module_line(line) + return path[:path.find('/bin')] + # Unable to find module path return None From 9aafe21b6328d5944469b7a0933e5a446133f876 Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Sun, 17 Sep 2017 14:47:16 +0200 Subject: [PATCH 1664/2394] Filter system paths from CMAKE_PREFIX_PATH (#5385) --- lib/spack/spack/build_systems/cmake.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py index edc9751c828..5b0f5526c99 100644 --- a/lib/spack/spack/build_systems/cmake.py +++ b/lib/spack/spack/build_systems/cmake.py @@ -29,6 +29,7 @@ import spack.build_environment from llnl.util.filesystem import working_dir, join_path +from spack.util.environment import filter_system_paths from spack.directives import depends_on, variant from spack.package import PackageBase, InstallError, run_after @@ -149,6 +150,7 @@ def _std_args(pkg): # to find immediate link dependencies in right places: deps = [d.prefix for d in pkg.spec.dependencies(deptype=('build', 'link'))] + deps = filter_system_paths(deps) args.append('-DCMAKE_PREFIX_PATH:STRING={0}'.format(';'.join(deps))) return args From 2d22a88a969fe1ab056e8b16d0b1da1602097cb8 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Sun, 17 Sep 2017 20:32:19 +0200 Subject: [PATCH 1665/2394] tbb: add 2018 (#5359) --- var/spack/repos/builtin/packages/intel-tbb/package.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/intel-tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py index e8bc197873e..dd23c3538d1 100644 --- a/var/spack/repos/builtin/packages/intel-tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-tbb/package.py @@ -35,7 +35,8 @@ class IntelTbb(Package): homepage = "http://www.threadingbuildingblocks.org/" # Only version-specific URL's work for TBB - # can also use https://github.com/01org/tbb/releases/ + version('2018.0', 'e54de69981905ad69eb9cf0226b9bf5f9a4ba065', + url='https://github.com/01org/tbb/archive/2018.tar.gz') version('2017.6', 'c0a722fd1ae66b40aeab25da6049086ef5f02f17', url='https://github.com/01org/tbb/archive/2017_U6.tar.gz') version('2017.5', '26f720729d322913912e99d1e4a36bd10625d3ca', From eb0ea7697ac3cc903051157f2580d03d073b325a Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 17 Sep 2017 15:31:32 -0700 Subject: [PATCH 1666/2394] Fix log error parsing bug introduced in c830eda0e (#5387) - '\b' in regular expression needs to be in a raw string (r'\b') - Regression test that would've caught this was unintentionally disabled - This fixes the string and the test --- lib/spack/spack/test/cmd/install.py | 4 +- lib/spack/spack/util/log_parse.py | 2 +- .../packages/build-error/package.py | 49 +++++++++++++++++++ 3 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 var/spack/repos/builtin.mock/packages/build-error/package.py diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 10dedeac68e..80ecc1249db 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -114,8 +114,8 @@ def test_package_output(tmpdir, capsys, install_mockery, mock_fetch): assert "'install'\nAFTER INSTALL" in out -def _test_install_output_on_build_error(builtin_mock, mock_archive, mock_fetch, - config, install_mockery, capfd): +def test_install_output_on_build_error(builtin_mock, mock_archive, mock_fetch, + config, install_mockery, capfd): # capfd interferes with Spack's capturing with capfd.disabled(): out = install('build-error', fail_on_error=False) diff --git a/lib/spack/spack/util/log_parse.py b/lib/spack/spack/util/log_parse.py index a9ff356aff8..53a0a7e7f28 100644 --- a/lib/spack/spack/util/log_parse.py +++ b/lib/spack/spack/util/log_parse.py @@ -86,7 +86,7 @@ def parse_log_events(logfile, context=6): log_events = [] for i, line in enumerate(lines): - if re.search('\berror:', line, re.IGNORECASE): + if re.search(r'\berror:', line, re.IGNORECASE): event = LogEvent( line.strip(), i + 1, diff --git a/var/spack/repos/builtin.mock/packages/build-error/package.py b/var/spack/repos/builtin.mock/packages/build-error/package.py new file mode 100644 index 00000000000..35e9ccc4715 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/build-error/package.py @@ -0,0 +1,49 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class BuildError(Package): + """This package has an install method that fails in a build script.""" + + homepage = "http://www.example.com/trivial_install" + url = "http://www.unit-test-should-replace-this-url/trivial_install-1.0.tar.gz" + + version('1.0', 'foobarbaz') + + def install(self, spec, prefix): + with open('configure', 'w') as f: + f.write("""#!/bin/sh\n +echo 'checking build system type... x86_64-apple-darwin16.6.0' +echo 'checking host system type... x86_64-apple-darwin16.6.0' +echo 'checking for gcc... /Users/gamblin2/src/spack/lib/spack/env/clang/clang' +echo 'checking whether the C compiler works... yes' +echo 'checking for C compiler default output file name... a.out' +echo 'checking for suffix of executables...' +echo 'configure: error: in /path/to/some/file:' +echo 'configure: error: cannot run C compiled programs.' +exit 1 +""") + configure() From 742cd7f1270e0fe6229a965b768c1613e653eb3b Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 17 Sep 2017 15:06:15 -0700 Subject: [PATCH 1667/2394] Remove redundant dest arguments in install.py --- lib/spack/spack/cmd/install.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index ee752222db9..f9d60c8f322 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -60,28 +60,28 @@ def setup_parser(subparser): '-j', '--jobs', action='store', type=int, help="explicitly set number of make jobs. default is #cpus") subparser.add_argument( - '--keep-prefix', action='store_true', dest='keep_prefix', + '--keep-prefix', action='store_true', help="don't remove the install prefix if installation fails") subparser.add_argument( - '--keep-stage', action='store_true', dest='keep_stage', + '--keep-stage', action='store_true', help="don't remove the build stage if installation succeeds") subparser.add_argument( - '--restage', action='store_true', dest='restage', + '--restage', action='store_true', help="if a partial install is detected, delete prior state") subparser.add_argument( '--source', action='store_true', dest='install_source', help="install source files in prefix") subparser.add_argument( - '-n', '--no-checksum', action='store_true', dest='no_checksum', + '-n', '--no-checksum', action='store_true', help="do not check packages against checksum") subparser.add_argument( - '-v', '--verbose', action='store_true', dest='verbose', + '-v', '--verbose', action='store_true', help="display verbose build output while installing") subparser.add_argument( - '--fake', action='store_true', dest='fake', + '--fake', action='store_true', help="fake install. just remove prefix and create a fake file") subparser.add_argument( - '-f', '--file', action='store_true', dest='file', + '-f', '--file', action='store_true', help="install from file. Read specs to install from .yaml files") cd_group = subparser.add_mutually_exclusive_group() @@ -93,7 +93,7 @@ def setup_parser(subparser): help="spec of the package to install" ) subparser.add_argument( - '--run-tests', action='store_true', dest='run_tests', + '--run-tests', action='store_true', help="run package level tests during installation" ) subparser.add_argument( From c7a789e2d61b85d081f65100f0d5ee40bf78928f Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 17 Sep 2017 15:07:44 -0700 Subject: [PATCH 1668/2394] Add --show-log-on-error option to `spack install` - converted `log_path` and `env_path` to properties of PackageBase. - InstallErrors in build_environment are now annotated with the package that caused them, in the 'pkg' attribute. - Add `--show-log-on-error` option to `spack install` that catches InstallErrors and prints the log to stderr if it exists. Note that adding a reference to the Pakcage allows a lot of stuff currently handled by do_install() and build_environment to be handled externally. --- lib/spack/spack/build_environment.py | 17 +++++++++++++++-- lib/spack/spack/cmd/install.py | 20 +++++++++++++++++++- lib/spack/spack/package.py | 21 ++++++++++----------- lib/spack/spack/test/cmd/install.py | 15 +++++++++++++++ 4 files changed, 59 insertions(+), 14 deletions(-) diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 66b7da9e55b..a456efb8ca0 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -598,6 +598,10 @@ def child_process(child_pipe, input_stream): target=child_process, args=(child_pipe, input_stream)) p.start() + except InstallError as e: + e.pkg = pkg + raise + finally: # Close the input stream in the parent process if input_stream is not None: @@ -606,6 +610,10 @@ def child_process(child_pipe, input_stream): child_result = parent_pipe.recv() p.join() + # let the caller know which package went wrong. + if isinstance(child_result, InstallError): + child_result.pkg = pkg + # If the child process raised an error, print its output here rather # than waiting until the call to SpackError.die() in main(). This # allows exception handling output to be logged from within Spack. @@ -676,10 +684,15 @@ def make_stack(tb, stack=None): class InstallError(spack.error.SpackError): - """Raised by packages when a package fails to install""" + """Raised by packages when a package fails to install. + + Any subclass of InstallError will be annotated by Spack wtih a + ``pkg`` attribute on failure, which the caller can use to get the + package for which the exception was raised. + """ -class ChildError(spack.error.SpackError): +class ChildError(InstallError): """Special exception class for wrapping exceptions from child processes in Spack's build environment. diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index f9d60c8f322..d42d06d06b2 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -27,6 +27,8 @@ import functools import os import platform +import shutil +import sys import time import xml.dom.minidom import xml.etree.ElementTree as ET @@ -68,6 +70,9 @@ def setup_parser(subparser): subparser.add_argument( '--restage', action='store_true', help="if a partial install is detected, delete prior state") + subparser.add_argument( + '--show-log-on-error', action='store_true', + help="print full build log to stderr if build fails") subparser.add_argument( '--source', action='store_true', dest='install_source', help="install source files in prefix") @@ -367,13 +372,26 @@ def install(parser, args, **kwargs): for s in spec.dependencies(): p = spack.repo.get(s) p.do_install(**kwargs) + else: package = spack.repo.get(spec) kwargs['explicit'] = True package.do_install(**kwargs) + + except InstallError as e: + if args.show_log_on_error: + e.print_context() + if not os.path.exists(e.pkg.build_log_path): + tty.error("'spack install' created no log.") + else: + sys.stderr.write('Full build log:\n') + with open(e.pkg.build_log_path) as log: + shutil.copyfileobj(log, sys.stderr) + raise + finally: PackageBase.do_install = saved_do_install - # Dump log file if asked to + # Dump test output if asked to if args.log_format is not None: test_suite.dump(log_filename) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 86223688faa..897b5ea9bcf 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -785,6 +785,14 @@ def stage(self, stage): """Allow a stage object to be set to override the default.""" self._stage = stage + @property + def env_path(self): + return os.path.join(self.stage.source_path, 'spack-build.env') + + @property + def log_path(self): + return os.path.join(self.stage.source_path, 'spack-build.out') + def _make_fetcher(self): # Construct a composite fetcher that always contains at least # one element (the root package). In case there are resources @@ -1331,20 +1339,11 @@ def build_process(): self.stage.chdir_to_source() # Save the build environment in a file before building. - env_path = join_path(os.getcwd(), 'spack-build.env') - - # Redirect I/O to a build log (and optionally to - # the terminal) - log_path = join_path(os.getcwd(), 'spack-build.out') - - # FIXME : refactor this assignment - self.log_path = log_path - self.env_path = env_path - dump_environment(env_path) + dump_environment(self.env_path) # Spawn a daemon that reads from a pipe and redirects # everything to log_path - with log_output(log_path, echo, True) as logger: + with log_output(self.log_path, echo, True) as logger: for phase_name, phase_attr in zip( self.phases, self._InstallPhase_phases): diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 80ecc1249db..66b79642a38 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -142,3 +142,18 @@ def test_install_with_source( spec.prefix.share, 'trivial-install-test-package', 'src') assert filecmp.cmp(os.path.join(mock_archive.path, 'configure'), os.path.join(src, 'configure')) + + +def test_show_log_on_error(builtin_mock, mock_archive, mock_fetch, + config, install_mockery, capfd): + """Make sure --show-log-on-error works.""" + with capfd.disabled(): + out = install('--show-log-on-error', 'build-error', + fail_on_error=False) + assert isinstance(install.error, spack.build_environment.ChildError) + assert install.error.pkg.name == 'build-error' + assert 'Full build log:' in out + + errors = [line for line in out.split('\n') + if 'configure: error: cannot run C compiled programs' in line] + assert len(errors) == 2 From 2f269c391987c2fc7129c92acc0c1c4fede347d1 Mon Sep 17 00:00:00 2001 From: Milton Woods Date: Tue, 19 Sep 2017 04:10:54 +1000 Subject: [PATCH 1669/2394] mesa: merge multiple branches into one (#5170) Merge work from multiple contributors on the mesa package. This includes the following changes and decisions: * Added in mesa +hwrender support * make +swrender the default selection since this represents a very common usage case (ie, cluster usage) * leave ~llvm as the default, since inadvertently building this package could take a very long time. May need to revisit this assumption in the future since the performance difference can be quite substantial. * build libGLESv1+2 and libGL for all variants * avoid dependence on dri/libdrm when ~hwrender * disable gallium drivers if none are requested --- .../repos/builtin/packages/mesa/package.py | 142 +++++++++++++----- 1 file changed, 105 insertions(+), 37 deletions(-) diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index 33d05012287..1a26b4974c6 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -2,8 +2,7 @@ # Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. # Produced at the Lawrence Livermore National Laboratory. # -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# This file is released as part of spack under the LGPL license. # LLNL-CODE-647188 # # For details, see https://github.com/llnl/spack @@ -22,6 +21,7 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## + from spack import * @@ -34,66 +34,109 @@ class Mesa(AutotoolsPackage): list_url = "https://mesa.freedesktop.org/archive" list_depth = 2 + version('17.1.5', '6cf936fbcaadd98924298a7009e8265d') + version('17.1.4', 'be2ef7c9edec23b07f74f6512a6a6fa5') version('17.1.3', '1946a93d543bc219427e2bebe2ac4752') + version('17.1.1', 'a4844bc6052578574f9629458bcbb749') version('13.0.6', '1e5a769bc6cfd839cf3febcb179c27cc') version('12.0.6', '1a3d4fea0656c208db59289e4ed33b3f') version('12.0.3', '1113699c714042d8c4df4766be8c57d8') - variant('swrender', default=False, - description="Build with (gallium) software rendering.") - + variant('swrender', default=True, + description="Build with (gallium) software rendering.") + variant('hwrender', default=False, + description="Build with (DRI) hardware rendering.") variant('llvm', default=False, - description="Use llvm for rendering pipes.") + description="Use llvm for rendering pipes.") # General dependencies - depends_on('python@2.6.4:') - depends_on('py-mako@0.3.4:', type=('build', 'run')) + depends_on('pkg-config@0.9.0:', type='build') depends_on('flex@2.5.35:', type='build') depends_on('bison@2.4.1:', type='build') - depends_on('pkg-config@0.9.0:', type='build') - - # Off-screen with llvmpipe - # Note: there must be a better way of selecting the preferred llvm - depends_on('llvm+link_dylib', when='+llvm') + depends_on('binutils', type='build') + depends_on('python@2.6.4:', type='build') + depends_on('py-mako@0.3.4:', type='build') + depends_on('gettext') + depends_on('icu4c') + depends_on('expat') + depends_on('libpthread-stubs') + depends_on('openssl') + depends_on('xproto') + depends_on('glproto@1.4.14:') + depends_on('presentproto@1.0:') + depends_on('libxcb@1.9.3:') + depends_on('libx11') + depends_on('libxext') + depends_on('libxshmfence@1.1:') + depends_on('libxdamage') + depends_on('libxfixes') + depends_on('libxv') + depends_on('libxvmc') # For DRI and hardware acceleration - depends_on('libpthread-stubs') - depends_on('libdrm') - depends_on('openssl') - depends_on('libxcb@1.9.3:') - depends_on('libxshmfence@1.1:', when='~swrender') - depends_on('libx11', when='~swrender') - depends_on('libxext', when='~swrender') - depends_on('libxdamage', when='~swrender') - depends_on('libxfixes') - # depends_on('expat', when='~swrender') - depends_on('libelf', when='+llvm~swrender') + depends_on('dri2proto@2.6:', type='build', when='+hwrender') + depends_on('dri3proto@1.0:', type='build', when='+hwrender') + depends_on('libdrm', when='+hwrender') - depends_on('glproto@1.4.14:', type='build', when='~swrender') - depends_on('dri2proto@2.6:', type='build', when='~swrender') - depends_on('dri3proto@1.0:', type='build', when='~swrender') - depends_on('presentproto@1.0:', type='build', when='~swrender') - - # TODO: Add package for systemd, provides libudev - # Using the system package manager to install systemd didn't work for me + depends_on('llvm@:3.8.1+link_dylib', when='@12:12.99+llvm') + depends_on('llvm@:3.9.1+link_dylib', when='@13:13.99+llvm') + depends_on('llvm+link_dylib', when='+llvm') + depends_on('libelf', when='+llvm') def configure_args(self): + """Build drivers for platforms supported by spack; + exclude drivers for embedded systems. + """ spec = self.spec - args = [] + args = ['--enable-glx', '--enable-glx-tls'] drivers = [] + if '+swrender' in spec: drivers = ['swrast'] - # Needs +llvm, but also C++14? -> drivers.append('swr') args.extend([ + '--disable-osmesa', + '--enable-gallium-osmesa', + '--enable-texture-float', + ]) + if '+llvm' in spec: + # For @17.1.1:17.1.2 the swr driver requires C++14 support + # Should be fixed in 17.1.3, but can still encounter problems + if spec.version >= Version('17'): + if spec.satisfies('%gcc@4.9:'): + drivers.append('swr') + else: + drivers.append('swr') + else: + args.append('--disable-gallium-osmesa') + # Fallback for "~hwrender~swrender" -> old osmesa + if '~hwrender' in spec: + args.append('--enable-osmesa') + + if '+hwrender' in spec: + args.append('--enable-xa') + if spec.version >= Version('17'): + args.append('--with-platforms=x11,drm') + else: + args.append('--with-egl-platforms=x11,drm') + drivers.extend([ + 'svga', 'i915', 'r600', 'nouveau', 'virgl' + ]) + + # These hardware drivers need llvm + if '+llvm' in spec: + drivers.extend(['r300', 'radeonsi']) + + else: + args.extend([ + '--disable-xa', '--disable-dri', + '--disable-dri3', '--disable-egl', '--disable-gbm', - '--disable-gles1', - '--disable-glx', '--disable-xvmc', - '--enable-texture-float', - '--enable-gallium-osmesa', ]) + if spec.version >= Version('17'): + args.append('--with-platforms=x11') if '+llvm' in spec: if self.spec.version < Version('17'): @@ -108,5 +151,30 @@ def configure_args(self): if drivers: args.append('--with-gallium-drivers=' + ','.join(drivers)) + else: + args.append('--without-gallium-drivers') + + # Avoid errors due to missing clock_gettime symbol: + arch = spec.architecture + if arch.platform == 'linux': + args.append('LIBS=-lrt') return args + + def configure(self, spec, prefix): + """Configure mesa, detecting if libsysfs is required + for DRI support on the build host. + """ + options = ['--prefix={0}'.format(prefix)] + self.configure_args() + + try: + # First attempt uses libudev: + configure(*options) + except ProcessError: + if '+hwrender' in spec and not spec.satisfies('@13:'): + print('Configuring with libudev failed ... ' + ' trying libsysfs ...') + options.append('--enable-sysfs') + configure(*options) + else: + raise From 832791a2bbfeed9af761105cf84b75879d19ca8b Mon Sep 17 00:00:00 2001 From: Pramod S Kumbhar Date: Mon, 18 Sep 2017 22:35:42 +0200 Subject: [PATCH 1670/2394] Improve scorep package with different compilers and mpi providers (#5386) * Add --with-mpi=spec['mpi'].name at configure step to avoid error when finding 2 MPI implementations * Improve scorep package with different compilers and mpi providers --- .../repos/builtin/packages/scorep/package.py | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index 8471b70f8a3..830935f15f5 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -84,14 +84,28 @@ def configure_args(self): "--with-papi-header=%s" % spec['papi'].prefix.include, "--with-papi-lib=%s" % spec['papi'].prefix.lib, "--with-pdt=%s" % spec['pdt'].prefix.bin, - "--enable-shared", - ] + "--enable-shared"] + + cname = spec.compiler.name + config_args.append('--with-nocross-compiler-suite={0}'.format(cname)) + + if spec.satisfies('^intel-mpi'): + config_args.append('--with-mpi=intel3') + elif spec.satisfies('^mpich') or spec.satisfies('^mvapich2'): + config_args.append('--with-mpi=mpich3') + elif spec.satisfies('^openmpi'): + config_args.append('--with-mpi=openmpi') if '~shmem' in spec: config_args.append("--without-shmem") config_args.extend([ 'CFLAGS={0}'.format(self.compiler.pic_flag), - 'CXXFLAGS={0}'.format(self.compiler.pic_flag) + 'CXXFLAGS={0}'.format(self.compiler.pic_flag), + 'MPICC={0}'.format(spec['mpi'].mpicc), + 'MPICXX={0}'.format(spec['mpi'].mpicxx), + 'MPIF77={0}'.format(spec['mpi'].mpif77), + 'MPIFC={0}'.format(spec['mpi'].mpifc) ]) + return config_args From efcd8e6f7f67390ac9481197f27f6c893e90eecf Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 18 Sep 2017 16:18:27 -0600 Subject: [PATCH 1671/2394] lammps: fix checksum (#5342) --- var/spack/repos/builtin/packages/lammps/package.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 17147b69ab2..7c14dca283b 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -28,11 +28,15 @@ class Lammps(CMakePackage): """LAMMPS stands for Large-scale Atomic/Molecular Massively - Parallel Simulator.""" + Parallel Simulator. This package uses patch releases, not + stable release. + See https://github.com/LLNL/spack/pull/5342 for a detailed + discussion. + """ homepage = "http://lammps.sandia.gov/" - url = "https://github.com/lammps/lammps/archive/stable_01Sep2017.tar.gz" + url = "https://github.com/lammps/lammps/archive/patch_1Sep2017.tar.gz" - version('20170901', 'c498680052f80c6ddb880052ad369af0') + version('20170901', '767e7f07289663f033474dfe974974e7') def url_for_version(self, version): vdate = dt.datetime.strptime(str(version), "%Y%m%d") From 6d8614f6715fa61c6846f4c202cb51c58d67ac71 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 18 Sep 2017 16:32:20 -0600 Subject: [PATCH 1672/2394] bml: add shared variant (#5380) --- var/spack/repos/builtin/packages/bml/package.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/var/spack/repos/builtin/packages/bml/package.py b/var/spack/repos/builtin/packages/bml/package.py index 1c91b6fff25..31bbc020705 100644 --- a/var/spack/repos/builtin/packages/bml/package.py +++ b/var/spack/repos/builtin/packages/bml/package.py @@ -36,5 +36,13 @@ class Bml(CMakePackage): version('develop', git='https://github.com/lanl/bml', branch='master') version('1.1.0', git='https://github.com/lanl/bml', tag='v1.1.0') + variant('shared', default=True, description='Build shared libs') + depends_on("blas") depends_on("lapack") + + def cmake_args(self): + return [ + '-DBUILD_SHARED_LIBS={0}'.format( + 'ON' if '+shared' in self.spec else 'OFF') + ] From 1098d78d2a7440651f99d177b4e7a62e6e1158d5 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 18 Sep 2017 16:36:42 -0600 Subject: [PATCH 1673/2394] qmd-progress: add shared variant (#5381) --- var/spack/repos/builtin/packages/qmd-progress/package.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/var/spack/repos/builtin/packages/qmd-progress/package.py b/var/spack/repos/builtin/packages/qmd-progress/package.py index 09bb45e1a90..2a3a4068404 100644 --- a/var/spack/repos/builtin/packages/qmd-progress/package.py +++ b/var/spack/repos/builtin/packages/qmd-progress/package.py @@ -39,6 +39,7 @@ class QmdProgress(CMakePackage): variant('graphlib', default=False, description='Build with Metis Suppport') variant('mpi', default=True, description='Build with MPI Support') + variant('shared', default=True, description='Build shared libs') depends_on('bml') depends_on('mpi', when='+mpi') @@ -47,6 +48,10 @@ class QmdProgress(CMakePackage): def cmake_args(self): spec = self.spec args = ['-DCMAKE_Fortran_FLAGS=-ffree-line-length-none'] + if '+shared' in spec: + args.append('-DBUILD_SHARED_LIBS=ON') + else: + args.append('-DBUILD_SHARED_LIBS=OFF') if '+mpi' in spec: args.append('-DPROGRESS_MPI=yes') args.append('-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc) From bb042f7bd76e364c3be6791c580b9426a4007627 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Mon, 18 Sep 2017 20:24:17 -0600 Subject: [PATCH 1674/2394] latte: fix url and add shared variant (#5358) --- .../repos/builtin/packages/latte/package.py | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/var/spack/repos/builtin/packages/latte/package.py b/var/spack/repos/builtin/packages/latte/package.py index e63c6ab98d3..cd4c06e4748 100644 --- a/var/spack/repos/builtin/packages/latte/package.py +++ b/var/spack/repos/builtin/packages/latte/package.py @@ -29,18 +29,34 @@ class Latte(CMakePackage): """Open source density functional tight binding molecular dynamics.""" - homepage = "https://gitlab.com/exaalt/latte" - url = "https://gitlab.com/exaalt/latte/tags/v1.0" + homepage = "https://github.com/lanl/latte" + url = "https://github.com/lanl/latte/tarball/v1.0" - version('develop', git='https://gitlab.com/exaalt/latte', branch='cmake') + version('develop', git='https://github.com/lanl/latte', branch='master') + + variant('mpi', default=True, + description='Build with mpi') + variant('progress', default=False, + description='Use progress for fast') + variant('shared', default=True, description='Build shared libs') depends_on("cmake@3.1:", type='build') depends_on('blas') depends_on('lapack') + depends_on('mpi', when='+mpi') + depends_on('qmd-progress', when='+progress') root_cmakelists_dir = 'cmake' def cmake_args(self): - options = ['-DBUILD_SHARED_LIBS=ON'] + options = [] + if '+shared' in self.spec: + options.append('-DBUILD_SHARED_LIBS=ON') + else: + options.append('-DBUILD_SHARED_LIBS=OFF') + if '+mpi' in self.spec: + options.append('-DO_MPI=yes') + if '+progress' in self.spec: + options.append('-DPROGRESS=yes') return options From df8e7d75907d4cd565a263a522930bfbccf4d95c Mon Sep 17 00:00:00 2001 From: healther Date: Tue, 19 Sep 2017 04:28:33 +0200 Subject: [PATCH 1675/2394] add variant gmock to googletest (#5278) --- var/spack/repos/builtin/packages/googletest/package.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py index 48dfcabb2f7..849621c4560 100644 --- a/var/spack/repos/builtin/packages/googletest/package.py +++ b/var/spack/repos/builtin/packages/googletest/package.py @@ -34,11 +34,18 @@ class Googletest(CMakePackage): version('1.7.0', '5eaf03ed925a47b37c8e1d559eb19bc4') version('1.6.0', '90407321648ab25b067fcd798caf8c78') + variant('gmock', default=False, description='Build with gmock') + conflicts('+gmock', when='@:1.7.0') + def cmake_args(self): spec = self.spec if '@1.8.0:' in spec: # New style (contains both Google Mock and Google Test) - options = ['-DBUILD_GMOCK=OFF', '-DBUILD_GTEST=ON'] + options = ['-DBUILD_GTEST=ON'] + if '+gmock' in spec: + options.append('-DBUILD_GMOCK=ON') + else: + options.append('-DBUILD_GMOCK=OFF') else: # Old style (contains only GTest) options = [] From 15f844f2915d88343f466d7d870ea7dcca581da2 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 19 Sep 2017 04:32:52 +0200 Subject: [PATCH 1676/2394] HDF5: Fortran MPI needs Numactl (#5372) --- var/spack/repos/builtin/packages/hdf5/package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index 4cc2ecbd65b..d6c53c92a6d 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -65,6 +65,7 @@ class Hdf5(AutotoolsPackage): description='Produce position-independent code (for shared libs)') depends_on('mpi', when='+mpi') + depends_on('numactl', when='+mpi+fortran') depends_on('szip', when='+szip') depends_on('zlib@1.1.2:') From 34d2762b1f6b8ef905403eabee7d73f3951e6a57 Mon Sep 17 00:00:00 2001 From: Gregory Lee Date: Mon, 18 Sep 2017 20:05:26 -0700 Subject: [PATCH 1677/2394] added python version 2.7.14 and 3.6.2 packages (#5389) --- var/spack/repos/builtin/packages/python/package.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index fa6f3e33a17..1c48c41ddaf 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -47,6 +47,7 @@ class Python(AutotoolsPackage): list_url = "https://www.python.org/downloads/" list_depth = 1 + version('3.6.2', 'e1a36bfffdd1d3a780b1825daf16e56c') version('3.6.1', '2d0fc9f3a5940707590e07f03ecb08b9') version('3.6.0', '3f7062ccf8be76491884d0e47ac8b251') version('3.5.2', '3fe8434643a78630c61c6464fe2e7e72') @@ -56,7 +57,8 @@ class Python(AutotoolsPackage): version('3.3.6', 'cdb3cd08f96f074b3f3994ccb51063e9') version('3.2.6', '23815d82ae706e9b781ca65865353d39') version('3.1.5', '02196d3fc7bc76bdda68aa36b0dd16ab') - version('2.7.13', '17add4bf0ad0ec2f08e0cae6d205c700', preferred=True) + version('2.7.14', 'cee2e4b33ad3750da77b2e85f2f8b724', preferred=True) + version('2.7.13', '17add4bf0ad0ec2f08e0cae6d205c700') version('2.7.12', '88d61f82e3616a4be952828b3694109d') version('2.7.11', '6b6076ec9e93f05dd63e47eb9c15728b') version('2.7.10', 'd7547558fd673bd9d38e2108c6b42521') From 081403f2805f77ba6a1e555cf99b2034062428e2 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 19 Sep 2017 14:13:26 +0200 Subject: [PATCH 1678/2394] adios: fixed conditional dependencies on libevpath and dataspaces (#5392) fixes #5379 --- var/spack/repos/builtin/packages/adios/package.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py index 01013958de2..b7b5f58e939 100644 --- a/var/spack/repos/builtin/packages/adios/package.py +++ b/var/spack/repos/builtin/packages/adios/package.py @@ -95,12 +95,10 @@ class Adios(AutotoolsPackage): # optional transports & file converters depends_on('hdf5@1.8:+mpi', when='+hdf5') depends_on('netcdf', when='+netcdf') - depends_on('libevpath', when='+flexpath') - depends_on('libevpath', when='+staging') - depends_on('dataspaces+mpi', when='+dataspaces') - depends_on('dataspaces+mpi', when='+staging') + depends_on('libevpath', when='staging=flexpath') + depends_on('dataspaces+mpi', when='staging=dataspaces') - for p in ['+hdf5', '+netcdf', '+flexpath', '+dataspaces', '+staging']: + for p in ['+hdf5', '+netcdf', 'staging=flexpath', 'staging=dataspaces']: conflicts(p, when='~mpi') build_directory = 'spack-build' From b1d129e68199a94b6210af0a6d8e2aa5b4df576e Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 19 Sep 2017 21:34:20 +0200 Subject: [PATCH 1679/2394] Modulefiles generated with a template engine (#3183) * Module files now are generated using a template engine refers #2902 #3173 jinja2 has been hooked into Spack. The python module `modules.py` has been splitted into several modules under the python package `spack/modules`. Unit tests stressing module file generation have been refactored accordingly. The module file generator for Lmod has been extended to multi-providers and deeper hierarchies. * Improved the support for templates in module files. Added an entry in `config.yaml` (`template_dirs`) to list all the directories where Spack could find templates for `jinja2`. Module file generators have a simple override mechanism to override template selection ('modules.yaml' beats 'package.py' beats 'default'). * Added jinja2 and MarkupSafe to vendored packages. * Spec.concretize() sets mutual spec-package references The correct place to set the mutual references between spec and package objects at the end of concretization. After a call to concretize we should now be ensured that spec is the same object as spec.package.spec. Code in `build_environment.py` that was performing the same operation has been turned into an assertion to be defensive on the new behavior. * Improved code and data layout for modules and related tests. Common fixtures related to module file generation have been extracted in `conftest.py`. All the mock configurations for module files have been extracted from python code and have been put into their own yaml file. Added a `context_property` decorator for the template engine, to make it easy to define dictionaries out of properties. The default for `verbose` in `modules.yaml` is now False instead of True. * Extendable module file contexts + short description from docstring The contexts that are used in conjunction with `jinja2` templates to generate module files can now be extended from package.py and modules.yaml. Module files generators now infer the short description from package.py docstring (and as you may expect it's the first paragraph) * 'module refresh' regenerates all modules by default `module refresh` without `--module-type` specified tries to regenerate all known module types. The same holds true for `module rm` Configure options used at build time are extracted and written into the module files where possible. * Fixed python3 compatibility, tests for Lmod and Tcl. Added test for exceptional paths of execution when generating Lmod module files. Fixed a few compatibility issues with python3. Fixed a bug in Tcl with naming_scheme and autoload + unit tests * Updated module file tutorial docs. Fixed a few typos in docstrings. The reference section for module files has been reorganized. The idea is to have only three topics at the highest level: - shell support + spack load/unload use/unuse - module file generation (a.k.a. APIs + modules.yaml) - module file maintenance (spack module refresh/rm) Module file generation will cover the entries in modules.yaml Also: - Licenses have been updated to include NOTICE and extended to 2017 - docstrings have been reformatted according to Google style * Removed redundant arguments to RPackage and WafPackage. All the callbacks in `RPackage` and `WafPackage` that are not build phases have been modified not to accept a `spec` and a `prefix` argument. This permits to leverage the common `configure_args` signature to insert by default the configuration arguments into the generated module files. I think it's preferable to handling those packages differently than `AutotoolsPackage`. Besides only one package seems to override one of these methods. * Fixed broken indentation + improved resiliency of refresh Fixed broken indentation in `spack module refresh` (probably a rebase gone silently wrong?). Filter the writers for blacklisted specs before searching for name clashes. An error with a single writer will not stop regeneration, but instead will print a warning and continue the command. --- .codecov.yml | 4 + etc/spack/defaults/config.yaml | 3 + etc/spack/defaults/modules.yaml | 4 + lib/spack/docs/module_file_support.rst | 335 ++-- lib/spack/docs/tutorial_modules.rst | 15 +- lib/spack/external/__init__.py | 2 + lib/spack/external/jinja2/AUTHORS | 33 + lib/spack/external/jinja2/LICENSE | 31 + lib/spack/external/jinja2/README.rst | 51 + lib/spack/external/jinja2/__init__.py | 82 + lib/spack/external/jinja2/_compat.py | 99 + lib/spack/external/jinja2/_stringdefs.py | 71 + lib/spack/external/jinja2/asyncfilters.py | 146 ++ lib/spack/external/jinja2/asyncsupport.py | 254 +++ lib/spack/external/jinja2/bccache.py | 362 ++++ lib/spack/external/jinja2/compiler.py | 1653 +++++++++++++++++ lib/spack/external/jinja2/constants.py | 32 + lib/spack/external/jinja2/debug.py | 372 ++++ lib/spack/external/jinja2/defaults.py | 54 + lib/spack/external/jinja2/environment.py | 1276 +++++++++++++ lib/spack/external/jinja2/exceptions.py | 146 ++ lib/spack/external/jinja2/ext.py | 609 ++++++ lib/spack/external/jinja2/filters.py | 1073 +++++++++++ lib/spack/external/jinja2/idtracking.py | 273 +++ lib/spack/external/jinja2/lexer.py | 737 ++++++++ lib/spack/external/jinja2/loaders.py | 481 +++++ lib/spack/external/jinja2/meta.py | 106 ++ lib/spack/external/jinja2/nodes.py | 939 ++++++++++ lib/spack/external/jinja2/optimizer.py | 49 + lib/spack/external/jinja2/parser.py | 898 +++++++++ lib/spack/external/jinja2/runtime.py | 787 ++++++++ lib/spack/external/jinja2/sandbox.py | 475 +++++ lib/spack/external/jinja2/tests.py | 185 ++ lib/spack/external/jinja2/utils.py | 624 +++++++ lib/spack/external/jinja2/visitor.py | 87 + lib/spack/external/markupsafe/AUTHORS | 13 + lib/spack/external/markupsafe/LICENSE | 33 + lib/spack/external/markupsafe/README.rst | 113 ++ lib/spack/external/markupsafe/__init__.py | 305 +++ lib/spack/external/markupsafe/_compat.py | 26 + lib/spack/external/markupsafe/_constants.py | 267 +++ lib/spack/external/markupsafe/_native.py | 46 + lib/spack/spack/__init__.py | 4 + lib/spack/spack/build_systems/r.py | 8 +- lib/spack/spack/build_systems/waf.py | 14 +- lib/spack/spack/cmd/common/arguments.py | 4 +- lib/spack/spack/cmd/module.py | 270 ++- lib/spack/spack/environment.py | 96 +- .../spack/hooks/module_file_generation.py | 24 +- lib/spack/spack/modules.py | 906 --------- lib/spack/spack/modules/__init__.py | 46 + lib/spack/spack/modules/common.py | 680 +++++++ lib/spack/spack/modules/dotkit.py | 78 + lib/spack/spack/modules/lmod.py | 418 +++++ lib/spack/spack/modules/tcl.py | 116 ++ lib/spack/spack/schema/config.py | 4 + lib/spack/spack/schema/modules.py | 7 + lib/spack/spack/tengine.py | 120 ++ lib/spack/spack/test/cmd/module.py | 28 +- lib/spack/spack/test/data/config.yaml | 4 + .../data/modules/dotkit/autoload_direct.yaml | 5 + .../modules/dotkit/override_template.yaml | 5 + .../data/modules/lmod/alter_environment.yaml | 27 + .../test/data/modules/lmod/autoload_all.yaml | 11 + .../data/modules/lmod/autoload_direct.yaml | 10 + .../test/data/modules/lmod/blacklist.yaml | 12 + .../data/modules/lmod/complex_hierarchy.yaml | 17 + .../modules/lmod/core_compilers_empty.yaml | 6 + .../modules/lmod/missing_core_compilers.yaml | 5 + .../spack/test/data/modules/lmod/no_hash.yaml | 10 + .../lmod/non_virtual_in_hierarchy.yaml | 11 + .../data/modules/lmod/override_template.yaml | 10 + .../data/modules/tcl/alter_environment.yaml | 21 + .../test/data/modules/tcl/autoload_all.yaml | 6 + .../data/modules/tcl/autoload_direct.yaml | 5 + .../test/data/modules/tcl/blacklist.yaml | 10 + .../test/data/modules/tcl/conflicts.yaml | 8 + .../data/modules/tcl/override_template.yaml | 5 + .../data/modules/tcl/prerequisites_all.yaml | 5 + .../modules/tcl/prerequisites_direct.yaml | 5 + .../spack/test/data/modules/tcl/suffix.yaml | 7 + .../data/modules/tcl/wrong_conflicts.yaml | 7 + lib/spack/spack/test/data/templates/a.txt | 1 + .../spack/test/data/templates/extension.tcl | 4 + .../spack/test/data/templates/override.txt | 1 + .../spack/test/data/templates_again/b.txt | 1 + .../templates_again/override_from_modules.txt | 1 + lib/spack/spack/test/environment.py | 28 + lib/spack/spack/test/modules.py | 521 ------ lib/spack/spack/test/modules/common.py | 53 + lib/spack/spack/test/modules/conftest.py | 154 ++ lib/spack/spack/test/modules/dotkit.py | 72 + lib/spack/spack/test/modules/lmod.py | 238 +++ lib/spack/spack/test/modules/tcl.py | 253 +++ lib/spack/spack/test/python_version.py | 8 + lib/spack/spack/test/tengine.py | 110 ++ lib/spack/spack/test/util/prefix.py | 2 +- templates/modules/modulefile.dk | 31 + templates/modules/modulefile.lua | 91 + templates/modules/modulefile.tcl | 82 + .../override-context-templates/package.py | 42 + .../override-module-templates/package.py | 39 + .../repos/builtin/packages/r-rmpi/package.py | 4 +- .../repos/builtin/packages/tut/package.py | 2 +- 104 files changed, 16146 insertions(+), 1778 deletions(-) create mode 100644 lib/spack/external/jinja2/AUTHORS create mode 100644 lib/spack/external/jinja2/LICENSE create mode 100644 lib/spack/external/jinja2/README.rst create mode 100644 lib/spack/external/jinja2/__init__.py create mode 100644 lib/spack/external/jinja2/_compat.py create mode 100644 lib/spack/external/jinja2/_stringdefs.py create mode 100644 lib/spack/external/jinja2/asyncfilters.py create mode 100644 lib/spack/external/jinja2/asyncsupport.py create mode 100644 lib/spack/external/jinja2/bccache.py create mode 100644 lib/spack/external/jinja2/compiler.py create mode 100644 lib/spack/external/jinja2/constants.py create mode 100644 lib/spack/external/jinja2/debug.py create mode 100644 lib/spack/external/jinja2/defaults.py create mode 100644 lib/spack/external/jinja2/environment.py create mode 100644 lib/spack/external/jinja2/exceptions.py create mode 100644 lib/spack/external/jinja2/ext.py create mode 100644 lib/spack/external/jinja2/filters.py create mode 100644 lib/spack/external/jinja2/idtracking.py create mode 100644 lib/spack/external/jinja2/lexer.py create mode 100644 lib/spack/external/jinja2/loaders.py create mode 100644 lib/spack/external/jinja2/meta.py create mode 100644 lib/spack/external/jinja2/nodes.py create mode 100644 lib/spack/external/jinja2/optimizer.py create mode 100644 lib/spack/external/jinja2/parser.py create mode 100644 lib/spack/external/jinja2/runtime.py create mode 100644 lib/spack/external/jinja2/sandbox.py create mode 100644 lib/spack/external/jinja2/tests.py create mode 100644 lib/spack/external/jinja2/utils.py create mode 100644 lib/spack/external/jinja2/visitor.py create mode 100644 lib/spack/external/markupsafe/AUTHORS create mode 100644 lib/spack/external/markupsafe/LICENSE create mode 100644 lib/spack/external/markupsafe/README.rst create mode 100644 lib/spack/external/markupsafe/__init__.py create mode 100644 lib/spack/external/markupsafe/_compat.py create mode 100644 lib/spack/external/markupsafe/_constants.py create mode 100644 lib/spack/external/markupsafe/_native.py delete mode 100644 lib/spack/spack/modules.py create mode 100644 lib/spack/spack/modules/__init__.py create mode 100644 lib/spack/spack/modules/common.py create mode 100644 lib/spack/spack/modules/dotkit.py create mode 100644 lib/spack/spack/modules/lmod.py create mode 100644 lib/spack/spack/modules/tcl.py create mode 100644 lib/spack/spack/tengine.py create mode 100644 lib/spack/spack/test/data/modules/dotkit/autoload_direct.yaml create mode 100644 lib/spack/spack/test/data/modules/dotkit/override_template.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/alter_environment.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/autoload_all.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/autoload_direct.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/blacklist.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/complex_hierarchy.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/core_compilers_empty.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/missing_core_compilers.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/no_hash.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/non_virtual_in_hierarchy.yaml create mode 100644 lib/spack/spack/test/data/modules/lmod/override_template.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/alter_environment.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/autoload_all.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/autoload_direct.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/blacklist.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/conflicts.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/override_template.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/prerequisites_all.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/prerequisites_direct.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/suffix.yaml create mode 100644 lib/spack/spack/test/data/modules/tcl/wrong_conflicts.yaml create mode 100644 lib/spack/spack/test/data/templates/a.txt create mode 100644 lib/spack/spack/test/data/templates/extension.tcl create mode 100644 lib/spack/spack/test/data/templates/override.txt create mode 100644 lib/spack/spack/test/data/templates_again/b.txt create mode 100644 lib/spack/spack/test/data/templates_again/override_from_modules.txt delete mode 100644 lib/spack/spack/test/modules.py create mode 100644 lib/spack/spack/test/modules/common.py create mode 100644 lib/spack/spack/test/modules/conftest.py create mode 100644 lib/spack/spack/test/modules/dotkit.py create mode 100644 lib/spack/spack/test/modules/lmod.py create mode 100644 lib/spack/spack/test/modules/tcl.py create mode 100644 lib/spack/spack/test/tengine.py create mode 100644 templates/modules/modulefile.dk create mode 100644 templates/modules/modulefile.lua create mode 100644 templates/modules/modulefile.tcl create mode 100644 var/spack/repos/builtin.mock/packages/override-context-templates/package.py create mode 100644 var/spack/repos/builtin.mock/packages/override-module-templates/package.py diff --git a/.codecov.yml b/.codecov.yml index 639b07012db..11af0577da8 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -17,6 +17,10 @@ coverage: threshold: 0.5 paths: - lib/spack/spack/build_systems + modules: + threshold: 0.5 + paths: + - lib/spack/spack/modules core: threshold: 0.5 paths: diff --git a/etc/spack/defaults/config.yaml b/etc/spack/defaults/config.yaml index f29acfe0184..b6a09a77380 100644 --- a/etc/spack/defaults/config.yaml +++ b/etc/spack/defaults/config.yaml @@ -18,6 +18,9 @@ config: # You can use $spack here to refer to the root of the spack instance. install_tree: $spack/opt/spack + # Locations where templates should be found + template_dirs: + - $spack/templates # Locations where different types of modules should be installed. module_roots: diff --git a/etc/spack/defaults/modules.yaml b/etc/spack/defaults/modules.yaml index 25fe2088e7e..8b6f1b40af1 100644 --- a/etc/spack/defaults/modules.yaml +++ b/etc/spack/defaults/modules.yaml @@ -40,3 +40,7 @@ modules: - PKG_CONFIG_PATH '': - CMAKE_PREFIX_PATH + + lmod: + hierarchy: + - mpi diff --git a/lib/spack/docs/module_file_support.rst b/lib/spack/docs/module_file_support.rst index d8f5e561a8e..6b874fbe97a 100644 --- a/lib/spack/docs/module_file_support.rst +++ b/lib/spack/docs/module_file_support.rst @@ -7,16 +7,10 @@ Modules The use of module systems to manage user environment in a controlled way is a common practice at HPC centers that is often embraced also by individual programmers on their development machines. To support this common practice -Spack provides integration with `Environment Modules +Spack integrates with `Environment Modules `_ , `LMod -`_ and `Dotkit `_ by: - -* generating module files after a successful installation -* providing commands that can leverage the spec syntax to manipulate modules - -In the following you will see how to activate shell support for commands in Spack -that requires it, and discover what benefits this may bring with respect to deal -directly with automatically generated module files. +`_ and `Dotkit `_ by +providing post-install hooks that generate module files and commands to manipulate them. .. note:: @@ -26,13 +20,58 @@ directly with automatically generated module files. .. _shell-support: -------------- -Shell support -------------- +---------------------------- +Using module files via Spack +---------------------------- -You can enable shell support by sourcing the appropriate setup file -in the ``$SPACK_ROOT/share/spack`` directory. -For ``bash`` or ``ksh`` users: +If you have installed a supported module system either manually or through +``spack bootstrap``, you should be able to run either ``module avail`` or +``use -l spack`` to see what module files have been installed. Here is +sample output of those programs, showing lots of installed packages: + +.. code-block:: console + + $ module avail + + --------------------------------------------------------------- ~/spack/share/spack/modules/linux-ubuntu14-x86_64 --------------------------------------------------------------- + autoconf-2.69-gcc-4.8-qextxkq hwloc-1.11.6-gcc-6.3.0-akcisez m4-1.4.18-gcc-4.8-ev2znoc openblas-0.2.19-gcc-6.3.0-dhkmed6 py-setuptools-34.2.0-gcc-6.3.0-fadur4s + automake-1.15-gcc-4.8-maqvukj isl-0.18-gcc-4.8-afi6taq m4-1.4.18-gcc-6.3.0-uppywnz openmpi-2.1.0-gcc-6.3.0-go2s4z5 py-six-1.10.0-gcc-6.3.0-p4dhkaw + binutils-2.28-gcc-4.8-5s7c6rs libiconv-1.15-gcc-4.8-at46wg3 mawk-1.3.4-gcc-4.8-acjez57 openssl-1.0.2k-gcc-4.8-dkls5tk python-2.7.13-gcc-6.3.0-tyehea7 + bison-3.0.4-gcc-4.8-ek4luo5 libpciaccess-0.13.4-gcc-6.3.0-gmufnvh mawk-1.3.4-gcc-6.3.0-ostdoms openssl-1.0.2k-gcc-6.3.0-gxgr5or readline-7.0-gcc-4.8-xhufqhn + bzip2-1.0.6-gcc-4.8-iffrxzn libsigsegv-2.11-gcc-4.8-pp2cvte mpc-1.0.3-gcc-4.8-g5mztc5 pcre-8.40-gcc-4.8-r5pbrxb readline-7.0-gcc-6.3.0-zzcyicg + bzip2-1.0.6-gcc-6.3.0-bequudr libsigsegv-2.11-gcc-6.3.0-7enifnh mpfr-3.1.5-gcc-4.8-o7xm7az perl-5.24.1-gcc-4.8-dg5j65u sqlite-3.8.5-gcc-6.3.0-6zoruzj + cmake-3.7.2-gcc-6.3.0-fowuuby libtool-2.4.6-gcc-4.8-7a523za mpich-3.2-gcc-6.3.0-dmvd3aw perl-5.24.1-gcc-6.3.0-6uzkpt6 tar-1.29-gcc-4.8-wse2ass + curl-7.53.1-gcc-4.8-3fz46n6 libtool-2.4.6-gcc-6.3.0-n7zmbzt ncurses-6.0-gcc-4.8-dcpe7ia pkg-config-0.29.2-gcc-4.8-ib33t75 tcl-8.6.6-gcc-4.8-tfxzqbr + expat-2.2.0-gcc-4.8-mrv6bd4 libxml2-2.9.4-gcc-4.8-ryzxnsu ncurses-6.0-gcc-6.3.0-ucbhcdy pkg-config-0.29.2-gcc-6.3.0-jpgubk3 util-macros-1.19.1-gcc-6.3.0-xorz2x2 + flex-2.6.3-gcc-4.8-yf345oo libxml2-2.9.4-gcc-6.3.0-rltzsdh netlib-lapack-3.6.1-gcc-6.3.0-js33dog py-appdirs-1.4.0-gcc-6.3.0-jxawmw7 xz-5.2.3-gcc-4.8-mew4log + gcc-6.3.0-gcc-4.8-24puqve lmod-7.4.1-gcc-4.8-je4srhr netlib-scalapack-2.0.2-gcc-6.3.0-5aidk4l py-numpy-1.12.0-gcc-6.3.0-oemmoeu xz-5.2.3-gcc-6.3.0-3vqeuvb + gettext-0.19.8.1-gcc-4.8-yymghlh lua-5.3.4-gcc-4.8-im75yaz netlib-scalapack-2.0.2-gcc-6.3.0-hjsemcn py-packaging-16.8-gcc-6.3.0-i2n3dtl zip-3.0-gcc-4.8-rwar22d + gmp-6.1.2-gcc-4.8-5ub2wu5 lua-luafilesystem-1_6_3-gcc-4.8-wkey3nl netlib-scalapack-2.0.2-gcc-6.3.0-jva724b py-pyparsing-2.1.10-gcc-6.3.0-tbo6gmw zlib-1.2.11-gcc-4.8-pgxsxv7 + help2man-1.47.4-gcc-4.8-kcnqmau lua-luaposix-33.4.0-gcc-4.8-mdod2ry netlib-scalapack-2.0.2-gcc-6.3.0-rgqfr6d py-scipy-0.19.0-gcc-6.3.0-kr7nat4 zlib-1.2.11-gcc-6.3.0-7cqp6cj + +The names should look familiar, as they resemble the output from ``spack find``. +You *can* use the modules here directly. For example, you could type either of these commands +to load the ``cmake`` module: + +.. code-block:: console + + $ use cmake-3.7.2-gcc-6.3.0-fowuuby + +.. code-block:: console + + $ module load cmake-3.7.2-gcc-6.3.0-fowuuby + +Neither of these is particularly pretty, easy to remember, or +easy to type. Luckily, Spack has its own interface for using modules and dotkits. + +^^^^^^^^^^^^^ +Shell support +^^^^^^^^^^^^^ + +To enable additional Spack commands for loading and unloading module files, +and to add the correct path to ``MODULEPATH``, you need to source the appropriate +setup file in the ``$SPACK_ROOT/share/spack`` directory. This will activate shell +support for the commands that need it. For ``bash``, ``ksh`` or ``zsh`` users: .. code-block:: console @@ -42,88 +81,32 @@ For ``csh`` and ``tcsh`` instead: .. code-block:: console + $ set SPACK_ROOT ... $ source $SPACK_ROOT/share/spack/setup-env.csh +Note that in the latter case it is necessary to explicitly set ``SPACK_ROOT`` +before sourcing the setup file (you will get a meaningful error message +if you don't). + When ``bash`` and ``ksh`` users update their environment with ``setup-env.sh``, it will check for spack-installed environment modules and add the ``module`` command to their environment; This only occurs if the module command is not already available. You can install ``environment-modules`` with ``spack bootstrap`` as described in :ref:`InstallEnvironmentModules`. -.. note:: - You can put the source line in your ``.bashrc`` or ``.cshrc`` to - have Spack's shell support available on the command line at any login. +Finally, if you want to have Spack's shell support available on the command line at +any login you can put this source line in one of the files that are sourced +at startup (like ``.profile``, ``.bashrc`` or ``.cshrc``). Be aware though +that the startup time may be slightly increased because of that. ----------------------------- -Using module files via Spack ----------------------------- - -If you have installed a supported module system either manually or through -``spack bootstrap`` and have enabled shell support, you should be able to -run either ``module avail`` or ``use -l spack`` to see what module/dotkit -files have been installed. Here is sample output of those programs, -showing lots of installed packages. - -.. code-block:: console - - $ module avail - - ------- ~/spack/share/spack/modules/linux-debian7-x86_64 -------- - adept-utils@1.0%gcc@4.4.7-5adef8da libelf@0.8.13%gcc@4.4.7 - automaded@1.0%gcc@4.4.7-d9691bb0 libelf@0.8.13%intel@15.0.0 - boost@1.55.0%gcc@4.4.7 mpc@1.0.2%gcc@4.4.7-559607f5 - callpath@1.0.1%gcc@4.4.7-5dce4318 mpfr@3.1.2%gcc@4.4.7 - dyninst@8.1.2%gcc@4.4.7-b040c20e mpich@3.0.4%gcc@4.4.7 - gcc@4.9.1%gcc@4.4.7-93ab98c5 mpich@3.0.4%gcc@4.9.0 - gmp@6.0.0a%gcc@4.4.7 mrnet@4.1.0%gcc@4.4.7-72b7881d - graphlib@2.0.0%gcc@4.4.7 netgauge@2.4.6%gcc@4.9.0-27912b7b - launchmon@1.0.1%gcc@4.4.7 stat@2.1.0%gcc@4.4.7-51101207 - libNBC@1.1.1%gcc@4.9.0-27912b7b sundials@2.5.0%gcc@4.9.0-27912b7b - libdwarf@20130729%gcc@4.4.7-b52fac98 - -.. code-block:: console - - $ use -l spack - - spack ---------- - adept-utils@1.0%gcc@4.4.7-5adef8da - adept-utils @1.0 - automaded@1.0%gcc@4.4.7-d9691bb0 - automaded @1.0 - boost@1.55.0%gcc@4.4.7 - boost @1.55.0 - callpath@1.0.1%gcc@4.4.7-5dce4318 - callpath @1.0.1 - dyninst@8.1.2%gcc@4.4.7-b040c20e - dyninst @8.1.2 - gmp@6.0.0a%gcc@4.4.7 - gmp @6.0.0a - libNBC@1.1.1%gcc@4.9.0-27912b7b - libNBC @1.1.1 - libdwarf@20130729%gcc@4.4.7-b52fac98 - libdwarf @20130729 - libelf@0.8.13%gcc@4.4.7 - libelf @0.8.13 - libelf@0.8.13%intel@15.0.0 - libelf @0.8.13 - mpc@1.0.2%gcc@4.4.7-559607f5 - mpc @1.0.2 - mpfr@3.1.2%gcc@4.4.7 - mpfr @3.1.2 - mpich@3.0.4%gcc@4.4.7 - mpich @3.0.4 - mpich@3.0.4%gcc@4.9.0 - mpich @3.0.4 - netgauge@2.4.6%gcc@4.9.0-27912b7b - netgauge @2.4.6 - sundials@2.5.0%gcc@4.9.0-27912b7b - sundials @2.5.0 - -The names here should look familiar, they're the same ones from -``spack find``. You *can* use the names here directly. For example, -you could type either of these commands to load the callpath module: - -.. code-block:: console - - $ use callpath@1.0.1%gcc@4.4.7-5dce4318 - -.. code-block:: console - - $ module load callpath@1.0.1%gcc@4.4.7-5dce4318 - .. _cmd-spack-load: ^^^^^^^^^^^^^^^^^^^^^^^ ``spack load / unload`` ^^^^^^^^^^^^^^^^^^^^^^^ -Neither of these is particularly pretty, easy to remember, or -easy to type. Luckily, Spack has its own interface for using modules -and dotkits. You can use the same spec syntax you're used to: +Once you have shell support enabled you can use the same spec syntax +you're used to: ========================= ========================== -Environment Modules Dotkit +Modules Dotkit ========================= ========================== ``spack load `` ``spack use `` ``spack unload `` ``spack unuse `` @@ -298,43 +281,46 @@ For example, consider the following on one system: # antlr@2.7.7%gcc@5.3.0~csharp+cxx~java~python arch=linux-SuSE11-x86_64 module load linux-SuSE11-x86_64/antlr-2.7.7-gcc-5.3.0-bdpl46y ----------------------------- -Auto-generating Module Files ----------------------------- +------------------------- +Module file customization +------------------------- Module files are generated by post-install hooks after the successful -installation of a package. The following table summarizes the essential +installation of a package. The table below summarizes the essential information associated with the different file formats that can be generated by Spack: - +-----------------------------+--------------------+-------------------------------+----------------------+ - | | **Hook name** | **Default root directory** | **Compatible tools** | - +=============================+====================+===============================+======================+ - | **Dotkit** | ``dotkit`` | share/spack/dotkit | DotKit | - +-----------------------------+--------------------+-------------------------------+----------------------+ - | **TCL - Non-Hierarchical** | ``tcl`` | share/spack/modules | Env. Modules/LMod | - +-----------------------------+--------------------+-------------------------------+----------------------+ - | **Lua - Hierarchical** | ``lmod`` | share/spack/lmod | LMod | - +-----------------------------+--------------------+-------------------------------+----------------------+ + +-----------------------------+--------------------+-------------------------------+----------------------------------+----------------------+ + | | **Hook name** | **Default root directory** | **Default template file** | **Compatible tools** | + +=============================+====================+===============================+==================================+======================+ + | **Dotkit** | ``dotkit`` | share/spack/dotkit | templates/modules/modulefile.dk | DotKit | + +-----------------------------+--------------------+-------------------------------+----------------------------------+----------------------+ + | **TCL - Non-Hierarchical** | ``tcl`` | share/spack/modules | templates/modules/modulefile.tcl | Env. Modules/LMod | + +-----------------------------+--------------------+-------------------------------+----------------------------------+----------------------+ + | **Lua - Hierarchical** | ``lmod`` | share/spack/lmod | templates/modules/modulefile.lua | LMod | + +-----------------------------+--------------------+-------------------------------+----------------------------------+----------------------+ -Though Spack ships with sensible defaults for the generation of module files, -one can customize many aspects of it to accommodate package or site specific needs. -These customizations are enabled by either: +Spack ships with sensible defaults for the generation of module files, but +you can customize many aspects of it to accommodate package or site specific needs. +In general you can override or extend the default behavior by: 1. overriding certain callback APIs in the Python packages 2. writing specific rules in the ``modules.yaml`` configuration file + 3. writing your own templates to override or extend the defaults -The former method fits best cases that are site independent, e.g. injecting variables -from language interpreters into their extensions. The latter instead permits to -fine tune the content, naming and creation of module files to meet site specific conventions. +The former method let you express changes in the run-time environment +that are needed to use the installed software properly, e.g. injecting variables +from language interpreters into their extensions. The latter two instead permit to +fine tune the filesystem layout, content and creation of module files to meet +site specific conventions. -^^^^^^^^^^^^^^^^^^^^ -``Package`` file API -^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Override API calls in ``package.py`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -There are two methods that can be overridden in any ``package.py`` to affect the -content of generated module files. The first one is: +There are two methods that you can override in any ``package.py`` to affect the +content of the module files generated by Spack. The first one: .. code-block:: python @@ -342,8 +328,8 @@ content of generated module files. The first one is: """Set up the compile and runtime environments for a package.""" pass -and can alter the content of *the same package where it is overridden* -by adding actions to ``run_env``. The second method is: +can alter the content of the module file associated with the same package where it is overridden. +The second method: .. code-block:: python @@ -351,12 +337,13 @@ by adding actions to ``run_env``. The second method is: """Set up the environment of packages that depend on this one""" pass -and has similar effects on module file of dependees. Even in this case -``run_env`` must be filled with the desired list of environment modifications. +can instead inject run-time environment modifications in the module files of packages +that depend on it. In both cases you need to fill ``run_env`` with the desired +list of environment modifications. .. note:: The ``r`` package and callback APIs - A typical example in which overriding both methods prove to be useful + An example in which it is crucial to override both methods is given by the ``r`` package. This package installs libraries and headers in non-standard locations and it is possible to prepend the appropriate directory to the corresponding environment variables: @@ -377,37 +364,36 @@ and has similar effects on module file of dependees. Even in this case it appropriately in the override of the second method: .. literalinclude:: ../../../var/spack/repos/builtin/packages/r/package.py - :lines: 128-129,146-151 + :pyobject: R.setup_dependent_environment .. _modules-yaml: ---------------------------------- -Configuration in ``modules.yaml`` ---------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^ +Write a configuration file +^^^^^^^^^^^^^^^^^^^^^^^^^^ -The name of the configuration file that controls module generation behavior -is ``modules.yaml``. The default configuration: +The configuration files that control module generation behavior +are named ``modules.yaml``. The default configuration: .. literalinclude:: ../../../etc/spack/defaults/modules.yaml :language: yaml -activates generation for ``tcl`` and ``dotkit`` module files and inspects +activates the hooks to generate ``tcl`` and ``dotkit`` module files and inspects the installation folder of each package for the presence of a set of subdirectories (``bin``, ``man``, ``share/man``, etc.). If any is found its full path is prepended to the environment variables listed below the folder name. -^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Activation of other systems -^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""" +Activate other hooks +"""""""""""""""""""" Any other module file generator shipped with Spack can be activated adding it to the list under the ``enable`` key in the module file. Currently the only generator that -is not activated by default is ``lmod``, which produces hierarchical lua module files. -For each module system that can be enabled a finer configuration is possible. +is not active by default is ``lmod``, which produces hierarchical lua module files. -Directives that are aimed at driving the generation of a particular type of module files -should be listed under a top level key that corresponds to the generator being -customized: +Each module system can then be configured separately. In fact, you should list configuration +options that affect a particular type of module files under a top level key corresponding +to the generator being customized: .. code-block:: yaml @@ -423,24 +409,21 @@ customized: lmod: # contains lmod specific customizations -All these module sections allow for both: - -1. global directives that usually affect the whole layout of modules or the naming scheme -2. directives that affect only a set of packages and modify their content - -For the latter point in particular it is possible to use anonymous specs -to select an appropriate set of packages on which the modifications should be applied. +In general, the configuration options that you can use in ``modules.yaml`` will +either change the layout of the module files on the filesystem, or they will affect +their content. For the latter point it is possible to use anonymous specs +to fine tune the set of packages on which the modifications should be applied. .. _anonymous_specs: -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""""""""" Selection by anonymous specs -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""""""""" -The procedure to select packages using anonymous specs is a natural -extension of using them to install packages, the only difference being -that specs in this case **are not required to have a root package**. -Consider for instance this snippet: +In the configuration file you can use *anonymous specs* (i.e. specs +that **are not required to have a root package** and are thus used just +to express constraints) to apply certain modifications on a selected set +of the installed software. For instance, in the snippet below: .. code-block:: yaml @@ -469,8 +452,7 @@ Consider for instance this snippet: unset: - FOOBAR -During module file generation, the configuration above will instruct -Spack to set the environment variable ``BAR=bar`` for every module, +you are instructing Spack to set the environment variable ``BAR=bar`` for every module, unless the associated spec satisfies ``^openmpi`` in which case ``BAR=baz``. In addition in any spec that satisfies ``zlib`` the value ``foo`` will be prepended to ``LD_LIBRARY_PATH`` and in any spec that satisfies ``zlib%gcc@4.8`` @@ -482,15 +464,15 @@ the variable ``FOOBAR`` will be unset. first, no matter where they appear in the configuration file. All the other spec constraints are instead evaluated top to bottom. -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Blacklist or whitelist the generation of specific module files -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""""""""""""""""""""""""" +Blacklist or whitelist specific module files +"""""""""""""""""""""""""""""""""""""""""""" -Anonymous specs are also used to prevent module files from being written or -to force them to be written. A common case for that at HPC centers is to hide -from users all of the software that needs to be built with system compilers. -Suppose for instance to have ``gcc@4.4.7`` provided by your system. Then -with a configuration file like this one: +You can use anonymous specs also to prevent module files from being written or +to force them to be written. Consider the case where you want to hide from users +all the boilerplate software that you had to build in order to bootstrap a new +compiler. Suppose for instance that ``gcc@4.4.7`` is the compiler provided by +your system. If you write a configuration file like: .. code-block:: yaml @@ -499,13 +481,13 @@ with a configuration file like this one: whitelist: ['gcc', 'llvm'] # Whitelist will have precedence over blacklist blacklist: ['%gcc@4.4.7'] # Assuming gcc@4.4.7 is the system compiler -you will skip the generation of module files for any package that -is compiled with ``gcc@4.4.7``, with the exception of any ``gcc`` +you will prevent the generation of module files for any package that +is compiled with ``gcc@4.4.7``, with the only exception of any ``gcc`` or any ``llvm`` installation. -^^^^^^^^^^^^^^^^^^^^^^^^^^^ +""""""""""""""""""""""""""" Customize the naming scheme -^^^^^^^^^^^^^^^^^^^^^^^^^^^ +""""""""""""""""""""""""""" The names of environment modules generated by spack are not always easy to fully comprehend due to the long hash in the name. There are two module @@ -553,7 +535,9 @@ most likely via the ``+blas`` variant specification. tcl: naming_scheme: '${PACKAGE}/${VERSION}-${COMPILERNAME}-${COMPILERVER}' all: - conflict: ['${PACKAGE}', 'intel/14.0.1'] + conflict: + - '${PACKAGE}' + - 'intel/14.0.1' will create module files that will conflict with ``intel/14.0.1`` and with the base directory of the same module, effectively preventing the possibility to @@ -565,9 +549,9 @@ most likely via the ``+blas`` variant specification. .. note:: LMod hierarchical module files When ``lmod`` is activated Spack will generate a set of hierarchical lua module - files that are understood by LMod. The generated hierarchy always contains the - three layers ``Core`` / ``Compiler`` / ``MPI`` but can be further extended to - any other virtual dependency present in Spack. A case that could be useful in + files that are understood by LMod. The hierarchy will always contain the + two layers ``Core`` / ``Compiler`` but can be further extended to + any of the virtual dependencies present in Spack. A case that could be useful in practice is for instance: .. code-block:: yaml @@ -576,11 +560,14 @@ most likely via the ``+blas`` variant specification. enable: - lmod lmod: - core_compilers: ['gcc@4.8'] - hierarchical_scheme: ['lapack'] + core_compilers: + - 'gcc@4.8' + hierarchy: + - 'mpi' + - 'lapack' - that will generate a hierarchy in which the ``lapack`` layer is treated as the ``mpi`` - one. This allows a site to build the same libraries or applications against different + that will generate a hierarchy in which the ``lapack`` and ``mpi`` layer can be switched + independently. This allows a site to build the same libraries or applications against different implementations of ``mpi`` and ``lapack``, and let LMod switch safely from one to the other. @@ -589,15 +576,14 @@ most likely via the ``+blas`` variant specification. For hierarchies that are deeper than three layers ``lmod spider`` may have some issues. See `this discussion on the LMod project `_. -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""""""""""""""""" Filter out environment modifications -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""""""""""""""""" -Modifications to certain environment variables in module files are generated by -default, for instance by prefix inspections in the default configuration file. -There are cases though where some of these modifications are unwanted. -Suppose you need to avoid having ``CPATH`` and ``LIBRARY_PATH`` -modified by your ``dotkit`` modules: +Modifications to certain environment variables in module files are there by +default, for instance because they are generated by prefix inspections. +If you want to prevent modifications to some environment variables, you can +do so by using the environment blacklist: .. code-block:: yaml @@ -612,11 +598,11 @@ The configuration above will generate dotkit module files that will not contain modifications to either ``CPATH`` or ``LIBRARY_PATH`` and environment module files that instead will contain these modifications. -^^^^^^^^^^^^^^^^^^^^^ +""""""""""""""""""""" Autoload dependencies -^^^^^^^^^^^^^^^^^^^^^ +""""""""""""""""""""" -In some cases it can be useful to have module files directly autoload +In some cases it can be useful to have module files that automatically load their dependencies. This may be the case for Python extensions, if not activated using ``spack activate``: @@ -628,8 +614,9 @@ activated using ``spack activate``: autoload: 'direct' The configuration file above will produce module files that will -automatically load their direct dependencies. The allowed values for the -``autoload`` statement are either ``none``, ``direct`` or ``all``. +load their direct dependencies if the package installed depends on ``python``. +The allowed values for the ``autoload`` statement are either ``none``, +``direct`` or ``all``. .. note:: TCL prerequisites diff --git a/lib/spack/docs/tutorial_modules.rst b/lib/spack/docs/tutorial_modules.rst index 00b42251db1..6d78350a9d2 100644 --- a/lib/spack/docs/tutorial_modules.rst +++ b/lib/spack/docs/tutorial_modules.rst @@ -607,10 +607,11 @@ modules that load their dependencies by adding the ``autoload`` directive and assigning it the value ``direct``: .. code-block:: yaml - :emphasize-lines: 37,38 + :emphasize-lines: 3,38,39 modules: tcl: + verbose: True hash_length: 0 naming_scheme: '${PACKAGE}/${VERSION}-${COMPILERNAME}-${COMPILERVER}' whitelist: @@ -702,6 +703,9 @@ and will contain code to autoload all the dependencies: Autoloading openblas/0.2.19-gcc-6.2.0 Autoloading py-numpy/1.11.1-gcc-6.2.0-openblas +In case messages are unwanted during the autoload procedure, it will be +sufficient to omit the line setting ``verbose: True`` in the configuration file above. + ----------------------------- Lua hierarchical module files ----------------------------- @@ -733,7 +737,7 @@ enabled module file generators. The other things you need to do are: After modifications the configuration file will be: .. code-block:: yaml - :emphasize-lines: 2-6 + :emphasize-lines: 2-8 modules: enable:: @@ -741,6 +745,8 @@ After modifications the configuration file will be: lmod: core_compilers: - 'gcc@4.8' + hierarchy: + - mpi hash_length: 0 whitelist: - gcc @@ -879,7 +885,7 @@ can add an arbitrary list of virtual providers to the triplet ``Core``/``Compiler``/``MPI``. A configuration file like: .. code-block:: yaml - :emphasize-lines: 7,8 + :emphasize-lines: 9 modules: enable:: @@ -887,7 +893,8 @@ can add an arbitrary list of virtual providers to the triplet lmod: core_compilers: - 'gcc@4.8' - hierarchical_scheme: + hierarchy: + - mpi - lapack hash_length: 0 whitelist: diff --git a/lib/spack/external/__init__.py b/lib/spack/external/__init__.py index 2c4b19b6c85..bdd710153b0 100644 --- a/lib/spack/external/__init__.py +++ b/lib/spack/external/__init__.py @@ -33,6 +33,8 @@ functools: Used for implementation of total_ordering. + jinja2: A modern and designer-friendly templating language for Python + jsonschema: An implementation of JSON Schema for Python. ordereddict: We include our own version to be Python 2.6 compatible. diff --git a/lib/spack/external/jinja2/AUTHORS b/lib/spack/external/jinja2/AUTHORS new file mode 100644 index 00000000000..943f625f876 --- /dev/null +++ b/lib/spack/external/jinja2/AUTHORS @@ -0,0 +1,33 @@ +Jinja is written and maintained by the Jinja Team and various +contributors: + +Lead Developer: + +- Armin Ronacher + +Developers: + +- Christoph Hack +- Georg Brandl + +Contributors: + +- Bryan McLemore +- Mickaël Guérin +- Cameron Knight +- Lawrence Journal-World. +- David Cramer + +Patches and suggestions: + +- Ronny Pfannschmidt +- Axel Böhm +- Alexey Melchakov +- Bryan McLemore +- Clovis Fabricio (nosklo) +- Cameron Knight +- Peter van Dijk (Habbie) +- Stefan Ebner +- Rene Leonhardt +- Thomas Waldmann +- Cory Benfield (Lukasa) diff --git a/lib/spack/external/jinja2/LICENSE b/lib/spack/external/jinja2/LICENSE new file mode 100644 index 00000000000..10145a26434 --- /dev/null +++ b/lib/spack/external/jinja2/LICENSE @@ -0,0 +1,31 @@ +Copyright (c) 2009 by the Jinja Team, see AUTHORS for more details. + +Some rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * The names of the contributors may not be used to endorse or + promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/lib/spack/external/jinja2/README.rst b/lib/spack/external/jinja2/README.rst new file mode 100644 index 00000000000..c36b9426d62 --- /dev/null +++ b/lib/spack/external/jinja2/README.rst @@ -0,0 +1,51 @@ +Jinja2 +~~~~~~ + +Jinja2 is a template engine written in pure Python. It provides a +`Django`_ inspired non-XML syntax but supports inline expressions and +an optional `sandboxed`_ environment. + +Nutshell +-------- + +Here a small example of a Jinja template: + +.. code-block:: jinja + + {% extends 'base.html' %} + {% block title %}Memberlist{% endblock %} + {% block content %} + + {% endblock %} + +Philosophy +---------- + +Application logic is for the controller, but don't make the template designer's +life difficult by restricting functionality too much. + +For more information visit the new `Jinja2 webpage`_ and `documentation`_. + +The `Jinja2 tip`_ is installable via ``pip`` with ``pip install +https://github.com/pallets/jinja/zipball/master``. + +.. _sandboxed: http://en.wikipedia.org/wiki/Sandbox_(computer_security) +.. _Django: http://www.djangoproject.com/ +.. _Jinja2 webpage: http://jinja.pocoo.org/ +.. _documentation: http://jinja.pocoo.org/docs/ +.. _Jinja2 tip: http://jinja.pocoo.org/docs/intro/#as-a-python-egg-via-easy-install + +Builds +------ + ++---------------------+------------------------------------------------------------------------------+ +| ``master`` | .. image:: https://travis-ci.org/pallets/jinja.svg?branch=master | +| | :target: https://travis-ci.org/pallets/jinja | ++---------------------+------------------------------------------------------------------------------+ +| ``2.9-maintenance`` | .. image:: https://travis-ci.org/pallets/jinja.svg?branch=2.9-maintenance | +| | :target: https://travis-ci.org/pallets/jinja | ++---------------------+------------------------------------------------------------------------------+ diff --git a/lib/spack/external/jinja2/__init__.py b/lib/spack/external/jinja2/__init__.py new file mode 100644 index 00000000000..4b0b7a8d7f3 --- /dev/null +++ b/lib/spack/external/jinja2/__init__.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +""" + jinja2 + ~~~~~~ + + Jinja2 is a template engine written in pure Python. It provides a + Django inspired non-XML syntax but supports inline expressions and + an optional sandboxed environment. + + Nutshell + -------- + + Here a small example of a Jinja2 template:: + + {% extends 'base.html' %} + {% block title %}Memberlist{% endblock %} + {% block content %} + + {% endblock %} + + + :copyright: (c) 2017 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +__docformat__ = 'restructuredtext en' +__version__ = '2.9.6' + +# high level interface +from jinja2.environment import Environment, Template + +# loaders +from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \ + DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader, \ + ModuleLoader + +# bytecode caches +from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \ + MemcachedBytecodeCache + +# undefined types +from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined, \ + make_logging_undefined + +# exceptions +from jinja2.exceptions import TemplateError, UndefinedError, \ + TemplateNotFound, TemplatesNotFound, TemplateSyntaxError, \ + TemplateAssertionError + +# decorators and public utilities +from jinja2.filters import environmentfilter, contextfilter, \ + evalcontextfilter +from jinja2.utils import Markup, escape, clear_caches, \ + environmentfunction, evalcontextfunction, contextfunction, \ + is_undefined, select_autoescape + +__all__ = [ + 'Environment', 'Template', 'BaseLoader', 'FileSystemLoader', + 'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader', + 'ChoiceLoader', 'BytecodeCache', 'FileSystemBytecodeCache', + 'MemcachedBytecodeCache', 'Undefined', 'DebugUndefined', + 'StrictUndefined', 'TemplateError', 'UndefinedError', 'TemplateNotFound', + 'TemplatesNotFound', 'TemplateSyntaxError', 'TemplateAssertionError', + 'ModuleLoader', 'environmentfilter', 'contextfilter', 'Markup', 'escape', + 'environmentfunction', 'contextfunction', 'clear_caches', 'is_undefined', + 'evalcontextfilter', 'evalcontextfunction', 'make_logging_undefined', + 'select_autoescape', +] + + +def _patch_async(): + from jinja2.utils import have_async_gen + if have_async_gen: + from jinja2.asyncsupport import patch_all + patch_all() + + +_patch_async() +del _patch_async diff --git a/lib/spack/external/jinja2/_compat.py b/lib/spack/external/jinja2/_compat.py new file mode 100644 index 00000000000..61d85301a4a --- /dev/null +++ b/lib/spack/external/jinja2/_compat.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +""" + jinja2._compat + ~~~~~~~~~~~~~~ + + Some py2/py3 compatibility support based on a stripped down + version of six so we don't have to depend on a specific version + of it. + + :copyright: Copyright 2013 by the Jinja team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +import sys + +PY2 = sys.version_info[0] == 2 +PYPY = hasattr(sys, 'pypy_translation_info') +_identity = lambda x: x + + +if not PY2: + unichr = chr + range_type = range + text_type = str + string_types = (str,) + integer_types = (int,) + + iterkeys = lambda d: iter(d.keys()) + itervalues = lambda d: iter(d.values()) + iteritems = lambda d: iter(d.items()) + + import pickle + from io import BytesIO, StringIO + NativeStringIO = StringIO + + def reraise(tp, value, tb=None): + if value.__traceback__ is not tb: + raise value.with_traceback(tb) + raise value + + ifilter = filter + imap = map + izip = zip + intern = sys.intern + + implements_iterator = _identity + implements_to_string = _identity + encode_filename = _identity + +else: + unichr = unichr + text_type = unicode + range_type = xrange + string_types = (str, unicode) + integer_types = (int, long) + + iterkeys = lambda d: d.iterkeys() + itervalues = lambda d: d.itervalues() + iteritems = lambda d: d.iteritems() + + import cPickle as pickle + from cStringIO import StringIO as BytesIO, StringIO + NativeStringIO = BytesIO + + exec('def reraise(tp, value, tb=None):\n raise tp, value, tb') + + from itertools import imap, izip, ifilter + intern = intern + + def implements_iterator(cls): + cls.next = cls.__next__ + del cls.__next__ + return cls + + def implements_to_string(cls): + cls.__unicode__ = cls.__str__ + cls.__str__ = lambda x: x.__unicode__().encode('utf-8') + return cls + + def encode_filename(filename): + if isinstance(filename, unicode): + return filename.encode('utf-8') + return filename + + +def with_metaclass(meta, *bases): + """Create a base class with a metaclass.""" + # This requires a bit of explanation: the basic idea is to make a + # dummy metaclass for one level of class instantiation that replaces + # itself with the actual metaclass. + class metaclass(type): + def __new__(cls, name, this_bases, d): + return meta(name, bases, d) + return type.__new__(metaclass, 'temporary_class', (), {}) + + +try: + from urllib.parse import quote_from_bytes as url_quote +except ImportError: + from urllib import quote as url_quote diff --git a/lib/spack/external/jinja2/_stringdefs.py b/lib/spack/external/jinja2/_stringdefs.py new file mode 100644 index 00000000000..a5689f66958 --- /dev/null +++ b/lib/spack/external/jinja2/_stringdefs.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +""" + jinja2._stringdefs + ~~~~~~~~~~~~~~~~~~ + + Strings of all Unicode characters of a certain category. + Used for matching in Unicode-aware languages. Run to regenerate. + + Inspired by chartypes_create.py from the MoinMoin project, original + implementation from Pygments. + + :copyright: Copyright 2006-2017 by the Jinja team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +# Generated code start + +xid_start = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\xaa\xb5\xba\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff\u0100\u0101\u0102\u0103\u0104\u0105\u0106\u0107\u0108\u0109\u010a\u010b\u010c\u010d\u010e\u010f\u0110\u0111\u0112\u0113\u0114\u0115\u0116\u0117\u0118\u0119\u011a\u011b\u011c\u011d\u011e\u011f\u0120\u0121\u0122\u0123\u0124\u0125\u0126\u0127\u0128\u0129\u012a\u012b\u012c\u012d\u012e\u012f\u0130\u0131\u0134\u0135\u0136\u0137\u0138\u0139\u013a\u013b\u013c\u013d\u013e\u0141\u0142\u0143\u0144\u0145\u0146\u0147\u0148\u014a\u014b\u014c\u014d\u014e\u014f\u0150\u0151\u0152\u0153\u0154\u0155\u0156\u0157\u0158\u0159\u015a\u015b\u015c\u015d\u015e\u015f\u0160\u0161\u0162\u0163\u0164\u0165\u0166\u0167\u0168\u0169\u016a\u016b\u016c\u016d\u016e\u016f\u0170\u0171\u0172\u0173\u0174\u0175\u0176\u0177\u0178\u0179\u017a\u017b\u017c\u017d\u017e\u017f\u0180\u0181\u0182\u0183\u0184\u0185\u0186\u0187\u0188\u0189\u018a\u018b\u018c\u018d\u018e\u018f\u0190\u0191\u0192\u0193\u0194\u0195\u0196\u0197\u0198\u0199\u019a\u019b\u019c\u019d\u019e\u019f\u01a0\u01a1\u01a2\u01a3\u01a4\u01a5\u01a6\u01a7\u01a8\u01a9\u01aa\u01ab\u01ac\u01ad\u01ae\u01af\u01b0\u01b1\u01b2\u01b3\u01b4\u01b5\u01b6\u01b7\u01b8\u01b9\u01ba\u01bb\u01bc\u01bd\u01be\u01bf\u01c0\u01c1\u01c2\u01c3\u01cd\u01ce\u01cf\u01d0\u01d1\u01d2\u01d3\u01d4\u01d5\u01d6\u01d7\u01d8\u01d9\u01da\u01db\u01dc\u01dd\u01de\u01df\u01e0\u01e1\u01e2\u01e3\u01e4\u01e5\u01e6\u01e7\u01e8\u01e9\u01ea\u01eb\u01ec\u01ed\u01ee\u01ef\u01f0\u01f4\u01f5\u01f6\u01f7\u01f8\u01f9\u01fa\u01fb\u01fc\u01fd\u01fe\u01ff\u0200\u0201\u0202\u0203\u0204\u0205\u0206\u0207\u0208\u0209\u020a\u020b\u020c\u020d\u020e\u020f\u0210\u0211\u0212\u0213\u0214\u0215\u0216\u0217\u0218\u0219\u021a\u021b\u021c\u021d\u021e\u021f\u0220\u0221\u0222\u0223\u0224\u0225\u0226\u0227\u0228\u0229\u022a\u022b\u022c\u022d\u022e\u022f\u0230\u0231\u0232\u0233\u0234\u0235\u0236\u0237\u0238\u0239\u023a\u023b\u023c\u023d\u023e\u023f\u0240\u0241\u0242\u0243\u0244\u0245\u0246\u0247\u0248\u0249\u024a\u024b\u024c\u024d\u024e\u024f\u0250\u0251\u0252\u0253\u0254\u0255\u0256\u0257\u0258\u0259\u025a\u025b\u025c\u025d\u025e\u025f\u0260\u0261\u0262\u0263\u0264\u0265\u0266\u0267\u0268\u0269\u026a\u026b\u026c\u026d\u026e\u026f\u0270\u0271\u0272\u0273\u0274\u0275\u0276\u0277\u0278\u0279\u027a\u027b\u027c\u027d\u027e\u027f\u0280\u0281\u0282\u0283\u0284\u0285\u0286\u0287\u0288\u0289\u028a\u028b\u028c\u028d\u028e\u028f\u0290\u0291\u0292\u0293\u0294\u0295\u0296\u0297\u0298\u0299\u029a\u029b\u029c\u029d\u029e\u029f\u02a0\u02a1\u02a2\u02a3\u02a4\u02a5\u02a6\u02a7\u02a8\u02a9\u02aa\u02ab\u02ac\u02ad\u02ae\u02af\u02b0\u02b1\u02b2\u02b3\u02b4\u02b5\u02b6\u02b7\u02b8\u02b9\u02ba\u02bb\u02bc\u02bd\u02be\u02bf\u02c0\u02c1\u02c6\u02c7\u02c8\u02c9\u02ca\u02cb\u02cc\u02cd\u02ce\u02cf\u02d0\u02d1\u02e0\u02e1\u02e2\u02e3\u02e4\u02ec\u02ee\u0370\u0371\u0372\u0373\u0374\u0376\u0377\u037b\u037c\u037d\u037f\u0386\u0388\u0389\u038a\u038c\u038e\u038f\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03aa\u03ab\u03ac\u03ad\u03ae\u03af\u03b0\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\u03ca\u03cb\u03cc\u03cd\u03ce\u03cf\u03d0\u03d1\u03d2\u03d3\u03d4\u03d5\u03d6\u03d7\u03d8\u03d9\u03da\u03db\u03dc\u03dd\u03de\u03df\u03e0\u03e1\u03e2\u03e3\u03e4\u03e5\u03e6\u03e7\u03e8\u03e9\u03ea\u03eb\u03ec\u03ed\u03ee\u03ef\u03f0\u03f1\u03f2\u03f3\u03f4\u03f5\u03f7\u03f8\u03f9\u03fa\u03fb\u03fc\u03fd\u03fe\u03ff\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040a\u040b\u040c\u040d\u040e\u040f\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u0450\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045a\u045b\u045c\u045d\u045e\u045f\u0460\u0461\u0462\u0463\u0464\u0465\u0466\u0467\u0468\u0469\u046a\u046b\u046c\u046d\u046e\u046f\u0470\u0471\u0472\u0473\u0474\u0475\u0476\u0477\u0478\u0479\u047a\u047b\u047c\u047d\u047e\u047f\u0480\u0481\u048a\u048b\u048c\u048d\u048e\u048f\u0490\u0491\u0492\u0493\u0494\u0495\u0496\u0497\u0498\u0499\u049a\u049b\u049c\u049d\u049e\u049f\u04a0\u04a1\u04a2\u04a3\u04a4\u04a5\u04a6\u04a7\u04a8\u04a9\u04aa\u04ab\u04ac\u04ad\u04ae\u04af\u04b0\u04b1\u04b2\u04b3\u04b4\u04b5\u04b6\u04b7\u04b8\u04b9\u04ba\u04bb\u04bc\u04bd\u04be\u04bf\u04c0\u04c1\u04c2\u04c3\u04c4\u04c5\u04c6\u04c7\u04c8\u04c9\u04ca\u04cb\u04cc\u04cd\u04ce\u04cf\u04d0\u04d1\u04d2\u04d3\u04d4\u04d5\u04d6\u04d7\u04d8\u04d9\u04da\u04db\u04dc\u04dd\u04de\u04df\u04e0\u04e1\u04e2\u04e3\u04e4\u04e5\u04e6\u04e7\u04e8\u04e9\u04ea\u04eb\u04ec\u04ed\u04ee\u04ef\u04f0\u04f1\u04f2\u04f3\u04f4\u04f5\u04f6\u04f7\u04f8\u04f9\u04fa\u04fb\u04fc\u04fd\u04fe\u04ff\u0500\u0501\u0502\u0503\u0504\u0505\u0506\u0507\u0508\u0509\u050a\u050b\u050c\u050d\u050e\u050f\u0510\u0511\u0512\u0513\u0514\u0515\u0516\u0517\u0518\u0519\u051a\u051b\u051c\u051d\u051e\u051f\u0520\u0521\u0522\u0523\u0524\u0525\u0526\u0527\u0528\u0529\u052a\u052b\u052c\u052d\u052e\u052f\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053a\u053b\u053c\u053d\u053e\u053f\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054a\u054b\u054c\u054d\u054e\u054f\u0550\u0551\u0552\u0553\u0554\u0555\u0556\u0559\u0561\u0562\u0563\u0564\u0565\u0566\u0567\u0568\u0569\u056a\u056b\u056c\u056d\u056e\u056f\u0570\u0571\u0572\u0573\u0574\u0575\u0576\u0577\u0578\u0579\u057a\u057b\u057c\u057d\u057e\u057f\u0580\u0581\u0582\u0583\u0584\u0585\u0586\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea\u05f0\u05f1\u05f2\u0620\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062a\u062b\u062c\u062d\u062e\u062f\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063a\u063b\u063c\u063d\u063e\u063f\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064a\u066e\u066f\u0671\u0672\u0673\u0674\u0679\u067a\u067b\u067c\u067d\u067e\u067f\u0680\u0681\u0682\u0683\u0684\u0685\u0686\u0687\u0688\u0689\u068a\u068b\u068c\u068d\u068e\u068f\u0690\u0691\u0692\u0693\u0694\u0695\u0696\u0697\u0698\u0699\u069a\u069b\u069c\u069d\u069e\u069f\u06a0\u06a1\u06a2\u06a3\u06a4\u06a5\u06a6\u06a7\u06a8\u06a9\u06aa\u06ab\u06ac\u06ad\u06ae\u06af\u06b0\u06b1\u06b2\u06b3\u06b4\u06b5\u06b6\u06b7\u06b8\u06b9\u06ba\u06bb\u06bc\u06bd\u06be\u06bf\u06c0\u06c1\u06c2\u06c3\u06c4\u06c5\u06c6\u06c7\u06c8\u06c9\u06ca\u06cb\u06cc\u06cd\u06ce\u06cf\u06d0\u06d1\u06d2\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa\u06fb\u06fc\u06ff\u0710\u0712\u0713\u0714\u0715\u0716\u0717\u0718\u0719\u071a\u071b\u071c\u071d\u071e\u071f\u0720\u0721\u0722\u0723\u0724\u0725\u0726\u0727\u0728\u0729\u072a\u072b\u072c\u072d\u072e\u072f\u074d\u074e\u074f\u0750\u0751\u0752\u0753\u0754\u0755\u0756\u0757\u0758\u0759\u075a\u075b\u075c\u075d\u075e\u075f\u0760\u0761\u0762\u0763\u0764\u0765\u0766\u0767\u0768\u0769\u076a\u076b\u076c\u076d\u076e\u076f\u0770\u0771\u0772\u0773\u0774\u0775\u0776\u0777\u0778\u0779\u077a\u077b\u077c\u077d\u077e\u077f\u0780\u0781\u0782\u0783\u0784\u0785\u0786\u0787\u0788\u0789\u078a\u078b\u078c\u078d\u078e\u078f\u0790\u0791\u0792\u0793\u0794\u0795\u0796\u0797\u0798\u0799\u079a\u079b\u079c\u079d\u079e\u079f\u07a0\u07a1\u07a2\u07a3\u07a4\u07a5\u07b1\u07ca\u07cb\u07cc\u07cd\u07ce\u07cf\u07d0\u07d1\u07d2\u07d3\u07d4\u07d5\u07d6\u07d7\u07d8\u07d9\u07da\u07db\u07dc\u07dd\u07de\u07df\u07e0\u07e1\u07e2\u07e3\u07e4\u07e5\u07e6\u07e7\u07e8\u07e9\u07ea\u07f4\u07f5\u07fa\u0800\u0801\u0802\u0803\u0804\u0805\u0806\u0807\u0808\u0809\u080a\u080b\u080c\u080d\u080e\u080f\u0810\u0811\u0812\u0813\u0814\u0815\u081a\u0824\u0828\u0840\u0841\u0842\u0843\u0844\u0845\u0846\u0847\u0848\u0849\u084a\u084b\u084c\u084d\u084e\u084f\u0850\u0851\u0852\u0853\u0854\u0855\u0856\u0857\u0858\u08a0\u08a1\u08a2\u08a3\u08a4\u08a5\u08a6\u08a7\u08a8\u08a9\u08aa\u08ab\u08ac\u08ad\u08ae\u08af\u08b0\u08b1\u08b2\u08b3\u08b4\u08b6\u08b7\u08b8\u08b9\u08ba\u08bb\u08bc\u08bd\u0904\u0905\u0906\u0907\u0908\u0909\u090a\u090b\u090c\u090d\u090e\u090f\u0910\u0911\u0912\u0913\u0914\u0915\u0916\u0917\u0918\u0919\u091a\u091b\u091c\u091d\u091e\u091f\u0920\u0921\u0922\u0923\u0924\u0925\u0926\u0927\u0928\u0929\u092a\u092b\u092c\u092d\u092e\u092f\u0930\u0931\u0932\u0933\u0934\u0935\u0936\u0937\u0938\u0939\u093d\u0950\u0960\u0961\u0971\u0972\u0973\u0974\u0975\u0976\u0977\u0978\u0979\u097a\u097b\u097c\u097d\u097e\u097f\u0980\u0985\u0986\u0987\u0988\u0989\u098a\u098b\u098c\u098f\u0990\u0993\u0994\u0995\u0996\u0997\u0998\u0999\u099a\u099b\u099c\u099d\u099e\u099f\u09a0\u09a1\u09a2\u09a3\u09a4\u09a5\u09a6\u09a7\u09a8\u09aa\u09ab\u09ac\u09ad\u09ae\u09af\u09b0\u09b2\u09b6\u09b7\u09b8\u09b9\u09bd\u09ce\u09e0\u09e1\u09f0\u09f1\u0a05\u0a06\u0a07\u0a08\u0a09\u0a0a\u0a0f\u0a10\u0a13\u0a14\u0a15\u0a16\u0a17\u0a18\u0a19\u0a1a\u0a1b\u0a1c\u0a1d\u0a1e\u0a1f\u0a20\u0a21\u0a22\u0a23\u0a24\u0a25\u0a26\u0a27\u0a28\u0a2a\u0a2b\u0a2c\u0a2d\u0a2e\u0a2f\u0a30\u0a32\u0a35\u0a38\u0a39\u0a5c\u0a72\u0a73\u0a74\u0a85\u0a86\u0a87\u0a88\u0a89\u0a8a\u0a8b\u0a8c\u0a8d\u0a8f\u0a90\u0a91\u0a93\u0a94\u0a95\u0a96\u0a97\u0a98\u0a99\u0a9a\u0a9b\u0a9c\u0a9d\u0a9e\u0a9f\u0aa0\u0aa1\u0aa2\u0aa3\u0aa4\u0aa5\u0aa6\u0aa7\u0aa8\u0aaa\u0aab\u0aac\u0aad\u0aae\u0aaf\u0ab0\u0ab2\u0ab3\u0ab5\u0ab6\u0ab7\u0ab8\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05\u0b06\u0b07\u0b08\u0b09\u0b0a\u0b0b\u0b0c\u0b0f\u0b10\u0b13\u0b14\u0b15\u0b16\u0b17\u0b18\u0b19\u0b1a\u0b1b\u0b1c\u0b1d\u0b1e\u0b1f\u0b20\u0b21\u0b22\u0b23\u0b24\u0b25\u0b26\u0b27\u0b28\u0b2a\u0b2b\u0b2c\u0b2d\u0b2e\u0b2f\u0b30\u0b32\u0b33\u0b35\u0b36\u0b37\u0b38\u0b39\u0b3d\u0b5f\u0b60\u0b61\u0b71\u0b83\u0b85\u0b86\u0b87\u0b88\u0b89\u0b8a\u0b8e\u0b8f\u0b90\u0b92\u0b93\u0b94\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8\u0ba9\u0baa\u0bae\u0baf\u0bb0\u0bb1\u0bb2\u0bb3\u0bb4\u0bb5\u0bb6\u0bb7\u0bb8\u0bb9\u0bd0\u0c05\u0c06\u0c07\u0c08\u0c09\u0c0a\u0c0b\u0c0c\u0c0e\u0c0f\u0c10\u0c12\u0c13\u0c14\u0c15\u0c16\u0c17\u0c18\u0c19\u0c1a\u0c1b\u0c1c\u0c1d\u0c1e\u0c1f\u0c20\u0c21\u0c22\u0c23\u0c24\u0c25\u0c26\u0c27\u0c28\u0c2a\u0c2b\u0c2c\u0c2d\u0c2e\u0c2f\u0c30\u0c31\u0c32\u0c33\u0c34\u0c35\u0c36\u0c37\u0c38\u0c39\u0c3d\u0c58\u0c59\u0c5a\u0c60\u0c61\u0c80\u0c85\u0c86\u0c87\u0c88\u0c89\u0c8a\u0c8b\u0c8c\u0c8e\u0c8f\u0c90\u0c92\u0c93\u0c94\u0c95\u0c96\u0c97\u0c98\u0c99\u0c9a\u0c9b\u0c9c\u0c9d\u0c9e\u0c9f\u0ca0\u0ca1\u0ca2\u0ca3\u0ca4\u0ca5\u0ca6\u0ca7\u0ca8\u0caa\u0cab\u0cac\u0cad\u0cae\u0caf\u0cb0\u0cb1\u0cb2\u0cb3\u0cb5\u0cb6\u0cb7\u0cb8\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05\u0d06\u0d07\u0d08\u0d09\u0d0a\u0d0b\u0d0c\u0d0e\u0d0f\u0d10\u0d12\u0d13\u0d14\u0d15\u0d16\u0d17\u0d18\u0d19\u0d1a\u0d1b\u0d1c\u0d1d\u0d1e\u0d1f\u0d20\u0d21\u0d22\u0d23\u0d24\u0d25\u0d26\u0d27\u0d28\u0d29\u0d2a\u0d2b\u0d2c\u0d2d\u0d2e\u0d2f\u0d30\u0d31\u0d32\u0d33\u0d34\u0d35\u0d36\u0d37\u0d38\u0d39\u0d3a\u0d3d\u0d4e\u0d54\u0d55\u0d56\u0d5f\u0d60\u0d61\u0d7a\u0d7b\u0d7c\u0d7d\u0d7e\u0d7f\u0d85\u0d86\u0d87\u0d88\u0d89\u0d8a\u0d8b\u0d8c\u0d8d\u0d8e\u0d8f\u0d90\u0d91\u0d92\u0d93\u0d94\u0d95\u0d96\u0d9a\u0d9b\u0d9c\u0d9d\u0d9e\u0d9f\u0da0\u0da1\u0da2\u0da3\u0da4\u0da5\u0da6\u0da7\u0da8\u0da9\u0daa\u0dab\u0dac\u0dad\u0dae\u0daf\u0db0\u0db1\u0db3\u0db4\u0db5\u0db6\u0db7\u0db8\u0db9\u0dba\u0dbb\u0dbd\u0dc0\u0dc1\u0dc2\u0dc3\u0dc4\u0dc5\u0dc6\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e32\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94\u0e95\u0e96\u0e97\u0e99\u0e9a\u0e9b\u0e9c\u0e9d\u0e9e\u0e9f\u0ea1\u0ea2\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead\u0eae\u0eaf\u0eb0\u0eb2\u0ebd\u0ec0\u0ec1\u0ec2\u0ec3\u0ec4\u0ec6\u0ede\u0edf\u0f00\u0f40\u0f41\u0f42\u0f44\u0f45\u0f46\u0f47\u0f49\u0f4a\u0f4b\u0f4c\u0f4e\u0f4f\u0f50\u0f51\u0f53\u0f54\u0f55\u0f56\u0f58\u0f59\u0f5a\u0f5b\u0f5d\u0f5e\u0f5f\u0f60\u0f61\u0f62\u0f63\u0f64\u0f65\u0f66\u0f67\u0f68\u0f6a\u0f6b\u0f6c\u0f88\u0f89\u0f8a\u0f8b\u0f8c\u1000\u1001\u1002\u1003\u1004\u1005\u1006\u1007\u1008\u1009\u100a\u100b\u100c\u100d\u100e\u100f\u1010\u1011\u1012\u1013\u1014\u1015\u1016\u1017\u1018\u1019\u101a\u101b\u101c\u101d\u101e\u101f\u1020\u1021\u1022\u1023\u1024\u1025\u1026\u1027\u1028\u1029\u102a\u103f\u1050\u1051\u1052\u1053\u1054\u1055\u105a\u105b\u105c\u105d\u1061\u1065\u1066\u106e\u106f\u1070\u1075\u1076\u1077\u1078\u1079\u107a\u107b\u107c\u107d\u107e\u107f\u1080\u1081\u108e\u10a0\u10a1\u10a2\u10a3\u10a4\u10a5\u10a6\u10a7\u10a8\u10a9\u10aa\u10ab\u10ac\u10ad\u10ae\u10af\u10b0\u10b1\u10b2\u10b3\u10b4\u10b5\u10b6\u10b7\u10b8\u10b9\u10ba\u10bb\u10bc\u10bd\u10be\u10bf\u10c0\u10c1\u10c2\u10c3\u10c4\u10c5\u10c7\u10cd\u10d0\u10d1\u10d2\u10d3\u10d4\u10d5\u10d6\u10d7\u10d8\u10d9\u10da\u10db\u10dc\u10dd\u10de\u10df\u10e0\u10e1\u10e2\u10e3\u10e4\u10e5\u10e6\u10e7\u10e8\u10e9\u10ea\u10eb\u10ec\u10ed\u10ee\u10ef\u10f0\u10f1\u10f2\u10f3\u10f4\u10f5\u10f6\u10f7\u10f8\u10f9\u10fa\u10fc\u10fd\u10fe\u10ff\u1100\u1101\u1102\u1103\u1104\u1105\u1106\u1107\u1108\u1109\u110a\u110b\u110c\u110d\u110e\u110f\u1110\u1111\u1112\u1113\u1114\u1115\u1116\u1117\u1118\u1119\u111a\u111b\u111c\u111d\u111e\u111f\u1120\u1121\u1122\u1123\u1124\u1125\u1126\u1127\u1128\u1129\u112a\u112b\u112c\u112d\u112e\u112f\u1130\u1131\u1132\u1133\u1134\u1135\u1136\u1137\u1138\u1139\u113a\u113b\u113c\u113d\u113e\u113f\u1140\u1141\u1142\u1143\u1144\u1145\u1146\u1147\u1148\u1149\u114a\u114b\u114c\u114d\u114e\u114f\u1150\u1151\u1152\u1153\u1154\u1155\u1156\u1157\u1158\u1159\u115a\u115b\u115c\u115d\u115e\u115f\u1160\u1161\u1162\u1163\u1164\u1165\u1166\u1167\u1168\u1169\u116a\u116b\u116c\u116d\u116e\u116f\u1170\u1171\u1172\u1173\u1174\u1175\u1176\u1177\u1178\u1179\u117a\u117b\u117c\u117d\u117e\u117f\u1180\u1181\u1182\u1183\u1184\u1185\u1186\u1187\u1188\u1189\u118a\u118b\u118c\u118d\u118e\u118f\u1190\u1191\u1192\u1193\u1194\u1195\u1196\u1197\u1198\u1199\u119a\u119b\u119c\u119d\u119e\u119f\u11a0\u11a1\u11a2\u11a3\u11a4\u11a5\u11a6\u11a7\u11a8\u11a9\u11aa\u11ab\u11ac\u11ad\u11ae\u11af\u11b0\u11b1\u11b2\u11b3\u11b4\u11b5\u11b6\u11b7\u11b8\u11b9\u11ba\u11bb\u11bc\u11bd\u11be\u11bf\u11c0\u11c1\u11c2\u11c3\u11c4\u11c5\u11c6\u11c7\u11c8\u11c9\u11ca\u11cb\u11cc\u11cd\u11ce\u11cf\u11d0\u11d1\u11d2\u11d3\u11d4\u11d5\u11d6\u11d7\u11d8\u11d9\u11da\u11db\u11dc\u11dd\u11de\u11df\u11e0\u11e1\u11e2\u11e3\u11e4\u11e5\u11e6\u11e7\u11e8\u11e9\u11ea\u11eb\u11ec\u11ed\u11ee\u11ef\u11f0\u11f1\u11f2\u11f3\u11f4\u11f5\u11f6\u11f7\u11f8\u11f9\u11fa\u11fb\u11fc\u11fd\u11fe\u11ff\u1200\u1201\u1202\u1203\u1204\u1205\u1206\u1207\u1208\u1209\u120a\u120b\u120c\u120d\u120e\u120f\u1210\u1211\u1212\u1213\u1214\u1215\u1216\u1217\u1218\u1219\u121a\u121b\u121c\u121d\u121e\u121f\u1220\u1221\u1222\u1223\u1224\u1225\u1226\u1227\u1228\u1229\u122a\u122b\u122c\u122d\u122e\u122f\u1230\u1231\u1232\u1233\u1234\u1235\u1236\u1237\u1238\u1239\u123a\u123b\u123c\u123d\u123e\u123f\u1240\u1241\u1242\u1243\u1244\u1245\u1246\u1247\u1248\u124a\u124b\u124c\u124d\u1250\u1251\u1252\u1253\u1254\u1255\u1256\u1258\u125a\u125b\u125c\u125d\u1260\u1261\u1262\u1263\u1264\u1265\u1266\u1267\u1268\u1269\u126a\u126b\u126c\u126d\u126e\u126f\u1270\u1271\u1272\u1273\u1274\u1275\u1276\u1277\u1278\u1279\u127a\u127b\u127c\u127d\u127e\u127f\u1280\u1281\u1282\u1283\u1284\u1285\u1286\u1287\u1288\u128a\u128b\u128c\u128d\u1290\u1291\u1292\u1293\u1294\u1295\u1296\u1297\u1298\u1299\u129a\u129b\u129c\u129d\u129e\u129f\u12a0\u12a1\u12a2\u12a3\u12a4\u12a5\u12a6\u12a7\u12a8\u12a9\u12aa\u12ab\u12ac\u12ad\u12ae\u12af\u12b0\u12b2\u12b3\u12b4\u12b5\u12b8\u12b9\u12ba\u12bb\u12bc\u12bd\u12be\u12c0\u12c2\u12c3\u12c4\u12c5\u12c8\u12c9\u12ca\u12cb\u12cc\u12cd\u12ce\u12cf\u12d0\u12d1\u12d2\u12d3\u12d4\u12d5\u12d6\u12d8\u12d9\u12da\u12db\u12dc\u12dd\u12de\u12df\u12e0\u12e1\u12e2\u12e3\u12e4\u12e5\u12e6\u12e7\u12e8\u12e9\u12ea\u12eb\u12ec\u12ed\u12ee\u12ef\u12f0\u12f1\u12f2\u12f3\u12f4\u12f5\u12f6\u12f7\u12f8\u12f9\u12fa\u12fb\u12fc\u12fd\u12fe\u12ff\u1300\u1301\u1302\u1303\u1304\u1305\u1306\u1307\u1308\u1309\u130a\u130b\u130c\u130d\u130e\u130f\u1310\u1312\u1313\u1314\u1315\u1318\u1319\u131a\u131b\u131c\u131d\u131e\u131f\u1320\u1321\u1322\u1323\u1324\u1325\u1326\u1327\u1328\u1329\u132a\u132b\u132c\u132d\u132e\u132f\u1330\u1331\u1332\u1333\u1334\u1335\u1336\u1337\u1338\u1339\u133a\u133b\u133c\u133d\u133e\u133f\u1340\u1341\u1342\u1343\u1344\u1345\u1346\u1347\u1348\u1349\u134a\u134b\u134c\u134d\u134e\u134f\u1350\u1351\u1352\u1353\u1354\u1355\u1356\u1357\u1358\u1359\u135a\u1380\u1381\u1382\u1383\u1384\u1385\u1386\u1387\u1388\u1389\u138a\u138b\u138c\u138d\u138e\u138f\u13a0\u13a1\u13a2\u13a3\u13a4\u13a5\u13a6\u13a7\u13a8\u13a9\u13aa\u13ab\u13ac\u13ad\u13ae\u13af\u13b0\u13b1\u13b2\u13b3\u13b4\u13b5\u13b6\u13b7\u13b8\u13b9\u13ba\u13bb\u13bc\u13bd\u13be\u13bf\u13c0\u13c1\u13c2\u13c3\u13c4\u13c5\u13c6\u13c7\u13c8\u13c9\u13ca\u13cb\u13cc\u13cd\u13ce\u13cf\u13d0\u13d1\u13d2\u13d3\u13d4\u13d5\u13d6\u13d7\u13d8\u13d9\u13da\u13db\u13dc\u13dd\u13de\u13df\u13e0\u13e1\u13e2\u13e3\u13e4\u13e5\u13e6\u13e7\u13e8\u13e9\u13ea\u13eb\u13ec\u13ed\u13ee\u13ef\u13f0\u13f1\u13f2\u13f3\u13f4\u13f5\u13f8\u13f9\u13fa\u13fb\u13fc\u13fd\u1401\u1402\u1403\u1404\u1405\u1406\u1407\u1408\u1409\u140a\u140b\u140c\u140d\u140e\u140f\u1410\u1411\u1412\u1413\u1414\u1415\u1416\u1417\u1418\u1419\u141a\u141b\u141c\u141d\u141e\u141f\u1420\u1421\u1422\u1423\u1424\u1425\u1426\u1427\u1428\u1429\u142a\u142b\u142c\u142d\u142e\u142f\u1430\u1431\u1432\u1433\u1434\u1435\u1436\u1437\u1438\u1439\u143a\u143b\u143c\u143d\u143e\u143f\u1440\u1441\u1442\u1443\u1444\u1445\u1446\u1447\u1448\u1449\u144a\u144b\u144c\u144d\u144e\u144f\u1450\u1451\u1452\u1453\u1454\u1455\u1456\u1457\u1458\u1459\u145a\u145b\u145c\u145d\u145e\u145f\u1460\u1461\u1462\u1463\u1464\u1465\u1466\u1467\u1468\u1469\u146a\u146b\u146c\u146d\u146e\u146f\u1470\u1471\u1472\u1473\u1474\u1475\u1476\u1477\u1478\u1479\u147a\u147b\u147c\u147d\u147e\u147f\u1480\u1481\u1482\u1483\u1484\u1485\u1486\u1487\u1488\u1489\u148a\u148b\u148c\u148d\u148e\u148f\u1490\u1491\u1492\u1493\u1494\u1495\u1496\u1497\u1498\u1499\u149a\u149b\u149c\u149d\u149e\u149f\u14a0\u14a1\u14a2\u14a3\u14a4\u14a5\u14a6\u14a7\u14a8\u14a9\u14aa\u14ab\u14ac\u14ad\u14ae\u14af\u14b0\u14b1\u14b2\u14b3\u14b4\u14b5\u14b6\u14b7\u14b8\u14b9\u14ba\u14bb\u14bc\u14bd\u14be\u14bf\u14c0\u14c1\u14c2\u14c3\u14c4\u14c5\u14c6\u14c7\u14c8\u14c9\u14ca\u14cb\u14cc\u14cd\u14ce\u14cf\u14d0\u14d1\u14d2\u14d3\u14d4\u14d5\u14d6\u14d7\u14d8\u14d9\u14da\u14db\u14dc\u14dd\u14de\u14df\u14e0\u14e1\u14e2\u14e3\u14e4\u14e5\u14e6\u14e7\u14e8\u14e9\u14ea\u14eb\u14ec\u14ed\u14ee\u14ef\u14f0\u14f1\u14f2\u14f3\u14f4\u14f5\u14f6\u14f7\u14f8\u14f9\u14fa\u14fb\u14fc\u14fd\u14fe\u14ff\u1500\u1501\u1502\u1503\u1504\u1505\u1506\u1507\u1508\u1509\u150a\u150b\u150c\u150d\u150e\u150f\u1510\u1511\u1512\u1513\u1514\u1515\u1516\u1517\u1518\u1519\u151a\u151b\u151c\u151d\u151e\u151f\u1520\u1521\u1522\u1523\u1524\u1525\u1526\u1527\u1528\u1529\u152a\u152b\u152c\u152d\u152e\u152f\u1530\u1531\u1532\u1533\u1534\u1535\u1536\u1537\u1538\u1539\u153a\u153b\u153c\u153d\u153e\u153f\u1540\u1541\u1542\u1543\u1544\u1545\u1546\u1547\u1548\u1549\u154a\u154b\u154c\u154d\u154e\u154f\u1550\u1551\u1552\u1553\u1554\u1555\u1556\u1557\u1558\u1559\u155a\u155b\u155c\u155d\u155e\u155f\u1560\u1561\u1562\u1563\u1564\u1565\u1566\u1567\u1568\u1569\u156a\u156b\u156c\u156d\u156e\u156f\u1570\u1571\u1572\u1573\u1574\u1575\u1576\u1577\u1578\u1579\u157a\u157b\u157c\u157d\u157e\u157f\u1580\u1581\u1582\u1583\u1584\u1585\u1586\u1587\u1588\u1589\u158a\u158b\u158c\u158d\u158e\u158f\u1590\u1591\u1592\u1593\u1594\u1595\u1596\u1597\u1598\u1599\u159a\u159b\u159c\u159d\u159e\u159f\u15a0\u15a1\u15a2\u15a3\u15a4\u15a5\u15a6\u15a7\u15a8\u15a9\u15aa\u15ab\u15ac\u15ad\u15ae\u15af\u15b0\u15b1\u15b2\u15b3\u15b4\u15b5\u15b6\u15b7\u15b8\u15b9\u15ba\u15bb\u15bc\u15bd\u15be\u15bf\u15c0\u15c1\u15c2\u15c3\u15c4\u15c5\u15c6\u15c7\u15c8\u15c9\u15ca\u15cb\u15cc\u15cd\u15ce\u15cf\u15d0\u15d1\u15d2\u15d3\u15d4\u15d5\u15d6\u15d7\u15d8\u15d9\u15da\u15db\u15dc\u15dd\u15de\u15df\u15e0\u15e1\u15e2\u15e3\u15e4\u15e5\u15e6\u15e7\u15e8\u15e9\u15ea\u15eb\u15ec\u15ed\u15ee\u15ef\u15f0\u15f1\u15f2\u15f3\u15f4\u15f5\u15f6\u15f7\u15f8\u15f9\u15fa\u15fb\u15fc\u15fd\u15fe\u15ff\u1600\u1601\u1602\u1603\u1604\u1605\u1606\u1607\u1608\u1609\u160a\u160b\u160c\u160d\u160e\u160f\u1610\u1611\u1612\u1613\u1614\u1615\u1616\u1617\u1618\u1619\u161a\u161b\u161c\u161d\u161e\u161f\u1620\u1621\u1622\u1623\u1624\u1625\u1626\u1627\u1628\u1629\u162a\u162b\u162c\u162d\u162e\u162f\u1630\u1631\u1632\u1633\u1634\u1635\u1636\u1637\u1638\u1639\u163a\u163b\u163c\u163d\u163e\u163f\u1640\u1641\u1642\u1643\u1644\u1645\u1646\u1647\u1648\u1649\u164a\u164b\u164c\u164d\u164e\u164f\u1650\u1651\u1652\u1653\u1654\u1655\u1656\u1657\u1658\u1659\u165a\u165b\u165c\u165d\u165e\u165f\u1660\u1661\u1662\u1663\u1664\u1665\u1666\u1667\u1668\u1669\u166a\u166b\u166c\u166f\u1670\u1671\u1672\u1673\u1674\u1675\u1676\u1677\u1678\u1679\u167a\u167b\u167c\u167d\u167e\u167f\u1681\u1682\u1683\u1684\u1685\u1686\u1687\u1688\u1689\u168a\u168b\u168c\u168d\u168e\u168f\u1690\u1691\u1692\u1693\u1694\u1695\u1696\u1697\u1698\u1699\u169a\u16a0\u16a1\u16a2\u16a3\u16a4\u16a5\u16a6\u16a7\u16a8\u16a9\u16aa\u16ab\u16ac\u16ad\u16ae\u16af\u16b0\u16b1\u16b2\u16b3\u16b4\u16b5\u16b6\u16b7\u16b8\u16b9\u16ba\u16bb\u16bc\u16bd\u16be\u16bf\u16c0\u16c1\u16c2\u16c3\u16c4\u16c5\u16c6\u16c7\u16c8\u16c9\u16ca\u16cb\u16cc\u16cd\u16ce\u16cf\u16d0\u16d1\u16d2\u16d3\u16d4\u16d5\u16d6\u16d7\u16d8\u16d9\u16da\u16db\u16dc\u16dd\u16de\u16df\u16e0\u16e1\u16e2\u16e3\u16e4\u16e5\u16e6\u16e7\u16e8\u16e9\u16ea\u16ee\u16ef\u16f0\u16f1\u16f2\u16f3\u16f4\u16f5\u16f6\u16f7\u16f8\u1700\u1701\u1702\u1703\u1704\u1705\u1706\u1707\u1708\u1709\u170a\u170b\u170c\u170e\u170f\u1710\u1711\u1720\u1721\u1722\u1723\u1724\u1725\u1726\u1727\u1728\u1729\u172a\u172b\u172c\u172d\u172e\u172f\u1730\u1731\u1740\u1741\u1742\u1743\u1744\u1745\u1746\u1747\u1748\u1749\u174a\u174b\u174c\u174d\u174e\u174f\u1750\u1751\u1760\u1761\u1762\u1763\u1764\u1765\u1766\u1767\u1768\u1769\u176a\u176b\u176c\u176e\u176f\u1770\u1780\u1781\u1782\u1783\u1784\u1785\u1786\u1787\u1788\u1789\u178a\u178b\u178c\u178d\u178e\u178f\u1790\u1791\u1792\u1793\u1794\u1795\u1796\u1797\u1798\u1799\u179a\u179b\u179c\u179d\u179e\u179f\u17a0\u17a1\u17a2\u17a3\u17a4\u17a5\u17a6\u17a7\u17a8\u17a9\u17aa\u17ab\u17ac\u17ad\u17ae\u17af\u17b0\u17b1\u17b2\u17b3\u17d7\u17dc\u1820\u1821\u1822\u1823\u1824\u1825\u1826\u1827\u1828\u1829\u182a\u182b\u182c\u182d\u182e\u182f\u1830\u1831\u1832\u1833\u1834\u1835\u1836\u1837\u1838\u1839\u183a\u183b\u183c\u183d\u183e\u183f\u1840\u1841\u1842\u1843\u1844\u1845\u1846\u1847\u1848\u1849\u184a\u184b\u184c\u184d\u184e\u184f\u1850\u1851\u1852\u1853\u1854\u1855\u1856\u1857\u1858\u1859\u185a\u185b\u185c\u185d\u185e\u185f\u1860\u1861\u1862\u1863\u1864\u1865\u1866\u1867\u1868\u1869\u186a\u186b\u186c\u186d\u186e\u186f\u1870\u1871\u1872\u1873\u1874\u1875\u1876\u1877\u1880\u1881\u1882\u1883\u1884\u1887\u1888\u1889\u188a\u188b\u188c\u188d\u188e\u188f\u1890\u1891\u1892\u1893\u1894\u1895\u1896\u1897\u1898\u1899\u189a\u189b\u189c\u189d\u189e\u189f\u18a0\u18a1\u18a2\u18a3\u18a4\u18a5\u18a6\u18a7\u18a8\u18aa\u18b0\u18b1\u18b2\u18b3\u18b4\u18b5\u18b6\u18b7\u18b8\u18b9\u18ba\u18bb\u18bc\u18bd\u18be\u18bf\u18c0\u18c1\u18c2\u18c3\u18c4\u18c5\u18c6\u18c7\u18c8\u18c9\u18ca\u18cb\u18cc\u18cd\u18ce\u18cf\u18d0\u18d1\u18d2\u18d3\u18d4\u18d5\u18d6\u18d7\u18d8\u18d9\u18da\u18db\u18dc\u18dd\u18de\u18df\u18e0\u18e1\u18e2\u18e3\u18e4\u18e5\u18e6\u18e7\u18e8\u18e9\u18ea\u18eb\u18ec\u18ed\u18ee\u18ef\u18f0\u18f1\u18f2\u18f3\u18f4\u18f5\u1900\u1901\u1902\u1903\u1904\u1905\u1906\u1907\u1908\u1909\u190a\u190b\u190c\u190d\u190e\u190f\u1910\u1911\u1912\u1913\u1914\u1915\u1916\u1917\u1918\u1919\u191a\u191b\u191c\u191d\u191e\u1950\u1951\u1952\u1953\u1954\u1955\u1956\u1957\u1958\u1959\u195a\u195b\u195c\u195d\u195e\u195f\u1960\u1961\u1962\u1963\u1964\u1965\u1966\u1967\u1968\u1969\u196a\u196b\u196c\u196d\u1970\u1971\u1972\u1973\u1974\u1980\u1981\u1982\u1983\u1984\u1985\u1986\u1987\u1988\u1989\u198a\u198b\u198c\u198d\u198e\u198f\u1990\u1991\u1992\u1993\u1994\u1995\u1996\u1997\u1998\u1999\u199a\u199b\u199c\u199d\u199e\u199f\u19a0\u19a1\u19a2\u19a3\u19a4\u19a5\u19a6\u19a7\u19a8\u19a9\u19aa\u19ab\u19b0\u19b1\u19b2\u19b3\u19b4\u19b5\u19b6\u19b7\u19b8\u19b9\u19ba\u19bb\u19bc\u19bd\u19be\u19bf\u19c0\u19c1\u19c2\u19c3\u19c4\u19c5\u19c6\u19c7\u19c8\u19c9\u1a00\u1a01\u1a02\u1a03\u1a04\u1a05\u1a06\u1a07\u1a08\u1a09\u1a0a\u1a0b\u1a0c\u1a0d\u1a0e\u1a0f\u1a10\u1a11\u1a12\u1a13\u1a14\u1a15\u1a16\u1a20\u1a21\u1a22\u1a23\u1a24\u1a25\u1a26\u1a27\u1a28\u1a29\u1a2a\u1a2b\u1a2c\u1a2d\u1a2e\u1a2f\u1a30\u1a31\u1a32\u1a33\u1a34\u1a35\u1a36\u1a37\u1a38\u1a39\u1a3a\u1a3b\u1a3c\u1a3d\u1a3e\u1a3f\u1a40\u1a41\u1a42\u1a43\u1a44\u1a45\u1a46\u1a47\u1a48\u1a49\u1a4a\u1a4b\u1a4c\u1a4d\u1a4e\u1a4f\u1a50\u1a51\u1a52\u1a53\u1a54\u1aa7\u1b05\u1b06\u1b07\u1b08\u1b09\u1b0a\u1b0b\u1b0c\u1b0d\u1b0e\u1b0f\u1b10\u1b11\u1b12\u1b13\u1b14\u1b15\u1b16\u1b17\u1b18\u1b19\u1b1a\u1b1b\u1b1c\u1b1d\u1b1e\u1b1f\u1b20\u1b21\u1b22\u1b23\u1b24\u1b25\u1b26\u1b27\u1b28\u1b29\u1b2a\u1b2b\u1b2c\u1b2d\u1b2e\u1b2f\u1b30\u1b31\u1b32\u1b33\u1b45\u1b46\u1b47\u1b48\u1b49\u1b4a\u1b4b\u1b83\u1b84\u1b85\u1b86\u1b87\u1b88\u1b89\u1b8a\u1b8b\u1b8c\u1b8d\u1b8e\u1b8f\u1b90\u1b91\u1b92\u1b93\u1b94\u1b95\u1b96\u1b97\u1b98\u1b99\u1b9a\u1b9b\u1b9c\u1b9d\u1b9e\u1b9f\u1ba0\u1bae\u1baf\u1bba\u1bbb\u1bbc\u1bbd\u1bbe\u1bbf\u1bc0\u1bc1\u1bc2\u1bc3\u1bc4\u1bc5\u1bc6\u1bc7\u1bc8\u1bc9\u1bca\u1bcb\u1bcc\u1bcd\u1bce\u1bcf\u1bd0\u1bd1\u1bd2\u1bd3\u1bd4\u1bd5\u1bd6\u1bd7\u1bd8\u1bd9\u1bda\u1bdb\u1bdc\u1bdd\u1bde\u1bdf\u1be0\u1be1\u1be2\u1be3\u1be4\u1be5\u1c00\u1c01\u1c02\u1c03\u1c04\u1c05\u1c06\u1c07\u1c08\u1c09\u1c0a\u1c0b\u1c0c\u1c0d\u1c0e\u1c0f\u1c10\u1c11\u1c12\u1c13\u1c14\u1c15\u1c16\u1c17\u1c18\u1c19\u1c1a\u1c1b\u1c1c\u1c1d\u1c1e\u1c1f\u1c20\u1c21\u1c22\u1c23\u1c4d\u1c4e\u1c4f\u1c5a\u1c5b\u1c5c\u1c5d\u1c5e\u1c5f\u1c60\u1c61\u1c62\u1c63\u1c64\u1c65\u1c66\u1c67\u1c68\u1c69\u1c6a\u1c6b\u1c6c\u1c6d\u1c6e\u1c6f\u1c70\u1c71\u1c72\u1c73\u1c74\u1c75\u1c76\u1c77\u1c78\u1c79\u1c7a\u1c7b\u1c7c\u1c7d\u1c80\u1c81\u1c82\u1c83\u1c84\u1c85\u1c86\u1c87\u1c88\u1ce9\u1cea\u1ceb\u1cec\u1cee\u1cef\u1cf0\u1cf1\u1cf5\u1cf6\u1d00\u1d01\u1d02\u1d03\u1d04\u1d05\u1d06\u1d07\u1d08\u1d09\u1d0a\u1d0b\u1d0c\u1d0d\u1d0e\u1d0f\u1d10\u1d11\u1d12\u1d13\u1d14\u1d15\u1d16\u1d17\u1d18\u1d19\u1d1a\u1d1b\u1d1c\u1d1d\u1d1e\u1d1f\u1d20\u1d21\u1d22\u1d23\u1d24\u1d25\u1d26\u1d27\u1d28\u1d29\u1d2a\u1d2b\u1d2c\u1d2d\u1d2e\u1d2f\u1d30\u1d31\u1d32\u1d33\u1d34\u1d35\u1d36\u1d37\u1d38\u1d39\u1d3a\u1d3b\u1d3c\u1d3d\u1d3e\u1d3f\u1d40\u1d41\u1d42\u1d43\u1d44\u1d45\u1d46\u1d47\u1d48\u1d49\u1d4a\u1d4b\u1d4c\u1d4d\u1d4e\u1d4f\u1d50\u1d51\u1d52\u1d53\u1d54\u1d55\u1d56\u1d57\u1d58\u1d59\u1d5a\u1d5b\u1d5c\u1d5d\u1d5e\u1d5f\u1d60\u1d61\u1d62\u1d63\u1d64\u1d65\u1d66\u1d67\u1d68\u1d69\u1d6a\u1d6b\u1d6c\u1d6d\u1d6e\u1d6f\u1d70\u1d71\u1d72\u1d73\u1d74\u1d75\u1d76\u1d77\u1d78\u1d79\u1d7a\u1d7b\u1d7c\u1d7d\u1d7e\u1d7f\u1d80\u1d81\u1d82\u1d83\u1d84\u1d85\u1d86\u1d87\u1d88\u1d89\u1d8a\u1d8b\u1d8c\u1d8d\u1d8e\u1d8f\u1d90\u1d91\u1d92\u1d93\u1d94\u1d95\u1d96\u1d97\u1d98\u1d99\u1d9a\u1d9b\u1d9c\u1d9d\u1d9e\u1d9f\u1da0\u1da1\u1da2\u1da3\u1da4\u1da5\u1da6\u1da7\u1da8\u1da9\u1daa\u1dab\u1dac\u1dad\u1dae\u1daf\u1db0\u1db1\u1db2\u1db3\u1db4\u1db5\u1db6\u1db7\u1db8\u1db9\u1dba\u1dbb\u1dbc\u1dbd\u1dbe\u1dbf\u1e00\u1e01\u1e02\u1e03\u1e04\u1e05\u1e06\u1e07\u1e08\u1e09\u1e0a\u1e0b\u1e0c\u1e0d\u1e0e\u1e0f\u1e10\u1e11\u1e12\u1e13\u1e14\u1e15\u1e16\u1e17\u1e18\u1e19\u1e1a\u1e1b\u1e1c\u1e1d\u1e1e\u1e1f\u1e20\u1e21\u1e22\u1e23\u1e24\u1e25\u1e26\u1e27\u1e28\u1e29\u1e2a\u1e2b\u1e2c\u1e2d\u1e2e\u1e2f\u1e30\u1e31\u1e32\u1e33\u1e34\u1e35\u1e36\u1e37\u1e38\u1e39\u1e3a\u1e3b\u1e3c\u1e3d\u1e3e\u1e3f\u1e40\u1e41\u1e42\u1e43\u1e44\u1e45\u1e46\u1e47\u1e48\u1e49\u1e4a\u1e4b\u1e4c\u1e4d\u1e4e\u1e4f\u1e50\u1e51\u1e52\u1e53\u1e54\u1e55\u1e56\u1e57\u1e58\u1e59\u1e5a\u1e5b\u1e5c\u1e5d\u1e5e\u1e5f\u1e60\u1e61\u1e62\u1e63\u1e64\u1e65\u1e66\u1e67\u1e68\u1e69\u1e6a\u1e6b\u1e6c\u1e6d\u1e6e\u1e6f\u1e70\u1e71\u1e72\u1e73\u1e74\u1e75\u1e76\u1e77\u1e78\u1e79\u1e7a\u1e7b\u1e7c\u1e7d\u1e7e\u1e7f\u1e80\u1e81\u1e82\u1e83\u1e84\u1e85\u1e86\u1e87\u1e88\u1e89\u1e8a\u1e8b\u1e8c\u1e8d\u1e8e\u1e8f\u1e90\u1e91\u1e92\u1e93\u1e94\u1e95\u1e96\u1e97\u1e98\u1e99\u1e9b\u1e9c\u1e9d\u1e9e\u1e9f\u1ea0\u1ea1\u1ea2\u1ea3\u1ea4\u1ea5\u1ea6\u1ea7\u1ea8\u1ea9\u1eaa\u1eab\u1eac\u1ead\u1eae\u1eaf\u1eb0\u1eb1\u1eb2\u1eb3\u1eb4\u1eb5\u1eb6\u1eb7\u1eb8\u1eb9\u1eba\u1ebb\u1ebc\u1ebd\u1ebe\u1ebf\u1ec0\u1ec1\u1ec2\u1ec3\u1ec4\u1ec5\u1ec6\u1ec7\u1ec8\u1ec9\u1eca\u1ecb\u1ecc\u1ecd\u1ece\u1ecf\u1ed0\u1ed1\u1ed2\u1ed3\u1ed4\u1ed5\u1ed6\u1ed7\u1ed8\u1ed9\u1eda\u1edb\u1edc\u1edd\u1ede\u1edf\u1ee0\u1ee1\u1ee2\u1ee3\u1ee4\u1ee5\u1ee6\u1ee7\u1ee8\u1ee9\u1eea\u1eeb\u1eec\u1eed\u1eee\u1eef\u1ef0\u1ef1\u1ef2\u1ef3\u1ef4\u1ef5\u1ef6\u1ef7\u1ef8\u1ef9\u1efa\u1efb\u1efc\u1efd\u1efe\u1eff\u1f00\u1f01\u1f02\u1f03\u1f04\u1f05\u1f06\u1f07\u1f08\u1f09\u1f0a\u1f0b\u1f0c\u1f0d\u1f0e\u1f0f\u1f10\u1f11\u1f12\u1f13\u1f14\u1f15\u1f18\u1f19\u1f1a\u1f1b\u1f1c\u1f1d\u1f20\u1f21\u1f22\u1f23\u1f24\u1f25\u1f26\u1f27\u1f28\u1f29\u1f2a\u1f2b\u1f2c\u1f2d\u1f2e\u1f2f\u1f30\u1f31\u1f32\u1f33\u1f34\u1f35\u1f36\u1f37\u1f38\u1f39\u1f3a\u1f3b\u1f3c\u1f3d\u1f3e\u1f3f\u1f40\u1f41\u1f42\u1f43\u1f44\u1f45\u1f48\u1f49\u1f4a\u1f4b\u1f4c\u1f4d\u1f50\u1f51\u1f52\u1f53\u1f54\u1f55\u1f56\u1f57\u1f59\u1f5b\u1f5d\u1f5f\u1f60\u1f61\u1f62\u1f63\u1f64\u1f65\u1f66\u1f67\u1f68\u1f69\u1f6a\u1f6b\u1f6c\u1f6d\u1f6e\u1f6f\u1f70\u1f71\u1f72\u1f73\u1f74\u1f75\u1f76\u1f77\u1f78\u1f79\u1f7a\u1f7b\u1f7c\u1f7d\u1f80\u1f81\u1f82\u1f83\u1f84\u1f85\u1f86\u1f87\u1f88\u1f89\u1f8a\u1f8b\u1f8c\u1f8d\u1f8e\u1f8f\u1f90\u1f91\u1f92\u1f93\u1f94\u1f95\u1f96\u1f97\u1f98\u1f99\u1f9a\u1f9b\u1f9c\u1f9d\u1f9e\u1f9f\u1fa0\u1fa1\u1fa2\u1fa3\u1fa4\u1fa5\u1fa6\u1fa7\u1fa8\u1fa9\u1faa\u1fab\u1fac\u1fad\u1fae\u1faf\u1fb0\u1fb1\u1fb2\u1fb3\u1fb4\u1fb6\u1fb7\u1fb8\u1fb9\u1fba\u1fbb\u1fbc\u1fbe\u1fc2\u1fc3\u1fc4\u1fc6\u1fc7\u1fc8\u1fc9\u1fca\u1fcb\u1fcc\u1fd0\u1fd1\u1fd2\u1fd3\u1fd6\u1fd7\u1fd8\u1fd9\u1fda\u1fdb\u1fe0\u1fe1\u1fe2\u1fe3\u1fe4\u1fe5\u1fe6\u1fe7\u1fe8\u1fe9\u1fea\u1feb\u1fec\u1ff2\u1ff3\u1ff4\u1ff6\u1ff7\u1ff8\u1ff9\u1ffa\u1ffb\u1ffc\u2071\u207f\u2090\u2091\u2092\u2093\u2094\u2095\u2096\u2097\u2098\u2099\u209a\u209b\u209c\u2102\u2107\u210a\u210b\u210c\u210d\u210e\u210f\u2110\u2111\u2112\u2113\u2115\u2118\u2119\u211a\u211b\u211c\u211d\u2124\u2126\u2128\u212a\u212b\u212c\u212d\u212e\u212f\u2130\u2131\u2132\u2133\u2134\u2135\u2136\u2137\u2138\u2139\u213c\u213d\u213e\u213f\u2145\u2146\u2147\u2148\u2149\u214e\u2160\u2164\u2169\u216c\u216d\u216e\u216f\u2170\u2174\u2179\u217c\u217d\u217e\u217f\u2180\u2181\u2182\u2183\u2184\u2185\u2186\u2187\u2188\u2c00\u2c01\u2c02\u2c03\u2c04\u2c05\u2c06\u2c07\u2c08\u2c09\u2c0a\u2c0b\u2c0c\u2c0d\u2c0e\u2c0f\u2c10\u2c11\u2c12\u2c13\u2c14\u2c15\u2c16\u2c17\u2c18\u2c19\u2c1a\u2c1b\u2c1c\u2c1d\u2c1e\u2c1f\u2c20\u2c21\u2c22\u2c23\u2c24\u2c25\u2c26\u2c27\u2c28\u2c29\u2c2a\u2c2b\u2c2c\u2c2d\u2c2e\u2c30\u2c31\u2c32\u2c33\u2c34\u2c35\u2c36\u2c37\u2c38\u2c39\u2c3a\u2c3b\u2c3c\u2c3d\u2c3e\u2c3f\u2c40\u2c41\u2c42\u2c43\u2c44\u2c45\u2c46\u2c47\u2c48\u2c49\u2c4a\u2c4b\u2c4c\u2c4d\u2c4e\u2c4f\u2c50\u2c51\u2c52\u2c53\u2c54\u2c55\u2c56\u2c57\u2c58\u2c59\u2c5a\u2c5b\u2c5c\u2c5d\u2c5e\u2c60\u2c61\u2c62\u2c63\u2c64\u2c65\u2c66\u2c67\u2c68\u2c69\u2c6a\u2c6b\u2c6c\u2c6d\u2c6e\u2c6f\u2c70\u2c71\u2c72\u2c73\u2c74\u2c75\u2c76\u2c77\u2c78\u2c79\u2c7a\u2c7b\u2c7c\u2c7d\u2c7e\u2c7f\u2c80\u2c81\u2c82\u2c83\u2c84\u2c85\u2c86\u2c87\u2c88\u2c89\u2c8a\u2c8b\u2c8c\u2c8d\u2c8e\u2c8f\u2c90\u2c91\u2c92\u2c93\u2c94\u2c95\u2c96\u2c97\u2c98\u2c99\u2c9a\u2c9b\u2c9c\u2c9d\u2c9e\u2c9f\u2ca0\u2ca1\u2ca2\u2ca3\u2ca4\u2ca5\u2ca6\u2ca7\u2ca8\u2ca9\u2caa\u2cab\u2cac\u2cad\u2cae\u2caf\u2cb0\u2cb1\u2cb2\u2cb3\u2cb4\u2cb5\u2cb6\u2cb7\u2cb8\u2cb9\u2cba\u2cbb\u2cbc\u2cbd\u2cbe\u2cbf\u2cc0\u2cc1\u2cc2\u2cc3\u2cc4\u2cc5\u2cc6\u2cc7\u2cc8\u2cc9\u2cca\u2ccb\u2ccc\u2ccd\u2cce\u2ccf\u2cd0\u2cd1\u2cd2\u2cd3\u2cd4\u2cd5\u2cd6\u2cd7\u2cd8\u2cd9\u2cda\u2cdb\u2cdc\u2cdd\u2cde\u2cdf\u2ce0\u2ce1\u2ce2\u2ce3\u2ce4\u2ceb\u2cec\u2ced\u2cee\u2cf2\u2cf3\u2d00\u2d01\u2d02\u2d03\u2d04\u2d05\u2d06\u2d07\u2d08\u2d09\u2d0a\u2d0b\u2d0c\u2d0d\u2d0e\u2d0f\u2d10\u2d11\u2d12\u2d13\u2d14\u2d15\u2d16\u2d17\u2d18\u2d19\u2d1a\u2d1b\u2d1c\u2d1d\u2d1e\u2d1f\u2d20\u2d21\u2d22\u2d23\u2d24\u2d25\u2d27\u2d2d\u2d30\u2d31\u2d32\u2d33\u2d34\u2d35\u2d36\u2d37\u2d38\u2d39\u2d3a\u2d3b\u2d3c\u2d3d\u2d3e\u2d3f\u2d40\u2d41\u2d42\u2d43\u2d44\u2d45\u2d46\u2d47\u2d48\u2d49\u2d4a\u2d4b\u2d4c\u2d4d\u2d4e\u2d4f\u2d50\u2d51\u2d52\u2d53\u2d54\u2d55\u2d56\u2d57\u2d58\u2d59\u2d5a\u2d5b\u2d5c\u2d5d\u2d5e\u2d5f\u2d60\u2d61\u2d62\u2d63\u2d64\u2d65\u2d66\u2d67\u2d6f\u2d80\u2d81\u2d82\u2d83\u2d84\u2d85\u2d86\u2d87\u2d88\u2d89\u2d8a\u2d8b\u2d8c\u2d8d\u2d8e\u2d8f\u2d90\u2d91\u2d92\u2d93\u2d94\u2d95\u2d96\u2da0\u2da1\u2da2\u2da3\u2da4\u2da5\u2da6\u2da8\u2da9\u2daa\u2dab\u2dac\u2dad\u2dae\u2db0\u2db1\u2db2\u2db3\u2db4\u2db5\u2db6\u2db8\u2db9\u2dba\u2dbb\u2dbc\u2dbd\u2dbe\u2dc0\u2dc1\u2dc2\u2dc3\u2dc4\u2dc5\u2dc6\u2dc8\u2dc9\u2dca\u2dcb\u2dcc\u2dcd\u2dce\u2dd0\u2dd1\u2dd2\u2dd3\u2dd4\u2dd5\u2dd6\u2dd8\u2dd9\u2dda\u2ddb\u2ddc\u2ddd\u2dde\u2e2f\u3005\u3006\u3007\u3021\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u3031\u3032\u3033\u3034\u3035\u3038\u3039\u303a\u303b\u303c\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304a\u304b\u304c\u304d\u304e\u304f\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305a\u305b\u305c\u305d\u305e\u305f\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306a\u306b\u306c\u306d\u306e\u306f\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307a\u307b\u307c\u307d\u307e\u307f\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308a\u308b\u308c\u308d\u308e\u308f\u3090\u3091\u3092\u3093\u3094\u3095\u3096\u309d\u309e\u30a1\u30a2\u30a3\u30a4\u30a5\u30a6\u30a7\u30a8\u30a9\u30aa\u30ab\u30ac\u30ad\u30ae\u30af\u30b0\u30b1\u30b2\u30b3\u30b4\u30b5\u30b6\u30b7\u30b8\u30b9\u30ba\u30bb\u30bc\u30bd\u30be\u30bf\u30c0\u30c1\u30c2\u30c3\u30c4\u30c5\u30c6\u30c7\u30c8\u30c9\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d0\u30d1\u30d2\u30d3\u30d4\u30d5\u30d6\u30d7\u30d8\u30d9\u30da\u30db\u30dc\u30dd\u30de\u30df\u30e0\u30e1\u30e2\u30e3\u30e4\u30e5\u30e6\u30e7\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ee\u30ef\u30f0\u30f1\u30f2\u30f3\u30f4\u30f5\u30f6\u30f7\u30f8\u30f9\u30fa\u30fc\u30fd\u30fe\u3105\u3106\u3107\u3108\u3109\u310a\u310b\u310c\u310d\u310e\u310f\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119\u311a\u311b\u311c\u311d\u311e\u311f\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129\u312a\u312b\u312c\u312d\u3131\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139\u313a\u313b\u313c\u313d\u313e\u313f\u3140\u3141\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149\u314a\u314b\u314c\u314d\u314e\u314f\u3150\u3151\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159\u315a\u315b\u315c\u315d\u315e\u315f\u3160\u3161\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169\u316a\u316b\u316c\u316d\u316e\u316f\u3170\u3171\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179\u317a\u317b\u317c\u317d\u317e\u317f\u3180\u3181\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189\u318a\u318b\u318c\u318d\u318e\u31a0\u31a1\u31a2\u31a3\u31a4\u31a5\u31a6\u31a7\u31a8\u31a9\u31aa\u31ab\u31ac\u31ad\u31ae\u31af\u31b0\u31b1\u31b2\u31b3\u31b4\u31b5\u31b6\u31b7\u31b8\u31b9\u31ba\u31f0\u31f1\u31f2\u31f3\u31f4\u31f5\u31f6\u31f7\u31f8\u31f9\u31fa\u31fb\u31fc\u31fd\u31fe\u31ff\u3400\u3401\u3402\u3403\u3404\u3405\u3406\u3407\u3408\u3409\u340a\u340b\u340c\u340d\u340e\u340f\u3410\u3411\u3412\u3413\u3414\u3415\u3416\u3417\u3418\u3419\u341a\u341b\u341c\u341d\u341e\u341f\u3420\u3421\u3422\u3423\u3424\u3425\u3426\u3427\u3428\u3429\u342a\u342b\u342c\u342d\u342e\u342f\u3430\u3431\u3432\u3433\u3434\u3435\u3436\u3437\u3438\u3439\u343a\u343b\u343c\u343d\u343e\u343f\u3440\u3441\u3442\u3443\u3444\u3445\u3446\u3447\u3448\u3449\u344a\u344b\u344c\u344d\u344e\u344f\u3450\u3451\u3452\u3453\u3454\u3455\u3456\u3457\u3458\u3459\u345a\u345b\u345c\u345d\u345e\u345f\u3460\u3461\u3462\u3463\u3464\u3465\u3466\u3467\u3468\u3469\u346a\u346b\u346c\u346d\u346e\u346f\u3470\u3471\u3472\u3473\u3474\u3475\u3476\u3477\u3478\u3479\u347a\u347b\u347c\u347d\u347e\u347f\u3480\u3481\u3482\u3483\u3484\u3485\u3486\u3487\u3488\u3489\u348a\u348b\u348c\u348d\u348e\u348f\u3490\u3491\u3492\u3493\u3494\u3495\u3496\u3497\u3498\u3499\u349a\u349b\u349c\u349d\u349e\u349f\u34a0\u34a1\u34a2\u34a3\u34a4\u34a5\u34a6\u34a7\u34a8\u34a9\u34aa\u34ab\u34ac\u34ad\u34ae\u34af\u34b0\u34b1\u34b2\u34b3\u34b4\u34b5\u34b6\u34b7\u34b8\u34b9\u34ba\u34bb\u34bc\u34bd\u34be\u34bf\u34c0\u34c1\u34c2\u34c3\u34c4\u34c5\u34c6\u34c7\u34c8\u34c9\u34ca\u34cb\u34cc\u34cd\u34ce\u34cf\u34d0\u34d1\u34d2\u34d3\u34d4\u34d5\u34d6\u34d7\u34d8\u34d9\u34da\u34db\u34dc\u34dd\u34de\u34df\u34e0\u34e1\u34e2\u34e3\u34e4\u34e5\u34e6\u34e7\u34e8\u34e9\u34ea\u34eb\u34ec\u34ed\u34ee\u34ef\u34f0\u34f1\u34f2\u34f3\u34f4\u34f5\u34f6\u34f7\u34f8\u34f9\u34fa\u34fb\u34fc\u34fd\u34fe\u34ff\u3500\u3501\u3502\u3503\u3504\u3505\u3506\u3507\u3508\u3509\u350a\u350b\u350c\u350d\u350e\u350f\u3510\u3511\u3512\u3513\u3514\u3515\u3516\u3517\u3518\u3519\u351a\u351b\u351c\u351d\u351e\u351f\u3520\u3521\u3522\u3523\u3524\u3525\u3526\u3527\u3528\u3529\u352a\u352b\u352c\u352d\u352e\u352f\u3530\u3531\u3532\u3533\u3534\u3535\u3536\u3537\u3538\u3539\u353a\u353b\u353c\u353d\u353e\u353f\u3540\u3541\u3542\u3543\u3544\u3545\u3546\u3547\u3548\u3549\u354a\u354b\u354c\u354d\u354e\u354f\u3550\u3551\u3552\u3553\u3554\u3555\u3556\u3557\u3558\u3559\u355a\u355b\u355c\u355d\u355e\u355f\u3560\u3561\u3562\u3563\u3564\u3565\u3566\u3567\u3568\u3569\u356a\u356b\u356c\u356d\u356e\u356f\u3570\u3571\u3572\u3573\u3574\u3575\u3576\u3577\u3578\u3579\u357a\u357b\u357c\u357d\u357e\u357f\u3580\u3581\u3582\u3583\u3584\u3585\u3586\u3587\u3588\u3589\u358a\u358b\u358c\u358d\u358e\u358f\u3590\u3591\u3592\u3593\u3594\u3595\u3596\u3597\u3598\u3599\u359a\u359b\u359c\u359d\u359e\u359f\u35a0\u35a1\u35a2\u35a3\u35a4\u35a5\u35a6\u35a7\u35a8\u35a9\u35aa\u35ab\u35ac\u35ad\u35ae\u35af\u35b0\u35b1\u35b2\u35b3\u35b4\u35b5\u35b6\u35b7\u35b8\u35b9\u35ba\u35bb\u35bc\u35bd\u35be\u35bf\u35c0\u35c1\u35c2\u35c3\u35c4\u35c5\u35c6\u35c7\u35c8\u35c9\u35ca\u35cb\u35cc\u35cd\u35ce\u35cf\u35d0\u35d1\u35d2\u35d3\u35d4\u35d5\u35d6\u35d7\u35d8\u35d9\u35da\u35db\u35dc\u35dd\u35de\u35df\u35e0\u35e1\u35e2\u35e3\u35e4\u35e5\u35e6\u35e7\u35e8\u35e9\u35ea\u35eb\u35ec\u35ed\u35ee\u35ef\u35f0\u35f1\u35f2\u35f3\u35f4\u35f5\u35f6\u35f7\u35f8\u35f9\u35fa\u35fb\u35fc\u35fd\u35fe\u35ff\u3600\u3601\u3602\u3603\u3604\u3605\u3606\u3607\u3608\u3609\u360a\u360b\u360c\u360d\u360e\u360f\u3610\u3611\u3612\u3613\u3614\u3615\u3616\u3617\u3618\u3619\u361a\u361b\u361c\u361d\u361e\u361f\u3620\u3621\u3622\u3623\u3624\u3625\u3626\u3627\u3628\u3629\u362a\u362b\u362c\u362d\u362e\u362f\u3630\u3631\u3632\u3633\u3634\u3635\u3636\u3637\u3638\u3639\u363a\u363b\u363c\u363d\u363e\u363f\u3640\u3641\u3642\u3643\u3644\u3645\u3646\u3647\u3648\u3649\u364a\u364b\u364c\u364d\u364e\u364f\u3650\u3651\u3652\u3653\u3654\u3655\u3656\u3657\u3658\u3659\u365a\u365b\u365c\u365d\u365e\u365f\u3660\u3661\u3662\u3663\u3664\u3665\u3666\u3667\u3668\u3669\u366a\u366b\u366c\u366d\u366e\u366f\u3670\u3671\u3672\u3673\u3674\u3675\u3676\u3677\u3678\u3679\u367a\u367b\u367c\u367d\u367e\u367f\u3680\u3681\u3682\u3683\u3684\u3685\u3686\u3687\u3688\u3689\u368a\u368b\u368c\u368d\u368e\u368f\u3690\u3691\u3692\u3693\u3694\u3695\u3696\u3697\u3698\u3699\u369a\u369b\u369c\u369d\u369e\u369f\u36a0\u36a1\u36a2\u36a3\u36a4\u36a5\u36a6\u36a7\u36a8\u36a9\u36aa\u36ab\u36ac\u36ad\u36ae\u36af\u36b0\u36b1\u36b2\u36b3\u36b4\u36b5\u36b6\u36b7\u36b8\u36b9\u36ba\u36bb\u36bc\u36bd\u36be\u36bf\u36c0\u36c1\u36c2\u36c3\u36c4\u36c5\u36c6\u36c7\u36c8\u36c9\u36ca\u36cb\u36cc\u36cd\u36ce\u36cf\u36d0\u36d1\u36d2\u36d3\u36d4\u36d5\u36d6\u36d7\u36d8\u36d9\u36da\u36db\u36dc\u36dd\u36de\u36df\u36e0\u36e1\u36e2\u36e3\u36e4\u36e5\u36e6\u36e7\u36e8\u36e9\u36ea\u36eb\u36ec\u36ed\u36ee\u36ef\u36f0\u36f1\u36f2\u36f3\u36f4\u36f5\u36f6\u36f7\u36f8\u36f9\u36fa\u36fb\u36fc\u36fd\u36fe\u36ff\u3700\u3701\u3702\u3703\u3704\u3705\u3706\u3707\u3708\u3709\u370a\u370b\u370c\u370d\u370e\u370f\u3710\u3711\u3712\u3713\u3714\u3715\u3716\u3717\u3718\u3719\u371a\u371b\u371c\u371d\u371e\u371f\u3720\u3721\u3722\u3723\u3724\u3725\u3726\u3727\u3728\u3729\u372a\u372b\u372c\u372d\u372e\u372f\u3730\u3731\u3732\u3733\u3734\u3735\u3736\u3737\u3738\u3739\u373a\u373b\u373c\u373d\u373e\u373f\u3740\u3741\u3742\u3743\u3744\u3745\u3746\u3747\u3748\u3749\u374a\u374b\u374c\u374d\u374e\u374f\u3750\u3751\u3752\u3753\u3754\u3755\u3756\u3757\u3758\u3759\u375a\u375b\u375c\u375d\u375e\u375f\u3760\u3761\u3762\u3763\u3764\u3765\u3766\u3767\u3768\u3769\u376a\u376b\u376c\u376d\u376e\u376f\u3770\u3771\u3772\u3773\u3774\u3775\u3776\u3777\u3778\u3779\u377a\u377b\u377c\u377d\u377e\u377f\u3780\u3781\u3782\u3783\u3784\u3785\u3786\u3787\u3788\u3789\u378a\u378b\u378c\u378d\u378e\u378f\u3790\u3791\u3792\u3793\u3794\u3795\u3796\u3797\u3798\u3799\u379a\u379b\u379c\u379d\u379e\u379f\u37a0\u37a1\u37a2\u37a3\u37a4\u37a5\u37a6\u37a7\u37a8\u37a9\u37aa\u37ab\u37ac\u37ad\u37ae\u37af\u37b0\u37b1\u37b2\u37b3\u37b4\u37b5\u37b6\u37b7\u37b8\u37b9\u37ba\u37bb\u37bc\u37bd\u37be\u37bf\u37c0\u37c1\u37c2\u37c3\u37c4\u37c5\u37c6\u37c7\u37c8\u37c9\u37ca\u37cb\u37cc\u37cd\u37ce\u37cf\u37d0\u37d1\u37d2\u37d3\u37d4\u37d5\u37d6\u37d7\u37d8\u37d9\u37da\u37db\u37dc\u37dd\u37de\u37df\u37e0\u37e1\u37e2\u37e3\u37e4\u37e5\u37e6\u37e7\u37e8\u37e9\u37ea\u37eb\u37ec\u37ed\u37ee\u37ef\u37f0\u37f1\u37f2\u37f3\u37f4\u37f5\u37f6\u37f7\u37f8\u37f9\u37fa\u37fb\u37fc\u37fd\u37fe\u37ff\u3800\u3801\u3802\u3803\u3804\u3805\u3806\u3807\u3808\u3809\u380a\u380b\u380c\u380d\u380e\u380f\u3810\u3811\u3812\u3813\u3814\u3815\u3816\u3817\u3818\u3819\u381a\u381b\u381c\u381d\u381e\u381f\u3820\u3821\u3822\u3823\u3824\u3825\u3826\u3827\u3828\u3829\u382a\u382b\u382c\u382d\u382e\u382f\u3830\u3831\u3832\u3833\u3834\u3835\u3836\u3837\u3838\u3839\u383a\u383b\u383c\u383d\u383e\u383f\u3840\u3841\u3842\u3843\u3844\u3845\u3846\u3847\u3848\u3849\u384a\u384b\u384c\u384d\u384e\u384f\u3850\u3851\u3852\u3853\u3854\u3855\u3856\u3857\u3858\u3859\u385a\u385b\u385c\u385d\u385e\u385f\u3860\u3861\u3862\u3863\u3864\u3865\u3866\u3867\u3868\u3869\u386a\u386b\u386c\u386d\u386e\u386f\u3870\u3871\u3872\u3873\u3874\u3875\u3876\u3877\u3878\u3879\u387a\u387b\u387c\u387d\u387e\u387f\u3880\u3881\u3882\u3883\u3884\u3885\u3886\u3887\u3888\u3889\u388a\u388b\u388c\u388d\u388e\u388f\u3890\u3891\u3892\u3893\u3894\u3895\u3896\u3897\u3898\u3899\u389a\u389b\u389c\u389d\u389e\u389f\u38a0\u38a1\u38a2\u38a3\u38a4\u38a5\u38a6\u38a7\u38a8\u38a9\u38aa\u38ab\u38ac\u38ad\u38ae\u38af\u38b0\u38b1\u38b2\u38b3\u38b4\u38b5\u38b6\u38b7\u38b8\u38b9\u38ba\u38bb\u38bc\u38bd\u38be\u38bf\u38c0\u38c1\u38c2\u38c3\u38c4\u38c5\u38c6\u38c7\u38c8\u38c9\u38ca\u38cb\u38cc\u38cd\u38ce\u38cf\u38d0\u38d1\u38d2\u38d3\u38d4\u38d5\u38d6\u38d7\u38d8\u38d9\u38da\u38db\u38dc\u38dd\u38de\u38df\u38e0\u38e1\u38e2\u38e3\u38e4\u38e5\u38e6\u38e7\u38e8\u38e9\u38ea\u38eb\u38ec\u38ed\u38ee\u38ef\u38f0\u38f1\u38f2\u38f3\u38f4\u38f5\u38f6\u38f7\u38f8\u38f9\u38fa\u38fb\u38fc\u38fd\u38fe\u38ff\u3900\u3901\u3902\u3903\u3904\u3905\u3906\u3907\u3908\u3909\u390a\u390b\u390c\u390d\u390e\u390f\u3910\u3911\u3912\u3913\u3914\u3915\u3916\u3917\u3918\u3919\u391a\u391b\u391c\u391d\u391e\u391f\u3920\u3921\u3922\u3923\u3924\u3925\u3926\u3927\u3928\u3929\u392a\u392b\u392c\u392d\u392e\u392f\u3930\u3931\u3932\u3933\u3934\u3935\u3936\u3937\u3938\u3939\u393a\u393b\u393c\u393d\u393e\u393f\u3940\u3941\u3942\u3943\u3944\u3945\u3946\u3947\u3948\u3949\u394a\u394b\u394c\u394d\u394e\u394f\u3950\u3951\u3952\u3953\u3954\u3955\u3956\u3957\u3958\u3959\u395a\u395b\u395c\u395d\u395e\u395f\u3960\u3961\u3962\u3963\u3964\u3965\u3966\u3967\u3968\u3969\u396a\u396b\u396c\u396d\u396e\u396f\u3970\u3971\u3972\u3973\u3974\u3975\u3976\u3977\u3978\u3979\u397a\u397b\u397c\u397d\u397e\u397f\u3980\u3981\u3982\u3983\u3984\u3985\u3986\u3987\u3988\u3989\u398a\u398b\u398c\u398d\u398e\u398f\u3990\u3991\u3992\u3993\u3994\u3995\u3996\u3997\u3998\u3999\u399a\u399b\u399c\u399d\u399e\u399f\u39a0\u39a1\u39a2\u39a3\u39a4\u39a5\u39a6\u39a7\u39a8\u39a9\u39aa\u39ab\u39ac\u39ad\u39ae\u39af\u39b0\u39b1\u39b2\u39b3\u39b4\u39b5\u39b6\u39b7\u39b8\u39b9\u39ba\u39bb\u39bc\u39bd\u39be\u39bf\u39c0\u39c1\u39c2\u39c3\u39c4\u39c5\u39c6\u39c7\u39c8\u39c9\u39ca\u39cb\u39cc\u39cd\u39ce\u39cf\u39d0\u39d1\u39d2\u39d3\u39d4\u39d5\u39d6\u39d7\u39d8\u39d9\u39da\u39db\u39dc\u39dd\u39de\u39df\u39e0\u39e1\u39e2\u39e3\u39e4\u39e5\u39e6\u39e7\u39e8\u39e9\u39ea\u39eb\u39ec\u39ed\u39ee\u39ef\u39f0\u39f1\u39f2\u39f3\u39f4\u39f5\u39f6\u39f7\u39f8\u39f9\u39fa\u39fb\u39fc\u39fd\u39fe\u39ff\u3a00\u3a01\u3a02\u3a03\u3a04\u3a05\u3a06\u3a07\u3a08\u3a09\u3a0a\u3a0b\u3a0c\u3a0d\u3a0e\u3a0f\u3a10\u3a11\u3a12\u3a13\u3a14\u3a15\u3a16\u3a17\u3a18\u3a19\u3a1a\u3a1b\u3a1c\u3a1d\u3a1e\u3a1f\u3a20\u3a21\u3a22\u3a23\u3a24\u3a25\u3a26\u3a27\u3a28\u3a29\u3a2a\u3a2b\u3a2c\u3a2d\u3a2e\u3a2f\u3a30\u3a31\u3a32\u3a33\u3a34\u3a35\u3a36\u3a37\u3a38\u3a39\u3a3a\u3a3b\u3a3c\u3a3d\u3a3e\u3a3f\u3a40\u3a41\u3a42\u3a43\u3a44\u3a45\u3a46\u3a47\u3a48\u3a49\u3a4a\u3a4b\u3a4c\u3a4d\u3a4e\u3a4f\u3a50\u3a51\u3a52\u3a53\u3a54\u3a55\u3a56\u3a57\u3a58\u3a59\u3a5a\u3a5b\u3a5c\u3a5d\u3a5e\u3a5f\u3a60\u3a61\u3a62\u3a63\u3a64\u3a65\u3a66\u3a67\u3a68\u3a69\u3a6a\u3a6b\u3a6c\u3a6d\u3a6e\u3a6f\u3a70\u3a71\u3a72\u3a73\u3a74\u3a75\u3a76\u3a77\u3a78\u3a79\u3a7a\u3a7b\u3a7c\u3a7d\u3a7e\u3a7f\u3a80\u3a81\u3a82\u3a83\u3a84\u3a85\u3a86\u3a87\u3a88\u3a89\u3a8a\u3a8b\u3a8c\u3a8d\u3a8e\u3a8f\u3a90\u3a91\u3a92\u3a93\u3a94\u3a95\u3a96\u3a97\u3a98\u3a99\u3a9a\u3a9b\u3a9c\u3a9d\u3a9e\u3a9f\u3aa0\u3aa1\u3aa2\u3aa3\u3aa4\u3aa5\u3aa6\u3aa7\u3aa8\u3aa9\u3aaa\u3aab\u3aac\u3aad\u3aae\u3aaf\u3ab0\u3ab1\u3ab2\u3ab3\u3ab4\u3ab5\u3ab6\u3ab7\u3ab8\u3ab9\u3aba\u3abb\u3abc\u3abd\u3abe\u3abf\u3ac0\u3ac1\u3ac2\u3ac3\u3ac4\u3ac5\u3ac6\u3ac7\u3ac8\u3ac9\u3aca\u3acb\u3acc\u3acd\u3ace\u3acf\u3ad0\u3ad1\u3ad2\u3ad3\u3ad4\u3ad5\u3ad6\u3ad7\u3ad8\u3ad9\u3ada\u3adb\u3adc\u3add\u3ade\u3adf\u3ae0\u3ae1\u3ae2\u3ae3\u3ae4\u3ae5\u3ae6\u3ae7\u3ae8\u3ae9\u3aea\u3aeb\u3aec\u3aed\u3aee\u3aef\u3af0\u3af1\u3af2\u3af3\u3af4\u3af5\u3af6\u3af7\u3af8\u3af9\u3afa\u3afb\u3afc\u3afd\u3afe\u3aff\u3b00\u3b01\u3b02\u3b03\u3b04\u3b05\u3b06\u3b07\u3b08\u3b09\u3b0a\u3b0b\u3b0c\u3b0d\u3b0e\u3b0f\u3b10\u3b11\u3b12\u3b13\u3b14\u3b15\u3b16\u3b17\u3b18\u3b19\u3b1a\u3b1b\u3b1c\u3b1d\u3b1e\u3b1f\u3b20\u3b21\u3b22\u3b23\u3b24\u3b25\u3b26\u3b27\u3b28\u3b29\u3b2a\u3b2b\u3b2c\u3b2d\u3b2e\u3b2f\u3b30\u3b31\u3b32\u3b33\u3b34\u3b35\u3b36\u3b37\u3b38\u3b39\u3b3a\u3b3b\u3b3c\u3b3d\u3b3e\u3b3f\u3b40\u3b41\u3b42\u3b43\u3b44\u3b45\u3b46\u3b47\u3b48\u3b49\u3b4a\u3b4b\u3b4c\u3b4d\u3b4e\u3b4f\u3b50\u3b51\u3b52\u3b53\u3b54\u3b55\u3b56\u3b57\u3b58\u3b59\u3b5a\u3b5b\u3b5c\u3b5d\u3b5e\u3b5f\u3b60\u3b61\u3b62\u3b63\u3b64\u3b65\u3b66\u3b67\u3b68\u3b69\u3b6a\u3b6b\u3b6c\u3b6d\u3b6e\u3b6f\u3b70\u3b71\u3b72\u3b73\u3b74\u3b75\u3b76\u3b77\u3b78\u3b79\u3b7a\u3b7b\u3b7c\u3b7d\u3b7e\u3b7f\u3b80\u3b81\u3b82\u3b83\u3b84\u3b85\u3b86\u3b87\u3b88\u3b89\u3b8a\u3b8b\u3b8c\u3b8d\u3b8e\u3b8f\u3b90\u3b91\u3b92\u3b93\u3b94\u3b95\u3b96\u3b97\u3b98\u3b99\u3b9a\u3b9b\u3b9c\u3b9d\u3b9e\u3b9f\u3ba0\u3ba1\u3ba2\u3ba3\u3ba4\u3ba5\u3ba6\u3ba7\u3ba8\u3ba9\u3baa\u3bab\u3bac\u3bad\u3bae\u3baf\u3bb0\u3bb1\u3bb2\u3bb3\u3bb4\u3bb5\u3bb6\u3bb7\u3bb8\u3bb9\u3bba\u3bbb\u3bbc\u3bbd\u3bbe\u3bbf\u3bc0\u3bc1\u3bc2\u3bc3\u3bc4\u3bc5\u3bc6\u3bc7\u3bc8\u3bc9\u3bca\u3bcb\u3bcc\u3bcd\u3bce\u3bcf\u3bd0\u3bd1\u3bd2\u3bd3\u3bd4\u3bd5\u3bd6\u3bd7\u3bd8\u3bd9\u3bda\u3bdb\u3bdc\u3bdd\u3bde\u3bdf\u3be0\u3be1\u3be2\u3be3\u3be4\u3be5\u3be6\u3be7\u3be8\u3be9\u3bea\u3beb\u3bec\u3bed\u3bee\u3bef\u3bf0\u3bf1\u3bf2\u3bf3\u3bf4\u3bf5\u3bf6\u3bf7\u3bf8\u3bf9\u3bfa\u3bfb\u3bfc\u3bfd\u3bfe\u3bff\u3c00\u3c01\u3c02\u3c03\u3c04\u3c05\u3c06\u3c07\u3c08\u3c09\u3c0a\u3c0b\u3c0c\u3c0d\u3c0e\u3c0f\u3c10\u3c11\u3c12\u3c13\u3c14\u3c15\u3c16\u3c17\u3c18\u3c19\u3c1a\u3c1b\u3c1c\u3c1d\u3c1e\u3c1f\u3c20\u3c21\u3c22\u3c23\u3c24\u3c25\u3c26\u3c27\u3c28\u3c29\u3c2a\u3c2b\u3c2c\u3c2d\u3c2e\u3c2f\u3c30\u3c31\u3c32\u3c33\u3c34\u3c35\u3c36\u3c37\u3c38\u3c39\u3c3a\u3c3b\u3c3c\u3c3d\u3c3e\u3c3f\u3c40\u3c41\u3c42\u3c43\u3c44\u3c45\u3c46\u3c47\u3c48\u3c49\u3c4a\u3c4b\u3c4c\u3c4d\u3c4e\u3c4f\u3c50\u3c51\u3c52\u3c53\u3c54\u3c55\u3c56\u3c57\u3c58\u3c59\u3c5a\u3c5b\u3c5c\u3c5d\u3c5e\u3c5f\u3c60\u3c61\u3c62\u3c63\u3c64\u3c65\u3c66\u3c67\u3c68\u3c69\u3c6a\u3c6b\u3c6c\u3c6d\u3c6e\u3c6f\u3c70\u3c71\u3c72\u3c73\u3c74\u3c75\u3c76\u3c77\u3c78\u3c79\u3c7a\u3c7b\u3c7c\u3c7d\u3c7e\u3c7f\u3c80\u3c81\u3c82\u3c83\u3c84\u3c85\u3c86\u3c87\u3c88\u3c89\u3c8a\u3c8b\u3c8c\u3c8d\u3c8e\u3c8f\u3c90\u3c91\u3c92\u3c93\u3c94\u3c95\u3c96\u3c97\u3c98\u3c99\u3c9a\u3c9b\u3c9c\u3c9d\u3c9e\u3c9f\u3ca0\u3ca1\u3ca2\u3ca3\u3ca4\u3ca5\u3ca6\u3ca7\u3ca8\u3ca9\u3caa\u3cab\u3cac\u3cad\u3cae\u3caf\u3cb0\u3cb1\u3cb2\u3cb3\u3cb4\u3cb5\u3cb6\u3cb7\u3cb8\u3cb9\u3cba\u3cbb\u3cbc\u3cbd\u3cbe\u3cbf\u3cc0\u3cc1\u3cc2\u3cc3\u3cc4\u3cc5\u3cc6\u3cc7\u3cc8\u3cc9\u3cca\u3ccb\u3ccc\u3ccd\u3cce\u3ccf\u3cd0\u3cd1\u3cd2\u3cd3\u3cd4\u3cd5\u3cd6\u3cd7\u3cd8\u3cd9\u3cda\u3cdb\u3cdc\u3cdd\u3cde\u3cdf\u3ce0\u3ce1\u3ce2\u3ce3\u3ce4\u3ce5\u3ce6\u3ce7\u3ce8\u3ce9\u3cea\u3ceb\u3cec\u3ced\u3cee\u3cef\u3cf0\u3cf1\u3cf2\u3cf3\u3cf4\u3cf5\u3cf6\u3cf7\u3cf8\u3cf9\u3cfa\u3cfb\u3cfc\u3cfd\u3cfe\u3cff\u3d00\u3d01\u3d02\u3d03\u3d04\u3d05\u3d06\u3d07\u3d08\u3d09\u3d0a\u3d0b\u3d0c\u3d0d\u3d0e\u3d0f\u3d10\u3d11\u3d12\u3d13\u3d14\u3d15\u3d16\u3d17\u3d18\u3d19\u3d1a\u3d1b\u3d1c\u3d1d\u3d1e\u3d1f\u3d20\u3d21\u3d22\u3d23\u3d24\u3d25\u3d26\u3d27\u3d28\u3d29\u3d2a\u3d2b\u3d2c\u3d2d\u3d2e\u3d2f\u3d30\u3d31\u3d32\u3d33\u3d34\u3d35\u3d36\u3d37\u3d38\u3d39\u3d3a\u3d3b\u3d3c\u3d3d\u3d3e\u3d3f\u3d40\u3d41\u3d42\u3d43\u3d44\u3d45\u3d46\u3d47\u3d48\u3d49\u3d4a\u3d4b\u3d4c\u3d4d\u3d4e\u3d4f\u3d50\u3d51\u3d52\u3d53\u3d54\u3d55\u3d56\u3d57\u3d58\u3d59\u3d5a\u3d5b\u3d5c\u3d5d\u3d5e\u3d5f\u3d60\u3d61\u3d62\u3d63\u3d64\u3d65\u3d66\u3d67\u3d68\u3d69\u3d6a\u3d6b\u3d6c\u3d6d\u3d6e\u3d6f\u3d70\u3d71\u3d72\u3d73\u3d74\u3d75\u3d76\u3d77\u3d78\u3d79\u3d7a\u3d7b\u3d7c\u3d7d\u3d7e\u3d7f\u3d80\u3d81\u3d82\u3d83\u3d84\u3d85\u3d86\u3d87\u3d88\u3d89\u3d8a\u3d8b\u3d8c\u3d8d\u3d8e\u3d8f\u3d90\u3d91\u3d92\u3d93\u3d94\u3d95\u3d96\u3d97\u3d98\u3d99\u3d9a\u3d9b\u3d9c\u3d9d\u3d9e\u3d9f\u3da0\u3da1\u3da2\u3da3\u3da4\u3da5\u3da6\u3da7\u3da8\u3da9\u3daa\u3dab\u3dac\u3dad\u3dae\u3daf\u3db0\u3db1\u3db2\u3db3\u3db4\u3db5\u3db6\u3db7\u3db8\u3db9\u3dba\u3dbb\u3dbc\u3dbd\u3dbe\u3dbf\u3dc0\u3dc1\u3dc2\u3dc3\u3dc4\u3dc5\u3dc6\u3dc7\u3dc8\u3dc9\u3dca\u3dcb\u3dcc\u3dcd\u3dce\u3dcf\u3dd0\u3dd1\u3dd2\u3dd3\u3dd4\u3dd5\u3dd6\u3dd7\u3dd8\u3dd9\u3dda\u3ddb\u3ddc\u3ddd\u3dde\u3ddf\u3de0\u3de1\u3de2\u3de3\u3de4\u3de5\u3de6\u3de7\u3de8\u3de9\u3dea\u3deb\u3dec\u3ded\u3dee\u3def\u3df0\u3df1\u3df2\u3df3\u3df4\u3df5\u3df6\u3df7\u3df8\u3df9\u3dfa\u3dfb\u3dfc\u3dfd\u3dfe\u3dff\u3e00\u3e01\u3e02\u3e03\u3e04\u3e05\u3e06\u3e07\u3e08\u3e09\u3e0a\u3e0b\u3e0c\u3e0d\u3e0e\u3e0f\u3e10\u3e11\u3e12\u3e13\u3e14\u3e15\u3e16\u3e17\u3e18\u3e19\u3e1a\u3e1b\u3e1c\u3e1d\u3e1e\u3e1f\u3e20\u3e21\u3e22\u3e23\u3e24\u3e25\u3e26\u3e27\u3e28\u3e29\u3e2a\u3e2b\u3e2c\u3e2d\u3e2e\u3e2f\u3e30\u3e31\u3e32\u3e33\u3e34\u3e35\u3e36\u3e37\u3e38\u3e39\u3e3a\u3e3b\u3e3c\u3e3d\u3e3e\u3e3f\u3e40\u3e41\u3e42\u3e43\u3e44\u3e45\u3e46\u3e47\u3e48\u3e49\u3e4a\u3e4b\u3e4c\u3e4d\u3e4e\u3e4f\u3e50\u3e51\u3e52\u3e53\u3e54\u3e55\u3e56\u3e57\u3e58\u3e59\u3e5a\u3e5b\u3e5c\u3e5d\u3e5e\u3e5f\u3e60\u3e61\u3e62\u3e63\u3e64\u3e65\u3e66\u3e67\u3e68\u3e69\u3e6a\u3e6b\u3e6c\u3e6d\u3e6e\u3e6f\u3e70\u3e71\u3e72\u3e73\u3e74\u3e75\u3e76\u3e77\u3e78\u3e79\u3e7a\u3e7b\u3e7c\u3e7d\u3e7e\u3e7f\u3e80\u3e81\u3e82\u3e83\u3e84\u3e85\u3e86\u3e87\u3e88\u3e89\u3e8a\u3e8b\u3e8c\u3e8d\u3e8e\u3e8f\u3e90\u3e91\u3e92\u3e93\u3e94\u3e95\u3e96\u3e97\u3e98\u3e99\u3e9a\u3e9b\u3e9c\u3e9d\u3e9e\u3e9f\u3ea0\u3ea1\u3ea2\u3ea3\u3ea4\u3ea5\u3ea6\u3ea7\u3ea8\u3ea9\u3eaa\u3eab\u3eac\u3ead\u3eae\u3eaf\u3eb0\u3eb1\u3eb2\u3eb3\u3eb4\u3eb5\u3eb6\u3eb7\u3eb8\u3eb9\u3eba\u3ebb\u3ebc\u3ebd\u3ebe\u3ebf\u3ec0\u3ec1\u3ec2\u3ec3\u3ec4\u3ec5\u3ec6\u3ec7\u3ec8\u3ec9\u3eca\u3ecb\u3ecc\u3ecd\u3ece\u3ecf\u3ed0\u3ed1\u3ed2\u3ed3\u3ed4\u3ed5\u3ed6\u3ed7\u3ed8\u3ed9\u3eda\u3edb\u3edc\u3edd\u3ede\u3edf\u3ee0\u3ee1\u3ee2\u3ee3\u3ee4\u3ee5\u3ee6\u3ee7\u3ee8\u3ee9\u3eea\u3eeb\u3eec\u3eed\u3eee\u3eef\u3ef0\u3ef1\u3ef2\u3ef3\u3ef4\u3ef5\u3ef6\u3ef7\u3ef8\u3ef9\u3efa\u3efb\u3efc\u3efd\u3efe\u3eff\u3f00\u3f01\u3f02\u3f03\u3f04\u3f05\u3f06\u3f07\u3f08\u3f09\u3f0a\u3f0b\u3f0c\u3f0d\u3f0e\u3f0f\u3f10\u3f11\u3f12\u3f13\u3f14\u3f15\u3f16\u3f17\u3f18\u3f19\u3f1a\u3f1b\u3f1c\u3f1d\u3f1e\u3f1f\u3f20\u3f21\u3f22\u3f23\u3f24\u3f25\u3f26\u3f27\u3f28\u3f29\u3f2a\u3f2b\u3f2c\u3f2d\u3f2e\u3f2f\u3f30\u3f31\u3f32\u3f33\u3f34\u3f35\u3f36\u3f37\u3f38\u3f39\u3f3a\u3f3b\u3f3c\u3f3d\u3f3e\u3f3f\u3f40\u3f41\u3f42\u3f43\u3f44\u3f45\u3f46\u3f47\u3f48\u3f49\u3f4a\u3f4b\u3f4c\u3f4d\u3f4e\u3f4f\u3f50\u3f51\u3f52\u3f53\u3f54\u3f55\u3f56\u3f57\u3f58\u3f59\u3f5a\u3f5b\u3f5c\u3f5d\u3f5e\u3f5f\u3f60\u3f61\u3f62\u3f63\u3f64\u3f65\u3f66\u3f67\u3f68\u3f69\u3f6a\u3f6b\u3f6c\u3f6d\u3f6e\u3f6f\u3f70\u3f71\u3f72\u3f73\u3f74\u3f75\u3f76\u3f77\u3f78\u3f79\u3f7a\u3f7b\u3f7c\u3f7d\u3f7e\u3f7f\u3f80\u3f81\u3f82\u3f83\u3f84\u3f85\u3f86\u3f87\u3f88\u3f89\u3f8a\u3f8b\u3f8c\u3f8d\u3f8e\u3f8f\u3f90\u3f91\u3f92\u3f93\u3f94\u3f95\u3f96\u3f97\u3f98\u3f99\u3f9a\u3f9b\u3f9c\u3f9d\u3f9e\u3f9f\u3fa0\u3fa1\u3fa2\u3fa3\u3fa4\u3fa5\u3fa6\u3fa7\u3fa8\u3fa9\u3faa\u3fab\u3fac\u3fad\u3fae\u3faf\u3fb0\u3fb1\u3fb2\u3fb3\u3fb4\u3fb5\u3fb6\u3fb7\u3fb8\u3fb9\u3fba\u3fbb\u3fbc\u3fbd\u3fbe\u3fbf\u3fc0\u3fc1\u3fc2\u3fc3\u3fc4\u3fc5\u3fc6\u3fc7\u3fc8\u3fc9\u3fca\u3fcb\u3fcc\u3fcd\u3fce\u3fcf\u3fd0\u3fd1\u3fd2\u3fd3\u3fd4\u3fd5\u3fd6\u3fd7\u3fd8\u3fd9\u3fda\u3fdb\u3fdc\u3fdd\u3fde\u3fdf\u3fe0\u3fe1\u3fe2\u3fe3\u3fe4\u3fe5\u3fe6\u3fe7\u3fe8\u3fe9\u3fea\u3feb\u3fec\u3fed\u3fee\u3fef\u3ff0\u3ff1\u3ff2\u3ff3\u3ff4\u3ff5\u3ff6\u3ff7\u3ff8\u3ff9\u3ffa\u3ffb\u3ffc\u3ffd\u3ffe\u3fff\u4000\u4001\u4002\u4003\u4004\u4005\u4006\u4007\u4008\u4009\u400a\u400b\u400c\u400d\u400e\u400f\u4010\u4011\u4012\u4013\u4014\u4015\u4016\u4017\u4018\u4019\u401a\u401b\u401c\u401d\u401e\u401f\u4020\u4021\u4022\u4023\u4024\u4025\u4026\u4027\u4028\u4029\u402a\u402b\u402c\u402d\u402e\u402f\u4030\u4031\u4032\u4033\u4034\u4035\u4036\u4037\u4038\u4039\u403a\u403b\u403c\u403d\u403e\u403f\u4040\u4041\u4042\u4043\u4044\u4045\u4046\u4047\u4048\u4049\u404a\u404b\u404c\u404d\u404e\u404f\u4050\u4051\u4052\u4053\u4054\u4055\u4056\u4057\u4058\u4059\u405a\u405b\u405c\u405d\u405e\u405f\u4060\u4061\u4062\u4063\u4064\u4065\u4066\u4067\u4068\u4069\u406a\u406b\u406c\u406d\u406e\u406f\u4070\u4071\u4072\u4073\u4074\u4075\u4076\u4077\u4078\u4079\u407a\u407b\u407c\u407d\u407e\u407f\u4080\u4081\u4082\u4083\u4084\u4085\u4086\u4087\u4088\u4089\u408a\u408b\u408c\u408d\u408e\u408f\u4090\u4091\u4092\u4093\u4094\u4095\u4096\u4097\u4098\u4099\u409a\u409b\u409c\u409d\u409e\u409f\u40a0\u40a1\u40a2\u40a3\u40a4\u40a5\u40a6\u40a7\u40a8\u40a9\u40aa\u40ab\u40ac\u40ad\u40ae\u40af\u40b0\u40b1\u40b2\u40b3\u40b4\u40b5\u40b6\u40b7\u40b8\u40b9\u40ba\u40bb\u40bc\u40bd\u40be\u40bf\u40c0\u40c1\u40c2\u40c3\u40c4\u40c5\u40c6\u40c7\u40c8\u40c9\u40ca\u40cb\u40cc\u40cd\u40ce\u40cf\u40d0\u40d1\u40d2\u40d3\u40d4\u40d5\u40d6\u40d7\u40d8\u40d9\u40da\u40db\u40dc\u40dd\u40de\u40df\u40e0\u40e1\u40e2\u40e3\u40e4\u40e5\u40e6\u40e7\u40e8\u40e9\u40ea\u40eb\u40ec\u40ed\u40ee\u40ef\u40f0\u40f1\u40f2\u40f3\u40f4\u40f5\u40f6\u40f7\u40f8\u40f9\u40fa\u40fb\u40fc\u40fd\u40fe\u40ff\u4100\u4101\u4102\u4103\u4104\u4105\u4106\u4107\u4108\u4109\u410a\u410b\u410c\u410d\u410e\u410f\u4110\u4111\u4112\u4113\u4114\u4115\u4116\u4117\u4118\u4119\u411a\u411b\u411c\u411d\u411e\u411f\u4120\u4121\u4122\u4123\u4124\u4125\u4126\u4127\u4128\u4129\u412a\u412b\u412c\u412d\u412e\u412f\u4130\u4131\u4132\u4133\u4134\u4135\u4136\u4137\u4138\u4139\u413a\u413b\u413c\u413d\u413e\u413f\u4140\u4141\u4142\u4143\u4144\u4145\u4146\u4147\u4148\u4149\u414a\u414b\u414c\u414d\u414e\u414f\u4150\u4151\u4152\u4153\u4154\u4155\u4156\u4157\u4158\u4159\u415a\u415b\u415c\u415d\u415e\u415f\u4160\u4161\u4162\u4163\u4164\u4165\u4166\u4167\u4168\u4169\u416a\u416b\u416c\u416d\u416e\u416f\u4170\u4171\u4172\u4173\u4174\u4175\u4176\u4177\u4178\u4179\u417a\u417b\u417c\u417d\u417e\u417f\u4180\u4181\u4182\u4183\u4184\u4185\u4186\u4187\u4188\u4189\u418a\u418b\u418c\u418d\u418e\u418f\u4190\u4191\u4192\u4193\u4194\u4195\u4196\u4197\u4198\u4199\u419a\u419b\u419c\u419d\u419e\u419f\u41a0\u41a1\u41a2\u41a3\u41a4\u41a5\u41a6\u41a7\u41a8\u41a9\u41aa\u41ab\u41ac\u41ad\u41ae\u41af\u41b0\u41b1\u41b2\u41b3\u41b4\u41b5\u41b6\u41b7\u41b8\u41b9\u41ba\u41bb\u41bc\u41bd\u41be\u41bf\u41c0\u41c1\u41c2\u41c3\u41c4\u41c5\u41c6\u41c7\u41c8\u41c9\u41ca\u41cb\u41cc\u41cd\u41ce\u41cf\u41d0\u41d1\u41d2\u41d3\u41d4\u41d5\u41d6\u41d7\u41d8\u41d9\u41da\u41db\u41dc\u41dd\u41de\u41df\u41e0\u41e1\u41e2\u41e3\u41e4\u41e5\u41e6\u41e7\u41e8\u41e9\u41ea\u41eb\u41ec\u41ed\u41ee\u41ef\u41f0\u41f1\u41f2\u41f3\u41f4\u41f5\u41f6\u41f7\u41f8\u41f9\u41fa\u41fb\u41fc\u41fd\u41fe\u41ff\u4200\u4201\u4202\u4203\u4204\u4205\u4206\u4207\u4208\u4209\u420a\u420b\u420c\u420d\u420e\u420f\u4210\u4211\u4212\u4213\u4214\u4215\u4216\u4217\u4218\u4219\u421a\u421b\u421c\u421d\u421e\u421f\u4220\u4221\u4222\u4223\u4224\u4225\u4226\u4227\u4228\u4229\u422a\u422b\u422c\u422d\u422e\u422f\u4230\u4231\u4232\u4233\u4234\u4235\u4236\u4237\u4238\u4239\u423a\u423b\u423c\u423d\u423e\u423f\u4240\u4241\u4242\u4243\u4244\u4245\u4246\u4247\u4248\u4249\u424a\u424b\u424c\u424d\u424e\u424f\u4250\u4251\u4252\u4253\u4254\u4255\u4256\u4257\u4258\u4259\u425a\u425b\u425c\u425d\u425e\u425f\u4260\u4261\u4262\u4263\u4264\u4265\u4266\u4267\u4268\u4269\u426a\u426b\u426c\u426d\u426e\u426f\u4270\u4271\u4272\u4273\u4274\u4275\u4276\u4277\u4278\u4279\u427a\u427b\u427c\u427d\u427e\u427f\u4280\u4281\u4282\u4283\u4284\u4285\u4286\u4287\u4288\u4289\u428a\u428b\u428c\u428d\u428e\u428f\u4290\u4291\u4292\u4293\u4294\u4295\u4296\u4297\u4298\u4299\u429a\u429b\u429c\u429d\u429e\u429f\u42a0\u42a1\u42a2\u42a3\u42a4\u42a5\u42a6\u42a7\u42a8\u42a9\u42aa\u42ab\u42ac\u42ad\u42ae\u42af\u42b0\u42b1\u42b2\u42b3\u42b4\u42b5\u42b6\u42b7\u42b8\u42b9\u42ba\u42bb\u42bc\u42bd\u42be\u42bf\u42c0\u42c1\u42c2\u42c3\u42c4\u42c5\u42c6\u42c7\u42c8\u42c9\u42ca\u42cb\u42cc\u42cd\u42ce\u42cf\u42d0\u42d1\u42d2\u42d3\u42d4\u42d5\u42d6\u42d7\u42d8\u42d9\u42da\u42db\u42dc\u42dd\u42de\u42df\u42e0\u42e1\u42e2\u42e3\u42e4\u42e5\u42e6\u42e7\u42e8\u42e9\u42ea\u42eb\u42ec\u42ed\u42ee\u42ef\u42f0\u42f1\u42f2\u42f3\u42f4\u42f5\u42f6\u42f7\u42f8\u42f9\u42fa\u42fb\u42fc\u42fd\u42fe\u42ff\u4300\u4301\u4302\u4303\u4304\u4305\u4306\u4307\u4308\u4309\u430a\u430b\u430c\u430d\u430e\u430f\u4310\u4311\u4312\u4313\u4314\u4315\u4316\u4317\u4318\u4319\u431a\u431b\u431c\u431d\u431e\u431f\u4320\u4321\u4322\u4323\u4324\u4325\u4326\u4327\u4328\u4329\u432a\u432b\u432c\u432d\u432e\u432f\u4330\u4331\u4332\u4333\u4334\u4335\u4336\u4337\u4338\u4339\u433a\u433b\u433c\u433d\u433e\u433f\u4340\u4341\u4342\u4343\u4344\u4345\u4346\u4347\u4348\u4349\u434a\u434b\u434c\u434d\u434e\u434f\u4350\u4351\u4352\u4353\u4354\u4355\u4356\u4357\u4358\u4359\u435a\u435b\u435c\u435d\u435e\u435f\u4360\u4361\u4362\u4363\u4364\u4365\u4366\u4367\u4368\u4369\u436a\u436b\u436c\u436d\u436e\u436f\u4370\u4371\u4372\u4373\u4374\u4375\u4376\u4377\u4378\u4379\u437a\u437b\u437c\u437d\u437e\u437f\u4380\u4381\u4382\u4383\u4384\u4385\u4386\u4387\u4388\u4389\u438a\u438b\u438c\u438d\u438e\u438f\u4390\u4391\u4392\u4393\u4394\u4395\u4396\u4397\u4398\u4399\u439a\u439b\u439c\u439d\u439e\u439f\u43a0\u43a1\u43a2\u43a3\u43a4\u43a5\u43a6\u43a7\u43a8\u43a9\u43aa\u43ab\u43ac\u43ad\u43ae\u43af\u43b0\u43b1\u43b2\u43b3\u43b4\u43b5\u43b6\u43b7\u43b8\u43b9\u43ba\u43bb\u43bc\u43bd\u43be\u43bf\u43c0\u43c1\u43c2\u43c3\u43c4\u43c5\u43c6\u43c7\u43c8\u43c9\u43ca\u43cb\u43cc\u43cd\u43ce\u43cf\u43d0\u43d1\u43d2\u43d3\u43d4\u43d5\u43d6\u43d7\u43d8\u43d9\u43da\u43db\u43dc\u43dd\u43de\u43df\u43e0\u43e1\u43e2\u43e3\u43e4\u43e5\u43e6\u43e7\u43e8\u43e9\u43ea\u43eb\u43ec\u43ed\u43ee\u43ef\u43f0\u43f1\u43f2\u43f3\u43f4\u43f5\u43f6\u43f7\u43f8\u43f9\u43fa\u43fb\u43fc\u43fd\u43fe\u43ff\u4400\u4401\u4402\u4403\u4404\u4405\u4406\u4407\u4408\u4409\u440a\u440b\u440c\u440d\u440e\u440f\u4410\u4411\u4412\u4413\u4414\u4415\u4416\u4417\u4418\u4419\u441a\u441b\u441c\u441d\u441e\u441f\u4420\u4421\u4422\u4423\u4424\u4425\u4426\u4427\u4428\u4429\u442a\u442b\u442c\u442d\u442e\u442f\u4430\u4431\u4432\u4433\u4434\u4435\u4436\u4437\u4438\u4439\u443a\u443b\u443c\u443d\u443e\u443f\u4440\u4441\u4442\u4443\u4444\u4445\u4446\u4447\u4448\u4449\u444a\u444b\u444c\u444d\u444e\u444f\u4450\u4451\u4452\u4453\u4454\u4455\u4456\u4457\u4458\u4459\u445a\u445b\u445c\u445d\u445e\u445f\u4460\u4461\u4462\u4463\u4464\u4465\u4466\u4467\u4468\u4469\u446a\u446b\u446c\u446d\u446e\u446f\u4470\u4471\u4472\u4473\u4474\u4475\u4476\u4477\u4478\u4479\u447a\u447b\u447c\u447d\u447e\u447f\u4480\u4481\u4482\u4483\u4484\u4485\u4486\u4487\u4488\u4489\u448a\u448b\u448c\u448d\u448e\u448f\u4490\u4491\u4492\u4493\u4494\u4495\u4496\u4497\u4498\u4499\u449a\u449b\u449c\u449d\u449e\u449f\u44a0\u44a1\u44a2\u44a3\u44a4\u44a5\u44a6\u44a7\u44a8\u44a9\u44aa\u44ab\u44ac\u44ad\u44ae\u44af\u44b0\u44b1\u44b2\u44b3\u44b4\u44b5\u44b6\u44b7\u44b8\u44b9\u44ba\u44bb\u44bc\u44bd\u44be\u44bf\u44c0\u44c1\u44c2\u44c3\u44c4\u44c5\u44c6\u44c7\u44c8\u44c9\u44ca\u44cb\u44cc\u44cd\u44ce\u44cf\u44d0\u44d1\u44d2\u44d3\u44d4\u44d5\u44d6\u44d7\u44d8\u44d9\u44da\u44db\u44dc\u44dd\u44de\u44df\u44e0\u44e1\u44e2\u44e3\u44e4\u44e5\u44e6\u44e7\u44e8\u44e9\u44ea\u44eb\u44ec\u44ed\u44ee\u44ef\u44f0\u44f1\u44f2\u44f3\u44f4\u44f5\u44f6\u44f7\u44f8\u44f9\u44fa\u44fb\u44fc\u44fd\u44fe\u44ff\u4500\u4501\u4502\u4503\u4504\u4505\u4506\u4507\u4508\u4509\u450a\u450b\u450c\u450d\u450e\u450f\u4510\u4511\u4512\u4513\u4514\u4515\u4516\u4517\u4518\u4519\u451a\u451b\u451c\u451d\u451e\u451f\u4520\u4521\u4522\u4523\u4524\u4525\u4526\u4527\u4528\u4529\u452a\u452b\u452c\u452d\u452e\u452f\u4530\u4531\u4532\u4533\u4534\u4535\u4536\u4537\u4538\u4539\u453a\u453b\u453c\u453d\u453e\u453f\u4540\u4541\u4542\u4543\u4544\u4545\u4546\u4547\u4548\u4549\u454a\u454b\u454c\u454d\u454e\u454f\u4550\u4551\u4552\u4553\u4554\u4555\u4556\u4557\u4558\u4559\u455a\u455b\u455c\u455d\u455e\u455f\u4560\u4561\u4562\u4563\u4564\u4565\u4566\u4567\u4568\u4569\u456a\u456b\u456c\u456d\u456e\u456f\u4570\u4571\u4572\u4573\u4574\u4575\u4576\u4577\u4578\u4579\u457a\u457b\u457c\u457d\u457e\u457f\u4580\u4581\u4582\u4583\u4584\u4585\u4586\u4587\u4588\u4589\u458a\u458b\u458c\u458d\u458e\u458f\u4590\u4591\u4592\u4593\u4594\u4595\u4596\u4597\u4598\u4599\u459a\u459b\u459c\u459d\u459e\u459f\u45a0\u45a1\u45a2\u45a3\u45a4\u45a5\u45a6\u45a7\u45a8\u45a9\u45aa\u45ab\u45ac\u45ad\u45ae\u45af\u45b0\u45b1\u45b2\u45b3\u45b4\u45b5\u45b6\u45b7\u45b8\u45b9\u45ba\u45bb\u45bc\u45bd\u45be\u45bf\u45c0\u45c1\u45c2\u45c3\u45c4\u45c5\u45c6\u45c7\u45c8\u45c9\u45ca\u45cb\u45cc\u45cd\u45ce\u45cf\u45d0\u45d1\u45d2\u45d3\u45d4\u45d5\u45d6\u45d7\u45d8\u45d9\u45da\u45db\u45dc\u45dd\u45de\u45df\u45e0\u45e1\u45e2\u45e3\u45e4\u45e5\u45e6\u45e7\u45e8\u45e9\u45ea\u45eb\u45ec\u45ed\u45ee\u45ef\u45f0\u45f1\u45f2\u45f3\u45f4\u45f5\u45f6\u45f7\u45f8\u45f9\u45fa\u45fb\u45fc\u45fd\u45fe\u45ff\u4600\u4601\u4602\u4603\u4604\u4605\u4606\u4607\u4608\u4609\u460a\u460b\u460c\u460d\u460e\u460f\u4610\u4611\u4612\u4613\u4614\u4615\u4616\u4617\u4618\u4619\u461a\u461b\u461c\u461d\u461e\u461f\u4620\u4621\u4622\u4623\u4624\u4625\u4626\u4627\u4628\u4629\u462a\u462b\u462c\u462d\u462e\u462f\u4630\u4631\u4632\u4633\u4634\u4635\u4636\u4637\u4638\u4639\u463a\u463b\u463c\u463d\u463e\u463f\u4640\u4641\u4642\u4643\u4644\u4645\u4646\u4647\u4648\u4649\u464a\u464b\u464c\u464d\u464e\u464f\u4650\u4651\u4652\u4653\u4654\u4655\u4656\u4657\u4658\u4659\u465a\u465b\u465c\u465d\u465e\u465f\u4660\u4661\u4662\u4663\u4664\u4665\u4666\u4667\u4668\u4669\u466a\u466b\u466c\u466d\u466e\u466f\u4670\u4671\u4672\u4673\u4674\u4675\u4676\u4677\u4678\u4679\u467a\u467b\u467c\u467d\u467e\u467f\u4680\u4681\u4682\u4683\u4684\u4685\u4686\u4687\u4688\u4689\u468a\u468b\u468c\u468d\u468e\u468f\u4690\u4691\u4692\u4693\u4694\u4695\u4696\u4697\u4698\u4699\u469a\u469b\u469c\u469d\u469e\u469f\u46a0\u46a1\u46a2\u46a3\u46a4\u46a5\u46a6\u46a7\u46a8\u46a9\u46aa\u46ab\u46ac\u46ad\u46ae\u46af\u46b0\u46b1\u46b2\u46b3\u46b4\u46b5\u46b6\u46b7\u46b8\u46b9\u46ba\u46bb\u46bc\u46bd\u46be\u46bf\u46c0\u46c1\u46c2\u46c3\u46c4\u46c5\u46c6\u46c7\u46c8\u46c9\u46ca\u46cb\u46cc\u46cd\u46ce\u46cf\u46d0\u46d1\u46d2\u46d3\u46d4\u46d5\u46d6\u46d7\u46d8\u46d9\u46da\u46db\u46dc\u46dd\u46de\u46df\u46e0\u46e1\u46e2\u46e3\u46e4\u46e5\u46e6\u46e7\u46e8\u46e9\u46ea\u46eb\u46ec\u46ed\u46ee\u46ef\u46f0\u46f1\u46f2\u46f3\u46f4\u46f5\u46f6\u46f7\u46f8\u46f9\u46fa\u46fb\u46fc\u46fd\u46fe\u46ff\u4700\u4701\u4702\u4703\u4704\u4705\u4706\u4707\u4708\u4709\u470a\u470b\u470c\u470d\u470e\u470f\u4710\u4711\u4712\u4713\u4714\u4715\u4716\u4717\u4718\u4719\u471a\u471b\u471c\u471d\u471e\u471f\u4720\u4721\u4722\u4723\u4724\u4725\u4726\u4727\u4728\u4729\u472a\u472b\u472c\u472d\u472e\u472f\u4730\u4731\u4732\u4733\u4734\u4735\u4736\u4737\u4738\u4739\u473a\u473b\u473c\u473d\u473e\u473f\u4740\u4741\u4742\u4743\u4744\u4745\u4746\u4747\u4748\u4749\u474a\u474b\u474c\u474d\u474e\u474f\u4750\u4751\u4752\u4753\u4754\u4755\u4756\u4757\u4758\u4759\u475a\u475b\u475c\u475d\u475e\u475f\u4760\u4761\u4762\u4763\u4764\u4765\u4766\u4767\u4768\u4769\u476a\u476b\u476c\u476d\u476e\u476f\u4770\u4771\u4772\u4773\u4774\u4775\u4776\u4777\u4778\u4779\u477a\u477b\u477c\u477d\u477e\u477f\u4780\u4781\u4782\u4783\u4784\u4785\u4786\u4787\u4788\u4789\u478a\u478b\u478c\u478d\u478e\u478f\u4790\u4791\u4792\u4793\u4794\u4795\u4796\u4797\u4798\u4799\u479a\u479b\u479c\u479d\u479e\u479f\u47a0\u47a1\u47a2\u47a3\u47a4\u47a5\u47a6\u47a7\u47a8\u47a9\u47aa\u47ab\u47ac\u47ad\u47ae\u47af\u47b0\u47b1\u47b2\u47b3\u47b4\u47b5\u47b6\u47b7\u47b8\u47b9\u47ba\u47bb\u47bc\u47bd\u47be\u47bf\u47c0\u47c1\u47c2\u47c3\u47c4\u47c5\u47c6\u47c7\u47c8\u47c9\u47ca\u47cb\u47cc\u47cd\u47ce\u47cf\u47d0\u47d1\u47d2\u47d3\u47d4\u47d5\u47d6\u47d7\u47d8\u47d9\u47da\u47db\u47dc\u47dd\u47de\u47df\u47e0\u47e1\u47e2\u47e3\u47e4\u47e5\u47e6\u47e7\u47e8\u47e9\u47ea\u47eb\u47ec\u47ed\u47ee\u47ef\u47f0\u47f1\u47f2\u47f3\u47f4\u47f5\u47f6\u47f7\u47f8\u47f9\u47fa\u47fb\u47fc\u47fd\u47fe\u47ff\u4800\u4801\u4802\u4803\u4804\u4805\u4806\u4807\u4808\u4809\u480a\u480b\u480c\u480d\u480e\u480f\u4810\u4811\u4812\u4813\u4814\u4815\u4816\u4817\u4818\u4819\u481a\u481b\u481c\u481d\u481e\u481f\u4820\u4821\u4822\u4823\u4824\u4825\u4826\u4827\u4828\u4829\u482a\u482b\u482c\u482d\u482e\u482f\u4830\u4831\u4832\u4833\u4834\u4835\u4836\u4837\u4838\u4839\u483a\u483b\u483c\u483d\u483e\u483f\u4840\u4841\u4842\u4843\u4844\u4845\u4846\u4847\u4848\u4849\u484a\u484b\u484c\u484d\u484e\u484f\u4850\u4851\u4852\u4853\u4854\u4855\u4856\u4857\u4858\u4859\u485a\u485b\u485c\u485d\u485e\u485f\u4860\u4861\u4862\u4863\u4864\u4865\u4866\u4867\u4868\u4869\u486a\u486b\u486c\u486d\u486e\u486f\u4870\u4871\u4872\u4873\u4874\u4875\u4876\u4877\u4878\u4879\u487a\u487b\u487c\u487d\u487e\u487f\u4880\u4881\u4882\u4883\u4884\u4885\u4886\u4887\u4888\u4889\u488a\u488b\u488c\u488d\u488e\u488f\u4890\u4891\u4892\u4893\u4894\u4895\u4896\u4897\u4898\u4899\u489a\u489b\u489c\u489d\u489e\u489f\u48a0\u48a1\u48a2\u48a3\u48a4\u48a5\u48a6\u48a7\u48a8\u48a9\u48aa\u48ab\u48ac\u48ad\u48ae\u48af\u48b0\u48b1\u48b2\u48b3\u48b4\u48b5\u48b6\u48b7\u48b8\u48b9\u48ba\u48bb\u48bc\u48bd\u48be\u48bf\u48c0\u48c1\u48c2\u48c3\u48c4\u48c5\u48c6\u48c7\u48c8\u48c9\u48ca\u48cb\u48cc\u48cd\u48ce\u48cf\u48d0\u48d1\u48d2\u48d3\u48d4\u48d5\u48d6\u48d7\u48d8\u48d9\u48da\u48db\u48dc\u48dd\u48de\u48df\u48e0\u48e1\u48e2\u48e3\u48e4\u48e5\u48e6\u48e7\u48e8\u48e9\u48ea\u48eb\u48ec\u48ed\u48ee\u48ef\u48f0\u48f1\u48f2\u48f3\u48f4\u48f5\u48f6\u48f7\u48f8\u48f9\u48fa\u48fb\u48fc\u48fd\u48fe\u48ff\u4900\u4901\u4902\u4903\u4904\u4905\u4906\u4907\u4908\u4909\u490a\u490b\u490c\u490d\u490e\u490f\u4910\u4911\u4912\u4913\u4914\u4915\u4916\u4917\u4918\u4919\u491a\u491b\u491c\u491d\u491e\u491f\u4920\u4921\u4922\u4923\u4924\u4925\u4926\u4927\u4928\u4929\u492a\u492b\u492c\u492d\u492e\u492f\u4930\u4931\u4932\u4933\u4934\u4935\u4936\u4937\u4938\u4939\u493a\u493b\u493c\u493d\u493e\u493f\u4940\u4941\u4942\u4943\u4944\u4945\u4946\u4947\u4948\u4949\u494a\u494b\u494c\u494d\u494e\u494f\u4950\u4951\u4952\u4953\u4954\u4955\u4956\u4957\u4958\u4959\u495a\u495b\u495c\u495d\u495e\u495f\u4960\u4961\u4962\u4963\u4964\u4965\u4966\u4967\u4968\u4969\u496a\u496b\u496c\u496d\u496e\u496f\u4970\u4971\u4972\u4973\u4974\u4975\u4976\u4977\u4978\u4979\u497a\u497b\u497c\u497d\u497e\u497f\u4980\u4981\u4982\u4983\u4984\u4985\u4986\u4987\u4988\u4989\u498a\u498b\u498c\u498d\u498e\u498f\u4990\u4991\u4992\u4993\u4994\u4995\u4996\u4997\u4998\u4999\u499a\u499b\u499c\u499d\u499e\u499f\u49a0\u49a1\u49a2\u49a3\u49a4\u49a5\u49a6\u49a7\u49a8\u49a9\u49aa\u49ab\u49ac\u49ad\u49ae\u49af\u49b0\u49b1\u49b2\u49b3\u49b4\u49b5\u49b6\u49b7\u49b8\u49b9\u49ba\u49bb\u49bc\u49bd\u49be\u49bf\u49c0\u49c1\u49c2\u49c3\u49c4\u49c5\u49c6\u49c7\u49c8\u49c9\u49ca\u49cb\u49cc\u49cd\u49ce\u49cf\u49d0\u49d1\u49d2\u49d3\u49d4\u49d5\u49d6\u49d7\u49d8\u49d9\u49da\u49db\u49dc\u49dd\u49de\u49df\u49e0\u49e1\u49e2\u49e3\u49e4\u49e5\u49e6\u49e7\u49e8\u49e9\u49ea\u49eb\u49ec\u49ed\u49ee\u49ef\u49f0\u49f1\u49f2\u49f3\u49f4\u49f5\u49f6\u49f7\u49f8\u49f9\u49fa\u49fb\u49fc\u49fd\u49fe\u49ff\u4a00\u4a01\u4a02\u4a03\u4a04\u4a05\u4a06\u4a07\u4a08\u4a09\u4a0a\u4a0b\u4a0c\u4a0d\u4a0e\u4a0f\u4a10\u4a11\u4a12\u4a13\u4a14\u4a15\u4a16\u4a17\u4a18\u4a19\u4a1a\u4a1b\u4a1c\u4a1d\u4a1e\u4a1f\u4a20\u4a21\u4a22\u4a23\u4a24\u4a25\u4a26\u4a27\u4a28\u4a29\u4a2a\u4a2b\u4a2c\u4a2d\u4a2e\u4a2f\u4a30\u4a31\u4a32\u4a33\u4a34\u4a35\u4a36\u4a37\u4a38\u4a39\u4a3a\u4a3b\u4a3c\u4a3d\u4a3e\u4a3f\u4a40\u4a41\u4a42\u4a43\u4a44\u4a45\u4a46\u4a47\u4a48\u4a49\u4a4a\u4a4b\u4a4c\u4a4d\u4a4e\u4a4f\u4a50\u4a51\u4a52\u4a53\u4a54\u4a55\u4a56\u4a57\u4a58\u4a59\u4a5a\u4a5b\u4a5c\u4a5d\u4a5e\u4a5f\u4a60\u4a61\u4a62\u4a63\u4a64\u4a65\u4a66\u4a67\u4a68\u4a69\u4a6a\u4a6b\u4a6c\u4a6d\u4a6e\u4a6f\u4a70\u4a71\u4a72\u4a73\u4a74\u4a75\u4a76\u4a77\u4a78\u4a79\u4a7a\u4a7b\u4a7c\u4a7d\u4a7e\u4a7f\u4a80\u4a81\u4a82\u4a83\u4a84\u4a85\u4a86\u4a87\u4a88\u4a89\u4a8a\u4a8b\u4a8c\u4a8d\u4a8e\u4a8f\u4a90\u4a91\u4a92\u4a93\u4a94\u4a95\u4a96\u4a97\u4a98\u4a99\u4a9a\u4a9b\u4a9c\u4a9d\u4a9e\u4a9f\u4aa0\u4aa1\u4aa2\u4aa3\u4aa4\u4aa5\u4aa6\u4aa7\u4aa8\u4aa9\u4aaa\u4aab\u4aac\u4aad\u4aae\u4aaf\u4ab0\u4ab1\u4ab2\u4ab3\u4ab4\u4ab5\u4ab6\u4ab7\u4ab8\u4ab9\u4aba\u4abb\u4abc\u4abd\u4abe\u4abf\u4ac0\u4ac1\u4ac2\u4ac3\u4ac4\u4ac5\u4ac6\u4ac7\u4ac8\u4ac9\u4aca\u4acb\u4acc\u4acd\u4ace\u4acf\u4ad0\u4ad1\u4ad2\u4ad3\u4ad4\u4ad5\u4ad6\u4ad7\u4ad8\u4ad9\u4ada\u4adb\u4adc\u4add\u4ade\u4adf\u4ae0\u4ae1\u4ae2\u4ae3\u4ae4\u4ae5\u4ae6\u4ae7\u4ae8\u4ae9\u4aea\u4aeb\u4aec\u4aed\u4aee\u4aef\u4af0\u4af1\u4af2\u4af3\u4af4\u4af5\u4af6\u4af7\u4af8\u4af9\u4afa\u4afb\u4afc\u4afd\u4afe\u4aff\u4b00\u4b01\u4b02\u4b03\u4b04\u4b05\u4b06\u4b07\u4b08\u4b09\u4b0a\u4b0b\u4b0c\u4b0d\u4b0e\u4b0f\u4b10\u4b11\u4b12\u4b13\u4b14\u4b15\u4b16\u4b17\u4b18\u4b19\u4b1a\u4b1b\u4b1c\u4b1d\u4b1e\u4b1f\u4b20\u4b21\u4b22\u4b23\u4b24\u4b25\u4b26\u4b27\u4b28\u4b29\u4b2a\u4b2b\u4b2c\u4b2d\u4b2e\u4b2f\u4b30\u4b31\u4b32\u4b33\u4b34\u4b35\u4b36\u4b37\u4b38\u4b39\u4b3a\u4b3b\u4b3c\u4b3d\u4b3e\u4b3f\u4b40\u4b41\u4b42\u4b43\u4b44\u4b45\u4b46\u4b47\u4b48\u4b49\u4b4a\u4b4b\u4b4c\u4b4d\u4b4e\u4b4f\u4b50\u4b51\u4b52\u4b53\u4b54\u4b55\u4b56\u4b57\u4b58\u4b59\u4b5a\u4b5b\u4b5c\u4b5d\u4b5e\u4b5f\u4b60\u4b61\u4b62\u4b63\u4b64\u4b65\u4b66\u4b67\u4b68\u4b69\u4b6a\u4b6b\u4b6c\u4b6d\u4b6e\u4b6f\u4b70\u4b71\u4b72\u4b73\u4b74\u4b75\u4b76\u4b77\u4b78\u4b79\u4b7a\u4b7b\u4b7c\u4b7d\u4b7e\u4b7f\u4b80\u4b81\u4b82\u4b83\u4b84\u4b85\u4b86\u4b87\u4b88\u4b89\u4b8a\u4b8b\u4b8c\u4b8d\u4b8e\u4b8f\u4b90\u4b91\u4b92\u4b93\u4b94\u4b95\u4b96\u4b97\u4b98\u4b99\u4b9a\u4b9b\u4b9c\u4b9d\u4b9e\u4b9f\u4ba0\u4ba1\u4ba2\u4ba3\u4ba4\u4ba5\u4ba6\u4ba7\u4ba8\u4ba9\u4baa\u4bab\u4bac\u4bad\u4bae\u4baf\u4bb0\u4bb1\u4bb2\u4bb3\u4bb4\u4bb5\u4bb6\u4bb7\u4bb8\u4bb9\u4bba\u4bbb\u4bbc\u4bbd\u4bbe\u4bbf\u4bc0\u4bc1\u4bc2\u4bc3\u4bc4\u4bc5\u4bc6\u4bc7\u4bc8\u4bc9\u4bca\u4bcb\u4bcc\u4bcd\u4bce\u4bcf\u4bd0\u4bd1\u4bd2\u4bd3\u4bd4\u4bd5\u4bd6\u4bd7\u4bd8\u4bd9\u4bda\u4bdb\u4bdc\u4bdd\u4bde\u4bdf\u4be0\u4be1\u4be2\u4be3\u4be4\u4be5\u4be6\u4be7\u4be8\u4be9\u4bea\u4beb\u4bec\u4bed\u4bee\u4bef\u4bf0\u4bf1\u4bf2\u4bf3\u4bf4\u4bf5\u4bf6\u4bf7\u4bf8\u4bf9\u4bfa\u4bfb\u4bfc\u4bfd\u4bfe\u4bff\u4c00\u4c01\u4c02\u4c03\u4c04\u4c05\u4c06\u4c07\u4c08\u4c09\u4c0a\u4c0b\u4c0c\u4c0d\u4c0e\u4c0f\u4c10\u4c11\u4c12\u4c13\u4c14\u4c15\u4c16\u4c17\u4c18\u4c19\u4c1a\u4c1b\u4c1c\u4c1d\u4c1e\u4c1f\u4c20\u4c21\u4c22\u4c23\u4c24\u4c25\u4c26\u4c27\u4c28\u4c29\u4c2a\u4c2b\u4c2c\u4c2d\u4c2e\u4c2f\u4c30\u4c31\u4c32\u4c33\u4c34\u4c35\u4c36\u4c37\u4c38\u4c39\u4c3a\u4c3b\u4c3c\u4c3d\u4c3e\u4c3f\u4c40\u4c41\u4c42\u4c43\u4c44\u4c45\u4c46\u4c47\u4c48\u4c49\u4c4a\u4c4b\u4c4c\u4c4d\u4c4e\u4c4f\u4c50\u4c51\u4c52\u4c53\u4c54\u4c55\u4c56\u4c57\u4c58\u4c59\u4c5a\u4c5b\u4c5c\u4c5d\u4c5e\u4c5f\u4c60\u4c61\u4c62\u4c63\u4c64\u4c65\u4c66\u4c67\u4c68\u4c69\u4c6a\u4c6b\u4c6c\u4c6d\u4c6e\u4c6f\u4c70\u4c71\u4c72\u4c73\u4c74\u4c75\u4c76\u4c77\u4c78\u4c79\u4c7a\u4c7b\u4c7c\u4c7d\u4c7e\u4c7f\u4c80\u4c81\u4c82\u4c83\u4c84\u4c85\u4c86\u4c87\u4c88\u4c89\u4c8a\u4c8b\u4c8c\u4c8d\u4c8e\u4c8f\u4c90\u4c91\u4c92\u4c93\u4c94\u4c95\u4c96\u4c97\u4c98\u4c99\u4c9a\u4c9b\u4c9c\u4c9d\u4c9e\u4c9f\u4ca0\u4ca1\u4ca2\u4ca3\u4ca4\u4ca5\u4ca6\u4ca7\u4ca8\u4ca9\u4caa\u4cab\u4cac\u4cad\u4cae\u4caf\u4cb0\u4cb1\u4cb2\u4cb3\u4cb4\u4cb5\u4cb6\u4cb7\u4cb8\u4cb9\u4cba\u4cbb\u4cbc\u4cbd\u4cbe\u4cbf\u4cc0\u4cc1\u4cc2\u4cc3\u4cc4\u4cc5\u4cc6\u4cc7\u4cc8\u4cc9\u4cca\u4ccb\u4ccc\u4ccd\u4cce\u4ccf\u4cd0\u4cd1\u4cd2\u4cd3\u4cd4\u4cd5\u4cd6\u4cd7\u4cd8\u4cd9\u4cda\u4cdb\u4cdc\u4cdd\u4cde\u4cdf\u4ce0\u4ce1\u4ce2\u4ce3\u4ce4\u4ce5\u4ce6\u4ce7\u4ce8\u4ce9\u4cea\u4ceb\u4cec\u4ced\u4cee\u4cef\u4cf0\u4cf1\u4cf2\u4cf3\u4cf4\u4cf5\u4cf6\u4cf7\u4cf8\u4cf9\u4cfa\u4cfb\u4cfc\u4cfd\u4cfe\u4cff\u4d00\u4d01\u4d02\u4d03\u4d04\u4d05\u4d06\u4d07\u4d08\u4d09\u4d0a\u4d0b\u4d0c\u4d0d\u4d0e\u4d0f\u4d10\u4d11\u4d12\u4d13\u4d14\u4d15\u4d16\u4d17\u4d18\u4d19\u4d1a\u4d1b\u4d1c\u4d1d\u4d1e\u4d1f\u4d20\u4d21\u4d22\u4d23\u4d24\u4d25\u4d26\u4d27\u4d28\u4d29\u4d2a\u4d2b\u4d2c\u4d2d\u4d2e\u4d2f\u4d30\u4d31\u4d32\u4d33\u4d34\u4d35\u4d36\u4d37\u4d38\u4d39\u4d3a\u4d3b\u4d3c\u4d3d\u4d3e\u4d3f\u4d40\u4d41\u4d42\u4d43\u4d44\u4d45\u4d46\u4d47\u4d48\u4d49\u4d4a\u4d4b\u4d4c\u4d4d\u4d4e\u4d4f\u4d50\u4d51\u4d52\u4d53\u4d54\u4d55\u4d56\u4d57\u4d58\u4d59\u4d5a\u4d5b\u4d5c\u4d5d\u4d5e\u4d5f\u4d60\u4d61\u4d62\u4d63\u4d64\u4d65\u4d66\u4d67\u4d68\u4d69\u4d6a\u4d6b\u4d6c\u4d6d\u4d6e\u4d6f\u4d70\u4d71\u4d72\u4d73\u4d74\u4d75\u4d76\u4d77\u4d78\u4d79\u4d7a\u4d7b\u4d7c\u4d7d\u4d7e\u4d7f\u4d80\u4d81\u4d82\u4d83\u4d84\u4d85\u4d86\u4d87\u4d88\u4d89\u4d8a\u4d8b\u4d8c\u4d8d\u4d8e\u4d8f\u4d90\u4d91\u4d92\u4d93\u4d94\u4d95\u4d96\u4d97\u4d98\u4d99\u4d9a\u4d9b\u4d9c\u4d9d\u4d9e\u4d9f\u4da0\u4da1\u4da2\u4da3\u4da4\u4da5\u4da6\u4da7\u4da8\u4da9\u4daa\u4dab\u4dac\u4dad\u4dae\u4daf\u4db0\u4db1\u4db2\u4db3\u4db4\u4db5\u4e00\u4e01\u4e02\u4e03\u4e04\u4e05\u4e06\u4e07\u4e08\u4e09\u4e0a\u4e0b\u4e0c\u4e0d\u4e0e\u4e0f\u4e10\u4e11\u4e12\u4e13\u4e14\u4e15\u4e16\u4e17\u4e18\u4e19\u4e1a\u4e1b\u4e1c\u4e1d\u4e1e\u4e1f\u4e20\u4e21\u4e22\u4e23\u4e24\u4e25\u4e26\u4e27\u4e28\u4e29\u4e2a\u4e2b\u4e2c\u4e2d\u4e2e\u4e2f\u4e30\u4e31\u4e32\u4e33\u4e34\u4e35\u4e36\u4e37\u4e38\u4e39\u4e3a\u4e3b\u4e3c\u4e3d\u4e3e\u4e3f\u4e40\u4e41\u4e42\u4e43\u4e44\u4e45\u4e46\u4e47\u4e48\u4e49\u4e4a\u4e4b\u4e4c\u4e4d\u4e4e\u4e4f\u4e50\u4e51\u4e52\u4e53\u4e54\u4e55\u4e56\u4e57\u4e58\u4e59\u4e5a\u4e5b\u4e5c\u4e5d\u4e5e\u4e5f\u4e60\u4e61\u4e62\u4e63\u4e64\u4e65\u4e66\u4e67\u4e68\u4e69\u4e6a\u4e6b\u4e6c\u4e6d\u4e6e\u4e6f\u4e70\u4e71\u4e72\u4e73\u4e74\u4e75\u4e76\u4e77\u4e78\u4e79\u4e7a\u4e7b\u4e7c\u4e7d\u4e7e\u4e7f\u4e80\u4e81\u4e82\u4e83\u4e84\u4e85\u4e86\u4e87\u4e88\u4e89\u4e8a\u4e8b\u4e8c\u4e8d\u4e8e\u4e8f\u4e90\u4e91\u4e92\u4e93\u4e94\u4e95\u4e96\u4e97\u4e98\u4e99\u4e9a\u4e9b\u4e9c\u4e9d\u4e9e\u4e9f\u4ea0\u4ea1\u4ea2\u4ea3\u4ea4\u4ea5\u4ea6\u4ea7\u4ea8\u4ea9\u4eaa\u4eab\u4eac\u4ead\u4eae\u4eaf\u4eb0\u4eb1\u4eb2\u4eb3\u4eb4\u4eb5\u4eb6\u4eb7\u4eb8\u4eb9\u4eba\u4ebb\u4ebc\u4ebd\u4ebe\u4ebf\u4ec0\u4ec1\u4ec2\u4ec3\u4ec4\u4ec5\u4ec6\u4ec7\u4ec8\u4ec9\u4eca\u4ecb\u4ecc\u4ecd\u4ece\u4ecf\u4ed0\u4ed1\u4ed2\u4ed3\u4ed4\u4ed5\u4ed6\u4ed7\u4ed8\u4ed9\u4eda\u4edb\u4edc\u4edd\u4ede\u4edf\u4ee0\u4ee1\u4ee2\u4ee3\u4ee4\u4ee5\u4ee6\u4ee7\u4ee8\u4ee9\u4eea\u4eeb\u4eec\u4eed\u4eee\u4eef\u4ef0\u4ef1\u4ef2\u4ef3\u4ef4\u4ef5\u4ef6\u4ef7\u4ef8\u4ef9\u4efa\u4efb\u4efc\u4efd\u4efe\u4eff\u4f00\u4f01\u4f02\u4f03\u4f04\u4f05\u4f06\u4f07\u4f08\u4f09\u4f0a\u4f0b\u4f0c\u4f0d\u4f0e\u4f0f\u4f10\u4f11\u4f12\u4f13\u4f14\u4f15\u4f16\u4f17\u4f18\u4f19\u4f1a\u4f1b\u4f1c\u4f1d\u4f1e\u4f1f\u4f20\u4f21\u4f22\u4f23\u4f24\u4f25\u4f26\u4f27\u4f28\u4f29\u4f2a\u4f2b\u4f2c\u4f2d\u4f2e\u4f2f\u4f30\u4f31\u4f32\u4f33\u4f34\u4f35\u4f36\u4f37\u4f38\u4f39\u4f3a\u4f3b\u4f3c\u4f3d\u4f3e\u4f3f\u4f40\u4f41\u4f42\u4f43\u4f44\u4f45\u4f46\u4f47\u4f48\u4f49\u4f4a\u4f4b\u4f4c\u4f4d\u4f4e\u4f4f\u4f50\u4f51\u4f52\u4f53\u4f54\u4f55\u4f56\u4f57\u4f58\u4f59\u4f5a\u4f5b\u4f5c\u4f5d\u4f5e\u4f5f\u4f60\u4f61\u4f62\u4f63\u4f64\u4f65\u4f66\u4f67\u4f68\u4f69\u4f6a\u4f6b\u4f6c\u4f6d\u4f6e\u4f6f\u4f70\u4f71\u4f72\u4f73\u4f74\u4f75\u4f76\u4f77\u4f78\u4f79\u4f7a\u4f7b\u4f7c\u4f7d\u4f7e\u4f7f\u4f80\u4f81\u4f82\u4f83\u4f84\u4f85\u4f86\u4f87\u4f88\u4f89\u4f8a\u4f8b\u4f8c\u4f8d\u4f8e\u4f8f\u4f90\u4f91\u4f92\u4f93\u4f94\u4f95\u4f96\u4f97\u4f98\u4f99\u4f9a\u4f9b\u4f9c\u4f9d\u4f9e\u4f9f\u4fa0\u4fa1\u4fa2\u4fa3\u4fa4\u4fa5\u4fa6\u4fa7\u4fa8\u4fa9\u4faa\u4fab\u4fac\u4fad\u4fae\u4faf\u4fb0\u4fb1\u4fb2\u4fb3\u4fb4\u4fb5\u4fb6\u4fb7\u4fb8\u4fb9\u4fba\u4fbb\u4fbc\u4fbd\u4fbe\u4fbf\u4fc0\u4fc1\u4fc2\u4fc3\u4fc4\u4fc5\u4fc6\u4fc7\u4fc8\u4fc9\u4fca\u4fcb\u4fcc\u4fcd\u4fce\u4fcf\u4fd0\u4fd1\u4fd2\u4fd3\u4fd4\u4fd5\u4fd6\u4fd7\u4fd8\u4fd9\u4fda\u4fdb\u4fdc\u4fdd\u4fde\u4fdf\u4fe0\u4fe1\u4fe2\u4fe3\u4fe4\u4fe5\u4fe6\u4fe7\u4fe8\u4fe9\u4fea\u4feb\u4fec\u4fed\u4fee\u4fef\u4ff0\u4ff1\u4ff2\u4ff3\u4ff4\u4ff5\u4ff6\u4ff7\u4ff8\u4ff9\u4ffa\u4ffb\u4ffc\u4ffd\u4ffe\u4fff\u5000\u5001\u5002\u5003\u5004\u5005\u5006\u5007\u5008\u5009\u500a\u500b\u500c\u500d\u500e\u500f\u5010\u5011\u5012\u5013\u5014\u5015\u5016\u5017\u5018\u5019\u501a\u501b\u501c\u501d\u501e\u501f\u5020\u5021\u5022\u5023\u5024\u5025\u5026\u5027\u5028\u5029\u502a\u502b\u502c\u502d\u502e\u502f\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037\u5038\u5039\u503a\u503b\u503c\u503d\u503e\u503f\u5040\u5041\u5042\u5043\u5044\u5045\u5046\u5047\u5048\u5049\u504a\u504b\u504c\u504d\u504e\u504f\u5050\u5051\u5052\u5053\u5054\u5055\u5056\u5057\u5058\u5059\u505a\u505b\u505c\u505d\u505e\u505f\u5060\u5061\u5062\u5063\u5064\u5065\u5066\u5067\u5068\u5069\u506a\u506b\u506c\u506d\u506e\u506f\u5070\u5071\u5072\u5073\u5074\u5075\u5076\u5077\u5078\u5079\u507a\u507b\u507c\u507d\u507e\u507f\u5080\u5081\u5082\u5083\u5084\u5085\u5086\u5087\u5088\u5089\u508a\u508b\u508c\u508d\u508e\u508f\u5090\u5091\u5092\u5093\u5094\u5095\u5096\u5097\u5098\u5099\u509a\u509b\u509c\u509d\u509e\u509f\u50a0\u50a1\u50a2\u50a3\u50a4\u50a5\u50a6\u50a7\u50a8\u50a9\u50aa\u50ab\u50ac\u50ad\u50ae\u50af\u50b0\u50b1\u50b2\u50b3\u50b4\u50b5\u50b6\u50b7\u50b8\u50b9\u50ba\u50bb\u50bc\u50bd\u50be\u50bf\u50c0\u50c1\u50c2\u50c3\u50c4\u50c5\u50c6\u50c7\u50c8\u50c9\u50ca\u50cb\u50cc\u50cd\u50ce\u50cf\u50d0\u50d1\u50d2\u50d3\u50d4\u50d5\u50d6\u50d7\u50d8\u50d9\u50da\u50db\u50dc\u50dd\u50de\u50df\u50e0\u50e1\u50e2\u50e3\u50e4\u50e5\u50e6\u50e7\u50e8\u50e9\u50ea\u50eb\u50ec\u50ed\u50ee\u50ef\u50f0\u50f1\u50f2\u50f3\u50f4\u50f5\u50f6\u50f7\u50f8\u50f9\u50fa\u50fb\u50fc\u50fd\u50fe\u50ff\u5100\u5101\u5102\u5103\u5104\u5105\u5106\u5107\u5108\u5109\u510a\u510b\u510c\u510d\u510e\u510f\u5110\u5111\u5112\u5113\u5114\u5115\u5116\u5117\u5118\u5119\u511a\u511b\u511c\u511d\u511e\u511f\u5120\u5121\u5122\u5123\u5124\u5125\u5126\u5127\u5128\u5129\u512a\u512b\u512c\u512d\u512e\u512f\u5130\u5131\u5132\u5133\u5134\u5135\u5136\u5137\u5138\u5139\u513a\u513b\u513c\u513d\u513e\u513f\u5140\u5141\u5142\u5143\u5144\u5145\u5146\u5147\u5148\u5149\u514a\u514b\u514c\u514d\u514e\u514f\u5150\u5151\u5152\u5153\u5154\u5155\u5156\u5157\u5158\u5159\u515a\u515b\u515c\u515d\u515e\u515f\u5160\u5161\u5162\u5163\u5164\u5165\u5166\u5167\u5168\u5169\u516a\u516b\u516c\u516d\u516e\u516f\u5170\u5171\u5172\u5173\u5174\u5175\u5176\u5177\u5178\u5179\u517a\u517b\u517c\u517d\u517e\u517f\u5180\u5181\u5182\u5183\u5184\u5185\u5186\u5187\u5188\u5189\u518a\u518b\u518c\u518d\u518e\u518f\u5190\u5191\u5192\u5193\u5194\u5195\u5196\u5197\u5198\u5199\u519a\u519b\u519c\u519d\u519e\u519f\u51a0\u51a1\u51a2\u51a3\u51a4\u51a5\u51a6\u51a7\u51a8\u51a9\u51aa\u51ab\u51ac\u51ad\u51ae\u51af\u51b0\u51b1\u51b2\u51b3\u51b4\u51b5\u51b6\u51b7\u51b8\u51b9\u51ba\u51bb\u51bc\u51bd\u51be\u51bf\u51c0\u51c1\u51c2\u51c3\u51c4\u51c5\u51c6\u51c7\u51c8\u51c9\u51ca\u51cb\u51cc\u51cd\u51ce\u51cf\u51d0\u51d1\u51d2\u51d3\u51d4\u51d5\u51d6\u51d7\u51d8\u51d9\u51da\u51db\u51dc\u51dd\u51de\u51df\u51e0\u51e1\u51e2\u51e3\u51e4\u51e5\u51e6\u51e7\u51e8\u51e9\u51ea\u51eb\u51ec\u51ed\u51ee\u51ef\u51f0\u51f1\u51f2\u51f3\u51f4\u51f5\u51f6\u51f7\u51f8\u51f9\u51fa\u51fb\u51fc\u51fd\u51fe\u51ff\u5200\u5201\u5202\u5203\u5204\u5205\u5206\u5207\u5208\u5209\u520a\u520b\u520c\u520d\u520e\u520f\u5210\u5211\u5212\u5213\u5214\u5215\u5216\u5217\u5218\u5219\u521a\u521b\u521c\u521d\u521e\u521f\u5220\u5221\u5222\u5223\u5224\u5225\u5226\u5227\u5228\u5229\u522a\u522b\u522c\u522d\u522e\u522f\u5230\u5231\u5232\u5233\u5234\u5235\u5236\u5237\u5238\u5239\u523a\u523b\u523c\u523d\u523e\u523f\u5240\u5241\u5242\u5243\u5244\u5245\u5246\u5247\u5248\u5249\u524a\u524b\u524c\u524d\u524e\u524f\u5250\u5251\u5252\u5253\u5254\u5255\u5256\u5257\u5258\u5259\u525a\u525b\u525c\u525d\u525e\u525f\u5260\u5261\u5262\u5263\u5264\u5265\u5266\u5267\u5268\u5269\u526a\u526b\u526c\u526d\u526e\u526f\u5270\u5271\u5272\u5273\u5274\u5275\u5276\u5277\u5278\u5279\u527a\u527b\u527c\u527d\u527e\u527f\u5280\u5281\u5282\u5283\u5284\u5285\u5286\u5287\u5288\u5289\u528a\u528b\u528c\u528d\u528e\u528f\u5290\u5291\u5292\u5293\u5294\u5295\u5296\u5297\u5298\u5299\u529a\u529b\u529c\u529d\u529e\u529f\u52a0\u52a1\u52a2\u52a3\u52a4\u52a5\u52a6\u52a7\u52a8\u52a9\u52aa\u52ab\u52ac\u52ad\u52ae\u52af\u52b0\u52b1\u52b2\u52b3\u52b4\u52b5\u52b6\u52b7\u52b8\u52b9\u52ba\u52bb\u52bc\u52bd\u52be\u52bf\u52c0\u52c1\u52c2\u52c3\u52c4\u52c5\u52c6\u52c7\u52c8\u52c9\u52ca\u52cb\u52cc\u52cd\u52ce\u52cf\u52d0\u52d1\u52d2\u52d3\u52d4\u52d5\u52d6\u52d7\u52d8\u52d9\u52da\u52db\u52dc\u52dd\u52de\u52df\u52e0\u52e1\u52e2\u52e3\u52e4\u52e5\u52e6\u52e7\u52e8\u52e9\u52ea\u52eb\u52ec\u52ed\u52ee\u52ef\u52f0\u52f1\u52f2\u52f3\u52f4\u52f5\u52f6\u52f7\u52f8\u52f9\u52fa\u52fb\u52fc\u52fd\u52fe\u52ff\u5300\u5301\u5302\u5303\u5304\u5305\u5306\u5307\u5308\u5309\u530a\u530b\u530c\u530d\u530e\u530f\u5310\u5311\u5312\u5313\u5314\u5315\u5316\u5317\u5318\u5319\u531a\u531b\u531c\u531d\u531e\u531f\u5320\u5321\u5322\u5323\u5324\u5325\u5326\u5327\u5328\u5329\u532a\u532b\u532c\u532d\u532e\u532f\u5330\u5331\u5332\u5333\u5334\u5335\u5336\u5337\u5338\u5339\u533a\u533b\u533c\u533d\u533e\u533f\u5340\u5341\u5342\u5343\u5344\u5345\u5346\u5347\u5348\u5349\u534a\u534b\u534c\u534d\u534e\u534f\u5350\u5351\u5352\u5353\u5354\u5355\u5356\u5357\u5358\u5359\u535a\u535b\u535c\u535d\u535e\u535f\u5360\u5361\u5362\u5363\u5364\u5365\u5366\u5367\u5368\u5369\u536a\u536b\u536c\u536d\u536e\u536f\u5370\u5371\u5372\u5373\u5374\u5375\u5376\u5377\u5378\u5379\u537a\u537b\u537c\u537d\u537e\u537f\u5380\u5381\u5382\u5383\u5384\u5385\u5386\u5387\u5388\u5389\u538a\u538b\u538c\u538d\u538e\u538f\u5390\u5391\u5392\u5393\u5394\u5395\u5396\u5397\u5398\u5399\u539a\u539b\u539c\u539d\u539e\u539f\u53a0\u53a1\u53a2\u53a3\u53a4\u53a5\u53a6\u53a7\u53a8\u53a9\u53aa\u53ab\u53ac\u53ad\u53ae\u53af\u53b0\u53b1\u53b2\u53b3\u53b4\u53b5\u53b6\u53b7\u53b8\u53b9\u53ba\u53bb\u53bc\u53bd\u53be\u53bf\u53c0\u53c1\u53c2\u53c3\u53c4\u53c5\u53c6\u53c7\u53c8\u53c9\u53ca\u53cb\u53cc\u53cd\u53ce\u53cf\u53d0\u53d1\u53d2\u53d3\u53d4\u53d5\u53d6\u53d7\u53d8\u53d9\u53da\u53db\u53dc\u53dd\u53de\u53df\u53e0\u53e1\u53e2\u53e3\u53e4\u53e5\u53e6\u53e7\u53e8\u53e9\u53ea\u53eb\u53ec\u53ed\u53ee\u53ef\u53f0\u53f1\u53f2\u53f3\u53f4\u53f5\u53f6\u53f7\u53f8\u53f9\u53fa\u53fb\u53fc\u53fd\u53fe\u53ff\u5400\u5401\u5402\u5403\u5404\u5405\u5406\u5407\u5408\u5409\u540a\u540b\u540c\u540d\u540e\u540f\u5410\u5411\u5412\u5413\u5414\u5415\u5416\u5417\u5418\u5419\u541a\u541b\u541c\u541d\u541e\u541f\u5420\u5421\u5422\u5423\u5424\u5425\u5426\u5427\u5428\u5429\u542a\u542b\u542c\u542d\u542e\u542f\u5430\u5431\u5432\u5433\u5434\u5435\u5436\u5437\u5438\u5439\u543a\u543b\u543c\u543d\u543e\u543f\u5440\u5441\u5442\u5443\u5444\u5445\u5446\u5447\u5448\u5449\u544a\u544b\u544c\u544d\u544e\u544f\u5450\u5451\u5452\u5453\u5454\u5455\u5456\u5457\u5458\u5459\u545a\u545b\u545c\u545d\u545e\u545f\u5460\u5461\u5462\u5463\u5464\u5465\u5466\u5467\u5468\u5469\u546a\u546b\u546c\u546d\u546e\u546f\u5470\u5471\u5472\u5473\u5474\u5475\u5476\u5477\u5478\u5479\u547a\u547b\u547c\u547d\u547e\u547f\u5480\u5481\u5482\u5483\u5484\u5485\u5486\u5487\u5488\u5489\u548a\u548b\u548c\u548d\u548e\u548f\u5490\u5491\u5492\u5493\u5494\u5495\u5496\u5497\u5498\u5499\u549a\u549b\u549c\u549d\u549e\u549f\u54a0\u54a1\u54a2\u54a3\u54a4\u54a5\u54a6\u54a7\u54a8\u54a9\u54aa\u54ab\u54ac\u54ad\u54ae\u54af\u54b0\u54b1\u54b2\u54b3\u54b4\u54b5\u54b6\u54b7\u54b8\u54b9\u54ba\u54bb\u54bc\u54bd\u54be\u54bf\u54c0\u54c1\u54c2\u54c3\u54c4\u54c5\u54c6\u54c7\u54c8\u54c9\u54ca\u54cb\u54cc\u54cd\u54ce\u54cf\u54d0\u54d1\u54d2\u54d3\u54d4\u54d5\u54d6\u54d7\u54d8\u54d9\u54da\u54db\u54dc\u54dd\u54de\u54df\u54e0\u54e1\u54e2\u54e3\u54e4\u54e5\u54e6\u54e7\u54e8\u54e9\u54ea\u54eb\u54ec\u54ed\u54ee\u54ef\u54f0\u54f1\u54f2\u54f3\u54f4\u54f5\u54f6\u54f7\u54f8\u54f9\u54fa\u54fb\u54fc\u54fd\u54fe\u54ff\u5500\u5501\u5502\u5503\u5504\u5505\u5506\u5507\u5508\u5509\u550a\u550b\u550c\u550d\u550e\u550f\u5510\u5511\u5512\u5513\u5514\u5515\u5516\u5517\u5518\u5519\u551a\u551b\u551c\u551d\u551e\u551f\u5520\u5521\u5522\u5523\u5524\u5525\u5526\u5527\u5528\u5529\u552a\u552b\u552c\u552d\u552e\u552f\u5530\u5531\u5532\u5533\u5534\u5535\u5536\u5537\u5538\u5539\u553a\u553b\u553c\u553d\u553e\u553f\u5540\u5541\u5542\u5543\u5544\u5545\u5546\u5547\u5548\u5549\u554a\u554b\u554c\u554d\u554e\u554f\u5550\u5551\u5552\u5553\u5554\u5555\u5556\u5557\u5558\u5559\u555a\u555b\u555c\u555d\u555e\u555f\u5560\u5561\u5562\u5563\u5564\u5565\u5566\u5567\u5568\u5569\u556a\u556b\u556c\u556d\u556e\u556f\u5570\u5571\u5572\u5573\u5574\u5575\u5576\u5577\u5578\u5579\u557a\u557b\u557c\u557d\u557e\u557f\u5580\u5581\u5582\u5583\u5584\u5585\u5586\u5587\u5588\u5589\u558a\u558b\u558c\u558d\u558e\u558f\u5590\u5591\u5592\u5593\u5594\u5595\u5596\u5597\u5598\u5599\u559a\u559b\u559c\u559d\u559e\u559f\u55a0\u55a1\u55a2\u55a3\u55a4\u55a5\u55a6\u55a7\u55a8\u55a9\u55aa\u55ab\u55ac\u55ad\u55ae\u55af\u55b0\u55b1\u55b2\u55b3\u55b4\u55b5\u55b6\u55b7\u55b8\u55b9\u55ba\u55bb\u55bc\u55bd\u55be\u55bf\u55c0\u55c1\u55c2\u55c3\u55c4\u55c5\u55c6\u55c7\u55c8\u55c9\u55ca\u55cb\u55cc\u55cd\u55ce\u55cf\u55d0\u55d1\u55d2\u55d3\u55d4\u55d5\u55d6\u55d7\u55d8\u55d9\u55da\u55db\u55dc\u55dd\u55de\u55df\u55e0\u55e1\u55e2\u55e3\u55e4\u55e5\u55e6\u55e7\u55e8\u55e9\u55ea\u55eb\u55ec\u55ed\u55ee\u55ef\u55f0\u55f1\u55f2\u55f3\u55f4\u55f5\u55f6\u55f7\u55f8\u55f9\u55fa\u55fb\u55fc\u55fd\u55fe\u55ff\u5600\u5601\u5602\u5603\u5604\u5605\u5606\u5607\u5608\u5609\u560a\u560b\u560c\u560d\u560e\u560f\u5610\u5611\u5612\u5613\u5614\u5615\u5616\u5617\u5618\u5619\u561a\u561b\u561c\u561d\u561e\u561f\u5620\u5621\u5622\u5623\u5624\u5625\u5626\u5627\u5628\u5629\u562a\u562b\u562c\u562d\u562e\u562f\u5630\u5631\u5632\u5633\u5634\u5635\u5636\u5637\u5638\u5639\u563a\u563b\u563c\u563d\u563e\u563f\u5640\u5641\u5642\u5643\u5644\u5645\u5646\u5647\u5648\u5649\u564a\u564b\u564c\u564d\u564e\u564f\u5650\u5651\u5652\u5653\u5654\u5655\u5656\u5657\u5658\u5659\u565a\u565b\u565c\u565d\u565e\u565f\u5660\u5661\u5662\u5663\u5664\u5665\u5666\u5667\u5668\u5669\u566a\u566b\u566c\u566d\u566e\u566f\u5670\u5671\u5672\u5673\u5674\u5675\u5676\u5677\u5678\u5679\u567a\u567b\u567c\u567d\u567e\u567f\u5680\u5681\u5682\u5683\u5684\u5685\u5686\u5687\u5688\u5689\u568a\u568b\u568c\u568d\u568e\u568f\u5690\u5691\u5692\u5693\u5694\u5695\u5696\u5697\u5698\u5699\u569a\u569b\u569c\u569d\u569e\u569f\u56a0\u56a1\u56a2\u56a3\u56a4\u56a5\u56a6\u56a7\u56a8\u56a9\u56aa\u56ab\u56ac\u56ad\u56ae\u56af\u56b0\u56b1\u56b2\u56b3\u56b4\u56b5\u56b6\u56b7\u56b8\u56b9\u56ba\u56bb\u56bc\u56bd\u56be\u56bf\u56c0\u56c1\u56c2\u56c3\u56c4\u56c5\u56c6\u56c7\u56c8\u56c9\u56ca\u56cb\u56cc\u56cd\u56ce\u56cf\u56d0\u56d1\u56d2\u56d3\u56d4\u56d5\u56d6\u56d7\u56d8\u56d9\u56da\u56db\u56dc\u56dd\u56de\u56df\u56e0\u56e1\u56e2\u56e3\u56e4\u56e5\u56e6\u56e7\u56e8\u56e9\u56ea\u56eb\u56ec\u56ed\u56ee\u56ef\u56f0\u56f1\u56f2\u56f3\u56f4\u56f5\u56f6\u56f7\u56f8\u56f9\u56fa\u56fb\u56fc\u56fd\u56fe\u56ff\u5700\u5701\u5702\u5703\u5704\u5705\u5706\u5707\u5708\u5709\u570a\u570b\u570c\u570d\u570e\u570f\u5710\u5711\u5712\u5713\u5714\u5715\u5716\u5717\u5718\u5719\u571a\u571b\u571c\u571d\u571e\u571f\u5720\u5721\u5722\u5723\u5724\u5725\u5726\u5727\u5728\u5729\u572a\u572b\u572c\u572d\u572e\u572f\u5730\u5731\u5732\u5733\u5734\u5735\u5736\u5737\u5738\u5739\u573a\u573b\u573c\u573d\u573e\u573f\u5740\u5741\u5742\u5743\u5744\u5745\u5746\u5747\u5748\u5749\u574a\u574b\u574c\u574d\u574e\u574f\u5750\u5751\u5752\u5753\u5754\u5755\u5756\u5757\u5758\u5759\u575a\u575b\u575c\u575d\u575e\u575f\u5760\u5761\u5762\u5763\u5764\u5765\u5766\u5767\u5768\u5769\u576a\u576b\u576c\u576d\u576e\u576f\u5770\u5771\u5772\u5773\u5774\u5775\u5776\u5777\u5778\u5779\u577a\u577b\u577c\u577d\u577e\u577f\u5780\u5781\u5782\u5783\u5784\u5785\u5786\u5787\u5788\u5789\u578a\u578b\u578c\u578d\u578e\u578f\u5790\u5791\u5792\u5793\u5794\u5795\u5796\u5797\u5798\u5799\u579a\u579b\u579c\u579d\u579e\u579f\u57a0\u57a1\u57a2\u57a3\u57a4\u57a5\u57a6\u57a7\u57a8\u57a9\u57aa\u57ab\u57ac\u57ad\u57ae\u57af\u57b0\u57b1\u57b2\u57b3\u57b4\u57b5\u57b6\u57b7\u57b8\u57b9\u57ba\u57bb\u57bc\u57bd\u57be\u57bf\u57c0\u57c1\u57c2\u57c3\u57c4\u57c5\u57c6\u57c7\u57c8\u57c9\u57ca\u57cb\u57cc\u57cd\u57ce\u57cf\u57d0\u57d1\u57d2\u57d3\u57d4\u57d5\u57d6\u57d7\u57d8\u57d9\u57da\u57db\u57dc\u57dd\u57de\u57df\u57e0\u57e1\u57e2\u57e3\u57e4\u57e5\u57e6\u57e7\u57e8\u57e9\u57ea\u57eb\u57ec\u57ed\u57ee\u57ef\u57f0\u57f1\u57f2\u57f3\u57f4\u57f5\u57f6\u57f7\u57f8\u57f9\u57fa\u57fb\u57fc\u57fd\u57fe\u57ff\u5800\u5801\u5802\u5803\u5804\u5805\u5806\u5807\u5808\u5809\u580a\u580b\u580c\u580d\u580e\u580f\u5810\u5811\u5812\u5813\u5814\u5815\u5816\u5817\u5818\u5819\u581a\u581b\u581c\u581d\u581e\u581f\u5820\u5821\u5822\u5823\u5824\u5825\u5826\u5827\u5828\u5829\u582a\u582b\u582c\u582d\u582e\u582f\u5830\u5831\u5832\u5833\u5834\u5835\u5836\u5837\u5838\u5839\u583a\u583b\u583c\u583d\u583e\u583f\u5840\u5841\u5842\u5843\u5844\u5845\u5846\u5847\u5848\u5849\u584a\u584b\u584c\u584d\u584e\u584f\u5850\u5851\u5852\u5853\u5854\u5855\u5856\u5857\u5858\u5859\u585a\u585b\u585c\u585d\u585e\u585f\u5860\u5861\u5862\u5863\u5864\u5865\u5866\u5867\u5868\u5869\u586a\u586b\u586c\u586d\u586e\u586f\u5870\u5871\u5872\u5873\u5874\u5875\u5876\u5877\u5878\u5879\u587a\u587b\u587c\u587d\u587e\u587f\u5880\u5881\u5882\u5883\u5884\u5885\u5886\u5887\u5888\u5889\u588a\u588b\u588c\u588d\u588e\u588f\u5890\u5891\u5892\u5893\u5894\u5895\u5896\u5897\u5898\u5899\u589a\u589b\u589c\u589d\u589e\u589f\u58a0\u58a1\u58a2\u58a3\u58a4\u58a5\u58a6\u58a7\u58a8\u58a9\u58aa\u58ab\u58ac\u58ad\u58ae\u58af\u58b0\u58b1\u58b2\u58b3\u58b4\u58b5\u58b6\u58b7\u58b8\u58b9\u58ba\u58bb\u58bc\u58bd\u58be\u58bf\u58c0\u58c1\u58c2\u58c3\u58c4\u58c5\u58c6\u58c7\u58c8\u58c9\u58ca\u58cb\u58cc\u58cd\u58ce\u58cf\u58d0\u58d1\u58d2\u58d3\u58d4\u58d5\u58d6\u58d7\u58d8\u58d9\u58da\u58db\u58dc\u58dd\u58de\u58df\u58e0\u58e1\u58e2\u58e3\u58e4\u58e5\u58e6\u58e7\u58e8\u58e9\u58ea\u58eb\u58ec\u58ed\u58ee\u58ef\u58f0\u58f1\u58f2\u58f3\u58f4\u58f5\u58f6\u58f7\u58f8\u58f9\u58fa\u58fb\u58fc\u58fd\u58fe\u58ff\u5900\u5901\u5902\u5903\u5904\u5905\u5906\u5907\u5908\u5909\u590a\u590b\u590c\u590d\u590e\u590f\u5910\u5911\u5912\u5913\u5914\u5915\u5916\u5917\u5918\u5919\u591a\u591b\u591c\u591d\u591e\u591f\u5920\u5921\u5922\u5923\u5924\u5925\u5926\u5927\u5928\u5929\u592a\u592b\u592c\u592d\u592e\u592f\u5930\u5931\u5932\u5933\u5934\u5935\u5936\u5937\u5938\u5939\u593a\u593b\u593c\u593d\u593e\u593f\u5940\u5941\u5942\u5943\u5944\u5945\u5946\u5947\u5948\u5949\u594a\u594b\u594c\u594d\u594e\u594f\u5950\u5951\u5952\u5953\u5954\u5955\u5956\u5957\u5958\u5959\u595a\u595b\u595c\u595d\u595e\u595f\u5960\u5961\u5962\u5963\u5964\u5965\u5966\u5967\u5968\u5969\u596a\u596b\u596c\u596d\u596e\u596f\u5970\u5971\u5972\u5973\u5974\u5975\u5976\u5977\u5978\u5979\u597a\u597b\u597c\u597d\u597e\u597f\u5980\u5981\u5982\u5983\u5984\u5985\u5986\u5987\u5988\u5989\u598a\u598b\u598c\u598d\u598e\u598f\u5990\u5991\u5992\u5993\u5994\u5995\u5996\u5997\u5998\u5999\u599a\u599b\u599c\u599d\u599e\u599f\u59a0\u59a1\u59a2\u59a3\u59a4\u59a5\u59a6\u59a7\u59a8\u59a9\u59aa\u59ab\u59ac\u59ad\u59ae\u59af\u59b0\u59b1\u59b2\u59b3\u59b4\u59b5\u59b6\u59b7\u59b8\u59b9\u59ba\u59bb\u59bc\u59bd\u59be\u59bf\u59c0\u59c1\u59c2\u59c3\u59c4\u59c5\u59c6\u59c7\u59c8\u59c9\u59ca\u59cb\u59cc\u59cd\u59ce\u59cf\u59d0\u59d1\u59d2\u59d3\u59d4\u59d5\u59d6\u59d7\u59d8\u59d9\u59da\u59db\u59dc\u59dd\u59de\u59df\u59e0\u59e1\u59e2\u59e3\u59e4\u59e5\u59e6\u59e7\u59e8\u59e9\u59ea\u59eb\u59ec\u59ed\u59ee\u59ef\u59f0\u59f1\u59f2\u59f3\u59f4\u59f5\u59f6\u59f7\u59f8\u59f9\u59fa\u59fb\u59fc\u59fd\u59fe\u59ff\u5a00\u5a01\u5a02\u5a03\u5a04\u5a05\u5a06\u5a07\u5a08\u5a09\u5a0a\u5a0b\u5a0c\u5a0d\u5a0e\u5a0f\u5a10\u5a11\u5a12\u5a13\u5a14\u5a15\u5a16\u5a17\u5a18\u5a19\u5a1a\u5a1b\u5a1c\u5a1d\u5a1e\u5a1f\u5a20\u5a21\u5a22\u5a23\u5a24\u5a25\u5a26\u5a27\u5a28\u5a29\u5a2a\u5a2b\u5a2c\u5a2d\u5a2e\u5a2f\u5a30\u5a31\u5a32\u5a33\u5a34\u5a35\u5a36\u5a37\u5a38\u5a39\u5a3a\u5a3b\u5a3c\u5a3d\u5a3e\u5a3f\u5a40\u5a41\u5a42\u5a43\u5a44\u5a45\u5a46\u5a47\u5a48\u5a49\u5a4a\u5a4b\u5a4c\u5a4d\u5a4e\u5a4f\u5a50\u5a51\u5a52\u5a53\u5a54\u5a55\u5a56\u5a57\u5a58\u5a59\u5a5a\u5a5b\u5a5c\u5a5d\u5a5e\u5a5f\u5a60\u5a61\u5a62\u5a63\u5a64\u5a65\u5a66\u5a67\u5a68\u5a69\u5a6a\u5a6b\u5a6c\u5a6d\u5a6e\u5a6f\u5a70\u5a71\u5a72\u5a73\u5a74\u5a75\u5a76\u5a77\u5a78\u5a79\u5a7a\u5a7b\u5a7c\u5a7d\u5a7e\u5a7f\u5a80\u5a81\u5a82\u5a83\u5a84\u5a85\u5a86\u5a87\u5a88\u5a89\u5a8a\u5a8b\u5a8c\u5a8d\u5a8e\u5a8f\u5a90\u5a91\u5a92\u5a93\u5a94\u5a95\u5a96\u5a97\u5a98\u5a99\u5a9a\u5a9b\u5a9c\u5a9d\u5a9e\u5a9f\u5aa0\u5aa1\u5aa2\u5aa3\u5aa4\u5aa5\u5aa6\u5aa7\u5aa8\u5aa9\u5aaa\u5aab\u5aac\u5aad\u5aae\u5aaf\u5ab0\u5ab1\u5ab2\u5ab3\u5ab4\u5ab5\u5ab6\u5ab7\u5ab8\u5ab9\u5aba\u5abb\u5abc\u5abd\u5abe\u5abf\u5ac0\u5ac1\u5ac2\u5ac3\u5ac4\u5ac5\u5ac6\u5ac7\u5ac8\u5ac9\u5aca\u5acb\u5acc\u5acd\u5ace\u5acf\u5ad0\u5ad1\u5ad2\u5ad3\u5ad4\u5ad5\u5ad6\u5ad7\u5ad8\u5ad9\u5ada\u5adb\u5adc\u5add\u5ade\u5adf\u5ae0\u5ae1\u5ae2\u5ae3\u5ae4\u5ae5\u5ae6\u5ae7\u5ae8\u5ae9\u5aea\u5aeb\u5aec\u5aed\u5aee\u5aef\u5af0\u5af1\u5af2\u5af3\u5af4\u5af5\u5af6\u5af7\u5af8\u5af9\u5afa\u5afb\u5afc\u5afd\u5afe\u5aff\u5b00\u5b01\u5b02\u5b03\u5b04\u5b05\u5b06\u5b07\u5b08\u5b09\u5b0a\u5b0b\u5b0c\u5b0d\u5b0e\u5b0f\u5b10\u5b11\u5b12\u5b13\u5b14\u5b15\u5b16\u5b17\u5b18\u5b19\u5b1a\u5b1b\u5b1c\u5b1d\u5b1e\u5b1f\u5b20\u5b21\u5b22\u5b23\u5b24\u5b25\u5b26\u5b27\u5b28\u5b29\u5b2a\u5b2b\u5b2c\u5b2d\u5b2e\u5b2f\u5b30\u5b31\u5b32\u5b33\u5b34\u5b35\u5b36\u5b37\u5b38\u5b39\u5b3a\u5b3b\u5b3c\u5b3d\u5b3e\u5b3f\u5b40\u5b41\u5b42\u5b43\u5b44\u5b45\u5b46\u5b47\u5b48\u5b49\u5b4a\u5b4b\u5b4c\u5b4d\u5b4e\u5b4f\u5b50\u5b51\u5b52\u5b53\u5b54\u5b55\u5b56\u5b57\u5b58\u5b59\u5b5a\u5b5b\u5b5c\u5b5d\u5b5e\u5b5f\u5b60\u5b61\u5b62\u5b63\u5b64\u5b65\u5b66\u5b67\u5b68\u5b69\u5b6a\u5b6b\u5b6c\u5b6d\u5b6e\u5b6f\u5b70\u5b71\u5b72\u5b73\u5b74\u5b75\u5b76\u5b77\u5b78\u5b79\u5b7a\u5b7b\u5b7c\u5b7d\u5b7e\u5b7f\u5b80\u5b81\u5b82\u5b83\u5b84\u5b85\u5b86\u5b87\u5b88\u5b89\u5b8a\u5b8b\u5b8c\u5b8d\u5b8e\u5b8f\u5b90\u5b91\u5b92\u5b93\u5b94\u5b95\u5b96\u5b97\u5b98\u5b99\u5b9a\u5b9b\u5b9c\u5b9d\u5b9e\u5b9f\u5ba0\u5ba1\u5ba2\u5ba3\u5ba4\u5ba5\u5ba6\u5ba7\u5ba8\u5ba9\u5baa\u5bab\u5bac\u5bad\u5bae\u5baf\u5bb0\u5bb1\u5bb2\u5bb3\u5bb4\u5bb5\u5bb6\u5bb7\u5bb8\u5bb9\u5bba\u5bbb\u5bbc\u5bbd\u5bbe\u5bbf\u5bc0\u5bc1\u5bc2\u5bc3\u5bc4\u5bc5\u5bc6\u5bc7\u5bc8\u5bc9\u5bca\u5bcb\u5bcc\u5bcd\u5bce\u5bcf\u5bd0\u5bd1\u5bd2\u5bd3\u5bd4\u5bd5\u5bd6\u5bd7\u5bd8\u5bd9\u5bda\u5bdb\u5bdc\u5bdd\u5bde\u5bdf\u5be0\u5be1\u5be2\u5be3\u5be4\u5be5\u5be6\u5be7\u5be8\u5be9\u5bea\u5beb\u5bec\u5bed\u5bee\u5bef\u5bf0\u5bf1\u5bf2\u5bf3\u5bf4\u5bf5\u5bf6\u5bf7\u5bf8\u5bf9\u5bfa\u5bfb\u5bfc\u5bfd\u5bfe\u5bff\u5c00\u5c01\u5c02\u5c03\u5c04\u5c05\u5c06\u5c07\u5c08\u5c09\u5c0a\u5c0b\u5c0c\u5c0d\u5c0e\u5c0f\u5c10\u5c11\u5c12\u5c13\u5c14\u5c15\u5c16\u5c17\u5c18\u5c19\u5c1a\u5c1b\u5c1c\u5c1d\u5c1e\u5c1f\u5c20\u5c21\u5c22\u5c23\u5c24\u5c25\u5c26\u5c27\u5c28\u5c29\u5c2a\u5c2b\u5c2c\u5c2d\u5c2e\u5c2f\u5c30\u5c31\u5c32\u5c33\u5c34\u5c35\u5c36\u5c37\u5c38\u5c39\u5c3a\u5c3b\u5c3c\u5c3d\u5c3e\u5c3f\u5c40\u5c41\u5c42\u5c43\u5c44\u5c45\u5c46\u5c47\u5c48\u5c49\u5c4a\u5c4b\u5c4c\u5c4d\u5c4e\u5c4f\u5c50\u5c51\u5c52\u5c53\u5c54\u5c55\u5c56\u5c57\u5c58\u5c59\u5c5a\u5c5b\u5c5c\u5c5d\u5c5e\u5c5f\u5c60\u5c61\u5c62\u5c63\u5c64\u5c65\u5c66\u5c67\u5c68\u5c69\u5c6a\u5c6b\u5c6c\u5c6d\u5c6e\u5c6f\u5c70\u5c71\u5c72\u5c73\u5c74\u5c75\u5c76\u5c77\u5c78\u5c79\u5c7a\u5c7b\u5c7c\u5c7d\u5c7e\u5c7f\u5c80\u5c81\u5c82\u5c83\u5c84\u5c85\u5c86\u5c87\u5c88\u5c89\u5c8a\u5c8b\u5c8c\u5c8d\u5c8e\u5c8f\u5c90\u5c91\u5c92\u5c93\u5c94\u5c95\u5c96\u5c97\u5c98\u5c99\u5c9a\u5c9b\u5c9c\u5c9d\u5c9e\u5c9f\u5ca0\u5ca1\u5ca2\u5ca3\u5ca4\u5ca5\u5ca6\u5ca7\u5ca8\u5ca9\u5caa\u5cab\u5cac\u5cad\u5cae\u5caf\u5cb0\u5cb1\u5cb2\u5cb3\u5cb4\u5cb5\u5cb6\u5cb7\u5cb8\u5cb9\u5cba\u5cbb\u5cbc\u5cbd\u5cbe\u5cbf\u5cc0\u5cc1\u5cc2\u5cc3\u5cc4\u5cc5\u5cc6\u5cc7\u5cc8\u5cc9\u5cca\u5ccb\u5ccc\u5ccd\u5cce\u5ccf\u5cd0\u5cd1\u5cd2\u5cd3\u5cd4\u5cd5\u5cd6\u5cd7\u5cd8\u5cd9\u5cda\u5cdb\u5cdc\u5cdd\u5cde\u5cdf\u5ce0\u5ce1\u5ce2\u5ce3\u5ce4\u5ce5\u5ce6\u5ce7\u5ce8\u5ce9\u5cea\u5ceb\u5cec\u5ced\u5cee\u5cef\u5cf0\u5cf1\u5cf2\u5cf3\u5cf4\u5cf5\u5cf6\u5cf7\u5cf8\u5cf9\u5cfa\u5cfb\u5cfc\u5cfd\u5cfe\u5cff\u5d00\u5d01\u5d02\u5d03\u5d04\u5d05\u5d06\u5d07\u5d08\u5d09\u5d0a\u5d0b\u5d0c\u5d0d\u5d0e\u5d0f\u5d10\u5d11\u5d12\u5d13\u5d14\u5d15\u5d16\u5d17\u5d18\u5d19\u5d1a\u5d1b\u5d1c\u5d1d\u5d1e\u5d1f\u5d20\u5d21\u5d22\u5d23\u5d24\u5d25\u5d26\u5d27\u5d28\u5d29\u5d2a\u5d2b\u5d2c\u5d2d\u5d2e\u5d2f\u5d30\u5d31\u5d32\u5d33\u5d34\u5d35\u5d36\u5d37\u5d38\u5d39\u5d3a\u5d3b\u5d3c\u5d3d\u5d3e\u5d3f\u5d40\u5d41\u5d42\u5d43\u5d44\u5d45\u5d46\u5d47\u5d48\u5d49\u5d4a\u5d4b\u5d4c\u5d4d\u5d4e\u5d4f\u5d50\u5d51\u5d52\u5d53\u5d54\u5d55\u5d56\u5d57\u5d58\u5d59\u5d5a\u5d5b\u5d5c\u5d5d\u5d5e\u5d5f\u5d60\u5d61\u5d62\u5d63\u5d64\u5d65\u5d66\u5d67\u5d68\u5d69\u5d6a\u5d6b\u5d6c\u5d6d\u5d6e\u5d6f\u5d70\u5d71\u5d72\u5d73\u5d74\u5d75\u5d76\u5d77\u5d78\u5d79\u5d7a\u5d7b\u5d7c\u5d7d\u5d7e\u5d7f\u5d80\u5d81\u5d82\u5d83\u5d84\u5d85\u5d86\u5d87\u5d88\u5d89\u5d8a\u5d8b\u5d8c\u5d8d\u5d8e\u5d8f\u5d90\u5d91\u5d92\u5d93\u5d94\u5d95\u5d96\u5d97\u5d98\u5d99\u5d9a\u5d9b\u5d9c\u5d9d\u5d9e\u5d9f\u5da0\u5da1\u5da2\u5da3\u5da4\u5da5\u5da6\u5da7\u5da8\u5da9\u5daa\u5dab\u5dac\u5dad\u5dae\u5daf\u5db0\u5db1\u5db2\u5db3\u5db4\u5db5\u5db6\u5db7\u5db8\u5db9\u5dba\u5dbb\u5dbc\u5dbd\u5dbe\u5dbf\u5dc0\u5dc1\u5dc2\u5dc3\u5dc4\u5dc5\u5dc6\u5dc7\u5dc8\u5dc9\u5dca\u5dcb\u5dcc\u5dcd\u5dce\u5dcf\u5dd0\u5dd1\u5dd2\u5dd3\u5dd4\u5dd5\u5dd6\u5dd7\u5dd8\u5dd9\u5dda\u5ddb\u5ddc\u5ddd\u5dde\u5ddf\u5de0\u5de1\u5de2\u5de3\u5de4\u5de5\u5de6\u5de7\u5de8\u5de9\u5dea\u5deb\u5dec\u5ded\u5dee\u5def\u5df0\u5df1\u5df2\u5df3\u5df4\u5df5\u5df6\u5df7\u5df8\u5df9\u5dfa\u5dfb\u5dfc\u5dfd\u5dfe\u5dff\u5e00\u5e01\u5e02\u5e03\u5e04\u5e05\u5e06\u5e07\u5e08\u5e09\u5e0a\u5e0b\u5e0c\u5e0d\u5e0e\u5e0f\u5e10\u5e11\u5e12\u5e13\u5e14\u5e15\u5e16\u5e17\u5e18\u5e19\u5e1a\u5e1b\u5e1c\u5e1d\u5e1e\u5e1f\u5e20\u5e21\u5e22\u5e23\u5e24\u5e25\u5e26\u5e27\u5e28\u5e29\u5e2a\u5e2b\u5e2c\u5e2d\u5e2e\u5e2f\u5e30\u5e31\u5e32\u5e33\u5e34\u5e35\u5e36\u5e37\u5e38\u5e39\u5e3a\u5e3b\u5e3c\u5e3d\u5e3e\u5e3f\u5e40\u5e41\u5e42\u5e43\u5e44\u5e45\u5e46\u5e47\u5e48\u5e49\u5e4a\u5e4b\u5e4c\u5e4d\u5e4e\u5e4f\u5e50\u5e51\u5e52\u5e53\u5e54\u5e55\u5e56\u5e57\u5e58\u5e59\u5e5a\u5e5b\u5e5c\u5e5d\u5e5e\u5e5f\u5e60\u5e61\u5e62\u5e63\u5e64\u5e65\u5e66\u5e67\u5e68\u5e69\u5e6a\u5e6b\u5e6c\u5e6d\u5e6e\u5e6f\u5e70\u5e71\u5e72\u5e73\u5e74\u5e75\u5e76\u5e77\u5e78\u5e79\u5e7a\u5e7b\u5e7c\u5e7d\u5e7e\u5e7f\u5e80\u5e81\u5e82\u5e83\u5e84\u5e85\u5e86\u5e87\u5e88\u5e89\u5e8a\u5e8b\u5e8c\u5e8d\u5e8e\u5e8f\u5e90\u5e91\u5e92\u5e93\u5e94\u5e95\u5e96\u5e97\u5e98\u5e99\u5e9a\u5e9b\u5e9c\u5e9d\u5e9e\u5e9f\u5ea0\u5ea1\u5ea2\u5ea3\u5ea4\u5ea5\u5ea6\u5ea7\u5ea8\u5ea9\u5eaa\u5eab\u5eac\u5ead\u5eae\u5eaf\u5eb0\u5eb1\u5eb2\u5eb3\u5eb4\u5eb5\u5eb6\u5eb7\u5eb8\u5eb9\u5eba\u5ebb\u5ebc\u5ebd\u5ebe\u5ebf\u5ec0\u5ec1\u5ec2\u5ec3\u5ec4\u5ec5\u5ec6\u5ec7\u5ec8\u5ec9\u5eca\u5ecb\u5ecc\u5ecd\u5ece\u5ecf\u5ed0\u5ed1\u5ed2\u5ed3\u5ed4\u5ed5\u5ed6\u5ed7\u5ed8\u5ed9\u5eda\u5edb\u5edc\u5edd\u5ede\u5edf\u5ee0\u5ee1\u5ee2\u5ee3\u5ee4\u5ee5\u5ee6\u5ee7\u5ee8\u5ee9\u5eea\u5eeb\u5eec\u5eed\u5eee\u5eef\u5ef0\u5ef1\u5ef2\u5ef3\u5ef4\u5ef5\u5ef6\u5ef7\u5ef8\u5ef9\u5efa\u5efb\u5efc\u5efd\u5efe\u5eff\u5f00\u5f01\u5f02\u5f03\u5f04\u5f05\u5f06\u5f07\u5f08\u5f09\u5f0a\u5f0b\u5f0c\u5f0d\u5f0e\u5f0f\u5f10\u5f11\u5f12\u5f13\u5f14\u5f15\u5f16\u5f17\u5f18\u5f19\u5f1a\u5f1b\u5f1c\u5f1d\u5f1e\u5f1f\u5f20\u5f21\u5f22\u5f23\u5f24\u5f25\u5f26\u5f27\u5f28\u5f29\u5f2a\u5f2b\u5f2c\u5f2d\u5f2e\u5f2f\u5f30\u5f31\u5f32\u5f33\u5f34\u5f35\u5f36\u5f37\u5f38\u5f39\u5f3a\u5f3b\u5f3c\u5f3d\u5f3e\u5f3f\u5f40\u5f41\u5f42\u5f43\u5f44\u5f45\u5f46\u5f47\u5f48\u5f49\u5f4a\u5f4b\u5f4c\u5f4d\u5f4e\u5f4f\u5f50\u5f51\u5f52\u5f53\u5f54\u5f55\u5f56\u5f57\u5f58\u5f59\u5f5a\u5f5b\u5f5c\u5f5d\u5f5e\u5f5f\u5f60\u5f61\u5f62\u5f63\u5f64\u5f65\u5f66\u5f67\u5f68\u5f69\u5f6a\u5f6b\u5f6c\u5f6d\u5f6e\u5f6f\u5f70\u5f71\u5f72\u5f73\u5f74\u5f75\u5f76\u5f77\u5f78\u5f79\u5f7a\u5f7b\u5f7c\u5f7d\u5f7e\u5f7f\u5f80\u5f81\u5f82\u5f83\u5f84\u5f85\u5f86\u5f87\u5f88\u5f89\u5f8a\u5f8b\u5f8c\u5f8d\u5f8e\u5f8f\u5f90\u5f91\u5f92\u5f93\u5f94\u5f95\u5f96\u5f97\u5f98\u5f99\u5f9a\u5f9b\u5f9c\u5f9d\u5f9e\u5f9f\u5fa0\u5fa1\u5fa2\u5fa3\u5fa4\u5fa5\u5fa6\u5fa7\u5fa8\u5fa9\u5faa\u5fab\u5fac\u5fad\u5fae\u5faf\u5fb0\u5fb1\u5fb2\u5fb3\u5fb4\u5fb5\u5fb6\u5fb7\u5fb8\u5fb9\u5fba\u5fbb\u5fbc\u5fbd\u5fbe\u5fbf\u5fc0\u5fc1\u5fc2\u5fc3\u5fc4\u5fc5\u5fc6\u5fc7\u5fc8\u5fc9\u5fca\u5fcb\u5fcc\u5fcd\u5fce\u5fcf\u5fd0\u5fd1\u5fd2\u5fd3\u5fd4\u5fd5\u5fd6\u5fd7\u5fd8\u5fd9\u5fda\u5fdb\u5fdc\u5fdd\u5fde\u5fdf\u5fe0\u5fe1\u5fe2\u5fe3\u5fe4\u5fe5\u5fe6\u5fe7\u5fe8\u5fe9\u5fea\u5feb\u5fec\u5fed\u5fee\u5fef\u5ff0\u5ff1\u5ff2\u5ff3\u5ff4\u5ff5\u5ff6\u5ff7\u5ff8\u5ff9\u5ffa\u5ffb\u5ffc\u5ffd\u5ffe\u5fff\u6000\u6001\u6002\u6003\u6004\u6005\u6006\u6007\u6008\u6009\u600a\u600b\u600c\u600d\u600e\u600f\u6010\u6011\u6012\u6013\u6014\u6015\u6016\u6017\u6018\u6019\u601a\u601b\u601c\u601d\u601e\u601f\u6020\u6021\u6022\u6023\u6024\u6025\u6026\u6027\u6028\u6029\u602a\u602b\u602c\u602d\u602e\u602f\u6030\u6031\u6032\u6033\u6034\u6035\u6036\u6037\u6038\u6039\u603a\u603b\u603c\u603d\u603e\u603f\u6040\u6041\u6042\u6043\u6044\u6045\u6046\u6047\u6048\u6049\u604a\u604b\u604c\u604d\u604e\u604f\u6050\u6051\u6052\u6053\u6054\u6055\u6056\u6057\u6058\u6059\u605a\u605b\u605c\u605d\u605e\u605f\u6060\u6061\u6062\u6063\u6064\u6065\u6066\u6067\u6068\u6069\u606a\u606b\u606c\u606d\u606e\u606f\u6070\u6071\u6072\u6073\u6074\u6075\u6076\u6077\u6078\u6079\u607a\u607b\u607c\u607d\u607e\u607f\u6080\u6081\u6082\u6083\u6084\u6085\u6086\u6087\u6088\u6089\u608a\u608b\u608c\u608d\u608e\u608f\u6090\u6091\u6092\u6093\u6094\u6095\u6096\u6097\u6098\u6099\u609a\u609b\u609c\u609d\u609e\u609f\u60a0\u60a1\u60a2\u60a3\u60a4\u60a5\u60a6\u60a7\u60a8\u60a9\u60aa\u60ab\u60ac\u60ad\u60ae\u60af\u60b0\u60b1\u60b2\u60b3\u60b4\u60b5\u60b6\u60b7\u60b8\u60b9\u60ba\u60bb\u60bc\u60bd\u60be\u60bf\u60c0\u60c1\u60c2\u60c3\u60c4\u60c5\u60c6\u60c7\u60c8\u60c9\u60ca\u60cb\u60cc\u60cd\u60ce\u60cf\u60d0\u60d1\u60d2\u60d3\u60d4\u60d5\u60d6\u60d7\u60d8\u60d9\u60da\u60db\u60dc\u60dd\u60de\u60df\u60e0\u60e1\u60e2\u60e3\u60e4\u60e5\u60e6\u60e7\u60e8\u60e9\u60ea\u60eb\u60ec\u60ed\u60ee\u60ef\u60f0\u60f1\u60f2\u60f3\u60f4\u60f5\u60f6\u60f7\u60f8\u60f9\u60fa\u60fb\u60fc\u60fd\u60fe\u60ff\u6100\u6101\u6102\u6103\u6104\u6105\u6106\u6107\u6108\u6109\u610a\u610b\u610c\u610d\u610e\u610f\u6110\u6111\u6112\u6113\u6114\u6115\u6116\u6117\u6118\u6119\u611a\u611b\u611c\u611d\u611e\u611f\u6120\u6121\u6122\u6123\u6124\u6125\u6126\u6127\u6128\u6129\u612a\u612b\u612c\u612d\u612e\u612f\u6130\u6131\u6132\u6133\u6134\u6135\u6136\u6137\u6138\u6139\u613a\u613b\u613c\u613d\u613e\u613f\u6140\u6141\u6142\u6143\u6144\u6145\u6146\u6147\u6148\u6149\u614a\u614b\u614c\u614d\u614e\u614f\u6150\u6151\u6152\u6153\u6154\u6155\u6156\u6157\u6158\u6159\u615a\u615b\u615c\u615d\u615e\u615f\u6160\u6161\u6162\u6163\u6164\u6165\u6166\u6167\u6168\u6169\u616a\u616b\u616c\u616d\u616e\u616f\u6170\u6171\u6172\u6173\u6174\u6175\u6176\u6177\u6178\u6179\u617a\u617b\u617c\u617d\u617e\u617f\u6180\u6181\u6182\u6183\u6184\u6185\u6186\u6187\u6188\u6189\u618a\u618b\u618c\u618d\u618e\u618f\u6190\u6191\u6192\u6193\u6194\u6195\u6196\u6197\u6198\u6199\u619a\u619b\u619c\u619d\u619e\u619f\u61a0\u61a1\u61a2\u61a3\u61a4\u61a5\u61a6\u61a7\u61a8\u61a9\u61aa\u61ab\u61ac\u61ad\u61ae\u61af\u61b0\u61b1\u61b2\u61b3\u61b4\u61b5\u61b6\u61b7\u61b8\u61b9\u61ba\u61bb\u61bc\u61bd\u61be\u61bf\u61c0\u61c1\u61c2\u61c3\u61c4\u61c5\u61c6\u61c7\u61c8\u61c9\u61ca\u61cb\u61cc\u61cd\u61ce\u61cf\u61d0\u61d1\u61d2\u61d3\u61d4\u61d5\u61d6\u61d7\u61d8\u61d9\u61da\u61db\u61dc\u61dd\u61de\u61df\u61e0\u61e1\u61e2\u61e3\u61e4\u61e5\u61e6\u61e7\u61e8\u61e9\u61ea\u61eb\u61ec\u61ed\u61ee\u61ef\u61f0\u61f1\u61f2\u61f3\u61f4\u61f5\u61f6\u61f7\u61f8\u61f9\u61fa\u61fb\u61fc\u61fd\u61fe\u61ff\u6200\u6201\u6202\u6203\u6204\u6205\u6206\u6207\u6208\u6209\u620a\u620b\u620c\u620d\u620e\u620f\u6210\u6211\u6212\u6213\u6214\u6215\u6216\u6217\u6218\u6219\u621a\u621b\u621c\u621d\u621e\u621f\u6220\u6221\u6222\u6223\u6224\u6225\u6226\u6227\u6228\u6229\u622a\u622b\u622c\u622d\u622e\u622f\u6230\u6231\u6232\u6233\u6234\u6235\u6236\u6237\u6238\u6239\u623a\u623b\u623c\u623d\u623e\u623f\u6240\u6241\u6242\u6243\u6244\u6245\u6246\u6247\u6248\u6249\u624a\u624b\u624c\u624d\u624e\u624f\u6250\u6251\u6252\u6253\u6254\u6255\u6256\u6257\u6258\u6259\u625a\u625b\u625c\u625d\u625e\u625f\u6260\u6261\u6262\u6263\u6264\u6265\u6266\u6267\u6268\u6269\u626a\u626b\u626c\u626d\u626e\u626f\u6270\u6271\u6272\u6273\u6274\u6275\u6276\u6277\u6278\u6279\u627a\u627b\u627c\u627d\u627e\u627f\u6280\u6281\u6282\u6283\u6284\u6285\u6286\u6287\u6288\u6289\u628a\u628b\u628c\u628d\u628e\u628f\u6290\u6291\u6292\u6293\u6294\u6295\u6296\u6297\u6298\u6299\u629a\u629b\u629c\u629d\u629e\u629f\u62a0\u62a1\u62a2\u62a3\u62a4\u62a5\u62a6\u62a7\u62a8\u62a9\u62aa\u62ab\u62ac\u62ad\u62ae\u62af\u62b0\u62b1\u62b2\u62b3\u62b4\u62b5\u62b6\u62b7\u62b8\u62b9\u62ba\u62bb\u62bc\u62bd\u62be\u62bf\u62c0\u62c1\u62c2\u62c3\u62c4\u62c5\u62c6\u62c7\u62c8\u62c9\u62ca\u62cb\u62cc\u62cd\u62ce\u62cf\u62d0\u62d1\u62d2\u62d3\u62d4\u62d5\u62d6\u62d7\u62d8\u62d9\u62da\u62db\u62dc\u62dd\u62de\u62df\u62e0\u62e1\u62e2\u62e3\u62e4\u62e5\u62e6\u62e7\u62e8\u62e9\u62ea\u62eb\u62ec\u62ed\u62ee\u62ef\u62f0\u62f1\u62f2\u62f3\u62f4\u62f5\u62f6\u62f7\u62f8\u62f9\u62fa\u62fb\u62fc\u62fd\u62fe\u62ff\u6300\u6301\u6302\u6303\u6304\u6305\u6306\u6307\u6308\u6309\u630a\u630b\u630c\u630d\u630e\u630f\u6310\u6311\u6312\u6313\u6314\u6315\u6316\u6317\u6318\u6319\u631a\u631b\u631c\u631d\u631e\u631f\u6320\u6321\u6322\u6323\u6324\u6325\u6326\u6327\u6328\u6329\u632a\u632b\u632c\u632d\u632e\u632f\u6330\u6331\u6332\u6333\u6334\u6335\u6336\u6337\u6338\u6339\u633a\u633b\u633c\u633d\u633e\u633f\u6340\u6341\u6342\u6343\u6344\u6345\u6346\u6347\u6348\u6349\u634a\u634b\u634c\u634d\u634e\u634f\u6350\u6351\u6352\u6353\u6354\u6355\u6356\u6357\u6358\u6359\u635a\u635b\u635c\u635d\u635e\u635f\u6360\u6361\u6362\u6363\u6364\u6365\u6366\u6367\u6368\u6369\u636a\u636b\u636c\u636d\u636e\u636f\u6370\u6371\u6372\u6373\u6374\u6375\u6376\u6377\u6378\u6379\u637a\u637b\u637c\u637d\u637e\u637f\u6380\u6381\u6382\u6383\u6384\u6385\u6386\u6387\u6388\u6389\u638a\u638b\u638c\u638d\u638e\u638f\u6390\u6391\u6392\u6393\u6394\u6395\u6396\u6397\u6398\u6399\u639a\u639b\u639c\u639d\u639e\u639f\u63a0\u63a1\u63a2\u63a3\u63a4\u63a5\u63a6\u63a7\u63a8\u63a9\u63aa\u63ab\u63ac\u63ad\u63ae\u63af\u63b0\u63b1\u63b2\u63b3\u63b4\u63b5\u63b6\u63b7\u63b8\u63b9\u63ba\u63bb\u63bc\u63bd\u63be\u63bf\u63c0\u63c1\u63c2\u63c3\u63c4\u63c5\u63c6\u63c7\u63c8\u63c9\u63ca\u63cb\u63cc\u63cd\u63ce\u63cf\u63d0\u63d1\u63d2\u63d3\u63d4\u63d5\u63d6\u63d7\u63d8\u63d9\u63da\u63db\u63dc\u63dd\u63de\u63df\u63e0\u63e1\u63e2\u63e3\u63e4\u63e5\u63e6\u63e7\u63e8\u63e9\u63ea\u63eb\u63ec\u63ed\u63ee\u63ef\u63f0\u63f1\u63f2\u63f3\u63f4\u63f5\u63f6\u63f7\u63f8\u63f9\u63fa\u63fb\u63fc\u63fd\u63fe\u63ff\u6400\u6401\u6402\u6403\u6404\u6405\u6406\u6407\u6408\u6409\u640a\u640b\u640c\u640d\u640e\u640f\u6410\u6411\u6412\u6413\u6414\u6415\u6416\u6417\u6418\u6419\u641a\u641b\u641c\u641d\u641e\u641f\u6420\u6421\u6422\u6423\u6424\u6425\u6426\u6427\u6428\u6429\u642a\u642b\u642c\u642d\u642e\u642f\u6430\u6431\u6432\u6433\u6434\u6435\u6436\u6437\u6438\u6439\u643a\u643b\u643c\u643d\u643e\u643f\u6440\u6441\u6442\u6443\u6444\u6445\u6446\u6447\u6448\u6449\u644a\u644b\u644c\u644d\u644e\u644f\u6450\u6451\u6452\u6453\u6454\u6455\u6456\u6457\u6458\u6459\u645a\u645b\u645c\u645d\u645e\u645f\u6460\u6461\u6462\u6463\u6464\u6465\u6466\u6467\u6468\u6469\u646a\u646b\u646c\u646d\u646e\u646f\u6470\u6471\u6472\u6473\u6474\u6475\u6476\u6477\u6478\u6479\u647a\u647b\u647c\u647d\u647e\u647f\u6480\u6481\u6482\u6483\u6484\u6485\u6486\u6487\u6488\u6489\u648a\u648b\u648c\u648d\u648e\u648f\u6490\u6491\u6492\u6493\u6494\u6495\u6496\u6497\u6498\u6499\u649a\u649b\u649c\u649d\u649e\u649f\u64a0\u64a1\u64a2\u64a3\u64a4\u64a5\u64a6\u64a7\u64a8\u64a9\u64aa\u64ab\u64ac\u64ad\u64ae\u64af\u64b0\u64b1\u64b2\u64b3\u64b4\u64b5\u64b6\u64b7\u64b8\u64b9\u64ba\u64bb\u64bc\u64bd\u64be\u64bf\u64c0\u64c1\u64c2\u64c3\u64c4\u64c5\u64c6\u64c7\u64c8\u64c9\u64ca\u64cb\u64cc\u64cd\u64ce\u64cf\u64d0\u64d1\u64d2\u64d3\u64d4\u64d5\u64d6\u64d7\u64d8\u64d9\u64da\u64db\u64dc\u64dd\u64de\u64df\u64e0\u64e1\u64e2\u64e3\u64e4\u64e5\u64e6\u64e7\u64e8\u64e9\u64ea\u64eb\u64ec\u64ed\u64ee\u64ef\u64f0\u64f1\u64f2\u64f3\u64f4\u64f5\u64f6\u64f7\u64f8\u64f9\u64fa\u64fb\u64fc\u64fd\u64fe\u64ff\u6500\u6501\u6502\u6503\u6504\u6505\u6506\u6507\u6508\u6509\u650a\u650b\u650c\u650d\u650e\u650f\u6510\u6511\u6512\u6513\u6514\u6515\u6516\u6517\u6518\u6519\u651a\u651b\u651c\u651d\u651e\u651f\u6520\u6521\u6522\u6523\u6524\u6525\u6526\u6527\u6528\u6529\u652a\u652b\u652c\u652d\u652e\u652f\u6530\u6531\u6532\u6533\u6534\u6535\u6536\u6537\u6538\u6539\u653a\u653b\u653c\u653d\u653e\u653f\u6540\u6541\u6542\u6543\u6544\u6545\u6546\u6547\u6548\u6549\u654a\u654b\u654c\u654d\u654e\u654f\u6550\u6551\u6552\u6553\u6554\u6555\u6556\u6557\u6558\u6559\u655a\u655b\u655c\u655d\u655e\u655f\u6560\u6561\u6562\u6563\u6564\u6565\u6566\u6567\u6568\u6569\u656a\u656b\u656c\u656d\u656e\u656f\u6570\u6571\u6572\u6573\u6574\u6575\u6576\u6577\u6578\u6579\u657a\u657b\u657c\u657d\u657e\u657f\u6580\u6581\u6582\u6583\u6584\u6585\u6586\u6587\u6588\u6589\u658a\u658b\u658c\u658d\u658e\u658f\u6590\u6591\u6592\u6593\u6594\u6595\u6596\u6597\u6598\u6599\u659a\u659b\u659c\u659d\u659e\u659f\u65a0\u65a1\u65a2\u65a3\u65a4\u65a5\u65a6\u65a7\u65a8\u65a9\u65aa\u65ab\u65ac\u65ad\u65ae\u65af\u65b0\u65b1\u65b2\u65b3\u65b4\u65b5\u65b6\u65b7\u65b8\u65b9\u65ba\u65bb\u65bc\u65bd\u65be\u65bf\u65c0\u65c1\u65c2\u65c3\u65c4\u65c5\u65c6\u65c7\u65c8\u65c9\u65ca\u65cb\u65cc\u65cd\u65ce\u65cf\u65d0\u65d1\u65d2\u65d3\u65d4\u65d5\u65d6\u65d7\u65d8\u65d9\u65da\u65db\u65dc\u65dd\u65de\u65df\u65e0\u65e1\u65e2\u65e3\u65e4\u65e5\u65e6\u65e7\u65e8\u65e9\u65ea\u65eb\u65ec\u65ed\u65ee\u65ef\u65f0\u65f1\u65f2\u65f3\u65f4\u65f5\u65f6\u65f7\u65f8\u65f9\u65fa\u65fb\u65fc\u65fd\u65fe\u65ff\u6600\u6601\u6602\u6603\u6604\u6605\u6606\u6607\u6608\u6609\u660a\u660b\u660c\u660d\u660e\u660f\u6610\u6611\u6612\u6613\u6614\u6615\u6616\u6617\u6618\u6619\u661a\u661b\u661c\u661d\u661e\u661f\u6620\u6621\u6622\u6623\u6624\u6625\u6626\u6627\u6628\u6629\u662a\u662b\u662c\u662d\u662e\u662f\u6630\u6631\u6632\u6633\u6634\u6635\u6636\u6637\u6638\u6639\u663a\u663b\u663c\u663d\u663e\u663f\u6640\u6641\u6642\u6643\u6644\u6645\u6646\u6647\u6648\u6649\u664a\u664b\u664c\u664d\u664e\u664f\u6650\u6651\u6652\u6653\u6654\u6655\u6656\u6657\u6658\u6659\u665a\u665b\u665c\u665d\u665e\u665f\u6660\u6661\u6662\u6663\u6664\u6665\u6666\u6667\u6668\u6669\u666a\u666b\u666c\u666d\u666e\u666f\u6670\u6671\u6672\u6673\u6674\u6675\u6676\u6677\u6678\u6679\u667a\u667b\u667c\u667d\u667e\u667f\u6680\u6681\u6682\u6683\u6684\u6685\u6686\u6687\u6688\u6689\u668a\u668b\u668c\u668d\u668e\u668f\u6690\u6691\u6692\u6693\u6694\u6695\u6696\u6697\u6698\u6699\u669a\u669b\u669c\u669d\u669e\u669f\u66a0\u66a1\u66a2\u66a3\u66a4\u66a5\u66a6\u66a7\u66a8\u66a9\u66aa\u66ab\u66ac\u66ad\u66ae\u66af\u66b0\u66b1\u66b2\u66b3\u66b4\u66b5\u66b6\u66b7\u66b8\u66b9\u66ba\u66bb\u66bc\u66bd\u66be\u66bf\u66c0\u66c1\u66c2\u66c3\u66c4\u66c5\u66c6\u66c7\u66c8\u66c9\u66ca\u66cb\u66cc\u66cd\u66ce\u66cf\u66d0\u66d1\u66d2\u66d3\u66d4\u66d5\u66d6\u66d7\u66d8\u66d9\u66da\u66db\u66dc\u66dd\u66de\u66df\u66e0\u66e1\u66e2\u66e3\u66e4\u66e5\u66e6\u66e7\u66e8\u66e9\u66ea\u66eb\u66ec\u66ed\u66ee\u66ef\u66f0\u66f1\u66f2\u66f3\u66f4\u66f5\u66f6\u66f7\u66f8\u66f9\u66fa\u66fb\u66fc\u66fd\u66fe\u66ff\u6700\u6701\u6702\u6703\u6704\u6705\u6706\u6707\u6708\u6709\u670a\u670b\u670c\u670d\u670e\u670f\u6710\u6711\u6712\u6713\u6714\u6715\u6716\u6717\u6718\u6719\u671a\u671b\u671c\u671d\u671e\u671f\u6720\u6721\u6722\u6723\u6724\u6725\u6726\u6727\u6728\u6729\u672a\u672b\u672c\u672d\u672e\u672f\u6730\u6731\u6732\u6733\u6734\u6735\u6736\u6737\u6738\u6739\u673a\u673b\u673c\u673d\u673e\u673f\u6740\u6741\u6742\u6743\u6744\u6745\u6746\u6747\u6748\u6749\u674a\u674b\u674c\u674d\u674e\u674f\u6750\u6751\u6752\u6753\u6754\u6755\u6756\u6757\u6758\u6759\u675a\u675b\u675c\u675d\u675e\u675f\u6760\u6761\u6762\u6763\u6764\u6765\u6766\u6767\u6768\u6769\u676a\u676b\u676c\u676d\u676e\u676f\u6770\u6771\u6772\u6773\u6774\u6775\u6776\u6777\u6778\u6779\u677a\u677b\u677c\u677d\u677e\u677f\u6780\u6781\u6782\u6783\u6784\u6785\u6786\u6787\u6788\u6789\u678a\u678b\u678c\u678d\u678e\u678f\u6790\u6791\u6792\u6793\u6794\u6795\u6796\u6797\u6798\u6799\u679a\u679b\u679c\u679d\u679e\u679f\u67a0\u67a1\u67a2\u67a3\u67a4\u67a5\u67a6\u67a7\u67a8\u67a9\u67aa\u67ab\u67ac\u67ad\u67ae\u67af\u67b0\u67b1\u67b2\u67b3\u67b4\u67b5\u67b6\u67b7\u67b8\u67b9\u67ba\u67bb\u67bc\u67bd\u67be\u67bf\u67c0\u67c1\u67c2\u67c3\u67c4\u67c5\u67c6\u67c7\u67c8\u67c9\u67ca\u67cb\u67cc\u67cd\u67ce\u67cf\u67d0\u67d1\u67d2\u67d3\u67d4\u67d5\u67d6\u67d7\u67d8\u67d9\u67da\u67db\u67dc\u67dd\u67de\u67df\u67e0\u67e1\u67e2\u67e3\u67e4\u67e5\u67e6\u67e7\u67e8\u67e9\u67ea\u67eb\u67ec\u67ed\u67ee\u67ef\u67f0\u67f1\u67f2\u67f3\u67f4\u67f5\u67f6\u67f7\u67f8\u67f9\u67fa\u67fb\u67fc\u67fd\u67fe\u67ff\u6800\u6801\u6802\u6803\u6804\u6805\u6806\u6807\u6808\u6809\u680a\u680b\u680c\u680d\u680e\u680f\u6810\u6811\u6812\u6813\u6814\u6815\u6816\u6817\u6818\u6819\u681a\u681b\u681c\u681d\u681e\u681f\u6820\u6821\u6822\u6823\u6824\u6825\u6826\u6827\u6828\u6829\u682a\u682b\u682c\u682d\u682e\u682f\u6830\u6831\u6832\u6833\u6834\u6835\u6836\u6837\u6838\u6839\u683a\u683b\u683c\u683d\u683e\u683f\u6840\u6841\u6842\u6843\u6844\u6845\u6846\u6847\u6848\u6849\u684a\u684b\u684c\u684d\u684e\u684f\u6850\u6851\u6852\u6853\u6854\u6855\u6856\u6857\u6858\u6859\u685a\u685b\u685c\u685d\u685e\u685f\u6860\u6861\u6862\u6863\u6864\u6865\u6866\u6867\u6868\u6869\u686a\u686b\u686c\u686d\u686e\u686f\u6870\u6871\u6872\u6873\u6874\u6875\u6876\u6877\u6878\u6879\u687a\u687b\u687c\u687d\u687e\u687f\u6880\u6881\u6882\u6883\u6884\u6885\u6886\u6887\u6888\u6889\u688a\u688b\u688c\u688d\u688e\u688f\u6890\u6891\u6892\u6893\u6894\u6895\u6896\u6897\u6898\u6899\u689a\u689b\u689c\u689d\u689e\u689f\u68a0\u68a1\u68a2\u68a3\u68a4\u68a5\u68a6\u68a7\u68a8\u68a9\u68aa\u68ab\u68ac\u68ad\u68ae\u68af\u68b0\u68b1\u68b2\u68b3\u68b4\u68b5\u68b6\u68b7\u68b8\u68b9\u68ba\u68bb\u68bc\u68bd\u68be\u68bf\u68c0\u68c1\u68c2\u68c3\u68c4\u68c5\u68c6\u68c7\u68c8\u68c9\u68ca\u68cb\u68cc\u68cd\u68ce\u68cf\u68d0\u68d1\u68d2\u68d3\u68d4\u68d5\u68d6\u68d7\u68d8\u68d9\u68da\u68db\u68dc\u68dd\u68de\u68df\u68e0\u68e1\u68e2\u68e3\u68e4\u68e5\u68e6\u68e7\u68e8\u68e9\u68ea\u68eb\u68ec\u68ed\u68ee\u68ef\u68f0\u68f1\u68f2\u68f3\u68f4\u68f5\u68f6\u68f7\u68f8\u68f9\u68fa\u68fb\u68fc\u68fd\u68fe\u68ff\u6900\u6901\u6902\u6903\u6904\u6905\u6906\u6907\u6908\u6909\u690a\u690b\u690c\u690d\u690e\u690f\u6910\u6911\u6912\u6913\u6914\u6915\u6916\u6917\u6918\u6919\u691a\u691b\u691c\u691d\u691e\u691f\u6920\u6921\u6922\u6923\u6924\u6925\u6926\u6927\u6928\u6929\u692a\u692b\u692c\u692d\u692e\u692f\u6930\u6931\u6932\u6933\u6934\u6935\u6936\u6937\u6938\u6939\u693a\u693b\u693c\u693d\u693e\u693f\u6940\u6941\u6942\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694a\u694b\u694c\u694d\u694e\u694f\u6950\u6951\u6952\u6953\u6954\u6955\u6956\u6957\u6958\u6959\u695a\u695b\u695c\u695d\u695e\u695f\u6960\u6961\u6962\u6963\u6964\u6965\u6966\u6967\u6968\u6969\u696a\u696b\u696c\u696d\u696e\u696f\u6970\u6971\u6972\u6973\u6974\u6975\u6976\u6977\u6978\u6979\u697a\u697b\u697c\u697d\u697e\u697f\u6980\u6981\u6982\u6983\u6984\u6985\u6986\u6987\u6988\u6989\u698a\u698b\u698c\u698d\u698e\u698f\u6990\u6991\u6992\u6993\u6994\u6995\u6996\u6997\u6998\u6999\u699a\u699b\u699c\u699d\u699e\u699f\u69a0\u69a1\u69a2\u69a3\u69a4\u69a5\u69a6\u69a7\u69a8\u69a9\u69aa\u69ab\u69ac\u69ad\u69ae\u69af\u69b0\u69b1\u69b2\u69b3\u69b4\u69b5\u69b6\u69b7\u69b8\u69b9\u69ba\u69bb\u69bc\u69bd\u69be\u69bf\u69c0\u69c1\u69c2\u69c3\u69c4\u69c5\u69c6\u69c7\u69c8\u69c9\u69ca\u69cb\u69cc\u69cd\u69ce\u69cf\u69d0\u69d1\u69d2\u69d3\u69d4\u69d5\u69d6\u69d7\u69d8\u69d9\u69da\u69db\u69dc\u69dd\u69de\u69df\u69e0\u69e1\u69e2\u69e3\u69e4\u69e5\u69e6\u69e7\u69e8\u69e9\u69ea\u69eb\u69ec\u69ed\u69ee\u69ef\u69f0\u69f1\u69f2\u69f3\u69f4\u69f5\u69f6\u69f7\u69f8\u69f9\u69fa\u69fb\u69fc\u69fd\u69fe\u69ff\u6a00\u6a01\u6a02\u6a03\u6a04\u6a05\u6a06\u6a07\u6a08\u6a09\u6a0a\u6a0b\u6a0c\u6a0d\u6a0e\u6a0f\u6a10\u6a11\u6a12\u6a13\u6a14\u6a15\u6a16\u6a17\u6a18\u6a19\u6a1a\u6a1b\u6a1c\u6a1d\u6a1e\u6a1f\u6a20\u6a21\u6a22\u6a23\u6a24\u6a25\u6a26\u6a27\u6a28\u6a29\u6a2a\u6a2b\u6a2c\u6a2d\u6a2e\u6a2f\u6a30\u6a31\u6a32\u6a33\u6a34\u6a35\u6a36\u6a37\u6a38\u6a39\u6a3a\u6a3b\u6a3c\u6a3d\u6a3e\u6a3f\u6a40\u6a41\u6a42\u6a43\u6a44\u6a45\u6a46\u6a47\u6a48\u6a49\u6a4a\u6a4b\u6a4c\u6a4d\u6a4e\u6a4f\u6a50\u6a51\u6a52\u6a53\u6a54\u6a55\u6a56\u6a57\u6a58\u6a59\u6a5a\u6a5b\u6a5c\u6a5d\u6a5e\u6a5f\u6a60\u6a61\u6a62\u6a63\u6a64\u6a65\u6a66\u6a67\u6a68\u6a69\u6a6a\u6a6b\u6a6c\u6a6d\u6a6e\u6a6f\u6a70\u6a71\u6a72\u6a73\u6a74\u6a75\u6a76\u6a77\u6a78\u6a79\u6a7a\u6a7b\u6a7c\u6a7d\u6a7e\u6a7f\u6a80\u6a81\u6a82\u6a83\u6a84\u6a85\u6a86\u6a87\u6a88\u6a89\u6a8a\u6a8b\u6a8c\u6a8d\u6a8e\u6a8f\u6a90\u6a91\u6a92\u6a93\u6a94\u6a95\u6a96\u6a97\u6a98\u6a99\u6a9a\u6a9b\u6a9c\u6a9d\u6a9e\u6a9f\u6aa0\u6aa1\u6aa2\u6aa3\u6aa4\u6aa5\u6aa6\u6aa7\u6aa8\u6aa9\u6aaa\u6aab\u6aac\u6aad\u6aae\u6aaf\u6ab0\u6ab1\u6ab2\u6ab3\u6ab4\u6ab5\u6ab6\u6ab7\u6ab8\u6ab9\u6aba\u6abb\u6abc\u6abd\u6abe\u6abf\u6ac0\u6ac1\u6ac2\u6ac3\u6ac4\u6ac5\u6ac6\u6ac7\u6ac8\u6ac9\u6aca\u6acb\u6acc\u6acd\u6ace\u6acf\u6ad0\u6ad1\u6ad2\u6ad3\u6ad4\u6ad5\u6ad6\u6ad7\u6ad8\u6ad9\u6ada\u6adb\u6adc\u6add\u6ade\u6adf\u6ae0\u6ae1\u6ae2\u6ae3\u6ae4\u6ae5\u6ae6\u6ae7\u6ae8\u6ae9\u6aea\u6aeb\u6aec\u6aed\u6aee\u6aef\u6af0\u6af1\u6af2\u6af3\u6af4\u6af5\u6af6\u6af7\u6af8\u6af9\u6afa\u6afb\u6afc\u6afd\u6afe\u6aff\u6b00\u6b01\u6b02\u6b03\u6b04\u6b05\u6b06\u6b07\u6b08\u6b09\u6b0a\u6b0b\u6b0c\u6b0d\u6b0e\u6b0f\u6b10\u6b11\u6b12\u6b13\u6b14\u6b15\u6b16\u6b17\u6b18\u6b19\u6b1a\u6b1b\u6b1c\u6b1d\u6b1e\u6b1f\u6b20\u6b21\u6b22\u6b23\u6b24\u6b25\u6b26\u6b27\u6b28\u6b29\u6b2a\u6b2b\u6b2c\u6b2d\u6b2e\u6b2f\u6b30\u6b31\u6b32\u6b33\u6b34\u6b35\u6b36\u6b37\u6b38\u6b39\u6b3a\u6b3b\u6b3c\u6b3d\u6b3e\u6b3f\u6b40\u6b41\u6b42\u6b43\u6b44\u6b45\u6b46\u6b47\u6b48\u6b49\u6b4a\u6b4b\u6b4c\u6b4d\u6b4e\u6b4f\u6b50\u6b51\u6b52\u6b53\u6b54\u6b55\u6b56\u6b57\u6b58\u6b59\u6b5a\u6b5b\u6b5c\u6b5d\u6b5e\u6b5f\u6b60\u6b61\u6b62\u6b63\u6b64\u6b65\u6b66\u6b67\u6b68\u6b69\u6b6a\u6b6b\u6b6c\u6b6d\u6b6e\u6b6f\u6b70\u6b71\u6b72\u6b73\u6b74\u6b75\u6b76\u6b77\u6b78\u6b79\u6b7a\u6b7b\u6b7c\u6b7d\u6b7e\u6b7f\u6b80\u6b81\u6b82\u6b83\u6b84\u6b85\u6b86\u6b87\u6b88\u6b89\u6b8a\u6b8b\u6b8c\u6b8d\u6b8e\u6b8f\u6b90\u6b91\u6b92\u6b93\u6b94\u6b95\u6b96\u6b97\u6b98\u6b99\u6b9a\u6b9b\u6b9c\u6b9d\u6b9e\u6b9f\u6ba0\u6ba1\u6ba2\u6ba3\u6ba4\u6ba5\u6ba6\u6ba7\u6ba8\u6ba9\u6baa\u6bab\u6bac\u6bad\u6bae\u6baf\u6bb0\u6bb1\u6bb2\u6bb3\u6bb4\u6bb5\u6bb6\u6bb7\u6bb8\u6bb9\u6bba\u6bbb\u6bbc\u6bbd\u6bbe\u6bbf\u6bc0\u6bc1\u6bc2\u6bc3\u6bc4\u6bc5\u6bc6\u6bc7\u6bc8\u6bc9\u6bca\u6bcb\u6bcc\u6bcd\u6bce\u6bcf\u6bd0\u6bd1\u6bd2\u6bd3\u6bd4\u6bd5\u6bd6\u6bd7\u6bd8\u6bd9\u6bda\u6bdb\u6bdc\u6bdd\u6bde\u6bdf\u6be0\u6be1\u6be2\u6be3\u6be4\u6be5\u6be6\u6be7\u6be8\u6be9\u6bea\u6beb\u6bec\u6bed\u6bee\u6bef\u6bf0\u6bf1\u6bf2\u6bf3\u6bf4\u6bf5\u6bf6\u6bf7\u6bf8\u6bf9\u6bfa\u6bfb\u6bfc\u6bfd\u6bfe\u6bff\u6c00\u6c01\u6c02\u6c03\u6c04\u6c05\u6c06\u6c07\u6c08\u6c09\u6c0a\u6c0b\u6c0c\u6c0d\u6c0e\u6c0f\u6c10\u6c11\u6c12\u6c13\u6c14\u6c15\u6c16\u6c17\u6c18\u6c19\u6c1a\u6c1b\u6c1c\u6c1d\u6c1e\u6c1f\u6c20\u6c21\u6c22\u6c23\u6c24\u6c25\u6c26\u6c27\u6c28\u6c29\u6c2a\u6c2b\u6c2c\u6c2d\u6c2e\u6c2f\u6c30\u6c31\u6c32\u6c33\u6c34\u6c35\u6c36\u6c37\u6c38\u6c39\u6c3a\u6c3b\u6c3c\u6c3d\u6c3e\u6c3f\u6c40\u6c41\u6c42\u6c43\u6c44\u6c45\u6c46\u6c47\u6c48\u6c49\u6c4a\u6c4b\u6c4c\u6c4d\u6c4e\u6c4f\u6c50\u6c51\u6c52\u6c53\u6c54\u6c55\u6c56\u6c57\u6c58\u6c59\u6c5a\u6c5b\u6c5c\u6c5d\u6c5e\u6c5f\u6c60\u6c61\u6c62\u6c63\u6c64\u6c65\u6c66\u6c67\u6c68\u6c69\u6c6a\u6c6b\u6c6c\u6c6d\u6c6e\u6c6f\u6c70\u6c71\u6c72\u6c73\u6c74\u6c75\u6c76\u6c77\u6c78\u6c79\u6c7a\u6c7b\u6c7c\u6c7d\u6c7e\u6c7f\u6c80\u6c81\u6c82\u6c83\u6c84\u6c85\u6c86\u6c87\u6c88\u6c89\u6c8a\u6c8b\u6c8c\u6c8d\u6c8e\u6c8f\u6c90\u6c91\u6c92\u6c93\u6c94\u6c95\u6c96\u6c97\u6c98\u6c99\u6c9a\u6c9b\u6c9c\u6c9d\u6c9e\u6c9f\u6ca0\u6ca1\u6ca2\u6ca3\u6ca4\u6ca5\u6ca6\u6ca7\u6ca8\u6ca9\u6caa\u6cab\u6cac\u6cad\u6cae\u6caf\u6cb0\u6cb1\u6cb2\u6cb3\u6cb4\u6cb5\u6cb6\u6cb7\u6cb8\u6cb9\u6cba\u6cbb\u6cbc\u6cbd\u6cbe\u6cbf\u6cc0\u6cc1\u6cc2\u6cc3\u6cc4\u6cc5\u6cc6\u6cc7\u6cc8\u6cc9\u6cca\u6ccb\u6ccc\u6ccd\u6cce\u6ccf\u6cd0\u6cd1\u6cd2\u6cd3\u6cd4\u6cd5\u6cd6\u6cd7\u6cd8\u6cd9\u6cda\u6cdb\u6cdc\u6cdd\u6cde\u6cdf\u6ce0\u6ce1\u6ce2\u6ce3\u6ce4\u6ce5\u6ce6\u6ce7\u6ce8\u6ce9\u6cea\u6ceb\u6cec\u6ced\u6cee\u6cef\u6cf0\u6cf1\u6cf2\u6cf3\u6cf4\u6cf5\u6cf6\u6cf7\u6cf8\u6cf9\u6cfa\u6cfb\u6cfc\u6cfd\u6cfe\u6cff\u6d00\u6d01\u6d02\u6d03\u6d04\u6d05\u6d06\u6d07\u6d08\u6d09\u6d0a\u6d0b\u6d0c\u6d0d\u6d0e\u6d0f\u6d10\u6d11\u6d12\u6d13\u6d14\u6d15\u6d16\u6d17\u6d18\u6d19\u6d1a\u6d1b\u6d1c\u6d1d\u6d1e\u6d1f\u6d20\u6d21\u6d22\u6d23\u6d24\u6d25\u6d26\u6d27\u6d28\u6d29\u6d2a\u6d2b\u6d2c\u6d2d\u6d2e\u6d2f\u6d30\u6d31\u6d32\u6d33\u6d34\u6d35\u6d36\u6d37\u6d38\u6d39\u6d3a\u6d3b\u6d3c\u6d3d\u6d3e\u6d3f\u6d40\u6d41\u6d42\u6d43\u6d44\u6d45\u6d46\u6d47\u6d48\u6d49\u6d4a\u6d4b\u6d4c\u6d4d\u6d4e\u6d4f\u6d50\u6d51\u6d52\u6d53\u6d54\u6d55\u6d56\u6d57\u6d58\u6d59\u6d5a\u6d5b\u6d5c\u6d5d\u6d5e\u6d5f\u6d60\u6d61\u6d62\u6d63\u6d64\u6d65\u6d66\u6d67\u6d68\u6d69\u6d6a\u6d6b\u6d6c\u6d6d\u6d6e\u6d6f\u6d70\u6d71\u6d72\u6d73\u6d74\u6d75\u6d76\u6d77\u6d78\u6d79\u6d7a\u6d7b\u6d7c\u6d7d\u6d7e\u6d7f\u6d80\u6d81\u6d82\u6d83\u6d84\u6d85\u6d86\u6d87\u6d88\u6d89\u6d8a\u6d8b\u6d8c\u6d8d\u6d8e\u6d8f\u6d90\u6d91\u6d92\u6d93\u6d94\u6d95\u6d96\u6d97\u6d98\u6d99\u6d9a\u6d9b\u6d9c\u6d9d\u6d9e\u6d9f\u6da0\u6da1\u6da2\u6da3\u6da4\u6da5\u6da6\u6da7\u6da8\u6da9\u6daa\u6dab\u6dac\u6dad\u6dae\u6daf\u6db0\u6db1\u6db2\u6db3\u6db4\u6db5\u6db6\u6db7\u6db8\u6db9\u6dba\u6dbb\u6dbc\u6dbd\u6dbe\u6dbf\u6dc0\u6dc1\u6dc2\u6dc3\u6dc4\u6dc5\u6dc6\u6dc7\u6dc8\u6dc9\u6dca\u6dcb\u6dcc\u6dcd\u6dce\u6dcf\u6dd0\u6dd1\u6dd2\u6dd3\u6dd4\u6dd5\u6dd6\u6dd7\u6dd8\u6dd9\u6dda\u6ddb\u6ddc\u6ddd\u6dde\u6ddf\u6de0\u6de1\u6de2\u6de3\u6de4\u6de5\u6de6\u6de7\u6de8\u6de9\u6dea\u6deb\u6dec\u6ded\u6dee\u6def\u6df0\u6df1\u6df2\u6df3\u6df4\u6df5\u6df6\u6df7\u6df8\u6df9\u6dfa\u6dfb\u6dfc\u6dfd\u6dfe\u6dff\u6e00\u6e01\u6e02\u6e03\u6e04\u6e05\u6e06\u6e07\u6e08\u6e09\u6e0a\u6e0b\u6e0c\u6e0d\u6e0e\u6e0f\u6e10\u6e11\u6e12\u6e13\u6e14\u6e15\u6e16\u6e17\u6e18\u6e19\u6e1a\u6e1b\u6e1c\u6e1d\u6e1e\u6e1f\u6e20\u6e21\u6e22\u6e23\u6e24\u6e25\u6e26\u6e27\u6e28\u6e29\u6e2a\u6e2b\u6e2c\u6e2d\u6e2e\u6e2f\u6e30\u6e31\u6e32\u6e33\u6e34\u6e35\u6e36\u6e37\u6e38\u6e39\u6e3a\u6e3b\u6e3c\u6e3d\u6e3e\u6e3f\u6e40\u6e41\u6e42\u6e43\u6e44\u6e45\u6e46\u6e47\u6e48\u6e49\u6e4a\u6e4b\u6e4c\u6e4d\u6e4e\u6e4f\u6e50\u6e51\u6e52\u6e53\u6e54\u6e55\u6e56\u6e57\u6e58\u6e59\u6e5a\u6e5b\u6e5c\u6e5d\u6e5e\u6e5f\u6e60\u6e61\u6e62\u6e63\u6e64\u6e65\u6e66\u6e67\u6e68\u6e69\u6e6a\u6e6b\u6e6c\u6e6d\u6e6e\u6e6f\u6e70\u6e71\u6e72\u6e73\u6e74\u6e75\u6e76\u6e77\u6e78\u6e79\u6e7a\u6e7b\u6e7c\u6e7d\u6e7e\u6e7f\u6e80\u6e81\u6e82\u6e83\u6e84\u6e85\u6e86\u6e87\u6e88\u6e89\u6e8a\u6e8b\u6e8c\u6e8d\u6e8e\u6e8f\u6e90\u6e91\u6e92\u6e93\u6e94\u6e95\u6e96\u6e97\u6e98\u6e99\u6e9a\u6e9b\u6e9c\u6e9d\u6e9e\u6e9f\u6ea0\u6ea1\u6ea2\u6ea3\u6ea4\u6ea5\u6ea6\u6ea7\u6ea8\u6ea9\u6eaa\u6eab\u6eac\u6ead\u6eae\u6eaf\u6eb0\u6eb1\u6eb2\u6eb3\u6eb4\u6eb5\u6eb6\u6eb7\u6eb8\u6eb9\u6eba\u6ebb\u6ebc\u6ebd\u6ebe\u6ebf\u6ec0\u6ec1\u6ec2\u6ec3\u6ec4\u6ec5\u6ec6\u6ec7\u6ec8\u6ec9\u6eca\u6ecb\u6ecc\u6ecd\u6ece\u6ecf\u6ed0\u6ed1\u6ed2\u6ed3\u6ed4\u6ed5\u6ed6\u6ed7\u6ed8\u6ed9\u6eda\u6edb\u6edc\u6edd\u6ede\u6edf\u6ee0\u6ee1\u6ee2\u6ee3\u6ee4\u6ee5\u6ee6\u6ee7\u6ee8\u6ee9\u6eea\u6eeb\u6eec\u6eed\u6eee\u6eef\u6ef0\u6ef1\u6ef2\u6ef3\u6ef4\u6ef5\u6ef6\u6ef7\u6ef8\u6ef9\u6efa\u6efb\u6efc\u6efd\u6efe\u6eff\u6f00\u6f01\u6f02\u6f03\u6f04\u6f05\u6f06\u6f07\u6f08\u6f09\u6f0a\u6f0b\u6f0c\u6f0d\u6f0e\u6f0f\u6f10\u6f11\u6f12\u6f13\u6f14\u6f15\u6f16\u6f17\u6f18\u6f19\u6f1a\u6f1b\u6f1c\u6f1d\u6f1e\u6f1f\u6f20\u6f21\u6f22\u6f23\u6f24\u6f25\u6f26\u6f27\u6f28\u6f29\u6f2a\u6f2b\u6f2c\u6f2d\u6f2e\u6f2f\u6f30\u6f31\u6f32\u6f33\u6f34\u6f35\u6f36\u6f37\u6f38\u6f39\u6f3a\u6f3b\u6f3c\u6f3d\u6f3e\u6f3f\u6f40\u6f41\u6f42\u6f43\u6f44\u6f45\u6f46\u6f47\u6f48\u6f49\u6f4a\u6f4b\u6f4c\u6f4d\u6f4e\u6f4f\u6f50\u6f51\u6f52\u6f53\u6f54\u6f55\u6f56\u6f57\u6f58\u6f59\u6f5a\u6f5b\u6f5c\u6f5d\u6f5e\u6f5f\u6f60\u6f61\u6f62\u6f63\u6f64\u6f65\u6f66\u6f67\u6f68\u6f69\u6f6a\u6f6b\u6f6c\u6f6d\u6f6e\u6f6f\u6f70\u6f71\u6f72\u6f73\u6f74\u6f75\u6f76\u6f77\u6f78\u6f79\u6f7a\u6f7b\u6f7c\u6f7d\u6f7e\u6f7f\u6f80\u6f81\u6f82\u6f83\u6f84\u6f85\u6f86\u6f87\u6f88\u6f89\u6f8a\u6f8b\u6f8c\u6f8d\u6f8e\u6f8f\u6f90\u6f91\u6f92\u6f93\u6f94\u6f95\u6f96\u6f97\u6f98\u6f99\u6f9a\u6f9b\u6f9c\u6f9d\u6f9e\u6f9f\u6fa0\u6fa1\u6fa2\u6fa3\u6fa4\u6fa5\u6fa6\u6fa7\u6fa8\u6fa9\u6faa\u6fab\u6fac\u6fad\u6fae\u6faf\u6fb0\u6fb1\u6fb2\u6fb3\u6fb4\u6fb5\u6fb6\u6fb7\u6fb8\u6fb9\u6fba\u6fbb\u6fbc\u6fbd\u6fbe\u6fbf\u6fc0\u6fc1\u6fc2\u6fc3\u6fc4\u6fc5\u6fc6\u6fc7\u6fc8\u6fc9\u6fca\u6fcb\u6fcc\u6fcd\u6fce\u6fcf\u6fd0\u6fd1\u6fd2\u6fd3\u6fd4\u6fd5\u6fd6\u6fd7\u6fd8\u6fd9\u6fda\u6fdb\u6fdc\u6fdd\u6fde\u6fdf\u6fe0\u6fe1\u6fe2\u6fe3\u6fe4\u6fe5\u6fe6\u6fe7\u6fe8\u6fe9\u6fea\u6feb\u6fec\u6fed\u6fee\u6fef\u6ff0\u6ff1\u6ff2\u6ff3\u6ff4\u6ff5\u6ff6\u6ff7\u6ff8\u6ff9\u6ffa\u6ffb\u6ffc\u6ffd\u6ffe\u6fff\u7000\u7001\u7002\u7003\u7004\u7005\u7006\u7007\u7008\u7009\u700a\u700b\u700c\u700d\u700e\u700f\u7010\u7011\u7012\u7013\u7014\u7015\u7016\u7017\u7018\u7019\u701a\u701b\u701c\u701d\u701e\u701f\u7020\u7021\u7022\u7023\u7024\u7025\u7026\u7027\u7028\u7029\u702a\u702b\u702c\u702d\u702e\u702f\u7030\u7031\u7032\u7033\u7034\u7035\u7036\u7037\u7038\u7039\u703a\u703b\u703c\u703d\u703e\u703f\u7040\u7041\u7042\u7043\u7044\u7045\u7046\u7047\u7048\u7049\u704a\u704b\u704c\u704d\u704e\u704f\u7050\u7051\u7052\u7053\u7054\u7055\u7056\u7057\u7058\u7059\u705a\u705b\u705c\u705d\u705e\u705f\u7060\u7061\u7062\u7063\u7064\u7065\u7066\u7067\u7068\u7069\u706a\u706b\u706c\u706d\u706e\u706f\u7070\u7071\u7072\u7073\u7074\u7075\u7076\u7077\u7078\u7079\u707a\u707b\u707c\u707d\u707e\u707f\u7080\u7081\u7082\u7083\u7084\u7085\u7086\u7087\u7088\u7089\u708a\u708b\u708c\u708d\u708e\u708f\u7090\u7091\u7092\u7093\u7094\u7095\u7096\u7097\u7098\u7099\u709a\u709b\u709c\u709d\u709e\u709f\u70a0\u70a1\u70a2\u70a3\u70a4\u70a5\u70a6\u70a7\u70a8\u70a9\u70aa\u70ab\u70ac\u70ad\u70ae\u70af\u70b0\u70b1\u70b2\u70b3\u70b4\u70b5\u70b6\u70b7\u70b8\u70b9\u70ba\u70bb\u70bc\u70bd\u70be\u70bf\u70c0\u70c1\u70c2\u70c3\u70c4\u70c5\u70c6\u70c7\u70c8\u70c9\u70ca\u70cb\u70cc\u70cd\u70ce\u70cf\u70d0\u70d1\u70d2\u70d3\u70d4\u70d5\u70d6\u70d7\u70d8\u70d9\u70da\u70db\u70dc\u70dd\u70de\u70df\u70e0\u70e1\u70e2\u70e3\u70e4\u70e5\u70e6\u70e7\u70e8\u70e9\u70ea\u70eb\u70ec\u70ed\u70ee\u70ef\u70f0\u70f1\u70f2\u70f3\u70f4\u70f5\u70f6\u70f7\u70f8\u70f9\u70fa\u70fb\u70fc\u70fd\u70fe\u70ff\u7100\u7101\u7102\u7103\u7104\u7105\u7106\u7107\u7108\u7109\u710a\u710b\u710c\u710d\u710e\u710f\u7110\u7111\u7112\u7113\u7114\u7115\u7116\u7117\u7118\u7119\u711a\u711b\u711c\u711d\u711e\u711f\u7120\u7121\u7122\u7123\u7124\u7125\u7126\u7127\u7128\u7129\u712a\u712b\u712c\u712d\u712e\u712f\u7130\u7131\u7132\u7133\u7134\u7135\u7136\u7137\u7138\u7139\u713a\u713b\u713c\u713d\u713e\u713f\u7140\u7141\u7142\u7143\u7144\u7145\u7146\u7147\u7148\u7149\u714a\u714b\u714c\u714d\u714e\u714f\u7150\u7151\u7152\u7153\u7154\u7155\u7156\u7157\u7158\u7159\u715a\u715b\u715c\u715d\u715e\u715f\u7160\u7161\u7162\u7163\u7164\u7165\u7166\u7167\u7168\u7169\u716a\u716b\u716c\u716d\u716e\u716f\u7170\u7171\u7172\u7173\u7174\u7175\u7176\u7177\u7178\u7179\u717a\u717b\u717c\u717d\u717e\u717f\u7180\u7181\u7182\u7183\u7184\u7185\u7186\u7187\u7188\u7189\u718a\u718b\u718c\u718d\u718e\u718f\u7190\u7191\u7192\u7193\u7194\u7195\u7196\u7197\u7198\u7199\u719a\u719b\u719c\u719d\u719e\u719f\u71a0\u71a1\u71a2\u71a3\u71a4\u71a5\u71a6\u71a7\u71a8\u71a9\u71aa\u71ab\u71ac\u71ad\u71ae\u71af\u71b0\u71b1\u71b2\u71b3\u71b4\u71b5\u71b6\u71b7\u71b8\u71b9\u71ba\u71bb\u71bc\u71bd\u71be\u71bf\u71c0\u71c1\u71c2\u71c3\u71c4\u71c5\u71c6\u71c7\u71c8\u71c9\u71ca\u71cb\u71cc\u71cd\u71ce\u71cf\u71d0\u71d1\u71d2\u71d3\u71d4\u71d5\u71d6\u71d7\u71d8\u71d9\u71da\u71db\u71dc\u71dd\u71de\u71df\u71e0\u71e1\u71e2\u71e3\u71e4\u71e5\u71e6\u71e7\u71e8\u71e9\u71ea\u71eb\u71ec\u71ed\u71ee\u71ef\u71f0\u71f1\u71f2\u71f3\u71f4\u71f5\u71f6\u71f7\u71f8\u71f9\u71fa\u71fb\u71fc\u71fd\u71fe\u71ff\u7200\u7201\u7202\u7203\u7204\u7205\u7206\u7207\u7208\u7209\u720a\u720b\u720c\u720d\u720e\u720f\u7210\u7211\u7212\u7213\u7214\u7215\u7216\u7217\u7218\u7219\u721a\u721b\u721c\u721d\u721e\u721f\u7220\u7221\u7222\u7223\u7224\u7225\u7226\u7227\u7228\u7229\u722a\u722b\u722c\u722d\u722e\u722f\u7230\u7231\u7232\u7233\u7234\u7235\u7236\u7237\u7238\u7239\u723a\u723b\u723c\u723d\u723e\u723f\u7240\u7241\u7242\u7243\u7244\u7245\u7246\u7247\u7248\u7249\u724a\u724b\u724c\u724d\u724e\u724f\u7250\u7251\u7252\u7253\u7254\u7255\u7256\u7257\u7258\u7259\u725a\u725b\u725c\u725d\u725e\u725f\u7260\u7261\u7262\u7263\u7264\u7265\u7266\u7267\u7268\u7269\u726a\u726b\u726c\u726d\u726e\u726f\u7270\u7271\u7272\u7273\u7274\u7275\u7276\u7277\u7278\u7279\u727a\u727b\u727c\u727d\u727e\u727f\u7280\u7281\u7282\u7283\u7284\u7285\u7286\u7287\u7288\u7289\u728a\u728b\u728c\u728d\u728e\u728f\u7290\u7291\u7292\u7293\u7294\u7295\u7296\u7297\u7298\u7299\u729a\u729b\u729c\u729d\u729e\u729f\u72a0\u72a1\u72a2\u72a3\u72a4\u72a5\u72a6\u72a7\u72a8\u72a9\u72aa\u72ab\u72ac\u72ad\u72ae\u72af\u72b0\u72b1\u72b2\u72b3\u72b4\u72b5\u72b6\u72b7\u72b8\u72b9\u72ba\u72bb\u72bc\u72bd\u72be\u72bf\u72c0\u72c1\u72c2\u72c3\u72c4\u72c5\u72c6\u72c7\u72c8\u72c9\u72ca\u72cb\u72cc\u72cd\u72ce\u72cf\u72d0\u72d1\u72d2\u72d3\u72d4\u72d5\u72d6\u72d7\u72d8\u72d9\u72da\u72db\u72dc\u72dd\u72de\u72df\u72e0\u72e1\u72e2\u72e3\u72e4\u72e5\u72e6\u72e7\u72e8\u72e9\u72ea\u72eb\u72ec\u72ed\u72ee\u72ef\u72f0\u72f1\u72f2\u72f3\u72f4\u72f5\u72f6\u72f7\u72f8\u72f9\u72fa\u72fb\u72fc\u72fd\u72fe\u72ff\u7300\u7301\u7302\u7303\u7304\u7305\u7306\u7307\u7308\u7309\u730a\u730b\u730c\u730d\u730e\u730f\u7310\u7311\u7312\u7313\u7314\u7315\u7316\u7317\u7318\u7319\u731a\u731b\u731c\u731d\u731e\u731f\u7320\u7321\u7322\u7323\u7324\u7325\u7326\u7327\u7328\u7329\u732a\u732b\u732c\u732d\u732e\u732f\u7330\u7331\u7332\u7333\u7334\u7335\u7336\u7337\u7338\u7339\u733a\u733b\u733c\u733d\u733e\u733f\u7340\u7341\u7342\u7343\u7344\u7345\u7346\u7347\u7348\u7349\u734a\u734b\u734c\u734d\u734e\u734f\u7350\u7351\u7352\u7353\u7354\u7355\u7356\u7357\u7358\u7359\u735a\u735b\u735c\u735d\u735e\u735f\u7360\u7361\u7362\u7363\u7364\u7365\u7366\u7367\u7368\u7369\u736a\u736b\u736c\u736d\u736e\u736f\u7370\u7371\u7372\u7373\u7374\u7375\u7376\u7377\u7378\u7379\u737a\u737b\u737c\u737d\u737e\u737f\u7380\u7381\u7382\u7383\u7384\u7385\u7386\u7387\u7388\u7389\u738a\u738b\u738c\u738d\u738e\u738f\u7390\u7391\u7392\u7393\u7394\u7395\u7396\u7397\u7398\u7399\u739a\u739b\u739c\u739d\u739e\u739f\u73a0\u73a1\u73a2\u73a3\u73a4\u73a5\u73a6\u73a7\u73a8\u73a9\u73aa\u73ab\u73ac\u73ad\u73ae\u73af\u73b0\u73b1\u73b2\u73b3\u73b4\u73b5\u73b6\u73b7\u73b8\u73b9\u73ba\u73bb\u73bc\u73bd\u73be\u73bf\u73c0\u73c1\u73c2\u73c3\u73c4\u73c5\u73c6\u73c7\u73c8\u73c9\u73ca\u73cb\u73cc\u73cd\u73ce\u73cf\u73d0\u73d1\u73d2\u73d3\u73d4\u73d5\u73d6\u73d7\u73d8\u73d9\u73da\u73db\u73dc\u73dd\u73de\u73df\u73e0\u73e1\u73e2\u73e3\u73e4\u73e5\u73e6\u73e7\u73e8\u73e9\u73ea\u73eb\u73ec\u73ed\u73ee\u73ef\u73f0\u73f1\u73f2\u73f3\u73f4\u73f5\u73f6\u73f7\u73f8\u73f9\u73fa\u73fb\u73fc\u73fd\u73fe\u73ff\u7400\u7401\u7402\u7403\u7404\u7405\u7406\u7407\u7408\u7409\u740a\u740b\u740c\u740d\u740e\u740f\u7410\u7411\u7412\u7413\u7414\u7415\u7416\u7417\u7418\u7419\u741a\u741b\u741c\u741d\u741e\u741f\u7420\u7421\u7422\u7423\u7424\u7425\u7426\u7427\u7428\u7429\u742a\u742b\u742c\u742d\u742e\u742f\u7430\u7431\u7432\u7433\u7434\u7435\u7436\u7437\u7438\u7439\u743a\u743b\u743c\u743d\u743e\u743f\u7440\u7441\u7442\u7443\u7444\u7445\u7446\u7447\u7448\u7449\u744a\u744b\u744c\u744d\u744e\u744f\u7450\u7451\u7452\u7453\u7454\u7455\u7456\u7457\u7458\u7459\u745a\u745b\u745c\u745d\u745e\u745f\u7460\u7461\u7462\u7463\u7464\u7465\u7466\u7467\u7468\u7469\u746a\u746b\u746c\u746d\u746e\u746f\u7470\u7471\u7472\u7473\u7474\u7475\u7476\u7477\u7478\u7479\u747a\u747b\u747c\u747d\u747e\u747f\u7480\u7481\u7482\u7483\u7484\u7485\u7486\u7487\u7488\u7489\u748a\u748b\u748c\u748d\u748e\u748f\u7490\u7491\u7492\u7493\u7494\u7495\u7496\u7497\u7498\u7499\u749a\u749b\u749c\u749d\u749e\u749f\u74a0\u74a1\u74a2\u74a3\u74a4\u74a5\u74a6\u74a7\u74a8\u74a9\u74aa\u74ab\u74ac\u74ad\u74ae\u74af\u74b0\u74b1\u74b2\u74b3\u74b4\u74b5\u74b6\u74b7\u74b8\u74b9\u74ba\u74bb\u74bc\u74bd\u74be\u74bf\u74c0\u74c1\u74c2\u74c3\u74c4\u74c5\u74c6\u74c7\u74c8\u74c9\u74ca\u74cb\u74cc\u74cd\u74ce\u74cf\u74d0\u74d1\u74d2\u74d3\u74d4\u74d5\u74d6\u74d7\u74d8\u74d9\u74da\u74db\u74dc\u74dd\u74de\u74df\u74e0\u74e1\u74e2\u74e3\u74e4\u74e5\u74e6\u74e7\u74e8\u74e9\u74ea\u74eb\u74ec\u74ed\u74ee\u74ef\u74f0\u74f1\u74f2\u74f3\u74f4\u74f5\u74f6\u74f7\u74f8\u74f9\u74fa\u74fb\u74fc\u74fd\u74fe\u74ff\u7500\u7501\u7502\u7503\u7504\u7505\u7506\u7507\u7508\u7509\u750a\u750b\u750c\u750d\u750e\u750f\u7510\u7511\u7512\u7513\u7514\u7515\u7516\u7517\u7518\u7519\u751a\u751b\u751c\u751d\u751e\u751f\u7520\u7521\u7522\u7523\u7524\u7525\u7526\u7527\u7528\u7529\u752a\u752b\u752c\u752d\u752e\u752f\u7530\u7531\u7532\u7533\u7534\u7535\u7536\u7537\u7538\u7539\u753a\u753b\u753c\u753d\u753e\u753f\u7540\u7541\u7542\u7543\u7544\u7545\u7546\u7547\u7548\u7549\u754a\u754b\u754c\u754d\u754e\u754f\u7550\u7551\u7552\u7553\u7554\u7555\u7556\u7557\u7558\u7559\u755a\u755b\u755c\u755d\u755e\u755f\u7560\u7561\u7562\u7563\u7564\u7565\u7566\u7567\u7568\u7569\u756a\u756b\u756c\u756d\u756e\u756f\u7570\u7571\u7572\u7573\u7574\u7575\u7576\u7577\u7578\u7579\u757a\u757b\u757c\u757d\u757e\u757f\u7580\u7581\u7582\u7583\u7584\u7585\u7586\u7587\u7588\u7589\u758a\u758b\u758c\u758d\u758e\u758f\u7590\u7591\u7592\u7593\u7594\u7595\u7596\u7597\u7598\u7599\u759a\u759b\u759c\u759d\u759e\u759f\u75a0\u75a1\u75a2\u75a3\u75a4\u75a5\u75a6\u75a7\u75a8\u75a9\u75aa\u75ab\u75ac\u75ad\u75ae\u75af\u75b0\u75b1\u75b2\u75b3\u75b4\u75b5\u75b6\u75b7\u75b8\u75b9\u75ba\u75bb\u75bc\u75bd\u75be\u75bf\u75c0\u75c1\u75c2\u75c3\u75c4\u75c5\u75c6\u75c7\u75c8\u75c9\u75ca\u75cb\u75cc\u75cd\u75ce\u75cf\u75d0\u75d1\u75d2\u75d3\u75d4\u75d5\u75d6\u75d7\u75d8\u75d9\u75da\u75db\u75dc\u75dd\u75de\u75df\u75e0\u75e1\u75e2\u75e3\u75e4\u75e5\u75e6\u75e7\u75e8\u75e9\u75ea\u75eb\u75ec\u75ed\u75ee\u75ef\u75f0\u75f1\u75f2\u75f3\u75f4\u75f5\u75f6\u75f7\u75f8\u75f9\u75fa\u75fb\u75fc\u75fd\u75fe\u75ff\u7600\u7601\u7602\u7603\u7604\u7605\u7606\u7607\u7608\u7609\u760a\u760b\u760c\u760d\u760e\u760f\u7610\u7611\u7612\u7613\u7614\u7615\u7616\u7617\u7618\u7619\u761a\u761b\u761c\u761d\u761e\u761f\u7620\u7621\u7622\u7623\u7624\u7625\u7626\u7627\u7628\u7629\u762a\u762b\u762c\u762d\u762e\u762f\u7630\u7631\u7632\u7633\u7634\u7635\u7636\u7637\u7638\u7639\u763a\u763b\u763c\u763d\u763e\u763f\u7640\u7641\u7642\u7643\u7644\u7645\u7646\u7647\u7648\u7649\u764a\u764b\u764c\u764d\u764e\u764f\u7650\u7651\u7652\u7653\u7654\u7655\u7656\u7657\u7658\u7659\u765a\u765b\u765c\u765d\u765e\u765f\u7660\u7661\u7662\u7663\u7664\u7665\u7666\u7667\u7668\u7669\u766a\u766b\u766c\u766d\u766e\u766f\u7670\u7671\u7672\u7673\u7674\u7675\u7676\u7677\u7678\u7679\u767a\u767b\u767c\u767d\u767e\u767f\u7680\u7681\u7682\u7683\u7684\u7685\u7686\u7687\u7688\u7689\u768a\u768b\u768c\u768d\u768e\u768f\u7690\u7691\u7692\u7693\u7694\u7695\u7696\u7697\u7698\u7699\u769a\u769b\u769c\u769d\u769e\u769f\u76a0\u76a1\u76a2\u76a3\u76a4\u76a5\u76a6\u76a7\u76a8\u76a9\u76aa\u76ab\u76ac\u76ad\u76ae\u76af\u76b0\u76b1\u76b2\u76b3\u76b4\u76b5\u76b6\u76b7\u76b8\u76b9\u76ba\u76bb\u76bc\u76bd\u76be\u76bf\u76c0\u76c1\u76c2\u76c3\u76c4\u76c5\u76c6\u76c7\u76c8\u76c9\u76ca\u76cb\u76cc\u76cd\u76ce\u76cf\u76d0\u76d1\u76d2\u76d3\u76d4\u76d5\u76d6\u76d7\u76d8\u76d9\u76da\u76db\u76dc\u76dd\u76de\u76df\u76e0\u76e1\u76e2\u76e3\u76e4\u76e5\u76e6\u76e7\u76e8\u76e9\u76ea\u76eb\u76ec\u76ed\u76ee\u76ef\u76f0\u76f1\u76f2\u76f3\u76f4\u76f5\u76f6\u76f7\u76f8\u76f9\u76fa\u76fb\u76fc\u76fd\u76fe\u76ff\u7700\u7701\u7702\u7703\u7704\u7705\u7706\u7707\u7708\u7709\u770a\u770b\u770c\u770d\u770e\u770f\u7710\u7711\u7712\u7713\u7714\u7715\u7716\u7717\u7718\u7719\u771a\u771b\u771c\u771d\u771e\u771f\u7720\u7721\u7722\u7723\u7724\u7725\u7726\u7727\u7728\u7729\u772a\u772b\u772c\u772d\u772e\u772f\u7730\u7731\u7732\u7733\u7734\u7735\u7736\u7737\u7738\u7739\u773a\u773b\u773c\u773d\u773e\u773f\u7740\u7741\u7742\u7743\u7744\u7745\u7746\u7747\u7748\u7749\u774a\u774b\u774c\u774d\u774e\u774f\u7750\u7751\u7752\u7753\u7754\u7755\u7756\u7757\u7758\u7759\u775a\u775b\u775c\u775d\u775e\u775f\u7760\u7761\u7762\u7763\u7764\u7765\u7766\u7767\u7768\u7769\u776a\u776b\u776c\u776d\u776e\u776f\u7770\u7771\u7772\u7773\u7774\u7775\u7776\u7777\u7778\u7779\u777a\u777b\u777c\u777d\u777e\u777f\u7780\u7781\u7782\u7783\u7784\u7785\u7786\u7787\u7788\u7789\u778a\u778b\u778c\u778d\u778e\u778f\u7790\u7791\u7792\u7793\u7794\u7795\u7796\u7797\u7798\u7799\u779a\u779b\u779c\u779d\u779e\u779f\u77a0\u77a1\u77a2\u77a3\u77a4\u77a5\u77a6\u77a7\u77a8\u77a9\u77aa\u77ab\u77ac\u77ad\u77ae\u77af\u77b0\u77b1\u77b2\u77b3\u77b4\u77b5\u77b6\u77b7\u77b8\u77b9\u77ba\u77bb\u77bc\u77bd\u77be\u77bf\u77c0\u77c1\u77c2\u77c3\u77c4\u77c5\u77c6\u77c7\u77c8\u77c9\u77ca\u77cb\u77cc\u77cd\u77ce\u77cf\u77d0\u77d1\u77d2\u77d3\u77d4\u77d5\u77d6\u77d7\u77d8\u77d9\u77da\u77db\u77dc\u77dd\u77de\u77df\u77e0\u77e1\u77e2\u77e3\u77e4\u77e5\u77e6\u77e7\u77e8\u77e9\u77ea\u77eb\u77ec\u77ed\u77ee\u77ef\u77f0\u77f1\u77f2\u77f3\u77f4\u77f5\u77f6\u77f7\u77f8\u77f9\u77fa\u77fb\u77fc\u77fd\u77fe\u77ff\u7800\u7801\u7802\u7803\u7804\u7805\u7806\u7807\u7808\u7809\u780a\u780b\u780c\u780d\u780e\u780f\u7810\u7811\u7812\u7813\u7814\u7815\u7816\u7817\u7818\u7819\u781a\u781b\u781c\u781d\u781e\u781f\u7820\u7821\u7822\u7823\u7824\u7825\u7826\u7827\u7828\u7829\u782a\u782b\u782c\u782d\u782e\u782f\u7830\u7831\u7832\u7833\u7834\u7835\u7836\u7837\u7838\u7839\u783a\u783b\u783c\u783d\u783e\u783f\u7840\u7841\u7842\u7843\u7844\u7845\u7846\u7847\u7848\u7849\u784a\u784b\u784c\u784d\u784e\u784f\u7850\u7851\u7852\u7853\u7854\u7855\u7856\u7857\u7858\u7859\u785a\u785b\u785c\u785d\u785e\u785f\u7860\u7861\u7862\u7863\u7864\u7865\u7866\u7867\u7868\u7869\u786a\u786b\u786c\u786d\u786e\u786f\u7870\u7871\u7872\u7873\u7874\u7875\u7876\u7877\u7878\u7879\u787a\u787b\u787c\u787d\u787e\u787f\u7880\u7881\u7882\u7883\u7884\u7885\u7886\u7887\u7888\u7889\u788a\u788b\u788c\u788d\u788e\u788f\u7890\u7891\u7892\u7893\u7894\u7895\u7896\u7897\u7898\u7899\u789a\u789b\u789c\u789d\u789e\u789f\u78a0\u78a1\u78a2\u78a3\u78a4\u78a5\u78a6\u78a7\u78a8\u78a9\u78aa\u78ab\u78ac\u78ad\u78ae\u78af\u78b0\u78b1\u78b2\u78b3\u78b4\u78b5\u78b6\u78b7\u78b8\u78b9\u78ba\u78bb\u78bc\u78bd\u78be\u78bf\u78c0\u78c1\u78c2\u78c3\u78c4\u78c5\u78c6\u78c7\u78c8\u78c9\u78ca\u78cb\u78cc\u78cd\u78ce\u78cf\u78d0\u78d1\u78d2\u78d3\u78d4\u78d5\u78d6\u78d7\u78d8\u78d9\u78da\u78db\u78dc\u78dd\u78de\u78df\u78e0\u78e1\u78e2\u78e3\u78e4\u78e5\u78e6\u78e7\u78e8\u78e9\u78ea\u78eb\u78ec\u78ed\u78ee\u78ef\u78f0\u78f1\u78f2\u78f3\u78f4\u78f5\u78f6\u78f7\u78f8\u78f9\u78fa\u78fb\u78fc\u78fd\u78fe\u78ff\u7900\u7901\u7902\u7903\u7904\u7905\u7906\u7907\u7908\u7909\u790a\u790b\u790c\u790d\u790e\u790f\u7910\u7911\u7912\u7913\u7914\u7915\u7916\u7917\u7918\u7919\u791a\u791b\u791c\u791d\u791e\u791f\u7920\u7921\u7922\u7923\u7924\u7925\u7926\u7927\u7928\u7929\u792a\u792b\u792c\u792d\u792e\u792f\u7930\u7931\u7932\u7933\u7934\u7935\u7936\u7937\u7938\u7939\u793a\u793b\u793c\u793d\u793e\u793f\u7940\u7941\u7942\u7943\u7944\u7945\u7946\u7947\u7948\u7949\u794a\u794b\u794c\u794d\u794e\u794f\u7950\u7951\u7952\u7953\u7954\u7955\u7956\u7957\u7958\u7959\u795a\u795b\u795c\u795d\u795e\u795f\u7960\u7961\u7962\u7963\u7964\u7965\u7966\u7967\u7968\u7969\u796a\u796b\u796c\u796d\u796e\u796f\u7970\u7971\u7972\u7973\u7974\u7975\u7976\u7977\u7978\u7979\u797a\u797b\u797c\u797d\u797e\u797f\u7980\u7981\u7982\u7983\u7984\u7985\u7986\u7987\u7988\u7989\u798a\u798b\u798c\u798d\u798e\u798f\u7990\u7991\u7992\u7993\u7994\u7995\u7996\u7997\u7998\u7999\u799a\u799b\u799c\u799d\u799e\u799f\u79a0\u79a1\u79a2\u79a3\u79a4\u79a5\u79a6\u79a7\u79a8\u79a9\u79aa\u79ab\u79ac\u79ad\u79ae\u79af\u79b0\u79b1\u79b2\u79b3\u79b4\u79b5\u79b6\u79b7\u79b8\u79b9\u79ba\u79bb\u79bc\u79bd\u79be\u79bf\u79c0\u79c1\u79c2\u79c3\u79c4\u79c5\u79c6\u79c7\u79c8\u79c9\u79ca\u79cb\u79cc\u79cd\u79ce\u79cf\u79d0\u79d1\u79d2\u79d3\u79d4\u79d5\u79d6\u79d7\u79d8\u79d9\u79da\u79db\u79dc\u79dd\u79de\u79df\u79e0\u79e1\u79e2\u79e3\u79e4\u79e5\u79e6\u79e7\u79e8\u79e9\u79ea\u79eb\u79ec\u79ed\u79ee\u79ef\u79f0\u79f1\u79f2\u79f3\u79f4\u79f5\u79f6\u79f7\u79f8\u79f9\u79fa\u79fb\u79fc\u79fd\u79fe\u79ff\u7a00\u7a01\u7a02\u7a03\u7a04\u7a05\u7a06\u7a07\u7a08\u7a09\u7a0a\u7a0b\u7a0c\u7a0d\u7a0e\u7a0f\u7a10\u7a11\u7a12\u7a13\u7a14\u7a15\u7a16\u7a17\u7a18\u7a19\u7a1a\u7a1b\u7a1c\u7a1d\u7a1e\u7a1f\u7a20\u7a21\u7a22\u7a23\u7a24\u7a25\u7a26\u7a27\u7a28\u7a29\u7a2a\u7a2b\u7a2c\u7a2d\u7a2e\u7a2f\u7a30\u7a31\u7a32\u7a33\u7a34\u7a35\u7a36\u7a37\u7a38\u7a39\u7a3a\u7a3b\u7a3c\u7a3d\u7a3e\u7a3f\u7a40\u7a41\u7a42\u7a43\u7a44\u7a45\u7a46\u7a47\u7a48\u7a49\u7a4a\u7a4b\u7a4c\u7a4d\u7a4e\u7a4f\u7a50\u7a51\u7a52\u7a53\u7a54\u7a55\u7a56\u7a57\u7a58\u7a59\u7a5a\u7a5b\u7a5c\u7a5d\u7a5e\u7a5f\u7a60\u7a61\u7a62\u7a63\u7a64\u7a65\u7a66\u7a67\u7a68\u7a69\u7a6a\u7a6b\u7a6c\u7a6d\u7a6e\u7a6f\u7a70\u7a71\u7a72\u7a73\u7a74\u7a75\u7a76\u7a77\u7a78\u7a79\u7a7a\u7a7b\u7a7c\u7a7d\u7a7e\u7a7f\u7a80\u7a81\u7a82\u7a83\u7a84\u7a85\u7a86\u7a87\u7a88\u7a89\u7a8a\u7a8b\u7a8c\u7a8d\u7a8e\u7a8f\u7a90\u7a91\u7a92\u7a93\u7a94\u7a95\u7a96\u7a97\u7a98\u7a99\u7a9a\u7a9b\u7a9c\u7a9d\u7a9e\u7a9f\u7aa0\u7aa1\u7aa2\u7aa3\u7aa4\u7aa5\u7aa6\u7aa7\u7aa8\u7aa9\u7aaa\u7aab\u7aac\u7aad\u7aae\u7aaf\u7ab0\u7ab1\u7ab2\u7ab3\u7ab4\u7ab5\u7ab6\u7ab7\u7ab8\u7ab9\u7aba\u7abb\u7abc\u7abd\u7abe\u7abf\u7ac0\u7ac1\u7ac2\u7ac3\u7ac4\u7ac5\u7ac6\u7ac7\u7ac8\u7ac9\u7aca\u7acb\u7acc\u7acd\u7ace\u7acf\u7ad0\u7ad1\u7ad2\u7ad3\u7ad4\u7ad5\u7ad6\u7ad7\u7ad8\u7ad9\u7ada\u7adb\u7adc\u7add\u7ade\u7adf\u7ae0\u7ae1\u7ae2\u7ae3\u7ae4\u7ae5\u7ae6\u7ae7\u7ae8\u7ae9\u7aea\u7aeb\u7aec\u7aed\u7aee\u7aef\u7af0\u7af1\u7af2\u7af3\u7af4\u7af5\u7af6\u7af7\u7af8\u7af9\u7afa\u7afb\u7afc\u7afd\u7afe\u7aff\u7b00\u7b01\u7b02\u7b03\u7b04\u7b05\u7b06\u7b07\u7b08\u7b09\u7b0a\u7b0b\u7b0c\u7b0d\u7b0e\u7b0f\u7b10\u7b11\u7b12\u7b13\u7b14\u7b15\u7b16\u7b17\u7b18\u7b19\u7b1a\u7b1b\u7b1c\u7b1d\u7b1e\u7b1f\u7b20\u7b21\u7b22\u7b23\u7b24\u7b25\u7b26\u7b27\u7b28\u7b29\u7b2a\u7b2b\u7b2c\u7b2d\u7b2e\u7b2f\u7b30\u7b31\u7b32\u7b33\u7b34\u7b35\u7b36\u7b37\u7b38\u7b39\u7b3a\u7b3b\u7b3c\u7b3d\u7b3e\u7b3f\u7b40\u7b41\u7b42\u7b43\u7b44\u7b45\u7b46\u7b47\u7b48\u7b49\u7b4a\u7b4b\u7b4c\u7b4d\u7b4e\u7b4f\u7b50\u7b51\u7b52\u7b53\u7b54\u7b55\u7b56\u7b57\u7b58\u7b59\u7b5a\u7b5b\u7b5c\u7b5d\u7b5e\u7b5f\u7b60\u7b61\u7b62\u7b63\u7b64\u7b65\u7b66\u7b67\u7b68\u7b69\u7b6a\u7b6b\u7b6c\u7b6d\u7b6e\u7b6f\u7b70\u7b71\u7b72\u7b73\u7b74\u7b75\u7b76\u7b77\u7b78\u7b79\u7b7a\u7b7b\u7b7c\u7b7d\u7b7e\u7b7f\u7b80\u7b81\u7b82\u7b83\u7b84\u7b85\u7b86\u7b87\u7b88\u7b89\u7b8a\u7b8b\u7b8c\u7b8d\u7b8e\u7b8f\u7b90\u7b91\u7b92\u7b93\u7b94\u7b95\u7b96\u7b97\u7b98\u7b99\u7b9a\u7b9b\u7b9c\u7b9d\u7b9e\u7b9f\u7ba0\u7ba1\u7ba2\u7ba3\u7ba4\u7ba5\u7ba6\u7ba7\u7ba8\u7ba9\u7baa\u7bab\u7bac\u7bad\u7bae\u7baf\u7bb0\u7bb1\u7bb2\u7bb3\u7bb4\u7bb5\u7bb6\u7bb7\u7bb8\u7bb9\u7bba\u7bbb\u7bbc\u7bbd\u7bbe\u7bbf\u7bc0\u7bc1\u7bc2\u7bc3\u7bc4\u7bc5\u7bc6\u7bc7\u7bc8\u7bc9\u7bca\u7bcb\u7bcc\u7bcd\u7bce\u7bcf\u7bd0\u7bd1\u7bd2\u7bd3\u7bd4\u7bd5\u7bd6\u7bd7\u7bd8\u7bd9\u7bda\u7bdb\u7bdc\u7bdd\u7bde\u7bdf\u7be0\u7be1\u7be2\u7be3\u7be4\u7be5\u7be6\u7be7\u7be8\u7be9\u7bea\u7beb\u7bec\u7bed\u7bee\u7bef\u7bf0\u7bf1\u7bf2\u7bf3\u7bf4\u7bf5\u7bf6\u7bf7\u7bf8\u7bf9\u7bfa\u7bfb\u7bfc\u7bfd\u7bfe\u7bff\u7c00\u7c01\u7c02\u7c03\u7c04\u7c05\u7c06\u7c07\u7c08\u7c09\u7c0a\u7c0b\u7c0c\u7c0d\u7c0e\u7c0f\u7c10\u7c11\u7c12\u7c13\u7c14\u7c15\u7c16\u7c17\u7c18\u7c19\u7c1a\u7c1b\u7c1c\u7c1d\u7c1e\u7c1f\u7c20\u7c21\u7c22\u7c23\u7c24\u7c25\u7c26\u7c27\u7c28\u7c29\u7c2a\u7c2b\u7c2c\u7c2d\u7c2e\u7c2f\u7c30\u7c31\u7c32\u7c33\u7c34\u7c35\u7c36\u7c37\u7c38\u7c39\u7c3a\u7c3b\u7c3c\u7c3d\u7c3e\u7c3f\u7c40\u7c41\u7c42\u7c43\u7c44\u7c45\u7c46\u7c47\u7c48\u7c49\u7c4a\u7c4b\u7c4c\u7c4d\u7c4e\u7c4f\u7c50\u7c51\u7c52\u7c53\u7c54\u7c55\u7c56\u7c57\u7c58\u7c59\u7c5a\u7c5b\u7c5c\u7c5d\u7c5e\u7c5f\u7c60\u7c61\u7c62\u7c63\u7c64\u7c65\u7c66\u7c67\u7c68\u7c69\u7c6a\u7c6b\u7c6c\u7c6d\u7c6e\u7c6f\u7c70\u7c71\u7c72\u7c73\u7c74\u7c75\u7c76\u7c77\u7c78\u7c79\u7c7a\u7c7b\u7c7c\u7c7d\u7c7e\u7c7f\u7c80\u7c81\u7c82\u7c83\u7c84\u7c85\u7c86\u7c87\u7c88\u7c89\u7c8a\u7c8b\u7c8c\u7c8d\u7c8e\u7c8f\u7c90\u7c91\u7c92\u7c93\u7c94\u7c95\u7c96\u7c97\u7c98\u7c99\u7c9a\u7c9b\u7c9c\u7c9d\u7c9e\u7c9f\u7ca0\u7ca1\u7ca2\u7ca3\u7ca4\u7ca5\u7ca6\u7ca7\u7ca8\u7ca9\u7caa\u7cab\u7cac\u7cad\u7cae\u7caf\u7cb0\u7cb1\u7cb2\u7cb3\u7cb4\u7cb5\u7cb6\u7cb7\u7cb8\u7cb9\u7cba\u7cbb\u7cbc\u7cbd\u7cbe\u7cbf\u7cc0\u7cc1\u7cc2\u7cc3\u7cc4\u7cc5\u7cc6\u7cc7\u7cc8\u7cc9\u7cca\u7ccb\u7ccc\u7ccd\u7cce\u7ccf\u7cd0\u7cd1\u7cd2\u7cd3\u7cd4\u7cd5\u7cd6\u7cd7\u7cd8\u7cd9\u7cda\u7cdb\u7cdc\u7cdd\u7cde\u7cdf\u7ce0\u7ce1\u7ce2\u7ce3\u7ce4\u7ce5\u7ce6\u7ce7\u7ce8\u7ce9\u7cea\u7ceb\u7cec\u7ced\u7cee\u7cef\u7cf0\u7cf1\u7cf2\u7cf3\u7cf4\u7cf5\u7cf6\u7cf7\u7cf8\u7cf9\u7cfa\u7cfb\u7cfc\u7cfd\u7cfe\u7cff\u7d00\u7d01\u7d02\u7d03\u7d04\u7d05\u7d06\u7d07\u7d08\u7d09\u7d0a\u7d0b\u7d0c\u7d0d\u7d0e\u7d0f\u7d10\u7d11\u7d12\u7d13\u7d14\u7d15\u7d16\u7d17\u7d18\u7d19\u7d1a\u7d1b\u7d1c\u7d1d\u7d1e\u7d1f\u7d20\u7d21\u7d22\u7d23\u7d24\u7d25\u7d26\u7d27\u7d28\u7d29\u7d2a\u7d2b\u7d2c\u7d2d\u7d2e\u7d2f\u7d30\u7d31\u7d32\u7d33\u7d34\u7d35\u7d36\u7d37\u7d38\u7d39\u7d3a\u7d3b\u7d3c\u7d3d\u7d3e\u7d3f\u7d40\u7d41\u7d42\u7d43\u7d44\u7d45\u7d46\u7d47\u7d48\u7d49\u7d4a\u7d4b\u7d4c\u7d4d\u7d4e\u7d4f\u7d50\u7d51\u7d52\u7d53\u7d54\u7d55\u7d56\u7d57\u7d58\u7d59\u7d5a\u7d5b\u7d5c\u7d5d\u7d5e\u7d5f\u7d60\u7d61\u7d62\u7d63\u7d64\u7d65\u7d66\u7d67\u7d68\u7d69\u7d6a\u7d6b\u7d6c\u7d6d\u7d6e\u7d6f\u7d70\u7d71\u7d72\u7d73\u7d74\u7d75\u7d76\u7d77\u7d78\u7d79\u7d7a\u7d7b\u7d7c\u7d7d\u7d7e\u7d7f\u7d80\u7d81\u7d82\u7d83\u7d84\u7d85\u7d86\u7d87\u7d88\u7d89\u7d8a\u7d8b\u7d8c\u7d8d\u7d8e\u7d8f\u7d90\u7d91\u7d92\u7d93\u7d94\u7d95\u7d96\u7d97\u7d98\u7d99\u7d9a\u7d9b\u7d9c\u7d9d\u7d9e\u7d9f\u7da0\u7da1\u7da2\u7da3\u7da4\u7da5\u7da6\u7da7\u7da8\u7da9\u7daa\u7dab\u7dac\u7dad\u7dae\u7daf\u7db0\u7db1\u7db2\u7db3\u7db4\u7db5\u7db6\u7db7\u7db8\u7db9\u7dba\u7dbb\u7dbc\u7dbd\u7dbe\u7dbf\u7dc0\u7dc1\u7dc2\u7dc3\u7dc4\u7dc5\u7dc6\u7dc7\u7dc8\u7dc9\u7dca\u7dcb\u7dcc\u7dcd\u7dce\u7dcf\u7dd0\u7dd1\u7dd2\u7dd3\u7dd4\u7dd5\u7dd6\u7dd7\u7dd8\u7dd9\u7dda\u7ddb\u7ddc\u7ddd\u7dde\u7ddf\u7de0\u7de1\u7de2\u7de3\u7de4\u7de5\u7de6\u7de7\u7de8\u7de9\u7dea\u7deb\u7dec\u7ded\u7dee\u7def\u7df0\u7df1\u7df2\u7df3\u7df4\u7df5\u7df6\u7df7\u7df8\u7df9\u7dfa\u7dfb\u7dfc\u7dfd\u7dfe\u7dff\u7e00\u7e01\u7e02\u7e03\u7e04\u7e05\u7e06\u7e07\u7e08\u7e09\u7e0a\u7e0b\u7e0c\u7e0d\u7e0e\u7e0f\u7e10\u7e11\u7e12\u7e13\u7e14\u7e15\u7e16\u7e17\u7e18\u7e19\u7e1a\u7e1b\u7e1c\u7e1d\u7e1e\u7e1f\u7e20\u7e21\u7e22\u7e23\u7e24\u7e25\u7e26\u7e27\u7e28\u7e29\u7e2a\u7e2b\u7e2c\u7e2d\u7e2e\u7e2f\u7e30\u7e31\u7e32\u7e33\u7e34\u7e35\u7e36\u7e37\u7e38\u7e39\u7e3a\u7e3b\u7e3c\u7e3d\u7e3e\u7e3f\u7e40\u7e41\u7e42\u7e43\u7e44\u7e45\u7e46\u7e47\u7e48\u7e49\u7e4a\u7e4b\u7e4c\u7e4d\u7e4e\u7e4f\u7e50\u7e51\u7e52\u7e53\u7e54\u7e55\u7e56\u7e57\u7e58\u7e59\u7e5a\u7e5b\u7e5c\u7e5d\u7e5e\u7e5f\u7e60\u7e61\u7e62\u7e63\u7e64\u7e65\u7e66\u7e67\u7e68\u7e69\u7e6a\u7e6b\u7e6c\u7e6d\u7e6e\u7e6f\u7e70\u7e71\u7e72\u7e73\u7e74\u7e75\u7e76\u7e77\u7e78\u7e79\u7e7a\u7e7b\u7e7c\u7e7d\u7e7e\u7e7f\u7e80\u7e81\u7e82\u7e83\u7e84\u7e85\u7e86\u7e87\u7e88\u7e89\u7e8a\u7e8b\u7e8c\u7e8d\u7e8e\u7e8f\u7e90\u7e91\u7e92\u7e93\u7e94\u7e95\u7e96\u7e97\u7e98\u7e99\u7e9a\u7e9b\u7e9c\u7e9d\u7e9e\u7e9f\u7ea0\u7ea1\u7ea2\u7ea3\u7ea4\u7ea5\u7ea6\u7ea7\u7ea8\u7ea9\u7eaa\u7eab\u7eac\u7ead\u7eae\u7eaf\u7eb0\u7eb1\u7eb2\u7eb3\u7eb4\u7eb5\u7eb6\u7eb7\u7eb8\u7eb9\u7eba\u7ebb\u7ebc\u7ebd\u7ebe\u7ebf\u7ec0\u7ec1\u7ec2\u7ec3\u7ec4\u7ec5\u7ec6\u7ec7\u7ec8\u7ec9\u7eca\u7ecb\u7ecc\u7ecd\u7ece\u7ecf\u7ed0\u7ed1\u7ed2\u7ed3\u7ed4\u7ed5\u7ed6\u7ed7\u7ed8\u7ed9\u7eda\u7edb\u7edc\u7edd\u7ede\u7edf\u7ee0\u7ee1\u7ee2\u7ee3\u7ee4\u7ee5\u7ee6\u7ee7\u7ee8\u7ee9\u7eea\u7eeb\u7eec\u7eed\u7eee\u7eef\u7ef0\u7ef1\u7ef2\u7ef3\u7ef4\u7ef5\u7ef6\u7ef7\u7ef8\u7ef9\u7efa\u7efb\u7efc\u7efd\u7efe\u7eff\u7f00\u7f01\u7f02\u7f03\u7f04\u7f05\u7f06\u7f07\u7f08\u7f09\u7f0a\u7f0b\u7f0c\u7f0d\u7f0e\u7f0f\u7f10\u7f11\u7f12\u7f13\u7f14\u7f15\u7f16\u7f17\u7f18\u7f19\u7f1a\u7f1b\u7f1c\u7f1d\u7f1e\u7f1f\u7f20\u7f21\u7f22\u7f23\u7f24\u7f25\u7f26\u7f27\u7f28\u7f29\u7f2a\u7f2b\u7f2c\u7f2d\u7f2e\u7f2f\u7f30\u7f31\u7f32\u7f33\u7f34\u7f35\u7f36\u7f37\u7f38\u7f39\u7f3a\u7f3b\u7f3c\u7f3d\u7f3e\u7f3f\u7f40\u7f41\u7f42\u7f43\u7f44\u7f45\u7f46\u7f47\u7f48\u7f49\u7f4a\u7f4b\u7f4c\u7f4d\u7f4e\u7f4f\u7f50\u7f51\u7f52\u7f53\u7f54\u7f55\u7f56\u7f57\u7f58\u7f59\u7f5a\u7f5b\u7f5c\u7f5d\u7f5e\u7f5f\u7f60\u7f61\u7f62\u7f63\u7f64\u7f65\u7f66\u7f67\u7f68\u7f69\u7f6a\u7f6b\u7f6c\u7f6d\u7f6e\u7f6f\u7f70\u7f71\u7f72\u7f73\u7f74\u7f75\u7f76\u7f77\u7f78\u7f79\u7f7a\u7f7b\u7f7c\u7f7d\u7f7e\u7f7f\u7f80\u7f81\u7f82\u7f83\u7f84\u7f85\u7f86\u7f87\u7f88\u7f89\u7f8a\u7f8b\u7f8c\u7f8d\u7f8e\u7f8f\u7f90\u7f91\u7f92\u7f93\u7f94\u7f95\u7f96\u7f97\u7f98\u7f99\u7f9a\u7f9b\u7f9c\u7f9d\u7f9e\u7f9f\u7fa0\u7fa1\u7fa2\u7fa3\u7fa4\u7fa5\u7fa6\u7fa7\u7fa8\u7fa9\u7faa\u7fab\u7fac\u7fad\u7fae\u7faf\u7fb0\u7fb1\u7fb2\u7fb3\u7fb4\u7fb5\u7fb6\u7fb7\u7fb8\u7fb9\u7fba\u7fbb\u7fbc\u7fbd\u7fbe\u7fbf\u7fc0\u7fc1\u7fc2\u7fc3\u7fc4\u7fc5\u7fc6\u7fc7\u7fc8\u7fc9\u7fca\u7fcb\u7fcc\u7fcd\u7fce\u7fcf\u7fd0\u7fd1\u7fd2\u7fd3\u7fd4\u7fd5\u7fd6\u7fd7\u7fd8\u7fd9\u7fda\u7fdb\u7fdc\u7fdd\u7fde\u7fdf\u7fe0\u7fe1\u7fe2\u7fe3\u7fe4\u7fe5\u7fe6\u7fe7\u7fe8\u7fe9\u7fea\u7feb\u7fec\u7fed\u7fee\u7fef\u7ff0\u7ff1\u7ff2\u7ff3\u7ff4\u7ff5\u7ff6\u7ff7\u7ff8\u7ff9\u7ffa\u7ffb\u7ffc\u7ffd\u7ffe\u7fff\u8000\u8001\u8002\u8003\u8004\u8005\u8006\u8007\u8008\u8009\u800a\u800b\u800c\u800d\u800e\u800f\u8010\u8011\u8012\u8013\u8014\u8015\u8016\u8017\u8018\u8019\u801a\u801b\u801c\u801d\u801e\u801f\u8020\u8021\u8022\u8023\u8024\u8025\u8026\u8027\u8028\u8029\u802a\u802b\u802c\u802d\u802e\u802f\u8030\u8031\u8032\u8033\u8034\u8035\u8036\u8037\u8038\u8039\u803a\u803b\u803c\u803d\u803e\u803f\u8040\u8041\u8042\u8043\u8044\u8045\u8046\u8047\u8048\u8049\u804a\u804b\u804c\u804d\u804e\u804f\u8050\u8051\u8052\u8053\u8054\u8055\u8056\u8057\u8058\u8059\u805a\u805b\u805c\u805d\u805e\u805f\u8060\u8061\u8062\u8063\u8064\u8065\u8066\u8067\u8068\u8069\u806a\u806b\u806c\u806d\u806e\u806f\u8070\u8071\u8072\u8073\u8074\u8075\u8076\u8077\u8078\u8079\u807a\u807b\u807c\u807d\u807e\u807f\u8080\u8081\u8082\u8083\u8084\u8085\u8086\u8087\u8088\u8089\u808a\u808b\u808c\u808d\u808e\u808f\u8090\u8091\u8092\u8093\u8094\u8095\u8096\u8097\u8098\u8099\u809a\u809b\u809c\u809d\u809e\u809f\u80a0\u80a1\u80a2\u80a3\u80a4\u80a5\u80a6\u80a7\u80a8\u80a9\u80aa\u80ab\u80ac\u80ad\u80ae\u80af\u80b0\u80b1\u80b2\u80b3\u80b4\u80b5\u80b6\u80b7\u80b8\u80b9\u80ba\u80bb\u80bc\u80bd\u80be\u80bf\u80c0\u80c1\u80c2\u80c3\u80c4\u80c5\u80c6\u80c7\u80c8\u80c9\u80ca\u80cb\u80cc\u80cd\u80ce\u80cf\u80d0\u80d1\u80d2\u80d3\u80d4\u80d5\u80d6\u80d7\u80d8\u80d9\u80da\u80db\u80dc\u80dd\u80de\u80df\u80e0\u80e1\u80e2\u80e3\u80e4\u80e5\u80e6\u80e7\u80e8\u80e9\u80ea\u80eb\u80ec\u80ed\u80ee\u80ef\u80f0\u80f1\u80f2\u80f3\u80f4\u80f5\u80f6\u80f7\u80f8\u80f9\u80fa\u80fb\u80fc\u80fd\u80fe\u80ff\u8100\u8101\u8102\u8103\u8104\u8105\u8106\u8107\u8108\u8109\u810a\u810b\u810c\u810d\u810e\u810f\u8110\u8111\u8112\u8113\u8114\u8115\u8116\u8117\u8118\u8119\u811a\u811b\u811c\u811d\u811e\u811f\u8120\u8121\u8122\u8123\u8124\u8125\u8126\u8127\u8128\u8129\u812a\u812b\u812c\u812d\u812e\u812f\u8130\u8131\u8132\u8133\u8134\u8135\u8136\u8137\u8138\u8139\u813a\u813b\u813c\u813d\u813e\u813f\u8140\u8141\u8142\u8143\u8144\u8145\u8146\u8147\u8148\u8149\u814a\u814b\u814c\u814d\u814e\u814f\u8150\u8151\u8152\u8153\u8154\u8155\u8156\u8157\u8158\u8159\u815a\u815b\u815c\u815d\u815e\u815f\u8160\u8161\u8162\u8163\u8164\u8165\u8166\u8167\u8168\u8169\u816a\u816b\u816c\u816d\u816e\u816f\u8170\u8171\u8172\u8173\u8174\u8175\u8176\u8177\u8178\u8179\u817a\u817b\u817c\u817d\u817e\u817f\u8180\u8181\u8182\u8183\u8184\u8185\u8186\u8187\u8188\u8189\u818a\u818b\u818c\u818d\u818e\u818f\u8190\u8191\u8192\u8193\u8194\u8195\u8196\u8197\u8198\u8199\u819a\u819b\u819c\u819d\u819e\u819f\u81a0\u81a1\u81a2\u81a3\u81a4\u81a5\u81a6\u81a7\u81a8\u81a9\u81aa\u81ab\u81ac\u81ad\u81ae\u81af\u81b0\u81b1\u81b2\u81b3\u81b4\u81b5\u81b6\u81b7\u81b8\u81b9\u81ba\u81bb\u81bc\u81bd\u81be\u81bf\u81c0\u81c1\u81c2\u81c3\u81c4\u81c5\u81c6\u81c7\u81c8\u81c9\u81ca\u81cb\u81cc\u81cd\u81ce\u81cf\u81d0\u81d1\u81d2\u81d3\u81d4\u81d5\u81d6\u81d7\u81d8\u81d9\u81da\u81db\u81dc\u81dd\u81de\u81df\u81e0\u81e1\u81e2\u81e3\u81e4\u81e5\u81e6\u81e7\u81e8\u81e9\u81ea\u81eb\u81ec\u81ed\u81ee\u81ef\u81f0\u81f1\u81f2\u81f3\u81f4\u81f5\u81f6\u81f7\u81f8\u81f9\u81fa\u81fb\u81fc\u81fd\u81fe\u81ff\u8200\u8201\u8202\u8203\u8204\u8205\u8206\u8207\u8208\u8209\u820a\u820b\u820c\u820d\u820e\u820f\u8210\u8211\u8212\u8213\u8214\u8215\u8216\u8217\u8218\u8219\u821a\u821b\u821c\u821d\u821e\u821f\u8220\u8221\u8222\u8223\u8224\u8225\u8226\u8227\u8228\u8229\u822a\u822b\u822c\u822d\u822e\u822f\u8230\u8231\u8232\u8233\u8234\u8235\u8236\u8237\u8238\u8239\u823a\u823b\u823c\u823d\u823e\u823f\u8240\u8241\u8242\u8243\u8244\u8245\u8246\u8247\u8248\u8249\u824a\u824b\u824c\u824d\u824e\u824f\u8250\u8251\u8252\u8253\u8254\u8255\u8256\u8257\u8258\u8259\u825a\u825b\u825c\u825d\u825e\u825f\u8260\u8261\u8262\u8263\u8264\u8265\u8266\u8267\u8268\u8269\u826a\u826b\u826c\u826d\u826e\u826f\u8270\u8271\u8272\u8273\u8274\u8275\u8276\u8277\u8278\u8279\u827a\u827b\u827c\u827d\u827e\u827f\u8280\u8281\u8282\u8283\u8284\u8285\u8286\u8287\u8288\u8289\u828a\u828b\u828c\u828d\u828e\u828f\u8290\u8291\u8292\u8293\u8294\u8295\u8296\u8297\u8298\u8299\u829a\u829b\u829c\u829d\u829e\u829f\u82a0\u82a1\u82a2\u82a3\u82a4\u82a5\u82a6\u82a7\u82a8\u82a9\u82aa\u82ab\u82ac\u82ad\u82ae\u82af\u82b0\u82b1\u82b2\u82b3\u82b4\u82b5\u82b6\u82b7\u82b8\u82b9\u82ba\u82bb\u82bc\u82bd\u82be\u82bf\u82c0\u82c1\u82c2\u82c3\u82c4\u82c5\u82c6\u82c7\u82c8\u82c9\u82ca\u82cb\u82cc\u82cd\u82ce\u82cf\u82d0\u82d1\u82d2\u82d3\u82d4\u82d5\u82d6\u82d7\u82d8\u82d9\u82da\u82db\u82dc\u82dd\u82de\u82df\u82e0\u82e1\u82e2\u82e3\u82e4\u82e5\u82e6\u82e7\u82e8\u82e9\u82ea\u82eb\u82ec\u82ed\u82ee\u82ef\u82f0\u82f1\u82f2\u82f3\u82f4\u82f5\u82f6\u82f7\u82f8\u82f9\u82fa\u82fb\u82fc\u82fd\u82fe\u82ff\u8300\u8301\u8302\u8303\u8304\u8305\u8306\u8307\u8308\u8309\u830a\u830b\u830c\u830d\u830e\u830f\u8310\u8311\u8312\u8313\u8314\u8315\u8316\u8317\u8318\u8319\u831a\u831b\u831c\u831d\u831e\u831f\u8320\u8321\u8322\u8323\u8324\u8325\u8326\u8327\u8328\u8329\u832a\u832b\u832c\u832d\u832e\u832f\u8330\u8331\u8332\u8333\u8334\u8335\u8336\u8337\u8338\u8339\u833a\u833b\u833c\u833d\u833e\u833f\u8340\u8341\u8342\u8343\u8344\u8345\u8346\u8347\u8348\u8349\u834a\u834b\u834c\u834d\u834e\u834f\u8350\u8351\u8352\u8353\u8354\u8355\u8356\u8357\u8358\u8359\u835a\u835b\u835c\u835d\u835e\u835f\u8360\u8361\u8362\u8363\u8364\u8365\u8366\u8367\u8368\u8369\u836a\u836b\u836c\u836d\u836e\u836f\u8370\u8371\u8372\u8373\u8374\u8375\u8376\u8377\u8378\u8379\u837a\u837b\u837c\u837d\u837e\u837f\u8380\u8381\u8382\u8383\u8384\u8385\u8386\u8387\u8388\u8389\u838a\u838b\u838c\u838d\u838e\u838f\u8390\u8391\u8392\u8393\u8394\u8395\u8396\u8397\u8398\u8399\u839a\u839b\u839c\u839d\u839e\u839f\u83a0\u83a1\u83a2\u83a3\u83a4\u83a5\u83a6\u83a7\u83a8\u83a9\u83aa\u83ab\u83ac\u83ad\u83ae\u83af\u83b0\u83b1\u83b2\u83b3\u83b4\u83b5\u83b6\u83b7\u83b8\u83b9\u83ba\u83bb\u83bc\u83bd\u83be\u83bf\u83c0\u83c1\u83c2\u83c3\u83c4\u83c5\u83c6\u83c7\u83c8\u83c9\u83ca\u83cb\u83cc\u83cd\u83ce\u83cf\u83d0\u83d1\u83d2\u83d3\u83d4\u83d5\u83d6\u83d7\u83d8\u83d9\u83da\u83db\u83dc\u83dd\u83de\u83df\u83e0\u83e1\u83e2\u83e3\u83e4\u83e5\u83e6\u83e7\u83e8\u83e9\u83ea\u83eb\u83ec\u83ed\u83ee\u83ef\u83f0\u83f1\u83f2\u83f3\u83f4\u83f5\u83f6\u83f7\u83f8\u83f9\u83fa\u83fb\u83fc\u83fd\u83fe\u83ff\u8400\u8401\u8402\u8403\u8404\u8405\u8406\u8407\u8408\u8409\u840a\u840b\u840c\u840d\u840e\u840f\u8410\u8411\u8412\u8413\u8414\u8415\u8416\u8417\u8418\u8419\u841a\u841b\u841c\u841d\u841e\u841f\u8420\u8421\u8422\u8423\u8424\u8425\u8426\u8427\u8428\u8429\u842a\u842b\u842c\u842d\u842e\u842f\u8430\u8431\u8432\u8433\u8434\u8435\u8436\u8437\u8438\u8439\u843a\u843b\u843c\u843d\u843e\u843f\u8440\u8441\u8442\u8443\u8444\u8445\u8446\u8447\u8448\u8449\u844a\u844b\u844c\u844d\u844e\u844f\u8450\u8451\u8452\u8453\u8454\u8455\u8456\u8457\u8458\u8459\u845a\u845b\u845c\u845d\u845e\u845f\u8460\u8461\u8462\u8463\u8464\u8465\u8466\u8467\u8468\u8469\u846a\u846b\u846c\u846d\u846e\u846f\u8470\u8471\u8472\u8473\u8474\u8475\u8476\u8477\u8478\u8479\u847a\u847b\u847c\u847d\u847e\u847f\u8480\u8481\u8482\u8483\u8484\u8485\u8486\u8487\u8488\u8489\u848a\u848b\u848c\u848d\u848e\u848f\u8490\u8491\u8492\u8493\u8494\u8495\u8496\u8497\u8498\u8499\u849a\u849b\u849c\u849d\u849e\u849f\u84a0\u84a1\u84a2\u84a3\u84a4\u84a5\u84a6\u84a7\u84a8\u84a9\u84aa\u84ab\u84ac\u84ad\u84ae\u84af\u84b0\u84b1\u84b2\u84b3\u84b4\u84b5\u84b6\u84b7\u84b8\u84b9\u84ba\u84bb\u84bc\u84bd\u84be\u84bf\u84c0\u84c1\u84c2\u84c3\u84c4\u84c5\u84c6\u84c7\u84c8\u84c9\u84ca\u84cb\u84cc\u84cd\u84ce\u84cf\u84d0\u84d1\u84d2\u84d3\u84d4\u84d5\u84d6\u84d7\u84d8\u84d9\u84da\u84db\u84dc\u84dd\u84de\u84df\u84e0\u84e1\u84e2\u84e3\u84e4\u84e5\u84e6\u84e7\u84e8\u84e9\u84ea\u84eb\u84ec\u84ed\u84ee\u84ef\u84f0\u84f1\u84f2\u84f3\u84f4\u84f5\u84f6\u84f7\u84f8\u84f9\u84fa\u84fb\u84fc\u84fd\u84fe\u84ff\u8500\u8501\u8502\u8503\u8504\u8505\u8506\u8507\u8508\u8509\u850a\u850b\u850c\u850d\u850e\u850f\u8510\u8511\u8512\u8513\u8514\u8515\u8516\u8517\u8518\u8519\u851a\u851b\u851c\u851d\u851e\u851f\u8520\u8521\u8522\u8523\u8524\u8525\u8526\u8527\u8528\u8529\u852a\u852b\u852c\u852d\u852e\u852f\u8530\u8531\u8532\u8533\u8534\u8535\u8536\u8537\u8538\u8539\u853a\u853b\u853c\u853d\u853e\u853f\u8540\u8541\u8542\u8543\u8544\u8545\u8546\u8547\u8548\u8549\u854a\u854b\u854c\u854d\u854e\u854f\u8550\u8551\u8552\u8553\u8554\u8555\u8556\u8557\u8558\u8559\u855a\u855b\u855c\u855d\u855e\u855f\u8560\u8561\u8562\u8563\u8564\u8565\u8566\u8567\u8568\u8569\u856a\u856b\u856c\u856d\u856e\u856f\u8570\u8571\u8572\u8573\u8574\u8575\u8576\u8577\u8578\u8579\u857a\u857b\u857c\u857d\u857e\u857f\u8580\u8581\u8582\u8583\u8584\u8585\u8586\u8587\u8588\u8589\u858a\u858b\u858c\u858d\u858e\u858f\u8590\u8591\u8592\u8593\u8594\u8595\u8596\u8597\u8598\u8599\u859a\u859b\u859c\u859d\u859e\u859f\u85a0\u85a1\u85a2\u85a3\u85a4\u85a5\u85a6\u85a7\u85a8\u85a9\u85aa\u85ab\u85ac\u85ad\u85ae\u85af\u85b0\u85b1\u85b2\u85b3\u85b4\u85b5\u85b6\u85b7\u85b8\u85b9\u85ba\u85bb\u85bc\u85bd\u85be\u85bf\u85c0\u85c1\u85c2\u85c3\u85c4\u85c5\u85c6\u85c7\u85c8\u85c9\u85ca\u85cb\u85cc\u85cd\u85ce\u85cf\u85d0\u85d1\u85d2\u85d3\u85d4\u85d5\u85d6\u85d7\u85d8\u85d9\u85da\u85db\u85dc\u85dd\u85de\u85df\u85e0\u85e1\u85e2\u85e3\u85e4\u85e5\u85e6\u85e7\u85e8\u85e9\u85ea\u85eb\u85ec\u85ed\u85ee\u85ef\u85f0\u85f1\u85f2\u85f3\u85f4\u85f5\u85f6\u85f7\u85f8\u85f9\u85fa\u85fb\u85fc\u85fd\u85fe\u85ff\u8600\u8601\u8602\u8603\u8604\u8605\u8606\u8607\u8608\u8609\u860a\u860b\u860c\u860d\u860e\u860f\u8610\u8611\u8612\u8613\u8614\u8615\u8616\u8617\u8618\u8619\u861a\u861b\u861c\u861d\u861e\u861f\u8620\u8621\u8622\u8623\u8624\u8625\u8626\u8627\u8628\u8629\u862a\u862b\u862c\u862d\u862e\u862f\u8630\u8631\u8632\u8633\u8634\u8635\u8636\u8637\u8638\u8639\u863a\u863b\u863c\u863d\u863e\u863f\u8640\u8641\u8642\u8643\u8644\u8645\u8646\u8647\u8648\u8649\u864a\u864b\u864c\u864d\u864e\u864f\u8650\u8651\u8652\u8653\u8654\u8655\u8656\u8657\u8658\u8659\u865a\u865b\u865c\u865d\u865e\u865f\u8660\u8661\u8662\u8663\u8664\u8665\u8666\u8667\u8668\u8669\u866a\u866b\u866c\u866d\u866e\u866f\u8670\u8671\u8672\u8673\u8674\u8675\u8676\u8677\u8678\u8679\u867a\u867b\u867c\u867d\u867e\u867f\u8680\u8681\u8682\u8683\u8684\u8685\u8686\u8687\u8688\u8689\u868a\u868b\u868c\u868d\u868e\u868f\u8690\u8691\u8692\u8693\u8694\u8695\u8696\u8697\u8698\u8699\u869a\u869b\u869c\u869d\u869e\u869f\u86a0\u86a1\u86a2\u86a3\u86a4\u86a5\u86a6\u86a7\u86a8\u86a9\u86aa\u86ab\u86ac\u86ad\u86ae\u86af\u86b0\u86b1\u86b2\u86b3\u86b4\u86b5\u86b6\u86b7\u86b8\u86b9\u86ba\u86bb\u86bc\u86bd\u86be\u86bf\u86c0\u86c1\u86c2\u86c3\u86c4\u86c5\u86c6\u86c7\u86c8\u86c9\u86ca\u86cb\u86cc\u86cd\u86ce\u86cf\u86d0\u86d1\u86d2\u86d3\u86d4\u86d5\u86d6\u86d7\u86d8\u86d9\u86da\u86db\u86dc\u86dd\u86de\u86df\u86e0\u86e1\u86e2\u86e3\u86e4\u86e5\u86e6\u86e7\u86e8\u86e9\u86ea\u86eb\u86ec\u86ed\u86ee\u86ef\u86f0\u86f1\u86f2\u86f3\u86f4\u86f5\u86f6\u86f7\u86f8\u86f9\u86fa\u86fb\u86fc\u86fd\u86fe\u86ff\u8700\u8701\u8702\u8703\u8704\u8705\u8706\u8707\u8708\u8709\u870a\u870b\u870c\u870d\u870e\u870f\u8710\u8711\u8712\u8713\u8714\u8715\u8716\u8717\u8718\u8719\u871a\u871b\u871c\u871d\u871e\u871f\u8720\u8721\u8722\u8723\u8724\u8725\u8726\u8727\u8728\u8729\u872a\u872b\u872c\u872d\u872e\u872f\u8730\u8731\u8732\u8733\u8734\u8735\u8736\u8737\u8738\u8739\u873a\u873b\u873c\u873d\u873e\u873f\u8740\u8741\u8742\u8743\u8744\u8745\u8746\u8747\u8748\u8749\u874a\u874b\u874c\u874d\u874e\u874f\u8750\u8751\u8752\u8753\u8754\u8755\u8756\u8757\u8758\u8759\u875a\u875b\u875c\u875d\u875e\u875f\u8760\u8761\u8762\u8763\u8764\u8765\u8766\u8767\u8768\u8769\u876a\u876b\u876c\u876d\u876e\u876f\u8770\u8771\u8772\u8773\u8774\u8775\u8776\u8777\u8778\u8779\u877a\u877b\u877c\u877d\u877e\u877f\u8780\u8781\u8782\u8783\u8784\u8785\u8786\u8787\u8788\u8789\u878a\u878b\u878c\u878d\u878e\u878f\u8790\u8791\u8792\u8793\u8794\u8795\u8796\u8797\u8798\u8799\u879a\u879b\u879c\u879d\u879e\u879f\u87a0\u87a1\u87a2\u87a3\u87a4\u87a5\u87a6\u87a7\u87a8\u87a9\u87aa\u87ab\u87ac\u87ad\u87ae\u87af\u87b0\u87b1\u87b2\u87b3\u87b4\u87b5\u87b6\u87b7\u87b8\u87b9\u87ba\u87bb\u87bc\u87bd\u87be\u87bf\u87c0\u87c1\u87c2\u87c3\u87c4\u87c5\u87c6\u87c7\u87c8\u87c9\u87ca\u87cb\u87cc\u87cd\u87ce\u87cf\u87d0\u87d1\u87d2\u87d3\u87d4\u87d5\u87d6\u87d7\u87d8\u87d9\u87da\u87db\u87dc\u87dd\u87de\u87df\u87e0\u87e1\u87e2\u87e3\u87e4\u87e5\u87e6\u87e7\u87e8\u87e9\u87ea\u87eb\u87ec\u87ed\u87ee\u87ef\u87f0\u87f1\u87f2\u87f3\u87f4\u87f5\u87f6\u87f7\u87f8\u87f9\u87fa\u87fb\u87fc\u87fd\u87fe\u87ff\u8800\u8801\u8802\u8803\u8804\u8805\u8806\u8807\u8808\u8809\u880a\u880b\u880c\u880d\u880e\u880f\u8810\u8811\u8812\u8813\u8814\u8815\u8816\u8817\u8818\u8819\u881a\u881b\u881c\u881d\u881e\u881f\u8820\u8821\u8822\u8823\u8824\u8825\u8826\u8827\u8828\u8829\u882a\u882b\u882c\u882d\u882e\u882f\u8830\u8831\u8832\u8833\u8834\u8835\u8836\u8837\u8838\u8839\u883a\u883b\u883c\u883d\u883e\u883f\u8840\u8841\u8842\u8843\u8844\u8845\u8846\u8847\u8848\u8849\u884a\u884b\u884c\u884d\u884e\u884f\u8850\u8851\u8852\u8853\u8854\u8855\u8856\u8857\u8858\u8859\u885a\u885b\u885c\u885d\u885e\u885f\u8860\u8861\u8862\u8863\u8864\u8865\u8866\u8867\u8868\u8869\u886a\u886b\u886c\u886d\u886e\u886f\u8870\u8871\u8872\u8873\u8874\u8875\u8876\u8877\u8878\u8879\u887a\u887b\u887c\u887d\u887e\u887f\u8880\u8881\u8882\u8883\u8884\u8885\u8886\u8887\u8888\u8889\u888a\u888b\u888c\u888d\u888e\u888f\u8890\u8891\u8892\u8893\u8894\u8895\u8896\u8897\u8898\u8899\u889a\u889b\u889c\u889d\u889e\u889f\u88a0\u88a1\u88a2\u88a3\u88a4\u88a5\u88a6\u88a7\u88a8\u88a9\u88aa\u88ab\u88ac\u88ad\u88ae\u88af\u88b0\u88b1\u88b2\u88b3\u88b4\u88b5\u88b6\u88b7\u88b8\u88b9\u88ba\u88bb\u88bc\u88bd\u88be\u88bf\u88c0\u88c1\u88c2\u88c3\u88c4\u88c5\u88c6\u88c7\u88c8\u88c9\u88ca\u88cb\u88cc\u88cd\u88ce\u88cf\u88d0\u88d1\u88d2\u88d3\u88d4\u88d5\u88d6\u88d7\u88d8\u88d9\u88da\u88db\u88dc\u88dd\u88de\u88df\u88e0\u88e1\u88e2\u88e3\u88e4\u88e5\u88e6\u88e7\u88e8\u88e9\u88ea\u88eb\u88ec\u88ed\u88ee\u88ef\u88f0\u88f1\u88f2\u88f3\u88f4\u88f5\u88f6\u88f7\u88f8\u88f9\u88fa\u88fb\u88fc\u88fd\u88fe\u88ff\u8900\u8901\u8902\u8903\u8904\u8905\u8906\u8907\u8908\u8909\u890a\u890b\u890c\u890d\u890e\u890f\u8910\u8911\u8912\u8913\u8914\u8915\u8916\u8917\u8918\u8919\u891a\u891b\u891c\u891d\u891e\u891f\u8920\u8921\u8922\u8923\u8924\u8925\u8926\u8927\u8928\u8929\u892a\u892b\u892c\u892d\u892e\u892f\u8930\u8931\u8932\u8933\u8934\u8935\u8936\u8937\u8938\u8939\u893a\u893b\u893c\u893d\u893e\u893f\u8940\u8941\u8942\u8943\u8944\u8945\u8946\u8947\u8948\u8949\u894a\u894b\u894c\u894d\u894e\u894f\u8950\u8951\u8952\u8953\u8954\u8955\u8956\u8957\u8958\u8959\u895a\u895b\u895c\u895d\u895e\u895f\u8960\u8961\u8962\u8963\u8964\u8965\u8966\u8967\u8968\u8969\u896a\u896b\u896c\u896d\u896e\u896f\u8970\u8971\u8972\u8973\u8974\u8975\u8976\u8977\u8978\u8979\u897a\u897b\u897c\u897d\u897e\u897f\u8980\u8981\u8982\u8983\u8984\u8985\u8986\u8987\u8988\u8989\u898a\u898b\u898c\u898d\u898e\u898f\u8990\u8991\u8992\u8993\u8994\u8995\u8996\u8997\u8998\u8999\u899a\u899b\u899c\u899d\u899e\u899f\u89a0\u89a1\u89a2\u89a3\u89a4\u89a5\u89a6\u89a7\u89a8\u89a9\u89aa\u89ab\u89ac\u89ad\u89ae\u89af\u89b0\u89b1\u89b2\u89b3\u89b4\u89b5\u89b6\u89b7\u89b8\u89b9\u89ba\u89bb\u89bc\u89bd\u89be\u89bf\u89c0\u89c1\u89c2\u89c3\u89c4\u89c5\u89c6\u89c7\u89c8\u89c9\u89ca\u89cb\u89cc\u89cd\u89ce\u89cf\u89d0\u89d1\u89d2\u89d3\u89d4\u89d5\u89d6\u89d7\u89d8\u89d9\u89da\u89db\u89dc\u89dd\u89de\u89df\u89e0\u89e1\u89e2\u89e3\u89e4\u89e5\u89e6\u89e7\u89e8\u89e9\u89ea\u89eb\u89ec\u89ed\u89ee\u89ef\u89f0\u89f1\u89f2\u89f3\u89f4\u89f5\u89f6\u89f7\u89f8\u89f9\u89fa\u89fb\u89fc\u89fd\u89fe\u89ff\u8a00\u8a01\u8a02\u8a03\u8a04\u8a05\u8a06\u8a07\u8a08\u8a09\u8a0a\u8a0b\u8a0c\u8a0d\u8a0e\u8a0f\u8a10\u8a11\u8a12\u8a13\u8a14\u8a15\u8a16\u8a17\u8a18\u8a19\u8a1a\u8a1b\u8a1c\u8a1d\u8a1e\u8a1f\u8a20\u8a21\u8a22\u8a23\u8a24\u8a25\u8a26\u8a27\u8a28\u8a29\u8a2a\u8a2b\u8a2c\u8a2d\u8a2e\u8a2f\u8a30\u8a31\u8a32\u8a33\u8a34\u8a35\u8a36\u8a37\u8a38\u8a39\u8a3a\u8a3b\u8a3c\u8a3d\u8a3e\u8a3f\u8a40\u8a41\u8a42\u8a43\u8a44\u8a45\u8a46\u8a47\u8a48\u8a49\u8a4a\u8a4b\u8a4c\u8a4d\u8a4e\u8a4f\u8a50\u8a51\u8a52\u8a53\u8a54\u8a55\u8a56\u8a57\u8a58\u8a59\u8a5a\u8a5b\u8a5c\u8a5d\u8a5e\u8a5f\u8a60\u8a61\u8a62\u8a63\u8a64\u8a65\u8a66\u8a67\u8a68\u8a69\u8a6a\u8a6b\u8a6c\u8a6d\u8a6e\u8a6f\u8a70\u8a71\u8a72\u8a73\u8a74\u8a75\u8a76\u8a77\u8a78\u8a79\u8a7a\u8a7b\u8a7c\u8a7d\u8a7e\u8a7f\u8a80\u8a81\u8a82\u8a83\u8a84\u8a85\u8a86\u8a87\u8a88\u8a89\u8a8a\u8a8b\u8a8c\u8a8d\u8a8e\u8a8f\u8a90\u8a91\u8a92\u8a93\u8a94\u8a95\u8a96\u8a97\u8a98\u8a99\u8a9a\u8a9b\u8a9c\u8a9d\u8a9e\u8a9f\u8aa0\u8aa1\u8aa2\u8aa3\u8aa4\u8aa5\u8aa6\u8aa7\u8aa8\u8aa9\u8aaa\u8aab\u8aac\u8aad\u8aae\u8aaf\u8ab0\u8ab1\u8ab2\u8ab3\u8ab4\u8ab5\u8ab6\u8ab7\u8ab8\u8ab9\u8aba\u8abb\u8abc\u8abd\u8abe\u8abf\u8ac0\u8ac1\u8ac2\u8ac3\u8ac4\u8ac5\u8ac6\u8ac7\u8ac8\u8ac9\u8aca\u8acb\u8acc\u8acd\u8ace\u8acf\u8ad0\u8ad1\u8ad2\u8ad3\u8ad4\u8ad5\u8ad6\u8ad7\u8ad8\u8ad9\u8ada\u8adb\u8adc\u8add\u8ade\u8adf\u8ae0\u8ae1\u8ae2\u8ae3\u8ae4\u8ae5\u8ae6\u8ae7\u8ae8\u8ae9\u8aea\u8aeb\u8aec\u8aed\u8aee\u8aef\u8af0\u8af1\u8af2\u8af3\u8af4\u8af5\u8af6\u8af7\u8af8\u8af9\u8afa\u8afb\u8afc\u8afd\u8afe\u8aff\u8b00\u8b01\u8b02\u8b03\u8b04\u8b05\u8b06\u8b07\u8b08\u8b09\u8b0a\u8b0b\u8b0c\u8b0d\u8b0e\u8b0f\u8b10\u8b11\u8b12\u8b13\u8b14\u8b15\u8b16\u8b17\u8b18\u8b19\u8b1a\u8b1b\u8b1c\u8b1d\u8b1e\u8b1f\u8b20\u8b21\u8b22\u8b23\u8b24\u8b25\u8b26\u8b27\u8b28\u8b29\u8b2a\u8b2b\u8b2c\u8b2d\u8b2e\u8b2f\u8b30\u8b31\u8b32\u8b33\u8b34\u8b35\u8b36\u8b37\u8b38\u8b39\u8b3a\u8b3b\u8b3c\u8b3d\u8b3e\u8b3f\u8b40\u8b41\u8b42\u8b43\u8b44\u8b45\u8b46\u8b47\u8b48\u8b49\u8b4a\u8b4b\u8b4c\u8b4d\u8b4e\u8b4f\u8b50\u8b51\u8b52\u8b53\u8b54\u8b55\u8b56\u8b57\u8b58\u8b59\u8b5a\u8b5b\u8b5c\u8b5d\u8b5e\u8b5f\u8b60\u8b61\u8b62\u8b63\u8b64\u8b65\u8b66\u8b67\u8b68\u8b69\u8b6a\u8b6b\u8b6c\u8b6d\u8b6e\u8b6f\u8b70\u8b71\u8b72\u8b73\u8b74\u8b75\u8b76\u8b77\u8b78\u8b79\u8b7a\u8b7b\u8b7c\u8b7d\u8b7e\u8b7f\u8b80\u8b81\u8b82\u8b83\u8b84\u8b85\u8b86\u8b87\u8b88\u8b89\u8b8a\u8b8b\u8b8c\u8b8d\u8b8e\u8b8f\u8b90\u8b91\u8b92\u8b93\u8b94\u8b95\u8b96\u8b97\u8b98\u8b99\u8b9a\u8b9b\u8b9c\u8b9d\u8b9e\u8b9f\u8ba0\u8ba1\u8ba2\u8ba3\u8ba4\u8ba5\u8ba6\u8ba7\u8ba8\u8ba9\u8baa\u8bab\u8bac\u8bad\u8bae\u8baf\u8bb0\u8bb1\u8bb2\u8bb3\u8bb4\u8bb5\u8bb6\u8bb7\u8bb8\u8bb9\u8bba\u8bbb\u8bbc\u8bbd\u8bbe\u8bbf\u8bc0\u8bc1\u8bc2\u8bc3\u8bc4\u8bc5\u8bc6\u8bc7\u8bc8\u8bc9\u8bca\u8bcb\u8bcc\u8bcd\u8bce\u8bcf\u8bd0\u8bd1\u8bd2\u8bd3\u8bd4\u8bd5\u8bd6\u8bd7\u8bd8\u8bd9\u8bda\u8bdb\u8bdc\u8bdd\u8bde\u8bdf\u8be0\u8be1\u8be2\u8be3\u8be4\u8be5\u8be6\u8be7\u8be8\u8be9\u8bea\u8beb\u8bec\u8bed\u8bee\u8bef\u8bf0\u8bf1\u8bf2\u8bf3\u8bf4\u8bf5\u8bf6\u8bf7\u8bf8\u8bf9\u8bfa\u8bfb\u8bfc\u8bfd\u8bfe\u8bff\u8c00\u8c01\u8c02\u8c03\u8c04\u8c05\u8c06\u8c07\u8c08\u8c09\u8c0a\u8c0b\u8c0c\u8c0d\u8c0e\u8c0f\u8c10\u8c11\u8c12\u8c13\u8c14\u8c15\u8c16\u8c17\u8c18\u8c19\u8c1a\u8c1b\u8c1c\u8c1d\u8c1e\u8c1f\u8c20\u8c21\u8c22\u8c23\u8c24\u8c25\u8c26\u8c27\u8c28\u8c29\u8c2a\u8c2b\u8c2c\u8c2d\u8c2e\u8c2f\u8c30\u8c31\u8c32\u8c33\u8c34\u8c35\u8c36\u8c37\u8c38\u8c39\u8c3a\u8c3b\u8c3c\u8c3d\u8c3e\u8c3f\u8c40\u8c41\u8c42\u8c43\u8c44\u8c45\u8c46\u8c47\u8c48\u8c49\u8c4a\u8c4b\u8c4c\u8c4d\u8c4e\u8c4f\u8c50\u8c51\u8c52\u8c53\u8c54\u8c55\u8c56\u8c57\u8c58\u8c59\u8c5a\u8c5b\u8c5c\u8c5d\u8c5e\u8c5f\u8c60\u8c61\u8c62\u8c63\u8c64\u8c65\u8c66\u8c67\u8c68\u8c69\u8c6a\u8c6b\u8c6c\u8c6d\u8c6e\u8c6f\u8c70\u8c71\u8c72\u8c73\u8c74\u8c75\u8c76\u8c77\u8c78\u8c79\u8c7a\u8c7b\u8c7c\u8c7d\u8c7e\u8c7f\u8c80\u8c81\u8c82\u8c83\u8c84\u8c85\u8c86\u8c87\u8c88\u8c89\u8c8a\u8c8b\u8c8c\u8c8d\u8c8e\u8c8f\u8c90\u8c91\u8c92\u8c93\u8c94\u8c95\u8c96\u8c97\u8c98\u8c99\u8c9a\u8c9b\u8c9c\u8c9d\u8c9e\u8c9f\u8ca0\u8ca1\u8ca2\u8ca3\u8ca4\u8ca5\u8ca6\u8ca7\u8ca8\u8ca9\u8caa\u8cab\u8cac\u8cad\u8cae\u8caf\u8cb0\u8cb1\u8cb2\u8cb3\u8cb4\u8cb5\u8cb6\u8cb7\u8cb8\u8cb9\u8cba\u8cbb\u8cbc\u8cbd\u8cbe\u8cbf\u8cc0\u8cc1\u8cc2\u8cc3\u8cc4\u8cc5\u8cc6\u8cc7\u8cc8\u8cc9\u8cca\u8ccb\u8ccc\u8ccd\u8cce\u8ccf\u8cd0\u8cd1\u8cd2\u8cd3\u8cd4\u8cd5\u8cd6\u8cd7\u8cd8\u8cd9\u8cda\u8cdb\u8cdc\u8cdd\u8cde\u8cdf\u8ce0\u8ce1\u8ce2\u8ce3\u8ce4\u8ce5\u8ce6\u8ce7\u8ce8\u8ce9\u8cea\u8ceb\u8cec\u8ced\u8cee\u8cef\u8cf0\u8cf1\u8cf2\u8cf3\u8cf4\u8cf5\u8cf6\u8cf7\u8cf8\u8cf9\u8cfa\u8cfb\u8cfc\u8cfd\u8cfe\u8cff\u8d00\u8d01\u8d02\u8d03\u8d04\u8d05\u8d06\u8d07\u8d08\u8d09\u8d0a\u8d0b\u8d0c\u8d0d\u8d0e\u8d0f\u8d10\u8d11\u8d12\u8d13\u8d14\u8d15\u8d16\u8d17\u8d18\u8d19\u8d1a\u8d1b\u8d1c\u8d1d\u8d1e\u8d1f\u8d20\u8d21\u8d22\u8d23\u8d24\u8d25\u8d26\u8d27\u8d28\u8d29\u8d2a\u8d2b\u8d2c\u8d2d\u8d2e\u8d2f\u8d30\u8d31\u8d32\u8d33\u8d34\u8d35\u8d36\u8d37\u8d38\u8d39\u8d3a\u8d3b\u8d3c\u8d3d\u8d3e\u8d3f\u8d40\u8d41\u8d42\u8d43\u8d44\u8d45\u8d46\u8d47\u8d48\u8d49\u8d4a\u8d4b\u8d4c\u8d4d\u8d4e\u8d4f\u8d50\u8d51\u8d52\u8d53\u8d54\u8d55\u8d56\u8d57\u8d58\u8d59\u8d5a\u8d5b\u8d5c\u8d5d\u8d5e\u8d5f\u8d60\u8d61\u8d62\u8d63\u8d64\u8d65\u8d66\u8d67\u8d68\u8d69\u8d6a\u8d6b\u8d6c\u8d6d\u8d6e\u8d6f\u8d70\u8d71\u8d72\u8d73\u8d74\u8d75\u8d76\u8d77\u8d78\u8d79\u8d7a\u8d7b\u8d7c\u8d7d\u8d7e\u8d7f\u8d80\u8d81\u8d82\u8d83\u8d84\u8d85\u8d86\u8d87\u8d88\u8d89\u8d8a\u8d8b\u8d8c\u8d8d\u8d8e\u8d8f\u8d90\u8d91\u8d92\u8d93\u8d94\u8d95\u8d96\u8d97\u8d98\u8d99\u8d9a\u8d9b\u8d9c\u8d9d\u8d9e\u8d9f\u8da0\u8da1\u8da2\u8da3\u8da4\u8da5\u8da6\u8da7\u8da8\u8da9\u8daa\u8dab\u8dac\u8dad\u8dae\u8daf\u8db0\u8db1\u8db2\u8db3\u8db4\u8db5\u8db6\u8db7\u8db8\u8db9\u8dba\u8dbb\u8dbc\u8dbd\u8dbe\u8dbf\u8dc0\u8dc1\u8dc2\u8dc3\u8dc4\u8dc5\u8dc6\u8dc7\u8dc8\u8dc9\u8dca\u8dcb\u8dcc\u8dcd\u8dce\u8dcf\u8dd0\u8dd1\u8dd2\u8dd3\u8dd4\u8dd5\u8dd6\u8dd7\u8dd8\u8dd9\u8dda\u8ddb\u8ddc\u8ddd\u8dde\u8ddf\u8de0\u8de1\u8de2\u8de3\u8de4\u8de5\u8de6\u8de7\u8de8\u8de9\u8dea\u8deb\u8dec\u8ded\u8dee\u8def\u8df0\u8df1\u8df2\u8df3\u8df4\u8df5\u8df6\u8df7\u8df8\u8df9\u8dfa\u8dfb\u8dfc\u8dfd\u8dfe\u8dff\u8e00\u8e01\u8e02\u8e03\u8e04\u8e05\u8e06\u8e07\u8e08\u8e09\u8e0a\u8e0b\u8e0c\u8e0d\u8e0e\u8e0f\u8e10\u8e11\u8e12\u8e13\u8e14\u8e15\u8e16\u8e17\u8e18\u8e19\u8e1a\u8e1b\u8e1c\u8e1d\u8e1e\u8e1f\u8e20\u8e21\u8e22\u8e23\u8e24\u8e25\u8e26\u8e27\u8e28\u8e29\u8e2a\u8e2b\u8e2c\u8e2d\u8e2e\u8e2f\u8e30\u8e31\u8e32\u8e33\u8e34\u8e35\u8e36\u8e37\u8e38\u8e39\u8e3a\u8e3b\u8e3c\u8e3d\u8e3e\u8e3f\u8e40\u8e41\u8e42\u8e43\u8e44\u8e45\u8e46\u8e47\u8e48\u8e49\u8e4a\u8e4b\u8e4c\u8e4d\u8e4e\u8e4f\u8e50\u8e51\u8e52\u8e53\u8e54\u8e55\u8e56\u8e57\u8e58\u8e59\u8e5a\u8e5b\u8e5c\u8e5d\u8e5e\u8e5f\u8e60\u8e61\u8e62\u8e63\u8e64\u8e65\u8e66\u8e67\u8e68\u8e69\u8e6a\u8e6b\u8e6c\u8e6d\u8e6e\u8e6f\u8e70\u8e71\u8e72\u8e73\u8e74\u8e75\u8e76\u8e77\u8e78\u8e79\u8e7a\u8e7b\u8e7c\u8e7d\u8e7e\u8e7f\u8e80\u8e81\u8e82\u8e83\u8e84\u8e85\u8e86\u8e87\u8e88\u8e89\u8e8a\u8e8b\u8e8c\u8e8d\u8e8e\u8e8f\u8e90\u8e91\u8e92\u8e93\u8e94\u8e95\u8e96\u8e97\u8e98\u8e99\u8e9a\u8e9b\u8e9c\u8e9d\u8e9e\u8e9f\u8ea0\u8ea1\u8ea2\u8ea3\u8ea4\u8ea5\u8ea6\u8ea7\u8ea8\u8ea9\u8eaa\u8eab\u8eac\u8ead\u8eae\u8eaf\u8eb0\u8eb1\u8eb2\u8eb3\u8eb4\u8eb5\u8eb6\u8eb7\u8eb8\u8eb9\u8eba\u8ebb\u8ebc\u8ebd\u8ebe\u8ebf\u8ec0\u8ec1\u8ec2\u8ec3\u8ec4\u8ec5\u8ec6\u8ec7\u8ec8\u8ec9\u8eca\u8ecb\u8ecc\u8ecd\u8ece\u8ecf\u8ed0\u8ed1\u8ed2\u8ed3\u8ed4\u8ed5\u8ed6\u8ed7\u8ed8\u8ed9\u8eda\u8edb\u8edc\u8edd\u8ede\u8edf\u8ee0\u8ee1\u8ee2\u8ee3\u8ee4\u8ee5\u8ee6\u8ee7\u8ee8\u8ee9\u8eea\u8eeb\u8eec\u8eed\u8eee\u8eef\u8ef0\u8ef1\u8ef2\u8ef3\u8ef4\u8ef5\u8ef6\u8ef7\u8ef8\u8ef9\u8efa\u8efb\u8efc\u8efd\u8efe\u8eff\u8f00\u8f01\u8f02\u8f03\u8f04\u8f05\u8f06\u8f07\u8f08\u8f09\u8f0a\u8f0b\u8f0c\u8f0d\u8f0e\u8f0f\u8f10\u8f11\u8f12\u8f13\u8f14\u8f15\u8f16\u8f17\u8f18\u8f19\u8f1a\u8f1b\u8f1c\u8f1d\u8f1e\u8f1f\u8f20\u8f21\u8f22\u8f23\u8f24\u8f25\u8f26\u8f27\u8f28\u8f29\u8f2a\u8f2b\u8f2c\u8f2d\u8f2e\u8f2f\u8f30\u8f31\u8f32\u8f33\u8f34\u8f35\u8f36\u8f37\u8f38\u8f39\u8f3a\u8f3b\u8f3c\u8f3d\u8f3e\u8f3f\u8f40\u8f41\u8f42\u8f43\u8f44\u8f45\u8f46\u8f47\u8f48\u8f49\u8f4a\u8f4b\u8f4c\u8f4d\u8f4e\u8f4f\u8f50\u8f51\u8f52\u8f53\u8f54\u8f55\u8f56\u8f57\u8f58\u8f59\u8f5a\u8f5b\u8f5c\u8f5d\u8f5e\u8f5f\u8f60\u8f61\u8f62\u8f63\u8f64\u8f65\u8f66\u8f67\u8f68\u8f69\u8f6a\u8f6b\u8f6c\u8f6d\u8f6e\u8f6f\u8f70\u8f71\u8f72\u8f73\u8f74\u8f75\u8f76\u8f77\u8f78\u8f79\u8f7a\u8f7b\u8f7c\u8f7d\u8f7e\u8f7f\u8f80\u8f81\u8f82\u8f83\u8f84\u8f85\u8f86\u8f87\u8f88\u8f89\u8f8a\u8f8b\u8f8c\u8f8d\u8f8e\u8f8f\u8f90\u8f91\u8f92\u8f93\u8f94\u8f95\u8f96\u8f97\u8f98\u8f99\u8f9a\u8f9b\u8f9c\u8f9d\u8f9e\u8f9f\u8fa0\u8fa1\u8fa2\u8fa3\u8fa4\u8fa5\u8fa6\u8fa7\u8fa8\u8fa9\u8faa\u8fab\u8fac\u8fad\u8fae\u8faf\u8fb0\u8fb1\u8fb2\u8fb3\u8fb4\u8fb5\u8fb6\u8fb7\u8fb8\u8fb9\u8fba\u8fbb\u8fbc\u8fbd\u8fbe\u8fbf\u8fc0\u8fc1\u8fc2\u8fc3\u8fc4\u8fc5\u8fc6\u8fc7\u8fc8\u8fc9\u8fca\u8fcb\u8fcc\u8fcd\u8fce\u8fcf\u8fd0\u8fd1\u8fd2\u8fd3\u8fd4\u8fd5\u8fd6\u8fd7\u8fd8\u8fd9\u8fda\u8fdb\u8fdc\u8fdd\u8fde\u8fdf\u8fe0\u8fe1\u8fe2\u8fe3\u8fe4\u8fe5\u8fe6\u8fe7\u8fe8\u8fe9\u8fea\u8feb\u8fec\u8fed\u8fee\u8fef\u8ff0\u8ff1\u8ff2\u8ff3\u8ff4\u8ff5\u8ff6\u8ff7\u8ff8\u8ff9\u8ffa\u8ffb\u8ffc\u8ffd\u8ffe\u8fff\u9000\u9001\u9002\u9003\u9004\u9005\u9006\u9007\u9008\u9009\u900a\u900b\u900c\u900d\u900e\u900f\u9010\u9011\u9012\u9013\u9014\u9015\u9016\u9017\u9018\u9019\u901a\u901b\u901c\u901d\u901e\u901f\u9020\u9021\u9022\u9023\u9024\u9025\u9026\u9027\u9028\u9029\u902a\u902b\u902c\u902d\u902e\u902f\u9030\u9031\u9032\u9033\u9034\u9035\u9036\u9037\u9038\u9039\u903a\u903b\u903c\u903d\u903e\u903f\u9040\u9041\u9042\u9043\u9044\u9045\u9046\u9047\u9048\u9049\u904a\u904b\u904c\u904d\u904e\u904f\u9050\u9051\u9052\u9053\u9054\u9055\u9056\u9057\u9058\u9059\u905a\u905b\u905c\u905d\u905e\u905f\u9060\u9061\u9062\u9063\u9064\u9065\u9066\u9067\u9068\u9069\u906a\u906b\u906c\u906d\u906e\u906f\u9070\u9071\u9072\u9073\u9074\u9075\u9076\u9077\u9078\u9079\u907a\u907b\u907c\u907d\u907e\u907f\u9080\u9081\u9082\u9083\u9084\u9085\u9086\u9087\u9088\u9089\u908a\u908b\u908c\u908d\u908e\u908f\u9090\u9091\u9092\u9093\u9094\u9095\u9096\u9097\u9098\u9099\u909a\u909b\u909c\u909d\u909e\u909f\u90a0\u90a1\u90a2\u90a3\u90a4\u90a5\u90a6\u90a7\u90a8\u90a9\u90aa\u90ab\u90ac\u90ad\u90ae\u90af\u90b0\u90b1\u90b2\u90b3\u90b4\u90b5\u90b6\u90b7\u90b8\u90b9\u90ba\u90bb\u90bc\u90bd\u90be\u90bf\u90c0\u90c1\u90c2\u90c3\u90c4\u90c5\u90c6\u90c7\u90c8\u90c9\u90ca\u90cb\u90cc\u90cd\u90ce\u90cf\u90d0\u90d1\u90d2\u90d3\u90d4\u90d5\u90d6\u90d7\u90d8\u90d9\u90da\u90db\u90dc\u90dd\u90de\u90df\u90e0\u90e1\u90e2\u90e3\u90e4\u90e5\u90e6\u90e7\u90e8\u90e9\u90ea\u90eb\u90ec\u90ed\u90ee\u90ef\u90f0\u90f1\u90f2\u90f3\u90f4\u90f5\u90f6\u90f7\u90f8\u90f9\u90fa\u90fb\u90fc\u90fd\u90fe\u90ff\u9100\u9101\u9102\u9103\u9104\u9105\u9106\u9107\u9108\u9109\u910a\u910b\u910c\u910d\u910e\u910f\u9110\u9111\u9112\u9113\u9114\u9115\u9116\u9117\u9118\u9119\u911a\u911b\u911c\u911d\u911e\u911f\u9120\u9121\u9122\u9123\u9124\u9125\u9126\u9127\u9128\u9129\u912a\u912b\u912c\u912d\u912e\u912f\u9130\u9131\u9132\u9133\u9134\u9135\u9136\u9137\u9138\u9139\u913a\u913b\u913c\u913d\u913e\u913f\u9140\u9141\u9142\u9143\u9144\u9145\u9146\u9147\u9148\u9149\u914a\u914b\u914c\u914d\u914e\u914f\u9150\u9151\u9152\u9153\u9154\u9155\u9156\u9157\u9158\u9159\u915a\u915b\u915c\u915d\u915e\u915f\u9160\u9161\u9162\u9163\u9164\u9165\u9166\u9167\u9168\u9169\u916a\u916b\u916c\u916d\u916e\u916f\u9170\u9171\u9172\u9173\u9174\u9175\u9176\u9177\u9178\u9179\u917a\u917b\u917c\u917d\u917e\u917f\u9180\u9181\u9182\u9183\u9184\u9185\u9186\u9187\u9188\u9189\u918a\u918b\u918c\u918d\u918e\u918f\u9190\u9191\u9192\u9193\u9194\u9195\u9196\u9197\u9198\u9199\u919a\u919b\u919c\u919d\u919e\u919f\u91a0\u91a1\u91a2\u91a3\u91a4\u91a5\u91a6\u91a7\u91a8\u91a9\u91aa\u91ab\u91ac\u91ad\u91ae\u91af\u91b0\u91b1\u91b2\u91b3\u91b4\u91b5\u91b6\u91b7\u91b8\u91b9\u91ba\u91bb\u91bc\u91bd\u91be\u91bf\u91c0\u91c1\u91c2\u91c3\u91c4\u91c5\u91c6\u91c7\u91c8\u91c9\u91ca\u91cb\u91cc\u91cd\u91ce\u91cf\u91d0\u91d1\u91d2\u91d3\u91d4\u91d5\u91d6\u91d7\u91d8\u91d9\u91da\u91db\u91dc\u91dd\u91de\u91df\u91e0\u91e1\u91e2\u91e3\u91e4\u91e5\u91e6\u91e7\u91e8\u91e9\u91ea\u91eb\u91ec\u91ed\u91ee\u91ef\u91f0\u91f1\u91f2\u91f3\u91f4\u91f5\u91f6\u91f7\u91f8\u91f9\u91fa\u91fb\u91fc\u91fd\u91fe\u91ff\u9200\u9201\u9202\u9203\u9204\u9205\u9206\u9207\u9208\u9209\u920a\u920b\u920c\u920d\u920e\u920f\u9210\u9211\u9212\u9213\u9214\u9215\u9216\u9217\u9218\u9219\u921a\u921b\u921c\u921d\u921e\u921f\u9220\u9221\u9222\u9223\u9224\u9225\u9226\u9227\u9228\u9229\u922a\u922b\u922c\u922d\u922e\u922f\u9230\u9231\u9232\u9233\u9234\u9235\u9236\u9237\u9238\u9239\u923a\u923b\u923c\u923d\u923e\u923f\u9240\u9241\u9242\u9243\u9244\u9245\u9246\u9247\u9248\u9249\u924a\u924b\u924c\u924d\u924e\u924f\u9250\u9251\u9252\u9253\u9254\u9255\u9256\u9257\u9258\u9259\u925a\u925b\u925c\u925d\u925e\u925f\u9260\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u9268\u9269\u926a\u926b\u926c\u926d\u926e\u926f\u9270\u9271\u9272\u9273\u9274\u9275\u9276\u9277\u9278\u9279\u927a\u927b\u927c\u927d\u927e\u927f\u9280\u9281\u9282\u9283\u9284\u9285\u9286\u9287\u9288\u9289\u928a\u928b\u928c\u928d\u928e\u928f\u9290\u9291\u9292\u9293\u9294\u9295\u9296\u9297\u9298\u9299\u929a\u929b\u929c\u929d\u929e\u929f\u92a0\u92a1\u92a2\u92a3\u92a4\u92a5\u92a6\u92a7\u92a8\u92a9\u92aa\u92ab\u92ac\u92ad\u92ae\u92af\u92b0\u92b1\u92b2\u92b3\u92b4\u92b5\u92b6\u92b7\u92b8\u92b9\u92ba\u92bb\u92bc\u92bd\u92be\u92bf\u92c0\u92c1\u92c2\u92c3\u92c4\u92c5\u92c6\u92c7\u92c8\u92c9\u92ca\u92cb\u92cc\u92cd\u92ce\u92cf\u92d0\u92d1\u92d2\u92d3\u92d4\u92d5\u92d6\u92d7\u92d8\u92d9\u92da\u92db\u92dc\u92dd\u92de\u92df\u92e0\u92e1\u92e2\u92e3\u92e4\u92e5\u92e6\u92e7\u92e8\u92e9\u92ea\u92eb\u92ec\u92ed\u92ee\u92ef\u92f0\u92f1\u92f2\u92f3\u92f4\u92f5\u92f6\u92f7\u92f8\u92f9\u92fa\u92fb\u92fc\u92fd\u92fe\u92ff\u9300\u9301\u9302\u9303\u9304\u9305\u9306\u9307\u9308\u9309\u930a\u930b\u930c\u930d\u930e\u930f\u9310\u9311\u9312\u9313\u9314\u9315\u9316\u9317\u9318\u9319\u931a\u931b\u931c\u931d\u931e\u931f\u9320\u9321\u9322\u9323\u9324\u9325\u9326\u9327\u9328\u9329\u932a\u932b\u932c\u932d\u932e\u932f\u9330\u9331\u9332\u9333\u9334\u9335\u9336\u9337\u9338\u9339\u933a\u933b\u933c\u933d\u933e\u933f\u9340\u9341\u9342\u9343\u9344\u9345\u9346\u9347\u9348\u9349\u934a\u934b\u934c\u934d\u934e\u934f\u9350\u9351\u9352\u9353\u9354\u9355\u9356\u9357\u9358\u9359\u935a\u935b\u935c\u935d\u935e\u935f\u9360\u9361\u9362\u9363\u9364\u9365\u9366\u9367\u9368\u9369\u936a\u936b\u936c\u936d\u936e\u936f\u9370\u9371\u9372\u9373\u9374\u9375\u9376\u9377\u9378\u9379\u937a\u937b\u937c\u937d\u937e\u937f\u9380\u9381\u9382\u9383\u9384\u9385\u9386\u9387\u9388\u9389\u938a\u938b\u938c\u938d\u938e\u938f\u9390\u9391\u9392\u9393\u9394\u9395\u9396\u9397\u9398\u9399\u939a\u939b\u939c\u939d\u939e\u939f\u93a0\u93a1\u93a2\u93a3\u93a4\u93a5\u93a6\u93a7\u93a8\u93a9\u93aa\u93ab\u93ac\u93ad\u93ae\u93af\u93b0\u93b1\u93b2\u93b3\u93b4\u93b5\u93b6\u93b7\u93b8\u93b9\u93ba\u93bb\u93bc\u93bd\u93be\u93bf\u93c0\u93c1\u93c2\u93c3\u93c4\u93c5\u93c6\u93c7\u93c8\u93c9\u93ca\u93cb\u93cc\u93cd\u93ce\u93cf\u93d0\u93d1\u93d2\u93d3\u93d4\u93d5\u93d6\u93d7\u93d8\u93d9\u93da\u93db\u93dc\u93dd\u93de\u93df\u93e0\u93e1\u93e2\u93e3\u93e4\u93e5\u93e6\u93e7\u93e8\u93e9\u93ea\u93eb\u93ec\u93ed\u93ee\u93ef\u93f0\u93f1\u93f2\u93f3\u93f4\u93f5\u93f6\u93f7\u93f8\u93f9\u93fa\u93fb\u93fc\u93fd\u93fe\u93ff\u9400\u9401\u9402\u9403\u9404\u9405\u9406\u9407\u9408\u9409\u940a\u940b\u940c\u940d\u940e\u940f\u9410\u9411\u9412\u9413\u9414\u9415\u9416\u9417\u9418\u9419\u941a\u941b\u941c\u941d\u941e\u941f\u9420\u9421\u9422\u9423\u9424\u9425\u9426\u9427\u9428\u9429\u942a\u942b\u942c\u942d\u942e\u942f\u9430\u9431\u9432\u9433\u9434\u9435\u9436\u9437\u9438\u9439\u943a\u943b\u943c\u943d\u943e\u943f\u9440\u9441\u9442\u9443\u9444\u9445\u9446\u9447\u9448\u9449\u944a\u944b\u944c\u944d\u944e\u944f\u9450\u9451\u9452\u9453\u9454\u9455\u9456\u9457\u9458\u9459\u945a\u945b\u945c\u945d\u945e\u945f\u9460\u9461\u9462\u9463\u9464\u9465\u9466\u9467\u9468\u9469\u946a\u946b\u946c\u946d\u946e\u946f\u9470\u9471\u9472\u9473\u9474\u9475\u9476\u9477\u9478\u9479\u947a\u947b\u947c\u947d\u947e\u947f\u9480\u9481\u9482\u9483\u9484\u9485\u9486\u9487\u9488\u9489\u948a\u948b\u948c\u948d\u948e\u948f\u9490\u9491\u9492\u9493\u9494\u9495\u9496\u9497\u9498\u9499\u949a\u949b\u949c\u949d\u949e\u949f\u94a0\u94a1\u94a2\u94a3\u94a4\u94a5\u94a6\u94a7\u94a8\u94a9\u94aa\u94ab\u94ac\u94ad\u94ae\u94af\u94b0\u94b1\u94b2\u94b3\u94b4\u94b5\u94b6\u94b7\u94b8\u94b9\u94ba\u94bb\u94bc\u94bd\u94be\u94bf\u94c0\u94c1\u94c2\u94c3\u94c4\u94c5\u94c6\u94c7\u94c8\u94c9\u94ca\u94cb\u94cc\u94cd\u94ce\u94cf\u94d0\u94d1\u94d2\u94d3\u94d4\u94d5\u94d6\u94d7\u94d8\u94d9\u94da\u94db\u94dc\u94dd\u94de\u94df\u94e0\u94e1\u94e2\u94e3\u94e4\u94e5\u94e6\u94e7\u94e8\u94e9\u94ea\u94eb\u94ec\u94ed\u94ee\u94ef\u94f0\u94f1\u94f2\u94f3\u94f4\u94f5\u94f6\u94f7\u94f8\u94f9\u94fa\u94fb\u94fc\u94fd\u94fe\u94ff\u9500\u9501\u9502\u9503\u9504\u9505\u9506\u9507\u9508\u9509\u950a\u950b\u950c\u950d\u950e\u950f\u9510\u9511\u9512\u9513\u9514\u9515\u9516\u9517\u9518\u9519\u951a\u951b\u951c\u951d\u951e\u951f\u9520\u9521\u9522\u9523\u9524\u9525\u9526\u9527\u9528\u9529\u952a\u952b\u952c\u952d\u952e\u952f\u9530\u9531\u9532\u9533\u9534\u9535\u9536\u9537\u9538\u9539\u953a\u953b\u953c\u953d\u953e\u953f\u9540\u9541\u9542\u9543\u9544\u9545\u9546\u9547\u9548\u9549\u954a\u954b\u954c\u954d\u954e\u954f\u9550\u9551\u9552\u9553\u9554\u9555\u9556\u9557\u9558\u9559\u955a\u955b\u955c\u955d\u955e\u955f\u9560\u9561\u9562\u9563\u9564\u9565\u9566\u9567\u9568\u9569\u956a\u956b\u956c\u956d\u956e\u956f\u9570\u9571\u9572\u9573\u9574\u9575\u9576\u9577\u9578\u9579\u957a\u957b\u957c\u957d\u957e\u957f\u9580\u9581\u9582\u9583\u9584\u9585\u9586\u9587\u9588\u9589\u958a\u958b\u958c\u958d\u958e\u958f\u9590\u9591\u9592\u9593\u9594\u9595\u9596\u9597\u9598\u9599\u959a\u959b\u959c\u959d\u959e\u959f\u95a0\u95a1\u95a2\u95a3\u95a4\u95a5\u95a6\u95a7\u95a8\u95a9\u95aa\u95ab\u95ac\u95ad\u95ae\u95af\u95b0\u95b1\u95b2\u95b3\u95b4\u95b5\u95b6\u95b7\u95b8\u95b9\u95ba\u95bb\u95bc\u95bd\u95be\u95bf\u95c0\u95c1\u95c2\u95c3\u95c4\u95c5\u95c6\u95c7\u95c8\u95c9\u95ca\u95cb\u95cc\u95cd\u95ce\u95cf\u95d0\u95d1\u95d2\u95d3\u95d4\u95d5\u95d6\u95d7\u95d8\u95d9\u95da\u95db\u95dc\u95dd\u95de\u95df\u95e0\u95e1\u95e2\u95e3\u95e4\u95e5\u95e6\u95e7\u95e8\u95e9\u95ea\u95eb\u95ec\u95ed\u95ee\u95ef\u95f0\u95f1\u95f2\u95f3\u95f4\u95f5\u95f6\u95f7\u95f8\u95f9\u95fa\u95fb\u95fc\u95fd\u95fe\u95ff\u9600\u9601\u9602\u9603\u9604\u9605\u9606\u9607\u9608\u9609\u960a\u960b\u960c\u960d\u960e\u960f\u9610\u9611\u9612\u9613\u9614\u9615\u9616\u9617\u9618\u9619\u961a\u961b\u961c\u961d\u961e\u961f\u9620\u9621\u9622\u9623\u9624\u9625\u9626\u9627\u9628\u9629\u962a\u962b\u962c\u962d\u962e\u962f\u9630\u9631\u9632\u9633\u9634\u9635\u9636\u9637\u9638\u9639\u963a\u963b\u963c\u963d\u963e\u963f\u9640\u9641\u9642\u9643\u9644\u9645\u9646\u9647\u9648\u9649\u964a\u964b\u964c\u964d\u964e\u964f\u9650\u9651\u9652\u9653\u9654\u9655\u9656\u9657\u9658\u9659\u965a\u965b\u965c\u965d\u965e\u965f\u9660\u9661\u9662\u9663\u9664\u9665\u9666\u9667\u9668\u9669\u966a\u966b\u966c\u966d\u966e\u966f\u9670\u9671\u9672\u9673\u9674\u9675\u9676\u9677\u9678\u9679\u967a\u967b\u967c\u967d\u967e\u967f\u9680\u9681\u9682\u9683\u9684\u9685\u9686\u9687\u9688\u9689\u968a\u968b\u968c\u968d\u968e\u968f\u9690\u9691\u9692\u9693\u9694\u9695\u9696\u9697\u9698\u9699\u969a\u969b\u969c\u969d\u969e\u969f\u96a0\u96a1\u96a2\u96a3\u96a4\u96a5\u96a6\u96a7\u96a8\u96a9\u96aa\u96ab\u96ac\u96ad\u96ae\u96af\u96b0\u96b1\u96b2\u96b3\u96b4\u96b5\u96b6\u96b7\u96b8\u96b9\u96ba\u96bb\u96bc\u96bd\u96be\u96bf\u96c0\u96c1\u96c2\u96c3\u96c4\u96c5\u96c6\u96c7\u96c8\u96c9\u96ca\u96cb\u96cc\u96cd\u96ce\u96cf\u96d0\u96d1\u96d2\u96d3\u96d4\u96d5\u96d6\u96d7\u96d8\u96d9\u96da\u96db\u96dc\u96dd\u96de\u96df\u96e0\u96e1\u96e2\u96e3\u96e4\u96e5\u96e6\u96e7\u96e8\u96e9\u96ea\u96eb\u96ec\u96ed\u96ee\u96ef\u96f0\u96f1\u96f2\u96f3\u96f4\u96f5\u96f6\u96f7\u96f8\u96f9\u96fa\u96fb\u96fc\u96fd\u96fe\u96ff\u9700\u9701\u9702\u9703\u9704\u9705\u9706\u9707\u9708\u9709\u970a\u970b\u970c\u970d\u970e\u970f\u9710\u9711\u9712\u9713\u9714\u9715\u9716\u9717\u9718\u9719\u971a\u971b\u971c\u971d\u971e\u971f\u9720\u9721\u9722\u9723\u9724\u9725\u9726\u9727\u9728\u9729\u972a\u972b\u972c\u972d\u972e\u972f\u9730\u9731\u9732\u9733\u9734\u9735\u9736\u9737\u9738\u9739\u973a\u973b\u973c\u973d\u973e\u973f\u9740\u9741\u9742\u9743\u9744\u9745\u9746\u9747\u9748\u9749\u974a\u974b\u974c\u974d\u974e\u974f\u9750\u9751\u9752\u9753\u9754\u9755\u9756\u9757\u9758\u9759\u975a\u975b\u975c\u975d\u975e\u975f\u9760\u9761\u9762\u9763\u9764\u9765\u9766\u9767\u9768\u9769\u976a\u976b\u976c\u976d\u976e\u976f\u9770\u9771\u9772\u9773\u9774\u9775\u9776\u9777\u9778\u9779\u977a\u977b\u977c\u977d\u977e\u977f\u9780\u9781\u9782\u9783\u9784\u9785\u9786\u9787\u9788\u9789\u978a\u978b\u978c\u978d\u978e\u978f\u9790\u9791\u9792\u9793\u9794\u9795\u9796\u9797\u9798\u9799\u979a\u979b\u979c\u979d\u979e\u979f\u97a0\u97a1\u97a2\u97a3\u97a4\u97a5\u97a6\u97a7\u97a8\u97a9\u97aa\u97ab\u97ac\u97ad\u97ae\u97af\u97b0\u97b1\u97b2\u97b3\u97b4\u97b5\u97b6\u97b7\u97b8\u97b9\u97ba\u97bb\u97bc\u97bd\u97be\u97bf\u97c0\u97c1\u97c2\u97c3\u97c4\u97c5\u97c6\u97c7\u97c8\u97c9\u97ca\u97cb\u97cc\u97cd\u97ce\u97cf\u97d0\u97d1\u97d2\u97d3\u97d4\u97d5\u97d6\u97d7\u97d8\u97d9\u97da\u97db\u97dc\u97dd\u97de\u97df\u97e0\u97e1\u97e2\u97e3\u97e4\u97e5\u97e6\u97e7\u97e8\u97e9\u97ea\u97eb\u97ec\u97ed\u97ee\u97ef\u97f0\u97f1\u97f2\u97f3\u97f4\u97f5\u97f6\u97f7\u97f8\u97f9\u97fa\u97fb\u97fc\u97fd\u97fe\u97ff\u9800\u9801\u9802\u9803\u9804\u9805\u9806\u9807\u9808\u9809\u980a\u980b\u980c\u980d\u980e\u980f\u9810\u9811\u9812\u9813\u9814\u9815\u9816\u9817\u9818\u9819\u981a\u981b\u981c\u981d\u981e\u981f\u9820\u9821\u9822\u9823\u9824\u9825\u9826\u9827\u9828\u9829\u982a\u982b\u982c\u982d\u982e\u982f\u9830\u9831\u9832\u9833\u9834\u9835\u9836\u9837\u9838\u9839\u983a\u983b\u983c\u983d\u983e\u983f\u9840\u9841\u9842\u9843\u9844\u9845\u9846\u9847\u9848\u9849\u984a\u984b\u984c\u984d\u984e\u984f\u9850\u9851\u9852\u9853\u9854\u9855\u9856\u9857\u9858\u9859\u985a\u985b\u985c\u985d\u985e\u985f\u9860\u9861\u9862\u9863\u9864\u9865\u9866\u9867\u9868\u9869\u986a\u986b\u986c\u986d\u986e\u986f\u9870\u9871\u9872\u9873\u9874\u9875\u9876\u9877\u9878\u9879\u987a\u987b\u987c\u987d\u987e\u987f\u9880\u9881\u9882\u9883\u9884\u9885\u9886\u9887\u9888\u9889\u988a\u988b\u988c\u988d\u988e\u988f\u9890\u9891\u9892\u9893\u9894\u9895\u9896\u9897\u9898\u9899\u989a\u989b\u989c\u989d\u989e\u989f\u98a0\u98a1\u98a2\u98a3\u98a4\u98a5\u98a6\u98a7\u98a8\u98a9\u98aa\u98ab\u98ac\u98ad\u98ae\u98af\u98b0\u98b1\u98b2\u98b3\u98b4\u98b5\u98b6\u98b7\u98b8\u98b9\u98ba\u98bb\u98bc\u98bd\u98be\u98bf\u98c0\u98c1\u98c2\u98c3\u98c4\u98c5\u98c6\u98c7\u98c8\u98c9\u98ca\u98cb\u98cc\u98cd\u98ce\u98cf\u98d0\u98d1\u98d2\u98d3\u98d4\u98d5\u98d6\u98d7\u98d8\u98d9\u98da\u98db\u98dc\u98dd\u98de\u98df\u98e0\u98e1\u98e2\u98e3\u98e4\u98e5\u98e6\u98e7\u98e8\u98e9\u98ea\u98eb\u98ec\u98ed\u98ee\u98ef\u98f0\u98f1\u98f2\u98f3\u98f4\u98f5\u98f6\u98f7\u98f8\u98f9\u98fa\u98fb\u98fc\u98fd\u98fe\u98ff\u9900\u9901\u9902\u9903\u9904\u9905\u9906\u9907\u9908\u9909\u990a\u990b\u990c\u990d\u990e\u990f\u9910\u9911\u9912\u9913\u9914\u9915\u9916\u9917\u9918\u9919\u991a\u991b\u991c\u991d\u991e\u991f\u9920\u9921\u9922\u9923\u9924\u9925\u9926\u9927\u9928\u9929\u992a\u992b\u992c\u992d\u992e\u992f\u9930\u9931\u9932\u9933\u9934\u9935\u9936\u9937\u9938\u9939\u993a\u993b\u993c\u993d\u993e\u993f\u9940\u9941\u9942\u9943\u9944\u9945\u9946\u9947\u9948\u9949\u994a\u994b\u994c\u994d\u994e\u994f\u9950\u9951\u9952\u9953\u9954\u9955\u9956\u9957\u9958\u9959\u995a\u995b\u995c\u995d\u995e\u995f\u9960\u9961\u9962\u9963\u9964\u9965\u9966\u9967\u9968\u9969\u996a\u996b\u996c\u996d\u996e\u996f\u9970\u9971\u9972\u9973\u9974\u9975\u9976\u9977\u9978\u9979\u997a\u997b\u997c\u997d\u997e\u997f\u9980\u9981\u9982\u9983\u9984\u9985\u9986\u9987\u9988\u9989\u998a\u998b\u998c\u998d\u998e\u998f\u9990\u9991\u9992\u9993\u9994\u9995\u9996\u9997\u9998\u9999\u999a\u999b\u999c\u999d\u999e\u999f\u99a0\u99a1\u99a2\u99a3\u99a4\u99a5\u99a6\u99a7\u99a8\u99a9\u99aa\u99ab\u99ac\u99ad\u99ae\u99af\u99b0\u99b1\u99b2\u99b3\u99b4\u99b5\u99b6\u99b7\u99b8\u99b9\u99ba\u99bb\u99bc\u99bd\u99be\u99bf\u99c0\u99c1\u99c2\u99c3\u99c4\u99c5\u99c6\u99c7\u99c8\u99c9\u99ca\u99cb\u99cc\u99cd\u99ce\u99cf\u99d0\u99d1\u99d2\u99d3\u99d4\u99d5\u99d6\u99d7\u99d8\u99d9\u99da\u99db\u99dc\u99dd\u99de\u99df\u99e0\u99e1\u99e2\u99e3\u99e4\u99e5\u99e6\u99e7\u99e8\u99e9\u99ea\u99eb\u99ec\u99ed\u99ee\u99ef\u99f0\u99f1\u99f2\u99f3\u99f4\u99f5\u99f6\u99f7\u99f8\u99f9\u99fa\u99fb\u99fc\u99fd\u99fe\u99ff\u9a00\u9a01\u9a02\u9a03\u9a04\u9a05\u9a06\u9a07\u9a08\u9a09\u9a0a\u9a0b\u9a0c\u9a0d\u9a0e\u9a0f\u9a10\u9a11\u9a12\u9a13\u9a14\u9a15\u9a16\u9a17\u9a18\u9a19\u9a1a\u9a1b\u9a1c\u9a1d\u9a1e\u9a1f\u9a20\u9a21\u9a22\u9a23\u9a24\u9a25\u9a26\u9a27\u9a28\u9a29\u9a2a\u9a2b\u9a2c\u9a2d\u9a2e\u9a2f\u9a30\u9a31\u9a32\u9a33\u9a34\u9a35\u9a36\u9a37\u9a38\u9a39\u9a3a\u9a3b\u9a3c\u9a3d\u9a3e\u9a3f\u9a40\u9a41\u9a42\u9a43\u9a44\u9a45\u9a46\u9a47\u9a48\u9a49\u9a4a\u9a4b\u9a4c\u9a4d\u9a4e\u9a4f\u9a50\u9a51\u9a52\u9a53\u9a54\u9a55\u9a56\u9a57\u9a58\u9a59\u9a5a\u9a5b\u9a5c\u9a5d\u9a5e\u9a5f\u9a60\u9a61\u9a62\u9a63\u9a64\u9a65\u9a66\u9a67\u9a68\u9a69\u9a6a\u9a6b\u9a6c\u9a6d\u9a6e\u9a6f\u9a70\u9a71\u9a72\u9a73\u9a74\u9a75\u9a76\u9a77\u9a78\u9a79\u9a7a\u9a7b\u9a7c\u9a7d\u9a7e\u9a7f\u9a80\u9a81\u9a82\u9a83\u9a84\u9a85\u9a86\u9a87\u9a88\u9a89\u9a8a\u9a8b\u9a8c\u9a8d\u9a8e\u9a8f\u9a90\u9a91\u9a92\u9a93\u9a94\u9a95\u9a96\u9a97\u9a98\u9a99\u9a9a\u9a9b\u9a9c\u9a9d\u9a9e\u9a9f\u9aa0\u9aa1\u9aa2\u9aa3\u9aa4\u9aa5\u9aa6\u9aa7\u9aa8\u9aa9\u9aaa\u9aab\u9aac\u9aad\u9aae\u9aaf\u9ab0\u9ab1\u9ab2\u9ab3\u9ab4\u9ab5\u9ab6\u9ab7\u9ab8\u9ab9\u9aba\u9abb\u9abc\u9abd\u9abe\u9abf\u9ac0\u9ac1\u9ac2\u9ac3\u9ac4\u9ac5\u9ac6\u9ac7\u9ac8\u9ac9\u9aca\u9acb\u9acc\u9acd\u9ace\u9acf\u9ad0\u9ad1\u9ad2\u9ad3\u9ad4\u9ad5\u9ad6\u9ad7\u9ad8\u9ad9\u9ada\u9adb\u9adc\u9add\u9ade\u9adf\u9ae0\u9ae1\u9ae2\u9ae3\u9ae4\u9ae5\u9ae6\u9ae7\u9ae8\u9ae9\u9aea\u9aeb\u9aec\u9aed\u9aee\u9aef\u9af0\u9af1\u9af2\u9af3\u9af4\u9af5\u9af6\u9af7\u9af8\u9af9\u9afa\u9afb\u9afc\u9afd\u9afe\u9aff\u9b00\u9b01\u9b02\u9b03\u9b04\u9b05\u9b06\u9b07\u9b08\u9b09\u9b0a\u9b0b\u9b0c\u9b0d\u9b0e\u9b0f\u9b10\u9b11\u9b12\u9b13\u9b14\u9b15\u9b16\u9b17\u9b18\u9b19\u9b1a\u9b1b\u9b1c\u9b1d\u9b1e\u9b1f\u9b20\u9b21\u9b22\u9b23\u9b24\u9b25\u9b26\u9b27\u9b28\u9b29\u9b2a\u9b2b\u9b2c\u9b2d\u9b2e\u9b2f\u9b30\u9b31\u9b32\u9b33\u9b34\u9b35\u9b36\u9b37\u9b38\u9b39\u9b3a\u9b3b\u9b3c\u9b3d\u9b3e\u9b3f\u9b40\u9b41\u9b42\u9b43\u9b44\u9b45\u9b46\u9b47\u9b48\u9b49\u9b4a\u9b4b\u9b4c\u9b4d\u9b4e\u9b4f\u9b50\u9b51\u9b52\u9b53\u9b54\u9b55\u9b56\u9b57\u9b58\u9b59\u9b5a\u9b5b\u9b5c\u9b5d\u9b5e\u9b5f\u9b60\u9b61\u9b62\u9b63\u9b64\u9b65\u9b66\u9b67\u9b68\u9b69\u9b6a\u9b6b\u9b6c\u9b6d\u9b6e\u9b6f\u9b70\u9b71\u9b72\u9b73\u9b74\u9b75\u9b76\u9b77\u9b78\u9b79\u9b7a\u9b7b\u9b7c\u9b7d\u9b7e\u9b7f\u9b80\u9b81\u9b82\u9b83\u9b84\u9b85\u9b86\u9b87\u9b88\u9b89\u9b8a\u9b8b\u9b8c\u9b8d\u9b8e\u9b8f\u9b90\u9b91\u9b92\u9b93\u9b94\u9b95\u9b96\u9b97\u9b98\u9b99\u9b9a\u9b9b\u9b9c\u9b9d\u9b9e\u9b9f\u9ba0\u9ba1\u9ba2\u9ba3\u9ba4\u9ba5\u9ba6\u9ba7\u9ba8\u9ba9\u9baa\u9bab\u9bac\u9bad\u9bae\u9baf\u9bb0\u9bb1\u9bb2\u9bb3\u9bb4\u9bb5\u9bb6\u9bb7\u9bb8\u9bb9\u9bba\u9bbb\u9bbc\u9bbd\u9bbe\u9bbf\u9bc0\u9bc1\u9bc2\u9bc3\u9bc4\u9bc5\u9bc6\u9bc7\u9bc8\u9bc9\u9bca\u9bcb\u9bcc\u9bcd\u9bce\u9bcf\u9bd0\u9bd1\u9bd2\u9bd3\u9bd4\u9bd5\u9bd6\u9bd7\u9bd8\u9bd9\u9bda\u9bdb\u9bdc\u9bdd\u9bde\u9bdf\u9be0\u9be1\u9be2\u9be3\u9be4\u9be5\u9be6\u9be7\u9be8\u9be9\u9bea\u9beb\u9bec\u9bed\u9bee\u9bef\u9bf0\u9bf1\u9bf2\u9bf3\u9bf4\u9bf5\u9bf6\u9bf7\u9bf8\u9bf9\u9bfa\u9bfb\u9bfc\u9bfd\u9bfe\u9bff\u9c00\u9c01\u9c02\u9c03\u9c04\u9c05\u9c06\u9c07\u9c08\u9c09\u9c0a\u9c0b\u9c0c\u9c0d\u9c0e\u9c0f\u9c10\u9c11\u9c12\u9c13\u9c14\u9c15\u9c16\u9c17\u9c18\u9c19\u9c1a\u9c1b\u9c1c\u9c1d\u9c1e\u9c1f\u9c20\u9c21\u9c22\u9c23\u9c24\u9c25\u9c26\u9c27\u9c28\u9c29\u9c2a\u9c2b\u9c2c\u9c2d\u9c2e\u9c2f\u9c30\u9c31\u9c32\u9c33\u9c34\u9c35\u9c36\u9c37\u9c38\u9c39\u9c3a\u9c3b\u9c3c\u9c3d\u9c3e\u9c3f\u9c40\u9c41\u9c42\u9c43\u9c44\u9c45\u9c46\u9c47\u9c48\u9c49\u9c4a\u9c4b\u9c4c\u9c4d\u9c4e\u9c4f\u9c50\u9c51\u9c52\u9c53\u9c54\u9c55\u9c56\u9c57\u9c58\u9c59\u9c5a\u9c5b\u9c5c\u9c5d\u9c5e\u9c5f\u9c60\u9c61\u9c62\u9c63\u9c64\u9c65\u9c66\u9c67\u9c68\u9c69\u9c6a\u9c6b\u9c6c\u9c6d\u9c6e\u9c6f\u9c70\u9c71\u9c72\u9c73\u9c74\u9c75\u9c76\u9c77\u9c78\u9c79\u9c7a\u9c7b\u9c7c\u9c7d\u9c7e\u9c7f\u9c80\u9c81\u9c82\u9c83\u9c84\u9c85\u9c86\u9c87\u9c88\u9c89\u9c8a\u9c8b\u9c8c\u9c8d\u9c8e\u9c8f\u9c90\u9c91\u9c92\u9c93\u9c94\u9c95\u9c96\u9c97\u9c98\u9c99\u9c9a\u9c9b\u9c9c\u9c9d\u9c9e\u9c9f\u9ca0\u9ca1\u9ca2\u9ca3\u9ca4\u9ca5\u9ca6\u9ca7\u9ca8\u9ca9\u9caa\u9cab\u9cac\u9cad\u9cae\u9caf\u9cb0\u9cb1\u9cb2\u9cb3\u9cb4\u9cb5\u9cb6\u9cb7\u9cb8\u9cb9\u9cba\u9cbb\u9cbc\u9cbd\u9cbe\u9cbf\u9cc0\u9cc1\u9cc2\u9cc3\u9cc4\u9cc5\u9cc6\u9cc7\u9cc8\u9cc9\u9cca\u9ccb\u9ccc\u9ccd\u9cce\u9ccf\u9cd0\u9cd1\u9cd2\u9cd3\u9cd4\u9cd5\u9cd6\u9cd7\u9cd8\u9cd9\u9cda\u9cdb\u9cdc\u9cdd\u9cde\u9cdf\u9ce0\u9ce1\u9ce2\u9ce3\u9ce4\u9ce5\u9ce6\u9ce7\u9ce8\u9ce9\u9cea\u9ceb\u9cec\u9ced\u9cee\u9cef\u9cf0\u9cf1\u9cf2\u9cf3\u9cf4\u9cf5\u9cf6\u9cf7\u9cf8\u9cf9\u9cfa\u9cfb\u9cfc\u9cfd\u9cfe\u9cff\u9d00\u9d01\u9d02\u9d03\u9d04\u9d05\u9d06\u9d07\u9d08\u9d09\u9d0a\u9d0b\u9d0c\u9d0d\u9d0e\u9d0f\u9d10\u9d11\u9d12\u9d13\u9d14\u9d15\u9d16\u9d17\u9d18\u9d19\u9d1a\u9d1b\u9d1c\u9d1d\u9d1e\u9d1f\u9d20\u9d21\u9d22\u9d23\u9d24\u9d25\u9d26\u9d27\u9d28\u9d29\u9d2a\u9d2b\u9d2c\u9d2d\u9d2e\u9d2f\u9d30\u9d31\u9d32\u9d33\u9d34\u9d35\u9d36\u9d37\u9d38\u9d39\u9d3a\u9d3b\u9d3c\u9d3d\u9d3e\u9d3f\u9d40\u9d41\u9d42\u9d43\u9d44\u9d45\u9d46\u9d47\u9d48\u9d49\u9d4a\u9d4b\u9d4c\u9d4d\u9d4e\u9d4f\u9d50\u9d51\u9d52\u9d53\u9d54\u9d55\u9d56\u9d57\u9d58\u9d59\u9d5a\u9d5b\u9d5c\u9d5d\u9d5e\u9d5f\u9d60\u9d61\u9d62\u9d63\u9d64\u9d65\u9d66\u9d67\u9d68\u9d69\u9d6a\u9d6b\u9d6c\u9d6d\u9d6e\u9d6f\u9d70\u9d71\u9d72\u9d73\u9d74\u9d75\u9d76\u9d77\u9d78\u9d79\u9d7a\u9d7b\u9d7c\u9d7d\u9d7e\u9d7f\u9d80\u9d81\u9d82\u9d83\u9d84\u9d85\u9d86\u9d87\u9d88\u9d89\u9d8a\u9d8b\u9d8c\u9d8d\u9d8e\u9d8f\u9d90\u9d91\u9d92\u9d93\u9d94\u9d95\u9d96\u9d97\u9d98\u9d99\u9d9a\u9d9b\u9d9c\u9d9d\u9d9e\u9d9f\u9da0\u9da1\u9da2\u9da3\u9da4\u9da5\u9da6\u9da7\u9da8\u9da9\u9daa\u9dab\u9dac\u9dad\u9dae\u9daf\u9db0\u9db1\u9db2\u9db3\u9db4\u9db5\u9db6\u9db7\u9db8\u9db9\u9dba\u9dbb\u9dbc\u9dbd\u9dbe\u9dbf\u9dc0\u9dc1\u9dc2\u9dc3\u9dc4\u9dc5\u9dc6\u9dc7\u9dc8\u9dc9\u9dca\u9dcb\u9dcc\u9dcd\u9dce\u9dcf\u9dd0\u9dd1\u9dd2\u9dd3\u9dd4\u9dd5\u9dd6\u9dd7\u9dd8\u9dd9\u9dda\u9ddb\u9ddc\u9ddd\u9dde\u9ddf\u9de0\u9de1\u9de2\u9de3\u9de4\u9de5\u9de6\u9de7\u9de8\u9de9\u9dea\u9deb\u9dec\u9ded\u9dee\u9def\u9df0\u9df1\u9df2\u9df3\u9df4\u9df5\u9df6\u9df7\u9df8\u9df9\u9dfa\u9dfb\u9dfc\u9dfd\u9dfe\u9dff\u9e00\u9e01\u9e02\u9e03\u9e04\u9e05\u9e06\u9e07\u9e08\u9e09\u9e0a\u9e0b\u9e0c\u9e0d\u9e0e\u9e0f\u9e10\u9e11\u9e12\u9e13\u9e14\u9e15\u9e16\u9e17\u9e18\u9e19\u9e1a\u9e1b\u9e1c\u9e1d\u9e1e\u9e1f\u9e20\u9e21\u9e22\u9e23\u9e24\u9e25\u9e26\u9e27\u9e28\u9e29\u9e2a\u9e2b\u9e2c\u9e2d\u9e2e\u9e2f\u9e30\u9e31\u9e32\u9e33\u9e34\u9e35\u9e36\u9e37\u9e38\u9e39\u9e3a\u9e3b\u9e3c\u9e3d\u9e3e\u9e3f\u9e40\u9e41\u9e42\u9e43\u9e44\u9e45\u9e46\u9e47\u9e48\u9e49\u9e4a\u9e4b\u9e4c\u9e4d\u9e4e\u9e4f\u9e50\u9e51\u9e52\u9e53\u9e54\u9e55\u9e56\u9e57\u9e58\u9e59\u9e5a\u9e5b\u9e5c\u9e5d\u9e5e\u9e5f\u9e60\u9e61\u9e62\u9e63\u9e64\u9e65\u9e66\u9e67\u9e68\u9e69\u9e6a\u9e6b\u9e6c\u9e6d\u9e6e\u9e6f\u9e70\u9e71\u9e72\u9e73\u9e74\u9e75\u9e76\u9e77\u9e78\u9e79\u9e7a\u9e7b\u9e7c\u9e7d\u9e7e\u9e7f\u9e80\u9e81\u9e82\u9e83\u9e84\u9e85\u9e86\u9e87\u9e88\u9e89\u9e8a\u9e8b\u9e8c\u9e8d\u9e8e\u9e8f\u9e90\u9e91\u9e92\u9e93\u9e94\u9e95\u9e96\u9e97\u9e98\u9e99\u9e9a\u9e9b\u9e9c\u9e9d\u9e9e\u9e9f\u9ea0\u9ea1\u9ea2\u9ea3\u9ea4\u9ea5\u9ea6\u9ea7\u9ea8\u9ea9\u9eaa\u9eab\u9eac\u9ead\u9eae\u9eaf\u9eb0\u9eb1\u9eb2\u9eb3\u9eb4\u9eb5\u9eb6\u9eb7\u9eb8\u9eb9\u9eba\u9ebb\u9ebc\u9ebd\u9ebe\u9ebf\u9ec0\u9ec1\u9ec2\u9ec3\u9ec4\u9ec5\u9ec6\u9ec7\u9ec8\u9ec9\u9eca\u9ecb\u9ecc\u9ecd\u9ece\u9ecf\u9ed0\u9ed1\u9ed2\u9ed3\u9ed4\u9ed5\u9ed6\u9ed7\u9ed8\u9ed9\u9eda\u9edb\u9edc\u9edd\u9ede\u9edf\u9ee0\u9ee1\u9ee2\u9ee3\u9ee4\u9ee5\u9ee6\u9ee7\u9ee8\u9ee9\u9eea\u9eeb\u9eec\u9eed\u9eee\u9eef\u9ef0\u9ef1\u9ef2\u9ef3\u9ef4\u9ef5\u9ef6\u9ef7\u9ef8\u9ef9\u9efa\u9efb\u9efc\u9efd\u9efe\u9eff\u9f00\u9f01\u9f02\u9f03\u9f04\u9f05\u9f06\u9f07\u9f08\u9f09\u9f0a\u9f0b\u9f0c\u9f0d\u9f0e\u9f0f\u9f10\u9f11\u9f12\u9f13\u9f14\u9f15\u9f16\u9f17\u9f18\u9f19\u9f1a\u9f1b\u9f1c\u9f1d\u9f1e\u9f1f\u9f20\u9f21\u9f22\u9f23\u9f24\u9f25\u9f26\u9f27\u9f28\u9f29\u9f2a\u9f2b\u9f2c\u9f2d\u9f2e\u9f2f\u9f30\u9f31\u9f32\u9f33\u9f34\u9f35\u9f36\u9f37\u9f38\u9f39\u9f3a\u9f3b\u9f3c\u9f3d\u9f3e\u9f3f\u9f40\u9f41\u9f42\u9f43\u9f44\u9f45\u9f46\u9f47\u9f48\u9f49\u9f4a\u9f4b\u9f4c\u9f4d\u9f4e\u9f4f\u9f50\u9f51\u9f52\u9f53\u9f54\u9f55\u9f56\u9f57\u9f58\u9f59\u9f5a\u9f5b\u9f5c\u9f5d\u9f5e\u9f5f\u9f60\u9f61\u9f62\u9f63\u9f64\u9f65\u9f66\u9f67\u9f68\u9f69\u9f6a\u9f6b\u9f6c\u9f6d\u9f6e\u9f6f\u9f70\u9f71\u9f72\u9f73\u9f74\u9f75\u9f76\u9f77\u9f78\u9f79\u9f7a\u9f7b\u9f7c\u9f7d\u9f7e\u9f7f\u9f80\u9f81\u9f82\u9f83\u9f84\u9f85\u9f86\u9f87\u9f88\u9f89\u9f8a\u9f8b\u9f8c\u9f8d\u9f8e\u9f8f\u9f90\u9f91\u9f92\u9f93\u9f94\u9f95\u9f96\u9f97\u9f98\u9f99\u9f9a\u9f9b\u9f9c\u9f9d\u9f9e\u9f9f\u9fa0\u9fa1\u9fa2\u9fa3\u9fa4\u9fa5\u9fa6\u9fa7\u9fa8\u9fa9\u9faa\u9fab\u9fac\u9fad\u9fae\u9faf\u9fb0\u9fb1\u9fb2\u9fb3\u9fb4\u9fb5\u9fb6\u9fb7\u9fb8\u9fb9\u9fba\u9fbb\u9fbc\u9fbd\u9fbe\u9fbf\u9fc0\u9fc1\u9fc2\u9fc3\u9fc4\u9fc5\u9fc6\u9fc7\u9fc8\u9fc9\u9fca\u9fcb\u9fcc\u9fcd\u9fce\u9fcf\u9fd0\u9fd1\u9fd2\u9fd3\u9fd4\u9fd5\ua000\ua001\ua002\ua003\ua004\ua005\ua006\ua007\ua008\ua009\ua00a\ua00b\ua00c\ua00d\ua00e\ua00f\ua010\ua011\ua012\ua013\ua014\ua015\ua016\ua017\ua018\ua019\ua01a\ua01b\ua01c\ua01d\ua01e\ua01f\ua020\ua021\ua022\ua023\ua024\ua025\ua026\ua027\ua028\ua029\ua02a\ua02b\ua02c\ua02d\ua02e\ua02f\ua030\ua031\ua032\ua033\ua034\ua035\ua036\ua037\ua038\ua039\ua03a\ua03b\ua03c\ua03d\ua03e\ua03f\ua040\ua041\ua042\ua043\ua044\ua045\ua046\ua047\ua048\ua049\ua04a\ua04b\ua04c\ua04d\ua04e\ua04f\ua050\ua051\ua052\ua053\ua054\ua055\ua056\ua057\ua058\ua059\ua05a\ua05b\ua05c\ua05d\ua05e\ua05f\ua060\ua061\ua062\ua063\ua064\ua065\ua066\ua067\ua068\ua069\ua06a\ua06b\ua06c\ua06d\ua06e\ua06f\ua070\ua071\ua072\ua073\ua074\ua075\ua076\ua077\ua078\ua079\ua07a\ua07b\ua07c\ua07d\ua07e\ua07f\ua080\ua081\ua082\ua083\ua084\ua085\ua086\ua087\ua088\ua089\ua08a\ua08b\ua08c\ua08d\ua08e\ua08f\ua090\ua091\ua092\ua093\ua094\ua095\ua096\ua097\ua098\ua099\ua09a\ua09b\ua09c\ua09d\ua09e\ua09f\ua0a0\ua0a1\ua0a2\ua0a3\ua0a4\ua0a5\ua0a6\ua0a7\ua0a8\ua0a9\ua0aa\ua0ab\ua0ac\ua0ad\ua0ae\ua0af\ua0b0\ua0b1\ua0b2\ua0b3\ua0b4\ua0b5\ua0b6\ua0b7\ua0b8\ua0b9\ua0ba\ua0bb\ua0bc\ua0bd\ua0be\ua0bf\ua0c0\ua0c1\ua0c2\ua0c3\ua0c4\ua0c5\ua0c6\ua0c7\ua0c8\ua0c9\ua0ca\ua0cb\ua0cc\ua0cd\ua0ce\ua0cf\ua0d0\ua0d1\ua0d2\ua0d3\ua0d4\ua0d5\ua0d6\ua0d7\ua0d8\ua0d9\ua0da\ua0db\ua0dc\ua0dd\ua0de\ua0df\ua0e0\ua0e1\ua0e2\ua0e3\ua0e4\ua0e5\ua0e6\ua0e7\ua0e8\ua0e9\ua0ea\ua0eb\ua0ec\ua0ed\ua0ee\ua0ef\ua0f0\ua0f1\ua0f2\ua0f3\ua0f4\ua0f5\ua0f6\ua0f7\ua0f8\ua0f9\ua0fa\ua0fb\ua0fc\ua0fd\ua0fe\ua0ff\ua100\ua101\ua102\ua103\ua104\ua105\ua106\ua107\ua108\ua109\ua10a\ua10b\ua10c\ua10d\ua10e\ua10f\ua110\ua111\ua112\ua113\ua114\ua115\ua116\ua117\ua118\ua119\ua11a\ua11b\ua11c\ua11d\ua11e\ua11f\ua120\ua121\ua122\ua123\ua124\ua125\ua126\ua127\ua128\ua129\ua12a\ua12b\ua12c\ua12d\ua12e\ua12f\ua130\ua131\ua132\ua133\ua134\ua135\ua136\ua137\ua138\ua139\ua13a\ua13b\ua13c\ua13d\ua13e\ua13f\ua140\ua141\ua142\ua143\ua144\ua145\ua146\ua147\ua148\ua149\ua14a\ua14b\ua14c\ua14d\ua14e\ua14f\ua150\ua151\ua152\ua153\ua154\ua155\ua156\ua157\ua158\ua159\ua15a\ua15b\ua15c\ua15d\ua15e\ua15f\ua160\ua161\ua162\ua163\ua164\ua165\ua166\ua167\ua168\ua169\ua16a\ua16b\ua16c\ua16d\ua16e\ua16f\ua170\ua171\ua172\ua173\ua174\ua175\ua176\ua177\ua178\ua179\ua17a\ua17b\ua17c\ua17d\ua17e\ua17f\ua180\ua181\ua182\ua183\ua184\ua185\ua186\ua187\ua188\ua189\ua18a\ua18b\ua18c\ua18d\ua18e\ua18f\ua190\ua191\ua192\ua193\ua194\ua195\ua196\ua197\ua198\ua199\ua19a\ua19b\ua19c\ua19d\ua19e\ua19f\ua1a0\ua1a1\ua1a2\ua1a3\ua1a4\ua1a5\ua1a6\ua1a7\ua1a8\ua1a9\ua1aa\ua1ab\ua1ac\ua1ad\ua1ae\ua1af\ua1b0\ua1b1\ua1b2\ua1b3\ua1b4\ua1b5\ua1b6\ua1b7\ua1b8\ua1b9\ua1ba\ua1bb\ua1bc\ua1bd\ua1be\ua1bf\ua1c0\ua1c1\ua1c2\ua1c3\ua1c4\ua1c5\ua1c6\ua1c7\ua1c8\ua1c9\ua1ca\ua1cb\ua1cc\ua1cd\ua1ce\ua1cf\ua1d0\ua1d1\ua1d2\ua1d3\ua1d4\ua1d5\ua1d6\ua1d7\ua1d8\ua1d9\ua1da\ua1db\ua1dc\ua1dd\ua1de\ua1df\ua1e0\ua1e1\ua1e2\ua1e3\ua1e4\ua1e5\ua1e6\ua1e7\ua1e8\ua1e9\ua1ea\ua1eb\ua1ec\ua1ed\ua1ee\ua1ef\ua1f0\ua1f1\ua1f2\ua1f3\ua1f4\ua1f5\ua1f6\ua1f7\ua1f8\ua1f9\ua1fa\ua1fb\ua1fc\ua1fd\ua1fe\ua1ff\ua200\ua201\ua202\ua203\ua204\ua205\ua206\ua207\ua208\ua209\ua20a\ua20b\ua20c\ua20d\ua20e\ua20f\ua210\ua211\ua212\ua213\ua214\ua215\ua216\ua217\ua218\ua219\ua21a\ua21b\ua21c\ua21d\ua21e\ua21f\ua220\ua221\ua222\ua223\ua224\ua225\ua226\ua227\ua228\ua229\ua22a\ua22b\ua22c\ua22d\ua22e\ua22f\ua230\ua231\ua232\ua233\ua234\ua235\ua236\ua237\ua238\ua239\ua23a\ua23b\ua23c\ua23d\ua23e\ua23f\ua240\ua241\ua242\ua243\ua244\ua245\ua246\ua247\ua248\ua249\ua24a\ua24b\ua24c\ua24d\ua24e\ua24f\ua250\ua251\ua252\ua253\ua254\ua255\ua256\ua257\ua258\ua259\ua25a\ua25b\ua25c\ua25d\ua25e\ua25f\ua260\ua261\ua262\ua263\ua264\ua265\ua266\ua267\ua268\ua269\ua26a\ua26b\ua26c\ua26d\ua26e\ua26f\ua270\ua271\ua272\ua273\ua274\ua275\ua276\ua277\ua278\ua279\ua27a\ua27b\ua27c\ua27d\ua27e\ua27f\ua280\ua281\ua282\ua283\ua284\ua285\ua286\ua287\ua288\ua289\ua28a\ua28b\ua28c\ua28d\ua28e\ua28f\ua290\ua291\ua292\ua293\ua294\ua295\ua296\ua297\ua298\ua299\ua29a\ua29b\ua29c\ua29d\ua29e\ua29f\ua2a0\ua2a1\ua2a2\ua2a3\ua2a4\ua2a5\ua2a6\ua2a7\ua2a8\ua2a9\ua2aa\ua2ab\ua2ac\ua2ad\ua2ae\ua2af\ua2b0\ua2b1\ua2b2\ua2b3\ua2b4\ua2b5\ua2b6\ua2b7\ua2b8\ua2b9\ua2ba\ua2bb\ua2bc\ua2bd\ua2be\ua2bf\ua2c0\ua2c1\ua2c2\ua2c3\ua2c4\ua2c5\ua2c6\ua2c7\ua2c8\ua2c9\ua2ca\ua2cb\ua2cc\ua2cd\ua2ce\ua2cf\ua2d0\ua2d1\ua2d2\ua2d3\ua2d4\ua2d5\ua2d6\ua2d7\ua2d8\ua2d9\ua2da\ua2db\ua2dc\ua2dd\ua2de\ua2df\ua2e0\ua2e1\ua2e2\ua2e3\ua2e4\ua2e5\ua2e6\ua2e7\ua2e8\ua2e9\ua2ea\ua2eb\ua2ec\ua2ed\ua2ee\ua2ef\ua2f0\ua2f1\ua2f2\ua2f3\ua2f4\ua2f5\ua2f6\ua2f7\ua2f8\ua2f9\ua2fa\ua2fb\ua2fc\ua2fd\ua2fe\ua2ff\ua300\ua301\ua302\ua303\ua304\ua305\ua306\ua307\ua308\ua309\ua30a\ua30b\ua30c\ua30d\ua30e\ua30f\ua310\ua311\ua312\ua313\ua314\ua315\ua316\ua317\ua318\ua319\ua31a\ua31b\ua31c\ua31d\ua31e\ua31f\ua320\ua321\ua322\ua323\ua324\ua325\ua326\ua327\ua328\ua329\ua32a\ua32b\ua32c\ua32d\ua32e\ua32f\ua330\ua331\ua332\ua333\ua334\ua335\ua336\ua337\ua338\ua339\ua33a\ua33b\ua33c\ua33d\ua33e\ua33f\ua340\ua341\ua342\ua343\ua344\ua345\ua346\ua347\ua348\ua349\ua34a\ua34b\ua34c\ua34d\ua34e\ua34f\ua350\ua351\ua352\ua353\ua354\ua355\ua356\ua357\ua358\ua359\ua35a\ua35b\ua35c\ua35d\ua35e\ua35f\ua360\ua361\ua362\ua363\ua364\ua365\ua366\ua367\ua368\ua369\ua36a\ua36b\ua36c\ua36d\ua36e\ua36f\ua370\ua371\ua372\ua373\ua374\ua375\ua376\ua377\ua378\ua379\ua37a\ua37b\ua37c\ua37d\ua37e\ua37f\ua380\ua381\ua382\ua383\ua384\ua385\ua386\ua387\ua388\ua389\ua38a\ua38b\ua38c\ua38d\ua38e\ua38f\ua390\ua391\ua392\ua393\ua394\ua395\ua396\ua397\ua398\ua399\ua39a\ua39b\ua39c\ua39d\ua39e\ua39f\ua3a0\ua3a1\ua3a2\ua3a3\ua3a4\ua3a5\ua3a6\ua3a7\ua3a8\ua3a9\ua3aa\ua3ab\ua3ac\ua3ad\ua3ae\ua3af\ua3b0\ua3b1\ua3b2\ua3b3\ua3b4\ua3b5\ua3b6\ua3b7\ua3b8\ua3b9\ua3ba\ua3bb\ua3bc\ua3bd\ua3be\ua3bf\ua3c0\ua3c1\ua3c2\ua3c3\ua3c4\ua3c5\ua3c6\ua3c7\ua3c8\ua3c9\ua3ca\ua3cb\ua3cc\ua3cd\ua3ce\ua3cf\ua3d0\ua3d1\ua3d2\ua3d3\ua3d4\ua3d5\ua3d6\ua3d7\ua3d8\ua3d9\ua3da\ua3db\ua3dc\ua3dd\ua3de\ua3df\ua3e0\ua3e1\ua3e2\ua3e3\ua3e4\ua3e5\ua3e6\ua3e7\ua3e8\ua3e9\ua3ea\ua3eb\ua3ec\ua3ed\ua3ee\ua3ef\ua3f0\ua3f1\ua3f2\ua3f3\ua3f4\ua3f5\ua3f6\ua3f7\ua3f8\ua3f9\ua3fa\ua3fb\ua3fc\ua3fd\ua3fe\ua3ff\ua400\ua401\ua402\ua403\ua404\ua405\ua406\ua407\ua408\ua409\ua40a\ua40b\ua40c\ua40d\ua40e\ua40f\ua410\ua411\ua412\ua413\ua414\ua415\ua416\ua417\ua418\ua419\ua41a\ua41b\ua41c\ua41d\ua41e\ua41f\ua420\ua421\ua422\ua423\ua424\ua425\ua426\ua427\ua428\ua429\ua42a\ua42b\ua42c\ua42d\ua42e\ua42f\ua430\ua431\ua432\ua433\ua434\ua435\ua436\ua437\ua438\ua439\ua43a\ua43b\ua43c\ua43d\ua43e\ua43f\ua440\ua441\ua442\ua443\ua444\ua445\ua446\ua447\ua448\ua449\ua44a\ua44b\ua44c\ua44d\ua44e\ua44f\ua450\ua451\ua452\ua453\ua454\ua455\ua456\ua457\ua458\ua459\ua45a\ua45b\ua45c\ua45d\ua45e\ua45f\ua460\ua461\ua462\ua463\ua464\ua465\ua466\ua467\ua468\ua469\ua46a\ua46b\ua46c\ua46d\ua46e\ua46f\ua470\ua471\ua472\ua473\ua474\ua475\ua476\ua477\ua478\ua479\ua47a\ua47b\ua47c\ua47d\ua47e\ua47f\ua480\ua481\ua482\ua483\ua484\ua485\ua486\ua487\ua488\ua489\ua48a\ua48b\ua48c\ua4d0\ua4d1\ua4d2\ua4d3\ua4d4\ua4d5\ua4d6\ua4d7\ua4d8\ua4d9\ua4da\ua4db\ua4dc\ua4dd\ua4de\ua4df\ua4e0\ua4e1\ua4e2\ua4e3\ua4e4\ua4e5\ua4e6\ua4e7\ua4e8\ua4e9\ua4ea\ua4eb\ua4ec\ua4ed\ua4ee\ua4ef\ua4f0\ua4f1\ua4f2\ua4f3\ua4f4\ua4f5\ua4f6\ua4f7\ua4f8\ua4f9\ua4fa\ua4fb\ua4fc\ua4fd\ua500\ua501\ua502\ua503\ua504\ua505\ua506\ua507\ua508\ua509\ua50a\ua50b\ua50c\ua50d\ua50e\ua50f\ua510\ua511\ua512\ua513\ua514\ua515\ua516\ua517\ua518\ua519\ua51a\ua51b\ua51c\ua51d\ua51e\ua51f\ua520\ua521\ua522\ua523\ua524\ua525\ua526\ua527\ua528\ua529\ua52a\ua52b\ua52c\ua52d\ua52e\ua52f\ua530\ua531\ua532\ua533\ua534\ua535\ua536\ua537\ua538\ua539\ua53a\ua53b\ua53c\ua53d\ua53e\ua53f\ua540\ua541\ua542\ua543\ua544\ua545\ua546\ua547\ua548\ua549\ua54a\ua54b\ua54c\ua54d\ua54e\ua54f\ua550\ua551\ua552\ua553\ua554\ua555\ua556\ua557\ua558\ua559\ua55a\ua55b\ua55c\ua55d\ua55e\ua55f\ua560\ua561\ua562\ua563\ua564\ua565\ua566\ua567\ua568\ua569\ua56a\ua56b\ua56c\ua56d\ua56e\ua56f\ua570\ua571\ua572\ua573\ua574\ua575\ua576\ua577\ua578\ua579\ua57a\ua57b\ua57c\ua57d\ua57e\ua57f\ua580\ua581\ua582\ua583\ua584\ua585\ua586\ua587\ua588\ua589\ua58a\ua58b\ua58c\ua58d\ua58e\ua58f\ua590\ua591\ua592\ua593\ua594\ua595\ua596\ua597\ua598\ua599\ua59a\ua59b\ua59c\ua59d\ua59e\ua59f\ua5a0\ua5a1\ua5a2\ua5a3\ua5a4\ua5a5\ua5a6\ua5a7\ua5a8\ua5a9\ua5aa\ua5ab\ua5ac\ua5ad\ua5ae\ua5af\ua5b0\ua5b1\ua5b2\ua5b3\ua5b4\ua5b5\ua5b6\ua5b7\ua5b8\ua5b9\ua5ba\ua5bb\ua5bc\ua5bd\ua5be\ua5bf\ua5c0\ua5c1\ua5c2\ua5c3\ua5c4\ua5c5\ua5c6\ua5c7\ua5c8\ua5c9\ua5ca\ua5cb\ua5cc\ua5cd\ua5ce\ua5cf\ua5d0\ua5d1\ua5d2\ua5d3\ua5d4\ua5d5\ua5d6\ua5d7\ua5d8\ua5d9\ua5da\ua5db\ua5dc\ua5dd\ua5de\ua5df\ua5e0\ua5e1\ua5e2\ua5e3\ua5e4\ua5e5\ua5e6\ua5e7\ua5e8\ua5e9\ua5ea\ua5eb\ua5ec\ua5ed\ua5ee\ua5ef\ua5f0\ua5f1\ua5f2\ua5f3\ua5f4\ua5f5\ua5f6\ua5f7\ua5f8\ua5f9\ua5fa\ua5fb\ua5fc\ua5fd\ua5fe\ua5ff\ua600\ua601\ua602\ua603\ua604\ua605\ua606\ua607\ua608\ua609\ua60a\ua60b\ua60c\ua610\ua611\ua612\ua613\ua614\ua615\ua616\ua617\ua618\ua619\ua61a\ua61b\ua61c\ua61d\ua61e\ua61f\ua62a\ua62b\ua640\ua641\ua642\ua643\ua644\ua645\ua646\ua647\ua648\ua649\ua64a\ua64b\ua64c\ua64d\ua64e\ua64f\ua650\ua651\ua652\ua653\ua654\ua655\ua656\ua657\ua658\ua659\ua65a\ua65b\ua65c\ua65d\ua65e\ua65f\ua660\ua661\ua662\ua663\ua664\ua665\ua666\ua667\ua668\ua669\ua66a\ua66b\ua66c\ua66d\ua66e\ua67f\ua680\ua681\ua682\ua683\ua684\ua685\ua686\ua687\ua688\ua689\ua68a\ua68b\ua68c\ua68d\ua68e\ua68f\ua690\ua691\ua692\ua693\ua694\ua695\ua696\ua697\ua698\ua699\ua69a\ua69b\ua69c\ua69d\ua6a0\ua6a1\ua6a2\ua6a3\ua6a4\ua6a5\ua6a6\ua6a7\ua6a8\ua6a9\ua6aa\ua6ab\ua6ac\ua6ad\ua6ae\ua6af\ua6b0\ua6b1\ua6b2\ua6b3\ua6b4\ua6b5\ua6b6\ua6b7\ua6b8\ua6b9\ua6ba\ua6bb\ua6bc\ua6bd\ua6be\ua6bf\ua6c0\ua6c1\ua6c2\ua6c3\ua6c4\ua6c5\ua6c6\ua6c7\ua6c8\ua6c9\ua6ca\ua6cb\ua6cc\ua6cd\ua6ce\ua6cf\ua6d0\ua6d1\ua6d2\ua6d3\ua6d4\ua6d5\ua6d6\ua6d7\ua6d8\ua6d9\ua6da\ua6db\ua6dc\ua6dd\ua6de\ua6df\ua6e0\ua6e1\ua6e2\ua6e3\ua6e4\ua6e5\ua6e6\ua6e7\ua6e8\ua6e9\ua6ea\ua6eb\ua6ec\ua6ed\ua6ee\ua6ef\ua717\ua718\ua719\ua71a\ua71b\ua71c\ua71d\ua71e\ua71f\ua722\ua723\ua724\ua725\ua726\ua727\ua728\ua729\ua72a\ua72b\ua72c\ua72d\ua72e\ua72f\ua730\ua731\ua732\ua733\ua734\ua735\ua736\ua737\ua738\ua739\ua73a\ua73b\ua73c\ua73d\ua73e\ua73f\ua740\ua741\ua742\ua743\ua744\ua745\ua746\ua747\ua748\ua749\ua74a\ua74b\ua74c\ua74d\ua74e\ua74f\ua750\ua751\ua752\ua753\ua754\ua755\ua756\ua757\ua758\ua759\ua75a\ua75b\ua75c\ua75d\ua75e\ua75f\ua760\ua761\ua762\ua763\ua764\ua765\ua766\ua767\ua768\ua769\ua76a\ua76b\ua76c\ua76d\ua76e\ua76f\ua770\ua771\ua772\ua773\ua774\ua775\ua776\ua777\ua778\ua779\ua77a\ua77b\ua77c\ua77d\ua77e\ua77f\ua780\ua781\ua782\ua783\ua784\ua785\ua786\ua787\ua788\ua78b\ua78c\ua78d\ua78e\ua78f\ua790\ua791\ua792\ua793\ua794\ua795\ua796\ua797\ua798\ua799\ua79a\ua79b\ua79c\ua79d\ua79e\ua79f\ua7a0\ua7a1\ua7a2\ua7a3\ua7a4\ua7a5\ua7a6\ua7a7\ua7a8\ua7a9\ua7aa\ua7ab\ua7ac\ua7ad\ua7ae\ua7b0\ua7b1\ua7b2\ua7b3\ua7b4\ua7b5\ua7b6\ua7b7\ua7f7\ua7f8\ua7f9\ua7fa\ua7fb\ua7fc\ua7fd\ua7fe\ua7ff\ua800\ua801\ua803\ua804\ua805\ua807\ua808\ua809\ua80a\ua80c\ua80d\ua80e\ua80f\ua810\ua811\ua812\ua813\ua814\ua815\ua816\ua817\ua818\ua819\ua81a\ua81b\ua81c\ua81d\ua81e\ua81f\ua820\ua821\ua822\ua840\ua841\ua842\ua843\ua844\ua845\ua846\ua847\ua848\ua849\ua84a\ua84b\ua84c\ua84d\ua84e\ua84f\ua850\ua851\ua852\ua853\ua854\ua855\ua856\ua857\ua858\ua859\ua85a\ua85b\ua85c\ua85d\ua85e\ua85f\ua860\ua861\ua862\ua863\ua864\ua865\ua866\ua867\ua868\ua869\ua86a\ua86b\ua86c\ua86d\ua86e\ua86f\ua870\ua871\ua872\ua873\ua882\ua883\ua884\ua885\ua886\ua887\ua888\ua889\ua88a\ua88b\ua88c\ua88d\ua88e\ua88f\ua890\ua891\ua892\ua893\ua894\ua895\ua896\ua897\ua898\ua899\ua89a\ua89b\ua89c\ua89d\ua89e\ua89f\ua8a0\ua8a1\ua8a2\ua8a3\ua8a4\ua8a5\ua8a6\ua8a7\ua8a8\ua8a9\ua8aa\ua8ab\ua8ac\ua8ad\ua8ae\ua8af\ua8b0\ua8b1\ua8b2\ua8b3\ua8f2\ua8f3\ua8f4\ua8f5\ua8f6\ua8f7\ua8fb\ua8fd\ua90a\ua90b\ua90c\ua90d\ua90e\ua90f\ua910\ua911\ua912\ua913\ua914\ua915\ua916\ua917\ua918\ua919\ua91a\ua91b\ua91c\ua91d\ua91e\ua91f\ua920\ua921\ua922\ua923\ua924\ua925\ua930\ua931\ua932\ua933\ua934\ua935\ua936\ua937\ua938\ua939\ua93a\ua93b\ua93c\ua93d\ua93e\ua93f\ua940\ua941\ua942\ua943\ua944\ua945\ua946\ua960\ua961\ua962\ua963\ua964\ua965\ua966\ua967\ua968\ua969\ua96a\ua96b\ua96c\ua96d\ua96e\ua96f\ua970\ua971\ua972\ua973\ua974\ua975\ua976\ua977\ua978\ua979\ua97a\ua97b\ua97c\ua984\ua985\ua986\ua987\ua988\ua989\ua98a\ua98b\ua98c\ua98d\ua98e\ua98f\ua990\ua991\ua992\ua993\ua994\ua995\ua996\ua997\ua998\ua999\ua99a\ua99b\ua99c\ua99d\ua99e\ua99f\ua9a0\ua9a1\ua9a2\ua9a3\ua9a4\ua9a5\ua9a6\ua9a7\ua9a8\ua9a9\ua9aa\ua9ab\ua9ac\ua9ad\ua9ae\ua9af\ua9b0\ua9b1\ua9b2\ua9cf\ua9e0\ua9e1\ua9e2\ua9e3\ua9e4\ua9e6\ua9e7\ua9e8\ua9e9\ua9ea\ua9eb\ua9ec\ua9ed\ua9ee\ua9ef\ua9fa\ua9fb\ua9fc\ua9fd\ua9fe\uaa00\uaa01\uaa02\uaa03\uaa04\uaa05\uaa06\uaa07\uaa08\uaa09\uaa0a\uaa0b\uaa0c\uaa0d\uaa0e\uaa0f\uaa10\uaa11\uaa12\uaa13\uaa14\uaa15\uaa16\uaa17\uaa18\uaa19\uaa1a\uaa1b\uaa1c\uaa1d\uaa1e\uaa1f\uaa20\uaa21\uaa22\uaa23\uaa24\uaa25\uaa26\uaa27\uaa28\uaa40\uaa41\uaa42\uaa44\uaa45\uaa46\uaa47\uaa48\uaa49\uaa4a\uaa4b\uaa60\uaa61\uaa62\uaa63\uaa64\uaa65\uaa66\uaa67\uaa68\uaa69\uaa6a\uaa6b\uaa6c\uaa6d\uaa6e\uaa6f\uaa70\uaa71\uaa72\uaa73\uaa74\uaa75\uaa76\uaa7a\uaa7e\uaa7f\uaa80\uaa81\uaa82\uaa83\uaa84\uaa85\uaa86\uaa87\uaa88\uaa89\uaa8a\uaa8b\uaa8c\uaa8d\uaa8e\uaa8f\uaa90\uaa91\uaa92\uaa93\uaa94\uaa95\uaa96\uaa97\uaa98\uaa99\uaa9a\uaa9b\uaa9c\uaa9d\uaa9e\uaa9f\uaaa0\uaaa1\uaaa2\uaaa3\uaaa4\uaaa5\uaaa6\uaaa7\uaaa8\uaaa9\uaaaa\uaaab\uaaac\uaaad\uaaae\uaaaf\uaab1\uaab5\uaab6\uaab9\uaaba\uaabb\uaabc\uaabd\uaac0\uaac2\uaadb\uaadc\uaadd\uaae0\uaae1\uaae2\uaae3\uaae4\uaae5\uaae6\uaae7\uaae8\uaae9\uaaea\uaaf2\uaaf3\uaaf4\uab01\uab02\uab03\uab04\uab05\uab06\uab09\uab0a\uab0b\uab0c\uab0d\uab0e\uab11\uab12\uab13\uab14\uab15\uab16\uab20\uab21\uab22\uab23\uab24\uab25\uab26\uab28\uab29\uab2a\uab2b\uab2c\uab2d\uab2e\uab30\uab31\uab32\uab33\uab34\uab35\uab36\uab37\uab38\uab39\uab3a\uab3b\uab3c\uab3d\uab3e\uab3f\uab40\uab41\uab42\uab43\uab44\uab45\uab46\uab47\uab48\uab49\uab4a\uab4b\uab4c\uab4d\uab4e\uab4f\uab50\uab51\uab52\uab53\uab54\uab55\uab56\uab57\uab58\uab59\uab5a\uab5c\uab5d\uab5e\uab5f\uab60\uab61\uab62\uab63\uab64\uab65\uab70\uab71\uab72\uab73\uab74\uab75\uab76\uab77\uab78\uab79\uab7a\uab7b\uab7c\uab7d\uab7e\uab7f\uab80\uab81\uab82\uab83\uab84\uab85\uab86\uab87\uab88\uab89\uab8a\uab8b\uab8c\uab8d\uab8e\uab8f\uab90\uab91\uab92\uab93\uab94\uab95\uab96\uab97\uab98\uab99\uab9a\uab9b\uab9c\uab9d\uab9e\uab9f\uaba0\uaba1\uaba2\uaba3\uaba4\uaba5\uaba6\uaba7\uaba8\uaba9\uabaa\uabab\uabac\uabad\uabae\uabaf\uabb0\uabb1\uabb2\uabb3\uabb4\uabb5\uabb6\uabb7\uabb8\uabb9\uabba\uabbb\uabbc\uabbd\uabbe\uabbf\uabc0\uabc1\uabc2\uabc3\uabc4\uabc5\uabc6\uabc7\uabc8\uabc9\uabca\uabcb\uabcc\uabcd\uabce\uabcf\uabd0\uabd1\uabd2\uabd3\uabd4\uabd5\uabd6\uabd7\uabd8\uabd9\uabda\uabdb\uabdc\uabdd\uabde\uabdf\uabe0\uabe1\uabe2\uac00\uac01\uac02\uac03\uac04\uac05\uac06\uac07\uac08\uac09\uac0a\uac0b\uac0c\uac0d\uac0e\uac0f\uac10\uac11\uac12\uac13\uac14\uac15\uac16\uac17\uac18\uac19\uac1a\uac1b\uac1c\uac1d\uac1e\uac1f\uac20\uac21\uac22\uac23\uac24\uac25\uac26\uac27\uac28\uac29\uac2a\uac2b\uac2c\uac2d\uac2e\uac2f\uac30\uac31\uac32\uac33\uac34\uac35\uac36\uac37\uac38\uac39\uac3a\uac3b\uac3c\uac3d\uac3e\uac3f\uac40\uac41\uac42\uac43\uac44\uac45\uac46\uac47\uac48\uac49\uac4a\uac4b\uac4c\uac4d\uac4e\uac4f\uac50\uac51\uac52\uac53\uac54\uac55\uac56\uac57\uac58\uac59\uac5a\uac5b\uac5c\uac5d\uac5e\uac5f\uac60\uac61\uac62\uac63\uac64\uac65\uac66\uac67\uac68\uac69\uac6a\uac6b\uac6c\uac6d\uac6e\uac6f\uac70\uac71\uac72\uac73\uac74\uac75\uac76\uac77\uac78\uac79\uac7a\uac7b\uac7c\uac7d\uac7e\uac7f\uac80\uac81\uac82\uac83\uac84\uac85\uac86\uac87\uac88\uac89\uac8a\uac8b\uac8c\uac8d\uac8e\uac8f\uac90\uac91\uac92\uac93\uac94\uac95\uac96\uac97\uac98\uac99\uac9a\uac9b\uac9c\uac9d\uac9e\uac9f\uaca0\uaca1\uaca2\uaca3\uaca4\uaca5\uaca6\uaca7\uaca8\uaca9\uacaa\uacab\uacac\uacad\uacae\uacaf\uacb0\uacb1\uacb2\uacb3\uacb4\uacb5\uacb6\uacb7\uacb8\uacb9\uacba\uacbb\uacbc\uacbd\uacbe\uacbf\uacc0\uacc1\uacc2\uacc3\uacc4\uacc5\uacc6\uacc7\uacc8\uacc9\uacca\uaccb\uaccc\uaccd\uacce\uaccf\uacd0\uacd1\uacd2\uacd3\uacd4\uacd5\uacd6\uacd7\uacd8\uacd9\uacda\uacdb\uacdc\uacdd\uacde\uacdf\uace0\uace1\uace2\uace3\uace4\uace5\uace6\uace7\uace8\uace9\uacea\uaceb\uacec\uaced\uacee\uacef\uacf0\uacf1\uacf2\uacf3\uacf4\uacf5\uacf6\uacf7\uacf8\uacf9\uacfa\uacfb\uacfc\uacfd\uacfe\uacff\uad00\uad01\uad02\uad03\uad04\uad05\uad06\uad07\uad08\uad09\uad0a\uad0b\uad0c\uad0d\uad0e\uad0f\uad10\uad11\uad12\uad13\uad14\uad15\uad16\uad17\uad18\uad19\uad1a\uad1b\uad1c\uad1d\uad1e\uad1f\uad20\uad21\uad22\uad23\uad24\uad25\uad26\uad27\uad28\uad29\uad2a\uad2b\uad2c\uad2d\uad2e\uad2f\uad30\uad31\uad32\uad33\uad34\uad35\uad36\uad37\uad38\uad39\uad3a\uad3b\uad3c\uad3d\uad3e\uad3f\uad40\uad41\uad42\uad43\uad44\uad45\uad46\uad47\uad48\uad49\uad4a\uad4b\uad4c\uad4d\uad4e\uad4f\uad50\uad51\uad52\uad53\uad54\uad55\uad56\uad57\uad58\uad59\uad5a\uad5b\uad5c\uad5d\uad5e\uad5f\uad60\uad61\uad62\uad63\uad64\uad65\uad66\uad67\uad68\uad69\uad6a\uad6b\uad6c\uad6d\uad6e\uad6f\uad70\uad71\uad72\uad73\uad74\uad75\uad76\uad77\uad78\uad79\uad7a\uad7b\uad7c\uad7d\uad7e\uad7f\uad80\uad81\uad82\uad83\uad84\uad85\uad86\uad87\uad88\uad89\uad8a\uad8b\uad8c\uad8d\uad8e\uad8f\uad90\uad91\uad92\uad93\uad94\uad95\uad96\uad97\uad98\uad99\uad9a\uad9b\uad9c\uad9d\uad9e\uad9f\uada0\uada1\uada2\uada3\uada4\uada5\uada6\uada7\uada8\uada9\uadaa\uadab\uadac\uadad\uadae\uadaf\uadb0\uadb1\uadb2\uadb3\uadb4\uadb5\uadb6\uadb7\uadb8\uadb9\uadba\uadbb\uadbc\uadbd\uadbe\uadbf\uadc0\uadc1\uadc2\uadc3\uadc4\uadc5\uadc6\uadc7\uadc8\uadc9\uadca\uadcb\uadcc\uadcd\uadce\uadcf\uadd0\uadd1\uadd2\uadd3\uadd4\uadd5\uadd6\uadd7\uadd8\uadd9\uadda\uaddb\uaddc\uaddd\uadde\uaddf\uade0\uade1\uade2\uade3\uade4\uade5\uade6\uade7\uade8\uade9\uadea\uadeb\uadec\uaded\uadee\uadef\uadf0\uadf1\uadf2\uadf3\uadf4\uadf5\uadf6\uadf7\uadf8\uadf9\uadfa\uadfb\uadfc\uadfd\uadfe\uadff\uae00\uae01\uae02\uae03\uae04\uae05\uae06\uae07\uae08\uae09\uae0a\uae0b\uae0c\uae0d\uae0e\uae0f\uae10\uae11\uae12\uae13\uae14\uae15\uae16\uae17\uae18\uae19\uae1a\uae1b\uae1c\uae1d\uae1e\uae1f\uae20\uae21\uae22\uae23\uae24\uae25\uae26\uae27\uae28\uae29\uae2a\uae2b\uae2c\uae2d\uae2e\uae2f\uae30\uae31\uae32\uae33\uae34\uae35\uae36\uae37\uae38\uae39\uae3a\uae3b\uae3c\uae3d\uae3e\uae3f\uae40\uae41\uae42\uae43\uae44\uae45\uae46\uae47\uae48\uae49\uae4a\uae4b\uae4c\uae4d\uae4e\uae4f\uae50\uae51\uae52\uae53\uae54\uae55\uae56\uae57\uae58\uae59\uae5a\uae5b\uae5c\uae5d\uae5e\uae5f\uae60\uae61\uae62\uae63\uae64\uae65\uae66\uae67\uae68\uae69\uae6a\uae6b\uae6c\uae6d\uae6e\uae6f\uae70\uae71\uae72\uae73\uae74\uae75\uae76\uae77\uae78\uae79\uae7a\uae7b\uae7c\uae7d\uae7e\uae7f\uae80\uae81\uae82\uae83\uae84\uae85\uae86\uae87\uae88\uae89\uae8a\uae8b\uae8c\uae8d\uae8e\uae8f\uae90\uae91\uae92\uae93\uae94\uae95\uae96\uae97\uae98\uae99\uae9a\uae9b\uae9c\uae9d\uae9e\uae9f\uaea0\uaea1\uaea2\uaea3\uaea4\uaea5\uaea6\uaea7\uaea8\uaea9\uaeaa\uaeab\uaeac\uaead\uaeae\uaeaf\uaeb0\uaeb1\uaeb2\uaeb3\uaeb4\uaeb5\uaeb6\uaeb7\uaeb8\uaeb9\uaeba\uaebb\uaebc\uaebd\uaebe\uaebf\uaec0\uaec1\uaec2\uaec3\uaec4\uaec5\uaec6\uaec7\uaec8\uaec9\uaeca\uaecb\uaecc\uaecd\uaece\uaecf\uaed0\uaed1\uaed2\uaed3\uaed4\uaed5\uaed6\uaed7\uaed8\uaed9\uaeda\uaedb\uaedc\uaedd\uaede\uaedf\uaee0\uaee1\uaee2\uaee3\uaee4\uaee5\uaee6\uaee7\uaee8\uaee9\uaeea\uaeeb\uaeec\uaeed\uaeee\uaeef\uaef0\uaef1\uaef2\uaef3\uaef4\uaef5\uaef6\uaef7\uaef8\uaef9\uaefa\uaefb\uaefc\uaefd\uaefe\uaeff\uaf00\uaf01\uaf02\uaf03\uaf04\uaf05\uaf06\uaf07\uaf08\uaf09\uaf0a\uaf0b\uaf0c\uaf0d\uaf0e\uaf0f\uaf10\uaf11\uaf12\uaf13\uaf14\uaf15\uaf16\uaf17\uaf18\uaf19\uaf1a\uaf1b\uaf1c\uaf1d\uaf1e\uaf1f\uaf20\uaf21\uaf22\uaf23\uaf24\uaf25\uaf26\uaf27\uaf28\uaf29\uaf2a\uaf2b\uaf2c\uaf2d\uaf2e\uaf2f\uaf30\uaf31\uaf32\uaf33\uaf34\uaf35\uaf36\uaf37\uaf38\uaf39\uaf3a\uaf3b\uaf3c\uaf3d\uaf3e\uaf3f\uaf40\uaf41\uaf42\uaf43\uaf44\uaf45\uaf46\uaf47\uaf48\uaf49\uaf4a\uaf4b\uaf4c\uaf4d\uaf4e\uaf4f\uaf50\uaf51\uaf52\uaf53\uaf54\uaf55\uaf56\uaf57\uaf58\uaf59\uaf5a\uaf5b\uaf5c\uaf5d\uaf5e\uaf5f\uaf60\uaf61\uaf62\uaf63\uaf64\uaf65\uaf66\uaf67\uaf68\uaf69\uaf6a\uaf6b\uaf6c\uaf6d\uaf6e\uaf6f\uaf70\uaf71\uaf72\uaf73\uaf74\uaf75\uaf76\uaf77\uaf78\uaf79\uaf7a\uaf7b\uaf7c\uaf7d\uaf7e\uaf7f\uaf80\uaf81\uaf82\uaf83\uaf84\uaf85\uaf86\uaf87\uaf88\uaf89\uaf8a\uaf8b\uaf8c\uaf8d\uaf8e\uaf8f\uaf90\uaf91\uaf92\uaf93\uaf94\uaf95\uaf96\uaf97\uaf98\uaf99\uaf9a\uaf9b\uaf9c\uaf9d\uaf9e\uaf9f\uafa0\uafa1\uafa2\uafa3\uafa4\uafa5\uafa6\uafa7\uafa8\uafa9\uafaa\uafab\uafac\uafad\uafae\uafaf\uafb0\uafb1\uafb2\uafb3\uafb4\uafb5\uafb6\uafb7\uafb8\uafb9\uafba\uafbb\uafbc\uafbd\uafbe\uafbf\uafc0\uafc1\uafc2\uafc3\uafc4\uafc5\uafc6\uafc7\uafc8\uafc9\uafca\uafcb\uafcc\uafcd\uafce\uafcf\uafd0\uafd1\uafd2\uafd3\uafd4\uafd5\uafd6\uafd7\uafd8\uafd9\uafda\uafdb\uafdc\uafdd\uafde\uafdf\uafe0\uafe1\uafe2\uafe3\uafe4\uafe5\uafe6\uafe7\uafe8\uafe9\uafea\uafeb\uafec\uafed\uafee\uafef\uaff0\uaff1\uaff2\uaff3\uaff4\uaff5\uaff6\uaff7\uaff8\uaff9\uaffa\uaffb\uaffc\uaffd\uaffe\uafff\ub000\ub001\ub002\ub003\ub004\ub005\ub006\ub007\ub008\ub009\ub00a\ub00b\ub00c\ub00d\ub00e\ub00f\ub010\ub011\ub012\ub013\ub014\ub015\ub016\ub017\ub018\ub019\ub01a\ub01b\ub01c\ub01d\ub01e\ub01f\ub020\ub021\ub022\ub023\ub024\ub025\ub026\ub027\ub028\ub029\ub02a\ub02b\ub02c\ub02d\ub02e\ub02f\ub030\ub031\ub032\ub033\ub034\ub035\ub036\ub037\ub038\ub039\ub03a\ub03b\ub03c\ub03d\ub03e\ub03f\ub040\ub041\ub042\ub043\ub044\ub045\ub046\ub047\ub048\ub049\ub04a\ub04b\ub04c\ub04d\ub04e\ub04f\ub050\ub051\ub052\ub053\ub054\ub055\ub056\ub057\ub058\ub059\ub05a\ub05b\ub05c\ub05d\ub05e\ub05f\ub060\ub061\ub062\ub063\ub064\ub065\ub066\ub067\ub068\ub069\ub06a\ub06b\ub06c\ub06d\ub06e\ub06f\ub070\ub071\ub072\ub073\ub074\ub075\ub076\ub077\ub078\ub079\ub07a\ub07b\ub07c\ub07d\ub07e\ub07f\ub080\ub081\ub082\ub083\ub084\ub085\ub086\ub087\ub088\ub089\ub08a\ub08b\ub08c\ub08d\ub08e\ub08f\ub090\ub091\ub092\ub093\ub094\ub095\ub096\ub097\ub098\ub099\ub09a\ub09b\ub09c\ub09d\ub09e\ub09f\ub0a0\ub0a1\ub0a2\ub0a3\ub0a4\ub0a5\ub0a6\ub0a7\ub0a8\ub0a9\ub0aa\ub0ab\ub0ac\ub0ad\ub0ae\ub0af\ub0b0\ub0b1\ub0b2\ub0b3\ub0b4\ub0b5\ub0b6\ub0b7\ub0b8\ub0b9\ub0ba\ub0bb\ub0bc\ub0bd\ub0be\ub0bf\ub0c0\ub0c1\ub0c2\ub0c3\ub0c4\ub0c5\ub0c6\ub0c7\ub0c8\ub0c9\ub0ca\ub0cb\ub0cc\ub0cd\ub0ce\ub0cf\ub0d0\ub0d1\ub0d2\ub0d3\ub0d4\ub0d5\ub0d6\ub0d7\ub0d8\ub0d9\ub0da\ub0db\ub0dc\ub0dd\ub0de\ub0df\ub0e0\ub0e1\ub0e2\ub0e3\ub0e4\ub0e5\ub0e6\ub0e7\ub0e8\ub0e9\ub0ea\ub0eb\ub0ec\ub0ed\ub0ee\ub0ef\ub0f0\ub0f1\ub0f2\ub0f3\ub0f4\ub0f5\ub0f6\ub0f7\ub0f8\ub0f9\ub0fa\ub0fb\ub0fc\ub0fd\ub0fe\ub0ff\ub100\ub101\ub102\ub103\ub104\ub105\ub106\ub107\ub108\ub109\ub10a\ub10b\ub10c\ub10d\ub10e\ub10f\ub110\ub111\ub112\ub113\ub114\ub115\ub116\ub117\ub118\ub119\ub11a\ub11b\ub11c\ub11d\ub11e\ub11f\ub120\ub121\ub122\ub123\ub124\ub125\ub126\ub127\ub128\ub129\ub12a\ub12b\ub12c\ub12d\ub12e\ub12f\ub130\ub131\ub132\ub133\ub134\ub135\ub136\ub137\ub138\ub139\ub13a\ub13b\ub13c\ub13d\ub13e\ub13f\ub140\ub141\ub142\ub143\ub144\ub145\ub146\ub147\ub148\ub149\ub14a\ub14b\ub14c\ub14d\ub14e\ub14f\ub150\ub151\ub152\ub153\ub154\ub155\ub156\ub157\ub158\ub159\ub15a\ub15b\ub15c\ub15d\ub15e\ub15f\ub160\ub161\ub162\ub163\ub164\ub165\ub166\ub167\ub168\ub169\ub16a\ub16b\ub16c\ub16d\ub16e\ub16f\ub170\ub171\ub172\ub173\ub174\ub175\ub176\ub177\ub178\ub179\ub17a\ub17b\ub17c\ub17d\ub17e\ub17f\ub180\ub181\ub182\ub183\ub184\ub185\ub186\ub187\ub188\ub189\ub18a\ub18b\ub18c\ub18d\ub18e\ub18f\ub190\ub191\ub192\ub193\ub194\ub195\ub196\ub197\ub198\ub199\ub19a\ub19b\ub19c\ub19d\ub19e\ub19f\ub1a0\ub1a1\ub1a2\ub1a3\ub1a4\ub1a5\ub1a6\ub1a7\ub1a8\ub1a9\ub1aa\ub1ab\ub1ac\ub1ad\ub1ae\ub1af\ub1b0\ub1b1\ub1b2\ub1b3\ub1b4\ub1b5\ub1b6\ub1b7\ub1b8\ub1b9\ub1ba\ub1bb\ub1bc\ub1bd\ub1be\ub1bf\ub1c0\ub1c1\ub1c2\ub1c3\ub1c4\ub1c5\ub1c6\ub1c7\ub1c8\ub1c9\ub1ca\ub1cb\ub1cc\ub1cd\ub1ce\ub1cf\ub1d0\ub1d1\ub1d2\ub1d3\ub1d4\ub1d5\ub1d6\ub1d7\ub1d8\ub1d9\ub1da\ub1db\ub1dc\ub1dd\ub1de\ub1df\ub1e0\ub1e1\ub1e2\ub1e3\ub1e4\ub1e5\ub1e6\ub1e7\ub1e8\ub1e9\ub1ea\ub1eb\ub1ec\ub1ed\ub1ee\ub1ef\ub1f0\ub1f1\ub1f2\ub1f3\ub1f4\ub1f5\ub1f6\ub1f7\ub1f8\ub1f9\ub1fa\ub1fb\ub1fc\ub1fd\ub1fe\ub1ff\ub200\ub201\ub202\ub203\ub204\ub205\ub206\ub207\ub208\ub209\ub20a\ub20b\ub20c\ub20d\ub20e\ub20f\ub210\ub211\ub212\ub213\ub214\ub215\ub216\ub217\ub218\ub219\ub21a\ub21b\ub21c\ub21d\ub21e\ub21f\ub220\ub221\ub222\ub223\ub224\ub225\ub226\ub227\ub228\ub229\ub22a\ub22b\ub22c\ub22d\ub22e\ub22f\ub230\ub231\ub232\ub233\ub234\ub235\ub236\ub237\ub238\ub239\ub23a\ub23b\ub23c\ub23d\ub23e\ub23f\ub240\ub241\ub242\ub243\ub244\ub245\ub246\ub247\ub248\ub249\ub24a\ub24b\ub24c\ub24d\ub24e\ub24f\ub250\ub251\ub252\ub253\ub254\ub255\ub256\ub257\ub258\ub259\ub25a\ub25b\ub25c\ub25d\ub25e\ub25f\ub260\ub261\ub262\ub263\ub264\ub265\ub266\ub267\ub268\ub269\ub26a\ub26b\ub26c\ub26d\ub26e\ub26f\ub270\ub271\ub272\ub273\ub274\ub275\ub276\ub277\ub278\ub279\ub27a\ub27b\ub27c\ub27d\ub27e\ub27f\ub280\ub281\ub282\ub283\ub284\ub285\ub286\ub287\ub288\ub289\ub28a\ub28b\ub28c\ub28d\ub28e\ub28f\ub290\ub291\ub292\ub293\ub294\ub295\ub296\ub297\ub298\ub299\ub29a\ub29b\ub29c\ub29d\ub29e\ub29f\ub2a0\ub2a1\ub2a2\ub2a3\ub2a4\ub2a5\ub2a6\ub2a7\ub2a8\ub2a9\ub2aa\ub2ab\ub2ac\ub2ad\ub2ae\ub2af\ub2b0\ub2b1\ub2b2\ub2b3\ub2b4\ub2b5\ub2b6\ub2b7\ub2b8\ub2b9\ub2ba\ub2bb\ub2bc\ub2bd\ub2be\ub2bf\ub2c0\ub2c1\ub2c2\ub2c3\ub2c4\ub2c5\ub2c6\ub2c7\ub2c8\ub2c9\ub2ca\ub2cb\ub2cc\ub2cd\ub2ce\ub2cf\ub2d0\ub2d1\ub2d2\ub2d3\ub2d4\ub2d5\ub2d6\ub2d7\ub2d8\ub2d9\ub2da\ub2db\ub2dc\ub2dd\ub2de\ub2df\ub2e0\ub2e1\ub2e2\ub2e3\ub2e4\ub2e5\ub2e6\ub2e7\ub2e8\ub2e9\ub2ea\ub2eb\ub2ec\ub2ed\ub2ee\ub2ef\ub2f0\ub2f1\ub2f2\ub2f3\ub2f4\ub2f5\ub2f6\ub2f7\ub2f8\ub2f9\ub2fa\ub2fb\ub2fc\ub2fd\ub2fe\ub2ff\ub300\ub301\ub302\ub303\ub304\ub305\ub306\ub307\ub308\ub309\ub30a\ub30b\ub30c\ub30d\ub30e\ub30f\ub310\ub311\ub312\ub313\ub314\ub315\ub316\ub317\ub318\ub319\ub31a\ub31b\ub31c\ub31d\ub31e\ub31f\ub320\ub321\ub322\ub323\ub324\ub325\ub326\ub327\ub328\ub329\ub32a\ub32b\ub32c\ub32d\ub32e\ub32f\ub330\ub331\ub332\ub333\ub334\ub335\ub336\ub337\ub338\ub339\ub33a\ub33b\ub33c\ub33d\ub33e\ub33f\ub340\ub341\ub342\ub343\ub344\ub345\ub346\ub347\ub348\ub349\ub34a\ub34b\ub34c\ub34d\ub34e\ub34f\ub350\ub351\ub352\ub353\ub354\ub355\ub356\ub357\ub358\ub359\ub35a\ub35b\ub35c\ub35d\ub35e\ub35f\ub360\ub361\ub362\ub363\ub364\ub365\ub366\ub367\ub368\ub369\ub36a\ub36b\ub36c\ub36d\ub36e\ub36f\ub370\ub371\ub372\ub373\ub374\ub375\ub376\ub377\ub378\ub379\ub37a\ub37b\ub37c\ub37d\ub37e\ub37f\ub380\ub381\ub382\ub383\ub384\ub385\ub386\ub387\ub388\ub389\ub38a\ub38b\ub38c\ub38d\ub38e\ub38f\ub390\ub391\ub392\ub393\ub394\ub395\ub396\ub397\ub398\ub399\ub39a\ub39b\ub39c\ub39d\ub39e\ub39f\ub3a0\ub3a1\ub3a2\ub3a3\ub3a4\ub3a5\ub3a6\ub3a7\ub3a8\ub3a9\ub3aa\ub3ab\ub3ac\ub3ad\ub3ae\ub3af\ub3b0\ub3b1\ub3b2\ub3b3\ub3b4\ub3b5\ub3b6\ub3b7\ub3b8\ub3b9\ub3ba\ub3bb\ub3bc\ub3bd\ub3be\ub3bf\ub3c0\ub3c1\ub3c2\ub3c3\ub3c4\ub3c5\ub3c6\ub3c7\ub3c8\ub3c9\ub3ca\ub3cb\ub3cc\ub3cd\ub3ce\ub3cf\ub3d0\ub3d1\ub3d2\ub3d3\ub3d4\ub3d5\ub3d6\ub3d7\ub3d8\ub3d9\ub3da\ub3db\ub3dc\ub3dd\ub3de\ub3df\ub3e0\ub3e1\ub3e2\ub3e3\ub3e4\ub3e5\ub3e6\ub3e7\ub3e8\ub3e9\ub3ea\ub3eb\ub3ec\ub3ed\ub3ee\ub3ef\ub3f0\ub3f1\ub3f2\ub3f3\ub3f4\ub3f5\ub3f6\ub3f7\ub3f8\ub3f9\ub3fa\ub3fb\ub3fc\ub3fd\ub3fe\ub3ff\ub400\ub401\ub402\ub403\ub404\ub405\ub406\ub407\ub408\ub409\ub40a\ub40b\ub40c\ub40d\ub40e\ub40f\ub410\ub411\ub412\ub413\ub414\ub415\ub416\ub417\ub418\ub419\ub41a\ub41b\ub41c\ub41d\ub41e\ub41f\ub420\ub421\ub422\ub423\ub424\ub425\ub426\ub427\ub428\ub429\ub42a\ub42b\ub42c\ub42d\ub42e\ub42f\ub430\ub431\ub432\ub433\ub434\ub435\ub436\ub437\ub438\ub439\ub43a\ub43b\ub43c\ub43d\ub43e\ub43f\ub440\ub441\ub442\ub443\ub444\ub445\ub446\ub447\ub448\ub449\ub44a\ub44b\ub44c\ub44d\ub44e\ub44f\ub450\ub451\ub452\ub453\ub454\ub455\ub456\ub457\ub458\ub459\ub45a\ub45b\ub45c\ub45d\ub45e\ub45f\ub460\ub461\ub462\ub463\ub464\ub465\ub466\ub467\ub468\ub469\ub46a\ub46b\ub46c\ub46d\ub46e\ub46f\ub470\ub471\ub472\ub473\ub474\ub475\ub476\ub477\ub478\ub479\ub47a\ub47b\ub47c\ub47d\ub47e\ub47f\ub480\ub481\ub482\ub483\ub484\ub485\ub486\ub487\ub488\ub489\ub48a\ub48b\ub48c\ub48d\ub48e\ub48f\ub490\ub491\ub492\ub493\ub494\ub495\ub496\ub497\ub498\ub499\ub49a\ub49b\ub49c\ub49d\ub49e\ub49f\ub4a0\ub4a1\ub4a2\ub4a3\ub4a4\ub4a5\ub4a6\ub4a7\ub4a8\ub4a9\ub4aa\ub4ab\ub4ac\ub4ad\ub4ae\ub4af\ub4b0\ub4b1\ub4b2\ub4b3\ub4b4\ub4b5\ub4b6\ub4b7\ub4b8\ub4b9\ub4ba\ub4bb\ub4bc\ub4bd\ub4be\ub4bf\ub4c0\ub4c1\ub4c2\ub4c3\ub4c4\ub4c5\ub4c6\ub4c7\ub4c8\ub4c9\ub4ca\ub4cb\ub4cc\ub4cd\ub4ce\ub4cf\ub4d0\ub4d1\ub4d2\ub4d3\ub4d4\ub4d5\ub4d6\ub4d7\ub4d8\ub4d9\ub4da\ub4db\ub4dc\ub4dd\ub4de\ub4df\ub4e0\ub4e1\ub4e2\ub4e3\ub4e4\ub4e5\ub4e6\ub4e7\ub4e8\ub4e9\ub4ea\ub4eb\ub4ec\ub4ed\ub4ee\ub4ef\ub4f0\ub4f1\ub4f2\ub4f3\ub4f4\ub4f5\ub4f6\ub4f7\ub4f8\ub4f9\ub4fa\ub4fb\ub4fc\ub4fd\ub4fe\ub4ff\ub500\ub501\ub502\ub503\ub504\ub505\ub506\ub507\ub508\ub509\ub50a\ub50b\ub50c\ub50d\ub50e\ub50f\ub510\ub511\ub512\ub513\ub514\ub515\ub516\ub517\ub518\ub519\ub51a\ub51b\ub51c\ub51d\ub51e\ub51f\ub520\ub521\ub522\ub523\ub524\ub525\ub526\ub527\ub528\ub529\ub52a\ub52b\ub52c\ub52d\ub52e\ub52f\ub530\ub531\ub532\ub533\ub534\ub535\ub536\ub537\ub538\ub539\ub53a\ub53b\ub53c\ub53d\ub53e\ub53f\ub540\ub541\ub542\ub543\ub544\ub545\ub546\ub547\ub548\ub549\ub54a\ub54b\ub54c\ub54d\ub54e\ub54f\ub550\ub551\ub552\ub553\ub554\ub555\ub556\ub557\ub558\ub559\ub55a\ub55b\ub55c\ub55d\ub55e\ub55f\ub560\ub561\ub562\ub563\ub564\ub565\ub566\ub567\ub568\ub569\ub56a\ub56b\ub56c\ub56d\ub56e\ub56f\ub570\ub571\ub572\ub573\ub574\ub575\ub576\ub577\ub578\ub579\ub57a\ub57b\ub57c\ub57d\ub57e\ub57f\ub580\ub581\ub582\ub583\ub584\ub585\ub586\ub587\ub588\ub589\ub58a\ub58b\ub58c\ub58d\ub58e\ub58f\ub590\ub591\ub592\ub593\ub594\ub595\ub596\ub597\ub598\ub599\ub59a\ub59b\ub59c\ub59d\ub59e\ub59f\ub5a0\ub5a1\ub5a2\ub5a3\ub5a4\ub5a5\ub5a6\ub5a7\ub5a8\ub5a9\ub5aa\ub5ab\ub5ac\ub5ad\ub5ae\ub5af\ub5b0\ub5b1\ub5b2\ub5b3\ub5b4\ub5b5\ub5b6\ub5b7\ub5b8\ub5b9\ub5ba\ub5bb\ub5bc\ub5bd\ub5be\ub5bf\ub5c0\ub5c1\ub5c2\ub5c3\ub5c4\ub5c5\ub5c6\ub5c7\ub5c8\ub5c9\ub5ca\ub5cb\ub5cc\ub5cd\ub5ce\ub5cf\ub5d0\ub5d1\ub5d2\ub5d3\ub5d4\ub5d5\ub5d6\ub5d7\ub5d8\ub5d9\ub5da\ub5db\ub5dc\ub5dd\ub5de\ub5df\ub5e0\ub5e1\ub5e2\ub5e3\ub5e4\ub5e5\ub5e6\ub5e7\ub5e8\ub5e9\ub5ea\ub5eb\ub5ec\ub5ed\ub5ee\ub5ef\ub5f0\ub5f1\ub5f2\ub5f3\ub5f4\ub5f5\ub5f6\ub5f7\ub5f8\ub5f9\ub5fa\ub5fb\ub5fc\ub5fd\ub5fe\ub5ff\ub600\ub601\ub602\ub603\ub604\ub605\ub606\ub607\ub608\ub609\ub60a\ub60b\ub60c\ub60d\ub60e\ub60f\ub610\ub611\ub612\ub613\ub614\ub615\ub616\ub617\ub618\ub619\ub61a\ub61b\ub61c\ub61d\ub61e\ub61f\ub620\ub621\ub622\ub623\ub624\ub625\ub626\ub627\ub628\ub629\ub62a\ub62b\ub62c\ub62d\ub62e\ub62f\ub630\ub631\ub632\ub633\ub634\ub635\ub636\ub637\ub638\ub639\ub63a\ub63b\ub63c\ub63d\ub63e\ub63f\ub640\ub641\ub642\ub643\ub644\ub645\ub646\ub647\ub648\ub649\ub64a\ub64b\ub64c\ub64d\ub64e\ub64f\ub650\ub651\ub652\ub653\ub654\ub655\ub656\ub657\ub658\ub659\ub65a\ub65b\ub65c\ub65d\ub65e\ub65f\ub660\ub661\ub662\ub663\ub664\ub665\ub666\ub667\ub668\ub669\ub66a\ub66b\ub66c\ub66d\ub66e\ub66f\ub670\ub671\ub672\ub673\ub674\ub675\ub676\ub677\ub678\ub679\ub67a\ub67b\ub67c\ub67d\ub67e\ub67f\ub680\ub681\ub682\ub683\ub684\ub685\ub686\ub687\ub688\ub689\ub68a\ub68b\ub68c\ub68d\ub68e\ub68f\ub690\ub691\ub692\ub693\ub694\ub695\ub696\ub697\ub698\ub699\ub69a\ub69b\ub69c\ub69d\ub69e\ub69f\ub6a0\ub6a1\ub6a2\ub6a3\ub6a4\ub6a5\ub6a6\ub6a7\ub6a8\ub6a9\ub6aa\ub6ab\ub6ac\ub6ad\ub6ae\ub6af\ub6b0\ub6b1\ub6b2\ub6b3\ub6b4\ub6b5\ub6b6\ub6b7\ub6b8\ub6b9\ub6ba\ub6bb\ub6bc\ub6bd\ub6be\ub6bf\ub6c0\ub6c1\ub6c2\ub6c3\ub6c4\ub6c5\ub6c6\ub6c7\ub6c8\ub6c9\ub6ca\ub6cb\ub6cc\ub6cd\ub6ce\ub6cf\ub6d0\ub6d1\ub6d2\ub6d3\ub6d4\ub6d5\ub6d6\ub6d7\ub6d8\ub6d9\ub6da\ub6db\ub6dc\ub6dd\ub6de\ub6df\ub6e0\ub6e1\ub6e2\ub6e3\ub6e4\ub6e5\ub6e6\ub6e7\ub6e8\ub6e9\ub6ea\ub6eb\ub6ec\ub6ed\ub6ee\ub6ef\ub6f0\ub6f1\ub6f2\ub6f3\ub6f4\ub6f5\ub6f6\ub6f7\ub6f8\ub6f9\ub6fa\ub6fb\ub6fc\ub6fd\ub6fe\ub6ff\ub700\ub701\ub702\ub703\ub704\ub705\ub706\ub707\ub708\ub709\ub70a\ub70b\ub70c\ub70d\ub70e\ub70f\ub710\ub711\ub712\ub713\ub714\ub715\ub716\ub717\ub718\ub719\ub71a\ub71b\ub71c\ub71d\ub71e\ub71f\ub720\ub721\ub722\ub723\ub724\ub725\ub726\ub727\ub728\ub729\ub72a\ub72b\ub72c\ub72d\ub72e\ub72f\ub730\ub731\ub732\ub733\ub734\ub735\ub736\ub737\ub738\ub739\ub73a\ub73b\ub73c\ub73d\ub73e\ub73f\ub740\ub741\ub742\ub743\ub744\ub745\ub746\ub747\ub748\ub749\ub74a\ub74b\ub74c\ub74d\ub74e\ub74f\ub750\ub751\ub752\ub753\ub754\ub755\ub756\ub757\ub758\ub759\ub75a\ub75b\ub75c\ub75d\ub75e\ub75f\ub760\ub761\ub762\ub763\ub764\ub765\ub766\ub767\ub768\ub769\ub76a\ub76b\ub76c\ub76d\ub76e\ub76f\ub770\ub771\ub772\ub773\ub774\ub775\ub776\ub777\ub778\ub779\ub77a\ub77b\ub77c\ub77d\ub77e\ub77f\ub780\ub781\ub782\ub783\ub784\ub785\ub786\ub787\ub788\ub789\ub78a\ub78b\ub78c\ub78d\ub78e\ub78f\ub790\ub791\ub792\ub793\ub794\ub795\ub796\ub797\ub798\ub799\ub79a\ub79b\ub79c\ub79d\ub79e\ub79f\ub7a0\ub7a1\ub7a2\ub7a3\ub7a4\ub7a5\ub7a6\ub7a7\ub7a8\ub7a9\ub7aa\ub7ab\ub7ac\ub7ad\ub7ae\ub7af\ub7b0\ub7b1\ub7b2\ub7b3\ub7b4\ub7b5\ub7b6\ub7b7\ub7b8\ub7b9\ub7ba\ub7bb\ub7bc\ub7bd\ub7be\ub7bf\ub7c0\ub7c1\ub7c2\ub7c3\ub7c4\ub7c5\ub7c6\ub7c7\ub7c8\ub7c9\ub7ca\ub7cb\ub7cc\ub7cd\ub7ce\ub7cf\ub7d0\ub7d1\ub7d2\ub7d3\ub7d4\ub7d5\ub7d6\ub7d7\ub7d8\ub7d9\ub7da\ub7db\ub7dc\ub7dd\ub7de\ub7df\ub7e0\ub7e1\ub7e2\ub7e3\ub7e4\ub7e5\ub7e6\ub7e7\ub7e8\ub7e9\ub7ea\ub7eb\ub7ec\ub7ed\ub7ee\ub7ef\ub7f0\ub7f1\ub7f2\ub7f3\ub7f4\ub7f5\ub7f6\ub7f7\ub7f8\ub7f9\ub7fa\ub7fb\ub7fc\ub7fd\ub7fe\ub7ff\ub800\ub801\ub802\ub803\ub804\ub805\ub806\ub807\ub808\ub809\ub80a\ub80b\ub80c\ub80d\ub80e\ub80f\ub810\ub811\ub812\ub813\ub814\ub815\ub816\ub817\ub818\ub819\ub81a\ub81b\ub81c\ub81d\ub81e\ub81f\ub820\ub821\ub822\ub823\ub824\ub825\ub826\ub827\ub828\ub829\ub82a\ub82b\ub82c\ub82d\ub82e\ub82f\ub830\ub831\ub832\ub833\ub834\ub835\ub836\ub837\ub838\ub839\ub83a\ub83b\ub83c\ub83d\ub83e\ub83f\ub840\ub841\ub842\ub843\ub844\ub845\ub846\ub847\ub848\ub849\ub84a\ub84b\ub84c\ub84d\ub84e\ub84f\ub850\ub851\ub852\ub853\ub854\ub855\ub856\ub857\ub858\ub859\ub85a\ub85b\ub85c\ub85d\ub85e\ub85f\ub860\ub861\ub862\ub863\ub864\ub865\ub866\ub867\ub868\ub869\ub86a\ub86b\ub86c\ub86d\ub86e\ub86f\ub870\ub871\ub872\ub873\ub874\ub875\ub876\ub877\ub878\ub879\ub87a\ub87b\ub87c\ub87d\ub87e\ub87f\ub880\ub881\ub882\ub883\ub884\ub885\ub886\ub887\ub888\ub889\ub88a\ub88b\ub88c\ub88d\ub88e\ub88f\ub890\ub891\ub892\ub893\ub894\ub895\ub896\ub897\ub898\ub899\ub89a\ub89b\ub89c\ub89d\ub89e\ub89f\ub8a0\ub8a1\ub8a2\ub8a3\ub8a4\ub8a5\ub8a6\ub8a7\ub8a8\ub8a9\ub8aa\ub8ab\ub8ac\ub8ad\ub8ae\ub8af\ub8b0\ub8b1\ub8b2\ub8b3\ub8b4\ub8b5\ub8b6\ub8b7\ub8b8\ub8b9\ub8ba\ub8bb\ub8bc\ub8bd\ub8be\ub8bf\ub8c0\ub8c1\ub8c2\ub8c3\ub8c4\ub8c5\ub8c6\ub8c7\ub8c8\ub8c9\ub8ca\ub8cb\ub8cc\ub8cd\ub8ce\ub8cf\ub8d0\ub8d1\ub8d2\ub8d3\ub8d4\ub8d5\ub8d6\ub8d7\ub8d8\ub8d9\ub8da\ub8db\ub8dc\ub8dd\ub8de\ub8df\ub8e0\ub8e1\ub8e2\ub8e3\ub8e4\ub8e5\ub8e6\ub8e7\ub8e8\ub8e9\ub8ea\ub8eb\ub8ec\ub8ed\ub8ee\ub8ef\ub8f0\ub8f1\ub8f2\ub8f3\ub8f4\ub8f5\ub8f6\ub8f7\ub8f8\ub8f9\ub8fa\ub8fb\ub8fc\ub8fd\ub8fe\ub8ff\ub900\ub901\ub902\ub903\ub904\ub905\ub906\ub907\ub908\ub909\ub90a\ub90b\ub90c\ub90d\ub90e\ub90f\ub910\ub911\ub912\ub913\ub914\ub915\ub916\ub917\ub918\ub919\ub91a\ub91b\ub91c\ub91d\ub91e\ub91f\ub920\ub921\ub922\ub923\ub924\ub925\ub926\ub927\ub928\ub929\ub92a\ub92b\ub92c\ub92d\ub92e\ub92f\ub930\ub931\ub932\ub933\ub934\ub935\ub936\ub937\ub938\ub939\ub93a\ub93b\ub93c\ub93d\ub93e\ub93f\ub940\ub941\ub942\ub943\ub944\ub945\ub946\ub947\ub948\ub949\ub94a\ub94b\ub94c\ub94d\ub94e\ub94f\ub950\ub951\ub952\ub953\ub954\ub955\ub956\ub957\ub958\ub959\ub95a\ub95b\ub95c\ub95d\ub95e\ub95f\ub960\ub961\ub962\ub963\ub964\ub965\ub966\ub967\ub968\ub969\ub96a\ub96b\ub96c\ub96d\ub96e\ub96f\ub970\ub971\ub972\ub973\ub974\ub975\ub976\ub977\ub978\ub979\ub97a\ub97b\ub97c\ub97d\ub97e\ub97f\ub980\ub981\ub982\ub983\ub984\ub985\ub986\ub987\ub988\ub989\ub98a\ub98b\ub98c\ub98d\ub98e\ub98f\ub990\ub991\ub992\ub993\ub994\ub995\ub996\ub997\ub998\ub999\ub99a\ub99b\ub99c\ub99d\ub99e\ub99f\ub9a0\ub9a1\ub9a2\ub9a3\ub9a4\ub9a5\ub9a6\ub9a7\ub9a8\ub9a9\ub9aa\ub9ab\ub9ac\ub9ad\ub9ae\ub9af\ub9b0\ub9b1\ub9b2\ub9b3\ub9b4\ub9b5\ub9b6\ub9b7\ub9b8\ub9b9\ub9ba\ub9bb\ub9bc\ub9bd\ub9be\ub9bf\ub9c0\ub9c1\ub9c2\ub9c3\ub9c4\ub9c5\ub9c6\ub9c7\ub9c8\ub9c9\ub9ca\ub9cb\ub9cc\ub9cd\ub9ce\ub9cf\ub9d0\ub9d1\ub9d2\ub9d3\ub9d4\ub9d5\ub9d6\ub9d7\ub9d8\ub9d9\ub9da\ub9db\ub9dc\ub9dd\ub9de\ub9df\ub9e0\ub9e1\ub9e2\ub9e3\ub9e4\ub9e5\ub9e6\ub9e7\ub9e8\ub9e9\ub9ea\ub9eb\ub9ec\ub9ed\ub9ee\ub9ef\ub9f0\ub9f1\ub9f2\ub9f3\ub9f4\ub9f5\ub9f6\ub9f7\ub9f8\ub9f9\ub9fa\ub9fb\ub9fc\ub9fd\ub9fe\ub9ff\uba00\uba01\uba02\uba03\uba04\uba05\uba06\uba07\uba08\uba09\uba0a\uba0b\uba0c\uba0d\uba0e\uba0f\uba10\uba11\uba12\uba13\uba14\uba15\uba16\uba17\uba18\uba19\uba1a\uba1b\uba1c\uba1d\uba1e\uba1f\uba20\uba21\uba22\uba23\uba24\uba25\uba26\uba27\uba28\uba29\uba2a\uba2b\uba2c\uba2d\uba2e\uba2f\uba30\uba31\uba32\uba33\uba34\uba35\uba36\uba37\uba38\uba39\uba3a\uba3b\uba3c\uba3d\uba3e\uba3f\uba40\uba41\uba42\uba43\uba44\uba45\uba46\uba47\uba48\uba49\uba4a\uba4b\uba4c\uba4d\uba4e\uba4f\uba50\uba51\uba52\uba53\uba54\uba55\uba56\uba57\uba58\uba59\uba5a\uba5b\uba5c\uba5d\uba5e\uba5f\uba60\uba61\uba62\uba63\uba64\uba65\uba66\uba67\uba68\uba69\uba6a\uba6b\uba6c\uba6d\uba6e\uba6f\uba70\uba71\uba72\uba73\uba74\uba75\uba76\uba77\uba78\uba79\uba7a\uba7b\uba7c\uba7d\uba7e\uba7f\uba80\uba81\uba82\uba83\uba84\uba85\uba86\uba87\uba88\uba89\uba8a\uba8b\uba8c\uba8d\uba8e\uba8f\uba90\uba91\uba92\uba93\uba94\uba95\uba96\uba97\uba98\uba99\uba9a\uba9b\uba9c\uba9d\uba9e\uba9f\ubaa0\ubaa1\ubaa2\ubaa3\ubaa4\ubaa5\ubaa6\ubaa7\ubaa8\ubaa9\ubaaa\ubaab\ubaac\ubaad\ubaae\ubaaf\ubab0\ubab1\ubab2\ubab3\ubab4\ubab5\ubab6\ubab7\ubab8\ubab9\ubaba\ubabb\ubabc\ubabd\ubabe\ubabf\ubac0\ubac1\ubac2\ubac3\ubac4\ubac5\ubac6\ubac7\ubac8\ubac9\ubaca\ubacb\ubacc\ubacd\ubace\ubacf\ubad0\ubad1\ubad2\ubad3\ubad4\ubad5\ubad6\ubad7\ubad8\ubad9\ubada\ubadb\ubadc\ubadd\ubade\ubadf\ubae0\ubae1\ubae2\ubae3\ubae4\ubae5\ubae6\ubae7\ubae8\ubae9\ubaea\ubaeb\ubaec\ubaed\ubaee\ubaef\ubaf0\ubaf1\ubaf2\ubaf3\ubaf4\ubaf5\ubaf6\ubaf7\ubaf8\ubaf9\ubafa\ubafb\ubafc\ubafd\ubafe\ubaff\ubb00\ubb01\ubb02\ubb03\ubb04\ubb05\ubb06\ubb07\ubb08\ubb09\ubb0a\ubb0b\ubb0c\ubb0d\ubb0e\ubb0f\ubb10\ubb11\ubb12\ubb13\ubb14\ubb15\ubb16\ubb17\ubb18\ubb19\ubb1a\ubb1b\ubb1c\ubb1d\ubb1e\ubb1f\ubb20\ubb21\ubb22\ubb23\ubb24\ubb25\ubb26\ubb27\ubb28\ubb29\ubb2a\ubb2b\ubb2c\ubb2d\ubb2e\ubb2f\ubb30\ubb31\ubb32\ubb33\ubb34\ubb35\ubb36\ubb37\ubb38\ubb39\ubb3a\ubb3b\ubb3c\ubb3d\ubb3e\ubb3f\ubb40\ubb41\ubb42\ubb43\ubb44\ubb45\ubb46\ubb47\ubb48\ubb49\ubb4a\ubb4b\ubb4c\ubb4d\ubb4e\ubb4f\ubb50\ubb51\ubb52\ubb53\ubb54\ubb55\ubb56\ubb57\ubb58\ubb59\ubb5a\ubb5b\ubb5c\ubb5d\ubb5e\ubb5f\ubb60\ubb61\ubb62\ubb63\ubb64\ubb65\ubb66\ubb67\ubb68\ubb69\ubb6a\ubb6b\ubb6c\ubb6d\ubb6e\ubb6f\ubb70\ubb71\ubb72\ubb73\ubb74\ubb75\ubb76\ubb77\ubb78\ubb79\ubb7a\ubb7b\ubb7c\ubb7d\ubb7e\ubb7f\ubb80\ubb81\ubb82\ubb83\ubb84\ubb85\ubb86\ubb87\ubb88\ubb89\ubb8a\ubb8b\ubb8c\ubb8d\ubb8e\ubb8f\ubb90\ubb91\ubb92\ubb93\ubb94\ubb95\ubb96\ubb97\ubb98\ubb99\ubb9a\ubb9b\ubb9c\ubb9d\ubb9e\ubb9f\ubba0\ubba1\ubba2\ubba3\ubba4\ubba5\ubba6\ubba7\ubba8\ubba9\ubbaa\ubbab\ubbac\ubbad\ubbae\ubbaf\ubbb0\ubbb1\ubbb2\ubbb3\ubbb4\ubbb5\ubbb6\ubbb7\ubbb8\ubbb9\ubbba\ubbbb\ubbbc\ubbbd\ubbbe\ubbbf\ubbc0\ubbc1\ubbc2\ubbc3\ubbc4\ubbc5\ubbc6\ubbc7\ubbc8\ubbc9\ubbca\ubbcb\ubbcc\ubbcd\ubbce\ubbcf\ubbd0\ubbd1\ubbd2\ubbd3\ubbd4\ubbd5\ubbd6\ubbd7\ubbd8\ubbd9\ubbda\ubbdb\ubbdc\ubbdd\ubbde\ubbdf\ubbe0\ubbe1\ubbe2\ubbe3\ubbe4\ubbe5\ubbe6\ubbe7\ubbe8\ubbe9\ubbea\ubbeb\ubbec\ubbed\ubbee\ubbef\ubbf0\ubbf1\ubbf2\ubbf3\ubbf4\ubbf5\ubbf6\ubbf7\ubbf8\ubbf9\ubbfa\ubbfb\ubbfc\ubbfd\ubbfe\ubbff\ubc00\ubc01\ubc02\ubc03\ubc04\ubc05\ubc06\ubc07\ubc08\ubc09\ubc0a\ubc0b\ubc0c\ubc0d\ubc0e\ubc0f\ubc10\ubc11\ubc12\ubc13\ubc14\ubc15\ubc16\ubc17\ubc18\ubc19\ubc1a\ubc1b\ubc1c\ubc1d\ubc1e\ubc1f\ubc20\ubc21\ubc22\ubc23\ubc24\ubc25\ubc26\ubc27\ubc28\ubc29\ubc2a\ubc2b\ubc2c\ubc2d\ubc2e\ubc2f\ubc30\ubc31\ubc32\ubc33\ubc34\ubc35\ubc36\ubc37\ubc38\ubc39\ubc3a\ubc3b\ubc3c\ubc3d\ubc3e\ubc3f\ubc40\ubc41\ubc42\ubc43\ubc44\ubc45\ubc46\ubc47\ubc48\ubc49\ubc4a\ubc4b\ubc4c\ubc4d\ubc4e\ubc4f\ubc50\ubc51\ubc52\ubc53\ubc54\ubc55\ubc56\ubc57\ubc58\ubc59\ubc5a\ubc5b\ubc5c\ubc5d\ubc5e\ubc5f\ubc60\ubc61\ubc62\ubc63\ubc64\ubc65\ubc66\ubc67\ubc68\ubc69\ubc6a\ubc6b\ubc6c\ubc6d\ubc6e\ubc6f\ubc70\ubc71\ubc72\ubc73\ubc74\ubc75\ubc76\ubc77\ubc78\ubc79\ubc7a\ubc7b\ubc7c\ubc7d\ubc7e\ubc7f\ubc80\ubc81\ubc82\ubc83\ubc84\ubc85\ubc86\ubc87\ubc88\ubc89\ubc8a\ubc8b\ubc8c\ubc8d\ubc8e\ubc8f\ubc90\ubc91\ubc92\ubc93\ubc94\ubc95\ubc96\ubc97\ubc98\ubc99\ubc9a\ubc9b\ubc9c\ubc9d\ubc9e\ubc9f\ubca0\ubca1\ubca2\ubca3\ubca4\ubca5\ubca6\ubca7\ubca8\ubca9\ubcaa\ubcab\ubcac\ubcad\ubcae\ubcaf\ubcb0\ubcb1\ubcb2\ubcb3\ubcb4\ubcb5\ubcb6\ubcb7\ubcb8\ubcb9\ubcba\ubcbb\ubcbc\ubcbd\ubcbe\ubcbf\ubcc0\ubcc1\ubcc2\ubcc3\ubcc4\ubcc5\ubcc6\ubcc7\ubcc8\ubcc9\ubcca\ubccb\ubccc\ubccd\ubcce\ubccf\ubcd0\ubcd1\ubcd2\ubcd3\ubcd4\ubcd5\ubcd6\ubcd7\ubcd8\ubcd9\ubcda\ubcdb\ubcdc\ubcdd\ubcde\ubcdf\ubce0\ubce1\ubce2\ubce3\ubce4\ubce5\ubce6\ubce7\ubce8\ubce9\ubcea\ubceb\ubcec\ubced\ubcee\ubcef\ubcf0\ubcf1\ubcf2\ubcf3\ubcf4\ubcf5\ubcf6\ubcf7\ubcf8\ubcf9\ubcfa\ubcfb\ubcfc\ubcfd\ubcfe\ubcff\ubd00\ubd01\ubd02\ubd03\ubd04\ubd05\ubd06\ubd07\ubd08\ubd09\ubd0a\ubd0b\ubd0c\ubd0d\ubd0e\ubd0f\ubd10\ubd11\ubd12\ubd13\ubd14\ubd15\ubd16\ubd17\ubd18\ubd19\ubd1a\ubd1b\ubd1c\ubd1d\ubd1e\ubd1f\ubd20\ubd21\ubd22\ubd23\ubd24\ubd25\ubd26\ubd27\ubd28\ubd29\ubd2a\ubd2b\ubd2c\ubd2d\ubd2e\ubd2f\ubd30\ubd31\ubd32\ubd33\ubd34\ubd35\ubd36\ubd37\ubd38\ubd39\ubd3a\ubd3b\ubd3c\ubd3d\ubd3e\ubd3f\ubd40\ubd41\ubd42\ubd43\ubd44\ubd45\ubd46\ubd47\ubd48\ubd49\ubd4a\ubd4b\ubd4c\ubd4d\ubd4e\ubd4f\ubd50\ubd51\ubd52\ubd53\ubd54\ubd55\ubd56\ubd57\ubd58\ubd59\ubd5a\ubd5b\ubd5c\ubd5d\ubd5e\ubd5f\ubd60\ubd61\ubd62\ubd63\ubd64\ubd65\ubd66\ubd67\ubd68\ubd69\ubd6a\ubd6b\ubd6c\ubd6d\ubd6e\ubd6f\ubd70\ubd71\ubd72\ubd73\ubd74\ubd75\ubd76\ubd77\ubd78\ubd79\ubd7a\ubd7b\ubd7c\ubd7d\ubd7e\ubd7f\ubd80\ubd81\ubd82\ubd83\ubd84\ubd85\ubd86\ubd87\ubd88\ubd89\ubd8a\ubd8b\ubd8c\ubd8d\ubd8e\ubd8f\ubd90\ubd91\ubd92\ubd93\ubd94\ubd95\ubd96\ubd97\ubd98\ubd99\ubd9a\ubd9b\ubd9c\ubd9d\ubd9e\ubd9f\ubda0\ubda1\ubda2\ubda3\ubda4\ubda5\ubda6\ubda7\ubda8\ubda9\ubdaa\ubdab\ubdac\ubdad\ubdae\ubdaf\ubdb0\ubdb1\ubdb2\ubdb3\ubdb4\ubdb5\ubdb6\ubdb7\ubdb8\ubdb9\ubdba\ubdbb\ubdbc\ubdbd\ubdbe\ubdbf\ubdc0\ubdc1\ubdc2\ubdc3\ubdc4\ubdc5\ubdc6\ubdc7\ubdc8\ubdc9\ubdca\ubdcb\ubdcc\ubdcd\ubdce\ubdcf\ubdd0\ubdd1\ubdd2\ubdd3\ubdd4\ubdd5\ubdd6\ubdd7\ubdd8\ubdd9\ubdda\ubddb\ubddc\ubddd\ubdde\ubddf\ubde0\ubde1\ubde2\ubde3\ubde4\ubde5\ubde6\ubde7\ubde8\ubde9\ubdea\ubdeb\ubdec\ubded\ubdee\ubdef\ubdf0\ubdf1\ubdf2\ubdf3\ubdf4\ubdf5\ubdf6\ubdf7\ubdf8\ubdf9\ubdfa\ubdfb\ubdfc\ubdfd\ubdfe\ubdff\ube00\ube01\ube02\ube03\ube04\ube05\ube06\ube07\ube08\ube09\ube0a\ube0b\ube0c\ube0d\ube0e\ube0f\ube10\ube11\ube12\ube13\ube14\ube15\ube16\ube17\ube18\ube19\ube1a\ube1b\ube1c\ube1d\ube1e\ube1f\ube20\ube21\ube22\ube23\ube24\ube25\ube26\ube27\ube28\ube29\ube2a\ube2b\ube2c\ube2d\ube2e\ube2f\ube30\ube31\ube32\ube33\ube34\ube35\ube36\ube37\ube38\ube39\ube3a\ube3b\ube3c\ube3d\ube3e\ube3f\ube40\ube41\ube42\ube43\ube44\ube45\ube46\ube47\ube48\ube49\ube4a\ube4b\ube4c\ube4d\ube4e\ube4f\ube50\ube51\ube52\ube53\ube54\ube55\ube56\ube57\ube58\ube59\ube5a\ube5b\ube5c\ube5d\ube5e\ube5f\ube60\ube61\ube62\ube63\ube64\ube65\ube66\ube67\ube68\ube69\ube6a\ube6b\ube6c\ube6d\ube6e\ube6f\ube70\ube71\ube72\ube73\ube74\ube75\ube76\ube77\ube78\ube79\ube7a\ube7b\ube7c\ube7d\ube7e\ube7f\ube80\ube81\ube82\ube83\ube84\ube85\ube86\ube87\ube88\ube89\ube8a\ube8b\ube8c\ube8d\ube8e\ube8f\ube90\ube91\ube92\ube93\ube94\ube95\ube96\ube97\ube98\ube99\ube9a\ube9b\ube9c\ube9d\ube9e\ube9f\ubea0\ubea1\ubea2\ubea3\ubea4\ubea5\ubea6\ubea7\ubea8\ubea9\ubeaa\ubeab\ubeac\ubead\ubeae\ubeaf\ubeb0\ubeb1\ubeb2\ubeb3\ubeb4\ubeb5\ubeb6\ubeb7\ubeb8\ubeb9\ubeba\ubebb\ubebc\ubebd\ubebe\ubebf\ubec0\ubec1\ubec2\ubec3\ubec4\ubec5\ubec6\ubec7\ubec8\ubec9\ubeca\ubecb\ubecc\ubecd\ubece\ubecf\ubed0\ubed1\ubed2\ubed3\ubed4\ubed5\ubed6\ubed7\ubed8\ubed9\ubeda\ubedb\ubedc\ubedd\ubede\ubedf\ubee0\ubee1\ubee2\ubee3\ubee4\ubee5\ubee6\ubee7\ubee8\ubee9\ubeea\ubeeb\ubeec\ubeed\ubeee\ubeef\ubef0\ubef1\ubef2\ubef3\ubef4\ubef5\ubef6\ubef7\ubef8\ubef9\ubefa\ubefb\ubefc\ubefd\ubefe\ubeff\ubf00\ubf01\ubf02\ubf03\ubf04\ubf05\ubf06\ubf07\ubf08\ubf09\ubf0a\ubf0b\ubf0c\ubf0d\ubf0e\ubf0f\ubf10\ubf11\ubf12\ubf13\ubf14\ubf15\ubf16\ubf17\ubf18\ubf19\ubf1a\ubf1b\ubf1c\ubf1d\ubf1e\ubf1f\ubf20\ubf21\ubf22\ubf23\ubf24\ubf25\ubf26\ubf27\ubf28\ubf29\ubf2a\ubf2b\ubf2c\ubf2d\ubf2e\ubf2f\ubf30\ubf31\ubf32\ubf33\ubf34\ubf35\ubf36\ubf37\ubf38\ubf39\ubf3a\ubf3b\ubf3c\ubf3d\ubf3e\ubf3f\ubf40\ubf41\ubf42\ubf43\ubf44\ubf45\ubf46\ubf47\ubf48\ubf49\ubf4a\ubf4b\ubf4c\ubf4d\ubf4e\ubf4f\ubf50\ubf51\ubf52\ubf53\ubf54\ubf55\ubf56\ubf57\ubf58\ubf59\ubf5a\ubf5b\ubf5c\ubf5d\ubf5e\ubf5f\ubf60\ubf61\ubf62\ubf63\ubf64\ubf65\ubf66\ubf67\ubf68\ubf69\ubf6a\ubf6b\ubf6c\ubf6d\ubf6e\ubf6f\ubf70\ubf71\ubf72\ubf73\ubf74\ubf75\ubf76\ubf77\ubf78\ubf79\ubf7a\ubf7b\ubf7c\ubf7d\ubf7e\ubf7f\ubf80\ubf81\ubf82\ubf83\ubf84\ubf85\ubf86\ubf87\ubf88\ubf89\ubf8a\ubf8b\ubf8c\ubf8d\ubf8e\ubf8f\ubf90\ubf91\ubf92\ubf93\ubf94\ubf95\ubf96\ubf97\ubf98\ubf99\ubf9a\ubf9b\ubf9c\ubf9d\ubf9e\ubf9f\ubfa0\ubfa1\ubfa2\ubfa3\ubfa4\ubfa5\ubfa6\ubfa7\ubfa8\ubfa9\ubfaa\ubfab\ubfac\ubfad\ubfae\ubfaf\ubfb0\ubfb1\ubfb2\ubfb3\ubfb4\ubfb5\ubfb6\ubfb7\ubfb8\ubfb9\ubfba\ubfbb\ubfbc\ubfbd\ubfbe\ubfbf\ubfc0\ubfc1\ubfc2\ubfc3\ubfc4\ubfc5\ubfc6\ubfc7\ubfc8\ubfc9\ubfca\ubfcb\ubfcc\ubfcd\ubfce\ubfcf\ubfd0\ubfd1\ubfd2\ubfd3\ubfd4\ubfd5\ubfd6\ubfd7\ubfd8\ubfd9\ubfda\ubfdb\ubfdc\ubfdd\ubfde\ubfdf\ubfe0\ubfe1\ubfe2\ubfe3\ubfe4\ubfe5\ubfe6\ubfe7\ubfe8\ubfe9\ubfea\ubfeb\ubfec\ubfed\ubfee\ubfef\ubff0\ubff1\ubff2\ubff3\ubff4\ubff5\ubff6\ubff7\ubff8\ubff9\ubffa\ubffb\ubffc\ubffd\ubffe\ubfff\uc000\uc001\uc002\uc003\uc004\uc005\uc006\uc007\uc008\uc009\uc00a\uc00b\uc00c\uc00d\uc00e\uc00f\uc010\uc011\uc012\uc013\uc014\uc015\uc016\uc017\uc018\uc019\uc01a\uc01b\uc01c\uc01d\uc01e\uc01f\uc020\uc021\uc022\uc023\uc024\uc025\uc026\uc027\uc028\uc029\uc02a\uc02b\uc02c\uc02d\uc02e\uc02f\uc030\uc031\uc032\uc033\uc034\uc035\uc036\uc037\uc038\uc039\uc03a\uc03b\uc03c\uc03d\uc03e\uc03f\uc040\uc041\uc042\uc043\uc044\uc045\uc046\uc047\uc048\uc049\uc04a\uc04b\uc04c\uc04d\uc04e\uc04f\uc050\uc051\uc052\uc053\uc054\uc055\uc056\uc057\uc058\uc059\uc05a\uc05b\uc05c\uc05d\uc05e\uc05f\uc060\uc061\uc062\uc063\uc064\uc065\uc066\uc067\uc068\uc069\uc06a\uc06b\uc06c\uc06d\uc06e\uc06f\uc070\uc071\uc072\uc073\uc074\uc075\uc076\uc077\uc078\uc079\uc07a\uc07b\uc07c\uc07d\uc07e\uc07f\uc080\uc081\uc082\uc083\uc084\uc085\uc086\uc087\uc088\uc089\uc08a\uc08b\uc08c\uc08d\uc08e\uc08f\uc090\uc091\uc092\uc093\uc094\uc095\uc096\uc097\uc098\uc099\uc09a\uc09b\uc09c\uc09d\uc09e\uc09f\uc0a0\uc0a1\uc0a2\uc0a3\uc0a4\uc0a5\uc0a6\uc0a7\uc0a8\uc0a9\uc0aa\uc0ab\uc0ac\uc0ad\uc0ae\uc0af\uc0b0\uc0b1\uc0b2\uc0b3\uc0b4\uc0b5\uc0b6\uc0b7\uc0b8\uc0b9\uc0ba\uc0bb\uc0bc\uc0bd\uc0be\uc0bf\uc0c0\uc0c1\uc0c2\uc0c3\uc0c4\uc0c5\uc0c6\uc0c7\uc0c8\uc0c9\uc0ca\uc0cb\uc0cc\uc0cd\uc0ce\uc0cf\uc0d0\uc0d1\uc0d2\uc0d3\uc0d4\uc0d5\uc0d6\uc0d7\uc0d8\uc0d9\uc0da\uc0db\uc0dc\uc0dd\uc0de\uc0df\uc0e0\uc0e1\uc0e2\uc0e3\uc0e4\uc0e5\uc0e6\uc0e7\uc0e8\uc0e9\uc0ea\uc0eb\uc0ec\uc0ed\uc0ee\uc0ef\uc0f0\uc0f1\uc0f2\uc0f3\uc0f4\uc0f5\uc0f6\uc0f7\uc0f8\uc0f9\uc0fa\uc0fb\uc0fc\uc0fd\uc0fe\uc0ff\uc100\uc101\uc102\uc103\uc104\uc105\uc106\uc107\uc108\uc109\uc10a\uc10b\uc10c\uc10d\uc10e\uc10f\uc110\uc111\uc112\uc113\uc114\uc115\uc116\uc117\uc118\uc119\uc11a\uc11b\uc11c\uc11d\uc11e\uc11f\uc120\uc121\uc122\uc123\uc124\uc125\uc126\uc127\uc128\uc129\uc12a\uc12b\uc12c\uc12d\uc12e\uc12f\uc130\uc131\uc132\uc133\uc134\uc135\uc136\uc137\uc138\uc139\uc13a\uc13b\uc13c\uc13d\uc13e\uc13f\uc140\uc141\uc142\uc143\uc144\uc145\uc146\uc147\uc148\uc149\uc14a\uc14b\uc14c\uc14d\uc14e\uc14f\uc150\uc151\uc152\uc153\uc154\uc155\uc156\uc157\uc158\uc159\uc15a\uc15b\uc15c\uc15d\uc15e\uc15f\uc160\uc161\uc162\uc163\uc164\uc165\uc166\uc167\uc168\uc169\uc16a\uc16b\uc16c\uc16d\uc16e\uc16f\uc170\uc171\uc172\uc173\uc174\uc175\uc176\uc177\uc178\uc179\uc17a\uc17b\uc17c\uc17d\uc17e\uc17f\uc180\uc181\uc182\uc183\uc184\uc185\uc186\uc187\uc188\uc189\uc18a\uc18b\uc18c\uc18d\uc18e\uc18f\uc190\uc191\uc192\uc193\uc194\uc195\uc196\uc197\uc198\uc199\uc19a\uc19b\uc19c\uc19d\uc19e\uc19f\uc1a0\uc1a1\uc1a2\uc1a3\uc1a4\uc1a5\uc1a6\uc1a7\uc1a8\uc1a9\uc1aa\uc1ab\uc1ac\uc1ad\uc1ae\uc1af\uc1b0\uc1b1\uc1b2\uc1b3\uc1b4\uc1b5\uc1b6\uc1b7\uc1b8\uc1b9\uc1ba\uc1bb\uc1bc\uc1bd\uc1be\uc1bf\uc1c0\uc1c1\uc1c2\uc1c3\uc1c4\uc1c5\uc1c6\uc1c7\uc1c8\uc1c9\uc1ca\uc1cb\uc1cc\uc1cd\uc1ce\uc1cf\uc1d0\uc1d1\uc1d2\uc1d3\uc1d4\uc1d5\uc1d6\uc1d7\uc1d8\uc1d9\uc1da\uc1db\uc1dc\uc1dd\uc1de\uc1df\uc1e0\uc1e1\uc1e2\uc1e3\uc1e4\uc1e5\uc1e6\uc1e7\uc1e8\uc1e9\uc1ea\uc1eb\uc1ec\uc1ed\uc1ee\uc1ef\uc1f0\uc1f1\uc1f2\uc1f3\uc1f4\uc1f5\uc1f6\uc1f7\uc1f8\uc1f9\uc1fa\uc1fb\uc1fc\uc1fd\uc1fe\uc1ff\uc200\uc201\uc202\uc203\uc204\uc205\uc206\uc207\uc208\uc209\uc20a\uc20b\uc20c\uc20d\uc20e\uc20f\uc210\uc211\uc212\uc213\uc214\uc215\uc216\uc217\uc218\uc219\uc21a\uc21b\uc21c\uc21d\uc21e\uc21f\uc220\uc221\uc222\uc223\uc224\uc225\uc226\uc227\uc228\uc229\uc22a\uc22b\uc22c\uc22d\uc22e\uc22f\uc230\uc231\uc232\uc233\uc234\uc235\uc236\uc237\uc238\uc239\uc23a\uc23b\uc23c\uc23d\uc23e\uc23f\uc240\uc241\uc242\uc243\uc244\uc245\uc246\uc247\uc248\uc249\uc24a\uc24b\uc24c\uc24d\uc24e\uc24f\uc250\uc251\uc252\uc253\uc254\uc255\uc256\uc257\uc258\uc259\uc25a\uc25b\uc25c\uc25d\uc25e\uc25f\uc260\uc261\uc262\uc263\uc264\uc265\uc266\uc267\uc268\uc269\uc26a\uc26b\uc26c\uc26d\uc26e\uc26f\uc270\uc271\uc272\uc273\uc274\uc275\uc276\uc277\uc278\uc279\uc27a\uc27b\uc27c\uc27d\uc27e\uc27f\uc280\uc281\uc282\uc283\uc284\uc285\uc286\uc287\uc288\uc289\uc28a\uc28b\uc28c\uc28d\uc28e\uc28f\uc290\uc291\uc292\uc293\uc294\uc295\uc296\uc297\uc298\uc299\uc29a\uc29b\uc29c\uc29d\uc29e\uc29f\uc2a0\uc2a1\uc2a2\uc2a3\uc2a4\uc2a5\uc2a6\uc2a7\uc2a8\uc2a9\uc2aa\uc2ab\uc2ac\uc2ad\uc2ae\uc2af\uc2b0\uc2b1\uc2b2\uc2b3\uc2b4\uc2b5\uc2b6\uc2b7\uc2b8\uc2b9\uc2ba\uc2bb\uc2bc\uc2bd\uc2be\uc2bf\uc2c0\uc2c1\uc2c2\uc2c3\uc2c4\uc2c5\uc2c6\uc2c7\uc2c8\uc2c9\uc2ca\uc2cb\uc2cc\uc2cd\uc2ce\uc2cf\uc2d0\uc2d1\uc2d2\uc2d3\uc2d4\uc2d5\uc2d6\uc2d7\uc2d8\uc2d9\uc2da\uc2db\uc2dc\uc2dd\uc2de\uc2df\uc2e0\uc2e1\uc2e2\uc2e3\uc2e4\uc2e5\uc2e6\uc2e7\uc2e8\uc2e9\uc2ea\uc2eb\uc2ec\uc2ed\uc2ee\uc2ef\uc2f0\uc2f1\uc2f2\uc2f3\uc2f4\uc2f5\uc2f6\uc2f7\uc2f8\uc2f9\uc2fa\uc2fb\uc2fc\uc2fd\uc2fe\uc2ff\uc300\uc301\uc302\uc303\uc304\uc305\uc306\uc307\uc308\uc309\uc30a\uc30b\uc30c\uc30d\uc30e\uc30f\uc310\uc311\uc312\uc313\uc314\uc315\uc316\uc317\uc318\uc319\uc31a\uc31b\uc31c\uc31d\uc31e\uc31f\uc320\uc321\uc322\uc323\uc324\uc325\uc326\uc327\uc328\uc329\uc32a\uc32b\uc32c\uc32d\uc32e\uc32f\uc330\uc331\uc332\uc333\uc334\uc335\uc336\uc337\uc338\uc339\uc33a\uc33b\uc33c\uc33d\uc33e\uc33f\uc340\uc341\uc342\uc343\uc344\uc345\uc346\uc347\uc348\uc349\uc34a\uc34b\uc34c\uc34d\uc34e\uc34f\uc350\uc351\uc352\uc353\uc354\uc355\uc356\uc357\uc358\uc359\uc35a\uc35b\uc35c\uc35d\uc35e\uc35f\uc360\uc361\uc362\uc363\uc364\uc365\uc366\uc367\uc368\uc369\uc36a\uc36b\uc36c\uc36d\uc36e\uc36f\uc370\uc371\uc372\uc373\uc374\uc375\uc376\uc377\uc378\uc379\uc37a\uc37b\uc37c\uc37d\uc37e\uc37f\uc380\uc381\uc382\uc383\uc384\uc385\uc386\uc387\uc388\uc389\uc38a\uc38b\uc38c\uc38d\uc38e\uc38f\uc390\uc391\uc392\uc393\uc394\uc395\uc396\uc397\uc398\uc399\uc39a\uc39b\uc39c\uc39d\uc39e\uc39f\uc3a0\uc3a1\uc3a2\uc3a3\uc3a4\uc3a5\uc3a6\uc3a7\uc3a8\uc3a9\uc3aa\uc3ab\uc3ac\uc3ad\uc3ae\uc3af\uc3b0\uc3b1\uc3b2\uc3b3\uc3b4\uc3b5\uc3b6\uc3b7\uc3b8\uc3b9\uc3ba\uc3bb\uc3bc\uc3bd\uc3be\uc3bf\uc3c0\uc3c1\uc3c2\uc3c3\uc3c4\uc3c5\uc3c6\uc3c7\uc3c8\uc3c9\uc3ca\uc3cb\uc3cc\uc3cd\uc3ce\uc3cf\uc3d0\uc3d1\uc3d2\uc3d3\uc3d4\uc3d5\uc3d6\uc3d7\uc3d8\uc3d9\uc3da\uc3db\uc3dc\uc3dd\uc3de\uc3df\uc3e0\uc3e1\uc3e2\uc3e3\uc3e4\uc3e5\uc3e6\uc3e7\uc3e8\uc3e9\uc3ea\uc3eb\uc3ec\uc3ed\uc3ee\uc3ef\uc3f0\uc3f1\uc3f2\uc3f3\uc3f4\uc3f5\uc3f6\uc3f7\uc3f8\uc3f9\uc3fa\uc3fb\uc3fc\uc3fd\uc3fe\uc3ff\uc400\uc401\uc402\uc403\uc404\uc405\uc406\uc407\uc408\uc409\uc40a\uc40b\uc40c\uc40d\uc40e\uc40f\uc410\uc411\uc412\uc413\uc414\uc415\uc416\uc417\uc418\uc419\uc41a\uc41b\uc41c\uc41d\uc41e\uc41f\uc420\uc421\uc422\uc423\uc424\uc425\uc426\uc427\uc428\uc429\uc42a\uc42b\uc42c\uc42d\uc42e\uc42f\uc430\uc431\uc432\uc433\uc434\uc435\uc436\uc437\uc438\uc439\uc43a\uc43b\uc43c\uc43d\uc43e\uc43f\uc440\uc441\uc442\uc443\uc444\uc445\uc446\uc447\uc448\uc449\uc44a\uc44b\uc44c\uc44d\uc44e\uc44f\uc450\uc451\uc452\uc453\uc454\uc455\uc456\uc457\uc458\uc459\uc45a\uc45b\uc45c\uc45d\uc45e\uc45f\uc460\uc461\uc462\uc463\uc464\uc465\uc466\uc467\uc468\uc469\uc46a\uc46b\uc46c\uc46d\uc46e\uc46f\uc470\uc471\uc472\uc473\uc474\uc475\uc476\uc477\uc478\uc479\uc47a\uc47b\uc47c\uc47d\uc47e\uc47f\uc480\uc481\uc482\uc483\uc484\uc485\uc486\uc487\uc488\uc489\uc48a\uc48b\uc48c\uc48d\uc48e\uc48f\uc490\uc491\uc492\uc493\uc494\uc495\uc496\uc497\uc498\uc499\uc49a\uc49b\uc49c\uc49d\uc49e\uc49f\uc4a0\uc4a1\uc4a2\uc4a3\uc4a4\uc4a5\uc4a6\uc4a7\uc4a8\uc4a9\uc4aa\uc4ab\uc4ac\uc4ad\uc4ae\uc4af\uc4b0\uc4b1\uc4b2\uc4b3\uc4b4\uc4b5\uc4b6\uc4b7\uc4b8\uc4b9\uc4ba\uc4bb\uc4bc\uc4bd\uc4be\uc4bf\uc4c0\uc4c1\uc4c2\uc4c3\uc4c4\uc4c5\uc4c6\uc4c7\uc4c8\uc4c9\uc4ca\uc4cb\uc4cc\uc4cd\uc4ce\uc4cf\uc4d0\uc4d1\uc4d2\uc4d3\uc4d4\uc4d5\uc4d6\uc4d7\uc4d8\uc4d9\uc4da\uc4db\uc4dc\uc4dd\uc4de\uc4df\uc4e0\uc4e1\uc4e2\uc4e3\uc4e4\uc4e5\uc4e6\uc4e7\uc4e8\uc4e9\uc4ea\uc4eb\uc4ec\uc4ed\uc4ee\uc4ef\uc4f0\uc4f1\uc4f2\uc4f3\uc4f4\uc4f5\uc4f6\uc4f7\uc4f8\uc4f9\uc4fa\uc4fb\uc4fc\uc4fd\uc4fe\uc4ff\uc500\uc501\uc502\uc503\uc504\uc505\uc506\uc507\uc508\uc509\uc50a\uc50b\uc50c\uc50d\uc50e\uc50f\uc510\uc511\uc512\uc513\uc514\uc515\uc516\uc517\uc518\uc519\uc51a\uc51b\uc51c\uc51d\uc51e\uc51f\uc520\uc521\uc522\uc523\uc524\uc525\uc526\uc527\uc528\uc529\uc52a\uc52b\uc52c\uc52d\uc52e\uc52f\uc530\uc531\uc532\uc533\uc534\uc535\uc536\uc537\uc538\uc539\uc53a\uc53b\uc53c\uc53d\uc53e\uc53f\uc540\uc541\uc542\uc543\uc544\uc545\uc546\uc547\uc548\uc549\uc54a\uc54b\uc54c\uc54d\uc54e\uc54f\uc550\uc551\uc552\uc553\uc554\uc555\uc556\uc557\uc558\uc559\uc55a\uc55b\uc55c\uc55d\uc55e\uc55f\uc560\uc561\uc562\uc563\uc564\uc565\uc566\uc567\uc568\uc569\uc56a\uc56b\uc56c\uc56d\uc56e\uc56f\uc570\uc571\uc572\uc573\uc574\uc575\uc576\uc577\uc578\uc579\uc57a\uc57b\uc57c\uc57d\uc57e\uc57f\uc580\uc581\uc582\uc583\uc584\uc585\uc586\uc587\uc588\uc589\uc58a\uc58b\uc58c\uc58d\uc58e\uc58f\uc590\uc591\uc592\uc593\uc594\uc595\uc596\uc597\uc598\uc599\uc59a\uc59b\uc59c\uc59d\uc59e\uc59f\uc5a0\uc5a1\uc5a2\uc5a3\uc5a4\uc5a5\uc5a6\uc5a7\uc5a8\uc5a9\uc5aa\uc5ab\uc5ac\uc5ad\uc5ae\uc5af\uc5b0\uc5b1\uc5b2\uc5b3\uc5b4\uc5b5\uc5b6\uc5b7\uc5b8\uc5b9\uc5ba\uc5bb\uc5bc\uc5bd\uc5be\uc5bf\uc5c0\uc5c1\uc5c2\uc5c3\uc5c4\uc5c5\uc5c6\uc5c7\uc5c8\uc5c9\uc5ca\uc5cb\uc5cc\uc5cd\uc5ce\uc5cf\uc5d0\uc5d1\uc5d2\uc5d3\uc5d4\uc5d5\uc5d6\uc5d7\uc5d8\uc5d9\uc5da\uc5db\uc5dc\uc5dd\uc5de\uc5df\uc5e0\uc5e1\uc5e2\uc5e3\uc5e4\uc5e5\uc5e6\uc5e7\uc5e8\uc5e9\uc5ea\uc5eb\uc5ec\uc5ed\uc5ee\uc5ef\uc5f0\uc5f1\uc5f2\uc5f3\uc5f4\uc5f5\uc5f6\uc5f7\uc5f8\uc5f9\uc5fa\uc5fb\uc5fc\uc5fd\uc5fe\uc5ff\uc600\uc601\uc602\uc603\uc604\uc605\uc606\uc607\uc608\uc609\uc60a\uc60b\uc60c\uc60d\uc60e\uc60f\uc610\uc611\uc612\uc613\uc614\uc615\uc616\uc617\uc618\uc619\uc61a\uc61b\uc61c\uc61d\uc61e\uc61f\uc620\uc621\uc622\uc623\uc624\uc625\uc626\uc627\uc628\uc629\uc62a\uc62b\uc62c\uc62d\uc62e\uc62f\uc630\uc631\uc632\uc633\uc634\uc635\uc636\uc637\uc638\uc639\uc63a\uc63b\uc63c\uc63d\uc63e\uc63f\uc640\uc641\uc642\uc643\uc644\uc645\uc646\uc647\uc648\uc649\uc64a\uc64b\uc64c\uc64d\uc64e\uc64f\uc650\uc651\uc652\uc653\uc654\uc655\uc656\uc657\uc658\uc659\uc65a\uc65b\uc65c\uc65d\uc65e\uc65f\uc660\uc661\uc662\uc663\uc664\uc665\uc666\uc667\uc668\uc669\uc66a\uc66b\uc66c\uc66d\uc66e\uc66f\uc670\uc671\uc672\uc673\uc674\uc675\uc676\uc677\uc678\uc679\uc67a\uc67b\uc67c\uc67d\uc67e\uc67f\uc680\uc681\uc682\uc683\uc684\uc685\uc686\uc687\uc688\uc689\uc68a\uc68b\uc68c\uc68d\uc68e\uc68f\uc690\uc691\uc692\uc693\uc694\uc695\uc696\uc697\uc698\uc699\uc69a\uc69b\uc69c\uc69d\uc69e\uc69f\uc6a0\uc6a1\uc6a2\uc6a3\uc6a4\uc6a5\uc6a6\uc6a7\uc6a8\uc6a9\uc6aa\uc6ab\uc6ac\uc6ad\uc6ae\uc6af\uc6b0\uc6b1\uc6b2\uc6b3\uc6b4\uc6b5\uc6b6\uc6b7\uc6b8\uc6b9\uc6ba\uc6bb\uc6bc\uc6bd\uc6be\uc6bf\uc6c0\uc6c1\uc6c2\uc6c3\uc6c4\uc6c5\uc6c6\uc6c7\uc6c8\uc6c9\uc6ca\uc6cb\uc6cc\uc6cd\uc6ce\uc6cf\uc6d0\uc6d1\uc6d2\uc6d3\uc6d4\uc6d5\uc6d6\uc6d7\uc6d8\uc6d9\uc6da\uc6db\uc6dc\uc6dd\uc6de\uc6df\uc6e0\uc6e1\uc6e2\uc6e3\uc6e4\uc6e5\uc6e6\uc6e7\uc6e8\uc6e9\uc6ea\uc6eb\uc6ec\uc6ed\uc6ee\uc6ef\uc6f0\uc6f1\uc6f2\uc6f3\uc6f4\uc6f5\uc6f6\uc6f7\uc6f8\uc6f9\uc6fa\uc6fb\uc6fc\uc6fd\uc6fe\uc6ff\uc700\uc701\uc702\uc703\uc704\uc705\uc706\uc707\uc708\uc709\uc70a\uc70b\uc70c\uc70d\uc70e\uc70f\uc710\uc711\uc712\uc713\uc714\uc715\uc716\uc717\uc718\uc719\uc71a\uc71b\uc71c\uc71d\uc71e\uc71f\uc720\uc721\uc722\uc723\uc724\uc725\uc726\uc727\uc728\uc729\uc72a\uc72b\uc72c\uc72d\uc72e\uc72f\uc730\uc731\uc732\uc733\uc734\uc735\uc736\uc737\uc738\uc739\uc73a\uc73b\uc73c\uc73d\uc73e\uc73f\uc740\uc741\uc742\uc743\uc744\uc745\uc746\uc747\uc748\uc749\uc74a\uc74b\uc74c\uc74d\uc74e\uc74f\uc750\uc751\uc752\uc753\uc754\uc755\uc756\uc757\uc758\uc759\uc75a\uc75b\uc75c\uc75d\uc75e\uc75f\uc760\uc761\uc762\uc763\uc764\uc765\uc766\uc767\uc768\uc769\uc76a\uc76b\uc76c\uc76d\uc76e\uc76f\uc770\uc771\uc772\uc773\uc774\uc775\uc776\uc777\uc778\uc779\uc77a\uc77b\uc77c\uc77d\uc77e\uc77f\uc780\uc781\uc782\uc783\uc784\uc785\uc786\uc787\uc788\uc789\uc78a\uc78b\uc78c\uc78d\uc78e\uc78f\uc790\uc791\uc792\uc793\uc794\uc795\uc796\uc797\uc798\uc799\uc79a\uc79b\uc79c\uc79d\uc79e\uc79f\uc7a0\uc7a1\uc7a2\uc7a3\uc7a4\uc7a5\uc7a6\uc7a7\uc7a8\uc7a9\uc7aa\uc7ab\uc7ac\uc7ad\uc7ae\uc7af\uc7b0\uc7b1\uc7b2\uc7b3\uc7b4\uc7b5\uc7b6\uc7b7\uc7b8\uc7b9\uc7ba\uc7bb\uc7bc\uc7bd\uc7be\uc7bf\uc7c0\uc7c1\uc7c2\uc7c3\uc7c4\uc7c5\uc7c6\uc7c7\uc7c8\uc7c9\uc7ca\uc7cb\uc7cc\uc7cd\uc7ce\uc7cf\uc7d0\uc7d1\uc7d2\uc7d3\uc7d4\uc7d5\uc7d6\uc7d7\uc7d8\uc7d9\uc7da\uc7db\uc7dc\uc7dd\uc7de\uc7df\uc7e0\uc7e1\uc7e2\uc7e3\uc7e4\uc7e5\uc7e6\uc7e7\uc7e8\uc7e9\uc7ea\uc7eb\uc7ec\uc7ed\uc7ee\uc7ef\uc7f0\uc7f1\uc7f2\uc7f3\uc7f4\uc7f5\uc7f6\uc7f7\uc7f8\uc7f9\uc7fa\uc7fb\uc7fc\uc7fd\uc7fe\uc7ff\uc800\uc801\uc802\uc803\uc804\uc805\uc806\uc807\uc808\uc809\uc80a\uc80b\uc80c\uc80d\uc80e\uc80f\uc810\uc811\uc812\uc813\uc814\uc815\uc816\uc817\uc818\uc819\uc81a\uc81b\uc81c\uc81d\uc81e\uc81f\uc820\uc821\uc822\uc823\uc824\uc825\uc826\uc827\uc828\uc829\uc82a\uc82b\uc82c\uc82d\uc82e\uc82f\uc830\uc831\uc832\uc833\uc834\uc835\uc836\uc837\uc838\uc839\uc83a\uc83b\uc83c\uc83d\uc83e\uc83f\uc840\uc841\uc842\uc843\uc844\uc845\uc846\uc847\uc848\uc849\uc84a\uc84b\uc84c\uc84d\uc84e\uc84f\uc850\uc851\uc852\uc853\uc854\uc855\uc856\uc857\uc858\uc859\uc85a\uc85b\uc85c\uc85d\uc85e\uc85f\uc860\uc861\uc862\uc863\uc864\uc865\uc866\uc867\uc868\uc869\uc86a\uc86b\uc86c\uc86d\uc86e\uc86f\uc870\uc871\uc872\uc873\uc874\uc875\uc876\uc877\uc878\uc879\uc87a\uc87b\uc87c\uc87d\uc87e\uc87f\uc880\uc881\uc882\uc883\uc884\uc885\uc886\uc887\uc888\uc889\uc88a\uc88b\uc88c\uc88d\uc88e\uc88f\uc890\uc891\uc892\uc893\uc894\uc895\uc896\uc897\uc898\uc899\uc89a\uc89b\uc89c\uc89d\uc89e\uc89f\uc8a0\uc8a1\uc8a2\uc8a3\uc8a4\uc8a5\uc8a6\uc8a7\uc8a8\uc8a9\uc8aa\uc8ab\uc8ac\uc8ad\uc8ae\uc8af\uc8b0\uc8b1\uc8b2\uc8b3\uc8b4\uc8b5\uc8b6\uc8b7\uc8b8\uc8b9\uc8ba\uc8bb\uc8bc\uc8bd\uc8be\uc8bf\uc8c0\uc8c1\uc8c2\uc8c3\uc8c4\uc8c5\uc8c6\uc8c7\uc8c8\uc8c9\uc8ca\uc8cb\uc8cc\uc8cd\uc8ce\uc8cf\uc8d0\uc8d1\uc8d2\uc8d3\uc8d4\uc8d5\uc8d6\uc8d7\uc8d8\uc8d9\uc8da\uc8db\uc8dc\uc8dd\uc8de\uc8df\uc8e0\uc8e1\uc8e2\uc8e3\uc8e4\uc8e5\uc8e6\uc8e7\uc8e8\uc8e9\uc8ea\uc8eb\uc8ec\uc8ed\uc8ee\uc8ef\uc8f0\uc8f1\uc8f2\uc8f3\uc8f4\uc8f5\uc8f6\uc8f7\uc8f8\uc8f9\uc8fa\uc8fb\uc8fc\uc8fd\uc8fe\uc8ff\uc900\uc901\uc902\uc903\uc904\uc905\uc906\uc907\uc908\uc909\uc90a\uc90b\uc90c\uc90d\uc90e\uc90f\uc910\uc911\uc912\uc913\uc914\uc915\uc916\uc917\uc918\uc919\uc91a\uc91b\uc91c\uc91d\uc91e\uc91f\uc920\uc921\uc922\uc923\uc924\uc925\uc926\uc927\uc928\uc929\uc92a\uc92b\uc92c\uc92d\uc92e\uc92f\uc930\uc931\uc932\uc933\uc934\uc935\uc936\uc937\uc938\uc939\uc93a\uc93b\uc93c\uc93d\uc93e\uc93f\uc940\uc941\uc942\uc943\uc944\uc945\uc946\uc947\uc948\uc949\uc94a\uc94b\uc94c\uc94d\uc94e\uc94f\uc950\uc951\uc952\uc953\uc954\uc955\uc956\uc957\uc958\uc959\uc95a\uc95b\uc95c\uc95d\uc95e\uc95f\uc960\uc961\uc962\uc963\uc964\uc965\uc966\uc967\uc968\uc969\uc96a\uc96b\uc96c\uc96d\uc96e\uc96f\uc970\uc971\uc972\uc973\uc974\uc975\uc976\uc977\uc978\uc979\uc97a\uc97b\uc97c\uc97d\uc97e\uc97f\uc980\uc981\uc982\uc983\uc984\uc985\uc986\uc987\uc988\uc989\uc98a\uc98b\uc98c\uc98d\uc98e\uc98f\uc990\uc991\uc992\uc993\uc994\uc995\uc996\uc997\uc998\uc999\uc99a\uc99b\uc99c\uc99d\uc99e\uc99f\uc9a0\uc9a1\uc9a2\uc9a3\uc9a4\uc9a5\uc9a6\uc9a7\uc9a8\uc9a9\uc9aa\uc9ab\uc9ac\uc9ad\uc9ae\uc9af\uc9b0\uc9b1\uc9b2\uc9b3\uc9b4\uc9b5\uc9b6\uc9b7\uc9b8\uc9b9\uc9ba\uc9bb\uc9bc\uc9bd\uc9be\uc9bf\uc9c0\uc9c1\uc9c2\uc9c3\uc9c4\uc9c5\uc9c6\uc9c7\uc9c8\uc9c9\uc9ca\uc9cb\uc9cc\uc9cd\uc9ce\uc9cf\uc9d0\uc9d1\uc9d2\uc9d3\uc9d4\uc9d5\uc9d6\uc9d7\uc9d8\uc9d9\uc9da\uc9db\uc9dc\uc9dd\uc9de\uc9df\uc9e0\uc9e1\uc9e2\uc9e3\uc9e4\uc9e5\uc9e6\uc9e7\uc9e8\uc9e9\uc9ea\uc9eb\uc9ec\uc9ed\uc9ee\uc9ef\uc9f0\uc9f1\uc9f2\uc9f3\uc9f4\uc9f5\uc9f6\uc9f7\uc9f8\uc9f9\uc9fa\uc9fb\uc9fc\uc9fd\uc9fe\uc9ff\uca00\uca01\uca02\uca03\uca04\uca05\uca06\uca07\uca08\uca09\uca0a\uca0b\uca0c\uca0d\uca0e\uca0f\uca10\uca11\uca12\uca13\uca14\uca15\uca16\uca17\uca18\uca19\uca1a\uca1b\uca1c\uca1d\uca1e\uca1f\uca20\uca21\uca22\uca23\uca24\uca25\uca26\uca27\uca28\uca29\uca2a\uca2b\uca2c\uca2d\uca2e\uca2f\uca30\uca31\uca32\uca33\uca34\uca35\uca36\uca37\uca38\uca39\uca3a\uca3b\uca3c\uca3d\uca3e\uca3f\uca40\uca41\uca42\uca43\uca44\uca45\uca46\uca47\uca48\uca49\uca4a\uca4b\uca4c\uca4d\uca4e\uca4f\uca50\uca51\uca52\uca53\uca54\uca55\uca56\uca57\uca58\uca59\uca5a\uca5b\uca5c\uca5d\uca5e\uca5f\uca60\uca61\uca62\uca63\uca64\uca65\uca66\uca67\uca68\uca69\uca6a\uca6b\uca6c\uca6d\uca6e\uca6f\uca70\uca71\uca72\uca73\uca74\uca75\uca76\uca77\uca78\uca79\uca7a\uca7b\uca7c\uca7d\uca7e\uca7f\uca80\uca81\uca82\uca83\uca84\uca85\uca86\uca87\uca88\uca89\uca8a\uca8b\uca8c\uca8d\uca8e\uca8f\uca90\uca91\uca92\uca93\uca94\uca95\uca96\uca97\uca98\uca99\uca9a\uca9b\uca9c\uca9d\uca9e\uca9f\ucaa0\ucaa1\ucaa2\ucaa3\ucaa4\ucaa5\ucaa6\ucaa7\ucaa8\ucaa9\ucaaa\ucaab\ucaac\ucaad\ucaae\ucaaf\ucab0\ucab1\ucab2\ucab3\ucab4\ucab5\ucab6\ucab7\ucab8\ucab9\ucaba\ucabb\ucabc\ucabd\ucabe\ucabf\ucac0\ucac1\ucac2\ucac3\ucac4\ucac5\ucac6\ucac7\ucac8\ucac9\ucaca\ucacb\ucacc\ucacd\ucace\ucacf\ucad0\ucad1\ucad2\ucad3\ucad4\ucad5\ucad6\ucad7\ucad8\ucad9\ucada\ucadb\ucadc\ucadd\ucade\ucadf\ucae0\ucae1\ucae2\ucae3\ucae4\ucae5\ucae6\ucae7\ucae8\ucae9\ucaea\ucaeb\ucaec\ucaed\ucaee\ucaef\ucaf0\ucaf1\ucaf2\ucaf3\ucaf4\ucaf5\ucaf6\ucaf7\ucaf8\ucaf9\ucafa\ucafb\ucafc\ucafd\ucafe\ucaff\ucb00\ucb01\ucb02\ucb03\ucb04\ucb05\ucb06\ucb07\ucb08\ucb09\ucb0a\ucb0b\ucb0c\ucb0d\ucb0e\ucb0f\ucb10\ucb11\ucb12\ucb13\ucb14\ucb15\ucb16\ucb17\ucb18\ucb19\ucb1a\ucb1b\ucb1c\ucb1d\ucb1e\ucb1f\ucb20\ucb21\ucb22\ucb23\ucb24\ucb25\ucb26\ucb27\ucb28\ucb29\ucb2a\ucb2b\ucb2c\ucb2d\ucb2e\ucb2f\ucb30\ucb31\ucb32\ucb33\ucb34\ucb35\ucb36\ucb37\ucb38\ucb39\ucb3a\ucb3b\ucb3c\ucb3d\ucb3e\ucb3f\ucb40\ucb41\ucb42\ucb43\ucb44\ucb45\ucb46\ucb47\ucb48\ucb49\ucb4a\ucb4b\ucb4c\ucb4d\ucb4e\ucb4f\ucb50\ucb51\ucb52\ucb53\ucb54\ucb55\ucb56\ucb57\ucb58\ucb59\ucb5a\ucb5b\ucb5c\ucb5d\ucb5e\ucb5f\ucb60\ucb61\ucb62\ucb63\ucb64\ucb65\ucb66\ucb67\ucb68\ucb69\ucb6a\ucb6b\ucb6c\ucb6d\ucb6e\ucb6f\ucb70\ucb71\ucb72\ucb73\ucb74\ucb75\ucb76\ucb77\ucb78\ucb79\ucb7a\ucb7b\ucb7c\ucb7d\ucb7e\ucb7f\ucb80\ucb81\ucb82\ucb83\ucb84\ucb85\ucb86\ucb87\ucb88\ucb89\ucb8a\ucb8b\ucb8c\ucb8d\ucb8e\ucb8f\ucb90\ucb91\ucb92\ucb93\ucb94\ucb95\ucb96\ucb97\ucb98\ucb99\ucb9a\ucb9b\ucb9c\ucb9d\ucb9e\ucb9f\ucba0\ucba1\ucba2\ucba3\ucba4\ucba5\ucba6\ucba7\ucba8\ucba9\ucbaa\ucbab\ucbac\ucbad\ucbae\ucbaf\ucbb0\ucbb1\ucbb2\ucbb3\ucbb4\ucbb5\ucbb6\ucbb7\ucbb8\ucbb9\ucbba\ucbbb\ucbbc\ucbbd\ucbbe\ucbbf\ucbc0\ucbc1\ucbc2\ucbc3\ucbc4\ucbc5\ucbc6\ucbc7\ucbc8\ucbc9\ucbca\ucbcb\ucbcc\ucbcd\ucbce\ucbcf\ucbd0\ucbd1\ucbd2\ucbd3\ucbd4\ucbd5\ucbd6\ucbd7\ucbd8\ucbd9\ucbda\ucbdb\ucbdc\ucbdd\ucbde\ucbdf\ucbe0\ucbe1\ucbe2\ucbe3\ucbe4\ucbe5\ucbe6\ucbe7\ucbe8\ucbe9\ucbea\ucbeb\ucbec\ucbed\ucbee\ucbef\ucbf0\ucbf1\ucbf2\ucbf3\ucbf4\ucbf5\ucbf6\ucbf7\ucbf8\ucbf9\ucbfa\ucbfb\ucbfc\ucbfd\ucbfe\ucbff\ucc00\ucc01\ucc02\ucc03\ucc04\ucc05\ucc06\ucc07\ucc08\ucc09\ucc0a\ucc0b\ucc0c\ucc0d\ucc0e\ucc0f\ucc10\ucc11\ucc12\ucc13\ucc14\ucc15\ucc16\ucc17\ucc18\ucc19\ucc1a\ucc1b\ucc1c\ucc1d\ucc1e\ucc1f\ucc20\ucc21\ucc22\ucc23\ucc24\ucc25\ucc26\ucc27\ucc28\ucc29\ucc2a\ucc2b\ucc2c\ucc2d\ucc2e\ucc2f\ucc30\ucc31\ucc32\ucc33\ucc34\ucc35\ucc36\ucc37\ucc38\ucc39\ucc3a\ucc3b\ucc3c\ucc3d\ucc3e\ucc3f\ucc40\ucc41\ucc42\ucc43\ucc44\ucc45\ucc46\ucc47\ucc48\ucc49\ucc4a\ucc4b\ucc4c\ucc4d\ucc4e\ucc4f\ucc50\ucc51\ucc52\ucc53\ucc54\ucc55\ucc56\ucc57\ucc58\ucc59\ucc5a\ucc5b\ucc5c\ucc5d\ucc5e\ucc5f\ucc60\ucc61\ucc62\ucc63\ucc64\ucc65\ucc66\ucc67\ucc68\ucc69\ucc6a\ucc6b\ucc6c\ucc6d\ucc6e\ucc6f\ucc70\ucc71\ucc72\ucc73\ucc74\ucc75\ucc76\ucc77\ucc78\ucc79\ucc7a\ucc7b\ucc7c\ucc7d\ucc7e\ucc7f\ucc80\ucc81\ucc82\ucc83\ucc84\ucc85\ucc86\ucc87\ucc88\ucc89\ucc8a\ucc8b\ucc8c\ucc8d\ucc8e\ucc8f\ucc90\ucc91\ucc92\ucc93\ucc94\ucc95\ucc96\ucc97\ucc98\ucc99\ucc9a\ucc9b\ucc9c\ucc9d\ucc9e\ucc9f\ucca0\ucca1\ucca2\ucca3\ucca4\ucca5\ucca6\ucca7\ucca8\ucca9\uccaa\uccab\uccac\uccad\uccae\uccaf\uccb0\uccb1\uccb2\uccb3\uccb4\uccb5\uccb6\uccb7\uccb8\uccb9\uccba\uccbb\uccbc\uccbd\uccbe\uccbf\uccc0\uccc1\uccc2\uccc3\uccc4\uccc5\uccc6\uccc7\uccc8\uccc9\uccca\ucccb\ucccc\ucccd\uccce\ucccf\uccd0\uccd1\uccd2\uccd3\uccd4\uccd5\uccd6\uccd7\uccd8\uccd9\uccda\uccdb\uccdc\uccdd\uccde\uccdf\ucce0\ucce1\ucce2\ucce3\ucce4\ucce5\ucce6\ucce7\ucce8\ucce9\uccea\ucceb\uccec\ucced\uccee\uccef\uccf0\uccf1\uccf2\uccf3\uccf4\uccf5\uccf6\uccf7\uccf8\uccf9\uccfa\uccfb\uccfc\uccfd\uccfe\uccff\ucd00\ucd01\ucd02\ucd03\ucd04\ucd05\ucd06\ucd07\ucd08\ucd09\ucd0a\ucd0b\ucd0c\ucd0d\ucd0e\ucd0f\ucd10\ucd11\ucd12\ucd13\ucd14\ucd15\ucd16\ucd17\ucd18\ucd19\ucd1a\ucd1b\ucd1c\ucd1d\ucd1e\ucd1f\ucd20\ucd21\ucd22\ucd23\ucd24\ucd25\ucd26\ucd27\ucd28\ucd29\ucd2a\ucd2b\ucd2c\ucd2d\ucd2e\ucd2f\ucd30\ucd31\ucd32\ucd33\ucd34\ucd35\ucd36\ucd37\ucd38\ucd39\ucd3a\ucd3b\ucd3c\ucd3d\ucd3e\ucd3f\ucd40\ucd41\ucd42\ucd43\ucd44\ucd45\ucd46\ucd47\ucd48\ucd49\ucd4a\ucd4b\ucd4c\ucd4d\ucd4e\ucd4f\ucd50\ucd51\ucd52\ucd53\ucd54\ucd55\ucd56\ucd57\ucd58\ucd59\ucd5a\ucd5b\ucd5c\ucd5d\ucd5e\ucd5f\ucd60\ucd61\ucd62\ucd63\ucd64\ucd65\ucd66\ucd67\ucd68\ucd69\ucd6a\ucd6b\ucd6c\ucd6d\ucd6e\ucd6f\ucd70\ucd71\ucd72\ucd73\ucd74\ucd75\ucd76\ucd77\ucd78\ucd79\ucd7a\ucd7b\ucd7c\ucd7d\ucd7e\ucd7f\ucd80\ucd81\ucd82\ucd83\ucd84\ucd85\ucd86\ucd87\ucd88\ucd89\ucd8a\ucd8b\ucd8c\ucd8d\ucd8e\ucd8f\ucd90\ucd91\ucd92\ucd93\ucd94\ucd95\ucd96\ucd97\ucd98\ucd99\ucd9a\ucd9b\ucd9c\ucd9d\ucd9e\ucd9f\ucda0\ucda1\ucda2\ucda3\ucda4\ucda5\ucda6\ucda7\ucda8\ucda9\ucdaa\ucdab\ucdac\ucdad\ucdae\ucdaf\ucdb0\ucdb1\ucdb2\ucdb3\ucdb4\ucdb5\ucdb6\ucdb7\ucdb8\ucdb9\ucdba\ucdbb\ucdbc\ucdbd\ucdbe\ucdbf\ucdc0\ucdc1\ucdc2\ucdc3\ucdc4\ucdc5\ucdc6\ucdc7\ucdc8\ucdc9\ucdca\ucdcb\ucdcc\ucdcd\ucdce\ucdcf\ucdd0\ucdd1\ucdd2\ucdd3\ucdd4\ucdd5\ucdd6\ucdd7\ucdd8\ucdd9\ucdda\ucddb\ucddc\ucddd\ucdde\ucddf\ucde0\ucde1\ucde2\ucde3\ucde4\ucde5\ucde6\ucde7\ucde8\ucde9\ucdea\ucdeb\ucdec\ucded\ucdee\ucdef\ucdf0\ucdf1\ucdf2\ucdf3\ucdf4\ucdf5\ucdf6\ucdf7\ucdf8\ucdf9\ucdfa\ucdfb\ucdfc\ucdfd\ucdfe\ucdff\uce00\uce01\uce02\uce03\uce04\uce05\uce06\uce07\uce08\uce09\uce0a\uce0b\uce0c\uce0d\uce0e\uce0f\uce10\uce11\uce12\uce13\uce14\uce15\uce16\uce17\uce18\uce19\uce1a\uce1b\uce1c\uce1d\uce1e\uce1f\uce20\uce21\uce22\uce23\uce24\uce25\uce26\uce27\uce28\uce29\uce2a\uce2b\uce2c\uce2d\uce2e\uce2f\uce30\uce31\uce32\uce33\uce34\uce35\uce36\uce37\uce38\uce39\uce3a\uce3b\uce3c\uce3d\uce3e\uce3f\uce40\uce41\uce42\uce43\uce44\uce45\uce46\uce47\uce48\uce49\uce4a\uce4b\uce4c\uce4d\uce4e\uce4f\uce50\uce51\uce52\uce53\uce54\uce55\uce56\uce57\uce58\uce59\uce5a\uce5b\uce5c\uce5d\uce5e\uce5f\uce60\uce61\uce62\uce63\uce64\uce65\uce66\uce67\uce68\uce69\uce6a\uce6b\uce6c\uce6d\uce6e\uce6f\uce70\uce71\uce72\uce73\uce74\uce75\uce76\uce77\uce78\uce79\uce7a\uce7b\uce7c\uce7d\uce7e\uce7f\uce80\uce81\uce82\uce83\uce84\uce85\uce86\uce87\uce88\uce89\uce8a\uce8b\uce8c\uce8d\uce8e\uce8f\uce90\uce91\uce92\uce93\uce94\uce95\uce96\uce97\uce98\uce99\uce9a\uce9b\uce9c\uce9d\uce9e\uce9f\ucea0\ucea1\ucea2\ucea3\ucea4\ucea5\ucea6\ucea7\ucea8\ucea9\uceaa\uceab\uceac\ucead\uceae\uceaf\uceb0\uceb1\uceb2\uceb3\uceb4\uceb5\uceb6\uceb7\uceb8\uceb9\uceba\ucebb\ucebc\ucebd\ucebe\ucebf\ucec0\ucec1\ucec2\ucec3\ucec4\ucec5\ucec6\ucec7\ucec8\ucec9\uceca\ucecb\ucecc\ucecd\ucece\ucecf\uced0\uced1\uced2\uced3\uced4\uced5\uced6\uced7\uced8\uced9\uceda\ucedb\ucedc\ucedd\ucede\ucedf\ucee0\ucee1\ucee2\ucee3\ucee4\ucee5\ucee6\ucee7\ucee8\ucee9\uceea\uceeb\uceec\uceed\uceee\uceef\ucef0\ucef1\ucef2\ucef3\ucef4\ucef5\ucef6\ucef7\ucef8\ucef9\ucefa\ucefb\ucefc\ucefd\ucefe\uceff\ucf00\ucf01\ucf02\ucf03\ucf04\ucf05\ucf06\ucf07\ucf08\ucf09\ucf0a\ucf0b\ucf0c\ucf0d\ucf0e\ucf0f\ucf10\ucf11\ucf12\ucf13\ucf14\ucf15\ucf16\ucf17\ucf18\ucf19\ucf1a\ucf1b\ucf1c\ucf1d\ucf1e\ucf1f\ucf20\ucf21\ucf22\ucf23\ucf24\ucf25\ucf26\ucf27\ucf28\ucf29\ucf2a\ucf2b\ucf2c\ucf2d\ucf2e\ucf2f\ucf30\ucf31\ucf32\ucf33\ucf34\ucf35\ucf36\ucf37\ucf38\ucf39\ucf3a\ucf3b\ucf3c\ucf3d\ucf3e\ucf3f\ucf40\ucf41\ucf42\ucf43\ucf44\ucf45\ucf46\ucf47\ucf48\ucf49\ucf4a\ucf4b\ucf4c\ucf4d\ucf4e\ucf4f\ucf50\ucf51\ucf52\ucf53\ucf54\ucf55\ucf56\ucf57\ucf58\ucf59\ucf5a\ucf5b\ucf5c\ucf5d\ucf5e\ucf5f\ucf60\ucf61\ucf62\ucf63\ucf64\ucf65\ucf66\ucf67\ucf68\ucf69\ucf6a\ucf6b\ucf6c\ucf6d\ucf6e\ucf6f\ucf70\ucf71\ucf72\ucf73\ucf74\ucf75\ucf76\ucf77\ucf78\ucf79\ucf7a\ucf7b\ucf7c\ucf7d\ucf7e\ucf7f\ucf80\ucf81\ucf82\ucf83\ucf84\ucf85\ucf86\ucf87\ucf88\ucf89\ucf8a\ucf8b\ucf8c\ucf8d\ucf8e\ucf8f\ucf90\ucf91\ucf92\ucf93\ucf94\ucf95\ucf96\ucf97\ucf98\ucf99\ucf9a\ucf9b\ucf9c\ucf9d\ucf9e\ucf9f\ucfa0\ucfa1\ucfa2\ucfa3\ucfa4\ucfa5\ucfa6\ucfa7\ucfa8\ucfa9\ucfaa\ucfab\ucfac\ucfad\ucfae\ucfaf\ucfb0\ucfb1\ucfb2\ucfb3\ucfb4\ucfb5\ucfb6\ucfb7\ucfb8\ucfb9\ucfba\ucfbb\ucfbc\ucfbd\ucfbe\ucfbf\ucfc0\ucfc1\ucfc2\ucfc3\ucfc4\ucfc5\ucfc6\ucfc7\ucfc8\ucfc9\ucfca\ucfcb\ucfcc\ucfcd\ucfce\ucfcf\ucfd0\ucfd1\ucfd2\ucfd3\ucfd4\ucfd5\ucfd6\ucfd7\ucfd8\ucfd9\ucfda\ucfdb\ucfdc\ucfdd\ucfde\ucfdf\ucfe0\ucfe1\ucfe2\ucfe3\ucfe4\ucfe5\ucfe6\ucfe7\ucfe8\ucfe9\ucfea\ucfeb\ucfec\ucfed\ucfee\ucfef\ucff0\ucff1\ucff2\ucff3\ucff4\ucff5\ucff6\ucff7\ucff8\ucff9\ucffa\ucffb\ucffc\ucffd\ucffe\ucfff\ud000\ud001\ud002\ud003\ud004\ud005\ud006\ud007\ud008\ud009\ud00a\ud00b\ud00c\ud00d\ud00e\ud00f\ud010\ud011\ud012\ud013\ud014\ud015\ud016\ud017\ud018\ud019\ud01a\ud01b\ud01c\ud01d\ud01e\ud01f\ud020\ud021\ud022\ud023\ud024\ud025\ud026\ud027\ud028\ud029\ud02a\ud02b\ud02c\ud02d\ud02e\ud02f\ud030\ud031\ud032\ud033\ud034\ud035\ud036\ud037\ud038\ud039\ud03a\ud03b\ud03c\ud03d\ud03e\ud03f\ud040\ud041\ud042\ud043\ud044\ud045\ud046\ud047\ud048\ud049\ud04a\ud04b\ud04c\ud04d\ud04e\ud04f\ud050\ud051\ud052\ud053\ud054\ud055\ud056\ud057\ud058\ud059\ud05a\ud05b\ud05c\ud05d\ud05e\ud05f\ud060\ud061\ud062\ud063\ud064\ud065\ud066\ud067\ud068\ud069\ud06a\ud06b\ud06c\ud06d\ud06e\ud06f\ud070\ud071\ud072\ud073\ud074\ud075\ud076\ud077\ud078\ud079\ud07a\ud07b\ud07c\ud07d\ud07e\ud07f\ud080\ud081\ud082\ud083\ud084\ud085\ud086\ud087\ud088\ud089\ud08a\ud08b\ud08c\ud08d\ud08e\ud08f\ud090\ud091\ud092\ud093\ud094\ud095\ud096\ud097\ud098\ud099\ud09a\ud09b\ud09c\ud09d\ud09e\ud09f\ud0a0\ud0a1\ud0a2\ud0a3\ud0a4\ud0a5\ud0a6\ud0a7\ud0a8\ud0a9\ud0aa\ud0ab\ud0ac\ud0ad\ud0ae\ud0af\ud0b0\ud0b1\ud0b2\ud0b3\ud0b4\ud0b5\ud0b6\ud0b7\ud0b8\ud0b9\ud0ba\ud0bb\ud0bc\ud0bd\ud0be\ud0bf\ud0c0\ud0c1\ud0c2\ud0c3\ud0c4\ud0c5\ud0c6\ud0c7\ud0c8\ud0c9\ud0ca\ud0cb\ud0cc\ud0cd\ud0ce\ud0cf\ud0d0\ud0d1\ud0d2\ud0d3\ud0d4\ud0d5\ud0d6\ud0d7\ud0d8\ud0d9\ud0da\ud0db\ud0dc\ud0dd\ud0de\ud0df\ud0e0\ud0e1\ud0e2\ud0e3\ud0e4\ud0e5\ud0e6\ud0e7\ud0e8\ud0e9\ud0ea\ud0eb\ud0ec\ud0ed\ud0ee\ud0ef\ud0f0\ud0f1\ud0f2\ud0f3\ud0f4\ud0f5\ud0f6\ud0f7\ud0f8\ud0f9\ud0fa\ud0fb\ud0fc\ud0fd\ud0fe\ud0ff\ud100\ud101\ud102\ud103\ud104\ud105\ud106\ud107\ud108\ud109\ud10a\ud10b\ud10c\ud10d\ud10e\ud10f\ud110\ud111\ud112\ud113\ud114\ud115\ud116\ud117\ud118\ud119\ud11a\ud11b\ud11c\ud11d\ud11e\ud11f\ud120\ud121\ud122\ud123\ud124\ud125\ud126\ud127\ud128\ud129\ud12a\ud12b\ud12c\ud12d\ud12e\ud12f\ud130\ud131\ud132\ud133\ud134\ud135\ud136\ud137\ud138\ud139\ud13a\ud13b\ud13c\ud13d\ud13e\ud13f\ud140\ud141\ud142\ud143\ud144\ud145\ud146\ud147\ud148\ud149\ud14a\ud14b\ud14c\ud14d\ud14e\ud14f\ud150\ud151\ud152\ud153\ud154\ud155\ud156\ud157\ud158\ud159\ud15a\ud15b\ud15c\ud15d\ud15e\ud15f\ud160\ud161\ud162\ud163\ud164\ud165\ud166\ud167\ud168\ud169\ud16a\ud16b\ud16c\ud16d\ud16e\ud16f\ud170\ud171\ud172\ud173\ud174\ud175\ud176\ud177\ud178\ud179\ud17a\ud17b\ud17c\ud17d\ud17e\ud17f\ud180\ud181\ud182\ud183\ud184\ud185\ud186\ud187\ud188\ud189\ud18a\ud18b\ud18c\ud18d\ud18e\ud18f\ud190\ud191\ud192\ud193\ud194\ud195\ud196\ud197\ud198\ud199\ud19a\ud19b\ud19c\ud19d\ud19e\ud19f\ud1a0\ud1a1\ud1a2\ud1a3\ud1a4\ud1a5\ud1a6\ud1a7\ud1a8\ud1a9\ud1aa\ud1ab\ud1ac\ud1ad\ud1ae\ud1af\ud1b0\ud1b1\ud1b2\ud1b3\ud1b4\ud1b5\ud1b6\ud1b7\ud1b8\ud1b9\ud1ba\ud1bb\ud1bc\ud1bd\ud1be\ud1bf\ud1c0\ud1c1\ud1c2\ud1c3\ud1c4\ud1c5\ud1c6\ud1c7\ud1c8\ud1c9\ud1ca\ud1cb\ud1cc\ud1cd\ud1ce\ud1cf\ud1d0\ud1d1\ud1d2\ud1d3\ud1d4\ud1d5\ud1d6\ud1d7\ud1d8\ud1d9\ud1da\ud1db\ud1dc\ud1dd\ud1de\ud1df\ud1e0\ud1e1\ud1e2\ud1e3\ud1e4\ud1e5\ud1e6\ud1e7\ud1e8\ud1e9\ud1ea\ud1eb\ud1ec\ud1ed\ud1ee\ud1ef\ud1f0\ud1f1\ud1f2\ud1f3\ud1f4\ud1f5\ud1f6\ud1f7\ud1f8\ud1f9\ud1fa\ud1fb\ud1fc\ud1fd\ud1fe\ud1ff\ud200\ud201\ud202\ud203\ud204\ud205\ud206\ud207\ud208\ud209\ud20a\ud20b\ud20c\ud20d\ud20e\ud20f\ud210\ud211\ud212\ud213\ud214\ud215\ud216\ud217\ud218\ud219\ud21a\ud21b\ud21c\ud21d\ud21e\ud21f\ud220\ud221\ud222\ud223\ud224\ud225\ud226\ud227\ud228\ud229\ud22a\ud22b\ud22c\ud22d\ud22e\ud22f\ud230\ud231\ud232\ud233\ud234\ud235\ud236\ud237\ud238\ud239\ud23a\ud23b\ud23c\ud23d\ud23e\ud23f\ud240\ud241\ud242\ud243\ud244\ud245\ud246\ud247\ud248\ud249\ud24a\ud24b\ud24c\ud24d\ud24e\ud24f\ud250\ud251\ud252\ud253\ud254\ud255\ud256\ud257\ud258\ud259\ud25a\ud25b\ud25c\ud25d\ud25e\ud25f\ud260\ud261\ud262\ud263\ud264\ud265\ud266\ud267\ud268\ud269\ud26a\ud26b\ud26c\ud26d\ud26e\ud26f\ud270\ud271\ud272\ud273\ud274\ud275\ud276\ud277\ud278\ud279\ud27a\ud27b\ud27c\ud27d\ud27e\ud27f\ud280\ud281\ud282\ud283\ud284\ud285\ud286\ud287\ud288\ud289\ud28a\ud28b\ud28c\ud28d\ud28e\ud28f\ud290\ud291\ud292\ud293\ud294\ud295\ud296\ud297\ud298\ud299\ud29a\ud29b\ud29c\ud29d\ud29e\ud29f\ud2a0\ud2a1\ud2a2\ud2a3\ud2a4\ud2a5\ud2a6\ud2a7\ud2a8\ud2a9\ud2aa\ud2ab\ud2ac\ud2ad\ud2ae\ud2af\ud2b0\ud2b1\ud2b2\ud2b3\ud2b4\ud2b5\ud2b6\ud2b7\ud2b8\ud2b9\ud2ba\ud2bb\ud2bc\ud2bd\ud2be\ud2bf\ud2c0\ud2c1\ud2c2\ud2c3\ud2c4\ud2c5\ud2c6\ud2c7\ud2c8\ud2c9\ud2ca\ud2cb\ud2cc\ud2cd\ud2ce\ud2cf\ud2d0\ud2d1\ud2d2\ud2d3\ud2d4\ud2d5\ud2d6\ud2d7\ud2d8\ud2d9\ud2da\ud2db\ud2dc\ud2dd\ud2de\ud2df\ud2e0\ud2e1\ud2e2\ud2e3\ud2e4\ud2e5\ud2e6\ud2e7\ud2e8\ud2e9\ud2ea\ud2eb\ud2ec\ud2ed\ud2ee\ud2ef\ud2f0\ud2f1\ud2f2\ud2f3\ud2f4\ud2f5\ud2f6\ud2f7\ud2f8\ud2f9\ud2fa\ud2fb\ud2fc\ud2fd\ud2fe\ud2ff\ud300\ud301\ud302\ud303\ud304\ud305\ud306\ud307\ud308\ud309\ud30a\ud30b\ud30c\ud30d\ud30e\ud30f\ud310\ud311\ud312\ud313\ud314\ud315\ud316\ud317\ud318\ud319\ud31a\ud31b\ud31c\ud31d\ud31e\ud31f\ud320\ud321\ud322\ud323\ud324\ud325\ud326\ud327\ud328\ud329\ud32a\ud32b\ud32c\ud32d\ud32e\ud32f\ud330\ud331\ud332\ud333\ud334\ud335\ud336\ud337\ud338\ud339\ud33a\ud33b\ud33c\ud33d\ud33e\ud33f\ud340\ud341\ud342\ud343\ud344\ud345\ud346\ud347\ud348\ud349\ud34a\ud34b\ud34c\ud34d\ud34e\ud34f\ud350\ud351\ud352\ud353\ud354\ud355\ud356\ud357\ud358\ud359\ud35a\ud35b\ud35c\ud35d\ud35e\ud35f\ud360\ud361\ud362\ud363\ud364\ud365\ud366\ud367\ud368\ud369\ud36a\ud36b\ud36c\ud36d\ud36e\ud36f\ud370\ud371\ud372\ud373\ud374\ud375\ud376\ud377\ud378\ud379\ud37a\ud37b\ud37c\ud37d\ud37e\ud37f\ud380\ud381\ud382\ud383\ud384\ud385\ud386\ud387\ud388\ud389\ud38a\ud38b\ud38c\ud38d\ud38e\ud38f\ud390\ud391\ud392\ud393\ud394\ud395\ud396\ud397\ud398\ud399\ud39a\ud39b\ud39c\ud39d\ud39e\ud39f\ud3a0\ud3a1\ud3a2\ud3a3\ud3a4\ud3a5\ud3a6\ud3a7\ud3a8\ud3a9\ud3aa\ud3ab\ud3ac\ud3ad\ud3ae\ud3af\ud3b0\ud3b1\ud3b2\ud3b3\ud3b4\ud3b5\ud3b6\ud3b7\ud3b8\ud3b9\ud3ba\ud3bb\ud3bc\ud3bd\ud3be\ud3bf\ud3c0\ud3c1\ud3c2\ud3c3\ud3c4\ud3c5\ud3c6\ud3c7\ud3c8\ud3c9\ud3ca\ud3cb\ud3cc\ud3cd\ud3ce\ud3cf\ud3d0\ud3d1\ud3d2\ud3d3\ud3d4\ud3d5\ud3d6\ud3d7\ud3d8\ud3d9\ud3da\ud3db\ud3dc\ud3dd\ud3de\ud3df\ud3e0\ud3e1\ud3e2\ud3e3\ud3e4\ud3e5\ud3e6\ud3e7\ud3e8\ud3e9\ud3ea\ud3eb\ud3ec\ud3ed\ud3ee\ud3ef\ud3f0\ud3f1\ud3f2\ud3f3\ud3f4\ud3f5\ud3f6\ud3f7\ud3f8\ud3f9\ud3fa\ud3fb\ud3fc\ud3fd\ud3fe\ud3ff\ud400\ud401\ud402\ud403\ud404\ud405\ud406\ud407\ud408\ud409\ud40a\ud40b\ud40c\ud40d\ud40e\ud40f\ud410\ud411\ud412\ud413\ud414\ud415\ud416\ud417\ud418\ud419\ud41a\ud41b\ud41c\ud41d\ud41e\ud41f\ud420\ud421\ud422\ud423\ud424\ud425\ud426\ud427\ud428\ud429\ud42a\ud42b\ud42c\ud42d\ud42e\ud42f\ud430\ud431\ud432\ud433\ud434\ud435\ud436\ud437\ud438\ud439\ud43a\ud43b\ud43c\ud43d\ud43e\ud43f\ud440\ud441\ud442\ud443\ud444\ud445\ud446\ud447\ud448\ud449\ud44a\ud44b\ud44c\ud44d\ud44e\ud44f\ud450\ud451\ud452\ud453\ud454\ud455\ud456\ud457\ud458\ud459\ud45a\ud45b\ud45c\ud45d\ud45e\ud45f\ud460\ud461\ud462\ud463\ud464\ud465\ud466\ud467\ud468\ud469\ud46a\ud46b\ud46c\ud46d\ud46e\ud46f\ud470\ud471\ud472\ud473\ud474\ud475\ud476\ud477\ud478\ud479\ud47a\ud47b\ud47c\ud47d\ud47e\ud47f\ud480\ud481\ud482\ud483\ud484\ud485\ud486\ud487\ud488\ud489\ud48a\ud48b\ud48c\ud48d\ud48e\ud48f\ud490\ud491\ud492\ud493\ud494\ud495\ud496\ud497\ud498\ud499\ud49a\ud49b\ud49c\ud49d\ud49e\ud49f\ud4a0\ud4a1\ud4a2\ud4a3\ud4a4\ud4a5\ud4a6\ud4a7\ud4a8\ud4a9\ud4aa\ud4ab\ud4ac\ud4ad\ud4ae\ud4af\ud4b0\ud4b1\ud4b2\ud4b3\ud4b4\ud4b5\ud4b6\ud4b7\ud4b8\ud4b9\ud4ba\ud4bb\ud4bc\ud4bd\ud4be\ud4bf\ud4c0\ud4c1\ud4c2\ud4c3\ud4c4\ud4c5\ud4c6\ud4c7\ud4c8\ud4c9\ud4ca\ud4cb\ud4cc\ud4cd\ud4ce\ud4cf\ud4d0\ud4d1\ud4d2\ud4d3\ud4d4\ud4d5\ud4d6\ud4d7\ud4d8\ud4d9\ud4da\ud4db\ud4dc\ud4dd\ud4de\ud4df\ud4e0\ud4e1\ud4e2\ud4e3\ud4e4\ud4e5\ud4e6\ud4e7\ud4e8\ud4e9\ud4ea\ud4eb\ud4ec\ud4ed\ud4ee\ud4ef\ud4f0\ud4f1\ud4f2\ud4f3\ud4f4\ud4f5\ud4f6\ud4f7\ud4f8\ud4f9\ud4fa\ud4fb\ud4fc\ud4fd\ud4fe\ud4ff\ud500\ud501\ud502\ud503\ud504\ud505\ud506\ud507\ud508\ud509\ud50a\ud50b\ud50c\ud50d\ud50e\ud50f\ud510\ud511\ud512\ud513\ud514\ud515\ud516\ud517\ud518\ud519\ud51a\ud51b\ud51c\ud51d\ud51e\ud51f\ud520\ud521\ud522\ud523\ud524\ud525\ud526\ud527\ud528\ud529\ud52a\ud52b\ud52c\ud52d\ud52e\ud52f\ud530\ud531\ud532\ud533\ud534\ud535\ud536\ud537\ud538\ud539\ud53a\ud53b\ud53c\ud53d\ud53e\ud53f\ud540\ud541\ud542\ud543\ud544\ud545\ud546\ud547\ud548\ud549\ud54a\ud54b\ud54c\ud54d\ud54e\ud54f\ud550\ud551\ud552\ud553\ud554\ud555\ud556\ud557\ud558\ud559\ud55a\ud55b\ud55c\ud55d\ud55e\ud55f\ud560\ud561\ud562\ud563\ud564\ud565\ud566\ud567\ud568\ud569\ud56a\ud56b\ud56c\ud56d\ud56e\ud56f\ud570\ud571\ud572\ud573\ud574\ud575\ud576\ud577\ud578\ud579\ud57a\ud57b\ud57c\ud57d\ud57e\ud57f\ud580\ud581\ud582\ud583\ud584\ud585\ud586\ud587\ud588\ud589\ud58a\ud58b\ud58c\ud58d\ud58e\ud58f\ud590\ud591\ud592\ud593\ud594\ud595\ud596\ud597\ud598\ud599\ud59a\ud59b\ud59c\ud59d\ud59e\ud59f\ud5a0\ud5a1\ud5a2\ud5a3\ud5a4\ud5a5\ud5a6\ud5a7\ud5a8\ud5a9\ud5aa\ud5ab\ud5ac\ud5ad\ud5ae\ud5af\ud5b0\ud5b1\ud5b2\ud5b3\ud5b4\ud5b5\ud5b6\ud5b7\ud5b8\ud5b9\ud5ba\ud5bb\ud5bc\ud5bd\ud5be\ud5bf\ud5c0\ud5c1\ud5c2\ud5c3\ud5c4\ud5c5\ud5c6\ud5c7\ud5c8\ud5c9\ud5ca\ud5cb\ud5cc\ud5cd\ud5ce\ud5cf\ud5d0\ud5d1\ud5d2\ud5d3\ud5d4\ud5d5\ud5d6\ud5d7\ud5d8\ud5d9\ud5da\ud5db\ud5dc\ud5dd\ud5de\ud5df\ud5e0\ud5e1\ud5e2\ud5e3\ud5e4\ud5e5\ud5e6\ud5e7\ud5e8\ud5e9\ud5ea\ud5eb\ud5ec\ud5ed\ud5ee\ud5ef\ud5f0\ud5f1\ud5f2\ud5f3\ud5f4\ud5f5\ud5f6\ud5f7\ud5f8\ud5f9\ud5fa\ud5fb\ud5fc\ud5fd\ud5fe\ud5ff\ud600\ud601\ud602\ud603\ud604\ud605\ud606\ud607\ud608\ud609\ud60a\ud60b\ud60c\ud60d\ud60e\ud60f\ud610\ud611\ud612\ud613\ud614\ud615\ud616\ud617\ud618\ud619\ud61a\ud61b\ud61c\ud61d\ud61e\ud61f\ud620\ud621\ud622\ud623\ud624\ud625\ud626\ud627\ud628\ud629\ud62a\ud62b\ud62c\ud62d\ud62e\ud62f\ud630\ud631\ud632\ud633\ud634\ud635\ud636\ud637\ud638\ud639\ud63a\ud63b\ud63c\ud63d\ud63e\ud63f\ud640\ud641\ud642\ud643\ud644\ud645\ud646\ud647\ud648\ud649\ud64a\ud64b\ud64c\ud64d\ud64e\ud64f\ud650\ud651\ud652\ud653\ud654\ud655\ud656\ud657\ud658\ud659\ud65a\ud65b\ud65c\ud65d\ud65e\ud65f\ud660\ud661\ud662\ud663\ud664\ud665\ud666\ud667\ud668\ud669\ud66a\ud66b\ud66c\ud66d\ud66e\ud66f\ud670\ud671\ud672\ud673\ud674\ud675\ud676\ud677\ud678\ud679\ud67a\ud67b\ud67c\ud67d\ud67e\ud67f\ud680\ud681\ud682\ud683\ud684\ud685\ud686\ud687\ud688\ud689\ud68a\ud68b\ud68c\ud68d\ud68e\ud68f\ud690\ud691\ud692\ud693\ud694\ud695\ud696\ud697\ud698\ud699\ud69a\ud69b\ud69c\ud69d\ud69e\ud69f\ud6a0\ud6a1\ud6a2\ud6a3\ud6a4\ud6a5\ud6a6\ud6a7\ud6a8\ud6a9\ud6aa\ud6ab\ud6ac\ud6ad\ud6ae\ud6af\ud6b0\ud6b1\ud6b2\ud6b3\ud6b4\ud6b5\ud6b6\ud6b7\ud6b8\ud6b9\ud6ba\ud6bb\ud6bc\ud6bd\ud6be\ud6bf\ud6c0\ud6c1\ud6c2\ud6c3\ud6c4\ud6c5\ud6c6\ud6c7\ud6c8\ud6c9\ud6ca\ud6cb\ud6cc\ud6cd\ud6ce\ud6cf\ud6d0\ud6d1\ud6d2\ud6d3\ud6d4\ud6d5\ud6d6\ud6d7\ud6d8\ud6d9\ud6da\ud6db\ud6dc\ud6dd\ud6de\ud6df\ud6e0\ud6e1\ud6e2\ud6e3\ud6e4\ud6e5\ud6e6\ud6e7\ud6e8\ud6e9\ud6ea\ud6eb\ud6ec\ud6ed\ud6ee\ud6ef\ud6f0\ud6f1\ud6f2\ud6f3\ud6f4\ud6f5\ud6f6\ud6f7\ud6f8\ud6f9\ud6fa\ud6fb\ud6fc\ud6fd\ud6fe\ud6ff\ud700\ud701\ud702\ud703\ud704\ud705\ud706\ud707\ud708\ud709\ud70a\ud70b\ud70c\ud70d\ud70e\ud70f\ud710\ud711\ud712\ud713\ud714\ud715\ud716\ud717\ud718\ud719\ud71a\ud71b\ud71c\ud71d\ud71e\ud71f\ud720\ud721\ud722\ud723\ud724\ud725\ud726\ud727\ud728\ud729\ud72a\ud72b\ud72c\ud72d\ud72e\ud72f\ud730\ud731\ud732\ud733\ud734\ud735\ud736\ud737\ud738\ud739\ud73a\ud73b\ud73c\ud73d\ud73e\ud73f\ud740\ud741\ud742\ud743\ud744\ud745\ud746\ud747\ud748\ud749\ud74a\ud74b\ud74c\ud74d\ud74e\ud74f\ud750\ud751\ud752\ud753\ud754\ud755\ud756\ud757\ud758\ud759\ud75a\ud75b\ud75c\ud75d\ud75e\ud75f\ud760\ud761\ud762\ud763\ud764\ud765\ud766\ud767\ud768\ud769\ud76a\ud76b\ud76c\ud76d\ud76e\ud76f\ud770\ud771\ud772\ud773\ud774\ud775\ud776\ud777\ud778\ud779\ud77a\ud77b\ud77c\ud77d\ud77e\ud77f\ud780\ud781\ud782\ud783\ud784\ud785\ud786\ud787\ud788\ud789\ud78a\ud78b\ud78c\ud78d\ud78e\ud78f\ud790\ud791\ud792\ud793\ud794\ud795\ud796\ud797\ud798\ud799\ud79a\ud79b\ud79c\ud79d\ud79e\ud79f\ud7a0\ud7a1\ud7a2\ud7a3\ud7b0\ud7b1\ud7b2\ud7b3\ud7b4\ud7b5\ud7b6\ud7b7\ud7b8\ud7b9\ud7ba\ud7bb\ud7bc\ud7bd\ud7be\ud7bf\ud7c0\ud7c1\ud7c2\ud7c3\ud7c4\ud7c5\ud7c6\ud7cb\ud7cc\ud7cd\ud7ce\ud7cf\ud7d0\ud7d1\ud7d2\ud7d3\ud7d4\ud7d5\ud7d6\ud7d7\ud7d8\ud7d9\ud7da\ud7db\ud7dc\ud7dd\ud7de\ud7df\ud7e0\ud7e1\ud7e2\ud7e3\ud7e4\ud7e5\ud7e6\ud7e7\ud7e8\ud7e9\ud7ea\ud7eb\ud7ec\ud7ed\ud7ee\ud7ef\ud7f0\ud7f1\ud7f2\ud7f3\ud7f4\ud7f5\ud7f6\ud7f7\ud7f8\ud7f9\ud7fa\ud7fb\uf900\uf901\uf902\uf903\uf904\uf905\uf906\uf907\uf908\uf909\uf90a\uf90b\uf90c\uf90d\uf90e\uf90f\uf910\uf911\uf912\uf913\uf914\uf915\uf916\uf917\uf918\uf919\uf91a\uf91b\uf91c\uf91d\uf91e\uf91f\uf920\uf921\uf922\uf923\uf924\uf925\uf926\uf927\uf928\uf929\uf92a\uf92b\uf92c\uf92d\uf92e\uf92f\uf930\uf931\uf932\uf933\uf934\uf935\uf936\uf937\uf938\uf939\uf93a\uf93b\uf93c\uf93d\uf93e\uf93f\uf940\uf941\uf942\uf943\uf944\uf945\uf946\uf947\uf948\uf949\uf94a\uf94b\uf94c\uf94d\uf94e\uf94f\uf950\uf951\uf952\uf953\uf954\uf955\uf956\uf957\uf958\uf959\uf95a\uf95b\uf95c\uf95d\uf95e\uf95f\uf960\uf961\uf962\uf963\uf964\uf965\uf966\uf967\uf968\uf969\uf96a\uf96b\uf96c\uf96d\uf96e\uf96f\uf970\uf971\uf972\uf973\uf974\uf975\uf976\uf977\uf978\uf979\uf97a\uf97b\uf97c\uf97d\uf97e\uf97f\uf980\uf981\uf982\uf983\uf984\uf985\uf986\uf987\uf988\uf989\uf98a\uf98b\uf98c\uf98d\uf98e\uf98f\uf990\uf991\uf992\uf993\uf994\uf995\uf996\uf997\uf998\uf999\uf99a\uf99b\uf99c\uf99d\uf99e\uf99f\uf9a0\uf9a1\uf9a2\uf9a3\uf9a4\uf9a5\uf9a6\uf9a7\uf9a8\uf9a9\uf9aa\uf9ab\uf9ac\uf9ad\uf9ae\uf9af\uf9b0\uf9b1\uf9b2\uf9b3\uf9b4\uf9b5\uf9b6\uf9b7\uf9b8\uf9b9\uf9ba\uf9bb\uf9bc\uf9bd\uf9be\uf9bf\uf9c0\uf9c1\uf9c2\uf9c3\uf9c4\uf9c5\uf9c6\uf9c7\uf9c8\uf9c9\uf9ca\uf9cb\uf9cc\uf9cd\uf9ce\uf9cf\uf9d0\uf9d1\uf9d2\uf9d3\uf9d4\uf9d5\uf9d6\uf9d7\uf9d8\uf9d9\uf9da\uf9db\uf9dc\uf9dd\uf9de\uf9df\uf9e0\uf9e1\uf9e2\uf9e3\uf9e4\uf9e5\uf9e6\uf9e7\uf9e8\uf9e9\uf9ea\uf9eb\uf9ec\uf9ed\uf9ee\uf9ef\uf9f0\uf9f1\uf9f2\uf9f3\uf9f4\uf9f5\uf9f6\uf9f7\uf9f8\uf9f9\uf9fa\uf9fb\uf9fc\uf9fd\uf9fe\uf9ff\ufa00\ufa01\ufa02\ufa03\ufa04\ufa05\ufa06\ufa07\ufa08\ufa09\ufa0a\ufa0b\ufa0c\ufa0d\ufa0e\ufa0f\ufa10\ufa11\ufa12\ufa13\ufa14\ufa15\ufa16\ufa17\ufa18\ufa19\ufa1a\ufa1b\ufa1c\ufa1d\ufa1e\ufa1f\ufa20\ufa21\ufa22\ufa23\ufa24\ufa25\ufa26\ufa27\ufa28\ufa29\ufa2a\ufa2b\ufa2c\ufa2d\ufa2e\ufa2f\ufa30\ufa31\ufa32\ufa33\ufa34\ufa35\ufa36\ufa37\ufa38\ufa39\ufa3a\ufa3b\ufa3c\ufa3d\ufa3e\ufa3f\ufa40\ufa41\ufa42\ufa43\ufa44\ufa45\ufa46\ufa47\ufa48\ufa49\ufa4a\ufa4b\ufa4c\ufa4d\ufa4e\ufa4f\ufa50\ufa51\ufa52\ufa53\ufa54\ufa55\ufa56\ufa57\ufa58\ufa59\ufa5a\ufa5b\ufa5c\ufa5d\ufa5e\ufa5f\ufa60\ufa61\ufa62\ufa63\ufa64\ufa65\ufa66\ufa67\ufa68\ufa69\ufa6a\ufa6b\ufa6d\ufa70\ufa71\ufa72\ufa73\ufa74\ufa75\ufa76\ufa77\ufa78\ufa79\ufa7a\ufa7b\ufa7c\ufa7d\ufa7e\ufa7f\ufa80\ufa81\ufa82\ufa83\ufa84\ufa85\ufa86\ufa87\ufa88\ufa89\ufa8a\ufa8b\ufa8c\ufa8d\ufa8e\ufa8f\ufa90\ufa91\ufa92\ufa93\ufa94\ufa95\ufa96\ufa97\ufa98\ufa99\ufa9a\ufa9b\ufa9c\ufa9d\ufa9e\ufa9f\ufaa0\ufaa1\ufaa2\ufaa3\ufaa4\ufaa5\ufaa6\ufaa7\ufaa8\ufaa9\ufaaa\ufaab\ufaac\ufaad\ufaae\ufaaf\ufab0\ufab1\ufab2\ufab3\ufab4\ufab5\ufab6\ufab7\ufab8\ufab9\ufaba\ufabb\ufabc\ufabd\ufabe\ufabf\ufac0\ufac1\ufac2\ufac3\ufac4\ufac5\ufac6\ufac7\ufac8\ufac9\ufaca\ufacb\ufacc\ufacd\uface\ufad2\ufad3\ufad4\ufad8\ufad9\ufb20\ufb21\ufb22\ufb23\ufb24\ufb25\ufb26\ufb27\ufb28\ufb50\ufb51\ufb52\ufb53\ufb54\ufb55\ufb56\ufb57\ufb58\ufb59\ufb5a\ufb5b\ufb5c\ufb5d\ufb5e\ufb5f\ufb60\ufb61\ufb62\ufb63\ufb64\ufb65\ufb66\ufb67\ufb68\ufb69\ufb6a\ufb6b\ufb6c\ufb6d\ufb6e\ufb6f\ufb70\ufb71\ufb72\ufb73\ufb74\ufb75\ufb76\ufb77\ufb78\ufb79\ufb7a\ufb7b\ufb7c\ufb7d\ufb7e\ufb7f\ufb80\ufb81\ufb82\ufb83\ufb84\ufb85\ufb86\ufb87\ufb88\ufb89\ufb8a\ufb8b\ufb8c\ufb8d\ufb8e\ufb8f\ufb90\ufb91\ufb92\ufb93\ufb94\ufb95\ufb96\ufb97\ufb98\ufb99\ufb9a\ufb9b\ufb9c\ufb9d\ufb9e\ufb9f\ufba0\ufba1\ufba2\ufba3\ufba4\ufba5\ufba6\ufba7\ufba8\ufba9\ufbaa\ufbab\ufbac\ufbad\ufbae\ufbaf\ufbb0\ufbb1\ufbd3\ufbd4\ufbd5\ufbd6\ufbd7\ufbd8\ufbd9\ufbda\ufbdb\ufbdc\ufbde\ufbdf\ufbe0\ufbe1\ufbe2\ufbe3\ufbe4\ufbe5\ufbe6\ufbe7\ufbe8\ufbe9\ufbfc\ufbfd\ufbfe\ufbff\ufe33\ufe34\ufe4d\ufe4e\ufe4f\ufe73\ufe80\ufe81\ufe82\ufe83\ufe84\ufe85\ufe86\ufe87\ufe88\ufe89\ufe8a\ufe8b\ufe8c\ufe8d\ufe8e\ufe8f\ufe90\ufe91\ufe92\ufe93\ufe94\ufe95\ufe96\ufe97\ufe98\ufe99\ufe9a\ufe9b\ufe9c\ufe9d\ufe9e\ufe9f\ufea0\ufea1\ufea2\ufea3\ufea4\ufea5\ufea6\ufea7\ufea8\ufea9\ufeaa\ufeab\ufeac\ufead\ufeae\ufeaf\ufeb0\ufeb1\ufeb2\ufeb3\ufeb4\ufeb5\ufeb6\ufeb7\ufeb8\ufeb9\ufeba\ufebb\ufebc\ufebd\ufebe\ufebf\ufec0\ufec1\ufec2\ufec3\ufec4\ufec5\ufec6\ufec7\ufec8\ufec9\ufeca\ufecb\ufecc\ufecd\ufece\ufecf\ufed0\ufed1\ufed2\ufed3\ufed4\ufed5\ufed6\ufed7\ufed8\ufed9\ufeda\ufedb\ufedc\ufedd\ufede\ufedf\ufee0\ufee1\ufee2\ufee3\ufee4\ufee5\ufee6\ufee7\ufee8\ufee9\ufeea\ufeeb\ufeec\ufeed\ufeee\ufeef\ufef0\ufef1\ufef2\ufef3\ufef4\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a\uff3f\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a\uff66\uff67\uff68\uff69\uff6a\uff6b\uff6c\uff6d\uff6e\uff6f\uff70\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\uff7b\uff7c\uff7d\uff7e\uff7f\uff80\uff81\uff82\uff83\uff84\uff85\uff86\uff87\uff88\uff89\uff8a\uff8b\uff8c\uff8d\uff8e\uff8f\uff90\uff91\uff92\uff93\uff94\uff95\uff96\uff97\uff98\uff99\uff9a\uff9b\uff9c\uff9d\uffa0\uffa1\uffa2\uffa3\uffa4\uffa5\uffa6\uffa7\uffa8\uffa9\uffaa\uffab\uffac\uffad\uffae\uffaf\uffb0\uffb1\uffb2\uffb3\uffb4\uffb5\uffb6\uffb7\uffb8\uffb9\uffba\uffbb\uffbc\uffbd\uffbe\uffc2\uffc3\uffc4\uffc5\uffc6\uffc7\uffca\uffcb\uffcc\uffcd\uffce\uffcf\uffd2\uffd3\uffd4\uffd5\uffd6\uffd7\uffda\uffdb\uffdc' +xid_continue = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\xaa\xb5\xb7\xba\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff\u0100\u0101\u0102\u0103\u0104\u0105\u0106\u0107\u0108\u0109\u010a\u010b\u010c\u010d\u010e\u010f\u0110\u0111\u0112\u0113\u0114\u0115\u0116\u0117\u0118\u0119\u011a\u011b\u011c\u011d\u011e\u011f\u0120\u0121\u0122\u0123\u0124\u0125\u0126\u0127\u0128\u0129\u012a\u012b\u012c\u012d\u012e\u012f\u0130\u0131\u0134\u0135\u0136\u0137\u0138\u0139\u013a\u013b\u013c\u013d\u013e\u0141\u0142\u0143\u0144\u0145\u0146\u0147\u0148\u014a\u014b\u014c\u014d\u014e\u014f\u0150\u0151\u0152\u0153\u0154\u0155\u0156\u0157\u0158\u0159\u015a\u015b\u015c\u015d\u015e\u015f\u0160\u0161\u0162\u0163\u0164\u0165\u0166\u0167\u0168\u0169\u016a\u016b\u016c\u016d\u016e\u016f\u0170\u0171\u0172\u0173\u0174\u0175\u0176\u0177\u0178\u0179\u017a\u017b\u017c\u017d\u017e\u017f\u0180\u0181\u0182\u0183\u0184\u0185\u0186\u0187\u0188\u0189\u018a\u018b\u018c\u018d\u018e\u018f\u0190\u0191\u0192\u0193\u0194\u0195\u0196\u0197\u0198\u0199\u019a\u019b\u019c\u019d\u019e\u019f\u01a0\u01a1\u01a2\u01a3\u01a4\u01a5\u01a6\u01a7\u01a8\u01a9\u01aa\u01ab\u01ac\u01ad\u01ae\u01af\u01b0\u01b1\u01b2\u01b3\u01b4\u01b5\u01b6\u01b7\u01b8\u01b9\u01ba\u01bb\u01bc\u01bd\u01be\u01bf\u01c0\u01c1\u01c2\u01c3\u01cd\u01ce\u01cf\u01d0\u01d1\u01d2\u01d3\u01d4\u01d5\u01d6\u01d7\u01d8\u01d9\u01da\u01db\u01dc\u01dd\u01de\u01df\u01e0\u01e1\u01e2\u01e3\u01e4\u01e5\u01e6\u01e7\u01e8\u01e9\u01ea\u01eb\u01ec\u01ed\u01ee\u01ef\u01f0\u01f4\u01f5\u01f6\u01f7\u01f8\u01f9\u01fa\u01fb\u01fc\u01fd\u01fe\u01ff\u0200\u0201\u0202\u0203\u0204\u0205\u0206\u0207\u0208\u0209\u020a\u020b\u020c\u020d\u020e\u020f\u0210\u0211\u0212\u0213\u0214\u0215\u0216\u0217\u0218\u0219\u021a\u021b\u021c\u021d\u021e\u021f\u0220\u0221\u0222\u0223\u0224\u0225\u0226\u0227\u0228\u0229\u022a\u022b\u022c\u022d\u022e\u022f\u0230\u0231\u0232\u0233\u0234\u0235\u0236\u0237\u0238\u0239\u023a\u023b\u023c\u023d\u023e\u023f\u0240\u0241\u0242\u0243\u0244\u0245\u0246\u0247\u0248\u0249\u024a\u024b\u024c\u024d\u024e\u024f\u0250\u0251\u0252\u0253\u0254\u0255\u0256\u0257\u0258\u0259\u025a\u025b\u025c\u025d\u025e\u025f\u0260\u0261\u0262\u0263\u0264\u0265\u0266\u0267\u0268\u0269\u026a\u026b\u026c\u026d\u026e\u026f\u0270\u0271\u0272\u0273\u0274\u0275\u0276\u0277\u0278\u0279\u027a\u027b\u027c\u027d\u027e\u027f\u0280\u0281\u0282\u0283\u0284\u0285\u0286\u0287\u0288\u0289\u028a\u028b\u028c\u028d\u028e\u028f\u0290\u0291\u0292\u0293\u0294\u0295\u0296\u0297\u0298\u0299\u029a\u029b\u029c\u029d\u029e\u029f\u02a0\u02a1\u02a2\u02a3\u02a4\u02a5\u02a6\u02a7\u02a8\u02a9\u02aa\u02ab\u02ac\u02ad\u02ae\u02af\u02b0\u02b1\u02b2\u02b3\u02b4\u02b5\u02b6\u02b7\u02b8\u02b9\u02ba\u02bb\u02bc\u02bd\u02be\u02bf\u02c0\u02c1\u02c6\u02c7\u02c8\u02c9\u02ca\u02cb\u02cc\u02cd\u02ce\u02cf\u02d0\u02d1\u02e0\u02e1\u02e2\u02e3\u02e4\u02ec\u02ee\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030a\u030b\u030c\u030d\u030e\u030f\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031a\u031b\u031c\u031d\u031e\u031f\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032a\u032b\u032c\u032d\u032e\u032f\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033a\u033b\u033c\u033d\u033e\u033f\u0340\u0341\u0342\u0343\u0345\u0346\u0347\u0348\u0349\u034a\u034b\u034c\u034d\u034e\u034f\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035a\u035b\u035c\u035d\u035e\u035f\u0360\u0361\u0362\u0363\u0364\u0365\u0366\u0367\u0368\u0369\u036a\u036b\u036c\u036d\u036e\u036f\u0370\u0371\u0372\u0373\u0374\u0376\u0377\u037b\u037c\u037d\u037f\u0386\u0387\u0388\u0389\u038a\u038c\u038e\u038f\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03aa\u03ab\u03ac\u03ad\u03ae\u03af\u03b0\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\u03ca\u03cb\u03cc\u03cd\u03ce\u03cf\u03d0\u03d1\u03d2\u03d3\u03d4\u03d5\u03d6\u03d7\u03d8\u03d9\u03da\u03db\u03dc\u03dd\u03de\u03df\u03e0\u03e1\u03e2\u03e3\u03e4\u03e5\u03e6\u03e7\u03e8\u03e9\u03ea\u03eb\u03ec\u03ed\u03ee\u03ef\u03f0\u03f1\u03f2\u03f3\u03f4\u03f5\u03f7\u03f8\u03f9\u03fa\u03fb\u03fc\u03fd\u03fe\u03ff\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040a\u040b\u040c\u040d\u040e\u040f\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u0450\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045a\u045b\u045c\u045d\u045e\u045f\u0460\u0461\u0462\u0463\u0464\u0465\u0466\u0467\u0468\u0469\u046a\u046b\u046c\u046d\u046e\u046f\u0470\u0471\u0472\u0473\u0474\u0475\u0476\u0477\u0478\u0479\u047a\u047b\u047c\u047d\u047e\u047f\u0480\u0481\u0483\u0484\u0485\u0486\u0487\u048a\u048b\u048c\u048d\u048e\u048f\u0490\u0491\u0492\u0493\u0494\u0495\u0496\u0497\u0498\u0499\u049a\u049b\u049c\u049d\u049e\u049f\u04a0\u04a1\u04a2\u04a3\u04a4\u04a5\u04a6\u04a7\u04a8\u04a9\u04aa\u04ab\u04ac\u04ad\u04ae\u04af\u04b0\u04b1\u04b2\u04b3\u04b4\u04b5\u04b6\u04b7\u04b8\u04b9\u04ba\u04bb\u04bc\u04bd\u04be\u04bf\u04c0\u04c1\u04c2\u04c3\u04c4\u04c5\u04c6\u04c7\u04c8\u04c9\u04ca\u04cb\u04cc\u04cd\u04ce\u04cf\u04d0\u04d1\u04d2\u04d3\u04d4\u04d5\u04d6\u04d7\u04d8\u04d9\u04da\u04db\u04dc\u04dd\u04de\u04df\u04e0\u04e1\u04e2\u04e3\u04e4\u04e5\u04e6\u04e7\u04e8\u04e9\u04ea\u04eb\u04ec\u04ed\u04ee\u04ef\u04f0\u04f1\u04f2\u04f3\u04f4\u04f5\u04f6\u04f7\u04f8\u04f9\u04fa\u04fb\u04fc\u04fd\u04fe\u04ff\u0500\u0501\u0502\u0503\u0504\u0505\u0506\u0507\u0508\u0509\u050a\u050b\u050c\u050d\u050e\u050f\u0510\u0511\u0512\u0513\u0514\u0515\u0516\u0517\u0518\u0519\u051a\u051b\u051c\u051d\u051e\u051f\u0520\u0521\u0522\u0523\u0524\u0525\u0526\u0527\u0528\u0529\u052a\u052b\u052c\u052d\u052e\u052f\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053a\u053b\u053c\u053d\u053e\u053f\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054a\u054b\u054c\u054d\u054e\u054f\u0550\u0551\u0552\u0553\u0554\u0555\u0556\u0559\u0561\u0562\u0563\u0564\u0565\u0566\u0567\u0568\u0569\u056a\u056b\u056c\u056d\u056e\u056f\u0570\u0571\u0572\u0573\u0574\u0575\u0576\u0577\u0578\u0579\u057a\u057b\u057c\u057d\u057e\u057f\u0580\u0581\u0582\u0583\u0584\u0585\u0586\u0591\u0592\u0593\u0594\u0595\u0596\u0597\u0598\u0599\u059a\u059b\u059c\u059d\u059e\u059f\u05a0\u05a1\u05a2\u05a3\u05a4\u05a5\u05a6\u05a7\u05a8\u05a9\u05aa\u05ab\u05ac\u05ad\u05ae\u05af\u05b0\u05b1\u05b2\u05b3\u05b4\u05b5\u05b6\u05b7\u05b8\u05b9\u05ba\u05bb\u05bc\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea\u05f0\u05f1\u05f2\u0610\u0611\u0612\u0613\u0614\u0615\u0616\u0617\u0618\u0619\u061a\u0620\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062a\u062b\u062c\u062d\u062e\u062f\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063a\u063b\u063c\u063d\u063e\u063f\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064a\u064b\u064c\u064d\u064e\u064f\u0650\u0651\u0652\u0653\u0654\u0655\u0656\u0657\u0658\u0659\u065a\u065b\u065c\u065d\u065e\u065f\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u066e\u066f\u0670\u0671\u0672\u0673\u0674\u0679\u067a\u067b\u067c\u067d\u067e\u067f\u0680\u0681\u0682\u0683\u0684\u0685\u0686\u0687\u0688\u0689\u068a\u068b\u068c\u068d\u068e\u068f\u0690\u0691\u0692\u0693\u0694\u0695\u0696\u0697\u0698\u0699\u069a\u069b\u069c\u069d\u069e\u069f\u06a0\u06a1\u06a2\u06a3\u06a4\u06a5\u06a6\u06a7\u06a8\u06a9\u06aa\u06ab\u06ac\u06ad\u06ae\u06af\u06b0\u06b1\u06b2\u06b3\u06b4\u06b5\u06b6\u06b7\u06b8\u06b9\u06ba\u06bb\u06bc\u06bd\u06be\u06bf\u06c0\u06c1\u06c2\u06c3\u06c4\u06c5\u06c6\u06c7\u06c8\u06c9\u06ca\u06cb\u06cc\u06cd\u06ce\u06cf\u06d0\u06d1\u06d2\u06d3\u06d5\u06d6\u06d7\u06d8\u06d9\u06da\u06db\u06dc\u06df\u06e0\u06e1\u06e2\u06e3\u06e4\u06e5\u06e6\u06e7\u06e8\u06ea\u06eb\u06ec\u06ed\u06ee\u06ef\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9\u06fa\u06fb\u06fc\u06ff\u0710\u0711\u0712\u0713\u0714\u0715\u0716\u0717\u0718\u0719\u071a\u071b\u071c\u071d\u071e\u071f\u0720\u0721\u0722\u0723\u0724\u0725\u0726\u0727\u0728\u0729\u072a\u072b\u072c\u072d\u072e\u072f\u0730\u0731\u0732\u0733\u0734\u0735\u0736\u0737\u0738\u0739\u073a\u073b\u073c\u073d\u073e\u073f\u0740\u0741\u0742\u0743\u0744\u0745\u0746\u0747\u0748\u0749\u074a\u074d\u074e\u074f\u0750\u0751\u0752\u0753\u0754\u0755\u0756\u0757\u0758\u0759\u075a\u075b\u075c\u075d\u075e\u075f\u0760\u0761\u0762\u0763\u0764\u0765\u0766\u0767\u0768\u0769\u076a\u076b\u076c\u076d\u076e\u076f\u0770\u0771\u0772\u0773\u0774\u0775\u0776\u0777\u0778\u0779\u077a\u077b\u077c\u077d\u077e\u077f\u0780\u0781\u0782\u0783\u0784\u0785\u0786\u0787\u0788\u0789\u078a\u078b\u078c\u078d\u078e\u078f\u0790\u0791\u0792\u0793\u0794\u0795\u0796\u0797\u0798\u0799\u079a\u079b\u079c\u079d\u079e\u079f\u07a0\u07a1\u07a2\u07a3\u07a4\u07a5\u07a6\u07a7\u07a8\u07a9\u07aa\u07ab\u07ac\u07ad\u07ae\u07af\u07b0\u07b1\u07c0\u07c1\u07c2\u07c3\u07c4\u07c5\u07c6\u07c7\u07c8\u07c9\u07ca\u07cb\u07cc\u07cd\u07ce\u07cf\u07d0\u07d1\u07d2\u07d3\u07d4\u07d5\u07d6\u07d7\u07d8\u07d9\u07da\u07db\u07dc\u07dd\u07de\u07df\u07e0\u07e1\u07e2\u07e3\u07e4\u07e5\u07e6\u07e7\u07e8\u07e9\u07ea\u07eb\u07ec\u07ed\u07ee\u07ef\u07f0\u07f1\u07f2\u07f3\u07f4\u07f5\u07fa\u0800\u0801\u0802\u0803\u0804\u0805\u0806\u0807\u0808\u0809\u080a\u080b\u080c\u080d\u080e\u080f\u0810\u0811\u0812\u0813\u0814\u0815\u0816\u0817\u0818\u0819\u081a\u081b\u081c\u081d\u081e\u081f\u0820\u0821\u0822\u0823\u0824\u0825\u0826\u0827\u0828\u0829\u082a\u082b\u082c\u082d\u0840\u0841\u0842\u0843\u0844\u0845\u0846\u0847\u0848\u0849\u084a\u084b\u084c\u084d\u084e\u084f\u0850\u0851\u0852\u0853\u0854\u0855\u0856\u0857\u0858\u0859\u085a\u085b\u08a0\u08a1\u08a2\u08a3\u08a4\u08a5\u08a6\u08a7\u08a8\u08a9\u08aa\u08ab\u08ac\u08ad\u08ae\u08af\u08b0\u08b1\u08b2\u08b3\u08b4\u08b6\u08b7\u08b8\u08b9\u08ba\u08bb\u08bc\u08bd\u08d4\u08d5\u08d6\u08d7\u08d8\u08d9\u08da\u08db\u08dc\u08dd\u08de\u08df\u08e0\u08e1\u08e3\u08e4\u08e5\u08e6\u08e7\u08e8\u08e9\u08ea\u08eb\u08ec\u08ed\u08ee\u08ef\u08f0\u08f1\u08f2\u08f3\u08f4\u08f5\u08f6\u08f7\u08f8\u08f9\u08fa\u08fb\u08fc\u08fd\u08fe\u08ff\u0900\u0901\u0902\u0903\u0904\u0905\u0906\u0907\u0908\u0909\u090a\u090b\u090c\u090d\u090e\u090f\u0910\u0911\u0912\u0913\u0914\u0915\u0916\u0917\u0918\u0919\u091a\u091b\u091c\u091d\u091e\u091f\u0920\u0921\u0922\u0923\u0924\u0925\u0926\u0927\u0928\u0929\u092a\u092b\u092c\u092d\u092e\u092f\u0930\u0931\u0932\u0933\u0934\u0935\u0936\u0937\u0938\u0939\u093a\u093b\u093c\u093d\u093e\u093f\u0940\u0941\u0942\u0943\u0944\u0945\u0946\u0947\u0948\u0949\u094a\u094b\u094c\u094d\u094e\u094f\u0950\u0951\u0952\u0953\u0954\u0955\u0956\u0957\u0960\u0961\u0962\u0963\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0971\u0972\u0973\u0974\u0975\u0976\u0977\u0978\u0979\u097a\u097b\u097c\u097d\u097e\u097f\u0980\u0981\u0982\u0983\u0985\u0986\u0987\u0988\u0989\u098a\u098b\u098c\u098f\u0990\u0993\u0994\u0995\u0996\u0997\u0998\u0999\u099a\u099b\u099c\u099d\u099e\u099f\u09a0\u09a1\u09a2\u09a3\u09a4\u09a5\u09a6\u09a7\u09a8\u09aa\u09ab\u09ac\u09ad\u09ae\u09af\u09b0\u09b2\u09b6\u09b7\u09b8\u09b9\u09bc\u09bd\u09be\u09bf\u09c0\u09c1\u09c2\u09c3\u09c4\u09c7\u09c8\u09cb\u09cc\u09cd\u09ce\u09d7\u09e0\u09e1\u09e2\u09e3\u09e6\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09f0\u09f1\u0a01\u0a02\u0a03\u0a05\u0a06\u0a07\u0a08\u0a09\u0a0a\u0a0f\u0a10\u0a13\u0a14\u0a15\u0a16\u0a17\u0a18\u0a19\u0a1a\u0a1b\u0a1c\u0a1d\u0a1e\u0a1f\u0a20\u0a21\u0a22\u0a23\u0a24\u0a25\u0a26\u0a27\u0a28\u0a2a\u0a2b\u0a2c\u0a2d\u0a2e\u0a2f\u0a30\u0a32\u0a35\u0a38\u0a39\u0a3c\u0a3e\u0a3f\u0a40\u0a41\u0a42\u0a47\u0a48\u0a4b\u0a4c\u0a4d\u0a51\u0a5c\u0a66\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a70\u0a71\u0a72\u0a73\u0a74\u0a75\u0a81\u0a82\u0a83\u0a85\u0a86\u0a87\u0a88\u0a89\u0a8a\u0a8b\u0a8c\u0a8d\u0a8f\u0a90\u0a91\u0a93\u0a94\u0a95\u0a96\u0a97\u0a98\u0a99\u0a9a\u0a9b\u0a9c\u0a9d\u0a9e\u0a9f\u0aa0\u0aa1\u0aa2\u0aa3\u0aa4\u0aa5\u0aa6\u0aa7\u0aa8\u0aaa\u0aab\u0aac\u0aad\u0aae\u0aaf\u0ab0\u0ab2\u0ab3\u0ab5\u0ab6\u0ab7\u0ab8\u0ab9\u0abc\u0abd\u0abe\u0abf\u0ac0\u0ac1\u0ac2\u0ac3\u0ac4\u0ac5\u0ac7\u0ac8\u0ac9\u0acb\u0acc\u0acd\u0ad0\u0ae0\u0ae1\u0ae2\u0ae3\u0ae6\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0af9\u0b01\u0b02\u0b03\u0b05\u0b06\u0b07\u0b08\u0b09\u0b0a\u0b0b\u0b0c\u0b0f\u0b10\u0b13\u0b14\u0b15\u0b16\u0b17\u0b18\u0b19\u0b1a\u0b1b\u0b1c\u0b1d\u0b1e\u0b1f\u0b20\u0b21\u0b22\u0b23\u0b24\u0b25\u0b26\u0b27\u0b28\u0b2a\u0b2b\u0b2c\u0b2d\u0b2e\u0b2f\u0b30\u0b32\u0b33\u0b35\u0b36\u0b37\u0b38\u0b39\u0b3c\u0b3d\u0b3e\u0b3f\u0b40\u0b41\u0b42\u0b43\u0b44\u0b47\u0b48\u0b4b\u0b4c\u0b4d\u0b56\u0b57\u0b5f\u0b60\u0b61\u0b62\u0b63\u0b66\u0b67\u0b68\u0b69\u0b6a\u0b6b\u0b6c\u0b6d\u0b6e\u0b6f\u0b71\u0b82\u0b83\u0b85\u0b86\u0b87\u0b88\u0b89\u0b8a\u0b8e\u0b8f\u0b90\u0b92\u0b93\u0b94\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8\u0ba9\u0baa\u0bae\u0baf\u0bb0\u0bb1\u0bb2\u0bb3\u0bb4\u0bb5\u0bb6\u0bb7\u0bb8\u0bb9\u0bbe\u0bbf\u0bc0\u0bc1\u0bc2\u0bc6\u0bc7\u0bc8\u0bca\u0bcb\u0bcc\u0bcd\u0bd0\u0bd7\u0be6\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0c00\u0c01\u0c02\u0c03\u0c05\u0c06\u0c07\u0c08\u0c09\u0c0a\u0c0b\u0c0c\u0c0e\u0c0f\u0c10\u0c12\u0c13\u0c14\u0c15\u0c16\u0c17\u0c18\u0c19\u0c1a\u0c1b\u0c1c\u0c1d\u0c1e\u0c1f\u0c20\u0c21\u0c22\u0c23\u0c24\u0c25\u0c26\u0c27\u0c28\u0c2a\u0c2b\u0c2c\u0c2d\u0c2e\u0c2f\u0c30\u0c31\u0c32\u0c33\u0c34\u0c35\u0c36\u0c37\u0c38\u0c39\u0c3d\u0c3e\u0c3f\u0c40\u0c41\u0c42\u0c43\u0c44\u0c46\u0c47\u0c48\u0c4a\u0c4b\u0c4c\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c5a\u0c60\u0c61\u0c62\u0c63\u0c66\u0c67\u0c68\u0c69\u0c6a\u0c6b\u0c6c\u0c6d\u0c6e\u0c6f\u0c80\u0c81\u0c82\u0c83\u0c85\u0c86\u0c87\u0c88\u0c89\u0c8a\u0c8b\u0c8c\u0c8e\u0c8f\u0c90\u0c92\u0c93\u0c94\u0c95\u0c96\u0c97\u0c98\u0c99\u0c9a\u0c9b\u0c9c\u0c9d\u0c9e\u0c9f\u0ca0\u0ca1\u0ca2\u0ca3\u0ca4\u0ca5\u0ca6\u0ca7\u0ca8\u0caa\u0cab\u0cac\u0cad\u0cae\u0caf\u0cb0\u0cb1\u0cb2\u0cb3\u0cb5\u0cb6\u0cb7\u0cb8\u0cb9\u0cbc\u0cbd\u0cbe\u0cbf\u0cc0\u0cc1\u0cc2\u0cc3\u0cc4\u0cc6\u0cc7\u0cc8\u0cca\u0ccb\u0ccc\u0ccd\u0cd5\u0cd6\u0cde\u0ce0\u0ce1\u0ce2\u0ce3\u0ce6\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0cf1\u0cf2\u0d01\u0d02\u0d03\u0d05\u0d06\u0d07\u0d08\u0d09\u0d0a\u0d0b\u0d0c\u0d0e\u0d0f\u0d10\u0d12\u0d13\u0d14\u0d15\u0d16\u0d17\u0d18\u0d19\u0d1a\u0d1b\u0d1c\u0d1d\u0d1e\u0d1f\u0d20\u0d21\u0d22\u0d23\u0d24\u0d25\u0d26\u0d27\u0d28\u0d29\u0d2a\u0d2b\u0d2c\u0d2d\u0d2e\u0d2f\u0d30\u0d31\u0d32\u0d33\u0d34\u0d35\u0d36\u0d37\u0d38\u0d39\u0d3a\u0d3d\u0d3e\u0d3f\u0d40\u0d41\u0d42\u0d43\u0d44\u0d46\u0d47\u0d48\u0d4a\u0d4b\u0d4c\u0d4d\u0d4e\u0d54\u0d55\u0d56\u0d57\u0d5f\u0d60\u0d61\u0d62\u0d63\u0d66\u0d67\u0d68\u0d69\u0d6a\u0d6b\u0d6c\u0d6d\u0d6e\u0d6f\u0d7a\u0d7b\u0d7c\u0d7d\u0d7e\u0d7f\u0d82\u0d83\u0d85\u0d86\u0d87\u0d88\u0d89\u0d8a\u0d8b\u0d8c\u0d8d\u0d8e\u0d8f\u0d90\u0d91\u0d92\u0d93\u0d94\u0d95\u0d96\u0d9a\u0d9b\u0d9c\u0d9d\u0d9e\u0d9f\u0da0\u0da1\u0da2\u0da3\u0da4\u0da5\u0da6\u0da7\u0da8\u0da9\u0daa\u0dab\u0dac\u0dad\u0dae\u0daf\u0db0\u0db1\u0db3\u0db4\u0db5\u0db6\u0db7\u0db8\u0db9\u0dba\u0dbb\u0dbd\u0dc0\u0dc1\u0dc2\u0dc3\u0dc4\u0dc5\u0dc6\u0dca\u0dcf\u0dd0\u0dd1\u0dd2\u0dd3\u0dd4\u0dd6\u0dd8\u0dd9\u0dda\u0ddb\u0ddc\u0ddd\u0dde\u0ddf\u0de6\u0de7\u0de8\u0de9\u0dea\u0deb\u0dec\u0ded\u0dee\u0def\u0df2\u0df3\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e46\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0e4e\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94\u0e95\u0e96\u0e97\u0e99\u0e9a\u0e9b\u0e9c\u0e9d\u0e9e\u0e9f\u0ea1\u0ea2\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead\u0eae\u0eaf\u0eb0\u0eb1\u0eb2\u0eb4\u0eb5\u0eb6\u0eb7\u0eb8\u0eb9\u0ebb\u0ebc\u0ebd\u0ec0\u0ec1\u0ec2\u0ec3\u0ec4\u0ec6\u0ec8\u0ec9\u0eca\u0ecb\u0ecc\u0ecd\u0ed0\u0ed1\u0ed2\u0ed3\u0ed4\u0ed5\u0ed6\u0ed7\u0ed8\u0ed9\u0ede\u0edf\u0f00\u0f18\u0f19\u0f20\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f40\u0f41\u0f42\u0f44\u0f45\u0f46\u0f47\u0f49\u0f4a\u0f4b\u0f4c\u0f4e\u0f4f\u0f50\u0f51\u0f53\u0f54\u0f55\u0f56\u0f58\u0f59\u0f5a\u0f5b\u0f5d\u0f5e\u0f5f\u0f60\u0f61\u0f62\u0f63\u0f64\u0f65\u0f66\u0f67\u0f68\u0f6a\u0f6b\u0f6c\u0f71\u0f72\u0f74\u0f7a\u0f7b\u0f7c\u0f7d\u0f7e\u0f7f\u0f80\u0f82\u0f83\u0f84\u0f86\u0f87\u0f88\u0f89\u0f8a\u0f8b\u0f8c\u0f8d\u0f8e\u0f8f\u0f90\u0f91\u0f92\u0f94\u0f95\u0f96\u0f97\u0f99\u0f9a\u0f9b\u0f9c\u0f9e\u0f9f\u0fa0\u0fa1\u0fa3\u0fa4\u0fa5\u0fa6\u0fa8\u0fa9\u0faa\u0fab\u0fad\u0fae\u0faf\u0fb0\u0fb1\u0fb2\u0fb3\u0fb4\u0fb5\u0fb6\u0fb7\u0fb8\u0fba\u0fbb\u0fbc\u0fc6\u1000\u1001\u1002\u1003\u1004\u1005\u1006\u1007\u1008\u1009\u100a\u100b\u100c\u100d\u100e\u100f\u1010\u1011\u1012\u1013\u1014\u1015\u1016\u1017\u1018\u1019\u101a\u101b\u101c\u101d\u101e\u101f\u1020\u1021\u1022\u1023\u1024\u1025\u1026\u1027\u1028\u1029\u102a\u102b\u102c\u102d\u102e\u102f\u1030\u1031\u1032\u1033\u1034\u1035\u1036\u1037\u1038\u1039\u103a\u103b\u103c\u103d\u103e\u103f\u1040\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1050\u1051\u1052\u1053\u1054\u1055\u1056\u1057\u1058\u1059\u105a\u105b\u105c\u105d\u105e\u105f\u1060\u1061\u1062\u1063\u1064\u1065\u1066\u1067\u1068\u1069\u106a\u106b\u106c\u106d\u106e\u106f\u1070\u1071\u1072\u1073\u1074\u1075\u1076\u1077\u1078\u1079\u107a\u107b\u107c\u107d\u107e\u107f\u1080\u1081\u1082\u1083\u1084\u1085\u1086\u1087\u1088\u1089\u108a\u108b\u108c\u108d\u108e\u108f\u1090\u1091\u1092\u1093\u1094\u1095\u1096\u1097\u1098\u1099\u109a\u109b\u109c\u109d\u10a0\u10a1\u10a2\u10a3\u10a4\u10a5\u10a6\u10a7\u10a8\u10a9\u10aa\u10ab\u10ac\u10ad\u10ae\u10af\u10b0\u10b1\u10b2\u10b3\u10b4\u10b5\u10b6\u10b7\u10b8\u10b9\u10ba\u10bb\u10bc\u10bd\u10be\u10bf\u10c0\u10c1\u10c2\u10c3\u10c4\u10c5\u10c7\u10cd\u10d0\u10d1\u10d2\u10d3\u10d4\u10d5\u10d6\u10d7\u10d8\u10d9\u10da\u10db\u10dc\u10dd\u10de\u10df\u10e0\u10e1\u10e2\u10e3\u10e4\u10e5\u10e6\u10e7\u10e8\u10e9\u10ea\u10eb\u10ec\u10ed\u10ee\u10ef\u10f0\u10f1\u10f2\u10f3\u10f4\u10f5\u10f6\u10f7\u10f8\u10f9\u10fa\u10fc\u10fd\u10fe\u10ff\u1100\u1101\u1102\u1103\u1104\u1105\u1106\u1107\u1108\u1109\u110a\u110b\u110c\u110d\u110e\u110f\u1110\u1111\u1112\u1113\u1114\u1115\u1116\u1117\u1118\u1119\u111a\u111b\u111c\u111d\u111e\u111f\u1120\u1121\u1122\u1123\u1124\u1125\u1126\u1127\u1128\u1129\u112a\u112b\u112c\u112d\u112e\u112f\u1130\u1131\u1132\u1133\u1134\u1135\u1136\u1137\u1138\u1139\u113a\u113b\u113c\u113d\u113e\u113f\u1140\u1141\u1142\u1143\u1144\u1145\u1146\u1147\u1148\u1149\u114a\u114b\u114c\u114d\u114e\u114f\u1150\u1151\u1152\u1153\u1154\u1155\u1156\u1157\u1158\u1159\u115a\u115b\u115c\u115d\u115e\u115f\u1160\u1161\u1162\u1163\u1164\u1165\u1166\u1167\u1168\u1169\u116a\u116b\u116c\u116d\u116e\u116f\u1170\u1171\u1172\u1173\u1174\u1175\u1176\u1177\u1178\u1179\u117a\u117b\u117c\u117d\u117e\u117f\u1180\u1181\u1182\u1183\u1184\u1185\u1186\u1187\u1188\u1189\u118a\u118b\u118c\u118d\u118e\u118f\u1190\u1191\u1192\u1193\u1194\u1195\u1196\u1197\u1198\u1199\u119a\u119b\u119c\u119d\u119e\u119f\u11a0\u11a1\u11a2\u11a3\u11a4\u11a5\u11a6\u11a7\u11a8\u11a9\u11aa\u11ab\u11ac\u11ad\u11ae\u11af\u11b0\u11b1\u11b2\u11b3\u11b4\u11b5\u11b6\u11b7\u11b8\u11b9\u11ba\u11bb\u11bc\u11bd\u11be\u11bf\u11c0\u11c1\u11c2\u11c3\u11c4\u11c5\u11c6\u11c7\u11c8\u11c9\u11ca\u11cb\u11cc\u11cd\u11ce\u11cf\u11d0\u11d1\u11d2\u11d3\u11d4\u11d5\u11d6\u11d7\u11d8\u11d9\u11da\u11db\u11dc\u11dd\u11de\u11df\u11e0\u11e1\u11e2\u11e3\u11e4\u11e5\u11e6\u11e7\u11e8\u11e9\u11ea\u11eb\u11ec\u11ed\u11ee\u11ef\u11f0\u11f1\u11f2\u11f3\u11f4\u11f5\u11f6\u11f7\u11f8\u11f9\u11fa\u11fb\u11fc\u11fd\u11fe\u11ff\u1200\u1201\u1202\u1203\u1204\u1205\u1206\u1207\u1208\u1209\u120a\u120b\u120c\u120d\u120e\u120f\u1210\u1211\u1212\u1213\u1214\u1215\u1216\u1217\u1218\u1219\u121a\u121b\u121c\u121d\u121e\u121f\u1220\u1221\u1222\u1223\u1224\u1225\u1226\u1227\u1228\u1229\u122a\u122b\u122c\u122d\u122e\u122f\u1230\u1231\u1232\u1233\u1234\u1235\u1236\u1237\u1238\u1239\u123a\u123b\u123c\u123d\u123e\u123f\u1240\u1241\u1242\u1243\u1244\u1245\u1246\u1247\u1248\u124a\u124b\u124c\u124d\u1250\u1251\u1252\u1253\u1254\u1255\u1256\u1258\u125a\u125b\u125c\u125d\u1260\u1261\u1262\u1263\u1264\u1265\u1266\u1267\u1268\u1269\u126a\u126b\u126c\u126d\u126e\u126f\u1270\u1271\u1272\u1273\u1274\u1275\u1276\u1277\u1278\u1279\u127a\u127b\u127c\u127d\u127e\u127f\u1280\u1281\u1282\u1283\u1284\u1285\u1286\u1287\u1288\u128a\u128b\u128c\u128d\u1290\u1291\u1292\u1293\u1294\u1295\u1296\u1297\u1298\u1299\u129a\u129b\u129c\u129d\u129e\u129f\u12a0\u12a1\u12a2\u12a3\u12a4\u12a5\u12a6\u12a7\u12a8\u12a9\u12aa\u12ab\u12ac\u12ad\u12ae\u12af\u12b0\u12b2\u12b3\u12b4\u12b5\u12b8\u12b9\u12ba\u12bb\u12bc\u12bd\u12be\u12c0\u12c2\u12c3\u12c4\u12c5\u12c8\u12c9\u12ca\u12cb\u12cc\u12cd\u12ce\u12cf\u12d0\u12d1\u12d2\u12d3\u12d4\u12d5\u12d6\u12d8\u12d9\u12da\u12db\u12dc\u12dd\u12de\u12df\u12e0\u12e1\u12e2\u12e3\u12e4\u12e5\u12e6\u12e7\u12e8\u12e9\u12ea\u12eb\u12ec\u12ed\u12ee\u12ef\u12f0\u12f1\u12f2\u12f3\u12f4\u12f5\u12f6\u12f7\u12f8\u12f9\u12fa\u12fb\u12fc\u12fd\u12fe\u12ff\u1300\u1301\u1302\u1303\u1304\u1305\u1306\u1307\u1308\u1309\u130a\u130b\u130c\u130d\u130e\u130f\u1310\u1312\u1313\u1314\u1315\u1318\u1319\u131a\u131b\u131c\u131d\u131e\u131f\u1320\u1321\u1322\u1323\u1324\u1325\u1326\u1327\u1328\u1329\u132a\u132b\u132c\u132d\u132e\u132f\u1330\u1331\u1332\u1333\u1334\u1335\u1336\u1337\u1338\u1339\u133a\u133b\u133c\u133d\u133e\u133f\u1340\u1341\u1342\u1343\u1344\u1345\u1346\u1347\u1348\u1349\u134a\u134b\u134c\u134d\u134e\u134f\u1350\u1351\u1352\u1353\u1354\u1355\u1356\u1357\u1358\u1359\u135a\u135d\u135e\u135f\u1369\u1370\u1371\u1380\u1381\u1382\u1383\u1384\u1385\u1386\u1387\u1388\u1389\u138a\u138b\u138c\u138d\u138e\u138f\u13a0\u13a1\u13a2\u13a3\u13a4\u13a5\u13a6\u13a7\u13a8\u13a9\u13aa\u13ab\u13ac\u13ad\u13ae\u13af\u13b0\u13b1\u13b2\u13b3\u13b4\u13b5\u13b6\u13b7\u13b8\u13b9\u13ba\u13bb\u13bc\u13bd\u13be\u13bf\u13c0\u13c1\u13c2\u13c3\u13c4\u13c5\u13c6\u13c7\u13c8\u13c9\u13ca\u13cb\u13cc\u13cd\u13ce\u13cf\u13d0\u13d1\u13d2\u13d3\u13d4\u13d5\u13d6\u13d7\u13d8\u13d9\u13da\u13db\u13dc\u13dd\u13de\u13df\u13e0\u13e1\u13e2\u13e3\u13e4\u13e5\u13e6\u13e7\u13e8\u13e9\u13ea\u13eb\u13ec\u13ed\u13ee\u13ef\u13f0\u13f1\u13f2\u13f3\u13f4\u13f5\u13f8\u13f9\u13fa\u13fb\u13fc\u13fd\u1401\u1402\u1403\u1404\u1405\u1406\u1407\u1408\u1409\u140a\u140b\u140c\u140d\u140e\u140f\u1410\u1411\u1412\u1413\u1414\u1415\u1416\u1417\u1418\u1419\u141a\u141b\u141c\u141d\u141e\u141f\u1420\u1421\u1422\u1423\u1424\u1425\u1426\u1427\u1428\u1429\u142a\u142b\u142c\u142d\u142e\u142f\u1430\u1431\u1432\u1433\u1434\u1435\u1436\u1437\u1438\u1439\u143a\u143b\u143c\u143d\u143e\u143f\u1440\u1441\u1442\u1443\u1444\u1445\u1446\u1447\u1448\u1449\u144a\u144b\u144c\u144d\u144e\u144f\u1450\u1451\u1452\u1453\u1454\u1455\u1456\u1457\u1458\u1459\u145a\u145b\u145c\u145d\u145e\u145f\u1460\u1461\u1462\u1463\u1464\u1465\u1466\u1467\u1468\u1469\u146a\u146b\u146c\u146d\u146e\u146f\u1470\u1471\u1472\u1473\u1474\u1475\u1476\u1477\u1478\u1479\u147a\u147b\u147c\u147d\u147e\u147f\u1480\u1481\u1482\u1483\u1484\u1485\u1486\u1487\u1488\u1489\u148a\u148b\u148c\u148d\u148e\u148f\u1490\u1491\u1492\u1493\u1494\u1495\u1496\u1497\u1498\u1499\u149a\u149b\u149c\u149d\u149e\u149f\u14a0\u14a1\u14a2\u14a3\u14a4\u14a5\u14a6\u14a7\u14a8\u14a9\u14aa\u14ab\u14ac\u14ad\u14ae\u14af\u14b0\u14b1\u14b2\u14b3\u14b4\u14b5\u14b6\u14b7\u14b8\u14b9\u14ba\u14bb\u14bc\u14bd\u14be\u14bf\u14c0\u14c1\u14c2\u14c3\u14c4\u14c5\u14c6\u14c7\u14c8\u14c9\u14ca\u14cb\u14cc\u14cd\u14ce\u14cf\u14d0\u14d1\u14d2\u14d3\u14d4\u14d5\u14d6\u14d7\u14d8\u14d9\u14da\u14db\u14dc\u14dd\u14de\u14df\u14e0\u14e1\u14e2\u14e3\u14e4\u14e5\u14e6\u14e7\u14e8\u14e9\u14ea\u14eb\u14ec\u14ed\u14ee\u14ef\u14f0\u14f1\u14f2\u14f3\u14f4\u14f5\u14f6\u14f7\u14f8\u14f9\u14fa\u14fb\u14fc\u14fd\u14fe\u14ff\u1500\u1501\u1502\u1503\u1504\u1505\u1506\u1507\u1508\u1509\u150a\u150b\u150c\u150d\u150e\u150f\u1510\u1511\u1512\u1513\u1514\u1515\u1516\u1517\u1518\u1519\u151a\u151b\u151c\u151d\u151e\u151f\u1520\u1521\u1522\u1523\u1524\u1525\u1526\u1527\u1528\u1529\u152a\u152b\u152c\u152d\u152e\u152f\u1530\u1531\u1532\u1533\u1534\u1535\u1536\u1537\u1538\u1539\u153a\u153b\u153c\u153d\u153e\u153f\u1540\u1541\u1542\u1543\u1544\u1545\u1546\u1547\u1548\u1549\u154a\u154b\u154c\u154d\u154e\u154f\u1550\u1551\u1552\u1553\u1554\u1555\u1556\u1557\u1558\u1559\u155a\u155b\u155c\u155d\u155e\u155f\u1560\u1561\u1562\u1563\u1564\u1565\u1566\u1567\u1568\u1569\u156a\u156b\u156c\u156d\u156e\u156f\u1570\u1571\u1572\u1573\u1574\u1575\u1576\u1577\u1578\u1579\u157a\u157b\u157c\u157d\u157e\u157f\u1580\u1581\u1582\u1583\u1584\u1585\u1586\u1587\u1588\u1589\u158a\u158b\u158c\u158d\u158e\u158f\u1590\u1591\u1592\u1593\u1594\u1595\u1596\u1597\u1598\u1599\u159a\u159b\u159c\u159d\u159e\u159f\u15a0\u15a1\u15a2\u15a3\u15a4\u15a5\u15a6\u15a7\u15a8\u15a9\u15aa\u15ab\u15ac\u15ad\u15ae\u15af\u15b0\u15b1\u15b2\u15b3\u15b4\u15b5\u15b6\u15b7\u15b8\u15b9\u15ba\u15bb\u15bc\u15bd\u15be\u15bf\u15c0\u15c1\u15c2\u15c3\u15c4\u15c5\u15c6\u15c7\u15c8\u15c9\u15ca\u15cb\u15cc\u15cd\u15ce\u15cf\u15d0\u15d1\u15d2\u15d3\u15d4\u15d5\u15d6\u15d7\u15d8\u15d9\u15da\u15db\u15dc\u15dd\u15de\u15df\u15e0\u15e1\u15e2\u15e3\u15e4\u15e5\u15e6\u15e7\u15e8\u15e9\u15ea\u15eb\u15ec\u15ed\u15ee\u15ef\u15f0\u15f1\u15f2\u15f3\u15f4\u15f5\u15f6\u15f7\u15f8\u15f9\u15fa\u15fb\u15fc\u15fd\u15fe\u15ff\u1600\u1601\u1602\u1603\u1604\u1605\u1606\u1607\u1608\u1609\u160a\u160b\u160c\u160d\u160e\u160f\u1610\u1611\u1612\u1613\u1614\u1615\u1616\u1617\u1618\u1619\u161a\u161b\u161c\u161d\u161e\u161f\u1620\u1621\u1622\u1623\u1624\u1625\u1626\u1627\u1628\u1629\u162a\u162b\u162c\u162d\u162e\u162f\u1630\u1631\u1632\u1633\u1634\u1635\u1636\u1637\u1638\u1639\u163a\u163b\u163c\u163d\u163e\u163f\u1640\u1641\u1642\u1643\u1644\u1645\u1646\u1647\u1648\u1649\u164a\u164b\u164c\u164d\u164e\u164f\u1650\u1651\u1652\u1653\u1654\u1655\u1656\u1657\u1658\u1659\u165a\u165b\u165c\u165d\u165e\u165f\u1660\u1661\u1662\u1663\u1664\u1665\u1666\u1667\u1668\u1669\u166a\u166b\u166c\u166f\u1670\u1671\u1672\u1673\u1674\u1675\u1676\u1677\u1678\u1679\u167a\u167b\u167c\u167d\u167e\u167f\u1681\u1682\u1683\u1684\u1685\u1686\u1687\u1688\u1689\u168a\u168b\u168c\u168d\u168e\u168f\u1690\u1691\u1692\u1693\u1694\u1695\u1696\u1697\u1698\u1699\u169a\u16a0\u16a1\u16a2\u16a3\u16a4\u16a5\u16a6\u16a7\u16a8\u16a9\u16aa\u16ab\u16ac\u16ad\u16ae\u16af\u16b0\u16b1\u16b2\u16b3\u16b4\u16b5\u16b6\u16b7\u16b8\u16b9\u16ba\u16bb\u16bc\u16bd\u16be\u16bf\u16c0\u16c1\u16c2\u16c3\u16c4\u16c5\u16c6\u16c7\u16c8\u16c9\u16ca\u16cb\u16cc\u16cd\u16ce\u16cf\u16d0\u16d1\u16d2\u16d3\u16d4\u16d5\u16d6\u16d7\u16d8\u16d9\u16da\u16db\u16dc\u16dd\u16de\u16df\u16e0\u16e1\u16e2\u16e3\u16e4\u16e5\u16e6\u16e7\u16e8\u16e9\u16ea\u16ee\u16ef\u16f0\u16f1\u16f2\u16f3\u16f4\u16f5\u16f6\u16f7\u16f8\u1700\u1701\u1702\u1703\u1704\u1705\u1706\u1707\u1708\u1709\u170a\u170b\u170c\u170e\u170f\u1710\u1711\u1712\u1713\u1714\u1720\u1721\u1722\u1723\u1724\u1725\u1726\u1727\u1728\u1729\u172a\u172b\u172c\u172d\u172e\u172f\u1730\u1731\u1732\u1733\u1734\u1740\u1741\u1742\u1743\u1744\u1745\u1746\u1747\u1748\u1749\u174a\u174b\u174c\u174d\u174e\u174f\u1750\u1751\u1752\u1753\u1760\u1761\u1762\u1763\u1764\u1765\u1766\u1767\u1768\u1769\u176a\u176b\u176c\u176e\u176f\u1770\u1772\u1773\u1780\u1781\u1782\u1783\u1784\u1785\u1786\u1787\u1788\u1789\u178a\u178b\u178c\u178d\u178e\u178f\u1790\u1791\u1792\u1793\u1794\u1795\u1796\u1797\u1798\u1799\u179a\u179b\u179c\u179d\u179e\u179f\u17a0\u17a1\u17a2\u17a3\u17a4\u17a5\u17a6\u17a7\u17a8\u17a9\u17aa\u17ab\u17ac\u17ad\u17ae\u17af\u17b0\u17b1\u17b2\u17b3\u17b4\u17b5\u17b6\u17b7\u17b8\u17b9\u17ba\u17bb\u17bc\u17bd\u17be\u17bf\u17c0\u17c1\u17c2\u17c3\u17c4\u17c5\u17c6\u17c7\u17c8\u17c9\u17ca\u17cb\u17cc\u17cd\u17ce\u17cf\u17d0\u17d1\u17d2\u17d3\u17d7\u17dc\u17dd\u17e0\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u180b\u180c\u180d\u1810\u1811\u1812\u1813\u1814\u1815\u1816\u1817\u1818\u1819\u1820\u1821\u1822\u1823\u1824\u1825\u1826\u1827\u1828\u1829\u182a\u182b\u182c\u182d\u182e\u182f\u1830\u1831\u1832\u1833\u1834\u1835\u1836\u1837\u1838\u1839\u183a\u183b\u183c\u183d\u183e\u183f\u1840\u1841\u1842\u1843\u1844\u1845\u1846\u1847\u1848\u1849\u184a\u184b\u184c\u184d\u184e\u184f\u1850\u1851\u1852\u1853\u1854\u1855\u1856\u1857\u1858\u1859\u185a\u185b\u185c\u185d\u185e\u185f\u1860\u1861\u1862\u1863\u1864\u1865\u1866\u1867\u1868\u1869\u186a\u186b\u186c\u186d\u186e\u186f\u1870\u1871\u1872\u1873\u1874\u1875\u1876\u1877\u1880\u1881\u1882\u1883\u1884\u1885\u1886\u1887\u1888\u1889\u188a\u188b\u188c\u188d\u188e\u188f\u1890\u1891\u1892\u1893\u1894\u1895\u1896\u1897\u1898\u1899\u189a\u189b\u189c\u189d\u189e\u189f\u18a0\u18a1\u18a2\u18a3\u18a4\u18a5\u18a6\u18a7\u18a8\u18a9\u18aa\u18b0\u18b1\u18b2\u18b3\u18b4\u18b5\u18b6\u18b7\u18b8\u18b9\u18ba\u18bb\u18bc\u18bd\u18be\u18bf\u18c0\u18c1\u18c2\u18c3\u18c4\u18c5\u18c6\u18c7\u18c8\u18c9\u18ca\u18cb\u18cc\u18cd\u18ce\u18cf\u18d0\u18d1\u18d2\u18d3\u18d4\u18d5\u18d6\u18d7\u18d8\u18d9\u18da\u18db\u18dc\u18dd\u18de\u18df\u18e0\u18e1\u18e2\u18e3\u18e4\u18e5\u18e6\u18e7\u18e8\u18e9\u18ea\u18eb\u18ec\u18ed\u18ee\u18ef\u18f0\u18f1\u18f2\u18f3\u18f4\u18f5\u1900\u1901\u1902\u1903\u1904\u1905\u1906\u1907\u1908\u1909\u190a\u190b\u190c\u190d\u190e\u190f\u1910\u1911\u1912\u1913\u1914\u1915\u1916\u1917\u1918\u1919\u191a\u191b\u191c\u191d\u191e\u1920\u1921\u1922\u1923\u1924\u1925\u1926\u1927\u1928\u1929\u192a\u192b\u1930\u1931\u1932\u1933\u1934\u1935\u1936\u1937\u1938\u1939\u193a\u193b\u1946\u1947\u1948\u1949\u194a\u194b\u194c\u194d\u194e\u194f\u1950\u1951\u1952\u1953\u1954\u1955\u1956\u1957\u1958\u1959\u195a\u195b\u195c\u195d\u195e\u195f\u1960\u1961\u1962\u1963\u1964\u1965\u1966\u1967\u1968\u1969\u196a\u196b\u196c\u196d\u1970\u1971\u1972\u1973\u1974\u1980\u1981\u1982\u1983\u1984\u1985\u1986\u1987\u1988\u1989\u198a\u198b\u198c\u198d\u198e\u198f\u1990\u1991\u1992\u1993\u1994\u1995\u1996\u1997\u1998\u1999\u199a\u199b\u199c\u199d\u199e\u199f\u19a0\u19a1\u19a2\u19a3\u19a4\u19a5\u19a6\u19a7\u19a8\u19a9\u19aa\u19ab\u19b0\u19b1\u19b2\u19b3\u19b4\u19b5\u19b6\u19b7\u19b8\u19b9\u19ba\u19bb\u19bc\u19bd\u19be\u19bf\u19c0\u19c1\u19c2\u19c3\u19c4\u19c5\u19c6\u19c7\u19c8\u19c9\u19d0\u19d1\u19d2\u19d3\u19d4\u19d5\u19d6\u19d7\u19d8\u19d9\u19da\u1a00\u1a01\u1a02\u1a03\u1a04\u1a05\u1a06\u1a07\u1a08\u1a09\u1a0a\u1a0b\u1a0c\u1a0d\u1a0e\u1a0f\u1a10\u1a11\u1a12\u1a13\u1a14\u1a15\u1a16\u1a17\u1a18\u1a19\u1a1a\u1a1b\u1a20\u1a21\u1a22\u1a23\u1a24\u1a25\u1a26\u1a27\u1a28\u1a29\u1a2a\u1a2b\u1a2c\u1a2d\u1a2e\u1a2f\u1a30\u1a31\u1a32\u1a33\u1a34\u1a35\u1a36\u1a37\u1a38\u1a39\u1a3a\u1a3b\u1a3c\u1a3d\u1a3e\u1a3f\u1a40\u1a41\u1a42\u1a43\u1a44\u1a45\u1a46\u1a47\u1a48\u1a49\u1a4a\u1a4b\u1a4c\u1a4d\u1a4e\u1a4f\u1a50\u1a51\u1a52\u1a53\u1a54\u1a55\u1a56\u1a57\u1a58\u1a59\u1a5a\u1a5b\u1a5c\u1a5d\u1a5e\u1a60\u1a61\u1a62\u1a63\u1a64\u1a65\u1a66\u1a67\u1a68\u1a69\u1a6a\u1a6b\u1a6c\u1a6d\u1a6e\u1a6f\u1a70\u1a71\u1a72\u1a73\u1a74\u1a75\u1a76\u1a77\u1a78\u1a79\u1a7a\u1a7b\u1a7c\u1a7f\u1a80\u1a81\u1a82\u1a83\u1a84\u1a85\u1a86\u1a87\u1a88\u1a89\u1a90\u1a91\u1a92\u1a93\u1a94\u1a95\u1a96\u1a97\u1a98\u1a99\u1aa7\u1ab0\u1ab1\u1ab2\u1ab3\u1ab4\u1ab5\u1ab6\u1ab7\u1ab8\u1ab9\u1aba\u1abb\u1abc\u1abd\u1b00\u1b01\u1b02\u1b03\u1b04\u1b05\u1b06\u1b07\u1b08\u1b09\u1b0a\u1b0b\u1b0c\u1b0d\u1b0e\u1b0f\u1b10\u1b11\u1b12\u1b13\u1b14\u1b15\u1b16\u1b17\u1b18\u1b19\u1b1a\u1b1b\u1b1c\u1b1d\u1b1e\u1b1f\u1b20\u1b21\u1b22\u1b23\u1b24\u1b25\u1b26\u1b27\u1b28\u1b29\u1b2a\u1b2b\u1b2c\u1b2d\u1b2e\u1b2f\u1b30\u1b31\u1b32\u1b33\u1b34\u1b35\u1b36\u1b37\u1b38\u1b39\u1b3a\u1b3b\u1b3c\u1b3d\u1b3e\u1b3f\u1b40\u1b41\u1b42\u1b43\u1b44\u1b45\u1b46\u1b47\u1b48\u1b49\u1b4a\u1b4b\u1b50\u1b51\u1b52\u1b53\u1b54\u1b55\u1b56\u1b57\u1b58\u1b59\u1b6b\u1b6c\u1b6d\u1b6e\u1b6f\u1b70\u1b71\u1b72\u1b73\u1b80\u1b81\u1b82\u1b83\u1b84\u1b85\u1b86\u1b87\u1b88\u1b89\u1b8a\u1b8b\u1b8c\u1b8d\u1b8e\u1b8f\u1b90\u1b91\u1b92\u1b93\u1b94\u1b95\u1b96\u1b97\u1b98\u1b99\u1b9a\u1b9b\u1b9c\u1b9d\u1b9e\u1b9f\u1ba0\u1ba1\u1ba2\u1ba3\u1ba4\u1ba5\u1ba6\u1ba7\u1ba8\u1ba9\u1baa\u1bab\u1bac\u1bad\u1bae\u1baf\u1bb0\u1bb1\u1bb2\u1bb3\u1bb4\u1bb5\u1bb6\u1bb7\u1bb8\u1bb9\u1bba\u1bbb\u1bbc\u1bbd\u1bbe\u1bbf\u1bc0\u1bc1\u1bc2\u1bc3\u1bc4\u1bc5\u1bc6\u1bc7\u1bc8\u1bc9\u1bca\u1bcb\u1bcc\u1bcd\u1bce\u1bcf\u1bd0\u1bd1\u1bd2\u1bd3\u1bd4\u1bd5\u1bd6\u1bd7\u1bd8\u1bd9\u1bda\u1bdb\u1bdc\u1bdd\u1bde\u1bdf\u1be0\u1be1\u1be2\u1be3\u1be4\u1be5\u1be6\u1be7\u1be8\u1be9\u1bea\u1beb\u1bec\u1bed\u1bee\u1bef\u1bf0\u1bf1\u1bf2\u1bf3\u1c00\u1c01\u1c02\u1c03\u1c04\u1c05\u1c06\u1c07\u1c08\u1c09\u1c0a\u1c0b\u1c0c\u1c0d\u1c0e\u1c0f\u1c10\u1c11\u1c12\u1c13\u1c14\u1c15\u1c16\u1c17\u1c18\u1c19\u1c1a\u1c1b\u1c1c\u1c1d\u1c1e\u1c1f\u1c20\u1c21\u1c22\u1c23\u1c24\u1c25\u1c26\u1c27\u1c28\u1c29\u1c2a\u1c2b\u1c2c\u1c2d\u1c2e\u1c2f\u1c30\u1c31\u1c32\u1c33\u1c34\u1c35\u1c36\u1c37\u1c40\u1c41\u1c42\u1c43\u1c44\u1c45\u1c46\u1c47\u1c48\u1c49\u1c4d\u1c4e\u1c4f\u1c50\u1c51\u1c52\u1c53\u1c54\u1c55\u1c56\u1c57\u1c58\u1c59\u1c5a\u1c5b\u1c5c\u1c5d\u1c5e\u1c5f\u1c60\u1c61\u1c62\u1c63\u1c64\u1c65\u1c66\u1c67\u1c68\u1c69\u1c6a\u1c6b\u1c6c\u1c6d\u1c6e\u1c6f\u1c70\u1c71\u1c72\u1c73\u1c74\u1c75\u1c76\u1c77\u1c78\u1c79\u1c7a\u1c7b\u1c7c\u1c7d\u1c80\u1c81\u1c82\u1c83\u1c84\u1c85\u1c86\u1c87\u1c88\u1cd0\u1cd1\u1cd2\u1cd4\u1cd5\u1cd6\u1cd7\u1cd8\u1cd9\u1cda\u1cdb\u1cdc\u1cdd\u1cde\u1cdf\u1ce0\u1ce1\u1ce2\u1ce3\u1ce4\u1ce5\u1ce6\u1ce7\u1ce8\u1ce9\u1cea\u1ceb\u1cec\u1ced\u1cee\u1cef\u1cf0\u1cf1\u1cf2\u1cf3\u1cf4\u1cf5\u1cf6\u1cf8\u1cf9\u1d00\u1d01\u1d02\u1d03\u1d04\u1d05\u1d06\u1d07\u1d08\u1d09\u1d0a\u1d0b\u1d0c\u1d0d\u1d0e\u1d0f\u1d10\u1d11\u1d12\u1d13\u1d14\u1d15\u1d16\u1d17\u1d18\u1d19\u1d1a\u1d1b\u1d1c\u1d1d\u1d1e\u1d1f\u1d20\u1d21\u1d22\u1d23\u1d24\u1d25\u1d26\u1d27\u1d28\u1d29\u1d2a\u1d2b\u1d2c\u1d2d\u1d2e\u1d2f\u1d30\u1d31\u1d32\u1d33\u1d34\u1d35\u1d36\u1d37\u1d38\u1d39\u1d3a\u1d3b\u1d3c\u1d3d\u1d3e\u1d3f\u1d40\u1d41\u1d42\u1d43\u1d44\u1d45\u1d46\u1d47\u1d48\u1d49\u1d4a\u1d4b\u1d4c\u1d4d\u1d4e\u1d4f\u1d50\u1d51\u1d52\u1d53\u1d54\u1d55\u1d56\u1d57\u1d58\u1d59\u1d5a\u1d5b\u1d5c\u1d5d\u1d5e\u1d5f\u1d60\u1d61\u1d62\u1d63\u1d64\u1d65\u1d66\u1d67\u1d68\u1d69\u1d6a\u1d6b\u1d6c\u1d6d\u1d6e\u1d6f\u1d70\u1d71\u1d72\u1d73\u1d74\u1d75\u1d76\u1d77\u1d78\u1d79\u1d7a\u1d7b\u1d7c\u1d7d\u1d7e\u1d7f\u1d80\u1d81\u1d82\u1d83\u1d84\u1d85\u1d86\u1d87\u1d88\u1d89\u1d8a\u1d8b\u1d8c\u1d8d\u1d8e\u1d8f\u1d90\u1d91\u1d92\u1d93\u1d94\u1d95\u1d96\u1d97\u1d98\u1d99\u1d9a\u1d9b\u1d9c\u1d9d\u1d9e\u1d9f\u1da0\u1da1\u1da2\u1da3\u1da4\u1da5\u1da6\u1da7\u1da8\u1da9\u1daa\u1dab\u1dac\u1dad\u1dae\u1daf\u1db0\u1db1\u1db2\u1db3\u1db4\u1db5\u1db6\u1db7\u1db8\u1db9\u1dba\u1dbb\u1dbc\u1dbd\u1dbe\u1dbf\u1dc0\u1dc1\u1dc2\u1dc3\u1dc4\u1dc5\u1dc6\u1dc7\u1dc8\u1dc9\u1dca\u1dcb\u1dcc\u1dcd\u1dce\u1dcf\u1dd0\u1dd1\u1dd2\u1dd3\u1dd4\u1dd5\u1dd6\u1dd7\u1dd8\u1dd9\u1dda\u1ddb\u1ddc\u1ddd\u1dde\u1ddf\u1de0\u1de1\u1de2\u1de3\u1de4\u1de5\u1de6\u1de7\u1de8\u1de9\u1dea\u1deb\u1dec\u1ded\u1dee\u1def\u1df0\u1df1\u1df2\u1df3\u1df4\u1df5\u1dfb\u1dfc\u1dfd\u1dfe\u1dff\u1e00\u1e01\u1e02\u1e03\u1e04\u1e05\u1e06\u1e07\u1e08\u1e09\u1e0a\u1e0b\u1e0c\u1e0d\u1e0e\u1e0f\u1e10\u1e11\u1e12\u1e13\u1e14\u1e15\u1e16\u1e17\u1e18\u1e19\u1e1a\u1e1b\u1e1c\u1e1d\u1e1e\u1e1f\u1e20\u1e21\u1e22\u1e23\u1e24\u1e25\u1e26\u1e27\u1e28\u1e29\u1e2a\u1e2b\u1e2c\u1e2d\u1e2e\u1e2f\u1e30\u1e31\u1e32\u1e33\u1e34\u1e35\u1e36\u1e37\u1e38\u1e39\u1e3a\u1e3b\u1e3c\u1e3d\u1e3e\u1e3f\u1e40\u1e41\u1e42\u1e43\u1e44\u1e45\u1e46\u1e47\u1e48\u1e49\u1e4a\u1e4b\u1e4c\u1e4d\u1e4e\u1e4f\u1e50\u1e51\u1e52\u1e53\u1e54\u1e55\u1e56\u1e57\u1e58\u1e59\u1e5a\u1e5b\u1e5c\u1e5d\u1e5e\u1e5f\u1e60\u1e61\u1e62\u1e63\u1e64\u1e65\u1e66\u1e67\u1e68\u1e69\u1e6a\u1e6b\u1e6c\u1e6d\u1e6e\u1e6f\u1e70\u1e71\u1e72\u1e73\u1e74\u1e75\u1e76\u1e77\u1e78\u1e79\u1e7a\u1e7b\u1e7c\u1e7d\u1e7e\u1e7f\u1e80\u1e81\u1e82\u1e83\u1e84\u1e85\u1e86\u1e87\u1e88\u1e89\u1e8a\u1e8b\u1e8c\u1e8d\u1e8e\u1e8f\u1e90\u1e91\u1e92\u1e93\u1e94\u1e95\u1e96\u1e97\u1e98\u1e99\u1e9b\u1e9c\u1e9d\u1e9e\u1e9f\u1ea0\u1ea1\u1ea2\u1ea3\u1ea4\u1ea5\u1ea6\u1ea7\u1ea8\u1ea9\u1eaa\u1eab\u1eac\u1ead\u1eae\u1eaf\u1eb0\u1eb1\u1eb2\u1eb3\u1eb4\u1eb5\u1eb6\u1eb7\u1eb8\u1eb9\u1eba\u1ebb\u1ebc\u1ebd\u1ebe\u1ebf\u1ec0\u1ec1\u1ec2\u1ec3\u1ec4\u1ec5\u1ec6\u1ec7\u1ec8\u1ec9\u1eca\u1ecb\u1ecc\u1ecd\u1ece\u1ecf\u1ed0\u1ed1\u1ed2\u1ed3\u1ed4\u1ed5\u1ed6\u1ed7\u1ed8\u1ed9\u1eda\u1edb\u1edc\u1edd\u1ede\u1edf\u1ee0\u1ee1\u1ee2\u1ee3\u1ee4\u1ee5\u1ee6\u1ee7\u1ee8\u1ee9\u1eea\u1eeb\u1eec\u1eed\u1eee\u1eef\u1ef0\u1ef1\u1ef2\u1ef3\u1ef4\u1ef5\u1ef6\u1ef7\u1ef8\u1ef9\u1efa\u1efb\u1efc\u1efd\u1efe\u1eff\u1f00\u1f01\u1f02\u1f03\u1f04\u1f05\u1f06\u1f07\u1f08\u1f09\u1f0a\u1f0b\u1f0c\u1f0d\u1f0e\u1f0f\u1f10\u1f11\u1f12\u1f13\u1f14\u1f15\u1f18\u1f19\u1f1a\u1f1b\u1f1c\u1f1d\u1f20\u1f21\u1f22\u1f23\u1f24\u1f25\u1f26\u1f27\u1f28\u1f29\u1f2a\u1f2b\u1f2c\u1f2d\u1f2e\u1f2f\u1f30\u1f31\u1f32\u1f33\u1f34\u1f35\u1f36\u1f37\u1f38\u1f39\u1f3a\u1f3b\u1f3c\u1f3d\u1f3e\u1f3f\u1f40\u1f41\u1f42\u1f43\u1f44\u1f45\u1f48\u1f49\u1f4a\u1f4b\u1f4c\u1f4d\u1f50\u1f51\u1f52\u1f53\u1f54\u1f55\u1f56\u1f57\u1f59\u1f5b\u1f5d\u1f5f\u1f60\u1f61\u1f62\u1f63\u1f64\u1f65\u1f66\u1f67\u1f68\u1f69\u1f6a\u1f6b\u1f6c\u1f6d\u1f6e\u1f6f\u1f70\u1f71\u1f72\u1f73\u1f74\u1f75\u1f76\u1f77\u1f78\u1f79\u1f7a\u1f7b\u1f7c\u1f7d\u1f80\u1f81\u1f82\u1f83\u1f84\u1f85\u1f86\u1f87\u1f88\u1f89\u1f8a\u1f8b\u1f8c\u1f8d\u1f8e\u1f8f\u1f90\u1f91\u1f92\u1f93\u1f94\u1f95\u1f96\u1f97\u1f98\u1f99\u1f9a\u1f9b\u1f9c\u1f9d\u1f9e\u1f9f\u1fa0\u1fa1\u1fa2\u1fa3\u1fa4\u1fa5\u1fa6\u1fa7\u1fa8\u1fa9\u1faa\u1fab\u1fac\u1fad\u1fae\u1faf\u1fb0\u1fb1\u1fb2\u1fb3\u1fb4\u1fb6\u1fb7\u1fb8\u1fb9\u1fba\u1fbb\u1fbc\u1fbe\u1fc2\u1fc3\u1fc4\u1fc6\u1fc7\u1fc8\u1fc9\u1fca\u1fcb\u1fcc\u1fd0\u1fd1\u1fd2\u1fd3\u1fd6\u1fd7\u1fd8\u1fd9\u1fda\u1fdb\u1fe0\u1fe1\u1fe2\u1fe3\u1fe4\u1fe5\u1fe6\u1fe7\u1fe8\u1fe9\u1fea\u1feb\u1fec\u1ff2\u1ff3\u1ff4\u1ff6\u1ff7\u1ff8\u1ff9\u1ffa\u1ffb\u1ffc\u203f\u2040\u2054\u2071\u207f\u2090\u2091\u2092\u2093\u2094\u2095\u2096\u2097\u2098\u2099\u209a\u209b\u209c\u20d0\u20d1\u20d2\u20d3\u20d4\u20d5\u20d6\u20d7\u20d8\u20d9\u20da\u20db\u20dc\u20e1\u20e5\u20e6\u20e7\u20e8\u20e9\u20ea\u20eb\u20ec\u20ed\u20ee\u20ef\u20f0\u2102\u2107\u210a\u210b\u210c\u210d\u210e\u210f\u2110\u2111\u2112\u2113\u2115\u2118\u2119\u211a\u211b\u211c\u211d\u2124\u2126\u2128\u212a\u212b\u212c\u212d\u212e\u212f\u2130\u2131\u2132\u2133\u2134\u2135\u2136\u2137\u2138\u2139\u213c\u213d\u213e\u213f\u2145\u2146\u2147\u2148\u2149\u214e\u2160\u2164\u2169\u216c\u216d\u216e\u216f\u2170\u2174\u2179\u217c\u217d\u217e\u217f\u2180\u2181\u2182\u2183\u2184\u2185\u2186\u2187\u2188\u2c00\u2c01\u2c02\u2c03\u2c04\u2c05\u2c06\u2c07\u2c08\u2c09\u2c0a\u2c0b\u2c0c\u2c0d\u2c0e\u2c0f\u2c10\u2c11\u2c12\u2c13\u2c14\u2c15\u2c16\u2c17\u2c18\u2c19\u2c1a\u2c1b\u2c1c\u2c1d\u2c1e\u2c1f\u2c20\u2c21\u2c22\u2c23\u2c24\u2c25\u2c26\u2c27\u2c28\u2c29\u2c2a\u2c2b\u2c2c\u2c2d\u2c2e\u2c30\u2c31\u2c32\u2c33\u2c34\u2c35\u2c36\u2c37\u2c38\u2c39\u2c3a\u2c3b\u2c3c\u2c3d\u2c3e\u2c3f\u2c40\u2c41\u2c42\u2c43\u2c44\u2c45\u2c46\u2c47\u2c48\u2c49\u2c4a\u2c4b\u2c4c\u2c4d\u2c4e\u2c4f\u2c50\u2c51\u2c52\u2c53\u2c54\u2c55\u2c56\u2c57\u2c58\u2c59\u2c5a\u2c5b\u2c5c\u2c5d\u2c5e\u2c60\u2c61\u2c62\u2c63\u2c64\u2c65\u2c66\u2c67\u2c68\u2c69\u2c6a\u2c6b\u2c6c\u2c6d\u2c6e\u2c6f\u2c70\u2c71\u2c72\u2c73\u2c74\u2c75\u2c76\u2c77\u2c78\u2c79\u2c7a\u2c7b\u2c7c\u2c7d\u2c7e\u2c7f\u2c80\u2c81\u2c82\u2c83\u2c84\u2c85\u2c86\u2c87\u2c88\u2c89\u2c8a\u2c8b\u2c8c\u2c8d\u2c8e\u2c8f\u2c90\u2c91\u2c92\u2c93\u2c94\u2c95\u2c96\u2c97\u2c98\u2c99\u2c9a\u2c9b\u2c9c\u2c9d\u2c9e\u2c9f\u2ca0\u2ca1\u2ca2\u2ca3\u2ca4\u2ca5\u2ca6\u2ca7\u2ca8\u2ca9\u2caa\u2cab\u2cac\u2cad\u2cae\u2caf\u2cb0\u2cb1\u2cb2\u2cb3\u2cb4\u2cb5\u2cb6\u2cb7\u2cb8\u2cb9\u2cba\u2cbb\u2cbc\u2cbd\u2cbe\u2cbf\u2cc0\u2cc1\u2cc2\u2cc3\u2cc4\u2cc5\u2cc6\u2cc7\u2cc8\u2cc9\u2cca\u2ccb\u2ccc\u2ccd\u2cce\u2ccf\u2cd0\u2cd1\u2cd2\u2cd3\u2cd4\u2cd5\u2cd6\u2cd7\u2cd8\u2cd9\u2cda\u2cdb\u2cdc\u2cdd\u2cde\u2cdf\u2ce0\u2ce1\u2ce2\u2ce3\u2ce4\u2ceb\u2cec\u2ced\u2cee\u2cef\u2cf0\u2cf1\u2cf2\u2cf3\u2d00\u2d01\u2d02\u2d03\u2d04\u2d05\u2d06\u2d07\u2d08\u2d09\u2d0a\u2d0b\u2d0c\u2d0d\u2d0e\u2d0f\u2d10\u2d11\u2d12\u2d13\u2d14\u2d15\u2d16\u2d17\u2d18\u2d19\u2d1a\u2d1b\u2d1c\u2d1d\u2d1e\u2d1f\u2d20\u2d21\u2d22\u2d23\u2d24\u2d25\u2d27\u2d2d\u2d30\u2d31\u2d32\u2d33\u2d34\u2d35\u2d36\u2d37\u2d38\u2d39\u2d3a\u2d3b\u2d3c\u2d3d\u2d3e\u2d3f\u2d40\u2d41\u2d42\u2d43\u2d44\u2d45\u2d46\u2d47\u2d48\u2d49\u2d4a\u2d4b\u2d4c\u2d4d\u2d4e\u2d4f\u2d50\u2d51\u2d52\u2d53\u2d54\u2d55\u2d56\u2d57\u2d58\u2d59\u2d5a\u2d5b\u2d5c\u2d5d\u2d5e\u2d5f\u2d60\u2d61\u2d62\u2d63\u2d64\u2d65\u2d66\u2d67\u2d6f\u2d7f\u2d80\u2d81\u2d82\u2d83\u2d84\u2d85\u2d86\u2d87\u2d88\u2d89\u2d8a\u2d8b\u2d8c\u2d8d\u2d8e\u2d8f\u2d90\u2d91\u2d92\u2d93\u2d94\u2d95\u2d96\u2da0\u2da1\u2da2\u2da3\u2da4\u2da5\u2da6\u2da8\u2da9\u2daa\u2dab\u2dac\u2dad\u2dae\u2db0\u2db1\u2db2\u2db3\u2db4\u2db5\u2db6\u2db8\u2db9\u2dba\u2dbb\u2dbc\u2dbd\u2dbe\u2dc0\u2dc1\u2dc2\u2dc3\u2dc4\u2dc5\u2dc6\u2dc8\u2dc9\u2dca\u2dcb\u2dcc\u2dcd\u2dce\u2dd0\u2dd1\u2dd2\u2dd3\u2dd4\u2dd5\u2dd6\u2dd8\u2dd9\u2dda\u2ddb\u2ddc\u2ddd\u2dde\u2de0\u2de1\u2de2\u2de3\u2de4\u2de5\u2de6\u2de7\u2de8\u2de9\u2dea\u2deb\u2dec\u2ded\u2dee\u2def\u2df0\u2df1\u2df2\u2df3\u2df4\u2df5\u2df6\u2df7\u2df8\u2df9\u2dfa\u2dfb\u2dfc\u2dfd\u2dfe\u2dff\u2e2f\u3005\u3006\u3007\u3021\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u302a\u302b\u302c\u302d\u302e\u302f\u3031\u3032\u3033\u3034\u3035\u3038\u3039\u303a\u303b\u303c\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304a\u304b\u304c\u304d\u304e\u304f\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305a\u305b\u305c\u305d\u305e\u305f\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306a\u306b\u306c\u306d\u306e\u306f\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307a\u307b\u307c\u307d\u307e\u307f\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308a\u308b\u308c\u308d\u308e\u308f\u3090\u3091\u3092\u3093\u3094\u3095\u3096\u3099\u309a\u309d\u309e\u30a1\u30a2\u30a3\u30a4\u30a5\u30a6\u30a7\u30a8\u30a9\u30aa\u30ab\u30ac\u30ad\u30ae\u30af\u30b0\u30b1\u30b2\u30b3\u30b4\u30b5\u30b6\u30b7\u30b8\u30b9\u30ba\u30bb\u30bc\u30bd\u30be\u30bf\u30c0\u30c1\u30c2\u30c3\u30c4\u30c5\u30c6\u30c7\u30c8\u30c9\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d0\u30d1\u30d2\u30d3\u30d4\u30d5\u30d6\u30d7\u30d8\u30d9\u30da\u30db\u30dc\u30dd\u30de\u30df\u30e0\u30e1\u30e2\u30e3\u30e4\u30e5\u30e6\u30e7\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ee\u30ef\u30f0\u30f1\u30f2\u30f3\u30f4\u30f5\u30f6\u30f7\u30f8\u30f9\u30fa\u30fc\u30fd\u30fe\u3105\u3106\u3107\u3108\u3109\u310a\u310b\u310c\u310d\u310e\u310f\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119\u311a\u311b\u311c\u311d\u311e\u311f\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129\u312a\u312b\u312c\u312d\u3131\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139\u313a\u313b\u313c\u313d\u313e\u313f\u3140\u3141\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149\u314a\u314b\u314c\u314d\u314e\u314f\u3150\u3151\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159\u315a\u315b\u315c\u315d\u315e\u315f\u3160\u3161\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169\u316a\u316b\u316c\u316d\u316e\u316f\u3170\u3171\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179\u317a\u317b\u317c\u317d\u317e\u317f\u3180\u3181\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189\u318a\u318b\u318c\u318d\u318e\u31a0\u31a1\u31a2\u31a3\u31a4\u31a5\u31a6\u31a7\u31a8\u31a9\u31aa\u31ab\u31ac\u31ad\u31ae\u31af\u31b0\u31b1\u31b2\u31b3\u31b4\u31b5\u31b6\u31b7\u31b8\u31b9\u31ba\u31f0\u31f1\u31f2\u31f3\u31f4\u31f5\u31f6\u31f7\u31f8\u31f9\u31fa\u31fb\u31fc\u31fd\u31fe\u31ff\u3400\u3401\u3402\u3403\u3404\u3405\u3406\u3407\u3408\u3409\u340a\u340b\u340c\u340d\u340e\u340f\u3410\u3411\u3412\u3413\u3414\u3415\u3416\u3417\u3418\u3419\u341a\u341b\u341c\u341d\u341e\u341f\u3420\u3421\u3422\u3423\u3424\u3425\u3426\u3427\u3428\u3429\u342a\u342b\u342c\u342d\u342e\u342f\u3430\u3431\u3432\u3433\u3434\u3435\u3436\u3437\u3438\u3439\u343a\u343b\u343c\u343d\u343e\u343f\u3440\u3441\u3442\u3443\u3444\u3445\u3446\u3447\u3448\u3449\u344a\u344b\u344c\u344d\u344e\u344f\u3450\u3451\u3452\u3453\u3454\u3455\u3456\u3457\u3458\u3459\u345a\u345b\u345c\u345d\u345e\u345f\u3460\u3461\u3462\u3463\u3464\u3465\u3466\u3467\u3468\u3469\u346a\u346b\u346c\u346d\u346e\u346f\u3470\u3471\u3472\u3473\u3474\u3475\u3476\u3477\u3478\u3479\u347a\u347b\u347c\u347d\u347e\u347f\u3480\u3481\u3482\u3483\u3484\u3485\u3486\u3487\u3488\u3489\u348a\u348b\u348c\u348d\u348e\u348f\u3490\u3491\u3492\u3493\u3494\u3495\u3496\u3497\u3498\u3499\u349a\u349b\u349c\u349d\u349e\u349f\u34a0\u34a1\u34a2\u34a3\u34a4\u34a5\u34a6\u34a7\u34a8\u34a9\u34aa\u34ab\u34ac\u34ad\u34ae\u34af\u34b0\u34b1\u34b2\u34b3\u34b4\u34b5\u34b6\u34b7\u34b8\u34b9\u34ba\u34bb\u34bc\u34bd\u34be\u34bf\u34c0\u34c1\u34c2\u34c3\u34c4\u34c5\u34c6\u34c7\u34c8\u34c9\u34ca\u34cb\u34cc\u34cd\u34ce\u34cf\u34d0\u34d1\u34d2\u34d3\u34d4\u34d5\u34d6\u34d7\u34d8\u34d9\u34da\u34db\u34dc\u34dd\u34de\u34df\u34e0\u34e1\u34e2\u34e3\u34e4\u34e5\u34e6\u34e7\u34e8\u34e9\u34ea\u34eb\u34ec\u34ed\u34ee\u34ef\u34f0\u34f1\u34f2\u34f3\u34f4\u34f5\u34f6\u34f7\u34f8\u34f9\u34fa\u34fb\u34fc\u34fd\u34fe\u34ff\u3500\u3501\u3502\u3503\u3504\u3505\u3506\u3507\u3508\u3509\u350a\u350b\u350c\u350d\u350e\u350f\u3510\u3511\u3512\u3513\u3514\u3515\u3516\u3517\u3518\u3519\u351a\u351b\u351c\u351d\u351e\u351f\u3520\u3521\u3522\u3523\u3524\u3525\u3526\u3527\u3528\u3529\u352a\u352b\u352c\u352d\u352e\u352f\u3530\u3531\u3532\u3533\u3534\u3535\u3536\u3537\u3538\u3539\u353a\u353b\u353c\u353d\u353e\u353f\u3540\u3541\u3542\u3543\u3544\u3545\u3546\u3547\u3548\u3549\u354a\u354b\u354c\u354d\u354e\u354f\u3550\u3551\u3552\u3553\u3554\u3555\u3556\u3557\u3558\u3559\u355a\u355b\u355c\u355d\u355e\u355f\u3560\u3561\u3562\u3563\u3564\u3565\u3566\u3567\u3568\u3569\u356a\u356b\u356c\u356d\u356e\u356f\u3570\u3571\u3572\u3573\u3574\u3575\u3576\u3577\u3578\u3579\u357a\u357b\u357c\u357d\u357e\u357f\u3580\u3581\u3582\u3583\u3584\u3585\u3586\u3587\u3588\u3589\u358a\u358b\u358c\u358d\u358e\u358f\u3590\u3591\u3592\u3593\u3594\u3595\u3596\u3597\u3598\u3599\u359a\u359b\u359c\u359d\u359e\u359f\u35a0\u35a1\u35a2\u35a3\u35a4\u35a5\u35a6\u35a7\u35a8\u35a9\u35aa\u35ab\u35ac\u35ad\u35ae\u35af\u35b0\u35b1\u35b2\u35b3\u35b4\u35b5\u35b6\u35b7\u35b8\u35b9\u35ba\u35bb\u35bc\u35bd\u35be\u35bf\u35c0\u35c1\u35c2\u35c3\u35c4\u35c5\u35c6\u35c7\u35c8\u35c9\u35ca\u35cb\u35cc\u35cd\u35ce\u35cf\u35d0\u35d1\u35d2\u35d3\u35d4\u35d5\u35d6\u35d7\u35d8\u35d9\u35da\u35db\u35dc\u35dd\u35de\u35df\u35e0\u35e1\u35e2\u35e3\u35e4\u35e5\u35e6\u35e7\u35e8\u35e9\u35ea\u35eb\u35ec\u35ed\u35ee\u35ef\u35f0\u35f1\u35f2\u35f3\u35f4\u35f5\u35f6\u35f7\u35f8\u35f9\u35fa\u35fb\u35fc\u35fd\u35fe\u35ff\u3600\u3601\u3602\u3603\u3604\u3605\u3606\u3607\u3608\u3609\u360a\u360b\u360c\u360d\u360e\u360f\u3610\u3611\u3612\u3613\u3614\u3615\u3616\u3617\u3618\u3619\u361a\u361b\u361c\u361d\u361e\u361f\u3620\u3621\u3622\u3623\u3624\u3625\u3626\u3627\u3628\u3629\u362a\u362b\u362c\u362d\u362e\u362f\u3630\u3631\u3632\u3633\u3634\u3635\u3636\u3637\u3638\u3639\u363a\u363b\u363c\u363d\u363e\u363f\u3640\u3641\u3642\u3643\u3644\u3645\u3646\u3647\u3648\u3649\u364a\u364b\u364c\u364d\u364e\u364f\u3650\u3651\u3652\u3653\u3654\u3655\u3656\u3657\u3658\u3659\u365a\u365b\u365c\u365d\u365e\u365f\u3660\u3661\u3662\u3663\u3664\u3665\u3666\u3667\u3668\u3669\u366a\u366b\u366c\u366d\u366e\u366f\u3670\u3671\u3672\u3673\u3674\u3675\u3676\u3677\u3678\u3679\u367a\u367b\u367c\u367d\u367e\u367f\u3680\u3681\u3682\u3683\u3684\u3685\u3686\u3687\u3688\u3689\u368a\u368b\u368c\u368d\u368e\u368f\u3690\u3691\u3692\u3693\u3694\u3695\u3696\u3697\u3698\u3699\u369a\u369b\u369c\u369d\u369e\u369f\u36a0\u36a1\u36a2\u36a3\u36a4\u36a5\u36a6\u36a7\u36a8\u36a9\u36aa\u36ab\u36ac\u36ad\u36ae\u36af\u36b0\u36b1\u36b2\u36b3\u36b4\u36b5\u36b6\u36b7\u36b8\u36b9\u36ba\u36bb\u36bc\u36bd\u36be\u36bf\u36c0\u36c1\u36c2\u36c3\u36c4\u36c5\u36c6\u36c7\u36c8\u36c9\u36ca\u36cb\u36cc\u36cd\u36ce\u36cf\u36d0\u36d1\u36d2\u36d3\u36d4\u36d5\u36d6\u36d7\u36d8\u36d9\u36da\u36db\u36dc\u36dd\u36de\u36df\u36e0\u36e1\u36e2\u36e3\u36e4\u36e5\u36e6\u36e7\u36e8\u36e9\u36ea\u36eb\u36ec\u36ed\u36ee\u36ef\u36f0\u36f1\u36f2\u36f3\u36f4\u36f5\u36f6\u36f7\u36f8\u36f9\u36fa\u36fb\u36fc\u36fd\u36fe\u36ff\u3700\u3701\u3702\u3703\u3704\u3705\u3706\u3707\u3708\u3709\u370a\u370b\u370c\u370d\u370e\u370f\u3710\u3711\u3712\u3713\u3714\u3715\u3716\u3717\u3718\u3719\u371a\u371b\u371c\u371d\u371e\u371f\u3720\u3721\u3722\u3723\u3724\u3725\u3726\u3727\u3728\u3729\u372a\u372b\u372c\u372d\u372e\u372f\u3730\u3731\u3732\u3733\u3734\u3735\u3736\u3737\u3738\u3739\u373a\u373b\u373c\u373d\u373e\u373f\u3740\u3741\u3742\u3743\u3744\u3745\u3746\u3747\u3748\u3749\u374a\u374b\u374c\u374d\u374e\u374f\u3750\u3751\u3752\u3753\u3754\u3755\u3756\u3757\u3758\u3759\u375a\u375b\u375c\u375d\u375e\u375f\u3760\u3761\u3762\u3763\u3764\u3765\u3766\u3767\u3768\u3769\u376a\u376b\u376c\u376d\u376e\u376f\u3770\u3771\u3772\u3773\u3774\u3775\u3776\u3777\u3778\u3779\u377a\u377b\u377c\u377d\u377e\u377f\u3780\u3781\u3782\u3783\u3784\u3785\u3786\u3787\u3788\u3789\u378a\u378b\u378c\u378d\u378e\u378f\u3790\u3791\u3792\u3793\u3794\u3795\u3796\u3797\u3798\u3799\u379a\u379b\u379c\u379d\u379e\u379f\u37a0\u37a1\u37a2\u37a3\u37a4\u37a5\u37a6\u37a7\u37a8\u37a9\u37aa\u37ab\u37ac\u37ad\u37ae\u37af\u37b0\u37b1\u37b2\u37b3\u37b4\u37b5\u37b6\u37b7\u37b8\u37b9\u37ba\u37bb\u37bc\u37bd\u37be\u37bf\u37c0\u37c1\u37c2\u37c3\u37c4\u37c5\u37c6\u37c7\u37c8\u37c9\u37ca\u37cb\u37cc\u37cd\u37ce\u37cf\u37d0\u37d1\u37d2\u37d3\u37d4\u37d5\u37d6\u37d7\u37d8\u37d9\u37da\u37db\u37dc\u37dd\u37de\u37df\u37e0\u37e1\u37e2\u37e3\u37e4\u37e5\u37e6\u37e7\u37e8\u37e9\u37ea\u37eb\u37ec\u37ed\u37ee\u37ef\u37f0\u37f1\u37f2\u37f3\u37f4\u37f5\u37f6\u37f7\u37f8\u37f9\u37fa\u37fb\u37fc\u37fd\u37fe\u37ff\u3800\u3801\u3802\u3803\u3804\u3805\u3806\u3807\u3808\u3809\u380a\u380b\u380c\u380d\u380e\u380f\u3810\u3811\u3812\u3813\u3814\u3815\u3816\u3817\u3818\u3819\u381a\u381b\u381c\u381d\u381e\u381f\u3820\u3821\u3822\u3823\u3824\u3825\u3826\u3827\u3828\u3829\u382a\u382b\u382c\u382d\u382e\u382f\u3830\u3831\u3832\u3833\u3834\u3835\u3836\u3837\u3838\u3839\u383a\u383b\u383c\u383d\u383e\u383f\u3840\u3841\u3842\u3843\u3844\u3845\u3846\u3847\u3848\u3849\u384a\u384b\u384c\u384d\u384e\u384f\u3850\u3851\u3852\u3853\u3854\u3855\u3856\u3857\u3858\u3859\u385a\u385b\u385c\u385d\u385e\u385f\u3860\u3861\u3862\u3863\u3864\u3865\u3866\u3867\u3868\u3869\u386a\u386b\u386c\u386d\u386e\u386f\u3870\u3871\u3872\u3873\u3874\u3875\u3876\u3877\u3878\u3879\u387a\u387b\u387c\u387d\u387e\u387f\u3880\u3881\u3882\u3883\u3884\u3885\u3886\u3887\u3888\u3889\u388a\u388b\u388c\u388d\u388e\u388f\u3890\u3891\u3892\u3893\u3894\u3895\u3896\u3897\u3898\u3899\u389a\u389b\u389c\u389d\u389e\u389f\u38a0\u38a1\u38a2\u38a3\u38a4\u38a5\u38a6\u38a7\u38a8\u38a9\u38aa\u38ab\u38ac\u38ad\u38ae\u38af\u38b0\u38b1\u38b2\u38b3\u38b4\u38b5\u38b6\u38b7\u38b8\u38b9\u38ba\u38bb\u38bc\u38bd\u38be\u38bf\u38c0\u38c1\u38c2\u38c3\u38c4\u38c5\u38c6\u38c7\u38c8\u38c9\u38ca\u38cb\u38cc\u38cd\u38ce\u38cf\u38d0\u38d1\u38d2\u38d3\u38d4\u38d5\u38d6\u38d7\u38d8\u38d9\u38da\u38db\u38dc\u38dd\u38de\u38df\u38e0\u38e1\u38e2\u38e3\u38e4\u38e5\u38e6\u38e7\u38e8\u38e9\u38ea\u38eb\u38ec\u38ed\u38ee\u38ef\u38f0\u38f1\u38f2\u38f3\u38f4\u38f5\u38f6\u38f7\u38f8\u38f9\u38fa\u38fb\u38fc\u38fd\u38fe\u38ff\u3900\u3901\u3902\u3903\u3904\u3905\u3906\u3907\u3908\u3909\u390a\u390b\u390c\u390d\u390e\u390f\u3910\u3911\u3912\u3913\u3914\u3915\u3916\u3917\u3918\u3919\u391a\u391b\u391c\u391d\u391e\u391f\u3920\u3921\u3922\u3923\u3924\u3925\u3926\u3927\u3928\u3929\u392a\u392b\u392c\u392d\u392e\u392f\u3930\u3931\u3932\u3933\u3934\u3935\u3936\u3937\u3938\u3939\u393a\u393b\u393c\u393d\u393e\u393f\u3940\u3941\u3942\u3943\u3944\u3945\u3946\u3947\u3948\u3949\u394a\u394b\u394c\u394d\u394e\u394f\u3950\u3951\u3952\u3953\u3954\u3955\u3956\u3957\u3958\u3959\u395a\u395b\u395c\u395d\u395e\u395f\u3960\u3961\u3962\u3963\u3964\u3965\u3966\u3967\u3968\u3969\u396a\u396b\u396c\u396d\u396e\u396f\u3970\u3971\u3972\u3973\u3974\u3975\u3976\u3977\u3978\u3979\u397a\u397b\u397c\u397d\u397e\u397f\u3980\u3981\u3982\u3983\u3984\u3985\u3986\u3987\u3988\u3989\u398a\u398b\u398c\u398d\u398e\u398f\u3990\u3991\u3992\u3993\u3994\u3995\u3996\u3997\u3998\u3999\u399a\u399b\u399c\u399d\u399e\u399f\u39a0\u39a1\u39a2\u39a3\u39a4\u39a5\u39a6\u39a7\u39a8\u39a9\u39aa\u39ab\u39ac\u39ad\u39ae\u39af\u39b0\u39b1\u39b2\u39b3\u39b4\u39b5\u39b6\u39b7\u39b8\u39b9\u39ba\u39bb\u39bc\u39bd\u39be\u39bf\u39c0\u39c1\u39c2\u39c3\u39c4\u39c5\u39c6\u39c7\u39c8\u39c9\u39ca\u39cb\u39cc\u39cd\u39ce\u39cf\u39d0\u39d1\u39d2\u39d3\u39d4\u39d5\u39d6\u39d7\u39d8\u39d9\u39da\u39db\u39dc\u39dd\u39de\u39df\u39e0\u39e1\u39e2\u39e3\u39e4\u39e5\u39e6\u39e7\u39e8\u39e9\u39ea\u39eb\u39ec\u39ed\u39ee\u39ef\u39f0\u39f1\u39f2\u39f3\u39f4\u39f5\u39f6\u39f7\u39f8\u39f9\u39fa\u39fb\u39fc\u39fd\u39fe\u39ff\u3a00\u3a01\u3a02\u3a03\u3a04\u3a05\u3a06\u3a07\u3a08\u3a09\u3a0a\u3a0b\u3a0c\u3a0d\u3a0e\u3a0f\u3a10\u3a11\u3a12\u3a13\u3a14\u3a15\u3a16\u3a17\u3a18\u3a19\u3a1a\u3a1b\u3a1c\u3a1d\u3a1e\u3a1f\u3a20\u3a21\u3a22\u3a23\u3a24\u3a25\u3a26\u3a27\u3a28\u3a29\u3a2a\u3a2b\u3a2c\u3a2d\u3a2e\u3a2f\u3a30\u3a31\u3a32\u3a33\u3a34\u3a35\u3a36\u3a37\u3a38\u3a39\u3a3a\u3a3b\u3a3c\u3a3d\u3a3e\u3a3f\u3a40\u3a41\u3a42\u3a43\u3a44\u3a45\u3a46\u3a47\u3a48\u3a49\u3a4a\u3a4b\u3a4c\u3a4d\u3a4e\u3a4f\u3a50\u3a51\u3a52\u3a53\u3a54\u3a55\u3a56\u3a57\u3a58\u3a59\u3a5a\u3a5b\u3a5c\u3a5d\u3a5e\u3a5f\u3a60\u3a61\u3a62\u3a63\u3a64\u3a65\u3a66\u3a67\u3a68\u3a69\u3a6a\u3a6b\u3a6c\u3a6d\u3a6e\u3a6f\u3a70\u3a71\u3a72\u3a73\u3a74\u3a75\u3a76\u3a77\u3a78\u3a79\u3a7a\u3a7b\u3a7c\u3a7d\u3a7e\u3a7f\u3a80\u3a81\u3a82\u3a83\u3a84\u3a85\u3a86\u3a87\u3a88\u3a89\u3a8a\u3a8b\u3a8c\u3a8d\u3a8e\u3a8f\u3a90\u3a91\u3a92\u3a93\u3a94\u3a95\u3a96\u3a97\u3a98\u3a99\u3a9a\u3a9b\u3a9c\u3a9d\u3a9e\u3a9f\u3aa0\u3aa1\u3aa2\u3aa3\u3aa4\u3aa5\u3aa6\u3aa7\u3aa8\u3aa9\u3aaa\u3aab\u3aac\u3aad\u3aae\u3aaf\u3ab0\u3ab1\u3ab2\u3ab3\u3ab4\u3ab5\u3ab6\u3ab7\u3ab8\u3ab9\u3aba\u3abb\u3abc\u3abd\u3abe\u3abf\u3ac0\u3ac1\u3ac2\u3ac3\u3ac4\u3ac5\u3ac6\u3ac7\u3ac8\u3ac9\u3aca\u3acb\u3acc\u3acd\u3ace\u3acf\u3ad0\u3ad1\u3ad2\u3ad3\u3ad4\u3ad5\u3ad6\u3ad7\u3ad8\u3ad9\u3ada\u3adb\u3adc\u3add\u3ade\u3adf\u3ae0\u3ae1\u3ae2\u3ae3\u3ae4\u3ae5\u3ae6\u3ae7\u3ae8\u3ae9\u3aea\u3aeb\u3aec\u3aed\u3aee\u3aef\u3af0\u3af1\u3af2\u3af3\u3af4\u3af5\u3af6\u3af7\u3af8\u3af9\u3afa\u3afb\u3afc\u3afd\u3afe\u3aff\u3b00\u3b01\u3b02\u3b03\u3b04\u3b05\u3b06\u3b07\u3b08\u3b09\u3b0a\u3b0b\u3b0c\u3b0d\u3b0e\u3b0f\u3b10\u3b11\u3b12\u3b13\u3b14\u3b15\u3b16\u3b17\u3b18\u3b19\u3b1a\u3b1b\u3b1c\u3b1d\u3b1e\u3b1f\u3b20\u3b21\u3b22\u3b23\u3b24\u3b25\u3b26\u3b27\u3b28\u3b29\u3b2a\u3b2b\u3b2c\u3b2d\u3b2e\u3b2f\u3b30\u3b31\u3b32\u3b33\u3b34\u3b35\u3b36\u3b37\u3b38\u3b39\u3b3a\u3b3b\u3b3c\u3b3d\u3b3e\u3b3f\u3b40\u3b41\u3b42\u3b43\u3b44\u3b45\u3b46\u3b47\u3b48\u3b49\u3b4a\u3b4b\u3b4c\u3b4d\u3b4e\u3b4f\u3b50\u3b51\u3b52\u3b53\u3b54\u3b55\u3b56\u3b57\u3b58\u3b59\u3b5a\u3b5b\u3b5c\u3b5d\u3b5e\u3b5f\u3b60\u3b61\u3b62\u3b63\u3b64\u3b65\u3b66\u3b67\u3b68\u3b69\u3b6a\u3b6b\u3b6c\u3b6d\u3b6e\u3b6f\u3b70\u3b71\u3b72\u3b73\u3b74\u3b75\u3b76\u3b77\u3b78\u3b79\u3b7a\u3b7b\u3b7c\u3b7d\u3b7e\u3b7f\u3b80\u3b81\u3b82\u3b83\u3b84\u3b85\u3b86\u3b87\u3b88\u3b89\u3b8a\u3b8b\u3b8c\u3b8d\u3b8e\u3b8f\u3b90\u3b91\u3b92\u3b93\u3b94\u3b95\u3b96\u3b97\u3b98\u3b99\u3b9a\u3b9b\u3b9c\u3b9d\u3b9e\u3b9f\u3ba0\u3ba1\u3ba2\u3ba3\u3ba4\u3ba5\u3ba6\u3ba7\u3ba8\u3ba9\u3baa\u3bab\u3bac\u3bad\u3bae\u3baf\u3bb0\u3bb1\u3bb2\u3bb3\u3bb4\u3bb5\u3bb6\u3bb7\u3bb8\u3bb9\u3bba\u3bbb\u3bbc\u3bbd\u3bbe\u3bbf\u3bc0\u3bc1\u3bc2\u3bc3\u3bc4\u3bc5\u3bc6\u3bc7\u3bc8\u3bc9\u3bca\u3bcb\u3bcc\u3bcd\u3bce\u3bcf\u3bd0\u3bd1\u3bd2\u3bd3\u3bd4\u3bd5\u3bd6\u3bd7\u3bd8\u3bd9\u3bda\u3bdb\u3bdc\u3bdd\u3bde\u3bdf\u3be0\u3be1\u3be2\u3be3\u3be4\u3be5\u3be6\u3be7\u3be8\u3be9\u3bea\u3beb\u3bec\u3bed\u3bee\u3bef\u3bf0\u3bf1\u3bf2\u3bf3\u3bf4\u3bf5\u3bf6\u3bf7\u3bf8\u3bf9\u3bfa\u3bfb\u3bfc\u3bfd\u3bfe\u3bff\u3c00\u3c01\u3c02\u3c03\u3c04\u3c05\u3c06\u3c07\u3c08\u3c09\u3c0a\u3c0b\u3c0c\u3c0d\u3c0e\u3c0f\u3c10\u3c11\u3c12\u3c13\u3c14\u3c15\u3c16\u3c17\u3c18\u3c19\u3c1a\u3c1b\u3c1c\u3c1d\u3c1e\u3c1f\u3c20\u3c21\u3c22\u3c23\u3c24\u3c25\u3c26\u3c27\u3c28\u3c29\u3c2a\u3c2b\u3c2c\u3c2d\u3c2e\u3c2f\u3c30\u3c31\u3c32\u3c33\u3c34\u3c35\u3c36\u3c37\u3c38\u3c39\u3c3a\u3c3b\u3c3c\u3c3d\u3c3e\u3c3f\u3c40\u3c41\u3c42\u3c43\u3c44\u3c45\u3c46\u3c47\u3c48\u3c49\u3c4a\u3c4b\u3c4c\u3c4d\u3c4e\u3c4f\u3c50\u3c51\u3c52\u3c53\u3c54\u3c55\u3c56\u3c57\u3c58\u3c59\u3c5a\u3c5b\u3c5c\u3c5d\u3c5e\u3c5f\u3c60\u3c61\u3c62\u3c63\u3c64\u3c65\u3c66\u3c67\u3c68\u3c69\u3c6a\u3c6b\u3c6c\u3c6d\u3c6e\u3c6f\u3c70\u3c71\u3c72\u3c73\u3c74\u3c75\u3c76\u3c77\u3c78\u3c79\u3c7a\u3c7b\u3c7c\u3c7d\u3c7e\u3c7f\u3c80\u3c81\u3c82\u3c83\u3c84\u3c85\u3c86\u3c87\u3c88\u3c89\u3c8a\u3c8b\u3c8c\u3c8d\u3c8e\u3c8f\u3c90\u3c91\u3c92\u3c93\u3c94\u3c95\u3c96\u3c97\u3c98\u3c99\u3c9a\u3c9b\u3c9c\u3c9d\u3c9e\u3c9f\u3ca0\u3ca1\u3ca2\u3ca3\u3ca4\u3ca5\u3ca6\u3ca7\u3ca8\u3ca9\u3caa\u3cab\u3cac\u3cad\u3cae\u3caf\u3cb0\u3cb1\u3cb2\u3cb3\u3cb4\u3cb5\u3cb6\u3cb7\u3cb8\u3cb9\u3cba\u3cbb\u3cbc\u3cbd\u3cbe\u3cbf\u3cc0\u3cc1\u3cc2\u3cc3\u3cc4\u3cc5\u3cc6\u3cc7\u3cc8\u3cc9\u3cca\u3ccb\u3ccc\u3ccd\u3cce\u3ccf\u3cd0\u3cd1\u3cd2\u3cd3\u3cd4\u3cd5\u3cd6\u3cd7\u3cd8\u3cd9\u3cda\u3cdb\u3cdc\u3cdd\u3cde\u3cdf\u3ce0\u3ce1\u3ce2\u3ce3\u3ce4\u3ce5\u3ce6\u3ce7\u3ce8\u3ce9\u3cea\u3ceb\u3cec\u3ced\u3cee\u3cef\u3cf0\u3cf1\u3cf2\u3cf3\u3cf4\u3cf5\u3cf6\u3cf7\u3cf8\u3cf9\u3cfa\u3cfb\u3cfc\u3cfd\u3cfe\u3cff\u3d00\u3d01\u3d02\u3d03\u3d04\u3d05\u3d06\u3d07\u3d08\u3d09\u3d0a\u3d0b\u3d0c\u3d0d\u3d0e\u3d0f\u3d10\u3d11\u3d12\u3d13\u3d14\u3d15\u3d16\u3d17\u3d18\u3d19\u3d1a\u3d1b\u3d1c\u3d1d\u3d1e\u3d1f\u3d20\u3d21\u3d22\u3d23\u3d24\u3d25\u3d26\u3d27\u3d28\u3d29\u3d2a\u3d2b\u3d2c\u3d2d\u3d2e\u3d2f\u3d30\u3d31\u3d32\u3d33\u3d34\u3d35\u3d36\u3d37\u3d38\u3d39\u3d3a\u3d3b\u3d3c\u3d3d\u3d3e\u3d3f\u3d40\u3d41\u3d42\u3d43\u3d44\u3d45\u3d46\u3d47\u3d48\u3d49\u3d4a\u3d4b\u3d4c\u3d4d\u3d4e\u3d4f\u3d50\u3d51\u3d52\u3d53\u3d54\u3d55\u3d56\u3d57\u3d58\u3d59\u3d5a\u3d5b\u3d5c\u3d5d\u3d5e\u3d5f\u3d60\u3d61\u3d62\u3d63\u3d64\u3d65\u3d66\u3d67\u3d68\u3d69\u3d6a\u3d6b\u3d6c\u3d6d\u3d6e\u3d6f\u3d70\u3d71\u3d72\u3d73\u3d74\u3d75\u3d76\u3d77\u3d78\u3d79\u3d7a\u3d7b\u3d7c\u3d7d\u3d7e\u3d7f\u3d80\u3d81\u3d82\u3d83\u3d84\u3d85\u3d86\u3d87\u3d88\u3d89\u3d8a\u3d8b\u3d8c\u3d8d\u3d8e\u3d8f\u3d90\u3d91\u3d92\u3d93\u3d94\u3d95\u3d96\u3d97\u3d98\u3d99\u3d9a\u3d9b\u3d9c\u3d9d\u3d9e\u3d9f\u3da0\u3da1\u3da2\u3da3\u3da4\u3da5\u3da6\u3da7\u3da8\u3da9\u3daa\u3dab\u3dac\u3dad\u3dae\u3daf\u3db0\u3db1\u3db2\u3db3\u3db4\u3db5\u3db6\u3db7\u3db8\u3db9\u3dba\u3dbb\u3dbc\u3dbd\u3dbe\u3dbf\u3dc0\u3dc1\u3dc2\u3dc3\u3dc4\u3dc5\u3dc6\u3dc7\u3dc8\u3dc9\u3dca\u3dcb\u3dcc\u3dcd\u3dce\u3dcf\u3dd0\u3dd1\u3dd2\u3dd3\u3dd4\u3dd5\u3dd6\u3dd7\u3dd8\u3dd9\u3dda\u3ddb\u3ddc\u3ddd\u3dde\u3ddf\u3de0\u3de1\u3de2\u3de3\u3de4\u3de5\u3de6\u3de7\u3de8\u3de9\u3dea\u3deb\u3dec\u3ded\u3dee\u3def\u3df0\u3df1\u3df2\u3df3\u3df4\u3df5\u3df6\u3df7\u3df8\u3df9\u3dfa\u3dfb\u3dfc\u3dfd\u3dfe\u3dff\u3e00\u3e01\u3e02\u3e03\u3e04\u3e05\u3e06\u3e07\u3e08\u3e09\u3e0a\u3e0b\u3e0c\u3e0d\u3e0e\u3e0f\u3e10\u3e11\u3e12\u3e13\u3e14\u3e15\u3e16\u3e17\u3e18\u3e19\u3e1a\u3e1b\u3e1c\u3e1d\u3e1e\u3e1f\u3e20\u3e21\u3e22\u3e23\u3e24\u3e25\u3e26\u3e27\u3e28\u3e29\u3e2a\u3e2b\u3e2c\u3e2d\u3e2e\u3e2f\u3e30\u3e31\u3e32\u3e33\u3e34\u3e35\u3e36\u3e37\u3e38\u3e39\u3e3a\u3e3b\u3e3c\u3e3d\u3e3e\u3e3f\u3e40\u3e41\u3e42\u3e43\u3e44\u3e45\u3e46\u3e47\u3e48\u3e49\u3e4a\u3e4b\u3e4c\u3e4d\u3e4e\u3e4f\u3e50\u3e51\u3e52\u3e53\u3e54\u3e55\u3e56\u3e57\u3e58\u3e59\u3e5a\u3e5b\u3e5c\u3e5d\u3e5e\u3e5f\u3e60\u3e61\u3e62\u3e63\u3e64\u3e65\u3e66\u3e67\u3e68\u3e69\u3e6a\u3e6b\u3e6c\u3e6d\u3e6e\u3e6f\u3e70\u3e71\u3e72\u3e73\u3e74\u3e75\u3e76\u3e77\u3e78\u3e79\u3e7a\u3e7b\u3e7c\u3e7d\u3e7e\u3e7f\u3e80\u3e81\u3e82\u3e83\u3e84\u3e85\u3e86\u3e87\u3e88\u3e89\u3e8a\u3e8b\u3e8c\u3e8d\u3e8e\u3e8f\u3e90\u3e91\u3e92\u3e93\u3e94\u3e95\u3e96\u3e97\u3e98\u3e99\u3e9a\u3e9b\u3e9c\u3e9d\u3e9e\u3e9f\u3ea0\u3ea1\u3ea2\u3ea3\u3ea4\u3ea5\u3ea6\u3ea7\u3ea8\u3ea9\u3eaa\u3eab\u3eac\u3ead\u3eae\u3eaf\u3eb0\u3eb1\u3eb2\u3eb3\u3eb4\u3eb5\u3eb6\u3eb7\u3eb8\u3eb9\u3eba\u3ebb\u3ebc\u3ebd\u3ebe\u3ebf\u3ec0\u3ec1\u3ec2\u3ec3\u3ec4\u3ec5\u3ec6\u3ec7\u3ec8\u3ec9\u3eca\u3ecb\u3ecc\u3ecd\u3ece\u3ecf\u3ed0\u3ed1\u3ed2\u3ed3\u3ed4\u3ed5\u3ed6\u3ed7\u3ed8\u3ed9\u3eda\u3edb\u3edc\u3edd\u3ede\u3edf\u3ee0\u3ee1\u3ee2\u3ee3\u3ee4\u3ee5\u3ee6\u3ee7\u3ee8\u3ee9\u3eea\u3eeb\u3eec\u3eed\u3eee\u3eef\u3ef0\u3ef1\u3ef2\u3ef3\u3ef4\u3ef5\u3ef6\u3ef7\u3ef8\u3ef9\u3efa\u3efb\u3efc\u3efd\u3efe\u3eff\u3f00\u3f01\u3f02\u3f03\u3f04\u3f05\u3f06\u3f07\u3f08\u3f09\u3f0a\u3f0b\u3f0c\u3f0d\u3f0e\u3f0f\u3f10\u3f11\u3f12\u3f13\u3f14\u3f15\u3f16\u3f17\u3f18\u3f19\u3f1a\u3f1b\u3f1c\u3f1d\u3f1e\u3f1f\u3f20\u3f21\u3f22\u3f23\u3f24\u3f25\u3f26\u3f27\u3f28\u3f29\u3f2a\u3f2b\u3f2c\u3f2d\u3f2e\u3f2f\u3f30\u3f31\u3f32\u3f33\u3f34\u3f35\u3f36\u3f37\u3f38\u3f39\u3f3a\u3f3b\u3f3c\u3f3d\u3f3e\u3f3f\u3f40\u3f41\u3f42\u3f43\u3f44\u3f45\u3f46\u3f47\u3f48\u3f49\u3f4a\u3f4b\u3f4c\u3f4d\u3f4e\u3f4f\u3f50\u3f51\u3f52\u3f53\u3f54\u3f55\u3f56\u3f57\u3f58\u3f59\u3f5a\u3f5b\u3f5c\u3f5d\u3f5e\u3f5f\u3f60\u3f61\u3f62\u3f63\u3f64\u3f65\u3f66\u3f67\u3f68\u3f69\u3f6a\u3f6b\u3f6c\u3f6d\u3f6e\u3f6f\u3f70\u3f71\u3f72\u3f73\u3f74\u3f75\u3f76\u3f77\u3f78\u3f79\u3f7a\u3f7b\u3f7c\u3f7d\u3f7e\u3f7f\u3f80\u3f81\u3f82\u3f83\u3f84\u3f85\u3f86\u3f87\u3f88\u3f89\u3f8a\u3f8b\u3f8c\u3f8d\u3f8e\u3f8f\u3f90\u3f91\u3f92\u3f93\u3f94\u3f95\u3f96\u3f97\u3f98\u3f99\u3f9a\u3f9b\u3f9c\u3f9d\u3f9e\u3f9f\u3fa0\u3fa1\u3fa2\u3fa3\u3fa4\u3fa5\u3fa6\u3fa7\u3fa8\u3fa9\u3faa\u3fab\u3fac\u3fad\u3fae\u3faf\u3fb0\u3fb1\u3fb2\u3fb3\u3fb4\u3fb5\u3fb6\u3fb7\u3fb8\u3fb9\u3fba\u3fbb\u3fbc\u3fbd\u3fbe\u3fbf\u3fc0\u3fc1\u3fc2\u3fc3\u3fc4\u3fc5\u3fc6\u3fc7\u3fc8\u3fc9\u3fca\u3fcb\u3fcc\u3fcd\u3fce\u3fcf\u3fd0\u3fd1\u3fd2\u3fd3\u3fd4\u3fd5\u3fd6\u3fd7\u3fd8\u3fd9\u3fda\u3fdb\u3fdc\u3fdd\u3fde\u3fdf\u3fe0\u3fe1\u3fe2\u3fe3\u3fe4\u3fe5\u3fe6\u3fe7\u3fe8\u3fe9\u3fea\u3feb\u3fec\u3fed\u3fee\u3fef\u3ff0\u3ff1\u3ff2\u3ff3\u3ff4\u3ff5\u3ff6\u3ff7\u3ff8\u3ff9\u3ffa\u3ffb\u3ffc\u3ffd\u3ffe\u3fff\u4000\u4001\u4002\u4003\u4004\u4005\u4006\u4007\u4008\u4009\u400a\u400b\u400c\u400d\u400e\u400f\u4010\u4011\u4012\u4013\u4014\u4015\u4016\u4017\u4018\u4019\u401a\u401b\u401c\u401d\u401e\u401f\u4020\u4021\u4022\u4023\u4024\u4025\u4026\u4027\u4028\u4029\u402a\u402b\u402c\u402d\u402e\u402f\u4030\u4031\u4032\u4033\u4034\u4035\u4036\u4037\u4038\u4039\u403a\u403b\u403c\u403d\u403e\u403f\u4040\u4041\u4042\u4043\u4044\u4045\u4046\u4047\u4048\u4049\u404a\u404b\u404c\u404d\u404e\u404f\u4050\u4051\u4052\u4053\u4054\u4055\u4056\u4057\u4058\u4059\u405a\u405b\u405c\u405d\u405e\u405f\u4060\u4061\u4062\u4063\u4064\u4065\u4066\u4067\u4068\u4069\u406a\u406b\u406c\u406d\u406e\u406f\u4070\u4071\u4072\u4073\u4074\u4075\u4076\u4077\u4078\u4079\u407a\u407b\u407c\u407d\u407e\u407f\u4080\u4081\u4082\u4083\u4084\u4085\u4086\u4087\u4088\u4089\u408a\u408b\u408c\u408d\u408e\u408f\u4090\u4091\u4092\u4093\u4094\u4095\u4096\u4097\u4098\u4099\u409a\u409b\u409c\u409d\u409e\u409f\u40a0\u40a1\u40a2\u40a3\u40a4\u40a5\u40a6\u40a7\u40a8\u40a9\u40aa\u40ab\u40ac\u40ad\u40ae\u40af\u40b0\u40b1\u40b2\u40b3\u40b4\u40b5\u40b6\u40b7\u40b8\u40b9\u40ba\u40bb\u40bc\u40bd\u40be\u40bf\u40c0\u40c1\u40c2\u40c3\u40c4\u40c5\u40c6\u40c7\u40c8\u40c9\u40ca\u40cb\u40cc\u40cd\u40ce\u40cf\u40d0\u40d1\u40d2\u40d3\u40d4\u40d5\u40d6\u40d7\u40d8\u40d9\u40da\u40db\u40dc\u40dd\u40de\u40df\u40e0\u40e1\u40e2\u40e3\u40e4\u40e5\u40e6\u40e7\u40e8\u40e9\u40ea\u40eb\u40ec\u40ed\u40ee\u40ef\u40f0\u40f1\u40f2\u40f3\u40f4\u40f5\u40f6\u40f7\u40f8\u40f9\u40fa\u40fb\u40fc\u40fd\u40fe\u40ff\u4100\u4101\u4102\u4103\u4104\u4105\u4106\u4107\u4108\u4109\u410a\u410b\u410c\u410d\u410e\u410f\u4110\u4111\u4112\u4113\u4114\u4115\u4116\u4117\u4118\u4119\u411a\u411b\u411c\u411d\u411e\u411f\u4120\u4121\u4122\u4123\u4124\u4125\u4126\u4127\u4128\u4129\u412a\u412b\u412c\u412d\u412e\u412f\u4130\u4131\u4132\u4133\u4134\u4135\u4136\u4137\u4138\u4139\u413a\u413b\u413c\u413d\u413e\u413f\u4140\u4141\u4142\u4143\u4144\u4145\u4146\u4147\u4148\u4149\u414a\u414b\u414c\u414d\u414e\u414f\u4150\u4151\u4152\u4153\u4154\u4155\u4156\u4157\u4158\u4159\u415a\u415b\u415c\u415d\u415e\u415f\u4160\u4161\u4162\u4163\u4164\u4165\u4166\u4167\u4168\u4169\u416a\u416b\u416c\u416d\u416e\u416f\u4170\u4171\u4172\u4173\u4174\u4175\u4176\u4177\u4178\u4179\u417a\u417b\u417c\u417d\u417e\u417f\u4180\u4181\u4182\u4183\u4184\u4185\u4186\u4187\u4188\u4189\u418a\u418b\u418c\u418d\u418e\u418f\u4190\u4191\u4192\u4193\u4194\u4195\u4196\u4197\u4198\u4199\u419a\u419b\u419c\u419d\u419e\u419f\u41a0\u41a1\u41a2\u41a3\u41a4\u41a5\u41a6\u41a7\u41a8\u41a9\u41aa\u41ab\u41ac\u41ad\u41ae\u41af\u41b0\u41b1\u41b2\u41b3\u41b4\u41b5\u41b6\u41b7\u41b8\u41b9\u41ba\u41bb\u41bc\u41bd\u41be\u41bf\u41c0\u41c1\u41c2\u41c3\u41c4\u41c5\u41c6\u41c7\u41c8\u41c9\u41ca\u41cb\u41cc\u41cd\u41ce\u41cf\u41d0\u41d1\u41d2\u41d3\u41d4\u41d5\u41d6\u41d7\u41d8\u41d9\u41da\u41db\u41dc\u41dd\u41de\u41df\u41e0\u41e1\u41e2\u41e3\u41e4\u41e5\u41e6\u41e7\u41e8\u41e9\u41ea\u41eb\u41ec\u41ed\u41ee\u41ef\u41f0\u41f1\u41f2\u41f3\u41f4\u41f5\u41f6\u41f7\u41f8\u41f9\u41fa\u41fb\u41fc\u41fd\u41fe\u41ff\u4200\u4201\u4202\u4203\u4204\u4205\u4206\u4207\u4208\u4209\u420a\u420b\u420c\u420d\u420e\u420f\u4210\u4211\u4212\u4213\u4214\u4215\u4216\u4217\u4218\u4219\u421a\u421b\u421c\u421d\u421e\u421f\u4220\u4221\u4222\u4223\u4224\u4225\u4226\u4227\u4228\u4229\u422a\u422b\u422c\u422d\u422e\u422f\u4230\u4231\u4232\u4233\u4234\u4235\u4236\u4237\u4238\u4239\u423a\u423b\u423c\u423d\u423e\u423f\u4240\u4241\u4242\u4243\u4244\u4245\u4246\u4247\u4248\u4249\u424a\u424b\u424c\u424d\u424e\u424f\u4250\u4251\u4252\u4253\u4254\u4255\u4256\u4257\u4258\u4259\u425a\u425b\u425c\u425d\u425e\u425f\u4260\u4261\u4262\u4263\u4264\u4265\u4266\u4267\u4268\u4269\u426a\u426b\u426c\u426d\u426e\u426f\u4270\u4271\u4272\u4273\u4274\u4275\u4276\u4277\u4278\u4279\u427a\u427b\u427c\u427d\u427e\u427f\u4280\u4281\u4282\u4283\u4284\u4285\u4286\u4287\u4288\u4289\u428a\u428b\u428c\u428d\u428e\u428f\u4290\u4291\u4292\u4293\u4294\u4295\u4296\u4297\u4298\u4299\u429a\u429b\u429c\u429d\u429e\u429f\u42a0\u42a1\u42a2\u42a3\u42a4\u42a5\u42a6\u42a7\u42a8\u42a9\u42aa\u42ab\u42ac\u42ad\u42ae\u42af\u42b0\u42b1\u42b2\u42b3\u42b4\u42b5\u42b6\u42b7\u42b8\u42b9\u42ba\u42bb\u42bc\u42bd\u42be\u42bf\u42c0\u42c1\u42c2\u42c3\u42c4\u42c5\u42c6\u42c7\u42c8\u42c9\u42ca\u42cb\u42cc\u42cd\u42ce\u42cf\u42d0\u42d1\u42d2\u42d3\u42d4\u42d5\u42d6\u42d7\u42d8\u42d9\u42da\u42db\u42dc\u42dd\u42de\u42df\u42e0\u42e1\u42e2\u42e3\u42e4\u42e5\u42e6\u42e7\u42e8\u42e9\u42ea\u42eb\u42ec\u42ed\u42ee\u42ef\u42f0\u42f1\u42f2\u42f3\u42f4\u42f5\u42f6\u42f7\u42f8\u42f9\u42fa\u42fb\u42fc\u42fd\u42fe\u42ff\u4300\u4301\u4302\u4303\u4304\u4305\u4306\u4307\u4308\u4309\u430a\u430b\u430c\u430d\u430e\u430f\u4310\u4311\u4312\u4313\u4314\u4315\u4316\u4317\u4318\u4319\u431a\u431b\u431c\u431d\u431e\u431f\u4320\u4321\u4322\u4323\u4324\u4325\u4326\u4327\u4328\u4329\u432a\u432b\u432c\u432d\u432e\u432f\u4330\u4331\u4332\u4333\u4334\u4335\u4336\u4337\u4338\u4339\u433a\u433b\u433c\u433d\u433e\u433f\u4340\u4341\u4342\u4343\u4344\u4345\u4346\u4347\u4348\u4349\u434a\u434b\u434c\u434d\u434e\u434f\u4350\u4351\u4352\u4353\u4354\u4355\u4356\u4357\u4358\u4359\u435a\u435b\u435c\u435d\u435e\u435f\u4360\u4361\u4362\u4363\u4364\u4365\u4366\u4367\u4368\u4369\u436a\u436b\u436c\u436d\u436e\u436f\u4370\u4371\u4372\u4373\u4374\u4375\u4376\u4377\u4378\u4379\u437a\u437b\u437c\u437d\u437e\u437f\u4380\u4381\u4382\u4383\u4384\u4385\u4386\u4387\u4388\u4389\u438a\u438b\u438c\u438d\u438e\u438f\u4390\u4391\u4392\u4393\u4394\u4395\u4396\u4397\u4398\u4399\u439a\u439b\u439c\u439d\u439e\u439f\u43a0\u43a1\u43a2\u43a3\u43a4\u43a5\u43a6\u43a7\u43a8\u43a9\u43aa\u43ab\u43ac\u43ad\u43ae\u43af\u43b0\u43b1\u43b2\u43b3\u43b4\u43b5\u43b6\u43b7\u43b8\u43b9\u43ba\u43bb\u43bc\u43bd\u43be\u43bf\u43c0\u43c1\u43c2\u43c3\u43c4\u43c5\u43c6\u43c7\u43c8\u43c9\u43ca\u43cb\u43cc\u43cd\u43ce\u43cf\u43d0\u43d1\u43d2\u43d3\u43d4\u43d5\u43d6\u43d7\u43d8\u43d9\u43da\u43db\u43dc\u43dd\u43de\u43df\u43e0\u43e1\u43e2\u43e3\u43e4\u43e5\u43e6\u43e7\u43e8\u43e9\u43ea\u43eb\u43ec\u43ed\u43ee\u43ef\u43f0\u43f1\u43f2\u43f3\u43f4\u43f5\u43f6\u43f7\u43f8\u43f9\u43fa\u43fb\u43fc\u43fd\u43fe\u43ff\u4400\u4401\u4402\u4403\u4404\u4405\u4406\u4407\u4408\u4409\u440a\u440b\u440c\u440d\u440e\u440f\u4410\u4411\u4412\u4413\u4414\u4415\u4416\u4417\u4418\u4419\u441a\u441b\u441c\u441d\u441e\u441f\u4420\u4421\u4422\u4423\u4424\u4425\u4426\u4427\u4428\u4429\u442a\u442b\u442c\u442d\u442e\u442f\u4430\u4431\u4432\u4433\u4434\u4435\u4436\u4437\u4438\u4439\u443a\u443b\u443c\u443d\u443e\u443f\u4440\u4441\u4442\u4443\u4444\u4445\u4446\u4447\u4448\u4449\u444a\u444b\u444c\u444d\u444e\u444f\u4450\u4451\u4452\u4453\u4454\u4455\u4456\u4457\u4458\u4459\u445a\u445b\u445c\u445d\u445e\u445f\u4460\u4461\u4462\u4463\u4464\u4465\u4466\u4467\u4468\u4469\u446a\u446b\u446c\u446d\u446e\u446f\u4470\u4471\u4472\u4473\u4474\u4475\u4476\u4477\u4478\u4479\u447a\u447b\u447c\u447d\u447e\u447f\u4480\u4481\u4482\u4483\u4484\u4485\u4486\u4487\u4488\u4489\u448a\u448b\u448c\u448d\u448e\u448f\u4490\u4491\u4492\u4493\u4494\u4495\u4496\u4497\u4498\u4499\u449a\u449b\u449c\u449d\u449e\u449f\u44a0\u44a1\u44a2\u44a3\u44a4\u44a5\u44a6\u44a7\u44a8\u44a9\u44aa\u44ab\u44ac\u44ad\u44ae\u44af\u44b0\u44b1\u44b2\u44b3\u44b4\u44b5\u44b6\u44b7\u44b8\u44b9\u44ba\u44bb\u44bc\u44bd\u44be\u44bf\u44c0\u44c1\u44c2\u44c3\u44c4\u44c5\u44c6\u44c7\u44c8\u44c9\u44ca\u44cb\u44cc\u44cd\u44ce\u44cf\u44d0\u44d1\u44d2\u44d3\u44d4\u44d5\u44d6\u44d7\u44d8\u44d9\u44da\u44db\u44dc\u44dd\u44de\u44df\u44e0\u44e1\u44e2\u44e3\u44e4\u44e5\u44e6\u44e7\u44e8\u44e9\u44ea\u44eb\u44ec\u44ed\u44ee\u44ef\u44f0\u44f1\u44f2\u44f3\u44f4\u44f5\u44f6\u44f7\u44f8\u44f9\u44fa\u44fb\u44fc\u44fd\u44fe\u44ff\u4500\u4501\u4502\u4503\u4504\u4505\u4506\u4507\u4508\u4509\u450a\u450b\u450c\u450d\u450e\u450f\u4510\u4511\u4512\u4513\u4514\u4515\u4516\u4517\u4518\u4519\u451a\u451b\u451c\u451d\u451e\u451f\u4520\u4521\u4522\u4523\u4524\u4525\u4526\u4527\u4528\u4529\u452a\u452b\u452c\u452d\u452e\u452f\u4530\u4531\u4532\u4533\u4534\u4535\u4536\u4537\u4538\u4539\u453a\u453b\u453c\u453d\u453e\u453f\u4540\u4541\u4542\u4543\u4544\u4545\u4546\u4547\u4548\u4549\u454a\u454b\u454c\u454d\u454e\u454f\u4550\u4551\u4552\u4553\u4554\u4555\u4556\u4557\u4558\u4559\u455a\u455b\u455c\u455d\u455e\u455f\u4560\u4561\u4562\u4563\u4564\u4565\u4566\u4567\u4568\u4569\u456a\u456b\u456c\u456d\u456e\u456f\u4570\u4571\u4572\u4573\u4574\u4575\u4576\u4577\u4578\u4579\u457a\u457b\u457c\u457d\u457e\u457f\u4580\u4581\u4582\u4583\u4584\u4585\u4586\u4587\u4588\u4589\u458a\u458b\u458c\u458d\u458e\u458f\u4590\u4591\u4592\u4593\u4594\u4595\u4596\u4597\u4598\u4599\u459a\u459b\u459c\u459d\u459e\u459f\u45a0\u45a1\u45a2\u45a3\u45a4\u45a5\u45a6\u45a7\u45a8\u45a9\u45aa\u45ab\u45ac\u45ad\u45ae\u45af\u45b0\u45b1\u45b2\u45b3\u45b4\u45b5\u45b6\u45b7\u45b8\u45b9\u45ba\u45bb\u45bc\u45bd\u45be\u45bf\u45c0\u45c1\u45c2\u45c3\u45c4\u45c5\u45c6\u45c7\u45c8\u45c9\u45ca\u45cb\u45cc\u45cd\u45ce\u45cf\u45d0\u45d1\u45d2\u45d3\u45d4\u45d5\u45d6\u45d7\u45d8\u45d9\u45da\u45db\u45dc\u45dd\u45de\u45df\u45e0\u45e1\u45e2\u45e3\u45e4\u45e5\u45e6\u45e7\u45e8\u45e9\u45ea\u45eb\u45ec\u45ed\u45ee\u45ef\u45f0\u45f1\u45f2\u45f3\u45f4\u45f5\u45f6\u45f7\u45f8\u45f9\u45fa\u45fb\u45fc\u45fd\u45fe\u45ff\u4600\u4601\u4602\u4603\u4604\u4605\u4606\u4607\u4608\u4609\u460a\u460b\u460c\u460d\u460e\u460f\u4610\u4611\u4612\u4613\u4614\u4615\u4616\u4617\u4618\u4619\u461a\u461b\u461c\u461d\u461e\u461f\u4620\u4621\u4622\u4623\u4624\u4625\u4626\u4627\u4628\u4629\u462a\u462b\u462c\u462d\u462e\u462f\u4630\u4631\u4632\u4633\u4634\u4635\u4636\u4637\u4638\u4639\u463a\u463b\u463c\u463d\u463e\u463f\u4640\u4641\u4642\u4643\u4644\u4645\u4646\u4647\u4648\u4649\u464a\u464b\u464c\u464d\u464e\u464f\u4650\u4651\u4652\u4653\u4654\u4655\u4656\u4657\u4658\u4659\u465a\u465b\u465c\u465d\u465e\u465f\u4660\u4661\u4662\u4663\u4664\u4665\u4666\u4667\u4668\u4669\u466a\u466b\u466c\u466d\u466e\u466f\u4670\u4671\u4672\u4673\u4674\u4675\u4676\u4677\u4678\u4679\u467a\u467b\u467c\u467d\u467e\u467f\u4680\u4681\u4682\u4683\u4684\u4685\u4686\u4687\u4688\u4689\u468a\u468b\u468c\u468d\u468e\u468f\u4690\u4691\u4692\u4693\u4694\u4695\u4696\u4697\u4698\u4699\u469a\u469b\u469c\u469d\u469e\u469f\u46a0\u46a1\u46a2\u46a3\u46a4\u46a5\u46a6\u46a7\u46a8\u46a9\u46aa\u46ab\u46ac\u46ad\u46ae\u46af\u46b0\u46b1\u46b2\u46b3\u46b4\u46b5\u46b6\u46b7\u46b8\u46b9\u46ba\u46bb\u46bc\u46bd\u46be\u46bf\u46c0\u46c1\u46c2\u46c3\u46c4\u46c5\u46c6\u46c7\u46c8\u46c9\u46ca\u46cb\u46cc\u46cd\u46ce\u46cf\u46d0\u46d1\u46d2\u46d3\u46d4\u46d5\u46d6\u46d7\u46d8\u46d9\u46da\u46db\u46dc\u46dd\u46de\u46df\u46e0\u46e1\u46e2\u46e3\u46e4\u46e5\u46e6\u46e7\u46e8\u46e9\u46ea\u46eb\u46ec\u46ed\u46ee\u46ef\u46f0\u46f1\u46f2\u46f3\u46f4\u46f5\u46f6\u46f7\u46f8\u46f9\u46fa\u46fb\u46fc\u46fd\u46fe\u46ff\u4700\u4701\u4702\u4703\u4704\u4705\u4706\u4707\u4708\u4709\u470a\u470b\u470c\u470d\u470e\u470f\u4710\u4711\u4712\u4713\u4714\u4715\u4716\u4717\u4718\u4719\u471a\u471b\u471c\u471d\u471e\u471f\u4720\u4721\u4722\u4723\u4724\u4725\u4726\u4727\u4728\u4729\u472a\u472b\u472c\u472d\u472e\u472f\u4730\u4731\u4732\u4733\u4734\u4735\u4736\u4737\u4738\u4739\u473a\u473b\u473c\u473d\u473e\u473f\u4740\u4741\u4742\u4743\u4744\u4745\u4746\u4747\u4748\u4749\u474a\u474b\u474c\u474d\u474e\u474f\u4750\u4751\u4752\u4753\u4754\u4755\u4756\u4757\u4758\u4759\u475a\u475b\u475c\u475d\u475e\u475f\u4760\u4761\u4762\u4763\u4764\u4765\u4766\u4767\u4768\u4769\u476a\u476b\u476c\u476d\u476e\u476f\u4770\u4771\u4772\u4773\u4774\u4775\u4776\u4777\u4778\u4779\u477a\u477b\u477c\u477d\u477e\u477f\u4780\u4781\u4782\u4783\u4784\u4785\u4786\u4787\u4788\u4789\u478a\u478b\u478c\u478d\u478e\u478f\u4790\u4791\u4792\u4793\u4794\u4795\u4796\u4797\u4798\u4799\u479a\u479b\u479c\u479d\u479e\u479f\u47a0\u47a1\u47a2\u47a3\u47a4\u47a5\u47a6\u47a7\u47a8\u47a9\u47aa\u47ab\u47ac\u47ad\u47ae\u47af\u47b0\u47b1\u47b2\u47b3\u47b4\u47b5\u47b6\u47b7\u47b8\u47b9\u47ba\u47bb\u47bc\u47bd\u47be\u47bf\u47c0\u47c1\u47c2\u47c3\u47c4\u47c5\u47c6\u47c7\u47c8\u47c9\u47ca\u47cb\u47cc\u47cd\u47ce\u47cf\u47d0\u47d1\u47d2\u47d3\u47d4\u47d5\u47d6\u47d7\u47d8\u47d9\u47da\u47db\u47dc\u47dd\u47de\u47df\u47e0\u47e1\u47e2\u47e3\u47e4\u47e5\u47e6\u47e7\u47e8\u47e9\u47ea\u47eb\u47ec\u47ed\u47ee\u47ef\u47f0\u47f1\u47f2\u47f3\u47f4\u47f5\u47f6\u47f7\u47f8\u47f9\u47fa\u47fb\u47fc\u47fd\u47fe\u47ff\u4800\u4801\u4802\u4803\u4804\u4805\u4806\u4807\u4808\u4809\u480a\u480b\u480c\u480d\u480e\u480f\u4810\u4811\u4812\u4813\u4814\u4815\u4816\u4817\u4818\u4819\u481a\u481b\u481c\u481d\u481e\u481f\u4820\u4821\u4822\u4823\u4824\u4825\u4826\u4827\u4828\u4829\u482a\u482b\u482c\u482d\u482e\u482f\u4830\u4831\u4832\u4833\u4834\u4835\u4836\u4837\u4838\u4839\u483a\u483b\u483c\u483d\u483e\u483f\u4840\u4841\u4842\u4843\u4844\u4845\u4846\u4847\u4848\u4849\u484a\u484b\u484c\u484d\u484e\u484f\u4850\u4851\u4852\u4853\u4854\u4855\u4856\u4857\u4858\u4859\u485a\u485b\u485c\u485d\u485e\u485f\u4860\u4861\u4862\u4863\u4864\u4865\u4866\u4867\u4868\u4869\u486a\u486b\u486c\u486d\u486e\u486f\u4870\u4871\u4872\u4873\u4874\u4875\u4876\u4877\u4878\u4879\u487a\u487b\u487c\u487d\u487e\u487f\u4880\u4881\u4882\u4883\u4884\u4885\u4886\u4887\u4888\u4889\u488a\u488b\u488c\u488d\u488e\u488f\u4890\u4891\u4892\u4893\u4894\u4895\u4896\u4897\u4898\u4899\u489a\u489b\u489c\u489d\u489e\u489f\u48a0\u48a1\u48a2\u48a3\u48a4\u48a5\u48a6\u48a7\u48a8\u48a9\u48aa\u48ab\u48ac\u48ad\u48ae\u48af\u48b0\u48b1\u48b2\u48b3\u48b4\u48b5\u48b6\u48b7\u48b8\u48b9\u48ba\u48bb\u48bc\u48bd\u48be\u48bf\u48c0\u48c1\u48c2\u48c3\u48c4\u48c5\u48c6\u48c7\u48c8\u48c9\u48ca\u48cb\u48cc\u48cd\u48ce\u48cf\u48d0\u48d1\u48d2\u48d3\u48d4\u48d5\u48d6\u48d7\u48d8\u48d9\u48da\u48db\u48dc\u48dd\u48de\u48df\u48e0\u48e1\u48e2\u48e3\u48e4\u48e5\u48e6\u48e7\u48e8\u48e9\u48ea\u48eb\u48ec\u48ed\u48ee\u48ef\u48f0\u48f1\u48f2\u48f3\u48f4\u48f5\u48f6\u48f7\u48f8\u48f9\u48fa\u48fb\u48fc\u48fd\u48fe\u48ff\u4900\u4901\u4902\u4903\u4904\u4905\u4906\u4907\u4908\u4909\u490a\u490b\u490c\u490d\u490e\u490f\u4910\u4911\u4912\u4913\u4914\u4915\u4916\u4917\u4918\u4919\u491a\u491b\u491c\u491d\u491e\u491f\u4920\u4921\u4922\u4923\u4924\u4925\u4926\u4927\u4928\u4929\u492a\u492b\u492c\u492d\u492e\u492f\u4930\u4931\u4932\u4933\u4934\u4935\u4936\u4937\u4938\u4939\u493a\u493b\u493c\u493d\u493e\u493f\u4940\u4941\u4942\u4943\u4944\u4945\u4946\u4947\u4948\u4949\u494a\u494b\u494c\u494d\u494e\u494f\u4950\u4951\u4952\u4953\u4954\u4955\u4956\u4957\u4958\u4959\u495a\u495b\u495c\u495d\u495e\u495f\u4960\u4961\u4962\u4963\u4964\u4965\u4966\u4967\u4968\u4969\u496a\u496b\u496c\u496d\u496e\u496f\u4970\u4971\u4972\u4973\u4974\u4975\u4976\u4977\u4978\u4979\u497a\u497b\u497c\u497d\u497e\u497f\u4980\u4981\u4982\u4983\u4984\u4985\u4986\u4987\u4988\u4989\u498a\u498b\u498c\u498d\u498e\u498f\u4990\u4991\u4992\u4993\u4994\u4995\u4996\u4997\u4998\u4999\u499a\u499b\u499c\u499d\u499e\u499f\u49a0\u49a1\u49a2\u49a3\u49a4\u49a5\u49a6\u49a7\u49a8\u49a9\u49aa\u49ab\u49ac\u49ad\u49ae\u49af\u49b0\u49b1\u49b2\u49b3\u49b4\u49b5\u49b6\u49b7\u49b8\u49b9\u49ba\u49bb\u49bc\u49bd\u49be\u49bf\u49c0\u49c1\u49c2\u49c3\u49c4\u49c5\u49c6\u49c7\u49c8\u49c9\u49ca\u49cb\u49cc\u49cd\u49ce\u49cf\u49d0\u49d1\u49d2\u49d3\u49d4\u49d5\u49d6\u49d7\u49d8\u49d9\u49da\u49db\u49dc\u49dd\u49de\u49df\u49e0\u49e1\u49e2\u49e3\u49e4\u49e5\u49e6\u49e7\u49e8\u49e9\u49ea\u49eb\u49ec\u49ed\u49ee\u49ef\u49f0\u49f1\u49f2\u49f3\u49f4\u49f5\u49f6\u49f7\u49f8\u49f9\u49fa\u49fb\u49fc\u49fd\u49fe\u49ff\u4a00\u4a01\u4a02\u4a03\u4a04\u4a05\u4a06\u4a07\u4a08\u4a09\u4a0a\u4a0b\u4a0c\u4a0d\u4a0e\u4a0f\u4a10\u4a11\u4a12\u4a13\u4a14\u4a15\u4a16\u4a17\u4a18\u4a19\u4a1a\u4a1b\u4a1c\u4a1d\u4a1e\u4a1f\u4a20\u4a21\u4a22\u4a23\u4a24\u4a25\u4a26\u4a27\u4a28\u4a29\u4a2a\u4a2b\u4a2c\u4a2d\u4a2e\u4a2f\u4a30\u4a31\u4a32\u4a33\u4a34\u4a35\u4a36\u4a37\u4a38\u4a39\u4a3a\u4a3b\u4a3c\u4a3d\u4a3e\u4a3f\u4a40\u4a41\u4a42\u4a43\u4a44\u4a45\u4a46\u4a47\u4a48\u4a49\u4a4a\u4a4b\u4a4c\u4a4d\u4a4e\u4a4f\u4a50\u4a51\u4a52\u4a53\u4a54\u4a55\u4a56\u4a57\u4a58\u4a59\u4a5a\u4a5b\u4a5c\u4a5d\u4a5e\u4a5f\u4a60\u4a61\u4a62\u4a63\u4a64\u4a65\u4a66\u4a67\u4a68\u4a69\u4a6a\u4a6b\u4a6c\u4a6d\u4a6e\u4a6f\u4a70\u4a71\u4a72\u4a73\u4a74\u4a75\u4a76\u4a77\u4a78\u4a79\u4a7a\u4a7b\u4a7c\u4a7d\u4a7e\u4a7f\u4a80\u4a81\u4a82\u4a83\u4a84\u4a85\u4a86\u4a87\u4a88\u4a89\u4a8a\u4a8b\u4a8c\u4a8d\u4a8e\u4a8f\u4a90\u4a91\u4a92\u4a93\u4a94\u4a95\u4a96\u4a97\u4a98\u4a99\u4a9a\u4a9b\u4a9c\u4a9d\u4a9e\u4a9f\u4aa0\u4aa1\u4aa2\u4aa3\u4aa4\u4aa5\u4aa6\u4aa7\u4aa8\u4aa9\u4aaa\u4aab\u4aac\u4aad\u4aae\u4aaf\u4ab0\u4ab1\u4ab2\u4ab3\u4ab4\u4ab5\u4ab6\u4ab7\u4ab8\u4ab9\u4aba\u4abb\u4abc\u4abd\u4abe\u4abf\u4ac0\u4ac1\u4ac2\u4ac3\u4ac4\u4ac5\u4ac6\u4ac7\u4ac8\u4ac9\u4aca\u4acb\u4acc\u4acd\u4ace\u4acf\u4ad0\u4ad1\u4ad2\u4ad3\u4ad4\u4ad5\u4ad6\u4ad7\u4ad8\u4ad9\u4ada\u4adb\u4adc\u4add\u4ade\u4adf\u4ae0\u4ae1\u4ae2\u4ae3\u4ae4\u4ae5\u4ae6\u4ae7\u4ae8\u4ae9\u4aea\u4aeb\u4aec\u4aed\u4aee\u4aef\u4af0\u4af1\u4af2\u4af3\u4af4\u4af5\u4af6\u4af7\u4af8\u4af9\u4afa\u4afb\u4afc\u4afd\u4afe\u4aff\u4b00\u4b01\u4b02\u4b03\u4b04\u4b05\u4b06\u4b07\u4b08\u4b09\u4b0a\u4b0b\u4b0c\u4b0d\u4b0e\u4b0f\u4b10\u4b11\u4b12\u4b13\u4b14\u4b15\u4b16\u4b17\u4b18\u4b19\u4b1a\u4b1b\u4b1c\u4b1d\u4b1e\u4b1f\u4b20\u4b21\u4b22\u4b23\u4b24\u4b25\u4b26\u4b27\u4b28\u4b29\u4b2a\u4b2b\u4b2c\u4b2d\u4b2e\u4b2f\u4b30\u4b31\u4b32\u4b33\u4b34\u4b35\u4b36\u4b37\u4b38\u4b39\u4b3a\u4b3b\u4b3c\u4b3d\u4b3e\u4b3f\u4b40\u4b41\u4b42\u4b43\u4b44\u4b45\u4b46\u4b47\u4b48\u4b49\u4b4a\u4b4b\u4b4c\u4b4d\u4b4e\u4b4f\u4b50\u4b51\u4b52\u4b53\u4b54\u4b55\u4b56\u4b57\u4b58\u4b59\u4b5a\u4b5b\u4b5c\u4b5d\u4b5e\u4b5f\u4b60\u4b61\u4b62\u4b63\u4b64\u4b65\u4b66\u4b67\u4b68\u4b69\u4b6a\u4b6b\u4b6c\u4b6d\u4b6e\u4b6f\u4b70\u4b71\u4b72\u4b73\u4b74\u4b75\u4b76\u4b77\u4b78\u4b79\u4b7a\u4b7b\u4b7c\u4b7d\u4b7e\u4b7f\u4b80\u4b81\u4b82\u4b83\u4b84\u4b85\u4b86\u4b87\u4b88\u4b89\u4b8a\u4b8b\u4b8c\u4b8d\u4b8e\u4b8f\u4b90\u4b91\u4b92\u4b93\u4b94\u4b95\u4b96\u4b97\u4b98\u4b99\u4b9a\u4b9b\u4b9c\u4b9d\u4b9e\u4b9f\u4ba0\u4ba1\u4ba2\u4ba3\u4ba4\u4ba5\u4ba6\u4ba7\u4ba8\u4ba9\u4baa\u4bab\u4bac\u4bad\u4bae\u4baf\u4bb0\u4bb1\u4bb2\u4bb3\u4bb4\u4bb5\u4bb6\u4bb7\u4bb8\u4bb9\u4bba\u4bbb\u4bbc\u4bbd\u4bbe\u4bbf\u4bc0\u4bc1\u4bc2\u4bc3\u4bc4\u4bc5\u4bc6\u4bc7\u4bc8\u4bc9\u4bca\u4bcb\u4bcc\u4bcd\u4bce\u4bcf\u4bd0\u4bd1\u4bd2\u4bd3\u4bd4\u4bd5\u4bd6\u4bd7\u4bd8\u4bd9\u4bda\u4bdb\u4bdc\u4bdd\u4bde\u4bdf\u4be0\u4be1\u4be2\u4be3\u4be4\u4be5\u4be6\u4be7\u4be8\u4be9\u4bea\u4beb\u4bec\u4bed\u4bee\u4bef\u4bf0\u4bf1\u4bf2\u4bf3\u4bf4\u4bf5\u4bf6\u4bf7\u4bf8\u4bf9\u4bfa\u4bfb\u4bfc\u4bfd\u4bfe\u4bff\u4c00\u4c01\u4c02\u4c03\u4c04\u4c05\u4c06\u4c07\u4c08\u4c09\u4c0a\u4c0b\u4c0c\u4c0d\u4c0e\u4c0f\u4c10\u4c11\u4c12\u4c13\u4c14\u4c15\u4c16\u4c17\u4c18\u4c19\u4c1a\u4c1b\u4c1c\u4c1d\u4c1e\u4c1f\u4c20\u4c21\u4c22\u4c23\u4c24\u4c25\u4c26\u4c27\u4c28\u4c29\u4c2a\u4c2b\u4c2c\u4c2d\u4c2e\u4c2f\u4c30\u4c31\u4c32\u4c33\u4c34\u4c35\u4c36\u4c37\u4c38\u4c39\u4c3a\u4c3b\u4c3c\u4c3d\u4c3e\u4c3f\u4c40\u4c41\u4c42\u4c43\u4c44\u4c45\u4c46\u4c47\u4c48\u4c49\u4c4a\u4c4b\u4c4c\u4c4d\u4c4e\u4c4f\u4c50\u4c51\u4c52\u4c53\u4c54\u4c55\u4c56\u4c57\u4c58\u4c59\u4c5a\u4c5b\u4c5c\u4c5d\u4c5e\u4c5f\u4c60\u4c61\u4c62\u4c63\u4c64\u4c65\u4c66\u4c67\u4c68\u4c69\u4c6a\u4c6b\u4c6c\u4c6d\u4c6e\u4c6f\u4c70\u4c71\u4c72\u4c73\u4c74\u4c75\u4c76\u4c77\u4c78\u4c79\u4c7a\u4c7b\u4c7c\u4c7d\u4c7e\u4c7f\u4c80\u4c81\u4c82\u4c83\u4c84\u4c85\u4c86\u4c87\u4c88\u4c89\u4c8a\u4c8b\u4c8c\u4c8d\u4c8e\u4c8f\u4c90\u4c91\u4c92\u4c93\u4c94\u4c95\u4c96\u4c97\u4c98\u4c99\u4c9a\u4c9b\u4c9c\u4c9d\u4c9e\u4c9f\u4ca0\u4ca1\u4ca2\u4ca3\u4ca4\u4ca5\u4ca6\u4ca7\u4ca8\u4ca9\u4caa\u4cab\u4cac\u4cad\u4cae\u4caf\u4cb0\u4cb1\u4cb2\u4cb3\u4cb4\u4cb5\u4cb6\u4cb7\u4cb8\u4cb9\u4cba\u4cbb\u4cbc\u4cbd\u4cbe\u4cbf\u4cc0\u4cc1\u4cc2\u4cc3\u4cc4\u4cc5\u4cc6\u4cc7\u4cc8\u4cc9\u4cca\u4ccb\u4ccc\u4ccd\u4cce\u4ccf\u4cd0\u4cd1\u4cd2\u4cd3\u4cd4\u4cd5\u4cd6\u4cd7\u4cd8\u4cd9\u4cda\u4cdb\u4cdc\u4cdd\u4cde\u4cdf\u4ce0\u4ce1\u4ce2\u4ce3\u4ce4\u4ce5\u4ce6\u4ce7\u4ce8\u4ce9\u4cea\u4ceb\u4cec\u4ced\u4cee\u4cef\u4cf0\u4cf1\u4cf2\u4cf3\u4cf4\u4cf5\u4cf6\u4cf7\u4cf8\u4cf9\u4cfa\u4cfb\u4cfc\u4cfd\u4cfe\u4cff\u4d00\u4d01\u4d02\u4d03\u4d04\u4d05\u4d06\u4d07\u4d08\u4d09\u4d0a\u4d0b\u4d0c\u4d0d\u4d0e\u4d0f\u4d10\u4d11\u4d12\u4d13\u4d14\u4d15\u4d16\u4d17\u4d18\u4d19\u4d1a\u4d1b\u4d1c\u4d1d\u4d1e\u4d1f\u4d20\u4d21\u4d22\u4d23\u4d24\u4d25\u4d26\u4d27\u4d28\u4d29\u4d2a\u4d2b\u4d2c\u4d2d\u4d2e\u4d2f\u4d30\u4d31\u4d32\u4d33\u4d34\u4d35\u4d36\u4d37\u4d38\u4d39\u4d3a\u4d3b\u4d3c\u4d3d\u4d3e\u4d3f\u4d40\u4d41\u4d42\u4d43\u4d44\u4d45\u4d46\u4d47\u4d48\u4d49\u4d4a\u4d4b\u4d4c\u4d4d\u4d4e\u4d4f\u4d50\u4d51\u4d52\u4d53\u4d54\u4d55\u4d56\u4d57\u4d58\u4d59\u4d5a\u4d5b\u4d5c\u4d5d\u4d5e\u4d5f\u4d60\u4d61\u4d62\u4d63\u4d64\u4d65\u4d66\u4d67\u4d68\u4d69\u4d6a\u4d6b\u4d6c\u4d6d\u4d6e\u4d6f\u4d70\u4d71\u4d72\u4d73\u4d74\u4d75\u4d76\u4d77\u4d78\u4d79\u4d7a\u4d7b\u4d7c\u4d7d\u4d7e\u4d7f\u4d80\u4d81\u4d82\u4d83\u4d84\u4d85\u4d86\u4d87\u4d88\u4d89\u4d8a\u4d8b\u4d8c\u4d8d\u4d8e\u4d8f\u4d90\u4d91\u4d92\u4d93\u4d94\u4d95\u4d96\u4d97\u4d98\u4d99\u4d9a\u4d9b\u4d9c\u4d9d\u4d9e\u4d9f\u4da0\u4da1\u4da2\u4da3\u4da4\u4da5\u4da6\u4da7\u4da8\u4da9\u4daa\u4dab\u4dac\u4dad\u4dae\u4daf\u4db0\u4db1\u4db2\u4db3\u4db4\u4db5\u4e00\u4e01\u4e02\u4e03\u4e04\u4e05\u4e06\u4e07\u4e08\u4e09\u4e0a\u4e0b\u4e0c\u4e0d\u4e0e\u4e0f\u4e10\u4e11\u4e12\u4e13\u4e14\u4e15\u4e16\u4e17\u4e18\u4e19\u4e1a\u4e1b\u4e1c\u4e1d\u4e1e\u4e1f\u4e20\u4e21\u4e22\u4e23\u4e24\u4e25\u4e26\u4e27\u4e28\u4e29\u4e2a\u4e2b\u4e2c\u4e2d\u4e2e\u4e2f\u4e30\u4e31\u4e32\u4e33\u4e34\u4e35\u4e36\u4e37\u4e38\u4e39\u4e3a\u4e3b\u4e3c\u4e3d\u4e3e\u4e3f\u4e40\u4e41\u4e42\u4e43\u4e44\u4e45\u4e46\u4e47\u4e48\u4e49\u4e4a\u4e4b\u4e4c\u4e4d\u4e4e\u4e4f\u4e50\u4e51\u4e52\u4e53\u4e54\u4e55\u4e56\u4e57\u4e58\u4e59\u4e5a\u4e5b\u4e5c\u4e5d\u4e5e\u4e5f\u4e60\u4e61\u4e62\u4e63\u4e64\u4e65\u4e66\u4e67\u4e68\u4e69\u4e6a\u4e6b\u4e6c\u4e6d\u4e6e\u4e6f\u4e70\u4e71\u4e72\u4e73\u4e74\u4e75\u4e76\u4e77\u4e78\u4e79\u4e7a\u4e7b\u4e7c\u4e7d\u4e7e\u4e7f\u4e80\u4e81\u4e82\u4e83\u4e84\u4e85\u4e86\u4e87\u4e88\u4e89\u4e8a\u4e8b\u4e8c\u4e8d\u4e8e\u4e8f\u4e90\u4e91\u4e92\u4e93\u4e94\u4e95\u4e96\u4e97\u4e98\u4e99\u4e9a\u4e9b\u4e9c\u4e9d\u4e9e\u4e9f\u4ea0\u4ea1\u4ea2\u4ea3\u4ea4\u4ea5\u4ea6\u4ea7\u4ea8\u4ea9\u4eaa\u4eab\u4eac\u4ead\u4eae\u4eaf\u4eb0\u4eb1\u4eb2\u4eb3\u4eb4\u4eb5\u4eb6\u4eb7\u4eb8\u4eb9\u4eba\u4ebb\u4ebc\u4ebd\u4ebe\u4ebf\u4ec0\u4ec1\u4ec2\u4ec3\u4ec4\u4ec5\u4ec6\u4ec7\u4ec8\u4ec9\u4eca\u4ecb\u4ecc\u4ecd\u4ece\u4ecf\u4ed0\u4ed1\u4ed2\u4ed3\u4ed4\u4ed5\u4ed6\u4ed7\u4ed8\u4ed9\u4eda\u4edb\u4edc\u4edd\u4ede\u4edf\u4ee0\u4ee1\u4ee2\u4ee3\u4ee4\u4ee5\u4ee6\u4ee7\u4ee8\u4ee9\u4eea\u4eeb\u4eec\u4eed\u4eee\u4eef\u4ef0\u4ef1\u4ef2\u4ef3\u4ef4\u4ef5\u4ef6\u4ef7\u4ef8\u4ef9\u4efa\u4efb\u4efc\u4efd\u4efe\u4eff\u4f00\u4f01\u4f02\u4f03\u4f04\u4f05\u4f06\u4f07\u4f08\u4f09\u4f0a\u4f0b\u4f0c\u4f0d\u4f0e\u4f0f\u4f10\u4f11\u4f12\u4f13\u4f14\u4f15\u4f16\u4f17\u4f18\u4f19\u4f1a\u4f1b\u4f1c\u4f1d\u4f1e\u4f1f\u4f20\u4f21\u4f22\u4f23\u4f24\u4f25\u4f26\u4f27\u4f28\u4f29\u4f2a\u4f2b\u4f2c\u4f2d\u4f2e\u4f2f\u4f30\u4f31\u4f32\u4f33\u4f34\u4f35\u4f36\u4f37\u4f38\u4f39\u4f3a\u4f3b\u4f3c\u4f3d\u4f3e\u4f3f\u4f40\u4f41\u4f42\u4f43\u4f44\u4f45\u4f46\u4f47\u4f48\u4f49\u4f4a\u4f4b\u4f4c\u4f4d\u4f4e\u4f4f\u4f50\u4f51\u4f52\u4f53\u4f54\u4f55\u4f56\u4f57\u4f58\u4f59\u4f5a\u4f5b\u4f5c\u4f5d\u4f5e\u4f5f\u4f60\u4f61\u4f62\u4f63\u4f64\u4f65\u4f66\u4f67\u4f68\u4f69\u4f6a\u4f6b\u4f6c\u4f6d\u4f6e\u4f6f\u4f70\u4f71\u4f72\u4f73\u4f74\u4f75\u4f76\u4f77\u4f78\u4f79\u4f7a\u4f7b\u4f7c\u4f7d\u4f7e\u4f7f\u4f80\u4f81\u4f82\u4f83\u4f84\u4f85\u4f86\u4f87\u4f88\u4f89\u4f8a\u4f8b\u4f8c\u4f8d\u4f8e\u4f8f\u4f90\u4f91\u4f92\u4f93\u4f94\u4f95\u4f96\u4f97\u4f98\u4f99\u4f9a\u4f9b\u4f9c\u4f9d\u4f9e\u4f9f\u4fa0\u4fa1\u4fa2\u4fa3\u4fa4\u4fa5\u4fa6\u4fa7\u4fa8\u4fa9\u4faa\u4fab\u4fac\u4fad\u4fae\u4faf\u4fb0\u4fb1\u4fb2\u4fb3\u4fb4\u4fb5\u4fb6\u4fb7\u4fb8\u4fb9\u4fba\u4fbb\u4fbc\u4fbd\u4fbe\u4fbf\u4fc0\u4fc1\u4fc2\u4fc3\u4fc4\u4fc5\u4fc6\u4fc7\u4fc8\u4fc9\u4fca\u4fcb\u4fcc\u4fcd\u4fce\u4fcf\u4fd0\u4fd1\u4fd2\u4fd3\u4fd4\u4fd5\u4fd6\u4fd7\u4fd8\u4fd9\u4fda\u4fdb\u4fdc\u4fdd\u4fde\u4fdf\u4fe0\u4fe1\u4fe2\u4fe3\u4fe4\u4fe5\u4fe6\u4fe7\u4fe8\u4fe9\u4fea\u4feb\u4fec\u4fed\u4fee\u4fef\u4ff0\u4ff1\u4ff2\u4ff3\u4ff4\u4ff5\u4ff6\u4ff7\u4ff8\u4ff9\u4ffa\u4ffb\u4ffc\u4ffd\u4ffe\u4fff\u5000\u5001\u5002\u5003\u5004\u5005\u5006\u5007\u5008\u5009\u500a\u500b\u500c\u500d\u500e\u500f\u5010\u5011\u5012\u5013\u5014\u5015\u5016\u5017\u5018\u5019\u501a\u501b\u501c\u501d\u501e\u501f\u5020\u5021\u5022\u5023\u5024\u5025\u5026\u5027\u5028\u5029\u502a\u502b\u502c\u502d\u502e\u502f\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037\u5038\u5039\u503a\u503b\u503c\u503d\u503e\u503f\u5040\u5041\u5042\u5043\u5044\u5045\u5046\u5047\u5048\u5049\u504a\u504b\u504c\u504d\u504e\u504f\u5050\u5051\u5052\u5053\u5054\u5055\u5056\u5057\u5058\u5059\u505a\u505b\u505c\u505d\u505e\u505f\u5060\u5061\u5062\u5063\u5064\u5065\u5066\u5067\u5068\u5069\u506a\u506b\u506c\u506d\u506e\u506f\u5070\u5071\u5072\u5073\u5074\u5075\u5076\u5077\u5078\u5079\u507a\u507b\u507c\u507d\u507e\u507f\u5080\u5081\u5082\u5083\u5084\u5085\u5086\u5087\u5088\u5089\u508a\u508b\u508c\u508d\u508e\u508f\u5090\u5091\u5092\u5093\u5094\u5095\u5096\u5097\u5098\u5099\u509a\u509b\u509c\u509d\u509e\u509f\u50a0\u50a1\u50a2\u50a3\u50a4\u50a5\u50a6\u50a7\u50a8\u50a9\u50aa\u50ab\u50ac\u50ad\u50ae\u50af\u50b0\u50b1\u50b2\u50b3\u50b4\u50b5\u50b6\u50b7\u50b8\u50b9\u50ba\u50bb\u50bc\u50bd\u50be\u50bf\u50c0\u50c1\u50c2\u50c3\u50c4\u50c5\u50c6\u50c7\u50c8\u50c9\u50ca\u50cb\u50cc\u50cd\u50ce\u50cf\u50d0\u50d1\u50d2\u50d3\u50d4\u50d5\u50d6\u50d7\u50d8\u50d9\u50da\u50db\u50dc\u50dd\u50de\u50df\u50e0\u50e1\u50e2\u50e3\u50e4\u50e5\u50e6\u50e7\u50e8\u50e9\u50ea\u50eb\u50ec\u50ed\u50ee\u50ef\u50f0\u50f1\u50f2\u50f3\u50f4\u50f5\u50f6\u50f7\u50f8\u50f9\u50fa\u50fb\u50fc\u50fd\u50fe\u50ff\u5100\u5101\u5102\u5103\u5104\u5105\u5106\u5107\u5108\u5109\u510a\u510b\u510c\u510d\u510e\u510f\u5110\u5111\u5112\u5113\u5114\u5115\u5116\u5117\u5118\u5119\u511a\u511b\u511c\u511d\u511e\u511f\u5120\u5121\u5122\u5123\u5124\u5125\u5126\u5127\u5128\u5129\u512a\u512b\u512c\u512d\u512e\u512f\u5130\u5131\u5132\u5133\u5134\u5135\u5136\u5137\u5138\u5139\u513a\u513b\u513c\u513d\u513e\u513f\u5140\u5141\u5142\u5143\u5144\u5145\u5146\u5147\u5148\u5149\u514a\u514b\u514c\u514d\u514e\u514f\u5150\u5151\u5152\u5153\u5154\u5155\u5156\u5157\u5158\u5159\u515a\u515b\u515c\u515d\u515e\u515f\u5160\u5161\u5162\u5163\u5164\u5165\u5166\u5167\u5168\u5169\u516a\u516b\u516c\u516d\u516e\u516f\u5170\u5171\u5172\u5173\u5174\u5175\u5176\u5177\u5178\u5179\u517a\u517b\u517c\u517d\u517e\u517f\u5180\u5181\u5182\u5183\u5184\u5185\u5186\u5187\u5188\u5189\u518a\u518b\u518c\u518d\u518e\u518f\u5190\u5191\u5192\u5193\u5194\u5195\u5196\u5197\u5198\u5199\u519a\u519b\u519c\u519d\u519e\u519f\u51a0\u51a1\u51a2\u51a3\u51a4\u51a5\u51a6\u51a7\u51a8\u51a9\u51aa\u51ab\u51ac\u51ad\u51ae\u51af\u51b0\u51b1\u51b2\u51b3\u51b4\u51b5\u51b6\u51b7\u51b8\u51b9\u51ba\u51bb\u51bc\u51bd\u51be\u51bf\u51c0\u51c1\u51c2\u51c3\u51c4\u51c5\u51c6\u51c7\u51c8\u51c9\u51ca\u51cb\u51cc\u51cd\u51ce\u51cf\u51d0\u51d1\u51d2\u51d3\u51d4\u51d5\u51d6\u51d7\u51d8\u51d9\u51da\u51db\u51dc\u51dd\u51de\u51df\u51e0\u51e1\u51e2\u51e3\u51e4\u51e5\u51e6\u51e7\u51e8\u51e9\u51ea\u51eb\u51ec\u51ed\u51ee\u51ef\u51f0\u51f1\u51f2\u51f3\u51f4\u51f5\u51f6\u51f7\u51f8\u51f9\u51fa\u51fb\u51fc\u51fd\u51fe\u51ff\u5200\u5201\u5202\u5203\u5204\u5205\u5206\u5207\u5208\u5209\u520a\u520b\u520c\u520d\u520e\u520f\u5210\u5211\u5212\u5213\u5214\u5215\u5216\u5217\u5218\u5219\u521a\u521b\u521c\u521d\u521e\u521f\u5220\u5221\u5222\u5223\u5224\u5225\u5226\u5227\u5228\u5229\u522a\u522b\u522c\u522d\u522e\u522f\u5230\u5231\u5232\u5233\u5234\u5235\u5236\u5237\u5238\u5239\u523a\u523b\u523c\u523d\u523e\u523f\u5240\u5241\u5242\u5243\u5244\u5245\u5246\u5247\u5248\u5249\u524a\u524b\u524c\u524d\u524e\u524f\u5250\u5251\u5252\u5253\u5254\u5255\u5256\u5257\u5258\u5259\u525a\u525b\u525c\u525d\u525e\u525f\u5260\u5261\u5262\u5263\u5264\u5265\u5266\u5267\u5268\u5269\u526a\u526b\u526c\u526d\u526e\u526f\u5270\u5271\u5272\u5273\u5274\u5275\u5276\u5277\u5278\u5279\u527a\u527b\u527c\u527d\u527e\u527f\u5280\u5281\u5282\u5283\u5284\u5285\u5286\u5287\u5288\u5289\u528a\u528b\u528c\u528d\u528e\u528f\u5290\u5291\u5292\u5293\u5294\u5295\u5296\u5297\u5298\u5299\u529a\u529b\u529c\u529d\u529e\u529f\u52a0\u52a1\u52a2\u52a3\u52a4\u52a5\u52a6\u52a7\u52a8\u52a9\u52aa\u52ab\u52ac\u52ad\u52ae\u52af\u52b0\u52b1\u52b2\u52b3\u52b4\u52b5\u52b6\u52b7\u52b8\u52b9\u52ba\u52bb\u52bc\u52bd\u52be\u52bf\u52c0\u52c1\u52c2\u52c3\u52c4\u52c5\u52c6\u52c7\u52c8\u52c9\u52ca\u52cb\u52cc\u52cd\u52ce\u52cf\u52d0\u52d1\u52d2\u52d3\u52d4\u52d5\u52d6\u52d7\u52d8\u52d9\u52da\u52db\u52dc\u52dd\u52de\u52df\u52e0\u52e1\u52e2\u52e3\u52e4\u52e5\u52e6\u52e7\u52e8\u52e9\u52ea\u52eb\u52ec\u52ed\u52ee\u52ef\u52f0\u52f1\u52f2\u52f3\u52f4\u52f5\u52f6\u52f7\u52f8\u52f9\u52fa\u52fb\u52fc\u52fd\u52fe\u52ff\u5300\u5301\u5302\u5303\u5304\u5305\u5306\u5307\u5308\u5309\u530a\u530b\u530c\u530d\u530e\u530f\u5310\u5311\u5312\u5313\u5314\u5315\u5316\u5317\u5318\u5319\u531a\u531b\u531c\u531d\u531e\u531f\u5320\u5321\u5322\u5323\u5324\u5325\u5326\u5327\u5328\u5329\u532a\u532b\u532c\u532d\u532e\u532f\u5330\u5331\u5332\u5333\u5334\u5335\u5336\u5337\u5338\u5339\u533a\u533b\u533c\u533d\u533e\u533f\u5340\u5341\u5342\u5343\u5344\u5345\u5346\u5347\u5348\u5349\u534a\u534b\u534c\u534d\u534e\u534f\u5350\u5351\u5352\u5353\u5354\u5355\u5356\u5357\u5358\u5359\u535a\u535b\u535c\u535d\u535e\u535f\u5360\u5361\u5362\u5363\u5364\u5365\u5366\u5367\u5368\u5369\u536a\u536b\u536c\u536d\u536e\u536f\u5370\u5371\u5372\u5373\u5374\u5375\u5376\u5377\u5378\u5379\u537a\u537b\u537c\u537d\u537e\u537f\u5380\u5381\u5382\u5383\u5384\u5385\u5386\u5387\u5388\u5389\u538a\u538b\u538c\u538d\u538e\u538f\u5390\u5391\u5392\u5393\u5394\u5395\u5396\u5397\u5398\u5399\u539a\u539b\u539c\u539d\u539e\u539f\u53a0\u53a1\u53a2\u53a3\u53a4\u53a5\u53a6\u53a7\u53a8\u53a9\u53aa\u53ab\u53ac\u53ad\u53ae\u53af\u53b0\u53b1\u53b2\u53b3\u53b4\u53b5\u53b6\u53b7\u53b8\u53b9\u53ba\u53bb\u53bc\u53bd\u53be\u53bf\u53c0\u53c1\u53c2\u53c3\u53c4\u53c5\u53c6\u53c7\u53c8\u53c9\u53ca\u53cb\u53cc\u53cd\u53ce\u53cf\u53d0\u53d1\u53d2\u53d3\u53d4\u53d5\u53d6\u53d7\u53d8\u53d9\u53da\u53db\u53dc\u53dd\u53de\u53df\u53e0\u53e1\u53e2\u53e3\u53e4\u53e5\u53e6\u53e7\u53e8\u53e9\u53ea\u53eb\u53ec\u53ed\u53ee\u53ef\u53f0\u53f1\u53f2\u53f3\u53f4\u53f5\u53f6\u53f7\u53f8\u53f9\u53fa\u53fb\u53fc\u53fd\u53fe\u53ff\u5400\u5401\u5402\u5403\u5404\u5405\u5406\u5407\u5408\u5409\u540a\u540b\u540c\u540d\u540e\u540f\u5410\u5411\u5412\u5413\u5414\u5415\u5416\u5417\u5418\u5419\u541a\u541b\u541c\u541d\u541e\u541f\u5420\u5421\u5422\u5423\u5424\u5425\u5426\u5427\u5428\u5429\u542a\u542b\u542c\u542d\u542e\u542f\u5430\u5431\u5432\u5433\u5434\u5435\u5436\u5437\u5438\u5439\u543a\u543b\u543c\u543d\u543e\u543f\u5440\u5441\u5442\u5443\u5444\u5445\u5446\u5447\u5448\u5449\u544a\u544b\u544c\u544d\u544e\u544f\u5450\u5451\u5452\u5453\u5454\u5455\u5456\u5457\u5458\u5459\u545a\u545b\u545c\u545d\u545e\u545f\u5460\u5461\u5462\u5463\u5464\u5465\u5466\u5467\u5468\u5469\u546a\u546b\u546c\u546d\u546e\u546f\u5470\u5471\u5472\u5473\u5474\u5475\u5476\u5477\u5478\u5479\u547a\u547b\u547c\u547d\u547e\u547f\u5480\u5481\u5482\u5483\u5484\u5485\u5486\u5487\u5488\u5489\u548a\u548b\u548c\u548d\u548e\u548f\u5490\u5491\u5492\u5493\u5494\u5495\u5496\u5497\u5498\u5499\u549a\u549b\u549c\u549d\u549e\u549f\u54a0\u54a1\u54a2\u54a3\u54a4\u54a5\u54a6\u54a7\u54a8\u54a9\u54aa\u54ab\u54ac\u54ad\u54ae\u54af\u54b0\u54b1\u54b2\u54b3\u54b4\u54b5\u54b6\u54b7\u54b8\u54b9\u54ba\u54bb\u54bc\u54bd\u54be\u54bf\u54c0\u54c1\u54c2\u54c3\u54c4\u54c5\u54c6\u54c7\u54c8\u54c9\u54ca\u54cb\u54cc\u54cd\u54ce\u54cf\u54d0\u54d1\u54d2\u54d3\u54d4\u54d5\u54d6\u54d7\u54d8\u54d9\u54da\u54db\u54dc\u54dd\u54de\u54df\u54e0\u54e1\u54e2\u54e3\u54e4\u54e5\u54e6\u54e7\u54e8\u54e9\u54ea\u54eb\u54ec\u54ed\u54ee\u54ef\u54f0\u54f1\u54f2\u54f3\u54f4\u54f5\u54f6\u54f7\u54f8\u54f9\u54fa\u54fb\u54fc\u54fd\u54fe\u54ff\u5500\u5501\u5502\u5503\u5504\u5505\u5506\u5507\u5508\u5509\u550a\u550b\u550c\u550d\u550e\u550f\u5510\u5511\u5512\u5513\u5514\u5515\u5516\u5517\u5518\u5519\u551a\u551b\u551c\u551d\u551e\u551f\u5520\u5521\u5522\u5523\u5524\u5525\u5526\u5527\u5528\u5529\u552a\u552b\u552c\u552d\u552e\u552f\u5530\u5531\u5532\u5533\u5534\u5535\u5536\u5537\u5538\u5539\u553a\u553b\u553c\u553d\u553e\u553f\u5540\u5541\u5542\u5543\u5544\u5545\u5546\u5547\u5548\u5549\u554a\u554b\u554c\u554d\u554e\u554f\u5550\u5551\u5552\u5553\u5554\u5555\u5556\u5557\u5558\u5559\u555a\u555b\u555c\u555d\u555e\u555f\u5560\u5561\u5562\u5563\u5564\u5565\u5566\u5567\u5568\u5569\u556a\u556b\u556c\u556d\u556e\u556f\u5570\u5571\u5572\u5573\u5574\u5575\u5576\u5577\u5578\u5579\u557a\u557b\u557c\u557d\u557e\u557f\u5580\u5581\u5582\u5583\u5584\u5585\u5586\u5587\u5588\u5589\u558a\u558b\u558c\u558d\u558e\u558f\u5590\u5591\u5592\u5593\u5594\u5595\u5596\u5597\u5598\u5599\u559a\u559b\u559c\u559d\u559e\u559f\u55a0\u55a1\u55a2\u55a3\u55a4\u55a5\u55a6\u55a7\u55a8\u55a9\u55aa\u55ab\u55ac\u55ad\u55ae\u55af\u55b0\u55b1\u55b2\u55b3\u55b4\u55b5\u55b6\u55b7\u55b8\u55b9\u55ba\u55bb\u55bc\u55bd\u55be\u55bf\u55c0\u55c1\u55c2\u55c3\u55c4\u55c5\u55c6\u55c7\u55c8\u55c9\u55ca\u55cb\u55cc\u55cd\u55ce\u55cf\u55d0\u55d1\u55d2\u55d3\u55d4\u55d5\u55d6\u55d7\u55d8\u55d9\u55da\u55db\u55dc\u55dd\u55de\u55df\u55e0\u55e1\u55e2\u55e3\u55e4\u55e5\u55e6\u55e7\u55e8\u55e9\u55ea\u55eb\u55ec\u55ed\u55ee\u55ef\u55f0\u55f1\u55f2\u55f3\u55f4\u55f5\u55f6\u55f7\u55f8\u55f9\u55fa\u55fb\u55fc\u55fd\u55fe\u55ff\u5600\u5601\u5602\u5603\u5604\u5605\u5606\u5607\u5608\u5609\u560a\u560b\u560c\u560d\u560e\u560f\u5610\u5611\u5612\u5613\u5614\u5615\u5616\u5617\u5618\u5619\u561a\u561b\u561c\u561d\u561e\u561f\u5620\u5621\u5622\u5623\u5624\u5625\u5626\u5627\u5628\u5629\u562a\u562b\u562c\u562d\u562e\u562f\u5630\u5631\u5632\u5633\u5634\u5635\u5636\u5637\u5638\u5639\u563a\u563b\u563c\u563d\u563e\u563f\u5640\u5641\u5642\u5643\u5644\u5645\u5646\u5647\u5648\u5649\u564a\u564b\u564c\u564d\u564e\u564f\u5650\u5651\u5652\u5653\u5654\u5655\u5656\u5657\u5658\u5659\u565a\u565b\u565c\u565d\u565e\u565f\u5660\u5661\u5662\u5663\u5664\u5665\u5666\u5667\u5668\u5669\u566a\u566b\u566c\u566d\u566e\u566f\u5670\u5671\u5672\u5673\u5674\u5675\u5676\u5677\u5678\u5679\u567a\u567b\u567c\u567d\u567e\u567f\u5680\u5681\u5682\u5683\u5684\u5685\u5686\u5687\u5688\u5689\u568a\u568b\u568c\u568d\u568e\u568f\u5690\u5691\u5692\u5693\u5694\u5695\u5696\u5697\u5698\u5699\u569a\u569b\u569c\u569d\u569e\u569f\u56a0\u56a1\u56a2\u56a3\u56a4\u56a5\u56a6\u56a7\u56a8\u56a9\u56aa\u56ab\u56ac\u56ad\u56ae\u56af\u56b0\u56b1\u56b2\u56b3\u56b4\u56b5\u56b6\u56b7\u56b8\u56b9\u56ba\u56bb\u56bc\u56bd\u56be\u56bf\u56c0\u56c1\u56c2\u56c3\u56c4\u56c5\u56c6\u56c7\u56c8\u56c9\u56ca\u56cb\u56cc\u56cd\u56ce\u56cf\u56d0\u56d1\u56d2\u56d3\u56d4\u56d5\u56d6\u56d7\u56d8\u56d9\u56da\u56db\u56dc\u56dd\u56de\u56df\u56e0\u56e1\u56e2\u56e3\u56e4\u56e5\u56e6\u56e7\u56e8\u56e9\u56ea\u56eb\u56ec\u56ed\u56ee\u56ef\u56f0\u56f1\u56f2\u56f3\u56f4\u56f5\u56f6\u56f7\u56f8\u56f9\u56fa\u56fb\u56fc\u56fd\u56fe\u56ff\u5700\u5701\u5702\u5703\u5704\u5705\u5706\u5707\u5708\u5709\u570a\u570b\u570c\u570d\u570e\u570f\u5710\u5711\u5712\u5713\u5714\u5715\u5716\u5717\u5718\u5719\u571a\u571b\u571c\u571d\u571e\u571f\u5720\u5721\u5722\u5723\u5724\u5725\u5726\u5727\u5728\u5729\u572a\u572b\u572c\u572d\u572e\u572f\u5730\u5731\u5732\u5733\u5734\u5735\u5736\u5737\u5738\u5739\u573a\u573b\u573c\u573d\u573e\u573f\u5740\u5741\u5742\u5743\u5744\u5745\u5746\u5747\u5748\u5749\u574a\u574b\u574c\u574d\u574e\u574f\u5750\u5751\u5752\u5753\u5754\u5755\u5756\u5757\u5758\u5759\u575a\u575b\u575c\u575d\u575e\u575f\u5760\u5761\u5762\u5763\u5764\u5765\u5766\u5767\u5768\u5769\u576a\u576b\u576c\u576d\u576e\u576f\u5770\u5771\u5772\u5773\u5774\u5775\u5776\u5777\u5778\u5779\u577a\u577b\u577c\u577d\u577e\u577f\u5780\u5781\u5782\u5783\u5784\u5785\u5786\u5787\u5788\u5789\u578a\u578b\u578c\u578d\u578e\u578f\u5790\u5791\u5792\u5793\u5794\u5795\u5796\u5797\u5798\u5799\u579a\u579b\u579c\u579d\u579e\u579f\u57a0\u57a1\u57a2\u57a3\u57a4\u57a5\u57a6\u57a7\u57a8\u57a9\u57aa\u57ab\u57ac\u57ad\u57ae\u57af\u57b0\u57b1\u57b2\u57b3\u57b4\u57b5\u57b6\u57b7\u57b8\u57b9\u57ba\u57bb\u57bc\u57bd\u57be\u57bf\u57c0\u57c1\u57c2\u57c3\u57c4\u57c5\u57c6\u57c7\u57c8\u57c9\u57ca\u57cb\u57cc\u57cd\u57ce\u57cf\u57d0\u57d1\u57d2\u57d3\u57d4\u57d5\u57d6\u57d7\u57d8\u57d9\u57da\u57db\u57dc\u57dd\u57de\u57df\u57e0\u57e1\u57e2\u57e3\u57e4\u57e5\u57e6\u57e7\u57e8\u57e9\u57ea\u57eb\u57ec\u57ed\u57ee\u57ef\u57f0\u57f1\u57f2\u57f3\u57f4\u57f5\u57f6\u57f7\u57f8\u57f9\u57fa\u57fb\u57fc\u57fd\u57fe\u57ff\u5800\u5801\u5802\u5803\u5804\u5805\u5806\u5807\u5808\u5809\u580a\u580b\u580c\u580d\u580e\u580f\u5810\u5811\u5812\u5813\u5814\u5815\u5816\u5817\u5818\u5819\u581a\u581b\u581c\u581d\u581e\u581f\u5820\u5821\u5822\u5823\u5824\u5825\u5826\u5827\u5828\u5829\u582a\u582b\u582c\u582d\u582e\u582f\u5830\u5831\u5832\u5833\u5834\u5835\u5836\u5837\u5838\u5839\u583a\u583b\u583c\u583d\u583e\u583f\u5840\u5841\u5842\u5843\u5844\u5845\u5846\u5847\u5848\u5849\u584a\u584b\u584c\u584d\u584e\u584f\u5850\u5851\u5852\u5853\u5854\u5855\u5856\u5857\u5858\u5859\u585a\u585b\u585c\u585d\u585e\u585f\u5860\u5861\u5862\u5863\u5864\u5865\u5866\u5867\u5868\u5869\u586a\u586b\u586c\u586d\u586e\u586f\u5870\u5871\u5872\u5873\u5874\u5875\u5876\u5877\u5878\u5879\u587a\u587b\u587c\u587d\u587e\u587f\u5880\u5881\u5882\u5883\u5884\u5885\u5886\u5887\u5888\u5889\u588a\u588b\u588c\u588d\u588e\u588f\u5890\u5891\u5892\u5893\u5894\u5895\u5896\u5897\u5898\u5899\u589a\u589b\u589c\u589d\u589e\u589f\u58a0\u58a1\u58a2\u58a3\u58a4\u58a5\u58a6\u58a7\u58a8\u58a9\u58aa\u58ab\u58ac\u58ad\u58ae\u58af\u58b0\u58b1\u58b2\u58b3\u58b4\u58b5\u58b6\u58b7\u58b8\u58b9\u58ba\u58bb\u58bc\u58bd\u58be\u58bf\u58c0\u58c1\u58c2\u58c3\u58c4\u58c5\u58c6\u58c7\u58c8\u58c9\u58ca\u58cb\u58cc\u58cd\u58ce\u58cf\u58d0\u58d1\u58d2\u58d3\u58d4\u58d5\u58d6\u58d7\u58d8\u58d9\u58da\u58db\u58dc\u58dd\u58de\u58df\u58e0\u58e1\u58e2\u58e3\u58e4\u58e5\u58e6\u58e7\u58e8\u58e9\u58ea\u58eb\u58ec\u58ed\u58ee\u58ef\u58f0\u58f1\u58f2\u58f3\u58f4\u58f5\u58f6\u58f7\u58f8\u58f9\u58fa\u58fb\u58fc\u58fd\u58fe\u58ff\u5900\u5901\u5902\u5903\u5904\u5905\u5906\u5907\u5908\u5909\u590a\u590b\u590c\u590d\u590e\u590f\u5910\u5911\u5912\u5913\u5914\u5915\u5916\u5917\u5918\u5919\u591a\u591b\u591c\u591d\u591e\u591f\u5920\u5921\u5922\u5923\u5924\u5925\u5926\u5927\u5928\u5929\u592a\u592b\u592c\u592d\u592e\u592f\u5930\u5931\u5932\u5933\u5934\u5935\u5936\u5937\u5938\u5939\u593a\u593b\u593c\u593d\u593e\u593f\u5940\u5941\u5942\u5943\u5944\u5945\u5946\u5947\u5948\u5949\u594a\u594b\u594c\u594d\u594e\u594f\u5950\u5951\u5952\u5953\u5954\u5955\u5956\u5957\u5958\u5959\u595a\u595b\u595c\u595d\u595e\u595f\u5960\u5961\u5962\u5963\u5964\u5965\u5966\u5967\u5968\u5969\u596a\u596b\u596c\u596d\u596e\u596f\u5970\u5971\u5972\u5973\u5974\u5975\u5976\u5977\u5978\u5979\u597a\u597b\u597c\u597d\u597e\u597f\u5980\u5981\u5982\u5983\u5984\u5985\u5986\u5987\u5988\u5989\u598a\u598b\u598c\u598d\u598e\u598f\u5990\u5991\u5992\u5993\u5994\u5995\u5996\u5997\u5998\u5999\u599a\u599b\u599c\u599d\u599e\u599f\u59a0\u59a1\u59a2\u59a3\u59a4\u59a5\u59a6\u59a7\u59a8\u59a9\u59aa\u59ab\u59ac\u59ad\u59ae\u59af\u59b0\u59b1\u59b2\u59b3\u59b4\u59b5\u59b6\u59b7\u59b8\u59b9\u59ba\u59bb\u59bc\u59bd\u59be\u59bf\u59c0\u59c1\u59c2\u59c3\u59c4\u59c5\u59c6\u59c7\u59c8\u59c9\u59ca\u59cb\u59cc\u59cd\u59ce\u59cf\u59d0\u59d1\u59d2\u59d3\u59d4\u59d5\u59d6\u59d7\u59d8\u59d9\u59da\u59db\u59dc\u59dd\u59de\u59df\u59e0\u59e1\u59e2\u59e3\u59e4\u59e5\u59e6\u59e7\u59e8\u59e9\u59ea\u59eb\u59ec\u59ed\u59ee\u59ef\u59f0\u59f1\u59f2\u59f3\u59f4\u59f5\u59f6\u59f7\u59f8\u59f9\u59fa\u59fb\u59fc\u59fd\u59fe\u59ff\u5a00\u5a01\u5a02\u5a03\u5a04\u5a05\u5a06\u5a07\u5a08\u5a09\u5a0a\u5a0b\u5a0c\u5a0d\u5a0e\u5a0f\u5a10\u5a11\u5a12\u5a13\u5a14\u5a15\u5a16\u5a17\u5a18\u5a19\u5a1a\u5a1b\u5a1c\u5a1d\u5a1e\u5a1f\u5a20\u5a21\u5a22\u5a23\u5a24\u5a25\u5a26\u5a27\u5a28\u5a29\u5a2a\u5a2b\u5a2c\u5a2d\u5a2e\u5a2f\u5a30\u5a31\u5a32\u5a33\u5a34\u5a35\u5a36\u5a37\u5a38\u5a39\u5a3a\u5a3b\u5a3c\u5a3d\u5a3e\u5a3f\u5a40\u5a41\u5a42\u5a43\u5a44\u5a45\u5a46\u5a47\u5a48\u5a49\u5a4a\u5a4b\u5a4c\u5a4d\u5a4e\u5a4f\u5a50\u5a51\u5a52\u5a53\u5a54\u5a55\u5a56\u5a57\u5a58\u5a59\u5a5a\u5a5b\u5a5c\u5a5d\u5a5e\u5a5f\u5a60\u5a61\u5a62\u5a63\u5a64\u5a65\u5a66\u5a67\u5a68\u5a69\u5a6a\u5a6b\u5a6c\u5a6d\u5a6e\u5a6f\u5a70\u5a71\u5a72\u5a73\u5a74\u5a75\u5a76\u5a77\u5a78\u5a79\u5a7a\u5a7b\u5a7c\u5a7d\u5a7e\u5a7f\u5a80\u5a81\u5a82\u5a83\u5a84\u5a85\u5a86\u5a87\u5a88\u5a89\u5a8a\u5a8b\u5a8c\u5a8d\u5a8e\u5a8f\u5a90\u5a91\u5a92\u5a93\u5a94\u5a95\u5a96\u5a97\u5a98\u5a99\u5a9a\u5a9b\u5a9c\u5a9d\u5a9e\u5a9f\u5aa0\u5aa1\u5aa2\u5aa3\u5aa4\u5aa5\u5aa6\u5aa7\u5aa8\u5aa9\u5aaa\u5aab\u5aac\u5aad\u5aae\u5aaf\u5ab0\u5ab1\u5ab2\u5ab3\u5ab4\u5ab5\u5ab6\u5ab7\u5ab8\u5ab9\u5aba\u5abb\u5abc\u5abd\u5abe\u5abf\u5ac0\u5ac1\u5ac2\u5ac3\u5ac4\u5ac5\u5ac6\u5ac7\u5ac8\u5ac9\u5aca\u5acb\u5acc\u5acd\u5ace\u5acf\u5ad0\u5ad1\u5ad2\u5ad3\u5ad4\u5ad5\u5ad6\u5ad7\u5ad8\u5ad9\u5ada\u5adb\u5adc\u5add\u5ade\u5adf\u5ae0\u5ae1\u5ae2\u5ae3\u5ae4\u5ae5\u5ae6\u5ae7\u5ae8\u5ae9\u5aea\u5aeb\u5aec\u5aed\u5aee\u5aef\u5af0\u5af1\u5af2\u5af3\u5af4\u5af5\u5af6\u5af7\u5af8\u5af9\u5afa\u5afb\u5afc\u5afd\u5afe\u5aff\u5b00\u5b01\u5b02\u5b03\u5b04\u5b05\u5b06\u5b07\u5b08\u5b09\u5b0a\u5b0b\u5b0c\u5b0d\u5b0e\u5b0f\u5b10\u5b11\u5b12\u5b13\u5b14\u5b15\u5b16\u5b17\u5b18\u5b19\u5b1a\u5b1b\u5b1c\u5b1d\u5b1e\u5b1f\u5b20\u5b21\u5b22\u5b23\u5b24\u5b25\u5b26\u5b27\u5b28\u5b29\u5b2a\u5b2b\u5b2c\u5b2d\u5b2e\u5b2f\u5b30\u5b31\u5b32\u5b33\u5b34\u5b35\u5b36\u5b37\u5b38\u5b39\u5b3a\u5b3b\u5b3c\u5b3d\u5b3e\u5b3f\u5b40\u5b41\u5b42\u5b43\u5b44\u5b45\u5b46\u5b47\u5b48\u5b49\u5b4a\u5b4b\u5b4c\u5b4d\u5b4e\u5b4f\u5b50\u5b51\u5b52\u5b53\u5b54\u5b55\u5b56\u5b57\u5b58\u5b59\u5b5a\u5b5b\u5b5c\u5b5d\u5b5e\u5b5f\u5b60\u5b61\u5b62\u5b63\u5b64\u5b65\u5b66\u5b67\u5b68\u5b69\u5b6a\u5b6b\u5b6c\u5b6d\u5b6e\u5b6f\u5b70\u5b71\u5b72\u5b73\u5b74\u5b75\u5b76\u5b77\u5b78\u5b79\u5b7a\u5b7b\u5b7c\u5b7d\u5b7e\u5b7f\u5b80\u5b81\u5b82\u5b83\u5b84\u5b85\u5b86\u5b87\u5b88\u5b89\u5b8a\u5b8b\u5b8c\u5b8d\u5b8e\u5b8f\u5b90\u5b91\u5b92\u5b93\u5b94\u5b95\u5b96\u5b97\u5b98\u5b99\u5b9a\u5b9b\u5b9c\u5b9d\u5b9e\u5b9f\u5ba0\u5ba1\u5ba2\u5ba3\u5ba4\u5ba5\u5ba6\u5ba7\u5ba8\u5ba9\u5baa\u5bab\u5bac\u5bad\u5bae\u5baf\u5bb0\u5bb1\u5bb2\u5bb3\u5bb4\u5bb5\u5bb6\u5bb7\u5bb8\u5bb9\u5bba\u5bbb\u5bbc\u5bbd\u5bbe\u5bbf\u5bc0\u5bc1\u5bc2\u5bc3\u5bc4\u5bc5\u5bc6\u5bc7\u5bc8\u5bc9\u5bca\u5bcb\u5bcc\u5bcd\u5bce\u5bcf\u5bd0\u5bd1\u5bd2\u5bd3\u5bd4\u5bd5\u5bd6\u5bd7\u5bd8\u5bd9\u5bda\u5bdb\u5bdc\u5bdd\u5bde\u5bdf\u5be0\u5be1\u5be2\u5be3\u5be4\u5be5\u5be6\u5be7\u5be8\u5be9\u5bea\u5beb\u5bec\u5bed\u5bee\u5bef\u5bf0\u5bf1\u5bf2\u5bf3\u5bf4\u5bf5\u5bf6\u5bf7\u5bf8\u5bf9\u5bfa\u5bfb\u5bfc\u5bfd\u5bfe\u5bff\u5c00\u5c01\u5c02\u5c03\u5c04\u5c05\u5c06\u5c07\u5c08\u5c09\u5c0a\u5c0b\u5c0c\u5c0d\u5c0e\u5c0f\u5c10\u5c11\u5c12\u5c13\u5c14\u5c15\u5c16\u5c17\u5c18\u5c19\u5c1a\u5c1b\u5c1c\u5c1d\u5c1e\u5c1f\u5c20\u5c21\u5c22\u5c23\u5c24\u5c25\u5c26\u5c27\u5c28\u5c29\u5c2a\u5c2b\u5c2c\u5c2d\u5c2e\u5c2f\u5c30\u5c31\u5c32\u5c33\u5c34\u5c35\u5c36\u5c37\u5c38\u5c39\u5c3a\u5c3b\u5c3c\u5c3d\u5c3e\u5c3f\u5c40\u5c41\u5c42\u5c43\u5c44\u5c45\u5c46\u5c47\u5c48\u5c49\u5c4a\u5c4b\u5c4c\u5c4d\u5c4e\u5c4f\u5c50\u5c51\u5c52\u5c53\u5c54\u5c55\u5c56\u5c57\u5c58\u5c59\u5c5a\u5c5b\u5c5c\u5c5d\u5c5e\u5c5f\u5c60\u5c61\u5c62\u5c63\u5c64\u5c65\u5c66\u5c67\u5c68\u5c69\u5c6a\u5c6b\u5c6c\u5c6d\u5c6e\u5c6f\u5c70\u5c71\u5c72\u5c73\u5c74\u5c75\u5c76\u5c77\u5c78\u5c79\u5c7a\u5c7b\u5c7c\u5c7d\u5c7e\u5c7f\u5c80\u5c81\u5c82\u5c83\u5c84\u5c85\u5c86\u5c87\u5c88\u5c89\u5c8a\u5c8b\u5c8c\u5c8d\u5c8e\u5c8f\u5c90\u5c91\u5c92\u5c93\u5c94\u5c95\u5c96\u5c97\u5c98\u5c99\u5c9a\u5c9b\u5c9c\u5c9d\u5c9e\u5c9f\u5ca0\u5ca1\u5ca2\u5ca3\u5ca4\u5ca5\u5ca6\u5ca7\u5ca8\u5ca9\u5caa\u5cab\u5cac\u5cad\u5cae\u5caf\u5cb0\u5cb1\u5cb2\u5cb3\u5cb4\u5cb5\u5cb6\u5cb7\u5cb8\u5cb9\u5cba\u5cbb\u5cbc\u5cbd\u5cbe\u5cbf\u5cc0\u5cc1\u5cc2\u5cc3\u5cc4\u5cc5\u5cc6\u5cc7\u5cc8\u5cc9\u5cca\u5ccb\u5ccc\u5ccd\u5cce\u5ccf\u5cd0\u5cd1\u5cd2\u5cd3\u5cd4\u5cd5\u5cd6\u5cd7\u5cd8\u5cd9\u5cda\u5cdb\u5cdc\u5cdd\u5cde\u5cdf\u5ce0\u5ce1\u5ce2\u5ce3\u5ce4\u5ce5\u5ce6\u5ce7\u5ce8\u5ce9\u5cea\u5ceb\u5cec\u5ced\u5cee\u5cef\u5cf0\u5cf1\u5cf2\u5cf3\u5cf4\u5cf5\u5cf6\u5cf7\u5cf8\u5cf9\u5cfa\u5cfb\u5cfc\u5cfd\u5cfe\u5cff\u5d00\u5d01\u5d02\u5d03\u5d04\u5d05\u5d06\u5d07\u5d08\u5d09\u5d0a\u5d0b\u5d0c\u5d0d\u5d0e\u5d0f\u5d10\u5d11\u5d12\u5d13\u5d14\u5d15\u5d16\u5d17\u5d18\u5d19\u5d1a\u5d1b\u5d1c\u5d1d\u5d1e\u5d1f\u5d20\u5d21\u5d22\u5d23\u5d24\u5d25\u5d26\u5d27\u5d28\u5d29\u5d2a\u5d2b\u5d2c\u5d2d\u5d2e\u5d2f\u5d30\u5d31\u5d32\u5d33\u5d34\u5d35\u5d36\u5d37\u5d38\u5d39\u5d3a\u5d3b\u5d3c\u5d3d\u5d3e\u5d3f\u5d40\u5d41\u5d42\u5d43\u5d44\u5d45\u5d46\u5d47\u5d48\u5d49\u5d4a\u5d4b\u5d4c\u5d4d\u5d4e\u5d4f\u5d50\u5d51\u5d52\u5d53\u5d54\u5d55\u5d56\u5d57\u5d58\u5d59\u5d5a\u5d5b\u5d5c\u5d5d\u5d5e\u5d5f\u5d60\u5d61\u5d62\u5d63\u5d64\u5d65\u5d66\u5d67\u5d68\u5d69\u5d6a\u5d6b\u5d6c\u5d6d\u5d6e\u5d6f\u5d70\u5d71\u5d72\u5d73\u5d74\u5d75\u5d76\u5d77\u5d78\u5d79\u5d7a\u5d7b\u5d7c\u5d7d\u5d7e\u5d7f\u5d80\u5d81\u5d82\u5d83\u5d84\u5d85\u5d86\u5d87\u5d88\u5d89\u5d8a\u5d8b\u5d8c\u5d8d\u5d8e\u5d8f\u5d90\u5d91\u5d92\u5d93\u5d94\u5d95\u5d96\u5d97\u5d98\u5d99\u5d9a\u5d9b\u5d9c\u5d9d\u5d9e\u5d9f\u5da0\u5da1\u5da2\u5da3\u5da4\u5da5\u5da6\u5da7\u5da8\u5da9\u5daa\u5dab\u5dac\u5dad\u5dae\u5daf\u5db0\u5db1\u5db2\u5db3\u5db4\u5db5\u5db6\u5db7\u5db8\u5db9\u5dba\u5dbb\u5dbc\u5dbd\u5dbe\u5dbf\u5dc0\u5dc1\u5dc2\u5dc3\u5dc4\u5dc5\u5dc6\u5dc7\u5dc8\u5dc9\u5dca\u5dcb\u5dcc\u5dcd\u5dce\u5dcf\u5dd0\u5dd1\u5dd2\u5dd3\u5dd4\u5dd5\u5dd6\u5dd7\u5dd8\u5dd9\u5dda\u5ddb\u5ddc\u5ddd\u5dde\u5ddf\u5de0\u5de1\u5de2\u5de3\u5de4\u5de5\u5de6\u5de7\u5de8\u5de9\u5dea\u5deb\u5dec\u5ded\u5dee\u5def\u5df0\u5df1\u5df2\u5df3\u5df4\u5df5\u5df6\u5df7\u5df8\u5df9\u5dfa\u5dfb\u5dfc\u5dfd\u5dfe\u5dff\u5e00\u5e01\u5e02\u5e03\u5e04\u5e05\u5e06\u5e07\u5e08\u5e09\u5e0a\u5e0b\u5e0c\u5e0d\u5e0e\u5e0f\u5e10\u5e11\u5e12\u5e13\u5e14\u5e15\u5e16\u5e17\u5e18\u5e19\u5e1a\u5e1b\u5e1c\u5e1d\u5e1e\u5e1f\u5e20\u5e21\u5e22\u5e23\u5e24\u5e25\u5e26\u5e27\u5e28\u5e29\u5e2a\u5e2b\u5e2c\u5e2d\u5e2e\u5e2f\u5e30\u5e31\u5e32\u5e33\u5e34\u5e35\u5e36\u5e37\u5e38\u5e39\u5e3a\u5e3b\u5e3c\u5e3d\u5e3e\u5e3f\u5e40\u5e41\u5e42\u5e43\u5e44\u5e45\u5e46\u5e47\u5e48\u5e49\u5e4a\u5e4b\u5e4c\u5e4d\u5e4e\u5e4f\u5e50\u5e51\u5e52\u5e53\u5e54\u5e55\u5e56\u5e57\u5e58\u5e59\u5e5a\u5e5b\u5e5c\u5e5d\u5e5e\u5e5f\u5e60\u5e61\u5e62\u5e63\u5e64\u5e65\u5e66\u5e67\u5e68\u5e69\u5e6a\u5e6b\u5e6c\u5e6d\u5e6e\u5e6f\u5e70\u5e71\u5e72\u5e73\u5e74\u5e75\u5e76\u5e77\u5e78\u5e79\u5e7a\u5e7b\u5e7c\u5e7d\u5e7e\u5e7f\u5e80\u5e81\u5e82\u5e83\u5e84\u5e85\u5e86\u5e87\u5e88\u5e89\u5e8a\u5e8b\u5e8c\u5e8d\u5e8e\u5e8f\u5e90\u5e91\u5e92\u5e93\u5e94\u5e95\u5e96\u5e97\u5e98\u5e99\u5e9a\u5e9b\u5e9c\u5e9d\u5e9e\u5e9f\u5ea0\u5ea1\u5ea2\u5ea3\u5ea4\u5ea5\u5ea6\u5ea7\u5ea8\u5ea9\u5eaa\u5eab\u5eac\u5ead\u5eae\u5eaf\u5eb0\u5eb1\u5eb2\u5eb3\u5eb4\u5eb5\u5eb6\u5eb7\u5eb8\u5eb9\u5eba\u5ebb\u5ebc\u5ebd\u5ebe\u5ebf\u5ec0\u5ec1\u5ec2\u5ec3\u5ec4\u5ec5\u5ec6\u5ec7\u5ec8\u5ec9\u5eca\u5ecb\u5ecc\u5ecd\u5ece\u5ecf\u5ed0\u5ed1\u5ed2\u5ed3\u5ed4\u5ed5\u5ed6\u5ed7\u5ed8\u5ed9\u5eda\u5edb\u5edc\u5edd\u5ede\u5edf\u5ee0\u5ee1\u5ee2\u5ee3\u5ee4\u5ee5\u5ee6\u5ee7\u5ee8\u5ee9\u5eea\u5eeb\u5eec\u5eed\u5eee\u5eef\u5ef0\u5ef1\u5ef2\u5ef3\u5ef4\u5ef5\u5ef6\u5ef7\u5ef8\u5ef9\u5efa\u5efb\u5efc\u5efd\u5efe\u5eff\u5f00\u5f01\u5f02\u5f03\u5f04\u5f05\u5f06\u5f07\u5f08\u5f09\u5f0a\u5f0b\u5f0c\u5f0d\u5f0e\u5f0f\u5f10\u5f11\u5f12\u5f13\u5f14\u5f15\u5f16\u5f17\u5f18\u5f19\u5f1a\u5f1b\u5f1c\u5f1d\u5f1e\u5f1f\u5f20\u5f21\u5f22\u5f23\u5f24\u5f25\u5f26\u5f27\u5f28\u5f29\u5f2a\u5f2b\u5f2c\u5f2d\u5f2e\u5f2f\u5f30\u5f31\u5f32\u5f33\u5f34\u5f35\u5f36\u5f37\u5f38\u5f39\u5f3a\u5f3b\u5f3c\u5f3d\u5f3e\u5f3f\u5f40\u5f41\u5f42\u5f43\u5f44\u5f45\u5f46\u5f47\u5f48\u5f49\u5f4a\u5f4b\u5f4c\u5f4d\u5f4e\u5f4f\u5f50\u5f51\u5f52\u5f53\u5f54\u5f55\u5f56\u5f57\u5f58\u5f59\u5f5a\u5f5b\u5f5c\u5f5d\u5f5e\u5f5f\u5f60\u5f61\u5f62\u5f63\u5f64\u5f65\u5f66\u5f67\u5f68\u5f69\u5f6a\u5f6b\u5f6c\u5f6d\u5f6e\u5f6f\u5f70\u5f71\u5f72\u5f73\u5f74\u5f75\u5f76\u5f77\u5f78\u5f79\u5f7a\u5f7b\u5f7c\u5f7d\u5f7e\u5f7f\u5f80\u5f81\u5f82\u5f83\u5f84\u5f85\u5f86\u5f87\u5f88\u5f89\u5f8a\u5f8b\u5f8c\u5f8d\u5f8e\u5f8f\u5f90\u5f91\u5f92\u5f93\u5f94\u5f95\u5f96\u5f97\u5f98\u5f99\u5f9a\u5f9b\u5f9c\u5f9d\u5f9e\u5f9f\u5fa0\u5fa1\u5fa2\u5fa3\u5fa4\u5fa5\u5fa6\u5fa7\u5fa8\u5fa9\u5faa\u5fab\u5fac\u5fad\u5fae\u5faf\u5fb0\u5fb1\u5fb2\u5fb3\u5fb4\u5fb5\u5fb6\u5fb7\u5fb8\u5fb9\u5fba\u5fbb\u5fbc\u5fbd\u5fbe\u5fbf\u5fc0\u5fc1\u5fc2\u5fc3\u5fc4\u5fc5\u5fc6\u5fc7\u5fc8\u5fc9\u5fca\u5fcb\u5fcc\u5fcd\u5fce\u5fcf\u5fd0\u5fd1\u5fd2\u5fd3\u5fd4\u5fd5\u5fd6\u5fd7\u5fd8\u5fd9\u5fda\u5fdb\u5fdc\u5fdd\u5fde\u5fdf\u5fe0\u5fe1\u5fe2\u5fe3\u5fe4\u5fe5\u5fe6\u5fe7\u5fe8\u5fe9\u5fea\u5feb\u5fec\u5fed\u5fee\u5fef\u5ff0\u5ff1\u5ff2\u5ff3\u5ff4\u5ff5\u5ff6\u5ff7\u5ff8\u5ff9\u5ffa\u5ffb\u5ffc\u5ffd\u5ffe\u5fff\u6000\u6001\u6002\u6003\u6004\u6005\u6006\u6007\u6008\u6009\u600a\u600b\u600c\u600d\u600e\u600f\u6010\u6011\u6012\u6013\u6014\u6015\u6016\u6017\u6018\u6019\u601a\u601b\u601c\u601d\u601e\u601f\u6020\u6021\u6022\u6023\u6024\u6025\u6026\u6027\u6028\u6029\u602a\u602b\u602c\u602d\u602e\u602f\u6030\u6031\u6032\u6033\u6034\u6035\u6036\u6037\u6038\u6039\u603a\u603b\u603c\u603d\u603e\u603f\u6040\u6041\u6042\u6043\u6044\u6045\u6046\u6047\u6048\u6049\u604a\u604b\u604c\u604d\u604e\u604f\u6050\u6051\u6052\u6053\u6054\u6055\u6056\u6057\u6058\u6059\u605a\u605b\u605c\u605d\u605e\u605f\u6060\u6061\u6062\u6063\u6064\u6065\u6066\u6067\u6068\u6069\u606a\u606b\u606c\u606d\u606e\u606f\u6070\u6071\u6072\u6073\u6074\u6075\u6076\u6077\u6078\u6079\u607a\u607b\u607c\u607d\u607e\u607f\u6080\u6081\u6082\u6083\u6084\u6085\u6086\u6087\u6088\u6089\u608a\u608b\u608c\u608d\u608e\u608f\u6090\u6091\u6092\u6093\u6094\u6095\u6096\u6097\u6098\u6099\u609a\u609b\u609c\u609d\u609e\u609f\u60a0\u60a1\u60a2\u60a3\u60a4\u60a5\u60a6\u60a7\u60a8\u60a9\u60aa\u60ab\u60ac\u60ad\u60ae\u60af\u60b0\u60b1\u60b2\u60b3\u60b4\u60b5\u60b6\u60b7\u60b8\u60b9\u60ba\u60bb\u60bc\u60bd\u60be\u60bf\u60c0\u60c1\u60c2\u60c3\u60c4\u60c5\u60c6\u60c7\u60c8\u60c9\u60ca\u60cb\u60cc\u60cd\u60ce\u60cf\u60d0\u60d1\u60d2\u60d3\u60d4\u60d5\u60d6\u60d7\u60d8\u60d9\u60da\u60db\u60dc\u60dd\u60de\u60df\u60e0\u60e1\u60e2\u60e3\u60e4\u60e5\u60e6\u60e7\u60e8\u60e9\u60ea\u60eb\u60ec\u60ed\u60ee\u60ef\u60f0\u60f1\u60f2\u60f3\u60f4\u60f5\u60f6\u60f7\u60f8\u60f9\u60fa\u60fb\u60fc\u60fd\u60fe\u60ff\u6100\u6101\u6102\u6103\u6104\u6105\u6106\u6107\u6108\u6109\u610a\u610b\u610c\u610d\u610e\u610f\u6110\u6111\u6112\u6113\u6114\u6115\u6116\u6117\u6118\u6119\u611a\u611b\u611c\u611d\u611e\u611f\u6120\u6121\u6122\u6123\u6124\u6125\u6126\u6127\u6128\u6129\u612a\u612b\u612c\u612d\u612e\u612f\u6130\u6131\u6132\u6133\u6134\u6135\u6136\u6137\u6138\u6139\u613a\u613b\u613c\u613d\u613e\u613f\u6140\u6141\u6142\u6143\u6144\u6145\u6146\u6147\u6148\u6149\u614a\u614b\u614c\u614d\u614e\u614f\u6150\u6151\u6152\u6153\u6154\u6155\u6156\u6157\u6158\u6159\u615a\u615b\u615c\u615d\u615e\u615f\u6160\u6161\u6162\u6163\u6164\u6165\u6166\u6167\u6168\u6169\u616a\u616b\u616c\u616d\u616e\u616f\u6170\u6171\u6172\u6173\u6174\u6175\u6176\u6177\u6178\u6179\u617a\u617b\u617c\u617d\u617e\u617f\u6180\u6181\u6182\u6183\u6184\u6185\u6186\u6187\u6188\u6189\u618a\u618b\u618c\u618d\u618e\u618f\u6190\u6191\u6192\u6193\u6194\u6195\u6196\u6197\u6198\u6199\u619a\u619b\u619c\u619d\u619e\u619f\u61a0\u61a1\u61a2\u61a3\u61a4\u61a5\u61a6\u61a7\u61a8\u61a9\u61aa\u61ab\u61ac\u61ad\u61ae\u61af\u61b0\u61b1\u61b2\u61b3\u61b4\u61b5\u61b6\u61b7\u61b8\u61b9\u61ba\u61bb\u61bc\u61bd\u61be\u61bf\u61c0\u61c1\u61c2\u61c3\u61c4\u61c5\u61c6\u61c7\u61c8\u61c9\u61ca\u61cb\u61cc\u61cd\u61ce\u61cf\u61d0\u61d1\u61d2\u61d3\u61d4\u61d5\u61d6\u61d7\u61d8\u61d9\u61da\u61db\u61dc\u61dd\u61de\u61df\u61e0\u61e1\u61e2\u61e3\u61e4\u61e5\u61e6\u61e7\u61e8\u61e9\u61ea\u61eb\u61ec\u61ed\u61ee\u61ef\u61f0\u61f1\u61f2\u61f3\u61f4\u61f5\u61f6\u61f7\u61f8\u61f9\u61fa\u61fb\u61fc\u61fd\u61fe\u61ff\u6200\u6201\u6202\u6203\u6204\u6205\u6206\u6207\u6208\u6209\u620a\u620b\u620c\u620d\u620e\u620f\u6210\u6211\u6212\u6213\u6214\u6215\u6216\u6217\u6218\u6219\u621a\u621b\u621c\u621d\u621e\u621f\u6220\u6221\u6222\u6223\u6224\u6225\u6226\u6227\u6228\u6229\u622a\u622b\u622c\u622d\u622e\u622f\u6230\u6231\u6232\u6233\u6234\u6235\u6236\u6237\u6238\u6239\u623a\u623b\u623c\u623d\u623e\u623f\u6240\u6241\u6242\u6243\u6244\u6245\u6246\u6247\u6248\u6249\u624a\u624b\u624c\u624d\u624e\u624f\u6250\u6251\u6252\u6253\u6254\u6255\u6256\u6257\u6258\u6259\u625a\u625b\u625c\u625d\u625e\u625f\u6260\u6261\u6262\u6263\u6264\u6265\u6266\u6267\u6268\u6269\u626a\u626b\u626c\u626d\u626e\u626f\u6270\u6271\u6272\u6273\u6274\u6275\u6276\u6277\u6278\u6279\u627a\u627b\u627c\u627d\u627e\u627f\u6280\u6281\u6282\u6283\u6284\u6285\u6286\u6287\u6288\u6289\u628a\u628b\u628c\u628d\u628e\u628f\u6290\u6291\u6292\u6293\u6294\u6295\u6296\u6297\u6298\u6299\u629a\u629b\u629c\u629d\u629e\u629f\u62a0\u62a1\u62a2\u62a3\u62a4\u62a5\u62a6\u62a7\u62a8\u62a9\u62aa\u62ab\u62ac\u62ad\u62ae\u62af\u62b0\u62b1\u62b2\u62b3\u62b4\u62b5\u62b6\u62b7\u62b8\u62b9\u62ba\u62bb\u62bc\u62bd\u62be\u62bf\u62c0\u62c1\u62c2\u62c3\u62c4\u62c5\u62c6\u62c7\u62c8\u62c9\u62ca\u62cb\u62cc\u62cd\u62ce\u62cf\u62d0\u62d1\u62d2\u62d3\u62d4\u62d5\u62d6\u62d7\u62d8\u62d9\u62da\u62db\u62dc\u62dd\u62de\u62df\u62e0\u62e1\u62e2\u62e3\u62e4\u62e5\u62e6\u62e7\u62e8\u62e9\u62ea\u62eb\u62ec\u62ed\u62ee\u62ef\u62f0\u62f1\u62f2\u62f3\u62f4\u62f5\u62f6\u62f7\u62f8\u62f9\u62fa\u62fb\u62fc\u62fd\u62fe\u62ff\u6300\u6301\u6302\u6303\u6304\u6305\u6306\u6307\u6308\u6309\u630a\u630b\u630c\u630d\u630e\u630f\u6310\u6311\u6312\u6313\u6314\u6315\u6316\u6317\u6318\u6319\u631a\u631b\u631c\u631d\u631e\u631f\u6320\u6321\u6322\u6323\u6324\u6325\u6326\u6327\u6328\u6329\u632a\u632b\u632c\u632d\u632e\u632f\u6330\u6331\u6332\u6333\u6334\u6335\u6336\u6337\u6338\u6339\u633a\u633b\u633c\u633d\u633e\u633f\u6340\u6341\u6342\u6343\u6344\u6345\u6346\u6347\u6348\u6349\u634a\u634b\u634c\u634d\u634e\u634f\u6350\u6351\u6352\u6353\u6354\u6355\u6356\u6357\u6358\u6359\u635a\u635b\u635c\u635d\u635e\u635f\u6360\u6361\u6362\u6363\u6364\u6365\u6366\u6367\u6368\u6369\u636a\u636b\u636c\u636d\u636e\u636f\u6370\u6371\u6372\u6373\u6374\u6375\u6376\u6377\u6378\u6379\u637a\u637b\u637c\u637d\u637e\u637f\u6380\u6381\u6382\u6383\u6384\u6385\u6386\u6387\u6388\u6389\u638a\u638b\u638c\u638d\u638e\u638f\u6390\u6391\u6392\u6393\u6394\u6395\u6396\u6397\u6398\u6399\u639a\u639b\u639c\u639d\u639e\u639f\u63a0\u63a1\u63a2\u63a3\u63a4\u63a5\u63a6\u63a7\u63a8\u63a9\u63aa\u63ab\u63ac\u63ad\u63ae\u63af\u63b0\u63b1\u63b2\u63b3\u63b4\u63b5\u63b6\u63b7\u63b8\u63b9\u63ba\u63bb\u63bc\u63bd\u63be\u63bf\u63c0\u63c1\u63c2\u63c3\u63c4\u63c5\u63c6\u63c7\u63c8\u63c9\u63ca\u63cb\u63cc\u63cd\u63ce\u63cf\u63d0\u63d1\u63d2\u63d3\u63d4\u63d5\u63d6\u63d7\u63d8\u63d9\u63da\u63db\u63dc\u63dd\u63de\u63df\u63e0\u63e1\u63e2\u63e3\u63e4\u63e5\u63e6\u63e7\u63e8\u63e9\u63ea\u63eb\u63ec\u63ed\u63ee\u63ef\u63f0\u63f1\u63f2\u63f3\u63f4\u63f5\u63f6\u63f7\u63f8\u63f9\u63fa\u63fb\u63fc\u63fd\u63fe\u63ff\u6400\u6401\u6402\u6403\u6404\u6405\u6406\u6407\u6408\u6409\u640a\u640b\u640c\u640d\u640e\u640f\u6410\u6411\u6412\u6413\u6414\u6415\u6416\u6417\u6418\u6419\u641a\u641b\u641c\u641d\u641e\u641f\u6420\u6421\u6422\u6423\u6424\u6425\u6426\u6427\u6428\u6429\u642a\u642b\u642c\u642d\u642e\u642f\u6430\u6431\u6432\u6433\u6434\u6435\u6436\u6437\u6438\u6439\u643a\u643b\u643c\u643d\u643e\u643f\u6440\u6441\u6442\u6443\u6444\u6445\u6446\u6447\u6448\u6449\u644a\u644b\u644c\u644d\u644e\u644f\u6450\u6451\u6452\u6453\u6454\u6455\u6456\u6457\u6458\u6459\u645a\u645b\u645c\u645d\u645e\u645f\u6460\u6461\u6462\u6463\u6464\u6465\u6466\u6467\u6468\u6469\u646a\u646b\u646c\u646d\u646e\u646f\u6470\u6471\u6472\u6473\u6474\u6475\u6476\u6477\u6478\u6479\u647a\u647b\u647c\u647d\u647e\u647f\u6480\u6481\u6482\u6483\u6484\u6485\u6486\u6487\u6488\u6489\u648a\u648b\u648c\u648d\u648e\u648f\u6490\u6491\u6492\u6493\u6494\u6495\u6496\u6497\u6498\u6499\u649a\u649b\u649c\u649d\u649e\u649f\u64a0\u64a1\u64a2\u64a3\u64a4\u64a5\u64a6\u64a7\u64a8\u64a9\u64aa\u64ab\u64ac\u64ad\u64ae\u64af\u64b0\u64b1\u64b2\u64b3\u64b4\u64b5\u64b6\u64b7\u64b8\u64b9\u64ba\u64bb\u64bc\u64bd\u64be\u64bf\u64c0\u64c1\u64c2\u64c3\u64c4\u64c5\u64c6\u64c7\u64c8\u64c9\u64ca\u64cb\u64cc\u64cd\u64ce\u64cf\u64d0\u64d1\u64d2\u64d3\u64d4\u64d5\u64d6\u64d7\u64d8\u64d9\u64da\u64db\u64dc\u64dd\u64de\u64df\u64e0\u64e1\u64e2\u64e3\u64e4\u64e5\u64e6\u64e7\u64e8\u64e9\u64ea\u64eb\u64ec\u64ed\u64ee\u64ef\u64f0\u64f1\u64f2\u64f3\u64f4\u64f5\u64f6\u64f7\u64f8\u64f9\u64fa\u64fb\u64fc\u64fd\u64fe\u64ff\u6500\u6501\u6502\u6503\u6504\u6505\u6506\u6507\u6508\u6509\u650a\u650b\u650c\u650d\u650e\u650f\u6510\u6511\u6512\u6513\u6514\u6515\u6516\u6517\u6518\u6519\u651a\u651b\u651c\u651d\u651e\u651f\u6520\u6521\u6522\u6523\u6524\u6525\u6526\u6527\u6528\u6529\u652a\u652b\u652c\u652d\u652e\u652f\u6530\u6531\u6532\u6533\u6534\u6535\u6536\u6537\u6538\u6539\u653a\u653b\u653c\u653d\u653e\u653f\u6540\u6541\u6542\u6543\u6544\u6545\u6546\u6547\u6548\u6549\u654a\u654b\u654c\u654d\u654e\u654f\u6550\u6551\u6552\u6553\u6554\u6555\u6556\u6557\u6558\u6559\u655a\u655b\u655c\u655d\u655e\u655f\u6560\u6561\u6562\u6563\u6564\u6565\u6566\u6567\u6568\u6569\u656a\u656b\u656c\u656d\u656e\u656f\u6570\u6571\u6572\u6573\u6574\u6575\u6576\u6577\u6578\u6579\u657a\u657b\u657c\u657d\u657e\u657f\u6580\u6581\u6582\u6583\u6584\u6585\u6586\u6587\u6588\u6589\u658a\u658b\u658c\u658d\u658e\u658f\u6590\u6591\u6592\u6593\u6594\u6595\u6596\u6597\u6598\u6599\u659a\u659b\u659c\u659d\u659e\u659f\u65a0\u65a1\u65a2\u65a3\u65a4\u65a5\u65a6\u65a7\u65a8\u65a9\u65aa\u65ab\u65ac\u65ad\u65ae\u65af\u65b0\u65b1\u65b2\u65b3\u65b4\u65b5\u65b6\u65b7\u65b8\u65b9\u65ba\u65bb\u65bc\u65bd\u65be\u65bf\u65c0\u65c1\u65c2\u65c3\u65c4\u65c5\u65c6\u65c7\u65c8\u65c9\u65ca\u65cb\u65cc\u65cd\u65ce\u65cf\u65d0\u65d1\u65d2\u65d3\u65d4\u65d5\u65d6\u65d7\u65d8\u65d9\u65da\u65db\u65dc\u65dd\u65de\u65df\u65e0\u65e1\u65e2\u65e3\u65e4\u65e5\u65e6\u65e7\u65e8\u65e9\u65ea\u65eb\u65ec\u65ed\u65ee\u65ef\u65f0\u65f1\u65f2\u65f3\u65f4\u65f5\u65f6\u65f7\u65f8\u65f9\u65fa\u65fb\u65fc\u65fd\u65fe\u65ff\u6600\u6601\u6602\u6603\u6604\u6605\u6606\u6607\u6608\u6609\u660a\u660b\u660c\u660d\u660e\u660f\u6610\u6611\u6612\u6613\u6614\u6615\u6616\u6617\u6618\u6619\u661a\u661b\u661c\u661d\u661e\u661f\u6620\u6621\u6622\u6623\u6624\u6625\u6626\u6627\u6628\u6629\u662a\u662b\u662c\u662d\u662e\u662f\u6630\u6631\u6632\u6633\u6634\u6635\u6636\u6637\u6638\u6639\u663a\u663b\u663c\u663d\u663e\u663f\u6640\u6641\u6642\u6643\u6644\u6645\u6646\u6647\u6648\u6649\u664a\u664b\u664c\u664d\u664e\u664f\u6650\u6651\u6652\u6653\u6654\u6655\u6656\u6657\u6658\u6659\u665a\u665b\u665c\u665d\u665e\u665f\u6660\u6661\u6662\u6663\u6664\u6665\u6666\u6667\u6668\u6669\u666a\u666b\u666c\u666d\u666e\u666f\u6670\u6671\u6672\u6673\u6674\u6675\u6676\u6677\u6678\u6679\u667a\u667b\u667c\u667d\u667e\u667f\u6680\u6681\u6682\u6683\u6684\u6685\u6686\u6687\u6688\u6689\u668a\u668b\u668c\u668d\u668e\u668f\u6690\u6691\u6692\u6693\u6694\u6695\u6696\u6697\u6698\u6699\u669a\u669b\u669c\u669d\u669e\u669f\u66a0\u66a1\u66a2\u66a3\u66a4\u66a5\u66a6\u66a7\u66a8\u66a9\u66aa\u66ab\u66ac\u66ad\u66ae\u66af\u66b0\u66b1\u66b2\u66b3\u66b4\u66b5\u66b6\u66b7\u66b8\u66b9\u66ba\u66bb\u66bc\u66bd\u66be\u66bf\u66c0\u66c1\u66c2\u66c3\u66c4\u66c5\u66c6\u66c7\u66c8\u66c9\u66ca\u66cb\u66cc\u66cd\u66ce\u66cf\u66d0\u66d1\u66d2\u66d3\u66d4\u66d5\u66d6\u66d7\u66d8\u66d9\u66da\u66db\u66dc\u66dd\u66de\u66df\u66e0\u66e1\u66e2\u66e3\u66e4\u66e5\u66e6\u66e7\u66e8\u66e9\u66ea\u66eb\u66ec\u66ed\u66ee\u66ef\u66f0\u66f1\u66f2\u66f3\u66f4\u66f5\u66f6\u66f7\u66f8\u66f9\u66fa\u66fb\u66fc\u66fd\u66fe\u66ff\u6700\u6701\u6702\u6703\u6704\u6705\u6706\u6707\u6708\u6709\u670a\u670b\u670c\u670d\u670e\u670f\u6710\u6711\u6712\u6713\u6714\u6715\u6716\u6717\u6718\u6719\u671a\u671b\u671c\u671d\u671e\u671f\u6720\u6721\u6722\u6723\u6724\u6725\u6726\u6727\u6728\u6729\u672a\u672b\u672c\u672d\u672e\u672f\u6730\u6731\u6732\u6733\u6734\u6735\u6736\u6737\u6738\u6739\u673a\u673b\u673c\u673d\u673e\u673f\u6740\u6741\u6742\u6743\u6744\u6745\u6746\u6747\u6748\u6749\u674a\u674b\u674c\u674d\u674e\u674f\u6750\u6751\u6752\u6753\u6754\u6755\u6756\u6757\u6758\u6759\u675a\u675b\u675c\u675d\u675e\u675f\u6760\u6761\u6762\u6763\u6764\u6765\u6766\u6767\u6768\u6769\u676a\u676b\u676c\u676d\u676e\u676f\u6770\u6771\u6772\u6773\u6774\u6775\u6776\u6777\u6778\u6779\u677a\u677b\u677c\u677d\u677e\u677f\u6780\u6781\u6782\u6783\u6784\u6785\u6786\u6787\u6788\u6789\u678a\u678b\u678c\u678d\u678e\u678f\u6790\u6791\u6792\u6793\u6794\u6795\u6796\u6797\u6798\u6799\u679a\u679b\u679c\u679d\u679e\u679f\u67a0\u67a1\u67a2\u67a3\u67a4\u67a5\u67a6\u67a7\u67a8\u67a9\u67aa\u67ab\u67ac\u67ad\u67ae\u67af\u67b0\u67b1\u67b2\u67b3\u67b4\u67b5\u67b6\u67b7\u67b8\u67b9\u67ba\u67bb\u67bc\u67bd\u67be\u67bf\u67c0\u67c1\u67c2\u67c3\u67c4\u67c5\u67c6\u67c7\u67c8\u67c9\u67ca\u67cb\u67cc\u67cd\u67ce\u67cf\u67d0\u67d1\u67d2\u67d3\u67d4\u67d5\u67d6\u67d7\u67d8\u67d9\u67da\u67db\u67dc\u67dd\u67de\u67df\u67e0\u67e1\u67e2\u67e3\u67e4\u67e5\u67e6\u67e7\u67e8\u67e9\u67ea\u67eb\u67ec\u67ed\u67ee\u67ef\u67f0\u67f1\u67f2\u67f3\u67f4\u67f5\u67f6\u67f7\u67f8\u67f9\u67fa\u67fb\u67fc\u67fd\u67fe\u67ff\u6800\u6801\u6802\u6803\u6804\u6805\u6806\u6807\u6808\u6809\u680a\u680b\u680c\u680d\u680e\u680f\u6810\u6811\u6812\u6813\u6814\u6815\u6816\u6817\u6818\u6819\u681a\u681b\u681c\u681d\u681e\u681f\u6820\u6821\u6822\u6823\u6824\u6825\u6826\u6827\u6828\u6829\u682a\u682b\u682c\u682d\u682e\u682f\u6830\u6831\u6832\u6833\u6834\u6835\u6836\u6837\u6838\u6839\u683a\u683b\u683c\u683d\u683e\u683f\u6840\u6841\u6842\u6843\u6844\u6845\u6846\u6847\u6848\u6849\u684a\u684b\u684c\u684d\u684e\u684f\u6850\u6851\u6852\u6853\u6854\u6855\u6856\u6857\u6858\u6859\u685a\u685b\u685c\u685d\u685e\u685f\u6860\u6861\u6862\u6863\u6864\u6865\u6866\u6867\u6868\u6869\u686a\u686b\u686c\u686d\u686e\u686f\u6870\u6871\u6872\u6873\u6874\u6875\u6876\u6877\u6878\u6879\u687a\u687b\u687c\u687d\u687e\u687f\u6880\u6881\u6882\u6883\u6884\u6885\u6886\u6887\u6888\u6889\u688a\u688b\u688c\u688d\u688e\u688f\u6890\u6891\u6892\u6893\u6894\u6895\u6896\u6897\u6898\u6899\u689a\u689b\u689c\u689d\u689e\u689f\u68a0\u68a1\u68a2\u68a3\u68a4\u68a5\u68a6\u68a7\u68a8\u68a9\u68aa\u68ab\u68ac\u68ad\u68ae\u68af\u68b0\u68b1\u68b2\u68b3\u68b4\u68b5\u68b6\u68b7\u68b8\u68b9\u68ba\u68bb\u68bc\u68bd\u68be\u68bf\u68c0\u68c1\u68c2\u68c3\u68c4\u68c5\u68c6\u68c7\u68c8\u68c9\u68ca\u68cb\u68cc\u68cd\u68ce\u68cf\u68d0\u68d1\u68d2\u68d3\u68d4\u68d5\u68d6\u68d7\u68d8\u68d9\u68da\u68db\u68dc\u68dd\u68de\u68df\u68e0\u68e1\u68e2\u68e3\u68e4\u68e5\u68e6\u68e7\u68e8\u68e9\u68ea\u68eb\u68ec\u68ed\u68ee\u68ef\u68f0\u68f1\u68f2\u68f3\u68f4\u68f5\u68f6\u68f7\u68f8\u68f9\u68fa\u68fb\u68fc\u68fd\u68fe\u68ff\u6900\u6901\u6902\u6903\u6904\u6905\u6906\u6907\u6908\u6909\u690a\u690b\u690c\u690d\u690e\u690f\u6910\u6911\u6912\u6913\u6914\u6915\u6916\u6917\u6918\u6919\u691a\u691b\u691c\u691d\u691e\u691f\u6920\u6921\u6922\u6923\u6924\u6925\u6926\u6927\u6928\u6929\u692a\u692b\u692c\u692d\u692e\u692f\u6930\u6931\u6932\u6933\u6934\u6935\u6936\u6937\u6938\u6939\u693a\u693b\u693c\u693d\u693e\u693f\u6940\u6941\u6942\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694a\u694b\u694c\u694d\u694e\u694f\u6950\u6951\u6952\u6953\u6954\u6955\u6956\u6957\u6958\u6959\u695a\u695b\u695c\u695d\u695e\u695f\u6960\u6961\u6962\u6963\u6964\u6965\u6966\u6967\u6968\u6969\u696a\u696b\u696c\u696d\u696e\u696f\u6970\u6971\u6972\u6973\u6974\u6975\u6976\u6977\u6978\u6979\u697a\u697b\u697c\u697d\u697e\u697f\u6980\u6981\u6982\u6983\u6984\u6985\u6986\u6987\u6988\u6989\u698a\u698b\u698c\u698d\u698e\u698f\u6990\u6991\u6992\u6993\u6994\u6995\u6996\u6997\u6998\u6999\u699a\u699b\u699c\u699d\u699e\u699f\u69a0\u69a1\u69a2\u69a3\u69a4\u69a5\u69a6\u69a7\u69a8\u69a9\u69aa\u69ab\u69ac\u69ad\u69ae\u69af\u69b0\u69b1\u69b2\u69b3\u69b4\u69b5\u69b6\u69b7\u69b8\u69b9\u69ba\u69bb\u69bc\u69bd\u69be\u69bf\u69c0\u69c1\u69c2\u69c3\u69c4\u69c5\u69c6\u69c7\u69c8\u69c9\u69ca\u69cb\u69cc\u69cd\u69ce\u69cf\u69d0\u69d1\u69d2\u69d3\u69d4\u69d5\u69d6\u69d7\u69d8\u69d9\u69da\u69db\u69dc\u69dd\u69de\u69df\u69e0\u69e1\u69e2\u69e3\u69e4\u69e5\u69e6\u69e7\u69e8\u69e9\u69ea\u69eb\u69ec\u69ed\u69ee\u69ef\u69f0\u69f1\u69f2\u69f3\u69f4\u69f5\u69f6\u69f7\u69f8\u69f9\u69fa\u69fb\u69fc\u69fd\u69fe\u69ff\u6a00\u6a01\u6a02\u6a03\u6a04\u6a05\u6a06\u6a07\u6a08\u6a09\u6a0a\u6a0b\u6a0c\u6a0d\u6a0e\u6a0f\u6a10\u6a11\u6a12\u6a13\u6a14\u6a15\u6a16\u6a17\u6a18\u6a19\u6a1a\u6a1b\u6a1c\u6a1d\u6a1e\u6a1f\u6a20\u6a21\u6a22\u6a23\u6a24\u6a25\u6a26\u6a27\u6a28\u6a29\u6a2a\u6a2b\u6a2c\u6a2d\u6a2e\u6a2f\u6a30\u6a31\u6a32\u6a33\u6a34\u6a35\u6a36\u6a37\u6a38\u6a39\u6a3a\u6a3b\u6a3c\u6a3d\u6a3e\u6a3f\u6a40\u6a41\u6a42\u6a43\u6a44\u6a45\u6a46\u6a47\u6a48\u6a49\u6a4a\u6a4b\u6a4c\u6a4d\u6a4e\u6a4f\u6a50\u6a51\u6a52\u6a53\u6a54\u6a55\u6a56\u6a57\u6a58\u6a59\u6a5a\u6a5b\u6a5c\u6a5d\u6a5e\u6a5f\u6a60\u6a61\u6a62\u6a63\u6a64\u6a65\u6a66\u6a67\u6a68\u6a69\u6a6a\u6a6b\u6a6c\u6a6d\u6a6e\u6a6f\u6a70\u6a71\u6a72\u6a73\u6a74\u6a75\u6a76\u6a77\u6a78\u6a79\u6a7a\u6a7b\u6a7c\u6a7d\u6a7e\u6a7f\u6a80\u6a81\u6a82\u6a83\u6a84\u6a85\u6a86\u6a87\u6a88\u6a89\u6a8a\u6a8b\u6a8c\u6a8d\u6a8e\u6a8f\u6a90\u6a91\u6a92\u6a93\u6a94\u6a95\u6a96\u6a97\u6a98\u6a99\u6a9a\u6a9b\u6a9c\u6a9d\u6a9e\u6a9f\u6aa0\u6aa1\u6aa2\u6aa3\u6aa4\u6aa5\u6aa6\u6aa7\u6aa8\u6aa9\u6aaa\u6aab\u6aac\u6aad\u6aae\u6aaf\u6ab0\u6ab1\u6ab2\u6ab3\u6ab4\u6ab5\u6ab6\u6ab7\u6ab8\u6ab9\u6aba\u6abb\u6abc\u6abd\u6abe\u6abf\u6ac0\u6ac1\u6ac2\u6ac3\u6ac4\u6ac5\u6ac6\u6ac7\u6ac8\u6ac9\u6aca\u6acb\u6acc\u6acd\u6ace\u6acf\u6ad0\u6ad1\u6ad2\u6ad3\u6ad4\u6ad5\u6ad6\u6ad7\u6ad8\u6ad9\u6ada\u6adb\u6adc\u6add\u6ade\u6adf\u6ae0\u6ae1\u6ae2\u6ae3\u6ae4\u6ae5\u6ae6\u6ae7\u6ae8\u6ae9\u6aea\u6aeb\u6aec\u6aed\u6aee\u6aef\u6af0\u6af1\u6af2\u6af3\u6af4\u6af5\u6af6\u6af7\u6af8\u6af9\u6afa\u6afb\u6afc\u6afd\u6afe\u6aff\u6b00\u6b01\u6b02\u6b03\u6b04\u6b05\u6b06\u6b07\u6b08\u6b09\u6b0a\u6b0b\u6b0c\u6b0d\u6b0e\u6b0f\u6b10\u6b11\u6b12\u6b13\u6b14\u6b15\u6b16\u6b17\u6b18\u6b19\u6b1a\u6b1b\u6b1c\u6b1d\u6b1e\u6b1f\u6b20\u6b21\u6b22\u6b23\u6b24\u6b25\u6b26\u6b27\u6b28\u6b29\u6b2a\u6b2b\u6b2c\u6b2d\u6b2e\u6b2f\u6b30\u6b31\u6b32\u6b33\u6b34\u6b35\u6b36\u6b37\u6b38\u6b39\u6b3a\u6b3b\u6b3c\u6b3d\u6b3e\u6b3f\u6b40\u6b41\u6b42\u6b43\u6b44\u6b45\u6b46\u6b47\u6b48\u6b49\u6b4a\u6b4b\u6b4c\u6b4d\u6b4e\u6b4f\u6b50\u6b51\u6b52\u6b53\u6b54\u6b55\u6b56\u6b57\u6b58\u6b59\u6b5a\u6b5b\u6b5c\u6b5d\u6b5e\u6b5f\u6b60\u6b61\u6b62\u6b63\u6b64\u6b65\u6b66\u6b67\u6b68\u6b69\u6b6a\u6b6b\u6b6c\u6b6d\u6b6e\u6b6f\u6b70\u6b71\u6b72\u6b73\u6b74\u6b75\u6b76\u6b77\u6b78\u6b79\u6b7a\u6b7b\u6b7c\u6b7d\u6b7e\u6b7f\u6b80\u6b81\u6b82\u6b83\u6b84\u6b85\u6b86\u6b87\u6b88\u6b89\u6b8a\u6b8b\u6b8c\u6b8d\u6b8e\u6b8f\u6b90\u6b91\u6b92\u6b93\u6b94\u6b95\u6b96\u6b97\u6b98\u6b99\u6b9a\u6b9b\u6b9c\u6b9d\u6b9e\u6b9f\u6ba0\u6ba1\u6ba2\u6ba3\u6ba4\u6ba5\u6ba6\u6ba7\u6ba8\u6ba9\u6baa\u6bab\u6bac\u6bad\u6bae\u6baf\u6bb0\u6bb1\u6bb2\u6bb3\u6bb4\u6bb5\u6bb6\u6bb7\u6bb8\u6bb9\u6bba\u6bbb\u6bbc\u6bbd\u6bbe\u6bbf\u6bc0\u6bc1\u6bc2\u6bc3\u6bc4\u6bc5\u6bc6\u6bc7\u6bc8\u6bc9\u6bca\u6bcb\u6bcc\u6bcd\u6bce\u6bcf\u6bd0\u6bd1\u6bd2\u6bd3\u6bd4\u6bd5\u6bd6\u6bd7\u6bd8\u6bd9\u6bda\u6bdb\u6bdc\u6bdd\u6bde\u6bdf\u6be0\u6be1\u6be2\u6be3\u6be4\u6be5\u6be6\u6be7\u6be8\u6be9\u6bea\u6beb\u6bec\u6bed\u6bee\u6bef\u6bf0\u6bf1\u6bf2\u6bf3\u6bf4\u6bf5\u6bf6\u6bf7\u6bf8\u6bf9\u6bfa\u6bfb\u6bfc\u6bfd\u6bfe\u6bff\u6c00\u6c01\u6c02\u6c03\u6c04\u6c05\u6c06\u6c07\u6c08\u6c09\u6c0a\u6c0b\u6c0c\u6c0d\u6c0e\u6c0f\u6c10\u6c11\u6c12\u6c13\u6c14\u6c15\u6c16\u6c17\u6c18\u6c19\u6c1a\u6c1b\u6c1c\u6c1d\u6c1e\u6c1f\u6c20\u6c21\u6c22\u6c23\u6c24\u6c25\u6c26\u6c27\u6c28\u6c29\u6c2a\u6c2b\u6c2c\u6c2d\u6c2e\u6c2f\u6c30\u6c31\u6c32\u6c33\u6c34\u6c35\u6c36\u6c37\u6c38\u6c39\u6c3a\u6c3b\u6c3c\u6c3d\u6c3e\u6c3f\u6c40\u6c41\u6c42\u6c43\u6c44\u6c45\u6c46\u6c47\u6c48\u6c49\u6c4a\u6c4b\u6c4c\u6c4d\u6c4e\u6c4f\u6c50\u6c51\u6c52\u6c53\u6c54\u6c55\u6c56\u6c57\u6c58\u6c59\u6c5a\u6c5b\u6c5c\u6c5d\u6c5e\u6c5f\u6c60\u6c61\u6c62\u6c63\u6c64\u6c65\u6c66\u6c67\u6c68\u6c69\u6c6a\u6c6b\u6c6c\u6c6d\u6c6e\u6c6f\u6c70\u6c71\u6c72\u6c73\u6c74\u6c75\u6c76\u6c77\u6c78\u6c79\u6c7a\u6c7b\u6c7c\u6c7d\u6c7e\u6c7f\u6c80\u6c81\u6c82\u6c83\u6c84\u6c85\u6c86\u6c87\u6c88\u6c89\u6c8a\u6c8b\u6c8c\u6c8d\u6c8e\u6c8f\u6c90\u6c91\u6c92\u6c93\u6c94\u6c95\u6c96\u6c97\u6c98\u6c99\u6c9a\u6c9b\u6c9c\u6c9d\u6c9e\u6c9f\u6ca0\u6ca1\u6ca2\u6ca3\u6ca4\u6ca5\u6ca6\u6ca7\u6ca8\u6ca9\u6caa\u6cab\u6cac\u6cad\u6cae\u6caf\u6cb0\u6cb1\u6cb2\u6cb3\u6cb4\u6cb5\u6cb6\u6cb7\u6cb8\u6cb9\u6cba\u6cbb\u6cbc\u6cbd\u6cbe\u6cbf\u6cc0\u6cc1\u6cc2\u6cc3\u6cc4\u6cc5\u6cc6\u6cc7\u6cc8\u6cc9\u6cca\u6ccb\u6ccc\u6ccd\u6cce\u6ccf\u6cd0\u6cd1\u6cd2\u6cd3\u6cd4\u6cd5\u6cd6\u6cd7\u6cd8\u6cd9\u6cda\u6cdb\u6cdc\u6cdd\u6cde\u6cdf\u6ce0\u6ce1\u6ce2\u6ce3\u6ce4\u6ce5\u6ce6\u6ce7\u6ce8\u6ce9\u6cea\u6ceb\u6cec\u6ced\u6cee\u6cef\u6cf0\u6cf1\u6cf2\u6cf3\u6cf4\u6cf5\u6cf6\u6cf7\u6cf8\u6cf9\u6cfa\u6cfb\u6cfc\u6cfd\u6cfe\u6cff\u6d00\u6d01\u6d02\u6d03\u6d04\u6d05\u6d06\u6d07\u6d08\u6d09\u6d0a\u6d0b\u6d0c\u6d0d\u6d0e\u6d0f\u6d10\u6d11\u6d12\u6d13\u6d14\u6d15\u6d16\u6d17\u6d18\u6d19\u6d1a\u6d1b\u6d1c\u6d1d\u6d1e\u6d1f\u6d20\u6d21\u6d22\u6d23\u6d24\u6d25\u6d26\u6d27\u6d28\u6d29\u6d2a\u6d2b\u6d2c\u6d2d\u6d2e\u6d2f\u6d30\u6d31\u6d32\u6d33\u6d34\u6d35\u6d36\u6d37\u6d38\u6d39\u6d3a\u6d3b\u6d3c\u6d3d\u6d3e\u6d3f\u6d40\u6d41\u6d42\u6d43\u6d44\u6d45\u6d46\u6d47\u6d48\u6d49\u6d4a\u6d4b\u6d4c\u6d4d\u6d4e\u6d4f\u6d50\u6d51\u6d52\u6d53\u6d54\u6d55\u6d56\u6d57\u6d58\u6d59\u6d5a\u6d5b\u6d5c\u6d5d\u6d5e\u6d5f\u6d60\u6d61\u6d62\u6d63\u6d64\u6d65\u6d66\u6d67\u6d68\u6d69\u6d6a\u6d6b\u6d6c\u6d6d\u6d6e\u6d6f\u6d70\u6d71\u6d72\u6d73\u6d74\u6d75\u6d76\u6d77\u6d78\u6d79\u6d7a\u6d7b\u6d7c\u6d7d\u6d7e\u6d7f\u6d80\u6d81\u6d82\u6d83\u6d84\u6d85\u6d86\u6d87\u6d88\u6d89\u6d8a\u6d8b\u6d8c\u6d8d\u6d8e\u6d8f\u6d90\u6d91\u6d92\u6d93\u6d94\u6d95\u6d96\u6d97\u6d98\u6d99\u6d9a\u6d9b\u6d9c\u6d9d\u6d9e\u6d9f\u6da0\u6da1\u6da2\u6da3\u6da4\u6da5\u6da6\u6da7\u6da8\u6da9\u6daa\u6dab\u6dac\u6dad\u6dae\u6daf\u6db0\u6db1\u6db2\u6db3\u6db4\u6db5\u6db6\u6db7\u6db8\u6db9\u6dba\u6dbb\u6dbc\u6dbd\u6dbe\u6dbf\u6dc0\u6dc1\u6dc2\u6dc3\u6dc4\u6dc5\u6dc6\u6dc7\u6dc8\u6dc9\u6dca\u6dcb\u6dcc\u6dcd\u6dce\u6dcf\u6dd0\u6dd1\u6dd2\u6dd3\u6dd4\u6dd5\u6dd6\u6dd7\u6dd8\u6dd9\u6dda\u6ddb\u6ddc\u6ddd\u6dde\u6ddf\u6de0\u6de1\u6de2\u6de3\u6de4\u6de5\u6de6\u6de7\u6de8\u6de9\u6dea\u6deb\u6dec\u6ded\u6dee\u6def\u6df0\u6df1\u6df2\u6df3\u6df4\u6df5\u6df6\u6df7\u6df8\u6df9\u6dfa\u6dfb\u6dfc\u6dfd\u6dfe\u6dff\u6e00\u6e01\u6e02\u6e03\u6e04\u6e05\u6e06\u6e07\u6e08\u6e09\u6e0a\u6e0b\u6e0c\u6e0d\u6e0e\u6e0f\u6e10\u6e11\u6e12\u6e13\u6e14\u6e15\u6e16\u6e17\u6e18\u6e19\u6e1a\u6e1b\u6e1c\u6e1d\u6e1e\u6e1f\u6e20\u6e21\u6e22\u6e23\u6e24\u6e25\u6e26\u6e27\u6e28\u6e29\u6e2a\u6e2b\u6e2c\u6e2d\u6e2e\u6e2f\u6e30\u6e31\u6e32\u6e33\u6e34\u6e35\u6e36\u6e37\u6e38\u6e39\u6e3a\u6e3b\u6e3c\u6e3d\u6e3e\u6e3f\u6e40\u6e41\u6e42\u6e43\u6e44\u6e45\u6e46\u6e47\u6e48\u6e49\u6e4a\u6e4b\u6e4c\u6e4d\u6e4e\u6e4f\u6e50\u6e51\u6e52\u6e53\u6e54\u6e55\u6e56\u6e57\u6e58\u6e59\u6e5a\u6e5b\u6e5c\u6e5d\u6e5e\u6e5f\u6e60\u6e61\u6e62\u6e63\u6e64\u6e65\u6e66\u6e67\u6e68\u6e69\u6e6a\u6e6b\u6e6c\u6e6d\u6e6e\u6e6f\u6e70\u6e71\u6e72\u6e73\u6e74\u6e75\u6e76\u6e77\u6e78\u6e79\u6e7a\u6e7b\u6e7c\u6e7d\u6e7e\u6e7f\u6e80\u6e81\u6e82\u6e83\u6e84\u6e85\u6e86\u6e87\u6e88\u6e89\u6e8a\u6e8b\u6e8c\u6e8d\u6e8e\u6e8f\u6e90\u6e91\u6e92\u6e93\u6e94\u6e95\u6e96\u6e97\u6e98\u6e99\u6e9a\u6e9b\u6e9c\u6e9d\u6e9e\u6e9f\u6ea0\u6ea1\u6ea2\u6ea3\u6ea4\u6ea5\u6ea6\u6ea7\u6ea8\u6ea9\u6eaa\u6eab\u6eac\u6ead\u6eae\u6eaf\u6eb0\u6eb1\u6eb2\u6eb3\u6eb4\u6eb5\u6eb6\u6eb7\u6eb8\u6eb9\u6eba\u6ebb\u6ebc\u6ebd\u6ebe\u6ebf\u6ec0\u6ec1\u6ec2\u6ec3\u6ec4\u6ec5\u6ec6\u6ec7\u6ec8\u6ec9\u6eca\u6ecb\u6ecc\u6ecd\u6ece\u6ecf\u6ed0\u6ed1\u6ed2\u6ed3\u6ed4\u6ed5\u6ed6\u6ed7\u6ed8\u6ed9\u6eda\u6edb\u6edc\u6edd\u6ede\u6edf\u6ee0\u6ee1\u6ee2\u6ee3\u6ee4\u6ee5\u6ee6\u6ee7\u6ee8\u6ee9\u6eea\u6eeb\u6eec\u6eed\u6eee\u6eef\u6ef0\u6ef1\u6ef2\u6ef3\u6ef4\u6ef5\u6ef6\u6ef7\u6ef8\u6ef9\u6efa\u6efb\u6efc\u6efd\u6efe\u6eff\u6f00\u6f01\u6f02\u6f03\u6f04\u6f05\u6f06\u6f07\u6f08\u6f09\u6f0a\u6f0b\u6f0c\u6f0d\u6f0e\u6f0f\u6f10\u6f11\u6f12\u6f13\u6f14\u6f15\u6f16\u6f17\u6f18\u6f19\u6f1a\u6f1b\u6f1c\u6f1d\u6f1e\u6f1f\u6f20\u6f21\u6f22\u6f23\u6f24\u6f25\u6f26\u6f27\u6f28\u6f29\u6f2a\u6f2b\u6f2c\u6f2d\u6f2e\u6f2f\u6f30\u6f31\u6f32\u6f33\u6f34\u6f35\u6f36\u6f37\u6f38\u6f39\u6f3a\u6f3b\u6f3c\u6f3d\u6f3e\u6f3f\u6f40\u6f41\u6f42\u6f43\u6f44\u6f45\u6f46\u6f47\u6f48\u6f49\u6f4a\u6f4b\u6f4c\u6f4d\u6f4e\u6f4f\u6f50\u6f51\u6f52\u6f53\u6f54\u6f55\u6f56\u6f57\u6f58\u6f59\u6f5a\u6f5b\u6f5c\u6f5d\u6f5e\u6f5f\u6f60\u6f61\u6f62\u6f63\u6f64\u6f65\u6f66\u6f67\u6f68\u6f69\u6f6a\u6f6b\u6f6c\u6f6d\u6f6e\u6f6f\u6f70\u6f71\u6f72\u6f73\u6f74\u6f75\u6f76\u6f77\u6f78\u6f79\u6f7a\u6f7b\u6f7c\u6f7d\u6f7e\u6f7f\u6f80\u6f81\u6f82\u6f83\u6f84\u6f85\u6f86\u6f87\u6f88\u6f89\u6f8a\u6f8b\u6f8c\u6f8d\u6f8e\u6f8f\u6f90\u6f91\u6f92\u6f93\u6f94\u6f95\u6f96\u6f97\u6f98\u6f99\u6f9a\u6f9b\u6f9c\u6f9d\u6f9e\u6f9f\u6fa0\u6fa1\u6fa2\u6fa3\u6fa4\u6fa5\u6fa6\u6fa7\u6fa8\u6fa9\u6faa\u6fab\u6fac\u6fad\u6fae\u6faf\u6fb0\u6fb1\u6fb2\u6fb3\u6fb4\u6fb5\u6fb6\u6fb7\u6fb8\u6fb9\u6fba\u6fbb\u6fbc\u6fbd\u6fbe\u6fbf\u6fc0\u6fc1\u6fc2\u6fc3\u6fc4\u6fc5\u6fc6\u6fc7\u6fc8\u6fc9\u6fca\u6fcb\u6fcc\u6fcd\u6fce\u6fcf\u6fd0\u6fd1\u6fd2\u6fd3\u6fd4\u6fd5\u6fd6\u6fd7\u6fd8\u6fd9\u6fda\u6fdb\u6fdc\u6fdd\u6fde\u6fdf\u6fe0\u6fe1\u6fe2\u6fe3\u6fe4\u6fe5\u6fe6\u6fe7\u6fe8\u6fe9\u6fea\u6feb\u6fec\u6fed\u6fee\u6fef\u6ff0\u6ff1\u6ff2\u6ff3\u6ff4\u6ff5\u6ff6\u6ff7\u6ff8\u6ff9\u6ffa\u6ffb\u6ffc\u6ffd\u6ffe\u6fff\u7000\u7001\u7002\u7003\u7004\u7005\u7006\u7007\u7008\u7009\u700a\u700b\u700c\u700d\u700e\u700f\u7010\u7011\u7012\u7013\u7014\u7015\u7016\u7017\u7018\u7019\u701a\u701b\u701c\u701d\u701e\u701f\u7020\u7021\u7022\u7023\u7024\u7025\u7026\u7027\u7028\u7029\u702a\u702b\u702c\u702d\u702e\u702f\u7030\u7031\u7032\u7033\u7034\u7035\u7036\u7037\u7038\u7039\u703a\u703b\u703c\u703d\u703e\u703f\u7040\u7041\u7042\u7043\u7044\u7045\u7046\u7047\u7048\u7049\u704a\u704b\u704c\u704d\u704e\u704f\u7050\u7051\u7052\u7053\u7054\u7055\u7056\u7057\u7058\u7059\u705a\u705b\u705c\u705d\u705e\u705f\u7060\u7061\u7062\u7063\u7064\u7065\u7066\u7067\u7068\u7069\u706a\u706b\u706c\u706d\u706e\u706f\u7070\u7071\u7072\u7073\u7074\u7075\u7076\u7077\u7078\u7079\u707a\u707b\u707c\u707d\u707e\u707f\u7080\u7081\u7082\u7083\u7084\u7085\u7086\u7087\u7088\u7089\u708a\u708b\u708c\u708d\u708e\u708f\u7090\u7091\u7092\u7093\u7094\u7095\u7096\u7097\u7098\u7099\u709a\u709b\u709c\u709d\u709e\u709f\u70a0\u70a1\u70a2\u70a3\u70a4\u70a5\u70a6\u70a7\u70a8\u70a9\u70aa\u70ab\u70ac\u70ad\u70ae\u70af\u70b0\u70b1\u70b2\u70b3\u70b4\u70b5\u70b6\u70b7\u70b8\u70b9\u70ba\u70bb\u70bc\u70bd\u70be\u70bf\u70c0\u70c1\u70c2\u70c3\u70c4\u70c5\u70c6\u70c7\u70c8\u70c9\u70ca\u70cb\u70cc\u70cd\u70ce\u70cf\u70d0\u70d1\u70d2\u70d3\u70d4\u70d5\u70d6\u70d7\u70d8\u70d9\u70da\u70db\u70dc\u70dd\u70de\u70df\u70e0\u70e1\u70e2\u70e3\u70e4\u70e5\u70e6\u70e7\u70e8\u70e9\u70ea\u70eb\u70ec\u70ed\u70ee\u70ef\u70f0\u70f1\u70f2\u70f3\u70f4\u70f5\u70f6\u70f7\u70f8\u70f9\u70fa\u70fb\u70fc\u70fd\u70fe\u70ff\u7100\u7101\u7102\u7103\u7104\u7105\u7106\u7107\u7108\u7109\u710a\u710b\u710c\u710d\u710e\u710f\u7110\u7111\u7112\u7113\u7114\u7115\u7116\u7117\u7118\u7119\u711a\u711b\u711c\u711d\u711e\u711f\u7120\u7121\u7122\u7123\u7124\u7125\u7126\u7127\u7128\u7129\u712a\u712b\u712c\u712d\u712e\u712f\u7130\u7131\u7132\u7133\u7134\u7135\u7136\u7137\u7138\u7139\u713a\u713b\u713c\u713d\u713e\u713f\u7140\u7141\u7142\u7143\u7144\u7145\u7146\u7147\u7148\u7149\u714a\u714b\u714c\u714d\u714e\u714f\u7150\u7151\u7152\u7153\u7154\u7155\u7156\u7157\u7158\u7159\u715a\u715b\u715c\u715d\u715e\u715f\u7160\u7161\u7162\u7163\u7164\u7165\u7166\u7167\u7168\u7169\u716a\u716b\u716c\u716d\u716e\u716f\u7170\u7171\u7172\u7173\u7174\u7175\u7176\u7177\u7178\u7179\u717a\u717b\u717c\u717d\u717e\u717f\u7180\u7181\u7182\u7183\u7184\u7185\u7186\u7187\u7188\u7189\u718a\u718b\u718c\u718d\u718e\u718f\u7190\u7191\u7192\u7193\u7194\u7195\u7196\u7197\u7198\u7199\u719a\u719b\u719c\u719d\u719e\u719f\u71a0\u71a1\u71a2\u71a3\u71a4\u71a5\u71a6\u71a7\u71a8\u71a9\u71aa\u71ab\u71ac\u71ad\u71ae\u71af\u71b0\u71b1\u71b2\u71b3\u71b4\u71b5\u71b6\u71b7\u71b8\u71b9\u71ba\u71bb\u71bc\u71bd\u71be\u71bf\u71c0\u71c1\u71c2\u71c3\u71c4\u71c5\u71c6\u71c7\u71c8\u71c9\u71ca\u71cb\u71cc\u71cd\u71ce\u71cf\u71d0\u71d1\u71d2\u71d3\u71d4\u71d5\u71d6\u71d7\u71d8\u71d9\u71da\u71db\u71dc\u71dd\u71de\u71df\u71e0\u71e1\u71e2\u71e3\u71e4\u71e5\u71e6\u71e7\u71e8\u71e9\u71ea\u71eb\u71ec\u71ed\u71ee\u71ef\u71f0\u71f1\u71f2\u71f3\u71f4\u71f5\u71f6\u71f7\u71f8\u71f9\u71fa\u71fb\u71fc\u71fd\u71fe\u71ff\u7200\u7201\u7202\u7203\u7204\u7205\u7206\u7207\u7208\u7209\u720a\u720b\u720c\u720d\u720e\u720f\u7210\u7211\u7212\u7213\u7214\u7215\u7216\u7217\u7218\u7219\u721a\u721b\u721c\u721d\u721e\u721f\u7220\u7221\u7222\u7223\u7224\u7225\u7226\u7227\u7228\u7229\u722a\u722b\u722c\u722d\u722e\u722f\u7230\u7231\u7232\u7233\u7234\u7235\u7236\u7237\u7238\u7239\u723a\u723b\u723c\u723d\u723e\u723f\u7240\u7241\u7242\u7243\u7244\u7245\u7246\u7247\u7248\u7249\u724a\u724b\u724c\u724d\u724e\u724f\u7250\u7251\u7252\u7253\u7254\u7255\u7256\u7257\u7258\u7259\u725a\u725b\u725c\u725d\u725e\u725f\u7260\u7261\u7262\u7263\u7264\u7265\u7266\u7267\u7268\u7269\u726a\u726b\u726c\u726d\u726e\u726f\u7270\u7271\u7272\u7273\u7274\u7275\u7276\u7277\u7278\u7279\u727a\u727b\u727c\u727d\u727e\u727f\u7280\u7281\u7282\u7283\u7284\u7285\u7286\u7287\u7288\u7289\u728a\u728b\u728c\u728d\u728e\u728f\u7290\u7291\u7292\u7293\u7294\u7295\u7296\u7297\u7298\u7299\u729a\u729b\u729c\u729d\u729e\u729f\u72a0\u72a1\u72a2\u72a3\u72a4\u72a5\u72a6\u72a7\u72a8\u72a9\u72aa\u72ab\u72ac\u72ad\u72ae\u72af\u72b0\u72b1\u72b2\u72b3\u72b4\u72b5\u72b6\u72b7\u72b8\u72b9\u72ba\u72bb\u72bc\u72bd\u72be\u72bf\u72c0\u72c1\u72c2\u72c3\u72c4\u72c5\u72c6\u72c7\u72c8\u72c9\u72ca\u72cb\u72cc\u72cd\u72ce\u72cf\u72d0\u72d1\u72d2\u72d3\u72d4\u72d5\u72d6\u72d7\u72d8\u72d9\u72da\u72db\u72dc\u72dd\u72de\u72df\u72e0\u72e1\u72e2\u72e3\u72e4\u72e5\u72e6\u72e7\u72e8\u72e9\u72ea\u72eb\u72ec\u72ed\u72ee\u72ef\u72f0\u72f1\u72f2\u72f3\u72f4\u72f5\u72f6\u72f7\u72f8\u72f9\u72fa\u72fb\u72fc\u72fd\u72fe\u72ff\u7300\u7301\u7302\u7303\u7304\u7305\u7306\u7307\u7308\u7309\u730a\u730b\u730c\u730d\u730e\u730f\u7310\u7311\u7312\u7313\u7314\u7315\u7316\u7317\u7318\u7319\u731a\u731b\u731c\u731d\u731e\u731f\u7320\u7321\u7322\u7323\u7324\u7325\u7326\u7327\u7328\u7329\u732a\u732b\u732c\u732d\u732e\u732f\u7330\u7331\u7332\u7333\u7334\u7335\u7336\u7337\u7338\u7339\u733a\u733b\u733c\u733d\u733e\u733f\u7340\u7341\u7342\u7343\u7344\u7345\u7346\u7347\u7348\u7349\u734a\u734b\u734c\u734d\u734e\u734f\u7350\u7351\u7352\u7353\u7354\u7355\u7356\u7357\u7358\u7359\u735a\u735b\u735c\u735d\u735e\u735f\u7360\u7361\u7362\u7363\u7364\u7365\u7366\u7367\u7368\u7369\u736a\u736b\u736c\u736d\u736e\u736f\u7370\u7371\u7372\u7373\u7374\u7375\u7376\u7377\u7378\u7379\u737a\u737b\u737c\u737d\u737e\u737f\u7380\u7381\u7382\u7383\u7384\u7385\u7386\u7387\u7388\u7389\u738a\u738b\u738c\u738d\u738e\u738f\u7390\u7391\u7392\u7393\u7394\u7395\u7396\u7397\u7398\u7399\u739a\u739b\u739c\u739d\u739e\u739f\u73a0\u73a1\u73a2\u73a3\u73a4\u73a5\u73a6\u73a7\u73a8\u73a9\u73aa\u73ab\u73ac\u73ad\u73ae\u73af\u73b0\u73b1\u73b2\u73b3\u73b4\u73b5\u73b6\u73b7\u73b8\u73b9\u73ba\u73bb\u73bc\u73bd\u73be\u73bf\u73c0\u73c1\u73c2\u73c3\u73c4\u73c5\u73c6\u73c7\u73c8\u73c9\u73ca\u73cb\u73cc\u73cd\u73ce\u73cf\u73d0\u73d1\u73d2\u73d3\u73d4\u73d5\u73d6\u73d7\u73d8\u73d9\u73da\u73db\u73dc\u73dd\u73de\u73df\u73e0\u73e1\u73e2\u73e3\u73e4\u73e5\u73e6\u73e7\u73e8\u73e9\u73ea\u73eb\u73ec\u73ed\u73ee\u73ef\u73f0\u73f1\u73f2\u73f3\u73f4\u73f5\u73f6\u73f7\u73f8\u73f9\u73fa\u73fb\u73fc\u73fd\u73fe\u73ff\u7400\u7401\u7402\u7403\u7404\u7405\u7406\u7407\u7408\u7409\u740a\u740b\u740c\u740d\u740e\u740f\u7410\u7411\u7412\u7413\u7414\u7415\u7416\u7417\u7418\u7419\u741a\u741b\u741c\u741d\u741e\u741f\u7420\u7421\u7422\u7423\u7424\u7425\u7426\u7427\u7428\u7429\u742a\u742b\u742c\u742d\u742e\u742f\u7430\u7431\u7432\u7433\u7434\u7435\u7436\u7437\u7438\u7439\u743a\u743b\u743c\u743d\u743e\u743f\u7440\u7441\u7442\u7443\u7444\u7445\u7446\u7447\u7448\u7449\u744a\u744b\u744c\u744d\u744e\u744f\u7450\u7451\u7452\u7453\u7454\u7455\u7456\u7457\u7458\u7459\u745a\u745b\u745c\u745d\u745e\u745f\u7460\u7461\u7462\u7463\u7464\u7465\u7466\u7467\u7468\u7469\u746a\u746b\u746c\u746d\u746e\u746f\u7470\u7471\u7472\u7473\u7474\u7475\u7476\u7477\u7478\u7479\u747a\u747b\u747c\u747d\u747e\u747f\u7480\u7481\u7482\u7483\u7484\u7485\u7486\u7487\u7488\u7489\u748a\u748b\u748c\u748d\u748e\u748f\u7490\u7491\u7492\u7493\u7494\u7495\u7496\u7497\u7498\u7499\u749a\u749b\u749c\u749d\u749e\u749f\u74a0\u74a1\u74a2\u74a3\u74a4\u74a5\u74a6\u74a7\u74a8\u74a9\u74aa\u74ab\u74ac\u74ad\u74ae\u74af\u74b0\u74b1\u74b2\u74b3\u74b4\u74b5\u74b6\u74b7\u74b8\u74b9\u74ba\u74bb\u74bc\u74bd\u74be\u74bf\u74c0\u74c1\u74c2\u74c3\u74c4\u74c5\u74c6\u74c7\u74c8\u74c9\u74ca\u74cb\u74cc\u74cd\u74ce\u74cf\u74d0\u74d1\u74d2\u74d3\u74d4\u74d5\u74d6\u74d7\u74d8\u74d9\u74da\u74db\u74dc\u74dd\u74de\u74df\u74e0\u74e1\u74e2\u74e3\u74e4\u74e5\u74e6\u74e7\u74e8\u74e9\u74ea\u74eb\u74ec\u74ed\u74ee\u74ef\u74f0\u74f1\u74f2\u74f3\u74f4\u74f5\u74f6\u74f7\u74f8\u74f9\u74fa\u74fb\u74fc\u74fd\u74fe\u74ff\u7500\u7501\u7502\u7503\u7504\u7505\u7506\u7507\u7508\u7509\u750a\u750b\u750c\u750d\u750e\u750f\u7510\u7511\u7512\u7513\u7514\u7515\u7516\u7517\u7518\u7519\u751a\u751b\u751c\u751d\u751e\u751f\u7520\u7521\u7522\u7523\u7524\u7525\u7526\u7527\u7528\u7529\u752a\u752b\u752c\u752d\u752e\u752f\u7530\u7531\u7532\u7533\u7534\u7535\u7536\u7537\u7538\u7539\u753a\u753b\u753c\u753d\u753e\u753f\u7540\u7541\u7542\u7543\u7544\u7545\u7546\u7547\u7548\u7549\u754a\u754b\u754c\u754d\u754e\u754f\u7550\u7551\u7552\u7553\u7554\u7555\u7556\u7557\u7558\u7559\u755a\u755b\u755c\u755d\u755e\u755f\u7560\u7561\u7562\u7563\u7564\u7565\u7566\u7567\u7568\u7569\u756a\u756b\u756c\u756d\u756e\u756f\u7570\u7571\u7572\u7573\u7574\u7575\u7576\u7577\u7578\u7579\u757a\u757b\u757c\u757d\u757e\u757f\u7580\u7581\u7582\u7583\u7584\u7585\u7586\u7587\u7588\u7589\u758a\u758b\u758c\u758d\u758e\u758f\u7590\u7591\u7592\u7593\u7594\u7595\u7596\u7597\u7598\u7599\u759a\u759b\u759c\u759d\u759e\u759f\u75a0\u75a1\u75a2\u75a3\u75a4\u75a5\u75a6\u75a7\u75a8\u75a9\u75aa\u75ab\u75ac\u75ad\u75ae\u75af\u75b0\u75b1\u75b2\u75b3\u75b4\u75b5\u75b6\u75b7\u75b8\u75b9\u75ba\u75bb\u75bc\u75bd\u75be\u75bf\u75c0\u75c1\u75c2\u75c3\u75c4\u75c5\u75c6\u75c7\u75c8\u75c9\u75ca\u75cb\u75cc\u75cd\u75ce\u75cf\u75d0\u75d1\u75d2\u75d3\u75d4\u75d5\u75d6\u75d7\u75d8\u75d9\u75da\u75db\u75dc\u75dd\u75de\u75df\u75e0\u75e1\u75e2\u75e3\u75e4\u75e5\u75e6\u75e7\u75e8\u75e9\u75ea\u75eb\u75ec\u75ed\u75ee\u75ef\u75f0\u75f1\u75f2\u75f3\u75f4\u75f5\u75f6\u75f7\u75f8\u75f9\u75fa\u75fb\u75fc\u75fd\u75fe\u75ff\u7600\u7601\u7602\u7603\u7604\u7605\u7606\u7607\u7608\u7609\u760a\u760b\u760c\u760d\u760e\u760f\u7610\u7611\u7612\u7613\u7614\u7615\u7616\u7617\u7618\u7619\u761a\u761b\u761c\u761d\u761e\u761f\u7620\u7621\u7622\u7623\u7624\u7625\u7626\u7627\u7628\u7629\u762a\u762b\u762c\u762d\u762e\u762f\u7630\u7631\u7632\u7633\u7634\u7635\u7636\u7637\u7638\u7639\u763a\u763b\u763c\u763d\u763e\u763f\u7640\u7641\u7642\u7643\u7644\u7645\u7646\u7647\u7648\u7649\u764a\u764b\u764c\u764d\u764e\u764f\u7650\u7651\u7652\u7653\u7654\u7655\u7656\u7657\u7658\u7659\u765a\u765b\u765c\u765d\u765e\u765f\u7660\u7661\u7662\u7663\u7664\u7665\u7666\u7667\u7668\u7669\u766a\u766b\u766c\u766d\u766e\u766f\u7670\u7671\u7672\u7673\u7674\u7675\u7676\u7677\u7678\u7679\u767a\u767b\u767c\u767d\u767e\u767f\u7680\u7681\u7682\u7683\u7684\u7685\u7686\u7687\u7688\u7689\u768a\u768b\u768c\u768d\u768e\u768f\u7690\u7691\u7692\u7693\u7694\u7695\u7696\u7697\u7698\u7699\u769a\u769b\u769c\u769d\u769e\u769f\u76a0\u76a1\u76a2\u76a3\u76a4\u76a5\u76a6\u76a7\u76a8\u76a9\u76aa\u76ab\u76ac\u76ad\u76ae\u76af\u76b0\u76b1\u76b2\u76b3\u76b4\u76b5\u76b6\u76b7\u76b8\u76b9\u76ba\u76bb\u76bc\u76bd\u76be\u76bf\u76c0\u76c1\u76c2\u76c3\u76c4\u76c5\u76c6\u76c7\u76c8\u76c9\u76ca\u76cb\u76cc\u76cd\u76ce\u76cf\u76d0\u76d1\u76d2\u76d3\u76d4\u76d5\u76d6\u76d7\u76d8\u76d9\u76da\u76db\u76dc\u76dd\u76de\u76df\u76e0\u76e1\u76e2\u76e3\u76e4\u76e5\u76e6\u76e7\u76e8\u76e9\u76ea\u76eb\u76ec\u76ed\u76ee\u76ef\u76f0\u76f1\u76f2\u76f3\u76f4\u76f5\u76f6\u76f7\u76f8\u76f9\u76fa\u76fb\u76fc\u76fd\u76fe\u76ff\u7700\u7701\u7702\u7703\u7704\u7705\u7706\u7707\u7708\u7709\u770a\u770b\u770c\u770d\u770e\u770f\u7710\u7711\u7712\u7713\u7714\u7715\u7716\u7717\u7718\u7719\u771a\u771b\u771c\u771d\u771e\u771f\u7720\u7721\u7722\u7723\u7724\u7725\u7726\u7727\u7728\u7729\u772a\u772b\u772c\u772d\u772e\u772f\u7730\u7731\u7732\u7733\u7734\u7735\u7736\u7737\u7738\u7739\u773a\u773b\u773c\u773d\u773e\u773f\u7740\u7741\u7742\u7743\u7744\u7745\u7746\u7747\u7748\u7749\u774a\u774b\u774c\u774d\u774e\u774f\u7750\u7751\u7752\u7753\u7754\u7755\u7756\u7757\u7758\u7759\u775a\u775b\u775c\u775d\u775e\u775f\u7760\u7761\u7762\u7763\u7764\u7765\u7766\u7767\u7768\u7769\u776a\u776b\u776c\u776d\u776e\u776f\u7770\u7771\u7772\u7773\u7774\u7775\u7776\u7777\u7778\u7779\u777a\u777b\u777c\u777d\u777e\u777f\u7780\u7781\u7782\u7783\u7784\u7785\u7786\u7787\u7788\u7789\u778a\u778b\u778c\u778d\u778e\u778f\u7790\u7791\u7792\u7793\u7794\u7795\u7796\u7797\u7798\u7799\u779a\u779b\u779c\u779d\u779e\u779f\u77a0\u77a1\u77a2\u77a3\u77a4\u77a5\u77a6\u77a7\u77a8\u77a9\u77aa\u77ab\u77ac\u77ad\u77ae\u77af\u77b0\u77b1\u77b2\u77b3\u77b4\u77b5\u77b6\u77b7\u77b8\u77b9\u77ba\u77bb\u77bc\u77bd\u77be\u77bf\u77c0\u77c1\u77c2\u77c3\u77c4\u77c5\u77c6\u77c7\u77c8\u77c9\u77ca\u77cb\u77cc\u77cd\u77ce\u77cf\u77d0\u77d1\u77d2\u77d3\u77d4\u77d5\u77d6\u77d7\u77d8\u77d9\u77da\u77db\u77dc\u77dd\u77de\u77df\u77e0\u77e1\u77e2\u77e3\u77e4\u77e5\u77e6\u77e7\u77e8\u77e9\u77ea\u77eb\u77ec\u77ed\u77ee\u77ef\u77f0\u77f1\u77f2\u77f3\u77f4\u77f5\u77f6\u77f7\u77f8\u77f9\u77fa\u77fb\u77fc\u77fd\u77fe\u77ff\u7800\u7801\u7802\u7803\u7804\u7805\u7806\u7807\u7808\u7809\u780a\u780b\u780c\u780d\u780e\u780f\u7810\u7811\u7812\u7813\u7814\u7815\u7816\u7817\u7818\u7819\u781a\u781b\u781c\u781d\u781e\u781f\u7820\u7821\u7822\u7823\u7824\u7825\u7826\u7827\u7828\u7829\u782a\u782b\u782c\u782d\u782e\u782f\u7830\u7831\u7832\u7833\u7834\u7835\u7836\u7837\u7838\u7839\u783a\u783b\u783c\u783d\u783e\u783f\u7840\u7841\u7842\u7843\u7844\u7845\u7846\u7847\u7848\u7849\u784a\u784b\u784c\u784d\u784e\u784f\u7850\u7851\u7852\u7853\u7854\u7855\u7856\u7857\u7858\u7859\u785a\u785b\u785c\u785d\u785e\u785f\u7860\u7861\u7862\u7863\u7864\u7865\u7866\u7867\u7868\u7869\u786a\u786b\u786c\u786d\u786e\u786f\u7870\u7871\u7872\u7873\u7874\u7875\u7876\u7877\u7878\u7879\u787a\u787b\u787c\u787d\u787e\u787f\u7880\u7881\u7882\u7883\u7884\u7885\u7886\u7887\u7888\u7889\u788a\u788b\u788c\u788d\u788e\u788f\u7890\u7891\u7892\u7893\u7894\u7895\u7896\u7897\u7898\u7899\u789a\u789b\u789c\u789d\u789e\u789f\u78a0\u78a1\u78a2\u78a3\u78a4\u78a5\u78a6\u78a7\u78a8\u78a9\u78aa\u78ab\u78ac\u78ad\u78ae\u78af\u78b0\u78b1\u78b2\u78b3\u78b4\u78b5\u78b6\u78b7\u78b8\u78b9\u78ba\u78bb\u78bc\u78bd\u78be\u78bf\u78c0\u78c1\u78c2\u78c3\u78c4\u78c5\u78c6\u78c7\u78c8\u78c9\u78ca\u78cb\u78cc\u78cd\u78ce\u78cf\u78d0\u78d1\u78d2\u78d3\u78d4\u78d5\u78d6\u78d7\u78d8\u78d9\u78da\u78db\u78dc\u78dd\u78de\u78df\u78e0\u78e1\u78e2\u78e3\u78e4\u78e5\u78e6\u78e7\u78e8\u78e9\u78ea\u78eb\u78ec\u78ed\u78ee\u78ef\u78f0\u78f1\u78f2\u78f3\u78f4\u78f5\u78f6\u78f7\u78f8\u78f9\u78fa\u78fb\u78fc\u78fd\u78fe\u78ff\u7900\u7901\u7902\u7903\u7904\u7905\u7906\u7907\u7908\u7909\u790a\u790b\u790c\u790d\u790e\u790f\u7910\u7911\u7912\u7913\u7914\u7915\u7916\u7917\u7918\u7919\u791a\u791b\u791c\u791d\u791e\u791f\u7920\u7921\u7922\u7923\u7924\u7925\u7926\u7927\u7928\u7929\u792a\u792b\u792c\u792d\u792e\u792f\u7930\u7931\u7932\u7933\u7934\u7935\u7936\u7937\u7938\u7939\u793a\u793b\u793c\u793d\u793e\u793f\u7940\u7941\u7942\u7943\u7944\u7945\u7946\u7947\u7948\u7949\u794a\u794b\u794c\u794d\u794e\u794f\u7950\u7951\u7952\u7953\u7954\u7955\u7956\u7957\u7958\u7959\u795a\u795b\u795c\u795d\u795e\u795f\u7960\u7961\u7962\u7963\u7964\u7965\u7966\u7967\u7968\u7969\u796a\u796b\u796c\u796d\u796e\u796f\u7970\u7971\u7972\u7973\u7974\u7975\u7976\u7977\u7978\u7979\u797a\u797b\u797c\u797d\u797e\u797f\u7980\u7981\u7982\u7983\u7984\u7985\u7986\u7987\u7988\u7989\u798a\u798b\u798c\u798d\u798e\u798f\u7990\u7991\u7992\u7993\u7994\u7995\u7996\u7997\u7998\u7999\u799a\u799b\u799c\u799d\u799e\u799f\u79a0\u79a1\u79a2\u79a3\u79a4\u79a5\u79a6\u79a7\u79a8\u79a9\u79aa\u79ab\u79ac\u79ad\u79ae\u79af\u79b0\u79b1\u79b2\u79b3\u79b4\u79b5\u79b6\u79b7\u79b8\u79b9\u79ba\u79bb\u79bc\u79bd\u79be\u79bf\u79c0\u79c1\u79c2\u79c3\u79c4\u79c5\u79c6\u79c7\u79c8\u79c9\u79ca\u79cb\u79cc\u79cd\u79ce\u79cf\u79d0\u79d1\u79d2\u79d3\u79d4\u79d5\u79d6\u79d7\u79d8\u79d9\u79da\u79db\u79dc\u79dd\u79de\u79df\u79e0\u79e1\u79e2\u79e3\u79e4\u79e5\u79e6\u79e7\u79e8\u79e9\u79ea\u79eb\u79ec\u79ed\u79ee\u79ef\u79f0\u79f1\u79f2\u79f3\u79f4\u79f5\u79f6\u79f7\u79f8\u79f9\u79fa\u79fb\u79fc\u79fd\u79fe\u79ff\u7a00\u7a01\u7a02\u7a03\u7a04\u7a05\u7a06\u7a07\u7a08\u7a09\u7a0a\u7a0b\u7a0c\u7a0d\u7a0e\u7a0f\u7a10\u7a11\u7a12\u7a13\u7a14\u7a15\u7a16\u7a17\u7a18\u7a19\u7a1a\u7a1b\u7a1c\u7a1d\u7a1e\u7a1f\u7a20\u7a21\u7a22\u7a23\u7a24\u7a25\u7a26\u7a27\u7a28\u7a29\u7a2a\u7a2b\u7a2c\u7a2d\u7a2e\u7a2f\u7a30\u7a31\u7a32\u7a33\u7a34\u7a35\u7a36\u7a37\u7a38\u7a39\u7a3a\u7a3b\u7a3c\u7a3d\u7a3e\u7a3f\u7a40\u7a41\u7a42\u7a43\u7a44\u7a45\u7a46\u7a47\u7a48\u7a49\u7a4a\u7a4b\u7a4c\u7a4d\u7a4e\u7a4f\u7a50\u7a51\u7a52\u7a53\u7a54\u7a55\u7a56\u7a57\u7a58\u7a59\u7a5a\u7a5b\u7a5c\u7a5d\u7a5e\u7a5f\u7a60\u7a61\u7a62\u7a63\u7a64\u7a65\u7a66\u7a67\u7a68\u7a69\u7a6a\u7a6b\u7a6c\u7a6d\u7a6e\u7a6f\u7a70\u7a71\u7a72\u7a73\u7a74\u7a75\u7a76\u7a77\u7a78\u7a79\u7a7a\u7a7b\u7a7c\u7a7d\u7a7e\u7a7f\u7a80\u7a81\u7a82\u7a83\u7a84\u7a85\u7a86\u7a87\u7a88\u7a89\u7a8a\u7a8b\u7a8c\u7a8d\u7a8e\u7a8f\u7a90\u7a91\u7a92\u7a93\u7a94\u7a95\u7a96\u7a97\u7a98\u7a99\u7a9a\u7a9b\u7a9c\u7a9d\u7a9e\u7a9f\u7aa0\u7aa1\u7aa2\u7aa3\u7aa4\u7aa5\u7aa6\u7aa7\u7aa8\u7aa9\u7aaa\u7aab\u7aac\u7aad\u7aae\u7aaf\u7ab0\u7ab1\u7ab2\u7ab3\u7ab4\u7ab5\u7ab6\u7ab7\u7ab8\u7ab9\u7aba\u7abb\u7abc\u7abd\u7abe\u7abf\u7ac0\u7ac1\u7ac2\u7ac3\u7ac4\u7ac5\u7ac6\u7ac7\u7ac8\u7ac9\u7aca\u7acb\u7acc\u7acd\u7ace\u7acf\u7ad0\u7ad1\u7ad2\u7ad3\u7ad4\u7ad5\u7ad6\u7ad7\u7ad8\u7ad9\u7ada\u7adb\u7adc\u7add\u7ade\u7adf\u7ae0\u7ae1\u7ae2\u7ae3\u7ae4\u7ae5\u7ae6\u7ae7\u7ae8\u7ae9\u7aea\u7aeb\u7aec\u7aed\u7aee\u7aef\u7af0\u7af1\u7af2\u7af3\u7af4\u7af5\u7af6\u7af7\u7af8\u7af9\u7afa\u7afb\u7afc\u7afd\u7afe\u7aff\u7b00\u7b01\u7b02\u7b03\u7b04\u7b05\u7b06\u7b07\u7b08\u7b09\u7b0a\u7b0b\u7b0c\u7b0d\u7b0e\u7b0f\u7b10\u7b11\u7b12\u7b13\u7b14\u7b15\u7b16\u7b17\u7b18\u7b19\u7b1a\u7b1b\u7b1c\u7b1d\u7b1e\u7b1f\u7b20\u7b21\u7b22\u7b23\u7b24\u7b25\u7b26\u7b27\u7b28\u7b29\u7b2a\u7b2b\u7b2c\u7b2d\u7b2e\u7b2f\u7b30\u7b31\u7b32\u7b33\u7b34\u7b35\u7b36\u7b37\u7b38\u7b39\u7b3a\u7b3b\u7b3c\u7b3d\u7b3e\u7b3f\u7b40\u7b41\u7b42\u7b43\u7b44\u7b45\u7b46\u7b47\u7b48\u7b49\u7b4a\u7b4b\u7b4c\u7b4d\u7b4e\u7b4f\u7b50\u7b51\u7b52\u7b53\u7b54\u7b55\u7b56\u7b57\u7b58\u7b59\u7b5a\u7b5b\u7b5c\u7b5d\u7b5e\u7b5f\u7b60\u7b61\u7b62\u7b63\u7b64\u7b65\u7b66\u7b67\u7b68\u7b69\u7b6a\u7b6b\u7b6c\u7b6d\u7b6e\u7b6f\u7b70\u7b71\u7b72\u7b73\u7b74\u7b75\u7b76\u7b77\u7b78\u7b79\u7b7a\u7b7b\u7b7c\u7b7d\u7b7e\u7b7f\u7b80\u7b81\u7b82\u7b83\u7b84\u7b85\u7b86\u7b87\u7b88\u7b89\u7b8a\u7b8b\u7b8c\u7b8d\u7b8e\u7b8f\u7b90\u7b91\u7b92\u7b93\u7b94\u7b95\u7b96\u7b97\u7b98\u7b99\u7b9a\u7b9b\u7b9c\u7b9d\u7b9e\u7b9f\u7ba0\u7ba1\u7ba2\u7ba3\u7ba4\u7ba5\u7ba6\u7ba7\u7ba8\u7ba9\u7baa\u7bab\u7bac\u7bad\u7bae\u7baf\u7bb0\u7bb1\u7bb2\u7bb3\u7bb4\u7bb5\u7bb6\u7bb7\u7bb8\u7bb9\u7bba\u7bbb\u7bbc\u7bbd\u7bbe\u7bbf\u7bc0\u7bc1\u7bc2\u7bc3\u7bc4\u7bc5\u7bc6\u7bc7\u7bc8\u7bc9\u7bca\u7bcb\u7bcc\u7bcd\u7bce\u7bcf\u7bd0\u7bd1\u7bd2\u7bd3\u7bd4\u7bd5\u7bd6\u7bd7\u7bd8\u7bd9\u7bda\u7bdb\u7bdc\u7bdd\u7bde\u7bdf\u7be0\u7be1\u7be2\u7be3\u7be4\u7be5\u7be6\u7be7\u7be8\u7be9\u7bea\u7beb\u7bec\u7bed\u7bee\u7bef\u7bf0\u7bf1\u7bf2\u7bf3\u7bf4\u7bf5\u7bf6\u7bf7\u7bf8\u7bf9\u7bfa\u7bfb\u7bfc\u7bfd\u7bfe\u7bff\u7c00\u7c01\u7c02\u7c03\u7c04\u7c05\u7c06\u7c07\u7c08\u7c09\u7c0a\u7c0b\u7c0c\u7c0d\u7c0e\u7c0f\u7c10\u7c11\u7c12\u7c13\u7c14\u7c15\u7c16\u7c17\u7c18\u7c19\u7c1a\u7c1b\u7c1c\u7c1d\u7c1e\u7c1f\u7c20\u7c21\u7c22\u7c23\u7c24\u7c25\u7c26\u7c27\u7c28\u7c29\u7c2a\u7c2b\u7c2c\u7c2d\u7c2e\u7c2f\u7c30\u7c31\u7c32\u7c33\u7c34\u7c35\u7c36\u7c37\u7c38\u7c39\u7c3a\u7c3b\u7c3c\u7c3d\u7c3e\u7c3f\u7c40\u7c41\u7c42\u7c43\u7c44\u7c45\u7c46\u7c47\u7c48\u7c49\u7c4a\u7c4b\u7c4c\u7c4d\u7c4e\u7c4f\u7c50\u7c51\u7c52\u7c53\u7c54\u7c55\u7c56\u7c57\u7c58\u7c59\u7c5a\u7c5b\u7c5c\u7c5d\u7c5e\u7c5f\u7c60\u7c61\u7c62\u7c63\u7c64\u7c65\u7c66\u7c67\u7c68\u7c69\u7c6a\u7c6b\u7c6c\u7c6d\u7c6e\u7c6f\u7c70\u7c71\u7c72\u7c73\u7c74\u7c75\u7c76\u7c77\u7c78\u7c79\u7c7a\u7c7b\u7c7c\u7c7d\u7c7e\u7c7f\u7c80\u7c81\u7c82\u7c83\u7c84\u7c85\u7c86\u7c87\u7c88\u7c89\u7c8a\u7c8b\u7c8c\u7c8d\u7c8e\u7c8f\u7c90\u7c91\u7c92\u7c93\u7c94\u7c95\u7c96\u7c97\u7c98\u7c99\u7c9a\u7c9b\u7c9c\u7c9d\u7c9e\u7c9f\u7ca0\u7ca1\u7ca2\u7ca3\u7ca4\u7ca5\u7ca6\u7ca7\u7ca8\u7ca9\u7caa\u7cab\u7cac\u7cad\u7cae\u7caf\u7cb0\u7cb1\u7cb2\u7cb3\u7cb4\u7cb5\u7cb6\u7cb7\u7cb8\u7cb9\u7cba\u7cbb\u7cbc\u7cbd\u7cbe\u7cbf\u7cc0\u7cc1\u7cc2\u7cc3\u7cc4\u7cc5\u7cc6\u7cc7\u7cc8\u7cc9\u7cca\u7ccb\u7ccc\u7ccd\u7cce\u7ccf\u7cd0\u7cd1\u7cd2\u7cd3\u7cd4\u7cd5\u7cd6\u7cd7\u7cd8\u7cd9\u7cda\u7cdb\u7cdc\u7cdd\u7cde\u7cdf\u7ce0\u7ce1\u7ce2\u7ce3\u7ce4\u7ce5\u7ce6\u7ce7\u7ce8\u7ce9\u7cea\u7ceb\u7cec\u7ced\u7cee\u7cef\u7cf0\u7cf1\u7cf2\u7cf3\u7cf4\u7cf5\u7cf6\u7cf7\u7cf8\u7cf9\u7cfa\u7cfb\u7cfc\u7cfd\u7cfe\u7cff\u7d00\u7d01\u7d02\u7d03\u7d04\u7d05\u7d06\u7d07\u7d08\u7d09\u7d0a\u7d0b\u7d0c\u7d0d\u7d0e\u7d0f\u7d10\u7d11\u7d12\u7d13\u7d14\u7d15\u7d16\u7d17\u7d18\u7d19\u7d1a\u7d1b\u7d1c\u7d1d\u7d1e\u7d1f\u7d20\u7d21\u7d22\u7d23\u7d24\u7d25\u7d26\u7d27\u7d28\u7d29\u7d2a\u7d2b\u7d2c\u7d2d\u7d2e\u7d2f\u7d30\u7d31\u7d32\u7d33\u7d34\u7d35\u7d36\u7d37\u7d38\u7d39\u7d3a\u7d3b\u7d3c\u7d3d\u7d3e\u7d3f\u7d40\u7d41\u7d42\u7d43\u7d44\u7d45\u7d46\u7d47\u7d48\u7d49\u7d4a\u7d4b\u7d4c\u7d4d\u7d4e\u7d4f\u7d50\u7d51\u7d52\u7d53\u7d54\u7d55\u7d56\u7d57\u7d58\u7d59\u7d5a\u7d5b\u7d5c\u7d5d\u7d5e\u7d5f\u7d60\u7d61\u7d62\u7d63\u7d64\u7d65\u7d66\u7d67\u7d68\u7d69\u7d6a\u7d6b\u7d6c\u7d6d\u7d6e\u7d6f\u7d70\u7d71\u7d72\u7d73\u7d74\u7d75\u7d76\u7d77\u7d78\u7d79\u7d7a\u7d7b\u7d7c\u7d7d\u7d7e\u7d7f\u7d80\u7d81\u7d82\u7d83\u7d84\u7d85\u7d86\u7d87\u7d88\u7d89\u7d8a\u7d8b\u7d8c\u7d8d\u7d8e\u7d8f\u7d90\u7d91\u7d92\u7d93\u7d94\u7d95\u7d96\u7d97\u7d98\u7d99\u7d9a\u7d9b\u7d9c\u7d9d\u7d9e\u7d9f\u7da0\u7da1\u7da2\u7da3\u7da4\u7da5\u7da6\u7da7\u7da8\u7da9\u7daa\u7dab\u7dac\u7dad\u7dae\u7daf\u7db0\u7db1\u7db2\u7db3\u7db4\u7db5\u7db6\u7db7\u7db8\u7db9\u7dba\u7dbb\u7dbc\u7dbd\u7dbe\u7dbf\u7dc0\u7dc1\u7dc2\u7dc3\u7dc4\u7dc5\u7dc6\u7dc7\u7dc8\u7dc9\u7dca\u7dcb\u7dcc\u7dcd\u7dce\u7dcf\u7dd0\u7dd1\u7dd2\u7dd3\u7dd4\u7dd5\u7dd6\u7dd7\u7dd8\u7dd9\u7dda\u7ddb\u7ddc\u7ddd\u7dde\u7ddf\u7de0\u7de1\u7de2\u7de3\u7de4\u7de5\u7de6\u7de7\u7de8\u7de9\u7dea\u7deb\u7dec\u7ded\u7dee\u7def\u7df0\u7df1\u7df2\u7df3\u7df4\u7df5\u7df6\u7df7\u7df8\u7df9\u7dfa\u7dfb\u7dfc\u7dfd\u7dfe\u7dff\u7e00\u7e01\u7e02\u7e03\u7e04\u7e05\u7e06\u7e07\u7e08\u7e09\u7e0a\u7e0b\u7e0c\u7e0d\u7e0e\u7e0f\u7e10\u7e11\u7e12\u7e13\u7e14\u7e15\u7e16\u7e17\u7e18\u7e19\u7e1a\u7e1b\u7e1c\u7e1d\u7e1e\u7e1f\u7e20\u7e21\u7e22\u7e23\u7e24\u7e25\u7e26\u7e27\u7e28\u7e29\u7e2a\u7e2b\u7e2c\u7e2d\u7e2e\u7e2f\u7e30\u7e31\u7e32\u7e33\u7e34\u7e35\u7e36\u7e37\u7e38\u7e39\u7e3a\u7e3b\u7e3c\u7e3d\u7e3e\u7e3f\u7e40\u7e41\u7e42\u7e43\u7e44\u7e45\u7e46\u7e47\u7e48\u7e49\u7e4a\u7e4b\u7e4c\u7e4d\u7e4e\u7e4f\u7e50\u7e51\u7e52\u7e53\u7e54\u7e55\u7e56\u7e57\u7e58\u7e59\u7e5a\u7e5b\u7e5c\u7e5d\u7e5e\u7e5f\u7e60\u7e61\u7e62\u7e63\u7e64\u7e65\u7e66\u7e67\u7e68\u7e69\u7e6a\u7e6b\u7e6c\u7e6d\u7e6e\u7e6f\u7e70\u7e71\u7e72\u7e73\u7e74\u7e75\u7e76\u7e77\u7e78\u7e79\u7e7a\u7e7b\u7e7c\u7e7d\u7e7e\u7e7f\u7e80\u7e81\u7e82\u7e83\u7e84\u7e85\u7e86\u7e87\u7e88\u7e89\u7e8a\u7e8b\u7e8c\u7e8d\u7e8e\u7e8f\u7e90\u7e91\u7e92\u7e93\u7e94\u7e95\u7e96\u7e97\u7e98\u7e99\u7e9a\u7e9b\u7e9c\u7e9d\u7e9e\u7e9f\u7ea0\u7ea1\u7ea2\u7ea3\u7ea4\u7ea5\u7ea6\u7ea7\u7ea8\u7ea9\u7eaa\u7eab\u7eac\u7ead\u7eae\u7eaf\u7eb0\u7eb1\u7eb2\u7eb3\u7eb4\u7eb5\u7eb6\u7eb7\u7eb8\u7eb9\u7eba\u7ebb\u7ebc\u7ebd\u7ebe\u7ebf\u7ec0\u7ec1\u7ec2\u7ec3\u7ec4\u7ec5\u7ec6\u7ec7\u7ec8\u7ec9\u7eca\u7ecb\u7ecc\u7ecd\u7ece\u7ecf\u7ed0\u7ed1\u7ed2\u7ed3\u7ed4\u7ed5\u7ed6\u7ed7\u7ed8\u7ed9\u7eda\u7edb\u7edc\u7edd\u7ede\u7edf\u7ee0\u7ee1\u7ee2\u7ee3\u7ee4\u7ee5\u7ee6\u7ee7\u7ee8\u7ee9\u7eea\u7eeb\u7eec\u7eed\u7eee\u7eef\u7ef0\u7ef1\u7ef2\u7ef3\u7ef4\u7ef5\u7ef6\u7ef7\u7ef8\u7ef9\u7efa\u7efb\u7efc\u7efd\u7efe\u7eff\u7f00\u7f01\u7f02\u7f03\u7f04\u7f05\u7f06\u7f07\u7f08\u7f09\u7f0a\u7f0b\u7f0c\u7f0d\u7f0e\u7f0f\u7f10\u7f11\u7f12\u7f13\u7f14\u7f15\u7f16\u7f17\u7f18\u7f19\u7f1a\u7f1b\u7f1c\u7f1d\u7f1e\u7f1f\u7f20\u7f21\u7f22\u7f23\u7f24\u7f25\u7f26\u7f27\u7f28\u7f29\u7f2a\u7f2b\u7f2c\u7f2d\u7f2e\u7f2f\u7f30\u7f31\u7f32\u7f33\u7f34\u7f35\u7f36\u7f37\u7f38\u7f39\u7f3a\u7f3b\u7f3c\u7f3d\u7f3e\u7f3f\u7f40\u7f41\u7f42\u7f43\u7f44\u7f45\u7f46\u7f47\u7f48\u7f49\u7f4a\u7f4b\u7f4c\u7f4d\u7f4e\u7f4f\u7f50\u7f51\u7f52\u7f53\u7f54\u7f55\u7f56\u7f57\u7f58\u7f59\u7f5a\u7f5b\u7f5c\u7f5d\u7f5e\u7f5f\u7f60\u7f61\u7f62\u7f63\u7f64\u7f65\u7f66\u7f67\u7f68\u7f69\u7f6a\u7f6b\u7f6c\u7f6d\u7f6e\u7f6f\u7f70\u7f71\u7f72\u7f73\u7f74\u7f75\u7f76\u7f77\u7f78\u7f79\u7f7a\u7f7b\u7f7c\u7f7d\u7f7e\u7f7f\u7f80\u7f81\u7f82\u7f83\u7f84\u7f85\u7f86\u7f87\u7f88\u7f89\u7f8a\u7f8b\u7f8c\u7f8d\u7f8e\u7f8f\u7f90\u7f91\u7f92\u7f93\u7f94\u7f95\u7f96\u7f97\u7f98\u7f99\u7f9a\u7f9b\u7f9c\u7f9d\u7f9e\u7f9f\u7fa0\u7fa1\u7fa2\u7fa3\u7fa4\u7fa5\u7fa6\u7fa7\u7fa8\u7fa9\u7faa\u7fab\u7fac\u7fad\u7fae\u7faf\u7fb0\u7fb1\u7fb2\u7fb3\u7fb4\u7fb5\u7fb6\u7fb7\u7fb8\u7fb9\u7fba\u7fbb\u7fbc\u7fbd\u7fbe\u7fbf\u7fc0\u7fc1\u7fc2\u7fc3\u7fc4\u7fc5\u7fc6\u7fc7\u7fc8\u7fc9\u7fca\u7fcb\u7fcc\u7fcd\u7fce\u7fcf\u7fd0\u7fd1\u7fd2\u7fd3\u7fd4\u7fd5\u7fd6\u7fd7\u7fd8\u7fd9\u7fda\u7fdb\u7fdc\u7fdd\u7fde\u7fdf\u7fe0\u7fe1\u7fe2\u7fe3\u7fe4\u7fe5\u7fe6\u7fe7\u7fe8\u7fe9\u7fea\u7feb\u7fec\u7fed\u7fee\u7fef\u7ff0\u7ff1\u7ff2\u7ff3\u7ff4\u7ff5\u7ff6\u7ff7\u7ff8\u7ff9\u7ffa\u7ffb\u7ffc\u7ffd\u7ffe\u7fff\u8000\u8001\u8002\u8003\u8004\u8005\u8006\u8007\u8008\u8009\u800a\u800b\u800c\u800d\u800e\u800f\u8010\u8011\u8012\u8013\u8014\u8015\u8016\u8017\u8018\u8019\u801a\u801b\u801c\u801d\u801e\u801f\u8020\u8021\u8022\u8023\u8024\u8025\u8026\u8027\u8028\u8029\u802a\u802b\u802c\u802d\u802e\u802f\u8030\u8031\u8032\u8033\u8034\u8035\u8036\u8037\u8038\u8039\u803a\u803b\u803c\u803d\u803e\u803f\u8040\u8041\u8042\u8043\u8044\u8045\u8046\u8047\u8048\u8049\u804a\u804b\u804c\u804d\u804e\u804f\u8050\u8051\u8052\u8053\u8054\u8055\u8056\u8057\u8058\u8059\u805a\u805b\u805c\u805d\u805e\u805f\u8060\u8061\u8062\u8063\u8064\u8065\u8066\u8067\u8068\u8069\u806a\u806b\u806c\u806d\u806e\u806f\u8070\u8071\u8072\u8073\u8074\u8075\u8076\u8077\u8078\u8079\u807a\u807b\u807c\u807d\u807e\u807f\u8080\u8081\u8082\u8083\u8084\u8085\u8086\u8087\u8088\u8089\u808a\u808b\u808c\u808d\u808e\u808f\u8090\u8091\u8092\u8093\u8094\u8095\u8096\u8097\u8098\u8099\u809a\u809b\u809c\u809d\u809e\u809f\u80a0\u80a1\u80a2\u80a3\u80a4\u80a5\u80a6\u80a7\u80a8\u80a9\u80aa\u80ab\u80ac\u80ad\u80ae\u80af\u80b0\u80b1\u80b2\u80b3\u80b4\u80b5\u80b6\u80b7\u80b8\u80b9\u80ba\u80bb\u80bc\u80bd\u80be\u80bf\u80c0\u80c1\u80c2\u80c3\u80c4\u80c5\u80c6\u80c7\u80c8\u80c9\u80ca\u80cb\u80cc\u80cd\u80ce\u80cf\u80d0\u80d1\u80d2\u80d3\u80d4\u80d5\u80d6\u80d7\u80d8\u80d9\u80da\u80db\u80dc\u80dd\u80de\u80df\u80e0\u80e1\u80e2\u80e3\u80e4\u80e5\u80e6\u80e7\u80e8\u80e9\u80ea\u80eb\u80ec\u80ed\u80ee\u80ef\u80f0\u80f1\u80f2\u80f3\u80f4\u80f5\u80f6\u80f7\u80f8\u80f9\u80fa\u80fb\u80fc\u80fd\u80fe\u80ff\u8100\u8101\u8102\u8103\u8104\u8105\u8106\u8107\u8108\u8109\u810a\u810b\u810c\u810d\u810e\u810f\u8110\u8111\u8112\u8113\u8114\u8115\u8116\u8117\u8118\u8119\u811a\u811b\u811c\u811d\u811e\u811f\u8120\u8121\u8122\u8123\u8124\u8125\u8126\u8127\u8128\u8129\u812a\u812b\u812c\u812d\u812e\u812f\u8130\u8131\u8132\u8133\u8134\u8135\u8136\u8137\u8138\u8139\u813a\u813b\u813c\u813d\u813e\u813f\u8140\u8141\u8142\u8143\u8144\u8145\u8146\u8147\u8148\u8149\u814a\u814b\u814c\u814d\u814e\u814f\u8150\u8151\u8152\u8153\u8154\u8155\u8156\u8157\u8158\u8159\u815a\u815b\u815c\u815d\u815e\u815f\u8160\u8161\u8162\u8163\u8164\u8165\u8166\u8167\u8168\u8169\u816a\u816b\u816c\u816d\u816e\u816f\u8170\u8171\u8172\u8173\u8174\u8175\u8176\u8177\u8178\u8179\u817a\u817b\u817c\u817d\u817e\u817f\u8180\u8181\u8182\u8183\u8184\u8185\u8186\u8187\u8188\u8189\u818a\u818b\u818c\u818d\u818e\u818f\u8190\u8191\u8192\u8193\u8194\u8195\u8196\u8197\u8198\u8199\u819a\u819b\u819c\u819d\u819e\u819f\u81a0\u81a1\u81a2\u81a3\u81a4\u81a5\u81a6\u81a7\u81a8\u81a9\u81aa\u81ab\u81ac\u81ad\u81ae\u81af\u81b0\u81b1\u81b2\u81b3\u81b4\u81b5\u81b6\u81b7\u81b8\u81b9\u81ba\u81bb\u81bc\u81bd\u81be\u81bf\u81c0\u81c1\u81c2\u81c3\u81c4\u81c5\u81c6\u81c7\u81c8\u81c9\u81ca\u81cb\u81cc\u81cd\u81ce\u81cf\u81d0\u81d1\u81d2\u81d3\u81d4\u81d5\u81d6\u81d7\u81d8\u81d9\u81da\u81db\u81dc\u81dd\u81de\u81df\u81e0\u81e1\u81e2\u81e3\u81e4\u81e5\u81e6\u81e7\u81e8\u81e9\u81ea\u81eb\u81ec\u81ed\u81ee\u81ef\u81f0\u81f1\u81f2\u81f3\u81f4\u81f5\u81f6\u81f7\u81f8\u81f9\u81fa\u81fb\u81fc\u81fd\u81fe\u81ff\u8200\u8201\u8202\u8203\u8204\u8205\u8206\u8207\u8208\u8209\u820a\u820b\u820c\u820d\u820e\u820f\u8210\u8211\u8212\u8213\u8214\u8215\u8216\u8217\u8218\u8219\u821a\u821b\u821c\u821d\u821e\u821f\u8220\u8221\u8222\u8223\u8224\u8225\u8226\u8227\u8228\u8229\u822a\u822b\u822c\u822d\u822e\u822f\u8230\u8231\u8232\u8233\u8234\u8235\u8236\u8237\u8238\u8239\u823a\u823b\u823c\u823d\u823e\u823f\u8240\u8241\u8242\u8243\u8244\u8245\u8246\u8247\u8248\u8249\u824a\u824b\u824c\u824d\u824e\u824f\u8250\u8251\u8252\u8253\u8254\u8255\u8256\u8257\u8258\u8259\u825a\u825b\u825c\u825d\u825e\u825f\u8260\u8261\u8262\u8263\u8264\u8265\u8266\u8267\u8268\u8269\u826a\u826b\u826c\u826d\u826e\u826f\u8270\u8271\u8272\u8273\u8274\u8275\u8276\u8277\u8278\u8279\u827a\u827b\u827c\u827d\u827e\u827f\u8280\u8281\u8282\u8283\u8284\u8285\u8286\u8287\u8288\u8289\u828a\u828b\u828c\u828d\u828e\u828f\u8290\u8291\u8292\u8293\u8294\u8295\u8296\u8297\u8298\u8299\u829a\u829b\u829c\u829d\u829e\u829f\u82a0\u82a1\u82a2\u82a3\u82a4\u82a5\u82a6\u82a7\u82a8\u82a9\u82aa\u82ab\u82ac\u82ad\u82ae\u82af\u82b0\u82b1\u82b2\u82b3\u82b4\u82b5\u82b6\u82b7\u82b8\u82b9\u82ba\u82bb\u82bc\u82bd\u82be\u82bf\u82c0\u82c1\u82c2\u82c3\u82c4\u82c5\u82c6\u82c7\u82c8\u82c9\u82ca\u82cb\u82cc\u82cd\u82ce\u82cf\u82d0\u82d1\u82d2\u82d3\u82d4\u82d5\u82d6\u82d7\u82d8\u82d9\u82da\u82db\u82dc\u82dd\u82de\u82df\u82e0\u82e1\u82e2\u82e3\u82e4\u82e5\u82e6\u82e7\u82e8\u82e9\u82ea\u82eb\u82ec\u82ed\u82ee\u82ef\u82f0\u82f1\u82f2\u82f3\u82f4\u82f5\u82f6\u82f7\u82f8\u82f9\u82fa\u82fb\u82fc\u82fd\u82fe\u82ff\u8300\u8301\u8302\u8303\u8304\u8305\u8306\u8307\u8308\u8309\u830a\u830b\u830c\u830d\u830e\u830f\u8310\u8311\u8312\u8313\u8314\u8315\u8316\u8317\u8318\u8319\u831a\u831b\u831c\u831d\u831e\u831f\u8320\u8321\u8322\u8323\u8324\u8325\u8326\u8327\u8328\u8329\u832a\u832b\u832c\u832d\u832e\u832f\u8330\u8331\u8332\u8333\u8334\u8335\u8336\u8337\u8338\u8339\u833a\u833b\u833c\u833d\u833e\u833f\u8340\u8341\u8342\u8343\u8344\u8345\u8346\u8347\u8348\u8349\u834a\u834b\u834c\u834d\u834e\u834f\u8350\u8351\u8352\u8353\u8354\u8355\u8356\u8357\u8358\u8359\u835a\u835b\u835c\u835d\u835e\u835f\u8360\u8361\u8362\u8363\u8364\u8365\u8366\u8367\u8368\u8369\u836a\u836b\u836c\u836d\u836e\u836f\u8370\u8371\u8372\u8373\u8374\u8375\u8376\u8377\u8378\u8379\u837a\u837b\u837c\u837d\u837e\u837f\u8380\u8381\u8382\u8383\u8384\u8385\u8386\u8387\u8388\u8389\u838a\u838b\u838c\u838d\u838e\u838f\u8390\u8391\u8392\u8393\u8394\u8395\u8396\u8397\u8398\u8399\u839a\u839b\u839c\u839d\u839e\u839f\u83a0\u83a1\u83a2\u83a3\u83a4\u83a5\u83a6\u83a7\u83a8\u83a9\u83aa\u83ab\u83ac\u83ad\u83ae\u83af\u83b0\u83b1\u83b2\u83b3\u83b4\u83b5\u83b6\u83b7\u83b8\u83b9\u83ba\u83bb\u83bc\u83bd\u83be\u83bf\u83c0\u83c1\u83c2\u83c3\u83c4\u83c5\u83c6\u83c7\u83c8\u83c9\u83ca\u83cb\u83cc\u83cd\u83ce\u83cf\u83d0\u83d1\u83d2\u83d3\u83d4\u83d5\u83d6\u83d7\u83d8\u83d9\u83da\u83db\u83dc\u83dd\u83de\u83df\u83e0\u83e1\u83e2\u83e3\u83e4\u83e5\u83e6\u83e7\u83e8\u83e9\u83ea\u83eb\u83ec\u83ed\u83ee\u83ef\u83f0\u83f1\u83f2\u83f3\u83f4\u83f5\u83f6\u83f7\u83f8\u83f9\u83fa\u83fb\u83fc\u83fd\u83fe\u83ff\u8400\u8401\u8402\u8403\u8404\u8405\u8406\u8407\u8408\u8409\u840a\u840b\u840c\u840d\u840e\u840f\u8410\u8411\u8412\u8413\u8414\u8415\u8416\u8417\u8418\u8419\u841a\u841b\u841c\u841d\u841e\u841f\u8420\u8421\u8422\u8423\u8424\u8425\u8426\u8427\u8428\u8429\u842a\u842b\u842c\u842d\u842e\u842f\u8430\u8431\u8432\u8433\u8434\u8435\u8436\u8437\u8438\u8439\u843a\u843b\u843c\u843d\u843e\u843f\u8440\u8441\u8442\u8443\u8444\u8445\u8446\u8447\u8448\u8449\u844a\u844b\u844c\u844d\u844e\u844f\u8450\u8451\u8452\u8453\u8454\u8455\u8456\u8457\u8458\u8459\u845a\u845b\u845c\u845d\u845e\u845f\u8460\u8461\u8462\u8463\u8464\u8465\u8466\u8467\u8468\u8469\u846a\u846b\u846c\u846d\u846e\u846f\u8470\u8471\u8472\u8473\u8474\u8475\u8476\u8477\u8478\u8479\u847a\u847b\u847c\u847d\u847e\u847f\u8480\u8481\u8482\u8483\u8484\u8485\u8486\u8487\u8488\u8489\u848a\u848b\u848c\u848d\u848e\u848f\u8490\u8491\u8492\u8493\u8494\u8495\u8496\u8497\u8498\u8499\u849a\u849b\u849c\u849d\u849e\u849f\u84a0\u84a1\u84a2\u84a3\u84a4\u84a5\u84a6\u84a7\u84a8\u84a9\u84aa\u84ab\u84ac\u84ad\u84ae\u84af\u84b0\u84b1\u84b2\u84b3\u84b4\u84b5\u84b6\u84b7\u84b8\u84b9\u84ba\u84bb\u84bc\u84bd\u84be\u84bf\u84c0\u84c1\u84c2\u84c3\u84c4\u84c5\u84c6\u84c7\u84c8\u84c9\u84ca\u84cb\u84cc\u84cd\u84ce\u84cf\u84d0\u84d1\u84d2\u84d3\u84d4\u84d5\u84d6\u84d7\u84d8\u84d9\u84da\u84db\u84dc\u84dd\u84de\u84df\u84e0\u84e1\u84e2\u84e3\u84e4\u84e5\u84e6\u84e7\u84e8\u84e9\u84ea\u84eb\u84ec\u84ed\u84ee\u84ef\u84f0\u84f1\u84f2\u84f3\u84f4\u84f5\u84f6\u84f7\u84f8\u84f9\u84fa\u84fb\u84fc\u84fd\u84fe\u84ff\u8500\u8501\u8502\u8503\u8504\u8505\u8506\u8507\u8508\u8509\u850a\u850b\u850c\u850d\u850e\u850f\u8510\u8511\u8512\u8513\u8514\u8515\u8516\u8517\u8518\u8519\u851a\u851b\u851c\u851d\u851e\u851f\u8520\u8521\u8522\u8523\u8524\u8525\u8526\u8527\u8528\u8529\u852a\u852b\u852c\u852d\u852e\u852f\u8530\u8531\u8532\u8533\u8534\u8535\u8536\u8537\u8538\u8539\u853a\u853b\u853c\u853d\u853e\u853f\u8540\u8541\u8542\u8543\u8544\u8545\u8546\u8547\u8548\u8549\u854a\u854b\u854c\u854d\u854e\u854f\u8550\u8551\u8552\u8553\u8554\u8555\u8556\u8557\u8558\u8559\u855a\u855b\u855c\u855d\u855e\u855f\u8560\u8561\u8562\u8563\u8564\u8565\u8566\u8567\u8568\u8569\u856a\u856b\u856c\u856d\u856e\u856f\u8570\u8571\u8572\u8573\u8574\u8575\u8576\u8577\u8578\u8579\u857a\u857b\u857c\u857d\u857e\u857f\u8580\u8581\u8582\u8583\u8584\u8585\u8586\u8587\u8588\u8589\u858a\u858b\u858c\u858d\u858e\u858f\u8590\u8591\u8592\u8593\u8594\u8595\u8596\u8597\u8598\u8599\u859a\u859b\u859c\u859d\u859e\u859f\u85a0\u85a1\u85a2\u85a3\u85a4\u85a5\u85a6\u85a7\u85a8\u85a9\u85aa\u85ab\u85ac\u85ad\u85ae\u85af\u85b0\u85b1\u85b2\u85b3\u85b4\u85b5\u85b6\u85b7\u85b8\u85b9\u85ba\u85bb\u85bc\u85bd\u85be\u85bf\u85c0\u85c1\u85c2\u85c3\u85c4\u85c5\u85c6\u85c7\u85c8\u85c9\u85ca\u85cb\u85cc\u85cd\u85ce\u85cf\u85d0\u85d1\u85d2\u85d3\u85d4\u85d5\u85d6\u85d7\u85d8\u85d9\u85da\u85db\u85dc\u85dd\u85de\u85df\u85e0\u85e1\u85e2\u85e3\u85e4\u85e5\u85e6\u85e7\u85e8\u85e9\u85ea\u85eb\u85ec\u85ed\u85ee\u85ef\u85f0\u85f1\u85f2\u85f3\u85f4\u85f5\u85f6\u85f7\u85f8\u85f9\u85fa\u85fb\u85fc\u85fd\u85fe\u85ff\u8600\u8601\u8602\u8603\u8604\u8605\u8606\u8607\u8608\u8609\u860a\u860b\u860c\u860d\u860e\u860f\u8610\u8611\u8612\u8613\u8614\u8615\u8616\u8617\u8618\u8619\u861a\u861b\u861c\u861d\u861e\u861f\u8620\u8621\u8622\u8623\u8624\u8625\u8626\u8627\u8628\u8629\u862a\u862b\u862c\u862d\u862e\u862f\u8630\u8631\u8632\u8633\u8634\u8635\u8636\u8637\u8638\u8639\u863a\u863b\u863c\u863d\u863e\u863f\u8640\u8641\u8642\u8643\u8644\u8645\u8646\u8647\u8648\u8649\u864a\u864b\u864c\u864d\u864e\u864f\u8650\u8651\u8652\u8653\u8654\u8655\u8656\u8657\u8658\u8659\u865a\u865b\u865c\u865d\u865e\u865f\u8660\u8661\u8662\u8663\u8664\u8665\u8666\u8667\u8668\u8669\u866a\u866b\u866c\u866d\u866e\u866f\u8670\u8671\u8672\u8673\u8674\u8675\u8676\u8677\u8678\u8679\u867a\u867b\u867c\u867d\u867e\u867f\u8680\u8681\u8682\u8683\u8684\u8685\u8686\u8687\u8688\u8689\u868a\u868b\u868c\u868d\u868e\u868f\u8690\u8691\u8692\u8693\u8694\u8695\u8696\u8697\u8698\u8699\u869a\u869b\u869c\u869d\u869e\u869f\u86a0\u86a1\u86a2\u86a3\u86a4\u86a5\u86a6\u86a7\u86a8\u86a9\u86aa\u86ab\u86ac\u86ad\u86ae\u86af\u86b0\u86b1\u86b2\u86b3\u86b4\u86b5\u86b6\u86b7\u86b8\u86b9\u86ba\u86bb\u86bc\u86bd\u86be\u86bf\u86c0\u86c1\u86c2\u86c3\u86c4\u86c5\u86c6\u86c7\u86c8\u86c9\u86ca\u86cb\u86cc\u86cd\u86ce\u86cf\u86d0\u86d1\u86d2\u86d3\u86d4\u86d5\u86d6\u86d7\u86d8\u86d9\u86da\u86db\u86dc\u86dd\u86de\u86df\u86e0\u86e1\u86e2\u86e3\u86e4\u86e5\u86e6\u86e7\u86e8\u86e9\u86ea\u86eb\u86ec\u86ed\u86ee\u86ef\u86f0\u86f1\u86f2\u86f3\u86f4\u86f5\u86f6\u86f7\u86f8\u86f9\u86fa\u86fb\u86fc\u86fd\u86fe\u86ff\u8700\u8701\u8702\u8703\u8704\u8705\u8706\u8707\u8708\u8709\u870a\u870b\u870c\u870d\u870e\u870f\u8710\u8711\u8712\u8713\u8714\u8715\u8716\u8717\u8718\u8719\u871a\u871b\u871c\u871d\u871e\u871f\u8720\u8721\u8722\u8723\u8724\u8725\u8726\u8727\u8728\u8729\u872a\u872b\u872c\u872d\u872e\u872f\u8730\u8731\u8732\u8733\u8734\u8735\u8736\u8737\u8738\u8739\u873a\u873b\u873c\u873d\u873e\u873f\u8740\u8741\u8742\u8743\u8744\u8745\u8746\u8747\u8748\u8749\u874a\u874b\u874c\u874d\u874e\u874f\u8750\u8751\u8752\u8753\u8754\u8755\u8756\u8757\u8758\u8759\u875a\u875b\u875c\u875d\u875e\u875f\u8760\u8761\u8762\u8763\u8764\u8765\u8766\u8767\u8768\u8769\u876a\u876b\u876c\u876d\u876e\u876f\u8770\u8771\u8772\u8773\u8774\u8775\u8776\u8777\u8778\u8779\u877a\u877b\u877c\u877d\u877e\u877f\u8780\u8781\u8782\u8783\u8784\u8785\u8786\u8787\u8788\u8789\u878a\u878b\u878c\u878d\u878e\u878f\u8790\u8791\u8792\u8793\u8794\u8795\u8796\u8797\u8798\u8799\u879a\u879b\u879c\u879d\u879e\u879f\u87a0\u87a1\u87a2\u87a3\u87a4\u87a5\u87a6\u87a7\u87a8\u87a9\u87aa\u87ab\u87ac\u87ad\u87ae\u87af\u87b0\u87b1\u87b2\u87b3\u87b4\u87b5\u87b6\u87b7\u87b8\u87b9\u87ba\u87bb\u87bc\u87bd\u87be\u87bf\u87c0\u87c1\u87c2\u87c3\u87c4\u87c5\u87c6\u87c7\u87c8\u87c9\u87ca\u87cb\u87cc\u87cd\u87ce\u87cf\u87d0\u87d1\u87d2\u87d3\u87d4\u87d5\u87d6\u87d7\u87d8\u87d9\u87da\u87db\u87dc\u87dd\u87de\u87df\u87e0\u87e1\u87e2\u87e3\u87e4\u87e5\u87e6\u87e7\u87e8\u87e9\u87ea\u87eb\u87ec\u87ed\u87ee\u87ef\u87f0\u87f1\u87f2\u87f3\u87f4\u87f5\u87f6\u87f7\u87f8\u87f9\u87fa\u87fb\u87fc\u87fd\u87fe\u87ff\u8800\u8801\u8802\u8803\u8804\u8805\u8806\u8807\u8808\u8809\u880a\u880b\u880c\u880d\u880e\u880f\u8810\u8811\u8812\u8813\u8814\u8815\u8816\u8817\u8818\u8819\u881a\u881b\u881c\u881d\u881e\u881f\u8820\u8821\u8822\u8823\u8824\u8825\u8826\u8827\u8828\u8829\u882a\u882b\u882c\u882d\u882e\u882f\u8830\u8831\u8832\u8833\u8834\u8835\u8836\u8837\u8838\u8839\u883a\u883b\u883c\u883d\u883e\u883f\u8840\u8841\u8842\u8843\u8844\u8845\u8846\u8847\u8848\u8849\u884a\u884b\u884c\u884d\u884e\u884f\u8850\u8851\u8852\u8853\u8854\u8855\u8856\u8857\u8858\u8859\u885a\u885b\u885c\u885d\u885e\u885f\u8860\u8861\u8862\u8863\u8864\u8865\u8866\u8867\u8868\u8869\u886a\u886b\u886c\u886d\u886e\u886f\u8870\u8871\u8872\u8873\u8874\u8875\u8876\u8877\u8878\u8879\u887a\u887b\u887c\u887d\u887e\u887f\u8880\u8881\u8882\u8883\u8884\u8885\u8886\u8887\u8888\u8889\u888a\u888b\u888c\u888d\u888e\u888f\u8890\u8891\u8892\u8893\u8894\u8895\u8896\u8897\u8898\u8899\u889a\u889b\u889c\u889d\u889e\u889f\u88a0\u88a1\u88a2\u88a3\u88a4\u88a5\u88a6\u88a7\u88a8\u88a9\u88aa\u88ab\u88ac\u88ad\u88ae\u88af\u88b0\u88b1\u88b2\u88b3\u88b4\u88b5\u88b6\u88b7\u88b8\u88b9\u88ba\u88bb\u88bc\u88bd\u88be\u88bf\u88c0\u88c1\u88c2\u88c3\u88c4\u88c5\u88c6\u88c7\u88c8\u88c9\u88ca\u88cb\u88cc\u88cd\u88ce\u88cf\u88d0\u88d1\u88d2\u88d3\u88d4\u88d5\u88d6\u88d7\u88d8\u88d9\u88da\u88db\u88dc\u88dd\u88de\u88df\u88e0\u88e1\u88e2\u88e3\u88e4\u88e5\u88e6\u88e7\u88e8\u88e9\u88ea\u88eb\u88ec\u88ed\u88ee\u88ef\u88f0\u88f1\u88f2\u88f3\u88f4\u88f5\u88f6\u88f7\u88f8\u88f9\u88fa\u88fb\u88fc\u88fd\u88fe\u88ff\u8900\u8901\u8902\u8903\u8904\u8905\u8906\u8907\u8908\u8909\u890a\u890b\u890c\u890d\u890e\u890f\u8910\u8911\u8912\u8913\u8914\u8915\u8916\u8917\u8918\u8919\u891a\u891b\u891c\u891d\u891e\u891f\u8920\u8921\u8922\u8923\u8924\u8925\u8926\u8927\u8928\u8929\u892a\u892b\u892c\u892d\u892e\u892f\u8930\u8931\u8932\u8933\u8934\u8935\u8936\u8937\u8938\u8939\u893a\u893b\u893c\u893d\u893e\u893f\u8940\u8941\u8942\u8943\u8944\u8945\u8946\u8947\u8948\u8949\u894a\u894b\u894c\u894d\u894e\u894f\u8950\u8951\u8952\u8953\u8954\u8955\u8956\u8957\u8958\u8959\u895a\u895b\u895c\u895d\u895e\u895f\u8960\u8961\u8962\u8963\u8964\u8965\u8966\u8967\u8968\u8969\u896a\u896b\u896c\u896d\u896e\u896f\u8970\u8971\u8972\u8973\u8974\u8975\u8976\u8977\u8978\u8979\u897a\u897b\u897c\u897d\u897e\u897f\u8980\u8981\u8982\u8983\u8984\u8985\u8986\u8987\u8988\u8989\u898a\u898b\u898c\u898d\u898e\u898f\u8990\u8991\u8992\u8993\u8994\u8995\u8996\u8997\u8998\u8999\u899a\u899b\u899c\u899d\u899e\u899f\u89a0\u89a1\u89a2\u89a3\u89a4\u89a5\u89a6\u89a7\u89a8\u89a9\u89aa\u89ab\u89ac\u89ad\u89ae\u89af\u89b0\u89b1\u89b2\u89b3\u89b4\u89b5\u89b6\u89b7\u89b8\u89b9\u89ba\u89bb\u89bc\u89bd\u89be\u89bf\u89c0\u89c1\u89c2\u89c3\u89c4\u89c5\u89c6\u89c7\u89c8\u89c9\u89ca\u89cb\u89cc\u89cd\u89ce\u89cf\u89d0\u89d1\u89d2\u89d3\u89d4\u89d5\u89d6\u89d7\u89d8\u89d9\u89da\u89db\u89dc\u89dd\u89de\u89df\u89e0\u89e1\u89e2\u89e3\u89e4\u89e5\u89e6\u89e7\u89e8\u89e9\u89ea\u89eb\u89ec\u89ed\u89ee\u89ef\u89f0\u89f1\u89f2\u89f3\u89f4\u89f5\u89f6\u89f7\u89f8\u89f9\u89fa\u89fb\u89fc\u89fd\u89fe\u89ff\u8a00\u8a01\u8a02\u8a03\u8a04\u8a05\u8a06\u8a07\u8a08\u8a09\u8a0a\u8a0b\u8a0c\u8a0d\u8a0e\u8a0f\u8a10\u8a11\u8a12\u8a13\u8a14\u8a15\u8a16\u8a17\u8a18\u8a19\u8a1a\u8a1b\u8a1c\u8a1d\u8a1e\u8a1f\u8a20\u8a21\u8a22\u8a23\u8a24\u8a25\u8a26\u8a27\u8a28\u8a29\u8a2a\u8a2b\u8a2c\u8a2d\u8a2e\u8a2f\u8a30\u8a31\u8a32\u8a33\u8a34\u8a35\u8a36\u8a37\u8a38\u8a39\u8a3a\u8a3b\u8a3c\u8a3d\u8a3e\u8a3f\u8a40\u8a41\u8a42\u8a43\u8a44\u8a45\u8a46\u8a47\u8a48\u8a49\u8a4a\u8a4b\u8a4c\u8a4d\u8a4e\u8a4f\u8a50\u8a51\u8a52\u8a53\u8a54\u8a55\u8a56\u8a57\u8a58\u8a59\u8a5a\u8a5b\u8a5c\u8a5d\u8a5e\u8a5f\u8a60\u8a61\u8a62\u8a63\u8a64\u8a65\u8a66\u8a67\u8a68\u8a69\u8a6a\u8a6b\u8a6c\u8a6d\u8a6e\u8a6f\u8a70\u8a71\u8a72\u8a73\u8a74\u8a75\u8a76\u8a77\u8a78\u8a79\u8a7a\u8a7b\u8a7c\u8a7d\u8a7e\u8a7f\u8a80\u8a81\u8a82\u8a83\u8a84\u8a85\u8a86\u8a87\u8a88\u8a89\u8a8a\u8a8b\u8a8c\u8a8d\u8a8e\u8a8f\u8a90\u8a91\u8a92\u8a93\u8a94\u8a95\u8a96\u8a97\u8a98\u8a99\u8a9a\u8a9b\u8a9c\u8a9d\u8a9e\u8a9f\u8aa0\u8aa1\u8aa2\u8aa3\u8aa4\u8aa5\u8aa6\u8aa7\u8aa8\u8aa9\u8aaa\u8aab\u8aac\u8aad\u8aae\u8aaf\u8ab0\u8ab1\u8ab2\u8ab3\u8ab4\u8ab5\u8ab6\u8ab7\u8ab8\u8ab9\u8aba\u8abb\u8abc\u8abd\u8abe\u8abf\u8ac0\u8ac1\u8ac2\u8ac3\u8ac4\u8ac5\u8ac6\u8ac7\u8ac8\u8ac9\u8aca\u8acb\u8acc\u8acd\u8ace\u8acf\u8ad0\u8ad1\u8ad2\u8ad3\u8ad4\u8ad5\u8ad6\u8ad7\u8ad8\u8ad9\u8ada\u8adb\u8adc\u8add\u8ade\u8adf\u8ae0\u8ae1\u8ae2\u8ae3\u8ae4\u8ae5\u8ae6\u8ae7\u8ae8\u8ae9\u8aea\u8aeb\u8aec\u8aed\u8aee\u8aef\u8af0\u8af1\u8af2\u8af3\u8af4\u8af5\u8af6\u8af7\u8af8\u8af9\u8afa\u8afb\u8afc\u8afd\u8afe\u8aff\u8b00\u8b01\u8b02\u8b03\u8b04\u8b05\u8b06\u8b07\u8b08\u8b09\u8b0a\u8b0b\u8b0c\u8b0d\u8b0e\u8b0f\u8b10\u8b11\u8b12\u8b13\u8b14\u8b15\u8b16\u8b17\u8b18\u8b19\u8b1a\u8b1b\u8b1c\u8b1d\u8b1e\u8b1f\u8b20\u8b21\u8b22\u8b23\u8b24\u8b25\u8b26\u8b27\u8b28\u8b29\u8b2a\u8b2b\u8b2c\u8b2d\u8b2e\u8b2f\u8b30\u8b31\u8b32\u8b33\u8b34\u8b35\u8b36\u8b37\u8b38\u8b39\u8b3a\u8b3b\u8b3c\u8b3d\u8b3e\u8b3f\u8b40\u8b41\u8b42\u8b43\u8b44\u8b45\u8b46\u8b47\u8b48\u8b49\u8b4a\u8b4b\u8b4c\u8b4d\u8b4e\u8b4f\u8b50\u8b51\u8b52\u8b53\u8b54\u8b55\u8b56\u8b57\u8b58\u8b59\u8b5a\u8b5b\u8b5c\u8b5d\u8b5e\u8b5f\u8b60\u8b61\u8b62\u8b63\u8b64\u8b65\u8b66\u8b67\u8b68\u8b69\u8b6a\u8b6b\u8b6c\u8b6d\u8b6e\u8b6f\u8b70\u8b71\u8b72\u8b73\u8b74\u8b75\u8b76\u8b77\u8b78\u8b79\u8b7a\u8b7b\u8b7c\u8b7d\u8b7e\u8b7f\u8b80\u8b81\u8b82\u8b83\u8b84\u8b85\u8b86\u8b87\u8b88\u8b89\u8b8a\u8b8b\u8b8c\u8b8d\u8b8e\u8b8f\u8b90\u8b91\u8b92\u8b93\u8b94\u8b95\u8b96\u8b97\u8b98\u8b99\u8b9a\u8b9b\u8b9c\u8b9d\u8b9e\u8b9f\u8ba0\u8ba1\u8ba2\u8ba3\u8ba4\u8ba5\u8ba6\u8ba7\u8ba8\u8ba9\u8baa\u8bab\u8bac\u8bad\u8bae\u8baf\u8bb0\u8bb1\u8bb2\u8bb3\u8bb4\u8bb5\u8bb6\u8bb7\u8bb8\u8bb9\u8bba\u8bbb\u8bbc\u8bbd\u8bbe\u8bbf\u8bc0\u8bc1\u8bc2\u8bc3\u8bc4\u8bc5\u8bc6\u8bc7\u8bc8\u8bc9\u8bca\u8bcb\u8bcc\u8bcd\u8bce\u8bcf\u8bd0\u8bd1\u8bd2\u8bd3\u8bd4\u8bd5\u8bd6\u8bd7\u8bd8\u8bd9\u8bda\u8bdb\u8bdc\u8bdd\u8bde\u8bdf\u8be0\u8be1\u8be2\u8be3\u8be4\u8be5\u8be6\u8be7\u8be8\u8be9\u8bea\u8beb\u8bec\u8bed\u8bee\u8bef\u8bf0\u8bf1\u8bf2\u8bf3\u8bf4\u8bf5\u8bf6\u8bf7\u8bf8\u8bf9\u8bfa\u8bfb\u8bfc\u8bfd\u8bfe\u8bff\u8c00\u8c01\u8c02\u8c03\u8c04\u8c05\u8c06\u8c07\u8c08\u8c09\u8c0a\u8c0b\u8c0c\u8c0d\u8c0e\u8c0f\u8c10\u8c11\u8c12\u8c13\u8c14\u8c15\u8c16\u8c17\u8c18\u8c19\u8c1a\u8c1b\u8c1c\u8c1d\u8c1e\u8c1f\u8c20\u8c21\u8c22\u8c23\u8c24\u8c25\u8c26\u8c27\u8c28\u8c29\u8c2a\u8c2b\u8c2c\u8c2d\u8c2e\u8c2f\u8c30\u8c31\u8c32\u8c33\u8c34\u8c35\u8c36\u8c37\u8c38\u8c39\u8c3a\u8c3b\u8c3c\u8c3d\u8c3e\u8c3f\u8c40\u8c41\u8c42\u8c43\u8c44\u8c45\u8c46\u8c47\u8c48\u8c49\u8c4a\u8c4b\u8c4c\u8c4d\u8c4e\u8c4f\u8c50\u8c51\u8c52\u8c53\u8c54\u8c55\u8c56\u8c57\u8c58\u8c59\u8c5a\u8c5b\u8c5c\u8c5d\u8c5e\u8c5f\u8c60\u8c61\u8c62\u8c63\u8c64\u8c65\u8c66\u8c67\u8c68\u8c69\u8c6a\u8c6b\u8c6c\u8c6d\u8c6e\u8c6f\u8c70\u8c71\u8c72\u8c73\u8c74\u8c75\u8c76\u8c77\u8c78\u8c79\u8c7a\u8c7b\u8c7c\u8c7d\u8c7e\u8c7f\u8c80\u8c81\u8c82\u8c83\u8c84\u8c85\u8c86\u8c87\u8c88\u8c89\u8c8a\u8c8b\u8c8c\u8c8d\u8c8e\u8c8f\u8c90\u8c91\u8c92\u8c93\u8c94\u8c95\u8c96\u8c97\u8c98\u8c99\u8c9a\u8c9b\u8c9c\u8c9d\u8c9e\u8c9f\u8ca0\u8ca1\u8ca2\u8ca3\u8ca4\u8ca5\u8ca6\u8ca7\u8ca8\u8ca9\u8caa\u8cab\u8cac\u8cad\u8cae\u8caf\u8cb0\u8cb1\u8cb2\u8cb3\u8cb4\u8cb5\u8cb6\u8cb7\u8cb8\u8cb9\u8cba\u8cbb\u8cbc\u8cbd\u8cbe\u8cbf\u8cc0\u8cc1\u8cc2\u8cc3\u8cc4\u8cc5\u8cc6\u8cc7\u8cc8\u8cc9\u8cca\u8ccb\u8ccc\u8ccd\u8cce\u8ccf\u8cd0\u8cd1\u8cd2\u8cd3\u8cd4\u8cd5\u8cd6\u8cd7\u8cd8\u8cd9\u8cda\u8cdb\u8cdc\u8cdd\u8cde\u8cdf\u8ce0\u8ce1\u8ce2\u8ce3\u8ce4\u8ce5\u8ce6\u8ce7\u8ce8\u8ce9\u8cea\u8ceb\u8cec\u8ced\u8cee\u8cef\u8cf0\u8cf1\u8cf2\u8cf3\u8cf4\u8cf5\u8cf6\u8cf7\u8cf8\u8cf9\u8cfa\u8cfb\u8cfc\u8cfd\u8cfe\u8cff\u8d00\u8d01\u8d02\u8d03\u8d04\u8d05\u8d06\u8d07\u8d08\u8d09\u8d0a\u8d0b\u8d0c\u8d0d\u8d0e\u8d0f\u8d10\u8d11\u8d12\u8d13\u8d14\u8d15\u8d16\u8d17\u8d18\u8d19\u8d1a\u8d1b\u8d1c\u8d1d\u8d1e\u8d1f\u8d20\u8d21\u8d22\u8d23\u8d24\u8d25\u8d26\u8d27\u8d28\u8d29\u8d2a\u8d2b\u8d2c\u8d2d\u8d2e\u8d2f\u8d30\u8d31\u8d32\u8d33\u8d34\u8d35\u8d36\u8d37\u8d38\u8d39\u8d3a\u8d3b\u8d3c\u8d3d\u8d3e\u8d3f\u8d40\u8d41\u8d42\u8d43\u8d44\u8d45\u8d46\u8d47\u8d48\u8d49\u8d4a\u8d4b\u8d4c\u8d4d\u8d4e\u8d4f\u8d50\u8d51\u8d52\u8d53\u8d54\u8d55\u8d56\u8d57\u8d58\u8d59\u8d5a\u8d5b\u8d5c\u8d5d\u8d5e\u8d5f\u8d60\u8d61\u8d62\u8d63\u8d64\u8d65\u8d66\u8d67\u8d68\u8d69\u8d6a\u8d6b\u8d6c\u8d6d\u8d6e\u8d6f\u8d70\u8d71\u8d72\u8d73\u8d74\u8d75\u8d76\u8d77\u8d78\u8d79\u8d7a\u8d7b\u8d7c\u8d7d\u8d7e\u8d7f\u8d80\u8d81\u8d82\u8d83\u8d84\u8d85\u8d86\u8d87\u8d88\u8d89\u8d8a\u8d8b\u8d8c\u8d8d\u8d8e\u8d8f\u8d90\u8d91\u8d92\u8d93\u8d94\u8d95\u8d96\u8d97\u8d98\u8d99\u8d9a\u8d9b\u8d9c\u8d9d\u8d9e\u8d9f\u8da0\u8da1\u8da2\u8da3\u8da4\u8da5\u8da6\u8da7\u8da8\u8da9\u8daa\u8dab\u8dac\u8dad\u8dae\u8daf\u8db0\u8db1\u8db2\u8db3\u8db4\u8db5\u8db6\u8db7\u8db8\u8db9\u8dba\u8dbb\u8dbc\u8dbd\u8dbe\u8dbf\u8dc0\u8dc1\u8dc2\u8dc3\u8dc4\u8dc5\u8dc6\u8dc7\u8dc8\u8dc9\u8dca\u8dcb\u8dcc\u8dcd\u8dce\u8dcf\u8dd0\u8dd1\u8dd2\u8dd3\u8dd4\u8dd5\u8dd6\u8dd7\u8dd8\u8dd9\u8dda\u8ddb\u8ddc\u8ddd\u8dde\u8ddf\u8de0\u8de1\u8de2\u8de3\u8de4\u8de5\u8de6\u8de7\u8de8\u8de9\u8dea\u8deb\u8dec\u8ded\u8dee\u8def\u8df0\u8df1\u8df2\u8df3\u8df4\u8df5\u8df6\u8df7\u8df8\u8df9\u8dfa\u8dfb\u8dfc\u8dfd\u8dfe\u8dff\u8e00\u8e01\u8e02\u8e03\u8e04\u8e05\u8e06\u8e07\u8e08\u8e09\u8e0a\u8e0b\u8e0c\u8e0d\u8e0e\u8e0f\u8e10\u8e11\u8e12\u8e13\u8e14\u8e15\u8e16\u8e17\u8e18\u8e19\u8e1a\u8e1b\u8e1c\u8e1d\u8e1e\u8e1f\u8e20\u8e21\u8e22\u8e23\u8e24\u8e25\u8e26\u8e27\u8e28\u8e29\u8e2a\u8e2b\u8e2c\u8e2d\u8e2e\u8e2f\u8e30\u8e31\u8e32\u8e33\u8e34\u8e35\u8e36\u8e37\u8e38\u8e39\u8e3a\u8e3b\u8e3c\u8e3d\u8e3e\u8e3f\u8e40\u8e41\u8e42\u8e43\u8e44\u8e45\u8e46\u8e47\u8e48\u8e49\u8e4a\u8e4b\u8e4c\u8e4d\u8e4e\u8e4f\u8e50\u8e51\u8e52\u8e53\u8e54\u8e55\u8e56\u8e57\u8e58\u8e59\u8e5a\u8e5b\u8e5c\u8e5d\u8e5e\u8e5f\u8e60\u8e61\u8e62\u8e63\u8e64\u8e65\u8e66\u8e67\u8e68\u8e69\u8e6a\u8e6b\u8e6c\u8e6d\u8e6e\u8e6f\u8e70\u8e71\u8e72\u8e73\u8e74\u8e75\u8e76\u8e77\u8e78\u8e79\u8e7a\u8e7b\u8e7c\u8e7d\u8e7e\u8e7f\u8e80\u8e81\u8e82\u8e83\u8e84\u8e85\u8e86\u8e87\u8e88\u8e89\u8e8a\u8e8b\u8e8c\u8e8d\u8e8e\u8e8f\u8e90\u8e91\u8e92\u8e93\u8e94\u8e95\u8e96\u8e97\u8e98\u8e99\u8e9a\u8e9b\u8e9c\u8e9d\u8e9e\u8e9f\u8ea0\u8ea1\u8ea2\u8ea3\u8ea4\u8ea5\u8ea6\u8ea7\u8ea8\u8ea9\u8eaa\u8eab\u8eac\u8ead\u8eae\u8eaf\u8eb0\u8eb1\u8eb2\u8eb3\u8eb4\u8eb5\u8eb6\u8eb7\u8eb8\u8eb9\u8eba\u8ebb\u8ebc\u8ebd\u8ebe\u8ebf\u8ec0\u8ec1\u8ec2\u8ec3\u8ec4\u8ec5\u8ec6\u8ec7\u8ec8\u8ec9\u8eca\u8ecb\u8ecc\u8ecd\u8ece\u8ecf\u8ed0\u8ed1\u8ed2\u8ed3\u8ed4\u8ed5\u8ed6\u8ed7\u8ed8\u8ed9\u8eda\u8edb\u8edc\u8edd\u8ede\u8edf\u8ee0\u8ee1\u8ee2\u8ee3\u8ee4\u8ee5\u8ee6\u8ee7\u8ee8\u8ee9\u8eea\u8eeb\u8eec\u8eed\u8eee\u8eef\u8ef0\u8ef1\u8ef2\u8ef3\u8ef4\u8ef5\u8ef6\u8ef7\u8ef8\u8ef9\u8efa\u8efb\u8efc\u8efd\u8efe\u8eff\u8f00\u8f01\u8f02\u8f03\u8f04\u8f05\u8f06\u8f07\u8f08\u8f09\u8f0a\u8f0b\u8f0c\u8f0d\u8f0e\u8f0f\u8f10\u8f11\u8f12\u8f13\u8f14\u8f15\u8f16\u8f17\u8f18\u8f19\u8f1a\u8f1b\u8f1c\u8f1d\u8f1e\u8f1f\u8f20\u8f21\u8f22\u8f23\u8f24\u8f25\u8f26\u8f27\u8f28\u8f29\u8f2a\u8f2b\u8f2c\u8f2d\u8f2e\u8f2f\u8f30\u8f31\u8f32\u8f33\u8f34\u8f35\u8f36\u8f37\u8f38\u8f39\u8f3a\u8f3b\u8f3c\u8f3d\u8f3e\u8f3f\u8f40\u8f41\u8f42\u8f43\u8f44\u8f45\u8f46\u8f47\u8f48\u8f49\u8f4a\u8f4b\u8f4c\u8f4d\u8f4e\u8f4f\u8f50\u8f51\u8f52\u8f53\u8f54\u8f55\u8f56\u8f57\u8f58\u8f59\u8f5a\u8f5b\u8f5c\u8f5d\u8f5e\u8f5f\u8f60\u8f61\u8f62\u8f63\u8f64\u8f65\u8f66\u8f67\u8f68\u8f69\u8f6a\u8f6b\u8f6c\u8f6d\u8f6e\u8f6f\u8f70\u8f71\u8f72\u8f73\u8f74\u8f75\u8f76\u8f77\u8f78\u8f79\u8f7a\u8f7b\u8f7c\u8f7d\u8f7e\u8f7f\u8f80\u8f81\u8f82\u8f83\u8f84\u8f85\u8f86\u8f87\u8f88\u8f89\u8f8a\u8f8b\u8f8c\u8f8d\u8f8e\u8f8f\u8f90\u8f91\u8f92\u8f93\u8f94\u8f95\u8f96\u8f97\u8f98\u8f99\u8f9a\u8f9b\u8f9c\u8f9d\u8f9e\u8f9f\u8fa0\u8fa1\u8fa2\u8fa3\u8fa4\u8fa5\u8fa6\u8fa7\u8fa8\u8fa9\u8faa\u8fab\u8fac\u8fad\u8fae\u8faf\u8fb0\u8fb1\u8fb2\u8fb3\u8fb4\u8fb5\u8fb6\u8fb7\u8fb8\u8fb9\u8fba\u8fbb\u8fbc\u8fbd\u8fbe\u8fbf\u8fc0\u8fc1\u8fc2\u8fc3\u8fc4\u8fc5\u8fc6\u8fc7\u8fc8\u8fc9\u8fca\u8fcb\u8fcc\u8fcd\u8fce\u8fcf\u8fd0\u8fd1\u8fd2\u8fd3\u8fd4\u8fd5\u8fd6\u8fd7\u8fd8\u8fd9\u8fda\u8fdb\u8fdc\u8fdd\u8fde\u8fdf\u8fe0\u8fe1\u8fe2\u8fe3\u8fe4\u8fe5\u8fe6\u8fe7\u8fe8\u8fe9\u8fea\u8feb\u8fec\u8fed\u8fee\u8fef\u8ff0\u8ff1\u8ff2\u8ff3\u8ff4\u8ff5\u8ff6\u8ff7\u8ff8\u8ff9\u8ffa\u8ffb\u8ffc\u8ffd\u8ffe\u8fff\u9000\u9001\u9002\u9003\u9004\u9005\u9006\u9007\u9008\u9009\u900a\u900b\u900c\u900d\u900e\u900f\u9010\u9011\u9012\u9013\u9014\u9015\u9016\u9017\u9018\u9019\u901a\u901b\u901c\u901d\u901e\u901f\u9020\u9021\u9022\u9023\u9024\u9025\u9026\u9027\u9028\u9029\u902a\u902b\u902c\u902d\u902e\u902f\u9030\u9031\u9032\u9033\u9034\u9035\u9036\u9037\u9038\u9039\u903a\u903b\u903c\u903d\u903e\u903f\u9040\u9041\u9042\u9043\u9044\u9045\u9046\u9047\u9048\u9049\u904a\u904b\u904c\u904d\u904e\u904f\u9050\u9051\u9052\u9053\u9054\u9055\u9056\u9057\u9058\u9059\u905a\u905b\u905c\u905d\u905e\u905f\u9060\u9061\u9062\u9063\u9064\u9065\u9066\u9067\u9068\u9069\u906a\u906b\u906c\u906d\u906e\u906f\u9070\u9071\u9072\u9073\u9074\u9075\u9076\u9077\u9078\u9079\u907a\u907b\u907c\u907d\u907e\u907f\u9080\u9081\u9082\u9083\u9084\u9085\u9086\u9087\u9088\u9089\u908a\u908b\u908c\u908d\u908e\u908f\u9090\u9091\u9092\u9093\u9094\u9095\u9096\u9097\u9098\u9099\u909a\u909b\u909c\u909d\u909e\u909f\u90a0\u90a1\u90a2\u90a3\u90a4\u90a5\u90a6\u90a7\u90a8\u90a9\u90aa\u90ab\u90ac\u90ad\u90ae\u90af\u90b0\u90b1\u90b2\u90b3\u90b4\u90b5\u90b6\u90b7\u90b8\u90b9\u90ba\u90bb\u90bc\u90bd\u90be\u90bf\u90c0\u90c1\u90c2\u90c3\u90c4\u90c5\u90c6\u90c7\u90c8\u90c9\u90ca\u90cb\u90cc\u90cd\u90ce\u90cf\u90d0\u90d1\u90d2\u90d3\u90d4\u90d5\u90d6\u90d7\u90d8\u90d9\u90da\u90db\u90dc\u90dd\u90de\u90df\u90e0\u90e1\u90e2\u90e3\u90e4\u90e5\u90e6\u90e7\u90e8\u90e9\u90ea\u90eb\u90ec\u90ed\u90ee\u90ef\u90f0\u90f1\u90f2\u90f3\u90f4\u90f5\u90f6\u90f7\u90f8\u90f9\u90fa\u90fb\u90fc\u90fd\u90fe\u90ff\u9100\u9101\u9102\u9103\u9104\u9105\u9106\u9107\u9108\u9109\u910a\u910b\u910c\u910d\u910e\u910f\u9110\u9111\u9112\u9113\u9114\u9115\u9116\u9117\u9118\u9119\u911a\u911b\u911c\u911d\u911e\u911f\u9120\u9121\u9122\u9123\u9124\u9125\u9126\u9127\u9128\u9129\u912a\u912b\u912c\u912d\u912e\u912f\u9130\u9131\u9132\u9133\u9134\u9135\u9136\u9137\u9138\u9139\u913a\u913b\u913c\u913d\u913e\u913f\u9140\u9141\u9142\u9143\u9144\u9145\u9146\u9147\u9148\u9149\u914a\u914b\u914c\u914d\u914e\u914f\u9150\u9151\u9152\u9153\u9154\u9155\u9156\u9157\u9158\u9159\u915a\u915b\u915c\u915d\u915e\u915f\u9160\u9161\u9162\u9163\u9164\u9165\u9166\u9167\u9168\u9169\u916a\u916b\u916c\u916d\u916e\u916f\u9170\u9171\u9172\u9173\u9174\u9175\u9176\u9177\u9178\u9179\u917a\u917b\u917c\u917d\u917e\u917f\u9180\u9181\u9182\u9183\u9184\u9185\u9186\u9187\u9188\u9189\u918a\u918b\u918c\u918d\u918e\u918f\u9190\u9191\u9192\u9193\u9194\u9195\u9196\u9197\u9198\u9199\u919a\u919b\u919c\u919d\u919e\u919f\u91a0\u91a1\u91a2\u91a3\u91a4\u91a5\u91a6\u91a7\u91a8\u91a9\u91aa\u91ab\u91ac\u91ad\u91ae\u91af\u91b0\u91b1\u91b2\u91b3\u91b4\u91b5\u91b6\u91b7\u91b8\u91b9\u91ba\u91bb\u91bc\u91bd\u91be\u91bf\u91c0\u91c1\u91c2\u91c3\u91c4\u91c5\u91c6\u91c7\u91c8\u91c9\u91ca\u91cb\u91cc\u91cd\u91ce\u91cf\u91d0\u91d1\u91d2\u91d3\u91d4\u91d5\u91d6\u91d7\u91d8\u91d9\u91da\u91db\u91dc\u91dd\u91de\u91df\u91e0\u91e1\u91e2\u91e3\u91e4\u91e5\u91e6\u91e7\u91e8\u91e9\u91ea\u91eb\u91ec\u91ed\u91ee\u91ef\u91f0\u91f1\u91f2\u91f3\u91f4\u91f5\u91f6\u91f7\u91f8\u91f9\u91fa\u91fb\u91fc\u91fd\u91fe\u91ff\u9200\u9201\u9202\u9203\u9204\u9205\u9206\u9207\u9208\u9209\u920a\u920b\u920c\u920d\u920e\u920f\u9210\u9211\u9212\u9213\u9214\u9215\u9216\u9217\u9218\u9219\u921a\u921b\u921c\u921d\u921e\u921f\u9220\u9221\u9222\u9223\u9224\u9225\u9226\u9227\u9228\u9229\u922a\u922b\u922c\u922d\u922e\u922f\u9230\u9231\u9232\u9233\u9234\u9235\u9236\u9237\u9238\u9239\u923a\u923b\u923c\u923d\u923e\u923f\u9240\u9241\u9242\u9243\u9244\u9245\u9246\u9247\u9248\u9249\u924a\u924b\u924c\u924d\u924e\u924f\u9250\u9251\u9252\u9253\u9254\u9255\u9256\u9257\u9258\u9259\u925a\u925b\u925c\u925d\u925e\u925f\u9260\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u9268\u9269\u926a\u926b\u926c\u926d\u926e\u926f\u9270\u9271\u9272\u9273\u9274\u9275\u9276\u9277\u9278\u9279\u927a\u927b\u927c\u927d\u927e\u927f\u9280\u9281\u9282\u9283\u9284\u9285\u9286\u9287\u9288\u9289\u928a\u928b\u928c\u928d\u928e\u928f\u9290\u9291\u9292\u9293\u9294\u9295\u9296\u9297\u9298\u9299\u929a\u929b\u929c\u929d\u929e\u929f\u92a0\u92a1\u92a2\u92a3\u92a4\u92a5\u92a6\u92a7\u92a8\u92a9\u92aa\u92ab\u92ac\u92ad\u92ae\u92af\u92b0\u92b1\u92b2\u92b3\u92b4\u92b5\u92b6\u92b7\u92b8\u92b9\u92ba\u92bb\u92bc\u92bd\u92be\u92bf\u92c0\u92c1\u92c2\u92c3\u92c4\u92c5\u92c6\u92c7\u92c8\u92c9\u92ca\u92cb\u92cc\u92cd\u92ce\u92cf\u92d0\u92d1\u92d2\u92d3\u92d4\u92d5\u92d6\u92d7\u92d8\u92d9\u92da\u92db\u92dc\u92dd\u92de\u92df\u92e0\u92e1\u92e2\u92e3\u92e4\u92e5\u92e6\u92e7\u92e8\u92e9\u92ea\u92eb\u92ec\u92ed\u92ee\u92ef\u92f0\u92f1\u92f2\u92f3\u92f4\u92f5\u92f6\u92f7\u92f8\u92f9\u92fa\u92fb\u92fc\u92fd\u92fe\u92ff\u9300\u9301\u9302\u9303\u9304\u9305\u9306\u9307\u9308\u9309\u930a\u930b\u930c\u930d\u930e\u930f\u9310\u9311\u9312\u9313\u9314\u9315\u9316\u9317\u9318\u9319\u931a\u931b\u931c\u931d\u931e\u931f\u9320\u9321\u9322\u9323\u9324\u9325\u9326\u9327\u9328\u9329\u932a\u932b\u932c\u932d\u932e\u932f\u9330\u9331\u9332\u9333\u9334\u9335\u9336\u9337\u9338\u9339\u933a\u933b\u933c\u933d\u933e\u933f\u9340\u9341\u9342\u9343\u9344\u9345\u9346\u9347\u9348\u9349\u934a\u934b\u934c\u934d\u934e\u934f\u9350\u9351\u9352\u9353\u9354\u9355\u9356\u9357\u9358\u9359\u935a\u935b\u935c\u935d\u935e\u935f\u9360\u9361\u9362\u9363\u9364\u9365\u9366\u9367\u9368\u9369\u936a\u936b\u936c\u936d\u936e\u936f\u9370\u9371\u9372\u9373\u9374\u9375\u9376\u9377\u9378\u9379\u937a\u937b\u937c\u937d\u937e\u937f\u9380\u9381\u9382\u9383\u9384\u9385\u9386\u9387\u9388\u9389\u938a\u938b\u938c\u938d\u938e\u938f\u9390\u9391\u9392\u9393\u9394\u9395\u9396\u9397\u9398\u9399\u939a\u939b\u939c\u939d\u939e\u939f\u93a0\u93a1\u93a2\u93a3\u93a4\u93a5\u93a6\u93a7\u93a8\u93a9\u93aa\u93ab\u93ac\u93ad\u93ae\u93af\u93b0\u93b1\u93b2\u93b3\u93b4\u93b5\u93b6\u93b7\u93b8\u93b9\u93ba\u93bb\u93bc\u93bd\u93be\u93bf\u93c0\u93c1\u93c2\u93c3\u93c4\u93c5\u93c6\u93c7\u93c8\u93c9\u93ca\u93cb\u93cc\u93cd\u93ce\u93cf\u93d0\u93d1\u93d2\u93d3\u93d4\u93d5\u93d6\u93d7\u93d8\u93d9\u93da\u93db\u93dc\u93dd\u93de\u93df\u93e0\u93e1\u93e2\u93e3\u93e4\u93e5\u93e6\u93e7\u93e8\u93e9\u93ea\u93eb\u93ec\u93ed\u93ee\u93ef\u93f0\u93f1\u93f2\u93f3\u93f4\u93f5\u93f6\u93f7\u93f8\u93f9\u93fa\u93fb\u93fc\u93fd\u93fe\u93ff\u9400\u9401\u9402\u9403\u9404\u9405\u9406\u9407\u9408\u9409\u940a\u940b\u940c\u940d\u940e\u940f\u9410\u9411\u9412\u9413\u9414\u9415\u9416\u9417\u9418\u9419\u941a\u941b\u941c\u941d\u941e\u941f\u9420\u9421\u9422\u9423\u9424\u9425\u9426\u9427\u9428\u9429\u942a\u942b\u942c\u942d\u942e\u942f\u9430\u9431\u9432\u9433\u9434\u9435\u9436\u9437\u9438\u9439\u943a\u943b\u943c\u943d\u943e\u943f\u9440\u9441\u9442\u9443\u9444\u9445\u9446\u9447\u9448\u9449\u944a\u944b\u944c\u944d\u944e\u944f\u9450\u9451\u9452\u9453\u9454\u9455\u9456\u9457\u9458\u9459\u945a\u945b\u945c\u945d\u945e\u945f\u9460\u9461\u9462\u9463\u9464\u9465\u9466\u9467\u9468\u9469\u946a\u946b\u946c\u946d\u946e\u946f\u9470\u9471\u9472\u9473\u9474\u9475\u9476\u9477\u9478\u9479\u947a\u947b\u947c\u947d\u947e\u947f\u9480\u9481\u9482\u9483\u9484\u9485\u9486\u9487\u9488\u9489\u948a\u948b\u948c\u948d\u948e\u948f\u9490\u9491\u9492\u9493\u9494\u9495\u9496\u9497\u9498\u9499\u949a\u949b\u949c\u949d\u949e\u949f\u94a0\u94a1\u94a2\u94a3\u94a4\u94a5\u94a6\u94a7\u94a8\u94a9\u94aa\u94ab\u94ac\u94ad\u94ae\u94af\u94b0\u94b1\u94b2\u94b3\u94b4\u94b5\u94b6\u94b7\u94b8\u94b9\u94ba\u94bb\u94bc\u94bd\u94be\u94bf\u94c0\u94c1\u94c2\u94c3\u94c4\u94c5\u94c6\u94c7\u94c8\u94c9\u94ca\u94cb\u94cc\u94cd\u94ce\u94cf\u94d0\u94d1\u94d2\u94d3\u94d4\u94d5\u94d6\u94d7\u94d8\u94d9\u94da\u94db\u94dc\u94dd\u94de\u94df\u94e0\u94e1\u94e2\u94e3\u94e4\u94e5\u94e6\u94e7\u94e8\u94e9\u94ea\u94eb\u94ec\u94ed\u94ee\u94ef\u94f0\u94f1\u94f2\u94f3\u94f4\u94f5\u94f6\u94f7\u94f8\u94f9\u94fa\u94fb\u94fc\u94fd\u94fe\u94ff\u9500\u9501\u9502\u9503\u9504\u9505\u9506\u9507\u9508\u9509\u950a\u950b\u950c\u950d\u950e\u950f\u9510\u9511\u9512\u9513\u9514\u9515\u9516\u9517\u9518\u9519\u951a\u951b\u951c\u951d\u951e\u951f\u9520\u9521\u9522\u9523\u9524\u9525\u9526\u9527\u9528\u9529\u952a\u952b\u952c\u952d\u952e\u952f\u9530\u9531\u9532\u9533\u9534\u9535\u9536\u9537\u9538\u9539\u953a\u953b\u953c\u953d\u953e\u953f\u9540\u9541\u9542\u9543\u9544\u9545\u9546\u9547\u9548\u9549\u954a\u954b\u954c\u954d\u954e\u954f\u9550\u9551\u9552\u9553\u9554\u9555\u9556\u9557\u9558\u9559\u955a\u955b\u955c\u955d\u955e\u955f\u9560\u9561\u9562\u9563\u9564\u9565\u9566\u9567\u9568\u9569\u956a\u956b\u956c\u956d\u956e\u956f\u9570\u9571\u9572\u9573\u9574\u9575\u9576\u9577\u9578\u9579\u957a\u957b\u957c\u957d\u957e\u957f\u9580\u9581\u9582\u9583\u9584\u9585\u9586\u9587\u9588\u9589\u958a\u958b\u958c\u958d\u958e\u958f\u9590\u9591\u9592\u9593\u9594\u9595\u9596\u9597\u9598\u9599\u959a\u959b\u959c\u959d\u959e\u959f\u95a0\u95a1\u95a2\u95a3\u95a4\u95a5\u95a6\u95a7\u95a8\u95a9\u95aa\u95ab\u95ac\u95ad\u95ae\u95af\u95b0\u95b1\u95b2\u95b3\u95b4\u95b5\u95b6\u95b7\u95b8\u95b9\u95ba\u95bb\u95bc\u95bd\u95be\u95bf\u95c0\u95c1\u95c2\u95c3\u95c4\u95c5\u95c6\u95c7\u95c8\u95c9\u95ca\u95cb\u95cc\u95cd\u95ce\u95cf\u95d0\u95d1\u95d2\u95d3\u95d4\u95d5\u95d6\u95d7\u95d8\u95d9\u95da\u95db\u95dc\u95dd\u95de\u95df\u95e0\u95e1\u95e2\u95e3\u95e4\u95e5\u95e6\u95e7\u95e8\u95e9\u95ea\u95eb\u95ec\u95ed\u95ee\u95ef\u95f0\u95f1\u95f2\u95f3\u95f4\u95f5\u95f6\u95f7\u95f8\u95f9\u95fa\u95fb\u95fc\u95fd\u95fe\u95ff\u9600\u9601\u9602\u9603\u9604\u9605\u9606\u9607\u9608\u9609\u960a\u960b\u960c\u960d\u960e\u960f\u9610\u9611\u9612\u9613\u9614\u9615\u9616\u9617\u9618\u9619\u961a\u961b\u961c\u961d\u961e\u961f\u9620\u9621\u9622\u9623\u9624\u9625\u9626\u9627\u9628\u9629\u962a\u962b\u962c\u962d\u962e\u962f\u9630\u9631\u9632\u9633\u9634\u9635\u9636\u9637\u9638\u9639\u963a\u963b\u963c\u963d\u963e\u963f\u9640\u9641\u9642\u9643\u9644\u9645\u9646\u9647\u9648\u9649\u964a\u964b\u964c\u964d\u964e\u964f\u9650\u9651\u9652\u9653\u9654\u9655\u9656\u9657\u9658\u9659\u965a\u965b\u965c\u965d\u965e\u965f\u9660\u9661\u9662\u9663\u9664\u9665\u9666\u9667\u9668\u9669\u966a\u966b\u966c\u966d\u966e\u966f\u9670\u9671\u9672\u9673\u9674\u9675\u9676\u9677\u9678\u9679\u967a\u967b\u967c\u967d\u967e\u967f\u9680\u9681\u9682\u9683\u9684\u9685\u9686\u9687\u9688\u9689\u968a\u968b\u968c\u968d\u968e\u968f\u9690\u9691\u9692\u9693\u9694\u9695\u9696\u9697\u9698\u9699\u969a\u969b\u969c\u969d\u969e\u969f\u96a0\u96a1\u96a2\u96a3\u96a4\u96a5\u96a6\u96a7\u96a8\u96a9\u96aa\u96ab\u96ac\u96ad\u96ae\u96af\u96b0\u96b1\u96b2\u96b3\u96b4\u96b5\u96b6\u96b7\u96b8\u96b9\u96ba\u96bb\u96bc\u96bd\u96be\u96bf\u96c0\u96c1\u96c2\u96c3\u96c4\u96c5\u96c6\u96c7\u96c8\u96c9\u96ca\u96cb\u96cc\u96cd\u96ce\u96cf\u96d0\u96d1\u96d2\u96d3\u96d4\u96d5\u96d6\u96d7\u96d8\u96d9\u96da\u96db\u96dc\u96dd\u96de\u96df\u96e0\u96e1\u96e2\u96e3\u96e4\u96e5\u96e6\u96e7\u96e8\u96e9\u96ea\u96eb\u96ec\u96ed\u96ee\u96ef\u96f0\u96f1\u96f2\u96f3\u96f4\u96f5\u96f6\u96f7\u96f8\u96f9\u96fa\u96fb\u96fc\u96fd\u96fe\u96ff\u9700\u9701\u9702\u9703\u9704\u9705\u9706\u9707\u9708\u9709\u970a\u970b\u970c\u970d\u970e\u970f\u9710\u9711\u9712\u9713\u9714\u9715\u9716\u9717\u9718\u9719\u971a\u971b\u971c\u971d\u971e\u971f\u9720\u9721\u9722\u9723\u9724\u9725\u9726\u9727\u9728\u9729\u972a\u972b\u972c\u972d\u972e\u972f\u9730\u9731\u9732\u9733\u9734\u9735\u9736\u9737\u9738\u9739\u973a\u973b\u973c\u973d\u973e\u973f\u9740\u9741\u9742\u9743\u9744\u9745\u9746\u9747\u9748\u9749\u974a\u974b\u974c\u974d\u974e\u974f\u9750\u9751\u9752\u9753\u9754\u9755\u9756\u9757\u9758\u9759\u975a\u975b\u975c\u975d\u975e\u975f\u9760\u9761\u9762\u9763\u9764\u9765\u9766\u9767\u9768\u9769\u976a\u976b\u976c\u976d\u976e\u976f\u9770\u9771\u9772\u9773\u9774\u9775\u9776\u9777\u9778\u9779\u977a\u977b\u977c\u977d\u977e\u977f\u9780\u9781\u9782\u9783\u9784\u9785\u9786\u9787\u9788\u9789\u978a\u978b\u978c\u978d\u978e\u978f\u9790\u9791\u9792\u9793\u9794\u9795\u9796\u9797\u9798\u9799\u979a\u979b\u979c\u979d\u979e\u979f\u97a0\u97a1\u97a2\u97a3\u97a4\u97a5\u97a6\u97a7\u97a8\u97a9\u97aa\u97ab\u97ac\u97ad\u97ae\u97af\u97b0\u97b1\u97b2\u97b3\u97b4\u97b5\u97b6\u97b7\u97b8\u97b9\u97ba\u97bb\u97bc\u97bd\u97be\u97bf\u97c0\u97c1\u97c2\u97c3\u97c4\u97c5\u97c6\u97c7\u97c8\u97c9\u97ca\u97cb\u97cc\u97cd\u97ce\u97cf\u97d0\u97d1\u97d2\u97d3\u97d4\u97d5\u97d6\u97d7\u97d8\u97d9\u97da\u97db\u97dc\u97dd\u97de\u97df\u97e0\u97e1\u97e2\u97e3\u97e4\u97e5\u97e6\u97e7\u97e8\u97e9\u97ea\u97eb\u97ec\u97ed\u97ee\u97ef\u97f0\u97f1\u97f2\u97f3\u97f4\u97f5\u97f6\u97f7\u97f8\u97f9\u97fa\u97fb\u97fc\u97fd\u97fe\u97ff\u9800\u9801\u9802\u9803\u9804\u9805\u9806\u9807\u9808\u9809\u980a\u980b\u980c\u980d\u980e\u980f\u9810\u9811\u9812\u9813\u9814\u9815\u9816\u9817\u9818\u9819\u981a\u981b\u981c\u981d\u981e\u981f\u9820\u9821\u9822\u9823\u9824\u9825\u9826\u9827\u9828\u9829\u982a\u982b\u982c\u982d\u982e\u982f\u9830\u9831\u9832\u9833\u9834\u9835\u9836\u9837\u9838\u9839\u983a\u983b\u983c\u983d\u983e\u983f\u9840\u9841\u9842\u9843\u9844\u9845\u9846\u9847\u9848\u9849\u984a\u984b\u984c\u984d\u984e\u984f\u9850\u9851\u9852\u9853\u9854\u9855\u9856\u9857\u9858\u9859\u985a\u985b\u985c\u985d\u985e\u985f\u9860\u9861\u9862\u9863\u9864\u9865\u9866\u9867\u9868\u9869\u986a\u986b\u986c\u986d\u986e\u986f\u9870\u9871\u9872\u9873\u9874\u9875\u9876\u9877\u9878\u9879\u987a\u987b\u987c\u987d\u987e\u987f\u9880\u9881\u9882\u9883\u9884\u9885\u9886\u9887\u9888\u9889\u988a\u988b\u988c\u988d\u988e\u988f\u9890\u9891\u9892\u9893\u9894\u9895\u9896\u9897\u9898\u9899\u989a\u989b\u989c\u989d\u989e\u989f\u98a0\u98a1\u98a2\u98a3\u98a4\u98a5\u98a6\u98a7\u98a8\u98a9\u98aa\u98ab\u98ac\u98ad\u98ae\u98af\u98b0\u98b1\u98b2\u98b3\u98b4\u98b5\u98b6\u98b7\u98b8\u98b9\u98ba\u98bb\u98bc\u98bd\u98be\u98bf\u98c0\u98c1\u98c2\u98c3\u98c4\u98c5\u98c6\u98c7\u98c8\u98c9\u98ca\u98cb\u98cc\u98cd\u98ce\u98cf\u98d0\u98d1\u98d2\u98d3\u98d4\u98d5\u98d6\u98d7\u98d8\u98d9\u98da\u98db\u98dc\u98dd\u98de\u98df\u98e0\u98e1\u98e2\u98e3\u98e4\u98e5\u98e6\u98e7\u98e8\u98e9\u98ea\u98eb\u98ec\u98ed\u98ee\u98ef\u98f0\u98f1\u98f2\u98f3\u98f4\u98f5\u98f6\u98f7\u98f8\u98f9\u98fa\u98fb\u98fc\u98fd\u98fe\u98ff\u9900\u9901\u9902\u9903\u9904\u9905\u9906\u9907\u9908\u9909\u990a\u990b\u990c\u990d\u990e\u990f\u9910\u9911\u9912\u9913\u9914\u9915\u9916\u9917\u9918\u9919\u991a\u991b\u991c\u991d\u991e\u991f\u9920\u9921\u9922\u9923\u9924\u9925\u9926\u9927\u9928\u9929\u992a\u992b\u992c\u992d\u992e\u992f\u9930\u9931\u9932\u9933\u9934\u9935\u9936\u9937\u9938\u9939\u993a\u993b\u993c\u993d\u993e\u993f\u9940\u9941\u9942\u9943\u9944\u9945\u9946\u9947\u9948\u9949\u994a\u994b\u994c\u994d\u994e\u994f\u9950\u9951\u9952\u9953\u9954\u9955\u9956\u9957\u9958\u9959\u995a\u995b\u995c\u995d\u995e\u995f\u9960\u9961\u9962\u9963\u9964\u9965\u9966\u9967\u9968\u9969\u996a\u996b\u996c\u996d\u996e\u996f\u9970\u9971\u9972\u9973\u9974\u9975\u9976\u9977\u9978\u9979\u997a\u997b\u997c\u997d\u997e\u997f\u9980\u9981\u9982\u9983\u9984\u9985\u9986\u9987\u9988\u9989\u998a\u998b\u998c\u998d\u998e\u998f\u9990\u9991\u9992\u9993\u9994\u9995\u9996\u9997\u9998\u9999\u999a\u999b\u999c\u999d\u999e\u999f\u99a0\u99a1\u99a2\u99a3\u99a4\u99a5\u99a6\u99a7\u99a8\u99a9\u99aa\u99ab\u99ac\u99ad\u99ae\u99af\u99b0\u99b1\u99b2\u99b3\u99b4\u99b5\u99b6\u99b7\u99b8\u99b9\u99ba\u99bb\u99bc\u99bd\u99be\u99bf\u99c0\u99c1\u99c2\u99c3\u99c4\u99c5\u99c6\u99c7\u99c8\u99c9\u99ca\u99cb\u99cc\u99cd\u99ce\u99cf\u99d0\u99d1\u99d2\u99d3\u99d4\u99d5\u99d6\u99d7\u99d8\u99d9\u99da\u99db\u99dc\u99dd\u99de\u99df\u99e0\u99e1\u99e2\u99e3\u99e4\u99e5\u99e6\u99e7\u99e8\u99e9\u99ea\u99eb\u99ec\u99ed\u99ee\u99ef\u99f0\u99f1\u99f2\u99f3\u99f4\u99f5\u99f6\u99f7\u99f8\u99f9\u99fa\u99fb\u99fc\u99fd\u99fe\u99ff\u9a00\u9a01\u9a02\u9a03\u9a04\u9a05\u9a06\u9a07\u9a08\u9a09\u9a0a\u9a0b\u9a0c\u9a0d\u9a0e\u9a0f\u9a10\u9a11\u9a12\u9a13\u9a14\u9a15\u9a16\u9a17\u9a18\u9a19\u9a1a\u9a1b\u9a1c\u9a1d\u9a1e\u9a1f\u9a20\u9a21\u9a22\u9a23\u9a24\u9a25\u9a26\u9a27\u9a28\u9a29\u9a2a\u9a2b\u9a2c\u9a2d\u9a2e\u9a2f\u9a30\u9a31\u9a32\u9a33\u9a34\u9a35\u9a36\u9a37\u9a38\u9a39\u9a3a\u9a3b\u9a3c\u9a3d\u9a3e\u9a3f\u9a40\u9a41\u9a42\u9a43\u9a44\u9a45\u9a46\u9a47\u9a48\u9a49\u9a4a\u9a4b\u9a4c\u9a4d\u9a4e\u9a4f\u9a50\u9a51\u9a52\u9a53\u9a54\u9a55\u9a56\u9a57\u9a58\u9a59\u9a5a\u9a5b\u9a5c\u9a5d\u9a5e\u9a5f\u9a60\u9a61\u9a62\u9a63\u9a64\u9a65\u9a66\u9a67\u9a68\u9a69\u9a6a\u9a6b\u9a6c\u9a6d\u9a6e\u9a6f\u9a70\u9a71\u9a72\u9a73\u9a74\u9a75\u9a76\u9a77\u9a78\u9a79\u9a7a\u9a7b\u9a7c\u9a7d\u9a7e\u9a7f\u9a80\u9a81\u9a82\u9a83\u9a84\u9a85\u9a86\u9a87\u9a88\u9a89\u9a8a\u9a8b\u9a8c\u9a8d\u9a8e\u9a8f\u9a90\u9a91\u9a92\u9a93\u9a94\u9a95\u9a96\u9a97\u9a98\u9a99\u9a9a\u9a9b\u9a9c\u9a9d\u9a9e\u9a9f\u9aa0\u9aa1\u9aa2\u9aa3\u9aa4\u9aa5\u9aa6\u9aa7\u9aa8\u9aa9\u9aaa\u9aab\u9aac\u9aad\u9aae\u9aaf\u9ab0\u9ab1\u9ab2\u9ab3\u9ab4\u9ab5\u9ab6\u9ab7\u9ab8\u9ab9\u9aba\u9abb\u9abc\u9abd\u9abe\u9abf\u9ac0\u9ac1\u9ac2\u9ac3\u9ac4\u9ac5\u9ac6\u9ac7\u9ac8\u9ac9\u9aca\u9acb\u9acc\u9acd\u9ace\u9acf\u9ad0\u9ad1\u9ad2\u9ad3\u9ad4\u9ad5\u9ad6\u9ad7\u9ad8\u9ad9\u9ada\u9adb\u9adc\u9add\u9ade\u9adf\u9ae0\u9ae1\u9ae2\u9ae3\u9ae4\u9ae5\u9ae6\u9ae7\u9ae8\u9ae9\u9aea\u9aeb\u9aec\u9aed\u9aee\u9aef\u9af0\u9af1\u9af2\u9af3\u9af4\u9af5\u9af6\u9af7\u9af8\u9af9\u9afa\u9afb\u9afc\u9afd\u9afe\u9aff\u9b00\u9b01\u9b02\u9b03\u9b04\u9b05\u9b06\u9b07\u9b08\u9b09\u9b0a\u9b0b\u9b0c\u9b0d\u9b0e\u9b0f\u9b10\u9b11\u9b12\u9b13\u9b14\u9b15\u9b16\u9b17\u9b18\u9b19\u9b1a\u9b1b\u9b1c\u9b1d\u9b1e\u9b1f\u9b20\u9b21\u9b22\u9b23\u9b24\u9b25\u9b26\u9b27\u9b28\u9b29\u9b2a\u9b2b\u9b2c\u9b2d\u9b2e\u9b2f\u9b30\u9b31\u9b32\u9b33\u9b34\u9b35\u9b36\u9b37\u9b38\u9b39\u9b3a\u9b3b\u9b3c\u9b3d\u9b3e\u9b3f\u9b40\u9b41\u9b42\u9b43\u9b44\u9b45\u9b46\u9b47\u9b48\u9b49\u9b4a\u9b4b\u9b4c\u9b4d\u9b4e\u9b4f\u9b50\u9b51\u9b52\u9b53\u9b54\u9b55\u9b56\u9b57\u9b58\u9b59\u9b5a\u9b5b\u9b5c\u9b5d\u9b5e\u9b5f\u9b60\u9b61\u9b62\u9b63\u9b64\u9b65\u9b66\u9b67\u9b68\u9b69\u9b6a\u9b6b\u9b6c\u9b6d\u9b6e\u9b6f\u9b70\u9b71\u9b72\u9b73\u9b74\u9b75\u9b76\u9b77\u9b78\u9b79\u9b7a\u9b7b\u9b7c\u9b7d\u9b7e\u9b7f\u9b80\u9b81\u9b82\u9b83\u9b84\u9b85\u9b86\u9b87\u9b88\u9b89\u9b8a\u9b8b\u9b8c\u9b8d\u9b8e\u9b8f\u9b90\u9b91\u9b92\u9b93\u9b94\u9b95\u9b96\u9b97\u9b98\u9b99\u9b9a\u9b9b\u9b9c\u9b9d\u9b9e\u9b9f\u9ba0\u9ba1\u9ba2\u9ba3\u9ba4\u9ba5\u9ba6\u9ba7\u9ba8\u9ba9\u9baa\u9bab\u9bac\u9bad\u9bae\u9baf\u9bb0\u9bb1\u9bb2\u9bb3\u9bb4\u9bb5\u9bb6\u9bb7\u9bb8\u9bb9\u9bba\u9bbb\u9bbc\u9bbd\u9bbe\u9bbf\u9bc0\u9bc1\u9bc2\u9bc3\u9bc4\u9bc5\u9bc6\u9bc7\u9bc8\u9bc9\u9bca\u9bcb\u9bcc\u9bcd\u9bce\u9bcf\u9bd0\u9bd1\u9bd2\u9bd3\u9bd4\u9bd5\u9bd6\u9bd7\u9bd8\u9bd9\u9bda\u9bdb\u9bdc\u9bdd\u9bde\u9bdf\u9be0\u9be1\u9be2\u9be3\u9be4\u9be5\u9be6\u9be7\u9be8\u9be9\u9bea\u9beb\u9bec\u9bed\u9bee\u9bef\u9bf0\u9bf1\u9bf2\u9bf3\u9bf4\u9bf5\u9bf6\u9bf7\u9bf8\u9bf9\u9bfa\u9bfb\u9bfc\u9bfd\u9bfe\u9bff\u9c00\u9c01\u9c02\u9c03\u9c04\u9c05\u9c06\u9c07\u9c08\u9c09\u9c0a\u9c0b\u9c0c\u9c0d\u9c0e\u9c0f\u9c10\u9c11\u9c12\u9c13\u9c14\u9c15\u9c16\u9c17\u9c18\u9c19\u9c1a\u9c1b\u9c1c\u9c1d\u9c1e\u9c1f\u9c20\u9c21\u9c22\u9c23\u9c24\u9c25\u9c26\u9c27\u9c28\u9c29\u9c2a\u9c2b\u9c2c\u9c2d\u9c2e\u9c2f\u9c30\u9c31\u9c32\u9c33\u9c34\u9c35\u9c36\u9c37\u9c38\u9c39\u9c3a\u9c3b\u9c3c\u9c3d\u9c3e\u9c3f\u9c40\u9c41\u9c42\u9c43\u9c44\u9c45\u9c46\u9c47\u9c48\u9c49\u9c4a\u9c4b\u9c4c\u9c4d\u9c4e\u9c4f\u9c50\u9c51\u9c52\u9c53\u9c54\u9c55\u9c56\u9c57\u9c58\u9c59\u9c5a\u9c5b\u9c5c\u9c5d\u9c5e\u9c5f\u9c60\u9c61\u9c62\u9c63\u9c64\u9c65\u9c66\u9c67\u9c68\u9c69\u9c6a\u9c6b\u9c6c\u9c6d\u9c6e\u9c6f\u9c70\u9c71\u9c72\u9c73\u9c74\u9c75\u9c76\u9c77\u9c78\u9c79\u9c7a\u9c7b\u9c7c\u9c7d\u9c7e\u9c7f\u9c80\u9c81\u9c82\u9c83\u9c84\u9c85\u9c86\u9c87\u9c88\u9c89\u9c8a\u9c8b\u9c8c\u9c8d\u9c8e\u9c8f\u9c90\u9c91\u9c92\u9c93\u9c94\u9c95\u9c96\u9c97\u9c98\u9c99\u9c9a\u9c9b\u9c9c\u9c9d\u9c9e\u9c9f\u9ca0\u9ca1\u9ca2\u9ca3\u9ca4\u9ca5\u9ca6\u9ca7\u9ca8\u9ca9\u9caa\u9cab\u9cac\u9cad\u9cae\u9caf\u9cb0\u9cb1\u9cb2\u9cb3\u9cb4\u9cb5\u9cb6\u9cb7\u9cb8\u9cb9\u9cba\u9cbb\u9cbc\u9cbd\u9cbe\u9cbf\u9cc0\u9cc1\u9cc2\u9cc3\u9cc4\u9cc5\u9cc6\u9cc7\u9cc8\u9cc9\u9cca\u9ccb\u9ccc\u9ccd\u9cce\u9ccf\u9cd0\u9cd1\u9cd2\u9cd3\u9cd4\u9cd5\u9cd6\u9cd7\u9cd8\u9cd9\u9cda\u9cdb\u9cdc\u9cdd\u9cde\u9cdf\u9ce0\u9ce1\u9ce2\u9ce3\u9ce4\u9ce5\u9ce6\u9ce7\u9ce8\u9ce9\u9cea\u9ceb\u9cec\u9ced\u9cee\u9cef\u9cf0\u9cf1\u9cf2\u9cf3\u9cf4\u9cf5\u9cf6\u9cf7\u9cf8\u9cf9\u9cfa\u9cfb\u9cfc\u9cfd\u9cfe\u9cff\u9d00\u9d01\u9d02\u9d03\u9d04\u9d05\u9d06\u9d07\u9d08\u9d09\u9d0a\u9d0b\u9d0c\u9d0d\u9d0e\u9d0f\u9d10\u9d11\u9d12\u9d13\u9d14\u9d15\u9d16\u9d17\u9d18\u9d19\u9d1a\u9d1b\u9d1c\u9d1d\u9d1e\u9d1f\u9d20\u9d21\u9d22\u9d23\u9d24\u9d25\u9d26\u9d27\u9d28\u9d29\u9d2a\u9d2b\u9d2c\u9d2d\u9d2e\u9d2f\u9d30\u9d31\u9d32\u9d33\u9d34\u9d35\u9d36\u9d37\u9d38\u9d39\u9d3a\u9d3b\u9d3c\u9d3d\u9d3e\u9d3f\u9d40\u9d41\u9d42\u9d43\u9d44\u9d45\u9d46\u9d47\u9d48\u9d49\u9d4a\u9d4b\u9d4c\u9d4d\u9d4e\u9d4f\u9d50\u9d51\u9d52\u9d53\u9d54\u9d55\u9d56\u9d57\u9d58\u9d59\u9d5a\u9d5b\u9d5c\u9d5d\u9d5e\u9d5f\u9d60\u9d61\u9d62\u9d63\u9d64\u9d65\u9d66\u9d67\u9d68\u9d69\u9d6a\u9d6b\u9d6c\u9d6d\u9d6e\u9d6f\u9d70\u9d71\u9d72\u9d73\u9d74\u9d75\u9d76\u9d77\u9d78\u9d79\u9d7a\u9d7b\u9d7c\u9d7d\u9d7e\u9d7f\u9d80\u9d81\u9d82\u9d83\u9d84\u9d85\u9d86\u9d87\u9d88\u9d89\u9d8a\u9d8b\u9d8c\u9d8d\u9d8e\u9d8f\u9d90\u9d91\u9d92\u9d93\u9d94\u9d95\u9d96\u9d97\u9d98\u9d99\u9d9a\u9d9b\u9d9c\u9d9d\u9d9e\u9d9f\u9da0\u9da1\u9da2\u9da3\u9da4\u9da5\u9da6\u9da7\u9da8\u9da9\u9daa\u9dab\u9dac\u9dad\u9dae\u9daf\u9db0\u9db1\u9db2\u9db3\u9db4\u9db5\u9db6\u9db7\u9db8\u9db9\u9dba\u9dbb\u9dbc\u9dbd\u9dbe\u9dbf\u9dc0\u9dc1\u9dc2\u9dc3\u9dc4\u9dc5\u9dc6\u9dc7\u9dc8\u9dc9\u9dca\u9dcb\u9dcc\u9dcd\u9dce\u9dcf\u9dd0\u9dd1\u9dd2\u9dd3\u9dd4\u9dd5\u9dd6\u9dd7\u9dd8\u9dd9\u9dda\u9ddb\u9ddc\u9ddd\u9dde\u9ddf\u9de0\u9de1\u9de2\u9de3\u9de4\u9de5\u9de6\u9de7\u9de8\u9de9\u9dea\u9deb\u9dec\u9ded\u9dee\u9def\u9df0\u9df1\u9df2\u9df3\u9df4\u9df5\u9df6\u9df7\u9df8\u9df9\u9dfa\u9dfb\u9dfc\u9dfd\u9dfe\u9dff\u9e00\u9e01\u9e02\u9e03\u9e04\u9e05\u9e06\u9e07\u9e08\u9e09\u9e0a\u9e0b\u9e0c\u9e0d\u9e0e\u9e0f\u9e10\u9e11\u9e12\u9e13\u9e14\u9e15\u9e16\u9e17\u9e18\u9e19\u9e1a\u9e1b\u9e1c\u9e1d\u9e1e\u9e1f\u9e20\u9e21\u9e22\u9e23\u9e24\u9e25\u9e26\u9e27\u9e28\u9e29\u9e2a\u9e2b\u9e2c\u9e2d\u9e2e\u9e2f\u9e30\u9e31\u9e32\u9e33\u9e34\u9e35\u9e36\u9e37\u9e38\u9e39\u9e3a\u9e3b\u9e3c\u9e3d\u9e3e\u9e3f\u9e40\u9e41\u9e42\u9e43\u9e44\u9e45\u9e46\u9e47\u9e48\u9e49\u9e4a\u9e4b\u9e4c\u9e4d\u9e4e\u9e4f\u9e50\u9e51\u9e52\u9e53\u9e54\u9e55\u9e56\u9e57\u9e58\u9e59\u9e5a\u9e5b\u9e5c\u9e5d\u9e5e\u9e5f\u9e60\u9e61\u9e62\u9e63\u9e64\u9e65\u9e66\u9e67\u9e68\u9e69\u9e6a\u9e6b\u9e6c\u9e6d\u9e6e\u9e6f\u9e70\u9e71\u9e72\u9e73\u9e74\u9e75\u9e76\u9e77\u9e78\u9e79\u9e7a\u9e7b\u9e7c\u9e7d\u9e7e\u9e7f\u9e80\u9e81\u9e82\u9e83\u9e84\u9e85\u9e86\u9e87\u9e88\u9e89\u9e8a\u9e8b\u9e8c\u9e8d\u9e8e\u9e8f\u9e90\u9e91\u9e92\u9e93\u9e94\u9e95\u9e96\u9e97\u9e98\u9e99\u9e9a\u9e9b\u9e9c\u9e9d\u9e9e\u9e9f\u9ea0\u9ea1\u9ea2\u9ea3\u9ea4\u9ea5\u9ea6\u9ea7\u9ea8\u9ea9\u9eaa\u9eab\u9eac\u9ead\u9eae\u9eaf\u9eb0\u9eb1\u9eb2\u9eb3\u9eb4\u9eb5\u9eb6\u9eb7\u9eb8\u9eb9\u9eba\u9ebb\u9ebc\u9ebd\u9ebe\u9ebf\u9ec0\u9ec1\u9ec2\u9ec3\u9ec4\u9ec5\u9ec6\u9ec7\u9ec8\u9ec9\u9eca\u9ecb\u9ecc\u9ecd\u9ece\u9ecf\u9ed0\u9ed1\u9ed2\u9ed3\u9ed4\u9ed5\u9ed6\u9ed7\u9ed8\u9ed9\u9eda\u9edb\u9edc\u9edd\u9ede\u9edf\u9ee0\u9ee1\u9ee2\u9ee3\u9ee4\u9ee5\u9ee6\u9ee7\u9ee8\u9ee9\u9eea\u9eeb\u9eec\u9eed\u9eee\u9eef\u9ef0\u9ef1\u9ef2\u9ef3\u9ef4\u9ef5\u9ef6\u9ef7\u9ef8\u9ef9\u9efa\u9efb\u9efc\u9efd\u9efe\u9eff\u9f00\u9f01\u9f02\u9f03\u9f04\u9f05\u9f06\u9f07\u9f08\u9f09\u9f0a\u9f0b\u9f0c\u9f0d\u9f0e\u9f0f\u9f10\u9f11\u9f12\u9f13\u9f14\u9f15\u9f16\u9f17\u9f18\u9f19\u9f1a\u9f1b\u9f1c\u9f1d\u9f1e\u9f1f\u9f20\u9f21\u9f22\u9f23\u9f24\u9f25\u9f26\u9f27\u9f28\u9f29\u9f2a\u9f2b\u9f2c\u9f2d\u9f2e\u9f2f\u9f30\u9f31\u9f32\u9f33\u9f34\u9f35\u9f36\u9f37\u9f38\u9f39\u9f3a\u9f3b\u9f3c\u9f3d\u9f3e\u9f3f\u9f40\u9f41\u9f42\u9f43\u9f44\u9f45\u9f46\u9f47\u9f48\u9f49\u9f4a\u9f4b\u9f4c\u9f4d\u9f4e\u9f4f\u9f50\u9f51\u9f52\u9f53\u9f54\u9f55\u9f56\u9f57\u9f58\u9f59\u9f5a\u9f5b\u9f5c\u9f5d\u9f5e\u9f5f\u9f60\u9f61\u9f62\u9f63\u9f64\u9f65\u9f66\u9f67\u9f68\u9f69\u9f6a\u9f6b\u9f6c\u9f6d\u9f6e\u9f6f\u9f70\u9f71\u9f72\u9f73\u9f74\u9f75\u9f76\u9f77\u9f78\u9f79\u9f7a\u9f7b\u9f7c\u9f7d\u9f7e\u9f7f\u9f80\u9f81\u9f82\u9f83\u9f84\u9f85\u9f86\u9f87\u9f88\u9f89\u9f8a\u9f8b\u9f8c\u9f8d\u9f8e\u9f8f\u9f90\u9f91\u9f92\u9f93\u9f94\u9f95\u9f96\u9f97\u9f98\u9f99\u9f9a\u9f9b\u9f9c\u9f9d\u9f9e\u9f9f\u9fa0\u9fa1\u9fa2\u9fa3\u9fa4\u9fa5\u9fa6\u9fa7\u9fa8\u9fa9\u9faa\u9fab\u9fac\u9fad\u9fae\u9faf\u9fb0\u9fb1\u9fb2\u9fb3\u9fb4\u9fb5\u9fb6\u9fb7\u9fb8\u9fb9\u9fba\u9fbb\u9fbc\u9fbd\u9fbe\u9fbf\u9fc0\u9fc1\u9fc2\u9fc3\u9fc4\u9fc5\u9fc6\u9fc7\u9fc8\u9fc9\u9fca\u9fcb\u9fcc\u9fcd\u9fce\u9fcf\u9fd0\u9fd1\u9fd2\u9fd3\u9fd4\u9fd5\ua000\ua001\ua002\ua003\ua004\ua005\ua006\ua007\ua008\ua009\ua00a\ua00b\ua00c\ua00d\ua00e\ua00f\ua010\ua011\ua012\ua013\ua014\ua015\ua016\ua017\ua018\ua019\ua01a\ua01b\ua01c\ua01d\ua01e\ua01f\ua020\ua021\ua022\ua023\ua024\ua025\ua026\ua027\ua028\ua029\ua02a\ua02b\ua02c\ua02d\ua02e\ua02f\ua030\ua031\ua032\ua033\ua034\ua035\ua036\ua037\ua038\ua039\ua03a\ua03b\ua03c\ua03d\ua03e\ua03f\ua040\ua041\ua042\ua043\ua044\ua045\ua046\ua047\ua048\ua049\ua04a\ua04b\ua04c\ua04d\ua04e\ua04f\ua050\ua051\ua052\ua053\ua054\ua055\ua056\ua057\ua058\ua059\ua05a\ua05b\ua05c\ua05d\ua05e\ua05f\ua060\ua061\ua062\ua063\ua064\ua065\ua066\ua067\ua068\ua069\ua06a\ua06b\ua06c\ua06d\ua06e\ua06f\ua070\ua071\ua072\ua073\ua074\ua075\ua076\ua077\ua078\ua079\ua07a\ua07b\ua07c\ua07d\ua07e\ua07f\ua080\ua081\ua082\ua083\ua084\ua085\ua086\ua087\ua088\ua089\ua08a\ua08b\ua08c\ua08d\ua08e\ua08f\ua090\ua091\ua092\ua093\ua094\ua095\ua096\ua097\ua098\ua099\ua09a\ua09b\ua09c\ua09d\ua09e\ua09f\ua0a0\ua0a1\ua0a2\ua0a3\ua0a4\ua0a5\ua0a6\ua0a7\ua0a8\ua0a9\ua0aa\ua0ab\ua0ac\ua0ad\ua0ae\ua0af\ua0b0\ua0b1\ua0b2\ua0b3\ua0b4\ua0b5\ua0b6\ua0b7\ua0b8\ua0b9\ua0ba\ua0bb\ua0bc\ua0bd\ua0be\ua0bf\ua0c0\ua0c1\ua0c2\ua0c3\ua0c4\ua0c5\ua0c6\ua0c7\ua0c8\ua0c9\ua0ca\ua0cb\ua0cc\ua0cd\ua0ce\ua0cf\ua0d0\ua0d1\ua0d2\ua0d3\ua0d4\ua0d5\ua0d6\ua0d7\ua0d8\ua0d9\ua0da\ua0db\ua0dc\ua0dd\ua0de\ua0df\ua0e0\ua0e1\ua0e2\ua0e3\ua0e4\ua0e5\ua0e6\ua0e7\ua0e8\ua0e9\ua0ea\ua0eb\ua0ec\ua0ed\ua0ee\ua0ef\ua0f0\ua0f1\ua0f2\ua0f3\ua0f4\ua0f5\ua0f6\ua0f7\ua0f8\ua0f9\ua0fa\ua0fb\ua0fc\ua0fd\ua0fe\ua0ff\ua100\ua101\ua102\ua103\ua104\ua105\ua106\ua107\ua108\ua109\ua10a\ua10b\ua10c\ua10d\ua10e\ua10f\ua110\ua111\ua112\ua113\ua114\ua115\ua116\ua117\ua118\ua119\ua11a\ua11b\ua11c\ua11d\ua11e\ua11f\ua120\ua121\ua122\ua123\ua124\ua125\ua126\ua127\ua128\ua129\ua12a\ua12b\ua12c\ua12d\ua12e\ua12f\ua130\ua131\ua132\ua133\ua134\ua135\ua136\ua137\ua138\ua139\ua13a\ua13b\ua13c\ua13d\ua13e\ua13f\ua140\ua141\ua142\ua143\ua144\ua145\ua146\ua147\ua148\ua149\ua14a\ua14b\ua14c\ua14d\ua14e\ua14f\ua150\ua151\ua152\ua153\ua154\ua155\ua156\ua157\ua158\ua159\ua15a\ua15b\ua15c\ua15d\ua15e\ua15f\ua160\ua161\ua162\ua163\ua164\ua165\ua166\ua167\ua168\ua169\ua16a\ua16b\ua16c\ua16d\ua16e\ua16f\ua170\ua171\ua172\ua173\ua174\ua175\ua176\ua177\ua178\ua179\ua17a\ua17b\ua17c\ua17d\ua17e\ua17f\ua180\ua181\ua182\ua183\ua184\ua185\ua186\ua187\ua188\ua189\ua18a\ua18b\ua18c\ua18d\ua18e\ua18f\ua190\ua191\ua192\ua193\ua194\ua195\ua196\ua197\ua198\ua199\ua19a\ua19b\ua19c\ua19d\ua19e\ua19f\ua1a0\ua1a1\ua1a2\ua1a3\ua1a4\ua1a5\ua1a6\ua1a7\ua1a8\ua1a9\ua1aa\ua1ab\ua1ac\ua1ad\ua1ae\ua1af\ua1b0\ua1b1\ua1b2\ua1b3\ua1b4\ua1b5\ua1b6\ua1b7\ua1b8\ua1b9\ua1ba\ua1bb\ua1bc\ua1bd\ua1be\ua1bf\ua1c0\ua1c1\ua1c2\ua1c3\ua1c4\ua1c5\ua1c6\ua1c7\ua1c8\ua1c9\ua1ca\ua1cb\ua1cc\ua1cd\ua1ce\ua1cf\ua1d0\ua1d1\ua1d2\ua1d3\ua1d4\ua1d5\ua1d6\ua1d7\ua1d8\ua1d9\ua1da\ua1db\ua1dc\ua1dd\ua1de\ua1df\ua1e0\ua1e1\ua1e2\ua1e3\ua1e4\ua1e5\ua1e6\ua1e7\ua1e8\ua1e9\ua1ea\ua1eb\ua1ec\ua1ed\ua1ee\ua1ef\ua1f0\ua1f1\ua1f2\ua1f3\ua1f4\ua1f5\ua1f6\ua1f7\ua1f8\ua1f9\ua1fa\ua1fb\ua1fc\ua1fd\ua1fe\ua1ff\ua200\ua201\ua202\ua203\ua204\ua205\ua206\ua207\ua208\ua209\ua20a\ua20b\ua20c\ua20d\ua20e\ua20f\ua210\ua211\ua212\ua213\ua214\ua215\ua216\ua217\ua218\ua219\ua21a\ua21b\ua21c\ua21d\ua21e\ua21f\ua220\ua221\ua222\ua223\ua224\ua225\ua226\ua227\ua228\ua229\ua22a\ua22b\ua22c\ua22d\ua22e\ua22f\ua230\ua231\ua232\ua233\ua234\ua235\ua236\ua237\ua238\ua239\ua23a\ua23b\ua23c\ua23d\ua23e\ua23f\ua240\ua241\ua242\ua243\ua244\ua245\ua246\ua247\ua248\ua249\ua24a\ua24b\ua24c\ua24d\ua24e\ua24f\ua250\ua251\ua252\ua253\ua254\ua255\ua256\ua257\ua258\ua259\ua25a\ua25b\ua25c\ua25d\ua25e\ua25f\ua260\ua261\ua262\ua263\ua264\ua265\ua266\ua267\ua268\ua269\ua26a\ua26b\ua26c\ua26d\ua26e\ua26f\ua270\ua271\ua272\ua273\ua274\ua275\ua276\ua277\ua278\ua279\ua27a\ua27b\ua27c\ua27d\ua27e\ua27f\ua280\ua281\ua282\ua283\ua284\ua285\ua286\ua287\ua288\ua289\ua28a\ua28b\ua28c\ua28d\ua28e\ua28f\ua290\ua291\ua292\ua293\ua294\ua295\ua296\ua297\ua298\ua299\ua29a\ua29b\ua29c\ua29d\ua29e\ua29f\ua2a0\ua2a1\ua2a2\ua2a3\ua2a4\ua2a5\ua2a6\ua2a7\ua2a8\ua2a9\ua2aa\ua2ab\ua2ac\ua2ad\ua2ae\ua2af\ua2b0\ua2b1\ua2b2\ua2b3\ua2b4\ua2b5\ua2b6\ua2b7\ua2b8\ua2b9\ua2ba\ua2bb\ua2bc\ua2bd\ua2be\ua2bf\ua2c0\ua2c1\ua2c2\ua2c3\ua2c4\ua2c5\ua2c6\ua2c7\ua2c8\ua2c9\ua2ca\ua2cb\ua2cc\ua2cd\ua2ce\ua2cf\ua2d0\ua2d1\ua2d2\ua2d3\ua2d4\ua2d5\ua2d6\ua2d7\ua2d8\ua2d9\ua2da\ua2db\ua2dc\ua2dd\ua2de\ua2df\ua2e0\ua2e1\ua2e2\ua2e3\ua2e4\ua2e5\ua2e6\ua2e7\ua2e8\ua2e9\ua2ea\ua2eb\ua2ec\ua2ed\ua2ee\ua2ef\ua2f0\ua2f1\ua2f2\ua2f3\ua2f4\ua2f5\ua2f6\ua2f7\ua2f8\ua2f9\ua2fa\ua2fb\ua2fc\ua2fd\ua2fe\ua2ff\ua300\ua301\ua302\ua303\ua304\ua305\ua306\ua307\ua308\ua309\ua30a\ua30b\ua30c\ua30d\ua30e\ua30f\ua310\ua311\ua312\ua313\ua314\ua315\ua316\ua317\ua318\ua319\ua31a\ua31b\ua31c\ua31d\ua31e\ua31f\ua320\ua321\ua322\ua323\ua324\ua325\ua326\ua327\ua328\ua329\ua32a\ua32b\ua32c\ua32d\ua32e\ua32f\ua330\ua331\ua332\ua333\ua334\ua335\ua336\ua337\ua338\ua339\ua33a\ua33b\ua33c\ua33d\ua33e\ua33f\ua340\ua341\ua342\ua343\ua344\ua345\ua346\ua347\ua348\ua349\ua34a\ua34b\ua34c\ua34d\ua34e\ua34f\ua350\ua351\ua352\ua353\ua354\ua355\ua356\ua357\ua358\ua359\ua35a\ua35b\ua35c\ua35d\ua35e\ua35f\ua360\ua361\ua362\ua363\ua364\ua365\ua366\ua367\ua368\ua369\ua36a\ua36b\ua36c\ua36d\ua36e\ua36f\ua370\ua371\ua372\ua373\ua374\ua375\ua376\ua377\ua378\ua379\ua37a\ua37b\ua37c\ua37d\ua37e\ua37f\ua380\ua381\ua382\ua383\ua384\ua385\ua386\ua387\ua388\ua389\ua38a\ua38b\ua38c\ua38d\ua38e\ua38f\ua390\ua391\ua392\ua393\ua394\ua395\ua396\ua397\ua398\ua399\ua39a\ua39b\ua39c\ua39d\ua39e\ua39f\ua3a0\ua3a1\ua3a2\ua3a3\ua3a4\ua3a5\ua3a6\ua3a7\ua3a8\ua3a9\ua3aa\ua3ab\ua3ac\ua3ad\ua3ae\ua3af\ua3b0\ua3b1\ua3b2\ua3b3\ua3b4\ua3b5\ua3b6\ua3b7\ua3b8\ua3b9\ua3ba\ua3bb\ua3bc\ua3bd\ua3be\ua3bf\ua3c0\ua3c1\ua3c2\ua3c3\ua3c4\ua3c5\ua3c6\ua3c7\ua3c8\ua3c9\ua3ca\ua3cb\ua3cc\ua3cd\ua3ce\ua3cf\ua3d0\ua3d1\ua3d2\ua3d3\ua3d4\ua3d5\ua3d6\ua3d7\ua3d8\ua3d9\ua3da\ua3db\ua3dc\ua3dd\ua3de\ua3df\ua3e0\ua3e1\ua3e2\ua3e3\ua3e4\ua3e5\ua3e6\ua3e7\ua3e8\ua3e9\ua3ea\ua3eb\ua3ec\ua3ed\ua3ee\ua3ef\ua3f0\ua3f1\ua3f2\ua3f3\ua3f4\ua3f5\ua3f6\ua3f7\ua3f8\ua3f9\ua3fa\ua3fb\ua3fc\ua3fd\ua3fe\ua3ff\ua400\ua401\ua402\ua403\ua404\ua405\ua406\ua407\ua408\ua409\ua40a\ua40b\ua40c\ua40d\ua40e\ua40f\ua410\ua411\ua412\ua413\ua414\ua415\ua416\ua417\ua418\ua419\ua41a\ua41b\ua41c\ua41d\ua41e\ua41f\ua420\ua421\ua422\ua423\ua424\ua425\ua426\ua427\ua428\ua429\ua42a\ua42b\ua42c\ua42d\ua42e\ua42f\ua430\ua431\ua432\ua433\ua434\ua435\ua436\ua437\ua438\ua439\ua43a\ua43b\ua43c\ua43d\ua43e\ua43f\ua440\ua441\ua442\ua443\ua444\ua445\ua446\ua447\ua448\ua449\ua44a\ua44b\ua44c\ua44d\ua44e\ua44f\ua450\ua451\ua452\ua453\ua454\ua455\ua456\ua457\ua458\ua459\ua45a\ua45b\ua45c\ua45d\ua45e\ua45f\ua460\ua461\ua462\ua463\ua464\ua465\ua466\ua467\ua468\ua469\ua46a\ua46b\ua46c\ua46d\ua46e\ua46f\ua470\ua471\ua472\ua473\ua474\ua475\ua476\ua477\ua478\ua479\ua47a\ua47b\ua47c\ua47d\ua47e\ua47f\ua480\ua481\ua482\ua483\ua484\ua485\ua486\ua487\ua488\ua489\ua48a\ua48b\ua48c\ua4d0\ua4d1\ua4d2\ua4d3\ua4d4\ua4d5\ua4d6\ua4d7\ua4d8\ua4d9\ua4da\ua4db\ua4dc\ua4dd\ua4de\ua4df\ua4e0\ua4e1\ua4e2\ua4e3\ua4e4\ua4e5\ua4e6\ua4e7\ua4e8\ua4e9\ua4ea\ua4eb\ua4ec\ua4ed\ua4ee\ua4ef\ua4f0\ua4f1\ua4f2\ua4f3\ua4f4\ua4f5\ua4f6\ua4f7\ua4f8\ua4f9\ua4fa\ua4fb\ua4fc\ua4fd\ua500\ua501\ua502\ua503\ua504\ua505\ua506\ua507\ua508\ua509\ua50a\ua50b\ua50c\ua50d\ua50e\ua50f\ua510\ua511\ua512\ua513\ua514\ua515\ua516\ua517\ua518\ua519\ua51a\ua51b\ua51c\ua51d\ua51e\ua51f\ua520\ua521\ua522\ua523\ua524\ua525\ua526\ua527\ua528\ua529\ua52a\ua52b\ua52c\ua52d\ua52e\ua52f\ua530\ua531\ua532\ua533\ua534\ua535\ua536\ua537\ua538\ua539\ua53a\ua53b\ua53c\ua53d\ua53e\ua53f\ua540\ua541\ua542\ua543\ua544\ua545\ua546\ua547\ua548\ua549\ua54a\ua54b\ua54c\ua54d\ua54e\ua54f\ua550\ua551\ua552\ua553\ua554\ua555\ua556\ua557\ua558\ua559\ua55a\ua55b\ua55c\ua55d\ua55e\ua55f\ua560\ua561\ua562\ua563\ua564\ua565\ua566\ua567\ua568\ua569\ua56a\ua56b\ua56c\ua56d\ua56e\ua56f\ua570\ua571\ua572\ua573\ua574\ua575\ua576\ua577\ua578\ua579\ua57a\ua57b\ua57c\ua57d\ua57e\ua57f\ua580\ua581\ua582\ua583\ua584\ua585\ua586\ua587\ua588\ua589\ua58a\ua58b\ua58c\ua58d\ua58e\ua58f\ua590\ua591\ua592\ua593\ua594\ua595\ua596\ua597\ua598\ua599\ua59a\ua59b\ua59c\ua59d\ua59e\ua59f\ua5a0\ua5a1\ua5a2\ua5a3\ua5a4\ua5a5\ua5a6\ua5a7\ua5a8\ua5a9\ua5aa\ua5ab\ua5ac\ua5ad\ua5ae\ua5af\ua5b0\ua5b1\ua5b2\ua5b3\ua5b4\ua5b5\ua5b6\ua5b7\ua5b8\ua5b9\ua5ba\ua5bb\ua5bc\ua5bd\ua5be\ua5bf\ua5c0\ua5c1\ua5c2\ua5c3\ua5c4\ua5c5\ua5c6\ua5c7\ua5c8\ua5c9\ua5ca\ua5cb\ua5cc\ua5cd\ua5ce\ua5cf\ua5d0\ua5d1\ua5d2\ua5d3\ua5d4\ua5d5\ua5d6\ua5d7\ua5d8\ua5d9\ua5da\ua5db\ua5dc\ua5dd\ua5de\ua5df\ua5e0\ua5e1\ua5e2\ua5e3\ua5e4\ua5e5\ua5e6\ua5e7\ua5e8\ua5e9\ua5ea\ua5eb\ua5ec\ua5ed\ua5ee\ua5ef\ua5f0\ua5f1\ua5f2\ua5f3\ua5f4\ua5f5\ua5f6\ua5f7\ua5f8\ua5f9\ua5fa\ua5fb\ua5fc\ua5fd\ua5fe\ua5ff\ua600\ua601\ua602\ua603\ua604\ua605\ua606\ua607\ua608\ua609\ua60a\ua60b\ua60c\ua610\ua611\ua612\ua613\ua614\ua615\ua616\ua617\ua618\ua619\ua61a\ua61b\ua61c\ua61d\ua61e\ua61f\ua620\ua621\ua622\ua623\ua624\ua625\ua626\ua627\ua628\ua629\ua62a\ua62b\ua640\ua641\ua642\ua643\ua644\ua645\ua646\ua647\ua648\ua649\ua64a\ua64b\ua64c\ua64d\ua64e\ua64f\ua650\ua651\ua652\ua653\ua654\ua655\ua656\ua657\ua658\ua659\ua65a\ua65b\ua65c\ua65d\ua65e\ua65f\ua660\ua661\ua662\ua663\ua664\ua665\ua666\ua667\ua668\ua669\ua66a\ua66b\ua66c\ua66d\ua66e\ua66f\ua674\ua675\ua676\ua677\ua678\ua679\ua67a\ua67b\ua67c\ua67d\ua67f\ua680\ua681\ua682\ua683\ua684\ua685\ua686\ua687\ua688\ua689\ua68a\ua68b\ua68c\ua68d\ua68e\ua68f\ua690\ua691\ua692\ua693\ua694\ua695\ua696\ua697\ua698\ua699\ua69a\ua69b\ua69c\ua69d\ua69e\ua69f\ua6a0\ua6a1\ua6a2\ua6a3\ua6a4\ua6a5\ua6a6\ua6a7\ua6a8\ua6a9\ua6aa\ua6ab\ua6ac\ua6ad\ua6ae\ua6af\ua6b0\ua6b1\ua6b2\ua6b3\ua6b4\ua6b5\ua6b6\ua6b7\ua6b8\ua6b9\ua6ba\ua6bb\ua6bc\ua6bd\ua6be\ua6bf\ua6c0\ua6c1\ua6c2\ua6c3\ua6c4\ua6c5\ua6c6\ua6c7\ua6c8\ua6c9\ua6ca\ua6cb\ua6cc\ua6cd\ua6ce\ua6cf\ua6d0\ua6d1\ua6d2\ua6d3\ua6d4\ua6d5\ua6d6\ua6d7\ua6d8\ua6d9\ua6da\ua6db\ua6dc\ua6dd\ua6de\ua6df\ua6e0\ua6e1\ua6e2\ua6e3\ua6e4\ua6e5\ua6e6\ua6e7\ua6e8\ua6e9\ua6ea\ua6eb\ua6ec\ua6ed\ua6ee\ua6ef\ua6f0\ua6f1\ua717\ua718\ua719\ua71a\ua71b\ua71c\ua71d\ua71e\ua71f\ua722\ua723\ua724\ua725\ua726\ua727\ua728\ua729\ua72a\ua72b\ua72c\ua72d\ua72e\ua72f\ua730\ua731\ua732\ua733\ua734\ua735\ua736\ua737\ua738\ua739\ua73a\ua73b\ua73c\ua73d\ua73e\ua73f\ua740\ua741\ua742\ua743\ua744\ua745\ua746\ua747\ua748\ua749\ua74a\ua74b\ua74c\ua74d\ua74e\ua74f\ua750\ua751\ua752\ua753\ua754\ua755\ua756\ua757\ua758\ua759\ua75a\ua75b\ua75c\ua75d\ua75e\ua75f\ua760\ua761\ua762\ua763\ua764\ua765\ua766\ua767\ua768\ua769\ua76a\ua76b\ua76c\ua76d\ua76e\ua76f\ua770\ua771\ua772\ua773\ua774\ua775\ua776\ua777\ua778\ua779\ua77a\ua77b\ua77c\ua77d\ua77e\ua77f\ua780\ua781\ua782\ua783\ua784\ua785\ua786\ua787\ua788\ua78b\ua78c\ua78d\ua78e\ua78f\ua790\ua791\ua792\ua793\ua794\ua795\ua796\ua797\ua798\ua799\ua79a\ua79b\ua79c\ua79d\ua79e\ua79f\ua7a0\ua7a1\ua7a2\ua7a3\ua7a4\ua7a5\ua7a6\ua7a7\ua7a8\ua7a9\ua7aa\ua7ab\ua7ac\ua7ad\ua7ae\ua7b0\ua7b1\ua7b2\ua7b3\ua7b4\ua7b5\ua7b6\ua7b7\ua7f7\ua7f8\ua7f9\ua7fa\ua7fb\ua7fc\ua7fd\ua7fe\ua7ff\ua800\ua801\ua802\ua803\ua804\ua805\ua806\ua807\ua808\ua809\ua80a\ua80b\ua80c\ua80d\ua80e\ua80f\ua810\ua811\ua812\ua813\ua814\ua815\ua816\ua817\ua818\ua819\ua81a\ua81b\ua81c\ua81d\ua81e\ua81f\ua820\ua821\ua822\ua823\ua824\ua825\ua826\ua827\ua840\ua841\ua842\ua843\ua844\ua845\ua846\ua847\ua848\ua849\ua84a\ua84b\ua84c\ua84d\ua84e\ua84f\ua850\ua851\ua852\ua853\ua854\ua855\ua856\ua857\ua858\ua859\ua85a\ua85b\ua85c\ua85d\ua85e\ua85f\ua860\ua861\ua862\ua863\ua864\ua865\ua866\ua867\ua868\ua869\ua86a\ua86b\ua86c\ua86d\ua86e\ua86f\ua870\ua871\ua872\ua873\ua880\ua881\ua882\ua883\ua884\ua885\ua886\ua887\ua888\ua889\ua88a\ua88b\ua88c\ua88d\ua88e\ua88f\ua890\ua891\ua892\ua893\ua894\ua895\ua896\ua897\ua898\ua899\ua89a\ua89b\ua89c\ua89d\ua89e\ua89f\ua8a0\ua8a1\ua8a2\ua8a3\ua8a4\ua8a5\ua8a6\ua8a7\ua8a8\ua8a9\ua8aa\ua8ab\ua8ac\ua8ad\ua8ae\ua8af\ua8b0\ua8b1\ua8b2\ua8b3\ua8b4\ua8b5\ua8b6\ua8b7\ua8b8\ua8b9\ua8ba\ua8bb\ua8bc\ua8bd\ua8be\ua8bf\ua8c0\ua8c1\ua8c2\ua8c3\ua8c4\ua8c5\ua8d0\ua8d1\ua8d2\ua8d3\ua8d4\ua8d5\ua8d6\ua8d7\ua8d8\ua8d9\ua8e0\ua8e1\ua8e2\ua8e3\ua8e4\ua8e5\ua8e6\ua8e7\ua8e8\ua8e9\ua8ea\ua8eb\ua8ec\ua8ed\ua8ee\ua8ef\ua8f0\ua8f1\ua8f2\ua8f3\ua8f4\ua8f5\ua8f6\ua8f7\ua8fb\ua8fd\ua900\ua901\ua902\ua903\ua904\ua905\ua906\ua907\ua908\ua909\ua90a\ua90b\ua90c\ua90d\ua90e\ua90f\ua910\ua911\ua912\ua913\ua914\ua915\ua916\ua917\ua918\ua919\ua91a\ua91b\ua91c\ua91d\ua91e\ua91f\ua920\ua921\ua922\ua923\ua924\ua925\ua926\ua927\ua928\ua929\ua92a\ua92b\ua92c\ua92d\ua930\ua931\ua932\ua933\ua934\ua935\ua936\ua937\ua938\ua939\ua93a\ua93b\ua93c\ua93d\ua93e\ua93f\ua940\ua941\ua942\ua943\ua944\ua945\ua946\ua947\ua948\ua949\ua94a\ua94b\ua94c\ua94d\ua94e\ua94f\ua950\ua951\ua952\ua953\ua960\ua961\ua962\ua963\ua964\ua965\ua966\ua967\ua968\ua969\ua96a\ua96b\ua96c\ua96d\ua96e\ua96f\ua970\ua971\ua972\ua973\ua974\ua975\ua976\ua977\ua978\ua979\ua97a\ua97b\ua97c\ua980\ua981\ua982\ua983\ua984\ua985\ua986\ua987\ua988\ua989\ua98a\ua98b\ua98c\ua98d\ua98e\ua98f\ua990\ua991\ua992\ua993\ua994\ua995\ua996\ua997\ua998\ua999\ua99a\ua99b\ua99c\ua99d\ua99e\ua99f\ua9a0\ua9a1\ua9a2\ua9a3\ua9a4\ua9a5\ua9a6\ua9a7\ua9a8\ua9a9\ua9aa\ua9ab\ua9ac\ua9ad\ua9ae\ua9af\ua9b0\ua9b1\ua9b2\ua9b3\ua9b4\ua9b5\ua9b6\ua9b7\ua9b8\ua9b9\ua9ba\ua9bb\ua9bc\ua9bd\ua9be\ua9bf\ua9c0\ua9cf\ua9d0\ua9d1\ua9d2\ua9d3\ua9d4\ua9d5\ua9d6\ua9d7\ua9d8\ua9d9\ua9e0\ua9e1\ua9e2\ua9e3\ua9e4\ua9e5\ua9e6\ua9e7\ua9e8\ua9e9\ua9ea\ua9eb\ua9ec\ua9ed\ua9ee\ua9ef\ua9f0\ua9f1\ua9f2\ua9f3\ua9f4\ua9f5\ua9f6\ua9f7\ua9f8\ua9f9\ua9fa\ua9fb\ua9fc\ua9fd\ua9fe\uaa00\uaa01\uaa02\uaa03\uaa04\uaa05\uaa06\uaa07\uaa08\uaa09\uaa0a\uaa0b\uaa0c\uaa0d\uaa0e\uaa0f\uaa10\uaa11\uaa12\uaa13\uaa14\uaa15\uaa16\uaa17\uaa18\uaa19\uaa1a\uaa1b\uaa1c\uaa1d\uaa1e\uaa1f\uaa20\uaa21\uaa22\uaa23\uaa24\uaa25\uaa26\uaa27\uaa28\uaa29\uaa2a\uaa2b\uaa2c\uaa2d\uaa2e\uaa2f\uaa30\uaa31\uaa32\uaa33\uaa34\uaa35\uaa36\uaa40\uaa41\uaa42\uaa43\uaa44\uaa45\uaa46\uaa47\uaa48\uaa49\uaa4a\uaa4b\uaa4c\uaa4d\uaa50\uaa51\uaa52\uaa53\uaa54\uaa55\uaa56\uaa57\uaa58\uaa59\uaa60\uaa61\uaa62\uaa63\uaa64\uaa65\uaa66\uaa67\uaa68\uaa69\uaa6a\uaa6b\uaa6c\uaa6d\uaa6e\uaa6f\uaa70\uaa71\uaa72\uaa73\uaa74\uaa75\uaa76\uaa7a\uaa7b\uaa7c\uaa7d\uaa7e\uaa7f\uaa80\uaa81\uaa82\uaa83\uaa84\uaa85\uaa86\uaa87\uaa88\uaa89\uaa8a\uaa8b\uaa8c\uaa8d\uaa8e\uaa8f\uaa90\uaa91\uaa92\uaa93\uaa94\uaa95\uaa96\uaa97\uaa98\uaa99\uaa9a\uaa9b\uaa9c\uaa9d\uaa9e\uaa9f\uaaa0\uaaa1\uaaa2\uaaa3\uaaa4\uaaa5\uaaa6\uaaa7\uaaa8\uaaa9\uaaaa\uaaab\uaaac\uaaad\uaaae\uaaaf\uaab0\uaab1\uaab2\uaab3\uaab4\uaab5\uaab6\uaab7\uaab8\uaab9\uaaba\uaabb\uaabc\uaabd\uaabe\uaabf\uaac0\uaac1\uaac2\uaadb\uaadc\uaadd\uaae0\uaae1\uaae2\uaae3\uaae4\uaae5\uaae6\uaae7\uaae8\uaae9\uaaea\uaaeb\uaaec\uaaed\uaaee\uaaef\uaaf2\uaaf3\uaaf4\uaaf5\uaaf6\uab01\uab02\uab03\uab04\uab05\uab06\uab09\uab0a\uab0b\uab0c\uab0d\uab0e\uab11\uab12\uab13\uab14\uab15\uab16\uab20\uab21\uab22\uab23\uab24\uab25\uab26\uab28\uab29\uab2a\uab2b\uab2c\uab2d\uab2e\uab30\uab31\uab32\uab33\uab34\uab35\uab36\uab37\uab38\uab39\uab3a\uab3b\uab3c\uab3d\uab3e\uab3f\uab40\uab41\uab42\uab43\uab44\uab45\uab46\uab47\uab48\uab49\uab4a\uab4b\uab4c\uab4d\uab4e\uab4f\uab50\uab51\uab52\uab53\uab54\uab55\uab56\uab57\uab58\uab59\uab5a\uab5c\uab5d\uab5e\uab5f\uab60\uab61\uab62\uab63\uab64\uab65\uab70\uab71\uab72\uab73\uab74\uab75\uab76\uab77\uab78\uab79\uab7a\uab7b\uab7c\uab7d\uab7e\uab7f\uab80\uab81\uab82\uab83\uab84\uab85\uab86\uab87\uab88\uab89\uab8a\uab8b\uab8c\uab8d\uab8e\uab8f\uab90\uab91\uab92\uab93\uab94\uab95\uab96\uab97\uab98\uab99\uab9a\uab9b\uab9c\uab9d\uab9e\uab9f\uaba0\uaba1\uaba2\uaba3\uaba4\uaba5\uaba6\uaba7\uaba8\uaba9\uabaa\uabab\uabac\uabad\uabae\uabaf\uabb0\uabb1\uabb2\uabb3\uabb4\uabb5\uabb6\uabb7\uabb8\uabb9\uabba\uabbb\uabbc\uabbd\uabbe\uabbf\uabc0\uabc1\uabc2\uabc3\uabc4\uabc5\uabc6\uabc7\uabc8\uabc9\uabca\uabcb\uabcc\uabcd\uabce\uabcf\uabd0\uabd1\uabd2\uabd3\uabd4\uabd5\uabd6\uabd7\uabd8\uabd9\uabda\uabdb\uabdc\uabdd\uabde\uabdf\uabe0\uabe1\uabe2\uabe3\uabe4\uabe5\uabe6\uabe7\uabe8\uabe9\uabea\uabec\uabed\uabf0\uabf1\uabf2\uabf3\uabf4\uabf5\uabf6\uabf7\uabf8\uabf9\uac00\uac01\uac02\uac03\uac04\uac05\uac06\uac07\uac08\uac09\uac0a\uac0b\uac0c\uac0d\uac0e\uac0f\uac10\uac11\uac12\uac13\uac14\uac15\uac16\uac17\uac18\uac19\uac1a\uac1b\uac1c\uac1d\uac1e\uac1f\uac20\uac21\uac22\uac23\uac24\uac25\uac26\uac27\uac28\uac29\uac2a\uac2b\uac2c\uac2d\uac2e\uac2f\uac30\uac31\uac32\uac33\uac34\uac35\uac36\uac37\uac38\uac39\uac3a\uac3b\uac3c\uac3d\uac3e\uac3f\uac40\uac41\uac42\uac43\uac44\uac45\uac46\uac47\uac48\uac49\uac4a\uac4b\uac4c\uac4d\uac4e\uac4f\uac50\uac51\uac52\uac53\uac54\uac55\uac56\uac57\uac58\uac59\uac5a\uac5b\uac5c\uac5d\uac5e\uac5f\uac60\uac61\uac62\uac63\uac64\uac65\uac66\uac67\uac68\uac69\uac6a\uac6b\uac6c\uac6d\uac6e\uac6f\uac70\uac71\uac72\uac73\uac74\uac75\uac76\uac77\uac78\uac79\uac7a\uac7b\uac7c\uac7d\uac7e\uac7f\uac80\uac81\uac82\uac83\uac84\uac85\uac86\uac87\uac88\uac89\uac8a\uac8b\uac8c\uac8d\uac8e\uac8f\uac90\uac91\uac92\uac93\uac94\uac95\uac96\uac97\uac98\uac99\uac9a\uac9b\uac9c\uac9d\uac9e\uac9f\uaca0\uaca1\uaca2\uaca3\uaca4\uaca5\uaca6\uaca7\uaca8\uaca9\uacaa\uacab\uacac\uacad\uacae\uacaf\uacb0\uacb1\uacb2\uacb3\uacb4\uacb5\uacb6\uacb7\uacb8\uacb9\uacba\uacbb\uacbc\uacbd\uacbe\uacbf\uacc0\uacc1\uacc2\uacc3\uacc4\uacc5\uacc6\uacc7\uacc8\uacc9\uacca\uaccb\uaccc\uaccd\uacce\uaccf\uacd0\uacd1\uacd2\uacd3\uacd4\uacd5\uacd6\uacd7\uacd8\uacd9\uacda\uacdb\uacdc\uacdd\uacde\uacdf\uace0\uace1\uace2\uace3\uace4\uace5\uace6\uace7\uace8\uace9\uacea\uaceb\uacec\uaced\uacee\uacef\uacf0\uacf1\uacf2\uacf3\uacf4\uacf5\uacf6\uacf7\uacf8\uacf9\uacfa\uacfb\uacfc\uacfd\uacfe\uacff\uad00\uad01\uad02\uad03\uad04\uad05\uad06\uad07\uad08\uad09\uad0a\uad0b\uad0c\uad0d\uad0e\uad0f\uad10\uad11\uad12\uad13\uad14\uad15\uad16\uad17\uad18\uad19\uad1a\uad1b\uad1c\uad1d\uad1e\uad1f\uad20\uad21\uad22\uad23\uad24\uad25\uad26\uad27\uad28\uad29\uad2a\uad2b\uad2c\uad2d\uad2e\uad2f\uad30\uad31\uad32\uad33\uad34\uad35\uad36\uad37\uad38\uad39\uad3a\uad3b\uad3c\uad3d\uad3e\uad3f\uad40\uad41\uad42\uad43\uad44\uad45\uad46\uad47\uad48\uad49\uad4a\uad4b\uad4c\uad4d\uad4e\uad4f\uad50\uad51\uad52\uad53\uad54\uad55\uad56\uad57\uad58\uad59\uad5a\uad5b\uad5c\uad5d\uad5e\uad5f\uad60\uad61\uad62\uad63\uad64\uad65\uad66\uad67\uad68\uad69\uad6a\uad6b\uad6c\uad6d\uad6e\uad6f\uad70\uad71\uad72\uad73\uad74\uad75\uad76\uad77\uad78\uad79\uad7a\uad7b\uad7c\uad7d\uad7e\uad7f\uad80\uad81\uad82\uad83\uad84\uad85\uad86\uad87\uad88\uad89\uad8a\uad8b\uad8c\uad8d\uad8e\uad8f\uad90\uad91\uad92\uad93\uad94\uad95\uad96\uad97\uad98\uad99\uad9a\uad9b\uad9c\uad9d\uad9e\uad9f\uada0\uada1\uada2\uada3\uada4\uada5\uada6\uada7\uada8\uada9\uadaa\uadab\uadac\uadad\uadae\uadaf\uadb0\uadb1\uadb2\uadb3\uadb4\uadb5\uadb6\uadb7\uadb8\uadb9\uadba\uadbb\uadbc\uadbd\uadbe\uadbf\uadc0\uadc1\uadc2\uadc3\uadc4\uadc5\uadc6\uadc7\uadc8\uadc9\uadca\uadcb\uadcc\uadcd\uadce\uadcf\uadd0\uadd1\uadd2\uadd3\uadd4\uadd5\uadd6\uadd7\uadd8\uadd9\uadda\uaddb\uaddc\uaddd\uadde\uaddf\uade0\uade1\uade2\uade3\uade4\uade5\uade6\uade7\uade8\uade9\uadea\uadeb\uadec\uaded\uadee\uadef\uadf0\uadf1\uadf2\uadf3\uadf4\uadf5\uadf6\uadf7\uadf8\uadf9\uadfa\uadfb\uadfc\uadfd\uadfe\uadff\uae00\uae01\uae02\uae03\uae04\uae05\uae06\uae07\uae08\uae09\uae0a\uae0b\uae0c\uae0d\uae0e\uae0f\uae10\uae11\uae12\uae13\uae14\uae15\uae16\uae17\uae18\uae19\uae1a\uae1b\uae1c\uae1d\uae1e\uae1f\uae20\uae21\uae22\uae23\uae24\uae25\uae26\uae27\uae28\uae29\uae2a\uae2b\uae2c\uae2d\uae2e\uae2f\uae30\uae31\uae32\uae33\uae34\uae35\uae36\uae37\uae38\uae39\uae3a\uae3b\uae3c\uae3d\uae3e\uae3f\uae40\uae41\uae42\uae43\uae44\uae45\uae46\uae47\uae48\uae49\uae4a\uae4b\uae4c\uae4d\uae4e\uae4f\uae50\uae51\uae52\uae53\uae54\uae55\uae56\uae57\uae58\uae59\uae5a\uae5b\uae5c\uae5d\uae5e\uae5f\uae60\uae61\uae62\uae63\uae64\uae65\uae66\uae67\uae68\uae69\uae6a\uae6b\uae6c\uae6d\uae6e\uae6f\uae70\uae71\uae72\uae73\uae74\uae75\uae76\uae77\uae78\uae79\uae7a\uae7b\uae7c\uae7d\uae7e\uae7f\uae80\uae81\uae82\uae83\uae84\uae85\uae86\uae87\uae88\uae89\uae8a\uae8b\uae8c\uae8d\uae8e\uae8f\uae90\uae91\uae92\uae93\uae94\uae95\uae96\uae97\uae98\uae99\uae9a\uae9b\uae9c\uae9d\uae9e\uae9f\uaea0\uaea1\uaea2\uaea3\uaea4\uaea5\uaea6\uaea7\uaea8\uaea9\uaeaa\uaeab\uaeac\uaead\uaeae\uaeaf\uaeb0\uaeb1\uaeb2\uaeb3\uaeb4\uaeb5\uaeb6\uaeb7\uaeb8\uaeb9\uaeba\uaebb\uaebc\uaebd\uaebe\uaebf\uaec0\uaec1\uaec2\uaec3\uaec4\uaec5\uaec6\uaec7\uaec8\uaec9\uaeca\uaecb\uaecc\uaecd\uaece\uaecf\uaed0\uaed1\uaed2\uaed3\uaed4\uaed5\uaed6\uaed7\uaed8\uaed9\uaeda\uaedb\uaedc\uaedd\uaede\uaedf\uaee0\uaee1\uaee2\uaee3\uaee4\uaee5\uaee6\uaee7\uaee8\uaee9\uaeea\uaeeb\uaeec\uaeed\uaeee\uaeef\uaef0\uaef1\uaef2\uaef3\uaef4\uaef5\uaef6\uaef7\uaef8\uaef9\uaefa\uaefb\uaefc\uaefd\uaefe\uaeff\uaf00\uaf01\uaf02\uaf03\uaf04\uaf05\uaf06\uaf07\uaf08\uaf09\uaf0a\uaf0b\uaf0c\uaf0d\uaf0e\uaf0f\uaf10\uaf11\uaf12\uaf13\uaf14\uaf15\uaf16\uaf17\uaf18\uaf19\uaf1a\uaf1b\uaf1c\uaf1d\uaf1e\uaf1f\uaf20\uaf21\uaf22\uaf23\uaf24\uaf25\uaf26\uaf27\uaf28\uaf29\uaf2a\uaf2b\uaf2c\uaf2d\uaf2e\uaf2f\uaf30\uaf31\uaf32\uaf33\uaf34\uaf35\uaf36\uaf37\uaf38\uaf39\uaf3a\uaf3b\uaf3c\uaf3d\uaf3e\uaf3f\uaf40\uaf41\uaf42\uaf43\uaf44\uaf45\uaf46\uaf47\uaf48\uaf49\uaf4a\uaf4b\uaf4c\uaf4d\uaf4e\uaf4f\uaf50\uaf51\uaf52\uaf53\uaf54\uaf55\uaf56\uaf57\uaf58\uaf59\uaf5a\uaf5b\uaf5c\uaf5d\uaf5e\uaf5f\uaf60\uaf61\uaf62\uaf63\uaf64\uaf65\uaf66\uaf67\uaf68\uaf69\uaf6a\uaf6b\uaf6c\uaf6d\uaf6e\uaf6f\uaf70\uaf71\uaf72\uaf73\uaf74\uaf75\uaf76\uaf77\uaf78\uaf79\uaf7a\uaf7b\uaf7c\uaf7d\uaf7e\uaf7f\uaf80\uaf81\uaf82\uaf83\uaf84\uaf85\uaf86\uaf87\uaf88\uaf89\uaf8a\uaf8b\uaf8c\uaf8d\uaf8e\uaf8f\uaf90\uaf91\uaf92\uaf93\uaf94\uaf95\uaf96\uaf97\uaf98\uaf99\uaf9a\uaf9b\uaf9c\uaf9d\uaf9e\uaf9f\uafa0\uafa1\uafa2\uafa3\uafa4\uafa5\uafa6\uafa7\uafa8\uafa9\uafaa\uafab\uafac\uafad\uafae\uafaf\uafb0\uafb1\uafb2\uafb3\uafb4\uafb5\uafb6\uafb7\uafb8\uafb9\uafba\uafbb\uafbc\uafbd\uafbe\uafbf\uafc0\uafc1\uafc2\uafc3\uafc4\uafc5\uafc6\uafc7\uafc8\uafc9\uafca\uafcb\uafcc\uafcd\uafce\uafcf\uafd0\uafd1\uafd2\uafd3\uafd4\uafd5\uafd6\uafd7\uafd8\uafd9\uafda\uafdb\uafdc\uafdd\uafde\uafdf\uafe0\uafe1\uafe2\uafe3\uafe4\uafe5\uafe6\uafe7\uafe8\uafe9\uafea\uafeb\uafec\uafed\uafee\uafef\uaff0\uaff1\uaff2\uaff3\uaff4\uaff5\uaff6\uaff7\uaff8\uaff9\uaffa\uaffb\uaffc\uaffd\uaffe\uafff\ub000\ub001\ub002\ub003\ub004\ub005\ub006\ub007\ub008\ub009\ub00a\ub00b\ub00c\ub00d\ub00e\ub00f\ub010\ub011\ub012\ub013\ub014\ub015\ub016\ub017\ub018\ub019\ub01a\ub01b\ub01c\ub01d\ub01e\ub01f\ub020\ub021\ub022\ub023\ub024\ub025\ub026\ub027\ub028\ub029\ub02a\ub02b\ub02c\ub02d\ub02e\ub02f\ub030\ub031\ub032\ub033\ub034\ub035\ub036\ub037\ub038\ub039\ub03a\ub03b\ub03c\ub03d\ub03e\ub03f\ub040\ub041\ub042\ub043\ub044\ub045\ub046\ub047\ub048\ub049\ub04a\ub04b\ub04c\ub04d\ub04e\ub04f\ub050\ub051\ub052\ub053\ub054\ub055\ub056\ub057\ub058\ub059\ub05a\ub05b\ub05c\ub05d\ub05e\ub05f\ub060\ub061\ub062\ub063\ub064\ub065\ub066\ub067\ub068\ub069\ub06a\ub06b\ub06c\ub06d\ub06e\ub06f\ub070\ub071\ub072\ub073\ub074\ub075\ub076\ub077\ub078\ub079\ub07a\ub07b\ub07c\ub07d\ub07e\ub07f\ub080\ub081\ub082\ub083\ub084\ub085\ub086\ub087\ub088\ub089\ub08a\ub08b\ub08c\ub08d\ub08e\ub08f\ub090\ub091\ub092\ub093\ub094\ub095\ub096\ub097\ub098\ub099\ub09a\ub09b\ub09c\ub09d\ub09e\ub09f\ub0a0\ub0a1\ub0a2\ub0a3\ub0a4\ub0a5\ub0a6\ub0a7\ub0a8\ub0a9\ub0aa\ub0ab\ub0ac\ub0ad\ub0ae\ub0af\ub0b0\ub0b1\ub0b2\ub0b3\ub0b4\ub0b5\ub0b6\ub0b7\ub0b8\ub0b9\ub0ba\ub0bb\ub0bc\ub0bd\ub0be\ub0bf\ub0c0\ub0c1\ub0c2\ub0c3\ub0c4\ub0c5\ub0c6\ub0c7\ub0c8\ub0c9\ub0ca\ub0cb\ub0cc\ub0cd\ub0ce\ub0cf\ub0d0\ub0d1\ub0d2\ub0d3\ub0d4\ub0d5\ub0d6\ub0d7\ub0d8\ub0d9\ub0da\ub0db\ub0dc\ub0dd\ub0de\ub0df\ub0e0\ub0e1\ub0e2\ub0e3\ub0e4\ub0e5\ub0e6\ub0e7\ub0e8\ub0e9\ub0ea\ub0eb\ub0ec\ub0ed\ub0ee\ub0ef\ub0f0\ub0f1\ub0f2\ub0f3\ub0f4\ub0f5\ub0f6\ub0f7\ub0f8\ub0f9\ub0fa\ub0fb\ub0fc\ub0fd\ub0fe\ub0ff\ub100\ub101\ub102\ub103\ub104\ub105\ub106\ub107\ub108\ub109\ub10a\ub10b\ub10c\ub10d\ub10e\ub10f\ub110\ub111\ub112\ub113\ub114\ub115\ub116\ub117\ub118\ub119\ub11a\ub11b\ub11c\ub11d\ub11e\ub11f\ub120\ub121\ub122\ub123\ub124\ub125\ub126\ub127\ub128\ub129\ub12a\ub12b\ub12c\ub12d\ub12e\ub12f\ub130\ub131\ub132\ub133\ub134\ub135\ub136\ub137\ub138\ub139\ub13a\ub13b\ub13c\ub13d\ub13e\ub13f\ub140\ub141\ub142\ub143\ub144\ub145\ub146\ub147\ub148\ub149\ub14a\ub14b\ub14c\ub14d\ub14e\ub14f\ub150\ub151\ub152\ub153\ub154\ub155\ub156\ub157\ub158\ub159\ub15a\ub15b\ub15c\ub15d\ub15e\ub15f\ub160\ub161\ub162\ub163\ub164\ub165\ub166\ub167\ub168\ub169\ub16a\ub16b\ub16c\ub16d\ub16e\ub16f\ub170\ub171\ub172\ub173\ub174\ub175\ub176\ub177\ub178\ub179\ub17a\ub17b\ub17c\ub17d\ub17e\ub17f\ub180\ub181\ub182\ub183\ub184\ub185\ub186\ub187\ub188\ub189\ub18a\ub18b\ub18c\ub18d\ub18e\ub18f\ub190\ub191\ub192\ub193\ub194\ub195\ub196\ub197\ub198\ub199\ub19a\ub19b\ub19c\ub19d\ub19e\ub19f\ub1a0\ub1a1\ub1a2\ub1a3\ub1a4\ub1a5\ub1a6\ub1a7\ub1a8\ub1a9\ub1aa\ub1ab\ub1ac\ub1ad\ub1ae\ub1af\ub1b0\ub1b1\ub1b2\ub1b3\ub1b4\ub1b5\ub1b6\ub1b7\ub1b8\ub1b9\ub1ba\ub1bb\ub1bc\ub1bd\ub1be\ub1bf\ub1c0\ub1c1\ub1c2\ub1c3\ub1c4\ub1c5\ub1c6\ub1c7\ub1c8\ub1c9\ub1ca\ub1cb\ub1cc\ub1cd\ub1ce\ub1cf\ub1d0\ub1d1\ub1d2\ub1d3\ub1d4\ub1d5\ub1d6\ub1d7\ub1d8\ub1d9\ub1da\ub1db\ub1dc\ub1dd\ub1de\ub1df\ub1e0\ub1e1\ub1e2\ub1e3\ub1e4\ub1e5\ub1e6\ub1e7\ub1e8\ub1e9\ub1ea\ub1eb\ub1ec\ub1ed\ub1ee\ub1ef\ub1f0\ub1f1\ub1f2\ub1f3\ub1f4\ub1f5\ub1f6\ub1f7\ub1f8\ub1f9\ub1fa\ub1fb\ub1fc\ub1fd\ub1fe\ub1ff\ub200\ub201\ub202\ub203\ub204\ub205\ub206\ub207\ub208\ub209\ub20a\ub20b\ub20c\ub20d\ub20e\ub20f\ub210\ub211\ub212\ub213\ub214\ub215\ub216\ub217\ub218\ub219\ub21a\ub21b\ub21c\ub21d\ub21e\ub21f\ub220\ub221\ub222\ub223\ub224\ub225\ub226\ub227\ub228\ub229\ub22a\ub22b\ub22c\ub22d\ub22e\ub22f\ub230\ub231\ub232\ub233\ub234\ub235\ub236\ub237\ub238\ub239\ub23a\ub23b\ub23c\ub23d\ub23e\ub23f\ub240\ub241\ub242\ub243\ub244\ub245\ub246\ub247\ub248\ub249\ub24a\ub24b\ub24c\ub24d\ub24e\ub24f\ub250\ub251\ub252\ub253\ub254\ub255\ub256\ub257\ub258\ub259\ub25a\ub25b\ub25c\ub25d\ub25e\ub25f\ub260\ub261\ub262\ub263\ub264\ub265\ub266\ub267\ub268\ub269\ub26a\ub26b\ub26c\ub26d\ub26e\ub26f\ub270\ub271\ub272\ub273\ub274\ub275\ub276\ub277\ub278\ub279\ub27a\ub27b\ub27c\ub27d\ub27e\ub27f\ub280\ub281\ub282\ub283\ub284\ub285\ub286\ub287\ub288\ub289\ub28a\ub28b\ub28c\ub28d\ub28e\ub28f\ub290\ub291\ub292\ub293\ub294\ub295\ub296\ub297\ub298\ub299\ub29a\ub29b\ub29c\ub29d\ub29e\ub29f\ub2a0\ub2a1\ub2a2\ub2a3\ub2a4\ub2a5\ub2a6\ub2a7\ub2a8\ub2a9\ub2aa\ub2ab\ub2ac\ub2ad\ub2ae\ub2af\ub2b0\ub2b1\ub2b2\ub2b3\ub2b4\ub2b5\ub2b6\ub2b7\ub2b8\ub2b9\ub2ba\ub2bb\ub2bc\ub2bd\ub2be\ub2bf\ub2c0\ub2c1\ub2c2\ub2c3\ub2c4\ub2c5\ub2c6\ub2c7\ub2c8\ub2c9\ub2ca\ub2cb\ub2cc\ub2cd\ub2ce\ub2cf\ub2d0\ub2d1\ub2d2\ub2d3\ub2d4\ub2d5\ub2d6\ub2d7\ub2d8\ub2d9\ub2da\ub2db\ub2dc\ub2dd\ub2de\ub2df\ub2e0\ub2e1\ub2e2\ub2e3\ub2e4\ub2e5\ub2e6\ub2e7\ub2e8\ub2e9\ub2ea\ub2eb\ub2ec\ub2ed\ub2ee\ub2ef\ub2f0\ub2f1\ub2f2\ub2f3\ub2f4\ub2f5\ub2f6\ub2f7\ub2f8\ub2f9\ub2fa\ub2fb\ub2fc\ub2fd\ub2fe\ub2ff\ub300\ub301\ub302\ub303\ub304\ub305\ub306\ub307\ub308\ub309\ub30a\ub30b\ub30c\ub30d\ub30e\ub30f\ub310\ub311\ub312\ub313\ub314\ub315\ub316\ub317\ub318\ub319\ub31a\ub31b\ub31c\ub31d\ub31e\ub31f\ub320\ub321\ub322\ub323\ub324\ub325\ub326\ub327\ub328\ub329\ub32a\ub32b\ub32c\ub32d\ub32e\ub32f\ub330\ub331\ub332\ub333\ub334\ub335\ub336\ub337\ub338\ub339\ub33a\ub33b\ub33c\ub33d\ub33e\ub33f\ub340\ub341\ub342\ub343\ub344\ub345\ub346\ub347\ub348\ub349\ub34a\ub34b\ub34c\ub34d\ub34e\ub34f\ub350\ub351\ub352\ub353\ub354\ub355\ub356\ub357\ub358\ub359\ub35a\ub35b\ub35c\ub35d\ub35e\ub35f\ub360\ub361\ub362\ub363\ub364\ub365\ub366\ub367\ub368\ub369\ub36a\ub36b\ub36c\ub36d\ub36e\ub36f\ub370\ub371\ub372\ub373\ub374\ub375\ub376\ub377\ub378\ub379\ub37a\ub37b\ub37c\ub37d\ub37e\ub37f\ub380\ub381\ub382\ub383\ub384\ub385\ub386\ub387\ub388\ub389\ub38a\ub38b\ub38c\ub38d\ub38e\ub38f\ub390\ub391\ub392\ub393\ub394\ub395\ub396\ub397\ub398\ub399\ub39a\ub39b\ub39c\ub39d\ub39e\ub39f\ub3a0\ub3a1\ub3a2\ub3a3\ub3a4\ub3a5\ub3a6\ub3a7\ub3a8\ub3a9\ub3aa\ub3ab\ub3ac\ub3ad\ub3ae\ub3af\ub3b0\ub3b1\ub3b2\ub3b3\ub3b4\ub3b5\ub3b6\ub3b7\ub3b8\ub3b9\ub3ba\ub3bb\ub3bc\ub3bd\ub3be\ub3bf\ub3c0\ub3c1\ub3c2\ub3c3\ub3c4\ub3c5\ub3c6\ub3c7\ub3c8\ub3c9\ub3ca\ub3cb\ub3cc\ub3cd\ub3ce\ub3cf\ub3d0\ub3d1\ub3d2\ub3d3\ub3d4\ub3d5\ub3d6\ub3d7\ub3d8\ub3d9\ub3da\ub3db\ub3dc\ub3dd\ub3de\ub3df\ub3e0\ub3e1\ub3e2\ub3e3\ub3e4\ub3e5\ub3e6\ub3e7\ub3e8\ub3e9\ub3ea\ub3eb\ub3ec\ub3ed\ub3ee\ub3ef\ub3f0\ub3f1\ub3f2\ub3f3\ub3f4\ub3f5\ub3f6\ub3f7\ub3f8\ub3f9\ub3fa\ub3fb\ub3fc\ub3fd\ub3fe\ub3ff\ub400\ub401\ub402\ub403\ub404\ub405\ub406\ub407\ub408\ub409\ub40a\ub40b\ub40c\ub40d\ub40e\ub40f\ub410\ub411\ub412\ub413\ub414\ub415\ub416\ub417\ub418\ub419\ub41a\ub41b\ub41c\ub41d\ub41e\ub41f\ub420\ub421\ub422\ub423\ub424\ub425\ub426\ub427\ub428\ub429\ub42a\ub42b\ub42c\ub42d\ub42e\ub42f\ub430\ub431\ub432\ub433\ub434\ub435\ub436\ub437\ub438\ub439\ub43a\ub43b\ub43c\ub43d\ub43e\ub43f\ub440\ub441\ub442\ub443\ub444\ub445\ub446\ub447\ub448\ub449\ub44a\ub44b\ub44c\ub44d\ub44e\ub44f\ub450\ub451\ub452\ub453\ub454\ub455\ub456\ub457\ub458\ub459\ub45a\ub45b\ub45c\ub45d\ub45e\ub45f\ub460\ub461\ub462\ub463\ub464\ub465\ub466\ub467\ub468\ub469\ub46a\ub46b\ub46c\ub46d\ub46e\ub46f\ub470\ub471\ub472\ub473\ub474\ub475\ub476\ub477\ub478\ub479\ub47a\ub47b\ub47c\ub47d\ub47e\ub47f\ub480\ub481\ub482\ub483\ub484\ub485\ub486\ub487\ub488\ub489\ub48a\ub48b\ub48c\ub48d\ub48e\ub48f\ub490\ub491\ub492\ub493\ub494\ub495\ub496\ub497\ub498\ub499\ub49a\ub49b\ub49c\ub49d\ub49e\ub49f\ub4a0\ub4a1\ub4a2\ub4a3\ub4a4\ub4a5\ub4a6\ub4a7\ub4a8\ub4a9\ub4aa\ub4ab\ub4ac\ub4ad\ub4ae\ub4af\ub4b0\ub4b1\ub4b2\ub4b3\ub4b4\ub4b5\ub4b6\ub4b7\ub4b8\ub4b9\ub4ba\ub4bb\ub4bc\ub4bd\ub4be\ub4bf\ub4c0\ub4c1\ub4c2\ub4c3\ub4c4\ub4c5\ub4c6\ub4c7\ub4c8\ub4c9\ub4ca\ub4cb\ub4cc\ub4cd\ub4ce\ub4cf\ub4d0\ub4d1\ub4d2\ub4d3\ub4d4\ub4d5\ub4d6\ub4d7\ub4d8\ub4d9\ub4da\ub4db\ub4dc\ub4dd\ub4de\ub4df\ub4e0\ub4e1\ub4e2\ub4e3\ub4e4\ub4e5\ub4e6\ub4e7\ub4e8\ub4e9\ub4ea\ub4eb\ub4ec\ub4ed\ub4ee\ub4ef\ub4f0\ub4f1\ub4f2\ub4f3\ub4f4\ub4f5\ub4f6\ub4f7\ub4f8\ub4f9\ub4fa\ub4fb\ub4fc\ub4fd\ub4fe\ub4ff\ub500\ub501\ub502\ub503\ub504\ub505\ub506\ub507\ub508\ub509\ub50a\ub50b\ub50c\ub50d\ub50e\ub50f\ub510\ub511\ub512\ub513\ub514\ub515\ub516\ub517\ub518\ub519\ub51a\ub51b\ub51c\ub51d\ub51e\ub51f\ub520\ub521\ub522\ub523\ub524\ub525\ub526\ub527\ub528\ub529\ub52a\ub52b\ub52c\ub52d\ub52e\ub52f\ub530\ub531\ub532\ub533\ub534\ub535\ub536\ub537\ub538\ub539\ub53a\ub53b\ub53c\ub53d\ub53e\ub53f\ub540\ub541\ub542\ub543\ub544\ub545\ub546\ub547\ub548\ub549\ub54a\ub54b\ub54c\ub54d\ub54e\ub54f\ub550\ub551\ub552\ub553\ub554\ub555\ub556\ub557\ub558\ub559\ub55a\ub55b\ub55c\ub55d\ub55e\ub55f\ub560\ub561\ub562\ub563\ub564\ub565\ub566\ub567\ub568\ub569\ub56a\ub56b\ub56c\ub56d\ub56e\ub56f\ub570\ub571\ub572\ub573\ub574\ub575\ub576\ub577\ub578\ub579\ub57a\ub57b\ub57c\ub57d\ub57e\ub57f\ub580\ub581\ub582\ub583\ub584\ub585\ub586\ub587\ub588\ub589\ub58a\ub58b\ub58c\ub58d\ub58e\ub58f\ub590\ub591\ub592\ub593\ub594\ub595\ub596\ub597\ub598\ub599\ub59a\ub59b\ub59c\ub59d\ub59e\ub59f\ub5a0\ub5a1\ub5a2\ub5a3\ub5a4\ub5a5\ub5a6\ub5a7\ub5a8\ub5a9\ub5aa\ub5ab\ub5ac\ub5ad\ub5ae\ub5af\ub5b0\ub5b1\ub5b2\ub5b3\ub5b4\ub5b5\ub5b6\ub5b7\ub5b8\ub5b9\ub5ba\ub5bb\ub5bc\ub5bd\ub5be\ub5bf\ub5c0\ub5c1\ub5c2\ub5c3\ub5c4\ub5c5\ub5c6\ub5c7\ub5c8\ub5c9\ub5ca\ub5cb\ub5cc\ub5cd\ub5ce\ub5cf\ub5d0\ub5d1\ub5d2\ub5d3\ub5d4\ub5d5\ub5d6\ub5d7\ub5d8\ub5d9\ub5da\ub5db\ub5dc\ub5dd\ub5de\ub5df\ub5e0\ub5e1\ub5e2\ub5e3\ub5e4\ub5e5\ub5e6\ub5e7\ub5e8\ub5e9\ub5ea\ub5eb\ub5ec\ub5ed\ub5ee\ub5ef\ub5f0\ub5f1\ub5f2\ub5f3\ub5f4\ub5f5\ub5f6\ub5f7\ub5f8\ub5f9\ub5fa\ub5fb\ub5fc\ub5fd\ub5fe\ub5ff\ub600\ub601\ub602\ub603\ub604\ub605\ub606\ub607\ub608\ub609\ub60a\ub60b\ub60c\ub60d\ub60e\ub60f\ub610\ub611\ub612\ub613\ub614\ub615\ub616\ub617\ub618\ub619\ub61a\ub61b\ub61c\ub61d\ub61e\ub61f\ub620\ub621\ub622\ub623\ub624\ub625\ub626\ub627\ub628\ub629\ub62a\ub62b\ub62c\ub62d\ub62e\ub62f\ub630\ub631\ub632\ub633\ub634\ub635\ub636\ub637\ub638\ub639\ub63a\ub63b\ub63c\ub63d\ub63e\ub63f\ub640\ub641\ub642\ub643\ub644\ub645\ub646\ub647\ub648\ub649\ub64a\ub64b\ub64c\ub64d\ub64e\ub64f\ub650\ub651\ub652\ub653\ub654\ub655\ub656\ub657\ub658\ub659\ub65a\ub65b\ub65c\ub65d\ub65e\ub65f\ub660\ub661\ub662\ub663\ub664\ub665\ub666\ub667\ub668\ub669\ub66a\ub66b\ub66c\ub66d\ub66e\ub66f\ub670\ub671\ub672\ub673\ub674\ub675\ub676\ub677\ub678\ub679\ub67a\ub67b\ub67c\ub67d\ub67e\ub67f\ub680\ub681\ub682\ub683\ub684\ub685\ub686\ub687\ub688\ub689\ub68a\ub68b\ub68c\ub68d\ub68e\ub68f\ub690\ub691\ub692\ub693\ub694\ub695\ub696\ub697\ub698\ub699\ub69a\ub69b\ub69c\ub69d\ub69e\ub69f\ub6a0\ub6a1\ub6a2\ub6a3\ub6a4\ub6a5\ub6a6\ub6a7\ub6a8\ub6a9\ub6aa\ub6ab\ub6ac\ub6ad\ub6ae\ub6af\ub6b0\ub6b1\ub6b2\ub6b3\ub6b4\ub6b5\ub6b6\ub6b7\ub6b8\ub6b9\ub6ba\ub6bb\ub6bc\ub6bd\ub6be\ub6bf\ub6c0\ub6c1\ub6c2\ub6c3\ub6c4\ub6c5\ub6c6\ub6c7\ub6c8\ub6c9\ub6ca\ub6cb\ub6cc\ub6cd\ub6ce\ub6cf\ub6d0\ub6d1\ub6d2\ub6d3\ub6d4\ub6d5\ub6d6\ub6d7\ub6d8\ub6d9\ub6da\ub6db\ub6dc\ub6dd\ub6de\ub6df\ub6e0\ub6e1\ub6e2\ub6e3\ub6e4\ub6e5\ub6e6\ub6e7\ub6e8\ub6e9\ub6ea\ub6eb\ub6ec\ub6ed\ub6ee\ub6ef\ub6f0\ub6f1\ub6f2\ub6f3\ub6f4\ub6f5\ub6f6\ub6f7\ub6f8\ub6f9\ub6fa\ub6fb\ub6fc\ub6fd\ub6fe\ub6ff\ub700\ub701\ub702\ub703\ub704\ub705\ub706\ub707\ub708\ub709\ub70a\ub70b\ub70c\ub70d\ub70e\ub70f\ub710\ub711\ub712\ub713\ub714\ub715\ub716\ub717\ub718\ub719\ub71a\ub71b\ub71c\ub71d\ub71e\ub71f\ub720\ub721\ub722\ub723\ub724\ub725\ub726\ub727\ub728\ub729\ub72a\ub72b\ub72c\ub72d\ub72e\ub72f\ub730\ub731\ub732\ub733\ub734\ub735\ub736\ub737\ub738\ub739\ub73a\ub73b\ub73c\ub73d\ub73e\ub73f\ub740\ub741\ub742\ub743\ub744\ub745\ub746\ub747\ub748\ub749\ub74a\ub74b\ub74c\ub74d\ub74e\ub74f\ub750\ub751\ub752\ub753\ub754\ub755\ub756\ub757\ub758\ub759\ub75a\ub75b\ub75c\ub75d\ub75e\ub75f\ub760\ub761\ub762\ub763\ub764\ub765\ub766\ub767\ub768\ub769\ub76a\ub76b\ub76c\ub76d\ub76e\ub76f\ub770\ub771\ub772\ub773\ub774\ub775\ub776\ub777\ub778\ub779\ub77a\ub77b\ub77c\ub77d\ub77e\ub77f\ub780\ub781\ub782\ub783\ub784\ub785\ub786\ub787\ub788\ub789\ub78a\ub78b\ub78c\ub78d\ub78e\ub78f\ub790\ub791\ub792\ub793\ub794\ub795\ub796\ub797\ub798\ub799\ub79a\ub79b\ub79c\ub79d\ub79e\ub79f\ub7a0\ub7a1\ub7a2\ub7a3\ub7a4\ub7a5\ub7a6\ub7a7\ub7a8\ub7a9\ub7aa\ub7ab\ub7ac\ub7ad\ub7ae\ub7af\ub7b0\ub7b1\ub7b2\ub7b3\ub7b4\ub7b5\ub7b6\ub7b7\ub7b8\ub7b9\ub7ba\ub7bb\ub7bc\ub7bd\ub7be\ub7bf\ub7c0\ub7c1\ub7c2\ub7c3\ub7c4\ub7c5\ub7c6\ub7c7\ub7c8\ub7c9\ub7ca\ub7cb\ub7cc\ub7cd\ub7ce\ub7cf\ub7d0\ub7d1\ub7d2\ub7d3\ub7d4\ub7d5\ub7d6\ub7d7\ub7d8\ub7d9\ub7da\ub7db\ub7dc\ub7dd\ub7de\ub7df\ub7e0\ub7e1\ub7e2\ub7e3\ub7e4\ub7e5\ub7e6\ub7e7\ub7e8\ub7e9\ub7ea\ub7eb\ub7ec\ub7ed\ub7ee\ub7ef\ub7f0\ub7f1\ub7f2\ub7f3\ub7f4\ub7f5\ub7f6\ub7f7\ub7f8\ub7f9\ub7fa\ub7fb\ub7fc\ub7fd\ub7fe\ub7ff\ub800\ub801\ub802\ub803\ub804\ub805\ub806\ub807\ub808\ub809\ub80a\ub80b\ub80c\ub80d\ub80e\ub80f\ub810\ub811\ub812\ub813\ub814\ub815\ub816\ub817\ub818\ub819\ub81a\ub81b\ub81c\ub81d\ub81e\ub81f\ub820\ub821\ub822\ub823\ub824\ub825\ub826\ub827\ub828\ub829\ub82a\ub82b\ub82c\ub82d\ub82e\ub82f\ub830\ub831\ub832\ub833\ub834\ub835\ub836\ub837\ub838\ub839\ub83a\ub83b\ub83c\ub83d\ub83e\ub83f\ub840\ub841\ub842\ub843\ub844\ub845\ub846\ub847\ub848\ub849\ub84a\ub84b\ub84c\ub84d\ub84e\ub84f\ub850\ub851\ub852\ub853\ub854\ub855\ub856\ub857\ub858\ub859\ub85a\ub85b\ub85c\ub85d\ub85e\ub85f\ub860\ub861\ub862\ub863\ub864\ub865\ub866\ub867\ub868\ub869\ub86a\ub86b\ub86c\ub86d\ub86e\ub86f\ub870\ub871\ub872\ub873\ub874\ub875\ub876\ub877\ub878\ub879\ub87a\ub87b\ub87c\ub87d\ub87e\ub87f\ub880\ub881\ub882\ub883\ub884\ub885\ub886\ub887\ub888\ub889\ub88a\ub88b\ub88c\ub88d\ub88e\ub88f\ub890\ub891\ub892\ub893\ub894\ub895\ub896\ub897\ub898\ub899\ub89a\ub89b\ub89c\ub89d\ub89e\ub89f\ub8a0\ub8a1\ub8a2\ub8a3\ub8a4\ub8a5\ub8a6\ub8a7\ub8a8\ub8a9\ub8aa\ub8ab\ub8ac\ub8ad\ub8ae\ub8af\ub8b0\ub8b1\ub8b2\ub8b3\ub8b4\ub8b5\ub8b6\ub8b7\ub8b8\ub8b9\ub8ba\ub8bb\ub8bc\ub8bd\ub8be\ub8bf\ub8c0\ub8c1\ub8c2\ub8c3\ub8c4\ub8c5\ub8c6\ub8c7\ub8c8\ub8c9\ub8ca\ub8cb\ub8cc\ub8cd\ub8ce\ub8cf\ub8d0\ub8d1\ub8d2\ub8d3\ub8d4\ub8d5\ub8d6\ub8d7\ub8d8\ub8d9\ub8da\ub8db\ub8dc\ub8dd\ub8de\ub8df\ub8e0\ub8e1\ub8e2\ub8e3\ub8e4\ub8e5\ub8e6\ub8e7\ub8e8\ub8e9\ub8ea\ub8eb\ub8ec\ub8ed\ub8ee\ub8ef\ub8f0\ub8f1\ub8f2\ub8f3\ub8f4\ub8f5\ub8f6\ub8f7\ub8f8\ub8f9\ub8fa\ub8fb\ub8fc\ub8fd\ub8fe\ub8ff\ub900\ub901\ub902\ub903\ub904\ub905\ub906\ub907\ub908\ub909\ub90a\ub90b\ub90c\ub90d\ub90e\ub90f\ub910\ub911\ub912\ub913\ub914\ub915\ub916\ub917\ub918\ub919\ub91a\ub91b\ub91c\ub91d\ub91e\ub91f\ub920\ub921\ub922\ub923\ub924\ub925\ub926\ub927\ub928\ub929\ub92a\ub92b\ub92c\ub92d\ub92e\ub92f\ub930\ub931\ub932\ub933\ub934\ub935\ub936\ub937\ub938\ub939\ub93a\ub93b\ub93c\ub93d\ub93e\ub93f\ub940\ub941\ub942\ub943\ub944\ub945\ub946\ub947\ub948\ub949\ub94a\ub94b\ub94c\ub94d\ub94e\ub94f\ub950\ub951\ub952\ub953\ub954\ub955\ub956\ub957\ub958\ub959\ub95a\ub95b\ub95c\ub95d\ub95e\ub95f\ub960\ub961\ub962\ub963\ub964\ub965\ub966\ub967\ub968\ub969\ub96a\ub96b\ub96c\ub96d\ub96e\ub96f\ub970\ub971\ub972\ub973\ub974\ub975\ub976\ub977\ub978\ub979\ub97a\ub97b\ub97c\ub97d\ub97e\ub97f\ub980\ub981\ub982\ub983\ub984\ub985\ub986\ub987\ub988\ub989\ub98a\ub98b\ub98c\ub98d\ub98e\ub98f\ub990\ub991\ub992\ub993\ub994\ub995\ub996\ub997\ub998\ub999\ub99a\ub99b\ub99c\ub99d\ub99e\ub99f\ub9a0\ub9a1\ub9a2\ub9a3\ub9a4\ub9a5\ub9a6\ub9a7\ub9a8\ub9a9\ub9aa\ub9ab\ub9ac\ub9ad\ub9ae\ub9af\ub9b0\ub9b1\ub9b2\ub9b3\ub9b4\ub9b5\ub9b6\ub9b7\ub9b8\ub9b9\ub9ba\ub9bb\ub9bc\ub9bd\ub9be\ub9bf\ub9c0\ub9c1\ub9c2\ub9c3\ub9c4\ub9c5\ub9c6\ub9c7\ub9c8\ub9c9\ub9ca\ub9cb\ub9cc\ub9cd\ub9ce\ub9cf\ub9d0\ub9d1\ub9d2\ub9d3\ub9d4\ub9d5\ub9d6\ub9d7\ub9d8\ub9d9\ub9da\ub9db\ub9dc\ub9dd\ub9de\ub9df\ub9e0\ub9e1\ub9e2\ub9e3\ub9e4\ub9e5\ub9e6\ub9e7\ub9e8\ub9e9\ub9ea\ub9eb\ub9ec\ub9ed\ub9ee\ub9ef\ub9f0\ub9f1\ub9f2\ub9f3\ub9f4\ub9f5\ub9f6\ub9f7\ub9f8\ub9f9\ub9fa\ub9fb\ub9fc\ub9fd\ub9fe\ub9ff\uba00\uba01\uba02\uba03\uba04\uba05\uba06\uba07\uba08\uba09\uba0a\uba0b\uba0c\uba0d\uba0e\uba0f\uba10\uba11\uba12\uba13\uba14\uba15\uba16\uba17\uba18\uba19\uba1a\uba1b\uba1c\uba1d\uba1e\uba1f\uba20\uba21\uba22\uba23\uba24\uba25\uba26\uba27\uba28\uba29\uba2a\uba2b\uba2c\uba2d\uba2e\uba2f\uba30\uba31\uba32\uba33\uba34\uba35\uba36\uba37\uba38\uba39\uba3a\uba3b\uba3c\uba3d\uba3e\uba3f\uba40\uba41\uba42\uba43\uba44\uba45\uba46\uba47\uba48\uba49\uba4a\uba4b\uba4c\uba4d\uba4e\uba4f\uba50\uba51\uba52\uba53\uba54\uba55\uba56\uba57\uba58\uba59\uba5a\uba5b\uba5c\uba5d\uba5e\uba5f\uba60\uba61\uba62\uba63\uba64\uba65\uba66\uba67\uba68\uba69\uba6a\uba6b\uba6c\uba6d\uba6e\uba6f\uba70\uba71\uba72\uba73\uba74\uba75\uba76\uba77\uba78\uba79\uba7a\uba7b\uba7c\uba7d\uba7e\uba7f\uba80\uba81\uba82\uba83\uba84\uba85\uba86\uba87\uba88\uba89\uba8a\uba8b\uba8c\uba8d\uba8e\uba8f\uba90\uba91\uba92\uba93\uba94\uba95\uba96\uba97\uba98\uba99\uba9a\uba9b\uba9c\uba9d\uba9e\uba9f\ubaa0\ubaa1\ubaa2\ubaa3\ubaa4\ubaa5\ubaa6\ubaa7\ubaa8\ubaa9\ubaaa\ubaab\ubaac\ubaad\ubaae\ubaaf\ubab0\ubab1\ubab2\ubab3\ubab4\ubab5\ubab6\ubab7\ubab8\ubab9\ubaba\ubabb\ubabc\ubabd\ubabe\ubabf\ubac0\ubac1\ubac2\ubac3\ubac4\ubac5\ubac6\ubac7\ubac8\ubac9\ubaca\ubacb\ubacc\ubacd\ubace\ubacf\ubad0\ubad1\ubad2\ubad3\ubad4\ubad5\ubad6\ubad7\ubad8\ubad9\ubada\ubadb\ubadc\ubadd\ubade\ubadf\ubae0\ubae1\ubae2\ubae3\ubae4\ubae5\ubae6\ubae7\ubae8\ubae9\ubaea\ubaeb\ubaec\ubaed\ubaee\ubaef\ubaf0\ubaf1\ubaf2\ubaf3\ubaf4\ubaf5\ubaf6\ubaf7\ubaf8\ubaf9\ubafa\ubafb\ubafc\ubafd\ubafe\ubaff\ubb00\ubb01\ubb02\ubb03\ubb04\ubb05\ubb06\ubb07\ubb08\ubb09\ubb0a\ubb0b\ubb0c\ubb0d\ubb0e\ubb0f\ubb10\ubb11\ubb12\ubb13\ubb14\ubb15\ubb16\ubb17\ubb18\ubb19\ubb1a\ubb1b\ubb1c\ubb1d\ubb1e\ubb1f\ubb20\ubb21\ubb22\ubb23\ubb24\ubb25\ubb26\ubb27\ubb28\ubb29\ubb2a\ubb2b\ubb2c\ubb2d\ubb2e\ubb2f\ubb30\ubb31\ubb32\ubb33\ubb34\ubb35\ubb36\ubb37\ubb38\ubb39\ubb3a\ubb3b\ubb3c\ubb3d\ubb3e\ubb3f\ubb40\ubb41\ubb42\ubb43\ubb44\ubb45\ubb46\ubb47\ubb48\ubb49\ubb4a\ubb4b\ubb4c\ubb4d\ubb4e\ubb4f\ubb50\ubb51\ubb52\ubb53\ubb54\ubb55\ubb56\ubb57\ubb58\ubb59\ubb5a\ubb5b\ubb5c\ubb5d\ubb5e\ubb5f\ubb60\ubb61\ubb62\ubb63\ubb64\ubb65\ubb66\ubb67\ubb68\ubb69\ubb6a\ubb6b\ubb6c\ubb6d\ubb6e\ubb6f\ubb70\ubb71\ubb72\ubb73\ubb74\ubb75\ubb76\ubb77\ubb78\ubb79\ubb7a\ubb7b\ubb7c\ubb7d\ubb7e\ubb7f\ubb80\ubb81\ubb82\ubb83\ubb84\ubb85\ubb86\ubb87\ubb88\ubb89\ubb8a\ubb8b\ubb8c\ubb8d\ubb8e\ubb8f\ubb90\ubb91\ubb92\ubb93\ubb94\ubb95\ubb96\ubb97\ubb98\ubb99\ubb9a\ubb9b\ubb9c\ubb9d\ubb9e\ubb9f\ubba0\ubba1\ubba2\ubba3\ubba4\ubba5\ubba6\ubba7\ubba8\ubba9\ubbaa\ubbab\ubbac\ubbad\ubbae\ubbaf\ubbb0\ubbb1\ubbb2\ubbb3\ubbb4\ubbb5\ubbb6\ubbb7\ubbb8\ubbb9\ubbba\ubbbb\ubbbc\ubbbd\ubbbe\ubbbf\ubbc0\ubbc1\ubbc2\ubbc3\ubbc4\ubbc5\ubbc6\ubbc7\ubbc8\ubbc9\ubbca\ubbcb\ubbcc\ubbcd\ubbce\ubbcf\ubbd0\ubbd1\ubbd2\ubbd3\ubbd4\ubbd5\ubbd6\ubbd7\ubbd8\ubbd9\ubbda\ubbdb\ubbdc\ubbdd\ubbde\ubbdf\ubbe0\ubbe1\ubbe2\ubbe3\ubbe4\ubbe5\ubbe6\ubbe7\ubbe8\ubbe9\ubbea\ubbeb\ubbec\ubbed\ubbee\ubbef\ubbf0\ubbf1\ubbf2\ubbf3\ubbf4\ubbf5\ubbf6\ubbf7\ubbf8\ubbf9\ubbfa\ubbfb\ubbfc\ubbfd\ubbfe\ubbff\ubc00\ubc01\ubc02\ubc03\ubc04\ubc05\ubc06\ubc07\ubc08\ubc09\ubc0a\ubc0b\ubc0c\ubc0d\ubc0e\ubc0f\ubc10\ubc11\ubc12\ubc13\ubc14\ubc15\ubc16\ubc17\ubc18\ubc19\ubc1a\ubc1b\ubc1c\ubc1d\ubc1e\ubc1f\ubc20\ubc21\ubc22\ubc23\ubc24\ubc25\ubc26\ubc27\ubc28\ubc29\ubc2a\ubc2b\ubc2c\ubc2d\ubc2e\ubc2f\ubc30\ubc31\ubc32\ubc33\ubc34\ubc35\ubc36\ubc37\ubc38\ubc39\ubc3a\ubc3b\ubc3c\ubc3d\ubc3e\ubc3f\ubc40\ubc41\ubc42\ubc43\ubc44\ubc45\ubc46\ubc47\ubc48\ubc49\ubc4a\ubc4b\ubc4c\ubc4d\ubc4e\ubc4f\ubc50\ubc51\ubc52\ubc53\ubc54\ubc55\ubc56\ubc57\ubc58\ubc59\ubc5a\ubc5b\ubc5c\ubc5d\ubc5e\ubc5f\ubc60\ubc61\ubc62\ubc63\ubc64\ubc65\ubc66\ubc67\ubc68\ubc69\ubc6a\ubc6b\ubc6c\ubc6d\ubc6e\ubc6f\ubc70\ubc71\ubc72\ubc73\ubc74\ubc75\ubc76\ubc77\ubc78\ubc79\ubc7a\ubc7b\ubc7c\ubc7d\ubc7e\ubc7f\ubc80\ubc81\ubc82\ubc83\ubc84\ubc85\ubc86\ubc87\ubc88\ubc89\ubc8a\ubc8b\ubc8c\ubc8d\ubc8e\ubc8f\ubc90\ubc91\ubc92\ubc93\ubc94\ubc95\ubc96\ubc97\ubc98\ubc99\ubc9a\ubc9b\ubc9c\ubc9d\ubc9e\ubc9f\ubca0\ubca1\ubca2\ubca3\ubca4\ubca5\ubca6\ubca7\ubca8\ubca9\ubcaa\ubcab\ubcac\ubcad\ubcae\ubcaf\ubcb0\ubcb1\ubcb2\ubcb3\ubcb4\ubcb5\ubcb6\ubcb7\ubcb8\ubcb9\ubcba\ubcbb\ubcbc\ubcbd\ubcbe\ubcbf\ubcc0\ubcc1\ubcc2\ubcc3\ubcc4\ubcc5\ubcc6\ubcc7\ubcc8\ubcc9\ubcca\ubccb\ubccc\ubccd\ubcce\ubccf\ubcd0\ubcd1\ubcd2\ubcd3\ubcd4\ubcd5\ubcd6\ubcd7\ubcd8\ubcd9\ubcda\ubcdb\ubcdc\ubcdd\ubcde\ubcdf\ubce0\ubce1\ubce2\ubce3\ubce4\ubce5\ubce6\ubce7\ubce8\ubce9\ubcea\ubceb\ubcec\ubced\ubcee\ubcef\ubcf0\ubcf1\ubcf2\ubcf3\ubcf4\ubcf5\ubcf6\ubcf7\ubcf8\ubcf9\ubcfa\ubcfb\ubcfc\ubcfd\ubcfe\ubcff\ubd00\ubd01\ubd02\ubd03\ubd04\ubd05\ubd06\ubd07\ubd08\ubd09\ubd0a\ubd0b\ubd0c\ubd0d\ubd0e\ubd0f\ubd10\ubd11\ubd12\ubd13\ubd14\ubd15\ubd16\ubd17\ubd18\ubd19\ubd1a\ubd1b\ubd1c\ubd1d\ubd1e\ubd1f\ubd20\ubd21\ubd22\ubd23\ubd24\ubd25\ubd26\ubd27\ubd28\ubd29\ubd2a\ubd2b\ubd2c\ubd2d\ubd2e\ubd2f\ubd30\ubd31\ubd32\ubd33\ubd34\ubd35\ubd36\ubd37\ubd38\ubd39\ubd3a\ubd3b\ubd3c\ubd3d\ubd3e\ubd3f\ubd40\ubd41\ubd42\ubd43\ubd44\ubd45\ubd46\ubd47\ubd48\ubd49\ubd4a\ubd4b\ubd4c\ubd4d\ubd4e\ubd4f\ubd50\ubd51\ubd52\ubd53\ubd54\ubd55\ubd56\ubd57\ubd58\ubd59\ubd5a\ubd5b\ubd5c\ubd5d\ubd5e\ubd5f\ubd60\ubd61\ubd62\ubd63\ubd64\ubd65\ubd66\ubd67\ubd68\ubd69\ubd6a\ubd6b\ubd6c\ubd6d\ubd6e\ubd6f\ubd70\ubd71\ubd72\ubd73\ubd74\ubd75\ubd76\ubd77\ubd78\ubd79\ubd7a\ubd7b\ubd7c\ubd7d\ubd7e\ubd7f\ubd80\ubd81\ubd82\ubd83\ubd84\ubd85\ubd86\ubd87\ubd88\ubd89\ubd8a\ubd8b\ubd8c\ubd8d\ubd8e\ubd8f\ubd90\ubd91\ubd92\ubd93\ubd94\ubd95\ubd96\ubd97\ubd98\ubd99\ubd9a\ubd9b\ubd9c\ubd9d\ubd9e\ubd9f\ubda0\ubda1\ubda2\ubda3\ubda4\ubda5\ubda6\ubda7\ubda8\ubda9\ubdaa\ubdab\ubdac\ubdad\ubdae\ubdaf\ubdb0\ubdb1\ubdb2\ubdb3\ubdb4\ubdb5\ubdb6\ubdb7\ubdb8\ubdb9\ubdba\ubdbb\ubdbc\ubdbd\ubdbe\ubdbf\ubdc0\ubdc1\ubdc2\ubdc3\ubdc4\ubdc5\ubdc6\ubdc7\ubdc8\ubdc9\ubdca\ubdcb\ubdcc\ubdcd\ubdce\ubdcf\ubdd0\ubdd1\ubdd2\ubdd3\ubdd4\ubdd5\ubdd6\ubdd7\ubdd8\ubdd9\ubdda\ubddb\ubddc\ubddd\ubdde\ubddf\ubde0\ubde1\ubde2\ubde3\ubde4\ubde5\ubde6\ubde7\ubde8\ubde9\ubdea\ubdeb\ubdec\ubded\ubdee\ubdef\ubdf0\ubdf1\ubdf2\ubdf3\ubdf4\ubdf5\ubdf6\ubdf7\ubdf8\ubdf9\ubdfa\ubdfb\ubdfc\ubdfd\ubdfe\ubdff\ube00\ube01\ube02\ube03\ube04\ube05\ube06\ube07\ube08\ube09\ube0a\ube0b\ube0c\ube0d\ube0e\ube0f\ube10\ube11\ube12\ube13\ube14\ube15\ube16\ube17\ube18\ube19\ube1a\ube1b\ube1c\ube1d\ube1e\ube1f\ube20\ube21\ube22\ube23\ube24\ube25\ube26\ube27\ube28\ube29\ube2a\ube2b\ube2c\ube2d\ube2e\ube2f\ube30\ube31\ube32\ube33\ube34\ube35\ube36\ube37\ube38\ube39\ube3a\ube3b\ube3c\ube3d\ube3e\ube3f\ube40\ube41\ube42\ube43\ube44\ube45\ube46\ube47\ube48\ube49\ube4a\ube4b\ube4c\ube4d\ube4e\ube4f\ube50\ube51\ube52\ube53\ube54\ube55\ube56\ube57\ube58\ube59\ube5a\ube5b\ube5c\ube5d\ube5e\ube5f\ube60\ube61\ube62\ube63\ube64\ube65\ube66\ube67\ube68\ube69\ube6a\ube6b\ube6c\ube6d\ube6e\ube6f\ube70\ube71\ube72\ube73\ube74\ube75\ube76\ube77\ube78\ube79\ube7a\ube7b\ube7c\ube7d\ube7e\ube7f\ube80\ube81\ube82\ube83\ube84\ube85\ube86\ube87\ube88\ube89\ube8a\ube8b\ube8c\ube8d\ube8e\ube8f\ube90\ube91\ube92\ube93\ube94\ube95\ube96\ube97\ube98\ube99\ube9a\ube9b\ube9c\ube9d\ube9e\ube9f\ubea0\ubea1\ubea2\ubea3\ubea4\ubea5\ubea6\ubea7\ubea8\ubea9\ubeaa\ubeab\ubeac\ubead\ubeae\ubeaf\ubeb0\ubeb1\ubeb2\ubeb3\ubeb4\ubeb5\ubeb6\ubeb7\ubeb8\ubeb9\ubeba\ubebb\ubebc\ubebd\ubebe\ubebf\ubec0\ubec1\ubec2\ubec3\ubec4\ubec5\ubec6\ubec7\ubec8\ubec9\ubeca\ubecb\ubecc\ubecd\ubece\ubecf\ubed0\ubed1\ubed2\ubed3\ubed4\ubed5\ubed6\ubed7\ubed8\ubed9\ubeda\ubedb\ubedc\ubedd\ubede\ubedf\ubee0\ubee1\ubee2\ubee3\ubee4\ubee5\ubee6\ubee7\ubee8\ubee9\ubeea\ubeeb\ubeec\ubeed\ubeee\ubeef\ubef0\ubef1\ubef2\ubef3\ubef4\ubef5\ubef6\ubef7\ubef8\ubef9\ubefa\ubefb\ubefc\ubefd\ubefe\ubeff\ubf00\ubf01\ubf02\ubf03\ubf04\ubf05\ubf06\ubf07\ubf08\ubf09\ubf0a\ubf0b\ubf0c\ubf0d\ubf0e\ubf0f\ubf10\ubf11\ubf12\ubf13\ubf14\ubf15\ubf16\ubf17\ubf18\ubf19\ubf1a\ubf1b\ubf1c\ubf1d\ubf1e\ubf1f\ubf20\ubf21\ubf22\ubf23\ubf24\ubf25\ubf26\ubf27\ubf28\ubf29\ubf2a\ubf2b\ubf2c\ubf2d\ubf2e\ubf2f\ubf30\ubf31\ubf32\ubf33\ubf34\ubf35\ubf36\ubf37\ubf38\ubf39\ubf3a\ubf3b\ubf3c\ubf3d\ubf3e\ubf3f\ubf40\ubf41\ubf42\ubf43\ubf44\ubf45\ubf46\ubf47\ubf48\ubf49\ubf4a\ubf4b\ubf4c\ubf4d\ubf4e\ubf4f\ubf50\ubf51\ubf52\ubf53\ubf54\ubf55\ubf56\ubf57\ubf58\ubf59\ubf5a\ubf5b\ubf5c\ubf5d\ubf5e\ubf5f\ubf60\ubf61\ubf62\ubf63\ubf64\ubf65\ubf66\ubf67\ubf68\ubf69\ubf6a\ubf6b\ubf6c\ubf6d\ubf6e\ubf6f\ubf70\ubf71\ubf72\ubf73\ubf74\ubf75\ubf76\ubf77\ubf78\ubf79\ubf7a\ubf7b\ubf7c\ubf7d\ubf7e\ubf7f\ubf80\ubf81\ubf82\ubf83\ubf84\ubf85\ubf86\ubf87\ubf88\ubf89\ubf8a\ubf8b\ubf8c\ubf8d\ubf8e\ubf8f\ubf90\ubf91\ubf92\ubf93\ubf94\ubf95\ubf96\ubf97\ubf98\ubf99\ubf9a\ubf9b\ubf9c\ubf9d\ubf9e\ubf9f\ubfa0\ubfa1\ubfa2\ubfa3\ubfa4\ubfa5\ubfa6\ubfa7\ubfa8\ubfa9\ubfaa\ubfab\ubfac\ubfad\ubfae\ubfaf\ubfb0\ubfb1\ubfb2\ubfb3\ubfb4\ubfb5\ubfb6\ubfb7\ubfb8\ubfb9\ubfba\ubfbb\ubfbc\ubfbd\ubfbe\ubfbf\ubfc0\ubfc1\ubfc2\ubfc3\ubfc4\ubfc5\ubfc6\ubfc7\ubfc8\ubfc9\ubfca\ubfcb\ubfcc\ubfcd\ubfce\ubfcf\ubfd0\ubfd1\ubfd2\ubfd3\ubfd4\ubfd5\ubfd6\ubfd7\ubfd8\ubfd9\ubfda\ubfdb\ubfdc\ubfdd\ubfde\ubfdf\ubfe0\ubfe1\ubfe2\ubfe3\ubfe4\ubfe5\ubfe6\ubfe7\ubfe8\ubfe9\ubfea\ubfeb\ubfec\ubfed\ubfee\ubfef\ubff0\ubff1\ubff2\ubff3\ubff4\ubff5\ubff6\ubff7\ubff8\ubff9\ubffa\ubffb\ubffc\ubffd\ubffe\ubfff\uc000\uc001\uc002\uc003\uc004\uc005\uc006\uc007\uc008\uc009\uc00a\uc00b\uc00c\uc00d\uc00e\uc00f\uc010\uc011\uc012\uc013\uc014\uc015\uc016\uc017\uc018\uc019\uc01a\uc01b\uc01c\uc01d\uc01e\uc01f\uc020\uc021\uc022\uc023\uc024\uc025\uc026\uc027\uc028\uc029\uc02a\uc02b\uc02c\uc02d\uc02e\uc02f\uc030\uc031\uc032\uc033\uc034\uc035\uc036\uc037\uc038\uc039\uc03a\uc03b\uc03c\uc03d\uc03e\uc03f\uc040\uc041\uc042\uc043\uc044\uc045\uc046\uc047\uc048\uc049\uc04a\uc04b\uc04c\uc04d\uc04e\uc04f\uc050\uc051\uc052\uc053\uc054\uc055\uc056\uc057\uc058\uc059\uc05a\uc05b\uc05c\uc05d\uc05e\uc05f\uc060\uc061\uc062\uc063\uc064\uc065\uc066\uc067\uc068\uc069\uc06a\uc06b\uc06c\uc06d\uc06e\uc06f\uc070\uc071\uc072\uc073\uc074\uc075\uc076\uc077\uc078\uc079\uc07a\uc07b\uc07c\uc07d\uc07e\uc07f\uc080\uc081\uc082\uc083\uc084\uc085\uc086\uc087\uc088\uc089\uc08a\uc08b\uc08c\uc08d\uc08e\uc08f\uc090\uc091\uc092\uc093\uc094\uc095\uc096\uc097\uc098\uc099\uc09a\uc09b\uc09c\uc09d\uc09e\uc09f\uc0a0\uc0a1\uc0a2\uc0a3\uc0a4\uc0a5\uc0a6\uc0a7\uc0a8\uc0a9\uc0aa\uc0ab\uc0ac\uc0ad\uc0ae\uc0af\uc0b0\uc0b1\uc0b2\uc0b3\uc0b4\uc0b5\uc0b6\uc0b7\uc0b8\uc0b9\uc0ba\uc0bb\uc0bc\uc0bd\uc0be\uc0bf\uc0c0\uc0c1\uc0c2\uc0c3\uc0c4\uc0c5\uc0c6\uc0c7\uc0c8\uc0c9\uc0ca\uc0cb\uc0cc\uc0cd\uc0ce\uc0cf\uc0d0\uc0d1\uc0d2\uc0d3\uc0d4\uc0d5\uc0d6\uc0d7\uc0d8\uc0d9\uc0da\uc0db\uc0dc\uc0dd\uc0de\uc0df\uc0e0\uc0e1\uc0e2\uc0e3\uc0e4\uc0e5\uc0e6\uc0e7\uc0e8\uc0e9\uc0ea\uc0eb\uc0ec\uc0ed\uc0ee\uc0ef\uc0f0\uc0f1\uc0f2\uc0f3\uc0f4\uc0f5\uc0f6\uc0f7\uc0f8\uc0f9\uc0fa\uc0fb\uc0fc\uc0fd\uc0fe\uc0ff\uc100\uc101\uc102\uc103\uc104\uc105\uc106\uc107\uc108\uc109\uc10a\uc10b\uc10c\uc10d\uc10e\uc10f\uc110\uc111\uc112\uc113\uc114\uc115\uc116\uc117\uc118\uc119\uc11a\uc11b\uc11c\uc11d\uc11e\uc11f\uc120\uc121\uc122\uc123\uc124\uc125\uc126\uc127\uc128\uc129\uc12a\uc12b\uc12c\uc12d\uc12e\uc12f\uc130\uc131\uc132\uc133\uc134\uc135\uc136\uc137\uc138\uc139\uc13a\uc13b\uc13c\uc13d\uc13e\uc13f\uc140\uc141\uc142\uc143\uc144\uc145\uc146\uc147\uc148\uc149\uc14a\uc14b\uc14c\uc14d\uc14e\uc14f\uc150\uc151\uc152\uc153\uc154\uc155\uc156\uc157\uc158\uc159\uc15a\uc15b\uc15c\uc15d\uc15e\uc15f\uc160\uc161\uc162\uc163\uc164\uc165\uc166\uc167\uc168\uc169\uc16a\uc16b\uc16c\uc16d\uc16e\uc16f\uc170\uc171\uc172\uc173\uc174\uc175\uc176\uc177\uc178\uc179\uc17a\uc17b\uc17c\uc17d\uc17e\uc17f\uc180\uc181\uc182\uc183\uc184\uc185\uc186\uc187\uc188\uc189\uc18a\uc18b\uc18c\uc18d\uc18e\uc18f\uc190\uc191\uc192\uc193\uc194\uc195\uc196\uc197\uc198\uc199\uc19a\uc19b\uc19c\uc19d\uc19e\uc19f\uc1a0\uc1a1\uc1a2\uc1a3\uc1a4\uc1a5\uc1a6\uc1a7\uc1a8\uc1a9\uc1aa\uc1ab\uc1ac\uc1ad\uc1ae\uc1af\uc1b0\uc1b1\uc1b2\uc1b3\uc1b4\uc1b5\uc1b6\uc1b7\uc1b8\uc1b9\uc1ba\uc1bb\uc1bc\uc1bd\uc1be\uc1bf\uc1c0\uc1c1\uc1c2\uc1c3\uc1c4\uc1c5\uc1c6\uc1c7\uc1c8\uc1c9\uc1ca\uc1cb\uc1cc\uc1cd\uc1ce\uc1cf\uc1d0\uc1d1\uc1d2\uc1d3\uc1d4\uc1d5\uc1d6\uc1d7\uc1d8\uc1d9\uc1da\uc1db\uc1dc\uc1dd\uc1de\uc1df\uc1e0\uc1e1\uc1e2\uc1e3\uc1e4\uc1e5\uc1e6\uc1e7\uc1e8\uc1e9\uc1ea\uc1eb\uc1ec\uc1ed\uc1ee\uc1ef\uc1f0\uc1f1\uc1f2\uc1f3\uc1f4\uc1f5\uc1f6\uc1f7\uc1f8\uc1f9\uc1fa\uc1fb\uc1fc\uc1fd\uc1fe\uc1ff\uc200\uc201\uc202\uc203\uc204\uc205\uc206\uc207\uc208\uc209\uc20a\uc20b\uc20c\uc20d\uc20e\uc20f\uc210\uc211\uc212\uc213\uc214\uc215\uc216\uc217\uc218\uc219\uc21a\uc21b\uc21c\uc21d\uc21e\uc21f\uc220\uc221\uc222\uc223\uc224\uc225\uc226\uc227\uc228\uc229\uc22a\uc22b\uc22c\uc22d\uc22e\uc22f\uc230\uc231\uc232\uc233\uc234\uc235\uc236\uc237\uc238\uc239\uc23a\uc23b\uc23c\uc23d\uc23e\uc23f\uc240\uc241\uc242\uc243\uc244\uc245\uc246\uc247\uc248\uc249\uc24a\uc24b\uc24c\uc24d\uc24e\uc24f\uc250\uc251\uc252\uc253\uc254\uc255\uc256\uc257\uc258\uc259\uc25a\uc25b\uc25c\uc25d\uc25e\uc25f\uc260\uc261\uc262\uc263\uc264\uc265\uc266\uc267\uc268\uc269\uc26a\uc26b\uc26c\uc26d\uc26e\uc26f\uc270\uc271\uc272\uc273\uc274\uc275\uc276\uc277\uc278\uc279\uc27a\uc27b\uc27c\uc27d\uc27e\uc27f\uc280\uc281\uc282\uc283\uc284\uc285\uc286\uc287\uc288\uc289\uc28a\uc28b\uc28c\uc28d\uc28e\uc28f\uc290\uc291\uc292\uc293\uc294\uc295\uc296\uc297\uc298\uc299\uc29a\uc29b\uc29c\uc29d\uc29e\uc29f\uc2a0\uc2a1\uc2a2\uc2a3\uc2a4\uc2a5\uc2a6\uc2a7\uc2a8\uc2a9\uc2aa\uc2ab\uc2ac\uc2ad\uc2ae\uc2af\uc2b0\uc2b1\uc2b2\uc2b3\uc2b4\uc2b5\uc2b6\uc2b7\uc2b8\uc2b9\uc2ba\uc2bb\uc2bc\uc2bd\uc2be\uc2bf\uc2c0\uc2c1\uc2c2\uc2c3\uc2c4\uc2c5\uc2c6\uc2c7\uc2c8\uc2c9\uc2ca\uc2cb\uc2cc\uc2cd\uc2ce\uc2cf\uc2d0\uc2d1\uc2d2\uc2d3\uc2d4\uc2d5\uc2d6\uc2d7\uc2d8\uc2d9\uc2da\uc2db\uc2dc\uc2dd\uc2de\uc2df\uc2e0\uc2e1\uc2e2\uc2e3\uc2e4\uc2e5\uc2e6\uc2e7\uc2e8\uc2e9\uc2ea\uc2eb\uc2ec\uc2ed\uc2ee\uc2ef\uc2f0\uc2f1\uc2f2\uc2f3\uc2f4\uc2f5\uc2f6\uc2f7\uc2f8\uc2f9\uc2fa\uc2fb\uc2fc\uc2fd\uc2fe\uc2ff\uc300\uc301\uc302\uc303\uc304\uc305\uc306\uc307\uc308\uc309\uc30a\uc30b\uc30c\uc30d\uc30e\uc30f\uc310\uc311\uc312\uc313\uc314\uc315\uc316\uc317\uc318\uc319\uc31a\uc31b\uc31c\uc31d\uc31e\uc31f\uc320\uc321\uc322\uc323\uc324\uc325\uc326\uc327\uc328\uc329\uc32a\uc32b\uc32c\uc32d\uc32e\uc32f\uc330\uc331\uc332\uc333\uc334\uc335\uc336\uc337\uc338\uc339\uc33a\uc33b\uc33c\uc33d\uc33e\uc33f\uc340\uc341\uc342\uc343\uc344\uc345\uc346\uc347\uc348\uc349\uc34a\uc34b\uc34c\uc34d\uc34e\uc34f\uc350\uc351\uc352\uc353\uc354\uc355\uc356\uc357\uc358\uc359\uc35a\uc35b\uc35c\uc35d\uc35e\uc35f\uc360\uc361\uc362\uc363\uc364\uc365\uc366\uc367\uc368\uc369\uc36a\uc36b\uc36c\uc36d\uc36e\uc36f\uc370\uc371\uc372\uc373\uc374\uc375\uc376\uc377\uc378\uc379\uc37a\uc37b\uc37c\uc37d\uc37e\uc37f\uc380\uc381\uc382\uc383\uc384\uc385\uc386\uc387\uc388\uc389\uc38a\uc38b\uc38c\uc38d\uc38e\uc38f\uc390\uc391\uc392\uc393\uc394\uc395\uc396\uc397\uc398\uc399\uc39a\uc39b\uc39c\uc39d\uc39e\uc39f\uc3a0\uc3a1\uc3a2\uc3a3\uc3a4\uc3a5\uc3a6\uc3a7\uc3a8\uc3a9\uc3aa\uc3ab\uc3ac\uc3ad\uc3ae\uc3af\uc3b0\uc3b1\uc3b2\uc3b3\uc3b4\uc3b5\uc3b6\uc3b7\uc3b8\uc3b9\uc3ba\uc3bb\uc3bc\uc3bd\uc3be\uc3bf\uc3c0\uc3c1\uc3c2\uc3c3\uc3c4\uc3c5\uc3c6\uc3c7\uc3c8\uc3c9\uc3ca\uc3cb\uc3cc\uc3cd\uc3ce\uc3cf\uc3d0\uc3d1\uc3d2\uc3d3\uc3d4\uc3d5\uc3d6\uc3d7\uc3d8\uc3d9\uc3da\uc3db\uc3dc\uc3dd\uc3de\uc3df\uc3e0\uc3e1\uc3e2\uc3e3\uc3e4\uc3e5\uc3e6\uc3e7\uc3e8\uc3e9\uc3ea\uc3eb\uc3ec\uc3ed\uc3ee\uc3ef\uc3f0\uc3f1\uc3f2\uc3f3\uc3f4\uc3f5\uc3f6\uc3f7\uc3f8\uc3f9\uc3fa\uc3fb\uc3fc\uc3fd\uc3fe\uc3ff\uc400\uc401\uc402\uc403\uc404\uc405\uc406\uc407\uc408\uc409\uc40a\uc40b\uc40c\uc40d\uc40e\uc40f\uc410\uc411\uc412\uc413\uc414\uc415\uc416\uc417\uc418\uc419\uc41a\uc41b\uc41c\uc41d\uc41e\uc41f\uc420\uc421\uc422\uc423\uc424\uc425\uc426\uc427\uc428\uc429\uc42a\uc42b\uc42c\uc42d\uc42e\uc42f\uc430\uc431\uc432\uc433\uc434\uc435\uc436\uc437\uc438\uc439\uc43a\uc43b\uc43c\uc43d\uc43e\uc43f\uc440\uc441\uc442\uc443\uc444\uc445\uc446\uc447\uc448\uc449\uc44a\uc44b\uc44c\uc44d\uc44e\uc44f\uc450\uc451\uc452\uc453\uc454\uc455\uc456\uc457\uc458\uc459\uc45a\uc45b\uc45c\uc45d\uc45e\uc45f\uc460\uc461\uc462\uc463\uc464\uc465\uc466\uc467\uc468\uc469\uc46a\uc46b\uc46c\uc46d\uc46e\uc46f\uc470\uc471\uc472\uc473\uc474\uc475\uc476\uc477\uc478\uc479\uc47a\uc47b\uc47c\uc47d\uc47e\uc47f\uc480\uc481\uc482\uc483\uc484\uc485\uc486\uc487\uc488\uc489\uc48a\uc48b\uc48c\uc48d\uc48e\uc48f\uc490\uc491\uc492\uc493\uc494\uc495\uc496\uc497\uc498\uc499\uc49a\uc49b\uc49c\uc49d\uc49e\uc49f\uc4a0\uc4a1\uc4a2\uc4a3\uc4a4\uc4a5\uc4a6\uc4a7\uc4a8\uc4a9\uc4aa\uc4ab\uc4ac\uc4ad\uc4ae\uc4af\uc4b0\uc4b1\uc4b2\uc4b3\uc4b4\uc4b5\uc4b6\uc4b7\uc4b8\uc4b9\uc4ba\uc4bb\uc4bc\uc4bd\uc4be\uc4bf\uc4c0\uc4c1\uc4c2\uc4c3\uc4c4\uc4c5\uc4c6\uc4c7\uc4c8\uc4c9\uc4ca\uc4cb\uc4cc\uc4cd\uc4ce\uc4cf\uc4d0\uc4d1\uc4d2\uc4d3\uc4d4\uc4d5\uc4d6\uc4d7\uc4d8\uc4d9\uc4da\uc4db\uc4dc\uc4dd\uc4de\uc4df\uc4e0\uc4e1\uc4e2\uc4e3\uc4e4\uc4e5\uc4e6\uc4e7\uc4e8\uc4e9\uc4ea\uc4eb\uc4ec\uc4ed\uc4ee\uc4ef\uc4f0\uc4f1\uc4f2\uc4f3\uc4f4\uc4f5\uc4f6\uc4f7\uc4f8\uc4f9\uc4fa\uc4fb\uc4fc\uc4fd\uc4fe\uc4ff\uc500\uc501\uc502\uc503\uc504\uc505\uc506\uc507\uc508\uc509\uc50a\uc50b\uc50c\uc50d\uc50e\uc50f\uc510\uc511\uc512\uc513\uc514\uc515\uc516\uc517\uc518\uc519\uc51a\uc51b\uc51c\uc51d\uc51e\uc51f\uc520\uc521\uc522\uc523\uc524\uc525\uc526\uc527\uc528\uc529\uc52a\uc52b\uc52c\uc52d\uc52e\uc52f\uc530\uc531\uc532\uc533\uc534\uc535\uc536\uc537\uc538\uc539\uc53a\uc53b\uc53c\uc53d\uc53e\uc53f\uc540\uc541\uc542\uc543\uc544\uc545\uc546\uc547\uc548\uc549\uc54a\uc54b\uc54c\uc54d\uc54e\uc54f\uc550\uc551\uc552\uc553\uc554\uc555\uc556\uc557\uc558\uc559\uc55a\uc55b\uc55c\uc55d\uc55e\uc55f\uc560\uc561\uc562\uc563\uc564\uc565\uc566\uc567\uc568\uc569\uc56a\uc56b\uc56c\uc56d\uc56e\uc56f\uc570\uc571\uc572\uc573\uc574\uc575\uc576\uc577\uc578\uc579\uc57a\uc57b\uc57c\uc57d\uc57e\uc57f\uc580\uc581\uc582\uc583\uc584\uc585\uc586\uc587\uc588\uc589\uc58a\uc58b\uc58c\uc58d\uc58e\uc58f\uc590\uc591\uc592\uc593\uc594\uc595\uc596\uc597\uc598\uc599\uc59a\uc59b\uc59c\uc59d\uc59e\uc59f\uc5a0\uc5a1\uc5a2\uc5a3\uc5a4\uc5a5\uc5a6\uc5a7\uc5a8\uc5a9\uc5aa\uc5ab\uc5ac\uc5ad\uc5ae\uc5af\uc5b0\uc5b1\uc5b2\uc5b3\uc5b4\uc5b5\uc5b6\uc5b7\uc5b8\uc5b9\uc5ba\uc5bb\uc5bc\uc5bd\uc5be\uc5bf\uc5c0\uc5c1\uc5c2\uc5c3\uc5c4\uc5c5\uc5c6\uc5c7\uc5c8\uc5c9\uc5ca\uc5cb\uc5cc\uc5cd\uc5ce\uc5cf\uc5d0\uc5d1\uc5d2\uc5d3\uc5d4\uc5d5\uc5d6\uc5d7\uc5d8\uc5d9\uc5da\uc5db\uc5dc\uc5dd\uc5de\uc5df\uc5e0\uc5e1\uc5e2\uc5e3\uc5e4\uc5e5\uc5e6\uc5e7\uc5e8\uc5e9\uc5ea\uc5eb\uc5ec\uc5ed\uc5ee\uc5ef\uc5f0\uc5f1\uc5f2\uc5f3\uc5f4\uc5f5\uc5f6\uc5f7\uc5f8\uc5f9\uc5fa\uc5fb\uc5fc\uc5fd\uc5fe\uc5ff\uc600\uc601\uc602\uc603\uc604\uc605\uc606\uc607\uc608\uc609\uc60a\uc60b\uc60c\uc60d\uc60e\uc60f\uc610\uc611\uc612\uc613\uc614\uc615\uc616\uc617\uc618\uc619\uc61a\uc61b\uc61c\uc61d\uc61e\uc61f\uc620\uc621\uc622\uc623\uc624\uc625\uc626\uc627\uc628\uc629\uc62a\uc62b\uc62c\uc62d\uc62e\uc62f\uc630\uc631\uc632\uc633\uc634\uc635\uc636\uc637\uc638\uc639\uc63a\uc63b\uc63c\uc63d\uc63e\uc63f\uc640\uc641\uc642\uc643\uc644\uc645\uc646\uc647\uc648\uc649\uc64a\uc64b\uc64c\uc64d\uc64e\uc64f\uc650\uc651\uc652\uc653\uc654\uc655\uc656\uc657\uc658\uc659\uc65a\uc65b\uc65c\uc65d\uc65e\uc65f\uc660\uc661\uc662\uc663\uc664\uc665\uc666\uc667\uc668\uc669\uc66a\uc66b\uc66c\uc66d\uc66e\uc66f\uc670\uc671\uc672\uc673\uc674\uc675\uc676\uc677\uc678\uc679\uc67a\uc67b\uc67c\uc67d\uc67e\uc67f\uc680\uc681\uc682\uc683\uc684\uc685\uc686\uc687\uc688\uc689\uc68a\uc68b\uc68c\uc68d\uc68e\uc68f\uc690\uc691\uc692\uc693\uc694\uc695\uc696\uc697\uc698\uc699\uc69a\uc69b\uc69c\uc69d\uc69e\uc69f\uc6a0\uc6a1\uc6a2\uc6a3\uc6a4\uc6a5\uc6a6\uc6a7\uc6a8\uc6a9\uc6aa\uc6ab\uc6ac\uc6ad\uc6ae\uc6af\uc6b0\uc6b1\uc6b2\uc6b3\uc6b4\uc6b5\uc6b6\uc6b7\uc6b8\uc6b9\uc6ba\uc6bb\uc6bc\uc6bd\uc6be\uc6bf\uc6c0\uc6c1\uc6c2\uc6c3\uc6c4\uc6c5\uc6c6\uc6c7\uc6c8\uc6c9\uc6ca\uc6cb\uc6cc\uc6cd\uc6ce\uc6cf\uc6d0\uc6d1\uc6d2\uc6d3\uc6d4\uc6d5\uc6d6\uc6d7\uc6d8\uc6d9\uc6da\uc6db\uc6dc\uc6dd\uc6de\uc6df\uc6e0\uc6e1\uc6e2\uc6e3\uc6e4\uc6e5\uc6e6\uc6e7\uc6e8\uc6e9\uc6ea\uc6eb\uc6ec\uc6ed\uc6ee\uc6ef\uc6f0\uc6f1\uc6f2\uc6f3\uc6f4\uc6f5\uc6f6\uc6f7\uc6f8\uc6f9\uc6fa\uc6fb\uc6fc\uc6fd\uc6fe\uc6ff\uc700\uc701\uc702\uc703\uc704\uc705\uc706\uc707\uc708\uc709\uc70a\uc70b\uc70c\uc70d\uc70e\uc70f\uc710\uc711\uc712\uc713\uc714\uc715\uc716\uc717\uc718\uc719\uc71a\uc71b\uc71c\uc71d\uc71e\uc71f\uc720\uc721\uc722\uc723\uc724\uc725\uc726\uc727\uc728\uc729\uc72a\uc72b\uc72c\uc72d\uc72e\uc72f\uc730\uc731\uc732\uc733\uc734\uc735\uc736\uc737\uc738\uc739\uc73a\uc73b\uc73c\uc73d\uc73e\uc73f\uc740\uc741\uc742\uc743\uc744\uc745\uc746\uc747\uc748\uc749\uc74a\uc74b\uc74c\uc74d\uc74e\uc74f\uc750\uc751\uc752\uc753\uc754\uc755\uc756\uc757\uc758\uc759\uc75a\uc75b\uc75c\uc75d\uc75e\uc75f\uc760\uc761\uc762\uc763\uc764\uc765\uc766\uc767\uc768\uc769\uc76a\uc76b\uc76c\uc76d\uc76e\uc76f\uc770\uc771\uc772\uc773\uc774\uc775\uc776\uc777\uc778\uc779\uc77a\uc77b\uc77c\uc77d\uc77e\uc77f\uc780\uc781\uc782\uc783\uc784\uc785\uc786\uc787\uc788\uc789\uc78a\uc78b\uc78c\uc78d\uc78e\uc78f\uc790\uc791\uc792\uc793\uc794\uc795\uc796\uc797\uc798\uc799\uc79a\uc79b\uc79c\uc79d\uc79e\uc79f\uc7a0\uc7a1\uc7a2\uc7a3\uc7a4\uc7a5\uc7a6\uc7a7\uc7a8\uc7a9\uc7aa\uc7ab\uc7ac\uc7ad\uc7ae\uc7af\uc7b0\uc7b1\uc7b2\uc7b3\uc7b4\uc7b5\uc7b6\uc7b7\uc7b8\uc7b9\uc7ba\uc7bb\uc7bc\uc7bd\uc7be\uc7bf\uc7c0\uc7c1\uc7c2\uc7c3\uc7c4\uc7c5\uc7c6\uc7c7\uc7c8\uc7c9\uc7ca\uc7cb\uc7cc\uc7cd\uc7ce\uc7cf\uc7d0\uc7d1\uc7d2\uc7d3\uc7d4\uc7d5\uc7d6\uc7d7\uc7d8\uc7d9\uc7da\uc7db\uc7dc\uc7dd\uc7de\uc7df\uc7e0\uc7e1\uc7e2\uc7e3\uc7e4\uc7e5\uc7e6\uc7e7\uc7e8\uc7e9\uc7ea\uc7eb\uc7ec\uc7ed\uc7ee\uc7ef\uc7f0\uc7f1\uc7f2\uc7f3\uc7f4\uc7f5\uc7f6\uc7f7\uc7f8\uc7f9\uc7fa\uc7fb\uc7fc\uc7fd\uc7fe\uc7ff\uc800\uc801\uc802\uc803\uc804\uc805\uc806\uc807\uc808\uc809\uc80a\uc80b\uc80c\uc80d\uc80e\uc80f\uc810\uc811\uc812\uc813\uc814\uc815\uc816\uc817\uc818\uc819\uc81a\uc81b\uc81c\uc81d\uc81e\uc81f\uc820\uc821\uc822\uc823\uc824\uc825\uc826\uc827\uc828\uc829\uc82a\uc82b\uc82c\uc82d\uc82e\uc82f\uc830\uc831\uc832\uc833\uc834\uc835\uc836\uc837\uc838\uc839\uc83a\uc83b\uc83c\uc83d\uc83e\uc83f\uc840\uc841\uc842\uc843\uc844\uc845\uc846\uc847\uc848\uc849\uc84a\uc84b\uc84c\uc84d\uc84e\uc84f\uc850\uc851\uc852\uc853\uc854\uc855\uc856\uc857\uc858\uc859\uc85a\uc85b\uc85c\uc85d\uc85e\uc85f\uc860\uc861\uc862\uc863\uc864\uc865\uc866\uc867\uc868\uc869\uc86a\uc86b\uc86c\uc86d\uc86e\uc86f\uc870\uc871\uc872\uc873\uc874\uc875\uc876\uc877\uc878\uc879\uc87a\uc87b\uc87c\uc87d\uc87e\uc87f\uc880\uc881\uc882\uc883\uc884\uc885\uc886\uc887\uc888\uc889\uc88a\uc88b\uc88c\uc88d\uc88e\uc88f\uc890\uc891\uc892\uc893\uc894\uc895\uc896\uc897\uc898\uc899\uc89a\uc89b\uc89c\uc89d\uc89e\uc89f\uc8a0\uc8a1\uc8a2\uc8a3\uc8a4\uc8a5\uc8a6\uc8a7\uc8a8\uc8a9\uc8aa\uc8ab\uc8ac\uc8ad\uc8ae\uc8af\uc8b0\uc8b1\uc8b2\uc8b3\uc8b4\uc8b5\uc8b6\uc8b7\uc8b8\uc8b9\uc8ba\uc8bb\uc8bc\uc8bd\uc8be\uc8bf\uc8c0\uc8c1\uc8c2\uc8c3\uc8c4\uc8c5\uc8c6\uc8c7\uc8c8\uc8c9\uc8ca\uc8cb\uc8cc\uc8cd\uc8ce\uc8cf\uc8d0\uc8d1\uc8d2\uc8d3\uc8d4\uc8d5\uc8d6\uc8d7\uc8d8\uc8d9\uc8da\uc8db\uc8dc\uc8dd\uc8de\uc8df\uc8e0\uc8e1\uc8e2\uc8e3\uc8e4\uc8e5\uc8e6\uc8e7\uc8e8\uc8e9\uc8ea\uc8eb\uc8ec\uc8ed\uc8ee\uc8ef\uc8f0\uc8f1\uc8f2\uc8f3\uc8f4\uc8f5\uc8f6\uc8f7\uc8f8\uc8f9\uc8fa\uc8fb\uc8fc\uc8fd\uc8fe\uc8ff\uc900\uc901\uc902\uc903\uc904\uc905\uc906\uc907\uc908\uc909\uc90a\uc90b\uc90c\uc90d\uc90e\uc90f\uc910\uc911\uc912\uc913\uc914\uc915\uc916\uc917\uc918\uc919\uc91a\uc91b\uc91c\uc91d\uc91e\uc91f\uc920\uc921\uc922\uc923\uc924\uc925\uc926\uc927\uc928\uc929\uc92a\uc92b\uc92c\uc92d\uc92e\uc92f\uc930\uc931\uc932\uc933\uc934\uc935\uc936\uc937\uc938\uc939\uc93a\uc93b\uc93c\uc93d\uc93e\uc93f\uc940\uc941\uc942\uc943\uc944\uc945\uc946\uc947\uc948\uc949\uc94a\uc94b\uc94c\uc94d\uc94e\uc94f\uc950\uc951\uc952\uc953\uc954\uc955\uc956\uc957\uc958\uc959\uc95a\uc95b\uc95c\uc95d\uc95e\uc95f\uc960\uc961\uc962\uc963\uc964\uc965\uc966\uc967\uc968\uc969\uc96a\uc96b\uc96c\uc96d\uc96e\uc96f\uc970\uc971\uc972\uc973\uc974\uc975\uc976\uc977\uc978\uc979\uc97a\uc97b\uc97c\uc97d\uc97e\uc97f\uc980\uc981\uc982\uc983\uc984\uc985\uc986\uc987\uc988\uc989\uc98a\uc98b\uc98c\uc98d\uc98e\uc98f\uc990\uc991\uc992\uc993\uc994\uc995\uc996\uc997\uc998\uc999\uc99a\uc99b\uc99c\uc99d\uc99e\uc99f\uc9a0\uc9a1\uc9a2\uc9a3\uc9a4\uc9a5\uc9a6\uc9a7\uc9a8\uc9a9\uc9aa\uc9ab\uc9ac\uc9ad\uc9ae\uc9af\uc9b0\uc9b1\uc9b2\uc9b3\uc9b4\uc9b5\uc9b6\uc9b7\uc9b8\uc9b9\uc9ba\uc9bb\uc9bc\uc9bd\uc9be\uc9bf\uc9c0\uc9c1\uc9c2\uc9c3\uc9c4\uc9c5\uc9c6\uc9c7\uc9c8\uc9c9\uc9ca\uc9cb\uc9cc\uc9cd\uc9ce\uc9cf\uc9d0\uc9d1\uc9d2\uc9d3\uc9d4\uc9d5\uc9d6\uc9d7\uc9d8\uc9d9\uc9da\uc9db\uc9dc\uc9dd\uc9de\uc9df\uc9e0\uc9e1\uc9e2\uc9e3\uc9e4\uc9e5\uc9e6\uc9e7\uc9e8\uc9e9\uc9ea\uc9eb\uc9ec\uc9ed\uc9ee\uc9ef\uc9f0\uc9f1\uc9f2\uc9f3\uc9f4\uc9f5\uc9f6\uc9f7\uc9f8\uc9f9\uc9fa\uc9fb\uc9fc\uc9fd\uc9fe\uc9ff\uca00\uca01\uca02\uca03\uca04\uca05\uca06\uca07\uca08\uca09\uca0a\uca0b\uca0c\uca0d\uca0e\uca0f\uca10\uca11\uca12\uca13\uca14\uca15\uca16\uca17\uca18\uca19\uca1a\uca1b\uca1c\uca1d\uca1e\uca1f\uca20\uca21\uca22\uca23\uca24\uca25\uca26\uca27\uca28\uca29\uca2a\uca2b\uca2c\uca2d\uca2e\uca2f\uca30\uca31\uca32\uca33\uca34\uca35\uca36\uca37\uca38\uca39\uca3a\uca3b\uca3c\uca3d\uca3e\uca3f\uca40\uca41\uca42\uca43\uca44\uca45\uca46\uca47\uca48\uca49\uca4a\uca4b\uca4c\uca4d\uca4e\uca4f\uca50\uca51\uca52\uca53\uca54\uca55\uca56\uca57\uca58\uca59\uca5a\uca5b\uca5c\uca5d\uca5e\uca5f\uca60\uca61\uca62\uca63\uca64\uca65\uca66\uca67\uca68\uca69\uca6a\uca6b\uca6c\uca6d\uca6e\uca6f\uca70\uca71\uca72\uca73\uca74\uca75\uca76\uca77\uca78\uca79\uca7a\uca7b\uca7c\uca7d\uca7e\uca7f\uca80\uca81\uca82\uca83\uca84\uca85\uca86\uca87\uca88\uca89\uca8a\uca8b\uca8c\uca8d\uca8e\uca8f\uca90\uca91\uca92\uca93\uca94\uca95\uca96\uca97\uca98\uca99\uca9a\uca9b\uca9c\uca9d\uca9e\uca9f\ucaa0\ucaa1\ucaa2\ucaa3\ucaa4\ucaa5\ucaa6\ucaa7\ucaa8\ucaa9\ucaaa\ucaab\ucaac\ucaad\ucaae\ucaaf\ucab0\ucab1\ucab2\ucab3\ucab4\ucab5\ucab6\ucab7\ucab8\ucab9\ucaba\ucabb\ucabc\ucabd\ucabe\ucabf\ucac0\ucac1\ucac2\ucac3\ucac4\ucac5\ucac6\ucac7\ucac8\ucac9\ucaca\ucacb\ucacc\ucacd\ucace\ucacf\ucad0\ucad1\ucad2\ucad3\ucad4\ucad5\ucad6\ucad7\ucad8\ucad9\ucada\ucadb\ucadc\ucadd\ucade\ucadf\ucae0\ucae1\ucae2\ucae3\ucae4\ucae5\ucae6\ucae7\ucae8\ucae9\ucaea\ucaeb\ucaec\ucaed\ucaee\ucaef\ucaf0\ucaf1\ucaf2\ucaf3\ucaf4\ucaf5\ucaf6\ucaf7\ucaf8\ucaf9\ucafa\ucafb\ucafc\ucafd\ucafe\ucaff\ucb00\ucb01\ucb02\ucb03\ucb04\ucb05\ucb06\ucb07\ucb08\ucb09\ucb0a\ucb0b\ucb0c\ucb0d\ucb0e\ucb0f\ucb10\ucb11\ucb12\ucb13\ucb14\ucb15\ucb16\ucb17\ucb18\ucb19\ucb1a\ucb1b\ucb1c\ucb1d\ucb1e\ucb1f\ucb20\ucb21\ucb22\ucb23\ucb24\ucb25\ucb26\ucb27\ucb28\ucb29\ucb2a\ucb2b\ucb2c\ucb2d\ucb2e\ucb2f\ucb30\ucb31\ucb32\ucb33\ucb34\ucb35\ucb36\ucb37\ucb38\ucb39\ucb3a\ucb3b\ucb3c\ucb3d\ucb3e\ucb3f\ucb40\ucb41\ucb42\ucb43\ucb44\ucb45\ucb46\ucb47\ucb48\ucb49\ucb4a\ucb4b\ucb4c\ucb4d\ucb4e\ucb4f\ucb50\ucb51\ucb52\ucb53\ucb54\ucb55\ucb56\ucb57\ucb58\ucb59\ucb5a\ucb5b\ucb5c\ucb5d\ucb5e\ucb5f\ucb60\ucb61\ucb62\ucb63\ucb64\ucb65\ucb66\ucb67\ucb68\ucb69\ucb6a\ucb6b\ucb6c\ucb6d\ucb6e\ucb6f\ucb70\ucb71\ucb72\ucb73\ucb74\ucb75\ucb76\ucb77\ucb78\ucb79\ucb7a\ucb7b\ucb7c\ucb7d\ucb7e\ucb7f\ucb80\ucb81\ucb82\ucb83\ucb84\ucb85\ucb86\ucb87\ucb88\ucb89\ucb8a\ucb8b\ucb8c\ucb8d\ucb8e\ucb8f\ucb90\ucb91\ucb92\ucb93\ucb94\ucb95\ucb96\ucb97\ucb98\ucb99\ucb9a\ucb9b\ucb9c\ucb9d\ucb9e\ucb9f\ucba0\ucba1\ucba2\ucba3\ucba4\ucba5\ucba6\ucba7\ucba8\ucba9\ucbaa\ucbab\ucbac\ucbad\ucbae\ucbaf\ucbb0\ucbb1\ucbb2\ucbb3\ucbb4\ucbb5\ucbb6\ucbb7\ucbb8\ucbb9\ucbba\ucbbb\ucbbc\ucbbd\ucbbe\ucbbf\ucbc0\ucbc1\ucbc2\ucbc3\ucbc4\ucbc5\ucbc6\ucbc7\ucbc8\ucbc9\ucbca\ucbcb\ucbcc\ucbcd\ucbce\ucbcf\ucbd0\ucbd1\ucbd2\ucbd3\ucbd4\ucbd5\ucbd6\ucbd7\ucbd8\ucbd9\ucbda\ucbdb\ucbdc\ucbdd\ucbde\ucbdf\ucbe0\ucbe1\ucbe2\ucbe3\ucbe4\ucbe5\ucbe6\ucbe7\ucbe8\ucbe9\ucbea\ucbeb\ucbec\ucbed\ucbee\ucbef\ucbf0\ucbf1\ucbf2\ucbf3\ucbf4\ucbf5\ucbf6\ucbf7\ucbf8\ucbf9\ucbfa\ucbfb\ucbfc\ucbfd\ucbfe\ucbff\ucc00\ucc01\ucc02\ucc03\ucc04\ucc05\ucc06\ucc07\ucc08\ucc09\ucc0a\ucc0b\ucc0c\ucc0d\ucc0e\ucc0f\ucc10\ucc11\ucc12\ucc13\ucc14\ucc15\ucc16\ucc17\ucc18\ucc19\ucc1a\ucc1b\ucc1c\ucc1d\ucc1e\ucc1f\ucc20\ucc21\ucc22\ucc23\ucc24\ucc25\ucc26\ucc27\ucc28\ucc29\ucc2a\ucc2b\ucc2c\ucc2d\ucc2e\ucc2f\ucc30\ucc31\ucc32\ucc33\ucc34\ucc35\ucc36\ucc37\ucc38\ucc39\ucc3a\ucc3b\ucc3c\ucc3d\ucc3e\ucc3f\ucc40\ucc41\ucc42\ucc43\ucc44\ucc45\ucc46\ucc47\ucc48\ucc49\ucc4a\ucc4b\ucc4c\ucc4d\ucc4e\ucc4f\ucc50\ucc51\ucc52\ucc53\ucc54\ucc55\ucc56\ucc57\ucc58\ucc59\ucc5a\ucc5b\ucc5c\ucc5d\ucc5e\ucc5f\ucc60\ucc61\ucc62\ucc63\ucc64\ucc65\ucc66\ucc67\ucc68\ucc69\ucc6a\ucc6b\ucc6c\ucc6d\ucc6e\ucc6f\ucc70\ucc71\ucc72\ucc73\ucc74\ucc75\ucc76\ucc77\ucc78\ucc79\ucc7a\ucc7b\ucc7c\ucc7d\ucc7e\ucc7f\ucc80\ucc81\ucc82\ucc83\ucc84\ucc85\ucc86\ucc87\ucc88\ucc89\ucc8a\ucc8b\ucc8c\ucc8d\ucc8e\ucc8f\ucc90\ucc91\ucc92\ucc93\ucc94\ucc95\ucc96\ucc97\ucc98\ucc99\ucc9a\ucc9b\ucc9c\ucc9d\ucc9e\ucc9f\ucca0\ucca1\ucca2\ucca3\ucca4\ucca5\ucca6\ucca7\ucca8\ucca9\uccaa\uccab\uccac\uccad\uccae\uccaf\uccb0\uccb1\uccb2\uccb3\uccb4\uccb5\uccb6\uccb7\uccb8\uccb9\uccba\uccbb\uccbc\uccbd\uccbe\uccbf\uccc0\uccc1\uccc2\uccc3\uccc4\uccc5\uccc6\uccc7\uccc8\uccc9\uccca\ucccb\ucccc\ucccd\uccce\ucccf\uccd0\uccd1\uccd2\uccd3\uccd4\uccd5\uccd6\uccd7\uccd8\uccd9\uccda\uccdb\uccdc\uccdd\uccde\uccdf\ucce0\ucce1\ucce2\ucce3\ucce4\ucce5\ucce6\ucce7\ucce8\ucce9\uccea\ucceb\uccec\ucced\uccee\uccef\uccf0\uccf1\uccf2\uccf3\uccf4\uccf5\uccf6\uccf7\uccf8\uccf9\uccfa\uccfb\uccfc\uccfd\uccfe\uccff\ucd00\ucd01\ucd02\ucd03\ucd04\ucd05\ucd06\ucd07\ucd08\ucd09\ucd0a\ucd0b\ucd0c\ucd0d\ucd0e\ucd0f\ucd10\ucd11\ucd12\ucd13\ucd14\ucd15\ucd16\ucd17\ucd18\ucd19\ucd1a\ucd1b\ucd1c\ucd1d\ucd1e\ucd1f\ucd20\ucd21\ucd22\ucd23\ucd24\ucd25\ucd26\ucd27\ucd28\ucd29\ucd2a\ucd2b\ucd2c\ucd2d\ucd2e\ucd2f\ucd30\ucd31\ucd32\ucd33\ucd34\ucd35\ucd36\ucd37\ucd38\ucd39\ucd3a\ucd3b\ucd3c\ucd3d\ucd3e\ucd3f\ucd40\ucd41\ucd42\ucd43\ucd44\ucd45\ucd46\ucd47\ucd48\ucd49\ucd4a\ucd4b\ucd4c\ucd4d\ucd4e\ucd4f\ucd50\ucd51\ucd52\ucd53\ucd54\ucd55\ucd56\ucd57\ucd58\ucd59\ucd5a\ucd5b\ucd5c\ucd5d\ucd5e\ucd5f\ucd60\ucd61\ucd62\ucd63\ucd64\ucd65\ucd66\ucd67\ucd68\ucd69\ucd6a\ucd6b\ucd6c\ucd6d\ucd6e\ucd6f\ucd70\ucd71\ucd72\ucd73\ucd74\ucd75\ucd76\ucd77\ucd78\ucd79\ucd7a\ucd7b\ucd7c\ucd7d\ucd7e\ucd7f\ucd80\ucd81\ucd82\ucd83\ucd84\ucd85\ucd86\ucd87\ucd88\ucd89\ucd8a\ucd8b\ucd8c\ucd8d\ucd8e\ucd8f\ucd90\ucd91\ucd92\ucd93\ucd94\ucd95\ucd96\ucd97\ucd98\ucd99\ucd9a\ucd9b\ucd9c\ucd9d\ucd9e\ucd9f\ucda0\ucda1\ucda2\ucda3\ucda4\ucda5\ucda6\ucda7\ucda8\ucda9\ucdaa\ucdab\ucdac\ucdad\ucdae\ucdaf\ucdb0\ucdb1\ucdb2\ucdb3\ucdb4\ucdb5\ucdb6\ucdb7\ucdb8\ucdb9\ucdba\ucdbb\ucdbc\ucdbd\ucdbe\ucdbf\ucdc0\ucdc1\ucdc2\ucdc3\ucdc4\ucdc5\ucdc6\ucdc7\ucdc8\ucdc9\ucdca\ucdcb\ucdcc\ucdcd\ucdce\ucdcf\ucdd0\ucdd1\ucdd2\ucdd3\ucdd4\ucdd5\ucdd6\ucdd7\ucdd8\ucdd9\ucdda\ucddb\ucddc\ucddd\ucdde\ucddf\ucde0\ucde1\ucde2\ucde3\ucde4\ucde5\ucde6\ucde7\ucde8\ucde9\ucdea\ucdeb\ucdec\ucded\ucdee\ucdef\ucdf0\ucdf1\ucdf2\ucdf3\ucdf4\ucdf5\ucdf6\ucdf7\ucdf8\ucdf9\ucdfa\ucdfb\ucdfc\ucdfd\ucdfe\ucdff\uce00\uce01\uce02\uce03\uce04\uce05\uce06\uce07\uce08\uce09\uce0a\uce0b\uce0c\uce0d\uce0e\uce0f\uce10\uce11\uce12\uce13\uce14\uce15\uce16\uce17\uce18\uce19\uce1a\uce1b\uce1c\uce1d\uce1e\uce1f\uce20\uce21\uce22\uce23\uce24\uce25\uce26\uce27\uce28\uce29\uce2a\uce2b\uce2c\uce2d\uce2e\uce2f\uce30\uce31\uce32\uce33\uce34\uce35\uce36\uce37\uce38\uce39\uce3a\uce3b\uce3c\uce3d\uce3e\uce3f\uce40\uce41\uce42\uce43\uce44\uce45\uce46\uce47\uce48\uce49\uce4a\uce4b\uce4c\uce4d\uce4e\uce4f\uce50\uce51\uce52\uce53\uce54\uce55\uce56\uce57\uce58\uce59\uce5a\uce5b\uce5c\uce5d\uce5e\uce5f\uce60\uce61\uce62\uce63\uce64\uce65\uce66\uce67\uce68\uce69\uce6a\uce6b\uce6c\uce6d\uce6e\uce6f\uce70\uce71\uce72\uce73\uce74\uce75\uce76\uce77\uce78\uce79\uce7a\uce7b\uce7c\uce7d\uce7e\uce7f\uce80\uce81\uce82\uce83\uce84\uce85\uce86\uce87\uce88\uce89\uce8a\uce8b\uce8c\uce8d\uce8e\uce8f\uce90\uce91\uce92\uce93\uce94\uce95\uce96\uce97\uce98\uce99\uce9a\uce9b\uce9c\uce9d\uce9e\uce9f\ucea0\ucea1\ucea2\ucea3\ucea4\ucea5\ucea6\ucea7\ucea8\ucea9\uceaa\uceab\uceac\ucead\uceae\uceaf\uceb0\uceb1\uceb2\uceb3\uceb4\uceb5\uceb6\uceb7\uceb8\uceb9\uceba\ucebb\ucebc\ucebd\ucebe\ucebf\ucec0\ucec1\ucec2\ucec3\ucec4\ucec5\ucec6\ucec7\ucec8\ucec9\uceca\ucecb\ucecc\ucecd\ucece\ucecf\uced0\uced1\uced2\uced3\uced4\uced5\uced6\uced7\uced8\uced9\uceda\ucedb\ucedc\ucedd\ucede\ucedf\ucee0\ucee1\ucee2\ucee3\ucee4\ucee5\ucee6\ucee7\ucee8\ucee9\uceea\uceeb\uceec\uceed\uceee\uceef\ucef0\ucef1\ucef2\ucef3\ucef4\ucef5\ucef6\ucef7\ucef8\ucef9\ucefa\ucefb\ucefc\ucefd\ucefe\uceff\ucf00\ucf01\ucf02\ucf03\ucf04\ucf05\ucf06\ucf07\ucf08\ucf09\ucf0a\ucf0b\ucf0c\ucf0d\ucf0e\ucf0f\ucf10\ucf11\ucf12\ucf13\ucf14\ucf15\ucf16\ucf17\ucf18\ucf19\ucf1a\ucf1b\ucf1c\ucf1d\ucf1e\ucf1f\ucf20\ucf21\ucf22\ucf23\ucf24\ucf25\ucf26\ucf27\ucf28\ucf29\ucf2a\ucf2b\ucf2c\ucf2d\ucf2e\ucf2f\ucf30\ucf31\ucf32\ucf33\ucf34\ucf35\ucf36\ucf37\ucf38\ucf39\ucf3a\ucf3b\ucf3c\ucf3d\ucf3e\ucf3f\ucf40\ucf41\ucf42\ucf43\ucf44\ucf45\ucf46\ucf47\ucf48\ucf49\ucf4a\ucf4b\ucf4c\ucf4d\ucf4e\ucf4f\ucf50\ucf51\ucf52\ucf53\ucf54\ucf55\ucf56\ucf57\ucf58\ucf59\ucf5a\ucf5b\ucf5c\ucf5d\ucf5e\ucf5f\ucf60\ucf61\ucf62\ucf63\ucf64\ucf65\ucf66\ucf67\ucf68\ucf69\ucf6a\ucf6b\ucf6c\ucf6d\ucf6e\ucf6f\ucf70\ucf71\ucf72\ucf73\ucf74\ucf75\ucf76\ucf77\ucf78\ucf79\ucf7a\ucf7b\ucf7c\ucf7d\ucf7e\ucf7f\ucf80\ucf81\ucf82\ucf83\ucf84\ucf85\ucf86\ucf87\ucf88\ucf89\ucf8a\ucf8b\ucf8c\ucf8d\ucf8e\ucf8f\ucf90\ucf91\ucf92\ucf93\ucf94\ucf95\ucf96\ucf97\ucf98\ucf99\ucf9a\ucf9b\ucf9c\ucf9d\ucf9e\ucf9f\ucfa0\ucfa1\ucfa2\ucfa3\ucfa4\ucfa5\ucfa6\ucfa7\ucfa8\ucfa9\ucfaa\ucfab\ucfac\ucfad\ucfae\ucfaf\ucfb0\ucfb1\ucfb2\ucfb3\ucfb4\ucfb5\ucfb6\ucfb7\ucfb8\ucfb9\ucfba\ucfbb\ucfbc\ucfbd\ucfbe\ucfbf\ucfc0\ucfc1\ucfc2\ucfc3\ucfc4\ucfc5\ucfc6\ucfc7\ucfc8\ucfc9\ucfca\ucfcb\ucfcc\ucfcd\ucfce\ucfcf\ucfd0\ucfd1\ucfd2\ucfd3\ucfd4\ucfd5\ucfd6\ucfd7\ucfd8\ucfd9\ucfda\ucfdb\ucfdc\ucfdd\ucfde\ucfdf\ucfe0\ucfe1\ucfe2\ucfe3\ucfe4\ucfe5\ucfe6\ucfe7\ucfe8\ucfe9\ucfea\ucfeb\ucfec\ucfed\ucfee\ucfef\ucff0\ucff1\ucff2\ucff3\ucff4\ucff5\ucff6\ucff7\ucff8\ucff9\ucffa\ucffb\ucffc\ucffd\ucffe\ucfff\ud000\ud001\ud002\ud003\ud004\ud005\ud006\ud007\ud008\ud009\ud00a\ud00b\ud00c\ud00d\ud00e\ud00f\ud010\ud011\ud012\ud013\ud014\ud015\ud016\ud017\ud018\ud019\ud01a\ud01b\ud01c\ud01d\ud01e\ud01f\ud020\ud021\ud022\ud023\ud024\ud025\ud026\ud027\ud028\ud029\ud02a\ud02b\ud02c\ud02d\ud02e\ud02f\ud030\ud031\ud032\ud033\ud034\ud035\ud036\ud037\ud038\ud039\ud03a\ud03b\ud03c\ud03d\ud03e\ud03f\ud040\ud041\ud042\ud043\ud044\ud045\ud046\ud047\ud048\ud049\ud04a\ud04b\ud04c\ud04d\ud04e\ud04f\ud050\ud051\ud052\ud053\ud054\ud055\ud056\ud057\ud058\ud059\ud05a\ud05b\ud05c\ud05d\ud05e\ud05f\ud060\ud061\ud062\ud063\ud064\ud065\ud066\ud067\ud068\ud069\ud06a\ud06b\ud06c\ud06d\ud06e\ud06f\ud070\ud071\ud072\ud073\ud074\ud075\ud076\ud077\ud078\ud079\ud07a\ud07b\ud07c\ud07d\ud07e\ud07f\ud080\ud081\ud082\ud083\ud084\ud085\ud086\ud087\ud088\ud089\ud08a\ud08b\ud08c\ud08d\ud08e\ud08f\ud090\ud091\ud092\ud093\ud094\ud095\ud096\ud097\ud098\ud099\ud09a\ud09b\ud09c\ud09d\ud09e\ud09f\ud0a0\ud0a1\ud0a2\ud0a3\ud0a4\ud0a5\ud0a6\ud0a7\ud0a8\ud0a9\ud0aa\ud0ab\ud0ac\ud0ad\ud0ae\ud0af\ud0b0\ud0b1\ud0b2\ud0b3\ud0b4\ud0b5\ud0b6\ud0b7\ud0b8\ud0b9\ud0ba\ud0bb\ud0bc\ud0bd\ud0be\ud0bf\ud0c0\ud0c1\ud0c2\ud0c3\ud0c4\ud0c5\ud0c6\ud0c7\ud0c8\ud0c9\ud0ca\ud0cb\ud0cc\ud0cd\ud0ce\ud0cf\ud0d0\ud0d1\ud0d2\ud0d3\ud0d4\ud0d5\ud0d6\ud0d7\ud0d8\ud0d9\ud0da\ud0db\ud0dc\ud0dd\ud0de\ud0df\ud0e0\ud0e1\ud0e2\ud0e3\ud0e4\ud0e5\ud0e6\ud0e7\ud0e8\ud0e9\ud0ea\ud0eb\ud0ec\ud0ed\ud0ee\ud0ef\ud0f0\ud0f1\ud0f2\ud0f3\ud0f4\ud0f5\ud0f6\ud0f7\ud0f8\ud0f9\ud0fa\ud0fb\ud0fc\ud0fd\ud0fe\ud0ff\ud100\ud101\ud102\ud103\ud104\ud105\ud106\ud107\ud108\ud109\ud10a\ud10b\ud10c\ud10d\ud10e\ud10f\ud110\ud111\ud112\ud113\ud114\ud115\ud116\ud117\ud118\ud119\ud11a\ud11b\ud11c\ud11d\ud11e\ud11f\ud120\ud121\ud122\ud123\ud124\ud125\ud126\ud127\ud128\ud129\ud12a\ud12b\ud12c\ud12d\ud12e\ud12f\ud130\ud131\ud132\ud133\ud134\ud135\ud136\ud137\ud138\ud139\ud13a\ud13b\ud13c\ud13d\ud13e\ud13f\ud140\ud141\ud142\ud143\ud144\ud145\ud146\ud147\ud148\ud149\ud14a\ud14b\ud14c\ud14d\ud14e\ud14f\ud150\ud151\ud152\ud153\ud154\ud155\ud156\ud157\ud158\ud159\ud15a\ud15b\ud15c\ud15d\ud15e\ud15f\ud160\ud161\ud162\ud163\ud164\ud165\ud166\ud167\ud168\ud169\ud16a\ud16b\ud16c\ud16d\ud16e\ud16f\ud170\ud171\ud172\ud173\ud174\ud175\ud176\ud177\ud178\ud179\ud17a\ud17b\ud17c\ud17d\ud17e\ud17f\ud180\ud181\ud182\ud183\ud184\ud185\ud186\ud187\ud188\ud189\ud18a\ud18b\ud18c\ud18d\ud18e\ud18f\ud190\ud191\ud192\ud193\ud194\ud195\ud196\ud197\ud198\ud199\ud19a\ud19b\ud19c\ud19d\ud19e\ud19f\ud1a0\ud1a1\ud1a2\ud1a3\ud1a4\ud1a5\ud1a6\ud1a7\ud1a8\ud1a9\ud1aa\ud1ab\ud1ac\ud1ad\ud1ae\ud1af\ud1b0\ud1b1\ud1b2\ud1b3\ud1b4\ud1b5\ud1b6\ud1b7\ud1b8\ud1b9\ud1ba\ud1bb\ud1bc\ud1bd\ud1be\ud1bf\ud1c0\ud1c1\ud1c2\ud1c3\ud1c4\ud1c5\ud1c6\ud1c7\ud1c8\ud1c9\ud1ca\ud1cb\ud1cc\ud1cd\ud1ce\ud1cf\ud1d0\ud1d1\ud1d2\ud1d3\ud1d4\ud1d5\ud1d6\ud1d7\ud1d8\ud1d9\ud1da\ud1db\ud1dc\ud1dd\ud1de\ud1df\ud1e0\ud1e1\ud1e2\ud1e3\ud1e4\ud1e5\ud1e6\ud1e7\ud1e8\ud1e9\ud1ea\ud1eb\ud1ec\ud1ed\ud1ee\ud1ef\ud1f0\ud1f1\ud1f2\ud1f3\ud1f4\ud1f5\ud1f6\ud1f7\ud1f8\ud1f9\ud1fa\ud1fb\ud1fc\ud1fd\ud1fe\ud1ff\ud200\ud201\ud202\ud203\ud204\ud205\ud206\ud207\ud208\ud209\ud20a\ud20b\ud20c\ud20d\ud20e\ud20f\ud210\ud211\ud212\ud213\ud214\ud215\ud216\ud217\ud218\ud219\ud21a\ud21b\ud21c\ud21d\ud21e\ud21f\ud220\ud221\ud222\ud223\ud224\ud225\ud226\ud227\ud228\ud229\ud22a\ud22b\ud22c\ud22d\ud22e\ud22f\ud230\ud231\ud232\ud233\ud234\ud235\ud236\ud237\ud238\ud239\ud23a\ud23b\ud23c\ud23d\ud23e\ud23f\ud240\ud241\ud242\ud243\ud244\ud245\ud246\ud247\ud248\ud249\ud24a\ud24b\ud24c\ud24d\ud24e\ud24f\ud250\ud251\ud252\ud253\ud254\ud255\ud256\ud257\ud258\ud259\ud25a\ud25b\ud25c\ud25d\ud25e\ud25f\ud260\ud261\ud262\ud263\ud264\ud265\ud266\ud267\ud268\ud269\ud26a\ud26b\ud26c\ud26d\ud26e\ud26f\ud270\ud271\ud272\ud273\ud274\ud275\ud276\ud277\ud278\ud279\ud27a\ud27b\ud27c\ud27d\ud27e\ud27f\ud280\ud281\ud282\ud283\ud284\ud285\ud286\ud287\ud288\ud289\ud28a\ud28b\ud28c\ud28d\ud28e\ud28f\ud290\ud291\ud292\ud293\ud294\ud295\ud296\ud297\ud298\ud299\ud29a\ud29b\ud29c\ud29d\ud29e\ud29f\ud2a0\ud2a1\ud2a2\ud2a3\ud2a4\ud2a5\ud2a6\ud2a7\ud2a8\ud2a9\ud2aa\ud2ab\ud2ac\ud2ad\ud2ae\ud2af\ud2b0\ud2b1\ud2b2\ud2b3\ud2b4\ud2b5\ud2b6\ud2b7\ud2b8\ud2b9\ud2ba\ud2bb\ud2bc\ud2bd\ud2be\ud2bf\ud2c0\ud2c1\ud2c2\ud2c3\ud2c4\ud2c5\ud2c6\ud2c7\ud2c8\ud2c9\ud2ca\ud2cb\ud2cc\ud2cd\ud2ce\ud2cf\ud2d0\ud2d1\ud2d2\ud2d3\ud2d4\ud2d5\ud2d6\ud2d7\ud2d8\ud2d9\ud2da\ud2db\ud2dc\ud2dd\ud2de\ud2df\ud2e0\ud2e1\ud2e2\ud2e3\ud2e4\ud2e5\ud2e6\ud2e7\ud2e8\ud2e9\ud2ea\ud2eb\ud2ec\ud2ed\ud2ee\ud2ef\ud2f0\ud2f1\ud2f2\ud2f3\ud2f4\ud2f5\ud2f6\ud2f7\ud2f8\ud2f9\ud2fa\ud2fb\ud2fc\ud2fd\ud2fe\ud2ff\ud300\ud301\ud302\ud303\ud304\ud305\ud306\ud307\ud308\ud309\ud30a\ud30b\ud30c\ud30d\ud30e\ud30f\ud310\ud311\ud312\ud313\ud314\ud315\ud316\ud317\ud318\ud319\ud31a\ud31b\ud31c\ud31d\ud31e\ud31f\ud320\ud321\ud322\ud323\ud324\ud325\ud326\ud327\ud328\ud329\ud32a\ud32b\ud32c\ud32d\ud32e\ud32f\ud330\ud331\ud332\ud333\ud334\ud335\ud336\ud337\ud338\ud339\ud33a\ud33b\ud33c\ud33d\ud33e\ud33f\ud340\ud341\ud342\ud343\ud344\ud345\ud346\ud347\ud348\ud349\ud34a\ud34b\ud34c\ud34d\ud34e\ud34f\ud350\ud351\ud352\ud353\ud354\ud355\ud356\ud357\ud358\ud359\ud35a\ud35b\ud35c\ud35d\ud35e\ud35f\ud360\ud361\ud362\ud363\ud364\ud365\ud366\ud367\ud368\ud369\ud36a\ud36b\ud36c\ud36d\ud36e\ud36f\ud370\ud371\ud372\ud373\ud374\ud375\ud376\ud377\ud378\ud379\ud37a\ud37b\ud37c\ud37d\ud37e\ud37f\ud380\ud381\ud382\ud383\ud384\ud385\ud386\ud387\ud388\ud389\ud38a\ud38b\ud38c\ud38d\ud38e\ud38f\ud390\ud391\ud392\ud393\ud394\ud395\ud396\ud397\ud398\ud399\ud39a\ud39b\ud39c\ud39d\ud39e\ud39f\ud3a0\ud3a1\ud3a2\ud3a3\ud3a4\ud3a5\ud3a6\ud3a7\ud3a8\ud3a9\ud3aa\ud3ab\ud3ac\ud3ad\ud3ae\ud3af\ud3b0\ud3b1\ud3b2\ud3b3\ud3b4\ud3b5\ud3b6\ud3b7\ud3b8\ud3b9\ud3ba\ud3bb\ud3bc\ud3bd\ud3be\ud3bf\ud3c0\ud3c1\ud3c2\ud3c3\ud3c4\ud3c5\ud3c6\ud3c7\ud3c8\ud3c9\ud3ca\ud3cb\ud3cc\ud3cd\ud3ce\ud3cf\ud3d0\ud3d1\ud3d2\ud3d3\ud3d4\ud3d5\ud3d6\ud3d7\ud3d8\ud3d9\ud3da\ud3db\ud3dc\ud3dd\ud3de\ud3df\ud3e0\ud3e1\ud3e2\ud3e3\ud3e4\ud3e5\ud3e6\ud3e7\ud3e8\ud3e9\ud3ea\ud3eb\ud3ec\ud3ed\ud3ee\ud3ef\ud3f0\ud3f1\ud3f2\ud3f3\ud3f4\ud3f5\ud3f6\ud3f7\ud3f8\ud3f9\ud3fa\ud3fb\ud3fc\ud3fd\ud3fe\ud3ff\ud400\ud401\ud402\ud403\ud404\ud405\ud406\ud407\ud408\ud409\ud40a\ud40b\ud40c\ud40d\ud40e\ud40f\ud410\ud411\ud412\ud413\ud414\ud415\ud416\ud417\ud418\ud419\ud41a\ud41b\ud41c\ud41d\ud41e\ud41f\ud420\ud421\ud422\ud423\ud424\ud425\ud426\ud427\ud428\ud429\ud42a\ud42b\ud42c\ud42d\ud42e\ud42f\ud430\ud431\ud432\ud433\ud434\ud435\ud436\ud437\ud438\ud439\ud43a\ud43b\ud43c\ud43d\ud43e\ud43f\ud440\ud441\ud442\ud443\ud444\ud445\ud446\ud447\ud448\ud449\ud44a\ud44b\ud44c\ud44d\ud44e\ud44f\ud450\ud451\ud452\ud453\ud454\ud455\ud456\ud457\ud458\ud459\ud45a\ud45b\ud45c\ud45d\ud45e\ud45f\ud460\ud461\ud462\ud463\ud464\ud465\ud466\ud467\ud468\ud469\ud46a\ud46b\ud46c\ud46d\ud46e\ud46f\ud470\ud471\ud472\ud473\ud474\ud475\ud476\ud477\ud478\ud479\ud47a\ud47b\ud47c\ud47d\ud47e\ud47f\ud480\ud481\ud482\ud483\ud484\ud485\ud486\ud487\ud488\ud489\ud48a\ud48b\ud48c\ud48d\ud48e\ud48f\ud490\ud491\ud492\ud493\ud494\ud495\ud496\ud497\ud498\ud499\ud49a\ud49b\ud49c\ud49d\ud49e\ud49f\ud4a0\ud4a1\ud4a2\ud4a3\ud4a4\ud4a5\ud4a6\ud4a7\ud4a8\ud4a9\ud4aa\ud4ab\ud4ac\ud4ad\ud4ae\ud4af\ud4b0\ud4b1\ud4b2\ud4b3\ud4b4\ud4b5\ud4b6\ud4b7\ud4b8\ud4b9\ud4ba\ud4bb\ud4bc\ud4bd\ud4be\ud4bf\ud4c0\ud4c1\ud4c2\ud4c3\ud4c4\ud4c5\ud4c6\ud4c7\ud4c8\ud4c9\ud4ca\ud4cb\ud4cc\ud4cd\ud4ce\ud4cf\ud4d0\ud4d1\ud4d2\ud4d3\ud4d4\ud4d5\ud4d6\ud4d7\ud4d8\ud4d9\ud4da\ud4db\ud4dc\ud4dd\ud4de\ud4df\ud4e0\ud4e1\ud4e2\ud4e3\ud4e4\ud4e5\ud4e6\ud4e7\ud4e8\ud4e9\ud4ea\ud4eb\ud4ec\ud4ed\ud4ee\ud4ef\ud4f0\ud4f1\ud4f2\ud4f3\ud4f4\ud4f5\ud4f6\ud4f7\ud4f8\ud4f9\ud4fa\ud4fb\ud4fc\ud4fd\ud4fe\ud4ff\ud500\ud501\ud502\ud503\ud504\ud505\ud506\ud507\ud508\ud509\ud50a\ud50b\ud50c\ud50d\ud50e\ud50f\ud510\ud511\ud512\ud513\ud514\ud515\ud516\ud517\ud518\ud519\ud51a\ud51b\ud51c\ud51d\ud51e\ud51f\ud520\ud521\ud522\ud523\ud524\ud525\ud526\ud527\ud528\ud529\ud52a\ud52b\ud52c\ud52d\ud52e\ud52f\ud530\ud531\ud532\ud533\ud534\ud535\ud536\ud537\ud538\ud539\ud53a\ud53b\ud53c\ud53d\ud53e\ud53f\ud540\ud541\ud542\ud543\ud544\ud545\ud546\ud547\ud548\ud549\ud54a\ud54b\ud54c\ud54d\ud54e\ud54f\ud550\ud551\ud552\ud553\ud554\ud555\ud556\ud557\ud558\ud559\ud55a\ud55b\ud55c\ud55d\ud55e\ud55f\ud560\ud561\ud562\ud563\ud564\ud565\ud566\ud567\ud568\ud569\ud56a\ud56b\ud56c\ud56d\ud56e\ud56f\ud570\ud571\ud572\ud573\ud574\ud575\ud576\ud577\ud578\ud579\ud57a\ud57b\ud57c\ud57d\ud57e\ud57f\ud580\ud581\ud582\ud583\ud584\ud585\ud586\ud587\ud588\ud589\ud58a\ud58b\ud58c\ud58d\ud58e\ud58f\ud590\ud591\ud592\ud593\ud594\ud595\ud596\ud597\ud598\ud599\ud59a\ud59b\ud59c\ud59d\ud59e\ud59f\ud5a0\ud5a1\ud5a2\ud5a3\ud5a4\ud5a5\ud5a6\ud5a7\ud5a8\ud5a9\ud5aa\ud5ab\ud5ac\ud5ad\ud5ae\ud5af\ud5b0\ud5b1\ud5b2\ud5b3\ud5b4\ud5b5\ud5b6\ud5b7\ud5b8\ud5b9\ud5ba\ud5bb\ud5bc\ud5bd\ud5be\ud5bf\ud5c0\ud5c1\ud5c2\ud5c3\ud5c4\ud5c5\ud5c6\ud5c7\ud5c8\ud5c9\ud5ca\ud5cb\ud5cc\ud5cd\ud5ce\ud5cf\ud5d0\ud5d1\ud5d2\ud5d3\ud5d4\ud5d5\ud5d6\ud5d7\ud5d8\ud5d9\ud5da\ud5db\ud5dc\ud5dd\ud5de\ud5df\ud5e0\ud5e1\ud5e2\ud5e3\ud5e4\ud5e5\ud5e6\ud5e7\ud5e8\ud5e9\ud5ea\ud5eb\ud5ec\ud5ed\ud5ee\ud5ef\ud5f0\ud5f1\ud5f2\ud5f3\ud5f4\ud5f5\ud5f6\ud5f7\ud5f8\ud5f9\ud5fa\ud5fb\ud5fc\ud5fd\ud5fe\ud5ff\ud600\ud601\ud602\ud603\ud604\ud605\ud606\ud607\ud608\ud609\ud60a\ud60b\ud60c\ud60d\ud60e\ud60f\ud610\ud611\ud612\ud613\ud614\ud615\ud616\ud617\ud618\ud619\ud61a\ud61b\ud61c\ud61d\ud61e\ud61f\ud620\ud621\ud622\ud623\ud624\ud625\ud626\ud627\ud628\ud629\ud62a\ud62b\ud62c\ud62d\ud62e\ud62f\ud630\ud631\ud632\ud633\ud634\ud635\ud636\ud637\ud638\ud639\ud63a\ud63b\ud63c\ud63d\ud63e\ud63f\ud640\ud641\ud642\ud643\ud644\ud645\ud646\ud647\ud648\ud649\ud64a\ud64b\ud64c\ud64d\ud64e\ud64f\ud650\ud651\ud652\ud653\ud654\ud655\ud656\ud657\ud658\ud659\ud65a\ud65b\ud65c\ud65d\ud65e\ud65f\ud660\ud661\ud662\ud663\ud664\ud665\ud666\ud667\ud668\ud669\ud66a\ud66b\ud66c\ud66d\ud66e\ud66f\ud670\ud671\ud672\ud673\ud674\ud675\ud676\ud677\ud678\ud679\ud67a\ud67b\ud67c\ud67d\ud67e\ud67f\ud680\ud681\ud682\ud683\ud684\ud685\ud686\ud687\ud688\ud689\ud68a\ud68b\ud68c\ud68d\ud68e\ud68f\ud690\ud691\ud692\ud693\ud694\ud695\ud696\ud697\ud698\ud699\ud69a\ud69b\ud69c\ud69d\ud69e\ud69f\ud6a0\ud6a1\ud6a2\ud6a3\ud6a4\ud6a5\ud6a6\ud6a7\ud6a8\ud6a9\ud6aa\ud6ab\ud6ac\ud6ad\ud6ae\ud6af\ud6b0\ud6b1\ud6b2\ud6b3\ud6b4\ud6b5\ud6b6\ud6b7\ud6b8\ud6b9\ud6ba\ud6bb\ud6bc\ud6bd\ud6be\ud6bf\ud6c0\ud6c1\ud6c2\ud6c3\ud6c4\ud6c5\ud6c6\ud6c7\ud6c8\ud6c9\ud6ca\ud6cb\ud6cc\ud6cd\ud6ce\ud6cf\ud6d0\ud6d1\ud6d2\ud6d3\ud6d4\ud6d5\ud6d6\ud6d7\ud6d8\ud6d9\ud6da\ud6db\ud6dc\ud6dd\ud6de\ud6df\ud6e0\ud6e1\ud6e2\ud6e3\ud6e4\ud6e5\ud6e6\ud6e7\ud6e8\ud6e9\ud6ea\ud6eb\ud6ec\ud6ed\ud6ee\ud6ef\ud6f0\ud6f1\ud6f2\ud6f3\ud6f4\ud6f5\ud6f6\ud6f7\ud6f8\ud6f9\ud6fa\ud6fb\ud6fc\ud6fd\ud6fe\ud6ff\ud700\ud701\ud702\ud703\ud704\ud705\ud706\ud707\ud708\ud709\ud70a\ud70b\ud70c\ud70d\ud70e\ud70f\ud710\ud711\ud712\ud713\ud714\ud715\ud716\ud717\ud718\ud719\ud71a\ud71b\ud71c\ud71d\ud71e\ud71f\ud720\ud721\ud722\ud723\ud724\ud725\ud726\ud727\ud728\ud729\ud72a\ud72b\ud72c\ud72d\ud72e\ud72f\ud730\ud731\ud732\ud733\ud734\ud735\ud736\ud737\ud738\ud739\ud73a\ud73b\ud73c\ud73d\ud73e\ud73f\ud740\ud741\ud742\ud743\ud744\ud745\ud746\ud747\ud748\ud749\ud74a\ud74b\ud74c\ud74d\ud74e\ud74f\ud750\ud751\ud752\ud753\ud754\ud755\ud756\ud757\ud758\ud759\ud75a\ud75b\ud75c\ud75d\ud75e\ud75f\ud760\ud761\ud762\ud763\ud764\ud765\ud766\ud767\ud768\ud769\ud76a\ud76b\ud76c\ud76d\ud76e\ud76f\ud770\ud771\ud772\ud773\ud774\ud775\ud776\ud777\ud778\ud779\ud77a\ud77b\ud77c\ud77d\ud77e\ud77f\ud780\ud781\ud782\ud783\ud784\ud785\ud786\ud787\ud788\ud789\ud78a\ud78b\ud78c\ud78d\ud78e\ud78f\ud790\ud791\ud792\ud793\ud794\ud795\ud796\ud797\ud798\ud799\ud79a\ud79b\ud79c\ud79d\ud79e\ud79f\ud7a0\ud7a1\ud7a2\ud7a3\ud7b0\ud7b1\ud7b2\ud7b3\ud7b4\ud7b5\ud7b6\ud7b7\ud7b8\ud7b9\ud7ba\ud7bb\ud7bc\ud7bd\ud7be\ud7bf\ud7c0\ud7c1\ud7c2\ud7c3\ud7c4\ud7c5\ud7c6\ud7cb\ud7cc\ud7cd\ud7ce\ud7cf\ud7d0\ud7d1\ud7d2\ud7d3\ud7d4\ud7d5\ud7d6\ud7d7\ud7d8\ud7d9\ud7da\ud7db\ud7dc\ud7dd\ud7de\ud7df\ud7e0\ud7e1\ud7e2\ud7e3\ud7e4\ud7e5\ud7e6\ud7e7\ud7e8\ud7e9\ud7ea\ud7eb\ud7ec\ud7ed\ud7ee\ud7ef\ud7f0\ud7f1\ud7f2\ud7f3\ud7f4\ud7f5\ud7f6\ud7f7\ud7f8\ud7f9\ud7fa\ud7fb\uf900\uf901\uf902\uf903\uf904\uf905\uf906\uf907\uf908\uf909\uf90a\uf90b\uf90c\uf90d\uf90e\uf90f\uf910\uf911\uf912\uf913\uf914\uf915\uf916\uf917\uf918\uf919\uf91a\uf91b\uf91c\uf91d\uf91e\uf91f\uf920\uf921\uf922\uf923\uf924\uf925\uf926\uf927\uf928\uf929\uf92a\uf92b\uf92c\uf92d\uf92e\uf92f\uf930\uf931\uf932\uf933\uf934\uf935\uf936\uf937\uf938\uf939\uf93a\uf93b\uf93c\uf93d\uf93e\uf93f\uf940\uf941\uf942\uf943\uf944\uf945\uf946\uf947\uf948\uf949\uf94a\uf94b\uf94c\uf94d\uf94e\uf94f\uf950\uf951\uf952\uf953\uf954\uf955\uf956\uf957\uf958\uf959\uf95a\uf95b\uf95c\uf95d\uf95e\uf95f\uf960\uf961\uf962\uf963\uf964\uf965\uf966\uf967\uf968\uf969\uf96a\uf96b\uf96c\uf96d\uf96e\uf96f\uf970\uf971\uf972\uf973\uf974\uf975\uf976\uf977\uf978\uf979\uf97a\uf97b\uf97c\uf97d\uf97e\uf97f\uf980\uf981\uf982\uf983\uf984\uf985\uf986\uf987\uf988\uf989\uf98a\uf98b\uf98c\uf98d\uf98e\uf98f\uf990\uf991\uf992\uf993\uf994\uf995\uf996\uf997\uf998\uf999\uf99a\uf99b\uf99c\uf99d\uf99e\uf99f\uf9a0\uf9a1\uf9a2\uf9a3\uf9a4\uf9a5\uf9a6\uf9a7\uf9a8\uf9a9\uf9aa\uf9ab\uf9ac\uf9ad\uf9ae\uf9af\uf9b0\uf9b1\uf9b2\uf9b3\uf9b4\uf9b5\uf9b6\uf9b7\uf9b8\uf9b9\uf9ba\uf9bb\uf9bc\uf9bd\uf9be\uf9bf\uf9c0\uf9c1\uf9c2\uf9c3\uf9c4\uf9c5\uf9c6\uf9c7\uf9c8\uf9c9\uf9ca\uf9cb\uf9cc\uf9cd\uf9ce\uf9cf\uf9d0\uf9d1\uf9d2\uf9d3\uf9d4\uf9d5\uf9d6\uf9d7\uf9d8\uf9d9\uf9da\uf9db\uf9dc\uf9dd\uf9de\uf9df\uf9e0\uf9e1\uf9e2\uf9e3\uf9e4\uf9e5\uf9e6\uf9e7\uf9e8\uf9e9\uf9ea\uf9eb\uf9ec\uf9ed\uf9ee\uf9ef\uf9f0\uf9f1\uf9f2\uf9f3\uf9f4\uf9f5\uf9f6\uf9f7\uf9f8\uf9f9\uf9fa\uf9fb\uf9fc\uf9fd\uf9fe\uf9ff\ufa00\ufa01\ufa02\ufa03\ufa04\ufa05\ufa06\ufa07\ufa08\ufa09\ufa0a\ufa0b\ufa0c\ufa0d\ufa0e\ufa0f\ufa10\ufa11\ufa12\ufa13\ufa14\ufa15\ufa16\ufa17\ufa18\ufa19\ufa1a\ufa1b\ufa1c\ufa1d\ufa1e\ufa1f\ufa20\ufa21\ufa22\ufa23\ufa24\ufa25\ufa26\ufa27\ufa28\ufa29\ufa2a\ufa2b\ufa2c\ufa2d\ufa2e\ufa2f\ufa30\ufa31\ufa32\ufa33\ufa34\ufa35\ufa36\ufa37\ufa38\ufa39\ufa3a\ufa3b\ufa3c\ufa3d\ufa3e\ufa3f\ufa40\ufa41\ufa42\ufa43\ufa44\ufa45\ufa46\ufa47\ufa48\ufa49\ufa4a\ufa4b\ufa4c\ufa4d\ufa4e\ufa4f\ufa50\ufa51\ufa52\ufa53\ufa54\ufa55\ufa56\ufa57\ufa58\ufa59\ufa5a\ufa5b\ufa5c\ufa5d\ufa5e\ufa5f\ufa60\ufa61\ufa62\ufa63\ufa64\ufa65\ufa66\ufa67\ufa68\ufa69\ufa6a\ufa6b\ufa6d\ufa70\ufa71\ufa72\ufa73\ufa74\ufa75\ufa76\ufa77\ufa78\ufa79\ufa7a\ufa7b\ufa7c\ufa7d\ufa7e\ufa7f\ufa80\ufa81\ufa82\ufa83\ufa84\ufa85\ufa86\ufa87\ufa88\ufa89\ufa8a\ufa8b\ufa8c\ufa8d\ufa8e\ufa8f\ufa90\ufa91\ufa92\ufa93\ufa94\ufa95\ufa96\ufa97\ufa98\ufa99\ufa9a\ufa9b\ufa9c\ufa9d\ufa9e\ufa9f\ufaa0\ufaa1\ufaa2\ufaa3\ufaa4\ufaa5\ufaa6\ufaa7\ufaa8\ufaa9\ufaaa\ufaab\ufaac\ufaad\ufaae\ufaaf\ufab0\ufab1\ufab2\ufab3\ufab4\ufab5\ufab6\ufab7\ufab8\ufab9\ufaba\ufabb\ufabc\ufabd\ufabe\ufabf\ufac0\ufac1\ufac2\ufac3\ufac4\ufac5\ufac6\ufac7\ufac8\ufac9\ufaca\ufacb\ufacc\ufacd\uface\ufad2\ufad3\ufad4\ufad8\ufad9\ufb1e\ufb20\ufb21\ufb22\ufb23\ufb24\ufb25\ufb26\ufb27\ufb28\ufb50\ufb51\ufb52\ufb53\ufb54\ufb55\ufb56\ufb57\ufb58\ufb59\ufb5a\ufb5b\ufb5c\ufb5d\ufb5e\ufb5f\ufb60\ufb61\ufb62\ufb63\ufb64\ufb65\ufb66\ufb67\ufb68\ufb69\ufb6a\ufb6b\ufb6c\ufb6d\ufb6e\ufb6f\ufb70\ufb71\ufb72\ufb73\ufb74\ufb75\ufb76\ufb77\ufb78\ufb79\ufb7a\ufb7b\ufb7c\ufb7d\ufb7e\ufb7f\ufb80\ufb81\ufb82\ufb83\ufb84\ufb85\ufb86\ufb87\ufb88\ufb89\ufb8a\ufb8b\ufb8c\ufb8d\ufb8e\ufb8f\ufb90\ufb91\ufb92\ufb93\ufb94\ufb95\ufb96\ufb97\ufb98\ufb99\ufb9a\ufb9b\ufb9c\ufb9d\ufb9e\ufb9f\ufba0\ufba1\ufba2\ufba3\ufba4\ufba5\ufba6\ufba7\ufba8\ufba9\ufbaa\ufbab\ufbac\ufbad\ufbae\ufbaf\ufbb0\ufbb1\ufbd3\ufbd4\ufbd5\ufbd6\ufbd7\ufbd8\ufbd9\ufbda\ufbdb\ufbdc\ufbde\ufbdf\ufbe0\ufbe1\ufbe2\ufbe3\ufbe4\ufbe5\ufbe6\ufbe7\ufbe8\ufbe9\ufbfc\ufbfd\ufbfe\ufbff\ufe00\ufe01\ufe02\ufe03\ufe04\ufe05\ufe06\ufe07\ufe08\ufe09\ufe0a\ufe0b\ufe0c\ufe0d\ufe0e\ufe0f\ufe20\ufe21\ufe22\ufe23\ufe24\ufe25\ufe26\ufe27\ufe28\ufe29\ufe2a\ufe2b\ufe2c\ufe2d\ufe2e\ufe2f\ufe33\ufe34\ufe4d\ufe4e\ufe4f\ufe73\ufe80\ufe81\ufe82\ufe83\ufe84\ufe85\ufe86\ufe87\ufe88\ufe89\ufe8a\ufe8b\ufe8c\ufe8d\ufe8e\ufe8f\ufe90\ufe91\ufe92\ufe93\ufe94\ufe95\ufe96\ufe97\ufe98\ufe99\ufe9a\ufe9b\ufe9c\ufe9d\ufe9e\ufe9f\ufea0\ufea1\ufea2\ufea3\ufea4\ufea5\ufea6\ufea7\ufea8\ufea9\ufeaa\ufeab\ufeac\ufead\ufeae\ufeaf\ufeb0\ufeb1\ufeb2\ufeb3\ufeb4\ufeb5\ufeb6\ufeb7\ufeb8\ufeb9\ufeba\ufebb\ufebc\ufebd\ufebe\ufebf\ufec0\ufec1\ufec2\ufec3\ufec4\ufec5\ufec6\ufec7\ufec8\ufec9\ufeca\ufecb\ufecc\ufecd\ufece\ufecf\ufed0\ufed1\ufed2\ufed3\ufed4\ufed5\ufed6\ufed7\ufed8\ufed9\ufeda\ufedb\ufedc\ufedd\ufede\ufedf\ufee0\ufee1\ufee2\ufee3\ufee4\ufee5\ufee6\ufee7\ufee8\ufee9\ufeea\ufeeb\ufeec\ufeed\ufeee\ufeef\ufef0\ufef1\ufef2\ufef3\ufef4\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a\uff3f\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a\uff66\uff67\uff68\uff69\uff6a\uff6b\uff6c\uff6d\uff6e\uff6f\uff70\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\uff7b\uff7c\uff7d\uff7e\uff7f\uff80\uff81\uff82\uff83\uff84\uff85\uff86\uff87\uff88\uff89\uff8a\uff8b\uff8c\uff8d\uff8e\uff8f\uff90\uff91\uff92\uff93\uff94\uff95\uff96\uff97\uff98\uff99\uff9a\uff9b\uff9c\uff9d\uff9e\uff9f\uffa0\uffa1\uffa2\uffa3\uffa4\uffa5\uffa6\uffa7\uffa8\uffa9\uffaa\uffab\uffac\uffad\uffae\uffaf\uffb0\uffb1\uffb2\uffb3\uffb4\uffb5\uffb6\uffb7\uffb8\uffb9\uffba\uffbb\uffbc\uffbd\uffbe\uffc2\uffc3\uffc4\uffc5\uffc6\uffc7\uffca\uffcb\uffcc\uffcd\uffce\uffcf\uffd2\uffd3\uffd4\uffd5\uffd6\uffd7\uffda\uffdb\uffdc' +# Generated code end + +if __name__ == '__main__': + import sys + import unicodedata + + if sys.version_info[0] < 3: + raise RuntimeError('This needs to run on python 3') + + categories = {} + + f = open(__file__.rstrip('co')) + try: + content = f.read() + finally: + f.close() + + start = '# Generated code start\n' + header = content[:content.find(start) + len(start)] + '\n' + footer = content[content.find("# Generated code end\n"):] + + for code in range(65535): + c = chr(code) + cat = unicodedata.category(c) + categories.setdefault(cat, []).append(c) + + # from 8.0.0 PropList (Other_ID_Start) + underscore + id_start = set(u'_\u2118\u212E\u309B\u309C') + for cat in 'Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl': + id_start.update(categories[cat]) + + # from 8.0.0 PropList (Other_ID_Continue) + id_continue = set(id_start) + id_continue.update(u'\u00B7\u0387\u1369\u1370\u1371\u19DA') + for cat in 'Mn', 'Mc', 'Nd', 'Pc': + id_continue.update(categories[cat]) + + xid_start = u''.join(sorted(c for c in id_continue if + unicodedata.normalize('NFKC', c) + in id_start)) + xid_continue = u''.join(sorted(c for c in id_continue if + unicodedata.normalize('NFKC', c) in + id_continue)) + + f = open(__file__, 'w') + f.write(header) + + f.write('xid_start = %s\nxid_continue = %s\n' % (ascii(xid_start), + ascii(xid_continue))) + + f.write(footer) + f.close() diff --git a/lib/spack/external/jinja2/asyncfilters.py b/lib/spack/external/jinja2/asyncfilters.py new file mode 100644 index 00000000000..5c1f46d7fa7 --- /dev/null +++ b/lib/spack/external/jinja2/asyncfilters.py @@ -0,0 +1,146 @@ +from functools import wraps + +from jinja2.asyncsupport import auto_aiter +from jinja2 import filters + + +async def auto_to_seq(value): + seq = [] + if hasattr(value, '__aiter__'): + async for item in value: + seq.append(item) + else: + for item in value: + seq.append(item) + return seq + + +async def async_select_or_reject(args, kwargs, modfunc, lookup_attr): + seq, func = filters.prepare_select_or_reject( + args, kwargs, modfunc, lookup_attr) + if seq: + async for item in auto_aiter(seq): + if func(item): + yield item + + +def dualfilter(normal_filter, async_filter): + wrap_evalctx = False + if getattr(normal_filter, 'environmentfilter', False): + is_async = lambda args: args[0].is_async + wrap_evalctx = False + else: + if not getattr(normal_filter, 'evalcontextfilter', False) and \ + not getattr(normal_filter, 'contextfilter', False): + wrap_evalctx = True + is_async = lambda args: args[0].environment.is_async + + @wraps(normal_filter) + def wrapper(*args, **kwargs): + b = is_async(args) + if wrap_evalctx: + args = args[1:] + if b: + return async_filter(*args, **kwargs) + return normal_filter(*args, **kwargs) + + if wrap_evalctx: + wrapper.evalcontextfilter = True + + wrapper.asyncfiltervariant = True + + return wrapper + + +def asyncfiltervariant(original): + def decorator(f): + return dualfilter(original, f) + return decorator + + +@asyncfiltervariant(filters.do_first) +async def do_first(environment, seq): + try: + return await auto_aiter(seq).__anext__() + except StopAsyncIteration: + return environment.undefined('No first item, sequence was empty.') + + +@asyncfiltervariant(filters.do_groupby) +async def do_groupby(environment, value, attribute): + expr = filters.make_attrgetter(environment, attribute) + return [filters._GroupTuple(key, await auto_to_seq(values)) + for key, values in filters.groupby(sorted( + await auto_to_seq(value), key=expr), expr)] + + +@asyncfiltervariant(filters.do_join) +async def do_join(eval_ctx, value, d=u'', attribute=None): + return filters.do_join(eval_ctx, await auto_to_seq(value), d, attribute) + + +@asyncfiltervariant(filters.do_list) +async def do_list(value): + return await auto_to_seq(value) + + +@asyncfiltervariant(filters.do_reject) +async def do_reject(*args, **kwargs): + return async_select_or_reject(args, kwargs, lambda x: not x, False) + + +@asyncfiltervariant(filters.do_rejectattr) +async def do_rejectattr(*args, **kwargs): + return async_select_or_reject(args, kwargs, lambda x: not x, True) + + +@asyncfiltervariant(filters.do_select) +async def do_select(*args, **kwargs): + return async_select_or_reject(args, kwargs, lambda x: x, False) + + +@asyncfiltervariant(filters.do_selectattr) +async def do_selectattr(*args, **kwargs): + return async_select_or_reject(args, kwargs, lambda x: x, True) + + +@asyncfiltervariant(filters.do_map) +async def do_map(*args, **kwargs): + seq, func = filters.prepare_map(args, kwargs) + if seq: + async for item in auto_aiter(seq): + yield func(item) + + +@asyncfiltervariant(filters.do_sum) +async def do_sum(environment, iterable, attribute=None, start=0): + rv = start + if attribute is not None: + func = filters.make_attrgetter(environment, attribute) + else: + func = lambda x: x + async for item in auto_aiter(iterable): + rv += func(item) + return rv + + +@asyncfiltervariant(filters.do_slice) +async def do_slice(value, slices, fill_with=None): + return filters.do_slice(await auto_to_seq(value), slices, fill_with) + + +ASYNC_FILTERS = { + 'first': do_first, + 'groupby': do_groupby, + 'join': do_join, + 'list': do_list, + # we intentionally do not support do_last because that would be + # ridiculous + 'reject': do_reject, + 'rejectattr': do_rejectattr, + 'map': do_map, + 'select': do_select, + 'selectattr': do_selectattr, + 'sum': do_sum, + 'slice': do_slice, +} diff --git a/lib/spack/external/jinja2/asyncsupport.py b/lib/spack/external/jinja2/asyncsupport.py new file mode 100644 index 00000000000..f4f264ad8cf --- /dev/null +++ b/lib/spack/external/jinja2/asyncsupport.py @@ -0,0 +1,254 @@ +# -*- coding: utf-8 -*- +""" + jinja2.asyncsupport + ~~~~~~~~~~~~~~~~~~~ + + Has all the code for async support which is implemented as a patch + for supported Python versions. + + :copyright: (c) 2017 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +import sys +import asyncio +import inspect +from functools import update_wrapper + +from jinja2.utils import concat, internalcode, Markup +from jinja2.environment import TemplateModule +from jinja2.runtime import LoopContextBase, _last_iteration + + +async def concat_async(async_gen): + rv = [] + async def collect(): + async for event in async_gen: + rv.append(event) + await collect() + return concat(rv) + + +async def generate_async(self, *args, **kwargs): + vars = dict(*args, **kwargs) + try: + async for event in self.root_render_func(self.new_context(vars)): + yield event + except Exception: + exc_info = sys.exc_info() + else: + return + yield self.environment.handle_exception(exc_info, True) + + +def wrap_generate_func(original_generate): + def _convert_generator(self, loop, args, kwargs): + async_gen = self.generate_async(*args, **kwargs) + try: + while 1: + yield loop.run_until_complete(async_gen.__anext__()) + except StopAsyncIteration: + pass + def generate(self, *args, **kwargs): + if not self.environment.is_async: + return original_generate(self, *args, **kwargs) + return _convert_generator(self, asyncio.get_event_loop(), args, kwargs) + return update_wrapper(generate, original_generate) + + +async def render_async(self, *args, **kwargs): + if not self.environment.is_async: + raise RuntimeError('The environment was not created with async mode ' + 'enabled.') + + vars = dict(*args, **kwargs) + ctx = self.new_context(vars) + + try: + return await concat_async(self.root_render_func(ctx)) + except Exception: + exc_info = sys.exc_info() + return self.environment.handle_exception(exc_info, True) + + +def wrap_render_func(original_render): + def render(self, *args, **kwargs): + if not self.environment.is_async: + return original_render(self, *args, **kwargs) + loop = asyncio.get_event_loop() + return loop.run_until_complete(self.render_async(*args, **kwargs)) + return update_wrapper(render, original_render) + + +def wrap_block_reference_call(original_call): + @internalcode + async def async_call(self): + rv = await concat_async(self._stack[self._depth](self._context)) + if self._context.eval_ctx.autoescape: + rv = Markup(rv) + return rv + + @internalcode + def __call__(self): + if not self._context.environment.is_async: + return original_call(self) + return async_call(self) + + return update_wrapper(__call__, original_call) + + +def wrap_macro_invoke(original_invoke): + @internalcode + async def async_invoke(self, arguments, autoescape): + rv = await self._func(*arguments) + if autoescape: + rv = Markup(rv) + return rv + + @internalcode + def _invoke(self, arguments, autoescape): + if not self._environment.is_async: + return original_invoke(self, arguments, autoescape) + return async_invoke(self, arguments, autoescape) + return update_wrapper(_invoke, original_invoke) + + +@internalcode +async def get_default_module_async(self): + if self._module is not None: + return self._module + self._module = rv = await self.make_module_async() + return rv + + +def wrap_default_module(original_default_module): + @internalcode + def _get_default_module(self): + if self.environment.is_async: + raise RuntimeError('Template module attribute is unavailable ' + 'in async mode') + return original_default_module(self) + return _get_default_module + + +async def make_module_async(self, vars=None, shared=False, locals=None): + context = self.new_context(vars, shared, locals) + body_stream = [] + async for item in self.root_render_func(context): + body_stream.append(item) + return TemplateModule(self, context, body_stream) + + +def patch_template(): + from jinja2 import Template + Template.generate = wrap_generate_func(Template.generate) + Template.generate_async = update_wrapper( + generate_async, Template.generate_async) + Template.render_async = update_wrapper( + render_async, Template.render_async) + Template.render = wrap_render_func(Template.render) + Template._get_default_module = wrap_default_module( + Template._get_default_module) + Template._get_default_module_async = get_default_module_async + Template.make_module_async = update_wrapper( + make_module_async, Template.make_module_async) + + +def patch_runtime(): + from jinja2.runtime import BlockReference, Macro + BlockReference.__call__ = wrap_block_reference_call( + BlockReference.__call__) + Macro._invoke = wrap_macro_invoke(Macro._invoke) + + +def patch_filters(): + from jinja2.filters import FILTERS + from jinja2.asyncfilters import ASYNC_FILTERS + FILTERS.update(ASYNC_FILTERS) + + +def patch_all(): + patch_template() + patch_runtime() + patch_filters() + + +async def auto_await(value): + if inspect.isawaitable(value): + return await value + return value + + +async def auto_aiter(iterable): + if hasattr(iterable, '__aiter__'): + async for item in iterable: + yield item + return + for item in iterable: + yield item + + +class AsyncLoopContext(LoopContextBase): + + def __init__(self, async_iterator, after, length, recurse=None, + depth0=0): + LoopContextBase.__init__(self, recurse, depth0) + self._async_iterator = async_iterator + self._after = after + self._length = length + + @property + def length(self): + if self._length is None: + raise TypeError('Loop length for some iterators cannot be ' + 'lazily calculated in async mode') + return self._length + + def __aiter__(self): + return AsyncLoopContextIterator(self) + + +class AsyncLoopContextIterator(object): + __slots__ = ('context',) + + def __init__(self, context): + self.context = context + + def __aiter__(self): + return self + + async def __anext__(self): + ctx = self.context + ctx.index0 += 1 + if ctx._after is _last_iteration: + raise StopAsyncIteration() + next_elem = ctx._after + try: + ctx._after = await ctx._async_iterator.__anext__() + except StopAsyncIteration: + ctx._after = _last_iteration + return next_elem, ctx + + +async def make_async_loop_context(iterable, recurse=None, depth0=0): + # Length is more complicated and less efficient in async mode. The + # reason for this is that we cannot know if length will be used + # upfront but because length is a property we cannot lazily execute it + # later. This means that we need to buffer it up and measure :( + # + # We however only do this for actual iterators, not for async + # iterators as blocking here does not seem like the best idea in the + # world. + try: + length = len(iterable) + except (TypeError, AttributeError): + if not hasattr(iterable, '__aiter__'): + iterable = tuple(iterable) + length = len(iterable) + else: + length = None + async_iterator = auto_aiter(iterable) + try: + after = await async_iterator.__anext__() + except StopAsyncIteration: + after = _last_iteration + return AsyncLoopContext(async_iterator, after, length, recurse, depth0) diff --git a/lib/spack/external/jinja2/bccache.py b/lib/spack/external/jinja2/bccache.py new file mode 100644 index 00000000000..d687d036fb7 --- /dev/null +++ b/lib/spack/external/jinja2/bccache.py @@ -0,0 +1,362 @@ +# -*- coding: utf-8 -*- +""" + jinja2.bccache + ~~~~~~~~~~~~~~ + + This module implements the bytecode cache system Jinja is optionally + using. This is useful if you have very complex template situations and + the compiliation of all those templates slow down your application too + much. + + Situations where this is useful are often forking web applications that + are initialized on the first request. + + :copyright: (c) 2017 by the Jinja Team. + :license: BSD. +""" +from os import path, listdir +import os +import sys +import stat +import errno +import marshal +import tempfile +import fnmatch +from hashlib import sha1 +from jinja2.utils import open_if_exists +from jinja2._compat import BytesIO, pickle, PY2, text_type + + +# marshal works better on 3.x, one hack less required +if not PY2: + marshal_dump = marshal.dump + marshal_load = marshal.load +else: + + def marshal_dump(code, f): + if isinstance(f, file): + marshal.dump(code, f) + else: + f.write(marshal.dumps(code)) + + def marshal_load(f): + if isinstance(f, file): + return marshal.load(f) + return marshal.loads(f.read()) + + +bc_version = 3 + +# magic version used to only change with new jinja versions. With 2.6 +# we change this to also take Python version changes into account. The +# reason for this is that Python tends to segfault if fed earlier bytecode +# versions because someone thought it would be a good idea to reuse opcodes +# or make Python incompatible with earlier versions. +bc_magic = 'j2'.encode('ascii') + \ + pickle.dumps(bc_version, 2) + \ + pickle.dumps((sys.version_info[0] << 24) | sys.version_info[1]) + + +class Bucket(object): + """Buckets are used to store the bytecode for one template. It's created + and initialized by the bytecode cache and passed to the loading functions. + + The buckets get an internal checksum from the cache assigned and use this + to automatically reject outdated cache material. Individual bytecode + cache subclasses don't have to care about cache invalidation. + """ + + def __init__(self, environment, key, checksum): + self.environment = environment + self.key = key + self.checksum = checksum + self.reset() + + def reset(self): + """Resets the bucket (unloads the bytecode).""" + self.code = None + + def load_bytecode(self, f): + """Loads bytecode from a file or file like object.""" + # make sure the magic header is correct + magic = f.read(len(bc_magic)) + if magic != bc_magic: + self.reset() + return + # the source code of the file changed, we need to reload + checksum = pickle.load(f) + if self.checksum != checksum: + self.reset() + return + # if marshal_load fails then we need to reload + try: + self.code = marshal_load(f) + except (EOFError, ValueError, TypeError): + self.reset() + return + + def write_bytecode(self, f): + """Dump the bytecode into the file or file like object passed.""" + if self.code is None: + raise TypeError('can\'t write empty bucket') + f.write(bc_magic) + pickle.dump(self.checksum, f, 2) + marshal_dump(self.code, f) + + def bytecode_from_string(self, string): + """Load bytecode from a string.""" + self.load_bytecode(BytesIO(string)) + + def bytecode_to_string(self): + """Return the bytecode as string.""" + out = BytesIO() + self.write_bytecode(out) + return out.getvalue() + + +class BytecodeCache(object): + """To implement your own bytecode cache you have to subclass this class + and override :meth:`load_bytecode` and :meth:`dump_bytecode`. Both of + these methods are passed a :class:`~jinja2.bccache.Bucket`. + + A very basic bytecode cache that saves the bytecode on the file system:: + + from os import path + + class MyCache(BytecodeCache): + + def __init__(self, directory): + self.directory = directory + + def load_bytecode(self, bucket): + filename = path.join(self.directory, bucket.key) + if path.exists(filename): + with open(filename, 'rb') as f: + bucket.load_bytecode(f) + + def dump_bytecode(self, bucket): + filename = path.join(self.directory, bucket.key) + with open(filename, 'wb') as f: + bucket.write_bytecode(f) + + A more advanced version of a filesystem based bytecode cache is part of + Jinja2. + """ + + def load_bytecode(self, bucket): + """Subclasses have to override this method to load bytecode into a + bucket. If they are not able to find code in the cache for the + bucket, it must not do anything. + """ + raise NotImplementedError() + + def dump_bytecode(self, bucket): + """Subclasses have to override this method to write the bytecode + from a bucket back to the cache. If it unable to do so it must not + fail silently but raise an exception. + """ + raise NotImplementedError() + + def clear(self): + """Clears the cache. This method is not used by Jinja2 but should be + implemented to allow applications to clear the bytecode cache used + by a particular environment. + """ + + def get_cache_key(self, name, filename=None): + """Returns the unique hash key for this template name.""" + hash = sha1(name.encode('utf-8')) + if filename is not None: + filename = '|' + filename + if isinstance(filename, text_type): + filename = filename.encode('utf-8') + hash.update(filename) + return hash.hexdigest() + + def get_source_checksum(self, source): + """Returns a checksum for the source.""" + return sha1(source.encode('utf-8')).hexdigest() + + def get_bucket(self, environment, name, filename, source): + """Return a cache bucket for the given template. All arguments are + mandatory but filename may be `None`. + """ + key = self.get_cache_key(name, filename) + checksum = self.get_source_checksum(source) + bucket = Bucket(environment, key, checksum) + self.load_bytecode(bucket) + return bucket + + def set_bucket(self, bucket): + """Put the bucket into the cache.""" + self.dump_bytecode(bucket) + + +class FileSystemBytecodeCache(BytecodeCache): + """A bytecode cache that stores bytecode on the filesystem. It accepts + two arguments: The directory where the cache items are stored and a + pattern string that is used to build the filename. + + If no directory is specified a default cache directory is selected. On + Windows the user's temp directory is used, on UNIX systems a directory + is created for the user in the system temp directory. + + The pattern can be used to have multiple separate caches operate on the + same directory. The default pattern is ``'__jinja2_%s.cache'``. ``%s`` + is replaced with the cache key. + + >>> bcc = FileSystemBytecodeCache('/tmp/jinja_cache', '%s.cache') + + This bytecode cache supports clearing of the cache using the clear method. + """ + + def __init__(self, directory=None, pattern='__jinja2_%s.cache'): + if directory is None: + directory = self._get_default_cache_dir() + self.directory = directory + self.pattern = pattern + + def _get_default_cache_dir(self): + def _unsafe_dir(): + raise RuntimeError('Cannot determine safe temp directory. You ' + 'need to explicitly provide one.') + + tmpdir = tempfile.gettempdir() + + # On windows the temporary directory is used specific unless + # explicitly forced otherwise. We can just use that. + if os.name == 'nt': + return tmpdir + if not hasattr(os, 'getuid'): + _unsafe_dir() + + dirname = '_jinja2-cache-%d' % os.getuid() + actual_dir = os.path.join(tmpdir, dirname) + + try: + os.mkdir(actual_dir, stat.S_IRWXU) + except OSError as e: + if e.errno != errno.EEXIST: + raise + try: + os.chmod(actual_dir, stat.S_IRWXU) + actual_dir_stat = os.lstat(actual_dir) + if actual_dir_stat.st_uid != os.getuid() \ + or not stat.S_ISDIR(actual_dir_stat.st_mode) \ + or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU: + _unsafe_dir() + except OSError as e: + if e.errno != errno.EEXIST: + raise + + actual_dir_stat = os.lstat(actual_dir) + if actual_dir_stat.st_uid != os.getuid() \ + or not stat.S_ISDIR(actual_dir_stat.st_mode) \ + or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU: + _unsafe_dir() + + return actual_dir + + def _get_cache_filename(self, bucket): + return path.join(self.directory, self.pattern % bucket.key) + + def load_bytecode(self, bucket): + f = open_if_exists(self._get_cache_filename(bucket), 'rb') + if f is not None: + try: + bucket.load_bytecode(f) + finally: + f.close() + + def dump_bytecode(self, bucket): + f = open(self._get_cache_filename(bucket), 'wb') + try: + bucket.write_bytecode(f) + finally: + f.close() + + def clear(self): + # imported lazily here because google app-engine doesn't support + # write access on the file system and the function does not exist + # normally. + from os import remove + files = fnmatch.filter(listdir(self.directory), self.pattern % '*') + for filename in files: + try: + remove(path.join(self.directory, filename)) + except OSError: + pass + + +class MemcachedBytecodeCache(BytecodeCache): + """This class implements a bytecode cache that uses a memcache cache for + storing the information. It does not enforce a specific memcache library + (tummy's memcache or cmemcache) but will accept any class that provides + the minimal interface required. + + Libraries compatible with this class: + + - `werkzeug `_.contrib.cache + - `python-memcached `_ + - `cmemcache `_ + + (Unfortunately the django cache interface is not compatible because it + does not support storing binary data, only unicode. You can however pass + the underlying cache client to the bytecode cache which is available + as `django.core.cache.cache._client`.) + + The minimal interface for the client passed to the constructor is this: + + .. class:: MinimalClientInterface + + .. method:: set(key, value[, timeout]) + + Stores the bytecode in the cache. `value` is a string and + `timeout` the timeout of the key. If timeout is not provided + a default timeout or no timeout should be assumed, if it's + provided it's an integer with the number of seconds the cache + item should exist. + + .. method:: get(key) + + Returns the value for the cache key. If the item does not + exist in the cache the return value must be `None`. + + The other arguments to the constructor are the prefix for all keys that + is added before the actual cache key and the timeout for the bytecode in + the cache system. We recommend a high (or no) timeout. + + This bytecode cache does not support clearing of used items in the cache. + The clear method is a no-operation function. + + .. versionadded:: 2.7 + Added support for ignoring memcache errors through the + `ignore_memcache_errors` parameter. + """ + + def __init__(self, client, prefix='jinja2/bytecode/', timeout=None, + ignore_memcache_errors=True): + self.client = client + self.prefix = prefix + self.timeout = timeout + self.ignore_memcache_errors = ignore_memcache_errors + + def load_bytecode(self, bucket): + try: + code = self.client.get(self.prefix + bucket.key) + except Exception: + if not self.ignore_memcache_errors: + raise + code = None + if code is not None: + bucket.bytecode_from_string(code) + + def dump_bytecode(self, bucket): + args = (self.prefix + bucket.key, bucket.bytecode_to_string()) + if self.timeout is not None: + args += (self.timeout,) + try: + self.client.set(*args) + except Exception: + if not self.ignore_memcache_errors: + raise diff --git a/lib/spack/external/jinja2/compiler.py b/lib/spack/external/jinja2/compiler.py new file mode 100644 index 00000000000..b2ab6fe6a89 --- /dev/null +++ b/lib/spack/external/jinja2/compiler.py @@ -0,0 +1,1653 @@ +# -*- coding: utf-8 -*- +""" + jinja2.compiler + ~~~~~~~~~~~~~~~ + + Compiles nodes into python code. + + :copyright: (c) 2017 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +from itertools import chain +from copy import deepcopy +from keyword import iskeyword as is_python_keyword +from functools import update_wrapper +from jinja2 import nodes +from jinja2.nodes import EvalContext +from jinja2.visitor import NodeVisitor +from jinja2.optimizer import Optimizer +from jinja2.exceptions import TemplateAssertionError +from jinja2.utils import Markup, concat, escape +from jinja2._compat import range_type, text_type, string_types, \ + iteritems, NativeStringIO, imap, izip +from jinja2.idtracking import Symbols, VAR_LOAD_PARAMETER, \ + VAR_LOAD_RESOLVE, VAR_LOAD_ALIAS, VAR_LOAD_UNDEFINED + + +operators = { + 'eq': '==', + 'ne': '!=', + 'gt': '>', + 'gteq': '>=', + 'lt': '<', + 'lteq': '<=', + 'in': 'in', + 'notin': 'not in' +} + +# what method to iterate over items do we want to use for dict iteration +# in generated code? on 2.x let's go with iteritems, on 3.x with items +if hasattr(dict, 'iteritems'): + dict_item_iter = 'iteritems' +else: + dict_item_iter = 'items' + +code_features = ['division'] + +# does this python version support generator stops? (PEP 0479) +try: + exec('from __future__ import generator_stop') + code_features.append('generator_stop') +except SyntaxError: + pass + +# does this python version support yield from? +try: + exec('def f(): yield from x()') +except SyntaxError: + supports_yield_from = False +else: + supports_yield_from = True + + +def optimizeconst(f): + def new_func(self, node, frame, **kwargs): + # Only optimize if the frame is not volatile + if self.optimized and not frame.eval_ctx.volatile: + new_node = self.optimizer.visit(node, frame.eval_ctx) + if new_node != node: + return self.visit(new_node, frame) + return f(self, node, frame, **kwargs) + return update_wrapper(new_func, f) + + +def generate(node, environment, name, filename, stream=None, + defer_init=False, optimized=True): + """Generate the python source for a node tree.""" + if not isinstance(node, nodes.Template): + raise TypeError('Can\'t compile non template nodes') + generator = environment.code_generator_class(environment, name, filename, + stream, defer_init, + optimized) + generator.visit(node) + if stream is None: + return generator.stream.getvalue() + + +def has_safe_repr(value): + """Does the node have a safe representation?""" + if value is None or value is NotImplemented or value is Ellipsis: + return True + if type(value) in (bool, int, float, complex, range_type, Markup) + string_types: + return True + if type(value) in (tuple, list, set, frozenset): + for item in value: + if not has_safe_repr(item): + return False + return True + elif type(value) is dict: + for key, value in iteritems(value): + if not has_safe_repr(key): + return False + if not has_safe_repr(value): + return False + return True + return False + + +def find_undeclared(nodes, names): + """Check if the names passed are accessed undeclared. The return value + is a set of all the undeclared names from the sequence of names found. + """ + visitor = UndeclaredNameVisitor(names) + try: + for node in nodes: + visitor.visit(node) + except VisitorExit: + pass + return visitor.undeclared + + +class MacroRef(object): + + def __init__(self, node): + self.node = node + self.accesses_caller = False + self.accesses_kwargs = False + self.accesses_varargs = False + + +class Frame(object): + """Holds compile time information for us.""" + + def __init__(self, eval_ctx, parent=None): + self.eval_ctx = eval_ctx + self.symbols = Symbols(parent and parent.symbols or None) + + # a toplevel frame is the root + soft frames such as if conditions. + self.toplevel = False + + # the root frame is basically just the outermost frame, so no if + # conditions. This information is used to optimize inheritance + # situations. + self.rootlevel = False + + # in some dynamic inheritance situations the compiler needs to add + # write tests around output statements. + self.require_output_check = parent and parent.require_output_check + + # inside some tags we are using a buffer rather than yield statements. + # this for example affects {% filter %} or {% macro %}. If a frame + # is buffered this variable points to the name of the list used as + # buffer. + self.buffer = None + + # the name of the block we're in, otherwise None. + self.block = parent and parent.block or None + + # the parent of this frame + self.parent = parent + + if parent is not None: + self.buffer = parent.buffer + + def copy(self): + """Create a copy of the current one.""" + rv = object.__new__(self.__class__) + rv.__dict__.update(self.__dict__) + rv.symbols = self.symbols.copy() + return rv + + def inner(self): + """Return an inner frame.""" + return Frame(self.eval_ctx, self) + + def soft(self): + """Return a soft frame. A soft frame may not be modified as + standalone thing as it shares the resources with the frame it + was created of, but it's not a rootlevel frame any longer. + + This is only used to implement if-statements. + """ + rv = self.copy() + rv.rootlevel = False + return rv + + __copy__ = copy + + +class VisitorExit(RuntimeError): + """Exception used by the `UndeclaredNameVisitor` to signal a stop.""" + + +class DependencyFinderVisitor(NodeVisitor): + """A visitor that collects filter and test calls.""" + + def __init__(self): + self.filters = set() + self.tests = set() + + def visit_Filter(self, node): + self.generic_visit(node) + self.filters.add(node.name) + + def visit_Test(self, node): + self.generic_visit(node) + self.tests.add(node.name) + + def visit_Block(self, node): + """Stop visiting at blocks.""" + + +class UndeclaredNameVisitor(NodeVisitor): + """A visitor that checks if a name is accessed without being + declared. This is different from the frame visitor as it will + not stop at closure frames. + """ + + def __init__(self, names): + self.names = set(names) + self.undeclared = set() + + def visit_Name(self, node): + if node.ctx == 'load' and node.name in self.names: + self.undeclared.add(node.name) + if self.undeclared == self.names: + raise VisitorExit() + else: + self.names.discard(node.name) + + def visit_Block(self, node): + """Stop visiting a blocks.""" + + +class CompilerExit(Exception): + """Raised if the compiler encountered a situation where it just + doesn't make sense to further process the code. Any block that + raises such an exception is not further processed. + """ + + +class CodeGenerator(NodeVisitor): + + def __init__(self, environment, name, filename, stream=None, + defer_init=False, optimized=True): + if stream is None: + stream = NativeStringIO() + self.environment = environment + self.name = name + self.filename = filename + self.stream = stream + self.created_block_context = False + self.defer_init = defer_init + self.optimized = optimized + if optimized: + self.optimizer = Optimizer(environment) + + # aliases for imports + self.import_aliases = {} + + # a registry for all blocks. Because blocks are moved out + # into the global python scope they are registered here + self.blocks = {} + + # the number of extends statements so far + self.extends_so_far = 0 + + # some templates have a rootlevel extends. In this case we + # can safely assume that we're a child template and do some + # more optimizations. + self.has_known_extends = False + + # the current line number + self.code_lineno = 1 + + # registry of all filters and tests (global, not block local) + self.tests = {} + self.filters = {} + + # the debug information + self.debug_info = [] + self._write_debug_info = None + + # the number of new lines before the next write() + self._new_lines = 0 + + # the line number of the last written statement + self._last_line = 0 + + # true if nothing was written so far. + self._first_write = True + + # used by the `temporary_identifier` method to get new + # unique, temporary identifier + self._last_identifier = 0 + + # the current indentation + self._indentation = 0 + + # Tracks toplevel assignments + self._assign_stack = [] + + # Tracks parameter definition blocks + self._param_def_block = [] + + # -- Various compilation helpers + + def fail(self, msg, lineno): + """Fail with a :exc:`TemplateAssertionError`.""" + raise TemplateAssertionError(msg, lineno, self.name, self.filename) + + def temporary_identifier(self): + """Get a new unique identifier.""" + self._last_identifier += 1 + return 't_%d' % self._last_identifier + + def buffer(self, frame): + """Enable buffering for the frame from that point onwards.""" + frame.buffer = self.temporary_identifier() + self.writeline('%s = []' % frame.buffer) + + def return_buffer_contents(self, frame, force_unescaped=False): + """Return the buffer contents of the frame.""" + if not force_unescaped: + if frame.eval_ctx.volatile: + self.writeline('if context.eval_ctx.autoescape:') + self.indent() + self.writeline('return Markup(concat(%s))' % frame.buffer) + self.outdent() + self.writeline('else:') + self.indent() + self.writeline('return concat(%s)' % frame.buffer) + self.outdent() + return + elif frame.eval_ctx.autoescape: + self.writeline('return Markup(concat(%s))' % frame.buffer) + return + self.writeline('return concat(%s)' % frame.buffer) + + def indent(self): + """Indent by one.""" + self._indentation += 1 + + def outdent(self, step=1): + """Outdent by step.""" + self._indentation -= step + + def start_write(self, frame, node=None): + """Yield or write into the frame buffer.""" + if frame.buffer is None: + self.writeline('yield ', node) + else: + self.writeline('%s.append(' % frame.buffer, node) + + def end_write(self, frame): + """End the writing process started by `start_write`.""" + if frame.buffer is not None: + self.write(')') + + def simple_write(self, s, frame, node=None): + """Simple shortcut for start_write + write + end_write.""" + self.start_write(frame, node) + self.write(s) + self.end_write(frame) + + def blockvisit(self, nodes, frame): + """Visit a list of nodes as block in a frame. If the current frame + is no buffer a dummy ``if 0: yield None`` is written automatically. + """ + try: + self.writeline('pass') + for node in nodes: + self.visit(node, frame) + except CompilerExit: + pass + + def write(self, x): + """Write a string into the output stream.""" + if self._new_lines: + if not self._first_write: + self.stream.write('\n' * self._new_lines) + self.code_lineno += self._new_lines + if self._write_debug_info is not None: + self.debug_info.append((self._write_debug_info, + self.code_lineno)) + self._write_debug_info = None + self._first_write = False + self.stream.write(' ' * self._indentation) + self._new_lines = 0 + self.stream.write(x) + + def writeline(self, x, node=None, extra=0): + """Combination of newline and write.""" + self.newline(node, extra) + self.write(x) + + def newline(self, node=None, extra=0): + """Add one or more newlines before the next write.""" + self._new_lines = max(self._new_lines, 1 + extra) + if node is not None and node.lineno != self._last_line: + self._write_debug_info = node.lineno + self._last_line = node.lineno + + def signature(self, node, frame, extra_kwargs=None): + """Writes a function call to the stream for the current node. + A leading comma is added automatically. The extra keyword + arguments may not include python keywords otherwise a syntax + error could occour. The extra keyword arguments should be given + as python dict. + """ + # if any of the given keyword arguments is a python keyword + # we have to make sure that no invalid call is created. + kwarg_workaround = False + for kwarg in chain((x.key for x in node.kwargs), extra_kwargs or ()): + if is_python_keyword(kwarg): + kwarg_workaround = True + break + + for arg in node.args: + self.write(', ') + self.visit(arg, frame) + + if not kwarg_workaround: + for kwarg in node.kwargs: + self.write(', ') + self.visit(kwarg, frame) + if extra_kwargs is not None: + for key, value in iteritems(extra_kwargs): + self.write(', %s=%s' % (key, value)) + if node.dyn_args: + self.write(', *') + self.visit(node.dyn_args, frame) + + if kwarg_workaround: + if node.dyn_kwargs is not None: + self.write(', **dict({') + else: + self.write(', **{') + for kwarg in node.kwargs: + self.write('%r: ' % kwarg.key) + self.visit(kwarg.value, frame) + self.write(', ') + if extra_kwargs is not None: + for key, value in iteritems(extra_kwargs): + self.write('%r: %s, ' % (key, value)) + if node.dyn_kwargs is not None: + self.write('}, **') + self.visit(node.dyn_kwargs, frame) + self.write(')') + else: + self.write('}') + + elif node.dyn_kwargs is not None: + self.write(', **') + self.visit(node.dyn_kwargs, frame) + + def pull_dependencies(self, nodes): + """Pull all the dependencies.""" + visitor = DependencyFinderVisitor() + for node in nodes: + visitor.visit(node) + for dependency in 'filters', 'tests': + mapping = getattr(self, dependency) + for name in getattr(visitor, dependency): + if name not in mapping: + mapping[name] = self.temporary_identifier() + self.writeline('%s = environment.%s[%r]' % + (mapping[name], dependency, name)) + + def enter_frame(self, frame): + undefs = [] + for target, (action, param) in iteritems(frame.symbols.loads): + if action == VAR_LOAD_PARAMETER: + pass + elif action == VAR_LOAD_RESOLVE: + self.writeline('%s = resolve(%r)' % + (target, param)) + elif action == VAR_LOAD_ALIAS: + self.writeline('%s = %s' % (target, param)) + elif action == VAR_LOAD_UNDEFINED: + undefs.append(target) + else: + raise NotImplementedError('unknown load instruction') + if undefs: + self.writeline('%s = missing' % ' = '.join(undefs)) + + def leave_frame(self, frame, with_python_scope=False): + if not with_python_scope: + undefs = [] + for target, _ in iteritems(frame.symbols.loads): + undefs.append(target) + if undefs: + self.writeline('%s = missing' % ' = '.join(undefs)) + + def func(self, name): + if self.environment.is_async: + return 'async def %s' % name + return 'def %s' % name + + def macro_body(self, node, frame): + """Dump the function def of a macro or call block.""" + frame = frame.inner() + frame.symbols.analyze_node(node) + macro_ref = MacroRef(node) + + explicit_caller = None + skip_special_params = set() + args = [] + for idx, arg in enumerate(node.args): + if arg.name == 'caller': + explicit_caller = idx + if arg.name in ('kwargs', 'varargs'): + skip_special_params.add(arg.name) + args.append(frame.symbols.ref(arg.name)) + + undeclared = find_undeclared(node.body, ('caller', 'kwargs', 'varargs')) + + if 'caller' in undeclared: + # In older Jinja2 versions there was a bug that allowed caller + # to retain the special behavior even if it was mentioned in + # the argument list. However thankfully this was only really + # working if it was the last argument. So we are explicitly + # checking this now and error out if it is anywhere else in + # the argument list. + if explicit_caller is not None: + try: + node.defaults[explicit_caller - len(node.args)] + except IndexError: + self.fail('When defining macros or call blocks the ' + 'special "caller" argument must be omitted ' + 'or be given a default.', node.lineno) + else: + args.append(frame.symbols.declare_parameter('caller')) + macro_ref.accesses_caller = True + if 'kwargs' in undeclared and not 'kwargs' in skip_special_params: + args.append(frame.symbols.declare_parameter('kwargs')) + macro_ref.accesses_kwargs = True + if 'varargs' in undeclared and not 'varargs' in skip_special_params: + args.append(frame.symbols.declare_parameter('varargs')) + macro_ref.accesses_varargs = True + + # macros are delayed, they never require output checks + frame.require_output_check = False + frame.symbols.analyze_node(node) + self.writeline('%s(%s):' % (self.func('macro'), ', '.join(args)), node) + self.indent() + + self.buffer(frame) + self.enter_frame(frame) + + self.push_parameter_definitions(frame) + for idx, arg in enumerate(node.args): + ref = frame.symbols.ref(arg.name) + self.writeline('if %s is missing:' % ref) + self.indent() + try: + default = node.defaults[idx - len(node.args)] + except IndexError: + self.writeline('%s = undefined(%r, name=%r)' % ( + ref, + 'parameter %r was not provided' % arg.name, + arg.name)) + else: + self.writeline('%s = ' % ref) + self.visit(default, frame) + self.mark_parameter_stored(ref) + self.outdent() + self.pop_parameter_definitions() + + self.blockvisit(node.body, frame) + self.return_buffer_contents(frame, force_unescaped=True) + self.leave_frame(frame, with_python_scope=True) + self.outdent() + + return frame, macro_ref + + def macro_def(self, macro_ref, frame): + """Dump the macro definition for the def created by macro_body.""" + arg_tuple = ', '.join(repr(x.name) for x in macro_ref.node.args) + name = getattr(macro_ref.node, 'name', None) + if len(macro_ref.node.args) == 1: + arg_tuple += ',' + self.write('Macro(environment, macro, %r, (%s), %r, %r, %r, ' + 'context.eval_ctx.autoescape)' % + (name, arg_tuple, macro_ref.accesses_kwargs, + macro_ref.accesses_varargs, macro_ref.accesses_caller)) + + def position(self, node): + """Return a human readable position for the node.""" + rv = 'line %d' % node.lineno + if self.name is not None: + rv += ' in ' + repr(self.name) + return rv + + def dump_local_context(self, frame): + return '{%s}' % ', '.join( + '%r: %s' % (name, target) for name, target + in iteritems(frame.symbols.dump_stores())) + + def write_commons(self): + """Writes a common preamble that is used by root and block functions. + Primarily this sets up common local helpers and enforces a generator + through a dead branch. + """ + self.writeline('resolve = context.resolve_or_missing') + self.writeline('undefined = environment.undefined') + self.writeline('if 0: yield None') + + def push_parameter_definitions(self, frame): + """Pushes all parameter targets from the given frame into a local + stack that permits tracking of yet to be assigned parameters. In + particular this enables the optimization from `visit_Name` to skip + undefined expressions for parameters in macros as macros can reference + otherwise unbound parameters. + """ + self._param_def_block.append(frame.symbols.dump_param_targets()) + + def pop_parameter_definitions(self): + """Pops the current parameter definitions set.""" + self._param_def_block.pop() + + def mark_parameter_stored(self, target): + """Marks a parameter in the current parameter definitions as stored. + This will skip the enforced undefined checks. + """ + if self._param_def_block: + self._param_def_block[-1].discard(target) + + def parameter_is_undeclared(self, target): + """Checks if a given target is an undeclared parameter.""" + if not self._param_def_block: + return False + return target in self._param_def_block[-1] + + def push_assign_tracking(self): + """Pushes a new layer for assignment tracking.""" + self._assign_stack.append(set()) + + def pop_assign_tracking(self, frame): + """Pops the topmost level for assignment tracking and updates the + context variables if necessary. + """ + vars = self._assign_stack.pop() + if not frame.toplevel or not vars: + return + public_names = [x for x in vars if x[:1] != '_'] + if len(vars) == 1: + name = next(iter(vars)) + ref = frame.symbols.ref(name) + self.writeline('context.vars[%r] = %s' % (name, ref)) + else: + self.writeline('context.vars.update({') + for idx, name in enumerate(vars): + if idx: + self.write(', ') + ref = frame.symbols.ref(name) + self.write('%r: %s' % (name, ref)) + self.write('})') + if public_names: + if len(public_names) == 1: + self.writeline('context.exported_vars.add(%r)' % + public_names[0]) + else: + self.writeline('context.exported_vars.update((%s))' % + ', '.join(imap(repr, public_names))) + + # -- Statement Visitors + + def visit_Template(self, node, frame=None): + assert frame is None, 'no root frame allowed' + eval_ctx = EvalContext(self.environment, self.name) + + from jinja2.runtime import __all__ as exported + self.writeline('from __future__ import %s' % ', '.join(code_features)) + self.writeline('from jinja2.runtime import ' + ', '.join(exported)) + + if self.environment.is_async: + self.writeline('from jinja2.asyncsupport import auto_await, ' + 'auto_aiter, make_async_loop_context') + + # if we want a deferred initialization we cannot move the + # environment into a local name + envenv = not self.defer_init and ', environment=environment' or '' + + # do we have an extends tag at all? If not, we can save some + # overhead by just not processing any inheritance code. + have_extends = node.find(nodes.Extends) is not None + + # find all blocks + for block in node.find_all(nodes.Block): + if block.name in self.blocks: + self.fail('block %r defined twice' % block.name, block.lineno) + self.blocks[block.name] = block + + # find all imports and import them + for import_ in node.find_all(nodes.ImportedName): + if import_.importname not in self.import_aliases: + imp = import_.importname + self.import_aliases[imp] = alias = self.temporary_identifier() + if '.' in imp: + module, obj = imp.rsplit('.', 1) + self.writeline('from %s import %s as %s' % + (module, obj, alias)) + else: + self.writeline('import %s as %s' % (imp, alias)) + + # add the load name + self.writeline('name = %r' % self.name) + + # generate the root render function. + self.writeline('%s(context, missing=missing%s):' % + (self.func('root'), envenv), extra=1) + self.indent() + self.write_commons() + + # process the root + frame = Frame(eval_ctx) + if 'self' in find_undeclared(node.body, ('self',)): + ref = frame.symbols.declare_parameter('self') + self.writeline('%s = TemplateReference(context)' % ref) + frame.symbols.analyze_node(node) + frame.toplevel = frame.rootlevel = True + frame.require_output_check = have_extends and not self.has_known_extends + if have_extends: + self.writeline('parent_template = None') + self.enter_frame(frame) + self.pull_dependencies(node.body) + self.blockvisit(node.body, frame) + self.leave_frame(frame, with_python_scope=True) + self.outdent() + + # make sure that the parent root is called. + if have_extends: + if not self.has_known_extends: + self.indent() + self.writeline('if parent_template is not None:') + self.indent() + if supports_yield_from and not self.environment.is_async: + self.writeline('yield from parent_template.' + 'root_render_func(context)') + else: + self.writeline('%sfor event in parent_template.' + 'root_render_func(context):' % + (self.environment.is_async and 'async ' or '')) + self.indent() + self.writeline('yield event') + self.outdent() + self.outdent(1 + (not self.has_known_extends)) + + # at this point we now have the blocks collected and can visit them too. + for name, block in iteritems(self.blocks): + self.writeline('%s(context, missing=missing%s):' % + (self.func('block_' + name), envenv), + block, 1) + self.indent() + self.write_commons() + # It's important that we do not make this frame a child of the + # toplevel template. This would cause a variety of + # interesting issues with identifier tracking. + block_frame = Frame(eval_ctx) + undeclared = find_undeclared(block.body, ('self', 'super')) + if 'self' in undeclared: + ref = block_frame.symbols.declare_parameter('self') + self.writeline('%s = TemplateReference(context)' % ref) + if 'super' in undeclared: + ref = block_frame.symbols.declare_parameter('super') + self.writeline('%s = context.super(%r, ' + 'block_%s)' % (ref, name, name)) + block_frame.symbols.analyze_node(block) + block_frame.block = name + self.enter_frame(block_frame) + self.pull_dependencies(block.body) + self.blockvisit(block.body, block_frame) + self.leave_frame(block_frame, with_python_scope=True) + self.outdent() + + self.writeline('blocks = {%s}' % ', '.join('%r: block_%s' % (x, x) + for x in self.blocks), + extra=1) + + # add a function that returns the debug info + self.writeline('debug_info = %r' % '&'.join('%s=%s' % x for x + in self.debug_info)) + + def visit_Block(self, node, frame): + """Call a block and register it for the template.""" + level = 0 + if frame.toplevel: + # if we know that we are a child template, there is no need to + # check if we are one + if self.has_known_extends: + return + if self.extends_so_far > 0: + self.writeline('if parent_template is None:') + self.indent() + level += 1 + context = node.scoped and ( + 'context.derived(%s)' % self.dump_local_context(frame)) or 'context' + + if supports_yield_from and not self.environment.is_async and \ + frame.buffer is None: + self.writeline('yield from context.blocks[%r][0](%s)' % ( + node.name, context), node) + else: + loop = self.environment.is_async and 'async for' or 'for' + self.writeline('%s event in context.blocks[%r][0](%s):' % ( + loop, node.name, context), node) + self.indent() + self.simple_write('event', frame) + self.outdent() + + self.outdent(level) + + def visit_Extends(self, node, frame): + """Calls the extender.""" + if not frame.toplevel: + self.fail('cannot use extend from a non top-level scope', + node.lineno) + + # if the number of extends statements in general is zero so + # far, we don't have to add a check if something extended + # the template before this one. + if self.extends_so_far > 0: + + # if we have a known extends we just add a template runtime + # error into the generated code. We could catch that at compile + # time too, but i welcome it not to confuse users by throwing the + # same error at different times just "because we can". + if not self.has_known_extends: + self.writeline('if parent_template is not None:') + self.indent() + self.writeline('raise TemplateRuntimeError(%r)' % + 'extended multiple times') + + # if we have a known extends already we don't need that code here + # as we know that the template execution will end here. + if self.has_known_extends: + raise CompilerExit() + else: + self.outdent() + + self.writeline('parent_template = environment.get_template(', node) + self.visit(node.template, frame) + self.write(', %r)' % self.name) + self.writeline('for name, parent_block in parent_template.' + 'blocks.%s():' % dict_item_iter) + self.indent() + self.writeline('context.blocks.setdefault(name, []).' + 'append(parent_block)') + self.outdent() + + # if this extends statement was in the root level we can take + # advantage of that information and simplify the generated code + # in the top level from this point onwards + if frame.rootlevel: + self.has_known_extends = True + + # and now we have one more + self.extends_so_far += 1 + + def visit_Include(self, node, frame): + """Handles includes.""" + if node.ignore_missing: + self.writeline('try:') + self.indent() + + func_name = 'get_or_select_template' + if isinstance(node.template, nodes.Const): + if isinstance(node.template.value, string_types): + func_name = 'get_template' + elif isinstance(node.template.value, (tuple, list)): + func_name = 'select_template' + elif isinstance(node.template, (nodes.Tuple, nodes.List)): + func_name = 'select_template' + + self.writeline('template = environment.%s(' % func_name, node) + self.visit(node.template, frame) + self.write(', %r)' % self.name) + if node.ignore_missing: + self.outdent() + self.writeline('except TemplateNotFound:') + self.indent() + self.writeline('pass') + self.outdent() + self.writeline('else:') + self.indent() + + skip_event_yield = False + if node.with_context: + loop = self.environment.is_async and 'async for' or 'for' + self.writeline('%s event in template.root_render_func(' + 'template.new_context(context.get_all(), True, ' + '%s)):' % (loop, self.dump_local_context(frame))) + elif self.environment.is_async: + self.writeline('for event in (await ' + 'template._get_default_module_async())' + '._body_stream:') + else: + if supports_yield_from: + self.writeline('yield from template._get_default_module()' + '._body_stream') + skip_event_yield = True + else: + self.writeline('for event in template._get_default_module()' + '._body_stream:') + + if not skip_event_yield: + self.indent() + self.simple_write('event', frame) + self.outdent() + + if node.ignore_missing: + self.outdent() + + def visit_Import(self, node, frame): + """Visit regular imports.""" + self.writeline('%s = ' % frame.symbols.ref(node.target), node) + if frame.toplevel: + self.write('context.vars[%r] = ' % node.target) + if self.environment.is_async: + self.write('await ') + self.write('environment.get_template(') + self.visit(node.template, frame) + self.write(', %r).' % self.name) + if node.with_context: + self.write('make_module%s(context.get_all(), True, %s)' + % (self.environment.is_async and '_async' or '', + self.dump_local_context(frame))) + elif self.environment.is_async: + self.write('_get_default_module_async()') + else: + self.write('_get_default_module()') + if frame.toplevel and not node.target.startswith('_'): + self.writeline('context.exported_vars.discard(%r)' % node.target) + + def visit_FromImport(self, node, frame): + """Visit named imports.""" + self.newline(node) + self.write('included_template = %senvironment.get_template(' + % (self.environment.is_async and 'await ' or '')) + self.visit(node.template, frame) + self.write(', %r).' % self.name) + if node.with_context: + self.write('make_module%s(context.get_all(), True, %s)' + % (self.environment.is_async and '_async' or '', + self.dump_local_context(frame))) + elif self.environment.is_async: + self.write('_get_default_module_async()') + else: + self.write('_get_default_module()') + + var_names = [] + discarded_names = [] + for name in node.names: + if isinstance(name, tuple): + name, alias = name + else: + alias = name + self.writeline('%s = getattr(included_template, ' + '%r, missing)' % (frame.symbols.ref(alias), name)) + self.writeline('if %s is missing:' % frame.symbols.ref(alias)) + self.indent() + self.writeline('%s = undefined(%r %% ' + 'included_template.__name__, ' + 'name=%r)' % + (frame.symbols.ref(alias), + 'the template %%r (imported on %s) does ' + 'not export the requested name %s' % ( + self.position(node), + repr(name) + ), name)) + self.outdent() + if frame.toplevel: + var_names.append(alias) + if not alias.startswith('_'): + discarded_names.append(alias) + + if var_names: + if len(var_names) == 1: + name = var_names[0] + self.writeline('context.vars[%r] = %s' % + (name, frame.symbols.ref(name))) + else: + self.writeline('context.vars.update({%s})' % ', '.join( + '%r: %s' % (name, frame.symbols.ref(name)) for name in var_names + )) + if discarded_names: + if len(discarded_names) == 1: + self.writeline('context.exported_vars.discard(%r)' % + discarded_names[0]) + else: + self.writeline('context.exported_vars.difference_' + 'update((%s))' % ', '.join(imap(repr, discarded_names))) + + def visit_For(self, node, frame): + loop_frame = frame.inner() + test_frame = frame.inner() + else_frame = frame.inner() + + # try to figure out if we have an extended loop. An extended loop + # is necessary if the loop is in recursive mode if the special loop + # variable is accessed in the body. + extended_loop = node.recursive or 'loop' in \ + find_undeclared(node.iter_child_nodes( + only=('body',)), ('loop',)) + + loop_ref = None + if extended_loop: + loop_ref = loop_frame.symbols.declare_parameter('loop') + + loop_frame.symbols.analyze_node(node, for_branch='body') + if node.else_: + else_frame.symbols.analyze_node(node, for_branch='else') + + if node.test: + loop_filter_func = self.temporary_identifier() + test_frame.symbols.analyze_node(node, for_branch='test') + self.writeline('%s(fiter):' % self.func(loop_filter_func), node.test) + self.indent() + self.enter_frame(test_frame) + self.writeline(self.environment.is_async and 'async for ' or 'for ') + self.visit(node.target, loop_frame) + self.write(' in ') + self.write(self.environment.is_async and 'auto_aiter(fiter)' or 'fiter') + self.write(':') + self.indent() + self.writeline('if ', node.test) + self.visit(node.test, test_frame) + self.write(':') + self.indent() + self.writeline('yield ') + self.visit(node.target, loop_frame) + self.outdent(3) + self.leave_frame(test_frame, with_python_scope=True) + + # if we don't have an recursive loop we have to find the shadowed + # variables at that point. Because loops can be nested but the loop + # variable is a special one we have to enforce aliasing for it. + if node.recursive: + self.writeline('%s(reciter, loop_render_func, depth=0):' % + self.func('loop'), node) + self.indent() + self.buffer(loop_frame) + + # Use the same buffer for the else frame + else_frame.buffer = loop_frame.buffer + + # make sure the loop variable is a special one and raise a template + # assertion error if a loop tries to write to loop + if extended_loop: + self.writeline('%s = missing' % loop_ref) + + for name in node.find_all(nodes.Name): + if name.ctx == 'store' and name.name == 'loop': + self.fail('Can\'t assign to special loop variable ' + 'in for-loop target', name.lineno) + + if node.else_: + iteration_indicator = self.temporary_identifier() + self.writeline('%s = 1' % iteration_indicator) + + self.writeline(self.environment.is_async and 'async for ' or 'for ', node) + self.visit(node.target, loop_frame) + if extended_loop: + if self.environment.is_async: + self.write(', %s in await make_async_loop_context(' % loop_ref) + else: + self.write(', %s in LoopContext(' % loop_ref) + else: + self.write(' in ') + + if node.test: + self.write('%s(' % loop_filter_func) + if node.recursive: + self.write('reciter') + else: + if self.environment.is_async and not extended_loop: + self.write('auto_aiter(') + self.visit(node.iter, frame) + if self.environment.is_async and not extended_loop: + self.write(')') + if node.test: + self.write(')') + + if node.recursive: + self.write(', loop_render_func, depth):') + else: + self.write(extended_loop and '):' or ':') + + self.indent() + self.enter_frame(loop_frame) + + self.blockvisit(node.body, loop_frame) + if node.else_: + self.writeline('%s = 0' % iteration_indicator) + self.outdent() + self.leave_frame(loop_frame, with_python_scope=node.recursive + and not node.else_) + + if node.else_: + self.writeline('if %s:' % iteration_indicator) + self.indent() + self.enter_frame(else_frame) + self.blockvisit(node.else_, else_frame) + self.leave_frame(else_frame) + self.outdent() + + # if the node was recursive we have to return the buffer contents + # and start the iteration code + if node.recursive: + self.return_buffer_contents(loop_frame) + self.outdent() + self.start_write(frame, node) + if self.environment.is_async: + self.write('await ') + self.write('loop(') + if self.environment.is_async: + self.write('auto_aiter(') + self.visit(node.iter, frame) + if self.environment.is_async: + self.write(')') + self.write(', loop)') + self.end_write(frame) + + def visit_If(self, node, frame): + if_frame = frame.soft() + self.writeline('if ', node) + self.visit(node.test, if_frame) + self.write(':') + self.indent() + self.blockvisit(node.body, if_frame) + self.outdent() + if node.else_: + self.writeline('else:') + self.indent() + self.blockvisit(node.else_, if_frame) + self.outdent() + + def visit_Macro(self, node, frame): + macro_frame, macro_ref = self.macro_body(node, frame) + self.newline() + if frame.toplevel: + if not node.name.startswith('_'): + self.write('context.exported_vars.add(%r)' % node.name) + ref = frame.symbols.ref(node.name) + self.writeline('context.vars[%r] = ' % node.name) + self.write('%s = ' % frame.symbols.ref(node.name)) + self.macro_def(macro_ref, macro_frame) + + def visit_CallBlock(self, node, frame): + call_frame, macro_ref = self.macro_body(node, frame) + self.writeline('caller = ') + self.macro_def(macro_ref, call_frame) + self.start_write(frame, node) + self.visit_Call(node.call, frame, forward_caller=True) + self.end_write(frame) + + def visit_FilterBlock(self, node, frame): + filter_frame = frame.inner() + filter_frame.symbols.analyze_node(node) + self.enter_frame(filter_frame) + self.buffer(filter_frame) + self.blockvisit(node.body, filter_frame) + self.start_write(frame, node) + self.visit_Filter(node.filter, filter_frame) + self.end_write(frame) + self.leave_frame(filter_frame) + + def visit_With(self, node, frame): + with_frame = frame.inner() + with_frame.symbols.analyze_node(node) + self.enter_frame(with_frame) + for idx, (target, expr) in enumerate(izip(node.targets, node.values)): + self.newline() + self.visit(target, with_frame) + self.write(' = ') + self.visit(expr, frame) + self.blockvisit(node.body, with_frame) + self.leave_frame(with_frame) + + def visit_ExprStmt(self, node, frame): + self.newline(node) + self.visit(node.node, frame) + + def visit_Output(self, node, frame): + # if we have a known extends statement, we don't output anything + # if we are in a require_output_check section + if self.has_known_extends and frame.require_output_check: + return + + allow_constant_finalize = True + if self.environment.finalize: + func = self.environment.finalize + if getattr(func, 'contextfunction', False) or \ + getattr(func, 'evalcontextfunction', False): + allow_constant_finalize = False + elif getattr(func, 'environmentfunction', False): + finalize = lambda x: text_type( + self.environment.finalize(self.environment, x)) + else: + finalize = lambda x: text_type(self.environment.finalize(x)) + else: + finalize = text_type + + # if we are inside a frame that requires output checking, we do so + outdent_later = False + if frame.require_output_check: + self.writeline('if parent_template is None:') + self.indent() + outdent_later = True + + # try to evaluate as many chunks as possible into a static + # string at compile time. + body = [] + for child in node.nodes: + try: + if not allow_constant_finalize: + raise nodes.Impossible() + const = child.as_const(frame.eval_ctx) + except nodes.Impossible: + body.append(child) + continue + # the frame can't be volatile here, becaus otherwise the + # as_const() function would raise an Impossible exception + # at that point. + try: + if frame.eval_ctx.autoescape: + if hasattr(const, '__html__'): + const = const.__html__() + else: + const = escape(const) + const = finalize(const) + except Exception: + # if something goes wrong here we evaluate the node + # at runtime for easier debugging + body.append(child) + continue + if body and isinstance(body[-1], list): + body[-1].append(const) + else: + body.append([const]) + + # if we have less than 3 nodes or a buffer we yield or extend/append + if len(body) < 3 or frame.buffer is not None: + if frame.buffer is not None: + # for one item we append, for more we extend + if len(body) == 1: + self.writeline('%s.append(' % frame.buffer) + else: + self.writeline('%s.extend((' % frame.buffer) + self.indent() + for item in body: + if isinstance(item, list): + val = repr(concat(item)) + if frame.buffer is None: + self.writeline('yield ' + val) + else: + self.writeline(val + ',') + else: + if frame.buffer is None: + self.writeline('yield ', item) + else: + self.newline(item) + close = 1 + if frame.eval_ctx.volatile: + self.write('(escape if context.eval_ctx.autoescape' + ' else to_string)(') + elif frame.eval_ctx.autoescape: + self.write('escape(') + else: + self.write('to_string(') + if self.environment.finalize is not None: + self.write('environment.finalize(') + if getattr(self.environment.finalize, + "contextfunction", False): + self.write('context, ') + close += 1 + self.visit(item, frame) + self.write(')' * close) + if frame.buffer is not None: + self.write(',') + if frame.buffer is not None: + # close the open parentheses + self.outdent() + self.writeline(len(body) == 1 and ')' or '))') + + # otherwise we create a format string as this is faster in that case + else: + format = [] + arguments = [] + for item in body: + if isinstance(item, list): + format.append(concat(item).replace('%', '%%')) + else: + format.append('%s') + arguments.append(item) + self.writeline('yield ') + self.write(repr(concat(format)) + ' % (') + self.indent() + for argument in arguments: + self.newline(argument) + close = 0 + if frame.eval_ctx.volatile: + self.write('(escape if context.eval_ctx.autoescape else' + ' to_string)(') + close += 1 + elif frame.eval_ctx.autoescape: + self.write('escape(') + close += 1 + if self.environment.finalize is not None: + self.write('environment.finalize(') + if getattr(self.environment.finalize, + 'contextfunction', False): + self.write('context, ') + elif getattr(self.environment.finalize, + 'evalcontextfunction', False): + self.write('context.eval_ctx, ') + elif getattr(self.environment.finalize, + 'environmentfunction', False): + self.write('environment, ') + close += 1 + self.visit(argument, frame) + self.write(')' * close + ', ') + self.outdent() + self.writeline(')') + + if outdent_later: + self.outdent() + + def visit_Assign(self, node, frame): + self.push_assign_tracking() + self.newline(node) + self.visit(node.target, frame) + self.write(' = ') + self.visit(node.node, frame) + self.pop_assign_tracking(frame) + + def visit_AssignBlock(self, node, frame): + self.push_assign_tracking() + block_frame = frame.inner() + # This is a special case. Since a set block always captures we + # will disable output checks. This way one can use set blocks + # toplevel even in extended templates. + block_frame.require_output_check = False + block_frame.symbols.analyze_node(node) + self.enter_frame(block_frame) + self.buffer(block_frame) + self.blockvisit(node.body, block_frame) + self.newline(node) + self.visit(node.target, frame) + self.write(' = (Markup if context.eval_ctx.autoescape ' + 'else identity)(concat(%s))' % block_frame.buffer) + self.pop_assign_tracking(frame) + self.leave_frame(block_frame) + + # -- Expression Visitors + + def visit_Name(self, node, frame): + if node.ctx == 'store' and frame.toplevel: + if self._assign_stack: + self._assign_stack[-1].add(node.name) + ref = frame.symbols.ref(node.name) + + # If we are looking up a variable we might have to deal with the + # case where it's undefined. We can skip that case if the load + # instruction indicates a parameter which are always defined. + if node.ctx == 'load': + load = frame.symbols.find_load(ref) + if not (load is not None and load[0] == VAR_LOAD_PARAMETER and \ + not self.parameter_is_undeclared(ref)): + self.write('(undefined(name=%r) if %s is missing else %s)' % + (node.name, ref, ref)) + return + + self.write(ref) + + def visit_Const(self, node, frame): + val = node.as_const(frame.eval_ctx) + if isinstance(val, float): + self.write(str(val)) + else: + self.write(repr(val)) + + def visit_TemplateData(self, node, frame): + try: + self.write(repr(node.as_const(frame.eval_ctx))) + except nodes.Impossible: + self.write('(Markup if context.eval_ctx.autoescape else identity)(%r)' + % node.data) + + def visit_Tuple(self, node, frame): + self.write('(') + idx = -1 + for idx, item in enumerate(node.items): + if idx: + self.write(', ') + self.visit(item, frame) + self.write(idx == 0 and ',)' or ')') + + def visit_List(self, node, frame): + self.write('[') + for idx, item in enumerate(node.items): + if idx: + self.write(', ') + self.visit(item, frame) + self.write(']') + + def visit_Dict(self, node, frame): + self.write('{') + for idx, item in enumerate(node.items): + if idx: + self.write(', ') + self.visit(item.key, frame) + self.write(': ') + self.visit(item.value, frame) + self.write('}') + + def binop(operator, interceptable=True): + @optimizeconst + def visitor(self, node, frame): + if self.environment.sandboxed and \ + operator in self.environment.intercepted_binops: + self.write('environment.call_binop(context, %r, ' % operator) + self.visit(node.left, frame) + self.write(', ') + self.visit(node.right, frame) + else: + self.write('(') + self.visit(node.left, frame) + self.write(' %s ' % operator) + self.visit(node.right, frame) + self.write(')') + return visitor + + def uaop(operator, interceptable=True): + @optimizeconst + def visitor(self, node, frame): + if self.environment.sandboxed and \ + operator in self.environment.intercepted_unops: + self.write('environment.call_unop(context, %r, ' % operator) + self.visit(node.node, frame) + else: + self.write('(' + operator) + self.visit(node.node, frame) + self.write(')') + return visitor + + visit_Add = binop('+') + visit_Sub = binop('-') + visit_Mul = binop('*') + visit_Div = binop('/') + visit_FloorDiv = binop('//') + visit_Pow = binop('**') + visit_Mod = binop('%') + visit_And = binop('and', interceptable=False) + visit_Or = binop('or', interceptable=False) + visit_Pos = uaop('+') + visit_Neg = uaop('-') + visit_Not = uaop('not ', interceptable=False) + del binop, uaop + + @optimizeconst + def visit_Concat(self, node, frame): + if frame.eval_ctx.volatile: + func_name = '(context.eval_ctx.volatile and' \ + ' markup_join or unicode_join)' + elif frame.eval_ctx.autoescape: + func_name = 'markup_join' + else: + func_name = 'unicode_join' + self.write('%s((' % func_name) + for arg in node.nodes: + self.visit(arg, frame) + self.write(', ') + self.write('))') + + @optimizeconst + def visit_Compare(self, node, frame): + self.visit(node.expr, frame) + for op in node.ops: + self.visit(op, frame) + + def visit_Operand(self, node, frame): + self.write(' %s ' % operators[node.op]) + self.visit(node.expr, frame) + + @optimizeconst + def visit_Getattr(self, node, frame): + self.write('environment.getattr(') + self.visit(node.node, frame) + self.write(', %r)' % node.attr) + + @optimizeconst + def visit_Getitem(self, node, frame): + # slices bypass the environment getitem method. + if isinstance(node.arg, nodes.Slice): + self.visit(node.node, frame) + self.write('[') + self.visit(node.arg, frame) + self.write(']') + else: + self.write('environment.getitem(') + self.visit(node.node, frame) + self.write(', ') + self.visit(node.arg, frame) + self.write(')') + + def visit_Slice(self, node, frame): + if node.start is not None: + self.visit(node.start, frame) + self.write(':') + if node.stop is not None: + self.visit(node.stop, frame) + if node.step is not None: + self.write(':') + self.visit(node.step, frame) + + @optimizeconst + def visit_Filter(self, node, frame): + if self.environment.is_async: + self.write('await auto_await(') + self.write(self.filters[node.name] + '(') + func = self.environment.filters.get(node.name) + if func is None: + self.fail('no filter named %r' % node.name, node.lineno) + if getattr(func, 'contextfilter', False): + self.write('context, ') + elif getattr(func, 'evalcontextfilter', False): + self.write('context.eval_ctx, ') + elif getattr(func, 'environmentfilter', False): + self.write('environment, ') + + # if the filter node is None we are inside a filter block + # and want to write to the current buffer + if node.node is not None: + self.visit(node.node, frame) + elif frame.eval_ctx.volatile: + self.write('(context.eval_ctx.autoescape and' + ' Markup(concat(%s)) or concat(%s))' % + (frame.buffer, frame.buffer)) + elif frame.eval_ctx.autoescape: + self.write('Markup(concat(%s))' % frame.buffer) + else: + self.write('concat(%s)' % frame.buffer) + self.signature(node, frame) + self.write(')') + if self.environment.is_async: + self.write(')') + + @optimizeconst + def visit_Test(self, node, frame): + self.write(self.tests[node.name] + '(') + if node.name not in self.environment.tests: + self.fail('no test named %r' % node.name, node.lineno) + self.visit(node.node, frame) + self.signature(node, frame) + self.write(')') + + @optimizeconst + def visit_CondExpr(self, node, frame): + def write_expr2(): + if node.expr2 is not None: + return self.visit(node.expr2, frame) + self.write('undefined(%r)' % ('the inline if-' + 'expression on %s evaluated to false and ' + 'no else section was defined.' % self.position(node))) + + self.write('(') + self.visit(node.expr1, frame) + self.write(' if ') + self.visit(node.test, frame) + self.write(' else ') + write_expr2() + self.write(')') + + @optimizeconst + def visit_Call(self, node, frame, forward_caller=False): + if self.environment.is_async: + self.write('await auto_await(') + if self.environment.sandboxed: + self.write('environment.call(context, ') + else: + self.write('context.call(') + self.visit(node.node, frame) + extra_kwargs = forward_caller and {'caller': 'caller'} or None + self.signature(node, frame, extra_kwargs) + self.write(')') + if self.environment.is_async: + self.write(')') + + def visit_Keyword(self, node, frame): + self.write(node.key + '=') + self.visit(node.value, frame) + + # -- Unused nodes for extensions + + def visit_MarkSafe(self, node, frame): + self.write('Markup(') + self.visit(node.expr, frame) + self.write(')') + + def visit_MarkSafeIfAutoescape(self, node, frame): + self.write('(context.eval_ctx.autoescape and Markup or identity)(') + self.visit(node.expr, frame) + self.write(')') + + def visit_EnvironmentAttribute(self, node, frame): + self.write('environment.' + node.name) + + def visit_ExtensionAttribute(self, node, frame): + self.write('environment.extensions[%r].%s' % (node.identifier, node.name)) + + def visit_ImportedName(self, node, frame): + self.write(self.import_aliases[node.importname]) + + def visit_InternalName(self, node, frame): + self.write(node.name) + + def visit_ContextReference(self, node, frame): + self.write('context') + + def visit_Continue(self, node, frame): + self.writeline('continue', node) + + def visit_Break(self, node, frame): + self.writeline('break', node) + + def visit_Scope(self, node, frame): + scope_frame = frame.inner() + scope_frame.symbols.analyze_node(node) + self.enter_frame(scope_frame) + self.blockvisit(node.body, scope_frame) + self.leave_frame(scope_frame) + + def visit_EvalContextModifier(self, node, frame): + for keyword in node.options: + self.writeline('context.eval_ctx.%s = ' % keyword.key) + self.visit(keyword.value, frame) + try: + val = keyword.value.as_const(frame.eval_ctx) + except nodes.Impossible: + frame.eval_ctx.volatile = True + else: + setattr(frame.eval_ctx, keyword.key, val) + + def visit_ScopedEvalContextModifier(self, node, frame): + old_ctx_name = self.temporary_identifier() + saved_ctx = frame.eval_ctx.save() + self.writeline('%s = context.eval_ctx.save()' % old_ctx_name) + self.visit_EvalContextModifier(node, frame) + for child in node.body: + self.visit(child, frame) + frame.eval_ctx.revert(saved_ctx) + self.writeline('context.eval_ctx.revert(%s)' % old_ctx_name) diff --git a/lib/spack/external/jinja2/constants.py b/lib/spack/external/jinja2/constants.py new file mode 100644 index 00000000000..11efd1ed158 --- /dev/null +++ b/lib/spack/external/jinja2/constants.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +""" + jinja.constants + ~~~~~~~~~~~~~~~ + + Various constants. + + :copyright: (c) 2017 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" + + +#: list of lorem ipsum words used by the lipsum() helper function +LOREM_IPSUM_WORDS = u'''\ +a ac accumsan ad adipiscing aenean aliquam aliquet amet ante aptent arcu at +auctor augue bibendum blandit class commodo condimentum congue consectetuer +consequat conubia convallis cras cubilia cum curabitur curae cursus dapibus +diam dictum dictumst dignissim dis dolor donec dui duis egestas eget eleifend +elementum elit enim erat eros est et etiam eu euismod facilisi facilisis fames +faucibus felis fermentum feugiat fringilla fusce gravida habitant habitasse hac +hendrerit hymenaeos iaculis id imperdiet in inceptos integer interdum ipsum +justo lacinia lacus laoreet lectus leo libero ligula litora lobortis lorem +luctus maecenas magna magnis malesuada massa mattis mauris metus mi molestie +mollis montes morbi mus nam nascetur natoque nec neque netus nibh nisi nisl non +nonummy nostra nulla nullam nunc odio orci ornare parturient pede pellentesque +penatibus per pharetra phasellus placerat platea porta porttitor posuere +potenti praesent pretium primis proin pulvinar purus quam quis quisque rhoncus +ridiculus risus rutrum sagittis sapien scelerisque sed sem semper senectus sit +sociis sociosqu sodales sollicitudin suscipit suspendisse taciti tellus tempor +tempus tincidunt torquent tortor tristique turpis ullamcorper ultrices +ultricies urna ut varius vehicula vel velit venenatis vestibulum vitae vivamus +viverra volutpat vulputate''' diff --git a/lib/spack/external/jinja2/debug.py b/lib/spack/external/jinja2/debug.py new file mode 100644 index 00000000000..07c21f1a8bd --- /dev/null +++ b/lib/spack/external/jinja2/debug.py @@ -0,0 +1,372 @@ +# -*- coding: utf-8 -*- +""" + jinja2.debug + ~~~~~~~~~~~~ + + Implements the debug interface for Jinja. This module does some pretty + ugly stuff with the Python traceback system in order to achieve tracebacks + with correct line numbers, locals and contents. + + :copyright: (c) 2017 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +import sys +import traceback +from types import TracebackType, CodeType +from jinja2.utils import missing, internal_code +from jinja2.exceptions import TemplateSyntaxError +from jinja2._compat import iteritems, reraise, PY2 + +# on pypy we can take advantage of transparent proxies +try: + from __pypy__ import tproxy +except ImportError: + tproxy = None + + +# how does the raise helper look like? +try: + exec("raise TypeError, 'foo'") +except SyntaxError: + raise_helper = 'raise __jinja_exception__[1]' +except TypeError: + raise_helper = 'raise __jinja_exception__[0], __jinja_exception__[1]' + + +class TracebackFrameProxy(object): + """Proxies a traceback frame.""" + + def __init__(self, tb): + self.tb = tb + self._tb_next = None + + @property + def tb_next(self): + return self._tb_next + + def set_next(self, next): + if tb_set_next is not None: + try: + tb_set_next(self.tb, next and next.tb or None) + except Exception: + # this function can fail due to all the hackery it does + # on various python implementations. We just catch errors + # down and ignore them if necessary. + pass + self._tb_next = next + + @property + def is_jinja_frame(self): + return '__jinja_template__' in self.tb.tb_frame.f_globals + + def __getattr__(self, name): + return getattr(self.tb, name) + + +def make_frame_proxy(frame): + proxy = TracebackFrameProxy(frame) + if tproxy is None: + return proxy + def operation_handler(operation, *args, **kwargs): + if operation in ('__getattribute__', '__getattr__'): + return getattr(proxy, args[0]) + elif operation == '__setattr__': + proxy.__setattr__(*args, **kwargs) + else: + return getattr(proxy, operation)(*args, **kwargs) + return tproxy(TracebackType, operation_handler) + + +class ProcessedTraceback(object): + """Holds a Jinja preprocessed traceback for printing or reraising.""" + + def __init__(self, exc_type, exc_value, frames): + assert frames, 'no frames for this traceback?' + self.exc_type = exc_type + self.exc_value = exc_value + self.frames = frames + + # newly concatenate the frames (which are proxies) + prev_tb = None + for tb in self.frames: + if prev_tb is not None: + prev_tb.set_next(tb) + prev_tb = tb + prev_tb.set_next(None) + + def render_as_text(self, limit=None): + """Return a string with the traceback.""" + lines = traceback.format_exception(self.exc_type, self.exc_value, + self.frames[0], limit=limit) + return ''.join(lines).rstrip() + + def render_as_html(self, full=False): + """Return a unicode string with the traceback as rendered HTML.""" + from jinja2.debugrenderer import render_traceback + return u'%s\n\n' % ( + render_traceback(self, full=full), + self.render_as_text().decode('utf-8', 'replace') + ) + + @property + def is_template_syntax_error(self): + """`True` if this is a template syntax error.""" + return isinstance(self.exc_value, TemplateSyntaxError) + + @property + def exc_info(self): + """Exception info tuple with a proxy around the frame objects.""" + return self.exc_type, self.exc_value, self.frames[0] + + @property + def standard_exc_info(self): + """Standard python exc_info for re-raising""" + tb = self.frames[0] + # the frame will be an actual traceback (or transparent proxy) if + # we are on pypy or a python implementation with support for tproxy + if type(tb) is not TracebackType: + tb = tb.tb + return self.exc_type, self.exc_value, tb + + +def make_traceback(exc_info, source_hint=None): + """Creates a processed traceback object from the exc_info.""" + exc_type, exc_value, tb = exc_info + if isinstance(exc_value, TemplateSyntaxError): + exc_info = translate_syntax_error(exc_value, source_hint) + initial_skip = 0 + else: + initial_skip = 1 + return translate_exception(exc_info, initial_skip) + + +def translate_syntax_error(error, source=None): + """Rewrites a syntax error to please traceback systems.""" + error.source = source + error.translated = True + exc_info = (error.__class__, error, None) + filename = error.filename + if filename is None: + filename = '' + return fake_exc_info(exc_info, filename, error.lineno) + + +def translate_exception(exc_info, initial_skip=0): + """If passed an exc_info it will automatically rewrite the exceptions + all the way down to the correct line numbers and frames. + """ + tb = exc_info[2] + frames = [] + + # skip some internal frames if wanted + for x in range(initial_skip): + if tb is not None: + tb = tb.tb_next + initial_tb = tb + + while tb is not None: + # skip frames decorated with @internalcode. These are internal + # calls we can't avoid and that are useless in template debugging + # output. + if tb.tb_frame.f_code in internal_code: + tb = tb.tb_next + continue + + # save a reference to the next frame if we override the current + # one with a faked one. + next = tb.tb_next + + # fake template exceptions + template = tb.tb_frame.f_globals.get('__jinja_template__') + if template is not None: + lineno = template.get_corresponding_lineno(tb.tb_lineno) + tb = fake_exc_info(exc_info[:2] + (tb,), template.filename, + lineno)[2] + + frames.append(make_frame_proxy(tb)) + tb = next + + # if we don't have any exceptions in the frames left, we have to + # reraise it unchanged. + # XXX: can we backup here? when could this happen? + if not frames: + reraise(exc_info[0], exc_info[1], exc_info[2]) + + return ProcessedTraceback(exc_info[0], exc_info[1], frames) + + +def get_jinja_locals(real_locals): + ctx = real_locals.get('context') + if ctx: + locals = ctx.get_all() + else: + locals = {} + + local_overrides = {} + + for name, value in iteritems(real_locals): + if not name.startswith('l_') or value is missing: + continue + try: + _, depth, name = name.split('_', 2) + depth = int(depth) + except ValueError: + continue + cur_depth = local_overrides.get(name, (-1,))[0] + if cur_depth < depth: + local_overrides[name] = (depth, value) + + for name, (_, value) in iteritems(local_overrides): + if value is missing: + locals.pop(name, None) + else: + locals[name] = value + + return locals + + +def fake_exc_info(exc_info, filename, lineno): + """Helper for `translate_exception`.""" + exc_type, exc_value, tb = exc_info + + # figure the real context out + if tb is not None: + locals = get_jinja_locals(tb.tb_frame.f_locals) + + # if there is a local called __jinja_exception__, we get + # rid of it to not break the debug functionality. + locals.pop('__jinja_exception__', None) + else: + locals = {} + + # assamble fake globals we need + globals = { + '__name__': filename, + '__file__': filename, + '__jinja_exception__': exc_info[:2], + + # we don't want to keep the reference to the template around + # to not cause circular dependencies, but we mark it as Jinja + # frame for the ProcessedTraceback + '__jinja_template__': None + } + + # and fake the exception + code = compile('\n' * (lineno - 1) + raise_helper, filename, 'exec') + + # if it's possible, change the name of the code. This won't work + # on some python environments such as google appengine + try: + if tb is None: + location = 'template' + else: + function = tb.tb_frame.f_code.co_name + if function == 'root': + location = 'top-level template code' + elif function.startswith('block_'): + location = 'block "%s"' % function[6:] + else: + location = 'template' + + if PY2: + code = CodeType(0, code.co_nlocals, code.co_stacksize, + code.co_flags, code.co_code, code.co_consts, + code.co_names, code.co_varnames, filename, + location, code.co_firstlineno, + code.co_lnotab, (), ()) + else: + code = CodeType(0, code.co_kwonlyargcount, + code.co_nlocals, code.co_stacksize, + code.co_flags, code.co_code, code.co_consts, + code.co_names, code.co_varnames, filename, + location, code.co_firstlineno, + code.co_lnotab, (), ()) + except Exception as e: + pass + + # execute the code and catch the new traceback + try: + exec(code, globals, locals) + except: + exc_info = sys.exc_info() + new_tb = exc_info[2].tb_next + + # return without this frame + return exc_info[:2] + (new_tb,) + + +def _init_ugly_crap(): + """This function implements a few ugly things so that we can patch the + traceback objects. The function returned allows resetting `tb_next` on + any python traceback object. Do not attempt to use this on non cpython + interpreters + """ + import ctypes + from types import TracebackType + + if PY2: + # figure out size of _Py_ssize_t for Python 2: + if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'): + _Py_ssize_t = ctypes.c_int64 + else: + _Py_ssize_t = ctypes.c_int + else: + # platform ssize_t on Python 3 + _Py_ssize_t = ctypes.c_ssize_t + + # regular python + class _PyObject(ctypes.Structure): + pass + _PyObject._fields_ = [ + ('ob_refcnt', _Py_ssize_t), + ('ob_type', ctypes.POINTER(_PyObject)) + ] + + # python with trace + if hasattr(sys, 'getobjects'): + class _PyObject(ctypes.Structure): + pass + _PyObject._fields_ = [ + ('_ob_next', ctypes.POINTER(_PyObject)), + ('_ob_prev', ctypes.POINTER(_PyObject)), + ('ob_refcnt', _Py_ssize_t), + ('ob_type', ctypes.POINTER(_PyObject)) + ] + + class _Traceback(_PyObject): + pass + _Traceback._fields_ = [ + ('tb_next', ctypes.POINTER(_Traceback)), + ('tb_frame', ctypes.POINTER(_PyObject)), + ('tb_lasti', ctypes.c_int), + ('tb_lineno', ctypes.c_int) + ] + + def tb_set_next(tb, next): + """Set the tb_next attribute of a traceback object.""" + if not (isinstance(tb, TracebackType) and + (next is None or isinstance(next, TracebackType))): + raise TypeError('tb_set_next arguments must be traceback objects') + obj = _Traceback.from_address(id(tb)) + if tb.tb_next is not None: + old = _Traceback.from_address(id(tb.tb_next)) + old.ob_refcnt -= 1 + if next is None: + obj.tb_next = ctypes.POINTER(_Traceback)() + else: + next = _Traceback.from_address(id(next)) + next.ob_refcnt += 1 + obj.tb_next = ctypes.pointer(next) + + return tb_set_next + + +# try to get a tb_set_next implementation if we don't have transparent +# proxies. +tb_set_next = None +if tproxy is None: + try: + tb_set_next = _init_ugly_crap() + except: + pass + del _init_ugly_crap diff --git a/lib/spack/external/jinja2/defaults.py b/lib/spack/external/jinja2/defaults.py new file mode 100644 index 00000000000..35903883cd3 --- /dev/null +++ b/lib/spack/external/jinja2/defaults.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +""" + jinja2.defaults + ~~~~~~~~~~~~~~~ + + Jinja default filters and tags. + + :copyright: (c) 2017 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +from jinja2._compat import range_type +from jinja2.utils import generate_lorem_ipsum, Cycler, Joiner + + +# defaults for the parser / lexer +BLOCK_START_STRING = '{%' +BLOCK_END_STRING = '%}' +VARIABLE_START_STRING = '{{' +VARIABLE_END_STRING = '}}' +COMMENT_START_STRING = '{#' +COMMENT_END_STRING = '#}' +LINE_STATEMENT_PREFIX = None +LINE_COMMENT_PREFIX = None +TRIM_BLOCKS = False +LSTRIP_BLOCKS = False +NEWLINE_SEQUENCE = '\n' +KEEP_TRAILING_NEWLINE = False + + +# default filters, tests and namespace +from jinja2.filters import FILTERS as DEFAULT_FILTERS +from jinja2.tests import TESTS as DEFAULT_TESTS +DEFAULT_NAMESPACE = { + 'range': range_type, + 'dict': dict, + 'lipsum': generate_lorem_ipsum, + 'cycler': Cycler, + 'joiner': Joiner +} + + +# default policies +DEFAULT_POLICIES = { + 'compiler.ascii_str': True, + 'urlize.rel': 'noopener', + 'urlize.target': None, + 'truncate.leeway': 5, + 'json.dumps_function': None, + 'json.dumps_kwargs': {'sort_keys': True}, +} + + +# export all constants +__all__ = tuple(x for x in locals().keys() if x.isupper()) diff --git a/lib/spack/external/jinja2/environment.py b/lib/spack/external/jinja2/environment.py new file mode 100644 index 00000000000..2a4d3d7da9c --- /dev/null +++ b/lib/spack/external/jinja2/environment.py @@ -0,0 +1,1276 @@ +# -*- coding: utf-8 -*- +""" + jinja2.environment + ~~~~~~~~~~~~~~~~~~ + + Provides a class that holds runtime and parsing time options. + + :copyright: (c) 2017 by the Jinja Team. + :license: BSD, see LICENSE for more details. +""" +import os +import sys +import weakref +from functools import reduce, partial +from jinja2 import nodes +from jinja2.defaults import BLOCK_START_STRING, \ + BLOCK_END_STRING, VARIABLE_START_STRING, VARIABLE_END_STRING, \ + COMMENT_START_STRING, COMMENT_END_STRING, LINE_STATEMENT_PREFIX, \ + LINE_COMMENT_PREFIX, TRIM_BLOCKS, NEWLINE_SEQUENCE, \ + DEFAULT_FILTERS, DEFAULT_TESTS, DEFAULT_NAMESPACE, \ + DEFAULT_POLICIES, KEEP_TRAILING_NEWLINE, LSTRIP_BLOCKS +from jinja2.lexer import get_lexer, TokenStream +from jinja2.parser import Parser +from jinja2.nodes import EvalContext +from jinja2.compiler import generate, CodeGenerator +from jinja2.runtime import Undefined, new_context, Context +from jinja2.exceptions import TemplateSyntaxError, TemplateNotFound, \ + TemplatesNotFound, TemplateRuntimeError +from jinja2.utils import import_string, LRUCache, Markup, missing, \ + concat, consume, internalcode, have_async_gen +from jinja2._compat import imap, ifilter, string_types, iteritems, \ + text_type, reraise, implements_iterator, implements_to_string, \ + encode_filename, PY2, PYPY + + +# for direct template usage we have up to ten living environments +_spontaneous_environments = LRUCache(10) + +# the function to create jinja traceback objects. This is dynamically +# imported on the first exception in the exception handler. +_make_traceback = None + + +def get_spontaneous_environment(*args): + """Return a new spontaneous environment. A spontaneous environment is an + unnamed and unaccessible (in theory) environment that is used for + templates generated from a string and not from the file system. + """ + try: + env = _spontaneous_environments.get(args) + except TypeError: + return Environment(*args) + if env is not None: + return env + _spontaneous_environments[args] = env = Environment(*args) + env.shared = True + return env + + +def create_cache(size): + """Return the cache class for the given size.""" + if size == 0: + return None + if size < 0: + return {} + return LRUCache(size) + + +def copy_cache(cache): + """Create an empty copy of the given cache.""" + if cache is None: + return None + elif type(cache) is dict: + return {} + return LRUCache(cache.capacity) + + +def load_extensions(environment, extensions): + """Load the extensions from the list and bind it to the environment. + Returns a dict of instantiated environments. + """ + result = {} + for extension in extensions: + if isinstance(extension, string_types): + extension = import_string(extension) + result[extension.identifier] = extension(environment) + return result + + +def fail_for_missing_callable(string, name): + msg = string % name + if isinstance(name, Undefined): + try: + name._fail_with_undefined_error() + except Exception as e: + msg = '%s (%s; did you forget to quote the callable name?)' % (msg, e) + raise TemplateRuntimeError(msg) + + +def _environment_sanity_check(environment): + """Perform a sanity check on the environment.""" + assert issubclass(environment.undefined, Undefined), 'undefined must ' \ + 'be a subclass of undefined because filters depend on it.' + assert environment.block_start_string != \ + environment.variable_start_string != \ + environment.comment_start_string, 'block, variable and comment ' \ + 'start strings must be different' + assert environment.newline_sequence in ('\r', '\r\n', '\n'), \ + 'newline_sequence set to unknown line ending string.' + return environment + + +class Environment(object): + r"""The core component of Jinja is the `Environment`. It contains + important shared variables like configuration, filters, tests, + globals and others. Instances of this class may be modified if + they are not shared and if no template was loaded so far. + Modifications on environments after the first template was loaded + will lead to surprising effects and undefined behavior. + + Here are the possible initialization parameters: + + `block_start_string` + The string marking the beginning of a block. Defaults to ``'{%'``. + + `block_end_string` + The string marking the end of a block. Defaults to ``'%}'``. + + `variable_start_string` + The string marking the beginning of a print statement. + Defaults to ``'{{'``. + + `variable_end_string` + The string marking the end of a print statement. Defaults to + ``'}}'``. + + `comment_start_string` + The string marking the beginning of a comment. Defaults to ``'{#'``. + + `comment_end_string` + The string marking the end of a comment. Defaults to ``'#}'``. + + `line_statement_prefix` + If given and a string, this will be used as prefix for line based + statements. See also :ref:`line-statements`. + + `line_comment_prefix` + If given and a string, this will be used as prefix for line based + comments. See also :ref:`line-statements`. + + .. versionadded:: 2.2 + + `trim_blocks` + If this is set to ``True`` the first newline after a block is + removed (block, not variable tag!). Defaults to `False`. + + `lstrip_blocks` + If this is set to ``True`` leading spaces and tabs are stripped + from the start of a line to a block. Defaults to `False`. + + `newline_sequence` + The sequence that starts a newline. Must be one of ``'\r'``, + ``'\n'`` or ``'\r\n'``. The default is ``'\n'`` which is a + useful default for Linux and OS X systems as well as web + applications. + + `keep_trailing_newline` + Preserve the trailing newline when rendering templates. + The default is ``False``, which causes a single newline, + if present, to be stripped from the end of the template. + + .. versionadded:: 2.7 + + `extensions` + List of Jinja extensions to use. This can either be import paths + as strings or extension classes. For more information have a + look at :ref:`the extensions documentation `. + + `optimized` + should the optimizer be enabled? Default is ``True``. + + `undefined` + :class:`Undefined` or a subclass of it that is used to represent + undefined values in the template. + + `finalize` + A callable that can be used to process the result of a variable + expression before it is output. For example one can convert + ``None`` implicitly into an empty string here. + + `autoescape` + If set to ``True`` the XML/HTML autoescaping feature is enabled by + default. For more details about autoescaping see + :class:`~jinja2.utils.Markup`. As of Jinja 2.4 this can also + be a callable that is passed the template name and has to + return ``True`` or ``False`` depending on autoescape should be + enabled by default. + + .. versionchanged:: 2.4 + `autoescape` can now be a function + + `loader` + The template loader for this environment. + + `cache_size` + The size of the cache. Per default this is ``400`` which means + that if more than 400 templates are loaded the loader will clean + out the least recently used template. If the cache size is set to + ``0`` templates are recompiled all the time, if the cache size is + ``-1`` the cache will not be cleaned. + + .. versionchanged:: 2.8 + The cache size was increased to 400 from a low 50. + + `auto_reload` + Some loaders load templates from locations where the template + sources may change (ie: file system or database). If + ``auto_reload`` is set to ``True`` (default) every time a template is + requested the loader checks if the source changed and if yes, it + will reload the template. For higher performance it's possible to + disable that. + + `bytecode_cache` + If set to a bytecode cache object, this object will provide a + cache for the internal Jinja bytecode so that templates don't + have to be parsed if they were not changed. + + See :ref:`bytecode-cache` for more information. + + `enable_async` + If set to true this enables async template execution which allows + you to take advantage of newer Python features. This requires + Python 3.6 or later. + """ + + #: if this environment is sandboxed. Modifying this variable won't make + #: the environment sandboxed though. For a real sandboxed environment + #: have a look at jinja2.sandbox. This flag alone controls the code + #: generation by the compiler. + sandboxed = False + + #: True if the environment is just an overlay + overlayed = False + + #: the environment this environment is linked to if it is an overlay + linked_to = None + + #: shared environments have this set to `True`. A shared environment + #: must not be modified + shared = False + + #: these are currently EXPERIMENTAL undocumented features. + exception_handler = None + exception_formatter = None + + #: the class that is used for code generation. See + #: :class:`~jinja2.compiler.CodeGenerator` for more information. + code_generator_class = CodeGenerator + + #: the context class thatis used for templates. See + #: :class:`~jinja2.runtime.Context` for more information. + context_class = Context + + def __init__(self, + block_start_string=BLOCK_START_STRING, + block_end_string=BLOCK_END_STRING, + variable_start_string=VARIABLE_START_STRING, + variable_end_string=VARIABLE_END_STRING, + comment_start_string=COMMENT_START_STRING, + comment_end_string=COMMENT_END_STRING, + line_statement_prefix=LINE_STATEMENT_PREFIX, + line_comment_prefix=LINE_COMMENT_PREFIX, + trim_blocks=TRIM_BLOCKS, + lstrip_blocks=LSTRIP_BLOCKS, + newline_sequence=NEWLINE_SEQUENCE, + keep_trailing_newline=KEEP_TRAILING_NEWLINE, + extensions=(), + optimized=True, + undefined=Undefined, + finalize=None, + autoescape=False, + loader=None, + cache_size=400, + auto_reload=True, + bytecode_cache=None, + enable_async=False): + # !!Important notice!! + # The constructor accepts quite a few arguments that should be + # passed by keyword rather than position. However it's important to + # not change the order of arguments because it's used at least + # internally in those cases: + # - spontaneous environments (i18n extension and Template) + # - unittests + # If parameter changes are required only add parameters at the end + # and don't change the arguments (or the defaults!) of the arguments + # existing already. + + # lexer / parser information + self.block_start_string = block_start_string + self.block_end_string = block_end_string + self.variable_start_string = variable_start_string + self.variable_end_string = variable_end_string + self.comment_start_string = comment_start_string + self.comment_end_string = comment_end_string + self.line_statement_prefix = line_statement_prefix + self.line_comment_prefix = line_comment_prefix + self.trim_blocks = trim_blocks + self.lstrip_blocks = lstrip_blocks + self.newline_sequence = newline_sequence + self.keep_trailing_newline = keep_trailing_newline + + # runtime information + self.undefined = undefined + self.optimized = optimized + self.finalize = finalize + self.autoescape = autoescape + + # defaults + self.filters = DEFAULT_FILTERS.copy() + self.tests = DEFAULT_TESTS.copy() + self.globals = DEFAULT_NAMESPACE.copy() + + # set the loader provided + self.loader = loader + self.cache = create_cache(cache_size) + self.bytecode_cache = bytecode_cache + self.auto_reload = auto_reload + + # configurable policies + self.policies = DEFAULT_POLICIES.copy() + + # load extensions + self.extensions = load_extensions(self, extensions) + + self.enable_async = enable_async + self.is_async = self.enable_async and have_async_gen + + _environment_sanity_check(self) + + def add_extension(self, extension): + """Adds an extension after the environment was created. + + .. versionadded:: 2.5 + """ + self.extensions.update(load_extensions(self, [extension])) + + def extend(self, **attributes): + """Add the items to the instance of the environment if they do not exist + yet. This is used by :ref:`extensions ` to register + callbacks and configuration values without breaking inheritance. + """ + for key, value in iteritems(attributes): + if not hasattr(self, key): + setattr(self, key, value) + + def overlay(self, block_start_string=missing, block_end_string=missing, + variable_start_string=missing, variable_end_string=missing, + comment_start_string=missing, comment_end_string=missing, + line_statement_prefix=missing, line_comment_prefix=missing, + trim_blocks=missing, lstrip_blocks=missing, + extensions=missing, optimized=missing, + undefined=missing, finalize=missing, autoescape=missing, + loader=missing, cache_size=missing, auto_reload=missing, + bytecode_cache=missing): + """Create a new overlay environment that shares all the data with the + current environment except for cache and the overridden attributes. + Extensions cannot be removed for an overlayed environment. An overlayed + environment automatically gets all the extensions of the environment it + is linked to plus optional extra extensions. + + Creating overlays should happen after the initial environment was set + up completely. Not all attributes are truly linked, some are just + copied over so modifications on the original environment may not shine + through. + """ + args = dict(locals()) + del args['self'], args['cache_size'], args['extensions'] + + rv = object.__new__(self.__class__) + rv.__dict__.update(self.__dict__) + rv.overlayed = True + rv.linked_to = self + + for key, value in iteritems(args): + if value is not missing: + setattr(rv, key, value) + + if cache_size is not missing: + rv.cache = create_cache(cache_size) + else: + rv.cache = copy_cache(self.cache) + + rv.extensions = {} + for key, value in iteritems(self.extensions): + rv.extensions[key] = value.bind(rv) + if extensions is not missing: + rv.extensions.update(load_extensions(rv, extensions)) + + return _environment_sanity_check(rv) + + lexer = property(get_lexer, doc="The lexer for this environment.") + + def iter_extensions(self): + """Iterates over the extensions by priority.""" + return iter(sorted(self.extensions.values(), + key=lambda x: x.priority)) + + def getitem(self, obj, argument): + """Get an item or attribute of an object but prefer the item.""" + try: + return obj[argument] + except (AttributeError, TypeError, LookupError): + if isinstance(argument, string_types): + try: + attr = str(argument) + except Exception: + pass + else: + try: + return getattr(obj, attr) + except AttributeError: + pass + return self.undefined(obj=obj, name=argument) + + def getattr(self, obj, attribute): + """Get an item or attribute of an object but prefer the attribute. + Unlike :meth:`getitem` the attribute *must* be a bytestring. + """ + try: + return getattr(obj, attribute) + except AttributeError: + pass + try: + return obj[attribute] + except (TypeError, LookupError, AttributeError): + return self.undefined(obj=obj, name=attribute) + + def call_filter(self, name, value, args=None, kwargs=None, + context=None, eval_ctx=None): + """Invokes a filter on a value the same way the compiler does it. + + Note that on Python 3 this might return a coroutine in case the + filter is running from an environment in async mode and the filter + supports async execution. It's your responsibility to await this + if needed. + + .. versionadded:: 2.7 + """ + func = self.filters.get(name) + if func is None: + fail_for_missing_callable('no filter named %r', name) + args = [value] + list(args or ()) + if getattr(func, 'contextfilter', False): + if context is None: + raise TemplateRuntimeError('Attempted to invoke context ' + 'filter without context') + args.insert(0, context) + elif getattr(func, 'evalcontextfilter', False): + if eval_ctx is None: + if context is not None: + eval_ctx = context.eval_ctx + else: + eval_ctx = EvalContext(self) + args.insert(0, eval_ctx) + elif getattr(func, 'environmentfilter', False): + args.insert(0, self) + return func(*args, **(kwargs or {})) + + def call_test(self, name, value, args=None, kwargs=None): + """Invokes a test on a value the same way the compiler does it. + + .. versionadded:: 2.7 + """ + func = self.tests.get(name) + if func is None: + fail_for_missing_callable('no test named %r', name) + return func(value, *(args or ()), **(kwargs or {})) + + @internalcode + def parse(self, source, name=None, filename=None): + """Parse the sourcecode and return the abstract syntax tree. This + tree of nodes is used by the compiler to convert the template into + executable source- or bytecode. This is useful for debugging or to + extract information from templates. + + If you are :ref:`developing Jinja2 extensions ` + this gives you a good overview of the node tree generated. + """ + try: + return self._parse(source, name, filename) + except TemplateSyntaxError: + exc_info = sys.exc_info() + self.handle_exception(exc_info, source_hint=source) + + def _parse(self, source, name, filename): + """Internal parsing function used by `parse` and `compile`.""" + return Parser(self, source, name, encode_filename(filename)).parse() + + def lex(self, source, name=None, filename=None): + """Lex the given sourcecode and return a generator that yields + tokens as tuples in the form ``(lineno, token_type, value)``. + This can be useful for :ref:`extension development ` + and debugging templates. + + This does not perform preprocessing. If you want the preprocessing + of the extensions to be applied you have to filter source through + the :meth:`preprocess` method. + """ + source = text_type(source) + try: + return self.lexer.tokeniter(source, name, filename) + except TemplateSyntaxError: + exc_info = sys.exc_info() + self.handle_exception(exc_info, source_hint=source) + + def preprocess(self, source, name=None, filename=None): + """Preprocesses the source with all extensions. This is automatically + called for all parsing and compiling methods but *not* for :meth:`lex` + because there you usually only want the actual source tokenized. + """ + return reduce(lambda s, e: e.preprocess(s, name, filename), + self.iter_extensions(), text_type(source)) + + def _tokenize(self, source, name, filename=None, state=None): + """Called by the parser to do the preprocessing and filtering + for all the extensions. Returns a :class:`~jinja2.lexer.TokenStream`. + """ + source = self.preprocess(source, name, filename) + stream = self.lexer.tokenize(source, name, filename, state) + for ext in self.iter_extensions(): + stream = ext.filter_stream(stream) + if not isinstance(stream, TokenStream): + stream = TokenStream(stream, name, filename) + return stream + + def _generate(self, source, name, filename, defer_init=False): + """Internal hook that can be overridden to hook a different generate + method in. + + .. versionadded:: 2.5 + """ + return generate(source, self, name, filename, defer_init=defer_init, + optimized=self.optimized) + + def _compile(self, source, filename): + """Internal hook that can be overridden to hook a different compile + method in. + + .. versionadded:: 2.5 + """ + return compile(source, filename, 'exec') + + @internalcode + def compile(self, source, name=None, filename=None, raw=False, + defer_init=False): + """Compile a node or template source code. The `name` parameter is + the load name of the template after it was joined using + :meth:`join_path` if necessary, not the filename on the file system. + the `filename` parameter is the estimated filename of the template on + the file system. If the template came from a database or memory this + can be omitted. + + The return value of this method is a python code object. If the `raw` + parameter is `True` the return value will be a string with python + code equivalent to the bytecode returned otherwise. This method is + mainly used internally. + + `defer_init` is use internally to aid the module code generator. This + causes the generated code to be able to import without the global + environment variable to be set. + + .. versionadded:: 2.4 + `defer_init` parameter added. + """ + source_hint = None + try: + if isinstance(source, string_types): + source_hint = source + source = self._parse(source, name, filename) + source = self._generate(source, name, filename, + defer_init=defer_init) + if raw: + return source + if filename is None: + filename = '